blob: 01de61ab2758a0bd1f17a02f199f8607ec5806c7 [file] [log] [blame]
Paul Semel3a8a56b2018-04-27 19:16:27 +00001# RUN: yaml2obj %s > %t
2# RUN: llvm-objcopy --weaken-symbol Global -W Local -W Weak %t %t2
Jordan Rupprecht298ea3f2019-01-11 18:06:31 +00003# RUN: llvm-readobj --symbols %t2 | FileCheck %s
Eugene Leviantef6eba22019-02-06 13:45:22 +00004# RUN: llvm-objcopy --regex --weaken-symbol='.*' %t %t3
Eugene Leviantf324f6d2019-02-06 11:00:07 +00005# RUN: cmp %t2 %t3
Eugene Leviante08fe352019-02-08 14:37:54 +00006# 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
Paul Semel3a8a56b2018-04-27 19:16:27 +000016
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 Local:
32 - Name: Local
33 Type: STT_FUNC
34 Section: .text
35 Value: 0x1000
36 Size: 8
37 Weak:
38 - Name: Weak
39 Type: STT_FUNC
40 Size: 8
41 Section: .text
42 Value: 0x1008
43 Global:
44 - Name: Global
45 Type: STT_FUNC
46 Size: 8
47 Section: .text
48 Value: 0x1010
49
50#CHECK: Symbols [
51#CHECK-NEXT: Symbol {
52#CHECK-NEXT: Name:
53#CHECK-NEXT: Value: 0x0
54#CHECK-NEXT: Size: 0
55#CHECK-NEXT: Binding: Local
56#CHECK-NEXT: Type: None
57#CHECK-NEXT: Other: 0
58#CHECK-NEXT: Section: Undefined
59#CHECK-NEXT: }
60#CHECK-NEXT: Symbol {
61#CHECK-NEXT: Name: Local
62#CHECK-NEXT: Value: 0x1000
63#CHECK-NEXT: Size: 8
64#CHECK-NEXT: Binding: Local
65#CHECK-NEXT: Type: Function
66#CHECK-NEXT: Other: 0
67#CHECK-NEXT: Section: .text
68#CHECK-NEXT: }
69#CHECK-NEXT: Symbol {
70#CHECK-NEXT: Name: Global
71#CHECK-NEXT: Value: 0x1010
72#CHECK-NEXT: Size: 8
73#CHECK-NEXT: Binding: Weak
74#CHECK-NEXT: Type: Function
75#CHECK-NEXT: Other: 0
76#CHECK-NEXT: Section: .text
77#CHECK-NEXT: }
78#CHECK-NEXT: Symbol {
79#CHECK-NEXT: Name: Weak
80#CHECK-NEXT: Value: 0x1008
81#CHECK-NEXT: Size: 8
82#CHECK-NEXT: Binding: Weak
83#CHECK-NEXT: Type: Function
84#CHECK-NEXT: Other: 0
85#CHECK-NEXT: Section: .text
86#CHECK-NEXT: }
87#CHECK-NEXT:]