From: Simon Marchi Date: Fri, 7 May 2021 20:28:56 +0000 (-0400) Subject: gdb: remove target description macros X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c2962e6ab47869f13d4a72bac0b25a7e86a7fb94;p=binutils-gdb.git gdb: remove target description macros In my opinion, the target_desc_fetched, current_target_desc and target_description_filename macros in target-descriptions.c are not very useful. I don't think it's useful to hide that they operate on the current inferior, as everything currently works under the assumption that the various tdesc commands operate on the current inferior, and I don't see that changing in the foreseeable future. This change also avoids having multiple unnecessary calls to current_inferior and get_tdesc_info per function. gdb/ChangeLog: * target-descriptions.c (struct target_desc_info) : Adjust doc. (target_desc_fetched): Remove. (current_target_desc): Remove. (target_description_filename): Remove. (target_find_description): Adjust. (target_clear_description): Adjust. (target_current_description): Adjust. (set_tdesc_filename_cmd): Adjust. (show_tdesc_filename_cmd): Adjust. (unset_tdesc_filename_cmd): Adjust. (maint_print_c_tdesc_cmd): Adjust. (maint_print_xml_tdesc_cmd): Adjust. Change-Id: Ibfb581490e949c16d59924e2cac633ede5c26c5b --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 9c7fdc3abcf..5eff687b319 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,19 @@ +2021-05-07 Simon Marchi + + * target-descriptions.c (struct target_desc_info) : + Adjust doc. + (target_desc_fetched): Remove. + (current_target_desc): Remove. + (target_description_filename): Remove. + (target_find_description): Adjust. + (target_clear_description): Adjust. + (target_current_description): Adjust. + (set_tdesc_filename_cmd): Adjust. + (show_tdesc_filename_cmd): Adjust. + (unset_tdesc_filename_cmd): Adjust. + (maint_print_c_tdesc_cmd): Adjust. + (maint_print_xml_tdesc_cmd): Adjust. + 2021-05-07 Andrew Burgess * infcmd.c (notice_new_inferior): Change parameter type. diff --git a/gdb/target-descriptions.c b/gdb/target-descriptions.c index c0e798a3530..7bd05231cce 100644 --- a/gdb/target-descriptions.c +++ b/gdb/target-descriptions.c @@ -450,7 +450,7 @@ struct target_desc_info /* The description fetched from the target, or NULL if the target did not supply any description. Only valid when - target_desc_fetched is set. Only the description initialization + FETCHED is set. Only the description initialization code should access this; normally, the description should be accessed through the gdbarch object. */ @@ -511,15 +511,6 @@ target_desc_info_free (struct target_desc_info *tdesc_info) } } -/* Convenience helper macros. */ - -#define target_desc_fetched \ - get_tdesc_info (current_inferior ())->fetched -#define current_target_desc \ - get_tdesc_info (current_inferior ())->tdesc -#define target_description_filename \ - get_tdesc_info (current_inferior ())->filename - /* The string manipulated by the "set tdesc filename ..." command. */ static char *tdesc_filename_cmd_string; @@ -530,11 +521,13 @@ static char *tdesc_filename_cmd_string; void target_find_description (void) { + target_desc_info *tdesc_info = get_tdesc_info (current_inferior ()); + /* If we've already fetched a description from the target, don't do it again. This allows a target to fetch the description early, during its to_open or to_create_inferior, if it needs extra information about the target to initialize. */ - if (target_desc_fetched) + if (tdesc_info->fetched) return; /* The current architecture should not have any target description @@ -544,31 +537,29 @@ target_find_description (void) /* First try to fetch an XML description from the user-specified file. */ - current_target_desc = NULL; - if (target_description_filename != NULL - && *target_description_filename != '\0') - current_target_desc - = file_read_description_xml (target_description_filename); + tdesc_info->tdesc = nullptr; + if (tdesc_info->filename != nullptr && *tdesc_info->filename != '\0') + tdesc_info->tdesc = file_read_description_xml (tdesc_info->filename); /* Next try to read the description from the current target using target objects. */ - if (current_target_desc == NULL) - current_target_desc = target_read_description_xml + if (tdesc_info->tdesc == nullptr) + tdesc_info->tdesc = target_read_description_xml (current_inferior ()->top_target ()); /* If that failed try a target-specific hook. */ - if (current_target_desc == NULL) - current_target_desc = target_read_description + if (tdesc_info->tdesc == nullptr) + tdesc_info->tdesc = target_read_description (current_inferior ()->top_target ()); /* If a non-NULL description was returned, then update the current architecture. */ - if (current_target_desc) + if (tdesc_info->tdesc != nullptr) { struct gdbarch_info info; gdbarch_info_init (&info); - info.target_desc = current_target_desc; + info.target_desc = tdesc_info->tdesc; if (!gdbarch_update_p (info)) warning (_("Architecture rejected target-supplied description")); else @@ -577,7 +568,7 @@ target_find_description (void) data = ((struct tdesc_arch_data *) gdbarch_data (target_gdbarch (), tdesc_data)); - if (tdesc_has_registers (current_target_desc) + if (tdesc_has_registers (tdesc_info->tdesc) && data->arch_regs.empty ()) warning (_("Target-supplied registers are not supported " "by the current architecture")); @@ -586,7 +577,7 @@ target_find_description (void) /* Now that we know this description is usable, record that we fetched it. */ - target_desc_fetched = 1; + tdesc_info->fetched = 1; } /* Discard any description fetched from the current target, and switch @@ -595,14 +586,15 @@ target_find_description (void) void target_clear_description (void) { - struct gdbarch_info info; + target_desc_info *tdesc_info = get_tdesc_info (current_inferior ()); - if (!target_desc_fetched) + if (!tdesc_info->fetched) return; - target_desc_fetched = 0; - current_target_desc = NULL; + tdesc_info->fetched = 0; + tdesc_info->tdesc = nullptr; + gdbarch_info info; gdbarch_info_init (&info); if (!gdbarch_update_p (info)) internal_error (__FILE__, __LINE__, @@ -616,8 +608,10 @@ target_clear_description (void) const struct target_desc * target_current_description (void) { - if (target_desc_fetched) - return current_target_desc; + target_desc_info *tdesc_info = get_tdesc_info (current_inferior ()); + + if (tdesc_info->fetched) + return tdesc_info->tdesc; return NULL; } @@ -1298,8 +1292,10 @@ static void set_tdesc_filename_cmd (const char *args, int from_tty, struct cmd_list_element *c) { - xfree (target_description_filename); - target_description_filename = xstrdup (tdesc_filename_cmd_string); + target_desc_info *tdesc_info = get_tdesc_info (current_inferior ()); + + xfree (tdesc_info->filename); + tdesc_info->filename = xstrdup (tdesc_filename_cmd_string); target_clear_description (); target_find_description (); @@ -1310,7 +1306,7 @@ show_tdesc_filename_cmd (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value) { - value = target_description_filename; + value = get_tdesc_info (current_inferior ())->filename; if (value != NULL && *value != '\0') printf_filtered (_("The target description will be read from \"%s\".\n"), @@ -1323,8 +1319,10 @@ show_tdesc_filename_cmd (struct ui_file *file, int from_tty, static void unset_tdesc_filename_cmd (const char *args, int from_tty) { - xfree (target_description_filename); - target_description_filename = NULL; + target_desc_info *tdesc_info = get_tdesc_info (current_inferior ()); + + xfree (tdesc_info->filename); + tdesc_info->filename = nullptr; target_clear_description (); target_find_description (); } @@ -1778,8 +1776,9 @@ maint_print_c_tdesc_cmd (const char *args, int from_tty) architecture's. This lets a GDB for one architecture generate C for another architecture's description, even though the gdbarch initialization code will reject the new description. */ - tdesc = current_target_desc; - filename = target_description_filename; + target_desc_info *tdesc_info = get_tdesc_info (current_inferior ()); + tdesc = tdesc_info->tdesc; + filename = tdesc_info->filename; } else { @@ -1850,7 +1849,7 @@ maint_print_xml_tdesc_cmd (const char *args, int from_tty) architecture's. This lets a GDB for one architecture generate XML for another architecture's description, even though the gdbarch initialization code will reject the new description. */ - tdesc = current_target_desc; + tdesc = get_tdesc_info (current_inferior ())->tdesc; } else {