This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Bootstrap failure on i386-pc-solaris2.8
- From: Rainer Orth <ro at TechFak dot Uni-Bielefeld dot DE>
- To: Nathan Sidwell <nathan at codesourcery dot com>
- Cc: gcc-bugs at gcc dot gnu dot org
- Date: Mon, 15 Jul 2002 23:18:15 +0200 (MEST)
- Subject: Bootstrap failure on i386-pc-solaris2.8
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