Browse Source
2013-09-13 Andreas Arnez <arnez@linux.vnet.ibm.com> * NEWS: Mention TDB support. * features/s390-tdb.xml: New file. * features/s390-te-linux64.xml: New file. * features/s390x-te-linux64.xml: New file. * features/Makefile (WHICH): Add new tdescs above. (s390-te-linux64-expedite): Set. (s390x-te-linux64-expedite): Set. * features/s390-te-linux64.c: New file (generated). * features/s390x-te-linux64.c: New file (generated). * regformats/s390-te-linux64.dat: New file (generated). * regformats/s390x-te-linux64.dat: New file (generated). * s390-tdep.h (HWCAP_S390_HIGH_GPRS): Define. (HWCAP_S390_TE): Likewise. (S390_TDB_DWORD0_REGNUM): Likewise. (S390_TDB_DWORD0_REGNUM): Likewise. (S390_TDB_ABORT_CODE_REGNUM): Likewise. (S390_TDB_CONFLICT_TOKEN_REGNUM): Likewise. (S390_TDB_ATIA_REGNUM): Likewise. (S390_TDB_R0_REGNUM): Likewise. (S390_TDB_R1_REGNUM): Likewise. (S390_TDB_R2_REGNUM): Likewise. (S390_TDB_R3_REGNUM): Likewise. (S390_TDB_R4_REGNUM): Likewise. (S390_TDB_R5_REGNUM): Likewise. (S390_TDB_R6_REGNUM): Likewise. (S390_TDB_R7_REGNUM): Likewise. (S390_TDB_R8_REGNUM): Likewise. (S390_TDB_R9_REGNUM): Likewise. (S390_TDB_R10_REGNUM): Likewise. (S390_TDB_R11_REGNUM): Likewise. (S390_TDB_R12_REGNUM): Likewise. (S390_TDB_R13_REGNUM): Likewise. (S390_TDB_R14_REGNUM): Likewise. (S390_TDB_R15_REGNUM): Likewise. (S390_NUM_REGS): Increase. (S390_IS_TDBREGSET_REGNUM): New macro. (s390_regmap_tdb): Declare. (s390_sizeof_tdbregset): Define. (tdesc_s390_te_linux64): Declare. (tdesc_s390x_te_linux64): Likewise. * s390-tdep.c: Add includes for "auxv.h", <elf.h>, "features/s390-te-linux64.c", and "features/s390x-te-linux64.c". (s390_regmap_tdb): New regmap. (s390_supply_tdb_regset): New function. (s390_tdb_regset): New regset. (s390_linux64v2_regset_sections): Add TDB regset to list. (s390x_linux64v2_regset_sections): Likewise. (s390_regset_from_core_section): Recognize TDB core note section. (s390_core_read_description): If HWCAP indicates TE support, select tdesc_s390_te_linux64 or tdesc_s390_s390x_te_linux64. (s390_gdbarch_init): Handle TDB regset. (_initialize_s390_tdep): Initialize new tdescs. * s390-nat.c (HWCAP_S390_HIGH_GPRS): Remove define. (have_regset_tdb): New variable. (s390_native_supply): Support register invalidation. (fetch_regset): Invalidate registers if ptrace yields ENODATA. (check_regset): Treat ENODATA as "regset exists". (s390_linux_fetch_inferior_registers): Add TDB. (s390_read_description): Check for TDB existence and select appropriate tdesc. * gdbserver/Makefile.in (clean): Add removal of new makefile targets. (s390-te-linux64.c): New makefile target. (s390x-te-linux64.c): Likewise. * gdbserver/configure.srv (srv_regobj): Append new objects s390-te-linux64.o and s390x-te-linux64.o. (srv_xmlfiles): Append new files s390-te-linux64.xml, s390x-te-linux64.xml, and s390-tdb.xml. * gdbserver/linux-s390-low.c (init_registers_s390_te_linux64): New declaration. (tdesc_s390_te_linux64): Likewise. (init_registers_s390x_te_linux64): Likewise. (tdesc_s390x_te_linux64): Likewise. (s390_check_regset): Treat ENODATA as "regset exists". (s390_arch_setup): Add TDB regset support. (initialize_low_arch): Initialize registers for new tdescs. gdb/doc/ChangeLog: 2013-09-13 Andreas Arnez <arnez@linux.vnet.ibm.com> * gdb.texinfo (Decimal Floating Point format): Mention S/390. (Standard Target Features): Add new node to menu. (S/390 and System z Features): New node. gdb/testsuite/ChangeLog: 2013-09-13 Andreas Arnez <arnez@linux.vnet.ibm.com> * gdb.arch/s390-tdbregs.c: New file. * gdb.arch/s390-tdbregs.exp: New file.binutils-2_24-branch
21 changed files with 921 additions and 23 deletions
@ -0,0 +1,30 @@ |
|||
<?xml version="1.0"?> |
|||
<!-- Copyright (C) 2010-2013 Free Software Foundation, Inc. |
|||
|
|||
Copying and distribution of this file, with or without modification, |
|||
are permitted in any medium without royalty provided the copyright |
|||
notice and this notice are preserved. --> |
|||
|
|||
<!DOCTYPE feature SYSTEM "gdb-target.dtd"> |
|||
<feature name="org.gnu.gdb.s390.tdb"> |
|||
<reg name="tdb0" bitsize="64" type="uint64" group="tdb"/> |
|||
<reg name="tac" bitsize="64" type="uint64" group="tdb"/> |
|||
<reg name="tct" bitsize="64" type="uint64" group="tdb"/> |
|||
<reg name="atia" bitsize="64" type="uint64" group="tdb"/> |
|||
<reg name="tr0" bitsize="64" type="uint64" group="tdb"/> |
|||
<reg name="tr1" bitsize="64" type="uint64" group="tdb"/> |
|||
<reg name="tr2" bitsize="64" type="uint64" group="tdb"/> |
|||
<reg name="tr3" bitsize="64" type="uint64" group="tdb"/> |
|||
<reg name="tr4" bitsize="64" type="uint64" group="tdb"/> |
|||
<reg name="tr5" bitsize="64" type="uint64" group="tdb"/> |
|||
<reg name="tr6" bitsize="64" type="uint64" group="tdb"/> |
|||
<reg name="tr7" bitsize="64" type="uint64" group="tdb"/> |
|||
<reg name="tr8" bitsize="64" type="uint64" group="tdb"/> |
|||
<reg name="tr9" bitsize="64" type="uint64" group="tdb"/> |
|||
<reg name="tr10" bitsize="64" type="uint64" group="tdb"/> |
|||
<reg name="tr11" bitsize="64" type="uint64" group="tdb"/> |
|||
<reg name="tr12" bitsize="64" type="uint64" group="tdb"/> |
|||
<reg name="tr13" bitsize="64" type="uint64" group="tdb"/> |
|||
<reg name="tr14" bitsize="64" type="uint64" group="tdb"/> |
|||
<reg name="tr15" bitsize="64" type="uint64" group="tdb"/> |
|||
</feature> |
|||
@ -0,0 +1,118 @@ |
|||
/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
|
|||
Original: s390-te-linux64.xml */ |
|||
|
|||
#include "defs.h" |
|||
#include "osabi.h" |
|||
#include "target-descriptions.h" |
|||
|
|||
struct target_desc *tdesc_s390_te_linux64; |
|||
static void |
|||
initialize_tdesc_s390_te_linux64 (void) |
|||
{ |
|||
struct target_desc *result = allocate_target_description (); |
|||
struct tdesc_feature *feature; |
|||
|
|||
set_tdesc_architecture (result, bfd_scan_arch ("s390:31-bit")); |
|||
|
|||
feature = tdesc_create_feature (result, "org.gnu.gdb.s390.core"); |
|||
tdesc_create_reg (feature, "pswm", 0, 1, "psw", 32, "uint32"); |
|||
tdesc_create_reg (feature, "pswa", 1, 1, "psw", 32, "uint32"); |
|||
tdesc_create_reg (feature, "r0h", 2, 1, "upper", 32, "uint32"); |
|||
tdesc_create_reg (feature, "r0l", 3, 1, "lower", 32, "uint32"); |
|||
tdesc_create_reg (feature, "r1h", 4, 1, "upper", 32, "uint32"); |
|||
tdesc_create_reg (feature, "r1l", 5, 1, "lower", 32, "uint32"); |
|||
tdesc_create_reg (feature, "r2h", 6, 1, "upper", 32, "uint32"); |
|||
tdesc_create_reg (feature, "r2l", 7, 1, "lower", 32, "uint32"); |
|||
tdesc_create_reg (feature, "r3h", 8, 1, "upper", 32, "uint32"); |
|||
tdesc_create_reg (feature, "r3l", 9, 1, "lower", 32, "uint32"); |
|||
tdesc_create_reg (feature, "r4h", 10, 1, "upper", 32, "uint32"); |
|||
tdesc_create_reg (feature, "r4l", 11, 1, "lower", 32, "uint32"); |
|||
tdesc_create_reg (feature, "r5h", 12, 1, "upper", 32, "uint32"); |
|||
tdesc_create_reg (feature, "r5l", 13, 1, "lower", 32, "uint32"); |
|||
tdesc_create_reg (feature, "r6h", 14, 1, "upper", 32, "uint32"); |
|||
tdesc_create_reg (feature, "r6l", 15, 1, "lower", 32, "uint32"); |
|||
tdesc_create_reg (feature, "r7h", 16, 1, "upper", 32, "uint32"); |
|||
tdesc_create_reg (feature, "r7l", 17, 1, "lower", 32, "uint32"); |
|||
tdesc_create_reg (feature, "r8h", 18, 1, "upper", 32, "uint32"); |
|||
tdesc_create_reg (feature, "r8l", 19, 1, "lower", 32, "uint32"); |
|||
tdesc_create_reg (feature, "r9h", 20, 1, "upper", 32, "uint32"); |
|||
tdesc_create_reg (feature, "r9l", 21, 1, "lower", 32, "uint32"); |
|||
tdesc_create_reg (feature, "r10h", 22, 1, "upper", 32, "uint32"); |
|||
tdesc_create_reg (feature, "r10l", 23, 1, "lower", 32, "uint32"); |
|||
tdesc_create_reg (feature, "r11h", 24, 1, "upper", 32, "uint32"); |
|||
tdesc_create_reg (feature, "r11l", 25, 1, "lower", 32, "uint32"); |
|||
tdesc_create_reg (feature, "r12h", 26, 1, "upper", 32, "uint32"); |
|||
tdesc_create_reg (feature, "r12l", 27, 1, "lower", 32, "uint32"); |
|||
tdesc_create_reg (feature, "r13h", 28, 1, "upper", 32, "uint32"); |
|||
tdesc_create_reg (feature, "r13l", 29, 1, "lower", 32, "uint32"); |
|||
tdesc_create_reg (feature, "r14h", 30, 1, "upper", 32, "uint32"); |
|||
tdesc_create_reg (feature, "r14l", 31, 1, "lower", 32, "uint32"); |
|||
tdesc_create_reg (feature, "r15h", 32, 1, "upper", 32, "uint32"); |
|||
tdesc_create_reg (feature, "r15l", 33, 1, "lower", 32, "uint32"); |
|||
|
|||
feature = tdesc_create_feature (result, "org.gnu.gdb.s390.acr"); |
|||
tdesc_create_reg (feature, "acr0", 34, 1, "access", 32, "uint32"); |
|||
tdesc_create_reg (feature, "acr1", 35, 1, "access", 32, "uint32"); |
|||
tdesc_create_reg (feature, "acr2", 36, 1, "access", 32, "uint32"); |
|||
tdesc_create_reg (feature, "acr3", 37, 1, "access", 32, "uint32"); |
|||
tdesc_create_reg (feature, "acr4", 38, 1, "access", 32, "uint32"); |
|||
tdesc_create_reg (feature, "acr5", 39, 1, "access", 32, "uint32"); |
|||
tdesc_create_reg (feature, "acr6", 40, 1, "access", 32, "uint32"); |
|||
tdesc_create_reg (feature, "acr7", 41, 1, "access", 32, "uint32"); |
|||
tdesc_create_reg (feature, "acr8", 42, 1, "access", 32, "uint32"); |
|||
tdesc_create_reg (feature, "acr9", 43, 1, "access", 32, "uint32"); |
|||
tdesc_create_reg (feature, "acr10", 44, 1, "access", 32, "uint32"); |
|||
tdesc_create_reg (feature, "acr11", 45, 1, "access", 32, "uint32"); |
|||
tdesc_create_reg (feature, "acr12", 46, 1, "access", 32, "uint32"); |
|||
tdesc_create_reg (feature, "acr13", 47, 1, "access", 32, "uint32"); |
|||
tdesc_create_reg (feature, "acr14", 48, 1, "access", 32, "uint32"); |
|||
tdesc_create_reg (feature, "acr15", 49, 1, "access", 32, "uint32"); |
|||
|
|||
feature = tdesc_create_feature (result, "org.gnu.gdb.s390.fpr"); |
|||
tdesc_create_reg (feature, "fpc", 50, 1, "float", 32, "uint32"); |
|||
tdesc_create_reg (feature, "f0", 51, 1, "float", 64, "ieee_double"); |
|||
tdesc_create_reg (feature, "f1", 52, 1, "float", 64, "ieee_double"); |
|||
tdesc_create_reg (feature, "f2", 53, 1, "float", 64, "ieee_double"); |
|||
tdesc_create_reg (feature, "f3", 54, 1, "float", 64, "ieee_double"); |
|||
tdesc_create_reg (feature, "f4", 55, 1, "float", 64, "ieee_double"); |
|||
tdesc_create_reg (feature, "f5", 56, 1, "float", 64, "ieee_double"); |
|||
tdesc_create_reg (feature, "f6", 57, 1, "float", 64, "ieee_double"); |
|||
tdesc_create_reg (feature, "f7", 58, 1, "float", 64, "ieee_double"); |
|||
tdesc_create_reg (feature, "f8", 59, 1, "float", 64, "ieee_double"); |
|||
tdesc_create_reg (feature, "f9", 60, 1, "float", 64, "ieee_double"); |
|||
tdesc_create_reg (feature, "f10", 61, 1, "float", 64, "ieee_double"); |
|||
tdesc_create_reg (feature, "f11", 62, 1, "float", 64, "ieee_double"); |
|||
tdesc_create_reg (feature, "f12", 63, 1, "float", 64, "ieee_double"); |
|||
tdesc_create_reg (feature, "f13", 64, 1, "float", 64, "ieee_double"); |
|||
tdesc_create_reg (feature, "f14", 65, 1, "float", 64, "ieee_double"); |
|||
tdesc_create_reg (feature, "f15", 66, 1, "float", 64, "ieee_double"); |
|||
|
|||
feature = tdesc_create_feature (result, "org.gnu.gdb.s390.linux"); |
|||
tdesc_create_reg (feature, "orig_r2", 67, 1, "system", 32, "uint32"); |
|||
tdesc_create_reg (feature, "last_break", 68, 0, "system", 32, "code_ptr"); |
|||
tdesc_create_reg (feature, "system_call", 69, 1, "system", 32, "uint32"); |
|||
|
|||
feature = tdesc_create_feature (result, "org.gnu.gdb.s390.tdb"); |
|||
tdesc_create_reg (feature, "tdb0", 70, 1, "tdb", 64, "uint64"); |
|||
tdesc_create_reg (feature, "tac", 71, 1, "tdb", 64, "uint64"); |
|||
tdesc_create_reg (feature, "tct", 72, 1, "tdb", 64, "uint64"); |
|||
tdesc_create_reg (feature, "atia", 73, 1, "tdb", 64, "uint64"); |
|||
tdesc_create_reg (feature, "tr0", 74, 1, "tdb", 64, "uint64"); |
|||
tdesc_create_reg (feature, "tr1", 75, 1, "tdb", 64, "uint64"); |
|||
tdesc_create_reg (feature, "tr2", 76, 1, "tdb", 64, "uint64"); |
|||
tdesc_create_reg (feature, "tr3", 77, 1, "tdb", 64, "uint64"); |
|||
tdesc_create_reg (feature, "tr4", 78, 1, "tdb", 64, "uint64"); |
|||
tdesc_create_reg (feature, "tr5", 79, 1, "tdb", 64, "uint64"); |
|||
tdesc_create_reg (feature, "tr6", 80, 1, "tdb", 64, "uint64"); |
|||
tdesc_create_reg (feature, "tr7", 81, 1, "tdb", 64, "uint64"); |
|||
tdesc_create_reg (feature, "tr8", 82, 1, "tdb", 64, "uint64"); |
|||
tdesc_create_reg (feature, "tr9", 83, 1, "tdb", 64, "uint64"); |
|||
tdesc_create_reg (feature, "tr10", 84, 1, "tdb", 64, "uint64"); |
|||
tdesc_create_reg (feature, "tr11", 85, 1, "tdb", 64, "uint64"); |
|||
tdesc_create_reg (feature, "tr12", 86, 1, "tdb", 64, "uint64"); |
|||
tdesc_create_reg (feature, "tr13", 87, 1, "tdb", 64, "uint64"); |
|||
tdesc_create_reg (feature, "tr14", 88, 1, "tdb", 64, "uint64"); |
|||
tdesc_create_reg (feature, "tr15", 89, 1, "tdb", 64, "uint64"); |
|||
|
|||
tdesc_s390_te_linux64 = result; |
|||
} |
|||
@ -0,0 +1,25 @@ |
|||
<?xml version="1.0"?> |
|||
<!-- Copyright (C) 2010-2013 Free Software Foundation, Inc. |
|||
|
|||
Copying and distribution of this file, with or without modification, |
|||
are permitted in any medium without royalty provided the copyright |
|||
notice and this notice are preserved. --> |
|||
|
|||
<!-- S/390 31-bit user-level code on a machine operating |
|||
in z/Architecture mode. --> |
|||
|
|||
<!DOCTYPE target SYSTEM "gdb-target.dtd"> |
|||
<target> |
|||
<architecture>s390:31-bit</architecture> |
|||
<xi:include href="s390-core64.xml"/> |
|||
<xi:include href="s390-acr.xml"/> |
|||
<xi:include href="s390-fpr.xml"/> |
|||
|
|||
<feature name="org.gnu.gdb.s390.linux"> |
|||
<reg name="orig_r2" bitsize="32" type="uint32" group="system"/> |
|||
<reg name="last_break" bitsize="32" type="code_ptr" group="system" save-restore="no"/> |
|||
<reg name="system_call" bitsize="32" type="uint32" group="system"/> |
|||
</feature> |
|||
|
|||
<xi:include href="s390-tdb.xml"/> |
|||
</target> |
|||
@ -0,0 +1,102 @@ |
|||
/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
|
|||
Original: s390x-te-linux64.xml */ |
|||
|
|||
#include "defs.h" |
|||
#include "osabi.h" |
|||
#include "target-descriptions.h" |
|||
|
|||
struct target_desc *tdesc_s390x_te_linux64; |
|||
static void |
|||
initialize_tdesc_s390x_te_linux64 (void) |
|||
{ |
|||
struct target_desc *result = allocate_target_description (); |
|||
struct tdesc_feature *feature; |
|||
|
|||
set_tdesc_architecture (result, bfd_scan_arch ("s390:64-bit")); |
|||
|
|||
feature = tdesc_create_feature (result, "org.gnu.gdb.s390.core"); |
|||
tdesc_create_reg (feature, "pswm", 0, 1, "psw", 64, "uint64"); |
|||
tdesc_create_reg (feature, "pswa", 1, 1, "psw", 64, "uint64"); |
|||
tdesc_create_reg (feature, "r0", 2, 1, "general", 64, "uint64"); |
|||
tdesc_create_reg (feature, "r1", 3, 1, "general", 64, "uint64"); |
|||
tdesc_create_reg (feature, "r2", 4, 1, "general", 64, "uint64"); |
|||
tdesc_create_reg (feature, "r3", 5, 1, "general", 64, "uint64"); |
|||
tdesc_create_reg (feature, "r4", 6, 1, "general", 64, "uint64"); |
|||
tdesc_create_reg (feature, "r5", 7, 1, "general", 64, "uint64"); |
|||
tdesc_create_reg (feature, "r6", 8, 1, "general", 64, "uint64"); |
|||
tdesc_create_reg (feature, "r7", 9, 1, "general", 64, "uint64"); |
|||
tdesc_create_reg (feature, "r8", 10, 1, "general", 64, "uint64"); |
|||
tdesc_create_reg (feature, "r9", 11, 1, "general", 64, "uint64"); |
|||
tdesc_create_reg (feature, "r10", 12, 1, "general", 64, "uint64"); |
|||
tdesc_create_reg (feature, "r11", 13, 1, "general", 64, "uint64"); |
|||
tdesc_create_reg (feature, "r12", 14, 1, "general", 64, "uint64"); |
|||
tdesc_create_reg (feature, "r13", 15, 1, "general", 64, "uint64"); |
|||
tdesc_create_reg (feature, "r14", 16, 1, "general", 64, "uint64"); |
|||
tdesc_create_reg (feature, "r15", 17, 1, "general", 64, "uint64"); |
|||
|
|||
feature = tdesc_create_feature (result, "org.gnu.gdb.s390.acr"); |
|||
tdesc_create_reg (feature, "acr0", 18, 1, "access", 32, "uint32"); |
|||
tdesc_create_reg (feature, "acr1", 19, 1, "access", 32, "uint32"); |
|||
tdesc_create_reg (feature, "acr2", 20, 1, "access", 32, "uint32"); |
|||
tdesc_create_reg (feature, "acr3", 21, 1, "access", 32, "uint32"); |
|||
tdesc_create_reg (feature, "acr4", 22, 1, "access", 32, "uint32"); |
|||
tdesc_create_reg (feature, "acr5", 23, 1, "access", 32, "uint32"); |
|||
tdesc_create_reg (feature, "acr6", 24, 1, "access", 32, "uint32"); |
|||
tdesc_create_reg (feature, "acr7", 25, 1, "access", 32, "uint32"); |
|||
tdesc_create_reg (feature, "acr8", 26, 1, "access", 32, "uint32"); |
|||
tdesc_create_reg (feature, "acr9", 27, 1, "access", 32, "uint32"); |
|||
tdesc_create_reg (feature, "acr10", 28, 1, "access", 32, "uint32"); |
|||
tdesc_create_reg (feature, "acr11", 29, 1, "access", 32, "uint32"); |
|||
tdesc_create_reg (feature, "acr12", 30, 1, "access", 32, "uint32"); |
|||
tdesc_create_reg (feature, "acr13", 31, 1, "access", 32, "uint32"); |
|||
tdesc_create_reg (feature, "acr14", 32, 1, "access", 32, "uint32"); |
|||
tdesc_create_reg (feature, "acr15", 33, 1, "access", 32, "uint32"); |
|||
|
|||
feature = tdesc_create_feature (result, "org.gnu.gdb.s390.fpr"); |
|||
tdesc_create_reg (feature, "fpc", 34, 1, "float", 32, "uint32"); |
|||
tdesc_create_reg (feature, "f0", 35, 1, "float", 64, "ieee_double"); |
|||
tdesc_create_reg (feature, "f1", 36, 1, "float", 64, "ieee_double"); |
|||
tdesc_create_reg (feature, "f2", 37, 1, "float", 64, "ieee_double"); |
|||
tdesc_create_reg (feature, "f3", 38, 1, "float", 64, "ieee_double"); |
|||
tdesc_create_reg (feature, "f4", 39, 1, "float", 64, "ieee_double"); |
|||
tdesc_create_reg (feature, "f5", 40, 1, "float", 64, "ieee_double"); |
|||
tdesc_create_reg (feature, "f6", 41, 1, "float", 64, "ieee_double"); |
|||
tdesc_create_reg (feature, "f7", 42, 1, "float", 64, "ieee_double"); |
|||
tdesc_create_reg (feature, "f8", 43, 1, "float", 64, "ieee_double"); |
|||
tdesc_create_reg (feature, "f9", 44, 1, "float", 64, "ieee_double"); |
|||
tdesc_create_reg (feature, "f10", 45, 1, "float", 64, "ieee_double"); |
|||
tdesc_create_reg (feature, "f11", 46, 1, "float", 64, "ieee_double"); |
|||
tdesc_create_reg (feature, "f12", 47, 1, "float", 64, "ieee_double"); |
|||
tdesc_create_reg (feature, "f13", 48, 1, "float", 64, "ieee_double"); |
|||
tdesc_create_reg (feature, "f14", 49, 1, "float", 64, "ieee_double"); |
|||
tdesc_create_reg (feature, "f15", 50, 1, "float", 64, "ieee_double"); |
|||
|
|||
feature = tdesc_create_feature (result, "org.gnu.gdb.s390.linux"); |
|||
tdesc_create_reg (feature, "orig_r2", 51, 1, "system", 64, "uint64"); |
|||
tdesc_create_reg (feature, "last_break", 52, 0, "system", 64, "code_ptr"); |
|||
tdesc_create_reg (feature, "system_call", 53, 1, "system", 32, "uint32"); |
|||
|
|||
feature = tdesc_create_feature (result, "org.gnu.gdb.s390.tdb"); |
|||
tdesc_create_reg (feature, "tdb0", 54, 1, "tdb", 64, "uint64"); |
|||
tdesc_create_reg (feature, "tac", 55, 1, "tdb", 64, "uint64"); |
|||
tdesc_create_reg (feature, "tct", 56, 1, "tdb", 64, "uint64"); |
|||
tdesc_create_reg (feature, "atia", 57, 1, "tdb", 64, "uint64"); |
|||
tdesc_create_reg (feature, "tr0", 58, 1, "tdb", 64, "uint64"); |
|||
tdesc_create_reg (feature, "tr1", 59, 1, "tdb", 64, "uint64"); |
|||
tdesc_create_reg (feature, "tr2", 60, 1, "tdb", 64, "uint64"); |
|||
tdesc_create_reg (feature, "tr3", 61, 1, "tdb", 64, "uint64"); |
|||
tdesc_create_reg (feature, "tr4", 62, 1, "tdb", 64, "uint64"); |
|||
tdesc_create_reg (feature, "tr5", 63, 1, "tdb", 64, "uint64"); |
|||
tdesc_create_reg (feature, "tr6", 64, 1, "tdb", 64, "uint64"); |
|||
tdesc_create_reg (feature, "tr7", 65, 1, "tdb", 64, "uint64"); |
|||
tdesc_create_reg (feature, "tr8", 66, 1, "tdb", 64, "uint64"); |
|||
tdesc_create_reg (feature, "tr9", 67, 1, "tdb", 64, "uint64"); |
|||
tdesc_create_reg (feature, "tr10", 68, 1, "tdb", 64, "uint64"); |
|||
tdesc_create_reg (feature, "tr11", 69, 1, "tdb", 64, "uint64"); |
|||
tdesc_create_reg (feature, "tr12", 70, 1, "tdb", 64, "uint64"); |
|||
tdesc_create_reg (feature, "tr13", 71, 1, "tdb", 64, "uint64"); |
|||
tdesc_create_reg (feature, "tr14", 72, 1, "tdb", 64, "uint64"); |
|||
tdesc_create_reg (feature, "tr15", 73, 1, "tdb", 64, "uint64"); |
|||
|
|||
tdesc_s390x_te_linux64 = result; |
|||
} |
|||
@ -0,0 +1,24 @@ |
|||
<?xml version="1.0"?> |
|||
<!-- Copyright (C) 2010-2013 Free Software Foundation, Inc. |
|||
|
|||
Copying and distribution of this file, with or without modification, |
|||
are permitted in any medium without royalty provided the copyright |
|||
notice and this notice are preserved. --> |
|||
|
|||
<!-- S/390 64-bit user-level code. --> |
|||
|
|||
<!DOCTYPE target SYSTEM "gdb-target.dtd"> |
|||
<target> |
|||
<architecture>s390:64-bit</architecture> |
|||
<xi:include href="s390x-core64.xml"/> |
|||
<xi:include href="s390-acr.xml"/> |
|||
<xi:include href="s390-fpr.xml"/> |
|||
|
|||
<feature name="org.gnu.gdb.s390.linux"> |
|||
<reg name="orig_r2" bitsize="64" type="uint64" group="system"/> |
|||
<reg name="last_break" bitsize="64" type="code_ptr" group="system" save-restore="no"/> |
|||
<reg name="system_call" bitsize="32" type="uint32" group="system"/> |
|||
</feature> |
|||
|
|||
<xi:include href="s390-tdb.xml"/> |
|||
</target> |
|||
@ -0,0 +1,94 @@ |
|||
# DO NOT EDIT: generated from s390-te-linux64.xml |
|||
name:s390_te_linux64 |
|||
xmltarget:s390-te-linux64.xml |
|||
expedite:r14,r15,pswa |
|||
32:pswm |
|||
32:pswa |
|||
32:r0h |
|||
32:r0l |
|||
32:r1h |
|||
32:r1l |
|||
32:r2h |
|||
32:r2l |
|||
32:r3h |
|||
32:r3l |
|||
32:r4h |
|||
32:r4l |
|||
32:r5h |
|||
32:r5l |
|||
32:r6h |
|||
32:r6l |
|||
32:r7h |
|||
32:r7l |
|||
32:r8h |
|||
32:r8l |
|||
32:r9h |
|||
32:r9l |
|||
32:r10h |
|||
32:r10l |
|||
32:r11h |
|||
32:r11l |
|||
32:r12h |
|||
32:r12l |
|||
32:r13h |
|||
32:r13l |
|||
32:r14h |
|||
32:r14l |
|||
32:r15h |
|||
32:r15l |
|||
32:acr0 |
|||
32:acr1 |
|||
32:acr2 |
|||
32:acr3 |
|||
32:acr4 |
|||
32:acr5 |
|||
32:acr6 |
|||
32:acr7 |
|||
32:acr8 |
|||
32:acr9 |
|||
32:acr10 |
|||
32:acr11 |
|||
32:acr12 |
|||
32:acr13 |
|||
32:acr14 |
|||
32:acr15 |
|||
32:fpc |
|||
64:f0 |
|||
64:f1 |
|||
64:f2 |
|||
64:f3 |
|||
64:f4 |
|||
64:f5 |
|||
64:f6 |
|||
64:f7 |
|||
64:f8 |
|||
64:f9 |
|||
64:f10 |
|||
64:f11 |
|||
64:f12 |
|||
64:f13 |
|||
64:f14 |
|||
64:f15 |
|||
32:orig_r2 |
|||
32:last_break |
|||
32:system_call |
|||
64:tdb0 |
|||
64:tac |
|||
64:tct |
|||
64:atia |
|||
64:tr0 |
|||
64:tr1 |
|||
64:tr2 |
|||
64:tr3 |
|||
64:tr4 |
|||
64:tr5 |
|||
64:tr6 |
|||
64:tr7 |
|||
64:tr8 |
|||
64:tr9 |
|||
64:tr10 |
|||
64:tr11 |
|||
64:tr12 |
|||
64:tr13 |
|||
64:tr14 |
|||
64:tr15 |
|||
@ -0,0 +1,78 @@ |
|||
# DO NOT EDIT: generated from s390x-te-linux64.xml |
|||
name:s390x_te_linux64 |
|||
xmltarget:s390x-te-linux64.xml |
|||
expedite:r14,r15,pswa |
|||
64:pswm |
|||
64:pswa |
|||
64:r0 |
|||
64:r1 |
|||
64:r2 |
|||
64:r3 |
|||
64:r4 |
|||
64:r5 |
|||
64:r6 |
|||
64:r7 |
|||
64:r8 |
|||
64:r9 |
|||
64:r10 |
|||
64:r11 |
|||
64:r12 |
|||
64:r13 |
|||
64:r14 |
|||
64:r15 |
|||
32:acr0 |
|||
32:acr1 |
|||
32:acr2 |
|||
32:acr3 |
|||
32:acr4 |
|||
32:acr5 |
|||
32:acr6 |
|||
32:acr7 |
|||
32:acr8 |
|||
32:acr9 |
|||
32:acr10 |
|||
32:acr11 |
|||
32:acr12 |
|||
32:acr13 |
|||
32:acr14 |
|||
32:acr15 |
|||
32:fpc |
|||
64:f0 |
|||
64:f1 |
|||
64:f2 |
|||
64:f3 |
|||
64:f4 |
|||
64:f5 |
|||
64:f6 |
|||
64:f7 |
|||
64:f8 |
|||
64:f9 |
|||
64:f10 |
|||
64:f11 |
|||
64:f12 |
|||
64:f13 |
|||
64:f14 |
|||
64:f15 |
|||
64:orig_r2 |
|||
64:last_break |
|||
32:system_call |
|||
64:tdb0 |
|||
64:tac |
|||
64:tct |
|||
64:atia |
|||
64:tr0 |
|||
64:tr1 |
|||
64:tr2 |
|||
64:tr3 |
|||
64:tr4 |
|||
64:tr5 |
|||
64:tr6 |
|||
64:tr7 |
|||
64:tr8 |
|||
64:tr9 |
|||
64:tr10 |
|||
64:tr11 |
|||
64:tr12 |
|||
64:tr13 |
|||
64:tr14 |
|||
64:tr15 |
|||
@ -0,0 +1,64 @@ |
|||
/* Copyright 2008-2013 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/>. */
|
|||
|
|||
#include <stdio.h> |
|||
|
|||
static void |
|||
my_tbegin () |
|||
{ |
|||
__asm__ volatile |
|||
( "1: .byte 0xe5,0x60,0x00,0x00,0xff,0x00\n" |
|||
" jnz 1b" |
|||
: /* no return value */ |
|||
: /* no inputs */ |
|||
: "cc", "memory" ); |
|||
} |
|||
|
|||
static void |
|||
my_tend () |
|||
{ |
|||
__asm__ volatile |
|||
( " .byte 0xb2,0xf8,0x00,0x00" |
|||
: /* no return value */ |
|||
: /* no inputs */ |
|||
: "cc", "memory" ); |
|||
} |
|||
|
|||
void |
|||
try_transaction (void) |
|||
{ |
|||
my_tbegin (); |
|||
my_tend (); |
|||
} |
|||
|
|||
void |
|||
crash_in_transaction (void) |
|||
{ |
|||
volatile char *p = 0; |
|||
|
|||
my_tbegin (); |
|||
*p = 5; /* FAULT */ |
|||
my_tend (); |
|||
} |
|||
|
|||
int |
|||
main (int argc, char *argv[]) |
|||
{ |
|||
try_transaction (); |
|||
crash_in_transaction (); |
|||
return 0; |
|||
} |
|||
@ -0,0 +1,75 @@ |
|||
# Copyright 2004-2013 Free Software Foundation, Inc. |
|||
|
|||
# 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/>. |
|||
|
|||
# Please email any bugs, comments, and/or additions to this file to: |
|||
# bug-gdb@gnu.org |
|||
|
|||
# This file is part of the gdb testsuite. |
|||
|
|||
|
|||
if { ![istarget s390-*-*] && ![istarget s390x-*-* ] } { |
|||
verbose "Skipping s390 TDB register tests." |
|||
return |
|||
} |
|||
|
|||
set testfile "s390-tdbregs" |
|||
set srcfile ${testfile}.c |
|||
set binfile ${objdir}/${subdir}/${testfile} |
|||
|
|||
if { [get_compiler_info] } { |
|||
return -1 |
|||
} |
|||
|
|||
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" \ |
|||
executable [list debug]] != "" } { |
|||
fail "compile failed" |
|||
return |
|||
} |
|||
|
|||
gdb_exit |
|||
gdb_start |
|||
gdb_reinitialize_dir $srcdir/$subdir |
|||
gdb_load ${binfile} |
|||
|
|||
if { ![runto_main] } then { |
|||
gdb_suppress_tests |
|||
} |
|||
|
|||
gdb_test_multiple "next" "check for TE support" { |
|||
-re "Program received signal SIGILL,.*\r\n$gdb_prompt $" { |
|||
unsupported "No TE support." |
|||
return |
|||
} |
|||
-re "\[0-9\]+.*\r\n$gdb_prompt $" { |
|||
pass "TE support available" |
|||
} |
|||
-re "$gdb_prompt $" { |
|||
unsupported "No TE support (unknown error)." |
|||
return |
|||
} |
|||
} |
|||
|
|||
set crashline [gdb_get_line_number "FAULT"] |
|||
|
|||
gdb_test "print \$tdb0" "\\\$\[0-9\]+ = <unavailable>" "tdb0 unavailable" |
|||
gdb_test "print \$tr0" "\\\$\[0-9\]+ = <unavailable>" "tr0 unavailable" |
|||
gdb_test "next" \ |
|||
"Program received signal SIGSEGV, .*" \ |
|||
"crash in transaction" |
|||
gdb_test "print/x \$tdb0" "\\\$\[0-9\]+ = 0x1.*" "tdb0 available" |
|||
gdb_test "set print symbol-filename" "" "set print symbol-filename" |
|||
gdb_test "print/a \$atia" \ |
|||
"<crash_in_transaction.*:$crashline>" \ |
|||
"ATIA points to crash" |
|||
Loading…
Reference in new issue