Automatic date update in version.in
[deliverable/binutils-gdb.git] / bfd / elf-vxworks.c
index 61253fa935e59bb5d53f92ea5b69edc70a4ce599..729eb6a63e2ac608d36b7f94a77c1f9282ce6cbb 100644 (file)
@@ -1,5 +1,5 @@
 /* VxWorks support for ELF
-   Copyright 2005, 2006, 2007, 2009, 2012 Free Software Foundation, Inc.
+   Copyright (C) 2005-2016 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -14,9 +14,7 @@
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-   MA 02111-1307, USA.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* This file provides routines used by all VxWorks targets.  */
 
@@ -64,7 +62,7 @@ elf_vxworks_add_symbol_hook (bfd *abfd,
      give the symbol weak binding to get the desired samantics.
      This transformation will be undone in
      elf_i386_vxworks_link_output_symbol_hook. */
-  if ((info->shared || abfd->flags & DYNAMIC)
+  if ((bfd_link_pic (info) || abfd->flags & DYNAMIC)
       && elf_vxworks_gott_symbol_p (abfd, *namep))
     {
       sym->st_info = ELF_ST_INFO (STB_WEAK, ELF_ST_TYPE (sym->st_info));
@@ -89,14 +87,15 @@ elf_vxworks_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info,
   htab = elf_hash_table (info);
   bed = get_elf_backend_data (dynobj);
 
-  if (!info->shared)
+  if (!bfd_link_pic (info))
     {
-      s = bfd_make_section_with_flags (dynobj,
-                                      bed->default_use_rela_p
-                                      ? ".rela.plt.unloaded"
-                                      : ".rel.plt.unloaded",
-                                      SEC_HAS_CONTENTS | SEC_IN_MEMORY
-                                      | SEC_READONLY | SEC_LINKER_CREATED);
+      s = bfd_make_section_anyway_with_flags (dynobj,
+                                             bed->default_use_rela_p
+                                             ? ".rela.plt.unloaded"
+                                             : ".rel.plt.unloaded",
+                                             SEC_HAS_CONTENTS | SEC_IN_MEMORY
+                                             | SEC_READONLY
+                                             | SEC_LINKER_CREATED);
       if (s == NULL
          || !bfd_set_section_alignment (dynobj, s, bed->s->log_file_align))
        return FALSE;
@@ -194,7 +193,7 @@ elf_vxworks_emit_relocs (bfd *output_bfd,
                {
                  asection *sec = (*hash_ptr)->root.u.def.section;
                  int this_idx = sec->output_section->target_index;
-                 
+
                  irela[j].r_info
                    = ELF32_R_INFO (this_idx, ELF32_R_TYPE (irela[j].r_info));
                  irela[j].r_addend += (*hash_ptr)->root.u.def.value;
@@ -226,7 +225,7 @@ elf_vxworks_final_write_processing (bfd *abfd,
   if (!sec)
     return;
   d = elf_section_data (sec);
-  d->this_hdr.sh_link = elf_tdata (abfd)->symtab_section;
+  d->this_hdr.sh_link = elf_onesymtab (abfd);
   sec = bfd_get_section_by_name (abfd, ".plt");
   if (sec)
     d->this_hdr.sh_info = elf_section_data (sec)->this_idx;
@@ -261,34 +260,34 @@ bfd_boolean
 elf_vxworks_finish_dynamic_entry (bfd *output_bfd, Elf_Internal_Dyn *dyn)
 {
   asection *sec;
-  
+
   switch (dyn->d_tag)
     {
     default:
       return FALSE;
-      
+
     case DT_VX_WRS_TLS_DATA_START:
       sec = bfd_get_section_by_name (output_bfd, ".tls_data");
       dyn->d_un.d_ptr = sec->vma;
       break;
-      
+
     case DT_VX_WRS_TLS_DATA_SIZE:
       sec = bfd_get_section_by_name (output_bfd, ".tls_data");
       dyn->d_un.d_val = sec->size;
       break;
-      
+
     case DT_VX_WRS_TLS_DATA_ALIGN:
       sec = bfd_get_section_by_name (output_bfd, ".tls_data");
       dyn->d_un.d_val
        = (bfd_size_type)1 << bfd_get_section_alignment (output_bfd,
                                                         sec);
       break;
-      
+
     case DT_VX_WRS_TLS_VARS_START:
       sec = bfd_get_section_by_name (output_bfd, ".tls_vars");
       dyn->d_un.d_ptr = sec->vma;
       break;
-      
+
     case DT_VX_WRS_TLS_VARS_SIZE:
       sec = bfd_get_section_by_name (output_bfd, ".tls_vars");
       dyn->d_un.d_val = sec->size;
This page took 0.029729 seconds and 4 git commands to generate.