[v3] more exported symbols

Benjamin Kosnik bkoz@redhat.com
Thu Feb 14 18:19:00 GMT 2002


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



More information about the Libstdc++ mailing list