One of our SeaBIOS patches causes build errors with GCC 15:
src/romfile.c: In function 'romfile_loadfile_g':
src/romfile.c:65:18: error: too many arguments to function 'malloc_fn'; expected 0, have 1
65 | char *data = malloc_fn(filesize+add_len);
| ^~~~~~~~~ ~~~~~~~~~~~~~~~~
src/romfile.c: In function 'romfile_loadfile':
src/romfile.c:88:50: error: passing argument 3 of 'romfile_loadfile_g' from incompatible pointer type [-Wincompatible-pointer-types]
88 | char *data = romfile_loadfile_g(name, psize, &malloc_tmphigh, 1);
| ^~~~~~~~~~~~~~~
| |
| void * (*)(u32) {aka void * (*)(unsigned int)}
src/romfile.c:55:28: note: expected 'void * (*)(void)' but argument is of type 'void * (*)(u32)' {aka 'void * (*)(unsigned int)'}
55 | void *(*malloc_fn)(), int add_len)
| ~~~~~~~~^~~~~~~~~~~~
In file included from src/romfile.c:8:
src/malloc.h:42:21: note: 'malloc_tmphigh' declared here
42 | static inline void *malloc_tmphigh(u32 size) {
| ^~~~~~~~~~~~~~
make: *** [Makefile:142: out/src/romfile.o] Error 1
make: *** Waiting for unfinished jobs....
src/optionroms.c: In function 'vgarom_setup':
src/optionroms.c:468:60: error: passing argument 3 of 'romfile_loadfile_g' from incompatible pointer type [-Wincompatible-pointer-types]
468 | void *mxm_sis = romfile_loadfile_g("mxm-30-sis", NULL, &malloc_low, 0);
| ^~~~~~~~~~~
| |
| void * (*)(u32) {aka void * (*)(unsigned int)}
In file included from src/optionroms.c:18:
src/romfile.h:17:34: note: expected 'void * (*)(void)' but argument is of type 'void * (*)(u32)' {aka 'void * (*)(unsigned int)'}
17 | void *(*malloc_fn)(), int add_len);
| ~~~~~~~~^~~~~~~~~~~~
In file included from src/optionroms.c:16:
src/malloc.h:30:21: note: 'malloc_low' declared here
30 | static inline void *malloc_low(u32 size) {
| ^~~~~~~~~~
make: *** [Makefile:141: out/src/optionroms.o] Error 1
make: Leaving directory '/tmp/lbmk/src/seabios/default'
This is because the function pointer defined as `void *(*malloc_fn)()`
refers to a function that takes no arguments, unlike `malloc_tmphigh`
which takes an unsigned int. Add the missing argument type.
Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
Libreboot
Documentation: libreboot.org
Support: #libreboot on
Libera IRC
Libreboot provides libre boot firmware on supported motherboards. It replaces proprietary vendor BIOS/UEFI implementations, by
- Using coreboot to initialize the hardware (e.g. memory controller, CPU, etc.) while minimizing unwanted functionality (e.g. backdoors such as the Intel Management Engine)
- ... which runs a payload such as SeaBIOS, GRUB, or U-Boot
- ... which loads your operating system's boot loader (BSD and Linux-based systems are supported).
Why use Libreboot, and what is coreboot?
A lot of users who use libre operating systems still use proprietary boot firmware, which often contain backdoors and bugs, hampering user freedom and right to repair.
coreboot provides libre boot firmware by initializing the hardware then running a payload. However, coreboot is notoriously difficult to configure and install for most non-technical users, requiring detailed technical knowledge of hardware.
Libreboot solves this by being a coreboot distribution (in the same way that Alpine Linux is a Linux distribution). It provides a fully automated build system that downloads and compiles pre-configured ROM images for supported motherboards, so end-users could easily fetch images to flash onto their devices.
Libreboot also produces documentation aimed at non-technical users and excellent user support via IRC.
Contribute
You can check bugs listed on the bug tracker.
You may use Codeberg pull requests to send patches with bug fixes or other improvements. This repository hosts the code for the main build system. The website lives in a separate repository.
Development is also done on the IRC channel.
License for this README
It's just a README file. It is released under Creative Commons Zero, version 1.0.