xref: /llvm-project/llvm/test/tools/llvm-objcopy/ELF/globalize.test (revision 1562e4552cd1b3d2eadd956c966f8a60e928b8ca)
155c81d42SFangrui Song# RUN: yaml2obj %s -o %t
26e4dc6f2SAlexander Shaposhnikov# RUN: llvm-objcopy --globalize-symbol Global \
36e4dc6f2SAlexander Shaposhnikov# RUN:   --globalize-symbol Local \
46e4dc6f2SAlexander Shaposhnikov# RUN:   --globalize-symbol Weak \
5*1562e455SJames Henderson# RUN:   --globalize-symbol WeakUndef \
6*1562e455SJames Henderson# RUN:   --globalize-symbol Missing %t %t2
7298ea3f5SJordan Rupprecht# RUN: llvm-readobj --symbols %t2 | FileCheck %s
8*1562e455SJames Henderson# RUN: llvm-objcopy --regex --globalize-symbol='[GLW].*' %t %t3
9f324f6dcSEugene Leviant# RUN: cmp %t2 %t3
10e08fe35dSEugene Leviant# RUN: echo " Global # global" > %t-list.txt
11e08fe35dSEugene Leviant# RUN: echo "Local" >> %t-list.txt
12e08fe35dSEugene Leviant# RUN: echo "Weak" >> %t-list.txt
13e08fe35dSEugene Leviant# RUN: echo "WeakUndef" >> %t-list.txt
14*1562e455SJames Henderson# RUN: echo "Missing" >> %t-list.txt
15e08fe35dSEugene Leviant# RUN: echo " # comment " >> %t-list.txt
16e08fe35dSEugene Leviant# RUN: llvm-objcopy --globalize-symbols %t-list.txt %t %t4
17e08fe35dSEugene Leviant# RUN: cmp %t2 %t4
18*1562e455SJames Henderson# RUN: echo "[GLW].+ # .+ " > %t-list2.txt
19e08fe35dSEugene Leviant# RUN: llvm-objcopy --regex --globalize-symbols %t-list2.txt %t %t5
20e08fe35dSEugene Leviant# RUN: cmp %t2 %t5
216e4dc6f2SAlexander Shaposhnikov
226e4dc6f2SAlexander Shaposhnikov!ELF
236e4dc6f2SAlexander ShaposhnikovFileHeader:
246e4dc6f2SAlexander Shaposhnikov  Class:           ELFCLASS64
256e4dc6f2SAlexander Shaposhnikov  Data:            ELFDATA2LSB
266e4dc6f2SAlexander Shaposhnikov  Type:            ET_REL
276e4dc6f2SAlexander Shaposhnikov  Machine:         EM_X86_64
286e4dc6f2SAlexander ShaposhnikovSections:
296e4dc6f2SAlexander Shaposhnikov  - Name:            .text
306e4dc6f2SAlexander Shaposhnikov    Type:            SHT_PROGBITS
316e4dc6f2SAlexander Shaposhnikov    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
326e4dc6f2SAlexander Shaposhnikov    Address:         0x1000
336e4dc6f2SAlexander Shaposhnikov    AddressAlign:    0x0000000000000010
346e4dc6f2SAlexander Shaposhnikov    Size:            64
356e4dc6f2SAlexander ShaposhnikovSymbols:
366e4dc6f2SAlexander Shaposhnikov  - Name:     Local
376e4dc6f2SAlexander Shaposhnikov    Type:     STT_FUNC
386e4dc6f2SAlexander Shaposhnikov    Section:  .text
396e4dc6f2SAlexander Shaposhnikov    Value:    0x1000
406e4dc6f2SAlexander Shaposhnikov    Size:     8
416e4dc6f2SAlexander Shaposhnikov  - Name:     Global
426e4dc6f2SAlexander Shaposhnikov    Type:     STT_FUNC
436e4dc6f2SAlexander Shaposhnikov    Size:     8
446e4dc6f2SAlexander Shaposhnikov    Section:  .text
456e4dc6f2SAlexander Shaposhnikov    Value:    0x1010
466da44ad7SGeorge Rimar    Binding:  STB_GLOBAL
476da44ad7SGeorge Rimar  - Name:     Weak
486da44ad7SGeorge Rimar    Type:     STT_FUNC
496da44ad7SGeorge Rimar    Size:     8
506da44ad7SGeorge Rimar    Section:  .text
516da44ad7SGeorge Rimar    Value:    0x1008
526da44ad7SGeorge Rimar    Binding:  STB_WEAK
536da44ad7SGeorge Rimar  - Name:     WeakUndef
546da44ad7SGeorge Rimar    Binding:  STB_WEAK
55*1562e455SJames Henderson  - Name:     Unspecified
56*1562e455SJames Henderson    Section:  .text
57*1562e455SJames Henderson    Binding:  STB_WEAK
586e4dc6f2SAlexander Shaposhnikov
596e4dc6f2SAlexander Shaposhnikov#CHECK: Symbols [
606e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:  Symbol {
616e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Name:
626e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Value: 0x0
636e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Size: 0
646e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Binding: Local
656e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Type: None
666e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Other: 0
676e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Section: Undefined
686e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:  }
696e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:  Symbol {
706e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Name: Local
716e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Value: 0x1000
726e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Size: 8
736e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Binding: Global
746e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Type: Function
756e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Other: 0
766e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Section: .text
776e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:  }
786e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:  Symbol {
796e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Name: Global
806e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Value: 0x1010
816e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Size: 8
826e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Binding: Global
836e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Type: Function
846e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Other: 0
856e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Section: .text
866e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:  }
876e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:  Symbol {
886e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Name: Weak
896e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Value: 0x1008
906e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Size: 8
916e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Binding: Global
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: WeakUndef
986e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Value: 0x0
996e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Size: 0
1006e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Binding: Weak
1016e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Type: None
1026e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Other: 0
1036e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Section: Undefined
1046e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:  }
105*1562e455SJames Henderson#CHECK-NEXT:  Symbol {
106*1562e455SJames Henderson#CHECK-NEXT:    Name: Unspecified
107*1562e455SJames Henderson#CHECK-NEXT:    Value: 0x0
108*1562e455SJames Henderson#CHECK-NEXT:    Size: 0
109*1562e455SJames Henderson#CHECK-NEXT:    Binding: Weak
110*1562e455SJames Henderson#CHECK-NEXT:    Type: None
111*1562e455SJames Henderson#CHECK-NEXT:    Other: 0
112*1562e455SJames Henderson#CHECK-NEXT:    Section: .text
113*1562e455SJames Henderson#CHECK-NEXT:  }
1146e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:]
115