grub-devel
[Top][All Lists]
Advanced

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

Re: [PATCH] remove target_os


From: Javier Martín
Subject: Re: [PATCH] remove target_os
Date: Mon, 26 Jan 2009 23:17:09 +0100

Hi GRUB devs,
El lun, 26-01-2009 a las 20:57 +0100, Christian Franke escribió:
> Robert Millan wrote:
> > Hi,
> >
> > Based on the description of host/target triplets in configure.ac:
> >
> > dnl   build  -- the environment for building GRUB
> > dnl   host   -- the environment for running utilities
> > dnl   target -- the environment for running GRUB
> >
> > it seems that target_os is an oxymoron.  There's no OS in the environment
> > where GRUB will run (well, there's the firmware, but we already use
> > target_vendor for that, and _os has a well-defined meaning).
> >
> > Attached patch fixes that by supressing all references to target_os, and
> > replacing them with host_os where suitable.
> >
> > Christian: since this mostly affects Cygwin, could you verify that it 
> > doesn't
> > cause breakage before I commit it?
> >
> >   
> 
> Hi Robert,
> 
> thanks for sending the patch first. Cygwin build looks good.
> 
> 
> But even if GRUB itself is build for some $target_cpu-$target_vendor 
> (i386-pc), the target_os is not useless if cross-compilation support is 
> desired:
> 
> - GRUB tools like grub-setup are build for the target_os
> - Package structure may depend on target_os.
> 
> - The gcc code generator may emit special code tailored for the assumed 
> target_os
> Examples:
> Stack frame checks
> Nested function trampolines (__enable_execute_stack())
> 
> Unfortunately, gcc has no '-fno_os' option to specify the bare CPU as 
> target.

Might -ffreestanding be what you are looking for?

> Fortunately, all current issues can be handled by autoconf checks.
> 
> 
> >  AC_MSG_CHECKING([for command to convert module to ELF format])
> > -case "${host_os}:${target_os}" in
> > -  cygwin:cygwin) TARGET_OBJ2ELF='grub-pe2elf' ;;
> > +case "${host_os}" in
> > +  cygwin) TARGET_OBJ2ELF='grub-pe2elf' ;;
> >    *) ;;
> >  esac
> >   
> 
> This won't work for a Linux cross compiler hosted on Cygwin. It would 
> emit ELF format and does not need pe2elf.

A, say, AMD64 Linux cross compiler hosted on x86 Cygwin would have
$build=i686-pc-cygwin and $host=amd64-linux-gnu. Thus, no conflict ought
to arise even with cross compilation enabled.

AFAIK, the full power of $build+$host+$target only matters when building
_compilers_ (and binutils, etc.), because you might want to use an
AMD64/Linux machine to build a compiler that will run on PPC/Darwin but
produce executables for a x86/Cygwin machine

> 
> But all this is theoretical unless cross compilation is really needed.
>
> Christian
> 
> 
> 
> _______________________________________________
> Grub-devel mailing list
> address@hidden
> http://lists.gnu.org/mailman/listinfo/grub-devel

Attachment: signature.asc
Description: Esta parte del mensaje está firmada digitalmente


reply via email to

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