diff options
author | H.J. Lu <hjl@lucon.org> | 2004-07-02 01:39:32 +0000 |
---|---|---|
committer | H.J. Lu <hjl@lucon.org> | 2004-07-02 01:39:32 +0000 |
commit | 194c6a485705a44ae266ea23a88fd1e080b2ff72 (patch) | |
tree | 161af8c021daee3a76998f07f16cb60281ac8398 /bfd/bfd.c | |
parent | 12861f5026e0a9de37a147d589275720609c35fa (diff) | |
download | binutils-redhat-194c6a485705a44ae266ea23a88fd1e080b2ff72.tar.gz |
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; +} |