mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-27 04:52:05 +08:00
0ec848ad25
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.
61 lines
1.9 KiB
C
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 */
|