* emulparams/elf_x86_64.sh (LIBPATH_SUFFIX, ELF_INTERPRETER_NAME): Set for *-*-solaris2*.
authorNick Clifton <nickc@redhat.com>
Mon, 24 Jul 2006 18:18:19 +0000 (18:18 +0000)
committerNick Clifton <nickc@redhat.com>
Mon, 24 Jul 2006 18:18:19 +0000 (18:18 +0000)
* elf.c (bfd_section_from_shdr): Reject unrecognised OS-specific sections
  only if the SHF_OS_NONCONFORMING flag is present.

bfd/ChangeLog
bfd/elf.c
ld/ChangeLog
ld/emulparams/elf_x86_64.sh

index 98a3bc4..8292b28 100644 (file)
@@ -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
index 85f9e0f..b900613 100644 (file)
--- 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)
index c78c529..f227698 100644 (file)
@@ -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.
index f9ed236..3ed0203 100644 (file)
@@ -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