Bayou svn HEAD cannot execute its payloads correctly, due to payloads
overwriting bayou in memory. This is in turn due to the lpgcc link run
trying to apply both libpayload's and bayou's ldscripts.
The two attached patches a) makes lpgcc's choice of ldscript overridable
and b) adjusts bayou's ldscript to work with the recent MB changes in
libpayload.
Compile and runtime tested with bayou, coreinfo and coreboot-v3 in QEMU.
/ulf
Fix bayou payload execution.
Bayou must link with its own ldscript to end up at a load address that
doesn't interfere with payloads. Make Bayou's ldscript MB compatible, so
the link with libpayload/lib/i386/head.o succeeds.
Signed-off-by: Ulf Jordan <[EMAIL PROTECTED]>
Index: bayou/bayou.ldscript
===================================================================
--- bayou/bayou.ldscript (revision 3737)
+++ bayou/bayou.ldscript (arbetskopia)
@@ -60,6 +60,8 @@
*(.data.*)
}
+ _edata = .;
+
.bss : {
*(.bss)
*(.bss.*)
Fix bayou payload execution.
Bayou must link with its own ldscript to end up at a load address that
doesn't interfere with payloads. Make lpgcc's choice of ldscript overridable.
Signed-off-by: Ulf Jordan <[EMAIL PROTECTED]>
Index: libpayload/bin/lpgcc
===================================================================
--- libpayload/bin/lpgcc (revision 3737)
+++ libpayload/bin/lpgcc (arbetskopia)
@@ -39,6 +39,8 @@
# This will set the _LIBDIR and _INCDIR variables used below
. $BASE/lp.functions
+_LDSCRIPT="-Wl,-T,$_LIBDIR/libpayload.ldscript"
+
trygccoption() {
$DEFAULT_CC $1 -S -xc /dev/null -o .$$.tmp &> /dev/null
RET=$?
@@ -73,6 +75,11 @@
shift
continue
;;
+ -Wl,-T,*)
+ _LDSCRIPT="$1"
+ shift
+ continue
+ ;;
*)
;;
esac
@@ -90,7 +97,7 @@
_CFLAGS="$_CFLAGS -I`$DEFAULT_CC -m32 -print-search-dirs | head -n 1 | cut -d'
' -f2`include"
-_LDFLAGS="-Wl,-T,$_LIBDIR/libpayload.ldscript -static"
+_LDFLAGS="$_LDSCRIPT -static"
if [ $DOLINK -eq 0 ]; then
if [ $DEBUGME -eq 1 ]; then
--
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot