From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13106 invoked by alias); 6 May 2006 01:18:56 -0000 Received: (qmail 13097 invoked by uid 22791); 6 May 2006 01:18:56 -0000 X-Spam-Check-By: sourceware.org Received: from mtagate4.de.ibm.com (HELO mtagate4.de.ibm.com) (195.212.29.153) by sourceware.org (qpsmtpd/0.31) with ESMTP; Sat, 06 May 2006 01:18:54 +0000 Received: from d12nrmr1607.megacenter.de.ibm.com (d12nrmr1607.megacenter.de.ibm.com [9.149.167.49]) by mtagate4.de.ibm.com (8.13.6/8.13.6) with ESMTP id k461IpHo136964 for ; Sat, 6 May 2006 01:18:51 GMT Received: from d12av02.megacenter.de.ibm.com (d12av02.megacenter.de.ibm.com [9.149.165.228]) by d12nrmr1607.megacenter.de.ibm.com (8.12.10/NCO/VER6.8) with ESMTP id k461K5Sh066600 for ; Sat, 6 May 2006 03:20:05 +0200 Received: from d12av02.megacenter.de.ibm.com (loopback [127.0.0.1]) by d12av02.megacenter.de.ibm.com (8.12.11/8.13.3) with ESMTP id k461IpdJ009925 for ; Sat, 6 May 2006 03:18:51 +0200 Received: from tuxmaker.boeblingen.de.ibm.com (tuxmaker.boeblingen.de.ibm.com [9.152.85.9]) by d12av02.megacenter.de.ibm.com (8.12.11/8.12.11) with SMTP id k461IpKO009920 for ; Sat, 6 May 2006 03:18:51 +0200 Message-Id: <200605060118.k461IpKO009920@d12av02.megacenter.de.ibm.com> Received: by tuxmaker.boeblingen.de.ibm.com (sSMTP sendmail emulation); Sat, 6 May 2006 03:18:51 +0200 Subject: [committed] Fix gcore crashes on s390 To: gdb-patches@sourceware.org Date: Sat, 06 May 2006 01:18:00 -0000 From: "Ulrich Weigand" X-Mailer: ELM [version 2.5 PL2] MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2006-05/txt/msg00132.txt.bz2 Hello, since the switch of gcore to use regset_from_core_section, it crashes on s390, because the regsets we're providing have a NULL collect_regset function. Fixed by the patch below. Tested on s390-ibm-linux and s390x-ibm-linux. Committed to mainline. Bye, Ulrich ChangeLog: * s390-tdep.c (s390_collect_regset): New function. (s390_gregset, s390x_gregset, s390_fpregset): Add it. Index: gdb/s390-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/s390-tdep.c,v retrieving revision 1.153 diff -c -p -r1.153 s390-tdep.c *** gdb/s390-tdep.c 9 Apr 2006 01:21:15 -0000 1.153 --- gdb/s390-tdep.c 6 May 2006 00:55:38 -0000 *************** s390_supply_regset (const struct regset *** 444,462 **** } } static const struct regset s390_gregset = { s390_regmap_gregset, ! s390_supply_regset }; static const struct regset s390x_gregset = { s390x_regmap_gregset, ! s390_supply_regset }; static const struct regset s390_fpregset = { s390_regmap_fpregset, ! s390_supply_regset }; /* Return the appropriate register set for the core section identified --- 444,484 ---- } } + /* Collect register REGNUM from the register cache REGCACHE and store + it in the buffer specified by REGS and LEN as described by the + general-purpose register set REGSET. If REGNUM is -1, do this for + all registers in REGSET. */ + static void + s390_collect_regset (const struct regset *regset, + const struct regcache *regcache, + int regnum, void *regs, size_t len) + { + const int *offset = regset->descr; + int i; + + for (i = 0; i < S390_NUM_REGS; i++) + { + if ((regnum == i || regnum == -1) && offset[i] != -1) + regcache_raw_collect (regcache, i, (char *)regs + offset[i]); + } + } + static const struct regset s390_gregset = { s390_regmap_gregset, ! s390_supply_regset, ! s390_collect_regset }; static const struct regset s390x_gregset = { s390x_regmap_gregset, ! s390_supply_regset, ! s390_collect_regset }; static const struct regset s390_fpregset = { s390_regmap_fpregset, ! s390_supply_regset, ! s390_collect_regset }; /* Return the appropriate register set for the core section identified -- Dr. Ulrich Weigand Linux on zSeries Development Ulrich.Weigand@de.ibm.com