ELF: Move dyn_relocs to struct elf_link_hash_entry
[deliverable/binutils-gdb.git] / bfd / elf32-hppa.c
index 4b76f941adf9d2832d7e7ea75135a7d3350e08fd..ef32ba75cde142cfe9d805859e6178f1231642fe 100644 (file)
@@ -231,10 +231,6 @@ struct elf32_hppa_link_hash_entry
      symbol.  */
   struct elf32_hppa_stub_hash_entry *hsh_cache;
 
-  /* Used to count relocations for delayed sizing of relocation
-     sections.  */
-  struct elf_dyn_relocs *dyn_relocs;
-
   ENUM_BITFIELD (_tls_type) tls_type : 8;
 
   /* Set if this symbol is used by a plabel reloc.  */
@@ -390,7 +386,6 @@ hppa_link_hash_newfunc (struct bfd_hash_entry *entry,
       /* Initialize the local fields.  */
       hh = hppa_elf_hash_entry (entry);
       hh->hsh_cache = NULL;
-      hh->dyn_relocs = NULL;
       hh->plabel = 0;
       hh->tls_type = GOT_UNKNOWN;
     }
@@ -1045,21 +1040,21 @@ elf32_hppa_copy_indirect_symbol (struct bfd_link_info *info,
   hh_dir = hppa_elf_hash_entry (eh_dir);
   hh_ind = hppa_elf_hash_entry (eh_ind);
 
-  if (hh_ind->dyn_relocs != NULL
+  if (eh_ind->dyn_relocs != NULL
       && eh_ind->root.type == bfd_link_hash_indirect)
     {
-      if (hh_dir->dyn_relocs != NULL)
+      if (eh_dir->dyn_relocs != NULL)
        {
          struct elf_dyn_relocs **hdh_pp;
          struct elf_dyn_relocs *hdh_p;
 
          /* Add reloc counts against the indirect sym to the direct sym
             list.  Merge any entries against the same section.  */
-         for (hdh_pp = &hh_ind->dyn_relocs; (hdh_p = *hdh_pp) != NULL; )
+         for (hdh_pp = &eh_ind->dyn_relocs; (hdh_p = *hdh_pp) != NULL; )
            {
              struct elf_dyn_relocs *hdh_q;
 
-             for (hdh_q = hh_dir->dyn_relocs;
+             for (hdh_q = eh_dir->dyn_relocs;
                   hdh_q != NULL;
                   hdh_q = hdh_q->next)
                if (hdh_q->sec == hdh_p->sec)
@@ -1074,11 +1069,11 @@ elf32_hppa_copy_indirect_symbol (struct bfd_link_info *info,
              if (hdh_q == NULL)
                hdh_pp = &hdh_p->next;
            }
-         *hdh_pp = hh_dir->dyn_relocs;
+         *hdh_pp = eh_dir->dyn_relocs;
        }
 
-      hh_dir->dyn_relocs = hh_ind->dyn_relocs;
-      hh_ind->dyn_relocs = NULL;
+      eh_dir->dyn_relocs = eh_ind->dyn_relocs;
+      eh_ind->dyn_relocs = NULL;
     }
 
   if (eh_ind->root.type == bfd_link_hash_indirect)
@@ -1494,7 +1489,7 @@ elf32_hppa_check_relocs (bfd *abfd,
                 relocations we need for this symbol.  */
              if (hh != NULL)
                {
-                 hdh_head = &hh->dyn_relocs;
+                 hdh_head = &hh->eh.dyn_relocs;
                }
              else
                {
@@ -1664,11 +1659,9 @@ elf32_hppa_hide_symbol (struct bfd_link_info *info,
 static asection *
 readonly_dynrelocs (struct elf_link_hash_entry *eh)
 {
-  struct elf32_hppa_link_hash_entry *hh;
   struct elf_dyn_relocs *hdh_p;
 
-  hh = hppa_elf_hash_entry (eh);
-  for (hdh_p = hh->dyn_relocs; hdh_p != NULL; hdh_p = hdh_p->next)
+  for (hdh_p = eh->dyn_relocs; hdh_p != NULL; hdh_p = hdh_p->next)
     {
       asection *sec = hdh_p->sec->output_section;
 
@@ -1719,7 +1712,7 @@ elf32_hppa_adjust_dynamic_symbol (struct bfd_link_info *info,
       /* Discard dyn_relocs when non-pic if we've decided that a
         function symbol is local.  */
       if (!bfd_link_pic (info) && local)
-       hppa_elf_hash_entry (eh)->dyn_relocs = NULL;
+       eh->dyn_relocs = NULL;
 
       /* If the symbol is used by a plabel, we must allocate a PLT slot.
         The refcounts are not reliable when it has been hidden since
@@ -1769,7 +1762,7 @@ elf32_hppa_adjust_dynamic_symbol (struct bfd_link_info *info,
       eh->root.u.def.value = def->root.u.def.value;
       if (def->root.u.def.section == htab->etab.sdynbss
          || def->root.u.def.section == htab->etab.sdynrelro)
-       hppa_elf_hash_entry (eh)->dyn_relocs = NULL;
+       eh->dyn_relocs = NULL;
       return TRUE;
     }
 
@@ -1827,7 +1820,7 @@ elf32_hppa_adjust_dynamic_symbol (struct bfd_link_info *info,
     }
 
   /* We no longer want dyn_relocs.  */
-  hppa_elf_hash_entry (eh)->dyn_relocs = NULL;
+  eh->dyn_relocs = NULL;
   return _bfd_elf_adjust_dynamic_copy (info, eh, sec);
 }
 
@@ -2012,15 +2005,15 @@ allocate_dynrelocs (struct elf_link_hash_entry *eh, void *inf)
 
   /* If no dynamic sections we can't have dynamic relocs.  */
   if (!htab->etab.dynamic_sections_created)
-    hh->dyn_relocs = NULL;
+    eh->dyn_relocs = NULL;
 
   /* Discard relocs on undefined syms with non-default visibility.  */
   else if ((eh->root.type == bfd_link_hash_undefined
            && ELF_ST_VISIBILITY (eh->other) != STV_DEFAULT)
           || UNDEFWEAK_NO_DYNAMIC_RELOC (info, eh))
-    hh->dyn_relocs = NULL;
+    eh->dyn_relocs = NULL;
 
-  if (hh->dyn_relocs == NULL)
+  if (eh->dyn_relocs == NULL)
     return TRUE;
 
   /* If this is a -Bsymbolic shared link, then we need to discard all
@@ -2035,7 +2028,7 @@ allocate_dynrelocs (struct elf_link_hash_entry *eh, void *inf)
        {
          struct elf_dyn_relocs **hdh_pp;
 
-         for (hdh_pp = &hh->dyn_relocs; (hdh_p = *hdh_pp) != NULL; )
+         for (hdh_pp = &eh->dyn_relocs; (hdh_p = *hdh_pp) != NULL; )
            {
              hdh_p->count -= hdh_p->pc_count;
              hdh_p->pc_count = 0;
@@ -2047,7 +2040,7 @@ allocate_dynrelocs (struct elf_link_hash_entry *eh, void *inf)
        }
 #endif
 
-      if (hh->dyn_relocs != NULL)
+      if (eh->dyn_relocs != NULL)
        {
          if (!ensure_undef_dynamic (info, eh))
            return FALSE;
@@ -2067,14 +2060,14 @@ allocate_dynrelocs (struct elf_link_hash_entry *eh, void *inf)
            return FALSE;
 
          if (eh->dynindx == -1)
-           hh->dyn_relocs = NULL;
+           eh->dyn_relocs = NULL;
        }
       else
-       hh->dyn_relocs = NULL;
+       eh->dyn_relocs = NULL;
     }
 
   /* Finally, allocate space.  */
-  for (hdh_p = hh->dyn_relocs; hdh_p != NULL; hdh_p = hdh_p->next)
+  for (hdh_p = eh->dyn_relocs; hdh_p != NULL; hdh_p = hdh_p->next)
     {
       asection *sreloc = elf_section_data (hdh_p->sec)->sreloc;
       sreloc->size += hdh_p->count * sizeof (Elf32_External_Rela);
@@ -3909,11 +3902,11 @@ elf32_hppa_relocate_section (bfd *output_bfd,
 
          if (bfd_link_pic (info)
              ? ((hh == NULL
-                 || hh->dyn_relocs != NULL)
+                 || hh->eh.dyn_relocs != NULL)
                 && ((hh != NULL && pc_dynrelocs (hh))
                     || IS_ABSOLUTE_RELOC (r_type)))
              : (hh != NULL
-                && hh->dyn_relocs != NULL))
+                && hh->eh.dyn_relocs != NULL))
            {
              Elf_Internal_Rela outrel;
              bfd_boolean skip;
This page took 0.031488 seconds and 4 git commands to generate.