I'm experiencing the problem shown below when trying to build coreboot release 3324 for Geode LX evaluation board db800 on 64-bit host. It seems ld is not invoked properly.
..
Usage: /usr/bin/ld [options] file...
..
/usr/bin/ld: supported targets: elf64-x86-64 elf32-i386 a.out-i386-linux efi-app-ia32 elf64-little elf64-big elf32-little elf32-big srec symbolsrec tekhex binary ihex
It seems your ld will prefer/default to elf64-x86-64, and the options specified in the build scripts are possibly only available for elf32-i386.
Maybe --oformat elf32-i386 in the ld command line will help?
I changed the file src/config/Config.lb like this:
----------------------------------------------------------- makerule coreboot depends "crt0.o $(INIT-OBJECTS) $(COREBOOT_APC) $(COREBOOT_RAM_ROM) ldscript.ld" action "$(CC) $(DISTRO_LFLAGS) -nostdlib -nostartfiles -static --oformat elf32-i386 -o $@ -T ldscript.ld crt0.o $(INIT-OBJECTS)" action "$(CROSS_COMPILE)nm -n coreboot | sort > coreboot.map" end -----------------------------------------------------------
The file targets/amd/db800/db800/fallback/Makefile is generated accordingly:
----------------------------------------------------------- coreboot: crt0.o $(INIT-OBJECTS) $(COREBOOT_APC) $(COREBOOT_RAM_ROM) ldscript.ld $(CC) $(DISTRO_LFLAGS) -nostdlib -nostartfiles -static --oformat elf32-i386 -o $@ -T ldscript.ld crt0.o $(INIT-OBJECTS) $(CROSS_COMPILE)nm -n coreboot | sort > coreboot.map -----------------------------------------------------------
but linker still does not like it :(