[lld] 3510c48 - [ELF] Improve .o preempting DSO tests

Fangrui Song via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 15 23:43:04 PST 2023


Author: Fangrui Song
Date: 2023-11-15T23:42:59-08:00
New Revision: 3510c48ad58bbfd39746ab73280c3da20d1ee9c8

URL: https://github.com/llvm/llvm-project/commit/3510c48ad58bbfd39746ab73280c3da20d1ee9c8
DIFF: https://github.com/llvm/llvm-project/commit/3510c48ad58bbfd39746ab73280c3da20d1ee9c8.diff

LOG: [ELF] Improve .o preempting DSO tests

The new RUN line `ld.lld --version-script=a.ver b.so a.o -o a1`
`c3` would be able to caught `replaceWithDefined` bug in
commit 667ea2ca408bbfb29f6d138b6c758542e329b2c5 (#72208).

Added: 
    

Modified: 
    lld/test/ELF/obj-preempt-dso.s

Removed: 
    


################################################################################
diff  --git a/lld/test/ELF/obj-preempt-dso.s b/lld/test/ELF/obj-preempt-dso.s
index 3a262fa53fbe39c..76037629176c11e 100644
--- a/lld/test/ELF/obj-preempt-dso.s
+++ b/lld/test/ELF/obj-preempt-dso.s
@@ -3,27 +3,33 @@
 # RUN: llvm-mc -filetype=obj -triple=x86_64 a.s -o a.o
 # RUN: llvm-mc -filetype=obj -triple=x86_64 b.s -o b.o
 # RUN: ld.lld -shared --version-script=b.ver b.o -o b.so
-# RUN: ld.lld --version-script=a.ver a.o b.so -o a
-# RUN: llvm-readelf --dyn-syms a | FileCheck %s
+# RUN: ld.lld --version-script=a.ver a.o b.so -o a0
+# RUN: llvm-nm -D a0 | FileCheck %s
+# RUN: ld.lld --version-script=a.ver b.so a.o -o a1
+# RUN: llvm-nm -D a1 | FileCheck %s
 
-# CHECK:      1: 0000000000000000 0 NOTYPE  GLOBAL DEFAULT   UND b2
-# CHECK-NEXT: 2: {{.*}}           0 NOTYPE  GLOBAL DEFAULT [[#]] a1
-# CHECK-NEXT: 3: {{.*}}           0 NOTYPE  GLOBAL DEFAULT [[#]] a2
-# CHECK-NEXT: 4: {{.*}}           0 NOTYPE  GLOBAL DEFAULT [[#]] b1
-# CHECK-NEXT: 5: {{.*}}           0 NOTYPE  GLOBAL DEFAULT [[#]] c2@@v2
-# CHECK-NEXT: 6: {{.*}}           0 NOTYPE  GLOBAL DEFAULT [[#]] c1 at v1
+# CHECK:      T a1{{$}}
+# CHECK-NEXT: T a2{{$}}
+# CHECK-NEXT: T b1{{$}}
+# CHECK-NEXT: U b2{{$}}
+# CHECK-NEXT: T c1 at v1
+# CHECK-NEXT: T c2@@v2
+# CHECK-NEXT: T c3{{$}}
+# CHECK-NEXT: T c4@@v3
 # CHECK-NOT:  {{.}}
 
 #--- a.s
-.globl _start, a1, a2, a3, b1, c1, c2
+.globl _start, a1, a2, a3, b1, c1, c2, c3, c4
 _start:
-a1: a2:
+a1: a2: ## defined in b.so and a
 .hidden a3
-a3:
-b1:
+a3: ## defined in b.so; hidden in a
+b1: ## protected in b.so; defined in a
 .symver c1, c1 at v1, remove
-c1:
-c2:
+c1: ## non-default version in b.so and a
+c2: ## default version in b.so and a
+c3: ## default version in b.so; unversioned in a
+c4: ## default version in b.so; another version in a
 
 .data
   .quad b2
@@ -31,9 +37,10 @@ c2:
 #--- a.ver
 v1 {};
 v2 { c2; };
+v3 { c4; };
 
 #--- b.s
-.globl a1, a2, a3, b1, b2, c1, c2
+.globl a1, a2, a3, b1, b2, c1, c2, c3, c4
 .type a1, at function
 a1: a2: a3:
 .protected b1, b2
@@ -42,7 +49,9 @@ b2:
 .symver c1, c1 at v1
 c1:
 c2:
+c3:
+c4:
 
 #--- b.ver
 v1 {};
-v2 { c2; };
+v2 { c2; c3; c4; };


        


More information about the llvm-commits mailing list