[XCOFF] [llvm-readobj] replace tests using binary as input

with tests generated by yaml2obj.

Summary: Because yaml2obj supports basic transforming for XCOFF,
         some of the binary inputs used in the tests of llvm-readobj
         can be replaced with yaml files.

Reviewed By: shchenz

Differential Revision: https://reviews.llvm.org/D111699
This commit is contained in:
Esme-Yi 2021-11-01 08:43:32 +00:00
parent 0118a8044f
commit 81441cf44c
9 changed files with 218 additions and 320 deletions

View File

@ -24,7 +24,7 @@ struct FileHeader {
uint16_t NumberOfSections;
int32_t TimeStamp;
llvm::yaml::Hex64 SymbolTableOffset;
uint32_t NumberOfSymTableEntries;
int32_t NumberOfSymTableEntries;
uint16_t AuxHeaderSize;
llvm::yaml::Hex16 Flags;
};

View File

@ -1,160 +0,0 @@
# RUN: llvm-readobj --file-header %p/Inputs/basic.o | \
# RUN: FileCheck --check-prefix=FILEHEADER %s
#
# RUN: llvm-readobj --file-header %p/Inputs/basic64.o | \
# RUN: FileCheck --check-prefix=FILEHEADER64 %s
# RUN: llvm-readobj --file-header %p/Inputs/basic-neg-time.o | \
# RUN: FileCheck --check-prefix=NEGTIME %s
# RUN: llvm-readobj --file-header %p/Inputs/basic-neg-sym-count.o | \
# RUN: FileCheck --check-prefix=NEGSYMCOUNT %s
# RUN: llvm-readobj --relocs --expand-relocs %p/Inputs/basic.o | \
# RUN: FileCheck --check-prefix=RELOCSEXP %s
# FILEHEADER: File: {{.*}}basic.o
# FILEHEADER-NEXT: Format: aixcoff-rs6000
# FILEHEADER-NEXT: Arch: powerpc
# FILEHEADER-NEXT: AddressSize: 32bit
# FILEHEADER-NEXT: FileHeader {
# FILEHEADER-NEXT: Magic: 0x1DF
# FILEHEADER-NEXT: NumberOfSections: 6
# FILEHEADER-NEXT: TimeStamp: 2019-03-12T14:04:43Z (0x5C87BC7B)
# FILEHEADER-NEXT: SymbolTableOffset: 0x52E
# FILEHEADER-NEXT: SymbolTableEntries: 120
# FILEHEADER-NEXT: OptionalHeaderSize: 0x1C
# FILEHEADER-NEXT: Flags: 0x0
# FILEHEADER-NEXT: }
# FILEHEADER64: File: {{.*}}basic64.o
# FILEHEADER64-NEXT: Format: aix5coff64-rs6000
# FILEHEADER64-NEXT: Arch: powerpc64
# FILEHEADER64-NEXT: AddressSize: 64bit
# FILEHEADER64-NEXT: FileHeader {
# FILEHEADER64-NEXT: Magic: 0x1F7
# FILEHEADER64-NEXT: NumberOfSections: 5
# FILEHEADER64-NEXT: TimeStamp: 2019-03-18T20:03:47Z (0x5C8FF9A3)
# FILEHEADER64-NEXT: SymbolTableOffset: 0x54C
# FILEHEADER64-NEXT: SymbolTableEntries: 58
# FILEHEADER64-NEXT: OptionalHeaderSize: 0x0
# FILEHEADER64-NEXT: Flags: 0x0
# FILEHEADER64-NEXT: }
# NEGTIME: File: {{.*}}basic-neg-time.o
# NEGTIME-NEXT: Format: aixcoff-rs6000
# NEGTIME-NEXT: Arch: powerpc
# NEGTIME-NEXT: AddressSize: 32bit
# NEGTIME-NEXT: FileHeader {
# NEGTIME-NEXT: Magic: 0x1DF
# NEGTIME-NEXT: NumberOfSections: 6
# NEGTIME-NEXT: TimeStamp: Reserved Value (0xDC87BC7B)
# NEGTIME-NEXT: SymbolTableOffset: 0x52E
# NEGTIME-NEXT: SymbolTableEntries: 120
# NEGTIME-NEXT: OptionalHeaderSize: 0x1C
# NEGTIME-NEXT: Flags: 0x0
# NEGTIME-NEXT: }
# NEGSYMCOUNT: File: {{.*}}basic-neg-sym-count.o
# NEGSYMCOUNT-NEXT: Format: aixcoff-rs6000
# NEGSYMCOUNT-NEXT: Arch: powerpc
# NEGSYMCOUNT-NEXT: AddressSize: 32bit
# NEGSYMCOUNT-NEXT: FileHeader {
# NEGSYMCOUNT-NEXT: Magic: 0x1DF
# NEGSYMCOUNT-NEXT: NumberOfSections: 5
# NEGSYMCOUNT-NEXT: TimeStamp: 2019-03-12T14:04:43Z (0x5C87BC7B)
# NEGSYMCOUNT-NEXT: SymbolTableOffset: 0x0
# NEGSYMCOUNT-NEXT: SymbolTableEntries: Reserved Value (0x80000000)
# NEGSYMCOUNT-NEXT: OptionalHeaderSize: 0x1C
# NEGSYMCOUNT-NEXT: Flags: 0xD
# NEGSYMCOUNT-NEXT: }
# xcoff-basic.o was compiled with `xlc -qtls -O3 -g -c xcoff-basic.c`
# from the following source:
# int a = 55;
# int b;
# __thread int j = 55;
# __thread double d;
# int A() { return a; }
# int B() { return b; }
# int J() { return j; }
# double D() { return d; }
#
# xcoff-basic-neg-time.o was manually edited to include a negative time stamp.
# xcoff-basic-neg-sym-count.o was stripped using the 'strip' utility, and
# manually edited to have a negative symbol table entry count.
# RELOCSEXP: File: {{.*}}basic.o
# RELOCSEXP-NEXT: Format: aixcoff-rs6000
# RELOCSEXP-NEXT: Arch: powerpc
# RELOCSEXP-NEXT: AddressSize: 32bit
# RELOCSEXP-NEXT: Relocations [
# RELOCSEXP-NEXT: Section (index: 1) .text {
# RELOCSEXP-NEXT: Relocation {
# RELOCSEXP-NEXT: Virtual Address: 0x2
# RELOCSEXP-NEXT: Symbol: a (85)
# RELOCSEXP-NEXT: IsSigned: Yes
# RELOCSEXP-NEXT: FixupBitValue: 0
# RELOCSEXP-NEXT: Length: 16
# RELOCSEXP-NEXT: Type: R_TOC (0x3)
# RELOCSEXP-NEXT: }
# RELOCSEXP: Virtual Address: 0x90
# RELOCSEXP-NEXT: Symbol: .__tls_get_addr (118)
# RELOCSEXP-NEXT: IsSigned: Yes
# RELOCSEXP-NEXT: FixupBitValue: 0
# RELOCSEXP-NEXT: Length: 26
# RELOCSEXP-NEXT: Type: R_RBA (0x18)
# RELOCSEXP-NEXT: }
# RELOCSEXP-NEXT: }
# RELOCSEXP-NEXT: Section (index: 2) .data {
# RELOCSEXP-NEXT: Relocation {
# RELOCSEXP-NEXT: Virtual Address: 0x100
# RELOCSEXP-NEXT: Symbol: A (78)
# RELOCSEXP-NEXT: IsSigned: No
# RELOCSEXP-NEXT: FixupBitValue: 0
# RELOCSEXP-NEXT: Length: 32
# RELOCSEXP-NEXT: Type: R_POS (0x0)
# RELOCSEXP-NEXT: }
# RELOCSEXP: Virtual Address: 0x110
# RELOCSEXP-NEXT: Symbol: J (96)
# RELOCSEXP-NEXT: IsSigned: No
# RELOCSEXP-NEXT: FixupBitValue: 0
# RELOCSEXP-NEXT: Length: 32
# RELOCSEXP-NEXT: Type: R_POS (0x0)
# RELOCSEXP-NEXT: }
# RELOCSEXP: Virtual Address: 0x114
# RELOCSEXP-NEXT: Symbol: j (100)
# RELOCSEXP-NEXT: IsSigned: No
# RELOCSEXP-NEXT: FixupBitValue: 0
# RELOCSEXP-NEXT: Length: 32
# RELOCSEXP-NEXT: Type: R_TLS (0x20)
# RELOCSEXP-NEXT: }
# RELOCSEXP: Virtual Address: 0x124
# RELOCSEXP-NEXT: Symbol: d (111)
# RELOCSEXP-NEXT: IsSigned: No
# RELOCSEXP-NEXT: FixupBitValue: 0
# RELOCSEXP-NEXT: Length: 32
# RELOCSEXP-NEXT: Type: R_TLSM (0x24)
# RELOCSEXP-NEXT: }
# RELOCSEXP: Virtual Address: 0x128
# RELOCSEXP-NEXT: Symbol: (76)
# RELOCSEXP-NEXT: IsSigned: No
# RELOCSEXP-NEXT: FixupBitValue: 0
# RELOCSEXP-NEXT: Length: 32
# RELOCSEXP-NEXT: Type: R_POS (0x0)
# RELOCSEXP-NEXT: }
# RELOCSEXP: Virtual Address: 0x154
# RELOCSEXP-NEXT: Symbol: TOC (72)
# RELOCSEXP-NEXT: IsSigned: No
# RELOCSEXP-NEXT: FixupBitValue: 0
# RELOCSEXP-NEXT: Length: 32
# RELOCSEXP-NEXT: Type: R_POS (0x0)
# RELOCSEXP-NEXT: }
# RELOCSEXP-NEXT: }
# RELOCSEXP-NEXT:]

View File

@ -0,0 +1,65 @@
## This is a general test for the --file-header option.
# RUN: yaml2obj %s -o %t1
# RUN: llvm-readobj %t1 --file-header | \
# RUN: FileCheck %s --strict-whitespace --match-full-lines --check-prefix=FILEHEADER32
# FILEHEADER32:Format: aixcoff-rs6000
# FILEHEADER32-NEXT:Arch: powerpc
# FILEHEADER32-NEXT:AddressSize: 32bit
# FILEHEADER32-NEXT:FileHeader {
# FILEHEADER32-NEXT: Magic: 0x1DF
# FILEHEADER32-NEXT: NumberOfSections: 1
# FILEHEADER32-NEXT: TimeStamp: 1970-01-01T00:00:01Z (0x1)
# FILEHEADER32-NEXT: SymbolTableOffset: 0x3C
# FILEHEADER32-NEXT: SymbolTableEntries: 1
# FILEHEADER32-NEXT: OptionalHeaderSize: 0x0
# FILEHEADER32-NEXT: Flags: 0x12
# FILEHEADER32-NEXT:}
--- !XCOFF
FileHeader:
MagicNumber: [[MAGIC=0x01DF]]
CreationTime: [[CREATTIME=1]]
EntriesInSymbolTable: [[SYMBOLCOUNT=1]]
NumberOfSections: 1
OffsetToSymbolTable: 0x3C
AuxiliaryHeaderSize: 0
Flags: 0x12
Sections:
- Name: .text
Symbols:
- Name: foo
# RUN: yaml2obj -DMAGIC=0x01F7 -DCREATTIME=0 %s -o %t2
# RUN: llvm-readobj %t2 --file-header | \
# RUN: FileCheck %s --strict-whitespace --match-full-lines --check-prefix=FILEHEADER64
# FILEHEADER64:Format: aix5coff64-rs6000
# FILEHEADER64-NEXT:Arch: powerpc64
# FILEHEADER64-NEXT:AddressSize: 64bit
# FILEHEADER64-NEXT:FileHeader {
# FILEHEADER64-NEXT: Magic: 0x1F7
# FILEHEADER64-NEXT: NumberOfSections: 1
# FILEHEADER64-NEXT: TimeStamp: None (0x0)
# FILEHEADER64-NEXT: SymbolTableOffset: 0x3C
# FILEHEADER64-NEXT: SymbolTableEntries: 1
# FILEHEADER64-NEXT: OptionalHeaderSize: 0x0
# FILEHEADER64-NEXT: Flags: 0x12
# FILEHEADER64-NEXT:}
# RUN: yaml2obj -DCREATTIME=-1 %s -o %t3
# RUN: llvm-readobj %t3 --file-header | \
# RUN: FileCheck %s --strict-whitespace --match-full-lines --check-prefix=NEGTIME
# NEGTIME:FileHeader {
# NEGTIME: TimeStamp: Reserved Value (0xFFFFFFFF)
# NEGTIME:}
# RUN: yaml2obj -DSYMBOLCOUNT=-1 %s -o %t4
# RUN: llvm-readobj %t4 --file-header | \
# RUN: FileCheck %s --strict-whitespace --match-full-lines --check-prefix=NEGSYMCOUNT
# NEGSYMCOUNT:FileHeader {
# NEGSYMCOUNT: SymbolTableEntries: Reserved Value (0xFFFFFFFF)
# NEGSYMCOUNT:}

View File

@ -0,0 +1,68 @@
## Test how relocations are dumped.
# RUN: yaml2obj %s -o %t
# RUN: llvm-readobj --relocs --expand-relocs %t | \
# RUN: FileCheck %s --strict-whitespace --match-full-lines --check-prefix=RELOCSEXP
## TODO: Output of relocations not aligned.
# RELOCSEXP:Relocations [
# RELOCSEXP-NEXT: Section (index: 1) .text {
# RELOCSEXP-NEXT: Relocation {
# RELOCSEXP-NEXT: Virtual Address: 0x80
# RELOCSEXP-NEXT: Symbol: foo (0)
# RELOCSEXP-NEXT: IsSigned: No
# RELOCSEXP-NEXT: FixupBitValue: 0
# RELOCSEXP-NEXT: Length: 22
# RELOCSEXP-NEXT: Type: R_POS (0x0)
# RELOCSEXP-NEXT: }
# RELOCSEXP-NEXT: Relocation {
# RELOCSEXP-NEXT: Virtual Address: 0x100
# RELOCSEXP-NEXT: Symbol: foo (0)
# RELOCSEXP-NEXT: IsSigned: No
# RELOCSEXP-NEXT: FixupBitValue: 0
# RELOCSEXP-NEXT: Length: 21
# RELOCSEXP-NEXT: Type: R_REL (0x2)
# RELOCSEXP-NEXT: }
# RELOCSEXP-NEXT:}
# RELOCSEXP-NEXT:Section (index: 2) .data {
# RELOCSEXP-NEXT:Relocation {
# RELOCSEXP-NEXT: Virtual Address: 0x200
# RELOCSEXP-NEXT: Symbol: bar (1)
# RELOCSEXP-NEXT: IsSigned: No
# RELOCSEXP-NEXT: FixupBitValue: 0
# RELOCSEXP-NEXT: Length: 20
# RELOCSEXP-NEXT: Type: R_TOC (0x3)
# RELOCSEXP-NEXT:}
# RELOCSEXP-NEXT:}
# RELOCSEXP-NEXT:]
--- !XCOFF
FileHeader:
MagicNumber: 0x01DF
Sections:
- Name: .text
Flags: [ STYP_TEXT ]
Relocations:
- Address: 0x80
Symbol: 0x0
Info: 0x15
Type: 0x0
- Address: 0x100
Symbol: 0x0
Info: 0x14
Type: 0x2
- Name: .data
Flags: [ STYP_DATA ]
Relocations:
- Address: 0x200
Symbol: 0x1
Info: 0x13
Type: 0x3
Symbols:
- Name: foo
Value: 0x0
Section: .text
- Name: bar
Value: 0x80
Section: .data

View File

@ -1,164 +1,89 @@
# RUN: llvm-readobj --section-headers %p/Inputs/basic.o | \
# RUN: FileCheck --check-prefix=SEC32 %s
## This is a general test for the --section-headers option.
# RUN: llvm-readobj --section-headers %p/Inputs/basic64.o | \
# RUN: FileCheck --check-prefix=SEC64 %s
# RUN: yaml2obj %s -o %t1
# RUN: llvm-readobj --section-headers %t1 | \
# RUN: FileCheck --strict-whitespace --match-full-lines --check-prefix=SEC32 %s
# SEC32: File: {{.*}}basic.o
# SEC32-NEXT: Format: aixcoff-rs6000
# SEC32-NEXT: Arch: powerpc
# SEC32-NEXT: AddressSize: 32bit
# SEC32-NEXT: Sections [
# SEC32-NEXT: Section {
# SEC32-NEXT: Index: 1
# SEC32-NEXT: Name: .text
# SEC32-NEXT: PhysicalAddress: 0x0
# SEC32-NEXT: VirtualAddress: 0x0
# SEC32-NEXT: Size: 0x100
# SEC32-NEXT: RawDataOffset: 0x200
# SEC32-NEXT: RelocationPointer: 0x3D8
# SEC32-NEXT: LineNumberPointer: 0x4E6
# SEC32-NEXT: NumberOfRelocations: 8
# SEC32-NEXT: NumberOfLineNumbers: 12
# SEC32-NEXT: Type: STYP_TEXT (0x20)
# SEC32-NEXT: }
# SEC32-NEXT: Section {
# SEC32-NEXT: Index: 2
# SEC32-NEXT: Name: .data
# SEC32-NEXT: PhysicalAddress: 0x100
# SEC32-NEXT: VirtualAddress: 0x100
# SEC32-NEXT: Size: 0x68
# SEC32-NEXT: RawDataOffset: 0x300
# SEC32-NEXT: RelocationPointer: 0x428
# SEC32-NEXT: LineNumberPointer: 0x0
# SEC32-NEXT: NumberOfRelocations: 19
# SEC32-NEXT: NumberOfLineNumbers: 0
# SEC32-NEXT: Type: STYP_DATA (0x40)
# SEC32-NEXT: }
# SEC32-NEXT: Section {
# SEC32-NEXT: Index: 3
# SEC32-NEXT: Name: .bss
# SEC32-NEXT: PhysicalAddress: 0x168
# SEC32-NEXT: VirtualAddress: 0x168
# SEC32-NEXT: Size: 0x4
# SEC32-NEXT: RawDataOffset: 0x0
# SEC32-NEXT: RelocationPointer: 0x0
# SEC32-NEXT: LineNumberPointer: 0x0
# SEC32-NEXT: NumberOfRelocations: 0
# SEC32-NEXT: NumberOfLineNumbers: 0
# SEC32-NEXT: Type: STYP_BSS (0x80)
# SEC32-NEXT: }
# SEC32-NEXT: Section {
# SEC32-NEXT: Index: 4
# SEC32-NEXT: Name: .tdata
# SEC32-NEXT: PhysicalAddress: 0x0
# SEC32-NEXT: VirtualAddress: 0x0
# SEC32-NEXT: Size: 0x4
# SEC32-NEXT: RawDataOffset: 0x368
# SEC32-NEXT: RelocationPointer: 0x47A
# SEC32-NEXT: LineNumberPointer: 0x0
# SEC32-NEXT: NumberOfRelocations: 0
# SEC32-NEXT: NumberOfLineNumbers: 0
# SEC32-NEXT: Type: STYP_TDATA (0x400)
# SEC32-NEXT: }
# SEC32-NEXT: Section {
# SEC32-NEXT: Index: 5
# SEC32-NEXT: Name: .tbss
# SEC32-NEXT: PhysicalAddress: 0x4
# SEC32-NEXT: VirtualAddress: 0x4
# SEC32-NEXT: Size: 0x8
# SEC32-NEXT: RawDataOffset: 0x0
# SEC32-NEXT: RelocationPointer: 0x0
# SEC32-NEXT: LineNumberPointer: 0x0
# SEC32-NEXT: NumberOfRelocations: 0
# SEC32-NEXT: NumberOfLineNumbers: 0
# SEC32-NEXT: Type: STYP_TBSS (0x800)
# SEC32-NEXT: }
# SEC32-NEXT: Section {
# SEC32-NEXT: Index: 6
# SEC32-NEXT: Name: .debug
# SEC32-NEXT: PhysicalAddress: 0x0
# SEC32-NEXT: VirtualAddress: 0x0
# SEC32-NEXT: Size: 0x6C
# SEC32-NEXT: RawDataOffset: 0x36C
# SEC32-NEXT: RelocationPointer: 0x0
# SEC32-NEXT: LineNumberPointer: 0x0
# SEC32-NEXT: NumberOfRelocations: 0
# SEC32-NEXT: NumberOfLineNumbers: 0
# SEC32-NEXT: Type: STYP_DEBUG (0x2000)
# SEC32-NEXT: }
# SEC32-NEXT: ]
# SEC32:Format: aixcoff-rs6000
# SEC32-NEXT:Arch: powerpc
# SEC32-NEXT:AddressSize: 32bit
# SEC32-NEXT:Sections [
# SEC32-NEXT: Section {
# SEC32-NEXT: Index: 1
# SEC32-NEXT: Name: .text
# SEC32-NEXT: PhysicalAddress: 0x0
# SEC32-NEXT: VirtualAddress: 0x0
# SEC32-NEXT: Size: 0x4
# SEC32-NEXT: RawDataOffset: 0x64
# SEC32-NEXT: RelocationPointer: 0x0
# SEC32-NEXT: LineNumberPointer: 0x0
# SEC32-NEXT: NumberOfRelocations: 0
# SEC32-NEXT: NumberOfLineNumbers: 0
# SEC32-NEXT: Type: STYP_TEXT (0x20)
# SEC32-NEXT: }
# SEC32-NEXT: Section {
# SEC32-NEXT: Index: 2
# SEC32-NEXT: Name: .data
# SEC32-NEXT: PhysicalAddress: 0x4
# SEC32-NEXT: VirtualAddress: 0x4
# SEC32-NEXT: Size: 0x4
# SEC32-NEXT: RawDataOffset: 0x68
# SEC32-NEXT: RelocationPointer: 0x6C
# SEC32-NEXT: LineNumberPointer: 0x0
# SEC32-NEXT: NumberOfRelocations: 1
# SEC32-NEXT: NumberOfLineNumbers: 0
# SEC32-NEXT: Type: STYP_DATA (0x40)
# SEC32-NEXT: }
# SEC32-NEXT:]
--- !XCOFF
FileHeader:
MagicNumber: [[MAGIC=0x1DF]]
Sections:
- Name: .text
Flags: [ STYP_TEXT ]
SectionData: "1234"
- Name: .data
Flags: [ STYP_DATA ]
SectionData: "5678"
Relocations:
- Address: 0x80
Symbol: 0x21
Info: 0x1F
Type: 0x0
# SEC64: File: {{.*}}basic64.o
# SEC64-NEXT: Format: aix5coff64-rs6000
# SEC64-NEXT: Arch: powerpc64
# SEC64-NEXT: AddressSize: 64bit
# SEC64-NEXT: Sections [
# SEC64-NEXT: Section {
# SEC64-NEXT: Index: 1
# SEC64-NEXT: Name: .text
# SEC64-NEXT: PhysicalAddress: 0x0
# SEC64-NEXT: VirtualAddress: 0x0
# SEC64-NEXT: Size: 0x100
# SEC64-NEXT: RawDataOffset: 0x200
# SEC64-NEXT: RelocationPointer: 0x3C4
# SEC64-NEXT: LineNumberPointer: 0x0
# SEC64-NEXT: NumberOfRelocations: 9
# SEC64-NEXT: NumberOfLineNumbers: 0
# SEC64-NEXT: Type: STYP_TEXT (0x20)
# SEC64-NEXT: }
# SEC64-NEXT: Section {
# SEC64-NEXT: Index: 2
# SEC64-NEXT: Name: .data
# SEC64-NEXT: PhysicalAddress: 0x100
# SEC64-NEXT: VirtualAddress: 0x100
# SEC64-NEXT: Size: 0xC0
# SEC64-NEXT: RawDataOffset: 0x300
# SEC64-NEXT: RelocationPointer: 0x442
# SEC64-NEXT: LineNumberPointer: 0x0
# SEC64-NEXT: NumberOfRelocations: 19
# SEC64-NEXT: NumberOfLineNumbers: 0
# SEC64-NEXT: Type: STYP_DATA (0x40)
# SEC64-NEXT: }
# SEC64-NEXT: Section {
# SEC64-NEXT: Index: 3
# SEC64-NEXT: Name: .bss
# SEC64-NEXT: PhysicalAddress: 0x1C0
# SEC64-NEXT: VirtualAddress: 0x1C0
# SEC64-NEXT: Size: 0x8
# SEC64-NEXT: RawDataOffset: 0x0
# SEC64-NEXT: RelocationPointer: 0x0
# SEC64-NEXT: LineNumberPointer: 0x0
# SEC64-NEXT: NumberOfRelocations: 0
# SEC64-NEXT: NumberOfLineNumbers: 0
# SEC64-NEXT: Type: STYP_BSS (0x80)
# SEC64-NEXT: }
# SEC64-NEXT: Section {
# SEC64-NEXT: Index: 4
# SEC64-NEXT: Name: .tdata
# SEC64-NEXT: PhysicalAddress: 0x0
# SEC64-NEXT: VirtualAddress: 0x0
# SEC64-NEXT: Size: 0x4
# SEC64-NEXT: RawDataOffset: 0x3C0
# SEC64-NEXT: RelocationPointer: 0x54C
# SEC64-NEXT: LineNumberPointer: 0x0
# SEC64-NEXT: NumberOfRelocations: 0
# SEC64-NEXT: NumberOfLineNumbers: 0
# SEC64-NEXT: Type: STYP_TDATA (0x400)
# SEC64-NEXT: }
# SEC64-NEXT: Section {
# SEC64-NEXT: Index: 5
# SEC64-NEXT: Name: .tbss
# SEC64-NEXT: PhysicalAddress: 0x4
# SEC64-NEXT: VirtualAddress: 0x4
# SEC64-NEXT: Size: 0x8
# SEC64-NEXT: RawDataOffset: 0x0
# SEC64-NEXT: RelocationPointer: 0x0
# SEC64-NEXT: LineNumberPointer: 0x0
# SEC64-NEXT: NumberOfRelocations: 0
# SEC64-NEXT: NumberOfLineNumbers: 0
# SEC64-NEXT: Type: STYP_TBSS (0x800)
# SEC64-NEXT: }
# SEC64-NEXT: ]
# RUN: yaml2obj -DMAGIC=0x01F7 %s -o %t2
# RUN: llvm-readobj --section-headers %t2 | \
# RUN: FileCheck --strict-whitespace --match-full-lines --check-prefix=SEC64 %s
# SEC64:Format: aix5coff64-rs6000
# SEC64-NEXT:Arch: powerpc64
# SEC64-NEXT:AddressSize: 64bit
# SEC64-NEXT:Sections [
# SEC64-NEXT: Section {
# SEC64-NEXT: Index: 1
# SEC64-NEXT: Name: .text
# SEC64-NEXT: PhysicalAddress: 0x0
# SEC64-NEXT: VirtualAddress: 0x0
# SEC64-NEXT: Size: 0x4
# SEC64-NEXT: RawDataOffset: 0xA8
# SEC64-NEXT: RelocationPointer: 0x0
# SEC64-NEXT: LineNumberPointer: 0x0
# SEC64-NEXT: NumberOfRelocations: 0
# SEC64-NEXT: NumberOfLineNumbers: 0
# SEC64-NEXT: Type: STYP_TEXT (0x20)
# SEC64-NEXT: }
# SEC64-NEXT: Section {
# SEC64-NEXT: Index: 2
# SEC64-NEXT: Name: .data
# SEC64-NEXT: PhysicalAddress: 0x4
# SEC64-NEXT: VirtualAddress: 0x4
# SEC64-NEXT: Size: 0x4
# SEC64-NEXT: RawDataOffset: 0xAC
# SEC64-NEXT: RelocationPointer: 0xB0
# SEC64-NEXT: LineNumberPointer: 0x0
# SEC64-NEXT: NumberOfRelocations: 1
# SEC64-NEXT: NumberOfLineNumbers: 0
# SEC64-NEXT: Type: STYP_DATA (0x40)
# SEC64-NEXT: }
# SEC64-NEXT:]