forked from Imagelibrary/binutils-gdb
Update the core file architecture if a target description is present
At the moment, the core target has its own gdbarch (m_core_gdbarch), and that gets set from the core_bfd on the core target's constructor. That gdbarch doesn't contain a target description because it is constructed before we get a chance to fetch the target description. As a result, some hooks that depend on the target description being set are not set, and that leads to problems. One of the examples is gdbarch_report_signal_info, which is used to show AArch64 tag violation information. Fix this by reading the target description before fetching the core file's gdbarch. gdb/ChangeLog: 2021-06-25 Luis Machado <luis.machado@linaro.org> * corelow.c (core_target::core_target) Update to read target description.
This commit is contained in:
@@ -1,3 +1,8 @@
|
|||||||
|
2021-06-25 Luis Machado <luis.machado@linaro.org>
|
||||||
|
|
||||||
|
* corelow.c (core_target::core_target) Update to read target
|
||||||
|
description.
|
||||||
|
|
||||||
2021-06-22 Simon Marchi <simon.marchi@polymtl.ca>
|
2021-06-22 Simon Marchi <simon.marchi@polymtl.ca>
|
||||||
|
|
||||||
* python/lib/gdb/__init__.py: Format.
|
* python/lib/gdb/__init__.py: Format.
|
||||||
|
|||||||
@@ -154,8 +154,23 @@ private: /* per-core data */
|
|||||||
|
|
||||||
core_target::core_target ()
|
core_target::core_target ()
|
||||||
{
|
{
|
||||||
|
/* Find a first arch based on the BFD. We need the initial gdbarch so
|
||||||
|
we can setup the hooks to find a target description. */
|
||||||
m_core_gdbarch = gdbarch_from_bfd (core_bfd);
|
m_core_gdbarch = gdbarch_from_bfd (core_bfd);
|
||||||
|
|
||||||
|
/* If the arch is able to read a target description from the core, it
|
||||||
|
could yield a more specific gdbarch. */
|
||||||
|
const struct target_desc *tdesc = read_description ();
|
||||||
|
|
||||||
|
if (tdesc != nullptr)
|
||||||
|
{
|
||||||
|
struct gdbarch_info info;
|
||||||
|
gdbarch_info_init (&info);
|
||||||
|
info.abfd = core_bfd;
|
||||||
|
info.target_desc = tdesc;
|
||||||
|
m_core_gdbarch = gdbarch_find_by_info (info);
|
||||||
|
}
|
||||||
|
|
||||||
if (!m_core_gdbarch
|
if (!m_core_gdbarch
|
||||||
|| !gdbarch_iterate_over_regset_sections_p (m_core_gdbarch))
|
|| !gdbarch_iterate_over_regset_sections_p (m_core_gdbarch))
|
||||||
error (_("\"%s\": Core file format not supported"),
|
error (_("\"%s\": Core file format not supported"),
|
||||||
|
|||||||
Reference in New Issue
Block a user