xref: /llvm-project/llvm/test/tools/llvm-objcopy/ELF/localize.test (revision 1562e4552cd1b3d2eadd956c966f8a60e928b8ca)
155c81d42SFangrui Song# RUN: yaml2obj %s -o %t
26e4dc6f2SAlexander Shaposhnikov# RUN: llvm-objcopy \
36e4dc6f2SAlexander Shaposhnikov# RUN:     --localize-symbol Global \
4bd7735f7SJordan Rupprecht# RUN:     -L GlobalUndef \
56e4dc6f2SAlexander Shaposhnikov# RUN:     -L Local \
66e4dc6f2SAlexander Shaposhnikov# RUN:     -L Weak \
76e4dc6f2SAlexander Shaposhnikov# RUN:     -L GlobalCommon \
8*1562e455SJames Henderson# RUN:     -L Missing \
96e4dc6f2SAlexander Shaposhnikov# RUN:     %t %t2
10298ea3f5SJordan Rupprecht# RUN: llvm-readobj --symbols %t2 | FileCheck %s
11*1562e455SJames Henderson# RUN: llvm-objcopy --regex --localize-symbol='[GLW].*' %t %t3
12f324f6dcSEugene Leviant# RUN: cmp %t2 %t3
13e08fe35dSEugene Leviant# RUN: echo "  Global # comment  " > %t-list.txt
14e08fe35dSEugene Leviant# RUN: echo "GlobalUndef" >> %t-list.txt
15e08fe35dSEugene Leviant# RUN: echo "Local" >> %t-list.txt
16e08fe35dSEugene Leviant# RUN: echo "Weak" >> %t-list.txt
17e08fe35dSEugene Leviant# RUN: echo "GlobalCommon" >> %t-list.txt
18*1562e455SJames Henderson# RUN: echo "Missing" >> %t-list.txt
19e08fe35dSEugene Leviant# RUN: echo " # comment " >> %t-list.txt
20e08fe35dSEugene Leviant# RUN: llvm-objcopy --localize-symbols %t-list.txt %t %t4
21e08fe35dSEugene Leviant# RUN: cmp %t2 %t4
22e08fe35dSEugene Leviant# RUN: echo "  .*al.* # Global + Local + GlobalCommon " > %t-list2.txt
23e08fe35dSEugene Leviant# RUN: echo "Weak" >> %t-list2.txt
24e08fe35dSEugene Leviant# RUN: llvm-objcopy --regex --localize-symbols %t-list2.txt %t %t5
25e08fe35dSEugene Leviant# RUN: cmp %t2 %t5
266e4dc6f2SAlexander Shaposhnikov
276e4dc6f2SAlexander Shaposhnikov!ELF
286e4dc6f2SAlexander ShaposhnikovFileHeader:
296e4dc6f2SAlexander Shaposhnikov  Class:           ELFCLASS64
306e4dc6f2SAlexander Shaposhnikov  Data:            ELFDATA2LSB
316e4dc6f2SAlexander Shaposhnikov  Type:            ET_REL
326e4dc6f2SAlexander Shaposhnikov  Machine:         EM_X86_64
336e4dc6f2SAlexander ShaposhnikovSections:
346e4dc6f2SAlexander Shaposhnikov  - Name:            .text
356e4dc6f2SAlexander Shaposhnikov    Type:            SHT_PROGBITS
366e4dc6f2SAlexander Shaposhnikov    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
376e4dc6f2SAlexander Shaposhnikov    Address:         0x1000
386e4dc6f2SAlexander Shaposhnikov    AddressAlign:    0x0000000000000010
396e4dc6f2SAlexander Shaposhnikov    Size:            64
406e4dc6f2SAlexander Shaposhnikov  - Name:            .data
416e4dc6f2SAlexander Shaposhnikov    Type:            SHT_PROGBITS
426e4dc6f2SAlexander Shaposhnikov    Flags:           [ SHF_ALLOC ]
436e4dc6f2SAlexander Shaposhnikov    Address:         0x2000
446e4dc6f2SAlexander Shaposhnikov    AddressAlign:    0x0000000000000010
456e4dc6f2SAlexander Shaposhnikov    Content:         "0000000000000000"
466e4dc6f2SAlexander ShaposhnikovSymbols:
476e4dc6f2SAlexander Shaposhnikov  - Name:     Local
486e4dc6f2SAlexander Shaposhnikov    Type:     STT_FUNC
496e4dc6f2SAlexander Shaposhnikov    Section:  .text
506e4dc6f2SAlexander Shaposhnikov    Value:    0x1000
516e4dc6f2SAlexander Shaposhnikov    Size:     8
526e4dc6f2SAlexander Shaposhnikov  - Name:     Global
536e4dc6f2SAlexander Shaposhnikov    Type:     STT_FUNC
546e4dc6f2SAlexander Shaposhnikov    Size:     8
556e4dc6f2SAlexander Shaposhnikov    Section:  .text
566e4dc6f2SAlexander Shaposhnikov    Value:    0x1010
576da44ad7SGeorge Rimar    Binding:  STB_GLOBAL
58bd7735f7SJordan Rupprecht  - Name:     GlobalUndef
59bd7735f7SJordan Rupprecht    Type:     STT_FUNC
606da44ad7SGeorge Rimar    Binding:  STB_GLOBAL
616e4dc6f2SAlexander Shaposhnikov  - Name:     GlobalCommon
626e4dc6f2SAlexander Shaposhnikov    Type:     STT_OBJECT
636e4dc6f2SAlexander Shaposhnikov    Index:    SHN_COMMON
646e4dc6f2SAlexander Shaposhnikov    Value:    0x2006
656e4dc6f2SAlexander Shaposhnikov    Size:     2
666da44ad7SGeorge Rimar    Binding:  STB_GLOBAL
676da44ad7SGeorge Rimar  - Name:     Weak
686da44ad7SGeorge Rimar    Type:     STT_FUNC
696da44ad7SGeorge Rimar    Size:     8
706da44ad7SGeorge Rimar    Section:  .text
716da44ad7SGeorge Rimar    Value:    0x1008
726da44ad7SGeorge Rimar    Binding:  STB_WEAK
73*1562e455SJames Henderson  - Name:     Unmentioned
74*1562e455SJames Henderson    Section:  .text
75*1562e455SJames Henderson    Binding:  STB_GLOBAL
766e4dc6f2SAlexander Shaposhnikov
776e4dc6f2SAlexander Shaposhnikov#CHECK: Symbols [
786e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:  Symbol {
796e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Name:
806e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Value: 0x0
816e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Size: 0
826e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Binding: Local
836e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Type: None
846e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Other: 0
856e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Section: Undefined
866e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:  }
876e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:  Symbol {
886e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Name: Local
896e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Value: 0x1000
906e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Size: 8
916e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Binding: Local
926e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Type: Function
936e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Other: 0
946e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Section: .text
956e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:  }
966e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:  Symbol {
976e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Name: Global
986e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Value: 0x1010
996e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Size: 8
1006e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Binding: Local
1016e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Type: Function
1026e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Other: 0
1036e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Section: .text
1046e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:  }
1056e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:  Symbol {
1066e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Name: Weak
1076e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Value: 0x1008
1086e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Size: 8
1096e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Binding: Local
1106e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Type: Function
1116e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Other: 0
1126e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Section: .text
1136e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:  }
1146e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:  Symbol {
115bd7735f7SJordan Rupprecht#CHECK-NEXT:    Name: GlobalUndef
116bd7735f7SJordan Rupprecht#CHECK-NEXT:    Value:
117bd7735f7SJordan Rupprecht#CHECK-NEXT:    Size:
118bd7735f7SJordan Rupprecht#CHECK-NEXT:    Binding: Global
119bd7735f7SJordan Rupprecht#CHECK-NEXT:    Type: Function
120bd7735f7SJordan Rupprecht#CHECK-NEXT:    Other:
121bd7735f7SJordan Rupprecht#CHECK-NEXT:    Section: Undefined
122bd7735f7SJordan Rupprecht#CHECK-NEXT:  }
123bd7735f7SJordan Rupprecht#CHECK-NEXT:  Symbol {
1246e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Name: GlobalCommon
1256e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Value: 0x2006
1266e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Size: 2
1276e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Binding: Global
1286e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Type: Object
1296e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Other: 0
130*1562e455SJames Henderson#CHECK-NEXT:    Section: Common
131*1562e455SJames Henderson#CHECK-NEXT:  }
132*1562e455SJames Henderson#CHECK-NEXT:  Symbol {
133*1562e455SJames Henderson#CHECK-NEXT:    Name: Unmentioned
134*1562e455SJames Henderson#CHECK-NEXT:    Value:
135*1562e455SJames Henderson#CHECK-NEXT:    Size:
136*1562e455SJames Henderson#CHECK-NEXT:    Binding: Global
137*1562e455SJames Henderson#CHECK-NEXT:    Type:
138*1562e455SJames Henderson#CHECK-NEXT:    Other:
139*1562e455SJames Henderson#CHECK-NEXT:    Section: .text
1406e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:  }
1416e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:]
142