summaryrefslogtreecommitdiff
path: root/bfd/elf.c
diff options
context:
space:
mode:
authorH.J. Lu <hjl@lucon.org>2003-07-26 01:06:27 +0000
committerH.J. Lu <hjl@lucon.org>2003-07-26 01:06:27 +0000
commitbbbc6ce8b7ec6898437b22ceafbcd6d8df70d08c (patch)
tree4cf1f138a2d995fe9efd18df242bf47604f2c7e8 /bfd/elf.c
parenta0bee1bd755d0f66827717303a1bb72269909b08 (diff)
downloadgdb-bbbc6ce8b7ec6898437b22ceafbcd6d8df70d08c.tar.gz
bfd/
2003-07-25 H.J. Lu <hongjiu.lu@intel.com> * elf.c (_bfd_elf_new_section_hook): Set the default section type to SHT_NULL. (elf_fake_sections): Set the section type based on asect->flags if it is SHT_NULL. Don't abort on processor specific section types. gas/ 2003-07-25 H.J. Lu <hongjiu.lu@intel.com> * config/obj-elf.c (obj_elf_change_section): Update elf_section_type and elf_section_flags only when they are specified.
Diffstat (limited to 'bfd/elf.c')
-rw-r--r--bfd/elf.c24
1 files changed, 13 insertions, 11 deletions
diff --git a/bfd/elf.c b/bfd/elf.c
index 95aa1929d5d..9f7eb464dfe 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -2293,12 +2293,7 @@ _bfd_elf_new_section_hook (abfd, sec)
sec->used_by_bfd = (PTR) sdata;
}
- if ((sec->flags & SEC_ALLOC) != 0
- && (((sec->flags & (SEC_LOAD | SEC_HAS_CONTENTS)) == 0)
- || (sec->flags & SEC_NEVER_LOAD) != 0))
- elf_section_type (sec) = SHT_NOBITS;
- else
- elf_section_type (sec) = SHT_PROGBITS;
+ elf_section_type (sec) = SHT_NULL;
if (sec->name && _bfd_elf_get_sec_type_attr (abfd, sec->name,
&type, &attr))
{
@@ -2544,14 +2539,21 @@ elf_fake_sections (abfd, asect, failedptrarg)
this_hdr->bfd_section = asect;
this_hdr->contents = NULL;
+ /* If the section type is unspecified, we set it based on
+ asect->flags. */
+ if (this_hdr->sh_type == SHT_NULL)
+ {
+ if ((asect->flags & SEC_ALLOC) != 0
+ && (((asect->flags & (SEC_LOAD | SEC_HAS_CONTENTS)) == 0)
+ || (asect->flags & SEC_NEVER_LOAD) != 0))
+ this_hdr->sh_type = SHT_NOBITS;
+ else
+ this_hdr->sh_type = SHT_PROGBITS;
+ }
+
switch (this_hdr->sh_type)
{
default:
- (*_bfd_error_handler)
- (_("%s: Section `%s' has unknown type 0x%0x"),
- bfd_get_filename (asect->owner), asect->name,
- this_hdr->sh_type);
- abort ();
break;
case SHT_STRTAB: