Subject: Re: Adding Multiboot support (or not)
To: Jason Thorpe <thorpej@shagadelic.org>
From: Nick Hudson <nick.hudson@dsl.pipex.com>
List: port-i386
Date: 02/13/2006 17:49:38
--Boundary-00=_zaM8Di5saIzv+Ji
Content-Type: text/plain;
  charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

On Sunday 12 February 2006 04:38, Jason Thorpe wrote:
> On Feb 11, 2006, at 1:30 PM, Pavel Cahyna wrote:
> > In my case it won't, unless I add an explicit statement for .rodata:
>
> Right, this is a bug in ld(1).

Does this fix it?

Nick

--Boundary-00=_zaM8Di5saIzv+Ji
Content-Type: text/x-diff;
  charset="iso-8859-1";
  name="diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
	filename="diff"

Index: gnu/dist/binutils/ld/emultempl/elf32.em
===================================================================
RCS file: /cvsroot/src/gnu/dist/binutils/ld/emultempl/elf32.em,v
retrieving revision 1.4
diff -u -p -u -r1.4 elf32.em
--- gnu/dist/binutils/ld/emultempl/elf32.em	2 Feb 2006 22:03:57 -0000	1.4
+++ gnu/dist/binutils/ld/emultempl/elf32.em	13 Feb 2006 17:49:04 -0000
@@ -1393,7 +1393,8 @@ gld${EMULATION_NAME}_place_orphan (lang_
   else if (strncmp (secname, ".rel", 4) == 0
 	   && (s->flags & SEC_LOAD) != 0)
     place = &hold[orphan_rel];
-  else if ((s->flags & SEC_CODE) == 0)
+  else if ((s->flags & SEC_CODE) == 0
+	   && hold[orphan_rodata].os != NULL)
     place = &hold[orphan_rodata];
   else
     place = &hold[orphan_text];

--Boundary-00=_zaM8Di5saIzv+Ji--