grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Compiling grub2 on *BSD?


From: walt
Subject: Compiling grub2 on *BSD?
Date: Sat, 26 Jan 2008 09:08:59 -0800
User-agent: Thunderbird 3.0a1pre (X11/2008012604)

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!





reply via email to

[Prev in Thread] Current Thread [Next in Thread]