From 81b86eced24f905545b58aa6c27478104c364976 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Fri, 6 Jan 2023 09:30:40 -0700 Subject: [PATCH] Do not record a rejected target description When connecting to a certain target, gdb issues a warning about the target description: (gdb) target remote localhost:7947 Remote debugging using localhost:7947 warning: Architecture rejected target-supplied description If you then kill the inferior and change the exec-file, this will happen: (gdb) file bar Architecture of file not recognized. After this, debugging doesn't work very well. What happens here is that, despite the warning, target_find_description records the downloaded description in the target_desc_info. Then the "file" command ends up calling set_gdbarch_from_file, which uses that description. It seems to me that, because the architecture rejected the description, it should not be used. That is what this patch implements. --- gdb/target-descriptions.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gdb/target-descriptions.c b/gdb/target-descriptions.c index b08a185dfa2..c62d4368d6b 100644 --- a/gdb/target-descriptions.c +++ b/gdb/target-descriptions.c @@ -500,7 +500,10 @@ target_find_description (void) info.target_desc = tdesc_info->tdesc; if (!gdbarch_update_p (info)) - warning (_("Architecture rejected target-supplied description")); + { + warning (_("Architecture rejected target-supplied description")); + tdesc_info->tdesc = nullptr; + } else { struct tdesc_arch_data *data; -- 2.30.2