2019-10-15 01:47:17 +08:00
|
|
|
## 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.
|
|
|
|
|
2020-02-01 14:25:16 +08:00
|
|
|
# RUN: yaml2obj %s --docnum=4 -D BITS=32 -o %t-32bit.o
|
|
|
|
# RUN: yaml2obj %s --docnum=4 -D BITS=64 -o %t-64bit.o
|
2019-10-15 01:47:17 +08:00
|
|
|
|
|
|
|
# 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:
|
2020-02-01 14:25:16 +08:00
|
|
|
Class: ELFCLASS[[BITS]]
|
2019-10-15 01:47:17 +08:00
|
|
|
Data: ELFDATA2LSB
|
|
|
|
Type: ET_EXEC
|
|
|
|
Machine: EM_386
|
|
|
|
Sections:
|
|
|
|
- Name: .foo
|
|
|
|
Type: SHT_PROGBITS
|
|
|
|
Flags: [SHF_ALLOC, SHF_EXECINSTR]
|
|
|
|
Address: 0x400
|