summaryrefslogtreecommitdiffstats
path: root/llvm/test/tools/llvm-objdump/section-headers.test
diff options
context:
space:
mode:
authorJordan Rupprecht <rupprecht@google.com>2019-10-14 17:47:17 +0000
committerJordan Rupprecht <rupprecht@google.com>2019-10-14 17:47:17 +0000
commitc526ff8a629e73978a8cf94dba08202d28c296d7 (patch)
tree7841f9dc77c5e6b2ddf9c4703cfd4e8afe160162 /llvm/test/tools/llvm-objdump/section-headers.test
parent5af0201c2a08370fd3782b445cd96603d7988fd4 (diff)
downloadbcm5719-llvm-c526ff8a629e73978a8cf94dba08202d28c296d7.tar.gz
bcm5719-llvm-c526ff8a629e73978a8cf94dba08202d28c296d7.zip
[llvm-objdump] Adjust spacing and field width for --section-headers
Summary: - Expand the "Name" column past 13 characters when any of the section names are longer. Current behavior is a staggard output instead of a nice table if a single name is longer. - Only print the required number of hex chars for addresses (i.e. 8 characters for 32-bit, 16 characters for 64-bit) - Fix trailing spaces Reviewers: grimar, jhenderson, espindola Reviewed By: grimar Subscribers: emaste, sbc100, arichardson, aheejin, seiya, llvm-commits, MaskRay Tags: #llvm Differential Revision: https://reviews.llvm.org/D68730 llvm-svn: 374795
Diffstat (limited to 'llvm/test/tools/llvm-objdump/section-headers.test')
-rw-r--r--llvm/test/tools/llvm-objdump/section-headers.test155
1 files changed, 155 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-objdump/section-headers.test b/llvm/test/tools/llvm-objdump/section-headers.test
new file mode 100644
index 00000000000..bff362d89e9
--- /dev/null
+++ b/llvm/test/tools/llvm-objdump/section-headers.test
@@ -0,0 +1,155 @@
+## Test various details of llvm-objdump -h (--section-headers).
+
+## Check leading and trailing whitespace for full lines.
+
+# RUN: yaml2obj %s --docnum=1 -o %t-whitespace.o
+# RUN: llvm-objdump -h --show-lma %t-whitespace.o \
+# RUN: | FileCheck %s --check-prefix=WHITESPACE --strict-whitespace
+# RUN: llvm-objdump -h %t-whitespace.o \
+# RUN: | FileCheck %s --check-prefix=WHITESPACE-NO-LMA --strict-whitespace
+
+# WHITESPACE: {{^}}Sections:{{$}}
+# WHITESPACE-NEXT: {{^}}Idx Name Size VMA LMA Type{{$}}
+# WHITESPACE-NEXT: {{^}} 0 00000000 0000000000000000 0000000000000000 {{$}}
+# WHITESPACE-NEXT: {{^}} 1 .text 00000000 0000000000000000 0000000000000000 TEXT{{$}}
+# WHITESPACE-NEXT: {{^}} 2 .data 00000000 0000000000000000 0000000000000000 DATA{{$}}
+# WHITESPACE-NEXT: {{^}} 3 .bss 00000000 0000000000000000 0000000000000000 BSS{{$}}
+# WHITESPACE-NEXT: {{^}} 4 .other 00000000 0000000000000000 0000000000000000 {{$}}
+
+# WHITESPACE-NO-LMA: {{^}}Sections:{{$}}
+# WHITESPACE-NO-LMA-NEXT: {{^}}Idx Name Size VMA Type{{$}}
+# WHITESPACE-NO-LMA-NEXT: {{^}} 0 00000000 0000000000000000 {{$}}
+# WHITESPACE-NO-LMA-NEXT: {{^}} 1 .text 00000000 0000000000000000 TEXT{{$}}
+# WHITESPACE-NO-LMA-NEXT: {{^}} 2 .data 00000000 0000000000000000 DATA{{$}}
+# WHITESPACE-NO-LMA-NEXT: {{^}} 3 .bss 00000000 0000000000000000 BSS{{$}}
+# WHITESPACE-NO-LMA-NEXT: {{^}} 4 .other 00000000 0000000000000000 {{$}}
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_EXEC
+ Machine: EM_X86_64
+Sections:
+ - Name: .text
+ Type: SHT_PROGBITS
+ Flags: [SHF_ALLOC, SHF_EXECINSTR]
+ - Name: .data
+ Type: SHT_PROGBITS
+ Flags: [SHF_ALLOC, SHF_WRITE]
+ - Name: .bss
+ Type: SHT_NOBITS
+ Flags: [SHF_ALLOC, SHF_WRITE]
+ - Name: .other
+ Type: SHT_REL
+
+## The name field automatically expands past the default 13 columns when a
+## section name is longer than that.
+## Note: check with and without --show-lma to make sure resizing happens in
+## both cases.
+
+# RUN: yaml2obj %s --docnum=2 -o %t-name13chars.o
+# RUN: llvm-objdump -h --show-lma %t-name13chars.o \
+# RUN: | FileCheck %s --check-prefix=NAME-13 --strict-whitespace
+# RUN: llvm-objdump -h %t-name13chars.o \
+# RUN: | FileCheck %s --check-prefix=NAME-13 --strict-whitespace
+
+# NAME-13: Sections:
+# NAME-13-NEXT: {{^}}Idx Name Size
+# NAME-13-NEXT: {{^}} 0 00000000
+# NAME-13-NEXT: {{^}} 1 .foo 00000000
+# NAME-13-NEXT: {{^}} 2 .thirteenchar 00000000
+# NAME-13-NEXT: {{^}} 3 .bar 00000000
+
+## Including a section with a name of length 14 expands the width of the "Name"
+## column.
+# RUN: yaml2obj %s --docnum=3 -o %t-name14chars.o
+# RUN: llvm-objdump -h --show-lma %t-name14chars.o \
+# RUN: | FileCheck %s --check-prefix=NAME-14 --strict-whitespace
+# RUN: llvm-objdump -h %t-name14chars.o \
+# RUN: | FileCheck %s --check-prefix=NAME-14 --strict-whitespace
+
+# NAME-14: Sections:
+# NAME-14-NEXT: {{^}}Idx Name Size
+# NAME-14-NEXT: {{^}} 0 00000000
+# NAME-14-NEXT: {{^}} 1 .foo 00000000
+# NAME-14-NEXT: {{^}} 2 .fourteenchars 00000000
+# NAME-14-NEXT: {{^}} 3 .bar 00000000
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_EXEC
+ Machine: EM_X86_64
+Sections:
+ - Name: .foo
+ Type: SHT_PROGBITS
+ - Name: .thirteenchar
+ Type: SHT_PROGBITS
+ - Name: .bar
+ Type: SHT_PROGBITS
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_EXEC
+ Machine: EM_X86_64
+Sections:
+ - Name: .foo
+ Type: SHT_PROGBITS
+ - Name: .fourteenchars
+ Type: SHT_PROGBITS
+ - Name: .bar
+ Type: SHT_PROGBITS
+
+## Check that objdump -h only prints the necessary amount of bytes for
+## addresses.
+
+# RUN: yaml2obj %s --docnum=4 -o %t-32bit.o
+# RUN: yaml2obj %s --docnum=5 -o %t-64bit.o
+
+# RUN: llvm-objdump -h --show-lma %t-32bit.o \
+# RUN: | FileCheck %s --check-prefix=32 --strict-whitespace
+# 32: {{^}}Idx Name Size VMA LMA Type{{$}}
+# 32: {{^}} 1 .foo 00000000 00000400 00000400 TEXT{{$}}
+
+# RUN: llvm-objdump -h %t-32bit.o \
+# RUN: | FileCheck %s --check-prefix=32-NO-LMA --strict-whitespace
+# 32-NO-LMA: {{^}}Idx Name Size VMA Type{{$}}
+# 32-NO-LMA: {{^}} 1 .foo 00000000 00000400 TEXT{{$}}
+
+# RUN: llvm-objdump -h --show-lma %t-64bit.o \
+# RUN: | FileCheck %s --check-prefix=64 --strict-whitespace
+# 64: {{^}}Idx Name Size VMA LMA Type{{$}}
+# 64: {{^}} 1 .foo 00000000 0000000000000400 0000000000000400 TEXT{{$}}
+
+# RUN: llvm-objdump -h %t-64bit.o \
+# RUN: | FileCheck %s --check-prefix=64-NO-LMA --strict-whitespace
+# 64-NO-LMA: {{^}}Idx Name Size VMA Type{{$}}
+# 64-NO-LMA: {{^}} 1 .foo 00000000 0000000000000400 TEXT{{$}}
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS32
+ Data: ELFDATA2LSB
+ Type: ET_EXEC
+ Machine: EM_386
+Sections:
+ - Name: .foo
+ Type: SHT_PROGBITS
+ Flags: [SHF_ALLOC, SHF_EXECINSTR]
+ Address: 0x400
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_EXEC
+ Machine: EM_X86_64
+Sections:
+ - Name: .foo
+ Type: SHT_PROGBITS
+ Flags: [SHF_ALLOC, SHF_EXECINSTR]
+ Address: 0x400
OpenPOWER on IntegriCloud