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).