diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2004-07-02 01:39:32 +0000 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2004-07-02 01:39:32 +0000 |
commit | b602c853d891e7b7885058bff76a796c2e47b42e (patch) | |
tree | 9909bc2499c111a7e8b20d5f6a2fbd27734fd99e /bfd/bfd.c | |
parent | ac6b4428da2f037bd99718e5594a626cab6d1a47 (diff) | |
download | gdb-b602c853d891e7b7885058bff76a796c2e47b42e.zip gdb-b602c853d891e7b7885058bff76a796c2e47b42e.tar.gz gdb-b602c853d891e7b7885058bff76a796c2e47b42e.tar.bz2 |
bfd/
2004-07-01 H.J. Lu <hongjiu.lu@intel.com>
* bfd.c (bfd_get_section_ident): New.
* elflink.c (elf_link_read_relocs_from_section): Call
bfd_get_section_ident to identify the section when reporting
error.
(_bfd_elf_link_output_relocs): Likewise.
(elf_link_output_extsym): Likewise.
(elf_link_input_bfd): Likewise.
(bfd_elf_gc_record_vtinherit): Likewise.
* bfd-in2.h: Regenerated.
ld/
2004-07-01 H.J. Lu <hongjiu.lu@intel.com>
* ldmisc.c (vfinfo): Call bfd_get_section_ident to identify
the section.
Diffstat (limited to 'bfd/bfd.c')
-rw-r--r-- | bfd/bfd.c | 43 |
1 files changed, 43 insertions, 0 deletions
@@ -1417,3 +1417,46 @@ bfd_preserve_finish (bfd *abfd ATTRIBUTE_UNUSED, struct bfd_preserve *preserve) objalloc. */ bfd_hash_table_free (&preserve->section_htab); } + +/* +FUNCTION + bfd_get_section_ident + +SYNOPSIS + char *bfd_get_section_ident (asection *sec); + +DESCRIPTION + This function returns "section name[group name]" in a malloced + buffer if @var{sec} is a member of an ELF section group and + returns NULL otherwise. The caller should free the non-NULL + return after use. + +*/ + +char * +bfd_get_section_ident (asection *sec) +{ + char *buf; + bfd_size_type nlen; + bfd_size_type glen; + + if (sec->owner == NULL + || bfd_get_flavour (sec->owner) != bfd_target_elf_flavour + || elf_next_in_group (sec) == NULL + || (sec->flags & SEC_GROUP) != 0) + return NULL; + + nlen = strlen (sec->name); + glen = strlen (elf_group_name (sec)); + buf = bfd_malloc (nlen + glen + 2 + 1); + if (buf != NULL) + { + strcpy (buf, sec->name); + buf [nlen] = '['; + strcpy (&buf [nlen + 1], elf_group_name (sec)); + buf [nlen + 1 + glen] = ']'; + buf [nlen + 1 + glen + 1] = '\0'; + } + + return buf; +} |