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