* remote-e7000.c,remote.c,target.h,top.c:

Add set option "remote_timeout" for setting remote_timeout.
        Add set option "use_hard_breakpoints" for setting hardware
        .vs. memory breakpoints.
This commit is contained in:
Dawn Perchik
1996-06-28 12:27:08 +00:00
parent 56a4bf5339
commit cb1709aeac
5 changed files with 108 additions and 11 deletions

View File

@ -1,3 +1,10 @@
Fri Jun 28 05:25:18 1996 Dawn Perchik <dawn@cygnus.com>
* remote-e7000.c,remote.c,target.h,top.c:
Add set option "remote_timeout" for setting remote_timeout.
Add set option "use_hard_breakpoints" for setting hardware
.vs. memory breakpoints.
Fri Jun 28 04:32:18 1996 Dawn Perchik <dawn@cygnus.com> Fri Jun 28 04:32:18 1996 Dawn Perchik <dawn@cygnus.com>
* remote-e7000.c (e7000_parse_device): New function. * remote-e7000.c (e7000_parse_device): New function.

View File

@ -40,15 +40,16 @@
#include "command.h" #include "command.h"
#include <signal.h> #include <signal.h>
#include "gdb_string.h" #include "gdb_string.h"
#include "gdbcmd.h"
#include <sys/types.h> #include <sys/types.h>
#include "serial.h" #include "serial.h"
#include "remote-utils.h" #include "remote-utils.h"
#include "symfile.h" #include "symfile.h"
#include <time.h> #include <time.h>
#if 0 #if 1
#define HARD_BREAKPOINTS #define HARD_BREAKPOINTS /* Now handled by set option. */
#define BC_BREAKPOINTS 0 #define BC_BREAKPOINTS use_hard_breakpoints
#endif #endif
#define CTRLC 0x03 #define CTRLC 0x03
@ -89,6 +90,9 @@ static void expect_prompt PARAMS ((void));
static serial_t e7000_desc; static serial_t e7000_desc;
/* Allow user to chose between using hardware breakpoints or memory. */
static int use_hard_breakpoints = 0; /* use sw breakpoints by default */
/* Nonzero if using the tcp serial driver. */ /* Nonzero if using the tcp serial driver. */
static int using_tcp; /* direct tcp connection to target */ static int using_tcp; /* direct tcp connection to target */
@ -110,7 +114,7 @@ static int echo;
static int ctrl_c; static int ctrl_c;
static int timeout = 5; static int timeout = 20;
/* Send data to e7000debug. */ /* Send data to e7000debug. */
@ -469,7 +473,7 @@ e7000_ftp_command (args, from_tty)
char buf[200]; char buf[200];
int oldtimeout = timeout; int oldtimeout = timeout;
timeout = 10; timeout = remote_timeout;
sprintf (buf, "ftp %s\r", machine); sprintf (buf, "ftp %s\r", machine);
puts_e7000debug (buf); puts_e7000debug (buf);
@ -1460,6 +1464,9 @@ e7000_load (args, from_tty)
int nostart; int nostart;
time_t start_time, end_time; /* Start and end times of download */ time_t start_time, end_time; /* Start and end times of download */
unsigned long data_count; /* Number of bytes transferred to memory */ unsigned long data_count; /* Number of bytes transferred to memory */
int oldtimeout = timeout;
timeout = remote_timeout;
/* FIXME! change test to test for type of download */ /* FIXME! change test to test for type of download */
@ -1618,6 +1625,7 @@ e7000_load (args, from_tty)
report_transfer_performance (data_count, start_time, end_time); report_transfer_performance (data_count, start_time, end_time);
do_cleanups (old_chain); do_cleanups (old_chain);
timeout = oldtimeout;
} }
/* Clean up when a program exits. /* Clean up when a program exits.
@ -1634,15 +1642,18 @@ e7000_mourn_inferior ()
generic_mourn_inferior (); /* Do all the proper things now */ generic_mourn_inferior (); /* Do all the proper things now */
} }
#define MAX_BREAKPOINTS 200
#ifdef HARD_BREAKPOINTS #ifdef HARD_BREAKPOINTS
#define MAX_E7000DEBUG_BREAKPOINTS (BC_BREAKPOINTS ? 5 : 200) #define MAX_E7000DEBUG_BREAKPOINTS (BC_BREAKPOINTS ? 5 : MAX_BREAKPOINTS)
#else #else
#define MAX_E7000DEBUG_BREAKPOINTS 200 #define MAX_E7000DEBUG_BREAKPOINTS MAX_BREAKPOINTS
#endif #endif
extern int memory_breakpoint_size; extern int memory_breakpoint_size;
static CORE_ADDR breakaddr[MAX_E7000DEBUG_BREAKPOINTS] = {0}; /* Since we can change to soft breakpoints dynamically, we must define
more than enough. Was breakaddr[MAX_E7000DEBUG_BREAKPOINTS]. */
static CORE_ADDR breakaddr[MAX_BREAKPOINTS] = {0};
static int static int
e7000_insert_breakpoint (addr, shadow) e7000_insert_breakpoint (addr, shadow)
@ -2134,4 +2145,9 @@ _initialize_remote_e7000 ()
add_com ("drain", class_obscure, e7000_drain_command, add_com ("drain", class_obscure, e7000_drain_command,
"Drain pending e7000 text buffers."); "Drain pending e7000 text buffers.");
add_show_from_set (add_set_cmd ("usehardbreakpoints", no_class,
var_integer, (char *)&use_hard_breakpoints,
"Set use of hardware breakpoints for all breakpoints.\n", &setlist),
&showlist);
} }

View File

@ -188,7 +188,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "gdbcmd.h" #include "gdbcmd.h"
#include "objfiles.h" #include "objfiles.h"
#include "gdb-stabs.h" #include "gdb-stabs.h"
#include "thread.h" #include "gdbthread.h"
#include "dcache.h" #include "dcache.h"
@ -274,7 +274,9 @@ extern struct target_ops extended_remote_ops; /* Forward decl */
other form of hairy serial connection, I would think 2 seconds would other form of hairy serial connection, I would think 2 seconds would
be plenty. */ be plenty. */
static int remote_timeout = 2; /* Changed to allow option to set timeout value.
was static int remote_timeout = 2; */
extern int remote_timeout;
/* This variable chooses whether to send a ^C or a break when the user /* This variable chooses whether to send a ^C or a break when the user
requests program interruption. Although ^C is usually what remote requests program interruption. Although ^C is usually what remote

View File

@ -16,7 +16,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#if !defined (TARGET_H) #if !defined (TARGET_H)
#define TARGET_H #define TARGET_H
@ -291,6 +291,7 @@ struct target_ops
void (*to_mourn_inferior) PARAMS ((void)); void (*to_mourn_inferior) PARAMS ((void));
int (*to_can_run) PARAMS ((void)); int (*to_can_run) PARAMS ((void));
void (*to_notice_signals) PARAMS ((int pid)); void (*to_notice_signals) PARAMS ((int pid));
int (*to_thread_alive) PARAMS ((int pid));
void (*to_stop) PARAMS ((void)); void (*to_stop) PARAMS ((void));
enum strata to_stratum; enum strata to_stratum;
struct target_ops struct target_ops
@ -549,6 +550,11 @@ print_section_info PARAMS ((struct target_ops *, bfd *));
#define target_notice_signals(pid) \ #define target_notice_signals(pid) \
(*current_target.to_notice_signals) (pid) (*current_target.to_notice_signals) (pid)
/* Check to see if a thread is still alive. */
#define target_thread_alive(pid) \
(*current_target.to_thread_alive) (pid)
/* Make target stop in a continuable fashion. (For instance, under Unix, this /* Make target stop in a continuable fashion. (For instance, under Unix, this
should act like SIGSTOP). This function is normally used by GUIs to should act like SIGSTOP). This function is normally used by GUIs to
implement a stop button. */ implement a stop button. */
@ -605,6 +611,23 @@ extern void target_link PARAMS ((char *, CORE_ADDR *));
extern char *normal_pid_to_str PARAMS ((int pid)); extern char *normal_pid_to_str PARAMS ((int pid));
#endif #endif
#ifndef target_new_objfile
#define target_new_objfile(OBJFILE)
#endif
/* Hook to call target-dependant code after reading in a new symbol table. */
#ifndef TARGET_SYMFILE_POSTREAD
#define TARGET_SYMFILE_POSTREAD(OBJFILE)
#endif
/* Hook to call target dependant code just after inferior target process has
started. */
#ifndef TARGET_CREATE_INFERIOR_HOOK
#define TARGET_CREATE_INFERIOR_HOOK(PID)
#endif
/* Hardware watchpoint interfaces. */ /* Hardware watchpoint interfaces. */
/* Returns non-zero if we were stopped by a hardware watchpoint (memory read or /* Returns non-zero if we were stopped by a hardware watchpoint (memory read or
@ -614,6 +637,42 @@ extern char *normal_pid_to_str PARAMS ((int pid));
#define STOPPED_BY_WATCHPOINT(w) 0 #define STOPPED_BY_WATCHPOINT(w) 0
#endif #endif
/* Provide defaults for systems that don't support hardware watchpoints. */
#ifndef TARGET_HAS_HARDWARE_WATCHPOINTS
/* Returns non-zero if we can set a hardware watchpoint of type TYPE. TYPE is
one of bp_hardware_watchpoint, bp_read_watchpoint, bp_write_watchpoint, or
bp_hardware_breakpoint. CNT is the number of such watchpoints used so far
(including this one?). OTHERTYPE is who knows what... */
#define TARGET_CAN_USE_HARDWARE_WATCHPOINT(TYPE,CNT,OTHERTYPE) 0
/* Set/clear a hardware watchpoint starting at ADDR, for LEN bytes. TYPE is 1
for read and 2 for read/write accesses. Returns 0 for success, non-zero for
failure. */
#define target_remove_watchpoint(ADDR,LEN,TYPE) -1
#define target_insert_watchpoint(ADDR,LEN,TYPE) -1
#endif /* TARGET_HAS_HARDWARE_WATCHPOINTS */
#ifndef target_insert_hw_breakpoint
#define target_remove_hw_breakpoint(ADDR,SHADOW) -1
#define target_insert_hw_breakpoint(ADDR,SHADOW) -1
#endif
#ifndef target_stopped_data_address
#define target_stopped_data_address() 0
#endif
/* If defined, then we need to decr pc by this much after a hardware break-
point. Presumably this overrides DECR_PC_AFTER_BREAK... */
#ifndef DECR_PC_AFTER_HW_BREAK
#define DECR_PC_AFTER_HW_BREAK 0
#endif
/* Routines for maintenance of the target structures... /* Routines for maintenance of the target structures...
add_target: Add a target to the list of all possible targets. add_target: Add a target to the list of all possible targets.
@ -694,6 +753,8 @@ extern int remote_debug;
/* Speed in bits per second, or -1 which means don't mess with the speed. */ /* Speed in bits per second, or -1 which means don't mess with the speed. */
extern int baud_rate; extern int baud_rate;
/* Timeout limit for response from target. */
extern int remote_timeout;
/* Functions for helping to write a native target. */ /* Functions for helping to write a native target. */

View File

@ -319,6 +319,10 @@ int server_command;
int baud_rate = -1; int baud_rate = -1;
/* Timeout limit for response from target. */
int remote_timeout = 20; /* Set default to 20 */
/* Non-zero tells remote* modules to output debugging info. */ /* Non-zero tells remote* modules to output debugging info. */
int remote_debug = 0; int remote_debug = 0;
@ -3589,4 +3593,11 @@ using remote targets.", &setlist),
When enabled, each packet sent or received with the remote target\n\ When enabled, each packet sent or received with the remote target\n\
is displayed.", &setlist), is displayed.", &setlist),
&showlist); &showlist);
add_show_from_set (
add_set_cmd ("remotetimeout", no_class, var_integer, (char *)&remote_timeout,
"Set timeout limit to wait for target to respond.\n\
This value is used to set the time limit for gdb to wait for a response\n\
from he target.", &setlist),
&showlist);
} }