blob: 3b6c94c492b49241605dce93f186583c030251ff [file] [log] [blame]
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001From c0235a33de8c4f78cce35b2a8c2035c83fe1bd14 Mon Sep 17 00:00:00 2001
2From: hainque <hainque@138bc75d-0d04-0410-961f-82ee72b054a4>
3Date: Fri, 5 Dec 2014 17:01:42 +0000
4Subject: [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
17git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@218429 138bc75d-0d04-0410-961f-82ee72b054a4
18
19Signed-off-by: Khem Raj <raj.khem@gmail.com>
20Upstream-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
30Index: 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. */
46Index: 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;
61Index: 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.