This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
[v3] more exported symbols
- From: Benjamin Kosnik <bkoz at redhat dot com>
- To: gcc-patches at gcc dot gnu dot org, libstdc++ at gcc dot gnu dot org
- Date: Thu, 14 Feb 2002 18:19:37 -0800
- Subject: [v3] more exported symbols
Some more tweaks, gets to:
=== libstdc++-v3 Summary ===
# of expected passes 351
# of unexpected failures 3
# of unexpected successes 22
# of expected failures 3
Fails are:
FAIL: 23_containers/list_modifiers.cc (test for excess errors)
FAIL: 27_io/ios_members.cc execution test
Got to run, but thought I'd check this in as-is. My plan is to get it
to no fails then remove the hacks.
The log file for the testrun says this about the first fail:
/tmp/ccLcQsqt.o: In function `T::T[in-charge](T const&)':
/mnt/hd/bliss/src.gcc/libstdc++-v3/testsuite/testsuite_hooks.h:93: undefined reference to `typeinfo for char const*'
collect2: ld returned 1 exit status
compiler exited with status 1
This makes little sense to me, as I thought all local bits were exported.
Here's the referenced class T:
// Here's a class with nontrivial ctor/dtor that provides
// the ability to track the number of copy ctors and dtors
// and will throw on demand during copy.
class T
{
public:
// default constructor
T(int anId, bool throwOnDemand = false)
: itsId(anId), willThrow(throwOnDemand)
{ }
// copy constructor
T(const T& rhs)
: itsId(rhs.id()), willThrow(rhs.willThrow)
{
++itsCopyCount;
if (willThrow)
throw "exception";
}
~T()
{ ++itsDtorCount; }
int
id() const
{ return itsId; }
private:
const int itsId;
const bool willThrow;
public:
static void
reset()
{ itsCopyCount = 0; itsDtorCount = 0; }
static int
copyCount()
{ return itsCopyCount; }
static int
dtorCount()
{ return itsDtorCount; }
private:
static int itsCopyCount;
static int itsDtorCount;
};
tested x86-linux.
2002-02-14 Benjamin Kosnik <bkoz@redhat.com>
* config/linker-map.gnu: Change tag from GCC_3.1 to GLIBCPP_3.1.
Add typeinfo bits. Smooth.
* aclocal.m4: Regenerate.
* configure: Same.
* src/Makefile.in: Same.
Index: config/linker-map.gnu
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/config/linker-map.gnu,v
retrieving revision 1.1
diff -c -p -r1.1 linker-map.gnu
*** linker-map.gnu 2002/02/14 18:24:11 1.1
--- linker-map.gnu 2002/02/15 02:14:39
***************
*** 21,53 ****
## USA.
! ## The symbol version here is a SWAG based on libgcc-std.ver.
! GCC_3.1 {
global:
! ## Names inside the 'extern' block are human-readable (demangled) names;
! ## all but the last are terminated with a semicolon.
extern "C++"
{
std::[A-Za-z]*;
std::__throw_*;
std::__basic_file*;
- #std::__convert_to_*;
std::__num_base*;
std::__timepunct*
};
!
! ## Names not in an 'extern' block are mangled names. In the non-C cases,
! ## their demangled names are written above them, in a comment.
__cxa_*;
__gxx_personality_v0;
__dynamic_cast;
- # DW.ref.__gxx_personality_v0; # I have no idea what this is.
-
- ######## these seem okay
## operator new(unsigned)
_Znwj;
--- 21,46 ----
## USA.
! GLIBCPP_3.1 {
global:
! ## Names inside the 'extern' block are demangled names.
! ## All but the last are terminated with a semicolon.
extern "C++"
{
std::[A-Za-z]*;
std::__throw_*;
std::__basic_file*;
std::__num_base*;
std::__timepunct*
};
! ## Names not in an 'extern' block are mangled names.
__cxa_*;
__gxx_personality_v0;
__dynamic_cast;
## operator new(unsigned)
_Znwj;
*************** GCC_3.1 {
*** 59,66 ****
## operator delete[](void*)
_ZdaPv;
! ######## hmmmmm
## std::_S_rb_tree_red
_ZSt14_S_rb_tree_red;
--- 52,69 ----
## operator delete[](void*)
_ZdaPv;
+
+ # vtable
+ # XXX export them all?
+ _ZTVSt*;
+ _ZTVN10__cxxabiv1*;
! # typeinfo
! # XXX export them all?
! _ZTSSt*;
!
!
! ######## hmmmmm, the rediculous hacks section....
## std::_S_rb_tree_red
_ZSt14_S_rb_tree_red;
*************** GCC_3.1 {
*** 97,126 ****
# ditto for istreambuf_iterator
_ZSt9has_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale;
-
-
- # ## vtable for std::logic_error
- # _ZTVSt11logic_error;
- #
- # ## vtable for std::exception
- # _ZTVSt9exception;
- #
- # ## vtable for __cxxabiv1::__class_type_info
- # _ZTVN10__cxxabiv117__class_type_infoE;
- #
- # ## vtable for __cxxabiv1::__si_class_type_info
- # _ZTVN10__cxxabiv120__si_class_type_infoE;
- #
- # ## vtable for __cxxabiv1::__vmi_class_type_info
- # _ZTVN10__cxxabiv121__vmi_class_type_infoE;
- #
- # gah, screw it, export /all/ the vtables in these namespaces, somebody
- # smarter than me will have to figure this one out
- _ZTVSt*; _ZTVN10__cxxabiv1*;
-
-
-
local:
*;
};
-
--- 100,105 ----