OLD | NEW |
1 /* DWARF2 exception handling and frame unwind runtime interface routines. | 1 /* DWARF2 exception handling and frame unwind runtime interface routines. |
2 Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, | 2 Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, |
3 2008, 2009, 2010 Free Software Foundation, Inc. | 3 2008, 2009, 2010 Free Software Foundation, Inc. |
4 | 4 |
5 This file is part of GCC. | 5 This file is part of GCC. |
6 | 6 |
7 GCC is free software; you can redistribute it and/or modify it | 7 GCC is free software; you can redistribute it and/or modify it |
8 under the terms of the GNU General Public License as published by | 8 under the terms of the GNU General Public License as published by |
9 the Free Software Foundation; either version 3, or (at your option) | 9 the Free Software Foundation; either version 3, or (at your option) |
10 any later version. | 10 any later version. |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
44 #else | 44 #else |
45 #undef STACK_GROWS_DOWNWARD | 45 #undef STACK_GROWS_DOWNWARD |
46 #define STACK_GROWS_DOWNWARD 1 | 46 #define STACK_GROWS_DOWNWARD 1 |
47 #endif | 47 #endif |
48 | 48 |
49 /* Dwarf frame registers used for pre gcc 3.0 compiled glibc. */ | 49 /* Dwarf frame registers used for pre gcc 3.0 compiled glibc. */ |
50 #ifndef PRE_GCC3_DWARF_FRAME_REGISTERS | 50 #ifndef PRE_GCC3_DWARF_FRAME_REGISTERS |
51 #define PRE_GCC3_DWARF_FRAME_REGISTERS DWARF_FRAME_REGISTERS | 51 #define PRE_GCC3_DWARF_FRAME_REGISTERS DWARF_FRAME_REGISTERS |
52 #endif | 52 #endif |
53 | 53 |
| 54 /* @LOCALMOD-BEGIN */ |
| 55 #if defined(__arm__) |
| 56 /* |
| 57 * Override DWARF_REG_TO_UNWIND_COLUMN to map high ARM register numbers |
| 58 * into lower and obsolete register numbers. See unwind-pnacl.h. |
| 59 */ |
| 60 int DWARF_REG_TO_UNWIND_COLUMN(int REGNO) { |
| 61 if (REGNO >= 0 && REGNO < 16) |
| 62 return REGNO; |
| 63 if (REGNO >= 256 && REGNO < 287) |
| 64 return (REGNO - 256 + 16); |
| 65 /* |
| 66 * Otherwise, assume REGNO is already mapped down from 256-287 -> 16-48. |
| 67 * The normal 16-48 ARM dwarf registers are obsolete |
| 68 * so this is sort of okay. |
| 69 */ |
| 70 if (REGNO < DWARF_FRAME_REGISTERS) |
| 71 return REGNO; |
| 72 abort(); |
| 73 } |
| 74 |
| 75 #else |
54 #ifndef DWARF_REG_TO_UNWIND_COLUMN | 76 #ifndef DWARF_REG_TO_UNWIND_COLUMN |
55 #define DWARF_REG_TO_UNWIND_COLUMN(REGNO) (REGNO) | 77 #define DWARF_REG_TO_UNWIND_COLUMN(REGNO) (REGNO) |
56 #endif | 78 #endif |
| 79 #endif // __arm__ |
| 80 /* @LOCALMOD-END |
| 81 |
57 | 82 |
58 /* This is the register and unwind state for a particular frame. This | 83 /* This is the register and unwind state for a particular frame. This |
59 provides the information necessary to unwind up past a frame and return | 84 provides the information necessary to unwind up past a frame and return |
60 to its caller. */ | 85 to its caller. */ |
61 struct _Unwind_Context | 86 struct _Unwind_Context |
62 { | 87 { |
63 void *reg[DWARF_FRAME_REGISTERS+1]; | 88 void *reg[DWARF_FRAME_REGISTERS+1]; |
64 void *cfa; | 89 void *cfa; |
65 void *ra; | 90 void *ra; |
66 void *lsda; | 91 void *lsda; |
(...skipping 1574 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1641 alias (_Unwind_Resume_or_Rethrow); | 1666 alias (_Unwind_Resume_or_Rethrow); |
1642 alias (_Unwind_SetGR); | 1667 alias (_Unwind_SetGR); |
1643 // @LOCALMOD-BEGIN | 1668 // @LOCALMOD-BEGIN |
1644 alias (_Unwind_PNaClSetResult0); | 1669 alias (_Unwind_PNaClSetResult0); |
1645 alias (_Unwind_PNaClSetResult1); | 1670 alias (_Unwind_PNaClSetResult1); |
1646 // @LOCALMOD-END | 1671 // @LOCALMOD-END |
1647 alias (_Unwind_SetIP); | 1672 alias (_Unwind_SetIP); |
1648 #endif | 1673 #endif |
1649 | 1674 |
1650 #endif /* !USING_SJLJ_EXCEPTIONS */ | 1675 #endif /* !USING_SJLJ_EXCEPTIONS */ |
OLD | NEW |