1# RUN: yaml2obj %s -o %t 2# RUN: llvm-objcopy --localize-hidden %t %t2 3# RUN: llvm-readobj --relocations --symbols %t2 | FileCheck %s 4 5!ELF 6FileHeader: 7 Class: ELFCLASS64 8 Data: ELFDATA2LSB 9 Type: ET_REL 10 Machine: EM_X86_64 11Sections: 12 - Name: .text 13 Type: SHT_PROGBITS 14 Flags: [ SHF_ALLOC, SHF_EXECINSTR ] 15 Address: 0x1000 16 AddressAlign: 0x0000000000000010 17 Size: 64 18 - Name: .data 19 Type: SHT_PROGBITS 20 Flags: [ SHF_ALLOC ] 21 Address: 0x2000 22 AddressAlign: 0x0000000000000010 23 Content: "0000000000000000" 24 - Name: .rel.text 25 Type: SHT_REL 26 Info: .text 27 Relocations: 28 - Offset: 0x1000 29 Symbol: undefGlobal 30 Type: R_X86_64_PC32 31Symbols: 32 - Name: hiddenLocal 33 Type: STT_FUNC 34 Section: .text 35 Value: 0x1008 36 Size: 8 37 Other: [ STV_HIDDEN ] 38 - Name: defaultGlobal 39 Type: STT_FUNC 40 Size: 8 41 Section: .text 42 Value: 0x1000 43 Binding: STB_GLOBAL 44 - Name: hiddenGlobal 45 Type: STT_OBJECT 46 Section: .data 47 Value: 0x2006 48 Size: 2 49 Other: [ STV_HIDDEN ] 50 Binding: STB_GLOBAL 51 - Name: hiddenGlobalCommon 52 Type: STT_OBJECT 53 Index: SHN_COMMON 54 Value: 0x2006 55 Size: 2 56 Other: [ STV_HIDDEN ] 57 Binding: STB_GLOBAL 58 - Name: undefGlobal 59 Type: STT_FUNC 60 Size: 8 61 Binding: STB_GLOBAL 62 - Name: internalGlobal 63 Type: STT_OBJECT 64 Section: .data 65 Value: 0x2002 66 Size: 2 67 Other: [ STV_INTERNAL ] 68 Binding: STB_GLOBAL 69 - Name: protectedGlobal 70 Type: STT_OBJECT 71 Section: .data 72 Value: 0x2000 73 Size: 4 74 Other: [ STV_PROTECTED ] 75 Binding: STB_GLOBAL 76 - Name: hiddenWeak 77 Type: STT_FUNC 78 Section: .text 79 Value: 0x1010 80 Size: 8 81 Other: [ STV_HIDDEN ] 82 Binding: STB_WEAK 83 84#CHECK: Relocations [ 85#CHECK-NEXT: Section (3) .rel.text { 86#CHECK-NEXT: 0x1000 R_X86_64_PC32 undefGlobal 0x0 87#CHECK-NEXT: } 88#CHECK-NEXT:] 89 90 91#CHECK: Symbols [ 92#CHECK-NEXT: Symbol { 93#CHECK-NEXT: Name: 94#CHECK-NEXT: Value: 0x0 95#CHECK-NEXT: Size: 0 96#CHECK-NEXT: Binding: Local 97#CHECK-NEXT: Type: None 98#CHECK-NEXT: Other: 0 99#CHECK-NEXT: Section: Undefined 100#CHECK-NEXT: } 101#CHECK-NEXT: Symbol { 102#CHECK-NEXT: Name: hiddenLocal 103#CHECK-NEXT: Value: 0x1008 104#CHECK-NEXT: Size: 8 105#CHECK-NEXT: Binding: Local 106#CHECK-NEXT: Type: Function 107#CHECK-NEXT: Other [ 108#CHECK-NEXT: STV_HIDDEN 109#CHECK-NEXT: ] 110#CHECK-NEXT: Section: .text 111#CHECK-NEXT: } 112#CHECK-NEXT: Symbol { 113#CHECK-NEXT: Name: hiddenGlobal 114#CHECK-NEXT: Value: 0x2006 115#CHECK-NEXT: Size: 2 116#CHECK-NEXT: Binding: Local 117#CHECK-NEXT: Type: Object 118#CHECK-NEXT: Other [ 119#CHECK-NEXT: STV_HIDDEN 120#CHECK-NEXT: ] 121#CHECK-NEXT: Section: .data 122#CHECK-NEXT: } 123#CHECK-NEXT: Symbol { 124#CHECK-NEXT: Name: internalGlobal 125#CHECK-NEXT: Value: 0x2002 126#CHECK-NEXT: Size: 2 127#CHECK-NEXT: Binding: Local 128#CHECK-NEXT: Type: Object 129#CHECK-NEXT: Other [ 130#CHECK-NEXT: STV_INTERNAL 131#CHECK-NEXT: ] 132#CHECK-NEXT: Section: .data 133#CHECK-NEXT: } 134#CHECK-NEXT: Symbol { 135#CHECK-NEXT: Name: hiddenWeak 136#CHECK-NEXT: Value: 0x1010 137#CHECK-NEXT: Size: 8 138#CHECK-NEXT: Binding: Local 139#CHECK-NEXT: Type: Function 140#CHECK-NEXT: Other [ 141#CHECK-NEXT: STV_HIDDEN 142#CHECK-NEXT: ] 143#CHECK-NEXT: Section: .text 144#CHECK-NEXT: } 145#CHECK-NEXT: Symbol { 146#CHECK-NEXT: Name: defaultGlobal 147#CHECK-NEXT: Value: 0x1000 148#CHECK-NEXT: Size: 8 149#CHECK-NEXT: Binding: Global 150#CHECK-NEXT: Type: Function 151#CHECK-NEXT: Other: 0 152#CHECK-NEXT: Section: .text 153#CHECK-NEXT: } 154#CHECK-NEXT: Symbol { 155#CHECK-NEXT: Name: hiddenGlobalCommon 156#CHECK-NEXT: Value: 0x2006 157#CHECK-NEXT: Size: 2 158#CHECK-NEXT: Binding: Global 159#CHECK-NEXT: Type: Object 160#CHECK-NEXT: Other [ 161#CHECK-NEXT: STV_HIDDEN 162#CHECK-NEXT: ] 163#CHECK-NEXT: Section: Common (0xF 164#CHECK-NEXT: } 165#CHECK-NEXT: Symbol { 166#CHECK-NEXT: Name: undefGlobal 167#CHECK-NEXT: Value: 0x0 168#CHECK-NEXT: Size: 8 169#CHECK-NEXT: Binding: Global 170#CHECK-NEXT: Type: Function 171#CHECK-NEXT: Other: 0 172#CHECK-NEXT: Section: 173#CHECK-NEXT: } 174#CHECK-NEXT: Symbol { 175#CHECK-NEXT: Name: protectedGlobal 176#CHECK-NEXT: Value: 0x2000 177#CHECK-NEXT: Size: 4 178#CHECK-NEXT: Binding: Global 179#CHECK-NEXT: Type: Object 180#CHECK-NEXT: Other [ 181#CHECK-NEXT: STV_PROTECTED 182#CHECK-NEXT: ] 183#CHECK-NEXT: Section: .data 184#CHECK-NEXT: } 185#CHECK-NEXT:] 186