[lld] d1014d9 - [ELF] Improve test for copy relocations on aliases

Fangrui Song via llvm-commits llvm-commits at lists.llvm.org
Mon Dec 13 20:04:29 PST 2021


Author: Fangrui Song
Date: 2021-12-13T20:04:24-08:00
New Revision: d1014d9e6d98c11356861d69199d7bacab45e609

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

LOG: [ELF] Improve test for copy relocations on aliases

Added: 
    lld/test/ELF/copy-rel-alias.s

Modified: 
    

Removed: 
    lld/test/ELF/Inputs/copy-rel.s
    lld/test/ELF/copy-rel.s
    lld/test/ELF/relocation-copy-alias.s


################################################################################
diff  --git a/lld/test/ELF/Inputs/copy-rel.s b/lld/test/ELF/Inputs/copy-rel.s
deleted file mode 100644
index bcfc7a58a33f4..0000000000000
--- a/lld/test/ELF/Inputs/copy-rel.s
+++ /dev/null
@@ -1,11 +0,0 @@
-.globl foo
-.type foo, @object
-.size foo, 4
-foo:
-.long 1
-
-.weak bar
-.type bar, @object
-.size bar, 4
-bar:
-.long 2

diff  --git a/lld/test/ELF/copy-rel-alias.s b/lld/test/ELF/copy-rel-alias.s
new file mode 100644
index 0000000000000..08b7aed6a9228
--- /dev/null
+++ b/lld/test/ELF/copy-rel-alias.s
@@ -0,0 +1,60 @@
+# REQUIRES: x86
+# RUN: rm -rf %t && split-file %s %t
+# RUN: llvm-mc -filetype=obj -triple=x86_64 %t/1.s -o %t/1.o
+# RUN: llvm-mc -filetype=obj -triple=x86_64 %t/2.s -o %t/2.o
+# RUN: ld.lld -shared -soname=t2 %t/2.o -o %t/2.so
+# RUN: ld.lld %t/1.o %t/2.so -o %t/1
+# RUN: llvm-readelf -S -r --dyn-syms %t/1 | FileCheck %s
+# RUN: ld.lld --gc-sections -pie %t/1.o %t/2.so -o %t/1
+# RUN: llvm-readelf -S -r --dyn-syms %t/1 | FileCheck %s
+
+# CHECK: [[#BSS:]]] .bss
+
+# CHECK:      R_X86_64_COPY     [[#%x,]] a1 + 0
+# CHECK-NEXT: R_X86_64_GLOB_DAT [[#%x,]] b1 + 0
+# CHECK-NEXT: R_X86_64_COPY     [[#%x,]] b1 + 0
+# CHECK-NEXT: R_X86_64_GLOB_DAT [[#%x,]] a2 + 0
+
+# CHECK:         Value        Size Type    Bind   Vis     Ndx      Name
+# CHECK:      [[#%x,ADDR:]]      1 OBJECT  GLOBAL DEFAULT [[#BSS]] a1
+# CHECK-NEXT: {{0*}}[[#ADDR+1]]  1 OBJECT  WEAK   DEFAULT [[#BSS]] b1
+# CHECK-NEXT: {{0*}}[[#ADDR+1]]  1 OBJECT  GLOBAL DEFAULT [[#BSS]] b2
+# CHECK-NEXT: {{0*}}[[#ADDR]]    1 OBJECT  WEAK   DEFAULT [[#BSS]] a2
+# CHECK-NEXT: {{0*}}[[#ADDR+1]]  1 OBJECT  GLOBAL DEFAULT [[#BSS]] b3
+
+#--- 1.s
+.global _start
+_start:
+movl $5, a1
+mov $b1 - ., %eax
+mov $b2 - ., %eax
+
+## Test that a copy relocated alias may have GOT entry.
+.weak a2, b1
+movq a2 at gotpcrel(%rip), %rax
+movq b1 at gotpcrel(%rip), %rcx
+
+#--- 2.s
+.data
+
+.globl a1, b3
+.weak a2, b1, b2
+
+.type a1, @object
+.type a2, @object
+a1:
+a2:
+.byte 1
+.size a1, 1
+.size a2, 1
+
+.type b1, @object
+.type b2, @object
+.type b3, @object
+b1:
+b2:
+b3:
+.byte 2
+.size b1, 1
+.size b2, 1
+.size b3, 1

diff  --git a/lld/test/ELF/copy-rel.s b/lld/test/ELF/copy-rel.s
deleted file mode 100644
index 7a957d2c290c2..0000000000000
--- a/lld/test/ELF/copy-rel.s
+++ /dev/null
@@ -1,25 +0,0 @@
-# REQUIRES: x86
-
-## Test copy relocations can be created for -no-pie and -pie.
-
-# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.o
-# RUN: llvm-mc -filetype=obj -triple=x86_64 %p/Inputs/copy-rel.s -o %t1.o
-# RUN: ld.lld %t1.o -o %t1.so -shared -soname=so
-
-# RUN: ld.lld %t.o %t1.so -o %t
-# RUN: llvm-readobj -r %t | FileCheck %s
-
-# RUN: ld.lld %t.o %t1.so -o %t -pie
-# RUN: llvm-readobj -r %t | FileCheck %s
-
-# CHECK:      Relocations [
-# CHECK-NEXT:   .rela.dyn {
-# CHECK-NEXT:     R_X86_64_COPY foo 0x0
-# CHECK-NEXT:     R_X86_64_COPY bar 0x0
-# CHECK-NEXT:   }
-# CHECK-NEXT: ]
-
-.global _start
-_start:
-  mov $foo - ., %eax
-  movabs $bar, %rax

diff  --git a/lld/test/ELF/relocation-copy-alias.s b/lld/test/ELF/relocation-copy-alias.s
deleted file mode 100644
index f2251bbeefc25..0000000000000
--- a/lld/test/ELF/relocation-copy-alias.s
+++ /dev/null
@@ -1,69 +0,0 @@
-// REQUIRES: x86
-// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
-// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %p/Inputs/relocation-copy-alias.s -o %t2.o
-// RUN: ld.lld --hash-style=sysv -shared %t2.o -o %t.so
-// RUN: ld.lld --hash-style=sysv %t.o %t.so -o %t3
-// RUN: llvm-readobj --dyn-symbols -r --expand-relocs %t3 | FileCheck %s
-// RUN: ld.lld --hash-style=sysv --gc-sections %t.o %t.so -o %t3
-// RUN: llvm-readobj --dyn-symbols -r --expand-relocs %t3 | FileCheck %s
-
-.global _start
-_start:
-movl $5, a1
-movl $5, b1
-movl $5, b2
-
-// CHECK:      .rela.dyn {
-// CHECK-NEXT:   Relocation {
-// CHECK-NEXT:     Offset:
-// CHECK-NEXT:     Type: R_X86_64_COPY
-// CHECK-NEXT:     Symbol: a1
-// CHECK-NEXT:     Addend: 0x0
-// CHECK-NEXT:   }
-// CHECK-NEXT:   Relocation {
-// CHECK-NEXT:     Offset:
-// CHECK-NEXT:     Type: R_X86_64_COPY
-// CHECK-NEXT:     Symbol: b1
-// CHECK-NEXT:     Addend: 0x0
-// CHECK-NEXT:   }
-// CHECK-NEXT: }
-
-// CHECK:      Name: a1
-// CHECK-NEXT: Value: [[A:.*]]
-// CHECK-NEXT: Size: 1
-// CHECK-NEXT: Binding: Global (0x1)
-// CHECK-NEXT: Type: Object (0x1)
-// CHECK-NEXT: Other: 0
-// CHECK-NEXT: Section: .bss (0x7)
-
-// CHECK:      Name: b1
-// CHECK-NEXT: Value: [[B:.*]]
-// CHECK-NEXT: Size: 1
-// CHECK-NEXT: Binding: Global
-// CHECK-NEXT: Type: Object (0x1)
-// CHECK-NEXT: Other: 0
-// CHECK-NEXT: Section: .bss
-
-// CHECK:      Name: b2
-// CHECK-NEXT: Value: [[B]]
-// CHECK-NEXT: Size: 1
-// CHECK-NEXT: Binding: Global
-// CHECK-NEXT: Type: Object (0x1)
-// CHECK-NEXT: Other: 0
-// CHECK-NEXT: Section: .bss
-
-// CHECK:      Name: a2
-// CHECK-NEXT: Value: [[A]]
-// CHECK-NEXT: Size: 1
-// CHECK-NEXT: Binding: Weak
-// CHECK-NEXT: Type: Object (0x1)
-// CHECK-NEXT: Other: 0
-// CHECK-NEXT: Section: .bss
-
-// CHECK:      Name: b3
-// CHECK-NEXT: Value: [[B]]
-// CHECK-NEXT: Size: 1
-// CHECK-NEXT: Binding: Global
-// CHECK-NEXT: Type: Object (0x1)
-// CHECK-NEXT: Other: 0
-// CHECK-NEXT: Section: .bss


        


More information about the llvm-commits mailing list