diff options
author | Simon Marchi <simon.marchi@polymtl.ca> | 2017-10-27 22:23:33 -0400 |
---|---|---|
committer | Simon Marchi <simon.marchi@ericsson.com> | 2017-10-27 22:23:48 -0400 |
commit | 5a9dcda14c240eccee5c1de53cf4ae936230ed0c (patch) | |
tree | 15a969c3f9ea45ec6466d81247e9580370ecb8be /gdb/ChangeLog | |
parent | 45461e0dcaf4193b5b4478031f515ffb7911ad85 (diff) | |
download | gdb-5a9dcda14c240eccee5c1de53cf4ae936230ed0c.zip gdb-5a9dcda14c240eccee5c1de53cf4ae936230ed0c.tar.gz gdb-5a9dcda14c240eccee5c1de53cf4ae936230ed0c.tar.bz2 |
C++ify xml-syscall.c
This patch C++ifies the structures in xml-syscall.c, by using
std::vector instead of VEC, and std::string instead of char*.
Using a unique_ptr in syscall_parse_xml allows to remove a cleanup.
Something that seems strange with the existing code, if you look at
syscalls_info_free_syscalls_desc and
syscalls_info_free_syscall_group_desc, they free the structure elements
(the strings and vectors), but they don't free the syscall_desc and
syscall_group_desc structure themselves. I don't see anything freeing
those currently. Any idea why? According to the comment above
syscalls_info_free_syscall_group_desc, it kinda looks like it's on
purpose. With this patch, those structures are deleted when the vector
that contains them gets deleted.
The only time I'm aware a syscalls_info structure gets deleted is in the
case the data directory changes during runtime, in init_syscalls_info.
If tried that use case (including under valgrind):
(gdb) catch syscall
(gdb) set data-directory another-data-directory
(gdb) catch syscall
I confirmed that the syscalls_info structure got deleted and recreated,
and everything seemed fine.
Regtested on the buildbot.
gdb/ChangeLog:
* xml-syscall.c (struct syscall_desc): Add constructor.
<name>: Change type to std::string.
(syscall_desc_up): New typedef.
(syscall_desc_p): Remove typeder.
(DEF_VEC_P(syscall_desc_p)): Remove.
(struct syscall_group_desc): Add constructor.
<name>: Change type to std::string.
<syscalls>: Change type to std::vector.
(syscall_group_desc_up): New typedef.
(syscall_group_desc_p): Remove typedef.
(DEF_VEC_P(syscall_group_desc_p)): Remove.
(struct syscalls_info) <syscalls>: Change type to std::vector of
unique_ptr.
<groups>: Likewise.
<my_gdb_datadir>: Change type to std::string.
(syscalls_info_up): New typedef.
(allocate_syscalls_info): Remove.
(syscalls_info_free_syscalls_desc): Remove.
(syscalls_info_free_syscall_group_desc): Remove.
(free_syscalls_info): Remove.
(make_cleanup_free_syscalls_info): Remove.
(syscall_group_create_syscall_group_desc): Adjust.
(syscall_group_add_syscall): Adjust.
(syscall_create_syscall_desc): Adjust.
(syscall_parse_xml): Adjust, use unique_ptr instead of cleanup.
(init_syscalls_info): Adjust.
(syscall_group_get_group_by_name): Adjust.
(xml_get_syscall_number): Adjust.
(xml_get_syscall_name): Adjust.
(xml_list_of_syscalls): Adjust.
(xml_list_syscalls_by_group): Adjust.
(xml_list_of_groups): Adjust.
Diffstat (limited to 'gdb/ChangeLog')
-rw-r--r-- | gdb/ChangeLog | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 9c4e409..51e3422 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,38 @@ +2017-10-27 Simon Marchi <simon.marchi@polymtl.ca> + + * xml-syscall.c (struct syscall_desc): Add constructor. + <name>: Change type to std::string. + (syscall_desc_up): New typedef. + (syscall_desc_p): Remove typeder. + (DEF_VEC_P(syscall_desc_p)): Remove. + (struct syscall_group_desc): Add constructor. + <name>: Change type to std::string. + <syscalls>: Change type to std::vector. + (syscall_group_desc_up): New typedef. + (syscall_group_desc_p): Remove typedef. + (DEF_VEC_P(syscall_group_desc_p)): Remove. + (struct syscalls_info) <syscalls>: Change type to std::vector of + unique_ptr. + <groups>: Likewise. + <my_gdb_datadir>: Change type to std::string. + (syscalls_info_up): New typedef. + (allocate_syscalls_info): Remove. + (syscalls_info_free_syscalls_desc): Remove. + (syscalls_info_free_syscall_group_desc): Remove. + (free_syscalls_info): Remove. + (make_cleanup_free_syscalls_info): Remove. + (syscall_group_create_syscall_group_desc): Adjust. + (syscall_group_add_syscall): Adjust. + (syscall_create_syscall_desc): Adjust. + (syscall_parse_xml): Adjust, use unique_ptr instead of cleanup. + (init_syscalls_info): Adjust. + (syscall_group_get_group_by_name): Adjust. + (xml_get_syscall_number): Adjust. + (xml_get_syscall_name): Adjust. + (xml_list_of_syscalls): Adjust. + (xml_list_syscalls_by_group): Adjust. + (xml_list_of_groups): Adjust. + 2017-10-27 Simon Marchi <simon.marchi@ericsson.com> * probe.h: Don't include gdb_vecs.h. |