Bug #527
openCan't compile coreboot on Arch Linux
0%
Description
I want to compile coreboot for my Gigabyte GA-H61M-DS2 mainboard, but I only found a short guide for this board at this site: https://www.iot-tech.dev/full.php?ar=166
After downloaded the coreboot git repository, It gave me this error:
/home/zhongli/coreboot/util/crossgcc/xgcc/bin/x86_64-elf-ld.bfd: build/romstage/console/vtxprintf.o: in function `number':
/home/zhongli/coreboot/src/console/vtxprintf.c:63:(.text.number+0x12b): undefined reference to `__udivmoddi4'
/home/zhongli/coreboot/util/crossgcc/xgcc/bin/x86_64-elf-ld.bfd: build/romstage/lib/gcc.o: in function `__wrap___divdi3':
/home/zhongli/coreboot/src/lib/gcc.c:19:(.text.__wrap___divdi3+0x1): undefined reference to `__divdi3'
/home/zhongli/coreboot/util/crossgcc/xgcc/bin/x86_64-elf-ld.bfd: build/romstage/lib/gcc.o: in function `__wrap___udivdi3':
/home/zhongli/coreboot/src/lib/gcc.c:20:(.text.__wrap___udivdi3+0x1): undefined reference to `__udivdi3'
make: *** [src/arch/x86/Makefile.mk:191: build/cbfs/fallback/romstage.debug] Error 1
And I'll put my config file on here.
Any help ?
Files
Updated by Maximilian Brune 10 months ago
When I build this defconfig it works (at least without the payload). You could try removing the ANY_TOOLCHAIN option, because it seems like that your libgcc.a is not correct.
Updated by Nico Huber 10 months ago
/home/zhongli/coreboot/util/crossgcc/xgcc/bin/x86_64-elf-ld.bfd: build/romstage/console/vtxprintf.o: in function `number':
Actually, this looks like it's using the reference toolchain, but the 64-bit one. xcompile
picks up 64-bit toolchains even if they don't have a libgcc for 32-bit builds.
If you are trying a 32-bit build (the default, so I guess yes), try make crossgcc-i386 CPUS=$(nproc)
.
Updated by Peter Daru 4 months ago ยท Edited
Sorry if this doesn't fit here. I thought this is similar if not same issue as op's one.
I was following doc tutorial for qemu x64 and also couldn't compile. I run fully up to date installation (apart from kernel itself). Turns out doing $ make clang CPUS=$(nproc)
and then $ make
I was able to compile.
This is what I got following tutor:
Makefile:358: warning: overriding recipe for target '/home/daru/Git/coreboot/payloads/coreinfo/libpayload/arch/x86/exec.libc.o'
Makefile:358: warning: ignoring old recipe for target '/home/daru/Git/coreboot/payloads/coreinfo/libpayload/arch/x86/exec.libc.o'
LPGCC coreinfo.bin
/home/daru/Git/coreboot/util/crossgcc/xgcc/lib/gcc/x86_64-elf/14.2.0/../../../../x86_64-elf/bin/ld.bfd: warning: exception_asm.libc.o: missing .note.GNU-stack section implies executable stack
/home/daru/Git/coreboot/util/crossgcc/xgcc/lib/gcc/x86_64-elf/14.2.0/../../../../x86_64-elf/bin/ld.bfd: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
/home/daru/Git/coreboot/util/crossgcc/xgcc/lib/gcc/x86_64-elf/14.2.0/../../../../x86_64-elf/bin/ld.bfd: warning: build/coreinfo.bin has a LOAD segment with RWX permissions
/home/daru/Git/coreboot/util/crossgcc/xgcc/lib/gcc/x86_64-elf/14.2.0/../../../../x86_64-elf/bin/ld.bfd: build/cpuinfo_module.o: in function `cpuinfo_module_init':
cpuinfo_module.c:(.text+0x474): undefined reference to `__udivdi3'
/home/daru/Git/coreboot/util/crossgcc/xgcc/lib/gcc/x86_64-elf/14.2.0/../../../../x86_64-elf/bin/ld.bfd: build/timestamps_module.o: in function `timestamp_print_entry.constprop.0':
timestamps_module.c:(.text+0x157): undefined reference to `__udivdi3'
/home/daru/Git/coreboot/util/crossgcc/xgcc/lib/gcc/x86_64-elf/14.2.0/../../../../x86_64-elf/bin/ld.bfd: timestamps_module.c:(.text+0x194): undefined reference to `__udivdi3'
/home/daru/Git/coreboot/util/crossgcc/xgcc/lib/gcc/x86_64-elf/14.2.0/../../../../x86_64-elf/bin/ld.bfd: /home/daru/Git/coreboot/payloads/coreinfo/libpayload/libpayload.a(time.libc.o): in function `update_clock':
/home/daru/Git/coreboot/payloads/libpayload/libc/time.c:60:(.text.time+0xe8): undefined reference to `__udivdi3'
/home/daru/Git/coreboot/util/crossgcc/xgcc/lib/gcc/x86_64-elf/14.2.0/../../../../x86_64-elf/bin/ld.bfd: /home/daru/Git/coreboot/payloads/libpayload/libc/time.c:65:(.text.time+0x11d): undefined reference to `__udivdi3'
/home/daru/Git/coreboot/util/crossgcc/xgcc/lib/gcc/x86_64-elf/14.2.0/../../../../x86_64-elf/bin/ld.bfd: /home/daru/Git/coreboot/payloads/coreinfo/libpayload/libpayload.a(time.libc.o):/home/daru/Git/coreboot/payloads/libpayload/libc/time.c:68: more undefined references to `__udivdi3' follow
/home/daru/Git/coreboot/util/crossgcc/xgcc/lib/gcc/x86_64-elf/14.2.0/../../../../x86_64-elf/bin/ld.bfd: /home/daru/Git/coreboot/payloads/coreinfo/libpayload/libpayload.a(printf.libc.o): in function `print_number':
/home/daru/Git/coreboot/payloads/libpayload/libc/printf.c:261:(.text.printf_core+0x5c0): undefined reference to `__udivmoddi4'
/home/daru/Git/coreboot/util/crossgcc/xgcc/lib/gcc/x86_64-elf/14.2.0/../../../../x86_64-elf/bin/ld.bfd: /home/daru/Git/coreboot/payloads/coreinfo/libpayload/libpayload.a(gcd.libc.o): in function `gcd':
/home/daru/Git/coreboot/src/commonlib/bsd/gcd.c:14:(.text.gcd+0x58): undefined reference to `__umoddi3'
/home/daru/Git/coreboot/util/crossgcc/xgcc/lib/gcc/x86_64-elf/14.2.0/../../../../x86_64-elf/bin/ld.bfd: /home/daru/Git/coreboot/src/commonlib/bsd/gcd.c:19:(.text.gcd+0x76): undefined reference to `__umoddi3'
/home/daru/Git/coreboot/util/crossgcc/xgcc/lib/gcc/x86_64-elf/14.2.0/../../../../x86_64-elf/bin/ld.bfd: /home/daru/Git/coreboot/payloads/coreinfo/libpayload/libpayload.a(timer.libc.o): in function `get_cpu_khz_xtal':
/home/daru/Git/coreboot/payloads/libpayload/arch/x86/timer.c:121:(.text.get_cpu_speed+0x9f): undefined reference to `__udivdi3'
/home/daru/Git/coreboot/util/crossgcc/xgcc/lib/gcc/x86_64-elf/14.2.0/../../../../x86_64-elf/bin/ld.bfd: /home/daru/Git/coreboot/payloads/libpayload/arch/x86/timer.c:121:(.text.get_cpu_speed+0xb0): undefined reference to `__udivdi3'
/home/daru/Git/coreboot/util/crossgcc/xgcc/lib/gcc/x86_64-elf/14.2.0/../../../../x86_64-elf/bin/ld.bfd: /home/daru/Git/coreboot/payloads/coreinfo/libpayload/libpayload.a(timer.libc.o): in function `calibrate_pit':
/home/daru/Git/coreboot/payloads/libpayload/arch/x86/timer.c:78:(.text.get_cpu_speed+0x17c): undefined reference to `__udivdi3'
collect2: error: ld returned 1 exit status
make[2]: *** [../libpayload/Makefile.payload:104: build/coreinfo.bin] Error 1
make[1]: *** [Makefile:64: defaultbuild] Error 2
make: *** [payloads/Makefile.mk:38: payloads/coreinfo/build/coreinfo.elf] Error 2