113 lines
5.4 KiB
Plaintext
113 lines
5.4 KiB
Plaintext
## In this test case we check how we print section and flag descriptions for different targets.
|
|
|
|
## EM_NONE is a target that does not have any processor and OS specific flags,
|
|
## we use it to show how the default flag key is printed.
|
|
|
|
# RUN: yaml2obj -DBITS=32 %s -o %t-default.o
|
|
# RUN: llvm-readelf -S %t-default.o | FileCheck %s --check-prefix=ELF32 --strict-whitespace --match-full-lines
|
|
|
|
# ELF32:There are 9 section headers, starting at offset 0x9c:
|
|
# ELF32-EMPTY:
|
|
# ELF32-NEXT:Section Headers:
|
|
# ELF32-NEXT: [Nr] Name Type Address Off Size ES Flg Lk Inf Al
|
|
# ELF32-NEXT: [ 0] NULL 00000000 000000 000000 00 0 0 0
|
|
# ELF32-NEXT: [ 1] .text PROGBITS 00000000 000034 000001 00 AX 0 0 4
|
|
# ELF32-NEXT: [ 2] .rel.text REL 00000000 000038 000000 08 6 1 4
|
|
# ELF32-NEXT: [ 3] .rela.text RELA 00000000 000038 000000 18 6 1 8
|
|
# ELF32-NEXT: [ 4] .data PROGBITS 00000000 000038 000000 00 WA 0 0 4
|
|
# ELF32-NEXT: [ 5] .bss NOBITS 00000000 000038 000000 00 WA 0 0 4
|
|
# ELF32-NEXT: [ 6] .symtab SYMTAB 00000000 000038 000020 10 7 2 8
|
|
# ELF32-NEXT: [ 7] .strtab STRTAB 00000000 000058 000007 00 0 0 1
|
|
# ELF32-NEXT: [ 8] .shstrtab STRTAB 00000000 00005f 00003b 00 0 0 1
|
|
# ELF32-NEXT:Key to Flags:
|
|
# ELF32-NEXT: W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
|
|
# ELF32-NEXT: L (link order), O (extra OS processing required), G (group), T (TLS),
|
|
# ELF32-NEXT: C (compressed), x (unknown), o (OS specific), E (exclude),
|
|
# ELF32-NEXT: p (processor specific)
|
|
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS[[BITS=64]]
|
|
Data: ELFDATA2LSB
|
|
OSABI: ELFOSABI_GNU
|
|
Type: ET_REL
|
|
Machine: [[MACHINE=EM_NONE]]
|
|
Sections:
|
|
- Name: .text
|
|
Type: SHT_PROGBITS
|
|
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
|
|
AddressAlign: 0x0000000000000004
|
|
Content: 00
|
|
- Name: .rel.text
|
|
Type: SHT_REL
|
|
Link: .symtab
|
|
AddressAlign: 0x0000000000000004
|
|
EntSize: 0x0000000000000008
|
|
Info: .text
|
|
Relocations:
|
|
- Name: .rela.text
|
|
Type: SHT_RELA
|
|
Link: .symtab
|
|
AddressAlign: 0x0000000000000008
|
|
EntSize: 0x0000000000000018
|
|
Info: .text
|
|
Relocations:
|
|
- Name: .data
|
|
Type: SHT_PROGBITS
|
|
Flags: [ SHF_WRITE, SHF_ALLOC ]
|
|
AddressAlign: 0x0000000000000004
|
|
Content: ''
|
|
- Name: .bss
|
|
Type: SHT_NOBITS
|
|
Flags: [ SHF_WRITE, SHF_ALLOC ]
|
|
AddressAlign: 0x0000000000000004
|
|
Symbols:
|
|
- Name: .text
|
|
Type: STT_SECTION
|
|
Section: .text
|
|
|
|
## For an EM_X86_64 target we print "l" for the SHF_X86_64_LARGE section flag.
|
|
## Check we mention it in the flag key.
|
|
|
|
# RUN: yaml2obj -DMACHINE=EM_X86_64 %s -o %t-x64.o
|
|
# RUN: llvm-readelf -S %t-x64.o | FileCheck %s --check-prefix=ELF64 --strict-whitespace --match-full-lines
|
|
|
|
## Check that --wide is the same as -W and ignored and also
|
|
## that --section is the same as -S.
|
|
# RUN: llvm-readobj --wide --sections %t-x64.o --elf-output-style=GNU \
|
|
# RUN: | FileCheck %s --check-prefix=ELF64
|
|
# RUN: llvm-readobj -W --sections %t-x64.o --elf-output-style=GNU \
|
|
# RUN: | FileCheck %s --check-prefix=ELF64
|
|
# RUN: llvm-readelf -W -S %t-x64.o | FileCheck %s --check-prefix=ELF64
|
|
|
|
# ELF64:There are 9 section headers, starting at offset 0xc0:
|
|
# ELF64-EMPTY:
|
|
# ELF64-NEXT:Section Headers:
|
|
# ELF64-NEXT: [Nr] Name Type Address Off Size ES Flg Lk Inf Al
|
|
# ELF64-NEXT: [ 0] NULL 0000000000000000 000000 000000 00 0 0 0
|
|
# ELF64-NEXT: [ 1] .text PROGBITS 0000000000000000 000040 000001 00 AX 0 0 4
|
|
# ELF64-NEXT: [ 2] .rel.text REL 0000000000000000 000044 000000 08 6 1 4
|
|
# ELF64-NEXT: [ 3] .rela.text RELA 0000000000000000 000048 000000 18 6 1 8
|
|
# ELF64-NEXT: [ 4] .data PROGBITS 0000000000000000 000048 000000 00 WA 0 0 4
|
|
# ELF64-NEXT: [ 5] .bss NOBITS 0000000000000000 000048 000000 00 WA 0 0 4
|
|
# ELF64-NEXT: [ 6] .symtab SYMTAB 0000000000000000 000048 000030 18 7 2 8
|
|
# ELF64-NEXT: [ 7] .strtab STRTAB 0000000000000000 000078 000007 00 0 0 1
|
|
# ELF64-NEXT: [ 8] .shstrtab STRTAB 0000000000000000 00007f 00003b 00 0 0 1
|
|
# ELF64-NEXT:Key to Flags:
|
|
# ELF64-NEXT: W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
|
|
# ELF64-NEXT: L (link order), O (extra OS processing required), G (group), T (TLS),
|
|
# ELF64-NEXT: C (compressed), x (unknown), o (OS specific), E (exclude),
|
|
# ELF64-NEXT: l (large), p (processor specific)
|
|
|
|
## For an EM_ARM target we print "y" for the SHF_ARM_PURECODE section flag.
|
|
## Check we mention it in the flag key.
|
|
|
|
# RUN: yaml2obj -DMACHINE=EM_ARM %s -o %t-arm.o
|
|
# RUN: llvm-readelf -S %t-arm.o | FileCheck %s --check-prefix=ARM --strict-whitespace --match-full-lines
|
|
|
|
# ARM:Key to Flags:
|
|
# ARM-NEXT: W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
|
|
# ARM-NEXT: L (link order), O (extra OS processing required), G (group), T (TLS),
|
|
# ARM-NEXT: C (compressed), x (unknown), o (OS specific), E (exclude),
|
|
# ARM-NEXT: y (purecode), p (processor specific)
|