aboutsummaryrefslogtreecommitdiff
path: root/gdb/xml-syscall.c
diff options
context:
space:
mode:
authorSimon Marchi <simon.marchi@polymtl.ca>2018-01-07 09:29:52 -0500
committerSimon Marchi <simon.marchi@ericsson.com>2018-01-07 09:38:16 -0500
commit4d0fdd9b357aff1fea3ef3def55d12464a41bf5b (patch)
tree3d31052e1794ddbe5942daabe65d3fc1d900cf76 /gdb/xml-syscall.c
parentf979c73fd0be9a8a683f79af40c7b939c2a65d9f (diff)
downloadgdb-4d0fdd9b357aff1fea3ef3def55d12464a41bf5b.zip
gdb-4d0fdd9b357aff1fea3ef3def55d12464a41bf5b.tar.gz
gdb-4d0fdd9b357aff1fea3ef3def55d12464a41bf5b.tar.bz2
Replace VEC(gdb_xml_value_s) with std::vector
This patch replaces VEC(gdb_xml_value_s), which is passed to XML visitors, with an std::vector. In order to be able to remove the cleanup in gdb_xml_parser::start_element, the gdb_xml_parser structure is made to own the value with a gdb::unique_xmalloc_ptr. This patch has been tested on the buildbot. gdb/ChangeLog: * xml-support.h (struct gdb_xml_value): Add constructor. <value>: Change type to unique_xmalloc_ptr. (gdb_xml_value_s): Remove typedef. (DEF_VEC_O (gdb_xml_value_s)): Remove. (gdb_xml_element_start_handler): Change parameter type to std::vector. (xml_find_attribute): Likewise. * xml-support.c (xml_find_attribute): Change parameter type to std::vector and adjust. (gdb_xml_values_cleanup): Remove. (gdb_xml_parser::start_element): Adjust to std::vector. (xinclude_start_include): Change paraeter type to std::vector and adjust. * btrace.c (check_xml_btrace_version): Likewise. (parse_xml_btrace_block): Likewise. (parse_xml_btrace_pt_config_cpu): Likewise. (parse_xml_btrace_pt): Likewise. (parse_xml_btrace_conf_bts): Likewise. (parse_xml_btrace_conf_pt): Likewise. * memory-map.c (memory_map_start_memory): Likewise. (memory_map_start_property): Likewise. * osdata.c (osdata_start_osdata): Likewise. (osdata_start_item): Likewise. (osdata_start_column): Likewise. * remote.c (start_thread): Likewise. * solib-aix.c (library_list_start_library): Likewise. (library_list_start_list): Likewise. * solib-svr4.c (library_list_start_library): Likewise. (svr4_library_list_start_list): Likewise. * solib-target.c (library_list_start_segment): Likewise. (library_list_start_section): Likewise. (library_list_start_library): Likewise. (library_list_start_list): Likewise. * tracepoint.c (traceframe_info_start_memory): Likewise. (traceframe_info_start_tvar): Likewise. * xml-syscall.c (syscall_start_syscall): Likewise. * xml-tdesc.c (tdesc_start_target): Likewise. (tdesc_start_feature): Likewise. (tdesc_start_reg): Likewise. (tdesc_start_union): Likewise. (tdesc_start_struct): Likewise. (tdesc_start_flags): Likewise. (tdesc_start_enum): Likewise. (tdesc_start_field): Likewise. (tdesc_start_enum_value): Likewise. (tdesc_start_vector): Likewise.
Diffstat (limited to 'gdb/xml-syscall.c')
-rw-r--r--gdb/xml-syscall.c23
1 files changed, 10 insertions, 13 deletions
diff --git a/gdb/xml-syscall.c b/gdb/xml-syscall.c
index a53b76f..0ba6d44 100644
--- a/gdb/xml-syscall.c
+++ b/gdb/xml-syscall.c
@@ -227,29 +227,26 @@ syscall_create_syscall_desc (struct syscalls_info *syscalls_info,
static void
syscall_start_syscall (struct gdb_xml_parser *parser,
const struct gdb_xml_element *element,
- void *user_data, VEC(gdb_xml_value_s) *attributes)
+ void *user_data,
+ std::vector<gdb_xml_value> &attributes)
{
struct syscall_parsing_data *data = (struct syscall_parsing_data *) user_data;
- struct gdb_xml_value *attrs = VEC_address (gdb_xml_value_s, attributes);
- int len, i;
/* syscall info. */
char *name = NULL;
int number = 0;
char *groups = NULL;
- len = VEC_length (gdb_xml_value_s, attributes);
-
- for (i = 0; i < len; i++)
+ for (const gdb_xml_value &attr : attributes)
{
- if (strcmp (attrs[i].name, "name") == 0)
- name = (char *) attrs[i].value;
- else if (strcmp (attrs[i].name, "number") == 0)
- number = * (ULONGEST *) attrs[i].value;
- else if (strcmp (attrs[i].name, "groups") == 0)
- groups = (char *) attrs[i].value;
+ if (strcmp (attr.name, "name") == 0)
+ name = (char *) attr.value.get ();
+ else if (strcmp (attr.name, "number") == 0)
+ number = * (ULONGEST *) attr.value.get ();
+ else if (strcmp (attr.name, "groups") == 0)
+ groups = (char *) attr.value.get ();
else
internal_error (__FILE__, __LINE__,
- _("Unknown attribute name '%s'."), attrs[i].name);
+ _("Unknown attribute name '%s'."), attr.name);
}
gdb_assert (name);