1# REQUIRES: ppc 2# # RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %s -o %t 3# RUN: ld.lld --hash-style=sysv -discard-all -shared %t -o %t2 4# RUN: llvm-readobj -file-headers -sections -section-data -program-headers %t2 | FileCheck %s 5.abiversion 2 6# Exits with return code 55 on linux. 7.text 8 li 0,1 9 li 3,55 10 sc 11 12// CHECK:Format: ELF64-ppc64 13// CHECK-NEXT:Arch: powerpc64le 14// CHECK-NEXT:AddressSize: 64bit 15// CHECK-NEXT:LoadName: 16// CHECK-NEXT:ElfHeader { 17// CHECK-NEXT: Ident { 18// CHECK-NEXT: Magic: (7F 45 4C 46) 19// CHECK-NEXT: Class: 64-bit (0x2) 20// CHECK-NEXT: DataEncoding: LittleEndian (0x1) 21// CHECK-NEXT: FileVersion: 1 22// CHECK-NEXT: OS/ABI: SystemV (0x0) 23// CHECK-NEXT: ABIVersion: 0 24// CHECK-NEXT: Unused: (00 00 00 00 00 00 00) 25// CHECK-NEXT: } 26// CHECK-NEXT: Type: SharedObject (0x3) 27// CHECK-NEXT: Machine: EM_PPC64 (0x15) 28// CHECK-NEXT: Version: 1 29// CHECK-NEXT: Entry: 0x10000 30// CHECK-NEXT: ProgramHeaderOffset: 0x40 31// CHECK-NEXT: SectionHeaderOffset: 0x200F8 32// CHECK-NEXT: Flags [ (0x2) 33// CHECK-NEXT: 0x2 34// CHECK-NEXT: ] 35// CHECK-NEXT: HeaderSize: 64 36// CHECK-NEXT: ProgramHeaderEntrySize: 56 37// CHECK-NEXT: ProgramHeaderCount: 7 38// CHECK-NEXT: SectionHeaderEntrySize: 64 39// CHECK-NEXT: SectionHeaderCount: 11 40// CHECK-NEXT: StringTableSectionIndex: 9 41// CHECK-NEXT:} 42// CHECK-NEXT:Sections [ 43// CHECK-NEXT: Section { 44// CHECK-NEXT: Index: 0 45// CHECK-NEXT: Name: (0) 46// CHECK-NEXT: Type: SHT_NULL (0x0) 47// CHECK-NEXT: Flags [ (0x0) 48// CHECK-NEXT: ] 49// CHECK-NEXT: Address: 0x0 50// CHECK-NEXT: Offset: 0x0 51// CHECK-NEXT: Size: 0 52// CHECK-NEXT: Link: 0 53// CHECK-NEXT: Info: 0 54// CHECK-NEXT: AddressAlignment: 0 55// CHECK-NEXT: EntrySize: 0 56// CHECK-NEXT: SectionData ( 57// CHECK-NEXT: ) 58// CHECK-NEXT: } 59// CHECK-NEXT: Section { 60// CHECK-NEXT: Index: 1 61// CHECK-NEXT: Name: .dynsym (1) 62// CHECK-NEXT: Type: SHT_DYNSYM (0xB) 63// CHECK-NEXT: Flags [ (0x2) 64// CHECK-NEXT: SHF_ALLOC (0x2) 65// CHECK-NEXT: ] 66// CHECK-NEXT: Address: 0x1C8 67// CHECK-NEXT: Offset: 0x1C8 68// CHECK-NEXT: Size: 24 69// CHECK-NEXT: Link: 3 70// CHECK-NEXT: Info: 1 71// CHECK-NEXT: AddressAlignment: 8 72// CHECK-NEXT: EntrySize: 24 73// CHECK-NEXT: SectionData ( 74// CHECK-NEXT: 0000: 00000000 00000000 00000000 00000000 |................| 75// CHECK-NEXT: 0010: 00000000 00000000 |........| 76// CHECK-NEXT: ) 77// CHECK-NEXT: } 78// CHECK-NEXT: Section { 79// CHECK-NEXT: Index: 2 80// CHECK-NEXT: Name: .hash (9) 81// CHECK-NEXT: Type: SHT_HASH (0x5) 82// CHECK-NEXT: Flags [ (0x2) 83// CHECK-NEXT: SHF_ALLOC (0x2) 84// CHECK-NEXT: ] 85// CHECK-NEXT: Address: 0x1E0 86// CHECK-NEXT: Offset: 0x1E0 87// CHECK-NEXT: Size: 16 88// CHECK-NEXT: Link: 1 89// CHECK-NEXT: Info: 0 90// CHECK-NEXT: AddressAlignment: 4 91// CHECK-NEXT: EntrySize: 4 92// CHECK-NEXT: SectionData ( 93// CHECK-NEXT: 0000: 01000000 01000000 00000000 00000000 |................| 94// CHECK-NEXT: ) 95// CHECK-NEXT: } 96// CHECK-NEXT: Section { 97// CHECK-NEXT: Index: 3 98// CHECK-NEXT: Name: .dynstr (15) 99// CHECK-NEXT: Type: SHT_STRTAB (0x3) 100// CHECK-NEXT: Flags [ (0x2) 101// CHECK-NEXT: SHF_ALLOC (0x2) 102// CHECK-NEXT: ] 103// CHECK-NEXT: Address: 0x1F0 104// CHECK-NEXT: Offset: 0x1F0 105// CHECK-NEXT: Size: 1 106// CHECK-NEXT: Link: 0 107// CHECK-NEXT: Info: 0 108// CHECK-NEXT: AddressAlignment: 1 109// CHECK-NEXT: EntrySize: 0 110// CHECK-NEXT: SectionData ( 111// CHECK-NEXT: 0000: 00 |.| 112// CHECK-NEXT: ) 113// CHECK-NEXT: } 114// CHECK-NEXT: Section { 115// CHECK-NEXT: Index: 4 116// CHECK-NEXT: Name: .text (23) 117// CHECK-NEXT: Type: SHT_PROGBITS (0x1) 118// CHECK-NEXT: Flags [ (0x6) 119// CHECK-NEXT: SHF_ALLOC (0x2) 120// CHECK-NEXT: SHF_EXECINSTR (0x4) 121// CHECK-NEXT: ] 122// CHECK-NEXT: Address: 0x10000 123// CHECK-NEXT: Offset: 0x10000 124// CHECK-NEXT: Size: 12 125// CHECK-NEXT: Link: 0 126// CHECK-NEXT: Info: 0 127// CHECK-NEXT: AddressAlignment: 4 128// CHECK-NEXT: EntrySize: 0 129// CHECK-NEXT: SectionData ( 130// CHECK-NEXT: 0000: 01000038 37006038 02000044 |...87.`8...D| 131// CHECK-NEXT: ) 132// CHECK-NEXT: } 133// CHECK-NEXT: Section { 134// CHECK-NEXT: Index: 5 135// CHECK-NEXT: Name: .dynamic (29) 136// CHECK-NEXT: Type: SHT_DYNAMIC (0x6) 137// CHECK-NEXT: Flags [ (0x3) 138// CHECK-NEXT: SHF_ALLOC (0x2) 139// CHECK-NEXT: SHF_WRITE (0x1) 140// CHECK-NEXT: ] 141// CHECK-NEXT: Address: 0x20000 142// CHECK-NEXT: Offset: 0x20000 143// CHECK-NEXT: Size: 96 144// CHECK-NEXT: Link: 3 145// CHECK-NEXT: Info: 0 146// CHECK-NEXT: AddressAlignment: 8 147// CHECK-NEXT: EntrySize: 16 148// CHECK-NEXT: SectionData ( 149// CHECK-NEXT: 0000: 06000000 00000000 C8010000 00000000 |................| 150// CHECK-NEXT: 0010: 0B000000 00000000 18000000 00000000 |................| 151// CHECK-NEXT: 0020: 05000000 00000000 F0010000 00000000 |................| 152// CHECK-NEXT: 0030: 0A000000 00000000 01000000 00000000 |................| 153// CHECK-NEXT: 0040: 04000000 00000000 E0010000 00000000 |................| 154// CHECK-NEXT: 0050: 00000000 00000000 00000000 00000000 |................| 155// CHECK-NEXT: ) 156// CHECK-NEXT: } 157// CHECK-NEXT: Section { 158// CHECK-NEXT: Index: 6 159// CHECK-NEXT: Name: .branch_lt (38) 160// CHECK-NEXT: Type: SHT_NOBITS (0x8) 161// CHECK-NEXT: Flags [ (0x3) 162// CHECK-NEXT: SHF_ALLOC (0x2) 163// CHECK-NEXT: SHF_WRITE (0x1) 164// CHECK-NEXT: ] 165// CHECK-NEXT: Address: 0x30000 166// CHECK-NEXT: Offset: 0x20060 167// CHECK-NEXT: Size: 0 168// CHECK-NEXT: Link: 0 169// CHECK-NEXT: Info: 0 170// CHECK-NEXT: AddressAlignment: 8 171// CHECK-NEXT: EntrySize: 0 172// CHECK-NEXT: } 173// CHECK-NEXT: Section { 174// CHECK-NEXT: Index: 7 175// CHECK-NEXT: Name: .comment (49) 176// CHECK-NEXT: Type: SHT_PROGBITS (0x1) 177// CHECK-NEXT: Flags [ (0x30) 178// CHECK-NEXT: SHF_MERGE (0x10) 179// CHECK-NEXT: SHF_STRINGS (0x20) 180// CHECK-NEXT: ] 181// CHECK-NEXT: Address: 0x0 182// CHECK-NEXT: Offset: 0x20060 183// CHECK-NEXT: Size: 8 184// CHECK-NEXT: Link: 0 185// CHECK-NEXT: Info: 0 186// CHECK-NEXT: AddressAlignment: 1 187// CHECK-NEXT: EntrySize: 1 188// CHECK-NEXT: SectionData ( 189// CHECK-NEXT: 0000: 4C4C4420 312E3000 |LLD 1.0.| 190// CHECK-NEXT: ) 191// CHECK-NEXT: } 192// CHECK-NEXT: Section { 193// CHECK-NEXT: Index: 8 194// CHECK-NEXT: Name: .symtab (58) 195// CHECK-NEXT: Type: SHT_SYMTAB (0x2) 196// CHECK-NEXT: Flags [ (0x0) 197// CHECK-NEXT: ] 198// CHECK-NEXT: Address: 0x0 199// CHECK-NEXT: Offset: 0x20068 200// CHECK-NEXT: Size: 48 201// CHECK-NEXT: Link: 10 202// CHECK-NEXT: Info: 2 203// CHECK-NEXT: AddressAlignment: 8 204// CHECK-NEXT: EntrySize: 24 205// CHECK-NEXT: SectionData ( 206// CHECK-NEXT: 0000: 00000000 00000000 00000000 00000000 |................| 207// CHECK-NEXT: 0010: 00000000 00000000 01000000 00020500 |................| 208// CHECK-NEXT: 0020: 00000200 00000000 00000000 00000000 |................| 209// CHECK-NEXT: ) 210// CHECK-NEXT: } 211// CHECK-NEXT: Section { 212// CHECK-NEXT: Index: 9 213// CHECK-NEXT: Name: .shstrtab (66) 214// CHECK-NEXT: Type: SHT_STRTAB (0x3) 215// CHECK-NEXT: Flags [ (0x0) 216// CHECK-NEXT: ] 217// CHECK-NEXT: Address: 0x0 218// CHECK-NEXT: Offset: 0x20098 219// CHECK-NEXT: Size: 84 220// CHECK-NEXT: Link: 0 221// CHECK-NEXT: Info: 0 222// CHECK-NEXT: AddressAlignment: 1 223// CHECK-NEXT: EntrySize: 0 224// CHECK-NEXT: SectionData ( 225// CHECK-NEXT: 0000: 002E6479 6E73796D 002E6861 7368002E |..dynsym..hash..| 226// CHECK-NEXT: 0010: 64796E73 7472002E 74657874 002E6479 |dynstr..text..dy| 227// CHECK-NEXT: 0020: 6E616D69 63002E62 72616E63 685F6C74 |namic..branch_lt| 228// CHECK-NEXT: 0030: 002E636F 6D6D656E 74002E73 796D7461 |..comment..symta| 229// CHECK-NEXT: 0040: 62002E73 68737472 74616200 2E737472 |b..shstrtab..str| 230// CHECK-NEXT: 0050: 74616200 |tab.| 231// CHECK-NEXT: ) 232// CHECK-NEXT: } 233// CHECK-NEXT: Section { 234// CHECK-NEXT: Index: 10 235// CHECK-NEXT: Name: .strtab (76) 236// CHECK-NEXT: Type: SHT_STRTAB (0x3) 237// CHECK-NEXT: Flags [ (0x0) 238// CHECK-NEXT: ] 239// CHECK-NEXT: Address: 0x0 240// CHECK-NEXT: Offset: 0x200EC 241// CHECK-NEXT: Size: 10 242// CHECK-NEXT: Link: 0 243// CHECK-NEXT: Info: 0 244// CHECK-NEXT: AddressAlignment: 1 245// CHECK-NEXT: EntrySize: 0 246// CHECK-NEXT: SectionData ( 247// CHECK-NEXT: 0000: 005F4459 4E414D49 4300 |._DYNAMIC.| 248// CHECK-NEXT: ) 249// CHECK-NEXT: } 250// CHECK-NEXT:] 251// CHECK-NEXT:ProgramHeaders [ 252// CHECK-NEXT: ProgramHeader { 253// CHECK-NEXT: Type: PT_PHDR (0x6) 254// CHECK-NEXT: Offset: 0x40 255// CHECK-NEXT: VirtualAddress: 0x40 256// CHECK-NEXT: PhysicalAddress: 0x40 257// CHECK-NEXT: FileSize: 392 258// CHECK-NEXT: MemSize: 392 259// CHECK-NEXT: Flags [ (0x4) 260// CHECK-NEXT: PF_R (0x4) 261// CHECK-NEXT: ] 262// CHECK-NEXT: Alignment: 8 263// CHECK-NEXT: } 264// CHECK-NEXT: ProgramHeader { 265// CHECK-NEXT: Type: PT_LOAD (0x1) 266// CHECK-NEXT: Offset: 0x0 267// CHECK-NEXT: VirtualAddress: 0x0 268// CHECK-NEXT: PhysicalAddress: 0x0 269// CHECK-NEXT: FileSize: 497 270// CHECK-NEXT: MemSize: 497 271// CHECK-NEXT: Flags [ (0x4) 272// CHECK-NEXT: PF_R (0x4) 273// CHECK-NEXT: ] 274// CHECK-NEXT: Alignment: 65536 275// CHECK-NEXT: } 276// CHECK-NEXT: ProgramHeader { 277// CHECK-NEXT: Type: PT_LOAD (0x1) 278// CHECK-NEXT: Offset: 0x10000 279// CHECK-NEXT: VirtualAddress: 0x10000 280// CHECK-NEXT: PhysicalAddress: 0x10000 281// CHECK-NEXT: FileSize: 12 282// CHECK-NEXT: MemSize: 12 283// CHECK-NEXT: Flags [ (0x5) 284// CHECK-NEXT: PF_R (0x4) 285// CHECK-NEXT: PF_X (0x1) 286// CHECK-NEXT: ] 287// CHECK-NEXT: Alignment: 65536 288// CHECK-NEXT: } 289// CHECK-NEXT: ProgramHeader { 290// CHECK-NEXT: Type: PT_LOAD (0x1) 291// CHECK-NEXT: Offset: 0x20000 292// CHECK-NEXT: VirtualAddress: 0x20000 293// CHECK-NEXT: PhysicalAddress: 0x20000 294// CHECK-NEXT: FileSize: 96 295// CHECK-NEXT: MemSize: 65536 296// CHECK-NEXT: Flags [ (0x6) 297// CHECK-NEXT: PF_R (0x4) 298// CHECK-NEXT: PF_W (0x2) 299// CHECK-NEXT: ] 300// CHECK-NEXT: Alignment: 65536 301// CHECK-NEXT: } 302// CHECK-NEXT: ProgramHeader { 303// CHECK-NEXT: Type: PT_DYNAMIC (0x2) 304// CHECK-NEXT: Offset: 0x20000 305// CHECK-NEXT: VirtualAddress: 0x20000 306// CHECK-NEXT: PhysicalAddress: 0x20000 307// CHECK-NEXT: FileSize: 96 308// CHECK-NEXT: MemSize: 96 309// CHECK-NEXT: Flags [ (0x6) 310// CHECK-NEXT: PF_R (0x4) 311// CHECK-NEXT: PF_W (0x2) 312// CHECK-NEXT: ] 313// CHECK-NEXT: Alignment: 8 314// CHECK-NEXT: } 315// CHECK-NEXT: ProgramHeader { 316// CHECK-NEXT: Type: PT_GNU_RELRO (0x6474E552) 317// CHECK-NEXT: Offset: 0x20000 318// CHECK-NEXT: VirtualAddress: 0x20000 319// CHECK-NEXT: PhysicalAddress: 0x20000 320// CHECK-NEXT: FileSize: 96 321// CHECK-NEXT: MemSize: 4096 322// CHECK-NEXT: Flags [ (0x4) 323// CHECK-NEXT: PF_R (0x4) 324// CHECK-NEXT: ] 325// CHECK-NEXT: Alignment: 1 326// CHECK-NEXT: } 327// CHECK-NEXT: ProgramHeader { 328// CHECK-NEXT: Type: PT_GNU_STACK (0x6474E551) 329// CHECK-NEXT: Offset: 0x0 330// CHECK-NEXT: VirtualAddress: 0x0 331// CHECK-NEXT: PhysicalAddress: 0x0 332// CHECK-NEXT: FileSize: 0 333// CHECK-NEXT: MemSize: 0 334// CHECK-NEXT: Flags [ (0x6) 335// CHECK-NEXT: PF_R (0x4) 336// CHECK-NEXT: PF_W (0x2) 337// CHECK-NEXT: ] 338// CHECK-NEXT: Alignment: 0 339// CHECK-NEXT: } 340// CHECK-NEXT:] 341