Victor Roman Archidona kirjoitti:
Thanks for your feedback Kai. In the binutils mailing list has been sent a patch that fixes the problem. The URL for anyone interested in it is: http://www.sourceware.org/ml/binutils/2006-07/msg00192.html
Thanks to you too! I tried also a crosscompiler for the 32-bit FreeBSD 6.1/i386 and checked if the 'bfd/config.bfd' had anything special for this target, different from the Linux/i386 for instance. And it definitely had, and this special 'bfd_elf32_i386_freebsd_vec' not listed for the 'x86_64-*-freebsd*'... Adding that maybe fixed the 32-bit support with '-m32' but not the 64-bit. So I already guessed that something should still be done to implement that missing 'bfd_elf64_x86_64_freebsd_vec'. The 'alpha' port for FreeBSD had its own special 'elf64_alpha_freebsd_vec' already... Why the official GNU binutils don't have this support for the FreeBSD/x86_64 (I checked the '060713' snapshots too), was of course weird. Anyway getting it "locally" should now succeed...
An example of binutils-2.17 with patch applied: root@localhost ~ # gcc -static test.c -o test root@localhost ~ # ./test it works! root@localhost ~ # file test test: ELF 64-bit LSB executable, AMD x86-64, version 1 (FreeBSD), for FreeBSD 6.1, statically linked, for FreeBSD 6.1, not stripped root@localhost ~ #
The 'i586-freebsd6.1' target toolchains (gcc-3.4.6, 4.0.3 and 4.1.1) I built seemed to produce quite "right" executables, lets see what the 'x86_64-freebsd6.1' ones will do now. Of course reproducing all their 'libgcc_s.so.1's and 'libstdc++.so's must be done...