projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Eliminate block_iter_name_*
[deliverable/binutils-gdb.git]
/
gdb
/
infcmd.c
diff --git
a/gdb/infcmd.c
b/gdb/infcmd.c
index d41e609f8e27a4870a330d1fa5ea0c4868be5696..defa7b0c48cd3a1a90786ba3d883a986247a3b5d 100644
(file)
--- a/
gdb/infcmd.c
+++ b/
gdb/infcmd.c
@@
-58,6
+58,7
@@
#include "thread-fsm.h"
#include "top.h"
#include "interps.h"
#include "thread-fsm.h"
#include "top.h"
#include "interps.h"
+#include "common/gdb_optional.h"
/* Local functions: */
/* Local functions: */
@@
-261,14
+262,14
@@
construct_inferior_arguments (int argc, char **argv)
#ifdef __MINGW32__
/* This holds all the characters considered special to the
Windows shells. */
#ifdef __MINGW32__
/* This holds all the characters considered special to the
Windows shells. */
-
char *special
= "\"!&*|[]{}<>?`~^=;, \t\n";
- const char quote = '"';
+
static const char special[]
= "\"!&*|[]{}<>?`~^=;, \t\n";
+
static
const char quote = '"';
#else
/* This holds all the characters considered special to the
typical Unix shells. We include `^' because the SunOS
/bin/sh treats it as a synonym for `|'. */
#else
/* This holds all the characters considered special to the
typical Unix shells. We include `^' because the SunOS
/bin/sh treats it as a synonym for `|'. */
-
char *special
= "\"!#$&*()\\|[]{}<>?'`~^; \t\n";
- const char quote = '\'';
+
static const char special[]
= "\"!#$&*()\\|[]{}<>?'`~^; \t\n";
+
static
const char quote = '\'';
#endif
int i;
int length = 0;
#endif
int i;
int length = 0;
@@
-526,7
+527,7
@@
prepare_execution_command (struct target_ops *target, int background)
static void
run_command_1 (char *args, int from_tty, int tbreak_at_main)
{
static void
run_command_1 (char *args, int from_tty, int tbreak_at_main)
{
- char *exec_file;
+ c
onst c
har *exec_file;
struct cleanup *old_chain;
ptid_t ptid;
struct ui_out *uiout = current_uiout;
struct cleanup *old_chain;
ptid_t ptid;
struct ui_out *uiout = current_uiout;
@@
-574,7
+575,7
@@
run_command_1 (char *args, int from_tty, int tbreak_at_main)
if (tbreak_at_main)
tbreak_command (main_name (), 0);
if (tbreak_at_main)
tbreak_command (main_name (), 0);
- exec_file =
(char *)
get_exec_file (0);
+ exec_file = get_exec_file (0);
/* We keep symbols from add-symbol-file, on the grounds that the
user might want to add some symbols before running the program
/* We keep symbols from add-symbol-file, on the grounds that the
user might want to add some symbols before running the program
@@
-607,8
+608,9
@@
run_command_1 (char *args, int from_tty, int tbreak_at_main)
/* We call get_inferior_args() because we might need to compute
the value now. */
/* We call get_inferior_args() because we might need to compute
the value now. */
- run_target->to_create_inferior (run_target, exec_file, get_inferior_args (),
- environ_vector (current_inferior ()->environment),
+ run_target->to_create_inferior (run_target, exec_file,
+ std::string (get_inferior_args ()),
+ current_inferior ()->environment.envp (),
from_tty);
/* to_create_inferior should push the target, so after this point we
shouldn't refer to run_target again. */
from_tty);
/* to_create_inferior should push the target, so after this point we
shouldn't refer to run_target again. */
@@
-729,10
+731,10
@@
continue_1 (int all_threads)
{
/* Don't error out if the current thread is running, because
there may be other stopped threads. */
{
/* Don't error out if the current thread is running, because
there may be other stopped threads. */
- struct cleanup *old_chain;
- /* Backup current thread and selected frame. */
- old_chain = make_cleanup_restore_current_thread ();
+ /* Backup current thread and selected frame and restore on scope
+ exit. */
+ scoped_restore_current_thread restore_thread;
iterate_over_threads (proceed_thread_callback, NULL);
iterate_over_threads (proceed_thread_callback, NULL);
@@
-753,9
+755,6
@@
continue_1 (int all_threads)
*/
target_terminal_inferior ();
}
*/
target_terminal_inferior ();
}
-
- /* Restore selected ptid. */
- do_cleanups (old_chain);
}
else
{
}
else
{
@@
-1603,15
+1602,9
@@
advance_command (char *arg, int from_tty)
struct value *
get_return_value (struct value *function, struct type *value_type)
{
struct value *
get_return_value (struct value *function, struct type *value_type)
{
-
struct regcache *stop_regs
;
- struct gdbarch *gdbarch;
+
regcache stop_regs (regcache::readonly, *get_current_regcache ())
;
+ struct gdbarch *gdbarch
= stop_regs.arch ()
;
struct value *value;
struct value *value;
- struct cleanup *cleanup;
-
- stop_regs = regcache_dup (get_current_regcache ());
- cleanup = make_cleanup_regcache_xfree (stop_regs);
-
- gdbarch = get_regcache_arch (stop_regs);
value_type = check_typedef (value_type);
gdb_assert (TYPE_CODE (value_type) != TYPE_CODE_VOID);
value_type = check_typedef (value_type);
gdb_assert (TYPE_CODE (value_type) != TYPE_CODE_VOID);
@@
-1630,7
+1623,7
@@
get_return_value (struct value *function, struct type *value_type)
case RETURN_VALUE_ABI_RETURNS_ADDRESS:
case RETURN_VALUE_ABI_PRESERVES_ADDRESS:
value = allocate_value (value_type);
case RETURN_VALUE_ABI_RETURNS_ADDRESS:
case RETURN_VALUE_ABI_PRESERVES_ADDRESS:
value = allocate_value (value_type);
- gdbarch_return_value (gdbarch, function, value_type, stop_regs,
+ gdbarch_return_value (gdbarch, function, value_type,
&
stop_regs,
value_contents_raw (value), NULL);
break;
case RETURN_VALUE_STRUCT_CONVENTION:
value_contents_raw (value), NULL);
break;
case RETURN_VALUE_STRUCT_CONVENTION:
@@
-1640,8
+1633,6
@@
get_return_value (struct value *function, struct type *value_type)
internal_error (__FILE__, __LINE__, _("bad switch"));
}
internal_error (__FILE__, __LINE__, _("bad switch"));
}
- do_cleanups (cleanup);
-
return value;
}
return value;
}
@@
-2140,7
+2131,7
@@
environment_info (char *var, int from_tty)
{
if (var)
{
{
if (var)
{
- c
har *val = get_in_environ (current_inferior ()->environment,
var);
+ c
onst char *val = current_inferior ()->environment.get (
var);
if (val)
{
if (val)
{
@@
-2158,11
+2149,11
@@
environment_info (char *var, int from_tty)
}
else
{
}
else
{
- char **
vector = environ_vector (current_inferior ()->environment
);
+ char **
envp = current_inferior ()->environment.envp (
);
-
while (*vector
)
+
for (int idx = 0; envp[idx] != NULL; ++idx
)
{
{
- puts_filtered (
*vector++
);
+ puts_filtered (
envp[idx]
);
puts_filtered ("\n");
}
}
puts_filtered ("\n");
}
}
@@
-2224,10
+2215,10
@@
set_environment_command (char *arg, int from_tty)
printf_filtered (_("Setting environment variable "
"\"%s\" to null value.\n"),
var);
printf_filtered (_("Setting environment variable "
"\"%s\" to null value.\n"),
var);
-
set_in_environ (current_inferior ()->environment,
var, "");
+
current_inferior ()->environment.set (
var, "");
}
else
}
else
-
set_in_environ (current_inferior ()->environment,
var, val);
+
current_inferior ()->environment.set (
var, val);
xfree (var);
}
xfree (var);
}
@@
-2239,13
+2230,10
@@
unset_environment_command (char *var, int from_tty)
/* If there is no argument, delete all environment variables.
Ask for confirmation if reading from the terminal. */
if (!from_tty || query (_("Delete all environment variables? ")))
/* If there is no argument, delete all environment variables.
Ask for confirmation if reading from the terminal. */
if (!from_tty || query (_("Delete all environment variables? ")))
- {
- free_environ (current_inferior ()->environment);
- current_inferior ()->environment = make_environ ();
- }
+ current_inferior ()->environment = gdb_environ::from_host_environ ();
}
else
}
else
-
unset_in_environ (current_inferior ()->environment,
var);
+
current_inferior ()->environment.unset (
var);
}
/* Handle the execution path (PATH variable). */
}
/* Handle the execution path (PATH variable). */
@@
-2256,8
+2244,7
@@
static void
path_info (char *args, int from_tty)
{
puts_filtered ("Executable and object file path: ");
path_info (char *args, int from_tty)
{
puts_filtered ("Executable and object file path: ");
- puts_filtered (get_in_environ (current_inferior ()->environment,
- path_var_name));
+ puts_filtered (current_inferior ()->environment.get (path_var_name));
puts_filtered ("\n");
}
puts_filtered ("\n");
}
@@
-2267,16
+2254,16
@@
static void
path_command (char *dirname, int from_tty)
{
char *exec_path;
path_command (char *dirname, int from_tty)
{
char *exec_path;
- char *env;
+ c
onst c
har *env;
dont_repeat ();
dont_repeat ();
- env =
get_in_environ (current_inferior ()->environment,
path_var_name);
+ env =
current_inferior ()->environment.get (
path_var_name);
/* Can be null if path is not set. */
if (!env)
env = "";
exec_path = xstrdup (env);
mod_path (dirname, &exec_path);
/* Can be null if path is not set. */
if (!env)
env = "";
exec_path = xstrdup (env);
mod_path (dirname, &exec_path);
-
set_in_environ (current_inferior ()->environment,
path_var_name, exec_path);
+
current_inferior ()->environment.set (
path_var_name, exec_path);
xfree (exec_path);
if (from_tty)
path_info ((char *) NULL, from_tty);
xfree (exec_path);
if (from_tty)
path_info ((char *) NULL, from_tty);
@@
-2319,7
+2306,8
@@
default_print_one_register_info (struct ui_file *file,
if (print_raw_format)
{
fprintf_filtered (file, "\t(raw ");
if (print_raw_format)
{
fprintf_filtered (file, "\t(raw ");
- print_hex_chars (file, valaddr, TYPE_LENGTH (regtype), byte_order);
+ print_hex_chars (file, valaddr, TYPE_LENGTH (regtype), byte_order,
+ true);
fprintf_filtered (file, ")");
}
}
fprintf_filtered (file, ")");
}
}
@@
-2626,15
+2614,11
@@
proceed_after_attach (int pid)
{
/* Don't error out if the current thread is running, because
there may be other stopped threads. */
{
/* Don't error out if the current thread is running, because
there may be other stopped threads. */
- struct cleanup *old_chain;
/* Backup current thread and selected frame. */
/* Backup current thread and selected frame. */
-
old_chain = make_cleanup_restore_current_thread ()
;
+
scoped_restore_current_thread restore_thread
;
iterate_over_threads (proceed_after_attach_callback, &pid);
iterate_over_threads (proceed_after_attach_callback, &pid);
-
- /* Restore selected ptid. */
- do_cleanups (old_chain);
}
/* See inferior.h. */
}
/* See inferior.h. */
@@
-2681,7
+2665,7
@@
enum attach_post_wait_mode
should be running. Else if ATTACH, */
static void
should be running. Else if ATTACH, */
static void
-attach_post_wait (char *args, int from_tty, enum attach_post_wait_mode mode)
+attach_post_wait (c
onst c
har *args, int from_tty, enum attach_post_wait_mode mode)
{
struct inferior *inferior;
{
struct inferior *inferior;
@@
-2921,15
+2905,13
@@
attach_command (char *args, int from_tty)
void
notice_new_inferior (ptid_t ptid, int leave_running, int from_tty)
{
void
notice_new_inferior (ptid_t ptid, int leave_running, int from_tty)
{
- struct cleanup* old_chain;
- enum attach_post_wait_mode mode;
-
- old_chain = make_cleanup (null_cleanup, NULL);
+ enum attach_post_wait_mode mode
+ = leave_running ? ATTACH_POST_WAIT_RESUME : ATTACH_POST_WAIT_NOTHING;
-
mode = leave_running ? ATTACH_POST_WAIT_RESUME : ATTACH_POST_WAIT_NOTHING
;
+
gdb::optional<scoped_restore_current_thread> restore_thread
;
- if (
!ptid_equal (inferior_ptid, null_ptid)
)
-
make_cleanup_restore_current_thread
();
+ if (
inferior_ptid != null_ptid
)
+
restore_thread.emplace
();
/* Avoid reading registers -- we haven't fetched the target
description yet. */
/* Avoid reading registers -- we haven't fetched the target
description yet. */
@@
-2958,13
+2940,10
@@
notice_new_inferior (ptid_t ptid, int leave_running, int from_tty)
add_inferior_continuation (attach_command_continuation, a,
attach_command_continuation_free_args);
add_inferior_continuation (attach_command_continuation, a,
attach_command_continuation_free_args);
- do_cleanups (old_chain);
return;
}
attach_post_wait ("" /* args */, from_tty, mode);
return;
}
attach_post_wait ("" /* args */, from_tty, mode);
-
- do_cleanups (old_chain);
}
/*
}
/*
@@
-3228,7
+3207,10
@@
is restored."),
set_inferior_tty_command,
show_inferior_tty_command,
&setlist, &showlist);
set_inferior_tty_command,
show_inferior_tty_command,
&setlist, &showlist);
- add_com_alias ("tty", "set inferior-tty", class_alias, 0);
+ cmd_name = "inferior-tty";
+ c = lookup_cmd (&cmd_name, setlist, "", -1, 1);
+ gdb_assert (c != NULL);
+ add_alias_cmd ("tty", c, class_alias, 0, &cmdlist);
cmd_name = "args";
add_setshow_string_noescape_cmd (cmd_name, class_run,
cmd_name = "args";
add_setshow_string_noescape_cmd (cmd_name, class_run,
@@
-3414,13
+3396,16
@@
Specifying -a and an ignore count simultaneously is an error."));
c = add_com ("run", class_run, run_command, _("\
Start debugged program. You may specify arguments to give it.\n\
c = add_com ("run", class_run, run_command, _("\
Start debugged program. You may specify arguments to give it.\n\
-Args may include \"*\", or \"[...]\"; they are expanded using \"sh\".\n\
-Input and output redirection with \">\", \"<\", or \">>\" are also \
-allowed.\n\n\
+Args may include \"*\", or \"[...]\"; they are expanded using the\n\
+shell that will start the program (specified by the \"$SHELL\"\
+environment\nvariable). Input and output redirection with \">\",\
+\"<\", or \">>\"\nare also allowed.\n\n\
With no arguments, uses arguments last specified (with \"run\" \
or \"set args\").\n\
To cancel previous arguments and run with no arguments,\n\
With no arguments, uses arguments last specified (with \"run\" \
or \"set args\").\n\
To cancel previous arguments and run with no arguments,\n\
-use \"set args\" without arguments."));
+use \"set args\" without arguments.\n\
+To start the inferior without using a shell, use \"set \
+startup-with-shell off\"."));
set_cmd_completer (c, filename_completer);
add_com_alias ("r", "run", class_run, 1);
set_cmd_completer (c, filename_completer);
add_com_alias ("r", "run", class_run, 1);
This page took
0.028027 seconds
and
4
git commands to generate.