Revert previous delta, instead do this.
authorAlan Modra <amodra@gmail.com>
Wed, 31 Oct 2001 15:32:09 +0000 (15:32 +0000)
committerAlan Modra <amodra@gmail.com>
Wed, 31 Oct 2001 15:32:09 +0000 (15:32 +0000)
* elf32-hppa.c (elf32_hppa_finish_dynamic_sections): Don't count
.plt relocs in DT_RELASZ.

bfd/ChangeLog
bfd/elf32-hppa.c

index 441db5fed80392bb21ee0ef0e4e6dd4270921487..364305df2bed213de93709a09030e104b646a60e 100644 (file)
@@ -1,7 +1,7 @@
 2001-11-01  Alan Modra  <amodra@bigpond.net.au>
 
-       * elf32-hppa.c (elf32_hppa_size_dynamic_sections): Set DT_RELASZ
-       whenever DT_PLTRELSZ.
+       * elf32-hppa.c (elf32_hppa_finish_dynamic_sections): Don't count
+       .plt relocs in DT_RELASZ.
 
 2001-10-29  NIIBE Yutaka  <gniibe@m17n.org>
 
index 7d65a14ab18e0d31181c2a52bae931834b672d7f..61c3e6fb98a18e0b4c1c1ab4700d0685258fe1ad 100644 (file)
@@ -2368,8 +2368,10 @@ elf32_hppa_size_dynamic_sections (output_bfd, info)
        {
          if (s->_raw_size != 0)
            {
-             /* Remember whether there are any reloc sections.  */
-             relocs = true;
+             /* Remember whether there are any reloc sections other
+                than .rela.plt.  */
+             if (s != htab->srelplt)
+               relocs = true;
 
              /* We use the reloc_count field as a counter if we need
                 to copy relocs into the output file.  */
@@ -4274,6 +4276,19 @@ elf32_hppa_finish_dynamic_sections (output_bfd, info)
              else
                dyn.d_un.d_val = s->_raw_size;
              break;
+
+           case DT_RELASZ:
+             /* Don't count procedure linkage table relocs in the
+                overall reloc count.  */
+             if (htab->srelplt != NULL)
+               {
+                 s = htab->srelplt->output_section;
+                 if (s->_cooked_size != 0)
+                   dyn.d_un.d_val -= s->_cooked_size;
+                 else
+                   dyn.d_un.d_val -= s->_raw_size;
+               }
+             break;
            }
 
          bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);