diff options
| author | Khem Raj <raj.khem@gmail.com> | 2015-04-10 18:20:47 -0700 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2015-04-13 22:28:37 +0100 |
| commit | 682ab52d776d74fb5ede949505f72b4c15ae8191 (patch) | |
| tree | 91d2f32ebd3fa1dbe06ecf54be662804018aec7b | |
| parent | f4ad72e6e46e481d3fad920be9bb417fd175a991 (diff) | |
| download | openembedded-core-682ab52d776d74fb5ede949505f72b4c15ae8191.tar.gz openembedded-core-682ab52d776d74fb5ede949505f72b4c15ae8191.tar.bz2 openembedded-core-682ab52d776d74fb5ede949505f72b4c15ae8191.zip | |
gdb: Refresh patches against git
Drop dead patches sim-install.patch, uclibc.patch
Change-Id: I5bd160d0959154896096ebc93a8a450d04979c73
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
| -rw-r--r-- | meta/recipes-devtools/gdb/gdb-cross_7.9.bb | 2 | ||||
| -rw-r--r-- | meta/recipes-devtools/gdb/gdb.inc | 5 | ||||
| -rw-r--r-- | meta/recipes-devtools/gdb/gdb/0001-make-man-install-relative-to-DESTDIR.patch | 28 | ||||
| -rw-r--r-- | meta/recipes-devtools/gdb/gdb/0002-Change-order-of-CFLAGS.patch (renamed from meta/recipes-devtools/gdb/gdb/gdbserver-cflags-last.diff) | 23 | ||||
| -rw-r--r-- | meta/recipes-devtools/gdb/gdb/0003-Add-support-for-Renesas-SH-sh4-architecture.patch (renamed from meta/recipes-devtools/gdb/gdb/renesas-sh-native-support.patch) | 835 | ||||
| -rw-r--r-- | meta/recipes-devtools/gdb/gdb/0004-Change-comment-in-gdb-compile.patch | 48 | ||||
| -rw-r--r-- | meta/recipes-devtools/gdb/gdb/sim-install-6.6.patch | 14 | ||||
| -rw-r--r-- | meta/recipes-devtools/gdb/gdb/sim-install.patch | 36 | ||||
| -rw-r--r-- | meta/recipes-devtools/gdb/gdb/uclibc.patch | 196 |
9 files changed, 286 insertions, 901 deletions
diff --git a/meta/recipes-devtools/gdb/gdb-cross_7.9.bb b/meta/recipes-devtools/gdb/gdb-cross_7.9.bb index f9da486d7d..3a95cfb035 100644 --- a/meta/recipes-devtools/gdb/gdb-cross_7.9.bb +++ b/meta/recipes-devtools/gdb/gdb-cross_7.9.bb @@ -1,4 +1,4 @@ require gdb-cross.inc require gdb-${PV}.inc -SRC_URI += "file://sim-install-6.6.patch" +SRC_URI += "file://0001-make-man-install-relative-to-DESTDIR.patch" diff --git a/meta/recipes-devtools/gdb/gdb.inc b/meta/recipes-devtools/gdb/gdb.inc index 2c95e03b1b..e65af4bf8b 100644 --- a/meta/recipes-devtools/gdb/gdb.inc +++ b/meta/recipes-devtools/gdb/gdb.inc @@ -2,8 +2,9 @@ require gdb-common.inc inherit gettext -SRC_URI += "file://gdbserver-cflags-last.diff;striplevel=0 \ - file://renesas-sh-native-support.patch \ +SRC_URI += "file://0002-Change-order-of-CFLAGS.patch \ + file://0003-Add-support-for-Renesas-SH-sh4-architecture.patch \ + file://0004-Change-comment-in-gdb-compile.patch \ " #LDFLAGS_append = " -s" #export CFLAGS_append=" -L${STAGING_LIBDIR}" diff --git a/meta/recipes-devtools/gdb/gdb/0001-make-man-install-relative-to-DESTDIR.patch b/meta/recipes-devtools/gdb/gdb/0001-make-man-install-relative-to-DESTDIR.patch new file mode 100644 index 0000000000..e0221afca1 --- /dev/null +++ b/meta/recipes-devtools/gdb/gdb/0001-make-man-install-relative-to-DESTDIR.patch @@ -0,0 +1,28 @@ +From d3ec939b82be23e7c9534cdc7502645f6c5856d1 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Mon, 2 Mar 2015 02:27:55 +0000 +Subject: [PATCH 1/3] make man install relative to DESTDIR + +Upstream-Status: Pending + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + sim/common/Makefile.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/sim/common/Makefile.in b/sim/common/Makefile.in +index d49a93b..2121c46 100644 +--- a/sim/common/Makefile.in ++++ b/sim/common/Makefile.in +@@ -35,7 +35,7 @@ tooldir = $(libdir)/$(target_alias) + datarootdir = @datarootdir@ + datadir = @datadir@ + mandir = @mandir@ +-man1dir = $(mandir)/man1 ++man1dir = $(DESTDIR)$(mandir)/man1 + infodir = @infodir@ + includedir = @includedir@ + +-- +2.1.4 + diff --git a/meta/recipes-devtools/gdb/gdb/gdbserver-cflags-last.diff b/meta/recipes-devtools/gdb/gdb/0002-Change-order-of-CFLAGS.patch index 16a3aa93d9..26a34d3444 100644 --- a/meta/recipes-devtools/gdb/gdb/gdbserver-cflags-last.diff +++ b/meta/recipes-devtools/gdb/gdb/0002-Change-order-of-CFLAGS.patch @@ -1,13 +1,21 @@ -Upstream-Status: Pending +From 0dcb0a8b139b44ae84e8fd8ff8130cbbb52e444d Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Mon, 2 Mar 2015 02:29:23 +0000 +Subject: [PATCH 2/3] Change order of CFLAGS +Lets us override Werror if need be + +Upstream-Status: Inappropriate + +Signed-off-by: Khem Raj <raj.khem@gmail.com> --- - gdb/gdbserver/Makefile.in | 4 ++-- + gdb/gdbserver/Makefile.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: gdb/gdbserver/Makefile.in -=================================================================== ---- gdb/gdbserver/Makefile.in.orig -+++ gdb/gdbserver/Makefile.in +diff --git a/gdb/gdbserver/Makefile.in b/gdb/gdbserver/Makefile.in +index 1ed2ec8..0cef95b 100644 +--- a/gdb/gdbserver/Makefile.in ++++ b/gdb/gdbserver/Makefile.in @@ -131,10 +131,10 @@ CFLAGS = @CFLAGS@ CPPFLAGS = @CPPFLAGS@ @@ -21,3 +29,6 @@ Index: gdb/gdbserver/Makefile.in # LDFLAGS is specifically reserved for setting from the command line # when running make. +-- +2.1.4 + diff --git a/meta/recipes-devtools/gdb/gdb/renesas-sh-native-support.patch b/meta/recipes-devtools/gdb/gdb/0003-Add-support-for-Renesas-SH-sh4-architecture.patch index 2259c6f7ee..d82d269208 100644 --- a/meta/recipes-devtools/gdb/gdb/renesas-sh-native-support.patch +++ b/meta/recipes-devtools/gdb/gdb/0003-Add-support-for-Renesas-SH-sh4-architecture.patch @@ -1,41 +1,35 @@ -Description: Add Renesas SH (sh4) support - Add support for Renesas SH (sh4) architecture. - . - gdb (7.4-1~cvs20111117.2) experimental; urgency=low +From 4e5507488068b3ea2ebf9c84c6c192c7bfd3be82 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 3/3] Add support for Renesas SH (sh4) architecture. + +gdb (7.4-1~cvs20111117.2) experimental; urgency=low . * Add Renesas SH (sh4) support (Closes: #576242) - Thanks Nobuhiro Iwamatsu, Takashi Yoshii. Author: Hector Oron <zumbi@debian.org> Bug-Debian: http://bugs.debian.org/576242 ---- -The information above should follow the Patch Tagging Guidelines, please -checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here -are templates for supplementary fields that you might want to add: - -Forwarded: <no|not-needed|url proving that it has been forwarded> -Last-Update: <2011-11-17> - - Upstream-Status: Pending Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + gdb/Makefile.in | 1 + + gdb/configure.host | 1 + + gdb/sh-linux-tdep.c | 519 +++++++++++++++++++++++++++++++++++ + gdb/sh-tdep.c | 54 ++-- + gdb/sh-tdep.h | 49 ++++ + gdb/testsuite/gdb.asm/asm-source.exp | 5 + + gdb/testsuite/gdb.asm/sh.inc | 3 +- + gdb/testsuite/gdb.base/annota1.c | 3 + + 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(-) -Index: gdb-7.9/gdb/configure.host -=================================================================== ---- gdb-7.9.orig/gdb/configure.host -+++ gdb-7.9/gdb/configure.host -@@ -150,6 +150,7 @@ powerpc*-*-linux*) gdb_host=linux ;; - - s390*-*-linux*) gdb_host=linux ;; - -+sh*-*-linux*) gdb_host=linux ;; - sh*-*-netbsdelf* | sh*-*-knetbsd*-gnu) - gdb_host=nbsd ;; - sh*-*-openbsd*) gdb_host=nbsd ;; -Index: gdb-7.9/gdb/Makefile.in -=================================================================== ---- gdb-7.9.orig/gdb/Makefile.in -+++ gdb-7.9/gdb/Makefile.in +diff --git a/gdb/Makefile.in b/gdb/Makefile.in +index 7937801..63baf81 100644 +--- a/gdb/Makefile.in ++++ b/gdb/Makefile.in @@ -1707,6 +1707,7 @@ ALLDEPFILES = \ score-tdep.c \ ser-go32.c ser-pipe.c ser-tcp.c ser-mingw.c \ @@ -44,10 +38,22 @@ Index: gdb-7.9/gdb/Makefile.in sol2-tdep.c \ solib-svr4.c \ sparc-linux-nat.c sparc-linux-tdep.c \ -Index: gdb-7.9/gdb/sh-linux-tdep.c -=================================================================== ---- gdb-7.9.orig/gdb/sh-linux-tdep.c -+++ gdb-7.9/gdb/sh-linux-tdep.c +diff --git a/gdb/configure.host b/gdb/configure.host +index d07be4b..b6391c5 100644 +--- a/gdb/configure.host ++++ b/gdb/configure.host +@@ -150,6 +150,7 @@ powerpc*-*-linux*) gdb_host=linux ;; + + s390*-*-linux*) gdb_host=linux ;; + ++sh*-*-linux*) gdb_host=linux ;; + sh*-*-netbsdelf* | sh*-*-knetbsd*-gnu) + gdb_host=nbsd ;; + sh*-*-openbsd*) gdb_host=nbsd ;; +diff --git a/gdb/sh-linux-tdep.c b/gdb/sh-linux-tdep.c +index 2ff2ee8..1a11262 100644 +--- a/gdb/sh-linux-tdep.c ++++ b/gdb/sh-linux-tdep.c @@ -18,14 +18,37 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */ @@ -86,7 +92,7 @@ Index: gdb-7.9/gdb/sh-linux-tdep.c #include "glibc-tdep.h" #include "sh-tdep.h" #include "linux-tdep.h" -@@ -180,9 +203,505 @@ static struct tramp_frame sh_linux_rt_si +@@ -180,9 +203,505 @@ static struct tramp_frame sh_linux_rt_sigreturn_tramp_frame = { sh_linux_rt_sigreturn_init }; @@ -592,367 +598,10 @@ Index: gdb-7.9/gdb/sh-linux-tdep.c linux_init_abi (info, gdbarch); /* GNU/Linux uses SVR4-style shared libraries. */ -Index: gdb-7.9/gdb/sh-tdep.h -=================================================================== ---- gdb-7.9.orig/gdb/sh-tdep.h -+++ gdb-7.9/gdb/sh-tdep.h -@@ -21,6 +21,12 @@ - - /* Contributed by Steve Chamberlain sac@cygnus.com. */ - -+struct frame_info; -+struct gdbarch; -+struct reggroup; -+struct regset; -+struct regcache; -+ - /* Registers for all SH variants. Used also by sh3-rom.c. */ - enum - { -@@ -29,6 +35,7 @@ enum - ARG0_REGNUM = 4, - ARGLAST_REGNUM = 7, - FP_REGNUM = 14, -+ SP_REGNUM = 15, - PC_REGNUM = 16, - PR_REGNUM = 17, - GBR_REGNUM = 18, -@@ -81,6 +88,24 @@ enum - FV0_REGNUM = 76, - FV_LAST_REGNUM = 79 - }; -+#define SH_NUM_REGS 67 -+ -+struct sh_frame_cache -+{ -+ /* Base address. */ -+ CORE_ADDR base; -+ LONGEST sp_offset; -+ CORE_ADDR pc; -+ -+ /* Flag showing that a frame has been created in the prologue code. */ -+ int uses_fp; -+ -+ /* Saved registers. */ -+ CORE_ADDR saved_regs[SH_NUM_REGS]; -+ CORE_ADDR saved_sp; -+}; -+ -+extern struct sh_frame_cache *sh_frame_cache (struct frame_info *next_frame, void **this_cache); - - /* This structure describes a register in a core-file. */ - struct sh_corefile_regmap -@@ -89,8 +114,32 @@ struct sh_corefile_regmap - unsigned int offset; - }; - -+/* sh architecture specific information. */ - struct gdbarch_tdep - { -+ /* General-purpose registers. */ -+ struct regset *gregset; -+ int *gregset_reg_offset; -+ int gregset_num_regs; -+ size_t sizeof_gregset; -+ -+ /* Floating-point registers. */ -+ struct regset *fpregset; -+ size_t sizeof_fpregset; -+ -+ /* Offset of saved PC in jmp_buf. */ -+ int jb_pc_offset; -+ -+ /* Detect sigtramp. */ -+ int (*sigtramp_p) (struct frame_info *); -+ -+ /* Get address of sigcontext for sigtramp. */ -+ CORE_ADDR (*sigcontext_addr) (struct frame_info *); -+ -+ /* Offset of registers in `struct sigcontext'. */ -+ int *sc_reg_offset; -+ int sc_num_regs; -+ - /* Non-NULL when debugging from a core file. Provides the offset - where each general-purpose register is stored inside the associated - core file section. */ -Index: gdb-7.9/gdb/sh-linux-nat.c -=================================================================== ---- /dev/null -+++ gdb-7.9/gdb/sh-linux-nat.c -@@ -0,0 +1,269 @@ -+/* Low level SH interface to ptrace, for GDB when running native. -+ Copyright (C) 2002, 2004 Free Software Foundation, Inc. -+ -+This file is part of GDB. -+ -+This program is free software; you can redistribute it and/or modify -+it under the terms of the GNU General Public License as published by -+the Free Software Foundation; either version 2 of the License, or -+(at your option) any later version. -+ -+This program is distributed in the hope that it will be useful, -+but WITHOUT ANY WARRANTY; without even the implied warranty of -+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+GNU General Public License for more details. -+ -+You should have received a copy of the GNU General Public License -+along with this program; if not, write to the Free Software -+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -+ -+#include "defs.h" -+#include "inferior.h" -+#include "gdbcore.h" -+#include "regcache.h" -+#include "linux-nat.h" -+#include "target.h" -+#include "arch-utils.h" -+ -+#include "gdb_assert.h" -+#include "gdb_string.h" -+#include <sys/ptrace.h> -+#include <sys/user.h> -+#include <sys/procfs.h> -+#include <asm/ptrace.h> -+ -+/* Prototypes for supply_gregset etc. */ -+#include "gregset.h" -+#include "sh-tdep.h" -+ -+/* Defines ps_err_e, struct ps_prochandle. */ -+#include "gdb_proc_service.h" -+ -+//#include <asm/elf.h> -+ -+#define SH_LINUX_NUM_REGS 40 -+/* This table must line up with REGISTER_NAME in "sh-tdep.c". */ -+static const int regmap[] = -+{ -+ /* general registers 0-15 */ -+ REG_REG0 , REG_REG0+1 , REG_REG0+2 , REG_REG0+3, -+ REG_REG0+4 , REG_REG0+5 , REG_REG0+6 , REG_REG0+7, -+ REG_REG0+8 , REG_REG0+9 , REG_REG0+10, REG_REG0+11, -+ REG_REG0+12, REG_REG0+13, REG_REG0+14, REG_REG0+15, -+ /* 16 - 22 */ -+ REG_PC, REG_PR, REG_GBR, -1, REG_MACH, REG_MACL, REG_SR, -+ /* 23, 24 */ -+ REG_FPUL, REG_FPSCR, -+ /* floating point registers 25 - 40 */ -+ REG_FPREG0 , REG_FPREG0+1 , REG_FPREG0+2 , REG_FPREG0+3 , -+ REG_FPREG0+4 , REG_FPREG0+5 , REG_FPREG0+6 , REG_FPREG0+7 , -+ REG_FPREG0+8 , REG_FPREG0+9 , REG_FPREG0+10, REG_FPREG0+11, -+ REG_FPREG0+12, REG_FPREG0+13, REG_FPREG0+14, REG_FPREG0+15, -+}; -+ -+CORE_ADDR -+register_u_addr (CORE_ADDR blockend, int regnum) -+{ -+ if (regnum < 0 || regnum >= sizeof regmap/sizeof regmap[0]) -+ return (CORE_ADDR)-1; -+ return (blockend + 4 * regmap[regnum]); -+} -+ -+ -+/* Return the address in the core dump or inferior of register REGNO. -+ BLOCKEND is the address of the end of the user structure. */ -+ -+CORE_ADDR -+register_addr (int regno, CORE_ADDR blockend) -+{ -+ CORE_ADDR addr; -+ -+ if (regno < 0 || regno >= SH_LINUX_NUM_REGS) { -+ internal_error (__FILE__, __LINE__, -+ _("Got request for bad register number %d."), regno); -+ } -+ -+ REGISTER_U_ADDR (addr, blockend, regno); -+ -+ return addr; -+} -+ -+/* Fetch one register. */ -+ -+static void -+fetch_register (struct regcache *regcache, int tid, int regno) -+{ -+ int val; -+ -+ if (cannot_fetch_register (regno)) -+ { -+ regcache_raw_supply (regcache, regno, NULL); -+ return; -+ } -+ -+ errno = 0; -+ val = ptrace (PTRACE_PEEKUSER, tid, register_addr (regno, 0), 0); -+ if (errno != 0) -+ perror_with_name (_("Couldn't get registers")); -+ -+ regcache_raw_supply (regcache, regno, &val); -+} -+ -+/* Store one register. */ -+ -+static void -+store_register (struct regcache *regcache, int tid, int regno) -+{ -+ int val; -+ -+ if (cannot_store_register (regno)) -+ return; -+ -+ errno = 0; -+ regcache_raw_collect (regcache, regno, &val); -+ ptrace (PTRACE_POKEUSER, tid, register_addr (regno, 0), val); -+ if (errno != 0) -+ perror_with_name (_("Couldn't write registers")); -+} -+ -+/* Transfering the general-purpose registers between GDB, inferiors -+ and core files. */ -+ -+/* Fill GDB's register array with the general-purpose register values -+ in *GREGSETP. */ -+ -+void -+supply_gregset (struct regcache *regcache, const elf_gregset_t *gregsetp) -+{ -+ elf_greg_t *regp = (elf_greg_t *) gregsetp; -+ int i; -+ -+ for (i = 0; i < 23; i++) -+ if (regmap[i] == -1) -+ regcache_raw_supply (regcache, i, NULL); -+ else -+ regcache_raw_supply (regcache, i, (char *) (regp + regmap[i])); -+} -+ -+/* Fill register REGNO (if it is a general-purpose register) in -+ *GREGSETPS with the value in GDB's register array. If REGNO is -1, -+ do this for all registers. */ -+ -+void -+fill_gregset (const struct regcache *regcache, elf_gregset_t *gregsetp, int regno) -+{ -+ elf_greg_t *regp = (elf_greg_t *) gregsetp; -+ int i; -+ -+ for (i = 0; i < 23; i++) -+ if (regmap[i] != -1 && (regno == -1 || regno == i)) -+ regcache_raw_collect (regcache, i, (char *) (regp + regmap[i])); -+} -+ -+/* Transfering floating-point registers between GDB, inferiors and cores. */ -+ -+/* Fill GDB's register array with the floating-point register values in -+ *FPREGSETP. */ -+ -+void -+supply_fpregset (struct regcache *regcache, const elf_fpregset_t *fpregsetp) -+{ -+ int i; -+ long *regp = (long *)fpregsetp; -+ -+ for (i = 0; i < 16; i++) -+ regcache_raw_supply (regcache, 25 + i, (char *) (regp + i)); -+ regcache_raw_supply (regcache, FPUL_REGNUM, (char *) (regp + REG_FPUL - REG_FPREG0)); -+ regcache_raw_supply (regcache, FPSCR_REGNUM, (char *) (regp + REG_FPSCR - REG_FPREG0)); -+} -+ -+/* Fill register REGNO (if it is a floating-point register) in -+ *FPREGSETP with the value in GDB's register array. If REGNO is -1, -+ do this for all registers. */ -+ -+void -+fill_fpregset (const struct regcache *regcache, elf_fpregset_t *fpregsetp, int regno) -+{ -+ int i; -+ long *regp = (long *)fpregsetp; -+ -+ for (i = 0; i < 16; i++) -+ if ((regno == -1) || (regno == i)) -+ regcache_raw_collect (regcache, 25 + i, (char *) (regp + i)); -+ if ((regno == -1) || regno == FPSCR_REGNUM) -+ regcache_raw_collect (regcache, FPSCR_REGNUM, (char *) (regp + REG_FPSCR - REG_FPREG0)); -+ if ((regno == -1) || regno == FPUL_REGNUM) -+ regcache_raw_collect (regcache, FPUL_REGNUM, (char *) (regp + REG_FPUL - REG_FPREG0)); -+} -+ -+/* Transferring arbitrary registers between GDB and inferior. */ -+ -+/* Check if register REGNO in the child process is accessible. -+ If we are accessing registers directly via the U area, only the -+ general-purpose registers are available. -+ All registers should be accessible if we have GETREGS support. */ -+ -+int -+cannot_fetch_register (int regno) -+{ -+ return (regno < 0 || regno >= sizeof regmap / sizeof regmap[0] || regmap[regno] == -1); -+} -+ -+int -+cannot_store_register (int regno) -+{ -+ return (regno < 0 || regno >= sizeof regmap / sizeof regmap[0] || regmap[regno] == -1); -+} -+ -+/* Fetch register values from the inferior. -+ If REGNO is negative, do this for all registers. -+ Otherwise, REGNO specifies which register (so we can save time). */ -+ -+static void -+sh_linux_fetch_inferior_registers (struct target_ops *ops, struct regcache *regcache, int regno) -+{ -+ int i; -+ int tid; -+ -+ /* GNU/Linux LWP ID's are process ID's. */ -+ if ((tid = TIDGET (inferior_ptid)) == 0) -+ tid = PIDGET (inferior_ptid); /* Not a threaded program. */ -+ -+ for (i = 0; i < SH_LINUX_NUM_REGS; i++) -+ if (regno == -1 || regno == i) -+ fetch_register (regcache, tid, i); -+} -+/* Store our register values back into the inferior. -+ If REGNO is negative, do this for all registers. -+ Otherwise, REGNO specifies which register (so we can save time). */ -+ -+static void -+sh_linux_store_inferior_registers (struct target_ops *ops, struct regcache *regcache, int regno) -+{ -+ int i; -+ int tid; -+ -+ /* GNU/Linux LWP ID's are process ID's. */ -+ if ((tid = TIDGET (inferior_ptid)) == 0) -+ tid = PIDGET (inferior_ptid); /* Not a threaded program. */ -+ -+ for (i = 0; i < SH_LINUX_NUM_REGS; i++) -+ if (regno == -1 || regno == i) -+ store_register (regcache, tid, i); -+} -+ -+void -+_initialize_sh_linux_nat (void) -+{ -+ struct target_ops *t; -+ -+ /* Fill in the generic GNU/Linux methods. */ -+ t = linux_target (); -+ -+ /* Add our register access methods. */ -+ t->to_fetch_registers = sh_linux_fetch_inferior_registers; -+ t->to_store_registers = sh_linux_store_inferior_registers; -+ -+ /* Register the target. */ -+ linux_nat_add_target (t); -+} -Index: gdb-7.9/gdb/sh-tdep.c -=================================================================== ---- gdb-7.9.orig/gdb/sh-tdep.c -+++ gdb-7.9/gdb/sh-tdep.c +diff --git a/gdb/sh-tdep.c b/gdb/sh-tdep.c +index 82cf2f4..b443e46 100644 +--- a/gdb/sh-tdep.c ++++ b/gdb/sh-tdep.c @@ -21,6 +21,9 @@ sac@cygnus.com. */ @@ -971,7 +620,7 @@ Index: gdb-7.9/gdb/sh-tdep.c #include "doublest.h" #include "osabi.h" #include "reggroups.h" -@@ -67,23 +71,6 @@ static const char *const sh_cc_enum[] = +@@ -67,23 +71,6 @@ static const char *const sh_cc_enum[] = { static const char *sh_active_calling_convention = sh_cc_gcc; @@ -1004,7 +653,7 @@ Index: gdb-7.9/gdb/sh-tdep.c return 1; /* Otherwise it's not treated as float. */ return 0; -@@ -1093,7 +1080,7 @@ sh_push_dummy_call_fpu (struct gdbarch * +@@ -1093,7 +1080,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++) { @@ -1013,7 +662,7 @@ Index: gdb-7.9/gdb/sh-tdep.c len = TYPE_LENGTH (type); val = sh_justify_value_in_reg (gdbarch, args[argnum], len); -@@ -1821,7 +1808,7 @@ sh_dwarf2_frame_init_reg (struct gdbarch +@@ -1821,7 +1808,7 @@ sh_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum, reg->how = DWARF2_FRAME_REG_UNDEFINED; } @@ -1031,7 +680,7 @@ Index: gdb-7.9/gdb/sh-tdep.c sh_frame_cache (struct frame_info *this_frame, void **this_cache) { struct gdbarch *gdbarch = get_frame_arch (this_frame); -@@ -1915,9 +1902,9 @@ sh_frame_cache (struct frame_info *this_ +@@ -1915,9 +1902,9 @@ sh_frame_cache (struct frame_info *this_frame, void **this_cache) return cache; } @@ -1044,7 +693,7 @@ Index: gdb-7.9/gdb/sh-tdep.c { struct gdbarch *gdbarch = get_frame_arch (this_frame); struct sh_frame_cache *cache = sh_frame_cache (this_frame, this_cache); -@@ -1931,7 +1918,7 @@ sh_frame_prev_register (struct frame_inf +@@ -1931,7 +1918,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)) @@ -1053,7 +702,7 @@ Index: gdb-7.9/gdb/sh-tdep.c if (regnum < SH_NUM_REGS && cache->saved_regs[regnum] != -1) return frame_unwind_got_memory (this_frame, regnum, -@@ -2237,8 +2224,8 @@ sh_return_in_first_hidden_param_p (struc +@@ -2237,8 +2224,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) { @@ -1063,7 +712,7 @@ Index: gdb-7.9/gdb/sh-tdep.c /* SH5 is handled entirely in sh64-tdep.c. */ if (info.bfd_arch_info->mach == bfd_mach_sh5) -@@ -2254,6 +2241,18 @@ sh_gdbarch_init (struct gdbarch_info inf +@@ -2254,6 +2241,18 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) tdep = XCNEW (struct gdbarch_tdep); gdbarch = gdbarch_alloc (&info, tdep); @@ -1082,7 +731,7 @@ Index: gdb-7.9/gdb/sh-tdep.c 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); -@@ -2404,10 +2403,11 @@ sh_gdbarch_init (struct gdbarch_info inf +@@ -2404,10 +2403,11 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) break; } @@ -1095,108 +744,93 @@ Index: gdb-7.9/gdb/sh-tdep.c frame_unwind_append_unwinder (gdbarch, &sh_stub_unwind); frame_unwind_append_unwinder (gdbarch, &sh_frame_unwind); -Index: gdb-7.9/gdb/testsuite/gdb.asm/sh-linux.inc -=================================================================== ---- /dev/null -+++ gdb-7.9/gdb/testsuite/gdb.asm/sh-linux.inc -@@ -0,0 +1,78 @@ -+# You'll find a bunch of nop opcodes in the below macros. They are -+# there to keep the code correctly aligned. Be careful to maintain -+# them when changing the code. -+ -+ comment "subroutine declare" -+ .purgem gdbasm_declare -+ .macro gdbasm_declare name -+ .align 1 -+ .global \name -+\name: -+ .endm -+ -+ comment "subroutine prologue" -+ .macro gdbasm_enter -+ mov.l r14,@-r15 -+ sts.l pr,@-r15 -+ mov r15,r14 -+ nop -+ .endm -+ -+ comment "subroutine epilogue" -+ .macro gdbasm_leave -+ mov r14,r15 -+ lds.l @r15+,pr -+ mov.l @r15+,r14 -+ rts -+ nop -+ nop -+ .endm -+ -+ comment "subroutine end" -+ .purgem gdbasm_end -+ .macro gdbasm_end name -+ .size \name, .-_foo1 -+ .align 1 -+ .endm -+ -+ comment "subroutine call" -+ .macro gdbasm_call subr -+ mov.l .Lconst\@,r1 -+ bra .Lafterconst\@ -+ nop -+ .align 2 -+.Lconst\@: -+ .long \subr -+.Lafterconst\@: -+ jsr @r1 -+ nop -+ .endm -+ -+ .macro gdbasm_several_nops -+ nop -+ nop -+ nop -+ nop -+ .endm -+ -+ comment "exit (0)" -+ .macro gdbasm_exit0 -+ sleep -+ nop -+ .endm -+ -+ comment "crt0 startup" -+ .macro gdbasm_startup -+ mov #0,r14 -+ .endm -+ -+ comment "Declare a data variable" -+ .purgem gdbasm_datavar -+ .macro gdbasm_datavar name value -+ .data -+ .align 2 -+ .type \name, @object -+ .size \name, 4 -+\name: -+ .long \value -+ .endm -Index: gdb-7.9/gdb/testsuite/gdb.asm/sh.inc -=================================================================== ---- gdb-7.9.orig/gdb/testsuite/gdb.asm/sh.inc -+++ gdb-7.9/gdb/testsuite/gdb.asm/sh.inc -@@ -40,9 +40,8 @@ - mov.l .Lconst\@,r1 - bra .Lafterconst\@ - nop -- nop --.Lconst\@: - .align 2 -+.Lconst\@: - .long \subr - .align 1 - .Lafterconst\@: -Index: gdb-7.9/gdb/testsuite/gdb.asm/asm-source.exp -=================================================================== ---- gdb-7.9.orig/gdb/testsuite/gdb.asm/asm-source.exp -+++ gdb-7.9/gdb/testsuite/gdb.asm/asm-source.exp +diff --git a/gdb/sh-tdep.h b/gdb/sh-tdep.h +index fc671a5..699f59f 100644 +--- a/gdb/sh-tdep.h ++++ b/gdb/sh-tdep.h +@@ -21,6 +21,12 @@ + + /* Contributed by Steve Chamberlain sac@cygnus.com. */ + ++struct frame_info; ++struct gdbarch; ++struct reggroup; ++struct regset; ++struct regcache; ++ + /* Registers for all SH variants. Used also by sh3-rom.c. */ + enum + { +@@ -29,6 +35,7 @@ enum + ARG0_REGNUM = 4, + ARGLAST_REGNUM = 7, + FP_REGNUM = 14, ++ SP_REGNUM = 15, + PC_REGNUM = 16, + PR_REGNUM = 17, + GBR_REGNUM = 18, +@@ -81,6 +88,24 @@ enum + FV0_REGNUM = 76, + FV_LAST_REGNUM = 79 + }; ++#define SH_NUM_REGS 67 ++ ++struct sh_frame_cache ++{ ++ /* Base address. */ ++ CORE_ADDR base; ++ LONGEST sp_offset; ++ CORE_ADDR pc; ++ ++ /* Flag showing that a frame has been created in the prologue code. */ ++ int uses_fp; ++ ++ /* Saved registers. */ ++ CORE_ADDR saved_regs[SH_NUM_REGS]; ++ CORE_ADDR saved_sp; ++}; ++ ++extern struct sh_frame_cache *sh_frame_cache (struct frame_info *next_frame, void **this_cache); + + /* This structure describes a register in a core-file. */ + struct sh_corefile_regmap +@@ -89,8 +114,32 @@ struct sh_corefile_regmap + unsigned int offset; + }; + ++/* sh architecture specific information. */ + struct gdbarch_tdep + { ++ /* General-purpose registers. */ ++ struct regset *gregset; ++ int *gregset_reg_offset; ++ int gregset_num_regs; ++ size_t sizeof_gregset; ++ ++ /* Floating-point registers. */ ++ struct regset *fpregset; ++ size_t sizeof_fpregset; ++ ++ /* Offset of saved PC in jmp_buf. */ ++ int jb_pc_offset; ++ ++ /* Detect sigtramp. */ ++ int (*sigtramp_p) (struct frame_info *); ++ ++ /* Get address of sigcontext for sigtramp. */ ++ CORE_ADDR (*sigcontext_addr) (struct frame_info *); ++ ++ /* Offset of registers in `struct sigcontext'. */ ++ int *sc_reg_offset; ++ int sc_num_regs; ++ + /* Non-NULL when debugging from a core file. Provides the offset + 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 8854af0..ef44682 100644 +--- a/gdb/testsuite/gdb.asm/asm-source.exp ++++ b/gdb/testsuite/gdb.asm/asm-source.exp @@ -113,6 +113,11 @@ switch -glob -- [istarget] { append link-flags " -m elf32ppc" } @@ -1209,170 +843,79 @@ Index: gdb-7.9/gdb/testsuite/gdb.asm/asm-source.exp "sh*-*-*" { set asm-arch sh set debug-flags "-gdwarf-2" -Index: gdb-7.9/gdb/testsuite/gdb.base/sigall.c -=================================================================== ---- gdb-7.9.orig/gdb/testsuite/gdb.base/sigall.c -+++ gdb-7.9/gdb/testsuite/gdb.base/sigall.c +diff --git a/gdb/testsuite/gdb.asm/sh.inc b/gdb/testsuite/gdb.asm/sh.inc +index a4a5fc5..89efed7 100644 +--- a/gdb/testsuite/gdb.asm/sh.inc ++++ b/gdb/testsuite/gdb.asm/sh.inc +@@ -40,9 +40,8 @@ + mov.l .Lconst\@,r1 + bra .Lafterconst\@ + nop +- nop +-.Lconst\@: + .align 2 ++.Lconst\@: + .long \subr + .align 1 + .Lafterconst\@: +diff --git a/gdb/testsuite/gdb.base/annota1.c b/gdb/testsuite/gdb.base/annota1.c +index 424e1b8..0de2e7b 100644 +--- a/gdb/testsuite/gdb.base/annota1.c ++++ b/gdb/testsuite/gdb.base/annota1.c @@ -1,6 +1,9 @@ + #include <stdio.h> #include <signal.h> - #include <unistd.h> +#ifdef __sh__ +#define signal(a,b) /* Signals not supported on this target - make them go away */ +#endif - /* Signal handlers, we set breakpoints in them to make sure that the - signals really get delivered. */ -Index: gdb-7.9/gdb/testsuite/gdb.base/signals.c -=================================================================== ---- gdb-7.9.orig/gdb/testsuite/gdb.base/signals.c -+++ gdb-7.9/gdb/testsuite/gdb.base/signals.c -@@ -3,6 +3,10 @@ + void + handle_USR1 (int sig) +diff --git a/gdb/testsuite/gdb.base/annota3.c b/gdb/testsuite/gdb.base/annota3.c +index 424e1b8..952aaf2 100644 +--- a/gdb/testsuite/gdb.base/annota3.c ++++ b/gdb/testsuite/gdb.base/annota3.c +@@ -1,6 +1,10 @@ + #include <stdio.h> #include <signal.h> - #include <unistd.h> +#ifdef __sh__ +#define signal(a,b) /* Signals not supported on this target - make them go away */ -+#define alarm(a) /* Ditto for alarm() */ +#endif ++ - static int count = 0; - -Index: gdb-7.9/gdb/testsuite/gdb.base/annota1.c -=================================================================== ---- gdb-7.9.orig/gdb/testsuite/gdb.base/annota1.c -+++ gdb-7.9/gdb/testsuite/gdb.base/annota1.c + void + handle_USR1 (int sig) +diff --git a/gdb/testsuite/gdb.base/sigall.c b/gdb/testsuite/gdb.base/sigall.c +index 81f3b08..1574b2d 100644 +--- a/gdb/testsuite/gdb.base/sigall.c ++++ b/gdb/testsuite/gdb.base/sigall.c @@ -1,6 +1,9 @@ - #include <stdio.h> #include <signal.h> + #include <unistd.h> +#ifdef __sh__ +#define signal(a,b) /* Signals not supported on this target - make them go away */ +#endif - void - handle_USR1 (int sig) -Index: gdb-7.9/gdb/testsuite/gdb.base/annota3.c -=================================================================== ---- gdb-7.9.orig/gdb/testsuite/gdb.base/annota3.c -+++ gdb-7.9/gdb/testsuite/gdb.base/annota3.c -@@ -1,6 +1,10 @@ - #include <stdio.h> + /* 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 7566068..1205a9b 100644 +--- a/gdb/testsuite/gdb.base/signals.c ++++ b/gdb/testsuite/gdb.base/signals.c +@@ -3,6 +3,10 @@ #include <signal.h> + #include <unistd.h> +#ifdef __sh__ +#define signal(a,b) /* Signals not supported on this target - make them go away */ ++#define alarm(a) /* Ditto for alarm() */ +#endif -+ - void - handle_USR1 (int sig) -Index: gdb-7.9/gdb/config/sh/xm-linux.h -=================================================================== ---- /dev/null -+++ gdb-7.9/gdb/config/sh/xm-linux.h -@@ -0,0 +1,32 @@ -+/* Native support for GNU/Linux, for GDB, the GNU debugger. -+ Copyright (C) 2000 Free Software Foundation, Inc. -+ -+This file is part of GDB. -+ -+This program is free software; you can redistribute it and/or modify -+it under the terms of the GNU General Public License as published by -+the Free Software Foundation; either version 2 of the License, or -+(at your option) any later version. -+ -+This program is distributed in the hope that it will be useful, -+but WITHOUT ANY WARRANTY; without even the implied warranty of -+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+GNU General Public License for more details. -+ -+You should have received a copy of the GNU General Public License -+along with this program; if not, write to the Free Software -+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -+ -+#ifndef XM_LINUX_H -+#define XM_LINUX_H -+ -+#define HOST_BYTE_ORDER LITTLE_ENDIAN |
