On 03/03/14 18:31, Andreas Färber wrote:

Am I missing something from the build in order for the final link to
complete correctly?

Hm, repository looks okay, and I didn't run into this yet. Possibly you
are using different binutils?

Presumably you did try make clean CROSS_COMPILE=... :)

I chose not to apply one hunk from Rene Rebe since not needed here.
Maybe the above .rodata.str1.4 would end up in .rodata this way?

Make it link at al.

   - Rene Rebe<r...@exactcode.de>

--- OpenHackWare-release-0.4/src/main.ld       2005-03-31
09:23:33.000000000 +0200
+++ OpenHackWare-release-0.4-hacked/src/main.ld        2008-05-06
11:23:29.000000000 +0200
@@ -49,7 +49,7 @@
          _sdata_end = . ;
          . = ALIGN(4) ;
          _ro_start = . ;
-        .rodata    : { *(.rodata) }>  bios
+        .rodata    : { *(.rodata*) }>  bios
          _ro_end = . ;
          . = ALIGN(4) ;
          _RTAS_start = .;

Cheers,
Andreas

Hi Andreas,

That patch definitely helps as it reduces the error to just:

powerpc-elf-ld: .objs/main.out section .text.startup will not fit in region start powerpc-elf-ld: section .text [0000000005800400 -> 0000000005812e23] overlaps section .text.startup [0000000005800054 -> 00000000058006d7]
powerpc-elf-ld: region start overflowed by 728 bytes

So if I then apply the same trick to the .text section (patch attached) then I get a successful link and an output image. The output image does execute under QEMU, although for all of the CD images I have it reports "ERROR: Found no boot partition!". Do you have pointers to any ISOs that can boot from the resulting image?

FWIW my cross-compile setup is based upon binutils 2.19.


ATB,

Mark.
diff --git a/Makefile b/Makefile
index c0213b2..c4bf5ea 100644
--- a/Makefile
+++ b/Makefile
@@ -21,7 +21,7 @@
 
 #DEBUG=1
 
-CROSS_COMPILE?=powerpc-linux-
+CROSS_COMPILE?=powerpc-elf-
 CC:= $(CROSS_COMPILE)gcc -m32
 LD:= $(CROSS_COMPILE)ld -m elf32ppc
 OBJCOPY:= $(CROSS_COMPILE)objcopy
diff --git a/src/main.ld b/src/main.ld
index f689f72..7a4f9aa 100644
--- a/src/main.ld
+++ b/src/main.ld
@@ -30,7 +30,7 @@ SECTIONS
 {
         .start    : { *(.start)   } > start
         . = ALIGN(4) ;
-        .text     : { *(.text)    } > bios
+        .text     : { *(.text*)    } > bios
         . = ALIGN(4) ;
         .OpenFirmware : { *(.OpenFirmware) } > bios
         . = ALIGN(4) ;
@@ -49,7 +49,7 @@ SECTIONS
         _sdata_end = . ;
         . = ALIGN(4) ;
         _ro_start = . ;
-        .rodata    : { *(.rodata) } > bios
+        .rodata    : { *(.rodata*) } > bios
         _ro_end = . ;
         . = ALIGN(4) ;
         _RTAS_start = .;

Reply via email to