aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorSergio Durigan Junior <sergiodj@redhat.com>2019-05-16 16:23:24 -0400
committerSergio Durigan Junior <sergiodj@redhat.com>2019-05-16 16:26:30 -0400
commit677052f2a5c67f1d9b2e6d1b2a2149b5f0c20cd0 (patch)
tree26764897d83d8fad0c8fe8fa14383d6603dab988 /gdb
parentf3da9116654bb2e899063a0aa9e11c2606b38fff (diff)
downloadbinutils-677052f2a5c67f1d9b2e6d1b2a2149b5f0c20cd0.zip
binutils-677052f2a5c67f1d9b2e6d1b2a2149b5f0c20cd0.tar.gz
binutils-677052f2a5c67f1d9b2e6d1b2a2149b5f0c20cd0.tar.bz2
Make stap-probe.c:stap_parse_register_operand's "regname" an std::string
This patch simplifies the code of stap-probe.c:stap_parse_register_operand by making "regname" an std::string. No functionality change. I'm this code's maintainer, so I'm pushing this as it's a fairly trivial patch. gdb/ChangeLog: 2019-05-16 Sergio Durigan Junior <sergiodj@redhat.com> * stap-probe.c (stap_parse_register_operand): Make "regname" an "std::string", simplifying the algorithm.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/stap-probe.c36
2 files changed, 17 insertions, 24 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index faee999..2dc9198 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,10 @@
2019-05-16 Sergio Durigan Junior <sergiodj@redhat.com>
+ * stap-probe.c (stap_parse_register_operand): Make "regname" an
+ "std::string", simplifying the algorithm.
+
+2019-05-16 Sergio Durigan Junior <sergiodj@redhat.com>
+
* stap-probe.c (handle_stap_probe): Fix complaint formatting.
(stap_static_probe_ops::get_probes): Likewise.
diff --git a/gdb/stap-probe.c b/gdb/stap-probe.c
index 5261a1a..e5a901b 100644
--- a/gdb/stap-probe.c
+++ b/gdb/stap-probe.c
@@ -687,12 +687,8 @@ stap_parse_register_operand (struct stap_parse_info *p)
/* Variables used to extract the register name from the probe's
argument. */
const char *start;
- char *regname;
- int len;
const char *gdb_reg_prefix = gdbarch_stap_gdb_register_prefix (gdbarch);
- int gdb_reg_prefix_len = gdb_reg_prefix ? strlen (gdb_reg_prefix) : 0;
const char *gdb_reg_suffix = gdbarch_stap_gdb_register_suffix (gdbarch);
- int gdb_reg_suffix_len = gdb_reg_suffix ? strlen (gdb_reg_suffix) : 0;
const char *reg_prefix;
const char *reg_ind_prefix;
const char *reg_suffix;
@@ -753,37 +749,29 @@ stap_parse_register_operand (struct stap_parse_info *p)
while (isalnum (*p->arg))
++p->arg;
- len = p->arg - start;
-
- regname = (char *) alloca (len + gdb_reg_prefix_len + gdb_reg_suffix_len + 1);
- regname[0] = '\0';
+ std::string regname (start, p->arg - start);
/* We only add the GDB's register prefix/suffix if we are dealing with
a numeric register. */
- if (gdb_reg_prefix && isdigit (*start))
+ if (isdigit (*start))
{
- strncpy (regname, gdb_reg_prefix, gdb_reg_prefix_len);
- strncpy (regname + gdb_reg_prefix_len, start, len);
-
- if (gdb_reg_suffix)
- strncpy (regname + gdb_reg_prefix_len + len,
- gdb_reg_suffix, gdb_reg_suffix_len);
+ if (gdb_reg_prefix != NULL)
+ regname = gdb_reg_prefix + regname;
- len += gdb_reg_prefix_len + gdb_reg_suffix_len;
+ if (gdb_reg_suffix != NULL)
+ regname += gdb_reg_suffix;
}
- else
- strncpy (regname, start, len);
-
- regname[len] = '\0';
/* Is this a valid register name? */
- if (user_reg_map_name_to_regnum (gdbarch, regname, len) == -1)
+ if (user_reg_map_name_to_regnum (gdbarch,
+ regname.c_str (),
+ regname.size ()) == -1)
error (_("Invalid register name `%s' on expression `%s'."),
- regname, p->saved_arg);
+ regname.c_str (), p->saved_arg);
write_exp_elt_opcode (&p->pstate, OP_REGISTER);
- str.ptr = regname;
- str.length = len;
+ str.ptr = regname.c_str ();
+ str.length = regname.size ();
write_exp_string (&p->pstate, str);
write_exp_elt_opcode (&p->pstate, OP_REGISTER);