aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Marchi <simon.marchi@polymtl.ca>2021-05-07 16:28:56 -0400
committerSimon Marchi <simon.marchi@polymtl.ca>2021-05-07 16:28:56 -0400
commitc2962e6ab47869f13d4a72bac0b25a7e86a7fb94 (patch)
tree9cb48ce4207dcdd35f5d73c709d68a17de4a59bb
parent0d315c88a77a811fdfad0b9fdaa4d8b337cc0a39 (diff)
downloadgdb-c2962e6ab47869f13d4a72bac0b25a7e86a7fb94.zip
gdb-c2962e6ab47869f13d4a72bac0b25a7e86a7fb94.tar.gz
gdb-c2962e6ab47869f13d4a72bac0b25a7e86a7fb94.tar.bz2
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) <tdesc>: 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
-rw-r--r--gdb/ChangeLog16
-rw-r--r--gdb/target-descriptions.c75
2 files changed, 53 insertions, 38 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 9c7fdc3..5eff687 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,19 @@
+2021-05-07 Simon Marchi <simon.marchi@polymtl.ca>
+
+ * target-descriptions.c (struct target_desc_info) <tdesc>:
+ 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 <andrew.burgess@embecosm.com>
* infcmd.c (notice_new_inferior): Change parameter type.
diff --git a/gdb/target-descriptions.c b/gdb/target-descriptions.c
index c0e798a..7bd0523 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
{