aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlivier Hainque <hainque@adacore.com>2014-12-05 17:01:42 +0000
committerOlivier Hainque <hainque@gcc.gnu.org>2014-12-05 17:01:42 +0000
commita66272f6d2d307e7c06b2c4e48bbbd7ec331d919 (patch)
tree1e512f15b6544db42a15b89c2b3b637da2a29dab
parentedbbaf3b1bd04c4ea9d5891308eba2fbb3349bf5 (diff)
downloadgcc-a66272f6d2d307e7c06b2c4e48bbbd7ec331d919.zip
gcc-a66272f6d2d307e7c06b2c4e48bbbd7ec331d919.tar.gz
gcc-a66272f6d2d307e7c06b2c4e48bbbd7ec331d919.tar.bz2
defaults.h: (DWARF_REG_TO_UNWIND_COLUMN): Define default.
2014-12-05 Olivier Hainque <hainque@adacore.com> gcc/ * defaults.h: (DWARF_REG_TO_UNWIND_COLUMN): Define default. * dwarf2cfi.c (init_one_dwarf_reg_size): Honor DWARF_REG_TO_UNWIND_COLUMN. libgcc/ * unwind-dw2.c (DWARF_REG_TO_UNWIND_COLUMN): Remove default def, now provided by defaults.h. From-SVN: r218429
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/defaults.h5
-rw-r--r--gcc/dwarf2cfi.c3
-rw-r--r--libgcc/ChangeLog5
-rw-r--r--libgcc/unwind-dw2.c4
5 files changed, 18 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8a91551..3fc9bf1 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2014-12-05 Olivier Hainque <hainque@adacore.com>
+ * defaults.h: (DWARF_REG_TO_UNWIND_COLUMN): Define default.
+ * dwarf2cfi.c (init_one_dwarf_reg_size): Honor
+ DWARF_REG_TO_UNWIND_COLUMN.
+
+2014-12-05 Olivier Hainque <hainque@adacore.com>
+
* dwarf2cfi.c (init_one_dwarf_reg_size): New helper, processing
one particular reg for expand_builtin_init_dwarf_reg_sizes.
(expand_builtin_init_dwarf_reg_sizes): Rework to use helper and
diff --git a/gcc/defaults.h b/gcc/defaults.h
index d2609e7..26e5750b 100644
--- a/gcc/defaults.h
+++ b/gcc/defaults.h
@@ -438,6 +438,11 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#define DWARF_FRAME_REGNUM(REG) DBX_REGISTER_NUMBER (REG)
#endif
+/* The mapping from dwarf CFA reg number to internal dwarf reg numbers. */
+#ifndef DWARF_REG_TO_UNWIND_COLUMN
+#define DWARF_REG_TO_UNWIND_COLUMN(REGNO) (REGNO)
+#endif
+
/* Map register numbers held in the call frame info that gcc has
collected using DWARF_FRAME_REGNUM to those that should be output in
.debug_frame and .eh_frame. */
diff --git a/gcc/dwarf2cfi.c b/gcc/dwarf2cfi.c
index 0cd7220..04a17bd 100644
--- a/gcc/dwarf2cfi.c
+++ b/gcc/dwarf2cfi.c
@@ -286,8 +286,9 @@ void init_one_dwarf_reg_size (int regno, machine_mode regmode,
{
const unsigned int dnum = DWARF_FRAME_REGNUM (regno);
const unsigned int rnum = DWARF2_FRAME_REG_OUT (dnum, 1);
+ const unsigned int dcol = DWARF_REG_TO_UNWIND_COLUMN (rnum);
- const HOST_WIDE_INT slotoffset = rnum * GET_MODE_SIZE (slotmode);
+ const HOST_WIDE_INT slotoffset = dcol * GET_MODE_SIZE (slotmode);
const HOST_WIDE_INT regsize = GET_MODE_SIZE (regmode);
init_state->processed_regno[regno] = true;
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index d7a522d..ce8c1f7 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,8 @@
+2014-12-05 Olivier Hainque <hainque@adacore.com>
+
+ * unwind-dw2.c (DWARF_REG_TO_UNWIND_COLUMN): Remove default def,
+ now provided by defaults.h.
+
2014-11-30 Oleg Endo <olegendo@gcc.gnu.org>
* config/sh/lib1funcs.S: Check value of __SHMEDIA__ instead of checking
diff --git a/libgcc/unwind-dw2.c b/libgcc/unwind-dw2.c
index e474433..b262fd9 100644
--- a/libgcc/unwind-dw2.c
+++ b/libgcc/unwind-dw2.c
@@ -55,10 +55,6 @@
#define PRE_GCC3_DWARF_FRAME_REGISTERS __LIBGCC_DWARF_FRAME_REGISTERS__
#endif
-#ifndef DWARF_REG_TO_UNWIND_COLUMN
-#define DWARF_REG_TO_UNWIND_COLUMN(REGNO) (REGNO)
-#endif
-
/* ??? For the public function interfaces, we tend to gcc_assert that the
column numbers are in range. For the dwarf2 unwind info this does happen,
although so far in a case that doesn't actually matter.