You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@stdcxx.apache.org by "Martin Sebor (JIRA)" <ji...@apache.org> on 2007/03/01 16:59:50 UTC

[jira] Commented: (STDCXX-262) [gcc/Mac OS X 10.4.6 Tiger] Multiple vtable definitions for bad_exception and bad_alloc.

    [ https://issues.apache.org/jira/browse/STDCXX-262?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12476972 ] 

Martin Sebor commented on STDCXX-262:
-------------------------------------

Thanks for the update! From the gcc issue (and the referenced patch) it seems that the problem could be due to the inline definitions of some of the virtual member functions implicitly generated by the compiler. Which makes me wonder if we could fix it by defining the functions explicitly and out of line (as we normally do for the runtime classes).

> [gcc/Mac OS X 10.4.6 Tiger] Multiple vtable definitions for bad_exception and bad_alloc.
> ----------------------------------------------------------------------------------------
>
>                 Key: STDCXX-262
>                 URL: https://issues.apache.org/jira/browse/STDCXX-262
>             Project: C++ Standard Library
>          Issue Type: Bug
>          Components: Build
>    Affects Versions: 4.1.3
>         Environment: Darwin machine.local 8.7.1 Darwin Kernel Version 8.7.1: Wed Jun  7 16:19:56 PDT 2006; root:xnu-792.9.72.obj~2/RELEASE_I386 i386 i386
>            Reporter: Eric Lemings
>
> machine:~/Work user$ svn co http://svn.apache.org/repos/asf/incubator/stdcxx/trunk stdcxx
> A    stdcxx/generate.bat
> A    stdcxx/LICENSE.txt
> A    stdcxx/tests
> A    stdcxx/tests/tr1.util
> ...
> A    stdcxx/examples/manual/time_put.cpp
> A    stdcxx/examples/manual/moneyget.cpp
> A    stdcxx/examples/manual/except.cpp
> A    stdcxx/examples/manual/memfunc.cpp
> Checked out revision 423638.
> machine:~/Work user$ cd stdcxx
> machine:~/Work/stdcxx user$ make BUILDDIR="~/Build" BUILDMODE="debug,shared,pthreads"
> creating BUILDDIR=/Users/user/Build/stdcxx
> generating /Users/user/Build/stdcxx/makefile.in from /Users/user/Work/stdcxx/etc/config/gcc.config
> make config
> configuring for gcc-4.0.1 on darwin-8.7.1-i386
> checking if the compiler is sane                   ok (invoked with gcc)
> checking if the linker is sane                     ok (invoked with gcc)
> checking system architecture                       ILP32 little endian
> ...
> gcc -c -I/Users/user/Work/stdcxx/include/ansi -D_RWSTDDEBUG    -D_RWSTD_USE_CONFIG -I/Users/user/Work/stdcxx/include -I/Users/user/Build/stdcxx/include  -pedantic -nostdinc++ -g  -W -Wall -Wcast-qual -Winline -Wshadow -Wwrite-strings -Wno-long-long -Wcast-align  -fPIC /Users/user/Work/stdcxx/src/wctype.cpp
> gcc      assert.o atomic-cxx.o bitset.o catalog.o codecvt.o collate.o ctype.o ctype_bits.o exception.o export.o facet.o file.o instance.o ios.o ios_bits.o iostore.o iostream.o iso2022.o limits.o limits_bits.o locale_bits.o locale_body.o locale_classic.o locale_combine.o locale_core.o locale_eq.o locale_global.o locale_name.o memattr.o memory.o messages.o num_get.o num_put.o punct.o random.o setlocale.o string.o strstream.o strtol.o ti_collate.o ti_filebuf.o ti_insert_dbl.o ti_insert_int.o ti_insert_ptr.o ti_ios.o ti_istream.o ti_messages.o ti_money_get.o ti_money_put.o ti_moneypunct.o ti_num_get.o ti_num_put.o ti_numpunct.o ti_ostream.o ti_streambuf.o ti_string.o ti_stringbuf.o ti_time_get.o ti_time_put.o ti_wcollate.o ti_wfilebuf.o ti_winsert_dbl.o ti_winsert_int.o ti_winsert_ptr.o ti_wios.o ti_wistream.o ti_wmessages.o ti_wmoney_get.o ti_wmoney_put.o ti_wmoneypunct.o ti_wnum_get.o ti_wnum_put.o ti_wnumpunct.o ti_wostream.o ti_wstreambuf.o ti_wstring.o ti_wstringbuf.o ti_wtime_get.o ti_wtime_put.o time_get.o time_put.o tmpbuf.o typeinfo.o valarray.o vecbool.o version.o wcodecvt.o wctype.o -lsupc++ -lgcc_eh -o /Users/user/Build/stdcxx/lib/libstd.dylib.4.2.0 
> /usr/bin/ld: multiple definitions of symbol vtable for std::bad_exception
> exception.o definition of vtable for std::bad_exceptionin section (__DATA,__const)
> /usr/lib/gcc/i686-apple-darwin8/4.0.1/../../../libsupc++.a(eh_exception.o) private external definition of vtable for std::bad_exceptionin section (__DATA,__const)
> /usr/bin/ld: multiple definitions of symbol vtable for std::bad_alloc
> memory.o definition of vtable for std::bad_allocin section (__DATA,__const)
> /usr/lib/gcc/i686-apple-darwin8/4.0.1/../../../libsupc++.a(new_handler.o) private external definition of vtable for std::bad_allocin section (__DATA,__const)
> collect2: ld returned 1 exit status
> make[2]: *** [/Users/user/Build/stdcxx/lib/libstd.dylib] Error 1
> make[1]: *** [lib] Error 2
> make: *** [libstd] Error 2

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.