diff options
author | Pedro Franco de Carvalho <pedromfc@linux.vnet.ibm.com> | 2018-05-22 11:09:06 -0300 |
---|---|---|
committer | Pedro Franco de Carvalho <pedromfc@linux.vnet.ibm.com> | 2018-05-22 11:52:03 -0300 |
commit | 0ec848ad25bb77edd9c9c3c097c3dd5b8874a6c0 (patch) | |
tree | 549c18bd9141c5917efe0b009c2e0255cdd8de8a /gdb/ppc-linux-tdep.c | |
parent | 0fb2aaa15e04238644471f7d89be3667784b19c0 (diff) | |
download | gdb-0ec848ad25bb77edd9c9c3c097c3dd5b8874a6c0.zip gdb-0ec848ad25bb77edd9c9c3c097c3dd5b8874a6c0.tar.gz gdb-0ec848ad25bb77edd9c9c3c097c3dd5b8874a6c0.tar.bz2 |
[PowerPC] Recognize isa205 in linux core files
Currently the ppc linux core file target doesn't return target
descriptions with the lager FPSCR introduced in isa205.
This patch changes the core file target so that the auxv is read from
the core file to determine the size of FPSCR, so that the appropriate
target description is selected.
gdb/ChangeLog:
2018-05-22 Pedro Franco de Carvalho <pedromfc@linux.vnet.ibm.com>
* arch/ppc-linux-common.c (ppc_linux_has_isa205): Change the
parameter type to CORE_ADDR.
* arch/ppc-linux-common.h (ppc_linux_has_isa205): Change the
parameter type in declaration to CORE_ADDR.
* ppc-linux-tdep.c (ppc_linux_core_read_description): Call
target_auxv_search to get AT_HWCAP and use the result to get the
target description.
* ppc-linux-nat.c (ppc_linux_get_hwcap): Change the return type
to CORE_ADDR. Remove the cast of the return value to unsigned
long. Fix error predicate of target_auxv_search.
(ppc_linux_nat_target::read_description): Change the type of the
hwcap variable to CORE_ADDR.
gdb/testsuite/ChangeLog:
2018-05-22 Pedro Franco de Carvalho <pedromfc@linux.vnet.ibm.com>
* gdb.arch/powerpc-fpscr-gcore.exp: New file.
Diffstat (limited to 'gdb/ppc-linux-tdep.c')
-rw-r--r-- | gdb/ppc-linux-tdep.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/gdb/ppc-linux-tdep.c b/gdb/ppc-linux-tdep.c index 293353a..5716f82 100644 --- a/gdb/ppc-linux-tdep.c +++ b/gdb/ppc-linux-tdep.c @@ -1058,6 +1058,13 @@ ppc_linux_core_read_description (struct gdbarch *gdbarch, if (vsx) features.vsx = true; + CORE_ADDR hwcap; + + if (target_auxv_search (target, AT_HWCAP, &hwcap) != 1) + hwcap = 0; + + features.isa205 = ppc_linux_has_isa205 (hwcap); + return ppc_linux_match_description (features); } |