mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-05 22:39:40 +08:00
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:
parent
4c0f4b0b2f
commit
df66d16528
@ -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,
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user