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.o 6# RUN: llvm-objdump -h --show-lma %t-whitespace.o \ 7# RUN: | FileCheck %s --check-prefix=WHITESPACE --strict-whitespace 8# RUN: llvm-objdump -h %t-whitespace.o \ 9# RUN: | FileCheck %s --check-prefix=WHITESPACE-NO-LMA --strict-whitespace 10 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 21# WHITESPACE-NO-LMA: {{^}}Sections:{{$}} 22# WHITESPACE-NO-LMA-NEXT: {{^}}Idx Name Size VMA Type{{$}} 23# WHITESPACE-NO-LMA-NEXT: {{^}} 0 00000000 0000000000000000 {{$}} 24# WHITESPACE-NO-LMA-NEXT: {{^}} 1 .text 00000000 0000000000000000 TEXT{{$}} 25# WHITESPACE-NO-LMA-NEXT: {{^}} 2 .data 00000000 0000000000000000 DATA{{$}} 26# WHITESPACE-NO-LMA-NEXT: {{^}} 3 .bss 00000000 0000000000000000 BSS{{$}} 27# WHITESPACE-NO-LMA-NEXT: {{^}} 4 .other 00000000 0000000000000000 {{$}} 28# WHITESPACE-NO-LMA-NEXT: {{^}} 5 .debug_abbrev 00000000 0000000000000000 DEBUG{{$}} 29# WHITESPACE-NO-LMA-NEXT: {{^}} 6 .debug_info 00000000 0000000000000000 DATA, DEBUG{{$}} 30 31--- !ELF 32FileHeader: 33 Class: ELFCLASS64 34 Data: ELFDATA2LSB 35 Type: ET_EXEC 36 Machine: EM_X86_64 37Sections: 38 - Name: .text 39 Type: SHT_PROGBITS 40 Flags: [SHF_ALLOC, SHF_EXECINSTR] 41 - Name: .data 42 Type: SHT_PROGBITS 43 Flags: [SHF_ALLOC, SHF_WRITE] 44 - Name: .bss 45 Type: SHT_NOBITS 46 Flags: [SHF_ALLOC, SHF_WRITE] 47 - Name: .other 48 Type: SHT_REL 49 - Name: .debug_abbrev 50 Type: SHT_PROGBITS 51 - Name: .debug_info 52 Type: SHT_PROGBITS 53 Flags: [ SHF_WRITE, SHF_ALLOC ] 54 55## Check that --section-headers and --headers are aliases for -h. 56# RUN: llvm-objdump --section-headers --show-lma %t-whitespace.o \ 57# RUN: | FileCheck %s --check-prefix=WHITESPACE --strict-whitespace 58# RUN: llvm-objdump --headers --show-lma %t-whitespace.o \ 59# RUN: | FileCheck %s --check-prefix=WHITESPACE --strict-whitespace 60 61## The name field automatically expands past the default 13 columns when a 62## section name is longer than that. 63## Note: check with and without --show-lma to make sure resizing happens in 64## both cases. 65 66# RUN: yaml2obj %s --docnum=2 -o %t-name13chars.o 67# RUN: llvm-objdump -h --show-lma %t-name13chars.o \ 68# RUN: | FileCheck %s --check-prefix=NAME-13 --strict-whitespace 69# RUN: llvm-objdump -h %t-name13chars.o \ 70# RUN: | FileCheck %s --check-prefix=NAME-13 --strict-whitespace 71 72# NAME-13: Sections: 73# NAME-13-NEXT: {{^}}Idx Name Size 74# NAME-13-NEXT: {{^}} 0 00000000 75# NAME-13-NEXT: {{^}} 1 .foo 00000000 76# NAME-13-NEXT: {{^}} 2 .thirteenchar 00000000 77# NAME-13-NEXT: {{^}} 3 .bar 00000000 78 79## Including a section with a name of length 14 expands the width of the "Name" 80## column. 81# RUN: yaml2obj %s --docnum=3 -o %t-name14chars.o 82# RUN: llvm-objdump -h --show-lma %t-name14chars.o \ 83# RUN: | FileCheck %s --check-prefix=NAME-14 --strict-whitespace 84# RUN: llvm-objdump -h %t-name14chars.o \ 85# RUN: | FileCheck %s --check-prefix=NAME-14 --strict-whitespace 86 87# NAME-14: Sections: 88# NAME-14-NEXT: {{^}}Idx Name Size 89# NAME-14-NEXT: {{^}} 0 00000000 90# NAME-14-NEXT: {{^}} 1 .foo 00000000 91# NAME-14-NEXT: {{^}} 2 .fourteenchars 00000000 92# NAME-14-NEXT: {{^}} 3 .bar 00000000 93 94--- !ELF 95FileHeader: 96 Class: ELFCLASS64 97 Data: ELFDATA2LSB 98 Type: ET_EXEC 99 Machine: EM_X86_64 100Sections: 101 - Name: .foo 102 Type: SHT_PROGBITS 103 - Name: .thirteenchar 104 Type: SHT_PROGBITS 105 - Name: .bar 106 Type: SHT_PROGBITS 107 108--- !ELF 109FileHeader: 110 Class: ELFCLASS64 111 Data: ELFDATA2LSB 112 Type: ET_EXEC 113 Machine: EM_X86_64 114Sections: 115 - Name: .foo 116 Type: SHT_PROGBITS 117 - Name: .fourteenchars 118 Type: SHT_PROGBITS 119 - Name: .bar 120 Type: SHT_PROGBITS 121 122## Check that objdump -h only prints the necessary amount of bytes for 123## addresses. 124 125# RUN: yaml2obj %s --docnum=4 -D BITS=32 -o %t-32bit.o 126# RUN: yaml2obj %s --docnum=4 -D BITS=64 -o %t-64bit.o 127 128# RUN: llvm-objdump -h --show-lma %t-32bit.o \ 129# RUN: | FileCheck %s --check-prefix=32 --strict-whitespace 130# 32: {{^}}Idx Name Size VMA LMA Type{{$}} 131# 32: {{^}} 1 .foo 00000000 00000400 00000400 TEXT{{$}} 132 133# RUN: llvm-objdump -h %t-32bit.o \ 134# RUN: | FileCheck %s --check-prefix=32-NO-LMA --strict-whitespace 135# 32-NO-LMA: {{^}}Idx Name Size VMA Type{{$}} 136# 32-NO-LMA: {{^}} 1 .foo 00000000 00000400 TEXT{{$}} 137 138# RUN: llvm-objdump -h --show-lma %t-64bit.o \ 139# RUN: | FileCheck %s --check-prefix=64 --strict-whitespace 140# 64: {{^}}Idx Name Size VMA LMA Type{{$}} 141# 64: {{^}} 1 .foo 00000000 0000000000000400 0000000000000400 TEXT{{$}} 142 143# RUN: llvm-objdump -h %t-64bit.o \ 144# RUN: | FileCheck %s --check-prefix=64-NO-LMA --strict-whitespace 145# 64-NO-LMA: {{^}}Idx Name Size VMA Type{{$}} 146# 64-NO-LMA: {{^}} 1 .foo 00000000 0000000000000400 TEXT{{$}} 147 148--- !ELF 149FileHeader: 150 Class: ELFCLASS[[BITS]] 151 Data: ELFDATA2LSB 152 Type: ET_EXEC 153 Machine: EM_386 154Sections: 155 - Name: .foo 156 Type: SHT_PROGBITS 157 Flags: [SHF_ALLOC, SHF_EXECINSTR] 158 Address: 0x400 159