Bug 30423 - compile with -O2 fails.
Summary: compile with -O2 fails.
Status: RESOLVED WORKSFORME
Alias: None
Product: gcc
Classification: Unclassified
Component: c++ (show other bugs)
Version: 4.2.0
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2007-01-10 10:45 UTC by maho nakata
Modified: 2007-04-27 08:01 UTC (History)
2 users (show)

See Also:
Host: x86_64-portbld-freebsd6.2
Target: x86_64-portbld-freebsd6.2
Build: x86_64-portbld-freebsd6.2
Known to work:
Known to fail:
Last reconfirmed:


Attachments
a testcase actually used file. from octave-2.9.9 (77.38 KB, text/plain)
2007-01-10 10:48 UTC, maho nakata
Details

Note You need to log in before you can comment on or make changes to this bug.
Description maho nakata 2007-01-10 10:45:05 UTC
g++42 -v
Using built-in specs.
Target: x86_64-portbld-freebsd6.2
Configured with: ./..//gcc-4.2-20070102/configure --disable-nls --with-system-zlib --with-libiconv-prefix=/usr/local --with-gmp=/usr/local --program-suffix=42 --libdir=/usr/local/lib/gcc-4.2.0 --with-gxx-include-dir=/usr/local/lib/gcc-4.2.0/include/c++/ --infodir=/usr/local/info/gcc42 --disable-libgcj --prefix=/usr/local x86_64-portbld-freebsd6.2
Thread model: posix
gcc version 4.2.0 20070102 (prerelease)
 g++42 -O -fno-strict-aliasing -pipe -o gendoc gendoc.cc
% ./gendoc 
/libexec/ld-elf.so.1: ./gendoc: Undefined symbol "_ZNSo9_M_insertEPKcl"
% g++42 -fno-strict-aliasing -pipe -o gendoc gendoc.cc
% ./gendoc
...works
Comment 1 maho nakata 2007-01-10 10:48:11 UTC
Created attachment 12878 [details]
a testcase actually used file. from octave-2.9.9
Comment 2 Andrew Pinski 2007-01-10 16:34:39 UTC
% ./gendoc 
/libexec/ld-elf.so.1: ./gendoc: Undefined symbol "_ZNSo9_M_insertEPKcl"

This makes it sound like libstdc++'s ABI has changed slightly but just in a forwards compatiable way.

Can you try to force using 4.2's libstdc++?
Comment 3 maho nakata 2007-02-05 02:34:51 UTC
Sorry for long delay...
No, I'm using 4.2's libstdc++.
% g++42 -O -fno-strict-aliasing -pipe -o gendoc gendoc.cc ; ldd ./gendoc
./gendoc:
        libstdc++.so.6 => /usr/local/lib/gcc-4.1.2/libstdc++.so.6 (0x8006a3000)
        libm.so.4 => /lib/libm.so.4 (0x80089d000)
        libgcc_s.so.1 => /usr/local/lib/gcc-4.1.2/libgcc_s.so.1 (0x8009b9000)
        libc.so.6 => /lib/libc.so.6 (0x800ac5000)
% g++42 -pipe -o gendoc gendoc.cc ; ldd ./gendoc
./gendoc:
        libstdc++.so.6 => /usr/local/lib/gcc-4.1.2/libstdc++.so.6 (0x8006a1000)
        libm.so.4 => /lib/libm.so.4 (0x80089b000)
        libgcc_s.so.1 => /usr/local/lib/gcc-4.1.2/libgcc_s.so.1 (0x8009b7000)
        libc.so.6 => /lib/libc.so.6 (0x800ac3000)

Comment 4 maho nakata 2007-02-05 02:39:17 UTC
it seems amd64 only. with i386-portbld-freebsd6.2,
% g++42 -v
Using built-in specs.
Target: i386-portbld-freebsd6.2
Configured with: ./..//gcc-4.2-20070110/configure --disable-nls --with-system-zlib --with-libiconv-prefix=/usr/local --with-gmp=/usr/local --program-suffix=42 --libdir=/usr/local/lib/gcc-4.2.0 --with-gxx-include-dir=/usr/local/lib/gcc-4.2.0/include/c++/ --infodir=/usr/local/info/gcc42 --disable-rpath --prefix=/usr/local i386-portbld-freebsd6.2
Thread model: posix
gcc version 4.2.0 20070110 (prerelease)

% g++42 -O -fno-strict-aliasing -pipe -o gendoc gendoc.cc ; ldd ./gendoc
./gendoc:
        libstdc++.so.6 => /usr/local/lib/gcc-4.2.0/libstdc++.so.6 (0x280ed000)
        libm.so.4 => /lib/libm.so.4 (0x281ca000)
        libgcc_s.so.1 => /usr/local/lib/gcc-4.2.0/libgcc_s.so.1 (0x281e0000)
        libc.so.6 => /lib/libc.so.6 (0x281ea000)
% ./gendoc
...
works.

% g++42 -pipe -o gendoc gendoc.cc ; ldd ./gendoc
./gendoc:
        libstdc++.so.6 => /usr/local/lib/gcc-4.2.0/libstdc++.so.6 (0x280ef000)
        libm.so.4 => /lib/libm.so.4 (0x281cc000)
        libgcc_s.so.1 => /usr/local/lib/gcc-4.2.0/libgcc_s.so.1 (0x281e2000)
        libc.so.6 => /lib/libc.so.6 (0x281ec000)
% ./gendoc
...
works.

it seems it DOES only happens to amd64...
Comment 5 maho nakata 2007-04-27 08:01:13 UTC
Andrew Pinski: It seems ldconfig doesn't detect 4.2 libstdc++.
I removed gcc-4.1 and gcc-4.2 compiled executable now find correct version
of libstdc++...

marked as worksforme.
thanks for your attention.