Copyright update for binutils
[external/binutils.git] / bfd / elf32-sh.c
index 012ee4e..b993113 100644 (file)
@@ -1,5 +1,5 @@
 /* Renesas / SuperH SH specific support for 32-bit ELF
-   Copyright (C) 1996-2015 Free Software Foundation, Inc.
+   Copyright (C) 1996-2016 Free Software Foundation, Inc.
    Contributed by Ian Lance Taylor, Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -3349,7 +3349,7 @@ sh_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
   if (htab->root.dynamic_sections_created)
     {
       /* Set the contents of the .interp section to the interpreter.  */
-      if (bfd_link_executable (info))
+      if (bfd_link_executable (info) && !info->nointerp)
        {
          s = bfd_get_linker_section (dynobj, ".interp");
          BFD_ASSERT (s != NULL);
@@ -3608,8 +3608,7 @@ sh_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
              || ! add_dynamic_entry (DT_JMPREL, 0))
            return FALSE;
        }
-      else if ((elf_elfheader (output_bfd)->e_flags & EF_SH_FDPIC)
-              && htab->sgot->size != 0)
+      else if ((elf_elfheader (output_bfd)->e_flags & EF_SH_FDPIC))
        {
          if (! add_dynamic_entry (DT_PLTGOT, 0))
            return FALSE;
@@ -5440,7 +5439,7 @@ sh_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
 
            check_segment[0] = check_segment[1] = -1;
 
-           if (! bfd_link_pic (info) || bfd_link_pie (info))
+           if (!bfd_link_dll (info))
              {
                relocation = tpoff (info, relocation);
                addend = rel->r_addend;
@@ -5496,7 +5495,7 @@ sh_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
                   input_bfd, input_section, rel->r_offset, symname);
            }
 
-         elf_elfheader (output_bfd)->e_flags &= ~EF_SH_PIC;
+         elf_elfheader (output_bfd)->e_flags |= EF_SH_PIC;
        }
 
       if (r != bfd_reloc_ok)
@@ -6542,7 +6541,7 @@ sh_elf_check_relocs (bfd *abfd, struct bfd_link_info *info, asection *sec,
          break;
 
        case R_SH_TLS_LE_32:
-         if (bfd_link_pic (info) && !bfd_link_pie (info))
+         if (bfd_link_dll (info))
            {
              (*_bfd_error_handler)
                (_("%B: TLS local exec code cannot be linked into shared objects"),
@@ -6653,7 +6652,7 @@ sh_elf_merge_private_data (bfd *ibfd, bfd *obfd)
       elf_elfheader (obfd)->e_flags = elf_elfheader (ibfd)->e_flags;
       sh_elf_set_mach_from_flags (obfd);
       if (elf_elfheader (obfd)->e_flags & EF_SH_FDPIC)
-       elf_elfheader (obfd)->e_flags |= EF_SH_PIC;
+       elf_elfheader (obfd)->e_flags &= ~EF_SH_PIC;
     }
 
   if (! sh_merge_bfd_arch (ibfd, obfd))