[ARC] Disable warning on absolute relocs when symbol is local.
authorCupertino Miranda <cmiranda@synopsys.com>
Mon, 24 Oct 2016 10:52:04 +0000 (12:52 +0200)
committerCupertino Miranda <cmiranda@synopsys.com>
Thu, 8 Jun 2017 17:00:34 +0000 (19:00 +0200)
R_ARC_32 and R_ARC_32_ME cannot be generated as dynamic relocs.
However, a warning message and check_relocs was aborting when this type of
reloc was being resolved to a local symbol.
This is wrong as local symbols are resolvable at link time.

bfd/ChangeLog:

    Cupertino Miranda  <cmiranda@synopsys.com>

* elf32-arc.c (elf_arc_check_relocs): Added condition to disable
warning and "Bad value" for local symbols ARC_32 or ARC_32_ME relocs.

bfd/ChangeLog
bfd/elf32-arc.c

index 6d8e9b1..ba36919 100644 (file)
@@ -1,5 +1,10 @@
 2017-06-08  Cupertino Miranda  <cmiranda@synopsys.com>
 
+       * elf32-arc.c (elf_arc_check_relocs): Added condition to disable
+       warning and "Bad value" for local symbols ARC_32 or ARC_32_ME relocs.
+
+2017-06-08  Cupertino Miranda  <cmiranda@synopsys.com>
+
        * elf32-arc.c (ADD_RELA): Changed to only work when dynamic
        object is created.
 
index 747faf9..8aec9ea 100644 (file)
@@ -1938,7 +1938,8 @@ elf_arc_check_relocs (bfd *                        abfd,
               and the dynamic linker can not resolve these.  However
               the error should not occur for e.g. debugging or
               non-readonly sections.  */
-           if ((bfd_link_dll (info) && !bfd_link_pie (info))
+           if (h != NULL
+               && (bfd_link_dll (info) && !bfd_link_pie (info))
                && (sec->flags & SEC_ALLOC) != 0
                && (sec->flags & SEC_READONLY) != 0
                && ((sec->flags & SEC_CODE) != 0