summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorJordan Rupprecht <rupprecht@google.com>2018-11-12 18:02:38 +0000
committerJordan Rupprecht <rupprecht@google.com>2018-11-12 18:02:38 +0000
commitdbf552c40f3916d1ec0deca11bc432b91b8ea17a (patch)
treed9a3e9c0c9bf599a74a0a83c8013fbabed5ec37f /llvm/test
parentec3c0854ecaf85d878342f252ab877b53cfeae68 (diff)
downloadbcm5719-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.ll6
-rw-r--r--llvm/test/tools/llvm-readobj/all.test15
-rw-r--r--llvm/test/tools/llvm-readobj/readelf-s-alias.test49
-rw-r--r--llvm/test/tools/llvm-readobj/sections.test25
-rw-r--r--llvm/test/tools/llvm-readobj/symbols.test15
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
OpenPOWER on IntegriCloud