Conflict resolution.
This commit is contained in:
parent
b33907f299
commit
b5075450ce
27
gnu/dist/gcc/libgcc2.c
vendored
27
gnu/dist/gcc/libgcc2.c
vendored
@ -3061,10 +3061,6 @@ __empty ()
|
|||||||
|
|
||||||
#include "eh-common.h"
|
#include "eh-common.h"
|
||||||
|
|
||||||
/* This is a safeguard for dynamic handler chain. */
|
|
||||||
|
|
||||||
static void *top_elt[2];
|
|
||||||
|
|
||||||
/* Allocate and return a new EH context structure. */
|
/* Allocate and return a new EH context structure. */
|
||||||
|
|
||||||
extern void __throw ();
|
extern void __throw ();
|
||||||
@ -3072,15 +3068,26 @@ extern void __throw ();
|
|||||||
static void *
|
static void *
|
||||||
new_eh_context ()
|
new_eh_context ()
|
||||||
{
|
{
|
||||||
struct eh_context *eh = (struct eh_context *) malloc (sizeof *eh);
|
struct eh_full_context {
|
||||||
if (! eh)
|
struct eh_context c;
|
||||||
|
void *top_elt[2];
|
||||||
|
} *ehfc = (struct eh_full_context *) malloc (sizeof *ehfc);
|
||||||
|
|
||||||
|
if (! ehfc)
|
||||||
__terminate ();
|
__terminate ();
|
||||||
|
|
||||||
memset (eh, 0, sizeof *eh);
|
memset (ehfc, 0, sizeof *ehfc);
|
||||||
|
|
||||||
eh->dynamic_handler_chain = top_elt;
|
ehfc->c.dynamic_handler_chain = (void **) ehfc->top_elt;
|
||||||
|
|
||||||
return eh;
|
/* This should optimize out entirely. This should always be true,
|
||||||
|
but just in case it ever isn't, don't allow bogus code to be
|
||||||
|
generated. */
|
||||||
|
|
||||||
|
if ((void*)(&ehfc->c) != (void*)ehfc)
|
||||||
|
__terminate ();
|
||||||
|
|
||||||
|
return &ehfc->c;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if __GTHREADS
|
#if __GTHREADS
|
||||||
@ -3277,7 +3284,7 @@ __sjthrow ()
|
|||||||
/* We must call terminate if we try and rethrow an exception, when
|
/* We must call terminate if we try and rethrow an exception, when
|
||||||
there is no exception currently active and when there are no
|
there is no exception currently active and when there are no
|
||||||
handlers left. */
|
handlers left. */
|
||||||
if (! eh->info || (*dhc) == top_elt)
|
if (! eh->info || (*dhc)[0] == 0)
|
||||||
__terminate ();
|
__terminate ();
|
||||||
|
|
||||||
/* Find the jmpbuf associated with the top element of the dynamic
|
/* Find the jmpbuf associated with the top element of the dynamic
|
||||||
|
Loading…
Reference in New Issue
Block a user