OSDN Git Service

* config/sh/linux.h (DBX_REGISTER_NUMBER): Define so to map a
authorkkojima <kkojima@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 14 Aug 2003 00:11:19 +0000 (00:11 +0000)
committerkkojima <kkojima@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 14 Aug 2003 00:11:19 +0000 (00:11 +0000)
special index for MD_FALLBACK_FRAME_STATE_FOR to itself.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@70422 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/sh/linux.h

index a09b228..c91f301 100644 (file)
@@ -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.
index edc7fa6..1ba1a1a 100644 (file)
@@ -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))