diff options
author | Alan Modra <amodra@gmail.com> | 2004-04-30 14:23:40 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2004-04-30 14:23:40 +0000 |
commit | 72adc230457cc2885fe394ab4647dceab2d9d0aa (patch) | |
tree | 83af2b0ff6739e108f6f79ff974d207996e275cb /bfd/section.c | |
parent | ee27e1b6c81d715f6c14f36522ac20d8a71acad7 (diff) | |
download | binutils-gdb-72adc230457cc2885fe394ab4647dceab2d9d0aa.tar.gz |
* section.c (bfd_make_section_anyway): Add all sections to hash tab.
* elf-bfd.h (bfd_elf_is_group_section): Declare.
* elf.c (bfd_elf_is_group_section): New function.
* elfxx-target.h (bfd_elfNN_bfd_is_group_section
* section.c (bfd_generic_is_group_section): New function.
* targets.c (struct bfd_target): Add _bfd_is_group_section field.
(BFD_JUMP_TABLE_LINK): Adjust.
* aout-adobe.c (aout_32_bfd_is_group_section): Define.
* aout-target.h (MY_bfd_is_group_section): Define.
* aout-tic30.c (MY_bfd_is_group_section): Define.
* bfd.c (bfd_is_group_section): Define.
* binary.c (binary_bfd_is_group_section): Define.
* bout.c (b_out_bfd_is_group_section): Define.
* coff-alpha.c (_bfd_ecoff_bfd_is_group_section): Define.
* coff-mips.c (_bfd_ecoff_bfd_is_group_section): Define.
* coff-rs6000.c (rs6000coff_vec, pmac_xcoff_vec): Adjust.
* coff64-rs6000.c (rs6000coff64_vec, aix5coff64_vec): Adjust.
* coffcode.h (coff_bfd_is_group_section): Define.
* i386msdos.c (msdos_bfd_is_group_section): Define.
* i386os9k.c (os9k_bfd_is_group_section): Define.
* ieee.c (ieee_bfd_is_group_section): Define.
* ihex.c (ihex_bfd_is_group_section): Define.
* libbfd-in.h (_bfd_nolink_bfd_is_group_section): Define.
* mach-o.c (bfd_mach_o_bfd_is_group_section): Define.
* mmo.c (mmo_bfd_is_group_section): Define.
* nlm-target.h (nlm_bfd_is_group_section): Define.
* oasys.c (oasys_bfd_is_group_section): Define.
* pef.c (bfd_pef_bfd_is_group_section): Define.
* ppcboot.c (ppcboot_bfd_is_group_section): Define.
* srec.c (srec_bfd_is_group_section): Define.
* tekhex.c (tekhex_bfd_is_group_section): Define.
* versados.c (versados_bfd_is_group_section): Define.
* vms.c (vms_bfd_is_group_section): Define.
* xsym.c (bfd_sym_bfd_is_group_section): Define.
* bfd-in2.h: Regenerate.
* libbfd.h: Regenerate.
Diffstat (limited to 'bfd/section.c')
-rw-r--r-- | bfd/section.c | 38 |
1 files changed, 31 insertions, 7 deletions
diff --git a/bfd/section.c b/bfd/section.c index fce8e1eab3d..5ecb4a63481 100644 --- a/bfd/section.c +++ b/bfd/section.c @@ -1,6 +1,6 @@ /* Object file "section" support for the BFD library. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003 + 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. Written by Cygnus Support. @@ -945,13 +945,19 @@ bfd_make_section_anyway (bfd *abfd, const char *name) newsect = &sh->section; if (newsect->name != NULL) { - /* We are making a section of the same name. It can't go in - section_htab without generating a unique section name and - that would be pointless; We don't need to traverse the - hash table. */ - newsect = bfd_zalloc (abfd, sizeof (asection)); - if (newsect == NULL) + /* We are making a section of the same name. Put it in the + section hash table. Even though we can't find it directly by a + hash lookup, we'll be able to find the section by traversing + sh->root.next quicker than looking at all the bfd sections. */ + struct section_hash_entry *new_sh; + new_sh = (struct section_hash_entry *) + bfd_section_hash_newfunc (NULL, &abfd->section_htab, name); + if (new_sh == NULL) return NULL; + + new_sh->root.next = sh->root.next; + sh->root.next = &new_sh->root; + newsect = &new_sh->section; } newsect->name = name; @@ -1351,6 +1357,24 @@ _bfd_strip_section_from_output (struct bfd_link_info *info, asection *s) /* FUNCTION + bfd_generic_is_group_section + +SYNOPSIS + bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec); + +DESCRIPTION + Returns TRUE if @var{sec} is a member of a group. +*/ + +bfd_boolean +bfd_generic_is_group_section (bfd *abfd ATTRIBUTE_UNUSED, + const asection *sec ATTRIBUTE_UNUSED) +{ + return FALSE; +} + +/* +FUNCTION bfd_generic_discard_group SYNOPSIS |