From c0235a33de8c4f78cce35b2a8c2035c83fe1bd14 Mon Sep 17 00:00:00 2001 From: hainque Date: Fri, 5 Dec 2014 17:01:42 +0000 Subject: [PATCH] 2014-12-05 Olivier Hainque 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 Signed-off-by: Khem Raj Upstream-Status: Backport [gcc 5.0] --- gcc/ChangeLog | 6 ++++++ gcc/defaults.h | 5 +++++ gcc/dwarf2cfi.c | 3 ++- libgcc/ChangeLog | 5 +++++ libgcc/unwind-dw2.c | 4 ---- 5 files changed, 18 insertions(+), 5 deletions(-) Index: gcc-4.9.2/gcc/defaults.h =================================================================== --- gcc-4.9.2.orig/gcc/defaults.h +++ gcc-4.9.2/gcc/defaults.h @@ -438,6 +438,11 @@ see the files COPYING3 and COPYING.RUNTI #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: gcc-4.9.2/gcc/dwarf2cfi.c =================================================================== --- gcc-4.9.2.orig/gcc/dwarf2cfi.c +++ gcc-4.9.2/gcc/dwarf2cfi.c @@ -280,8 +280,9 @@ void init_one_dwarf_reg_size (int regno, { 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: gcc-4.9.2/libgcc/unwind-dw2.c =================================================================== --- gcc-4.9.2.orig/libgcc/unwind-dw2.c +++ gcc-4.9.2/libgcc/unwind-dw2.c @@ -55,10 +55,6 @@ #define PRE_GCC3_DWARF_FRAME_REGISTERS 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.