mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-04 22:15:12 +08:00
2005-04-11 H.J. Lu <hongjiu.lu@intel.com>
* linker.c (_bfd_generic_link_output_symbols): Also check if the output section of an input section has been removed from the output file. * section.c (bfd_section_list_remove): Clear the next field of the removed section. (bfd_section_removed_from_list): New. * bfd-in2.h: Regenerated.
This commit is contained in:
@ -1,3 +1,14 @@
|
|||||||
|
2005-04-11 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
* linker.c (_bfd_generic_link_output_symbols): Also check if
|
||||||
|
the output section of an input section has been removed from
|
||||||
|
the output file.
|
||||||
|
|
||||||
|
* section.c (bfd_section_list_remove): Clear the next field
|
||||||
|
of the removed section.
|
||||||
|
(bfd_section_removed_from_list): New.
|
||||||
|
* bfd-in2.h: Regenerated.
|
||||||
|
|
||||||
2005-04-11 David S. Miller <davem@davemloft.net>
|
2005-04-11 David S. Miller <davem@davemloft.net>
|
||||||
|
|
||||||
* elf32-sparc.c (elf32_sparc_relocate_section,
|
* elf32-sparc.c (elf32_sparc_relocate_section,
|
||||||
|
@ -1445,6 +1445,8 @@ extern const struct bfd_symbol * const bfd_ind_symbol;
|
|||||||
*_ps = _s->next; \
|
*_ps = _s->next; \
|
||||||
if (_s->next == NULL) \
|
if (_s->next == NULL) \
|
||||||
(ABFD)->section_tail = _ps; \
|
(ABFD)->section_tail = _ps; \
|
||||||
|
else \
|
||||||
|
_s->next = NULL; \
|
||||||
} \
|
} \
|
||||||
while (0)
|
while (0)
|
||||||
#define bfd_section_list_insert(ABFD, PS, S) \
|
#define bfd_section_list_insert(ABFD, PS, S) \
|
||||||
@ -1458,6 +1460,8 @@ extern const struct bfd_symbol * const bfd_ind_symbol;
|
|||||||
(ABFD)->section_tail = &_s->next; \
|
(ABFD)->section_tail = &_s->next; \
|
||||||
} \
|
} \
|
||||||
while (0)
|
while (0)
|
||||||
|
#define bfd_section_removed_from_list(ABFD, S) \
|
||||||
|
((S)->next == NULL && &(S)->next != (ABFD)->section_tail)
|
||||||
|
|
||||||
void bfd_section_list_clear (bfd *);
|
void bfd_section_list_clear (bfd *);
|
||||||
|
|
||||||
|
12
bfd/linker.c
12
bfd/linker.c
@ -2363,12 +2363,14 @@ _bfd_generic_link_output_symbols (bfd *output_bfd,
|
|||||||
abort ();
|
abort ();
|
||||||
|
|
||||||
/* If this symbol is in a section which is not being included
|
/* If this symbol is in a section which is not being included
|
||||||
in the output file, then we don't want to output the symbol.
|
in the output file, then we don't want to output the
|
||||||
|
symbol. .bss and similar sections won't have the linker_mark
|
||||||
Gross. .bss and similar sections won't have the linker_mark
|
field set. We also check if its output section has been
|
||||||
field set. */
|
removed from the output file. */
|
||||||
if ((sym->section->flags & SEC_HAS_CONTENTS) != 0
|
if (((sym->section->flags & SEC_HAS_CONTENTS) != 0
|
||||||
&& ! sym->section->linker_mark)
|
&& ! sym->section->linker_mark)
|
||||||
|
|| bfd_section_removed_from_list (output_bfd,
|
||||||
|
sym->section->output_section))
|
||||||
output = FALSE;
|
output = FALSE;
|
||||||
|
|
||||||
if (output)
|
if (output)
|
||||||
|
@ -546,6 +546,8 @@ CODE_FRAGMENT
|
|||||||
. *_ps = _s->next; \
|
. *_ps = _s->next; \
|
||||||
. if (_s->next == NULL) \
|
. if (_s->next == NULL) \
|
||||||
. (ABFD)->section_tail = _ps; \
|
. (ABFD)->section_tail = _ps; \
|
||||||
|
. else \
|
||||||
|
. _s->next = NULL; \
|
||||||
. } \
|
. } \
|
||||||
. while (0)
|
. while (0)
|
||||||
.#define bfd_section_list_insert(ABFD, PS, S) \
|
.#define bfd_section_list_insert(ABFD, PS, S) \
|
||||||
@ -559,6 +561,8 @@ CODE_FRAGMENT
|
|||||||
. (ABFD)->section_tail = &_s->next; \
|
. (ABFD)->section_tail = &_s->next; \
|
||||||
. } \
|
. } \
|
||||||
. while (0)
|
. while (0)
|
||||||
|
.#define bfd_section_removed_from_list(ABFD, S) \
|
||||||
|
. ((S)->next == NULL && &(S)->next != (ABFD)->section_tail)
|
||||||
.
|
.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user