Hi everyone,
FILO (0.6 and SVN tested) fails to build as a coreboot payload with the following error:
MAKE FILO HEAD Found Libpayload /home/thomasg/sources/coreboot/payloads/external/FILO/filo/build/libpayload/lib/libpayload.a. CC build/i386/context.o CC build/i386/segment.o CC build/i386/timer.o CC build/i386/sys_info.o CC build/i386/linux_load.o CC build/main/filo.o CC build/main/strtox.o CC build/main/elfload.o CC build/main/ipchecksum.o CC build/main/grub/grub.o CC build/main/grub/builtins.o /home/thomasg/sources/coreboot/payloads/external/FILO/filo/main/grub/builtins.c:456:2: warning: #warning "FIND not implemented yet." CC build/main/grub/cmdline.o CC build/main/grub/char_io.o CC build/main/grub/completions.o CC build/main/grub/md5.o CC build/fs/blockdev.o CC build/fs/vfs.o CC build/fs/eltorito.o CC build/fs/fsys_ext2fs.o CC build/fs/fsys_fat.o CC build/fs/fsys_reiserfs.o CC build/fs/fsys_iso9660.o CC build/fs/fsys_cbfs.o CC build/fs/cbfs.o /home/thomasg/sources/coreboot/payloads/external/FILO/filo/fs/cbfs.c:113:20: error: conflicting types for ‘cbfs_find_file’ /home/thomasg/sources/coreboot/payloads/external/FILO/filo/build/libpayload/include/cbfs_core.h:175:7: note: previous declaration of ‘cbfs_find_file’ was here make[2]: *** [/home/thomasg/sources/coreboot/payloads/external/FILO/filo/build/fs/cbfs.o] Error 1 make[1]: *** [filo] Error 2 make: *** [filo] Error 2
The reason is, that cbfs_find_file is defined in coreboot as "void *cbfs_find_file(const char *name, int type)" while FILO defines it as "struct cbfs_stage *cbfs_find_file(const char *name, int type)". As far as I can tell it works either way as the void is cast to the right type where used, but I assume it got changed somewhere for a reason, I just don't know which way it should be.
I could provide a patch, but I suggest that someone who actually knows the code take a look.
If you need any more information, let me know.
thomasg