diff options
author | Jordan Rupprecht <rupprecht@google.com> | 2018-11-12 18:02:38 +0000 |
---|---|---|
committer | Jordan Rupprecht <rupprecht@google.com> | 2018-11-12 18:02:38 +0000 |
commit | dbf552c40f3916d1ec0deca11bc432b91b8ea17a (patch) | |
tree | d9a3e9c0c9bf599a74a0a83c8013fbabed5ec37f /llvm/test | |
parent | ec3c0854ecaf85d878342f252ab877b53cfeae68 (diff) | |
download | bcm5719-llvm-dbf552c40f3916d1ec0deca11bc432b91b8ea17a.tar.gz bcm5719-llvm-dbf552c40f3916d1ec0deca11bc432b91b8ea17a.zip |
[llvm-readelf] Make llvm-readelf more compatible with GNU readelf.
Summary:
This change adds a bunch of options that GNU readelf supports. There is one breaking change when invoked as `llvm-readobj`, and three breaking changes when invoked as `llvm-readelf`:
- Add --all (implies --file-header, --program-headers, etc.)
- [Breaking] -a is --all instead of --arm-attributes
- Add --file-header as an alias for --file-headers
- Replace --sections with --sections-headers, keeping --sections as an alias for it
- Add --relocs as an alias for --relocations
- Add --dynamic as an alias for --dynamic-table
- Add --segments as an alias for --program-headers
- Add --section-groups as an alias for --elf-section-groups
- Add --dyn-syms as an alias for --dyn-symbols
- Add --syms as an alias for --symbols
- Add --histogram as an alias for --elf-hash-histogram
- [Breaking] When invoked as `llvm-readelf`, -s is --symbols instead of --sections
- [Breaking] When invoked as `llvm-readelf`, -t is no longer an alias for --symbols
Reviewers: MaskRay, phosek, mcgrathr, jhenderson
Reviewed By: MaskRay, jhenderson
Subscribers: sbc100, aheejin, edd, jhenderson, silvas, echristo, compnerd, kristina, javed.absar, kristof.beyls, llvm-commits, Bigcheese
Differential Revision: https://reviews.llvm.org/D54124
llvm-svn: 346685
Diffstat (limited to 'llvm/test')
-rw-r--r-- | llvm/test/MC/ARM/elf-execute-only-section.ll | 6 | ||||
-rw-r--r-- | llvm/test/tools/llvm-readobj/all.test | 15 | ||||
-rw-r--r-- | llvm/test/tools/llvm-readobj/readelf-s-alias.test | 49 | ||||
-rw-r--r-- | llvm/test/tools/llvm-readobj/sections.test | 25 | ||||
-rw-r--r-- | llvm/test/tools/llvm-readobj/symbols.test | 15 |
5 files changed, 95 insertions, 15 deletions
diff --git a/llvm/test/MC/ARM/elf-execute-only-section.ll b/llvm/test/MC/ARM/elf-execute-only-section.ll index 2be3f4c7038..555294b61a7 100644 --- a/llvm/test/MC/ARM/elf-execute-only-section.ll +++ b/llvm/test/MC/ARM/elf-execute-only-section.ll @@ -1,9 +1,9 @@ ; RUN: llc < %s -mtriple=thumbv8m.base-eabi -mattr=+execute-only -filetype=obj %s -o - | \ -; RUN: llvm-readelf -s | FileCheck %s +; RUN: llvm-readelf -S | FileCheck %s ; RUN: llc < %s -mtriple=thumbv8m.main-eabi -mattr=+execute-only -filetype=obj %s -o - | \ -; RUN: llvm-readelf -s | FileCheck %s +; RUN: llvm-readelf -S | FileCheck %s ; RUN: llc < %s -mtriple=thumbv7m-eabi -mattr=+execute-only -filetype=obj %s -o - | \ -; RUN: llvm-readelf -s | FileCheck %s +; 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}} diff --git a/llvm/test/tools/llvm-readobj/all.test b/llvm/test/tools/llvm-readobj/all.test new file mode 100644 index 00000000000..b8ec174d5aa --- /dev/null +++ b/llvm/test/tools/llvm-readobj/all.test @@ -0,0 +1,15 @@ +RUN: llvm-readobj -a %p/Inputs/trivial.obj.elf-i386 \ +RUN: | FileCheck %s -check-prefix ALL +RUN: llvm-readobj --all %p/Inputs/trivial.obj.elf-i386 \ +RUN: | FileCheck %s -check-prefix ALL + +ALL: Format: ELF32-i386 +ALL: Arch: i386 +ALL: AddressSize: 32bit +ALL: LoadName: +ALL: ElfHeader { +ALL: Sections [ +ALL: Relocations [ +ALL: Symbols [ +ALL: ProgramHeaders [ +ALL: Notes [ diff --git a/llvm/test/tools/llvm-readobj/readelf-s-alias.test b/llvm/test/tools/llvm-readobj/readelf-s-alias.test new file mode 100644 index 00000000000..e34f81ec6c2 --- /dev/null +++ b/llvm/test/tools/llvm-readobj/readelf-s-alias.test @@ -0,0 +1,49 @@ +# In llvm-readobj, -s is an alias for --sections. +RUN: llvm-readobj -s %p/Inputs/trivial.obj.elf-i386 \ +RUN: | FileCheck %s -check-prefix SEC +RUN: llvm-readobj --sections %p/Inputs/trivial.obj.elf-i386 \ +RUN: | FileCheck %s -check-prefix SEC + +# In llvm-readelf, -s is an alias for --symbols. +RUN: llvm-readelf -s %p/Inputs/trivial.obj.elf-i386 \ +RUN: | FileCheck %s -check-prefix SYM +RUN: llvm-readelf --symbols %p/Inputs/trivial.obj.elf-i386 \ +RUN: | FileCheck %s -check-prefix SYM + +SEC: Sections [ +SEC-NEXT: Section { +SEC-NEXT: Index: 0 +SEC-NEXT: Name: (0) +SEC-NEXT: Type: SHT_NULL (0x0) +SEC-NEXT: Flags [ (0x0) +SEC-NEXT: ] +SEC-NEXT: Address: 0x0 +SEC-NEXT: Offset: 0x0 +SEC-NEXT: Size: 0 +SEC-NEXT: Link: 0 +SEC-NEXT: Info: 0 +SEC-NEXT: AddressAlignment: 0 +SEC-NEXT: EntrySize: 0 +SEC-NEXT: } +SEC-NEXT: Section { +SEC-NEXT: Index: 1 +SEC-NEXT: Name: .text (5) +SEC-NEXT: Type: SHT_PROGBITS (0x1) +SEC-NEXT: Flags [ (0x6) +SEC-NEXT: SHF_ALLOC (0x2) +SEC-NEXT: SHF_EXECINSTR (0x4) +SEC-NEXT: ] +SEC-NEXT: Address: 0x0 +SEC-NEXT: Offset: 0x40 +SEC-NEXT: Size: 42 +SEC-NEXT: Link: 0 +SEC-NEXT: Info: 0 +SEC-NEXT: AddressAlignment: 16 +SEC-NEXT: EntrySize: 0 +SEC-NEXT: } + +SYM: Symbol table '.symtab' contains {{.*}} entries: +SYM-NEXT: Num: Value Size Type Bind Vis Ndx Name +SYM-NEXT: 0: {{.*}} NOTYPE {{.*}} UND +SYM-NEXT: 1: {{.*}} FILE {{.*}} trivial.ll +SYM-NEXT: 2: {{.*}} OBJECT {{.*}} .L.str diff --git a/llvm/test/tools/llvm-readobj/sections.test b/llvm/test/tools/llvm-readobj/sections.test index c371f4bb644..a66e663d0de 100644 --- a/llvm/test/tools/llvm-readobj/sections.test +++ b/llvm/test/tools/llvm-readobj/sections.test @@ -1,22 +1,29 @@ -RUN: llvm-readobj -s %p/Inputs/trivial.obj.coff-i386 \ +RUN: llvm-readobj --sections %p/Inputs/trivial.obj.coff-i386 \ RUN: | FileCheck %s -check-prefix COFF -RUN: llvm-readobj -s %p/Inputs/trivial.obj.elf-i386 \ +RUN: llvm-readobj --sections %p/Inputs/trivial.obj.elf-i386 \ RUN: | FileCheck %s -check-prefix ELF -RUN: llvm-readobj -s %p/Inputs/trivial.obj.elf-mipsel \ +RUN: llvm-readobj --sections %p/Inputs/trivial.obj.elf-mipsel \ RUN: | FileCheck %s -check-prefix ELF-MIPSEL -RUN: llvm-readobj -s %p/Inputs/trivial.obj.macho-i386 \ +RUN: llvm-readobj --sections %p/Inputs/trivial.obj.macho-i386 \ RUN: | FileCheck %s -check-prefix MACHO-I386 -RUN: llvm-readobj -s %p/Inputs/trivial.obj.macho-x86-64 \ +RUN: llvm-readobj --sections %p/Inputs/trivial.obj.macho-x86-64 \ RUN: | FileCheck %s -check-prefix MACHO-X86-64 -RUN: llvm-readobj -s %p/Inputs/trivial.obj.macho-ppc \ +RUN: llvm-readobj --sections %p/Inputs/trivial.obj.macho-ppc \ RUN: | FileCheck %s -check-prefix MACHO-PPC -RUN: llvm-readobj -s %p/Inputs/trivial.obj.macho-ppc64 \ +RUN: llvm-readobj --sections %p/Inputs/trivial.obj.macho-ppc64 \ RUN: | FileCheck %s -check-prefix MACHO-PPC64 -RUN: llvm-readobj -s %p/Inputs/trivial.obj.macho-arm \ +RUN: llvm-readobj --sections %p/Inputs/trivial.obj.macho-arm \ RUN: | FileCheck %s -check-prefix MACHO-ARM -RUN: llvm-readobj -s %p/Inputs/trivial.obj.wasm \ +RUN: llvm-readobj --sections %p/Inputs/trivial.obj.wasm \ RUN: | FileCheck %s -check-prefix WASM +# Check flag aliases produce identical output. +RUN: llvm-readobj --sections %p/Inputs/trivial.obj.elf-i386 > %t.sections +RUN: llvm-readobj -S %p/Inputs/trivial.obj.elf-i386 > %t.uppers +RUN: cmp %t.sections %t.uppers +RUN: llvm-readobj -s %p/Inputs/trivial.obj.elf-i386 > %t.lowers +RUN: cmp %t.sections %t.lowers + COFF: Sections [ COFF-NEXT: Section { COFF-NEXT: Number: 1 diff --git a/llvm/test/tools/llvm-readobj/symbols.test b/llvm/test/tools/llvm-readobj/symbols.test index 1a0cacdeccd..e68d654bd65 100644 --- a/llvm/test/tools/llvm-readobj/symbols.test +++ b/llvm/test/tools/llvm-readobj/symbols.test @@ -1,10 +1,19 @@ -RUN: llvm-readobj -t %p/Inputs/trivial.obj.coff-i386 \ +RUN: llvm-readobj --symbols %p/Inputs/trivial.obj.coff-i386 \ RUN: | FileCheck %s -check-prefix COFF -RUN: llvm-readobj -t %p/Inputs/trivial.obj.elf-i386 \ +RUN: llvm-readobj --symbols %p/Inputs/trivial.obj.elf-i386 \ RUN: | FileCheck %s -check-prefix ELF -RUN: llvm-readobj -t %p/Inputs/trivial.obj.wasm \ +RUN: llvm-readobj --symbols %p/Inputs/trivial.obj.wasm \ RUN: | FileCheck %s -check-prefix WASM +# Check flag aliases produce identical output. +RUN: llvm-readobj --symbols %p/Inputs/trivial.obj.elf-i386 > %t.symbols +RUN: llvm-readobj --syms %p/Inputs/trivial.obj.elf-i386 > %t.syms +RUN: cmp %t.symbols %t.syms +RUN: llvm-readobj -t %p/Inputs/trivial.obj.elf-i386 > %t.t +RUN: cmp %t.symbols %t.t +RUN: llvm-readelf -s -elf-output-style LLVM %p/Inputs/trivial.obj.elf-i386 > %t.lowers +RUN: cmp %t.symbols %t.lowers + COFF: Symbols [ COFF-NEXT: Symbol { COFF-NEXT: Name: @comp.id |