1# RUN: yaml2obj %s -o %t
2# RUN: llvm-objcopy --weaken-symbol Global -W Local -W Weak %t %t2
3# RUN: llvm-readobj --symbols %t2 | FileCheck %s
4# RUN: llvm-objcopy --regex --weaken-symbol='.*' %t %t3
5# RUN: cmp %t2 %t3
6# RUN: echo "  Global  # comment" > %t-list.txt
7# RUN: echo "Local" >> %t-list.txt
8# RUN: echo "Weak" >> %t-list.txt
9# RUN: echo " # comment" >> %t-list.txt
10# RUN: llvm-objcopy --weaken-symbols %t-list.txt %t %t4
11# RUN: cmp %t2 %t4
12# RUN: echo ".*al # Global + Local == .*al" > %t-list2.txt
13# RUN: echo "Weak # weak" >> %t-list2.txt
14# RUN: llvm-objcopy --regex --weaken-symbols %t-list2.txt %t %t5
15# RUN: cmp %t2 %t5
16
17!ELF
18FileHeader:
19  Class:           ELFCLASS64
20  Data:            ELFDATA2LSB
21  Type:            ET_REL
22  Machine:         EM_X86_64
23Sections:
24  - Name:            .text
25    Type:            SHT_PROGBITS
26    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
27    Address:         0x1000
28    AddressAlign:    0x0000000000000010
29    Size:            64
30Symbols:
31  - Name:     Local
32    Type:     STT_FUNC
33    Section:  .text
34    Value:    0x1000
35    Size:     8
36  - Name:     Global
37    Type:     STT_FUNC
38    Size:     8
39    Section:  .text
40    Value:    0x1010
41    Binding:  STB_GLOBAL
42  - Name:     Weak
43    Type:     STT_FUNC
44    Size:     8
45    Section:  .text
46    Value:    0x1008
47    Binding:  STB_WEAK
48
49#CHECK: Symbols [
50#CHECK-NEXT:  Symbol {
51#CHECK-NEXT:    Name:
52#CHECK-NEXT:    Value: 0x0
53#CHECK-NEXT:    Size: 0
54#CHECK-NEXT:    Binding: Local
55#CHECK-NEXT:    Type: None
56#CHECK-NEXT:    Other: 0
57#CHECK-NEXT:    Section: Undefined
58#CHECK-NEXT:  }
59#CHECK-NEXT:  Symbol {
60#CHECK-NEXT:    Name: Local
61#CHECK-NEXT:    Value: 0x1000
62#CHECK-NEXT:    Size: 8
63#CHECK-NEXT:    Binding: Local
64#CHECK-NEXT:    Type: Function
65#CHECK-NEXT:    Other: 0
66#CHECK-NEXT:    Section: .text
67#CHECK-NEXT:  }
68#CHECK-NEXT:  Symbol {
69#CHECK-NEXT:    Name: Global
70#CHECK-NEXT:    Value: 0x1010
71#CHECK-NEXT:    Size: 8
72#CHECK-NEXT:    Binding: Weak
73#CHECK-NEXT:    Type: Function
74#CHECK-NEXT:    Other: 0
75#CHECK-NEXT:    Section: .text
76#CHECK-NEXT:  }
77#CHECK-NEXT:  Symbol {
78#CHECK-NEXT:    Name: Weak
79#CHECK-NEXT:    Value: 0x1008
80#CHECK-NEXT:    Size: 8
81#CHECK-NEXT:    Binding: Weak
82#CHECK-NEXT:    Type: Function
83#CHECK-NEXT:    Other: 0
84#CHECK-NEXT:    Section: .text
85#CHECK-NEXT:  }
86#CHECK-NEXT:]
87