X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=gdb%2Fserial.c;h=f85455dabcdf2ff5defcc8eacdc52fe5515a2ef2;hb=7c80aab93666727965c2d5d6e17b1338d88293e0;hp=7f9362a3bf35550fdc5cad7a5ec4c8668c637538;hpb=431f22cc098a118a862412c1bac1a8aa1bc6ceb7;p=binutils-gdb.git diff --git a/gdb/serial.c b/gdb/serial.c index 7f9362a3bf3..f85455dabcd 100644 --- a/gdb/serial.c +++ b/gdb/serial.c @@ -1,6 +1,6 @@ /* Generic serial interface routines - Copyright (C) 1992-2018 Free Software Foundation, Inc. + Copyright (C) 1992-2021 Free Software Foundation, Inc. This file is part of GDB. @@ -38,7 +38,7 @@ static struct serial *scb_base; /* Non-NULL gives filename which contains a recording of the remote session, suitable for playback by gdbserver. */ -static char *serial_logfile = NULL; +static std::string serial_logfile; static struct ui_file *serial_logfp = NULL; static const struct serial_ops *serial_interface_lookup (const char *); @@ -216,7 +216,7 @@ serial_open (const char *name) { #ifndef USE_WIN32API /* Check to see if name is a socket. If it is, then treat it - as such. Otherwise assume that it's a character device. */ + as such. Otherwise assume that it's a character device. */ struct stat sb; if (stat (name, &sb) == 0 && (sb.st_mode & S_IFMT) == S_IFSOCK) ops = serial_interface_lookup ("local"); @@ -247,15 +247,16 @@ serial_open_ops_1 (const struct serial_ops *ops, const char *open_name) return NULL; } + scb->name = open_name != NULL ? xstrdup (open_name) : NULL; scb->next = scb_base; scb_base = scb; - if (serial_logfile != NULL) + if (!serial_logfile.empty ()) { stdio_file_up file (new stdio_file ()); - if (!file->open (serial_logfile, "w")) - perror_with_name (serial_logfile); + if (!file->open (serial_logfile.c_str (), "w")) + perror_with_name (serial_logfile.c_str ()); serial_logfp = file.release (); } @@ -283,7 +284,7 @@ serial_fdopen_ops (const int fd, const struct serial_ops *ops) { ops = serial_interface_lookup ("terminal"); if (!ops) - ops = serial_interface_lookup ("hardwire"); + ops = serial_interface_lookup ("hardwire"); } if (!ops) @@ -291,6 +292,7 @@ serial_fdopen_ops (const int fd, const struct serial_ops *ops) scb = new_serial (ops); + scb->name = NULL; scb->next = scb_base; scb_base = scb; @@ -330,6 +332,8 @@ do_serial_close (struct serial *scb, int really_close) if (really_close) scb->ops->close (scb); + xfree (scb->name); + /* For serial_is_open. */ scb->bufp = NULL; @@ -397,7 +401,7 @@ serial_readchar (struct serial *scb, int timeout) serial_logchar (serial_logfp, 'r', ch, timeout); /* Make sure that the log file is as up-to-date as possible, - in case we are getting ready to dump core or something. */ + in case we are getting ready to dump core or something. */ gdb_flush (serial_logfp); } if (serial_debug_p (scb)) @@ -423,7 +427,7 @@ serial_write (struct serial *scb, const void *buf, size_t count) serial_logchar (serial_logfp, 'w', str[c] & 0xff, 0); /* Make sure that the log file is as up-to-date as possible, - in case we are getting ready to dump core or something. */ + in case we are getting ready to dump core or something. */ gdb_flush (serial_logfp); } if (serial_debug_p (scb)) @@ -619,24 +623,7 @@ serial_pipe (struct serial *scbs[2]) static struct cmd_list_element *serial_set_cmdlist; static struct cmd_list_element *serial_show_cmdlist; -static void -serial_set_cmd (const char *args, int from_tty) -{ - printf_unfiltered ("\"set serial\" must be followed " - "by the name of a command.\n"); - help_list (serial_set_cmdlist, "set serial ", all_commands, gdb_stdout); -} - -static void -serial_show_cmd (const char *args, int from_tty) -{ - cmd_show_list (serial_show_cmdlist, from_tty, ""); -} - -/* Baud rate specified for talking to serial target systems. Default - is left as -1, so targets can choose their own defaults. */ -/* FIXME: This means that "show serial baud" and gr_files_info can - print -1 or (unsigned int)-1. This is a Bad User Interface. */ +/* See serial.h. */ int baud_rate = -1; @@ -648,7 +635,7 @@ serial_baud_show_cmd (struct ui_file *file, int from_tty, value); } -/* Parity for serial port. */ +/* See serial.h. */ int serial_parity = GDBPARITY_NONE; @@ -672,8 +659,9 @@ set_parity (const char *ignore_args, int from_tty, struct cmd_list_element *c) serial_parity = GDBPARITY_NONE; } +void _initialize_serial (); void -_initialize_serial (void) +_initialize_serial () { #if 0 add_com ("connect", class_obscure, connect_command, _("\ @@ -681,17 +669,11 @@ Connect the terminal directly up to the command monitor.\n\ Use ~. or ~^D to break out.")); #endif /* 0 */ - add_prefix_cmd ("serial", class_maintenance, serial_set_cmd, _("\ -Set default serial/parallel port configuration."), - &serial_set_cmdlist, "set serial ", - 0/*allow-unknown*/, - &setlist); - - add_prefix_cmd ("serial", class_maintenance, serial_show_cmd, _("\ -Show default serial/parallel port configuration."), - &serial_show_cmdlist, "show serial ", - 0/*allow-unknown*/, - &showlist); + add_setshow_prefix_cmd ("serial", class_maintenance, + _("Set default serial/parallel port configuration."), + _("Show default serial/parallel port configuration."), + &serial_set_cmdlist, &serial_show_cmdlist, + &setlist, &showlist); /* If target is open when baud changes, it doesn't take effect until the next open (I think, not sure). */ @@ -705,12 +687,12 @@ using remote targets."), &serial_set_cmdlist, &serial_show_cmdlist); add_setshow_enum_cmd ("parity", no_class, parity_enums, - &parity, _("\ -Set parity for remote serial I/O"), _("\ -Show parity for remote serial I/O"), NULL, - set_parity, - NULL, /* FIXME: i18n: */ - &serial_set_cmdlist, &serial_show_cmdlist); + &parity, _("\ +Set parity for remote serial I/O."), _("\ +Show parity for remote serial I/O."), NULL, + set_parity, + NULL, /* FIXME: i18n: */ + &serial_set_cmdlist, &serial_show_cmdlist); add_setshow_filename_cmd ("remotelogfile", no_class, &serial_logfile, _("\ Set filename for remote session recording."), _("\ @@ -723,8 +705,8 @@ by gdbserver."), add_setshow_enum_cmd ("remotelogbase", no_class, logbase_enums, &serial_logbase, _("\ -Set numerical base for remote session logging"), _("\ -Show numerical base for remote session logging"), NULL, +Set numerical base for remote session logging."), _("\ +Show numerical base for remote session logging."), NULL, NULL, NULL, /* FIXME: i18n: */ &setlist, &showlist);