As a test of my tolerance for frustration I'm building grub2 on FreeBSD, DragonFlyBSD, NetBSD, and OpenBSD, and (naturally) each build fails in a different way, but all the problems seem related to mutations of gcc.
NetBSD: The problem is the -nostdlib flag when linking kernel.exec. Adding -lc and -lgcc solves part of the problem, but then libc wants crt0.o: # nm --defined-only /usr/lib/crt0.o 00000018 T ___start 00000000 D __progname <---- Needed by libc 00000000 B __ps_strings 00000000 T __start 000000f0 T _rtld_setup 00000000 T _start <----- Conflicts with i386/pc/startup.S 00000004 C environ <----- Needed by libc OpenBSD: OBSD is off on another planet, as usual. They use a non-standard definition of memcpy in <string.h>: void *memcpy(void *, const void *, size_t) __attribute__ ((__bounded__(__buffer__,1,3))) __attribute__ ((__bounded__(__buffer__,2,3))); FreeBSD: lnxboot.S: Assembler messages: lnxboot.S:49: Error: `0x200+data_start - data_next(%ebx,%eax)' is not a valid 16 bit base/index expression lnxboot.S:264: Error: `(%esi,%eax)' is not a valid 16 bit base/index expression lnxboot.S:265: Error: `(%edi,%eax)' is not a valid 16 bit base/index expression DragonFlyBSD: This was easy. All I did was add -lc and -lgcc to kernel_img_LDFLAGS in i386-pc.mk. I have no idea why the same trick doesn't work for NetBSD. Anyone have any ideas for elegant ways to fix these four problems? Thanks! _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel