xref: /llvm-project/llvm/test/tools/llvm-objcopy/ELF/localize-hidden.test (revision 98a4289810ba49cea6f9a9be6d902e72f0c0d0e7)
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