|
6 | 6 | # RUN: llvm-readobj -r %t0.so | FileCheck %s --check-prefix=REL_DEF |
7 | 7 | # RUN: llvm-objdump -d %t0.so | FileCheck %s --check-prefix=ASM_DEF |
8 | 8 |
|
9 | | -## -Bsymbolic-functions makes all STB_GLOBAL STT_FUNC definitions non-preemptible. |
| 9 | +## -Bsymbolic-non-weak-functions makes all STB_GLOBAL STT_FUNC definitions non-preemptible. |
10 | 10 | # RUN: ld.lld -shared -Bsymbolic-non-weak-functions %t/a.o %t/b.o -o %t1.so |
11 | 11 | # RUN: llvm-readobj -r %t1.so | FileCheck %s --check-prefix=REL_GFUN |
12 | 12 | # RUN: llvm-objdump -d %t1.so | FileCheck %s --check-prefix=ASM_GFUN |
|
21 | 21 | # RUN: llvm-readobj -r %t3.so | FileCheck %s --check-prefix=REL_ALL |
22 | 22 | # RUN: llvm-objdump -d %t3.so | FileCheck %s --check-prefix=ASM_ALL |
23 | 23 |
|
| 24 | +## -Bsymbolic-non-weak makes all STB_GLOBAL definitions non-preemptible. |
| 25 | +# RUN: ld.lld -shared -Bsymbolic-non-weak %t/a.o %t/b.o -o %t4.so |
| 26 | +# RUN: llvm-readobj -r %t4.so | FileCheck %s --check-prefix=REL_GALL |
| 27 | +# RUN: llvm-objdump -d %t4.so | FileCheck %s --check-prefix=ASM_GALL |
| 28 | + |
24 | 29 | # RUN: ld.lld -shared -Bsymbolic-functions -Bsymbolic %t/a.o %t/b.o -o %t.so |
25 | 30 | # RUN: cmp %t.so %t3.so |
26 | 31 | # RUN: ld.lld -shared -Bsymbolic -Bsymbolic-functions %t/a.o %t/b.o -o %t.so |
|
37 | 42 | # REL_DEF: .rela.dyn { |
38 | 43 | # REL_DEF-NEXT: R_X86_64_RELATIVE - |
39 | 44 | # REL_DEF-NEXT: R_X86_64_RELATIVE - |
| 45 | +# REL_DEF-NEXT: R_X86_64_64 data_weak_default |
40 | 46 | # REL_DEF-NEXT: R_X86_64_64 data_default |
41 | 47 | # REL_DEF-NEXT: } |
42 | 48 | # REL_DEF-NEXT: .rela.plt { |
|
59 | 65 | # REL_GFUN: .rela.dyn { |
60 | 66 | # REL_GFUN-NEXT: R_X86_64_RELATIVE - |
61 | 67 | # REL_GFUN-NEXT: R_X86_64_RELATIVE - |
| 68 | +# REL_GFUN-NEXT: R_X86_64_64 data_weak_default |
62 | 69 | # REL_GFUN-NEXT: R_X86_64_64 data_default |
63 | 70 | # REL_GFUN-NEXT: } |
64 | 71 | # REL_GFUN-NEXT: .rela.plt { |
|
79 | 86 | # REL_FUN: .rela.dyn { |
80 | 87 | # REL_FUN-NEXT: R_X86_64_RELATIVE - |
81 | 88 | # REL_FUN-NEXT: R_X86_64_RELATIVE - |
| 89 | +# REL_FUN-NEXT: R_X86_64_64 data_weak_default |
82 | 90 | # REL_FUN-NEXT: R_X86_64_64 data_default |
83 | 91 | # REL_FUN-NEXT: } |
84 | 92 | # REL_FUN-NEXT: .rela.plt { |
|
99 | 107 | # REL_ALL-NEXT: R_X86_64_RELATIVE - |
100 | 108 | # REL_ALL-NEXT: R_X86_64_RELATIVE - |
101 | 109 | # REL_ALL-NEXT: R_X86_64_RELATIVE - |
| 110 | +# REL_ALL-NEXT: R_X86_64_RELATIVE - |
102 | 111 | # REL_ALL-NEXT: } |
103 | 112 | # REL_ALL-NEXT: .rela.plt { |
104 | 113 | # REL_ALL-NEXT: R_X86_64_JUMP_SLOT undef |
|
113 | 122 | # ASM_ALL-NEXT: callq {{.*}} <notype_default> |
114 | 123 | # ASM_ALL-NEXT: callq {{.*}} <undef@plt> |
115 | 124 |
|
| 125 | +# REL_GALL: .rela.dyn { |
| 126 | +# REL_GALL-NEXT: R_X86_64_RELATIVE - |
| 127 | +# REL_GALL-NEXT: R_X86_64_RELATIVE - |
| 128 | +# REL_GALL-NEXT: R_X86_64_RELATIVE - |
| 129 | +# REL_GALL-NEXT: R_X86_64_64 data_weak_default |
| 130 | +# REL_GALL-NEXT: } |
| 131 | +# REL_GALL-NEXT: .rela.plt { |
| 132 | +# REL_GALL-NEXT: R_X86_64_JUMP_SLOT weak_default |
| 133 | +# REL_GALL-NEXT: R_X86_64_JUMP_SLOT undef |
| 134 | +# REL_GALL-NEXT: } |
| 135 | + |
| 136 | +# ASM_GALL: <_start>: |
| 137 | +# ASM_GALL-NEXT: callq {{.*}} <default> |
| 138 | +# ASM_GALL-NEXT: callq {{.*}} <protected> |
| 139 | +# ASM_GALL-NEXT: callq {{.*}} <hidden> |
| 140 | +# ASM_GALL-NEXT: callq {{.*}} <weak_default@plt> |
| 141 | +# ASM_GALL-NEXT: callq {{.*}} <ext_default> |
| 142 | +# ASM_GALL-NEXT: callq {{.*}} <notype_default> |
| 143 | +# ASM_GALL-NEXT: callq {{.*}} <undef@plt> |
| 144 | + |
116 | 145 | #--- a.s |
117 | 146 | .globl default, protected, hidden, notype_default |
118 | 147 | .weak weak_default |
@@ -144,16 +173,20 @@ _start: |
144 | 173 |
|
145 | 174 | .data |
146 | 175 | .quad data_default |
| 176 | + .quad data_weak_default |
147 | 177 | .quad data_protected |
148 | 178 | .quad data_hidden |
149 | 179 |
|
150 | | -.globl data_default, data_protected, data_hidden |
| 180 | +.globl data_default, data_weak_default, data_protected, data_hidden |
| 181 | +.weak data_weak_default |
151 | 182 | .protected data_protected |
152 | 183 | .hidden data_hidden |
153 | 184 | .type data_default, @object |
| 185 | +.type data_weak_default, @object |
154 | 186 | .type data_protected, @object |
155 | 187 | .type data_hidden, @object |
156 | 188 | data_default: .byte 0 |
| 189 | +data_weak_default: .byte 0 |
157 | 190 | data_protected: .byte 0 |
158 | 191 | data_hidden: .byte 0 |
159 | 192 |
|
|
0 commit comments