[Bug c++/19159] [4.0 Regression] Undefined symbol: vtable for __cxxabiv1::__vmi_class_type_info

danglin at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Sat Jan 8 22:57:00 GMT 2005


------- Additional Comments From danglin at gcc dot gnu dot org  2005-01-08 22:57 -------
I first tested the aix.patch using the cvs head.  It still had the same
problem.

Using the tree from "12/16/04 11:03:00 UTC" (my original suggestion was
known to work at this point), I tested the patch together with rtti.c
changes for PR 18257.  Still no joy.

The vtables aren't being emitted because the runtime check in rtti.c
(emit_support_tinfos) is broken:

Breakpoint 1, emit_support_tinfos () at ../../gcc/gcc/cp/rtti.c:1342
1342    ../../gcc/gcc/cp/rtti.c: A file or directory in the path name does not 
exist..
        in ../../gcc/gcc/cp/rtti.c
(gdb) p debug_tree (dtor)
 <function_decl 300d5200 __fundamental_type_info
    type <method_type 300d5380
        type <void_type 30018f00 void type_6 VOID
            align 8 symtab -11 alias set -1
            pointer_to_this <pointer_type 30018f80>>
        SI
        size <integer_cst 300024a0 constant invariant 32>
        unit size <integer_cst 30002160 constant invariant 4>
        align 32 symtab 0 alias set -1 method basetype <record_type 300d4b00 
__fundamental_type_info>
        arg-types <tree_list 300d2648 value <pointer_type 300d4f00>
            chain <tree_list 300af678 value <integer_type 30009780 int>
                chain <tree_list 3000ae40 value <void_type 30018f00 void>>>>>
    public abstract external no-static-chain virtual SI file /opt/build/dave/gcc-
4.0.0/gcc/libstdc++-v3/libsupc++/cxxabi.h line 167 context <record_type 300d4b00 
__fundamental_type_info>
    arguments <parm_decl 300d5280 this
        type <pointer_type 300d5000 type <record_type 300d4b00 
__fundamental_type_info>
            readonly unsigned SI size <integer_cst 300024a0 32> unit size <
integer_cst 30002160 4>
            align 32 symtab 0 alias set -1>
        readonly unsigned SI file /opt/build/dave/gcc-4.0.0/gcc/libstdc++-v3/
libsupc++/cxxabi.h line 167 size <integer_cst 300024a0 32> unit size <integer_cst 
30002160 4>
        align 32 initial <pointer_type 300d5000> arg-type <pointer_type 300d5000>
        chain <parm_decl 300d5300 __in_chrg type <integer_type 30009780 int>
            readonly SI file /opt/build/dave/gcc-4.0.0/gcc/libstdc++-v3/libsupc++
/cxxabi.h line 167 size <integer_cst 300024a0 32> unit size <integer_cst 30002160 
4>
            align 32 initial <integer_type 30009780 int> arg-type <integer_type 
30009780 int>>>
    chain <function_decl 300d5b00 __base_dtor >>
$2 = void

I recall now that my change to import_export_decl removed DECL_EXTERNAL from
dtor.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19159



More information about the Gcc-bugs mailing list