Fix register regression in DWARF evaluator
authorTom Tromey <tromey@adacore.com>
Thu, 12 Aug 2021 12:44:40 +0000 (06:44 -0600)
committerTom Tromey <tromey@adacore.com>
Mon, 16 Aug 2021 15:38:15 +0000 (09:38 -0600)
commit892a1e530379eeea924e938c8a588fbf3845f4fa
treefa438cc2b7d40aad90829e8fe1be138044b5bb50
parent1dd34eff4bb106e77b798e854f4b06cf1eb7d4b2
Fix register regression in DWARF evaluator

On an internal test case, using an arm-elf target, commit ba5bc3e5a92
("Make DWARF evaluator return a single struct value") causes a
regression.  (It doesn't happen for any of the other cross targets
that I test when importing upstream gdb.)

I don't know if there's an upstream gdb test case showing the same
problem... I can only really run native tests with dejagnu AFAIK.

The failure manifests like this:

    Breakpoint 1, file_1.export_1 (param_1=<error reading variable: Unable to access DWARF register number 64>, str=...) at [...]/file_1.adb:5

Whereas when it works it looks like:

    Breakpoint 1, file_1.export_1 (param_1=99.0, str=...) at [...]/file_1.adb:5

The difference is that the new code uses the passed-in gdbarch,
whereas the old code used the frame's gdbarch, when handling
DWARF_VALUE_REGISTER.

This patch restores the use of the frame's arch.
gdb/dwarf2/expr.c