1# RUN: yaml2obj %s -o %t.o 2# Preserve input to verify it is not modified. 3# RUN: cp %t.o %t-copy.o 4# RUN: llvm-objcopy %t.o -O elf64-x86-64 %t.2.o 5# RUN: llvm-readobj --sections --symbols %t.2.o | FileCheck %s 6# RUN: cmp %t.o %t-copy.o 7 8!ELF 9FileHeader: 10 Class: ELFCLASS32 11 Data: ELFDATA2LSB 12 Type: ET_EXEC 13 Machine: EM_386 14Sections: 15 - Name: .text 16 Type: SHT_PROGBITS 17 Flags: [ SHF_ALLOC, SHF_EXECINSTR ] 18 Size: 32 19 - Name: .data 20 Type: SHT_PROGBITS 21 Flags: [ SHF_ALLOC ] 22 Content: DEADBEEF 23 Size: 16 24Symbols: 25 - Name: foo 26 Type: STT_FUNC 27 Section: .text 28 Value: 16 29 Size: 8 30 Binding: STB_GLOBAL 31 - Name: bar 32 Type: STT_OBJECT 33 Section: .data 34 Size: 16 35 Binding: STB_GLOBAL 36 37# CHECK: Sections [ 38# CHECK-NEXT: Section { 39# CHECK-NEXT: Index: 0 40# CHECK-NEXT: Name: (0) 41# CHECK-NEXT: Type: SHT_NULL (0x0) 42# CHECK-NEXT: Flags [ (0x0) 43# CHECK-NEXT: ] 44# CHECK-NEXT: Address: 45# CHECK-NEXT: Offset: 46# CHECK-NEXT: Size: 0 47# CHECK-NEXT: Link: 0 48# CHECK-NEXT: Info: 0 49# CHECK-NEXT: AddressAlignment: 0 50# CHECK-NEXT: EntrySize: 0 51# CHECK-NEXT: } 52# CHECK-NEXT: Section { 53# CHECK-NEXT: Index: 1 54# CHECK-NEXT: Name: .text 55# CHECK-NEXT: Type: SHT_PROGBITS (0x1) 56# CHECK-NEXT: Flags [ (0x6) 57# CHECK-NEXT: SHF_ALLOC (0x2) 58# CHECK-NEXT: SHF_EXECINSTR (0x4) 59# CHECK-NEXT: ] 60# CHECK-NEXT: Address: 61# CHECK-NEXT: Offset: 62# CHECK-NEXT: Size: 32 63# CHECK-NEXT: Link: 0 64# CHECK-NEXT: Info: 0 65# CHECK-NEXT: AddressAlignment: 0 66# CHECK-NEXT: EntrySize: 0 67# CHECK-NEXT: } 68# CHECK-NEXT: Section { 69# CHECK-NEXT: Index: 2 70# CHECK-NEXT: Name: .data 71# CHECK-NEXT: Type: SHT_PROGBITS (0x1) 72# CHECK-NEXT: Flags [ (0x2) 73# CHECK-NEXT: SHF_ALLOC (0x2) 74# CHECK-NEXT: ] 75# CHECK-NEXT: Address: 76# CHECK-NEXT: Offset: 77# CHECK-NEXT: Size: 16 78# CHECK-NEXT: Link: 0 79# CHECK-NEXT: Info: 0 80# CHECK-NEXT: AddressAlignment: 0 81# CHECK-NEXT: EntrySize: 0 82# CHECK-NEXT: } 83# CHECK-NEXT: Section { 84# CHECK-NEXT: Index: 3 85# CHECK-NEXT: Name: .symtab 86# CHECK-NEXT: Type: SHT_SYMTAB (0x2) 87# CHECK-NEXT: Flags [ (0x0) 88# CHECK-NEXT: ] 89# CHECK-NEXT: Address: 90# CHECK-NEXT: Offset: 91# CHECK-NEXT: Size: 72 92# CHECK-NEXT: Link: 4 93# CHECK-NEXT: Info: 1 94# CHECK-NEXT: AddressAlignment: 8 95# CHECK-NEXT: EntrySize: 24 96# CHECK-NEXT: } 97# CHECK-NEXT: Section { 98# CHECK-NEXT: Index: 4 99# CHECK-NEXT: Name: .strtab 100# CHECK-NEXT: Type: SHT_STRTAB (0x3) 101# CHECK-NEXT: Flags [ (0x0) 102# CHECK-NEXT: ] 103# CHECK-NEXT: Address: 104# CHECK-NEXT: Offset: 105# CHECK-NEXT: Size: 9 106# CHECK-NEXT: Link: 0 107# CHECK-NEXT: Info: 0 108# CHECK-NEXT: AddressAlignment: 1 109# CHECK-NEXT: EntrySize: 0 110# CHECK-NEXT: } 111# CHECK-NEXT: Section { 112# CHECK-NEXT: Index: 5 113# CHECK-NEXT: Name: .shstrtab 114# CHECK-NEXT: Type: SHT_STRTAB (0x3) 115# CHECK-NEXT: Flags [ (0x0) 116# CHECK-NEXT: ] 117# CHECK-NEXT: Address: 118# CHECK-NEXT: Offset: 119# CHECK-NEXT: Size: 39 120# CHECK-NEXT: Link: 0 121# CHECK-NEXT: Info: 0 122# CHECK-NEXT: AddressAlignment: 1 123# CHECK-NEXT: EntrySize: 0 124# CHECK-NEXT: } 125# CHECK-NEXT: ] 126# CHECK-NEXT: Symbols [ 127# CHECK-NEXT: Symbol { 128# CHECK-NEXT: Name: 129# CHECK-NEXT: Value: 0x0 130# CHECK-NEXT: Size: 0 131# CHECK-NEXT: Binding: Local (0x0) 132# CHECK-NEXT: Type: None (0x0) 133# CHECK-NEXT: Other: 0 134# CHECK-NEXT: Section: Undefined 135# CHECK-NEXT: } 136# CHECK-NEXT: Symbol { 137# CHECK-NEXT: Name: foo 138# CHECK-NEXT: Value: 0x10 139# CHECK-NEXT: Size: 8 140# CHECK-NEXT: Binding: Global (0x1) 141# CHECK-NEXT: Type: Function (0x2) 142# CHECK-NEXT: Other: 0 143# CHECK-NEXT: Section: .text 144# CHECK-NEXT: } 145# CHECK-NEXT: Symbol { 146# CHECK-NEXT: Name: bar 147# CHECK-NEXT: Value: 0x0 148# CHECK-NEXT: Size: 16 149# CHECK-NEXT: Binding: Global (0x1) 150# CHECK-NEXT: Type: Object (0x1) 151# CHECK-NEXT: Other: 0 152# CHECK-NEXT: Section: .data 153# CHECK-NEXT: } 154# CHECK-NEXT: ] 155