binutils-gdb/gdb/arch/ppc-linux-common.h
Pedro Franco de Carvalho 0ec848ad25 [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.
2018-05-22 11:52:03 -03:00

61 lines
1.9 KiB
C

/* Common target dependent code for GNU/Linux on PPC systems.
Copyright (C) 2018 Free Software Foundation, Inc.
This file is part of GDB.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#ifndef ARCH_PPC_LINUX_COMMON_H
#define ARCH_PPC_LINUX_COMMON_H
struct target_desc;
/* The core file VMX regset has 34 16-byte fields (32 16-byte vector
registers, plus two fields containing 4-byte registers, VSCR and
VRSAVE), while the ptrace calls return or read 33 16-byte fields
plus a 4-byte field for VRSAVE. For simplicity we use the longer
length for both cases. */
#define PPC_LINUX_SIZEOF_VRREGSET 544
#define PPC_LINUX_SIZEOF_VSXREGSET 256
/* Check if the hwcap auxv entry indicates that isa205 is supported. */
bool ppc_linux_has_isa205 (CORE_ADDR hwcap);
/* Features used to determine the target description. */
struct ppc_linux_features
{
unsigned int wordsize;
bool altivec;
bool vsx;
bool isa205;
bool cell;
};
/* Base value for ppc_linux_features variables. */
const struct ppc_linux_features ppc_linux_no_features = {
0,
false,
false,
false,
false,
};
/* Return a target description that matches FEATURES. */
const struct target_desc * ppc_linux_match_description
(struct ppc_linux_features features);
#endif /* ARCH_PPC_LINUX_COMMON_H */