raise-gcc (db_region_for): Use _Unwind_GetIPInfo instead of _Unwind_GetIP if HAVE_GETIPINFO is defined.

* raise-gcc (db_region_for): Use _Unwind_GetIPInfo instead of
	_Unwind_GetIP if HAVE_GETIPINFO is defined.
	(db_action_for): Likewise.

From-SVN: r153613
This commit is contained in:
Eric Botcazou 2009-10-27 19:41:13 +00:00 committed by Eric Botcazou
parent 4c0f4b0b2f
commit df66d16528
5 changed files with 37 additions and 12 deletions

View File

@ -1,3 +1,9 @@
2009-10-27 Eric Botcazou <ebotcazou@adacore.com>
* raise-gcc (db_region_for): Use _Unwind_GetIPInfo instead of
_Unwind_GetIP if HAVE_GETIPINFO is defined.
(db_action_for): Likewise.
2009-10-27 Robert Dewar <dewar@adacore.com>
* s-fileio.adb, s-fileio.ads, sem_util.adb, sem_warn.adb,

View File

@ -56,6 +56,14 @@ typedef char bool;
#include "adaint.h"
#include "raise.h"
#ifdef __APPLE__
/* On MacOS X, versions older than 10.5 don't export _Unwind_GetIPInfo. */
#undef HAVE_GETIPINFO
#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1050
#define HAVE_GETIPINFO 1
#endif
#endif
/* The names of a couple of "standard" routines for unwinding/propagation
actually vary depending on the underlying GCC scheme for exception handling
(SJLJ or DWARF). We need a consistently named interface to import from
@ -501,7 +509,14 @@ typedef struct
static void
db_region_for (region_descriptor *region, _Unwind_Context *uw_context)
{
_Unwind_Ptr ip = _Unwind_GetIP (uw_context) - 1;
int ip_before_insn = 0;
#ifdef HAVE_GETIPINFO
_Unwind_Ptr ip = _Unwind_GetIPInfo (uw_context, &ip_before_insn);
#else
_Unwind_Ptr ip = _Unwind_GetIP (uw_context);
#endif
if (!ip_before_insn)
ip--;
if (! (db_accepted_codes () & DB_REGIONS))
return;
@ -631,7 +646,14 @@ typedef struct
static void
db_action_for (action_descriptor *action, _Unwind_Context *uw_context)
{
_Unwind_Ptr ip = _Unwind_GetIP (uw_context) - 1;
int ip_before_insn = 0;
#ifdef HAVE_GETIPINFO
_Unwind_Ptr ip = _Unwind_GetIPInfo (uw_context, &ip_before_insn);
#else
_Unwind_Ptr ip = _Unwind_GetIP (uw_context);
#endif
if (!ip_before_insn)
ip--;
db (DB_ACTIONS, "For ip @ 0x%08x => ", ip);
@ -670,14 +692,6 @@ db_action_for (action_descriptor *action, _Unwind_Context *uw_context)
There are two variants of this routine, depending on the underlying
mechanism (DWARF/SJLJ), which account for differences in the tables. */
#ifdef __APPLE__
/* On MacOS X, versions older than 10.5 don't export _Unwind_GetIPInfo. */
#undef HAVE_GETIPINFO
#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1050
#define HAVE_GETIPINFO 1
#endif
#endif
#ifdef __USING_SJLJ_EXCEPTIONS__
#define __builtin_eh_return_data_regno(x) x

View File

@ -1,3 +1,8 @@
2009-10-27 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/null_pointer_deref1.adb: Accept Constraint_Error.
* gnat.dg/null_pointer_deref2.adb: Likewise.
2009-10-27 Richard Guenther <rguenther@suse.de>
* gcc.dg/torture/ipa-pta-1.c: Adjust testcase.

View File

@ -17,5 +17,5 @@ procedure Null_Pointer_Deref1 is
begin
Data.all := 1;
exception
when Storage_Error => null;
when Constraint_Error | Storage_Error => null;
end;

View File

@ -20,7 +20,7 @@ procedure Null_Pointer_Deref2 is
begin
Data.all := 1;
exception
when Storage_Error => null;
when Constraint_Error | Storage_Error => null;
end T;
begin