Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame^] | 1 | From c0235a33de8c4f78cce35b2a8c2035c83fe1bd14 Mon Sep 17 00:00:00 2001 |
| 2 | From: hainque <hainque@138bc75d-0d04-0410-961f-82ee72b054a4> |
| 3 | Date: Fri, 5 Dec 2014 17:01:42 +0000 |
| 4 | Subject: [PATCH] 2014-12-05 Olivier Hainque <hainque@adacore.com> |
| 5 | |
| 6 | gcc/ |
| 7 | * defaults.h: (DWARF_REG_TO_UNWIND_COLUMN): Define default. |
| 8 | * dwarf2cfi.c (init_one_dwarf_reg_size): Honor |
| 9 | DWARF_REG_TO_UNWIND_COLUMN. |
| 10 | |
| 11 | libgcc/ |
| 12 | * unwind-dw2.c (DWARF_REG_TO_UNWIND_COLUMN): Remove default def, |
| 13 | now provided by defaults.h. |
| 14 | |
| 15 | |
| 16 | |
| 17 | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@218429 138bc75d-0d04-0410-961f-82ee72b054a4 |
| 18 | |
| 19 | Signed-off-by: Khem Raj <raj.khem@gmail.com> |
| 20 | Upstream-Status: Backport [gcc 5.0] |
| 21 | |
| 22 | --- |
| 23 | gcc/ChangeLog | 6 ++++++ |
| 24 | gcc/defaults.h | 5 +++++ |
| 25 | gcc/dwarf2cfi.c | 3 ++- |
| 26 | libgcc/ChangeLog | 5 +++++ |
| 27 | libgcc/unwind-dw2.c | 4 ---- |
| 28 | 5 files changed, 18 insertions(+), 5 deletions(-) |
| 29 | |
| 30 | Index: gcc-4.9.2/gcc/defaults.h |
| 31 | =================================================================== |
| 32 | --- gcc-4.9.2.orig/gcc/defaults.h |
| 33 | +++ gcc-4.9.2/gcc/defaults.h |
| 34 | @@ -438,6 +438,11 @@ see the files COPYING3 and COPYING.RUNTI |
| 35 | #define DWARF_FRAME_REGNUM(REG) DBX_REGISTER_NUMBER (REG) |
| 36 | #endif |
| 37 | |
| 38 | +/* The mapping from dwarf CFA reg number to internal dwarf reg numbers. */ |
| 39 | +#ifndef DWARF_REG_TO_UNWIND_COLUMN |
| 40 | +#define DWARF_REG_TO_UNWIND_COLUMN(REGNO) (REGNO) |
| 41 | +#endif |
| 42 | + |
| 43 | /* Map register numbers held in the call frame info that gcc has |
| 44 | collected using DWARF_FRAME_REGNUM to those that should be output in |
| 45 | .debug_frame and .eh_frame. */ |
| 46 | Index: gcc-4.9.2/gcc/dwarf2cfi.c |
| 47 | =================================================================== |
| 48 | --- gcc-4.9.2.orig/gcc/dwarf2cfi.c |
| 49 | +++ gcc-4.9.2/gcc/dwarf2cfi.c |
| 50 | @@ -280,8 +280,9 @@ void init_one_dwarf_reg_size (int regno, |
| 51 | { |
| 52 | const unsigned int dnum = DWARF_FRAME_REGNUM (regno); |
| 53 | const unsigned int rnum = DWARF2_FRAME_REG_OUT (dnum, 1); |
| 54 | + const unsigned int dcol = DWARF_REG_TO_UNWIND_COLUMN (rnum); |
| 55 | |
| 56 | - const HOST_WIDE_INT slotoffset = rnum * GET_MODE_SIZE (slotmode); |
| 57 | + const HOST_WIDE_INT slotoffset = dcol * GET_MODE_SIZE (slotmode); |
| 58 | const HOST_WIDE_INT regsize = GET_MODE_SIZE (regmode); |
| 59 | |
| 60 | init_state->processed_regno[regno] = true; |
| 61 | Index: gcc-4.9.2/libgcc/unwind-dw2.c |
| 62 | =================================================================== |
| 63 | --- gcc-4.9.2.orig/libgcc/unwind-dw2.c |
| 64 | +++ gcc-4.9.2/libgcc/unwind-dw2.c |
| 65 | @@ -55,10 +55,6 @@ |
| 66 | #define PRE_GCC3_DWARF_FRAME_REGISTERS DWARF_FRAME_REGISTERS |
| 67 | #endif |
| 68 | |
| 69 | -#ifndef DWARF_REG_TO_UNWIND_COLUMN |
| 70 | -#define DWARF_REG_TO_UNWIND_COLUMN(REGNO) (REGNO) |
| 71 | -#endif |
| 72 | - |
| 73 | /* ??? For the public function interfaces, we tend to gcc_assert that the |
| 74 | column numbers are in range. For the dwarf2 unwind info this does happen, |
| 75 | although so far in a case that doesn't actually matter. |