summaryrefslogtreecommitdiff
path: root/tools/4.10/gdb/gdb-7.11-erc32-common-run.diff
diff options
context:
space:
mode:
Diffstat (limited to 'tools/4.10/gdb/gdb-7.11-erc32-common-run.diff')
-rw-r--r--tools/4.10/gdb/gdb-7.11-erc32-common-run.diff472
1 files changed, 472 insertions, 0 deletions
diff --git a/tools/4.10/gdb/gdb-7.11-erc32-common-run.diff b/tools/4.10/gdb/gdb-7.11-erc32-common-run.diff
new file mode 100644
index 0000000..e59cd78
--- /dev/null
+++ b/tools/4.10/gdb/gdb-7.11-erc32-common-run.diff
@@ -0,0 +1,472 @@
+diff -rNuw gdb-7.11.orig2/sim/erc32/Makefile.in gdb-7.11/sim/erc32/Makefile.in
+--- gdb-7.11.orig2/sim/erc32/Makefile.in 2016-03-16 14:20:34.556597040 +1100
++++ gdb-7.11/sim/erc32/Makefile.in 2016-03-16 14:21:45.736598841 +1100
+@@ -22,7 +22,7 @@
+ READLINE_LIB = @READLINE@
+
+ SIM_OBJS = exec.o erc32.o func.o help.o float.o interf.o
+-SIM_RUN_OBJS = sis.o
++SIM_RUN_OBJS = run.o
+ SIM_EXTRA_LIBS = $(READLINE_LIB) $(TERMCAP_LIB) -lm
+ SIM_EXTRA_ALL = sis
+ SIM_EXTRA_INSTALL = install-sis
+@@ -56,4 +56,3 @@
+ srcdir=. ; export srcdir ; \
+ else true ; fi ; \
+ (cd $${srcdir}; autoconf --localdir=../common)
+-
+diff -rNuw gdb-7.11.orig2/sim/erc32/run.c gdb-7.11/sim/erc32/run.c
+--- gdb-7.11.orig2/sim/erc32/run.c 1970-01-01 10:00:00.000000000 +1000
++++ gdb-7.11/sim/erc32/run.c 2016-03-16 14:21:21.556598229 +1100
+@@ -0,0 +1,354 @@
++/* run front end support for all the simulators.
++ Copyright (C) 1992-2015 Free Software Foundation, Inc.
++
++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 3 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, see <http://www.gnu.org/licenses/>. */
++
++/* Steve Chamberlain sac@cygnus.com,
++ and others at Cygnus. */
++
++#include "config.h"
++
++#include <signal.h>
++#include <stdio.h>
++#ifdef __STDC__
++#include <stdarg.h>
++#else
++#include <varargs.h>
++#endif
++
++#ifdef HAVE_STDLIB_H
++#include <stdlib.h>
++#endif
++
++#ifdef HAVE_STRING_H
++#include <string.h>
++#else
++#ifdef HAVE_STRINGS_H
++#include <strings.h>
++#endif
++#endif
++
++#include "libiberty.h"
++#include "bfd.h"
++#include "gdb/callback.h"
++#include "gdb/remote-sim.h"
++#include "ansidecl.h"
++#include "run-sim.h"
++#include "version.h"
++
++static void usage (int help);
++static void print_version (void);
++extern int optind;
++extern char *optarg;
++
++extern host_callback default_callback;
++
++static char *myname;
++
++extern int getopt ();
++
++#ifdef NEED_UI_LOOP_HOOK
++/* Gdb foolery. This is only needed for gdb using a gui. */
++int (*deprecated_ui_loop_hook) (int signo);
++#endif
++
++static SIM_DESC sd;
++
++static RETSIGTYPE
++cntrl_c (int sig ATTRIBUTE_UNUSED)
++{
++ if (! sim_stop (sd))
++ {
++ fprintf (stderr, "Quit!\n");
++ exit (1);
++ }
++}
++
++int
++main (ac, av)
++ int ac;
++ char **av;
++{
++ RETSIGTYPE (*prev_sigint) ();
++ bfd *abfd;
++ int i;
++ int verbose = 0;
++ int trace = 0;
++#ifdef SIM_HAVE_ENVIRONMENT
++ int operating_p = 0;
++#endif
++ char *name;
++ static char *no_args[4];
++ char **sim_argv = &no_args[0];
++ char **prog_args;
++ enum sim_stop reason;
++ int sigrc;
++
++ myname = av[0] + strlen (av[0]);
++ while (myname > av[0] && myname[-1] != '/')
++ --myname;
++
++ /* The first element of sim_open's argv is the program name. */
++ no_args[0] = av[0];
++#ifdef SIM_HAVE_BIENDIAN
++ no_args[1] = "-E";
++ no_args[2] = "set-later";
++#endif
++
++ /* FIXME: This is currently being migrated into sim_open.
++ Simulators that use functions such as sim_size() still require
++ this. */
++ default_callback.init (&default_callback);
++ //sim_set_callbacks (&default_callback);
++
++#ifdef SIM_TARGET_SWITCHES
++ ac = sim_target_parse_command_line (ac, av);
++#endif
++
++ for (i = 1; av[i]; ++i)
++ {
++ if (strcmp (av[i], "--help") == 0)
++ {
++ usage (1);
++ }
++ else if (strcmp (av[i], "--version") == 0)
++ {
++ print_version ();
++ return 0;
++ }
++ }
++
++ /* FIXME: This is currently being rewritten to have each simulator
++ do all argv processing. */
++
++ while ((i = getopt (ac, av, "a:c:m:op:s:tv")) != EOF)
++ switch (i)
++ {
++ case 'a':
++ /* FIXME: Temporary hack. */
++ {
++ int len = strlen (av[0]) + strlen (optarg);
++ char *argbuf = (char *) alloca (len + 2 + 50);
++ sprintf (argbuf, "%s %s", av[0], optarg);
++#ifdef SIM_HAVE_BIENDIAN
++ /* The desired endianness must be passed to sim_open.
++ The value for "set-later" is set when we know what it is.
++ -E support isn't yet part of the published interface. */
++ strcat (argbuf, " -E set-later");
++#endif
++ sim_argv = buildargv (argbuf);
++ }
++ break;
++#ifdef SIM_HAVE_SIMCACHE
++ case 'c':
++ sim_set_simcache_size (atoi (optarg));
++ break;
++#endif
++ case 'm':
++ /* FIXME: Rename to sim_set_mem_size. */
++ //sim_size (atoi (optarg));
++ break;
++#ifdef SIM_HAVE_ENVIRONMENT
++ case 'o':
++ /* Operating enironment where any signals are delivered to the
++ target. */
++ operating_p = 1;
++ break;
++#endif
++#ifdef SIM_HAVE_PROFILE
++ case 'p':
++ sim_set_profile (atoi (optarg));
++ break;
++ case 's':
++ sim_set_profile_size (atoi (optarg));
++ break;
++#endif
++ case 't':
++ trace = 1;
++ break;
++ case 'v':
++ /* Things that are printed with -v are the kinds of things that
++ gcc -v prints. This is not meant to include detailed tracing
++ or debugging information, just summaries. */
++ verbose = 1;
++ /* sim_set_verbose (1); */
++ break;
++ /* FIXME: Quick hack, to be replaced by more general facility. */
++ default:
++ usage (0);
++ }
++
++ ac -= optind;
++ av += optind;
++ if (ac <= 0)
++ usage (0);
++
++ name = *av;
++ prog_args = av;
++
++ if (verbose)
++ {
++ printf ("%s %s\n", myname, name);
++ }
++
++ abfd = bfd_openr (name, 0);
++ if (!abfd)
++ {
++ fprintf (stderr, "%s: can't open %s: %s\n",
++ myname, name, bfd_errmsg (bfd_get_error ()));
++ exit (1);
++ }
++
++ if (!bfd_check_format (abfd, bfd_object))
++ {
++ fprintf (stderr, "%s: can't load %s: %s\n",
++ myname, name, bfd_errmsg (bfd_get_error ()));
++ exit (1);
++ }
++
++#ifdef SIM_HAVE_BIENDIAN
++ /* The endianness must be passed to sim_open because one may wish to
++ examine/set registers before calling sim_load [which is the other
++ place where one can determine endianness]. We previously passed the
++ endianness via global `target_byte_order' but that's not a clean
++ interface. */
++ for (i = 1; sim_argv[i + 1] != NULL; ++i)
++ continue;
++ if (bfd_big_endian (abfd))
++ sim_argv[i] = "big";
++ else
++ sim_argv[i] = "little";
++#endif
++
++ /* Ensure that any run-time initialisation that needs to be
++ performed by the simulator can occur. */
++ sd = sim_open (SIM_OPEN_STANDALONE, &default_callback, abfd, sim_argv);
++ if (sd == 0)
++ exit (1);
++
++ if (sim_load (sd, name, abfd, 0) == SIM_RC_FAIL)
++ exit (1);
++
++ if (sim_create_inferior (sd, abfd, prog_args, NULL) == SIM_RC_FAIL)
++ exit (1);
++
++#ifdef SIM_HAVE_ENVIRONMENT
++ /* NOTE: An old simulator supporting the operating environment MUST
++ provide sim_set_trace() and not sim_trace(). That way
++ sim_stop_reason() can be used to determine any stop reason. */
++ if (trace)
++ sim_set_trace ();
++ sigrc = 0;
++ do
++ {
++ prev_sigint = signal (SIGINT, cntrl_c);
++ sim_resume (sd, 0, sigrc);
++ signal (SIGINT, prev_sigint);
++ sim_stop_reason (sd, &reason, &sigrc);
++ }
++ while (operating_p && reason == sim_stopped && sigrc != SIGINT);
++#else
++ if (trace)
++ {
++ int done = 0;
++ prev_sigint = signal (SIGINT, cntrl_c);
++ while (!done)
++ {
++ // done = sim_trace (sd);
++ }
++ signal (SIGINT, prev_sigint);
++ sim_stop_reason (sd, &reason, &sigrc);
++ }
++ else
++ {
++ prev_sigint = signal (SIGINT, cntrl_c);
++ sigrc = 0;
++ sim_resume (sd, 0, sigrc);
++ signal (SIGINT, prev_sigint);
++ sim_stop_reason (sd, &reason, &sigrc);
++ }
++#endif
++
++ if (verbose)
++ sim_info (sd, 0);
++ sim_close (sd, 0);
++
++ /* If reason is sim_exited, then sigrc holds the exit code which we want
++ to return. If reason is sim_stopped or sim_signalled, then sigrc holds
++ the signal that the simulator received; we want to return that to
++ indicate failure. */
++
++ /* Why did we stop? */
++ switch (reason)
++ {
++ case sim_signalled:
++ case sim_stopped:
++ if (sigrc != 0)
++ fprintf (stderr, "program stopped with signal %d.\n", sigrc);
++ break;
++
++ case sim_exited:
++ break;
++
++ case sim_running:
++ case sim_polling: /* These indicate a serious problem. */
++ abort ();
++ break;
++
++ }
++
++ return sigrc;
++}
++
++static void
++usage (int help)
++{
++ FILE *stream = help ? stdout : stderr;
++
++ fprintf (stream, "Usage: %s [options] program [program args]\n", myname);
++ fprintf (stream, "Options:\n");
++ fprintf (stream, "-a args Pass `args' to simulator.\n");
++#ifdef SIM_HAVE_SIMCACHE
++ fprintf (stream, "-c size Set simulator cache size to `size'.\n");
++#endif
++ fprintf (stream, "-m size Set memory size of simulator, in bytes.\n");
++#ifdef SIM_HAVE_ENVIRONMENT
++ fprintf (stream, "-o Select operating (kernel) environment.\n");
++#endif
++#ifdef SIM_HAVE_PROFILE
++ fprintf (stream, "-p freq Set profiling frequency.\n");
++ fprintf (stream, "-s size Set profiling size.\n");
++#endif
++ fprintf (stream, "-t Perform instruction tracing.\n");
++ fprintf (stream, " Note: Very few simulators support tracing.\n");
++ fprintf (stream, "-v Verbose output.\n");
++ fprintf (stream, "\n");
++ fprintf (stream, "program args Arguments to pass to simulated program.\n");
++ fprintf (stream, " Note: Very few simulators support this.\n");
++#ifdef SIM_TARGET_SWITCHES
++ fprintf (stream, "\nTarget specific options:\n");
++ sim_target_display_usage (help);
++#endif
++
++ if (help && REPORT_BUGS_TO[0])
++ printf ("Report bugs to %s\n", REPORT_BUGS_TO);
++
++ exit (help ? 0 : 1);
++}
++
++static void
++print_version ()
++{
++ printf ("GNU simulator %s%s\n", PKGVERSION, version);
++}
+diff -rNuw gdb-7.11.orig2/sim/erc32/run-sim.h gdb-7.11/sim/erc32/run-sim.h
+--- gdb-7.11.orig2/sim/erc32/run-sim.h 1970-01-01 10:00:00.000000000 +1000
++++ gdb-7.11/sim/erc32/run-sim.h 2016-03-16 14:22:00.512599215 +1100
+@@ -0,0 +1,93 @@
++/* This file defines the part of the interface between the standalone
++ simaulator program - run - and simulator library - libsim.a - that
++ is not used by GDB. The GDB part is described in include/remote-sim.h.
++
++ Copyright 2002-2015 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 3 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, see <http://www.gnu.org/licenses/>. */
++
++#ifndef RUN_SIM_H
++#define RUN_SIM_H
++
++#ifdef SIM_TARGET_SWITCHES
++ /* Parse the command line, extracting any target specific switches
++ before the generic simulator code gets a chance to complain
++ about them. Returns the adjusted value of argc. */
++int sim_target_parse_command_line (int, char **);
++
++ /* Display a list of target specific switches supported by this
++ target. */
++void sim_target_display_usage (int help);
++
++#endif
++
++/* Provide simulator with a default (global) host_callback_struct.
++ THIS PROCEDURE IS DEPRECATED.
++ GDB and NRUN do not use this interface.
++ This procedure does not take a SIM_DESC argument as it is
++ used before sim_open. */
++
++void sim_set_callbacks (struct host_callback_struct *);
++
++
++/* Set the size of the simulator memory array.
++ THIS PROCEDURE IS DEPRECATED.
++ GDB and NRUN do not use this interface.
++ This procedure does not take a SIM_DESC argument as it is
++ used before sim_open. */
++
++void sim_size (int i);
++
++
++/* Single-step simulator with tracing enabled.
++ THIS PROCEDURE IS DEPRECATED.
++ THIS PROCEDURE IS EVEN MORE DEPRECATED THAN SIM_SET_TRACE
++ GDB and NRUN do not use this interface.
++ This procedure returns: ``0'' indicating that the simulator should
++ be continued using sim_trace() calls; ``1'' indicating that the
++ simulation has finished. */
++
++int sim_trace (SIM_DESC sd);
++
++
++/* Enable tracing.
++ THIS PROCEDURE IS DEPRECATED.
++ GDB and NRUN do not use this interface.
++ This procedure returns: ``0'' indicating that the simulator should
++ be continued using sim_trace() calls; ``1'' indicating that the
++ simulation has finished. */
++
++void sim_set_trace (void);
++
++
++/* Configure the size of the profile buffer.
++ THIS PROCEDURE IS DEPRECATED.
++ GDB and NRUN do not use this interface.
++ This procedure does not take a SIM_DESC argument as it is
++ used before sim_open. */
++
++void sim_set_profile_size (int n);
++
++
++/* Kill the running program.
++ THIS PROCEDURE IS DEPRECATED.
++ GDB and NRUN do not use this interface.
++ This procedure will be replaced as part of the introduction of
++ multi-cpu simulators. */
++
++void sim_kill (SIM_DESC sd);
++
++#endif