This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: fix execute/20010518-2.c


> On Thu, Aug 30, 2001 at 01:35:49PM -0400, John David Anglin wrote:
> > I know most of the v3 failures are due to __gcc_personality_sj0 being
> > undefined.
> 
> Look in the libstdc++ config.log and find out why the exception
> handling test isn't detecting sjlj exceptions.

It's not a runtime error.  It's a linker error.  There is something
strange with the libstdc++ library.  The symbol for __gcc_personality_sj0
isn't listed as a procedure entry symbol.  It just appears as a `extern|code'.

OK, I have found what is causing the problem:

--- eh_personality.s.save	Fri Aug 31 15:01:44 2001
+++ eh_personality.s	Fri Aug 31 15:27:00 2001
@@ -880,7 +880,6 @@
 	.IMPORT __cxa_throw,CODE
 	.IMPORT _ZSt9terminatev,CODE
 	.IMPORT _Unwind_SjLj_Resume,CODE
-	.IMPORT __gxx_personality_sj0,CODE
 	.IMPORT _Unwind_SjLj_Register,CODE
 	.IMPORT _Unwind_SjLj_Unregister,CODE
 	.SPACE $PRIVATE$

First, the .IMPORT statement is not needed because the symbol is defined
in this module.  Secondly, it follows the definition so that it changes
the symbol's type from ENTRY to CODE.  Thirdly, with the hpux 10 and 11
assemblers, CODE should not be used for a procedure entry in a .IMPORT.
We should be using ENTRY.  It looks like the .IMPORT statement is being
generated because there is a plabel for __gxx_personality_sj0.

Dave
-- 
J. David Anglin                                  dave.anglin@nrc.ca
National Research Council of Canada              (613) 990-0752 (FAX: 952-6605)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]