Commit 55fae1a9 by Jakub Jelinek Committed by Jakub Jelinek

unwind-dw2-fde.c (__register_frame_info_bases, [...]): Don't register empty .eh_frame sections.

	* unwind-dw2-fde.c (__register_frame_info_bases, __register_frame):
	Don't register empty .eh_frame sections.
	(__deregister_frame_info_bases, __deregister_frame): Don't
	unregister them either.

From-SVN: r47211
parent 5f0e9ea2
2001-11-20 Jakub Jelinek <jakub@redhat.com>
* unwind-dw2-fde.c (__register_frame_info_bases, __register_frame):
Don't register empty .eh_frame sections.
(__deregister_frame_info_bases, __deregister_frame): Don't
unregister them either.
2001-11-19 Geoffrey Keating <geoffk@redhat.com> 2001-11-19 Geoffrey Keating <geoffk@redhat.com>
* configure.in (HAVE_AS_GDWARF2_DEBUG_FLAG): Define. * configure.in (HAVE_AS_GDWARF2_DEBUG_FLAG): Define.
......
...@@ -73,6 +73,10 @@ void ...@@ -73,6 +73,10 @@ void
__register_frame_info_bases (void *begin, struct object *ob, __register_frame_info_bases (void *begin, struct object *ob,
void *tbase, void *dbase) void *tbase, void *dbase)
{ {
/* If .eh_frame is empty, don't register at all. */
if (*(uword *)begin == 0)
return;
ob->pc_begin = (void *)-1; ob->pc_begin = (void *)-1;
ob->tbase = tbase; ob->tbase = tbase;
ob->dbase = dbase; ob->dbase = dbase;
...@@ -98,7 +102,13 @@ __register_frame_info (void *begin, struct object *ob) ...@@ -98,7 +102,13 @@ __register_frame_info (void *begin, struct object *ob)
void void
__register_frame (void *begin) __register_frame (void *begin)
{ {
struct object *ob = (struct object *) malloc (sizeof (struct object)); struct object *ob;
/* If .eh_frame is empty, don't register at all. */
if (*(uword *)begin == 0)
return;
ob = (struct object *) malloc (sizeof (struct object));
__register_frame_info (begin, ob); __register_frame_info (begin, ob);
} }
...@@ -158,6 +168,10 @@ __deregister_frame_info_bases (void *begin) ...@@ -158,6 +168,10 @@ __deregister_frame_info_bases (void *begin)
struct object **p; struct object **p;
struct object *ob = 0; struct object *ob = 0;
/* If .eh_frame is empty, we haven't registered. */
if (*(uword *)begin == 0)
return;
init_object_mutex_once (); init_object_mutex_once ();
__gthread_mutex_lock (&object_mutex); __gthread_mutex_lock (&object_mutex);
...@@ -207,7 +221,9 @@ __deregister_frame_info (void *begin) ...@@ -207,7 +221,9 @@ __deregister_frame_info (void *begin)
void void
__deregister_frame (void *begin) __deregister_frame (void *begin)
{ {
free (__deregister_frame_info (begin)); /* If .eh_frame is empty, we haven't registered. */
if (*(uword *)begin != 0)
free (__deregister_frame_info (begin));
} }
......
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