Create implicit plt entries for R_X86_64_32S.
authorRafael Espindola <rafael.espindola@gmail.com>
Wed, 24 Feb 2016 16:37:47 +0000 (16:37 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Wed, 24 Feb 2016 16:37:47 +0000 (16:37 +0000)
llvm-svn: 261749

lld/ELF/Target.cpp
lld/test/ELF/Inputs/shared.s
lld/test/ELF/relocation.s

index ef8ddcc..897de8c 100644 (file)
@@ -718,6 +718,7 @@ TargetInfo::PltNeed X86_64TargetInfo::needsPlt(uint32_t Type,
   default:
     return Plt_No;
   case R_X86_64_32:
+  case R_X86_64_32S:
   case R_X86_64_64:
   case R_X86_64_PC32:
     // This relocation is defined to have a value of (S + A - P).
index 1cfebbf..c3c22fe 100644 (file)
@@ -2,5 +2,9 @@
 .type bar, @function
 bar:
 
+.global bar2
+.type bar2, @function
+bar2:
+
 .global zed
 zed:
index 33b0e23..aa58040 100644 (file)
@@ -14,7 +14,7 @@
 // SEC-NEXT: ]
 // SEC-NEXT: Address: 0x11030
 // SEC-NEXT: Offset: 0x1030
-// SEC-NEXT: Size: 32
+// SEC-NEXT: Size: 48
 
 // SEC:         Name: .got
 // SEC-NEXT:   Type: SHT_PROGBITS
@@ -39,7 +39,7 @@
 // SEC-NEXT:   ]
 // SEC-NEXT:   Address: 0x13000
 // SEC-NEXT:   Offset: 0x3000
-// SEC-NEXT:   Size: 32
+// SEC-NEXT:   Size: 40
 // SEC-NEXT:   Link: 0
 // SEC-NEXT:   Info: 0
 // SEC-NEXT:   AddressAlignment: 8
@@ -98,6 +98,15 @@ R_X86_64_PC32:
 // CHECK-NEXT:  11017:   {{.*}}  callq  36
 // CHECK-NEXT:  1101c:   {{.*}}  movl $69696, %eax
 
+.section .R_X86_64_32S_2,"ax",@progbits
+.global R_X86_64_32S_2
+R_X86_64_32S_2:
+  mov bar2, %eax
+// plt is  at 0x11030. The second plt entry is at 0x11050 == 69712
+// CHECK:      Disassembly of section .R_X86_64_32S_2:
+// CHECK-NEXT: R_X86_64_32S_2:
+// CHECK-NEXT: 11021: {{.*}}  movl    69712, %eax
+
 .section .R_X86_64_64,"a",@progbits
 .global R_X86_64_64
 R_X86_64_64: