[lld] r272377 - [ELF] - Inform user that we do not support dynamic relocations against text segment.

George Rimar via llvm-commits llvm-commits at lists.llvm.org
Fri Jun 10 01:00:02 PDT 2016


Author: grimar
Date: Fri Jun 10 03:00:01 2016
New Revision: 272377

URL: http://llvm.org/viewvc/llvm-project?rev=272377&view=rev
Log:
[ELF] - Inform user that we do not support dynamic relocations against text segment.

It was reported in PR28020, that lld does not link code which
gold do. But in fact that is expected behavior as we do not
support DT_TEXTREL.

This patch changes error message as it can report about relocations against
text segments exclusively, other dynamic relocations errors can 
be handled separately.

Differential revision: http://reviews.llvm.org/D21133

Modified:
    lld/trunk/ELF/Relocations.cpp
    lld/trunk/test/ELF/aarch64-fpic-add_abs_lo12_nc.s
    lld/trunk/test/ELF/aarch64-fpic-adr_prel_lo21.s
    lld/trunk/test/ELF/aarch64-fpic-adr_prel_pg_hi21.s
    lld/trunk/test/ELF/aarch64-fpic-ldst32_abs_lo12_nc.s
    lld/trunk/test/ELF/aarch64-fpic-ldst64_abs_lo12_nc.s
    lld/trunk/test/ELF/aarch64-fpic-ldst8_abs_lo12_nc.s
    lld/trunk/test/ELF/copy-in-shared.s
    lld/trunk/test/ELF/copy-rel-pie-error.s
    lld/trunk/test/ELF/dynamic-reloc-in-ro.s
    lld/trunk/test/ELF/eh-frame-dyn-rel.s
    lld/trunk/test/ELF/x86-64-reloc-32-fpic.s
    lld/trunk/test/ELF/x86-64-reloc-pc32-fpic.s

Modified: lld/trunk/ELF/Relocations.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Relocations.cpp?rev=272377&r1=272376&r2=272377&view=diff
==============================================================================
--- lld/trunk/ELF/Relocations.cpp (original)
+++ lld/trunk/ELF/Relocations.cpp Fri Jun 10 03:00:01 2016
@@ -401,8 +401,8 @@ static RelExpr adjustExpr(const elf::Obj
   // only memory. We can hack around it if we are producing an executable and
   // the refered symbol can be preemepted to refer to the executable.
   if (Config->Shared || (Config->Pic && !isRelExpr(Expr))) {
-    error("relocation " + getRelName(Type) +
-          " cannot be used when making a shared object; recompile with -fPIC.");
+    error("can't create dynamic relocation " + getRelName(Type) +
+          " against readonly segment");
     return Expr;
   }
   if (Body.getVisibility() != STV_DEFAULT) {

Modified: lld/trunk/test/ELF/aarch64-fpic-add_abs_lo12_nc.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/aarch64-fpic-add_abs_lo12_nc.s?rev=272377&r1=272376&r2=272377&view=diff
==============================================================================
--- lld/trunk/test/ELF/aarch64-fpic-add_abs_lo12_nc.s (original)
+++ lld/trunk/test/ELF/aarch64-fpic-add_abs_lo12_nc.s Fri Jun 10 03:00:01 2016
@@ -1,7 +1,7 @@
 // REQUIRES: aarch64
 // RUN: llvm-mc -filetype=obj -triple=aarch64-none-freebsd %s -o %t.o
 // RUN: not ld.lld -shared %t.o -o %t.so 2>&1 | FileCheck %s
-// CHECK: relocation R_AARCH64_ADD_ABS_LO12_NC cannot be used when making a shared object; recompile with -fPIC.
+// CHECK: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against readonly segment
 
   add x0, x0, :lo12:dat
 .data

Modified: lld/trunk/test/ELF/aarch64-fpic-adr_prel_lo21.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/aarch64-fpic-adr_prel_lo21.s?rev=272377&r1=272376&r2=272377&view=diff
==============================================================================
--- lld/trunk/test/ELF/aarch64-fpic-adr_prel_lo21.s (original)
+++ lld/trunk/test/ELF/aarch64-fpic-adr_prel_lo21.s Fri Jun 10 03:00:01 2016
@@ -1,7 +1,7 @@
 // REQUIRES: aarch64
 // RUN: llvm-mc -filetype=obj -triple=aarch64-none-freebsd %s -o %t.o
 // RUN: not ld.lld -shared %t.o -o %t.so 2>&1 | FileCheck %s
-// CHECK: relocation R_AARCH64_ADR_PREL_LO21 cannot be used when making a shared object; recompile with -fPIC.
+// CHECK: can't create dynamic relocation R_AARCH64_ADR_PREL_LO21 against readonly segment
 
   adr x0, dat
 .data

Modified: lld/trunk/test/ELF/aarch64-fpic-adr_prel_pg_hi21.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/aarch64-fpic-adr_prel_pg_hi21.s?rev=272377&r1=272376&r2=272377&view=diff
==============================================================================
--- lld/trunk/test/ELF/aarch64-fpic-adr_prel_pg_hi21.s (original)
+++ lld/trunk/test/ELF/aarch64-fpic-adr_prel_pg_hi21.s Fri Jun 10 03:00:01 2016
@@ -1,7 +1,7 @@
 // REQUIRES: aarch64
 // RUN: llvm-mc -filetype=obj -triple=aarch64-none-freebsd %s -o %t.o
 // RUN: not ld.lld -shared %t.o -o %t.so 2>&1 | FileCheck %s
-// CHECK: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used when making a shared object; recompile with -fPIC.
+// CHECK: can't create dynamic relocation R_AARCH64_ADR_PREL_PG_HI21 against readonly segment
 
   adrp x0, dat
 .data

Modified: lld/trunk/test/ELF/aarch64-fpic-ldst32_abs_lo12_nc.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/aarch64-fpic-ldst32_abs_lo12_nc.s?rev=272377&r1=272376&r2=272377&view=diff
==============================================================================
--- lld/trunk/test/ELF/aarch64-fpic-ldst32_abs_lo12_nc.s (original)
+++ lld/trunk/test/ELF/aarch64-fpic-ldst32_abs_lo12_nc.s Fri Jun 10 03:00:01 2016
@@ -1,7 +1,7 @@
 // REQUIRES: aarch64
 // RUN: llvm-mc -filetype=obj -triple=aarch64-none-freebsd %s -o %t.o
 // RUN: not ld.lld -shared %t.o -o %t.so 2>&1 | FileCheck %s
-// CHECK: relocation R_AARCH64_LDST32_ABS_LO12_NC cannot be used when making a shared object; recompile with -fPIC.
+// CHECK: can't create dynamic relocation R_AARCH64_LDST32_ABS_LO12_NC against readonly segment
 
   ldr s4, [x0, :lo12:dat]
 .data

Modified: lld/trunk/test/ELF/aarch64-fpic-ldst64_abs_lo12_nc.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/aarch64-fpic-ldst64_abs_lo12_nc.s?rev=272377&r1=272376&r2=272377&view=diff
==============================================================================
--- lld/trunk/test/ELF/aarch64-fpic-ldst64_abs_lo12_nc.s (original)
+++ lld/trunk/test/ELF/aarch64-fpic-ldst64_abs_lo12_nc.s Fri Jun 10 03:00:01 2016
@@ -1,7 +1,7 @@
 // REQUIRES: aarch64
 // RUN: llvm-mc -filetype=obj -triple=aarch64-none-freebsd %s -o %t.o
 // RUN: not ld.lld -shared %t.o -o %t.so 2>&1 | FileCheck %s
-// CHECK: relocation R_AARCH64_LDST64_ABS_LO12_NC cannot be used when making a shared object; recompile with -fPIC.
+// CHECK: can't create dynamic relocation R_AARCH64_LDST64_ABS_LO12_NC against readonly segment
 
   ldr x0, [x0, :lo12:dat]
 .data

Modified: lld/trunk/test/ELF/aarch64-fpic-ldst8_abs_lo12_nc.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/aarch64-fpic-ldst8_abs_lo12_nc.s?rev=272377&r1=272376&r2=272377&view=diff
==============================================================================
--- lld/trunk/test/ELF/aarch64-fpic-ldst8_abs_lo12_nc.s (original)
+++ lld/trunk/test/ELF/aarch64-fpic-ldst8_abs_lo12_nc.s Fri Jun 10 03:00:01 2016
@@ -1,7 +1,7 @@
 // REQUIRES: aarch64
 // RUN: llvm-mc -filetype=obj -triple=aarch64-none-freebsd %s -o %t.o
 // RUN: not ld.lld -shared %t.o -o %t.so 2>&1 | FileCheck %s
-// CHECK: relocation R_AARCH64_LDST8_ABS_LO12_NC cannot be used when making a shared object; recompile with -fPIC.
+// CHECK: can't create dynamic relocation R_AARCH64_LDST8_ABS_LO12_NC against readonly segment
 
   ldrsb x0, [x1, :lo12:dat]
 .data

Modified: lld/trunk/test/ELF/copy-in-shared.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/copy-in-shared.s?rev=272377&r1=272376&r2=272377&view=diff
==============================================================================
--- lld/trunk/test/ELF/copy-in-shared.s (original)
+++ lld/trunk/test/ELF/copy-in-shared.s Fri Jun 10 03:00:01 2016
@@ -7,4 +7,4 @@
 
 .quad foo
 
-// CHECK: relocation R_X86_64_64 cannot be used when making a shared object; recompile with -fPIC.
+// CHECK: can't create dynamic relocation R_X86_64_64 against readonly segment

Modified: lld/trunk/test/ELF/copy-rel-pie-error.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/copy-rel-pie-error.s?rev=272377&r1=272376&r2=272377&view=diff
==============================================================================
--- lld/trunk/test/ELF/copy-rel-pie-error.s (original)
+++ lld/trunk/test/ELF/copy-rel-pie-error.s Fri Jun 10 03:00:01 2016
@@ -3,8 +3,8 @@
 // RUN: ld.lld %t2.o -o %t2.so -shared
 // RUN: not ld.lld %t.o %t2.so -o %t.exe -pie 2>&1 | FileCheck %s
 
-// CHECK: relocation R_X86_64_64 cannot be used when making a shared object; recompile with -fPIC.
-// CHECK: relocation R_X86_64_64 cannot be used when making a shared object; recompile with -fPIC.
+// CHECK: can't create dynamic relocation R_X86_64_64 against readonly segment
+// CHECK: can't create dynamic relocation R_X86_64_64 against readonly segment
 
 .global _start
 _start:

Modified: lld/trunk/test/ELF/dynamic-reloc-in-ro.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/dynamic-reloc-in-ro.s?rev=272377&r1=272376&r2=272377&view=diff
==============================================================================
--- lld/trunk/test/ELF/dynamic-reloc-in-ro.s (original)
+++ lld/trunk/test/ELF/dynamic-reloc-in-ro.s Fri Jun 10 03:00:01 2016
@@ -5,4 +5,4 @@
 foo:
 .quad foo
 
-// CHECK: relocation R_X86_64_64 cannot be used when making a shared object; recompile with -fPIC.
+// CHECK: can't create dynamic relocation R_X86_64_64 against readonly segment

Modified: lld/trunk/test/ELF/eh-frame-dyn-rel.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/eh-frame-dyn-rel.s?rev=272377&r1=272376&r2=272377&view=diff
==============================================================================
--- lld/trunk/test/ELF/eh-frame-dyn-rel.s (original)
+++ lld/trunk/test/ELF/eh-frame-dyn-rel.s Fri Jun 10 03:00:01 2016
@@ -7,4 +7,4 @@
         .cfi_personality 0x8c, foo
         .cfi_endproc
 
-// CHECK: relocation R_X86_64_64 cannot be used when making a shared object; recompile with -fPIC.
+// CHECK: can't create dynamic relocation R_X86_64_64 against readonly segment

Modified: lld/trunk/test/ELF/x86-64-reloc-32-fpic.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/x86-64-reloc-32-fpic.s?rev=272377&r1=272376&r2=272377&view=diff
==============================================================================
--- lld/trunk/test/ELF/x86-64-reloc-32-fpic.s (original)
+++ lld/trunk/test/ELF/x86-64-reloc-32-fpic.s Fri Jun 10 03:00:01 2016
@@ -1,6 +1,6 @@
 # REQUIRES: x86
 # RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
 # RUN: not ld.lld -shared %t.o -o %t.so 2>&1 | FileCheck %s
-# CHECK: relocation R_X86_64_32 cannot be used when making a shared object; recompile with -fPIC.
+# CHECK: can't create dynamic relocation R_X86_64_32 against readonly segment
 
 .long _shared

Modified: lld/trunk/test/ELF/x86-64-reloc-pc32-fpic.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/x86-64-reloc-pc32-fpic.s?rev=272377&r1=272376&r2=272377&view=diff
==============================================================================
--- lld/trunk/test/ELF/x86-64-reloc-pc32-fpic.s (original)
+++ lld/trunk/test/ELF/x86-64-reloc-pc32-fpic.s Fri Jun 10 03:00:01 2016
@@ -1,6 +1,6 @@
 # REQUIRES: x86
 # RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
 # RUN: not ld.lld -shared %t.o -o %t.so 2>&1 | FileCheck %s
-# CHECK: relocation R_X86_64_PC32 cannot be used when making a shared object; recompile with -fPIC.
+# CHECK: can't create dynamic relocation R_X86_64_PC32 against readonly segment
 
 call _shared




More information about the llvm-commits mailing list