mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-02 04:27:46 +08:00
Implement -list-thread-groups --available
* Makefile.in (XMLFILES): Add osdata.dtd. (SFILES): Add osdata.c. (COMMON_OBS): Add osdata.o. * linux-nat.c: Include pwd.h, sys/types.h, gdb_dirent.h and xml-support.h. (linux_nat_xfer_osdata): New function. (linux_xfer_partial): Handle TARGET_OBJECT_OSDATA. * osdata.c: New file. * osdata.h: New file. * remote.c (PACKET_qXfer_osdata): New packet enum. (remote_protocol_features): Add "qXfer:osdata:read". (remote_read_qxfer): Handle TARGET_OBJECT_OSDATA. (extended_remote_can_run): New. (init_extended_remote_ops): Set to_can_run to extended_remote_can_run. (_initialize_remote): Add packet config command for "qXfer:osdata:read". * xml-support.c (obstack_xml_printf): New function. * xml-support.h (obstack_xml_printf): Declare. * target.c (target_get_osdata): New function. * target.h (enum target_object): Add TARGET_OBJECT_OSDATA. (target_os_data): Declare. * features/osdata.dtd: New file. * mi/mi-main.c (mi_list_thread_groups): Handle the --available option.
This commit is contained in:
@ -997,6 +997,45 @@ xml_escape_text (const char *text)
|
||||
return result;
|
||||
}
|
||||
|
||||
void
|
||||
obstack_xml_printf (struct obstack *obstack, const char *format, ...)
|
||||
{
|
||||
va_list ap;
|
||||
const char *f;
|
||||
const char *prev;
|
||||
int percent = 0;
|
||||
|
||||
va_start (ap, format);
|
||||
|
||||
prev = format;
|
||||
for (f = format; *f; f++)
|
||||
{
|
||||
if (percent)
|
||||
{
|
||||
switch (*f)
|
||||
{
|
||||
case 's':
|
||||
{
|
||||
char *p;
|
||||
char *a = va_arg (ap, char *);
|
||||
obstack_grow (obstack, prev, f - prev - 1);
|
||||
p = xml_escape_text (a);
|
||||
obstack_grow_str (obstack, p);
|
||||
xfree (p);
|
||||
prev = f + 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
percent = 0;
|
||||
}
|
||||
else if (*f == '%')
|
||||
percent = 1;
|
||||
}
|
||||
|
||||
obstack_grow_str (obstack, prev);
|
||||
va_end (ap);
|
||||
}
|
||||
|
||||
void _initialize_xml_support (void);
|
||||
|
||||
void
|
||||
|
Reference in New Issue
Block a user