## Test that --section works correctly for -h.
## We test the LMA here too, because the code at the time of writing uses the
## value of --section when looking up section LMAs.
# RUN: yaml2obj %s --docnum=1 -o %t.h.elf
# RUN: llvm-objdump -h %t.h.elf -j.text --section=.bss \
# RUN: | FileCheck %s --check-prefix=SHDRS --implicit-check-not=.data --implicit-check-not=.text2
# SHDRS: Name Size VMA LMA
# SHDRS: .text 00000001 0000000000000400 0000000000001000
# SHDRS: .bss 00000001 0000000000000420 0000000000003000
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_EXEC
Machine: EM_X86_64
Sections:
- Name: .text
Type: SHT_PROGBITS
Flags: [SHF_ALLOC, SHF_EXECINSTR]
Address: 0x400
AddressAlign: 0x10
Content: 'c3'
- Name: .text2
Type: SHT_PROGBITS
Flags: [SHF_ALLOC, SHF_EXECINSTR]
Address: 0x401
Content: '90'
- Name: .data
Type: SHT_PROGBITS
Flags: [SHF_ALLOC, SHF_WRITE]
Address: 0x410
AddressAlign: 0x10
Content: '42'
- Name: .bss
Type: SHT_NOBITS
Flags: [SHF_ALLOC, SHF_WRITE]
Address: 0x420
AddressAlign: 0x10
Size: 1
ProgramHeaders:
- Type: PT_LOAD
VAddr: 0x400
PAddr: 0x1000
FirstSec: .text
LastSec: .text2
- Type: PT_LOAD
VAddr: 0x410
PAddr: 0x2000
FirstSec: .data
LastSec: .data
- Type: PT_LOAD
VAddr: 0x420
PAddr: 0x3000
FirstSec: .bss
LastSec: .bss
## Test that --section works with --fault-map-section.
# RUN: yaml2obj %s --docnum=2 -o %t.o
# RUN: llvm-objdump %t.o --fault-map-section -j __clangast \
# RUN: | FileCheck %s --check-prefixes=FAULTMAP,NO-FAULTMAP
# RUN: llvm-objdump %t.o --fault-map-section -j .llvm_faultmaps \
# RUN: | FileCheck %s --check-prefixes=FAULTMAP,WITH-FAULTMAP
# FAULTMAP: FaultMap table:
# NO-FAULTMAP-NEXT: <not found>
# WITH-FAULTMAP-NEXT: Version: 0x1
# WITH-FAULTMAP-NEXT: NumFunctions: 0
## Test that --section works with --raw-clang-ast.
# RUN: llvm-objdump %t.o --raw-clang-ast -j .llvm_faultmaps \
# RUN: | FileCheck %s --check-prefix=NO-AST --allow-empty
# RUN: llvm-objdump %t.o --raw-clang-ast -j __clangast \
# RUN: | FileCheck %s --check-prefix=CLANG-AST
# NO-AST-NOT: {{.}}
# CLANG-AST: foobar
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_REL
Machine: EM_X86_64
Sections:
- Name: .llvm_faultmaps
Type: SHT_PROGBITS
Content: '0100000000000000'
- Name: __clangast
Type: SHT_PROGBITS
Content: '666f6f626172' # "foobar"
## Test that the -j alias can be used flexibly. Create a baseline and ensure
## all other combinations compatible with POSIX are identical.
# RUN: llvm-objdump %t.h.elf -h -s --section .symtab > %t.full
# RUN: llvm-objdump %t.h.elf -h -s -j .symtab > %t.1
# RUN: llvm-objdump %t.h.elf -h -s -j.symtab > %t.2
# RUN: llvm-objdump %t.h.elf -hsj .symtab > %t.3
# RUN: llvm-objdump %t.h.elf -hsj.symtab > %t.4
# RUN: cmp %t.full %t.1
# RUN: cmp %t.full %t.2
# RUN: cmp %t.full %t.3
# RUN: cmp %t.full %t.4
## Test that an unknown section name causes all section output to be suppressed.
# RUN: llvm-objdump %t.h.elf -h --section foobar \
# RUN: | FileCheck %s --check-prefix=NO-SECTION
# NO-SECTION: Sections:
# NO-SECTION-NEXT: Idx Name Size VMA Type
# NO-SECTION-NOT: {{.}}