This is the mail archive of the mailing list for the libstdc++ 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]

V3 PATCH: Export std::basic_iostream constructors/destructors

Several of the V3 tests failed for me on an EM64T RH ES3 machine due
to undefined symbols at link time.  It turns out that the linker on
that machine (GNU ld 2.14) apparently handles the combination of
demangling and wild-cards in linker scripts slightly differently from
more recent linkers.  As a result, construtors and destructors for
std::basic_iostream <char, char_traits<char> > were becoming local
symbols in, even though they were exported on other
systems.  As these functions are part of an "extern template" they
*must* be exported by the shared library, or we can indeed get link
failure later.  It looks like someone has run into this problem
before, in that there are entries for other constructors and
destructors in the version map.

Tested by rebuilding the library and rerunning the failing tests,
applied on the mainline.

Mark Mitchell
CodeSourcery, LLC
2005-02-08  Mark Mitchell  <>

	* config/linker-map.gnu (GLIBCXX_3.4): Add _ZNSdC* and _ZNSdD*.

Index: config/linker-map.gnu
RCS file: /cvs/gcc/gcc/libstdc++-v3/config/linker-map.gnu,v
retrieving revision 1.76
diff -c -5 -p -r1.76 linker-map.gnu
*** config/linker-map.gnu	8 Nov 2004 20:06:28 -0000	1.76
--- config/linker-map.gnu	8 Feb 2005 16:35:50 -0000
*************** GLIBCXX_3.4 {
*** 100,109 ****
--- 100,113 ----
      # operator delete[](void*)
      # operator delete[](void*, std::nothrow_t const&)
+     # std::basic_iostream constructors, destructors
+     _ZNSdC*;
+     _ZNSdD*;
      # std::locale destructors
      # std::locale::facet destructors

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