From 358738f405897b9048582d9b32a7178895e1c274 Mon Sep 17 00:00:00 2001 From: aj Date: Sat, 1 Nov 2003 09:59:50 +0000 Subject: [PATCH] * unwind-dw2.c (_Unwind_FindEnclosingFunction): Constify variable. (uw_frame_state_for): Constify variables. (extract_cie_info): Constify first argument. * unwind-dw2-fde-darwin.c: Adjust prototype of _Unwind_Find_registered_FDE for recent changes. (examine_objects): Constify return value and local variable result. (_Unwind_Find_FDE): Constify return value and local variable ret. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@73172 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 11 ++++++++++ gcc/unwind-dw2-fde-darwin.c | 50 ++++++++++++++++++++++----------------------- gcc/unwind-dw2.c | 8 ++++---- 3 files changed, 40 insertions(+), 29 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ac44681..c69fa4a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2003-11-01 Andreas Jaeger + + * unwind-dw2.c (_Unwind_FindEnclosingFunction): Constify variable. + (uw_frame_state_for): Constify variables. + (extract_cie_info): Constify first argument. + + * unwind-dw2-fde-darwin.c: Adjust prototype of + _Unwind_Find_registered_FDE for recent changes. + (examine_objects): Constify return value and local variable result. + (_Unwind_Find_FDE): Constify return value and local variable ret. + 2003-10-31 Per Bothner * c-opts.c (finish_options): Change to returns boolean - false iff diff --git a/gcc/unwind-dw2-fde-darwin.c b/gcc/unwind-dw2-fde-darwin.c index 26706d3..24cf3bc 100644 --- a/gcc/unwind-dw2-fde-darwin.c +++ b/gcc/unwind-dw2-fde-darwin.c @@ -41,8 +41,8 @@ typedef int __gthread_mutex_t; #define __gthread_mutex_lock(x) (void)(x) #define __gthread_mutex_unlock(x) (void)(x) -static fde * _Unwind_Find_registered_FDE (void *pc, - struct dwarf_eh_bases *bases); +static const fde * _Unwind_Find_registered_FDE (void *pc, + struct dwarf_eh_bases *bases); #define _Unwind_Find_FDE _Unwind_Find_registered_FDE #include "unwind-dw2-fde.c" @@ -99,7 +99,7 @@ enum { because this object might be about to be unloaded. Called by KeyMgr. */ -static void +static void live_image_destructor (struct live_images *image) { if (image->object_info) @@ -136,11 +136,11 @@ live_image_destructor (struct live_images *image) give each unseen image a new `struct object'. Even if we can't, check whether the PC is inside the FDE of each unseen image. */ - -static inline fde * + +static inline const fde * examine_objects (void *pc, struct dwarf_eh_bases *bases, int dont_alloc) { - fde *result = NULL; + const fde *result = NULL; struct live_images *image; image = _keymgr_get_and_lock_processwide_ptr (KEYMGR_GCC3_LIVE_IMAGE_LIST); @@ -150,7 +150,7 @@ examine_objects (void *pc, struct dwarf_eh_bases *bases, int dont_alloc) { char *fde; unsigned long sz; - + fde = getsectdatafromheader (image->mh, "__DATA", "__eh_frame", &sz); if (fde == NULL) { @@ -159,20 +159,20 @@ examine_objects (void *pc, struct dwarf_eh_bases *bases, int dont_alloc) if (fde != NULL) image->examined_p |= IMAGE_IS_TEXT_MASK; } - + /* If .eh_frame is empty, don't register at all. */ if (fde != NULL && sz > 0) { char *real_fde = (fde + image->vm_slide); struct object *ob = NULL; struct object panicob; - + if (! dont_alloc) ob = calloc (1, sizeof (struct object)); dont_alloc |= ob == NULL; if (dont_alloc) ob = &panicob; - + ob->pc_begin = (void *)-1; ob->tbase = 0; ob->dbase = 0; @@ -180,19 +180,19 @@ examine_objects (void *pc, struct dwarf_eh_bases *bases, int dont_alloc) ob->s.i = 0; ob->s.b.encoding = DW_EH_PE_omit; ob->fde_end = real_fde + sz; - + image->fde = real_fde; - + result = search_object (ob, pc); - + if (! dont_alloc) { struct object **p; 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); /* Insert the object into the classified list. */ @@ -206,16 +206,16 @@ examine_objects (void *pc, struct dwarf_eh_bases *bases, int dont_alloc) if (result) { int encoding; - + bases->tbase = ob->tbase; bases->dbase = ob->dbase; - + encoding = ob->s.b.encoding; if (ob->s.b.mixed_encoding) encoding = get_fde_encoding (result); - read_encoded_value_with_base (encoding, + read_encoded_value_with_base (encoding, base_from_object (encoding, ob), - result->pc_begin, + result->pc_begin, (_Unwind_Ptr *)&bases->func); break; } @@ -229,25 +229,25 @@ examine_objects (void *pc, struct dwarf_eh_bases *bases, int dont_alloc) return result; } -fde * +const fde * _Unwind_Find_FDE (void *pc, struct dwarf_eh_bases *bases) { struct km_object_info *the_obj_info; - fde *ret = NULL; + const fde *ret = NULL; - the_obj_info = + the_obj_info = _keymgr_get_and_lock_processwide_ptr (KEYMGR_GCC3_DW2_OBJ_LIST); if (! the_obj_info) the_obj_info = calloc (1, sizeof (*the_obj_info)); - + if (the_obj_info != NULL) { seen_objects = the_obj_info->seen_objects; unseen_objects = the_obj_info->unseen_objects; - + ret = _Unwind_Find_registered_FDE (pc, bases); } - + /* OK, didn't find it in the list of FDEs we've seen before, so go through and look at the new ones. */ if (ret == NULL) diff --git a/gcc/unwind-dw2.c b/gcc/unwind-dw2.c index 0b68f11..1e92c02 100644 --- a/gcc/unwind-dw2.c +++ b/gcc/unwind-dw2.c @@ -290,7 +290,7 @@ void * _Unwind_FindEnclosingFunction (void *pc) { struct dwarf_eh_bases bases; - struct dwarf_fde *fde = _Unwind_Find_FDE (pc-1, &bases); + const struct dwarf_fde *fde = _Unwind_Find_FDE (pc-1, &bases); if (fde) return bases.func; else @@ -316,7 +316,7 @@ _Unwind_GetTextRelBase (struct _Unwind_Context *context) or NULL if we encountered an undecipherable augmentation. */ static const unsigned char * -extract_cie_info (struct dwarf_cie *cie, struct _Unwind_Context *context, +extract_cie_info (const struct dwarf_cie *cie, struct _Unwind_Context *context, _Unwind_FrameState *fs) { const unsigned char *aug = cie->augmentation; @@ -1001,8 +1001,8 @@ execute_cfa_program (const unsigned char *insn_ptr, static _Unwind_Reason_Code uw_frame_state_for (struct _Unwind_Context *context, _Unwind_FrameState *fs) { - struct dwarf_fde *fde; - struct dwarf_cie *cie; + const struct dwarf_fde *fde; + const struct dwarf_cie *cie; const unsigned char *aug, *insn, *end; memset (fs, 0, sizeof (*fs)); -- 2.7.4