This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Trouble building gcc-3.4.0 cygwin->linux


[Dangit, somebody replied to this six weeks ago and told me
what configuration variable controlled this choice, but I
can't find the email now that I have time and need to fix this problem!]

Can someone remind me which gcc configuration thingy controls
the choice of whether to use "__i686.get_pc_thunk.cx"?
It appears this is being made wrong sometimes in gcc-3.4.0's configury,
but not in earlier versions.
The problem happens with many versions of binutils;
it happens reliably when I try to build libstdc++ cross cygwin->linux
(failing in strstream.s), but only when I'm building on
cygwin and targeting linux.

Thanks,
Dan

Dan Kegel wrote:
[my broken asm is marked with -, hj's good asm is marked with +]

--- foo.s    2004-04-18 08:47:40.000000000 -0700
+++ strstream.s    2004-04-18 11:35:17.000000000 -0700
@@ -8369,7 +8369,8 @@ _ZNSt9strstreamC2Ev:
     .uleb128 0x0
 .LLSDACSE1490:
     .section    .text._ZNSt9strstreamC2Ev
-    .section    .gnu.linkonce.t._ZTv0_n12_NSdD1Ev,"ax",@progbits
+    .set    .LTHUNK8,_ZNSdD1Ev
+    .section    .gnu.linkonce.t._ZNSdD1Ev,"ax",@progbits
     .align 2
     .p2align 4,,15
     .weak    _ZTv0_n12_NSdD1Ev
@@ -8379,24 +8380,17 @@ _ZTv0_n12_NSdD1Ev:
     movl    (%eax), %ecx
     addl    -12(%ecx), %eax
     movl    %eax, 4(%esp)
-    call    __i686.get_pc_thunk.cx
-    addl    $_GLOBAL_OFFSET_TABLE_, %ecx
-    movl    $_ZNSdD1Ev@GOT(%ecx), %ecx
-    jmp    *%ecx
+    jmp    .LTHUNK8
     .size    _ZTv0_n12_NSdD1Ev, .-_ZTv0_n12_NSdD1Ev
...


A nearly identically configured gcc, built on linux instead of cygwin,
doesn't have this problem.  The only difference in how they're
configured is --host, which is i686-host-linux-gnu for the one
built on Linux, and i686-host-cygwin for the one built on Cygwin:

.../crosstool-0.28-rc5/build/i686-unknown-linux-gnu/gcc-3.4.0-20040416-glibc-2.1.3/gcc-3.4.0-20040416/configure --target=i686-unknown-linux-gnu --host=i686-host_pc-cygwin --prefix=/opt/crosstool/i686-unknown-linux-gnu/gcc-3.4.0-20040416-glibc-2.1.3 --with-headers=/opt/crosstool/i686-unknown-linux-gnu/gcc-3.4.0-20040416-glibc-2.1.3/i686-unknown-linux-gnu/include --with-local-prefix=/opt/crosstool/i686-unknown-linux-gnu/gcc-3.4.0-20040416-glibc-2.1.3/i686-unknown-linux-gnu --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable-languages=c,c++ --enable-shared --enable-c99 --enable-long-long --with-gcc-version-trigger=.../crosstool-0.28-rc5/build/i686-unknown-linux-gnu/gcc-3.4.0-20040416-glibc-2.1.3/gcc-3.4.0-20040416/gcc/version.c


.../crosstool-0.28-rc5/build/i686-unknown-linux-gnu/gcc-3.4.0-20040416-glibc-2.1.3/gcc-3.4.0-20040416/configure --target=i686-unknown-linux-gnu --host=i686-host_pc-linux-gnu --prefix=/opt/crosstool/i686-unknown-linux-gnu/gcc-3.4.0-20040416-glibc-2.1.3 --with-headers=/opt/crosstool/i686-unknown-linux-gnu/gcc-3.4.0-20040416-glibc-2.1.3/i686-unknown-linux-gnu/include --with-local-prefix=/opt/crosstool/i686-unknown-linux-gnu/gcc-3.4.0-20040416-glibc-2.1.3/i686-unknown-linux-gnu --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable-languages=c,c++ --enable-shared --enable-c99 --enable-long-long --with-gcc-version-trigger=.../crosstool-0.28-rc5/build/i686-unknown-linux-gnu/gcc-3.4.0-20040416-glibc-2.1.3/gcc-3.4.0-20040416/gcc/version.c



Hmm. Maybe gcc-3.4's --host means something different than I expected. Or maybe the problem is I'm not passing --build, too? Sigh. I guess I'll go back and study the manual a bit more. Clue-sticks gladly accepted... - Dan



--
My technical stuff: http://kegel.com
My politics: see http://www.misleader.org for examples of why I'm for regime change


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]