[Top][All Lists]

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

Re: GRUB2 Build on Mac OS X

From: Andrei Warkentin
Subject: Re: GRUB2 Build on Mac OS X
Date: Thu, 8 Dec 2005 17:06:43 -0600

On Dec 8, 2005, at 4:01 PM, address@hidden wrote:

The Mac OS X GCC compiler will not build GRUB2, due static linking at address 0x2000; this error can be confirmed during the configure process. If I could build GRUB2 using the Mac OS X GCC, I would be able to build GRUB2 images from Mac OS X.

The OS X ld is not the GNU linker - so sure it can't link at 0x2000, it doesn't know what -T means. You would probably use some permutation of the -segaddr option. Moreover, OS X uses the Mach-O binary format, not ELF...

The binary I attempted the build using the cross compiler tool chain powerpc-elf, would have executed on PowerPC Linux, but I would not build due to the nested function support being disabled in the Apple GCC

I don't think I understand - you can build a bootstrap GCC targetted at powerpc-linux, from the sources obtained via official GNU ftp. There would not be any restrictions there... This would allow you to build powerpc-elf binaries needed by OF.

Since the GRUB2 tools built using a Linux GCC compiler will suffice at the moment, I can see why the team is not overly concerned with this issue. If GRUB2 is going to be portable(Mac OS X), then some changes will be needed to accomplish this goal.

I think it would be an interesting idea to allow the use of different toolsets to produce the boot-time files and the system utilities. This way, the boot-time stuff can be build as powerpc-elf, while the OS X system utilities can be built as Mach-O (well, not 'can' - should, there is no other way here).

If stack execution support is disabled in future releases of other operating systems, it will become an issue of nested functions implemented with stack execution, and less of an Apple GCC compiler issue.

I do agree that more arguments will be needed on function calls if nested functions are not going to be used, if the list is willing to accept patches to address this issue.

As far as the GRUB2 tools, binaries executed on the PowerPC platform only need to be pure ELF. I am not sure if creating Mach-O boot binaries will yield any benefits for bringing up a kernel. If GRUB2 is to be used on the Mac OS X operating system, the tools need to be Mach-O based.


-----Original Message-----
From: Andrei Warkentin [mailto:address@hidden
Sent: Thursday, December 8, 2005 08:10 PM
To: 'The development of GRUB 2'
Subject: Re: GRUB2 Build on Mac OS X

I understand (still had my mind on GRUB 1 :)) - then looks like two
GCC installations will be
required to construct GRUB2 on OS X - one to generate OS X-hosted
GRUB utilities (which will
be Mach-O files), and one to generate ELF files  that will be used in
the booting process.

On Dec 8, 2005, at 2:00 PM, Marco Gerards wrote:

Andrei Warkentin <address@hidden> writes:

Hi Andrei,

There is another issue with GRUB2 on OS X which I am not sure has
been brought up yet.
Right now, AFAIK (but I haven't tested it), GRUB2 (the part that runs
from OpenFrimware) can be built
with a bootstrap powerpc-elf-targetted GCC hosted on OS X. However,
the local GRUB2 binary (one that can run
from OS X and perform installation and some such) needs to be
compiled with the OS X compiler. Why? OS X doesn't use ELF -
it uses Mach-O. If you want to be able to build GRUB2 in OS X with
purely the OS X GCC, then the build procedure must take into account
the Mach-O
output format. AFAIK, new OpenFirmware versions (3.x) can boot Mach-O
binaries but I haven't had a chance to experiment with this yet.

You mean the utilities like grub-setup, grub-mkimage, grub-emu, etc?
They should be able to run on macos, right?  Of perhaps I am missing
your point.

If those utilities can be build in a better way so nothing breaks and
it will work on macos, I am quite interested in hearing how to solve

Mach-O binaries for booting is a different subject.  We rely on ELF
files, grub-mkimage even creates ELF files and uses ELF load
segments.  Without it GRUB just won't work, unless grub-mkimage is
changed intensively. So it seems easier just to use ELFs in any case.


Grub-devel mailing list

Grub-devel mailing list

Grub-devel mailing list

reply via email to

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