Automatic date update in version.in
[deliverable/binutils-gdb.git] / bfd / elfxx-sparc.c
index db0d4f180467cf885eecafd78fcb01d052362da0..d2c24d834caebd64e0f407a38038d04c350e022d 100644 (file)
@@ -1,5 +1,5 @@
 /* SPARC-specific support for ELF
-   Copyright (C) 2005-2015 Free Software Foundation, Inc.
+   Copyright (C) 2005-2016 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -3468,9 +3468,9 @@ _bfd_sparc_elf_relocate_section (bfd *output_bfd,
                memset (&outrel, 0, sizeof outrel);
              /* h->dynindx may be -1 if the symbol was marked to
                 become local.  */
-             else if (h != NULL &&
-                      h->dynindx != -1
-                      && (! is_plt
+             else if (h != NULL
+                      && h->dynindx != -1
+                      && (_bfd_sparc_elf_howto_table[r_type].pc_relative
                           || !bfd_link_pic (info)
                           || !SYMBOLIC_BIND (info, h)
                           || !h->def_regular))
@@ -4199,11 +4199,9 @@ do_relocation:
                    if (*name == '\0')
                      name = bfd_section_name (input_bfd, sec);
                  }
-               if (! ((*info->callbacks->reloc_overflow)
-                      (info, (h ? &h->root : NULL), name, howto->name,
-                       (bfd_vma) 0, input_bfd, input_section,
-                       rel->r_offset)))
-                 return FALSE;
+               (*info->callbacks->reloc_overflow)
+                 (info, (h ? &h->root : NULL), name, howto->name,
+                  (bfd_vma) 0, input_bfd, input_section, rel->r_offset);
              }
              break;
            }
@@ -4630,13 +4628,13 @@ sparc_finish_dyn (bfd *output_bfd, struct bfd_link_info *info,
            {
              asection *s;
 
-             s = bfd_get_section_by_name (output_bfd, name);
+             s = bfd_get_linker_section (dynobj, name);
              if (s == NULL)
                dyn.d_un.d_val = 0;
              else
                {
                  if (! size)
-                   dyn.d_un.d_ptr = s->vma;
+                   dyn.d_un.d_ptr = s->output_section->vma + s->output_offset;
                  else
                    dyn.d_un.d_val = s->size;
                }
This page took 0.024943 seconds and 4 git commands to generate.