Commit f1518966 by Andreas Jaeger Committed by Andreas Jaeger

unwind-dw2.c (_Unwind_FindEnclosingFunction): Constify variable.


	* 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.

From-SVN: r73172
parent 8ecde51f
2003-11-01 Andreas Jaeger <aj@suse.de>
* 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 <pbothner@apple.com> 2003-10-31 Per Bothner <pbothner@apple.com>
* c-opts.c (finish_options): Change to returns boolean - false iff * c-opts.c (finish_options): Change to returns boolean - false iff
......
...@@ -41,8 +41,8 @@ typedef int __gthread_mutex_t; ...@@ -41,8 +41,8 @@ typedef int __gthread_mutex_t;
#define __gthread_mutex_lock(x) (void)(x) #define __gthread_mutex_lock(x) (void)(x)
#define __gthread_mutex_unlock(x) (void)(x) #define __gthread_mutex_unlock(x) (void)(x)
static fde * _Unwind_Find_registered_FDE (void *pc, static const fde * _Unwind_Find_registered_FDE (void *pc,
struct dwarf_eh_bases *bases); struct dwarf_eh_bases *bases);
#define _Unwind_Find_FDE _Unwind_Find_registered_FDE #define _Unwind_Find_FDE _Unwind_Find_registered_FDE
#include "unwind-dw2-fde.c" #include "unwind-dw2-fde.c"
...@@ -99,7 +99,7 @@ enum { ...@@ -99,7 +99,7 @@ enum {
because this object might be about to be unloaded. Called by because this object might be about to be unloaded. Called by
KeyMgr. */ KeyMgr. */
static void static void
live_image_destructor (struct live_images *image) live_image_destructor (struct live_images *image)
{ {
if (image->object_info) if (image->object_info)
...@@ -136,11 +136,11 @@ live_image_destructor (struct live_images *image) ...@@ -136,11 +136,11 @@ live_image_destructor (struct live_images *image)
give each unseen image a new `struct object'. Even if we can't, 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. 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) examine_objects (void *pc, struct dwarf_eh_bases *bases, int dont_alloc)
{ {
fde *result = NULL; const fde *result = NULL;
struct live_images *image; struct live_images *image;
image = _keymgr_get_and_lock_processwide_ptr (KEYMGR_GCC3_LIVE_IMAGE_LIST); 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) ...@@ -150,7 +150,7 @@ examine_objects (void *pc, struct dwarf_eh_bases *bases, int dont_alloc)
{ {
char *fde; char *fde;
unsigned long sz; unsigned long sz;
fde = getsectdatafromheader (image->mh, "__DATA", "__eh_frame", &sz); fde = getsectdatafromheader (image->mh, "__DATA", "__eh_frame", &sz);
if (fde == NULL) if (fde == NULL)
{ {
...@@ -159,20 +159,20 @@ examine_objects (void *pc, struct dwarf_eh_bases *bases, int dont_alloc) ...@@ -159,20 +159,20 @@ examine_objects (void *pc, struct dwarf_eh_bases *bases, int dont_alloc)
if (fde != NULL) if (fde != NULL)
image->examined_p |= IMAGE_IS_TEXT_MASK; image->examined_p |= IMAGE_IS_TEXT_MASK;
} }
/* If .eh_frame is empty, don't register at all. */ /* If .eh_frame is empty, don't register at all. */
if (fde != NULL && sz > 0) if (fde != NULL && sz > 0)
{ {
char *real_fde = (fde + image->vm_slide); char *real_fde = (fde + image->vm_slide);
struct object *ob = NULL; struct object *ob = NULL;
struct object panicob; struct object panicob;
if (! dont_alloc) if (! dont_alloc)
ob = calloc (1, sizeof (struct object)); ob = calloc (1, sizeof (struct object));
dont_alloc |= ob == NULL; dont_alloc |= ob == NULL;
if (dont_alloc) if (dont_alloc)
ob = &panicob; ob = &panicob;
ob->pc_begin = (void *)-1; ob->pc_begin = (void *)-1;
ob->tbase = 0; ob->tbase = 0;
ob->dbase = 0; ob->dbase = 0;
...@@ -180,19 +180,19 @@ examine_objects (void *pc, struct dwarf_eh_bases *bases, int dont_alloc) ...@@ -180,19 +180,19 @@ examine_objects (void *pc, struct dwarf_eh_bases *bases, int dont_alloc)
ob->s.i = 0; ob->s.i = 0;
ob->s.b.encoding = DW_EH_PE_omit; ob->s.b.encoding = DW_EH_PE_omit;
ob->fde_end = real_fde + sz; ob->fde_end = real_fde + sz;
image->fde = real_fde; image->fde = real_fde;
result = search_object (ob, pc); result = search_object (ob, pc);
if (! dont_alloc) if (! dont_alloc)
{ {
struct object **p; struct object **p;
image->destructor = live_image_destructor; image->destructor = live_image_destructor;
image->object_info = ob; image->object_info = ob;
image->examined_p |= (EXAMINED_IMAGE_MASK image->examined_p |= (EXAMINED_IMAGE_MASK
| DESTRUCTOR_MAY_BE_CALLED_LIVE); | DESTRUCTOR_MAY_BE_CALLED_LIVE);
/* Insert the object into the classified list. */ /* Insert the object into the classified list. */
...@@ -206,16 +206,16 @@ examine_objects (void *pc, struct dwarf_eh_bases *bases, int dont_alloc) ...@@ -206,16 +206,16 @@ examine_objects (void *pc, struct dwarf_eh_bases *bases, int dont_alloc)
if (result) if (result)
{ {
int encoding; int encoding;
bases->tbase = ob->tbase; bases->tbase = ob->tbase;
bases->dbase = ob->dbase; bases->dbase = ob->dbase;
encoding = ob->s.b.encoding; encoding = ob->s.b.encoding;
if (ob->s.b.mixed_encoding) if (ob->s.b.mixed_encoding)
encoding = get_fde_encoding (result); encoding = get_fde_encoding (result);
read_encoded_value_with_base (encoding, read_encoded_value_with_base (encoding,
base_from_object (encoding, ob), base_from_object (encoding, ob),
result->pc_begin, result->pc_begin,
(_Unwind_Ptr *)&bases->func); (_Unwind_Ptr *)&bases->func);
break; break;
} }
...@@ -229,25 +229,25 @@ examine_objects (void *pc, struct dwarf_eh_bases *bases, int dont_alloc) ...@@ -229,25 +229,25 @@ examine_objects (void *pc, struct dwarf_eh_bases *bases, int dont_alloc)
return result; return result;
} }
fde * const fde *
_Unwind_Find_FDE (void *pc, struct dwarf_eh_bases *bases) _Unwind_Find_FDE (void *pc, struct dwarf_eh_bases *bases)
{ {
struct km_object_info *the_obj_info; 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); _keymgr_get_and_lock_processwide_ptr (KEYMGR_GCC3_DW2_OBJ_LIST);
if (! the_obj_info) if (! the_obj_info)
the_obj_info = calloc (1, sizeof (*the_obj_info)); the_obj_info = calloc (1, sizeof (*the_obj_info));
if (the_obj_info != NULL) if (the_obj_info != NULL)
{ {
seen_objects = the_obj_info->seen_objects; seen_objects = the_obj_info->seen_objects;
unseen_objects = the_obj_info->unseen_objects; unseen_objects = the_obj_info->unseen_objects;
ret = _Unwind_Find_registered_FDE (pc, bases); ret = _Unwind_Find_registered_FDE (pc, bases);
} }
/* OK, didn't find it in the list of FDEs we've seen before, /* OK, didn't find it in the list of FDEs we've seen before,
so go through and look at the new ones. */ so go through and look at the new ones. */
if (ret == NULL) if (ret == NULL)
......
...@@ -290,7 +290,7 @@ void * ...@@ -290,7 +290,7 @@ void *
_Unwind_FindEnclosingFunction (void *pc) _Unwind_FindEnclosingFunction (void *pc)
{ {
struct dwarf_eh_bases bases; 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) if (fde)
return bases.func; return bases.func;
else else
...@@ -316,7 +316,7 @@ _Unwind_GetTextRelBase (struct _Unwind_Context *context) ...@@ -316,7 +316,7 @@ _Unwind_GetTextRelBase (struct _Unwind_Context *context)
or NULL if we encountered an undecipherable augmentation. */ or NULL if we encountered an undecipherable augmentation. */
static const unsigned char * 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) _Unwind_FrameState *fs)
{ {
const unsigned char *aug = cie->augmentation; const unsigned char *aug = cie->augmentation;
...@@ -1001,8 +1001,8 @@ execute_cfa_program (const unsigned char *insn_ptr, ...@@ -1001,8 +1001,8 @@ execute_cfa_program (const unsigned char *insn_ptr,
static _Unwind_Reason_Code static _Unwind_Reason_Code
uw_frame_state_for (struct _Unwind_Context *context, _Unwind_FrameState *fs) uw_frame_state_for (struct _Unwind_Context *context, _Unwind_FrameState *fs)
{ {
struct dwarf_fde *fde; const struct dwarf_fde *fde;
struct dwarf_cie *cie; const struct dwarf_cie *cie;
const unsigned char *aug, *insn, *end; const unsigned char *aug, *insn, *end;
memset (fs, 0, sizeof (*fs)); memset (fs, 0, sizeof (*fs));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment