deregister_frame_info w/o register?

Robert Lipe robertl@sco.com
Tue Nov 30 23:39:00 GMT 1999


You were right.  I misapplied the patch and was confounded by a
different problem.

Your patch (backstitched appropriately) does indeed correct the
problem with version 1.66 of libgcc2.c which is where I did the
analysis. Unfortunately, version 1.67 of libgcc2.c introduces a new
problem with very similar symptoms.  It's no longer aborting in teardown
becuase it's walking the non-existent eh_frame list.  It's aborting in
teardown becuase the atexit(_fini) is walking into a 0xffffffff opcode.

I'll split the 1.66->1.67 patch into smaller pieces and see if I can
spot it.   But I'll say your patch below is good, Jason.

RJL

Jason Merrill wrote:
> >>>>> Robert Lipe <robertl@sco.com> writes:
> 
>  >> Does this fix the problem?
> 
>  > No, becuase even in COFF there is an INIT_SECTION_ASM_OP so this
>  > HAS_INIT_SECTION gets turned on and this code won't go away.
> 
> That's the point of the patch; if COFF has HAS_INIT_SECTION, this code will
> go away.  Note the '!'.
> 
> Jason
> 
>  >> Index: libgcc2.c
>  >> ===================================================================
>  >> RCS file: /cvs/gcc/egcs/gcc/libgcc2.c,v
>  >> retrieving revision 1.75
>  >> diff -c -p -r1.75 libgcc2.c
>  >> *** libgcc2.c	1999/10/14 13:38:01	1.75
>  >> --- libgcc2.c	1999/11/01 22:58:46
>  >> *************** __do_global_dtors ()
>  >> *** 2866,2872 ****
>  >>         (*(p-1)) ();
>  >>       }
>  >>   #endif
>  >> ! #ifdef EH_FRAME_SECTION
>  >>     {
>  >>       static int completed = 0;
>  >>       if (! completed)
>  >> --- 2866,2872 ----
>  >>         (*(p-1)) ();
>  >>       }
>  >>   #endif
>  >> ! #if defined (EH_FRAME_SECTION) && !defined (HAS_INIT_SECTION)
>  >>     {
>  >>       static int completed = 0;
>  >>       if (! completed)



More information about the Gcc-bugs mailing list