diff options
author | Simon Atanasyan <simon@atanasyan.com> | 2016-01-20 19:15:18 +0000 |
---|---|---|
committer | Simon Atanasyan <simon@atanasyan.com> | 2016-01-20 19:15:18 +0000 |
commit | 2d0d8530e38e9865db50525f02108b72ec365589 (patch) | |
tree | 69045d858fe083f6f27b897ffe91113a00042335 /llvm/test | |
parent | 2d7fa7065f0d07d4c376d4228f2097e686a9c143 (diff) | |
download | bcm5719-llvm-2d0d8530e38e9865db50525f02108b72ec365589.tar.gz bcm5719-llvm-2d0d8530e38e9865db50525f02108b72ec365589.zip |
[llvm-readobj][ELF] Teach llvm-readobj to show arch specific ELF section's flags
Some architecture specific ELF section flags might have the same value
(for example SHF_X86_64_LARGE and SHF_HEX_GPREL) and we have to check
machine architectures to select an appropriate set of possible flags.
The patch selects architecture specific flags into separate arrays
`ElfxxxSectionFlags` and combines `ElfSectionFlags` and `ElfxxxSectionFlags`
before pass to the `StreamWriter::printFlags()` method.
Differential Revision: http://reviews.llvm.org/D16269
llvm-svn: 258334
Diffstat (limited to 'llvm/test')
-rw-r--r-- | llvm/test/Object/obj2yaml.test | 2 | ||||
-rw-r--r-- | llvm/test/tools/llvm-readobj/elf-sec-flags.test | 90 |
2 files changed, 91 insertions, 1 deletions
diff --git a/llvm/test/Object/obj2yaml.test b/llvm/test/Object/obj2yaml.test index 60d46a83a52..171488da78f 100644 --- a/llvm/test/Object/obj2yaml.test +++ b/llvm/test/Object/obj2yaml.test @@ -327,7 +327,7 @@ ELF-MIPS64EL-NEXT: Flags: [ SHF_WRITE, SHF_ALLOC ] ELF-MIPS64EL-NEXT: AddressAlign: 0x0000000000000010 ELF-MIPS64EL-NEXT: - Name: .MIPS.options ELF-MIPS64EL-NEXT: Type: SHT_MIPS_OPTIONS -ELF-MIPS64EL-NEXT: Flags: [ SHF_ALLOC ] +ELF-MIPS64EL-NEXT: Flags: [ SHF_ALLOC, SHF_MIPS_NOSTRIP ] ELF-MIPS64EL-NEXT: AddressAlign: 0x0000000000000008 ELF-MIPS64EL-NEXT: Content: '01280000000000000000000000000000000000000000000000000000000000000000000000000000' ELF-MIPS64EL-NEXT: - Name: .pdr diff --git a/llvm/test/tools/llvm-readobj/elf-sec-flags.test b/llvm/test/tools/llvm-readobj/elf-sec-flags.test new file mode 100644 index 00000000000..95a417a054f --- /dev/null +++ b/llvm/test/tools/llvm-readobj/elf-sec-flags.test @@ -0,0 +1,90 @@ +# Check that llvm-readobj shows arch specific ELF section flags. + +# RUN: yaml2obj -format=elf -docnum 1 %s > %t-amdgpu.o +# RUN: llvm-readobj -s %t-amdgpu.o | FileCheck -check-prefix=AMD %s + +# AMD: Flags [ (0x300000) +# AMD-NEXT: SHF_AMDGPU_HSA_GLOBAL (0x100000) +# AMD-NEXT: SHF_AMDGPU_HSA_READONLY (0x200000) +# AMD-NEXT: ] + +# amdgpu.o +--- +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + OSABI: ELFOSABI_GNU + Type: ET_REL + Machine: EM_AMDGPU + Flags: [] +Sections: + - Name: .amdgpu + Type: SHT_PROGBITS + Flags: [SHF_AMDGPU_HSA_GLOBAL, SHF_AMDGPU_HSA_READONLY] + Size: 4 + +# RUN: yaml2obj -format=elf -docnum 2 %s > %t-hex.o +# RUN: llvm-readobj -s %t-hex.o | FileCheck -check-prefix=HEX %s + +# HEX: Flags [ (0x10000000) +# HEX-NEXT: SHF_HEX_GPREL (0x10000000) +# HEX-NEXT: ] + +# hex.o +--- +FileHeader: + Class: ELFCLASS32 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_HEXAGON + Flags: [] +Sections: + - Name: .hex + Type: SHT_PROGBITS + Flags: [SHF_HEX_GPREL] + Size: 4 + +# RUN: yaml2obj -format=elf -docnum 3 %s > %t-mips.o +# RUN: llvm-readobj -s %t-mips.o | FileCheck -check-prefix=MIPS %s + +# MIPS: Flags [ (0x38000000) +# MIPS-NEXT: SHF_MIPS_GPREL (0x10000000) +# MIPS-NEXT: SHF_MIPS_MERGE (0x20000000) +# MIPS-NEXT: SHF_MIPS_NOSTRIP (0x8000000) +# MIPS-NEXT: ] + +# mips.o +--- +FileHeader: + Class: ELFCLASS32 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_MIPS + Flags: [] +Sections: + - Name: .mips + Type: SHT_PROGBITS + Flags: [SHF_MIPS_GPREL, SHF_MIPS_MERGE, SHF_MIPS_NOSTRIP] + Size: 4 + +# RUN: yaml2obj -format=elf -docnum 4 %s > %t-x86_64.o +# RUN: llvm-readobj -s %t-x86_64.o | FileCheck -check-prefix=X86_64 %s + +# X86_64: Flags [ (0x10000000) +# X86_64-NEXT: SHF_X86_64_LARGE (0x10000000) +# X86_64-NEXT: ] + +# x86_64.o +--- +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_X86_64 + Flags: [] +Sections: + - Name: .x86_64 + Type: SHT_PROGBITS + Flags: [SHF_X86_64_LARGE] + Size: 4 +... |