Do not record a rejected target description
authorTom Tromey <tromey@adacore.com>
Fri, 6 Jan 2023 16:30:40 +0000 (09:30 -0700)
committerTom Tromey <tromey@adacore.com>
Wed, 15 Feb 2023 15:59:53 +0000 (08:59 -0700)
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

index b08a185dfa211cb0a6dac32307aae36098163613..c62d4368d6bc6ef767d86b036f837fd188645851 100644 (file)
@@ -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;