This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [PATCH] Fix LD test FAIL: bootstrap with --static on Cygwin
- From: Dave Korn <dave dot korn dot cygwin at googlemail dot com>
- To: Dave Korn <dave dot korn dot cygwin at googlemail dot com>, binutils at sourceware dot org
- Date: Mon, 16 Mar 2009 11:54:07 +0000
- Subject: Re: [PATCH] Fix LD test FAIL: bootstrap with --static on Cygwin
- References: <49BB32A3.9030501@gmail.com> <20090316084027.GA2440@bubble.grove.modra.org>
Alan Modra wrote:
> On Sat, Mar 14, 2009 at 04:29:23AM +0000, Dave Korn wrote:
>> On Cygwin, statically linking against -lintl means you have to explicitly
>> add -liconv.
>
> You did link against -liconv! Unfortunately in the wrong order,
> though.
>
>> Executing on host: sh -c {/gnu/binutils/obj1908-i686-pc-cygwin/ld/ld-new -m
>> i386pe -o tmpdir/ld1 /lib/crt0.o --static -liconv tmpdir/ld-partial.o
>
> Hmm, how did you manage to get -liconv here?
>
Oops, sorry for the confusion. I cut and pasted a log line from an earlier
attempt where I had experimented with adding -liconv directly to $flags after
the "--static" option rather than introduce the new $extralibs variable.
Here's what it looks like from a clean tree, verbatim from ld.log:
PASS: bootstrap with strip
/usr/build/obj-binutils/ld/ld-new -m i386pe -o tmpdir/ld-partial.o -r
ldgram.o ldlex.o lexsup.o ldlang.o mri.o ldctor.o ldmain.o ldwrite.o ldexp.o
ldemul.o ldver.o ldmisc.o ldfile.o ldcref.o ei386pe.o deffilep.o pe-dll.o
Executing on host: sh -c {/usr/build/obj-binutils/ld/ld-new -m i386pe -o
tmpdir/ld-partial.o -r ldgram.o ldlex.o lexsup.o ldlang.o mri.o ldctor.o
ldmain.o ldwrite.o ldexp.o ldemul.o ldver.o ldmisc.o ldfile.o ldcref.o
ei386pe.o deffilep.o pe-dll.o 2>&1} /dev/null ld.tmp (timeout = 300)
spawn [open ...]
/usr/build/obj-binutils/ld/ld-new -m i386pe -o tmpdir/ld1 /lib/crt0.o
--static tmpdir/ld-partial.o ../bfd/.libs/libbfd.a ../libiberty/libiberty.a
-lintl -lz --start-group /usr/lib/gcc/i686-pc-cygwin/4.3.2/libgcc.a
/usr/lib/gcc/i686-pc-cygwin/4.3.2/libgcc_eh.a -lc --end-group -lcygwin
-L/usr/lib/w32api -luser32 -lkernel32 -ladvapi32 -lshell32
/usr/lib/gcc/i686-pc-cygwin/4.3.2/libgcc.a
Executing on host: sh -c {/usr/build/obj-binutils/ld/ld-new -m i386pe -o
tmpdir/ld1 /lib/crt0.o --static tmpdir/ld-partial.o ../bfd/.libs/libbfd.a
../libiberty/libiberty.a -lintl -lz --start-group
/usr/lib/gcc/i686-pc-cygwin/4.3.2/libgcc.a
/usr/lib/gcc/i686-pc-cygwin/4.3.2/libgcc_eh.a -lc --end-group -lcygwin
-L/usr/lib/w32api -luser32 -lkernel32 -ladvapi32 -lshell32
/usr/lib/gcc/i686-pc-cygwin/4.3.2/libgcc.a 2>&1} /dev/null ld.tmp (timeout = 300)
spawn [open ...]
/usr/lib/libintl.a(dcigettext.o):dcigettext.c:(.text+0x764): undefined
reference to `libiconv'
/usr/lib/libintl.a(dcigettext.o):dcigettext.c:(.text+0x933): undefined
reference to `libiconv_open'
/usr/lib/libintl.a(dcigettext.o):dcigettext.c:(.text+0xaca): undefined
reference to `libiconv_open'
/usr/lib/libintl.a(relocatable.o):relocatable.c:(.text+0x57): undefined
reference to `libiconv_set_relocation_prefix'
/usr/lib/libintl.a(dcigettext.o):dcigettext.c:(.text+0x764): undefined
reference to `libiconv'
/usr/lib/libintl.a(dcigettext.o):dcigettext.c:(.text+0x933): undefined
reference to `libiconv_open'
/usr/lib/libintl.a(dcigettext.o):dcigettext.c:(.text+0xaca): undefined
reference to `libiconv_open'
/usr/lib/libintl.a(relocatable.o):relocatable.c:(.text+0x57): undefined
reference to `libiconv_set_relocation_prefix'
FAIL: bootstrap with --static
And here's after applying my patch:
PASS: bootstrap with strip
/usr/build/obj-binutils/ld/ld-new -m i386pe -o tmpdir/ld-partial.o -r
ldgram.o ldlex.o lexsup.o ldlang.o mri.o ldctor.o ldmain.o ldwrite.o ldexp.o
ldemul.o ldver.o ldmisc.o ldfile.o ldcref.o ei386pe.o deffilep.o pe-dll.o
Executing on host: sh -c {/usr/build/obj-binutils/ld/ld-new -m i386pe -o
tmpdir/ld-partial.o -r ldgram.o ldlex.o lexsup.o ldlang.o mri.o ldctor.o
ldmain.o ldwrite.o ldexp.o ldemul.o ldver.o ldmisc.o ldfile.o ldcref.o
ei386pe.o deffilep.o pe-dll.o 2>&1} /dev/null ld.tmp (timeout = 300)
spawn [open ...]
/usr/build/obj-binutils/ld/ld-new -m i386pe -o tmpdir/ld1 /lib/crt0.o
--static tmpdir/ld-partial.o ../bfd/.libs/libbfd.a ../libiberty/libiberty.a
-lintl -liconv -lz --start-group /usr/lib/gcc/i686-pc-cygwin/4.3.2/libgcc.a
/usr/lib/gcc/i686-pc-cygwin/4.3.2/libgcc_eh.a -lc --end-group -lcygwin
-L/usr/lib/w32api -luser32 -lkernel32 -ladvapi32 -lshell32
/usr/lib/gcc/i686-pc-cygwin/4.3.2/libgcc.a
Executing on host: sh -c {/usr/build/obj-binutils/ld/ld-new -m i386pe -o
tmpdir/ld1 /lib/crt0.o --static tmpdir/ld-partial.o ../bfd/.libs/libbfd.a
../libiberty/libiberty.a -lintl -liconv -lz --start-group
/usr/lib/gcc/i686-pc-cygwin/4.3.2/libgcc.a
/usr/lib/gcc/i686-pc-cygwin/4.3.2/libgcc_eh.a -lc --end-group -lcygwin
-L/usr/lib/w32api -luser32 -lkernel32 -ladvapi32 -lshell32
/usr/lib/gcc/i686-pc-cygwin/4.3.2/libgcc.a 2>&1} /dev/null ld.tmp (timeout = 300)
spawn [open ...]
tmpdir/ld1 -m i386pe -o tmpdir/ld2 /lib/crt0.o --static ldgram.o ldlex.o
lexsup.o ldlang.o mri.o ldctor.o ldmain.o ldwrite.o ldexp.o ldemul.o ldver.o
ldmisc.o ldfile.o ldcref.o ei386pe.o deffilep.o pe-dll.o ../bfd/.libs/libbfd.a
../libiberty/libiberty.a -lintl -liconv -lz --start-group
/usr/lib/gcc/i686-pc-cygwin/4.3.2/libgcc.a
/usr/lib/gcc/i686-pc-cygwin/4.3.2/libgcc_eh.a -lc --end-group -lcygwin
-L/usr/lib/w32api -luser32 -lkernel32 -ladvapi32 -lshell32
/usr/lib/gcc/i686-pc-cygwin/4.3.2/libgcc.a
Executing on host: sh -c {tmpdir/ld1 -m i386pe -o tmpdir/ld2 /lib/crt0.o
--static ldgram.o ldlex.o lexsup.o ldlang.o mri.o ldctor.o ldmain.o ldwrite.o
ldexp.o ldemul.o ldver.o ldmisc.o ldfile.o ldcref.o ei386pe.o deffilep.o
pe-dll.o ../bfd/.libs/libbfd.a ../libiberty/libiberty.a -lintl -liconv -lz
--start-group /usr/lib/gcc/i686-pc-cygwin/4.3.2/libgcc.a
/usr/lib/gcc/i686-pc-cygwin/4.3.2/libgcc_eh.a -lc --end-group -lcygwin
-L/usr/lib/w32api -luser32 -lkernel32 -ladvapi32 -lshell32
/usr/lib/gcc/i686-pc-cygwin/4.3.2/libgcc.a 2>&1} /dev/null ld.tmp (timeout = 300)
spawn [open ...]
tmpdir/ld2 -m i386pe -o tmpdir/ld3 /lib/crt0.o --static ldgram.o ldlex.o
lexsup.o ldlang.o mri.o ldctor.o ldmain.o ldwrite.o ldexp.o ldemul.o ldver.o
ldmisc.o ldfile.o ldcref.o ei386pe.o deffilep.o pe-dll.o ../bfd/.libs/libbfd.a
../libiberty/libiberty.a -lintl -liconv -lz --start-group
/usr/lib/gcc/i686-pc-cygwin/4.3.2/libgcc.a
/usr/lib/gcc/i686-pc-cygwin/4.3.2/libgcc_eh.a -lc --end-group -lcygwin
-L/usr/lib/w32api -luser32 -lkernel32 -ladvapi32 -lshell32
/usr/lib/gcc/i686-pc-cygwin/4.3.2/libgcc.a
Executing on host: sh -c {tmpdir/ld2 -m i386pe -o tmpdir/ld3 /lib/crt0.o
--static ldgram.o ldlex.o lexsup.o ldlang.o mri.o ldctor.o ldmain.o ldwrite.o
ldexp.o ldemul.o ldver.o ldmisc.o ldfile.o ldcref.o ei386pe.o deffilep.o
pe-dll.o ../bfd/.libs/libbfd.a ../libiberty/libiberty.a -lintl -liconv -lz
--start-group /usr/lib/gcc/i686-pc-cygwin/4.3.2/libgcc.a
/usr/lib/gcc/i686-pc-cygwin/4.3.2/libgcc_eh.a -lc --end-group -lcygwin
-L/usr/lib/w32api -luser32 -lkernel32 -ladvapi32 -lshell32
/usr/lib/gcc/i686-pc-cygwin/4.3.2/libgcc.a 2>&1} /dev/null ld.tmp (timeout = 300)
spawn [open ...]
compare (tail of) tmpdir/ld2 tmpdir/ld3
PASS: bootstrap with --static
cheers,
DaveK