1# RUN: llvm-mc -filetype=obj -triple=mipsel-unknown-linux %s -o %t.o 2# RUN: ld.lld %t.o -o %t.exe 3# RUN: llvm-readobj -file-headers -sections -program-headers -symbols %t.exe \ 4# RUN: | FileCheck %s 5 6# REQUIRES: mips 7 8# Exits with return code 1 on Linux. 9 .globl __start 10__start: 11 li $a0,1 12 li $v0,4001 13 syscall 14 15# CHECK: ElfHeader { 16# CHECK-NEXT: Ident { 17# CHECK-NEXT: Magic: (7F 45 4C 46) 18# CHECK-NEXT: Class: 32-bit (0x1) 19# CHECK-NEXT: DataEncoding: LittleEndian (0x1) 20# CHECK-NEXT: FileVersion: 1 21# CHECK-NEXT: OS/ABI: SystemV (0x0) 22# CHECK-NEXT: ABIVersion: 0 23# CHECK-NEXT: Unused: (00 00 00 00 00 00 00) 24# CHECK-NEXT: } 25# CHECK-NEXT: Type: Executable (0x2) 26# CHECK-NEXT: Machine: EM_MIPS (0x8) 27# CHECK-NEXT: Version: 1 28# CHECK-NEXT: Entry: 0x20000 29# CHECK-NEXT: ProgramHeaderOffset: 0x34 30# CHECK-NEXT: SectionHeaderOffset: 0x20084 31# CHECK-NEXT: Flags [ (0x0) 32# CHECK-NEXT: ] 33# CHECK-NEXT: HeaderSize: 52 34# CHECK-NEXT: ProgramHeaderEntrySize: 32 35# CHECK-NEXT: ProgramHeaderCount: 5 36# CHECK-NEXT: SectionHeaderEntrySize: 40 37# CHECK-NEXT: SectionHeaderCount: 9 38# CHECK-NEXT: StringTableSectionIndex: 7 39# CHECK-NEXT: } 40# CHECK-NEXT: Sections [ 41# CHECK-NEXT: Section { 42# CHECK-NEXT: Index: 0 43# CHECK-NEXT: Name: (0) 44# CHECK-NEXT: Type: SHT_NULL (0x0) 45# CHECK-NEXT: Flags [ (0x0) 46# CHECK-NEXT: ] 47# CHECK-NEXT: Address: 0x0 48# CHECK-NEXT: Offset: 0x0 49# CHECK-NEXT: Size: 0 50# CHECK-NEXT: Link: 0 51# CHECK-NEXT: Info: 0 52# CHECK-NEXT: AddressAlignment: 0 53# CHECK-NEXT: EntrySize: 0 54# CHECK-NEXT: } 55# CHECK-NEXT: Section { 56# CHECK-NEXT: Index: 1 57# CHECK-NEXT: Name: .reginfo 58# CHECK-NEXT: Type: SHT_MIPS_REGINFO (0x70000006) 59# CHECK-NEXT: Flags [ (0x2) 60# CHECK-NEXT: SHF_ALLOC (0x2) 61# CHECK-NEXT: ] 62# CHECK-NEXT: Address: 0x100D4 63# CHECK-NEXT: Offset: 0xD4 64# CHECK-NEXT: Size: 24 65# CHECK-NEXT: Link: 0 66# CHECK-NEXT: Info: 0 67# CHECK-NEXT: AddressAlignment: 4 68# CHECK-NEXT: EntrySize: 0 69# CHECK-NEXT: } 70# CHECK-NEXT: Section { 71# CHECK-NEXT: Index: 2 72# CHECK-NEXT: Name: .MIPS.abiflags 73# CHECK-NEXT: Type: SHT_MIPS_ABIFLAGS (0x7000002A) 74# CHECK-NEXT: Flags [ (0x2) 75# CHECK-NEXT: SHF_ALLOC (0x2) 76# CHECK-NEXT: ] 77# CHECK-NEXT: Address: 0x100F0 78# CHECK-NEXT: Offset: 0xF0 79# CHECK-NEXT: Size: 24 80# CHECK-NEXT: Link: 0 81# CHECK-NEXT: Info: 0 82# CHECK-NEXT: AddressAlignment: 8 83# CHECK-NEXT: EntrySize: 0 84# CHECK-NEXT: } 85# CHECK-NEXT: Section { 86# CHECK-NEXT: Index: 3 87# CHECK-NEXT: Name: .text (1) 88# CHECK-NEXT: Type: SHT_PROGBITS (0x1) 89# CHECK-NEXT: Flags [ (0x6) 90# CHECK-NEXT: SHF_ALLOC (0x2) 91# CHECK-NEXT: SHF_EXECINSTR (0x4) 92# CHECK-NEXT: ] 93# CHECK-NEXT: Address: 0x20000 94# CHECK-NEXT: Offset: 0x10000 95# CHECK-NEXT: Size: 12 96# CHECK-NEXT: Link: 0 97# CHECK-NEXT: Info: 0 98# CHECK-NEXT: AddressAlignment: 16 99# CHECK-NEXT: EntrySize: 0 100# CHECK-NEXT: } 101# CHECK-NEXT: Section { 102# CHECK-NEXT: Index: 4 103# CHECK-NEXT: Name: .data 104# CHECK-NEXT: Type: SHT_PROGBITS (0x1) 105# CHECK-NEXT: Flags [ (0x3) 106# CHECK-NEXT: SHF_ALLOC (0x2) 107# CHECK-NEXT: SHF_WRITE (0x1) 108# CHECK-NEXT: ] 109# CHECK-NEXT: Address: 0x30000 110# CHECK-NEXT: Offset: 0x20000 111# CHECK-NEXT: Size: 0 112# CHECK-NEXT: Link: 0 113# CHECK-NEXT: Info: 0 114# CHECK-NEXT: AddressAlignment: 16 115# CHECK-NEXT: EntrySize: 0 116# CHECK-NEXT: } 117# CHECK-NEXT: Section { 118# CHECK-NEXT: Index: 5 119# CHECK-NEXT: Name: .bss (7) 120# CHECK-NEXT: Type: SHT_NOBITS (0x8) 121# CHECK-NEXT: Flags [ (0x3) 122# CHECK-NEXT: SHF_ALLOC (0x2) 123# CHECK-NEXT: SHF_WRITE (0x1) 124# CHECK-NEXT: ] 125# CHECK-NEXT: Address: 0x30000 126# CHECK-NEXT: Offset: 0x20000 127# CHECK-NEXT: Size: 0 128# CHECK-NEXT: Link: 0 129# CHECK-NEXT: Info: 0 130# CHECK-NEXT: AddressAlignment: 16 131# CHECK-NEXT: EntrySize: 0 132# CHECK-NEXT: } 133# CHECK-NEXT: Section { 134# CHECK-NEXT: Index: 6 135# CHECK-NEXT: Name: .symtab 136# CHECK-NEXT: Type: SHT_SYMTAB (0x2) 137# CHECK-NEXT: Flags [ (0x0) 138# CHECK-NEXT: ] 139# CHECK-NEXT: Address: 0x0 140# CHECK-NEXT: Offset: 0x20000 141# CHECK-NEXT: Size: 48 142# CHECK-NEXT: Link: 8 143# CHECK-NEXT: Info: 1 144# CHECK-NEXT: AddressAlignment: 4 145# CHECK-NEXT: EntrySize: 16 146# CHECK-NEXT: } 147# CHECK-NEXT: Section { 148# CHECK-NEXT: Index: 7 149# CHECK-NEXT: Name: .shstrtab 150# CHECK-NEXT: Type: SHT_STRTAB (0x3) 151# CHECK-NEXT: Flags [ (0x0) 152# CHECK-NEXT: ] 153# CHECK-NEXT: Address: 0x0 154# CHECK-NEXT: Offset: 0x20030 155# CHECK-NEXT: Size: 68 156# CHECK-NEXT: Link: 0 157# CHECK-NEXT: Info: 0 158# CHECK-NEXT: AddressAlignment: 1 159# CHECK-NEXT: EntrySize: 0 160# CHECK-NEXT: } 161# CHECK-NEXT: Section { 162# CHECK-NEXT: Index: 8 163# CHECK-NEXT: Name: .strtab (46) 164# CHECK-NEXT: Type: SHT_STRTAB (0x3) 165# CHECK-NEXT: Flags [ (0x0) 166# CHECK-NEXT: ] 167# CHECK-NEXT: Address: 0x0 168# CHECK-NEXT: Offset: 0x20074 169# CHECK-NEXT: Size: 13 170# CHECK-NEXT: Link: 0 171# CHECK-NEXT: Info: 0 172# CHECK-NEXT: AddressAlignment: 1 173# CHECK-NEXT: EntrySize: 0 174# CHECK-NEXT: } 175# CHECK-NEXT: ] 176# CHECK-NEXT: Symbols [ 177# CHECK-NEXT: Symbol { 178# CHECK-NEXT: Name: (0) 179# CHECK-NEXT: Value: 0x0 180# CHECK-NEXT: Size: 0 181# CHECK-NEXT: Binding: Local (0x0) 182# CHECK-NEXT: Type: None (0x0) 183# CHECK-NEXT: Other: 0 184# CHECK-NEXT: Section: Undefined (0x0) 185# CHECK-NEXT: } 186# CHECK-NEXT: Symbol { 187# CHECK-NEXT: Name: _gp 188# CHECK-NEXT: Value: 0x0 189# CHECK-NEXT: Size: 0 190# CHECK-NEXT: Binding: Local (0x0) 191# CHECK-NEXT: Type: None (0x0) 192# CHECK-NEXT: Other: 0 193# CHECK-NEXT: Section: Absolute (0xFFF1) 194# CHECK-NEXT: } 195# CHECK-NEXT: Symbol { 196# CHECK-NEXT: Name: __start 197# CHECK-NEXT: Value: 0x20000 198# CHECK-NEXT: Size: 0 199# CHECK-NEXT: Binding: Global (0x1) 200# CHECK-NEXT: Type: None (0x0) 201# CHECK-NEXT: Other: 0 202# CHECK-NEXT: Section: .text 203# CHECK-NEXT: } 204# CHECK-NEXT: ] 205# CHECK-NEXT: ProgramHeaders [ 206# CHECK-NEXT: ProgramHeader { 207# CHECK-NEXT: Type: PT_PHDR (0x6) 208# CHECK-NEXT: Offset: 0x34 209# CHECK-NEXT: VirtualAddress: 0x10034 210# CHECK-NEXT: PhysicalAddress: 0x10034 211# CHECK-NEXT: FileSize: 160 212# CHECK-NEXT: MemSize: 160 213# CHECK-NEXT: Flags [ (0x4) 214# CHECK-NEXT: PF_R (0x4) 215# CHECK-NEXT: ] 216# CHECK-NEXT: Alignment: 8 217# CHECK-NEXT: } 218# CHECK-NEXT: ProgramHeader { 219# CHECK-NEXT: Type: PT_LOAD (0x1) 220# CHECK-NEXT: Offset: 0x0 221# CHECK-NEXT: VirtualAddress: 0x10000 222# CHECK-NEXT: PhysicalAddress: 0x10000 223# CHECK-NEXT: FileSize: 264 224# CHECK-NEXT: MemSize: 264 225# CHECK-NEXT: Flags [ (0x4) 226# CHECK-NEXT: PF_R (0x4) 227# CHECK-NEXT: ] 228# CHECK-NEXT: Alignment: 65536 229# CHECK-NEXT: } 230# CHECK-NEXT: ProgramHeader { 231# CHECK-NEXT: Type: PT_LOAD (0x1) 232# CHECK-NEXT: Offset: 0x10000 233# CHECK-NEXT: VirtualAddress: 0x20000 234# CHECK-NEXT: PhysicalAddress: 0x20000 235# CHECK-NEXT: FileSize: 12 236# CHECK-NEXT: MemSize: 12 237# CHECK-NEXT: Flags [ (0x5) 238# CHECK-NEXT: PF_R (0x4) 239# CHECK-NEXT: PF_X (0x1) 240# CHECK-NEXT: ] 241# CHECK-NEXT: Alignment: 65536 242# CHECK-NEXT: } 243# CHECK-NEXT: ProgramHeader { 244# CHECK-NEXT: Type: PT_LOAD (0x1) 245# CHECK-NEXT: Offset: 0x20000 246# CHECK-NEXT: VirtualAddress: 0x30000 247# CHECK-NEXT: PhysicalAddress: 0x30000 248# CHECK-NEXT: FileSize: 0 249# CHECK-NEXT: MemSize: 0 250# CHECK-NEXT: Flags [ 251# CHECK-NEXT: PF_R 252# CHECK-NEXT: PF_W 253# CHECK-NEXT: ] 254# CHECK-NEXT: Alignment: 65536 255# CHECK-NEXT: } 256# CHECK-NEXT: ProgramHeader { 257# CHECK-NEXT: Type: PT_GNU_STACK 258# CHECK-NEXT: Offset: 0x0 259# CHECK-NEXT: VirtualAddress: 0x0 260# CHECK-NEXT: PhysicalAddress: 0x0 261# CHECK-NEXT: FileSize: 0 262# CHECK-NEXT: MemSize: 0 263# CHECK-NEXT: Flags [ 264# CHECK-NEXT: PF_R 265# CHECK-NEXT: PF_W 266# CHECK-NEXT: ] 267# CHECK-NEXT: Alignment: 0 268# CHECK-NEXT: } 269# CHECK-NEXT:] 270