* 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. * ldlang.c (section_already_linked): Remove assignment to kept_section.
This commit is contained in:
parent
65f38f15bf
commit
862517b650
10 changed files with 39 additions and 66 deletions
|
@ -1,3 +1,17 @@
|
|||
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.
|
||||
|
|
|
@ -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. */
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
2
bfd/configure
vendored
2
bfd/configure
vendored
|
@ -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; }
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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, */
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2001-09-29 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* ldlang.c (section_already_linked): Remove assignment to kept_section.
|
||||
|
||||
2001-09-26 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* ldmisc.c (USE_STDARG): Remove.
|
||||
|
|
|
@ -1013,11 +1013,8 @@ section_already_linked (abfd, sec, data)
|
|||
|
||||
/* Set the output_section field so that lang_add_section
|
||||
does not create a lang_input_section structure for this
|
||||
section. Since there might be a symbol in the section
|
||||
being discarded, we must retain a pointer to the section
|
||||
which we are really going to use. */
|
||||
section. */
|
||||
sec->output_section = bfd_abs_section_ptr;
|
||||
sec->kept_section = l->sec;
|
||||
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue