[PATCH 1/5] Remove argument 'state' from get_tracepoint_by_number

Yao Qi
2014-03-13T02:35:11Z

Nowadays, get_tracepoint_by_number gets number from two sources, ARG
and STATE, which looks a little odd. It's better to change
get_tracepoint_by_number to get number only from ARG, and use
get_number_or_range to get number from STATE.

This patch removes 'state' argument, get get_tracepoint_by_number
cleaner.

gdb:

2014-03-13 Yao Qi <yao@codesourcery.com>

* breakpoint.c (trace_pass_command): Get tracepoint number by
get_number_or_range and get tracepoint get_tracepoint.
(get_tracepoint_by_number): Remove argument 'state'. Update
comments. Don't check 'state'. All callers updated.
* breakpoint.h (get_tracepoint_by_number): Update declaration.
---
gdb/breakpoint.c | 46 ++++++++++++++++++++++++++--------------------
gdb/breakpoint.h | 3 +--
gdb/tracepoint.c | 2 +-
3 files changed, 28 insertions(+), 23 deletions(-)

diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index 1551b99..800cead 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -15532,7 +15532,7 @@ trace_pass_command (char *args, int from_tty)
}
else if (*args == '\0')
{
- t1 = get_tracepoint_by_number (&args, NULL);
+ t1 = get_tracepoint_by_number (&args);
if (t1)
trace_pass_set_count (t1, count, from_tty);
}
@@ -15543,9 +15543,14 @@ trace_pass_command (char *args, int from_tty)
init_number_or_range (&state, args);
while (!state.finished)
{
- t1 = get_tracepoint_by_number (&args, &state);
+ int tpnum = get_number_or_range (&state);
+
+ t1 = get_tracepoint (tpnum);
+
if (t1)
trace_pass_set_count (t1, count, from_tty);
+ else
+ printf_unfiltered ("No tracepoint number %d.\n", tpnum);
}
}
}
@@ -15583,36 +15588,37 @@ get_tracepoint_by_number_on_target (int num)
}

/* Utility: parse a tracepoint number and look it up in the list.
- If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
If the argument is missing, the most recent tracepoint
(tracepoint_count) is returned. */

struct tracepoint *
-get_tracepoint_by_number (char **arg,
- struct get_number_or_range_state *state)
+get_tracepoint_by_number (char **arg)
{
struct breakpoint *t;
int tpnum;
- char *instring = arg == NULL ? NULL : *arg;

- if (state)
+ if (arg == NULL || *arg == NULL || ! **arg)
{
- gdb_assert (!state->finished);
- tpnum = get_number_or_range (state);
+ if (tracepoint_count == 0)
+ {
+ printf_filtered (_("No previous tracepoint\n"));
+ return NULL;
+ }
+
+ tpnum = tracepoint_count;
}
- else if (arg == NULL || *arg == NULL || ! **arg)
- tpnum = tracepoint_count;
else
- tpnum = get_number (arg);
-
- if (tpnum <= 0)
{
- if (instring && *instring)
- printf_filtered (_("bad tracepoint number at or near '%s'\n"),
- instring);
- else
- printf_filtered (_("No previous tracepoint\n"));
- return NULL;
+ char *instring = *arg;
+
+ tpnum = get_number (arg);
+
+ if (tpnum == 0)
+ {
+ printf_filtered (_("bad tracepoint number at or near '%s'\n"),
+ instring);
+ return NULL;
+ }
}

ALL_TRACEPOINTS (t)
diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h
index bf1f52a..c1ed2e6 100644
--- a/gdb/breakpoint.h
+++ b/gdb/breakpoint.h
@@ -1490,8 +1490,7 @@ extern struct tracepoint *get_tracepoint_by_number_on_target (int num);

/* Find a tracepoint by parsing a number in the supplied string. */
extern struct tracepoint *
- get_tracepoint_by_number (char **arg,
- struct get_number_or_range_state *state);
+ get_tracepoint_by_number (char **arg);

/* Return a vector of all tracepoints currently defined. The vector
is newly allocated; the caller should free when done with it. */
diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c
index 673fddd..cea40e3 100644
--- a/gdb/tracepoint.c
+++ b/gdb/tracepoint.c
@@ -653,7 +653,7 @@ trace_actions_command (char *args, int from_tty)
struct tracepoint *t;
struct command_line *l;

- t = get_tracepoint_by_number (&args, NULL);
+ t = get_tracepoint_by_number (&args);
if (t)
{
char *tmpbuf =
--
1.7.7.6