1# RUN: llvm-readobj --file-header %p/Inputs/basic.o | \ 2# RUN: FileCheck --check-prefix=FILEHEADER %s 3# 4# RUN: llvm-readobj --file-header %p/Inputs/basic64.o | \ 5# RUN: FileCheck --check-prefix=FILEHEADER64 %s 6 7# RUN: llvm-readobj --file-header %p/Inputs/basic-neg-time.o | \ 8# RUN: FileCheck --check-prefix=NEGTIME %s 9 10# RUN: llvm-readobj --file-header %p/Inputs/basic-neg-sym-count.o | \ 11# RUN: FileCheck --check-prefix=NEGSYMCOUNT %s 12 13# RUN: llvm-readobj --relocs --expand-relocs %p/Inputs/basic.o | \ 14# RUN: FileCheck --check-prefix=RELOCSEXP %s 15 16# FILEHEADER: File: {{.*}}basic.o 17# FILEHEADER-NEXT: Format: aixcoff-rs6000 18# FILEHEADER-NEXT: Arch: powerpc 19# FILEHEADER-NEXT: AddressSize: 32bit 20# FILEHEADER-NEXT: FileHeader { 21# FILEHEADER-NEXT: Magic: 0x1DF 22# FILEHEADER-NEXT: NumberOfSections: 6 23# FILEHEADER-NEXT: TimeStamp: 2019-03-12T14:04:43Z (0x5C87BC7B) 24# FILEHEADER-NEXT: SymbolTableOffset: 0x52E 25# FILEHEADER-NEXT: SymbolTableEntries: 120 26# FILEHEADER-NEXT: OptionalHeaderSize: 0x1C 27# FILEHEADER-NEXT: Flags: 0x0 28# FILEHEADER-NEXT: } 29 30# FILEHEADER64: File: {{.*}}basic64.o 31# FILEHEADER64-NEXT: Format: aix5coff64-rs6000 32# FILEHEADER64-NEXT: Arch: powerpc64 33# FILEHEADER64-NEXT: AddressSize: 64bit 34# FILEHEADER64-NEXT: FileHeader { 35# FILEHEADER64-NEXT: Magic: 0x1F7 36# FILEHEADER64-NEXT: NumberOfSections: 5 37# FILEHEADER64-NEXT: TimeStamp: 2019-03-18T20:03:47Z (0x5C8FF9A3) 38# FILEHEADER64-NEXT: SymbolTableOffset: 0x54C 39# FILEHEADER64-NEXT: SymbolTableEntries: 58 40# FILEHEADER64-NEXT: OptionalHeaderSize: 0x0 41# FILEHEADER64-NEXT: Flags: 0x0 42# FILEHEADER64-NEXT: } 43 44# NEGTIME: File: {{.*}}basic-neg-time.o 45# NEGTIME-NEXT: Format: aixcoff-rs6000 46# NEGTIME-NEXT: Arch: powerpc 47# NEGTIME-NEXT: AddressSize: 32bit 48# NEGTIME-NEXT: FileHeader { 49# NEGTIME-NEXT: Magic: 0x1DF 50# NEGTIME-NEXT: NumberOfSections: 6 51# NEGTIME-NEXT: TimeStamp: Reserved Value (0xDC87BC7B) 52# NEGTIME-NEXT: SymbolTableOffset: 0x52E 53# NEGTIME-NEXT: SymbolTableEntries: 120 54# NEGTIME-NEXT: OptionalHeaderSize: 0x1C 55# NEGTIME-NEXT: Flags: 0x0 56# NEGTIME-NEXT: } 57 58# NEGSYMCOUNT: File: {{.*}}basic-neg-sym-count.o 59# NEGSYMCOUNT-NEXT: Format: aixcoff-rs6000 60# NEGSYMCOUNT-NEXT: Arch: powerpc 61# NEGSYMCOUNT-NEXT: AddressSize: 32bit 62# NEGSYMCOUNT-NEXT: FileHeader { 63# NEGSYMCOUNT-NEXT: Magic: 0x1DF 64# NEGSYMCOUNT-NEXT: NumberOfSections: 5 65# NEGSYMCOUNT-NEXT: TimeStamp: 2019-03-12T14:04:43Z (0x5C87BC7B) 66# NEGSYMCOUNT-NEXT: SymbolTableOffset: 0x0 67# NEGSYMCOUNT-NEXT: SymbolTableEntries: Reserved Value (0x80000000) 68# NEGSYMCOUNT-NEXT: OptionalHeaderSize: 0x1C 69# NEGSYMCOUNT-NEXT: Flags: 0xD 70# NEGSYMCOUNT-NEXT: } 71 72# xcoff-basic.o was compiled with `xlc -qtls -O3 -g -c xcoff-basic.c` 73# from the following source: 74# int a = 55; 75# int b; 76# __thread int j = 55; 77# __thread double d; 78# int A() { return a; } 79# int B() { return b; } 80# int J() { return j; } 81# double D() { return d; } 82# 83# xcoff-basic-neg-time.o was manually edited to include a negative time stamp. 84# xcoff-basic-neg-sym-count.o was stripped using the 'strip' utility, and 85# manually edited to have a negative symbol table entry count. 86 87# RELOCSEXP: File: {{.*}}basic.o 88# RELOCSEXP-NEXT: Format: aixcoff-rs6000 89# RELOCSEXP-NEXT: Arch: powerpc 90# RELOCSEXP-NEXT: AddressSize: 32bit 91# RELOCSEXP-NEXT: Relocations [ 92# RELOCSEXP-NEXT: Section (index: 1) .text { 93# RELOCSEXP-NEXT: Relocation { 94# RELOCSEXP-NEXT: Virtual Address: 0x2 95# RELOCSEXP-NEXT: Symbol: a (85) 96# RELOCSEXP-NEXT: IsSigned: Yes 97# RELOCSEXP-NEXT: FixupBitValue: 0 98# RELOCSEXP-NEXT: Length: 16 99# RELOCSEXP-NEXT: Type: R_TOC (0x3) 100# RELOCSEXP-NEXT: } 101 102# RELOCSEXP: Virtual Address: 0x90 103# RELOCSEXP-NEXT: Symbol: .__tls_get_addr (118) 104# RELOCSEXP-NEXT: IsSigned: Yes 105# RELOCSEXP-NEXT: FixupBitValue: 0 106# RELOCSEXP-NEXT: Length: 26 107# RELOCSEXP-NEXT: Type: R_RBA (0x18) 108# RELOCSEXP-NEXT: } 109# RELOCSEXP-NEXT: } 110# RELOCSEXP-NEXT: Section (index: 2) .data { 111# RELOCSEXP-NEXT: Relocation { 112# RELOCSEXP-NEXT: Virtual Address: 0x100 113# RELOCSEXP-NEXT: Symbol: A (78) 114# RELOCSEXP-NEXT: IsSigned: No 115# RELOCSEXP-NEXT: FixupBitValue: 0 116# RELOCSEXP-NEXT: Length: 32 117# RELOCSEXP-NEXT: Type: R_POS (0x0) 118# RELOCSEXP-NEXT: } 119 120# RELOCSEXP: Virtual Address: 0x110 121# RELOCSEXP-NEXT: Symbol: J (96) 122# RELOCSEXP-NEXT: IsSigned: No 123# RELOCSEXP-NEXT: FixupBitValue: 0 124# RELOCSEXP-NEXT: Length: 32 125# RELOCSEXP-NEXT: Type: R_POS (0x0) 126# RELOCSEXP-NEXT: } 127 128# RELOCSEXP: Virtual Address: 0x114 129# RELOCSEXP-NEXT: Symbol: j (100) 130# RELOCSEXP-NEXT: IsSigned: No 131# RELOCSEXP-NEXT: FixupBitValue: 0 132# RELOCSEXP-NEXT: Length: 32 133# RELOCSEXP-NEXT: Type: R_TLS (0x20) 134# RELOCSEXP-NEXT: } 135 136# RELOCSEXP: Virtual Address: 0x124 137# RELOCSEXP-NEXT: Symbol: d (111) 138# RELOCSEXP-NEXT: IsSigned: No 139# RELOCSEXP-NEXT: FixupBitValue: 0 140# RELOCSEXP-NEXT: Length: 32 141# RELOCSEXP-NEXT: Type: R_TLSM (0x24) 142# RELOCSEXP-NEXT: } 143 144# RELOCSEXP: Virtual Address: 0x128 145# RELOCSEXP-NEXT: Symbol: (76) 146# RELOCSEXP-NEXT: IsSigned: No 147# RELOCSEXP-NEXT: FixupBitValue: 0 148# RELOCSEXP-NEXT: Length: 32 149# RELOCSEXP-NEXT: Type: R_POS (0x0) 150# RELOCSEXP-NEXT: } 151 152# RELOCSEXP: Virtual Address: 0x154 153# RELOCSEXP-NEXT: Symbol: TOC (72) 154# RELOCSEXP-NEXT: IsSigned: No 155# RELOCSEXP-NEXT: FixupBitValue: 0 156# RELOCSEXP-NEXT: Length: 32 157# RELOCSEXP-NEXT: Type: R_POS (0x0) 158# RELOCSEXP-NEXT: } 159# RELOCSEXP-NEXT: } 160# RELOCSEXP-NEXT:] 161