Currently we have to set 'Machine' to something in our YAML descriptions. Usually we use 'EM_X86_64' for 64-bit targets and 'EM_386' for 32-bit targets. At the same time, in fact, in most cases our tests do not need a machine type and we can use 'EM_NONE'. This is cleaner, because avoids the need of using a particular machine. In this patch I've made the 'Machine' key optional (the default value, when it is not specified is `EM_NONE`) and removed it (where possible) from yaml2obj, obj2yaml and llvm-readobj tests. There are few tests left where I decided not to remove it, because I didn't want to touch CHECK lines or doing anything more complex than a removing a "Machine: *" line and formatting lines around. Differential revision: https://reviews.llvm.org/D86202
132 lines
5.5 KiB
Plaintext
132 lines
5.5 KiB
Plaintext
## Here we test how OS and processor specific flags are dumped.
|
|
|
|
# RUN: yaml2obj %s -o %t.o
|
|
# RUN: llvm-readobj -S %t.o | FileCheck --check-prefix=OS-PROC-LLVM %s
|
|
# RUN: llvm-readelf -S %t.o | FileCheck --check-prefix=OS-PROC-GNU %s
|
|
|
|
# OS-PROC-LLVM: Name: .os.flags.low
|
|
# OS-PROC-LLVM-NEXT: Type: SHT_PROGBITS
|
|
# OS-PROC-LLVM-NEXT: Flags [ (0x100000)
|
|
# OS-PROC-LLVM-NEXT: ]
|
|
# OS-PROC-LLVM: Name: .os.flags.high
|
|
# OS-PROC-LLVM-NEXT: Type: SHT_PROGBITS
|
|
# OS-PROC-LLVM-NEXT: Flags [ (0xFE00000)
|
|
# OS-PROC-LLVM-NEXT: ]
|
|
# OS-PROC-LLVM: Name: .os.flags.mask
|
|
# OS-PROC-LLVM-NEXT: Type: SHT_PROGBITS
|
|
# OS-PROC-LLVM-NEXT: Flags [ (0xFF00000)
|
|
# OS-PROC-LLVM-NEXT: ]
|
|
# OS-PROC-LLVM: Name: .proc.flags.low
|
|
# OS-PROC-LLVM-NEXT: Type: SHT_PROGBITS
|
|
# OS-PROC-LLVM-NEXT: Flags [ (0x10000000)
|
|
# OS-PROC-LLVM-NEXT: ]
|
|
# OS-PROC-LLVM: Name: .proc.flags.high
|
|
# OS-PROC-LLVM-NEXT: Type: SHT_PROGBITS
|
|
# OS-PROC-LLVM-NEXT: Flags [ (0xE0000000)
|
|
# OS-PROC-LLVM-NEXT: SHF_EXCLUDE (0x80000000)
|
|
# OS-PROC-LLVM-NEXT: ]
|
|
# OS-PROC-LLVM: Name: .proc.flags.mask
|
|
# OS-PROC-LLVM-NEXT: Type: SHT_PROGBITS
|
|
# OS-PROC-LLVM-NEXT: Flags [ (0xF0000000)
|
|
# OS-PROC-LLVM-NEXT: SHF_EXCLUDE (0x80000000)
|
|
# OS-PROC-LLVM-NEXT: ]
|
|
# OS-PROC-LLVM: Name: .both.flags.low
|
|
# OS-PROC-LLVM-NEXT: Type: SHT_PROGBITS
|
|
# OS-PROC-LLVM-NEXT: Flags [ (0x10100000)
|
|
# OS-PROC-LLVM-NEXT: ]
|
|
# OS-PROC-LLVM: Name: .both.flags.high
|
|
# OS-PROC-LLVM-NEXT: Type: SHT_PROGBITS
|
|
# OS-PROC-LLVM-NEXT: Flags [ (0xEFE00000)
|
|
# OS-PROC-LLVM-NEXT: SHF_EXCLUDE (0x80000000)
|
|
# OS-PROC-LLVM-NEXT: ]
|
|
# OS-PROC-LLVM: Name: .both.flags.mask
|
|
# OS-PROC-LLVM-NEXT: Type: SHT_PROGBITS
|
|
# OS-PROC-LLVM-NEXT: Flags [ (0xFFF00000)
|
|
# OS-PROC-LLVM-NEXT: SHF_EXCLUDE (0x80000000)
|
|
# OS-PROC-LLVM-NEXT: ]
|
|
# OS-PROC-LLVM: Name: .exclude
|
|
# OS-PROC-LLVM-NEXT: Type: SHT_PROGBITS
|
|
# OS-PROC-LLVM-NEXT: Flags [ (0x80000000)
|
|
# OS-PROC-LLVM-NEXT: SHF_EXCLUDE (0x80000000)
|
|
# OS-PROC-LLVM-NEXT: ]
|
|
# OS-PROC-LLVM: Name: .all.possible
|
|
# OS-PROC-LLVM-NEXT: Type: SHT_PROGBITS
|
|
# OS-PROC-LLVM-NEXT: Flags [ (0xFFFFFFFF)
|
|
# OS-PROC-LLVM-NEXT: SHF_ALLOC (0x2)
|
|
# OS-PROC-LLVM-NEXT: SHF_COMPRESSED (0x800)
|
|
# OS-PROC-LLVM-NEXT: SHF_EXCLUDE (0x80000000)
|
|
# OS-PROC-LLVM-NEXT: SHF_EXECINSTR (0x4)
|
|
# OS-PROC-LLVM-NEXT: SHF_GROUP (0x200)
|
|
# OS-PROC-LLVM-NEXT: SHF_INFO_LINK (0x40)
|
|
# OS-PROC-LLVM-NEXT: SHF_LINK_ORDER (0x80)
|
|
# OS-PROC-LLVM-NEXT: SHF_MERGE (0x10)
|
|
# OS-PROC-LLVM-NEXT: SHF_OS_NONCONFORMING (0x100)
|
|
# OS-PROC-LLVM-NEXT: SHF_STRINGS (0x20)
|
|
# OS-PROC-LLVM-NEXT: SHF_TLS (0x400)
|
|
# OS-PROC-LLVM-NEXT: SHF_WRITE (0x1)
|
|
# OS-PROC-LLVM-NEXT: ]
|
|
|
|
# OS-PROC-GNU: Section Headers:
|
|
# OS-PROC-GNU-NEXT: [Nr] Name Type Address Off Size ES Flg Lk Inf Al
|
|
# OS-PROC-GNU-NEXT: [ 0] NULL 0000000000000000 000000 000000 00 0 0 0
|
|
# OS-PROC-GNU-NEXT: [ 1] .os.flags.low PROGBITS 0000000000000000 000040 000000 00 o 0 0 0
|
|
# OS-PROC-GNU-NEXT: [ 2] .os.flags.high PROGBITS 0000000000000000 000040 000000 00 o 0 0 0
|
|
# OS-PROC-GNU-NEXT: [ 3] .os.flags.mask PROGBITS 0000000000000000 000040 000000 00 o 0 0 0
|
|
# OS-PROC-GNU-NEXT: [ 4] .proc.flags.low PROGBITS 0000000000000000 000040 000000 00 p 0 0 0
|
|
# OS-PROC-GNU-NEXT: [ 5] .proc.flags.high PROGBITS 0000000000000000 000040 000000 00 p 0 0 0
|
|
# OS-PROC-GNU-NEXT: [ 6] .proc.flags.mask PROGBITS 0000000000000000 000040 000000 00 p 0 0 0
|
|
# OS-PROC-GNU-NEXT: [ 7] .both.flags.low PROGBITS 0000000000000000 000040 000000 00 op 0 0 0
|
|
# OS-PROC-GNU-NEXT: [ 8] .both.flags.high PROGBITS 0000000000000000 000040 000000 00 op 0 0 0
|
|
# OS-PROC-GNU-NEXT: [ 9] .both.flags.mask PROGBITS 0000000000000000 000040 000000 00 op 0 0 0
|
|
# OS-PROC-GNU-NEXT: [10] .exclude PROGBITS 0000000000000000 000040 000000 00 E 0 0 0
|
|
# OS-PROC-GNU-NEXT: [11] .all.possible PROGBITS 0000000000000000 000040 000000 00 WAXMSILOGTCopx 0 0 0
|
|
|
|
## Use an arbitrary EM_* machine type that does not have specific SHF_* OS/Processor
|
|
## flags to test what we dump when bits in the OS and processor specific ranges are set.
|
|
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS64
|
|
Data: ELFDATA2LSB
|
|
Type: ET_REL
|
|
Sections:
|
|
- Name: .os.flags.low
|
|
Type: SHT_PROGBITS
|
|
ShFlags: 0x00100000
|
|
- Name: .os.flags.high
|
|
Type: SHT_PROGBITS
|
|
ShFlags: 0x0FE00000
|
|
- Name: .os.flags.mask
|
|
Type: SHT_PROGBITS
|
|
ShFlags: 0x0FF00000
|
|
- Name: .proc.flags.low
|
|
Type: SHT_PROGBITS
|
|
ShFlags: 0x10000000
|
|
- Name: .proc.flags.high
|
|
Type: SHT_PROGBITS
|
|
ShFlags: 0xE0000000
|
|
- Name: .proc.flags.mask
|
|
Type: SHT_PROGBITS
|
|
ShFlags: 0xF0000000
|
|
- Name: .both.flags.low
|
|
Type: SHT_PROGBITS
|
|
ShFlags: 0x10100000
|
|
- Name: .both.flags.high
|
|
Type: SHT_PROGBITS
|
|
ShFlags: 0xEFE00000
|
|
- Name: .both.flags.mask
|
|
Type: SHT_PROGBITS
|
|
ShFlags: 0xFFF00000
|
|
## SHF_MASKPROC has a value of 0xf0000000, SHF_EXCLUDE has a value of
|
|
## 0x80000000. When SHF_EXCLUDE is mixed with other processor specific
|
|
## flags, GNU readelf does not necessarily print "E", because it handles
|
|
## the SHF_MASKPROC mask first. It only prints "E" when there are no other
|
|
## processor flags set. Check llvm-readelf output matches GNU.
|
|
- Name: .exclude
|
|
Type: SHT_PROGBITS
|
|
ShFlags: 0x80000000
|
|
## Set all possible flags to test where we print 'o' and 'p' letters.
|
|
- Name: .all.possible
|
|
Type: SHT_PROGBITS
|
|
ShFlags: 0xFFFFFFFF
|