unwind-dw2-fde-darwin.c (DESTRUCTOR_MAY_BE_CALLED_LIVE): New.
* unwind-dw2-fde-darwin.c (DESTRUCTOR_MAY_BE_CALLED_LIVE): New. (live_image_destructor): Reset image to initial state. (examine_objects): Set DESTRUCTOR_MAY_BE_CALLED_LIVE. From-SVN: r65145
This commit is contained in:
parent
375ffbe622
commit
481a818131
@ -1,3 +1,9 @@
|
||||
2003-04-01 Geoffrey Keating <geoffk@apple.com>
|
||||
|
||||
* unwind-dw2-fde-darwin.c (DESTRUCTOR_MAY_BE_CALLED_LIVE): New.
|
||||
(live_image_destructor): Reset image to initial state.
|
||||
(examine_objects): Set DESTRUCTOR_MAY_BE_CALLED_LIVE.
|
||||
|
||||
2003-04-01 Eric Botcazou <ebotcazou@libertysurf.fr>
|
||||
|
||||
* config/sparc/sparc.c (input_operand): Accept bare
|
||||
|
@ -86,12 +86,18 @@ enum {
|
||||
ALLOCED_IMAGE_MASK = 2, /* The FDE entries were allocated by
|
||||
malloc, and must be freed. This isn't
|
||||
used by newer libgcc versions. */
|
||||
IMAGE_IS_TEXT_MASK = 4 /* This image is in the TEXT segment. */
|
||||
IMAGE_IS_TEXT_MASK = 4, /* This image is in the TEXT segment. */
|
||||
DESTRUCTOR_MAY_BE_CALLED_LIVE = 8 /* The destructor may be called on an
|
||||
object that's part of the live
|
||||
image list. */
|
||||
};
|
||||
|
||||
/* Delete any data we allocated on a live_images structure.
|
||||
IMAGE has already been removed from the KEYMGR_GCC3_LIVE_IMAGE_LIST.
|
||||
Called by KeyMgr (which will delete the struct after we return.) */
|
||||
/* Delete any data we allocated on a live_images structure. Either
|
||||
IMAGE has already been removed from the
|
||||
KEYMGR_GCC3_LIVE_IMAGE_LIST and the struct will be deleted
|
||||
after we return, or that list is locked and we're being called
|
||||
because this object might be about to be unloaded. Called by
|
||||
KeyMgr. */
|
||||
|
||||
static void
|
||||
live_image_destructor (struct live_images *image)
|
||||
@ -105,7 +111,10 @@ live_image_destructor (struct live_images *image)
|
||||
image->object_info = NULL;
|
||||
if (image->examined_p & ALLOCED_IMAGE_MASK)
|
||||
free (image->fde);
|
||||
image->fde = NULL;
|
||||
}
|
||||
image->examined_p = 0;
|
||||
image->destructor = NULL;
|
||||
}
|
||||
|
||||
/* Run through the list of live images. If we can allocate memory,
|
||||
@ -165,7 +174,8 @@ examine_objects (void *pc, struct dwarf_eh_bases *bases, int dont_alloc)
|
||||
image->destructor = live_image_destructor;
|
||||
image->object_info = ob;
|
||||
|
||||
image->examined_p |= EXAMINED_IMAGE_MASK;
|
||||
image->examined_p |= (EXAMINED_IMAGE_MASK
|
||||
| DESTRUCTOR_MAY_BE_CALLED_LIVE);
|
||||
}
|
||||
image->fde = real_fde;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user