summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorSimon Atanasyan <simon@atanasyan.com>2016-01-20 19:15:18 +0000
committerSimon Atanasyan <simon@atanasyan.com>2016-01-20 19:15:18 +0000
commit2d0d8530e38e9865db50525f02108b72ec365589 (patch)
tree69045d858fe083f6f27b897ffe91113a00042335 /llvm/test
parent2d7fa7065f0d07d4c376d4228f2097e686a9c143 (diff)
downloadbcm5719-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.test2
-rw-r--r--llvm/test/tools/llvm-readobj/elf-sec-flags.test90
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
+...
OpenPOWER on IntegriCloud