X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fremote-st.c;h=e90cbc37a0ceb0b87cd0730f4534ef9e6a070c8a;hb=dbdb27ec2d5ddeb8a214181881ab616ebe47b0cf;hp=868c08ed48421b212cd760c39189bb8115d3993d;hpb=39f770628a4eaf018fec8d55684bf2ec16ada9cc;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/remote-st.c b/gdb/remote-st.c index 868c08ed48..e90cbc37a0 100644 --- a/gdb/remote-st.c +++ b/gdb/remote-st.c @@ -1,6 +1,8 @@ /* Remote debugging interface for Tandem ST2000 phone switch, for GDB. - Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2001 - Free Software Foundation, Inc. + + Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, + 2001, 2002 Free Software Foundation, Inc. + Contributed by Cygnus Support. Written by Jim Kingdon for Cygnus. This file is part of GDB. @@ -34,7 +36,7 @@ In reality, this module talks to a debug monitor called 'STDEBUG', which runs in a phone switch. We communicate with STDEBUG via either a direct serial line, or a TCP (or possibly TELNET) stream to a terminal multiplexor, - which in turn talks to the phone switch. */ + which in turn talks to the phone switch. */ #include "defs.h" #include "gdbcore.h" @@ -61,7 +63,7 @@ static int timeout = 24; st2000_open knows that we don't have a file open when the program starts. */ -static serial_t st2000_desc; +static struct serial *st2000_desc; /* Send data to stdebug. Works just like printf. */ @@ -76,8 +78,9 @@ printf_stdebug (char *pattern,...) vsprintf (buf, pattern, args); va_end (args); - if (SERIAL_WRITE (st2000_desc, buf, strlen (buf))) - fprintf (stderr, "SERIAL_WRITE failed: %s\n", safe_strerror (errno)); + if (serial_write (st2000_desc, buf, strlen (buf))) + fprintf_unfiltered (gdb_stderr, "serial_write failed: %s\n", + safe_strerror (errno)); } /* Read a character from the remote system, doing all the fancy timeout @@ -88,7 +91,7 @@ readchar (int timeout) { int c; - c = SERIAL_READCHAR (st2000_desc, timeout); + c = serial_readchar (st2000_desc, timeout); #ifdef LOG_FILE putc (c & 0x7f, log_file); @@ -102,10 +105,10 @@ readchar (int timeout) if (timeout == 0) return c; /* Polls shouldn't generate timeout errors */ - error ("Timeout reading from remote system."); + error (_("Timeout reading from remote system.")); } - perror_with_name ("remote-st2000"); + perror_with_name (_("remote-st2000")); } /* Scan input from the remote system, until STRING is found. If DISCARD is @@ -187,7 +190,7 @@ get_hex_digit (int ignore_space) else { expect_prompt (1); - error ("Invalid hex digit from remote system."); + error (_("Invalid hex digit from remote system.")); } } } @@ -219,22 +222,23 @@ get_hex_regs (int n, int regno) val = 0; for (j = 0; j < 8; j++) val = (val << 4) + get_hex_digit (j == 0); - supply_register (regno++, (char *) &val); + regcache_raw_supply (current_regcache, regno++, (char *) &val); } } /* This is called not only when we first attach, but also when the user types "run" after having attached. */ static void -st2000_create_inferior (char *execfile, char *args, char **env) +st2000_create_inferior (char *execfile, char *args, char **env, + int from_tty) { int entry_pt; if (args && *args) - error ("Can't pass arguments to remote STDEBUG process"); + error (_("Can't pass arguments to remote STDEBUG process")); if (execfile == 0 || exec_bfd == 0) - error ("No executable file specified"); + error (_("No executable file specified")); entry_pt = (int) bfd_get_start_address (exec_bfd); @@ -275,26 +279,30 @@ st2000_open (char *args, int from_tty) n = sscanf (args, " %s %d %s", dev_name, &baudrate, junk); if (n != 2) - error ("Bad arguments. Usage: target st2000 \n\ -or target st2000 \n"); + error (_("Bad arguments. Usage: target st2000 \n\ +or target st2000 \n")); st2000_close (0); - st2000_desc = SERIAL_OPEN (dev_name); + st2000_desc = serial_open (dev_name); if (!st2000_desc) perror_with_name (dev_name); - SERIAL_SETBAUDRATE (st2000_desc, baudrate); + if (serial_setbaudrate (st2000_desc, baudrate)) + { + serial_close (dev_name); + perror_with_name (dev_name); + } - SERIAL_RAW (st2000_desc); + serial_raw (st2000_desc); push_target (&st2000_ops); #if defined (LOG_FILE) log_file = fopen (LOG_FILE, "w"); if (log_file == NULL) - perror_with_name (LOG_FILE); + perror_with_name ((LOG_FILE)); #endif /* Hello? Are you there? */ @@ -312,15 +320,15 @@ or target st2000 \n"); static void st2000_close (int quitting) { - SERIAL_CLOSE (st2000_desc); + serial_close (st2000_desc); #if defined (LOG_FILE) if (log_file) { if (ferror (log_file)) - fprintf (stderr, "Error writing log file.\n"); + fprintf_unfiltered (gdb_stderr, "Error writing log file.\n"); if (fclose (log_file) != 0) - fprintf (stderr, "Error closing log file.\n"); + fprintf_unfiltered (gdb_stderr, "Error closing log file.\n"); } #endif } @@ -378,9 +386,10 @@ st2000_wait (ptid_t ptid, struct target_waitstatus *status) return inferior_ptid; } -/* Return the name of register number REGNO in the form input and output by - STDEBUG. Currently, REGISTER_NAMES just happens to contain exactly what - STDEBUG wants. Lets take advantage of that just as long as possible! */ +/* Return the name of register number REGNO in the form input and + output by STDEBUG. Currently, REGISTER_NAME just happens return + exactly what STDEBUG wants. Lets take advantage of that just as + long as possible! */ static char * get_reg_name (int regno) @@ -556,9 +565,8 @@ st2000_read_inferior_memory (CORE_ADDR memaddr, char *myaddr, int len) static int st2000_xfer_inferior_memory (CORE_ADDR memaddr, char *myaddr, int len, - int write, - struct mem_attrib *attrib ATTRIBUTE_UNUSED, - struct target_ops *target ATTRIBUTE_UNUSED) + int write, struct mem_attrib *attrib, + struct target_ops *target) { if (write) return st2000_write_inferior_memory (memaddr, myaddr, len); @@ -611,7 +619,7 @@ st2000_insert_breakpoint (CORE_ADDR addr, char *shadow) return 0; } - fprintf (stderr, "Too many breakpoints (> 16) for STDBUG\n"); + fprintf_unfiltered (gdb_stderr, "Too many breakpoints (> 16) for STDBUG\n"); return 1; } @@ -630,7 +638,8 @@ st2000_remove_breakpoint (CORE_ADDR addr, char *shadow) return 0; } - fprintf (stderr, "Can't find breakpoint associated with 0x%x\n", addr); + fprintf_unfiltered (gdb_stderr, + "Can't find breakpoint associated with 0x%x\n", addr); return 1; } @@ -642,10 +651,10 @@ static void st2000_command (char *args, int fromtty) { if (!st2000_desc) - error ("st2000 target not open."); + error (_("st2000 target not open.")); if (!args) - error ("Missing command."); + error (_("Missing command.")); printf_stdebug ("%s\r", args); expect_prompt (0); @@ -660,7 +669,7 @@ static void cleanup_tty (void) { printf ("\r\n[Exiting connect mode]\r\n"); -/* SERIAL_RESTORE(0, &ttystate); */ +/* serial_restore(0, &ttystate); */ } #if 0 @@ -677,7 +686,7 @@ connect_command (char *args, int fromtty) dont_repeat (); if (st2000_desc < 0) - error ("st2000 target not open."); + error (_("st2000 target not open.")); if (args) fprintf ("This command takes no args. They have been ignored.\n"); @@ -695,19 +704,19 @@ connect_command (char *args, int fromtty) do { FD_SET (0, &readfds); - FD_SET (DEPRECATED_SERIAL_FD (st2000_desc), &readfds); + FD_SET (deprecated_serial_fd (st2000_desc), &readfds); numfds = select (sizeof (readfds) * 8, &readfds, 0, 0, 0); } while (numfds == 0); if (numfds < 0) - perror_with_name ("select"); + perror_with_name (("select")); if (FD_ISSET (0, &readfds)) { /* tty input, send to stdebug */ c = getchar (); if (c < 0) - perror_with_name ("connect"); + perror_with_name (("connect")); printf_stdebug ("%c", c); switch (cur_esc) @@ -730,7 +739,7 @@ connect_command (char *args, int fromtty) } } - if (FD_ISSET (DEPRECATED_SERIAL_FD (st2000_desc), &readfds)) + if (FD_ISSET (deprecated_serial_fd (st2000_desc), &readfds)) { while (1) { @@ -760,62 +769,25 @@ Arguments are the name of the device for the serial line,\n\ the speed to connect at in bits per second."; st2000_ops.to_open = st2000_open; st2000_ops.to_close = st2000_close; - st2000_ops.to_attach = 0; - st2000_run_ops.to_post_attach = NULL; - st2000_ops.to_require_attach = NULL; st2000_ops.to_detach = st2000_detach; - st2000_ops.to_require_detach = NULL; st2000_ops.to_resume = st2000_resume; st2000_ops.to_wait = st2000_wait; - st2000_ops.to_post_wait = NULL; st2000_ops.to_fetch_registers = st2000_fetch_register; st2000_ops.to_store_registers = st2000_store_register; st2000_ops.to_prepare_to_store = st2000_prepare_to_store; - st2000_ops.to_xfer_memory = st2000_xfer_inferior_memory; + st2000_ops.deprecated_xfer_memory = st2000_xfer_inferior_memory; st2000_ops.to_files_info = st2000_files_info; st2000_ops.to_insert_breakpoint = st2000_insert_breakpoint; st2000_ops.to_remove_breakpoint = st2000_remove_breakpoint; /* Breakpoints */ - st2000_ops.to_terminal_init = 0; - st2000_ops.to_terminal_inferior = 0; - st2000_ops.to_terminal_ours_for_output = 0; - st2000_ops.to_terminal_ours = 0; - st2000_ops.to_terminal_info = 0; /* Terminal handling */ st2000_ops.to_kill = st2000_kill; - st2000_ops.to_load = 0; /* load */ - st2000_ops.to_lookup_symbol = 0; /* lookup_symbol */ st2000_ops.to_create_inferior = st2000_create_inferior; - st2000_ops.to_post_startup_inferior = NULL; - st2000_ops.to_acknowledge_created_inferior = NULL; - st2000_ops.to_clone_and_follow_inferior = NULL; - st2000_ops.to_post_follow_inferior_by_clone = NULL; - st2000_run_ops.to_insert_fork_catchpoint = NULL; - st2000_run_ops.to_remove_fork_catchpoint = NULL; - st2000_run_ops.to_insert_vfork_catchpoint = NULL; - st2000_run_ops.to_remove_vfork_catchpoint = NULL; - st2000_ops.to_has_forked = NULL; - st2000_ops.to_has_vforked = NULL; - st2000_run_ops.to_can_follow_vfork_prior_to_exec = NULL; - st2000_ops.to_post_follow_vfork = NULL; - st2000_run_ops.to_insert_exec_catchpoint = NULL; - st2000_run_ops.to_remove_exec_catchpoint = NULL; - st2000_run_ops.to_has_execd = NULL; - st2000_run_ops.to_reported_exec_events_per_exec_call = NULL; - st2000_run_ops.to_has_exited = NULL; st2000_ops.to_mourn_inferior = st2000_mourn_inferior; - st2000_ops.to_can_run = 0; /* can_run */ - st2000_ops.to_notice_signals = 0; /* notice_signals */ - st2000_ops.to_thread_alive = 0; /* thread alive */ - st2000_ops.to_stop = 0; /* to_stop */ - st2000_ops.to_pid_to_exec_file = NULL; st2000_ops.to_stratum = process_stratum; - st2000_ops.DONT_USE = 0; /* next */ st2000_ops.to_has_all_memory = 1; st2000_ops.to_has_memory = 1; st2000_ops.to_has_stack = 1; st2000_ops.to_has_registers = 1; st2000_ops.to_has_execution = 1; /* all mem, mem, stack, regs, exec */ - st2000_ops.to_sections = 0; - st2000_ops.to_sections_end = 0; /* Section pointers */ st2000_ops.to_magic = OPS_MAGIC; /* Always the last thing */ }; @@ -824,9 +796,9 @@ _initialize_remote_st2000 (void) { init_st2000_ops (); add_target (&st2000_ops); - add_com ("st2000 ", class_obscure, st2000_command, - "Send a command to the STDBUG monitor."); - add_com ("connect", class_obscure, connect_command, - "Connect the terminal directly up to the STDBUG command monitor.\n\ -Use ~. or ~^D to break out."); + add_com ("st2000", class_obscure, st2000_command, + _("Send a command to the STDBUG monitor.")); + add_com ("connect", class_obscure, connect_command, _("\ +Connect the terminal directly up to the STDBUG command monitor.\n\ +Use ~. or ~^D to break out.")); }