173 lines · plain
1## Test various details of llvm-objdump -h (--section-headers).2 3## Check leading and trailing whitespace for full lines.4 5# RUN: yaml2obj %s --docnum=1 -o %t-whitespace.o6# RUN: llvm-objdump -h --show-lma %t-whitespace.o \7# RUN: | FileCheck %s --check-prefix=WHITESPACE --strict-whitespace8# RUN: llvm-objdump -h %t-whitespace.o \9# RUN: | FileCheck %s --check-prefix=WHITESPACE-NO-LMA --strict-whitespace10 11# WHITESPACE: {{^}}Sections:{{$}}12# WHITESPACE-NEXT: {{^}}Idx Name Size VMA LMA Type{{$}}13# WHITESPACE-NEXT: {{^}} 0 00000000 0000000000000000 0000000000000000 {{$}}14# WHITESPACE-NEXT: {{^}} 1 .text 00000000 0000000000000000 0000000000000000 TEXT{{$}}15# WHITESPACE-NEXT: {{^}} 2 .data 00000000 0000000000000000 0000000000000000 DATA{{$}}16# WHITESPACE-NEXT: {{^}} 3 .bss 00000000 0000000000000000 0000000000000000 BSS{{$}}17# WHITESPACE-NEXT: {{^}} 4 .other 00000000 0000000000000000 0000000000000000 {{$}}18# WHITESPACE-NEXT: {{^}} 5 .debug_abbrev 00000000 0000000000000000 0000000000000000 DEBUG{{$}}19# WHITESPACE-NEXT: {{^}} 6 .debug_info 00000000 0000000000000000 0000000000000000 DATA, DEBUG{{$}}20# WHITESPACE-NEXT: {{^}} 7 .mydata 00000000 0000000000000000 0000000000000000 DATA{{$}}21# WHITESPACE-NEXT: {{^}} 8 .bss1 00000000 0000000000000000 0000000000000000 BSS{{$}}22# WHITESPACE-NEXT: {{^}} 9 .nonalloc.bss 00000000 0000000000000000 0000000000000000 {{$}}23 24# WHITESPACE-NO-LMA: {{^}}Sections:{{$}}25# WHITESPACE-NO-LMA-NEXT: {{^}}Idx Name Size VMA Type{{$}}26# WHITESPACE-NO-LMA-NEXT: {{^}} 0 00000000 0000000000000000 {{$}}27# WHITESPACE-NO-LMA-NEXT: {{^}} 1 .text 00000000 0000000000000000 TEXT{{$}}28# WHITESPACE-NO-LMA-NEXT: {{^}} 2 .data 00000000 0000000000000000 DATA{{$}}29# WHITESPACE-NO-LMA-NEXT: {{^}} 3 .bss 00000000 0000000000000000 BSS{{$}}30# WHITESPACE-NO-LMA-NEXT: {{^}} 4 .other 00000000 0000000000000000 {{$}}31# WHITESPACE-NO-LMA-NEXT: {{^}} 5 .debug_abbrev 00000000 0000000000000000 DEBUG{{$}}32# WHITESPACE-NO-LMA-NEXT: {{^}} 6 .debug_info 00000000 0000000000000000 DATA, DEBUG{{$}}33# WHITESPACE-NO-LMA-NEXT: {{^}} 7 .mydata 00000000 0000000000000000 DATA{{$}}34# WHITESPACE-NO-LMA-NEXT: {{^}} 8 .bss1 00000000 0000000000000000 BSS{{$}}35# WHITESPACE-NO-LMA-NEXT: {{^}} 9 .nonalloc.bss 00000000 0000000000000000 {{$}}36 37--- !ELF38FileHeader:39 Class: ELFCLASS6440 Data: ELFDATA2LSB41 Type: ET_EXEC42 Machine: EM_X86_6443Sections:44 - Name: .text45 Type: SHT_PROGBITS46 Flags: [SHF_ALLOC, SHF_EXECINSTR]47 - Name: .data48 Type: SHT_PROGBITS49 Flags: [SHF_ALLOC, SHF_WRITE]50 - Name: .bss51 Type: SHT_NOBITS52 Flags: [SHF_ALLOC, SHF_WRITE]53 - Name: .other54 Type: SHT_REL55 - Name: .debug_abbrev56 Type: SHT_PROGBITS57 - Name: .debug_info58 Type: SHT_PROGBITS59 Flags: [ SHF_WRITE, SHF_ALLOC ]60 - Name: .mydata61 Type: 0x7000000062 Flags: [ SHF_ALLOC ]63 - Name: .bss164 Type: SHT_NOBITS65 Flags: [SHF_ALLOC]66 - Name: .nonalloc.bss67 Type: SHT_NOBITS68 69## Check that --section-headers and --headers are aliases for -h.70# RUN: llvm-objdump --section-headers --show-lma %t-whitespace.o \71# RUN: | FileCheck %s --check-prefix=WHITESPACE --strict-whitespace72# RUN: llvm-objdump --headers --show-lma %t-whitespace.o \73# RUN: | FileCheck %s --check-prefix=WHITESPACE --strict-whitespace74 75## The name field automatically expands past the default 13 columns when a76## section name is longer than that.77## Note: check with and without --show-lma to make sure resizing happens in78## both cases.79 80# RUN: yaml2obj %s --docnum=2 -o %t-name13chars.o81# RUN: llvm-objdump -h --show-lma %t-name13chars.o \82# RUN: | FileCheck %s --check-prefix=NAME-13 --strict-whitespace83# RUN: llvm-objdump -h %t-name13chars.o \84# RUN: | FileCheck %s --check-prefix=NAME-13 --strict-whitespace85 86# NAME-13: Sections:87# NAME-13-NEXT: {{^}}Idx Name Size88# NAME-13-NEXT: {{^}} 0 0000000089# NAME-13-NEXT: {{^}} 1 .foo 0000000090# NAME-13-NEXT: {{^}} 2 .thirteenchar 0000000091# NAME-13-NEXT: {{^}} 3 .bar 0000000092 93## Including a section with a name of length 14 expands the width of the "Name"94## column.95# RUN: yaml2obj %s --docnum=3 -o %t-name14chars.o96# RUN: llvm-objdump -h --show-lma %t-name14chars.o \97# RUN: | FileCheck %s --check-prefix=NAME-14 --strict-whitespace98# RUN: llvm-objdump -h %t-name14chars.o \99# RUN: | FileCheck %s --check-prefix=NAME-14 --strict-whitespace100 101# NAME-14: Sections:102# NAME-14-NEXT: {{^}}Idx Name Size103# NAME-14-NEXT: {{^}} 0 00000000104# NAME-14-NEXT: {{^}} 1 .foo 00000000105# NAME-14-NEXT: {{^}} 2 .fourteenchars 00000000106# NAME-14-NEXT: {{^}} 3 .bar 00000000107 108--- !ELF109FileHeader:110 Class: ELFCLASS64111 Data: ELFDATA2LSB112 Type: ET_EXEC113 Machine: EM_X86_64114Sections:115 - Name: .foo116 Type: SHT_PROGBITS117 - Name: .thirteenchar118 Type: SHT_PROGBITS119 - Name: .bar120 Type: SHT_PROGBITS121 122--- !ELF123FileHeader:124 Class: ELFCLASS64125 Data: ELFDATA2LSB126 Type: ET_EXEC127 Machine: EM_X86_64128Sections:129 - Name: .foo130 Type: SHT_PROGBITS131 - Name: .fourteenchars132 Type: SHT_PROGBITS133 - Name: .bar134 Type: SHT_PROGBITS135 136## Check that objdump -h only prints the necessary amount of bytes for137## addresses.138 139# RUN: yaml2obj %s --docnum=4 -D BITS=32 -o %t-32bit.o140# RUN: yaml2obj %s --docnum=4 -D BITS=64 -o %t-64bit.o141 142# RUN: llvm-objdump -h --show-lma %t-32bit.o \143# RUN: | FileCheck %s --check-prefix=32 --strict-whitespace144# 32: {{^}}Idx Name Size VMA LMA Type{{$}}145# 32: {{^}} 1 .foo 00000000 00000400 00000400 TEXT{{$}}146 147# RUN: llvm-objdump -h %t-32bit.o \148# RUN: | FileCheck %s --check-prefix=32-NO-LMA --strict-whitespace149# 32-NO-LMA: {{^}}Idx Name Size VMA Type{{$}}150# 32-NO-LMA: {{^}} 1 .foo 00000000 00000400 TEXT{{$}}151 152# RUN: llvm-objdump -h --show-lma %t-64bit.o \153# RUN: | FileCheck %s --check-prefix=64 --strict-whitespace154# 64: {{^}}Idx Name Size VMA LMA Type{{$}}155# 64: {{^}} 1 .foo 00000000 0000000000000400 0000000000000400 TEXT{{$}}156 157# RUN: llvm-objdump -h %t-64bit.o \158# RUN: | FileCheck %s --check-prefix=64-NO-LMA --strict-whitespace159# 64-NO-LMA: {{^}}Idx Name Size VMA Type{{$}}160# 64-NO-LMA: {{^}} 1 .foo 00000000 0000000000000400 TEXT{{$}}161 162--- !ELF163FileHeader:164 Class: ELFCLASS[[BITS]]165 Data: ELFDATA2LSB166 Type: ET_EXEC167 Machine: EM_386168Sections:169 - Name: .foo170 Type: SHT_PROGBITS171 Flags: [SHF_ALLOC, SHF_EXECINSTR]172 Address: 0x400173