aboutsummaryrefslogtreecommitdiff
path: root/gdb/skip.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/skip.c')
-rw-r--r--gdb/skip.c188
1 files changed, 94 insertions, 94 deletions
diff --git a/gdb/skip.c b/gdb/skip.c
index f3b1bec..8841f10 100644
--- a/gdb/skip.c
+++ b/gdb/skip.c
@@ -46,11 +46,10 @@ static bool debug_skip = false;
class skiplist_entry
{
public:
+
/* Create a skiplist_entry object and add it to the chain. */
- static void add_entry (bool file_is_glob,
- std::string &&file,
- bool function_is_regexp,
- std::string &&function);
+ static void add_entry (bool file_is_glob, std::string &&file,
+ bool function_is_regexp, std::string &&function);
/* Return true if the skip entry has a file or glob-style file
pattern that matches FUNCTION_SAL. */
@@ -62,14 +61,20 @@ public:
/* Getters. */
int number () const { return m_number; };
+
bool enabled () const { return m_enabled; };
+
bool file_is_glob () const { return m_file_is_glob; }
+
const std::string &file () const { return m_file; }
+
const std::string &function () const { return m_function; }
+
bool function_is_regexp () const { return m_function_is_regexp; }
/* Setters. */
void enable () { m_enabled = true; };
+
void disable () { m_enabled = false; };
/* Disable copy. */
@@ -77,9 +82,14 @@ public:
void operator= (const skiplist_entry &) = delete;
private:
+
/* Key that grants access to the constructor. */
- struct private_key {};
+ struct private_key
+ {
+ };
+
public:
+
/* Public so we can construct with container::emplace_back. Since
it requires a private class key, it can't be called from outside.
Use the add_entry static factory method to construct instead. */
@@ -88,6 +98,7 @@ public:
private_key);
private:
+
/* Return true if we're stopped at a file to be skipped. */
bool do_skip_file_p (const symtab_and_line &function_sal) const;
@@ -95,6 +106,7 @@ private:
bool do_skip_gfile_p (const symtab_and_line &function_sal) const;
private: /* data */
+
int m_number = -1;
/* True if FILE is a glob-style pattern.
@@ -122,11 +134,9 @@ private: /* data */
static std::list<skiplist_entry> skiplist_entries;
static int highest_skiplist_entry_num = 0;
-skiplist_entry::skiplist_entry (bool file_is_glob,
- std::string &&file,
+skiplist_entry::skiplist_entry (bool file_is_glob, std::string &&file,
bool function_is_regexp,
- std::string &&function,
- private_key)
+ std::string &&function, private_key)
: m_file_is_glob (file_is_glob),
m_file (std::move (file)),
m_function_is_regexp (function_is_regexp),
@@ -142,7 +152,7 @@ skiplist_entry::skiplist_entry (bool file_is_glob,
gdb_assert (!m_function.empty ());
m_compiled_function_regexp.emplace (m_function.c_str (),
REG_NOSUB | REG_EXTENDED,
- _("regexp"));
+ _ ("regexp"));
}
}
@@ -150,10 +160,8 @@ void
skiplist_entry::add_entry (bool file_is_glob, std::string &&file,
bool function_is_regexp, std::string &&function)
{
- skiplist_entries.emplace_back (file_is_glob,
- std::move (file),
- function_is_regexp,
- std::move (function),
+ skiplist_entries.emplace_back (file_is_glob, std::move (file),
+ function_is_regexp, std::move (function),
private_key {});
/* Incremented after push_back, in case push_back throws. */
@@ -172,7 +180,7 @@ skip_file_command (const char *arg, int from_tty)
{
symtab = get_last_displayed_symtab ();
if (symtab == NULL)
- error (_("No default file now."));
+ error (_ ("No default file now."));
/* It is not a typo, symtab_to_filename_for_display would be needlessly
ambiguous. */
@@ -181,10 +189,10 @@ skip_file_command (const char *arg, int from_tty)
else
filename = arg;
- skiplist_entry::add_entry (false, std::string (filename),
- false, std::string ());
+ skiplist_entry::add_entry (false, std::string (filename), false,
+ std::string ());
- gdb_printf (_("File %s will be skipped when stepping.\n"), filename);
+ gdb_printf (_ ("File %s will be skipped when stepping.\n"), filename);
}
/* Create a skiplist entry for the given function NAME and add it to the
@@ -195,7 +203,7 @@ skip_function (const char *name)
{
skiplist_entry::add_entry (false, std::string (), false, std::string (name));
- gdb_printf (_("Function %s will be skipped when stepping.\n"), name);
+ gdb_printf (_ ("Function %s will be skipped when stepping.\n"), name);
}
static void
@@ -204,14 +212,14 @@ skip_function_command (const char *arg, int from_tty)
/* Default to the current function if no argument is given. */
if (arg == NULL)
{
- frame_info_ptr fi = get_selected_frame (_("No default function now."));
+ frame_info_ptr fi = get_selected_frame (_ ("No default function now."));
struct symbol *sym = get_frame_function (fi);
const char *name = NULL;
if (sym != NULL)
name = sym->print_name ();
else
- error (_("No function found containing current program point %s."),
+ error (_ ("No function found containing current program point %s."),
paddress (get_current_arch (), get_frame_pc (fi)));
skip_function (name);
return;
@@ -244,40 +252,36 @@ skip_command (const char *arg, int from_tty)
const char *p = argv[i];
const char *value = argv[i + 1];
- if (strcmp (p, "-fi") == 0
- || strcmp (p, "-file") == 0)
+ if (strcmp (p, "-fi") == 0 || strcmp (p, "-file") == 0)
{
if (value == NULL)
- error (_("Missing value for %s option."), p);
+ error (_ ("Missing value for %s option."), p);
file = value;
++i;
}
- else if (strcmp (p, "-gfi") == 0
- || strcmp (p, "-gfile") == 0)
+ else if (strcmp (p, "-gfi") == 0 || strcmp (p, "-gfile") == 0)
{
if (value == NULL)
- error (_("Missing value for %s option."), p);
+ error (_ ("Missing value for %s option."), p);
gfile = value;
++i;
}
- else if (strcmp (p, "-fu") == 0
- || strcmp (p, "-function") == 0)
+ else if (strcmp (p, "-fu") == 0 || strcmp (p, "-function") == 0)
{
if (value == NULL)
- error (_("Missing value for %s option."), p);
+ error (_ ("Missing value for %s option."), p);
function = value;
++i;
}
- else if (strcmp (p, "-rfu") == 0
- || strcmp (p, "-rfunction") == 0)
+ else if (strcmp (p, "-rfu") == 0 || strcmp (p, "-rfunction") == 0)
{
if (value == NULL)
- error (_("Missing value for %s option."), p);
+ error (_ ("Missing value for %s option."), p);
rfunction = value;
++i;
}
else if (*p == '-')
- error (_("Invalid skip option: %s"), p);
+ error (_ ("Invalid skip option: %s"), p);
else if (i == 0)
{
/* Assume the user entered "skip FUNCTION-NAME".
@@ -288,19 +292,19 @@ skip_command (const char *arg, int from_tty)
return;
}
else
- error (_("Invalid argument: %s"), p);
+ error (_ ("Invalid argument: %s"), p);
}
if (file != NULL && gfile != NULL)
- error (_("Cannot specify both -file and -gfile."));
+ error (_ ("Cannot specify both -file and -gfile."));
if (function != NULL && rfunction != NULL)
- error (_("Cannot specify both -function and -rfunction."));
+ error (_ ("Cannot specify both -function and -rfunction."));
/* This shouldn't happen as "skip" by itself gets punted to
skip_function_command. */
- gdb_assert (file != NULL || gfile != NULL
- || function != NULL || rfunction != NULL);
+ gdb_assert (file != NULL || gfile != NULL || function != NULL
+ || rfunction != NULL);
std::string entry_file;
if (file != NULL)
@@ -324,27 +328,27 @@ skip_command (const char *arg, int from_tty)
{
const char *file_to_print = file != NULL ? file : gfile;
const char *function_to_print = function != NULL ? function : rfunction;
- const char *file_text = gfile != NULL ? _("File(s)") : _("File");
- const char *lower_file_text = gfile != NULL ? _("file(s)") : _("file");
+ const char *file_text = gfile != NULL ? _ ("File(s)") : _ ("File");
+ const char *lower_file_text = gfile != NULL ? _ ("file(s)") : _ ("file");
const char *function_text
- = rfunction != NULL ? _("Function(s)") : _("Function");
+ = rfunction != NULL ? _ ("Function(s)") : _ ("Function");
if (function_to_print == NULL)
{
- gdb_printf (_("%s %s will be skipped when stepping.\n"),
- file_text, file_to_print);
+ gdb_printf (_ ("%s %s will be skipped when stepping.\n"), file_text,
+ file_to_print);
}
else if (file_to_print == NULL)
{
- gdb_printf (_("%s %s will be skipped when stepping.\n"),
+ gdb_printf (_ ("%s %s will be skipped when stepping.\n"),
function_text, function_to_print);
}
else
{
- gdb_printf (_("%s %s in %s %s will be skipped"
- " when stepping.\n"),
- function_text, function_to_print,
- lower_file_text, file_to_print);
+ gdb_printf (_ ("%s %s in %s %s will be skipped"
+ " when stepping.\n"),
+ function_text, function_to_print, lower_file_text,
+ file_to_print);
}
}
}
@@ -366,10 +370,10 @@ info_skip_command (const char *arg, int from_tty)
if (num_printable_entries == 0)
{
if (arg == NULL)
- current_uiout->message (_("Not skipping any files or functions.\n"));
+ current_uiout->message (_ ("Not skipping any files or functions.\n"));
else
current_uiout->message (
- _("No skiplist entries found with number %s.\n"), arg);
+ _ ("No skiplist entries found with number %s.\n"), arg);
return;
}
@@ -377,11 +381,11 @@ info_skip_command (const char *arg, int from_tty)
ui_out_emit_table table_emitter (current_uiout, 6, num_printable_entries,
"SkiplistTable");
- current_uiout->table_header (5, ui_left, "number", "Num"); /* 1 */
- current_uiout->table_header (3, ui_left, "enabled", "Enb"); /* 2 */
- current_uiout->table_header (4, ui_right, "regexp", "Glob"); /* 3 */
- current_uiout->table_header (20, ui_left, "file", "File"); /* 4 */
- current_uiout->table_header (2, ui_right, "regexp", "RE"); /* 5 */
+ current_uiout->table_header (5, ui_left, "number", "Num"); /* 1 */
+ current_uiout->table_header (3, ui_left, "enabled", "Enb"); /* 2 */
+ current_uiout->table_header (4, ui_right, "regexp", "Glob"); /* 3 */
+ current_uiout->table_header (20, ui_left, "file", "File"); /* 4 */
+ current_uiout->table_header (2, ui_right, "regexp", "RE"); /* 5 */
current_uiout->table_header (40, ui_noalign, "function", "Function"); /* 6 */
current_uiout->table_body ();
@@ -406,21 +410,19 @@ info_skip_command (const char *arg, int from_tty)
current_uiout->field_string ("file",
e.file ().empty () ? "<none>"
- : e.file ().c_str (),
+ : e.file ().c_str (),
e.file ().empty ()
- ? metadata_style.style ()
- : file_name_style.style ()); /* 4 */
+ ? metadata_style.style ()
+ : file_name_style.style ()); /* 4 */
if (e.function_is_regexp ())
current_uiout->field_string ("regexp", "y"); /* 5 */
else
current_uiout->field_string ("regexp", "n"); /* 5 */
- current_uiout->field_string ("function",
- e.function ().empty () ? "<none>"
- : e.function ().c_str (),
- e.function ().empty ()
- ? metadata_style.style ()
- : function_name_style.style ()); /* 6 */
+ current_uiout->field_string (
+ "function", e.function ().empty () ? "<none>" : e.function ().c_str (),
+ e.function ().empty () ? metadata_style.style ()
+ : function_name_style.style ()); /* 6 */
current_uiout->text ("\n");
}
@@ -439,7 +441,7 @@ skip_enable_command (const char *arg, int from_tty)
}
if (!found)
- error (_("No skiplist entries found with number %s."), arg);
+ error (_ ("No skiplist entries found with number %s."), arg);
}
static void
@@ -455,7 +457,7 @@ skip_disable_command (const char *arg, int from_tty)
}
if (!found)
- error (_("No skiplist entries found with number %s."), arg);
+ error (_ ("No skiplist entries found with number %s."), arg);
}
static void
@@ -463,8 +465,7 @@ skip_delete_command (const char *arg, int from_tty)
{
bool found = false;
- for (auto it = skiplist_entries.begin (),
- end = skiplist_entries.end ();
+ for (auto it = skiplist_entries.begin (), end = skiplist_entries.end ();
it != end;)
{
const skiplist_entry &e = *it;
@@ -479,15 +480,14 @@ skip_delete_command (const char *arg, int from_tty)
}
if (!found)
- error (_("No skiplist entries found with number %s."), arg);
+ error (_ ("No skiplist entries found with number %s."), arg);
}
bool
skiplist_entry::do_skip_file_p (const symtab_and_line &function_sal) const
{
if (debug_skip)
- gdb_printf (gdb_stdlog,
- "skip: checking if file %s matches non-glob %s...",
+ gdb_printf (gdb_stdlog, "skip: checking if file %s matches non-glob %s...",
function_sal.symtab->filename, m_file.c_str ());
bool result;
@@ -502,7 +502,8 @@ skiplist_entry::do_skip_file_p (const symtab_and_line &function_sal) const
files are involved, do a quick comparison of the basenames. */
else if (!basenames_may_differ
&& filename_cmp (lbasename (function_sal.symtab->filename),
- lbasename (m_file.c_str ())) != 0)
+ lbasename (m_file.c_str ()))
+ != 0)
result = false;
else
{
@@ -522,8 +523,7 @@ bool
skiplist_entry::do_skip_gfile_p (const symtab_and_line &function_sal) const
{
if (debug_skip)
- gdb_printf (gdb_stdlog,
- "skip: checking if file %s matches glob %s...",
+ gdb_printf (gdb_stdlog, "skip: checking if file %s matches glob %s...",
function_sal.symtab->filename, m_file.c_str ());
bool result;
@@ -531,7 +531,8 @@ skiplist_entry::do_skip_gfile_p (const symtab_and_line &function_sal) const
/* Check first sole SYMTAB->FILENAME. It may not be a substring of
symtab_to_fullname as it may contain "./" etc. */
if (gdb_filename_fnmatch (m_file.c_str (), function_sal.symtab->filename,
- FNM_FILE_NAME | FNM_NOESCAPE) == 0)
+ FNM_FILE_NAME | FNM_NOESCAPE)
+ == 0)
result = true;
/* Before we invoke symtab_to_fullname, which is expensive, do a quick
@@ -540,9 +541,10 @@ skiplist_entry::do_skip_gfile_p (const symtab_and_line &function_sal) const
If the basename of the glob pattern is something like "*.c" then this
isn't much of a win. Oh well. */
else if (!basenames_may_differ
- && gdb_filename_fnmatch (lbasename (m_file.c_str ()),
- lbasename (function_sal.symtab->filename),
- FNM_FILE_NAME | FNM_NOESCAPE) != 0)
+ && gdb_filename_fnmatch (lbasename (m_file.c_str ()),
+ lbasename (function_sal.symtab->filename),
+ FNM_FILE_NAME | FNM_NOESCAPE)
+ != 0)
result = false;
else
{
@@ -643,8 +645,7 @@ function_name_is_marked_for_skip (const char *function_name,
/* Completer for skip numbers. */
static void
-complete_skip_number (cmd_list_element *cmd,
- completion_tracker &completer,
+complete_skip_number (cmd_list_element *cmd, completion_tracker &completer,
const char *text, const char *word)
{
size_t word_len = strlen (word);
@@ -658,13 +659,14 @@ complete_skip_number (cmd_list_element *cmd,
}
void _initialize_step_skip ();
+
void
_initialize_step_skip ()
{
static struct cmd_list_element *skiplist = NULL;
struct cmd_list_element *c;
- add_prefix_cmd ("skip", class_breakpoint, skip_command, _("\
+ add_prefix_cmd ("skip", class_breakpoint, skip_command, _ ("\
Ignore a function while stepping.\n\
\n\
Usage: skip [FUNCTION-NAME]\n\
@@ -679,21 +681,21 @@ FUNCTION-SPEC is one of:\n\
-rfu|-rfunction FUNCTION-NAME-REGULAR-EXPRESSION"),
&skiplist, 1, &cmdlist);
- c = add_cmd ("file", class_breakpoint, skip_file_command, _("\
+ c = add_cmd ("file", class_breakpoint, skip_file_command, _ ("\
Ignore a file while stepping.\n\
Usage: skip file [FILE-NAME]\n\
If no filename is given, ignore the current file."),
&skiplist);
set_cmd_completer (c, filename_completer);
- c = add_cmd ("function", class_breakpoint, skip_function_command, _("\
+ c = add_cmd ("function", class_breakpoint, skip_function_command, _ ("\
Ignore a function while stepping.\n\
Usage: skip function [FUNCTION-NAME]\n\
If no function name is given, skip the current function."),
&skiplist);
set_cmd_completer (c, location_completer);
- c = add_cmd ("enable", class_breakpoint, skip_enable_command, _("\
+ c = add_cmd ("enable", class_breakpoint, skip_enable_command, _ ("\
Enable skip entries.\n\
Usage: skip enable [NUMBER | RANGE]...\n\
You can specify numbers (e.g. \"skip enable 1 3\"),\n\
@@ -702,7 +704,7 @@ If you don't specify any numbers or ranges, we'll enable all skip entries."),
&skiplist);
set_cmd_completer (c, complete_skip_number);
- c = add_cmd ("disable", class_breakpoint, skip_disable_command, _("\
+ c = add_cmd ("disable", class_breakpoint, skip_disable_command, _ ("\
Disable skip entries.\n\
Usage: skip disable [NUMBER | RANGE]...\n\
You can specify numbers (e.g. \"skip disable 1 3\"),\n\
@@ -711,7 +713,7 @@ If you don't specify any numbers or ranges, we'll disable all skip entries."),
&skiplist);
set_cmd_completer (c, complete_skip_number);
- c = add_cmd ("delete", class_breakpoint, skip_delete_command, _("\
+ c = add_cmd ("delete", class_breakpoint, skip_delete_command, _ ("\
Delete skip entries.\n\
Usage: skip delete [NUMBER | RANGES]...\n\
You can specify numbers (e.g. \"skip delete 1 3\"),\n\
@@ -720,7 +722,7 @@ If you don't specify any numbers or ranges, we'll delete all skip entries."),
&skiplist);
set_cmd_completer (c, complete_skip_number);
- add_info ("skip", info_skip_command, _("\
+ add_info ("skip", info_skip_command, _ ("\
Display the status of skips.\n\
Usage: info skip [NUMBER | RANGES]...\n\
You can specify numbers (e.g. \"info skip 1 3\"), \n\
@@ -728,13 +730,11 @@ ranges (e.g. \"info skip 4-8\"), or both (e.g. \"info skip 1 3 4-8\").\n\n\
If you don't specify any numbers or ranges, we'll show all skips."));
set_cmd_completer (c, complete_skip_number);
- add_setshow_boolean_cmd ("skip", class_maintenance,
- &debug_skip, _("\
+ add_setshow_boolean_cmd ("skip", class_maintenance, &debug_skip, _ ("\
Set whether to print the debug output about skipping files and functions."),
- _("\
+ _ ("\
Show whether the debug output about skipping files and functions is printed."),
- _("\
+ _ ("\
When non-zero, debug output about skipping files and functions is displayed."),
- NULL, NULL,
- &setdebuglist, &showdebuglist);
+ NULL, NULL, &setdebuglist, &showdebuglist);
}