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

Re: [Glibc-bsd-commits] r1827 - trunk/web/patches



Petr Salinger a écrit :
> Hi.

Hi!

>> First the change from elf64-x86-64 to elf64-x86-64-freebsd breaks the
>> build of the kernel ("ld: target elf64-x86-64 not found"). This can
>> probably be fixed, but I wonder to know if this change is really
>> necessary? Plain FreeBSD amd64 seems to use elf64-x86-64.
> 
> The plain FreeBSD does it in "the right way" only
> for two (first) ports - i386 and alpha. For all others they use hack
> for seting ELFOSABI_FREEBSD. So the "target elf64-x86-64" generated on 
> Linux is not same asthe one generated on FreeBSD :-(
> It disallows building from the same source on both platforms,
> cross compilers and so on.
> IMO, the right way here is to use elf64-x86-64-freebsd in linker scripts.

Ok, it's what I have done for the kernel. I hope the number of affected
packages is rather limited.

>> Second this seems to cause some problems when trying to build a bi-arch
>> gcc. I get: File format is ambiguous. Matching formats:
>> elf32-i386-freebsd elf32-i386.
>>
>> Changing the patch so that only elf64-x86-64 and elf32-i386-freebsd
>> format are supported seems to fix those problems. What do you think?
> 
> I hope you meant "elf64-x86-64-freebsd and elf32-i386-freebsd",
> i.e. the right chunk of 2.17 patch should be:

oops, yes, sorry for the mistake.

> diff -urN binutils-2.17/bfd/config.bfd binutils-2.17/bfd/config.bfd
> --- binutils-2.17/bfd/config.bfd
> +++ binutils-2.17/bfd/config.bfd
> @@ -551,8 +551,8 @@
>       targ_selvecs="bfd_elf32_i386_vec i386coff_vec"
>       ;;
>     x86_64-*-freebsd* | x86_64-*-kfreebsd*-gnu)
> -    targ_defvec=bfd_elf64_x86_64_vec
> -    targ_selvecs="bfd_elf32_i386_vec i386coff_vec bfd_efi_app_ia32_vec"
> +    targ_defvec=bfd_elf64_x86_64_freebsd_vec
> +    targ_selvecs="bfd_elf32_i386_freebsd_vec i386coff_vec bfd_efi_app_ia32_vec"
>       ;;
>     x86_64-*-netbsd* | x86_64-*-openbsd*)
>       targ_defvec=bfd_elf64_x86_64_vec
> 
> 
> This way there will be no ambiguity. It looks like the linker is able to 
> solve ambiguity  only partially - iff one of possible format is 
> "targ_defvec". I overlooked this during preparation of the patch.
> After testing, we should ask upstream
> to just drop "bfd_elf32_i386_vec bfd_elf64_x86_64_vec" from targ_selvecs.

This is exactly what I done locally to build a bi-arch toolchain, so I
can confirm that it is the right solution.

I have almost finished to build a bi-arch toolchain on kfreebsd-amd64. I
  am currently starting a full rebuild of the involved packages. I think
it will be ready for the week-end.

Bye,
Aurelien

-- 
  .''`.  Aurelien Jarno	            | GPG: 1024D/F1BCDB73
 : :' :  Debian developer           | Electrical Engineer
 `. `'   aurel32@debian.org         | aurelien@aurel32.net
   `-    people.debian.org/~aurel32 | www.aurel32.net



Reply to: