2014-12-05 Olivier Hainque <hainque@adacore.com>
authorhainque <hainque@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 5 Dec 2014 17:01:42 +0000 (17:01 +0000)
committerhainque <hainque@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 5 Dec 2014 17:01:42 +0000 (17:01 +0000)
        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.

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

gcc/ChangeLog
gcc/defaults.h
gcc/dwarf2cfi.c
libgcc/ChangeLog
libgcc/unwind-dw2.c

index 8a91551..3fc9bf1 100644 (file)
@@ -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
index d2609e7..26e5750 100644 (file)
@@ -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.  */
index 0cd7220..04a17bd 100644 (file)
@@ -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;
index d7a522d..ce8c1f7 100644 (file)
@@ -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
index e474433..b262fd9 100644 (file)
 #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.