155c81d42SFangrui Song# RUN: yaml2obj %s -o %t 2298ea3f5SJordan Rupprecht# RUN: llvm-objcopy --localize-hidden %t %t2 3298ea3f5SJordan Rupprecht# RUN: llvm-readobj --relocations --symbols %t2 | FileCheck %s 46e4dc6f2SAlexander Shaposhnikov 56e4dc6f2SAlexander Shaposhnikov!ELF 66e4dc6f2SAlexander ShaposhnikovFileHeader: 76e4dc6f2SAlexander Shaposhnikov Class: ELFCLASS64 86e4dc6f2SAlexander Shaposhnikov Data: ELFDATA2LSB 96e4dc6f2SAlexander Shaposhnikov Type: ET_REL 106e4dc6f2SAlexander Shaposhnikov Machine: EM_X86_64 116e4dc6f2SAlexander ShaposhnikovSections: 126e4dc6f2SAlexander Shaposhnikov - Name: .text 136e4dc6f2SAlexander Shaposhnikov Type: SHT_PROGBITS 146e4dc6f2SAlexander Shaposhnikov Flags: [ SHF_ALLOC, SHF_EXECINSTR ] 156e4dc6f2SAlexander Shaposhnikov Address: 0x1000 166e4dc6f2SAlexander Shaposhnikov AddressAlign: 0x0000000000000010 176e4dc6f2SAlexander Shaposhnikov Size: 64 186e4dc6f2SAlexander Shaposhnikov - Name: .data 196e4dc6f2SAlexander Shaposhnikov Type: SHT_PROGBITS 206e4dc6f2SAlexander Shaposhnikov Flags: [ SHF_ALLOC ] 216e4dc6f2SAlexander Shaposhnikov Address: 0x2000 226e4dc6f2SAlexander Shaposhnikov AddressAlign: 0x0000000000000010 236e4dc6f2SAlexander Shaposhnikov Content: "0000000000000000" 246e4dc6f2SAlexander Shaposhnikov - Name: .rel.text 256e4dc6f2SAlexander Shaposhnikov Type: SHT_REL 266e4dc6f2SAlexander Shaposhnikov Info: .text 276e4dc6f2SAlexander Shaposhnikov Relocations: 286e4dc6f2SAlexander Shaposhnikov - Offset: 0x1000 296e4dc6f2SAlexander Shaposhnikov Symbol: undefGlobal 306e4dc6f2SAlexander Shaposhnikov Type: R_X86_64_PC32 316e4dc6f2SAlexander ShaposhnikovSymbols: 326e4dc6f2SAlexander Shaposhnikov - Name: hiddenLocal 336e4dc6f2SAlexander Shaposhnikov Type: STT_FUNC 346e4dc6f2SAlexander Shaposhnikov Section: .text 356e4dc6f2SAlexander Shaposhnikov Value: 0x1008 366e4dc6f2SAlexander Shaposhnikov Size: 8 374e71702cSGeorge Rimar Other: [ STV_HIDDEN ] 386e4dc6f2SAlexander Shaposhnikov - Name: defaultGlobal 396e4dc6f2SAlexander Shaposhnikov Type: STT_FUNC 406e4dc6f2SAlexander Shaposhnikov Size: 8 416e4dc6f2SAlexander Shaposhnikov Section: .text 426e4dc6f2SAlexander Shaposhnikov Value: 0x1000 436da44ad7SGeorge Rimar Binding: STB_GLOBAL 446e4dc6f2SAlexander Shaposhnikov - Name: hiddenGlobal 456e4dc6f2SAlexander Shaposhnikov Type: STT_OBJECT 466e4dc6f2SAlexander Shaposhnikov Section: .data 476e4dc6f2SAlexander Shaposhnikov Value: 0x2006 486e4dc6f2SAlexander Shaposhnikov Size: 2 494e71702cSGeorge Rimar Other: [ STV_HIDDEN ] 506da44ad7SGeorge Rimar Binding: STB_GLOBAL 516e4dc6f2SAlexander Shaposhnikov - Name: hiddenGlobalCommon 526e4dc6f2SAlexander Shaposhnikov Type: STT_OBJECT 536e4dc6f2SAlexander Shaposhnikov Index: SHN_COMMON 546e4dc6f2SAlexander Shaposhnikov Value: 0x2006 556e4dc6f2SAlexander Shaposhnikov Size: 2 564e71702cSGeorge Rimar Other: [ STV_HIDDEN ] 576da44ad7SGeorge Rimar Binding: STB_GLOBAL 586e4dc6f2SAlexander Shaposhnikov - Name: undefGlobal 596e4dc6f2SAlexander Shaposhnikov Type: STT_FUNC 606e4dc6f2SAlexander Shaposhnikov Size: 8 616da44ad7SGeorge Rimar Binding: STB_GLOBAL 626e4dc6f2SAlexander Shaposhnikov - Name: internalGlobal 636e4dc6f2SAlexander Shaposhnikov Type: STT_OBJECT 646e4dc6f2SAlexander Shaposhnikov Section: .data 656e4dc6f2SAlexander Shaposhnikov Value: 0x2002 666e4dc6f2SAlexander Shaposhnikov Size: 2 674e71702cSGeorge Rimar Other: [ STV_INTERNAL ] 686da44ad7SGeorge Rimar Binding: STB_GLOBAL 696e4dc6f2SAlexander Shaposhnikov - Name: protectedGlobal 706e4dc6f2SAlexander Shaposhnikov Type: STT_OBJECT 716e4dc6f2SAlexander Shaposhnikov Section: .data 726e4dc6f2SAlexander Shaposhnikov Value: 0x2000 736e4dc6f2SAlexander Shaposhnikov Size: 4 744e71702cSGeorge Rimar Other: [ STV_PROTECTED ] 756da44ad7SGeorge Rimar Binding: STB_GLOBAL 766da44ad7SGeorge Rimar - Name: hiddenWeak 776da44ad7SGeorge Rimar Type: STT_FUNC 786da44ad7SGeorge Rimar Section: .text 796da44ad7SGeorge Rimar Value: 0x1010 806da44ad7SGeorge Rimar Size: 8 814e71702cSGeorge Rimar Other: [ STV_HIDDEN ] 826da44ad7SGeorge Rimar Binding: STB_WEAK 836e4dc6f2SAlexander Shaposhnikov 846e4dc6f2SAlexander Shaposhnikov#CHECK: Relocations [ 856e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Section (3) .rel.text { 86*98a42898SGeorgii Rymar#CHECK-NEXT: 0x1000 R_X86_64_PC32 undefGlobal 876e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: } 886e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:] 896e4dc6f2SAlexander Shaposhnikov 906e4dc6f2SAlexander Shaposhnikov 916e4dc6f2SAlexander Shaposhnikov#CHECK: Symbols [ 926e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Symbol { 936e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Name: 946e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Value: 0x0 956e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Size: 0 966e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Binding: Local 976e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Type: None 986e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Other: 0 996e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Section: Undefined 1006e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: } 1016e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Symbol { 1026e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Name: hiddenLocal 1036e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Value: 0x1008 1046e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Size: 8 1056e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Binding: Local 1066e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Type: Function 1076e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Other [ 1086e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: STV_HIDDEN 1096e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: ] 1106e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Section: .text 1116e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: } 1126e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Symbol { 1136e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Name: hiddenGlobal 1146e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Value: 0x2006 1156e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Size: 2 1166e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Binding: Local 1176e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Type: Object 1186e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Other [ 1196e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: STV_HIDDEN 1206e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: ] 1216e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Section: .data 1226e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: } 1236e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Symbol { 1246e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Name: internalGlobal 1256e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Value: 0x2002 1266e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Size: 2 1276e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Binding: Local 1286e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Type: Object 1296e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Other [ 1306e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: STV_INTERNAL 1316e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: ] 1326e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Section: .data 1336e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: } 1346e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Symbol { 1356e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Name: hiddenWeak 1366e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Value: 0x1010 1376e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Size: 8 1386e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Binding: Local 1396e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Type: Function 1406e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Other [ 1416e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: STV_HIDDEN 1426e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: ] 1436e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Section: .text 1446e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: } 1456e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Symbol { 1466e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Name: defaultGlobal 1476e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Value: 0x1000 1486e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Size: 8 1496e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Binding: Global 1506e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Type: Function 1516e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Other: 0 1526e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Section: .text 1536e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: } 1546e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Symbol { 1556e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Name: hiddenGlobalCommon 1566e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Value: 0x2006 1576e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Size: 2 1586e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Binding: Global 1596e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Type: Object 1606e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Other [ 1616e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: STV_HIDDEN 1626e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: ] 1636e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Section: Common (0xF 1646e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: } 1656e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Symbol { 1666e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Name: undefGlobal 1676e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Value: 0x0 1686e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Size: 8 1696e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Binding: Global 1706e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Type: Function 1716e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Other: 0 1726e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Section: 1736e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: } 1746e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Symbol { 1756e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Name: protectedGlobal 1766e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Value: 0x2000 1776e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Size: 4 1786e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Binding: Global 1796e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Type: Object 1806e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Other [ 1816e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: STV_PROTECTED 1826e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: ] 1836e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Section: .data 1846e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: } 1856e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:] 186