frame.h (__register_frame, [...]): New.

* frame.h (__register_frame, __register_frame_table,
        __deregister_frame): New.
        * frame.c (__register_frame, __register_frame_table,
        __deregister_frame): New.
        * frame.c (__deregister_frame_info): Return void *.
        * frame.h (__deregister_frame_info): Ditto.
        * collect2.c (__deregister_frame_info): Ditto.

From-SVN: r17113
This commit is contained in:
Jeff Law 1997-12-15 16:28:44 -07:00
parent 520cd33161
commit a3fd4e7530
4 changed files with 40 additions and 6 deletions

View File

@ -1,7 +1,17 @@
Tue Dec 16 00:14:29 1997 Jeffrey A Law (law@cygnus.com)
Tue Dec 16 00:32:01 1997 Jeffrey A Law (law@cygnus.com)
* version.c: Bump for snapshot.
Tue Dec 16 00:14:29 1997 H.J. Lu (hjl@gnu.org)
* frame.h (__register_frame, __register_frame_table,
__deregister_frame): New.
* frame.c (__register_frame, __register_frame_table,
__deregister_frame): New.
* frame.c (__deregister_frame_info): Return void *.
* frame.h (__deregister_frame_info): Ditto.
* collect2.c (__deregister_frame_info): Ditto.
Mon Dec 15 18:40:08 1997 Richard Henderson <rth@cygnus.com>
* expmed.c (expand_shift): If SHIFT_COUNT_TRUNCATED, drop a SUBREG.

View File

@ -1791,7 +1791,7 @@ write_c_file_stat (stream, name)
fprintf (stream, "};\n");
fprintf (stream, "extern void __register_frame_info_table (void *, struct object *);\n");
fprintf (stream, "extern void __deregister_frame_info (void *);\n");
fprintf (stream, "extern void *__deregister_frame_info (void *);\n");
fprintf (stream, "static void reg_frame () {\n");
fprintf (stream, "\tstatic struct object ob;\n");
@ -1877,7 +1877,7 @@ write_c_file_glob (stream, name)
fprintf (stream, "};\n");
fprintf (stream, "extern void __register_frame_info_table (void *, struct object *);\n");
fprintf (stream, "extern void __deregister_frame_info (void *);\n");
fprintf (stream, "extern void *__deregister_frame_info (void *);\n");
fprintf (stream, "static void reg_frame () {\n");
fprintf (stream, "\tstatic struct object ob;\n");

View File

@ -528,6 +528,13 @@ __register_frame_info (void *begin, struct object *ob)
__gthread_mutex_unlock (&object_mutex);
}
void
__register_frame (void *begin)
{
struct object *ob = (struct object *) malloc (sizeof (struct object));
__register_frame_info (begin, ob);
}
/* Similar, but BEGIN is actually a pointer to a table of unwind entries
for different translation units. Called from the file generated by
collect2. */
@ -549,9 +556,16 @@ __register_frame_info_table (void *begin, struct object *ob)
__gthread_mutex_unlock (&object_mutex);
}
void
__register_frame_table (void *begin)
{
struct object *ob = (struct object *) malloc (sizeof (struct object));
__register_frame_info_table (begin, ob);
}
/* Called from crtend.o to deregister the unwind info for an object. */
void
void *
__deregister_frame_info (void *begin)
{
struct object **p;
@ -571,7 +585,7 @@ __deregister_frame_info (void *begin)
free (ob->fde_array);
__gthread_mutex_unlock (&object_mutex);
return;
return (void *) ob;
}
p = &((*p)->next);
}
@ -580,6 +594,12 @@ __deregister_frame_info (void *begin)
abort ();
}
void
__deregister_frame (void *begin)
{
free (__deregister_frame_info (begin));
}
/* Called from __throw to find the registers to restore for a given
PC_TARGET. The caller should allocate a local variable of `struct
frame_state' (declared in frame.h) and pass its address to STATE_IN. */

View File

@ -34,6 +34,10 @@ struct object {
struct object *next;
};
extern void __register_frame (void * );
extern void __register_frame_table (void *);
extern void __deregister_frame (void *);
/* Called either from crtbegin.o or a static constructor to register the
unwind info for an object or translation unit, respectively. */
@ -46,7 +50,7 @@ extern void __register_frame_info_table (void *, struct object *);
/* Called from crtend.o to deregister the unwind info for an object. */
extern void __deregister_frame_info (void *);
extern void *__deregister_frame_info (void *);
/* Called from __throw to find the registers to restore for a given
PC_TARGET. The caller should allocate a local variable of `struct