[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.
This commit is contained in:
Pedro Franco de Carvalho 2018-05-22 11:09:06 -03:00
parent 0fb2aaa15e
commit 0ec848ad25
7 changed files with 126 additions and 7 deletions

View file

@ -1165,15 +1165,15 @@ store_ppc_registers (const struct regcache *regcache, int tid)
}
/* Fetch the AT_HWCAP entry from the aux vector. */
static unsigned long
static CORE_ADDR
ppc_linux_get_hwcap (void)
{
CORE_ADDR field;
if (target_auxv_search (target_stack, AT_HWCAP, &field))
return (unsigned long) field;
if (target_auxv_search (target_stack, AT_HWCAP, &field) != 1)
return 0;
return 0;
return field;
}
/* The cached DABR value, to install in new threads.
@ -2236,7 +2236,7 @@ ppc_linux_nat_target::read_description ()
features.wordsize = ppc_linux_target_wordsize (tid);
unsigned long hwcap = ppc_linux_get_hwcap ();
CORE_ADDR hwcap = ppc_linux_get_hwcap ();
if (have_ptrace_getsetvsxregs
&& (hwcap & PPC_FEATURE_HAS_VSX))