[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