diff options
author | Ulrich Weigand <uweigand@de.ibm.com> | 2013-09-13 14:17:31 +0000 |
---|---|---|
committer | Ulrich Weigand <uweigand@de.ibm.com> | 2013-09-13 14:17:31 +0000 |
commit | 4ac33720d6022079e8b038e795e40f0e06a4012c (patch) | |
tree | d8f025080163d46f3730e61fae2a14b59654f68e /gdb/testsuite/gdb.arch | |
parent | 2ccd146855365598ad2644ef8139f2f2a6747b90 (diff) | |
download | gdb-4ac33720d6022079e8b038e795e40f0e06a4012c.zip gdb-4ac33720d6022079e8b038e795e40f0e06a4012c.tar.gz gdb-4ac33720d6022079e8b038e795e40f0e06a4012c.tar.bz2 |
gdb/ChangeLog:
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.
Diffstat (limited to 'gdb/testsuite/gdb.arch')
-rw-r--r-- | gdb/testsuite/gdb.arch/s390-tdbregs.c | 64 | ||||
-rw-r--r-- | gdb/testsuite/gdb.arch/s390-tdbregs.exp | 75 |
2 files changed, 139 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.arch/s390-tdbregs.c b/gdb/testsuite/gdb.arch/s390-tdbregs.c new file mode 100644 index 0000000..03c4434 --- /dev/null +++ b/gdb/testsuite/gdb.arch/s390-tdbregs.c @@ -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; +} diff --git a/gdb/testsuite/gdb.arch/s390-tdbregs.exp b/gdb/testsuite/gdb.arch/s390-tdbregs.exp new file mode 100644 index 0000000..31d1f3b --- /dev/null +++ b/gdb/testsuite/gdb.arch/s390-tdbregs.exp @@ -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" |