@@ -1842,7 +1842,7 @@ aarch64_stap_parse_special_token (struct gdbarch *gdbarch,
len = tmp - start;
std::string regname (start, len);
- if (user_reg_map_name_to_regnum (gdbarch, regname.c_str (), len) == -1)
+ if (user_reg_map_name_to_regnum (gdbarch, regname) == -1)
error (_("Invalid register name `%s' on expression `%s'."),
regname.c_str (), p->saved_arg);
@@ -1193,7 +1193,7 @@ arm_stap_parse_special_token (struct gdbarch *gdbarch,
/* Used to save the register name. */
const char *start;
char *regname;
- int len, offset;
+ int offset;
int got_minus = 0;
long displacement;
@@ -1207,7 +1207,7 @@ arm_stap_parse_special_token (struct gdbarch *gdbarch,
if (*tmp != ',')
return {};
- len = tmp - start;
+ size_t len = tmp - start;
regname = (char *) alloca (len + 2);
offset = 0;
@@ -1226,7 +1226,8 @@ arm_stap_parse_special_token (struct gdbarch *gdbarch,
len += offset;
regname[len] = '\0';
- if (user_reg_map_name_to_regnum (gdbarch, regname, len) == -1)
+ if (user_reg_map_name_to_regnum (gdbarch, { regname, len })
+ == -1)
error (_("Invalid register name `%s' on expression `%s'."),
regname, p->saved_arg);
@@ -4757,8 +4757,7 @@ arm_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
{
xsnprintf (name_buf, sizeof (name_buf), "%c%d",
reg_char, reg_scaled + i);
- regnum = user_reg_map_name_to_regnum (gdbarch, name_buf,
- strlen (name_buf));
+ regnum = user_reg_map_name_to_regnum (gdbarch, name_buf);
regcache->cooked_write (regnum, val + i * unit_length);
}
}
@@ -5183,8 +5182,7 @@ arm_dwarf_reg_to_regnum (struct gdbarch *gdbarch, int reg)
char name_buf[4];
xsnprintf (name_buf, sizeof (name_buf), "s%d", reg - 64);
- return user_reg_map_name_to_regnum (gdbarch, name_buf,
- strlen (name_buf));
+ return user_reg_map_name_to_regnum (gdbarch, name_buf);
}
/* VFP v3 / Neon registers. This range is also used for VFP v2
@@ -5194,8 +5192,7 @@ arm_dwarf_reg_to_regnum (struct gdbarch *gdbarch, int reg)
char name_buf[4];
xsnprintf (name_buf, sizeof (name_buf), "d%d", reg - 256);
- return user_reg_map_name_to_regnum (gdbarch, name_buf,
- strlen (name_buf));
+ return user_reg_map_name_to_regnum (gdbarch, name_buf);
}
return -1;
@@ -9272,8 +9269,7 @@ arm_return_value (struct gdbarch *gdbarch, struct value *function,
int regnum;
xsnprintf (name_buf, sizeof (name_buf), "%c%d", reg_char, i);
- regnum = user_reg_map_name_to_regnum (gdbarch, name_buf,
- strlen (name_buf));
+ regnum = user_reg_map_name_to_regnum (gdbarch, name_buf);
if (writebuf)
regcache->cooked_write (regnum, writebuf + i * unit_length);
if (readbuf)
@@ -9799,8 +9795,7 @@ arm_neon_quad_read (struct gdbarch *gdbarch, readable_regcache *regcache,
enum register_status status;
xsnprintf (name_buf, sizeof (name_buf), "d%d", regnum << 1);
- double_regnum = user_reg_map_name_to_regnum (gdbarch, name_buf,
- strlen (name_buf));
+ double_regnum = user_reg_map_name_to_regnum (gdbarch, name_buf);
status = regcache->raw_read (double_regnum, reg_buf);
if (status != REG_VALID)
@@ -9825,8 +9820,7 @@ arm_neon_quad_read_value (gdbarch *gdbarch, const frame_info_ptr &next_frame,
{
std::string raw_reg_name = string_printf ("d%d", quad_reg_index << 1);
int double_regnum
- = user_reg_map_name_to_regnum (gdbarch, raw_reg_name.c_str (),
- raw_reg_name.length ());
+ = user_reg_map_name_to_regnum (gdbarch, raw_reg_name);
return pseudo_from_concat_raw (next_frame, pseudo_reg_num, double_regnum,
double_regnum + 1);
@@ -9877,8 +9871,7 @@ arm_pseudo_read_value (gdbarch *gdbarch, const frame_info_ptr &next_frame,
std::string raw_reg_name = string_printf ("d%d", s_reg_index >> 1);
int double_regnum
- = user_reg_map_name_to_regnum (gdbarch, raw_reg_name.c_str (),
- raw_reg_name.length ());
+ = user_reg_map_name_to_regnum (gdbarch, raw_reg_name);
return pseudo_from_raw_part (next_frame, pseudo_reg_num, double_regnum,
offset);
@@ -9900,8 +9893,7 @@ arm_neon_quad_write (struct gdbarch *gdbarch, struct regcache *regcache,
int double_regnum;
xsnprintf (name_buf, sizeof (name_buf), "d%d", regnum << 1);
- double_regnum = user_reg_map_name_to_regnum (gdbarch, name_buf,
- strlen (name_buf));
+ double_regnum = user_reg_map_name_to_regnum (gdbarch, name_buf);
regcache->raw_write (double_regnum, buf);
regcache->raw_write (double_regnum + 1, buf + 8);
@@ -9913,8 +9905,7 @@ arm_neon_quad_write (gdbarch *gdbarch, const frame_info_ptr &next_frame,
{
std::string raw_reg_name = string_printf ("d%d", quad_reg_index << 1);
int double_regnum
- = user_reg_map_name_to_regnum (gdbarch, raw_reg_name.data (),
- raw_reg_name.length ());
+ = user_reg_map_name_to_regnum (gdbarch, raw_reg_name);
pseudo_to_concat_raw (next_frame, buf, double_regnum, double_regnum + 1);
}
@@ -9964,8 +9955,7 @@ arm_pseudo_write (gdbarch *gdbarch, const frame_info_ptr &next_frame,
std::string raw_reg_name = string_printf ("d%d", s_reg_index >> 1);
int double_regnum
- = user_reg_map_name_to_regnum (gdbarch, raw_reg_name.c_str (),
- raw_reg_name.length ());
+ = user_reg_map_name_to_regnum (gdbarch, raw_reg_name);
pseudo_to_raw_part (next_frame, buf, double_regnum, offset);
}
@@ -1650,18 +1650,17 @@ register_operation::do_generate_ax (struct expression *exp,
struct axs_value *value,
struct type *cast_type)
{
- const char *name = std::get<0> (m_storage).c_str ();
- int len = std::get<0> (m_storage).size ();
+ const std::string &name = std::get<0> (m_storage);
int reg;
- reg = user_reg_map_name_to_regnum (ax->gdbarch, name, len);
+ reg = user_reg_map_name_to_regnum (ax->gdbarch, name);
if (reg == -1)
- internal_error (_("Register $%s not available"), name);
+ internal_error (_("Register $%s not available"), name.c_str ());
/* No support for tracing user registers yet. */
if (reg >= gdbarch_num_cooked_regs (ax->gdbarch))
error (_("'%s' is a user-register; "
"GDB cannot yet trace user-register contents."),
- name);
+ name.c_str ());
value->kind = axs_lvalue_register;
value->u.reg = reg;
value->type = register_type (ax->gdbarch, reg);
@@ -2443,8 +2443,7 @@ csky_dwarf_reg_to_regnum (struct gdbarch *gdbarch, int dw_reg)
xsnprintf (name_buf, sizeof (name_buf), "s%d",
dw_reg - FV_PSEUDO_REGNO_FIRST);
- return user_reg_map_name_to_regnum (gdbarch, name_buf,
- strlen (name_buf));
+ return user_reg_map_name_to_regnum (gdbarch, name_buf);
}
/* Others, unknown. */
@@ -1132,8 +1132,7 @@ eval_op_register (struct type *expect_type, struct expression *exp,
int regno;
struct value *val;
- regno = user_reg_map_name_to_regnum (exp->gdbarch,
- name, strlen (name));
+ regno = user_reg_map_name_to_regnum (exp->gdbarch, name);
if (regno == -1)
error (_("Register $%s not available."), name);
@@ -831,8 +831,7 @@ gdbscm_frame_read_register (SCM self, SCM register_scm)
{
found = true;
regnum = user_reg_map_name_to_regnum (get_frame_arch (frame),
- register_str,
- strlen (register_str));
+ register_str);
if (regnum >= 0)
value = value_of_register (regnum,
get_next_frame_sentinel_okay (frame));
@@ -3983,7 +3983,7 @@ i386_stap_parse_special_token_triplet (struct gdbarch *gdbarch,
len = s - start - 1;
std::string regname (start, len);
- if (user_reg_map_name_to_regnum (gdbarch, regname.c_str (), len) == -1)
+ if (user_reg_map_name_to_regnum (gdbarch, regname) == -1)
error (_("Invalid register name `%s' on expression `%s'."),
regname.c_str (), p->saved_arg);
@@ -4079,7 +4079,7 @@ i386_stap_parse_special_token_three_arg_disp (struct gdbarch *gdbarch,
len_base = s - start;
std::string base (start, len_base);
- if (user_reg_map_name_to_regnum (gdbarch, base.c_str (), len_base) == -1)
+ if (user_reg_map_name_to_regnum (gdbarch, base) == -1)
error (_("Invalid register name `%s' on expression `%s'."),
base.c_str (), p->saved_arg);
@@ -4092,8 +4092,7 @@ i386_stap_parse_special_token_three_arg_disp (struct gdbarch *gdbarch,
len_index = s - start;
std::string index (start, len_index);
- if (user_reg_map_name_to_regnum (gdbarch, index.c_str (),
- len_index) == -1)
+ if (user_reg_map_name_to_regnum (gdbarch, index) == -1)
error (_("Invalid register name `%s' on expression `%s'."),
index.c_str (), p->saved_arg);
@@ -2399,7 +2399,9 @@ registers_info (const char *addr_exp, int fpregs)
/* A register name? */
{
- int regnum = user_reg_map_name_to_regnum (gdbarch, start, end - start);
+ int regnum
+ = user_reg_map_name_to_regnum (gdbarch,
+ { start, size_t (end - start) });
if (regnum >= 0)
{
@@ -2016,7 +2016,7 @@ nds32_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
/* Cache the register number of fs0. */
if (fpu_freg != -1)
- tdep->fs0_regnum = user_reg_map_name_to_regnum (gdbarch, "fs0", -1);
+ tdep->fs0_regnum = user_reg_map_name_to_regnum (gdbarch, "fs0");
/* Add NDS32 register aliases. To avoid search in user register name space,
user_reg_map_name_to_regnum is not used. */
@@ -200,7 +200,7 @@ parser_state::push_dollar (struct stoken str)
/* Handle tokens that refer to machine registers:
$ followed by a register name. */
i = user_reg_map_name_to_regnum (gdbarch (),
- str.ptr + 1, str.length - 1);
+ { str.ptr + 1, size_t (str.length - 1) });
if (i >= 0)
{
str.length--;
@@ -1731,7 +1731,6 @@ ppc_stap_parse_special_token (struct gdbarch *gdbarch,
we would not need to do anything. */
const char *s = p->arg;
char *regname;
- int len;
while (c_isdigit (*s))
++s;
@@ -1743,7 +1742,7 @@ ppc_stap_parse_special_token (struct gdbarch *gdbarch,
return {};
}
- len = s - p->arg;
+ size_t len = s - p->arg;
regname = (char *) alloca (len + 2);
regname[0] = 'r';
@@ -1751,7 +1750,7 @@ ppc_stap_parse_special_token (struct gdbarch *gdbarch,
++len;
regname[len] = '\0';
- if (user_reg_map_name_to_regnum (gdbarch, regname, len) == -1)
+ if (user_reg_map_name_to_regnum (gdbarch, { regname, len }) == -1)
error (_("Invalid register name `%s' on expression `%s'."),
regname, p->saved_arg);
@@ -350,8 +350,7 @@ register_descriptor_iter_find (PyObject *self, PyObject *args, PyObject *kw)
if (register_name != NULL && *register_name != '\0')
{
- int regnum = user_reg_map_name_to_regnum (gdbarch, register_name,
- strlen (register_name));
+ int regnum = user_reg_map_name_to_regnum (gdbarch, register_name);
if (regnum >= 0)
return gdbpy_get_register_descriptor (gdbarch, regnum).release ();
}
@@ -374,8 +373,7 @@ gdbpy_parse_register_id (struct gdbarch *gdbarch, PyObject *pyo_reg_id,
if (reg_name != NULL)
{
- *reg_num = user_reg_map_name_to_regnum (gdbarch, reg_name.get (),
- strlen (reg_name.get ()));
+ *reg_num = user_reg_map_name_to_regnum (gdbarch, reg_name.get ());
if (*reg_num >= 0)
return true;
PyErr_SetString (PyExc_ValueError, "Bad register");
@@ -92,8 +92,7 @@ riscv_update_csrmap (struct gdbarch *gdbarch,
= new struct regcache_map_entry[feature_csr->registers.size() + 1];
for (auto &csr : feature_csr->registers)
{
- int regnum = user_reg_map_name_to_regnum (gdbarch, csr->name.c_str(),
- csr->name.length());
+ int regnum = user_reg_map_name_to_regnum (gdbarch, csr->name);
riscv_csrmap[i++] = {1, regnum, 0};
}
@@ -333,7 +333,7 @@ init_sim_regno_table (struct gdbarch *arch)
{
int gdb_regno;
- gdb_regno = user_reg_map_name_to_regnum (arch, segment_regs[i], -1);
+ gdb_regno = user_reg_map_name_to_regnum (arch, segment_regs[i]);
if (gdb_regno >= 0)
set_sim_regno (sim_regno, gdb_regno, sim_ppc_sr0_regnum + i);
}
@@ -374,7 +374,7 @@ init_sim_regno_table (struct gdbarch *arch)
int gdb_regno = -1;
if (spr_name != NULL)
- gdb_regno = user_reg_map_name_to_regnum (arch, spr_name, -1);
+ gdb_regno = user_reg_map_name_to_regnum (arch, spr_name);
if (gdb_regno != -1)
set_sim_regno (sim_regno, gdb_regno, sim_ppc_spr0_regnum + i);
@@ -782,8 +782,7 @@ stap_parse_register_operand (struct stap_parse_info *p)
regname += gdb_reg_suffix;
}
- int regnum = user_reg_map_name_to_regnum (gdbarch, regname.c_str (),
- regname.size ());
+ int regnum = user_reg_map_name_to_regnum (gdbarch, regname);
/* Is this a valid register name? */
if (regnum == -1)
@@ -802,8 +801,7 @@ stap_parse_register_operand (struct stap_parse_info *p)
/* This is just a check we perform to make sure that the
arch-dependent code has provided us with a valid
register name. */
- regnum = user_reg_map_name_to_regnum (gdbarch, newregname.c_str (),
- newregname.size ());
+ regnum = user_reg_map_name_to_regnum (gdbarch, newregname);
if (regnum == -1)
internal_error (_("Invalid register name '%s' after replacing it"
@@ -1355,8 +1355,7 @@ encode_actions_1 (struct command_line *action,
(exp->op.get ()));
const char *name = regop->get_name ();
- i = user_reg_map_name_to_regnum (arch,
- name, strlen (name));
+ i = user_reg_map_name_to_regnum (arch, name);
if (i == -1)
internal_error (_("Register $%s not available"),
name);
@@ -128,13 +128,8 @@ user_reg_add (struct gdbarch *gdbarch, const char *name,
}
int
-user_reg_map_name_to_regnum (struct gdbarch *gdbarch, const char *name,
- int len)
+user_reg_map_name_to_regnum (struct gdbarch *gdbarch, std::string_view name)
{
- /* Make life easy, set the len to something reasonable. */
- if (len < 0)
- len = strlen (name);
-
/* Search register name space first - always let an architecture
specific register override the user registers. */
{
@@ -144,7 +139,7 @@ user_reg_map_name_to_regnum (struct gdbarch *gdbarch, const char *name,
{
const char *regname = gdbarch_register_name (gdbarch, i);
- if (len == strlen (regname) && strncmp (regname, name, len) == 0)
+ if (regname == name)
return i;
}
}
@@ -157,9 +152,7 @@ user_reg_map_name_to_regnum (struct gdbarch *gdbarch, const char *name,
for (nr = 0, reg = regs->first; reg != NULL; reg = reg->next, nr++)
{
- if ((len < 0 && strcmp (reg->name, name))
- || (len == strlen (reg->name)
- && strncmp (reg->name, name, len) == 0))
+ if (reg->name == name)
return gdbarch_num_cooked_regs (gdbarch) + nr;
}
}
@@ -45,7 +45,7 @@ struct gdbarch;
index. */
extern int user_reg_map_name_to_regnum (struct gdbarch *gdbarch,
- const char *str, int len);
+ std::string_view str);
extern const char *user_reg_map_regnum_to_name (struct gdbarch *gdbarch,
int regnum);