aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorKaz Kojima <kkojima@gcc.gnu.org>2003-08-14 00:11:19 +0000
committerKaz Kojima <kkojima@gcc.gnu.org>2003-08-14 00:11:19 +0000
commit235b4b36bfab9e3d94688b0fde2be160a7faa81c (patch)
tree1f75726a825173c0ad2abd1afabd29f18e317953 /gcc
parent996b4f8f5aa2ef2b0f6861d7093b520c3b89e99d (diff)
downloadgcc-235b4b36bfab9e3d94688b0fde2be160a7faa81c.zip
gcc-235b4b36bfab9e3d94688b0fde2be160a7faa81c.tar.gz
gcc-235b4b36bfab9e3d94688b0fde2be160a7faa81c.tar.bz2
linux.h (DBX_REGISTER_NUMBER): Define so to map a special index for MD_FALLBACK_FRAME_STATE_FOR to itself.
* config/sh/linux.h (DBX_REGISTER_NUMBER): Define so to map a special index for MD_FALLBACK_FRAME_STATE_FOR to itself. From-SVN: r70422
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/sh/linux.h11
2 files changed, 16 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a09b228..c91f301 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2003-08-13 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ * config/sh/linux.h (DBX_REGISTER_NUMBER): Define so to map a
+ special index for MD_FALLBACK_FRAME_STATE_FOR to itself.
+
2003-08-13 J"orn Rennecke <joern.rennecke@superh.com>
* sh.c (sh_get_pr_initial_val): Always wrap in unspec for TARGET_SH1.
diff --git a/gcc/config/sh/linux.h b/gcc/config/sh/linux.h
index edc7fa6..1ba1a1a 100644
--- a/gcc/config/sh/linux.h
+++ b/gcc/config/sh/linux.h
@@ -277,3 +277,14 @@ do { \
#endif /* defined (__SH5__) */
#endif /* IN_LIBGCC2 */
+
+/* For SH3 and SH4, we use a slot of the unwind frame which correspond
+ to a fake register number 16 as a placeholder for the return address
+ in MD_FALLBACK_FRAME_STATE_FOR and its content will be read with
+ _Unwind_GetGR which uses dwarf_reg_size_table to get the size of
+ the register. So the entry of dwarf_reg_size_table corresponding to
+ this slot must be set. To do this, we redefine DBX_REGISTER_NUMBER
+ so as to return itself for 16. */
+#undef DBX_REGISTER_NUMBER
+#define DBX_REGISTER_NUMBER(REGNO) \
+ ((! TARGET_SH5 && (REGNO) == 16) ? 16 : SH_DBX_REGISTER_NUMBER (REGNO))