aboutsummaryrefslogtreecommitdiff
path: root/bfd/elf.c
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2005-07-08 00:26:53 +0000
committerH.J. Lu <hjl.tools@gmail.com>2005-07-08 00:26:53 +0000
commit29ef70053f959e79ee068480e53ff9c490b891b3 (patch)
tree305742f500264efc76910b8740685998750653bb /bfd/elf.c
parente7de25feb26c5598bf1082923fb33806dc93d002 (diff)
downloadbinutils-29ef70053f959e79ee068480e53ff9c490b891b3.zip
binutils-29ef70053f959e79ee068480e53ff9c490b891b3.tar.gz
binutils-29ef70053f959e79ee068480e53ff9c490b891b3.tar.bz2
2005-07-07 H.J. Lu <hongjiu.lu@intel.com>
* elf-bfd.h (elf_backend_data): Add special_sections. * elf.c (_bfd_elf_get_sec_type_attr): Check special_sections first. * elf32-arm.c (elf_backend_get_sec_type_attr): Removed. (elf_backend_special_sections): New. Defined. * elf32-m32r.c: Likewise. * elf32-m68hc11.c: Likewise. * elf32-m68hc12.c: Likewise. * elf32-mcore.c: Likewise. * elf32-sh64.c: Likewise. * elf32-v850.c: Likewise. * elf32-xtensa.c: Likewise. * elf64-alpha.c: Likewise. * elf64-hppa.c: Likewise. * elf64-ppc.c: Likewise. * elf64-sh64.c: Likewise. * elfxx-ia64.c: Likewise. * elfxx-mips.c: Likewise. * elfxx-mips.h: Likewise. * elfxx-target.h (elf_backend_special_sections): New. (elfNN_bed): Initialize special_sections.
Diffstat (limited to 'bfd/elf.c')
-rw-r--r--bfd/elf.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/bfd/elf.c b/bfd/elf.c
index 130ec7a..ff46a5e 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -2339,15 +2339,27 @@ _bfd_elf_get_special_section (const char *name,
}
const struct bfd_elf_special_section *
-_bfd_elf_get_sec_type_attr (bfd *abfd ATTRIBUTE_UNUSED, asection *sec)
+_bfd_elf_get_sec_type_attr (bfd *abfd, asection *sec)
{
int i;
const struct bfd_elf_special_section *spec;
+ const struct elf_backend_data *bed;
/* See if this is one of the special sections. */
if (sec->name == NULL)
return NULL;
+ bed = get_elf_backend_data (abfd);
+ spec = bed->special_sections;
+ if (spec)
+ {
+ spec = _bfd_elf_get_special_section (sec->name,
+ bed->special_sections,
+ sec->use_rela_p);
+ if (spec != NULL)
+ return spec;
+ }
+
if (sec->name[0] != '.')
return NULL;