diff options
| author | Petr Hosek <phosek@chromium.org> | 2017-07-19 20:38:46 +0000 |
|---|---|---|
| committer | Petr Hosek <phosek@chromium.org> | 2017-07-19 20:38:46 +0000 |
| commit | eb04da3a5609f1aea69816bb3e4498aeb0dcaebc (patch) | |
| tree | 9c36710960e242e2c63053b33c8bdab32a0bcb9f /llvm/test | |
| parent | 38b0f4a1f2f9da3915eb7865b8814d9c300d9b0d (diff) | |
| download | bcm5719-llvm-eb04da3a5609f1aea69816bb3e4498aeb0dcaebc.tar.gz bcm5719-llvm-eb04da3a5609f1aea69816bb3e4498aeb0dcaebc.zip | |
[yaml2obj][ELF] Add support for program headers
This change adds basic support for program headers.
I need to do some testing which requires generating program headers but
I can't use ld.lld or clang to produce programs that have headers. I'd
also like to test some strange things that those programs may never
produce.
Patch by Jake Ehrlich
Differential Revision: https://reviews.llvm.org/D35276
llvm-svn: 308520
Diffstat (limited to 'llvm/test')
| -rw-r--r-- | llvm/test/tools/yaml2obj/program-header-nobits.yaml | 39 | ||||
| -rw-r--r-- | llvm/test/tools/yaml2obj/program-header.yaml | 67 |
2 files changed, 106 insertions, 0 deletions
diff --git a/llvm/test/tools/yaml2obj/program-header-nobits.yaml b/llvm/test/tools/yaml2obj/program-header-nobits.yaml new file mode 100644 index 00000000000..4664753a4b1 --- /dev/null +++ b/llvm/test/tools/yaml2obj/program-header-nobits.yaml @@ -0,0 +1,39 @@ +# RUN: yaml2obj %s -o %t +# RUN: llvm-readobj -program-headers %t | FileCheck %s + +!ELF +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_EXEC + Machine: EM_X86_64 +Sections: + - Name: .data + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC ] + Content: "00000000" + - Name: .after + Type: SHT_NOBITS + Flags: [ SHF_ALLOC ] + Size: 64 +ProgramHeaders: + - Type: PT_LOAD + Flags: [ PF_R ] + Sections: + - Section: .data + - Section: .after + +#CHECK: ProgramHeaders [ +#CHECK-NEXT: ProgramHeader { +#CHECK-NEXT: Type: PT_LOAD +#CHECK-NEXT: Offset: +#CHECK-NEXT: VirtualAddress: +#CHECK-NEXT: PhysicalAddress: +#CHECK-NEXT: FileSize: 4 +#CHECK-NEXT: MemSize: 68 +#CHECK-NEXT: Flags [ +#CHECK-NEXT: PF_R +#CHECK-NEXT: ] +#CHECK-NEXT: Alignment: +#CHECK-NEXT: } +#CHECK-NEXT:] diff --git a/llvm/test/tools/yaml2obj/program-header.yaml b/llvm/test/tools/yaml2obj/program-header.yaml new file mode 100644 index 00000000000..f07e393f512 --- /dev/null +++ b/llvm/test/tools/yaml2obj/program-header.yaml @@ -0,0 +1,67 @@ +# RUN: yaml2obj %s -o %t +# RUN: llvm-readobj -program-headers %t | FileCheck %s + +!ELF +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_EXEC + Machine: EM_X86_64 +Sections: + - Name: .text + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + AddressAlign: 0x0000000000001000 + Content: "00000000" + - Name: .init + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + Content: "00000000" + AddressAlign: 0x0000000000000010 + - Name: .data + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC ] + Content: "00000000" + AddressAlign: 0x0000000000001000 +ProgramHeaders: + - Type: PT_LOAD + Flags: [ PF_X, PF_R ] + VAddr: 0xAAAA1000 + PAddr: 0xFFFF1000 + Sections: + - Section: .text + - Section: .init + - Type: PT_LOAD + Flags: [ PF_R ] + VAddr: 0xAAAA2000 + PAddr: 0xFFFF2000 + Sections: + - Section: .data + +#CHECK: ProgramHeaders [ +#CHECK-NEXT: ProgramHeader { +#CHECK-NEXT: Type: PT_LOAD +#CHECK-NEXT: Offset: 0x1000 +#CHECK-NEXT: VirtualAddress: 0xAAAA1000 +#CHECK-NEXT: PhysicalAddress: 0xFFFF1000 +#CHECK-NEXT: FileSize: 20 +#CHECK-NEXT: MemSize: 20 +#CHECK-NEXT: Flags [ +#CHECK-NEXT: PF_R +#CHECK-NEXT: PF_X +#CHECK-NEXT: ] +#CHECK-NEXT: Alignment: 4096 +#CHECK-NEXT: } +#CHECK-NEXT: ProgramHeader { +#CHECK-NEXT: Type: PT_LOAD +#CHECK-NEXT: Offset: 0x2000 +#CHECK-NEXT: VirtualAddress: 0xAAAA2000 +#CHECK-NEXT: PhysicalAddress: 0xFFFF2000 +#CHECK-NEXT: FileSize: 4 +#CHECK-NEXT: MemSize: 4 +#CHECK-NEXT: Flags [ +#CHECK-NEXT: PF_R +#CHECK-NEXT: ] +#CHECK-NEXT: Alignment: 4096 +#CHECK-NEXT: } +#CHECK-NEXT:] |

