mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-27 04:52:05 +08:00
c81e887979
With7042632bf7
(s390: Hook s390 into OSABI mechanism) assigning a default target description was moved from s390_gdbarch_init to s390_linux_init_abi_*. This causes problems when GDB is built with --enable-targets=all and the user sets an unsupported OSABI, e.g. "set osabi AIX". In this case there is no valid tdesc, and GDB crashes with an internal error. Fix this by reverting parts of7042632bf7
. gdb/ChangeLog: * s390-linux-tdep.c: Remove includes "features/s390-linux32.c" and "features/s390x-linux64.c". (_initialize_s390_linux_tdep): Remove initialization of tdescs s390_linux32 and s390x_linux64. (s390_linux_init_abi_31, s390_linux_init_abi_64): Don't set default tdesc. * s390-tdep.c: Include "features/s390-linux32.c" and "features/s390x-linux64.c". (s390_tdesc_valid): Add check for tdesc_has_registers. (s390_gdbarch_init): Make sure there is always a valid tdesc. (_initialize_s390_tdep): Initialize tdesc_s390_linux32 and tdesc_s390x_linux64. * s390-linux-tdep.h: Move export of tdesc_s390_linux32 and tdesc_s390x_linux64 to... * s390-tdep.h: ...here.
68 lines
2.7 KiB
C
68 lines
2.7 KiB
C
/* Target-dependent code for GNU/Linux on s390.
|
|
|
|
Copyright (C) 2003-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 S390_LINUX_TDEP_H
|
|
#define S390_LINUX_TDEP_H
|
|
|
|
#define S390_IS_GREGSET_REGNUM(i) \
|
|
(((i) >= S390_PSWM_REGNUM && (i) <= S390_A15_REGNUM) \
|
|
|| ((i) >= S390_R0_UPPER_REGNUM && (i) <= S390_R15_UPPER_REGNUM) \
|
|
|| (i) == S390_ORIG_R2_REGNUM)
|
|
|
|
#define S390_IS_FPREGSET_REGNUM(i) \
|
|
((i) >= S390_FPC_REGNUM && (i) <= S390_F15_REGNUM)
|
|
|
|
#define S390_IS_TDBREGSET_REGNUM(i) \
|
|
((i) >= S390_TDB_DWORD0_REGNUM && (i) <= S390_TDB_R15_REGNUM)
|
|
|
|
/* Core file register sets, defined in s390-linux-tdep.c. */
|
|
#define s390_sizeof_gregset 0x90
|
|
#define s390x_sizeof_gregset 0xd8
|
|
extern const struct regset s390_gregset;
|
|
#define s390_sizeof_fpregset 0x88
|
|
extern const struct regset s390_fpregset;
|
|
extern const struct regset s390_last_break_regset;
|
|
extern const struct regset s390x_last_break_regset;
|
|
extern const struct regset s390_system_call_regset;
|
|
extern const struct regset s390_tdb_regset;
|
|
#define s390_sizeof_tdbregset 0x100
|
|
extern const struct regset s390_vxrs_low_regset;
|
|
extern const struct regset s390_vxrs_high_regset;
|
|
extern const struct regset s390_gs_regset;
|
|
extern const struct regset s390_gsbc_regset;
|
|
|
|
/* GNU/Linux target descriptions. */
|
|
extern struct target_desc *tdesc_s390_linux32v1;
|
|
extern struct target_desc *tdesc_s390_linux32v2;
|
|
extern struct target_desc *tdesc_s390_linux64;
|
|
extern struct target_desc *tdesc_s390_linux64v1;
|
|
extern struct target_desc *tdesc_s390_linux64v2;
|
|
extern struct target_desc *tdesc_s390_te_linux64;
|
|
extern struct target_desc *tdesc_s390_vx_linux64;
|
|
extern struct target_desc *tdesc_s390_tevx_linux64;
|
|
extern struct target_desc *tdesc_s390_gs_linux64;
|
|
extern struct target_desc *tdesc_s390x_linux64v1;
|
|
extern struct target_desc *tdesc_s390x_linux64v2;
|
|
extern struct target_desc *tdesc_s390x_te_linux64;
|
|
extern struct target_desc *tdesc_s390x_vx_linux64;
|
|
extern struct target_desc *tdesc_s390x_tevx_linux64;
|
|
extern struct target_desc *tdesc_s390x_gs_linux64;
|
|
|
|
#endif /* S390_LINUX_TDEP_H */
|