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