aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elf.c19
-rw-r--r--ld/ChangeLog5
-rw-r--r--ld/emulparams/elf_x86_64.sh6
4 files changed, 29 insertions, 6 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 98a3bc4..8292b28 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2006-07-24 Michael Wetherell <mike.wetherell@ntlworld.com>
+
+ * elf.c (bfd_section_from_shdr): Reject unrecognised OS-specific
+ sections only if the SHF_OS_NONCONFORMING flag is present.
+
2006-07-24 Nick Clifton <nickc@redhat.com>
PR ld/2729
diff --git a/bfd/elf.c b/bfd/elf.c
index 85f9e0f..b900613 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -2201,11 +2201,20 @@ bfd_section_from_shdr (bfd *abfd, unsigned int shindex)
"`%s' [0x%8x]"),
abfd, name, hdr->sh_type);
else if (hdr->sh_type >= SHT_LOOS && hdr->sh_type <= SHT_HIOS)
- /* FIXME: We should handle this section. */
- (*_bfd_error_handler)
- (_("%B: don't know how to handle OS specific section "
- "`%s' [0x%8x]"),
- abfd, name, hdr->sh_type);
+ {
+ /* Unrecognised OS-specific sections. */
+ if ((hdr->sh_flags & SHF_OS_NONCONFORMING) != 0)
+ /* SHF_OS_NONCONFORMING indicates that special knowledge is
+ required to correctly process the section and the file should
+ be rejected with an error message. */
+ (*_bfd_error_handler)
+ (_("%B: don't know how to handle OS specific section "
+ "`%s' [0x%8x]"),
+ abfd, name, hdr->sh_type);
+ else
+ /* Otherwise it should be processed. */
+ return _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex);
+ }
else
/* FIXME: We should handle this section. */
(*_bfd_error_handler)
diff --git a/ld/ChangeLog b/ld/ChangeLog
index c78c529..f227698 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,8 @@
+2006-07-14 Michael Wetherell <mike.wetherell@ntlworld.com>
+
+ * emulparams/elf_x86_64.sh (LIBPATH_SUFFIX, ELF_INTERPRETER_NAME):
+ Set for *-*-solaris2*.
+
2006-07-24 Ralk Wildenhues <Ralf.Wildenhues@gmx.de>
* ld.texinfo: Fix spelling mistakes.
diff --git a/ld/emulparams/elf_x86_64.sh b/ld/emulparams/elf_x86_64.sh
index f9ed236..3ed0203 100644
--- a/ld/emulparams/elf_x86_64.sh
+++ b/ld/emulparams/elf_x86_64.sh
@@ -22,7 +22,7 @@ if [ "x${host}" = "x${target}" ]; then
esac
fi
-# Linux modify the default library search path to first include
+# Linux/Solaris modify the default library search path to first include
# a 64-bit specific directory.
case "$target" in
x86_64*-linux*)
@@ -30,4 +30,8 @@ case "$target" in
*64*) LIBPATH_SUFFIX=64 ;;
esac
;;
+ *-*-solaris2*)
+ LIBPATH_SUFFIX=/amd64
+ ELF_INTERPRETER_NAME=\"/lib/amd64/ld.so.1\"
+ ;;
esac