xcoff-basic.test 5.58 KB
# RUN: llvm-readobj --file-header %p/Inputs/xcoff-basic.o | \
# RUN: FileCheck --check-prefix=FILEHEADER %s
#
# RUN: llvm-readobj --file-header %p/Inputs/xcoff-basic-64.o | \
# RUN: FileCheck --check-prefix=FILEHEADER64 %s

# RUN: llvm-readobj --file-header %p/Inputs/xcoff-basic-neg-time.o | \
# RUN: FileCheck --check-prefix=NEGTIME %s

# RUN: llvm-readobj --file-header %p/Inputs/xcoff-basic-neg-sym-count.o | \
# RUN: FileCheck --check-prefix=NEGSYMCOUNT %s

# RUN: llvm-readobj --relocs --expand-relocs %p/Inputs/xcoff-basic.o | \
# RUN: FileCheck --check-prefix=RELOCSEXP %s

# FILEHEADER:     File: {{.*}}xcoff-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: {{.*}}xcoff-basic-64.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: {{.*}}xcoff-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: {{.*}}xcoff-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: {{.*}}xcoff-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:]