aboutsummaryrefslogtreecommitdiff
path: root/gcc/frame.c
diff options
context:
space:
mode:
authorJeff Law <law@gcc.gnu.org>1997-12-06 17:31:01 -0700
committerJeff Law <law@gcc.gnu.org>1997-12-06 17:31:01 -0700
commit956d69504d77d301015532d2f0564213f0efc706 (patch)
treeec80f8d1e46852ac1ba45aecdcda7201c302ac6f /gcc/frame.c
parent27b6b158c29b45fd80c2f104d5da1f4bc818d7ab (diff)
downloadgcc-956d69504d77d301015532d2f0564213f0efc706.zip
gcc-956d69504d77d301015532d2f0564213f0efc706.tar.gz
gcc-956d69504d77d301015532d2f0564213f0efc706.tar.bz2
Merge from gcc-2.8
From-SVN: r16987
Diffstat (limited to 'gcc/frame.c')
-rw-r--r--gcc/frame.c24
1 files changed, 4 insertions, 20 deletions
diff --git a/gcc/frame.c b/gcc/frame.c
index 1fb29e44..747fb9f 100644
--- a/gcc/frame.c
+++ b/gcc/frame.c
@@ -37,8 +37,8 @@ Boston, MA 02111-1307, USA. */
#ifdef DWARF2_UNWIND_INFO
#include "gansidecl.h"
#include "dwarf2.h"
-#include "frame.h"
#include <stddef.h>
+#include "frame.h"
/* Don't use `fancy_abort' here even if config.h says to use it. */
#ifdef abort
@@ -75,18 +75,7 @@ struct dwarf_fde {
typedef struct dwarf_fde fde;
-/* The representation for an "object" to be searched for frame unwind info.
- For targets with named sections, one object is an executable or shared
- library; for other targets, one object is one translation unit. */
-
-struct object {
- void *pc_begin;
- void *pc_end;
- fde *fde_begin;
- fde ** fde_array;
- size_t count;
- struct object *next;
-};
+/* Objects to be searched for frame unwind info. */
static struct object *objects;
@@ -512,10 +501,8 @@ execute_cfa_insn (void *p, struct frame_state_internal *state,
/* Called from crtbegin.o to register the unwind info for an object. */
void
-__register_frame (void *begin)
+__register_frame (void *begin, struct object *ob)
{
- struct object *ob = (struct object *) malloc (sizeof (struct object));
-
ob->fde_begin = begin;
ob->pc_begin = ob->pc_end = 0;
@@ -531,10 +518,8 @@ __register_frame (void *begin)
collect2. */
void
-__register_frame_table (void *begin)
+__register_frame_table (void *begin, struct object *ob)
{
- struct object *ob = (struct object *) malloc (sizeof (struct object));
-
ob->fde_begin = begin;
ob->fde_array = begin;
@@ -562,7 +547,6 @@ __deregister_frame (void *begin)
/* If we've run init_frame for this object, free the FDE array. */
if (ob->pc_begin)
free (ob->fde_array);
- free (ob);
return;
}