aboutsummaryrefslogtreecommitdiff
path: root/bfd/elf.c
diff options
context:
space:
mode:
authorJim Wilson <wilson@tuliptree.org>2000-10-05 22:22:27 +0000
committerJim Wilson <wilson@tuliptree.org>2000-10-05 22:22:27 +0000
commitfa152c49304b325b423b55f8be8f00855fe9ed26 (patch)
tree162d7cbd9fac38d2d7bc496f508cf78af04b342a /bfd/elf.c
parentafa680f89a3834ec51fe371a7819b1247b6308b3 (diff)
downloadgdb-fa152c49304b325b423b55f8be8f00855fe9ed26.zip
gdb-fa152c49304b325b423b55f8be8f00855fe9ed26.tar.gz
gdb-fa152c49304b325b423b55f8be8f00855fe9ed26.tar.bz2
Preserve machine dependent section header flags when reading ELF object file.
* elf-bfd.h (struct elf_backend_data): Add elf_backend_section_flags field. * elf.c (_bfd_elf_make_section_from_shdr): Call the elf_backend_section_flags function. * elf64-ia64.c (elf64_ia64_section_from_shdr): Delete flag conversion code. (elf64_ia64_section_flags): New function containing flag conversion code. (elf_backend_section_flags): Define to elf64_ia64_section_flags. * elfxx-target.h (elf_backend_section_flags): Define. (elfNN_bed): Initialize elf_backend_section_flags field.
Diffstat (limited to 'bfd/elf.c')
-rw-r--r--bfd/elf.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/bfd/elf.c b/bfd/elf.c
index 5dac0a3..3aede14 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -345,6 +345,7 @@ _bfd_elf_make_section_from_shdr (abfd, hdr, name)
{
asection *newsect;
flagword flags;
+ struct elf_backend_data *bed;
if (hdr->bfd_section != NULL)
{
@@ -410,6 +411,11 @@ _bfd_elf_make_section_from_shdr (abfd, hdr, name)
if (strncmp (name, ".gnu.linkonce", sizeof ".gnu.linkonce" - 1) == 0)
flags |= SEC_LINK_ONCE | SEC_LINK_DUPLICATES_DISCARD;
+ bed = get_elf_backend_data (abfd);
+ if (bed->elf_backend_section_flags)
+ if (! bed->elf_backend_section_flags (&flags, hdr))
+ return false;
+
if (! bfd_set_section_flags (abfd, newsect, flags))
return false;