| ## 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: {{.}} |