From 3cfe49dab857d0d0a61597afe558a175287c27ec Mon Sep 17 00:00:00 2001 From: Geoffrey Keating Date: Thu, 7 Nov 2002 06:00:07 +0000 Subject: Index: ChangeLog 2002-11-05 Geoffrey Keating * config.gcc: Don't create crtbegin, crtend on Darwin; do create crt2.o. Rearrange t-darwin makefiles. * crtstuff.c [OBJECT_FORMAT_MACHO]: Delete. * unwind-dw2-fde-darwin.c: New. * unwind-dw2-fde-glibc.c: Correct comment. * unwind-dw2-fde.c (__register_frame_info_bases) [DWARF2_OBJECT_END_PTR_EXTENSION]: Clear fde_end. (classify_object_over_fdes): Use last_fde. (add_fdes): Likewise. (linear_search_fdes): Likewise. * unwind-dw2-fde.h (struct object) [DWARF2_OBJECT_END_PTR_EXTENSION]: Add fde_end field. (last_fde): New. * config/darwin.h (STARTFILE_SPEC): Include crt2.o not crtbegin.o. (ENDFILE_SPEC): No crtend.o. * config/t-darwin: New. * config/i386/t-darwin: Delete. * config/darwin-crt2.c: New. * config/rs6000/t-darwin: Delete contents duplicated in t-rs6000 or config/t-darwin. Index: testsuite/ChangeLog 2002-11-05 Geoffrey Keating * g++.old-deja/g++.eh/badalloc1.C: XFAIL excess errors test on Darwin. From-SVN: r58877 --- gcc/unwind-dw2-fde.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'gcc/unwind-dw2-fde.c') diff --git a/gcc/unwind-dw2-fde.c b/gcc/unwind-dw2-fde.c index a06a5bed87b..f4cb4bb45e9 100644 --- a/gcc/unwind-dw2-fde.c +++ b/gcc/unwind-dw2-fde.c @@ -1,5 +1,5 @@ /* Subroutines needed for unwinding stack frames for exception handling. */ -/* Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. Contributed by Jason Merrill . This file is part of GCC. @@ -85,6 +85,9 @@ __register_frame_info_bases (void *begin, struct object *ob, ob->u.single = begin; ob->s.i = 0; ob->s.b.encoding = DW_EH_PE_omit; +#ifdef DWARF2_OBJECT_END_PTR_EXTENSION + ob->fde_end = NULL; +#endif init_object_mutex_once (); __gthread_mutex_lock (&object_mutex); @@ -602,7 +605,7 @@ classify_object_over_fdes (struct object *ob, fde *this_fde) int encoding = DW_EH_PE_absptr; _Unwind_Ptr base = 0; - for (; this_fde->length != 0; this_fde = next_fde (this_fde)) + for (; ! last_fde (ob, this_fde); this_fde = next_fde (this_fde)) { struct dwarf_cie *this_cie; _Unwind_Ptr mask, pc_begin; @@ -656,7 +659,7 @@ add_fdes (struct object *ob, struct fde_accumulator *accu, fde *this_fde) int encoding = ob->s.b.encoding; _Unwind_Ptr base = base_from_object (ob->s.b.encoding, ob); - for (; this_fde->length != 0; this_fde = next_fde (this_fde)) + for (; ! last_fde (ob, this_fde); this_fde = next_fde (this_fde)) { struct dwarf_cie *this_cie; @@ -773,7 +776,7 @@ linear_search_fdes (struct object *ob, fde *this_fde, void *pc) int encoding = ob->s.b.encoding; _Unwind_Ptr base = base_from_object (ob->s.b.encoding, ob); - for (; this_fde->length != 0; this_fde = next_fde (this_fde)) + for (; ! last_fde (ob, this_fde); this_fde = next_fde (this_fde)) { struct dwarf_cie *this_cie; _Unwind_Ptr pc_begin, pc_range; -- cgit v1.2.1