On 09/09/2010 05:05 AM, JonY wrote:
> On 9/9/2010 04:27, Mario Emmenlauer wrote:
>>
>> Hi JonY,
>>
>> On 09/07/2010 12:03 PM, JonY wrote:
>>> On 9/7/2010 15:20, Mario Emmenlauer wrote:
>>>>> On 9/7/2010 01:34, Mario Emmenlauer wrote:
>>>>>> On 09/06/2010 04:52 PM, JonY wrote:
>>>>>>> On 9/6/2010 19:50, Mario Emmenlauer wrote:
>>>>>>>>> On 9/6/2010 15:52, Mario Emmenlauer wrote:
>>>>>>>>>> I'm the original author of the issue [0] that Ismail referenced.
>>>>>>>>>> During
>>>>>>>>>> the last months since my report, I've repeatedly re-tried
>>>>>>>>>> numerous
>>>>>>>>>> times,
>>>>>>>>>> but failed to build the canadian cross. Actually, back then
>>>>>>>>>> mostly
>>>>>>>>>> the
>>>>>>>>>> same suggestions where given, tried, and failed. As you can see
>>>>>>>>>> from
>>>>>>>>>> my
>>>>>>>>>> post, I've tried the following compile instructions:
>>>>>>>>>> - makefile: mingw64 svn
>>>>>>>>>> experimental/buildsystem/makebuildroot-test.mk
>>>>>>>>>> - makefile: mingw64 svn
>>>>>>>>>> experimental/buildsystem/makebuildroot.mk
>>>>>>>>>> - compile instructions from mingw64 sourceforge wiki
>>>>>>>>>> all with variations of multilib, gcc-versions, ld-versions etc...
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Would it maybe be a good idea that someone who got the canadian
>>>>>>>>>> cross
>>>>>>>>>> running create a working Makefile? There are the excellent
>>>>>>>>>> Makefiles
>>>>>>>>>> "makebuildroot-test.mk" and "makebuildroot.mk" (from your
>>>>>>>>>> project),
>>>>>>>>>> that
>>>>>>>>>> both follow the wiki compile instructions (more or less), but
>>>>>>>>>> both
>>>>>>>>>> fail
>>>>>>>>>> in the pre-last step of ld linking.
>>>>>>>>>> A working Makefile would be a good documentation, reference,
>>>>>>>>>> and a
>>>>>>>>>> perfect
>>>>>>>>>> standard for regression testing.
>>>>>>>>>>
>>>>>>>>>> [0]
>>>>>>>>>> http://www.mail-archive.com/[email protected]/msg00839.html
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Did you link lib to lib64? And do you have lib32? Native
>>>>>>>>> cross-back
>>>>>>>>> works fine for me.
>>>>>>>>
>>>>>>>> As I wrote above, I tried amongst many other things your
>>>>>>>> (unmodified)
>>>>>>>> makefile "makebuildroot-test.mk", so yes lib was linked to lib64.
>>>>>>>>
>>>>>>>>
>>>>>>>>> Are you talking about a triple cross? I tried
>>>>>>>>> i686-linux->sparc-linux-mingw64 before, it works fine too.
>>>>>>>>>
>>>>>>>>> You might have better chance with makebuildroot-test.mk for
>>>>>>>>> canadian
>>>>>>>>> cross, I've used it for the sparc triple cross.
>>>>>>>>
>>>>>>>> Hmm not sure I follow here. Have you a running canadian cross fro
>>>>>>>> mingw-w64 on Linux? As I wrote above, I have tried the suggested
>>>>>>>> "makebuildroot-test.mk" for canadian cross, and it fails with the
>>>>>>>> described error: "make all-target-libgcc", message is:
>>>>>>>> [cut]/build/root/x86_64-w64-mingw32/bin/ld: skipping
>>>>>>>> incompatible
>>>>>>>> \
>>>>>>>> [cut]/build/root/mingw/lib/libmingw32.a when searching for
>>>>>>>> -lmingw32
>>>>>>>>
>>>>>>>> Which revision of the makefile have you tested?
>>>>>>>>
>>>>>>>
>>>>>>> Those are actually warnings, ld will continue to walk through the
>>>>>>> directories. Can you post the last command and all of its
>>>>>>> errors/warnings?
>>>>>>
>>>>>> You are right, I posted the warnings only, sorry:( The error is that
>>>>>> ld fails to find a compatible libmingw32. I don't have the log here
>>>>>> right now, but can produce it if you like? Here a bit more
>>>>>> information
>>>>>> from my original post [0]:
>>>>>>
>>>>>> There are more identical errors for other libs like kernel32 and
>>>>>> msvcrt.
>>>>>>
>>>>>> objdump lists the correct format:
>>>>>> [cut]/build/root/bin/x86_64-w64-mingw32-objdump
>>>>>> --archive-headers \
>>>>>> [cut]/build/root/x86_64-w64-mingw32/lib/libmingw32.a
>>>>>> [...]
>>>>>> lib64_libmingw32_a-tlsmcrt.o: file format pe-x86-64
>>>>>>
>>>>>> Also, ld seems to be valid:
>>>>>> [cut]/build/root/bin/x86_64-w64-mingw32-ld: supported targets: \
>>>>>> pe-x86-64 pei-x86-64 elf64-x86-64 elf64-l1om elf64-little
>>>>>> elf64-big
>>>>>> \
>>>>>> elf32-little elf32-big srec symbolsrec verilog tekhex
>>>>>> binary ihex
>>>>>>
>>>>>
>>>>> I suspect it was scanning for 32bit objects. 32bit support also
>>>>> seems to
>>>>> be missing in ld.
>>>>>
>>>>> Check the makefile if you've enabled multilib options.
>>>>
>>>> I have tried it about ten times repeatedly with and without multilib,
>>>> and every time started from scratch (removing all sources and
>>>> binaries).
>>>> I have redirected all output to a logfile and checked that the switches
>>>> for enabling or disabling multilib where indeed used, so I'm sure there
>>>> was no error in that part.
>>>>
>>>> BTW, I once messed up the multilib switches, then it did not even
>>>> compile until the second run, it failed in the first bootstrapping
>>>> of gcc. Now it fails in the second run, final step when it should
>>>> link gcc.
>>>>
>>>
>>> This is very strange, can you attach the build logs, including the
>>> command used to invoke the makefile?
>>
>> Here is the logfile:
>> http://data.marssoft.de/makebuildroot-test.mk-log20100907a.txt.lzma
>>
>> I used the following changes and/or versions of packages (note esp. the
>> gcc-4.5.1 and pthreads from 2010-02-28):
>>
>> GMP_VERSION ?= 5.0.1
>> MPFR_VERSION ?= 3.0.0
>> MPC_VERSION ?= 0.8.2
>> PPL_VERSION ?= 0.10.2
>> CLOOG_VERSION ?= 0.15.9
>> MINGW_BRANCH ?= trunk
>> MINGW_REVISION ?= HEAD
>> GCC_BRANCH ?= tags/gcc_4_5_1_release
>> PTHREADS_CVS_CO_ARGS ?= -D 2010-02-28
>> MAKE_OPTS ?= -j4
>>
>> The logfile is complete, starting with unpacking the updated source
>> tree and ending with ld failing to link. Other than the options
>> shown above I did not modify anything, except for adding the pthreads
>> checkout revision to the CVS command.
>>
>
> Something is not right about the logs.
>
> GCC was built with --disable-multilib, but the crt is able to build with
> -m32 passes without errors.
>
> CRT also wasn't configured with --enable-lib32, but builds it anyway. It
> should only build if configured explicitly.
>
> And finally ld could not understand its own libraries. I assume you are
> using binutils from CVS, since that 32bit target is enabled
> automatically even without specifying --enable-targets.
>
> I honestly do not know what is going on.
>
> Try doing ENABLE_MULTILIB=Y for the makefile.
I tried to compile with ENABLE_MULTILIB=Y but with no success. I
started from scratch, and used the command line:
make -f makebuildroot-test.mk MAKE_OPTS="-j4" ENABLE_MULTILIB="Y" \
GCC_BRANCH="tags/gcc_4_5_1_release"
Here is the logfile:
http://data.marssoft.de/makebuildroot-test.mk-log20100910b.txt.lzma
Any more things I could try? All the best,
Mario
------------------------------------------------------------------------------
Automate Storage Tiering Simply
Optimize IT performance and efficiency through flexible, powerful,
automated storage tiering capabilities. View this brief to learn how
you can reduce costs and improve performance.
http://p.sf.net/sfu/dell-sfdev2dev
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public