[lld] r247795 - [Mips] Do not show an error if R_MIPS_GPREL32 relocation has a non-local target

Simon Atanasyan via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 16 06:36:25 PDT 2015


Author: atanasyan
Date: Wed Sep 16 08:36:24 2015
New Revision: 247795

URL: http://llvm.org/viewvc/llvm-project?rev=247795&view=rev
Log:
[Mips] Do not show an error if R_MIPS_GPREL32 relocation has a non-local target

This matches GNU linker behaviour.

Removed:
    lld/trunk/test/elf/Mips/validate-rel-02.test
Modified:
    lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationPass.cpp

Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationPass.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationPass.cpp?rev=247795&r1=247794&r2=247795&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationPass.cpp (original)
+++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationPass.cpp Wed Sep 16 08:36:24 2015
@@ -915,16 +915,6 @@ make_reject_for_shared_lib_reloc_error(c
 }
 
 static std::error_code
-make_external_gprel32_reloc_error(const ELFLinkingContext &ctx,
-                                  const DefinedAtom &atom,
-                                  const Reference &ref) {
-  return make_dynamic_error_code(
-      "R_MIPS_GPREL32 (12) relocation cannot be used "
-      "against external symbol " +
-      ref.target()->name() + " in file " + atom.file().path());
-}
-
-static std::error_code
 make_local_call16_reloc_error(const ELFLinkingContext &ctx,
                               const DefinedAtom &atom, const Reference &ref) {
   return make_dynamic_error_code("R_MIPS_CALL16 (11) relocation cannot be used "
@@ -940,9 +930,6 @@ RelocationPass<ELFT>::validateRelocation
   if (!ref.target())
     return std::error_code();
 
-  if (ref.kindValue() == R_MIPS_GPREL32 && !isLocal(ref.target()))
-    return make_external_gprel32_reloc_error(this->_ctx, atom, ref);
-
   if (isCallReloc(ref.kindValue()) && isLocal(ref.target()))
     return make_local_call16_reloc_error(this->_ctx, atom, ref);
 

Removed: lld/trunk/test/elf/Mips/validate-rel-02.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Mips/validate-rel-02.test?rev=247794&view=auto
==============================================================================
--- lld/trunk/test/elf/Mips/validate-rel-02.test (original)
+++ lld/trunk/test/elf/Mips/validate-rel-02.test (removed)
@@ -1,41 +0,0 @@
-# Check that the linker does not accept R_MIPS_GPREL32 relocation
-# against external symbol.
-
-# RUN: yaml2obj -format=elf -docnum 1 %s > %t.o
-# RUN: not lld -flavor gnu -target mipsel -e T0 -o %t.exe %t.o 2>&1 \
-# RUN:       | FileCheck %s
-
-# CHECK: R_MIPS_GPREL32 (12) relocation cannot be used against external symbol T0 in file {{.*}}validate-rel-02.test.tmp.o
-
----
-FileHeader:      
-  Class:    ELFCLASS32
-  Data:     ELFDATA2LSB
-  Type:     ET_REL
-  Machine:  EM_MIPS
-  Flags:    [EF_MIPS_CPIC, EF_MIPS_ABI_O32, EF_MIPS_ARCH_32]
-
-Sections:        
-  - Name:          .text
-    Type:          SHT_PROGBITS
-    Flags:         [ SHF_ALLOC, SHF_EXECINSTR ]
-    AddressAlign:  16
-    Size:          4
-
-  - Name:          .rel.text
-    Type:          SHT_REL
-    Link:          .symtab
-    AddressAlign:  4
-    Info:          .text
-    Relocations:   
-      - Offset:  0
-        Symbol:  T0
-        Type:    R_MIPS_GPREL32
-
-Symbols:         
-  Global:          
-    - Name:     T0
-      Type:     STT_FUNC
-      Section:  .text
-      Size:     4
-...




More information about the llvm-commits mailing list