aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2003-07-26 01:06:27 +0000
committerH.J. Lu <hjl.tools@gmail.com>2003-07-26 01:06:27 +0000
commit3cddba1e54cbf32f53bebe904341dca542fb2a8c (patch)
treec3f77ca505740ad1d9f754ef69fc0cc78292cb6d
parenta5de4c570e1b4df0598b2711f611ee28a8d6888b (diff)
downloadfsf-binutils-gdb-3cddba1e54cbf32f53bebe904341dca542fb2a8c.zip
fsf-binutils-gdb-3cddba1e54cbf32f53bebe904341dca542fb2a8c.tar.gz
fsf-binutils-gdb-3cddba1e54cbf32f53bebe904341dca542fb2a8c.tar.bz2
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.
-rw-r--r--bfd/ChangeLog8
-rw-r--r--bfd/elf.c24
-rw-r--r--gas/ChangeLog6
-rw-r--r--gas/config/obj-elf.c6
4 files changed, 31 insertions, 13 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 80fc0a5..aabf428 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,13 @@
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>
diff --git a/bfd/elf.c b/bfd/elf.c
index 95aa192..9f7eb46 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:
diff --git a/gas/ChangeLog b/gas/ChangeLog
index c46be5d..fe42106 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,5 +1,11 @@
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.
diff --git a/gas/config/obj-elf.c b/gas/config/obj-elf.c
index a8ba588..8687965 100644
--- a/gas/config/obj-elf.c
+++ b/gas/config/obj-elf.c
@@ -683,8 +683,10 @@ obj_elf_change_section (name, type, attr, entsize, group_name, linkonce, push)
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