Bootstrap failure on i386-pc-solaris2.8

Rainer Orth ro@TechFak.Uni-Bielefeld.DE
Mon Jul 15 14:26:00 GMT 2002


Nathan,

this patch

2002-06-30  Nathan Sidwell  <nathan@codesourcery.com>

	* cp-tree.h (CPTI_TINFO_DECL_TYPE): Replace with ...
	(CPTI_TYPE_INFO_PTR_TYPE): ... this.
	(tinfo_decl_type): Replace with ...
	(type_info_ptr_type): ... this.
	(import_export_tinfo): Declare.
	(tinfo_decl_p): Rename to ...
	(unemitted_tinfo_decl_p): ... this.
	* decl2.c (import_export_decl): Break out tinfo handling into ...
	(import_export_tinfo): ... here. New function.
	(finish_file): Adjust.
	* rtti.c (TINFO_REAL_NAME): New macro.
	(init_rtti_processing): Create the tinfo types.
	(get_tinfo_decl_dynamic): Use type_info_ptr_type, get_tinfo_ptr.
	(get_tinfo_decl): Adjust.
	(get_tinfo_ptr): New function.
	(get_type_id): Use it.
	(tinfo_base_init): Create vtable decl here, if it doesn't exist.
	(ptr_initializer): Use get_tinfo_ptr.
	(ptm_initializer): Likewise.
	(synthesize_tinfo_var): Break into ...
	(get_pseudo_ti_init): ... this. Just create the initializer.
	(get_pseudo_ti_desc): .. and this.
	(create_real_tinfo_var): Remove.
	(create_pseudo_type_info): Don't create the vtable decl here.
	(get_vmi_pseudo_type_info): Remove.
	(create_tinfo_types): Adjust.
	(tinfo_decl_p): Rename to ...
	(unemitted_tinfo_decl_p): ... here. Adjust.
	(emit_tinfo_decl): Adjust. Create the initializer.

(for which I couldn't find any message to gcc-patches except the check-in
message to gcc-cvs:

	http://gcc.gnu.org/ml/gcc-cvs/2002-06/msg00934.html

) breaks bootstrap on i386-pc-solaris2.8:

Linking libstdc++.so fails:

Text relocation remains                 	referenced
    against symbol		    offset	in file
typeinfo for void                   0x28      	.libs/libstdc++.lax/libsupc++convenience.a/tinfo2.o
typeinfo for std::bad_cast          0x30      	.libs/functexcept.o
typeinfo for std::bad_cast          0x30      	.libs/libstdc++.lax/libsupc++convenience.a/eh_aux_runtime.o
typeinfo for std::bad_exception     0x30      	.libs/functexcept.o
typeinfo for std::bad_exception     0x87      	.libs/libstdc++.lax/libsupc++convenience.a/eh_personality.o
typeinfo for std::overflow_error    0x5f      	.libs/functexcept.o
typeinfo for std::underflow_error   0x5f      	.libs/functexcept.o
typeinfo for std::bad_alloc         0x30      	.libs/functexcept.o
typeinfo for std::bad_alloc         0x76      	.libs/libstdc++.lax/libsupc++convenience.a/new_op.o
typeinfo for std::bad_typeid        0x30      	.libs/functexcept.o
typeinfo for std::bad_typeid        0x30      	.libs/libstdc++.lax/libsupc++convenience.a/eh_aux_runtime.o
typeinfo for std::invalid_argument  0x5f      	.libs/functexcept.o
typeinfo for std::logic_error       0x5f      	.libs/functexcept.o
typeinfo for std::domain_error      0x5f      	.libs/functexcept.o
typeinfo for std::length_error      0x5f      	.libs/functexcept.o
typeinfo for std::out_of_range      0x5f      	.libs/functexcept.o
typeinfo for std::runtime_error     0x5f      	.libs/functexcept.o
typeinfo for std::range_error       0x5f      	.libs/functexcept.o
typeinfo for std::ios_base::failure 0x5f      	.libs/functexcept.o
ld: fatal: relocations remain against allocatable but non-writable sections
collect2: ld returned 1 exit status
make[4]: *** [libstdc++.la] Error 1

This is obviously caused by the following changes (funcexcept.s taken as an
example):

--- ok/functexcept.s    Mon Jul 15 23:06:12 2002
+++ bad/functexcept.s   Mon Jul 15 23:10:30 2002
@@ -618,7 +618,8 @@
 .LBE4:
 .LBE3:
        pushl   _ZNSt13bad_exceptionD1Ev@GOT(%ebx)
-       pushl   _ZTISt13bad_exception@GOT(%ebx)
+       leal    _ZTISt13bad_exception@GOTOFF(%ebx), %edx
+       pushl   %edx
        pushl   %eax
        call    __cxa_throw@PLT
 .LBE2:

	Rainer



More information about the Gcc-bugs mailing list