diff options
author | Georgii Rymar <grimar@accesssoftek.com> | 2019-12-13 17:02:03 +0300 |
---|---|---|
committer | Georgii Rymar <grimar@accesssoftek.com> | 2019-12-18 11:31:58 +0300 |
commit | f8dbb2c62f45a95f306a85410cb4f00c05c4bb0c (patch) | |
tree | 288cf37ade84e392c644848ac1c2524628ec8d24 /llvm/test | |
parent | 37b280805914f0bdb9e45d2be33d457a99220444 (diff) | |
download | bcm5719-llvm-f8dbb2c62f45a95f306a85410cb4f00c05c4bb0c.tar.gz bcm5719-llvm-f8dbb2c62f45a95f306a85410cb4f00c05c4bb0c.zip |
[llvm-readelf] - Change letters used for SHF_ARM_PURECODE and SHF_X86_64_LARGE flags.
GNU uses `l` for SHF_X86_64_LARGE and `y` for SHF_ARM_PURECODE.
Lets follow.
To do this I had to refactor and refine how we print the help flags description.
It was too generic and inconsistent with GNU readelf.
Differential revision: https://reviews.llvm.org/D71464
Diffstat (limited to 'llvm/test')
4 files changed, 87 insertions, 43 deletions
diff --git a/llvm/test/MC/ARM/elf-execute-only-section.ll b/llvm/test/MC/ARM/elf-execute-only-section.ll index 555294b61a7..73b088fa410 100644 --- a/llvm/test/MC/ARM/elf-execute-only-section.ll +++ b/llvm/test/MC/ARM/elf-execute-only-section.ll @@ -5,8 +5,8 @@ ; RUN: llc < %s -mtriple=thumbv7m-eabi -mattr=+execute-only -filetype=obj %s -o - | \ ; RUN: llvm-readelf -S | FileCheck %s -; CHECK-NOT: {{.text[ ]+PROGBITS[ ]+[0-9]+ [0-9]+ [0-9]+ [0-9]+ AX[^p]}} -; CHECK: {{.text[ ]+PROGBITS[ ]+[0-9]+ [0-9]+ [0-9]+ [0-9]+ AXp}} +; CHECK-NOT: {{.text[ ]+PROGBITS[ ]+[0-9]+ [0-9]+ [0-9]+ [0-9]+ AX[^y]}} +; CHECK: {{.text[ ]+PROGBITS[ ]+[0-9]+ [0-9]+ [0-9]+ [0-9]+ AXy}} define void @test_func() { entry: ret void diff --git a/llvm/test/tools/llvm-readobj/ELF/check-output-order.test b/llvm/test/tools/llvm-readobj/ELF/check-output-order.test index 36fce3ac642..bda782e9f51 100644 --- a/llvm/test/tools/llvm-readobj/ELF/check-output-order.test +++ b/llvm/test/tools/llvm-readobj/ELF/check-output-order.test @@ -10,7 +10,7 @@ # CHECK: Section header string table index # CHECK: There are 5 section headers, starting at offset # CHECK: Section Headers: -# CHECK: O (extra OS processing required) o (OS specific), p (processor specific) +# CHECK: Key to Flags: # CHECK: There are no relocations in this file. # CHECK: Symbol table '.symtab' contains 1 entries # CHECK: 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND diff --git a/llvm/test/tools/llvm-readobj/ELF/gnu-sections.test b/llvm/test/tools/llvm-readobj/ELF/gnu-sections.test index c5c67330ef3..532ca22d319 100644 --- a/llvm/test/tools/llvm-readobj/ELF/gnu-sections.test +++ b/llvm/test/tools/llvm-readobj/ELF/gnu-sections.test @@ -1,22 +1,28 @@ +## In this test case we check how we print section and flag descriptions for different targets. + +## EM_386 is a target that does not have any processor and OS specific flags, +## we use it to show how the default flag key is printed. + # RUN: yaml2obj --docnum=1 %s -o %t-i386.o -# RUN: llvm-readelf -S %t-i386.o | FileCheck %s -check-prefix ELF32 +# RUN: llvm-readelf -S %t-i386.o | FileCheck %s --check-prefix=ELF32 --strict-whitespace --match-full-lines -# ELF32: There are 8 section headers, starting at offset 0x90: +# ELF32:There are 8 section headers, starting at offset 0x90: # ELF32-EMPTY: -# ELF32-NEXT: Section Headers: -# ELF32-NEXT: [Nr] Name Type Address Off Size ES Flg Lk Inf Al -# ELF32-NEXT: [ 0] NULL 00000000 000000 000000 00 0 0 0 -# ELF32-NEXT: [ 1] .text PROGBITS 00000000 000034 000001 00 AX 0 0 4 -# ELF32-NEXT: [ 2] .rel.text REL 00000000 000038 000000 08 5 1 4 -# ELF32-NEXT: [ 3] .data PROGBITS 00000000 000038 000000 00 WA 0 0 4 -# ELF32-NEXT: [ 4] .bss NOBITS 00000000 000038 000000 00 WA 0 0 4 -# ELF32-NEXT: [ 5] .symtab SYMTAB 00000000 000038 000020 10 6 2 8 -# ELF32-NEXT: [ 6] .strtab STRTAB 00000000 000058 000007 00 0 0 1 -# ELF32-NEXT: [ 7] .shstrtab STRTAB 00000000 00005f 000030 00 0 0 1 -# ELF32-NEXT: Key to Flags: -# ELF32-NEXT: W (write), A (alloc), X (execute), M (merge), S (strings), l (large) -# ELF32-NEXT: I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown) -# ELF32-NEXT: O (extra OS processing required) o (OS specific), p (processor specific) +# ELF32-NEXT:Section Headers: +# ELF32-NEXT: [Nr] Name Type Address Off Size ES Flg Lk Inf Al +# ELF32-NEXT: [ 0] NULL 00000000 000000 000000 00 0 0 0 +# ELF32-NEXT: [ 1] .text PROGBITS 00000000 000034 000001 00 AX 0 0 4 +# ELF32-NEXT: [ 2] .rel.text REL 00000000 000038 000000 08 5 1 4 +# ELF32-NEXT: [ 3] .data PROGBITS 00000000 000038 000000 00 WA 0 0 4 +# ELF32-NEXT: [ 4] .bss NOBITS 00000000 000038 000000 00 WA 0 0 4 +# ELF32-NEXT: [ 5] .symtab SYMTAB 00000000 000038 000020 10 6 2 8 +# ELF32-NEXT: [ 6] .strtab STRTAB 00000000 000058 000007 00 0 0 1 +# ELF32-NEXT: [ 7] .shstrtab STRTAB 00000000 00005f 000030 00 0 0 1 +# ELF32-NEXT:Key to Flags: +# ELF32-NEXT: W (write), A (alloc), X (execute), M (merge), S (strings), I (info), +# ELF32-NEXT: L (link order), O (extra OS processing required), G (group), T (TLS), +# ELF32-NEXT: C (compressed), x (unknown), o (OS specific), E (exclude), +# ELF32-NEXT: p (processor specific) --- !ELF FileHeader: @@ -52,33 +58,37 @@ Symbols: Type: STT_SECTION Section: .text +## For an EM_X86_64 target we print "l" for the SHF_X86_64_LARGE section flag. +## Check we mention it in the flag key. + # RUN: yaml2obj --docnum=2 %s -o %t-x64.o -# RUN: llvm-readelf -S %t-x64.o | FileCheck %s -check-prefix ELF64 +# RUN: llvm-readelf -S %t-x64.o | FileCheck %s --check-prefix=ELF64 --strict-whitespace --match-full-lines ## Check that --wide is the same as -W and ignored and also ## that --section is the same as -S. # RUN: llvm-readobj --wide --sections %t-x64.o --elf-output-style=GNU \ -# RUN: | FileCheck %s -check-prefix ELF64 +# RUN: | FileCheck %s --check-prefix=ELF64 # RUN: llvm-readobj -W --sections %t-x64.o --elf-output-style=GNU \ -# RUN: | FileCheck %s -check-prefix ELF64 -# RUN: llvm-readelf -W -S %t-x64.o | FileCheck %s -check-prefix ELF64 +# RUN: | FileCheck %s --check-prefix=ELF64 +# RUN: llvm-readelf -W -S %t-x64.o | FileCheck %s --check-prefix=ELF64 -# ELF64: There are 8 section headers, starting at offset 0xb0: -# ELF64-EMPTY: -# ELF64-NEXT: Section Headers: -# ELF64-NEXT: [Nr] Name Type Address Off Size ES Flg Lk Inf Al -# ELF64-NEXT: [ 0] NULL 0000000000000000 000000 000000 00 0 0 0 -# ELF64-NEXT: [ 1] .text PROGBITS 0000000000000000 000040 000001 00 AX 0 0 4 -# ELF64-NEXT: [ 2] .rela.text RELA 0000000000000000 000048 000000 18 5 1 8 -# ELF64-NEXT: [ 3] .data PROGBITS 0000000000000000 000048 000000 00 WA 0 0 4 -# ELF64-NEXT: [ 4] .bss NOBITS 0000000000000000 000048 000000 00 WA 0 0 4 -# ELF64-NEXT: [ 5] .symtab SYMTAB 0000000000000000 000048 000030 18 6 2 8 -# ELF64-NEXT: [ 6] .strtab STRTAB 0000000000000000 000078 000007 00 0 0 1 -# ELF64-NEXT: [ 7] .shstrtab STRTAB 0000000000000000 00007f 000031 00 0 0 1 -# ELF64-NEXT: Key to Flags: -# ELF64-NEXT: W (write), A (alloc), X (execute), M (merge), S (strings), l (large) -# ELF64-NEXT: I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown) -# ELF64-NEXT: O (extra OS processing required) o (OS specific), p (processor specific) +# ELF64:There are 8 section headers, starting at offset 0xb0: +# ELF64-EMPTY: +# ELF64-NEXT:Section Headers: +# ELF64-NEXT: [Nr] Name Type Address Off Size ES Flg Lk Inf Al +# ELF64-NEXT: [ 0] NULL 0000000000000000 000000 000000 00 0 0 0 +# ELF64-NEXT: [ 1] .text PROGBITS 0000000000000000 000040 000001 00 AX 0 0 4 +# ELF64-NEXT: [ 2] .rela.text RELA 0000000000000000 000048 000000 18 5 1 8 +# ELF64-NEXT: [ 3] .data PROGBITS 0000000000000000 000048 000000 00 WA 0 0 4 +# ELF64-NEXT: [ 4] .bss NOBITS 0000000000000000 000048 000000 00 WA 0 0 4 +# ELF64-NEXT: [ 5] .symtab SYMTAB 0000000000000000 000048 000030 18 6 2 8 +# ELF64-NEXT: [ 6] .strtab STRTAB 0000000000000000 000078 000007 00 0 0 1 +# ELF64-NEXT: [ 7] .shstrtab STRTAB 0000000000000000 00007f 000031 00 0 0 1 +# ELF64-NEXT:Key to Flags: +# ELF64-NEXT: W (write), A (alloc), X (execute), M (merge), S (strings), I (info), +# ELF64-NEXT: L (link order), O (extra OS processing required), G (group), T (TLS), +# ELF64-NEXT: C (compressed), x (unknown), o (OS specific), E (exclude), +# ELF64-NEXT: l (large), p (processor specific) --- !ELF FileHeader: @@ -113,3 +123,23 @@ Symbols: - Name: .text Type: STT_SECTION Section: .text + +## For an EM_ARM target we print "y" for the SHF_ARM_PURECODE section flag. +## Check we mention it in the flag key. + +# RUN: yaml2obj --docnum=3 %s -o %t-arm.o +# RUN: llvm-readelf -S %t-arm.o | FileCheck %s --check-prefix=ARM --strict-whitespace --match-full-lines + +# ARM:Key to Flags: +# ARM-NEXT: W (write), A (alloc), X (execute), M (merge), S (strings), I (info), +# ARM-NEXT: L (link order), O (extra OS processing required), G (group), T (TLS), +# ARM-NEXT: C (compressed), x (unknown), o (OS specific), E (exclude), +# ARM-NEXT: y (purecode), p (processor specific) + +--- !ELF +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_ARM +Sections: [] diff --git a/llvm/test/tools/llvm-readobj/ELF/section-arch-flags.test b/llvm/test/tools/llvm-readobj/ELF/section-arch-flags.test index e70b3b2bce7..f6c74a6a441 100644 --- a/llvm/test/tools/llvm-readobj/ELF/section-arch-flags.test +++ b/llvm/test/tools/llvm-readobj/ELF/section-arch-flags.test @@ -85,12 +85,23 @@ Sections: # RUN: llvm-readobj -S %t-x86_64.o | FileCheck --check-prefix=X86_64-LLVM %s # RUN: llvm-readelf -S %t-x86_64.o | FileCheck --check-prefix=X86_64-GNU %s -# X86_64-LLVM: Flags [ (0x10000000) +# X86_64-LLVM: Name: .x86_64 +# X86_64-LLVM-NEXT: Type: SHT_PROGBITS +# X86_64-LLVM-NEXT: Flags [ (0x10000000) # X86_64-LLVM-NEXT: SHF_X86_64_LARGE (0x10000000) # X86_64-LLVM-NEXT: ] -# X86_64-GNU: [Nr] Name Type Address Off Size ES Flg Lk Inf Al -# X86_64-GNU: [ 1] .x86_64 PROGBITS 0000000000000000 000040 000000 00 p 0 0 0 +# X86_64-LLVM: Name: .with.exclude +# X86_64-LLVM-NEXT: Type: SHT_PROGBITS +# X86_64-LLVM-NEXT: Flags [ (0x90000000) +# X86_64-LLVM-NEXT: SHF_EXCLUDE (0x80000000) +# X86_64-LLVM-NEXT: SHF_X86_64_LARGE (0x10000000) +# X86_64-LLVM-NEXT: ] + +## GNU prints 'l' before 'E', despite otherwise printing upper-case letters first. +# X86_64-GNU: [Nr] Name Type Address Off Size ES Flg Lk Inf Al +# X86_64-GNU: [ 1] .x86_64 PROGBITS 0000000000000000 000040 000000 00 l 0 0 0 +# X86_64-GNU: [ 2] .with.exclude PROGBITS 0000000000000000 000040 000000 00 lE 0 0 0 --- !ELF FileHeader: @@ -102,6 +113,9 @@ Sections: - Name: .x86_64 Type: SHT_PROGBITS Flags: [ SHF_X86_64_LARGE ] + - Name: .with.exclude + Type: SHT_PROGBITS + Flags: [ SHF_X86_64_LARGE, SHF_EXCLUDE ] # RUN: yaml2obj --docnum 5 %s -o %t-arm.o # RUN: llvm-readobj -S %t-arm.o | FileCheck --check-prefix=ARM-LLVM %s @@ -112,7 +126,7 @@ Sections: # ARM-LLVM-NEXT: ] # ARM-GNU: [Nr] Name Type Address Off Size ES Flg Lk Inf Al -# ARM-GNU: [ 1] foo PROGBITS 0000000000000000 000040 000000 00 p 0 0 0 +# ARM-GNU: [ 1] foo PROGBITS 0000000000000000 000040 000000 00 y 0 0 0 --- !ELF FileHeader: |