Use strtok_r instead of strtok
Improves threadsafety. This will be important when the patch series at https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/176 lands. gdb/ChangeLog: 2019-11-06 Christian Biesinger <cbiesinger@google.com> * linux-tdep.c (linux_info_proc): Use strtok_r instead of strtok. * mi/mi-main.c (output_cores): Likewise. * nat/linux-osdata.c (linux_xfer_osdata_cpus): Likewise. (linux_xfer_osdata_modules): Likewise. * remote.c (register_remote_support_xml): Likewise. * sparc64-tdep.c (adi_is_addr_mapped): Likewise. * xml-syscall.c (syscall_create_syscall_desc): Likewise. gdb/gdbserver/ChangeLog: 2019-11-06 Christian Biesinger <cbiesinger@google.com> * linux-x86-low.c (x86_linux_process_qsupported): Use strtok_r instead of strtok. * server.c (handle_query): Likewise. (captured_main): Likewise. Change-Id: Ief6138965a24398e5fc064598cd8f2abd3b5047c
This commit is contained in:
parent
848288b363
commit
ca3a04f65d
10 changed files with 56 additions and 27 deletions
|
@ -1,3 +1,13 @@
|
||||||
|
2019-11-06 Christian Biesinger <cbiesinger@google.com>
|
||||||
|
|
||||||
|
* linux-tdep.c (linux_info_proc): Use strtok_r instead of strtok.
|
||||||
|
* mi/mi-main.c (output_cores): Likewise.
|
||||||
|
* nat/linux-osdata.c (linux_xfer_osdata_cpus): Likewise.
|
||||||
|
(linux_xfer_osdata_modules): Likewise.
|
||||||
|
* remote.c (register_remote_support_xml): Likewise.
|
||||||
|
* sparc64-tdep.c (adi_is_addr_mapped): Likewise.
|
||||||
|
* xml-syscall.c (syscall_create_syscall_desc): Likewise.
|
||||||
|
|
||||||
2019-11-06 Tom Tromey <tom@tromey.com>
|
2019-11-06 Tom Tromey <tom@tromey.com>
|
||||||
|
|
||||||
* tui/tui-interp.c: Don't include readline.h.
|
* tui/tui-interp.c: Don't include readline.h.
|
||||||
|
|
|
@ -1,3 +1,13 @@
|
||||||
|
2019-11-06 Christian Biesinger <cbiesinger@google.com>
|
||||||
|
|
||||||
|
* linux-tdep.c (linux_info_proc): Use strtok_r instead of strtok.
|
||||||
|
* mi/mi-main.c (output_cores): Likewise.
|
||||||
|
* nat/linux-osdata.c (linux_xfer_osdata_cpus): Likewise.
|
||||||
|
(linux_xfer_osdata_modules): Likewise.
|
||||||
|
* remote.c (register_remote_support_xml): Likewise.
|
||||||
|
* sparc64-tdep.c (adi_is_addr_mapped): Likewise.
|
||||||
|
* xml-syscall.c (syscall_create_syscall_desc): Likewise.
|
||||||
|
|
||||||
2019-11-01 Christian Biesinger <cbiesinger@google.com>
|
2019-11-01 Christian Biesinger <cbiesinger@google.com>
|
||||||
|
|
||||||
* configure: Regenerate.
|
* configure: Regenerate.
|
||||||
|
|
|
@ -912,9 +912,11 @@ x86_linux_process_qsupported (char **features, int count)
|
||||||
if (startswith (feature, "xmlRegisters="))
|
if (startswith (feature, "xmlRegisters="))
|
||||||
{
|
{
|
||||||
char *copy = xstrdup (feature + 13);
|
char *copy = xstrdup (feature + 13);
|
||||||
char *p;
|
|
||||||
|
|
||||||
for (p = strtok (copy, ","); p != NULL; p = strtok (NULL, ","))
|
char *saveptr;
|
||||||
|
for (char *p = strtok_r (copy, ",", &saveptr);
|
||||||
|
p != NULL;
|
||||||
|
p = strtok_r (NULL, ",", &saveptr))
|
||||||
{
|
{
|
||||||
if (strcmp (p, "i386") == 0)
|
if (strcmp (p, "i386") == 0)
|
||||||
{
|
{
|
||||||
|
|
|
@ -2268,9 +2268,10 @@ handle_query (char *own_buf, int packet_len, int *new_packet_len_p)
|
||||||
|
|
||||||
/* Two passes, to avoid nested strtok calls in
|
/* Two passes, to avoid nested strtok calls in
|
||||||
target_process_qsupported. */
|
target_process_qsupported. */
|
||||||
for (p = strtok (p + 1, ";");
|
char *saveptr;
|
||||||
|
for (p = strtok_r (p + 1, ";", &saveptr);
|
||||||
p != NULL;
|
p != NULL;
|
||||||
p = strtok (NULL, ";"))
|
p = strtok_r (NULL, ";", &saveptr))
|
||||||
{
|
{
|
||||||
count++;
|
count++;
|
||||||
qsupported = XRESIZEVEC (char *, qsupported, count);
|
qsupported = XRESIZEVEC (char *, qsupported, count);
|
||||||
|
@ -3633,12 +3634,11 @@ captured_main (int argc, char *argv[])
|
||||||
}
|
}
|
||||||
else if (startswith (*next_arg, "--disable-packet="))
|
else if (startswith (*next_arg, "--disable-packet="))
|
||||||
{
|
{
|
||||||
char *packets, *tok;
|
char *packets = *next_arg += sizeof ("--disable-packet=") - 1;
|
||||||
|
char *saveptr;
|
||||||
packets = *next_arg += sizeof ("--disable-packet=") - 1;
|
for (char *tok = strtok_r (packets, ",", &saveptr);
|
||||||
for (tok = strtok (packets, ",");
|
|
||||||
tok != NULL;
|
tok != NULL;
|
||||||
tok = strtok (NULL, ","))
|
tok = strtok_r (NULL, ",", &saveptr))
|
||||||
{
|
{
|
||||||
if (strcmp ("vCont", tok) == 0)
|
if (strcmp ("vCont", tok) == 0)
|
||||||
disable_packet_vCont = true;
|
disable_packet_vCont = true;
|
||||||
|
|
|
@ -839,9 +839,10 @@ linux_info_proc (struct gdbarch *gdbarch, const char *args,
|
||||||
" Size", " Offset", "objfile");
|
" Size", " Offset", "objfile");
|
||||||
}
|
}
|
||||||
|
|
||||||
for (line = strtok (map.get (), "\n");
|
char *saveptr;
|
||||||
|
for (line = strtok_r (map.get (), "\n", &saveptr);
|
||||||
line;
|
line;
|
||||||
line = strtok (NULL, "\n"))
|
line = strtok_r (NULL, "\n", &saveptr))
|
||||||
{
|
{
|
||||||
ULONGEST addr, endaddr, offset, inode;
|
ULONGEST addr, endaddr, offset, inode;
|
||||||
const char *permissions, *device, *mapping_filename;
|
const char *permissions, *device, *mapping_filename;
|
||||||
|
|
|
@ -696,8 +696,9 @@ output_cores (struct ui_out *uiout, const char *field_name, const char *xcores)
|
||||||
ui_out_emit_list list_emitter (uiout, field_name);
|
ui_out_emit_list list_emitter (uiout, field_name);
|
||||||
auto cores = make_unique_xstrdup (xcores);
|
auto cores = make_unique_xstrdup (xcores);
|
||||||
char *p = cores.get ();
|
char *p = cores.get ();
|
||||||
|
char *saveptr;
|
||||||
|
|
||||||
for (p = strtok (p, ","); p; p = strtok (NULL, ","))
|
for (p = strtok_r (p, ",", &saveptr); p; p = strtok_r (NULL, ",", &saveptr))
|
||||||
uiout->field_string (NULL, p);
|
uiout->field_string (NULL, p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -566,11 +566,12 @@ linux_xfer_osdata_cpus (struct buffer *buffer)
|
||||||
char *key, *value;
|
char *key, *value;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
||||||
key = strtok (buf, ":");
|
char *saveptr;
|
||||||
|
key = strtok_r (buf, ":", &saveptr);
|
||||||
if (key == NULL)
|
if (key == NULL)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
value = strtok (NULL, ":");
|
value = strtok_r (NULL, ":", &saveptr);
|
||||||
if (value == NULL)
|
if (value == NULL)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -1216,36 +1217,36 @@ linux_xfer_osdata_modules (struct buffer *buffer)
|
||||||
{
|
{
|
||||||
if (fgets (buf, sizeof (buf), fp.get ()))
|
if (fgets (buf, sizeof (buf), fp.get ()))
|
||||||
{
|
{
|
||||||
char *name, *dependencies, *status, *tmp;
|
char *name, *dependencies, *status, *tmp, *saveptr;
|
||||||
unsigned int size;
|
unsigned int size;
|
||||||
unsigned long long address;
|
unsigned long long address;
|
||||||
int uses;
|
int uses;
|
||||||
|
|
||||||
name = strtok (buf, " ");
|
name = strtok_r (buf, " ", &saveptr);
|
||||||
if (name == NULL)
|
if (name == NULL)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
tmp = strtok (NULL, " ");
|
tmp = strtok_r (NULL, " ", &saveptr);
|
||||||
if (tmp == NULL)
|
if (tmp == NULL)
|
||||||
continue;
|
continue;
|
||||||
if (sscanf (tmp, "%u", &size) != 1)
|
if (sscanf (tmp, "%u", &size) != 1)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
tmp = strtok (NULL, " ");
|
tmp = strtok_r (NULL, " ", &saveptr);
|
||||||
if (tmp == NULL)
|
if (tmp == NULL)
|
||||||
continue;
|
continue;
|
||||||
if (sscanf (tmp, "%d", &uses) != 1)
|
if (sscanf (tmp, "%d", &uses) != 1)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
dependencies = strtok (NULL, " ");
|
dependencies = strtok_r (NULL, " ", &saveptr);
|
||||||
if (dependencies == NULL)
|
if (dependencies == NULL)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
status = strtok (NULL, " ");
|
status = strtok_r (NULL, " ", &saveptr);
|
||||||
if (status == NULL)
|
if (status == NULL)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
tmp = strtok (NULL, "\n");
|
tmp = strtok_r (NULL, "\n", &saveptr);
|
||||||
if (tmp == NULL)
|
if (tmp == NULL)
|
||||||
continue;
|
continue;
|
||||||
if (sscanf (tmp, "%llx", &address) != 1)
|
if (sscanf (tmp, "%llx", &address) != 1)
|
||||||
|
|
|
@ -5169,7 +5169,8 @@ register_remote_support_xml (const char *xml)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
char *copy = xstrdup (remote_support_xml + 13);
|
char *copy = xstrdup (remote_support_xml + 13);
|
||||||
char *p = strtok (copy, ",");
|
char *saveptr;
|
||||||
|
char *p = strtok_r (copy, ",", &saveptr);
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
|
@ -5180,7 +5181,7 @@ register_remote_support_xml (const char *xml)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
while ((p = strtok (NULL, ",")) != NULL);
|
while ((p = strtok_r (NULL, ",", &saveptr)) != NULL);
|
||||||
xfree (copy);
|
xfree (copy);
|
||||||
|
|
||||||
remote_support_xml = reconcat (remote_support_xml,
|
remote_support_xml = reconcat (remote_support_xml,
|
||||||
|
|
|
@ -316,8 +316,10 @@ adi_is_addr_mapped (CORE_ADDR vaddr, size_t cnt)
|
||||||
if (data)
|
if (data)
|
||||||
{
|
{
|
||||||
adi_stat_t adi_stat = get_adi_info (pid);
|
adi_stat_t adi_stat = get_adi_info (pid);
|
||||||
char *line;
|
char *saveptr;
|
||||||
for (line = strtok (data.get (), "\n"); line; line = strtok (NULL, "\n"))
|
for (char *line = strtok_r (data.get (), "\n", &saveptr);
|
||||||
|
line;
|
||||||
|
line = strtok_r (NULL, "\n", &saveptr))
|
||||||
{
|
{
|
||||||
ULONGEST addr, endaddr;
|
ULONGEST addr, endaddr;
|
||||||
|
|
||||||
|
|
|
@ -221,9 +221,10 @@ syscall_create_syscall_desc (struct syscalls_info *syscalls_info,
|
||||||
/* Add syscall to its groups. */
|
/* Add syscall to its groups. */
|
||||||
if (groups != NULL)
|
if (groups != NULL)
|
||||||
{
|
{
|
||||||
for (char *group = strtok (groups, ",");
|
char *saveptr;
|
||||||
|
for (char *group = strtok_r (groups, ",", &saveptr);
|
||||||
group != NULL;
|
group != NULL;
|
||||||
group = strtok (NULL, ","))
|
group = strtok_r (NULL, ",", &saveptr))
|
||||||
syscall_group_add_syscall (syscalls_info, sysdesc, group);
|
syscall_group_add_syscall (syscalls_info, sysdesc, group);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue