blob: 09f2476e0b2658df33740fa55d0e4e5c7ffc0768 [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:
George Rimar6da44ad2019-04-03 14:53:42 +000031 - 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
Paul Semel3a8a56b2018-04-27 19:16:27 +000048
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:]