From 94d5c64878a75c573c98502497cd2118720e8bbe Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Mon, 2 Oct 2023 15:17:04 -0400 Subject: [PATCH] gdb: allocate so_list with new, deallocate with delete Initialize all fields in the class declaration, change allocations to use "new", change deallocations to use "delete". This is needed by a subsequent patches that use C++ stuff in so_list. Change-Id: I4b140d9f1ec9ff809554a056f76e3eb2b9e23222 Approved-By: Pedro Alves Reviewed-By: Reviewed-By: Lancelot Six --- gdb/solib-aix.c | 2 +- gdb/solib-darwin.c | 9 +++++---- gdb/solib-dsbt.c | 3 +-- gdb/solib-frv.c | 3 +-- gdb/solib-rocm.c | 6 ++---- gdb/solib-svr4.c | 13 ++++--------- gdb/solib-target.c | 4 ++-- gdb/solib.c | 2 +- gdb/solist.h | 18 +++++++++--------- 9 files changed, 26 insertions(+), 34 deletions(-) diff --git a/gdb/solib-aix.c b/gdb/solib-aix.c index cfcc04db151..515d9d62704 100644 --- a/gdb/solib-aix.c +++ b/gdb/solib-aix.c @@ -473,7 +473,7 @@ solib_aix_current_sos (void) to the main executable, not a shared library. */ for (ix = 1; ix < library_list->size (); ix++) { - struct so_list *new_solib = XCNEW (struct so_list); + so_list *new_solib = new so_list; std::string so_name; lm_info_aix &info = (*library_list)[ix]; diff --git a/gdb/solib-darwin.c b/gdb/solib-darwin.c index cd7e9c74ff4..0d58991b560 100644 --- a/gdb/solib-darwin.c +++ b/gdb/solib-darwin.c @@ -273,7 +273,7 @@ darwin_current_sos (void) break; /* Create and fill the new so_list element. */ - gdb::unique_xmalloc_ptr newobj (XCNEW (struct so_list)); + so_list *newobj = new so_list; lm_info_darwin *li = new lm_info_darwin; newobj->lm_info = li; @@ -284,10 +284,11 @@ darwin_current_sos (void) li->lm_addr = load_addr; if (head == NULL) - head = newobj.get (); + head = newobj; else - tail->next = newobj.get (); - tail = newobj.release (); + tail->next = newobj; + + tail = newobj; } return head; diff --git a/gdb/solib-dsbt.c b/gdb/solib-dsbt.c index c139d67b1c9..bd60c6ff83c 100644 --- a/gdb/solib-dsbt.c +++ b/gdb/solib-dsbt.c @@ -584,7 +584,6 @@ dsbt_current_sos (void) if (dsbt_index != 0) { struct int_elf32_dsbt_loadmap *loadmap; - struct so_list *sop; CORE_ADDR addr; loadmap = fetch_loadmap (map_addr); @@ -595,7 +594,7 @@ dsbt_current_sos (void) break; } - sop = XCNEW (struct so_list); + so_list *sop = new so_list; lm_info_dsbt *li = new lm_info_dsbt; sop->lm_info = li; li->map = loadmap; diff --git a/gdb/solib-frv.c b/gdb/solib-frv.c index c895eb20e43..f823aca57fa 100644 --- a/gdb/solib-frv.c +++ b/gdb/solib-frv.c @@ -363,7 +363,6 @@ frv_current_sos (void) if (got_addr != mgot) { struct int_elf32_fdpic_loadmap *loadmap; - struct so_list *sop; CORE_ADDR addr; /* Fetch the load map address. */ @@ -378,7 +377,7 @@ frv_current_sos (void) break; } - sop = XCNEW (struct so_list); + so_list *sop = new so_list; lm_info_frv *li = new lm_info_frv; sop->lm_info = li; li->map = loadmap; diff --git a/gdb/solib-rocm.c b/gdb/solib-rocm.c index 65dd1c06271..e46d272b333 100644 --- a/gdb/solib-rocm.c +++ b/gdb/solib-rocm.c @@ -217,9 +217,7 @@ rocm_solib_copy_list (const so_list *src) while (src != nullptr) { - struct so_list *newobj; - - newobj = XNEW (struct so_list); + so_list *newobj = new so_list; memcpy (newobj, src, sizeof (struct so_list)); lm_info_svr4 *src_li = (lm_info_svr4 *) src->lm_info; @@ -738,7 +736,7 @@ rocm_update_solib_list () if (status != AMD_DBGAPI_STATUS_SUCCESS) continue; - struct so_list *so = XCNEW (struct so_list); + so_list *so = new so_list; lm_info_svr4 *li = new lm_info_svr4; li->l_addr = l_addr; so->lm_info = li; diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c index b32848944ca..6fae926d5e6 100644 --- a/gdb/solib-svr4.c +++ b/gdb/solib-svr4.c @@ -1021,9 +1021,7 @@ svr4_copy_library_list (struct so_list *src) while (src != NULL) { - struct so_list *newobj; - - newobj = XNEW (struct so_list); + so_list *newobj = new so_list; memcpy (newobj, src, sizeof (struct so_list)); lm_info_svr4 *src_li = (lm_info_svr4 *) src->lm_info; @@ -1061,9 +1059,8 @@ library_list_start_library (struct gdb_xml_parser *parser, = (ULONGEST *) xml_find_attribute (attributes, "l_addr")->value.get (); ULONGEST *l_ldp = (ULONGEST *) xml_find_attribute (attributes, "l_ld")->value.get (); - struct so_list *new_elem; - new_elem = XCNEW (struct so_list); + so_list *new_elem = new so_list; lm_info_svr4 *li = new lm_info_svr4; new_elem->lm_info = li; li->lm_addr = *lmp; @@ -1246,12 +1243,10 @@ svr4_current_sos_via_xfer_libraries (struct svr4_library_list *list, static struct so_list * svr4_default_sos (svr4_info *info) { - struct so_list *newobj; - if (!info->debug_loader_offset_p) return NULL; - newobj = XCNEW (struct so_list); + so_list *newobj = new so_list; lm_info_svr4 *li = new lm_info_svr4; newobj->lm_info = li; @@ -1283,7 +1278,7 @@ svr4_read_so_list (svr4_info *info, CORE_ADDR lm, CORE_ADDR prev_lm, for (; lm != 0; prev_lm = lm, lm = next_lm) { - so_list_up newobj (XCNEW (struct so_list)); + so_list_up newobj (new so_list); lm_info_svr4 *li = lm_info_read (lm).release (); newobj->lm_info = li; diff --git a/gdb/solib-target.c b/gdb/solib-target.c index b8b6dd64401..d2459b5dc81 100644 --- a/gdb/solib-target.c +++ b/gdb/solib-target.c @@ -230,7 +230,7 @@ solib_target_parse_libraries (const char *library) static struct so_list * solib_target_current_sos (void) { - struct so_list *new_solib, *start = NULL, *last = NULL; + so_list *start = NULL, *last = NULL; /* Fetch the list of shared libraries. */ gdb::optional library_document @@ -249,7 +249,7 @@ solib_target_current_sos (void) /* Build a struct so_list for each entry on the list. */ for (auto &&info : library_list) { - new_solib = XCNEW (struct so_list); + so_list *new_solib = new so_list; strncpy (new_solib->so_name, info->name.c_str (), SO_NAME_MAX_PATH_SIZE - 1); new_solib->so_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0'; diff --git a/gdb/solib.c b/gdb/solib.c index 32f9aa7397c..816dacb3182 100644 --- a/gdb/solib.c +++ b/gdb/solib.c @@ -677,7 +677,7 @@ free_so (so_list &so) clear_so (so); ops->free_so (so); - xfree (&so); + delete &so; } diff --git a/gdb/solist.h b/gdb/solist.h index 5d648900d29..8b80ed4a6cc 100644 --- a/gdb/solist.h +++ b/gdb/solist.h @@ -37,23 +37,23 @@ struct so_list dynamic linker's tables in the inferior, and are initialized by current_sos. */ - struct so_list *next; /* next structure in linked list */ + struct so_list *next = nullptr; /* next structure in linked list */ /* A pointer to target specific link map information. Often this will be a copy of struct link_map from the user process, but it need not be; it can be any collection of data needed to traverse the dynamic linker's data structures. */ - lm_info_base *lm_info; + lm_info_base *lm_info = nullptr; /* Shared object file name, exactly as it appears in the inferior's link map. This may be a relative path, or something which needs to be looked up in LD_LIBRARY_PATH, etc. We use it to tell which entries in the inferior's dynamic linker's link map we've already loaded. */ - char so_original_name[SO_NAME_MAX_PATH_SIZE]; + char so_original_name[SO_NAME_MAX_PATH_SIZE] {}; /* Shared object file name, expanded to something GDB can open. */ - char so_name[SO_NAME_MAX_PATH_SIZE]; + char so_name[SO_NAME_MAX_PATH_SIZE] {}; /* The following fields of the structure are built from information gathered from the shared object file itself, and @@ -61,15 +61,15 @@ struct so_list current_sos must initialize these fields to 0. */ - bfd *abfd; - char symbols_loaded; /* flag: symbols read in yet? */ + bfd *abfd = nullptr; + char symbols_loaded = 0; /* flag: symbols read in yet? */ /* objfile with symbols for a loaded library. Target memory is read from ABFD. OBJFILE may be NULL either before symbols have been loaded, if the file cannot be found or after the command "nosharedlibrary". */ - struct objfile *objfile; + struct objfile *objfile = nullptr; - target_section_table *sections; + target_section_table *sections = nullptr; /* Record the range of addresses belonging to this shared library. There may not be just one (e.g. if two segments are relocated @@ -77,7 +77,7 @@ struct so_list the MI command "-file-list-shared-libraries". The latter has a format that supports outputting multiple segments once the related code supports them. */ - CORE_ADDR addr_low, addr_high; + CORE_ADDR addr_low = 0, addr_high = 0; }; struct target_so_ops -- 2.30.2