This changes user_reg_map_name_to_regnum to use std::string_view.
This pointed out some dead code in that function: the "len < 0" test
in the loop can never be true, because earlier code changes 'len' in
this case.
Approved-By: Simon Marchi <simon.marchi@efficios.com>
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);
/* Used to save the register name. */
const char *start;
char *regname;
- int len, offset;
+ int offset;
int got_minus = 0;
long displacement;
if (*tmp != ',')
return {};
- len = tmp - start;
+ size_t len = tmp - start;
regname = (char *) alloca (len + 2);
offset = 0;
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);
{
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);
}
}
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
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;
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)
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)
{
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);
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);
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);
{
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);
}
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);
}
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);
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. */
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);
{
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));
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);
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);
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);
/* 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)
{
/* 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. */
/* 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--;
we would not need to do anything. */
const char *s = p->arg;
char *regname;
- int len;
while (c_isdigit (*s))
++s;
return {};
}
- len = s - p->arg;
+ size_t len = s - p->arg;
regname = (char *) alloca (len + 2);
regname[0] = 'r';
++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);
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 ();
}
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");
= 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};
}
{
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);
}
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);
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)
/* 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"
(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);
}
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. */
{
{
const char *regname = gdbarch_register_name (gdbarch, i);
- if (len == strlen (regname) && strncmp (regname, name, len) == 0)
+ if (regname == name)
return i;
}
}
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;
}
}
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);