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.
+
+2003-07-25 H.J. Lu <hongjiu.lu@intel.com>
+
* bfd-in2.h: Regenerated.
2003-07-25 H.J. Lu <hongjiu.lu@intel.com>
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))
{
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:
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.
+
+2003-07-25 H.J. Lu <hongjiu.lu@intel.com>
+
* config/obj-elf.c (obj_elf_change_section): Always set section
type and flags.
attr |= def_attr;
}
- elf_section_type (sec) = type;
- elf_section_flags (sec) = attr;
+ if (type != SHT_NULL)
+ elf_section_type (sec) = type;
+ if (attr != 0)
+ elf_section_flags (sec) = attr;
/* Convert ELF type and flags to BFD flags. */
flags = (SEC_RELOC