OSDN Git Service

* section.c (struct sec): Remove kept_section.
authorAlan Modra <amodra@bigpond.net.au>
Sat, 29 Sep 2001 12:07:00 +0000 (12:07 +0000)
committerAlan Modra <amodra@bigpond.net.au>
Sat, 29 Sep 2001 12:07:00 +0000 (12:07 +0000)
(STD_SECTION): Remove kept_section initialisation.
(bfd_make_section_anyway): Here too.
* ecoff.c (bfd_debug_section): Remove kept_section initialisation.
* cofflink.c (_bfd_coff_link_input_bfd): Don't test kept_section.
* elflink.h (elf_link_input_bfd): Set discarded link-once section
symbols to zero, and remove all code involved with kept_section
and tracking section symbol values.
* bfd-in2.h: Regenerate.
* configure.in: Bump version number.
* configure: Regenerate.

* ldlang.c (section_already_linked): Remove assignment to kept_section.

bfd/ChangeLog
bfd/bfd-in2.h
bfd/cofflink.c
bfd/configure
bfd/configure.in
bfd/ecoff.c
bfd/elflink.h
bfd/section.c

index 3b5da8e..b1782e3 100644 (file)
@@ -1,5 +1,19 @@
 2001-09-29  Alan Modra  <amodra@bigpond.net.au>
 
+       * section.c (struct sec): Remove kept_section.
+       (STD_SECTION): Remove kept_section initialisation.
+       (bfd_make_section_anyway): Here too.
+       * ecoff.c (bfd_debug_section): Remove kept_section initialisation.
+       * cofflink.c (_bfd_coff_link_input_bfd): Don't test kept_section.
+       * elflink.h (elf_link_input_bfd): Set discarded link-once section
+       symbols to zero, and remove all code involved with kept_section
+       and tracking section symbol values.
+       * bfd-in2.h: Regenerate.
+       * configure.in: Bump version number.
+       * configure: Regenerate.
+
+2001-09-29  Alan Modra  <amodra@bigpond.net.au>
+
        * elf64-ppc.c (struct ppc_dyn_relocs): New.
        (IS_ABSOLUTE_RELOC): Define.
        (struct ppc_link_hash_entry): New.
index 5e893f9..793bb62 100644 (file)
@@ -1319,10 +1319,6 @@ typedef struct sec
 
   struct bfd_comdat_info *comdat;
 
-  /* Points to the kept section if this section is a link-once section,
-     and is discarded.  */
-  struct sec *kept_section;
-
   /* When a section is being output, this value changes as more
      linenumbers are written out.  */
 
index 31ac756..594b169 100644 (file)
@@ -1516,15 +1516,13 @@ _bfd_coff_link_input_bfd (finfo, input_bfd)
 
 #ifndef COFF_WITH_PE
       /* Skip section symbols for sections which are not going to be
-        emitted, or which belong to linkonce sections that are going
-        to be discarded.  */
+        emitted.  */
       if (!skip
          && isym.n_sclass == C_STAT
          && isym.n_type == T_NULL
           && isym.n_numaux > 0)
         {
-          if ((*secpp)->output_section == bfd_abs_section_ptr
-              || (*secpp)->kept_section)
+          if ((*secpp)->output_section == bfd_abs_section_ptr)
             skip = true;
         }
 #endif
index fef25b3..d30e1d4 100755 (executable)
@@ -1127,7 +1127,7 @@ fi
 
 PACKAGE=bfd
 
-VERSION=2.11.91
+VERSION=2.11.92
 
 if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
   { echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; }
index 46bc1ed..081fe08 100644 (file)
@@ -7,7 +7,7 @@ AC_INIT(libbfd.c)
 AC_CANONICAL_SYSTEM
 AC_ISC_POSIX
 
-AM_INIT_AUTOMAKE(bfd, 2.11.91)
+AM_INIT_AUTOMAKE(bfd, 2.11.92)
 
 dnl These must be called before AM_PROG_LIBTOOL, because it may want
 dnl to call AC_CHECK_PROG.
index 359c254..4e0e953 100644 (file)
@@ -86,8 +86,8 @@ static asection bfd_debug_section =
      NULL,       NULL,        0,           0,       0,
   /* line_filepos, userdata, contents, lineno, lineno_count,       */
      0,            NULL,     NULL,     NULL,   0,
-  /* entsize, comdat, kept_section, moving_line_filepos,           */
-     0,       NULL,   NULL,         0,
+  /* entsize, comdat, moving_line_filepos,                         */
+     0,       NULL,   0,
   /* target_index, used_by_bfd, constructor_chain, owner,          */
      0,            NULL,        NULL,              NULL,
   /* symbol,                                                       */
index 73687fb..39f8811 100644 (file)
@@ -5962,12 +5962,8 @@ elf_link_input_bfd (finfo, input_bfd)
            }
        }
 
-      name = NULL;
       if (isym->st_shndx == SHN_UNDEF)
-        {
-         isec = bfd_und_section_ptr;
-         name = isec->name;
-       }
+       isec = bfd_und_section_ptr;
       else if (isym->st_shndx > 0 && isym->st_shndx < SHN_LORESERVE)
        {
          isec = section_from_elf_index (input_bfd, isym->st_shndx);
@@ -5979,15 +5975,9 @@ elf_link_input_bfd (finfo, input_bfd)
                                          isym->st_value, (bfd_vma) 0);
        }
       else if (isym->st_shndx == SHN_ABS)
-       {
-         isec = bfd_abs_section_ptr;
-         name = isec->name;
-       }
+       isec = bfd_abs_section_ptr;
       else if (isym->st_shndx == SHN_COMMON)
-       {
-         isec = bfd_com_section_ptr;
-         name = isec->name;
-       }
+       isec = bfd_com_section_ptr;
       else
        {
          /* Who knows?  */
@@ -6002,39 +5992,18 @@ elf_link_input_bfd (finfo, input_bfd)
 
       if (ELF_ST_TYPE (isym->st_info) == STT_SECTION)
        {
-         asection *ksec;
-
-         /* Save away all section symbol values.  */
-         if (isec != NULL)
-           {
-             if (name)
-               {
-                 if (isec->symbol->value != isym->st_value)
-                   (*_bfd_error_handler)
-                     (_("%s: invalid section symbol index 0x%x (%s) ignored"),
-                      bfd_archive_filename (input_bfd), isym->st_shndx,
-                      name);
-                 continue;
-               }
-             isec->symbol->value = isym->st_value;
-           }
-
-         /* If this is a discarded link-once section symbol, update
-            it's value to that of the kept section symbol.  The
-            linker will keep the first of any matching link-once
-            sections, so we should have already seen it's section
-            symbol.  I trust no-one will have the bright idea of
-            re-ordering the bfd list...  */
+         /* If this is a discarded link-once section symbol, set its
+            value to 0.  We should really undefine it, and complain
+            if anything in the final link tries to use it, but
+            DWARF-based exception handling might have an entry in
+            .eh_frame to describe a routine in the linkonce section,
+            and it turns out to be hard to remove the .eh_frame entry
+            too.  FIXME.  */
          if (isec != NULL
              && (bfd_get_section_flags (input_bfd, isec) & SEC_LINK_ONCE) != 0
-             && (ksec = isec->kept_section) != NULL)
+             && bfd_is_abs_section (isec->output_section))
            {
-             isym->st_value = ksec->symbol->value;
-
-             /* That put the value right, but the section info is all
-                wrong.  I hope this works.  */
-             isec->output_offset = ksec->output_offset;
-             isec->output_section = ksec->output_section;
+             isym->st_value = 0;
            }
 
          /* We never output section symbols.  Instead, we use the
index 274979b..f3bd381 100644 (file)
@@ -485,10 +485,6 @@ CODE_FRAGMENT
 .
 .  struct bfd_comdat_info *comdat;
 .
-.  {* Points to the kept section if this section is a link-once section,
-.     and is discarded.  *}
-.  struct sec *kept_section;
-.
 .  {* When a section is being output, this value changes as more
 .     linenumbers are written out.  *}
 .
@@ -599,8 +595,8 @@ static const asymbol global_syms[] =
     /* line_filepos, userdata, contents, lineno, lineno_count,       */        \
        0,            NULL,     NULL,     NULL,   0,                    \
                                                                        \
-    /* entsize, comdat, kept_section, moving_line_filepos,           */        \
-       0,       NULL,   NULL,         0,                               \
+    /* entsize, comdat, moving_line_filepos,                         */        \
+       0,       NULL,   0,                                             \
                                                                        \
     /* target_index, used_by_bfd, constructor_chain, owner,          */        \
        0,            NULL,        NULL,              NULL,             \
@@ -807,7 +803,6 @@ bfd_make_section_anyway (abfd, name)
   newsect->line_filepos = 0;
   newsect->owner = abfd;
   newsect->comdat = NULL;
-  newsect->kept_section = NULL;
 
   /* Create a symbol whos only job is to point to this section. This is
      useful for things like relocs which are relative to the base of a