aboutsummaryrefslogtreecommitdiff
path: root/gdb/solib-target.c
diff options
context:
space:
mode:
authorSimon Marchi <simon.marchi@efficios.com>2023-10-19 10:55:38 -0400
committerSimon Marchi <simon.marchi@efficios.com>2023-10-19 10:57:51 -0400
commit8971d2788e79db2ffc1205ed36935483eedf2fab (patch)
treeff5dead00b54316d0786af5c6558c41f6407c143 /gdb/solib-target.c
parent98107b0b17acd9d2c28829cbe93a75b72677d220 (diff)
downloadbinutils-8971d2788e79db2ffc1205ed36935483eedf2fab.zip
binutils-8971d2788e79db2ffc1205ed36935483eedf2fab.tar.gz
binutils-8971d2788e79db2ffc1205ed36935483eedf2fab.tar.bz2
gdb: link so_list using intrusive_list
Replace the hand-made linked list implementation with intrusive_list, simplying management of list items. Change-Id: I7f55fd88325bb197cc655c9be5a2ec966d8cc48d Approved-By: Pedro Alves <pedro@palves.net> Reviewed-By: Reviewed-By: Lancelot Six <lancelot.six@amd.com>
Diffstat (limited to 'gdb/solib-target.c')
-rw-r--r--gdb/solib-target.c19
1 files changed, 5 insertions, 14 deletions
diff --git a/gdb/solib-target.c b/gdb/solib-target.c
index 0881d7e..2e1c74f 100644
--- a/gdb/solib-target.c
+++ b/gdb/solib-target.c
@@ -227,25 +227,22 @@ solib_target_parse_libraries (const char *library)
}
#endif
-static struct so_list *
+static intrusive_list<so_list>
solib_target_current_sos (void)
{
- so_list *start = NULL, *last = NULL;
+ intrusive_list<so_list> sos;
/* Fetch the list of shared libraries. */
gdb::optional<gdb::char_vector> library_document
= target_read_stralloc (current_inferior ()->top_target (),
TARGET_OBJECT_LIBRARIES, NULL);
if (!library_document)
- return NULL;
+ return {};
/* Parse the list. */
std::vector<lm_info_target_up> library_list
= solib_target_parse_libraries (library_document->data ());
- if (library_list.empty ())
- return NULL;
-
/* Build a struct so_list for each entry on the list. */
for (lm_info_target_up &info : library_list)
{
@@ -257,16 +254,10 @@ solib_target_current_sos (void)
new_solib->lm_info = std::move (info);
/* Add it to the list. */
- if (!start)
- last = start = new_solib;
- else
- {
- last->next = new_solib;
- last = new_solib;
- }
+ sos.push_back (*new_solib);
}
- return start;
+ return sos;
}
static void