[llvm] fe9f2ac - [test] Reorganize some R_X86_64_ tests

Fangrui Song via llvm-commits llvm-commits at lists.llvm.org
Sat Dec 14 22:12:03 PST 2024


Author: Fangrui Song
Date: 2024-12-14T22:11:58-08:00
New Revision: fe9f2ac8e763d35bf7dea34063b18865ca26a781

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

LOG: [test] Reorganize some R_X86_64_ tests

Added: 
    llvm/test/MC/X86/elf-reloc-got.s
    llvm/test/MC/X86/elf-reloc-size.s
    llvm/test/MC/X86/elf-reloc-tls.s

Modified: 
    llvm/test/MC/ELF/relocation.s

Removed: 
    


################################################################################
diff  --git a/llvm/test/MC/ELF/relocation.s b/llvm/test/MC/ELF/relocation.s
index 65a9b6f72d0aa8..618b5c7183c22c 100644
--- a/llvm/test/MC/ELF/relocation.s
+++ b/llvm/test/MC/ELF/relocation.s
@@ -18,30 +18,12 @@ bar:
         movl	bar, %edx         # R_X86_64_32S
         movq	bar, %rdx         # R_X86_64_32S
 .long bar                         # R_X86_64_32
-        leaq	foo at GOTTPOFF(%rip), %rax # R_X86_64_GOTTPOFF
-        movq    foo at GOTTPOFF(%rip), %r31 # R_X86_64_CODE_4_GOTTPOFF
-        addq    foo at GOTTPOFF(%rip), %r31 # R_X86_64_CODE_4_GOTTPOFF
-        # NDD
-        addq %r8, foo at GOTTPOFF(%rip), %r16 # R_X86_64_CODE_6_GOTTPOFF
-        addq foo at GOTTPOFF(%rip), %rax, %r12 # R_X86_64_CODE_6_GOTTPOFF
-        # NDD + NF
-        {nf} addq %r8, foo at GOTTPOFF(%rip), %r16 # R_X86_64_CODE_6_GOTTPOFF
-        {nf} addq foo at GOTTPOFF(%rip), %rax, %r12 # R_X86_64_CODE_6_GOTTPOFF
-        # NF
-        {nf} addq foo at GOTTPOFF(%rip), %r12 # R_X86_64_CODE_6_GOTTPOFF
-
-        leaq	foo at TLSGD(%rip), %rax    # R_X86_64_TLSGD
-        leaq	foo at TPOFF(%rax), %rax    # R_X86_64_TPOFF32
-        leaq	foo at TLSLD(%rip), %rdi    # R_X86_64_TLSLD
-        leaq	foo at dtpoff(%rax), %rcx   # R_X86_64_DTPOFF32
-        movabs  foo at GOT, %rax		 # R_X86_64_GOT64
-        movabs  foo at GOTOFF, %rax	 # R_X86_64_GOTOFF64
+        movabs  $0, %rax
+        movabs  $0, %rax
         pushq    $bar
         movq	foo(%rip), %rdx
         leaq    foo-bar(%r14),%r14
         addq	$bar,%rax         # R_X86_64_32S
-	.quad	foo at DTPOFF
-        movabsq	$baz at TPOFF, %rax
 	.word   foo-bar
 	.byte   foo-bar
 	call foo
@@ -53,13 +35,6 @@ bar:
         movl  $_GLOBAL_OFFSET_TABLE_, %eax
         movabs  $_GLOBAL_OFFSET_TABLE_, %rax
 
-        .quad    blah at SIZE                        # R_X86_64_SIZE64
-        .quad    blah at SIZE + 32                   # R_X86_64_SIZE64
-        .quad    blah at SIZE - 32                   # R_X86_64_SIZE64
-         movl    blah at SIZE, %eax                  # R_X86_64_SIZE32
-         movl    blah at SIZE + 32, %eax             # R_X86_64_SIZE32
-         movl    blah at SIZE - 32, %eax             # R_X86_64_SIZE32
-
         .long   foo at gotpcrel
         .long foo at plt
 
@@ -81,51 +56,29 @@ weak_sym:
 // CHECK:        Section {
 // CHECK:          Name: .rela.text
 // CHECK:          Relocations [
-// CHECK-NEXT:       0x1 R_X86_64_32        .text
-// CHECK-NEXT:       0x8 R_X86_64_32S       .text
-// CHECK-NEXT:       0x13 R_X86_64_32S      .text
-// CHECK-NEXT:       0x1A R_X86_64_32S      .text
-// CHECK-NEXT:       0x22 R_X86_64_32S      .text
-// CHECK-NEXT:       0x26 R_X86_64_32       .text
-// CHECK-NEXT:       0x2D R_X86_64_GOTTPOFF foo 0xFFFFFFFFFFFFFFFC
-// CHECK-NEXT:       0x35 R_X86_64_CODE_4_GOTTPOFF foo 0xFFFFFFFFFFFFFFFC
-// CHECK-NEXT:       0x3D R_X86_64_CODE_4_GOTTPOFF foo 0xFFFFFFFFFFFFFFFC
-// CHECK-NEXT:       0x47 R_X86_64_CODE_6_GOTTPOFF foo 0xFFFFFFFFFFFFFFFC
-// CHECK-NEXT:       0x51 R_X86_64_CODE_6_GOTTPOFF foo 0xFFFFFFFFFFFFFFFC
-// CHECK-NEXT:       0x5B R_X86_64_CODE_6_GOTTPOFF foo 0xFFFFFFFFFFFFFFFC
-// CHECK-NEXT:       0x65 R_X86_64_CODE_6_GOTTPOFF foo 0xFFFFFFFFFFFFFFFC
-// CHECK-NEXT:       0x6F R_X86_64_CODE_6_GOTTPOFF foo 0xFFFFFFFFFFFFFFFC
-// CHECK-NEXT:       0x76 R_X86_64_TLSGD    foo 0xFFFFFFFFFFFFFFFC
-// CHECK-NEXT:       0x7D R_X86_64_TPOFF32  foo 0x0
-// CHECK-NEXT:       0x84 R_X86_64_TLSLD    foo 0xFFFFFFFFFFFFFFFC
-// CHECK-NEXT:       0x8B R_X86_64_DTPOFF32 foo 0x0
-// CHECK-NEXT:       0x91 R_X86_64_GOT64 foo 0x0
-// CHECK-NEXT:       0x9B R_X86_64_GOTOFF64 foo 0x0
-// CHECK-NEXT:       0xA4 R_X86_64_32S .text 0x0
-// CHECK-NEXT:       0xAB R_X86_64_PC32 foo 0xFFFFFFFFFFFFFFFC
-// CHECK-NEXT:       0xB2 R_X86_64_PC32 foo 0xB2
-// CHECK-NEXT:       0xB9 R_X86_64_32S .text 0x0
-// CHECK-NEXT:       0xBD R_X86_64_DTPOFF64 foo 0x0
-// CHECK-NEXT:       0xC7 R_X86_64_TPOFF64 baz 0x0
-// CHECK-NEXT:       0xCF R_X86_64_PC16 foo 0xCF
-// CHECK-NEXT:       0xD1 R_X86_64_PC8 foo 0xD1
-// CHECK-NEXT:       0xD3 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
-// CHECK-NEXT:       0xDA R_X86_64_PC32 foo 0xFFFFFFFFFFFFFFFB
-// CHECK-NEXT:       0xE1 R_X86_64_GOTPC32 _GLOBAL_OFFSET_TABLE_ 0x3
-// CHECK-NEXT:       0xE8 R_X86_64_GOTPC32 _GLOBAL_OFFSET_TABLE_ 0xFFFFFFFFFFFFFFFC
-// CHECK-NEXT:       0xED R_X86_64_GOTPC32 _GLOBAL_OFFSET_TABLE_ 0x1
-// CHECK-NEXT:       0xF3 R_X86_64_GOTPC64 _GLOBAL_OFFSET_TABLE_ 0x2
-// CHECK-NEXT:       0xFB R_X86_64_SIZE64 blah 0x0
-// CHECK-NEXT:       0x103 R_X86_64_SIZE64 blah 0x20
-// CHECK-NEXT:       0x10B R_X86_64_SIZE64 blah 0xFFFFFFFFFFFFFFE0
-// CHECK-NEXT:       0x116 R_X86_64_SIZE32 blah 0x0
-// CHECK-NEXT:       0x11D R_X86_64_SIZE32 blah 0x20
-// CHECK-NEXT:       0x124 R_X86_64_SIZE32 blah 0xFFFFFFFFFFFFFFE0
-// CHECK-NEXT:       0x128 R_X86_64_GOTPCREL foo 0x0
-// CHECK-NEXT:       0x12C R_X86_64_PLT32 foo 0x0
-// CHECK-NEXT:       0x140 R_X86_64_32 .text 0x140
-// CHECK-NEXT:       0x145 R_X86_64_PC16 pr23771 0xFFFFFFFFFFFFFFFE
-// CHECK-NEXT:       0x147 R_X86_64_PC32 pr23272 0x0
+// CHECK-NEXT:       0x1 R_X86_64_32 .text 0x0
+// CHECK-NEXT:       0x8 R_X86_64_32S .text 0x0
+// CHECK-NEXT:       0x13 R_X86_64_32S .text 0x0
+// CHECK-NEXT:       0x1A R_X86_64_32S .text 0x0
+// CHECK-NEXT:       0x22 R_X86_64_32S .text 0x0
+// CHECK-NEXT:       0x26 R_X86_64_32 .text 0x0
+// CHECK-NEXT:       0x3F R_X86_64_32S .text 0x0
+// CHECK-NEXT:       0x46 R_X86_64_PC32 foo 0xFFFFFFFFFFFFFFFC
+// CHECK-NEXT:       0x4D R_X86_64_PC32 foo 0x4D
+// CHECK-NEXT:       0x54 R_X86_64_32S .text 0x0
+// CHECK-NEXT:       0x58 R_X86_64_PC16 foo 0x58
+// CHECK-NEXT:       0x5A R_X86_64_PC8 foo 0x5A
+// CHECK-NEXT:       0x5C R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
+// CHECK-NEXT:       0x63 R_X86_64_PC32 foo 0xFFFFFFFFFFFFFFFB
+// CHECK-NEXT:       0x6A R_X86_64_GOTPC32 _GLOBAL_OFFSET_TABLE_ 0x3
+// CHECK-NEXT:       0x71 R_X86_64_GOTPC32 _GLOBAL_OFFSET_TABLE_ 0xFFFFFFFFFFFFFFFC
+// CHECK-NEXT:       0x76 R_X86_64_GOTPC32 _GLOBAL_OFFSET_TABLE_ 0x1
+// CHECK-NEXT:       0x7C R_X86_64_GOTPC64 _GLOBAL_OFFSET_TABLE_ 0x2
+// CHECK-NEXT:       0x84 R_X86_64_GOTPCREL foo 0x0
+// CHECK-NEXT:       0x88 R_X86_64_PLT32 foo 0x0
+// CHECK-NEXT:       0x9C R_X86_64_32 .text 0x9C
+// CHECK-NEXT:       0xA1 R_X86_64_PC16 pr23771 0xFFFFFFFFFFFFFFFE
+// CHECK-NEXT:       0xA3 R_X86_64_PC32 pr23272 0x0
 // CHECK-NEXT:     ]
 // CHECK-NEXT:   }
 

diff  --git a/llvm/test/MC/X86/elf-reloc-got.s b/llvm/test/MC/X86/elf-reloc-got.s
new file mode 100644
index 00000000000000..eab24a0ac4a66a
--- /dev/null
+++ b/llvm/test/MC/X86/elf-reloc-got.s
@@ -0,0 +1,13 @@
+# RUN: llvm-mc -filetype=obj -triple=x86_64 %s | llvm-readobj -r  - | FileCheck  %s
+
+# CHECK:      .rela.GOT64 {
+# CHECK-NEXT:   0x2 R_X86_64_GOT64 dat 0x0
+# CHECK-NEXT:   0xC R_X86_64_GOT64 und 0x0
+# CHECK-NEXT: }
+
+.section .GOT64,"ax"
+movabs $dat at GOT, %rax
+movabs $und at GOT, %rax
+
+.data
+dat:

diff  --git a/llvm/test/MC/X86/elf-reloc-size.s b/llvm/test/MC/X86/elf-reloc-size.s
new file mode 100644
index 00000000000000..d51b2d54f7e7e5
--- /dev/null
+++ b/llvm/test/MC/X86/elf-reloc-size.s
@@ -0,0 +1,22 @@
+# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t
+# RUN: llvm-readobj -r %t | FileCheck %s
+
+# CHECK:      .rela.text {
+# CHECK-NEXT:   0x3 R_X86_64_SIZE32 foo 0x0
+# CHECK-NEXT:   0xA R_X86_64_SIZE32 foo 0x20
+# CHECK-NEXT:   0x11 R_X86_64_SIZE32 foo 0xFFFFFFFFFFFFFFE0
+# CHECK-NEXT: }
+# CHECK-NEXT: .rela.data {
+# CHECK-NEXT:   0x0 R_X86_64_SIZE64 foo 0x0
+# CHECK-NEXT:   0x8 R_X86_64_SIZE64 foo 0x20
+# CHECK-NEXT:   0x10 R_X86_64_SIZE64 foo 0xFFFFFFFFFFFFFFE0
+# CHECK-NEXT: }
+
+movl foo at SIZE, %eax
+movl foo at SIZE+32, %eax
+movl foo at SIZE-32, %eax
+
+.data
+.quad foo at SIZE
+.quad foo at SIZE + 32
+.quad foo at SIZE - 32

diff  --git a/llvm/test/MC/X86/elf-reloc-tls.s b/llvm/test/MC/X86/elf-reloc-tls.s
new file mode 100644
index 00000000000000..20904358593123
--- /dev/null
+++ b/llvm/test/MC/X86/elf-reloc-tls.s
@@ -0,0 +1,37 @@
+# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t
+# RUN: llvm-readobj -r %t | FileCheck %s
+
+# CHECK:      .rela.GOTTPOFF {
+# CHECK-NEXT:   0x3 R_X86_64_GOTTPOFF tls 0xFFFFFFFFFFFFFFFC
+# CHECK-NEXT:   0xB R_X86_64_CODE_4_GOTTPOFF foo 0xFFFFFFFFFFFFFFFC
+# CHECK-NEXT:   0x13 R_X86_64_CODE_4_GOTTPOFF foo 0xFFFFFFFFFFFFFFFC
+# CHECK-NEXT:   0x1D R_X86_64_CODE_6_GOTTPOFF foo 0xFFFFFFFFFFFFFFFC
+# CHECK-NEXT:   0x27 R_X86_64_CODE_6_GOTTPOFF foo 0xFFFFFFFFFFFFFFFC
+# CHECK-NEXT:   0x31 R_X86_64_CODE_6_GOTTPOFF foo 0xFFFFFFFFFFFFFFFC
+# CHECK-NEXT:   0x3B R_X86_64_CODE_6_GOTTPOFF foo 0xFFFFFFFFFFFFFFFC
+# CHECK-NEXT:   0x45 R_X86_64_CODE_6_GOTTPOFF foo 0xFFFFFFFFFFFFFFFC
+# CHECK-NEXT: }
+
+.section .TPOFF,"ax"
+leaq	foo at TPOFF(%rax), %rax    # R_X86_64_TPOFF32
+movabsq	$baz at TPOFF, %rax
+
+.section .GOTTPOFF,"ax"
+leaq tls at GOTTPOFF(%rip), %rax
+
+movq    foo at GOTTPOFF(%rip), %r31 # R_X86_64_CODE_4_GOTTPOFF
+addq    foo at GOTTPOFF(%rip), %r31 # R_X86_64_CODE_4_GOTTPOFF
+# NDD
+addq %r8, foo at GOTTPOFF(%rip), %r16 # R_X86_64_CODE_6_GOTTPOFF
+addq foo at GOTTPOFF(%rip), %rax, %r12 # R_X86_64_CODE_6_GOTTPOFF
+# NDD + NF
+{nf} addq %r8, foo at GOTTPOFF(%rip), %r16 # R_X86_64_CODE_6_GOTTPOFF
+{nf} addq foo at GOTTPOFF(%rip), %rax, %r12 # R_X86_64_CODE_6_GOTTPOFF
+# NF
+{nf} addq foo at GOTTPOFF(%rip), %r12 # R_X86_64_CODE_6_GOTTPOFF
+
+.section .GD,"ax"
+leaq	foo at TLSGD(%rip), %rax    # R_X86_64_TLSGD
+leaq	foo at TLSLD(%rip), %rdi    # R_X86_64_TLSLD
+leaq	foo at dtpoff(%rax), %rcx   # R_X86_64_DTPOFF32
+.quad	foo at DTPOFF


        


More information about the llvm-commits mailing list