public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug libstdc++/42377] New: libstdc++.dll.a misses a definition of std::string::reserve
@ 2009-12-15 11:17 rainer at emrich-ebersheim dot de
2009-12-15 11:50 ` [Bug target/42377] " davek at gcc dot gnu dot org
` (12 more replies)
0 siblings, 13 replies; 14+ messages in thread
From: rainer at emrich-ebersheim dot de @ 2009-12-15 11:17 UTC (permalink / raw)
To: gcc-bugs
Even though libstdc++-6.dll has: 000000006fc94700 T
std::string::reserve(unsigned long long),
libstdc++.dll.a misses a definition of std::string::reserve!
Which makes it impossible to build libgmpxx against a shared version of
libstdc++-6, see:
/bin/sh ./libtool --mode=link g++ -O2 -pedantic -m64 -mtune=k8 -o
libgmpxx.la -rpath /home/rainer/tmp/install/lib -no-undefined
-Wl,--export-all-symbols -Wl,--output-def,.libs/libgmp-3.dll.def
-Wl,--output-def,.libs/libgmpxx-3.dll.def -version-info 5:0:1 dummy.lo
cxx/isfuns.lo cxx/ismpf.lo cxx/ismpq.lo cxx/ismpz.lo cxx/ismpznw.lo
cxx/osdoprnti.lo cxx/osfuns.lo cxx/osmpf.lo cxx/osmpq.lo cxx/osmpz.lo libgmp.la
rm -fr .libs/libgmpxx.dll.a
g++ -shared -nostdlib
c:/mingw/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.5.0/../../../../x86_64-w64-mingw32/lib/dllcrt2.o
c:/mingw/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.5.0/../../../../x86_64-w64-mingw32/lib/crtbegin.o
.libs/dummy.o cxx/.libs/isfuns.o cxx/.libs/ismpf.o cxx/.libs/ismpq.o
cxx/.libs/ismpz.o cxx/.libs/ismpznw.o cxx/.libs/osdoprnti.o cxx/.libs/osfuns.o
cxx/.libs/osmpf.o cxx/.libs/osmpq.o cxx/.libs/osmpz.o ./.libs/libgmp.dll.a
-Lc:/mingw/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.5.0
-Lc:/mingw/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/mingw/bin/../lib/gcc
-Lc:/mingw/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.5.0/../../../../lib64
-Lc:/mingw/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.5.0/../../../../x86_64-w64-mingw32/lib
-Lc:/mingw/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.5.0/../../..
-Lc:/mingw/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/mingw/bin/../../mingw/mingw/lib
/mingw/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/mingw/lib/../lib64/libstdc++.dll.a
-L/home/rainer/software/build/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/gcc-4.5.0-bootstrap/x86_64-w64-mingw32/libstdc++-v3/src
-L/home/rainer/software/build/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/gcc-4.5.0-bootstrap/x86_64-w64-mingw32/libstdc++-v3/src/.libs
-L/mingw/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/mingw/x86_64-w64-mingw32/lib
-L/mingw/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/mingw/mingw/lib
-lmingw32 -lgcc_s -lgcc -lmoldname -lmingwex -lmsvcrt -luser32 -lkernel32
-ladvapi32 -lshell32 -lmingw32 -lgcc_s -lgcc -lmoldname -lmingwex -lmsvcrt
c:/mingw/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.5.0/../../../../x86_64-w64-mingw32/lib/crtend.o
-m64 -mtune=k8 -Wl,--export-all-symbols -Wl,--output-def
-Wl,.libs/libgmp-3.dll.def -Wl,--output-def -Wl,.libs/libgmpxx-3.dll.def -o
.libs/libgmpxx-4.dll -Wl,--enable-auto-image-base -Xlinker --out-implib
-Xlinker .libs/libgmpxx.dll.a
Info: resolving std::basic_string<char, std::char_traits<char>,
std::allocator<char> >::_Rep::_S_empty_rep_storage by linking to
__imp___ZNSs4_Rep20_S_empty_rep_storageE (auto-import)
Creating library file:
.libs/libgmpxx.dll.ac:/mingw/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.5.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
warning: auto-importing has been activated without --enable-auto-import
specified on the command line.
This should work unless it involves constant data structures referencing
symbols from auto-imported DLLs.
cxx/.libs/isfuns.o:isfuns.cc:(.text+0x180): undefined reference to
`std::string::reserve(unsigned long long)'
cxx/.libs/isfuns.o:isfuns.cc:(.text+0x228): undefined reference to
`std::string::reserve(unsigned long long)'
cxx/.libs/isfuns.o:isfuns.cc:(.text+0x2a8): undefined reference to
`std::string::reserve(unsigned long long)'
cxx/.libs/ismpf.o:ismpf.cc:(.text+0x2f8): undefined reference to
`std::string::reserve(unsigned long long)'
cxx/.libs/ismpf.o:ismpf.cc:(.text+0x3a7): undefined reference to
`std::string::reserve(unsigned long long
)'
/bin/sh ./libtool --mode=link g++ -O2 -pedantic -m64 -mtune=k8 -o
libgmpxx.la -rpath /home/rainer/tmp/install/lib -no-undefined
-Wl,--export-all-symbols -Wl,--output-def,.libs/libgmp-3.dll.def
-Wl,--output-def,.libs/libgmpxx-3.dll.def -version-info 5:0:1 dummy.lo
cxx/isfuns.lo cxx/ismpf.lo cxx/ismpq.lo cxx/ismpz.lo cxx/ismpznw.lo
cxx/osdoprnti.lo cxx/osfuns.lo cxx/osmpf.lo cxx/osmpq.lo cxx/osmpz.lo libgmp.la
rm -fr .libs/libgmpxx.dll.a
g++ -shared -nostdlib
c:/mingw/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.5.0/../../../../x86_64-w64-mingw32/lib/dllcrt2.o
c:/mingw/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.5.0/../../../../x86_64-w64-mingw32/lib/crtbegin.o
.libs/dummy.o cxx/.libs/isfuns.o cxx/.libs/ismpf.o cxx/.libs/ismpq.o
cxx/.libs/ismpz.o cxx/.libs/ismpznw.o cxx/.libs/osdoprnti.o cxx/.libs/osfuns.o
cxx/.libs/osmpf.o cxx/.libs/osmpq.o cxx/.libs/osmpz.o ./.libs/libgmp.dll.a
-Lc:/mingw/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.5.0
-Lc:/mingw/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/mingw/bin/../lib/gcc
-Lc:/mingw/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.5.0/../../../../lib64
-Lc:/mingw/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.5.0/../../../../x86_64-w64-mingw32/lib
-Lc:/mingw/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.5.0/../../..
-Lc:/mingw/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/mingw/bin/../../mingw/mingw/lib
/mingw/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/mingw/lib/../lib64/libstdc++.dll.a
-L/home/rainer/software/build/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/gcc-4.5.0-bootstrap/x86_64-w64-mingw32/libstdc++-v3/src
-L/home/rainer/software/build/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/gcc-4.5.0-bootstrap/x86_64-w64-mingw32/libstdc++-v3/src/.libs
-L/mingw/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/mingw/x86_64-w64-mingw32/lib
-L/mingw/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/mingw/mingw/lib
-lmingw32 -lgcc_s -lgcc -lmoldname -lmingwex -lmsvcrt -luser32 -lkernel32
-ladvapi32 -lshell32 -lmingw32 -lgcc_s -lgcc -lmoldname -lmingwex -lmsvcrt
c:/mingw/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.5.0/../../../../x86_64-w64-mingw32/lib/crtend.o
-m64 -mtune=k8 -Wl,--export-all-symbols -Wl,--output-def
-Wl,.libs/libgmp-3.dll.def -Wl,--output-def -Wl,.libs/libgmpxx-3.dll.def -o
.libs/libgmpxx-4.dll -Wl,--enable-auto-image-base -Xlinker --out-implib
-Xlinker .libs/libgmpxx.dll.a
Info: resolving std::basic_string<char, std::char_traits<char>,
std::allocator<char> >::_Rep::_S_empty_rep_storage by linking to
__imp___ZNSs4_Rep20_S_empty_rep_storageE (auto-import)
Creating library file:
.libs/libgmpxx.dll.ac:/mingw/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.5.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
warning: auto-importing has been activated without --enable-auto-import
specified on the command line.
This should work unless it involves constant data structures referencing
symbols from auto-imported DLLs.
cxx/.libs/isfuns.o:isfuns.cc:(.text+0x180): undefined reference to
`std::string::reserve(unsigned long long)'
cxx/.libs/isfuns.o:isfuns.cc:(.text+0x228): undefined reference to
`std::string::reserve(unsigned long long)'
cxx/.libs/isfuns.o:isfuns.cc:(.text+0x2a8): undefined reference to
`std::string::reserve(unsigned long long)'
cxx/.libs/ismpf.o:ismpf.cc:(.text+0x2f8): undefined reference to
`std::string::reserve(unsigned long long)'
cxx/.libs/ismpf.o:ismpf.cc:(.text+0x3a7): undefined reference to
`std::string::reserve(unsigned long long
)'
beyond that libstdc++.la on *-*-mingw32 has strange dependency_libs definition.
For x86_64-w64-mingw32:
# Libraries that this one depends upon.
dependency_libs='
-L/home/rainer/software/build/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0/gcc-4.5.0-bootstrap/x86_64-w64-mingw32/libstdc++-v3/src
-L/home/rainer/software/build/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0/gcc-4.5.0-bootstrap/x86_64-w64-mingw32/libstdc++-v3/src/.libs
-L/mingw/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0/mingw/x86_64-w64-mingw32/lib
-L/mingw/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0/mingw/mingw/lib'
Which contains build locations!
On my linux system dependency_libs is empty:
# Libraries that this one depends upon.
dependency_libs=''
what I think is right.
this is for trunk rev. 155209
gcc build with static gmp, mpfr, mpc , ppl, cloog and libelf.
configure:
../../../../../../src/gcc-4.5.0/configure
- --prefix=/mingw/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/mingw
- --with-sysroot=/mingw/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/mingw
- --with-gmp=/mingw/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/mingw
- --with-mpfr=/mingw/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/mingw
- --with-mpc=/mingw/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/mingw
- --with-ppl=/mingw/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/mingw
- --with-cloog=/mingw/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/mingw
- --with-libelf=/mingw/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/mingw
- --with-gnu-as
-
--with-as=/mingw/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/mingw/bin/as.exe
- --with-gnu-ld
-
--with-ld=/mingw/x86_64-w64/x86_64-w64/x86_64-w64/gcc-4.5.0-test/mingw/bin/ld.exe
- --enable-bootstrap --enable-threads=win32 --enable-languages=c,c++
- --enable-checking=release --disable-werror --disable-multilib
- --build=x86_64-w64-mingw32 --host=x86_64-w64-mingw32
--target=x86_64-w64-mingw32
Rainer
--
Summary: libstdc++.dll.a misses a definition of
std::string::reserve
Product: gcc
Version: 4.5.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libstdc++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: rainer at emrich-ebersheim dot de
GCC build triplet: x86_64-w64-mingw32
GCC host triplet: x86_64-w64-mingw32
GCC target triplet: x86_64-w64-mingw32
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42377
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Bug target/42377] libstdc++.dll.a misses a definition of std::string::reserve
2009-12-15 11:17 [Bug libstdc++/42377] New: libstdc++.dll.a misses a definition of std::string::reserve rainer at emrich-ebersheim dot de
@ 2009-12-15 11:50 ` davek at gcc dot gnu dot org
2009-12-15 14:25 ` rainer at emrich-ebersheim dot de
` (11 subsequent siblings)
12 siblings, 0 replies; 14+ messages in thread
From: davek at gcc dot gnu dot org @ 2009-12-15 11:50 UTC (permalink / raw)
To: gcc-bugs
------- Comment #1 from davek at gcc dot gnu dot org 2009-12-15 11:49 -------
Hi Rainer, it'll take a little time but I'll set myself up a build environment
and see if I can reproduce this.
The libtool dependency libs stuff is a known problem in libtool IIRC. Details
to follow.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42377
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Bug target/42377] libstdc++.dll.a misses a definition of std::string::reserve
2009-12-15 11:17 [Bug libstdc++/42377] New: libstdc++.dll.a misses a definition of std::string::reserve rainer at emrich-ebersheim dot de
2009-12-15 11:50 ` [Bug target/42377] " davek at gcc dot gnu dot org
@ 2009-12-15 14:25 ` rainer at emrich-ebersheim dot de
2009-12-17 9:04 ` davek at gcc dot gnu dot org
` (10 subsequent siblings)
12 siblings, 0 replies; 14+ messages in thread
From: rainer at emrich-ebersheim dot de @ 2009-12-15 14:25 UTC (permalink / raw)
To: gcc-bugs
------- Comment #2 from rainer at emrich-ebersheim dot de 2009-12-15 14:25 -------
(In reply to comment #1)
> Hi Rainer, it'll take a little time but I'll set myself up a build environment
> and see if I can reproduce this.
>
> The libtool dependency libs stuff is a known problem in libtool IIRC. Details
> to follow.
>
Dave thanks for your help. Interestingly for i686-pc-mingw32 this works, but
the dependency_libs is bogus too.
Rainer
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42377
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Bug target/42377] libstdc++.dll.a misses a definition of std::string::reserve
2009-12-15 11:17 [Bug libstdc++/42377] New: libstdc++.dll.a misses a definition of std::string::reserve rainer at emrich-ebersheim dot de
2009-12-15 11:50 ` [Bug target/42377] " davek at gcc dot gnu dot org
2009-12-15 14:25 ` rainer at emrich-ebersheim dot de
@ 2009-12-17 9:04 ` davek at gcc dot gnu dot org
2009-12-17 10:07 ` davek at gcc dot gnu dot org
` (9 subsequent siblings)
12 siblings, 0 replies; 14+ messages in thread
From: davek at gcc dot gnu dot org @ 2009-12-17 9:04 UTC (permalink / raw)
To: gcc-bugs
------- Comment #3 from davek at gcc dot gnu dot org 2009-12-17 09:04 -------
This is starting to look like an LD bug. The function is there in the objects
fed into the final link:
$ x86_64-w64-mingw32-nm -C .libs/string-inst.o | grep reserve
0000000000000000 t .text$_ZNSs7reserveEy
0000000000000000 T std::string::reserve(unsigned long long)
DKAdmin@ubik /tmp/mingw-w64/obj-gcc/x86_64-w64-mingw32/libstdc++-v3/src
$
and it shows up as linked into the dll in the map file:
.text$_ZNSs7reserveEy
0x000000006fc946b0 0xa0 .libs/string-inst.o
0x000000006fc946b0 __ZNSs7reserveEy
but for some reason it doesn't get exported. This only happens in the 64-bit
multilib, not the 32-bit one; there it gets exported. So I think we've found
an inconsistency between the pe and pe+ emulations in ld.
I also get empty dependency_libs in both the $objdir .la files and the
installed versions. I followed (more-or-less) the instructions at
http://sourceforge.net/apps/trac/mingw-w64/wiki/Cross%20Win32%20and%20Win64%20compiler
to build a multilibbed/biarch cygwin-x-w64 cross-compiler.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42377
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Bug target/42377] libstdc++.dll.a misses a definition of std::string::reserve
2009-12-15 11:17 [Bug libstdc++/42377] New: libstdc++.dll.a misses a definition of std::string::reserve rainer at emrich-ebersheim dot de
` (2 preceding siblings ...)
2009-12-17 9:04 ` davek at gcc dot gnu dot org
@ 2009-12-17 10:07 ` davek at gcc dot gnu dot org
2009-12-17 10:20 ` davek at gcc dot gnu dot org
` (8 subsequent siblings)
12 siblings, 0 replies; 14+ messages in thread
From: davek at gcc dot gnu dot org @ 2009-12-17 10:07 UTC (permalink / raw)
To: gcc-bugs
------- Comment #4 from davek at gcc dot gnu dot org 2009-12-17 10:07 -------
Ok, it's not an LD bug. LD is doing the right thing, which in this case turns
out to be filtering it out of the list of exports due to the version script.
In the 32-bit multilib, we have this version of std::string::reserve
> $ x86_64-w64-mingw32-nm -C .libs/string-inst.o | grep reserve
> 00000000 t .text$_ZNSs7reserveEj
> 00000000 T std::string::reserve(unsigned int)
which is covered by this part of the version script:
> # Names not in an 'extern' block are mangled names.
>
> # std::string
[ ... snip ... ]
> _ZNSs[67][j-z]*E[PRcjmv]*;
In the 64-bit multilib, however, std::string::reserve has a different
signature:
> $ x86_64-w64-mingw32-nm -C .libs/string-inst.o | grep reserve
> 0000000000000000 t .text$_ZNSs7reserveEy
> 0000000000000000 T std::string::reserve(unsigned long long)
and that trailing 'y' doesn't match the '[PRcjmv]*' character class.
Now, I haven't yet tracked down why 'unsigned int' in the 32-bit multilib has
changed to 'unsigned long long' in the 64-bit multilib; it's a consequence of
some 32-vs-64 difference in the w64 standard types no doubt, but it's
definitely doing the wrong thing here, because the signature of the std::
function args is of course part of the ABI and I think we probably can't go
changing the types of std:: function arguments like this. I'll try and track
down where the ULL is coming from.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42377
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Bug target/42377] libstdc++.dll.a misses a definition of std::string::reserve
2009-12-15 11:17 [Bug libstdc++/42377] New: libstdc++.dll.a misses a definition of std::string::reserve rainer at emrich-ebersheim dot de
` (3 preceding siblings ...)
2009-12-17 10:07 ` davek at gcc dot gnu dot org
@ 2009-12-17 10:20 ` davek at gcc dot gnu dot org
2009-12-17 10:26 ` paolo dot carlini at oracle dot com
` (7 subsequent siblings)
12 siblings, 0 replies; 14+ messages in thread
From: davek at gcc dot gnu dot org @ 2009-12-17 10:20 UTC (permalink / raw)
To: gcc-bugs
------- Comment #5 from davek at gcc dot gnu dot org 2009-12-17 10:20 -------
Starting to think that actually this is just how the ABI should be for w64 and
the version script for libstdc++ just has a weakness. If I'm guessing right,
it's because w64 is the only LLP64 target that is why this wouldn't have shown
up before on other 64-bit systems.
Definitely a bug. I'm mailing the libstdc list to find out if we should take
the simple option of adding a 'y' into the trailing character class in the
version script signature pattern, which I think might well be The Right Thing
To Do.
--
davek at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Ever Confirmed|0 |1
Last reconfirmed|0000-00-00 00:00:00 |2009-12-17 10:20:11
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42377
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Bug target/42377] libstdc++.dll.a misses a definition of std::string::reserve
2009-12-15 11:17 [Bug libstdc++/42377] New: libstdc++.dll.a misses a definition of std::string::reserve rainer at emrich-ebersheim dot de
` (4 preceding siblings ...)
2009-12-17 10:20 ` davek at gcc dot gnu dot org
@ 2009-12-17 10:26 ` paolo dot carlini at oracle dot com
2009-12-17 11:27 ` davek at gcc dot gnu dot org
` (6 subsequent siblings)
12 siblings, 0 replies; 14+ messages in thread
From: paolo dot carlini at oracle dot com @ 2009-12-17 10:26 UTC (permalink / raw)
To: gcc-bugs
------- Comment #6 from paolo dot carlini at oracle dot com 2009-12-17 10:25 -------
Under linux, it's just unsigned long, which is 64-bit anyway, because actually
it's a size_t. Seems strange that we didn't notice yet, but it's well possible
that on some 64-bit systems a size_t is an unsigned long long instead of an
unsigned long. If it's only that, I don't see anything wrong with just adding
the y class to this pattern, I don't see how it could create problems on other
systems (if they weren't exporting the symbol by mistake at the ABI baseline
.so version they were totally broken anyway, because basic_string cannot work
without). In that case, therefore, the corresponding libstdc++ patch is
pre-approved.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42377
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Bug target/42377] libstdc++.dll.a misses a definition of std::string::reserve
2009-12-15 11:17 [Bug libstdc++/42377] New: libstdc++.dll.a misses a definition of std::string::reserve rainer at emrich-ebersheim dot de
` (5 preceding siblings ...)
2009-12-17 10:26 ` paolo dot carlini at oracle dot com
@ 2009-12-17 11:27 ` davek at gcc dot gnu dot org
2009-12-17 11:53 ` davek at gcc dot gnu dot org
` (5 subsequent siblings)
12 siblings, 0 replies; 14+ messages in thread
From: davek at gcc dot gnu dot org @ 2009-12-17 11:27 UTC (permalink / raw)
To: gcc-bugs
------- Comment #7 from davek at gcc dot gnu dot org 2009-12-17 11:27 -------
Created an attachment (id=19336)
--> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=19336&action=view)
differences between 32-bit and 64-bit exported symbols
There's a bunch more missing than just std::string::reserve(), all for probably
the same reason: 'j' -> 'y' in the signature. Here's the raw diffs; I'll have
to figure out which other signatures in the version script to also change.
--
davek at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
AssignedTo|unassigned at gcc dot gnu |davek at gcc dot gnu dot org
|dot org |
Status|NEW |ASSIGNED
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42377
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Bug target/42377] libstdc++.dll.a misses a definition of std::string::reserve
2009-12-15 11:17 [Bug libstdc++/42377] New: libstdc++.dll.a misses a definition of std::string::reserve rainer at emrich-ebersheim dot de
` (6 preceding siblings ...)
2009-12-17 11:27 ` davek at gcc dot gnu dot org
@ 2009-12-17 11:53 ` davek at gcc dot gnu dot org
2009-12-17 15:26 ` davek at gcc dot gnu dot org
` (4 subsequent siblings)
12 siblings, 0 replies; 14+ messages in thread
From: davek at gcc dot gnu dot org @ 2009-12-17 11:53 UTC (permalink / raw)
To: gcc-bugs
------- Comment #8 from davek at gcc dot gnu dot org 2009-12-17 11:52 -------
Created an attachment (id=19338)
--> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=19338&action=view)
salient diffs extracted
I removed all the matching +/- line pairs from the raw diff file where a
signature changed but the function still got exported anyway, leaving this
list. The remaining + lines are symbols that the 32-bit DLL exports but the
64-bit DLL doesn't.
The '-' lines, interestingly, are symbols exported by the 64-bit DLL but not
the 32-bit one. I'm not sure how that comes about yet or what its significance
might be.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42377
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Bug target/42377] libstdc++.dll.a misses a definition of std::string::reserve
2009-12-15 11:17 [Bug libstdc++/42377] New: libstdc++.dll.a misses a definition of std::string::reserve rainer at emrich-ebersheim dot de
` (7 preceding siblings ...)
2009-12-17 11:53 ` davek at gcc dot gnu dot org
@ 2009-12-17 15:26 ` davek at gcc dot gnu dot org
2009-12-17 15:27 ` davek at gcc dot gnu dot org
` (3 subsequent siblings)
12 siblings, 0 replies; 14+ messages in thread
From: davek at gcc dot gnu dot org @ 2009-12-17 15:26 UTC (permalink / raw)
To: gcc-bugs
------- Comment #9 from davek at gcc dot gnu dot org 2009-12-17 15:25 -------
Subject: Bug 42377
Author: davek
Date: Thu Dec 17 15:25:36 2009
New Revision: 155318
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=155318
Log:
PR target/42377
* config/abi/pre/gnu.ver: Adjust mangled function signatures to permit
LLP64 sizetypes throughout.
Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/config/abi/pre/gnu.ver
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42377
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Bug target/42377] libstdc++.dll.a misses a definition of std::string::reserve
2009-12-15 11:17 [Bug libstdc++/42377] New: libstdc++.dll.a misses a definition of std::string::reserve rainer at emrich-ebersheim dot de
` (8 preceding siblings ...)
2009-12-17 15:26 ` davek at gcc dot gnu dot org
@ 2009-12-17 15:27 ` davek at gcc dot gnu dot org
2009-12-18 10:02 ` rainer at emrich-ebersheim dot de
` (2 subsequent siblings)
12 siblings, 0 replies; 14+ messages in thread
From: davek at gcc dot gnu dot org @ 2009-12-17 15:27 UTC (permalink / raw)
To: gcc-bugs
------- Comment #10 from davek at gcc dot gnu dot org 2009-12-17 15:27 -------
Should be fixed in SVN now. Rainer, please verify when you get a chance.
--
davek at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |RESOLVED
Resolution| |FIXED
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42377
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Bug target/42377] libstdc++.dll.a misses a definition of std::string::reserve
2009-12-15 11:17 [Bug libstdc++/42377] New: libstdc++.dll.a misses a definition of std::string::reserve rainer at emrich-ebersheim dot de
` (9 preceding siblings ...)
2009-12-17 15:27 ` davek at gcc dot gnu dot org
@ 2009-12-18 10:02 ` rainer at emrich-ebersheim dot de
2009-12-18 15:29 ` rainer at emrich-ebersheim dot de
2009-12-20 19:59 ` davek at gcc dot gnu dot org
12 siblings, 0 replies; 14+ messages in thread
From: rainer at emrich-ebersheim dot de @ 2009-12-18 10:02 UTC (permalink / raw)
To: gcc-bugs
------- Comment #11 from rainer at emrich-ebersheim dot de 2009-12-18 10:02 -------
(In reply to comment #10)
> Should be fixed in SVN now. Rainer, please verify when you get a chance.
>
Today I will try to build a complete tool chain with shared libstdc++ enabled.
I will report back.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42377
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Bug target/42377] libstdc++.dll.a misses a definition of std::string::reserve
2009-12-15 11:17 [Bug libstdc++/42377] New: libstdc++.dll.a misses a definition of std::string::reserve rainer at emrich-ebersheim dot de
` (10 preceding siblings ...)
2009-12-18 10:02 ` rainer at emrich-ebersheim dot de
@ 2009-12-18 15:29 ` rainer at emrich-ebersheim dot de
2009-12-20 19:59 ` davek at gcc dot gnu dot org
12 siblings, 0 replies; 14+ messages in thread
From: rainer at emrich-ebersheim dot de @ 2009-12-18 15:29 UTC (permalink / raw)
To: gcc-bugs
------- Comment #12 from rainer at emrich-ebersheim dot de 2009-12-18 15:29 -------
(In reply to comment #11)
> (In reply to comment #10)
> > Should be fixed in SVN now. Rainer, please verify when you get a chance.
> >
>
> Today I will try to build a complete tool chain with shared libstdc++ enabled.
> I will report back.
>
Seems to work now!
Rainer
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42377
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Bug target/42377] libstdc++.dll.a misses a definition of std::string::reserve
2009-12-15 11:17 [Bug libstdc++/42377] New: libstdc++.dll.a misses a definition of std::string::reserve rainer at emrich-ebersheim dot de
` (11 preceding siblings ...)
2009-12-18 15:29 ` rainer at emrich-ebersheim dot de
@ 2009-12-20 19:59 ` davek at gcc dot gnu dot org
12 siblings, 0 replies; 14+ messages in thread
From: davek at gcc dot gnu dot org @ 2009-12-20 19:59 UTC (permalink / raw)
To: gcc-bugs
------- Comment #13 from davek at gcc dot gnu dot org 2009-12-20 19:59 -------
(In reply to comment #12)
> (In reply to comment #11)
> > (In reply to comment #10)
> > > Should be fixed in SVN now. Rainer, please verify when you get a chance.
> Seems to work now!
>
> Rainer
That counts as verification :)
--
davek at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|RESOLVED |VERIFIED
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42377
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2009-12-20 19:59 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-12-15 11:17 [Bug libstdc++/42377] New: libstdc++.dll.a misses a definition of std::string::reserve rainer at emrich-ebersheim dot de
2009-12-15 11:50 ` [Bug target/42377] " davek at gcc dot gnu dot org
2009-12-15 14:25 ` rainer at emrich-ebersheim dot de
2009-12-17 9:04 ` davek at gcc dot gnu dot org
2009-12-17 10:07 ` davek at gcc dot gnu dot org
2009-12-17 10:20 ` davek at gcc dot gnu dot org
2009-12-17 10:26 ` paolo dot carlini at oracle dot com
2009-12-17 11:27 ` davek at gcc dot gnu dot org
2009-12-17 11:53 ` davek at gcc dot gnu dot org
2009-12-17 15:26 ` davek at gcc dot gnu dot org
2009-12-17 15:27 ` davek at gcc dot gnu dot org
2009-12-18 10:02 ` rainer at emrich-ebersheim dot de
2009-12-18 15:29 ` rainer at emrich-ebersheim dot de
2009-12-20 19:59 ` davek at gcc dot gnu dot org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).