* config/i386/darwin.h (DWARF2_FRAME_REG_OUT): New.

From-SVN: r111344
This commit is contained in:
Geoffrey Keating 2006-02-21 20:36:35 +00:00 committed by Geoffrey Keating
parent b9bd11ca41
commit 6070e8e5e3
4 changed files with 47 additions and 5 deletions

View file

@ -1,3 +1,7 @@
2006-02-21 Geoffrey Keating <geoffk@apple.com>
* config/i386/darwin.h (DWARF2_FRAME_REG_OUT): New.
2006-02-21 Alexandre Oliva <aoliva@redhat.com>
* config/i386/sse.md (vec_extractv2df_1_sse): New.

View file

@ -157,8 +157,16 @@ extern void darwin_x86_file_end (void);
register numbers for STABS. Fortunately for 64-bit code the
default and the standard are the same. */
#undef DBX_REGISTER_NUMBER
#define DBX_REGISTER_NUMBER(n) (TARGET_64BIT \
? dbx64_register_map[n] \
: write_symbols == DWARF2_DEBUG \
? svr4_dbx_register_map[n] \
: dbx_register_map[n])
#define DBX_REGISTER_NUMBER(n) \
(TARGET_64BIT ? dbx64_register_map[n] \
: write_symbols == DWARF2_DEBUG ? svr4_dbx_register_map[n] \
: dbx_register_map[n])
/* Unfortunately, the 32-bit EH information also doesn't use the standard
DWARF register numbers. */
#define DWARF2_FRAME_REG_OUT(n, for_eh) \
(! (for_eh) || write_symbols != DWARF2_DEBUG || TARGET_64BIT ? (n) \
: (n) == 5 ? 4 \
: (n) == 4 ? 5 \
: (n) >= 11 && (n) <= 18 ? (n) + 1 \
: (n))

View file

@ -1,3 +1,7 @@
2006-02-21 Geoffrey Keating <geoffk@apple.com>
* g++.dg/eh/spbp.C: New.
2006-02-21 Jakub Jelinek <jakub@redhat.com>
PR middle-end/26379

View file

@ -0,0 +1,26 @@
/* { dg-do run } */
/* { dg-options "-gdwarf-2" } */
/* This was a bug on x86-darwin, where the register numbering for SP
and BP was swapped (it's easy to do because on that port it's
different for eh_frame and debug_frame). */
#include <stdlib.h>
void f1(int t)
{
char u[t];
throw 1;
}
int main()
{
bool b = true;
try {
f1(100);
} catch (int x) {
if (b)
exit (0);
}
abort ();
}