* config/i386/darwin.h (DWARF2_FRAME_REG_OUT): New.
From-SVN: r111344
This commit is contained in:
parent
b9bd11ca41
commit
6070e8e5e3
4 changed files with 47 additions and 5 deletions
|
@ -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.
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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
|
||||
|
|
26
gcc/testsuite/g++.dg/eh/spbp.C
Normal file
26
gcc/testsuite/g++.dg/eh/spbp.C
Normal 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 ();
|
||||
}
|
Loading…
Add table
Reference in a new issue