[SeaBIOS] Compiling SeaBIOS for coreboot has problems with its ACPI code

Idwer Vollering vidwer at gmail.com
Thu Jul 26 15:54:59 CEST 2012


2012/7/26 Kevin O'Connor <kevin at koconnor.net>:
> On Thu, Jul 26, 2012 at 11:25:51AM +0200, Idwer Vollering wrote:
>> 2012/7/26 Kevin O'Connor <kevin at koconnor.net>:
>> > On Wed, Jul 25, 2012 at 02:45:31PM +0200, Idwer Vollering wrote:
>> >> 2012/7/25 Kevin O'Connor <kevin at koconnor.net>:
>> >> > On Wed, Jul 25, 2012 at 01:44:20PM +0200, Idwer Vollering wrote:
>> >> >> Unmodified tree, at 9d6bac1d32b72cdf7c0ad009c1371a2e69084de3
>> >> >
>> >> > At a guess, the iasl warnings are confusing the
>> >> > acpi_extract_preprocess.py script.  What version of iasl do you have?
>> >>
>> >> The distribution version is iasl 20120620-1: ASL Optimizing Compiler
>> >> version 20120620-64 [Jun 24 2012]
>> >> coreboot build: ASL Optimizing Compiler version 20120420-64 [Jul 13 2012]
>> >
>> > Does the patch below fix this for you?
>>
>> Unfortunately it doesn't fix this, I just tested a 'regular' compile
>> (make menuconfig and exit without changing any option) which seems to
>> stop with the same errors.
>>
>> With this patch (and reverting the change to src/acpi-dsdt.dsl) I see
>> some progress (see below for the resulting output of make):
>>
>> diff --git a/Makefile b/Makefile
>> index dfdec5c..b55705b 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -97,7 +97,7 @@ ifeq "$(COMPSTRAT)" "1"
>>  # First method - use -fwhole-program without -combine.
>>  define whole-compile
>>  @echo "  Compiling whole program $3"
>> -$(Q)printf '$(foreach i,$2,#include "../$i"\n)' > $3.tmp.c
>> +$(Q)printf '$(foreach i,$2,#include "../$i")\n' >> $3.tmp.c
>>  $(Q)$(CC) $1 -fwhole-program -DWHOLE_PROGRAM -c $3.tmp.c -o $3
>>  endef
>
> I don't understand why you're changing the makefile.

I was assuming the generation of out/ccode32flat.o.tmp.c was wrong,
which isn't wrong...

$ LC_ALL=C LD=/home/idwer/coreboot/git/coreboot/util/crossgcc/xgcc/bin/i386-elf-ld
CC=/home/idwer/coreboot/git/coreboot/util/crossgcc/xgcc/bin/i386-elf-gcc
IASL=/home/idwer/coreboot/git/coreboot/util/crossgcc/xgcc/bin/iasl
make menuconfig V=1
  Working around non-functional -combine
mkdir -p out//tools/kconfig/lxdialog
mkdir -p out//include/config
make -C out/ -f
/home/idwer/coreboot/git/seabios/tools/kconfig/Makefile
srctree=/home/idwer/coreboot/git/seabios src=tools/kconfig
obj=tools/kconfig Q=
Kconfig=/home/idwer/coreboot/git/seabios/src/Kconfig  menuconfig
make[1]: Entering directory `/home/idwer/coreboot/git/seabios/out'
/home/idwer/coreboot/git/coreboot/util/crossgcc/xgcc/bin/i386-elf-gcc
-Itools/kconfig -I/home/idwer/coreboot/git/seabios/tools/kconfig
-DCURSES_LOC="<ncurses.h>" -DLOCALE -DKBUILD_NO_NLS -c -o
tools/kconfig/conf.o
/home/idwer/coreboot/git/seabios/tools/kconfig/conf.c
/home/idwer/coreboot/git/seabios/tools/kconfig/conf.c:6:20: fatal
error: locale.h: No such file or directory
compilation terminated.
make[1]: *** [tools/kconfig/conf.o] Error 1
make[1]: Leaving directory `/home/idwer/coreboot/git/seabios/out'
make: *** [menuconfig] Error 2

What's the right option to extend, COMMONCFLAGS or MAKEFLAGS?

>
> [...]
>>   Linking out/rom16.o
>> ld -T out/romlayout16.lds out/code16.o -o out/rom16.o
>> out/code16.o: In function `handle_12':
>> /home/idwer/coreboot/git/seabios/out/../src/misc.c:29: undefined
>> reference to `__debug_enter'
>
> This is typically due to oddities with the compiler.  What version of
> compiler and binutils do you have?

The distribution's versions are:
iasl 20120620-1
gcc-libs 4.7.1-5
binutils 2.22-9

crossgcc:

~/coreboot/git/coreboot/util/crossgcc/xgcc/bin] $ ./i386-elf-ld -v
GNU ld (GNU Binutils) 2.22

~/coreboot/git/coreboot/util/crossgcc/xgcc/bin] $ ./i386-elf-gcc -v
Using built-in specs.
COLLECT_GCC=./i386-elf-gcc
COLLECT_LTO_WRAPPER=/home/idwer/coreboot/git/coreboot/util/crossgcc/xgcc/lib/gcc/i386-elf/4.6.3/lto-wrapper
Target: i386-elf
Configured with: ../gcc-4.6.3/configure
--prefix=/home/idwer/coreboot/git/coreboot/util/crossgcc/xgcc
--libexecdir=/home/idwer/coreboot/git/coreboot/util/crossgcc/xgcc/lib
--target=i386-elf --disable-werror --disable-shared --disable-libssp
--disable-bootstrap --disable-nls --disable-libquadmath --enable-lto
--enable-languages=c
--with-gmp=/home/idwer/coreboot/git/coreboot/util/crossgcc/xgcc
--with-mpfr=/home/idwer/coreboot/git/coreboot/util/crossgcc/xgcc
--with-mpc=/home/idwer/coreboot/git/coreboot/util/crossgcc/xgcc
--with-libelf=/home/idwer/coreboot/git/coreboot/util/crossgcc/xgcc
--with-pkgversion='coreboot toolchain v1.07 November 1st, 2011'
Thread model: single
gcc version 4.6.3 (coreboot toolchain v1.07 November 1st, 2011)

~/coreboot/git/coreboot/util/crossgcc/xgcc/bin] $ ./iasl | head

Intel ACPI Component Architecture
ASL Optimizing Compiler version 20120420-64 [Jul 13 2012]
Copyright (c) 2000 - 2012 Intel Corporation

> Can you tar up the "out/"
> directory and email it to me?
>
> -Kevin



More information about the SeaBIOS mailing list