|
@@ -1,7 +1,7 @@
|
|
|
-From 505f10a0ea1a8bba0584859d9a348bb779593ec2 Mon Sep 17 00:00:00 2001
|
|
|
+From 26e406962cf7298837b350b979afff0ac34ecb0b Mon Sep 17 00:00:00 2001
|
|
|
From: Khem Raj <raj.khem@gmail.com>
|
|
|
Date: Mon, 2 Mar 2015 02:31:12 +0000
|
|
|
-Subject: [PATCH] Add support for Renesas SH (sh4) architecture.
|
|
|
+Subject: [PATCH 04/11] Add support for Renesas SH (sh4) architecture.
|
|
|
|
|
|
gdb (7.4-1~cvs20111117.2) experimental; urgency=low
|
|
|
.
|
|
@@ -16,7 +16,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
|
|
gdb/Makefile.in | 2 +
|
|
|
gdb/configure.host | 1 +
|
|
|
gdb/sh-linux-tdep.c | 519 +++++++++++++++++++++++++++
|
|
|
- gdb/sh-tdep.c | 53 ++-
|
|
|
+ gdb/sh-tdep.c | 52 +--
|
|
|
gdb/sh-tdep.h | 49 +++
|
|
|
gdb/testsuite/gdb.asm/asm-source.exp | 5 +
|
|
|
gdb/testsuite/gdb.asm/sh.inc | 3 +-
|
|
@@ -24,13 +24,13 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
|
|
gdb/testsuite/gdb.base/annota3.c | 4 +
|
|
|
gdb/testsuite/gdb.base/sigall.c | 3 +
|
|
|
gdb/testsuite/gdb.base/signals.c | 4 +
|
|
|
- 11 files changed, 617 insertions(+), 29 deletions(-)
|
|
|
+ 11 files changed, 617 insertions(+), 28 deletions(-)
|
|
|
|
|
|
diff --git a/gdb/Makefile.in b/gdb/Makefile.in
|
|
|
-index c3e074b21f..42dd7af59c 100644
|
|
|
+index 4808357e651..a009004ab05 100644
|
|
|
--- a/gdb/Makefile.in
|
|
|
+++ b/gdb/Makefile.in
|
|
|
-@@ -2317,6 +2317,8 @@ ALLDEPFILES = \
|
|
|
+@@ -2273,6 +2273,8 @@ ALLDEPFILES = \
|
|
|
sh-nbsd-nat.c \
|
|
|
sh-nbsd-tdep.c \
|
|
|
sh-tdep.c \
|
|
@@ -40,7 +40,7 @@ index c3e074b21f..42dd7af59c 100644
|
|
|
solib-aix.c \
|
|
|
solib-svr4.c \
|
|
|
diff --git a/gdb/configure.host b/gdb/configure.host
|
|
|
-index ce52823729..5b5173a71a 100644
|
|
|
+index ce528237291..5b5173a71aa 100644
|
|
|
--- a/gdb/configure.host
|
|
|
+++ b/gdb/configure.host
|
|
|
@@ -148,6 +148,7 @@ riscv*-*-linux*) gdb_host=linux ;;
|
|
@@ -52,7 +52,7 @@ index ce52823729..5b5173a71a 100644
|
|
|
gdb_host=nbsd ;;
|
|
|
sh*-*-openbsd*) gdb_host=nbsd ;;
|
|
|
diff --git a/gdb/sh-linux-tdep.c b/gdb/sh-linux-tdep.c
|
|
|
-index 13c10eeeda..1d0d583a64 100644
|
|
|
+index 5d2f38f5801..06a45b74827 100644
|
|
|
--- a/gdb/sh-linux-tdep.c
|
|
|
+++ b/gdb/sh-linux-tdep.c
|
|
|
@@ -18,14 +18,37 @@
|
|
@@ -600,7 +600,7 @@ index 13c10eeeda..1d0d583a64 100644
|
|
|
|
|
|
/* GNU/Linux uses SVR4-style shared libraries. */
|
|
|
diff --git a/gdb/sh-tdep.c b/gdb/sh-tdep.c
|
|
|
-index e3aee0ac28..5958cf3688 100644
|
|
|
+index 7aadf9165ca..e173e215a2d 100644
|
|
|
--- a/gdb/sh-tdep.c
|
|
|
+++ b/gdb/sh-tdep.c
|
|
|
@@ -21,6 +21,9 @@
|
|
@@ -637,16 +637,15 @@ index e3aee0ac28..5958cf3688 100644
|
|
|
static int
|
|
|
sh_is_renesas_calling_convention (struct type *func_type)
|
|
|
{
|
|
|
-@@ -1050,7 +1036,7 @@ sh_treat_as_flt_p (struct type *type)
|
|
|
+@@ -1050,6 +1036,7 @@ sh_treat_as_flt_p (struct type *type)
|
|
|
return 0;
|
|
|
/* Otherwise if the type of that member is float, the whole type is
|
|
|
treated as float. */
|
|
|
-- if (TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_FLT)
|
|
|
-+ if (TYPE_CODE (check_typedef (TYPE_FIELD_TYPE (type, 0))) == TYPE_CODE_FLT)
|
|
|
++ type = check_typedef (type);
|
|
|
+ if (type->field (0).type ()->code () == TYPE_CODE_FLT)
|
|
|
return 1;
|
|
|
/* Otherwise it's not treated as float. */
|
|
|
- return 0;
|
|
|
-@@ -1100,7 +1086,7 @@ sh_push_dummy_call_fpu (struct gdbarch *gdbarch,
|
|
|
+@@ -1100,7 +1087,7 @@ sh_push_dummy_call_fpu (struct gdbarch *gdbarch,
|
|
|
in four registers available. Loop thru args from first to last. */
|
|
|
for (argnum = 0; argnum < nargs; argnum++)
|
|
|
{
|
|
@@ -655,7 +654,7 @@ index e3aee0ac28..5958cf3688 100644
|
|
|
len = TYPE_LENGTH (type);
|
|
|
val = sh_justify_value_in_reg (gdbarch, args[argnum], len);
|
|
|
|
|
|
-@@ -1835,7 +1821,7 @@ sh_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
|
|
|
+@@ -1835,7 +1822,7 @@ sh_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
|
|
|
reg->how = DWARF2_FRAME_REG_UNDEFINED;
|
|
|
}
|
|
|
|
|
@@ -664,7 +663,7 @@ index e3aee0ac28..5958cf3688 100644
|
|
|
sh_alloc_frame_cache (void)
|
|
|
{
|
|
|
struct sh_frame_cache *cache;
|
|
|
-@@ -1862,7 +1848,7 @@ sh_alloc_frame_cache (void)
|
|
|
+@@ -1862,7 +1849,7 @@ sh_alloc_frame_cache (void)
|
|
|
return cache;
|
|
|
}
|
|
|
|
|
@@ -673,7 +672,7 @@ index e3aee0ac28..5958cf3688 100644
|
|
|
sh_frame_cache (struct frame_info *this_frame, void **this_cache)
|
|
|
{
|
|
|
struct gdbarch *gdbarch = get_frame_arch (this_frame);
|
|
|
-@@ -1929,9 +1915,9 @@ sh_frame_cache (struct frame_info *this_frame, void **this_cache)
|
|
|
+@@ -1929,9 +1916,9 @@ sh_frame_cache (struct frame_info *this_frame, void **this_cache)
|
|
|
return cache;
|
|
|
}
|
|
|
|
|
@@ -686,7 +685,7 @@ index e3aee0ac28..5958cf3688 100644
|
|
|
{
|
|
|
struct gdbarch *gdbarch = get_frame_arch (this_frame);
|
|
|
struct sh_frame_cache *cache = sh_frame_cache (this_frame, this_cache);
|
|
|
-@@ -1945,7 +1931,7 @@ sh_frame_prev_register (struct frame_info *this_frame,
|
|
|
+@@ -1945,7 +1932,7 @@ sh_frame_prev_register (struct frame_info *this_frame,
|
|
|
the current frame. Frob regnum so that we pull the value from
|
|
|
the correct place. */
|
|
|
if (regnum == gdbarch_pc_regnum (gdbarch))
|
|
@@ -695,7 +694,7 @@ index e3aee0ac28..5958cf3688 100644
|
|
|
|
|
|
if (regnum < SH_NUM_REGS && cache->saved_regs[regnum] != -1)
|
|
|
return frame_unwind_got_memory (this_frame, regnum,
|
|
|
-@@ -2234,8 +2220,8 @@ sh_return_in_first_hidden_param_p (struct gdbarch *gdbarch,
|
|
|
+@@ -2234,8 +2221,8 @@ sh_return_in_first_hidden_param_p (struct gdbarch *gdbarch,
|
|
|
static struct gdbarch *
|
|
|
sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
|
|
{
|
|
@@ -705,7 +704,7 @@ index e3aee0ac28..5958cf3688 100644
|
|
|
|
|
|
/* If there is already a candidate, use it. */
|
|
|
arches = gdbarch_list_lookup_by_info (arches, &info);
|
|
|
-@@ -2247,6 +2233,18 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
|
|
+@@ -2247,6 +2234,18 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
|
|
tdep = XCNEW (struct gdbarch_tdep);
|
|
|
gdbarch = gdbarch_alloc (&info, tdep);
|
|
|
|
|
@@ -724,7 +723,7 @@ index e3aee0ac28..5958cf3688 100644
|
|
|
set_gdbarch_short_bit (gdbarch, 2 * TARGET_CHAR_BIT);
|
|
|
set_gdbarch_int_bit (gdbarch, 4 * TARGET_CHAR_BIT);
|
|
|
set_gdbarch_long_bit (gdbarch, 4 * TARGET_CHAR_BIT);
|
|
|
-@@ -2398,10 +2396,11 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
|
|
+@@ -2398,10 +2397,11 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
|
|
break;
|
|
|
}
|
|
|
|
|
@@ -738,7 +737,7 @@ index e3aee0ac28..5958cf3688 100644
|
|
|
frame_unwind_append_unwinder (gdbarch, &sh_frame_unwind);
|
|
|
|
|
|
diff --git a/gdb/sh-tdep.h b/gdb/sh-tdep.h
|
|
|
-index 76e2e76e39..2710f63010 100644
|
|
|
+index 76e2e76e39b..2710f63010c 100644
|
|
|
--- a/gdb/sh-tdep.h
|
|
|
+++ b/gdb/sh-tdep.h
|
|
|
@@ -21,6 +21,12 @@
|
|
@@ -821,7 +820,7 @@ index 76e2e76e39..2710f63010 100644
|
|
|
where each general-purpose register is stored inside the associated
|
|
|
core file section. */
|
|
|
diff --git a/gdb/testsuite/gdb.asm/asm-source.exp b/gdb/testsuite/gdb.asm/asm-source.exp
|
|
|
-index 4914498f98..6e25cbed18 100644
|
|
|
+index 4914498f98c..6e25cbed185 100644
|
|
|
--- a/gdb/testsuite/gdb.asm/asm-source.exp
|
|
|
+++ b/gdb/testsuite/gdb.asm/asm-source.exp
|
|
|
@@ -116,6 +116,11 @@ switch -glob -- [istarget] {
|
|
@@ -837,7 +836,7 @@ index 4914498f98..6e25cbed18 100644
|
|
|
set asm-arch sh
|
|
|
set debug-flags "-gdwarf-2"
|
|
|
diff --git a/gdb/testsuite/gdb.asm/sh.inc b/gdb/testsuite/gdb.asm/sh.inc
|
|
|
-index a4a5fc545e..89efed7795 100644
|
|
|
+index a4a5fc545e4..89efed7795c 100644
|
|
|
--- a/gdb/testsuite/gdb.asm/sh.inc
|
|
|
+++ b/gdb/testsuite/gdb.asm/sh.inc
|
|
|
@@ -40,9 +40,8 @@
|
|
@@ -852,7 +851,7 @@ index a4a5fc545e..89efed7795 100644
|
|
|
.align 1
|
|
|
.Lafterconst\@:
|
|
|
diff --git a/gdb/testsuite/gdb.base/annota1.c b/gdb/testsuite/gdb.base/annota1.c
|
|
|
-index 424e1b8327..0de2e7b633 100644
|
|
|
+index 424e1b83278..0de2e7b633a 100644
|
|
|
--- a/gdb/testsuite/gdb.base/annota1.c
|
|
|
+++ b/gdb/testsuite/gdb.base/annota1.c
|
|
|
@@ -1,6 +1,9 @@
|
|
@@ -866,7 +865,7 @@ index 424e1b8327..0de2e7b633 100644
|
|
|
void
|
|
|
handle_USR1 (int sig)
|
|
|
diff --git a/gdb/testsuite/gdb.base/annota3.c b/gdb/testsuite/gdb.base/annota3.c
|
|
|
-index 424e1b8327..952aaf218a 100644
|
|
|
+index 424e1b83278..952aaf218ab 100644
|
|
|
--- a/gdb/testsuite/gdb.base/annota3.c
|
|
|
+++ b/gdb/testsuite/gdb.base/annota3.c
|
|
|
@@ -1,6 +1,10 @@
|
|
@@ -881,7 +880,7 @@ index 424e1b8327..952aaf218a 100644
|
|
|
void
|
|
|
handle_USR1 (int sig)
|
|
|
diff --git a/gdb/testsuite/gdb.base/sigall.c b/gdb/testsuite/gdb.base/sigall.c
|
|
|
-index 81f3b08d6b..1574b2d6cb 100644
|
|
|
+index 81f3b08d6bc..1574b2d6cb8 100644
|
|
|
--- a/gdb/testsuite/gdb.base/sigall.c
|
|
|
+++ b/gdb/testsuite/gdb.base/sigall.c
|
|
|
@@ -1,6 +1,9 @@
|
|
@@ -895,7 +894,7 @@ index 81f3b08d6b..1574b2d6cb 100644
|
|
|
/* Signal handlers, we set breakpoints in them to make sure that the
|
|
|
signals really get delivered. */
|
|
|
diff --git a/gdb/testsuite/gdb.base/signals.c b/gdb/testsuite/gdb.base/signals.c
|
|
|
-index 756606880f..1205a9bc9c 100644
|
|
|
+index 756606880fa..1205a9bc9c5 100644
|
|
|
--- a/gdb/testsuite/gdb.base/signals.c
|
|
|
+++ b/gdb/testsuite/gdb.base/signals.c
|
|
|
@@ -3,6 +3,10 @@
|
|
@@ -909,3 +908,6 @@ index 756606880f..1205a9bc9c 100644
|
|
|
|
|
|
static int count = 0;
|
|
|
|
|
|
+--
|
|
|
+2.29.2
|
|
|
+
|