From patchwork Mon Apr 18 13:17:18 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Maciej W. Rozycki" X-Patchwork-Id: 11784 Received: (qmail 10450 invoked by alias); 18 Apr 2016 13:17:42 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 10437 invoked by uid 89); 18 Apr 2016 13:17:41 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.4 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_NONE, RP_MATCHES_RCVD, SPF_PASS autolearn=ham version=3.3.2 spammy=UD:diff X-HELO: mailapp01.imgtec.com Received: from mailapp01.imgtec.com (HELO mailapp01.imgtec.com) (195.59.15.196) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 18 Apr 2016 13:17:31 +0000 Received: from hhmail02.hh.imgtec.org (unknown [10.100.10.20]) by Websense Email with ESMTPS id 663B72EE6DE7B; Mon, 18 Apr 2016 14:17:25 +0100 (IST) Received: from [10.20.78.233] (10.20.78.233) by hhmail02.hh.imgtec.org (10.100.10.21) with Microsoft SMTP Server id 14.3.266.1; Mon, 18 Apr 2016 14:17:27 +0100 Date: Mon, 18 Apr 2016 14:17:18 +0100 From: "Maciej W. Rozycki" To: Orgad Shaneh CC: Pedro Alves , Luis Machado , Subject: [PATCH] MIPS: Go back with the default Linux # of registers to 90 Message-ID: User-Agent: Alpine 2.00 (DEB 1167 2008-08-23) MIME-Version: 1.0 Set the number of registers for non-XML-described Linux targets to 90, reverting a change made here with the addition of DSP register support: commit 1faeff088bbbd037d7769d214378b4faf805fa2e Author: Maciej W. Rozycki Date: Thu Mar 1 22:19:48 2012 +0000 and fixing a regression introduced for legacy `gdbserver' targets causing a "Remote 'g' packet reply is too long" error message where the amount of register data received with a `g' packet (90) exceeds the maximum number of registers expected (79). Update the setting for XML-described targets, reflecting the actual number of registers which have been assigned numbers, matching the: gdb_assert (gdbarch_num_regs (gdbarch) <= MIPS_RESTART_REGNUM); requirement in `mips_linux_init_abi'. gdb/ * mips-tdep.c (mips_gdbarch_init): For GDB_OSABI_LINUX set `num_regs' to 90 rather than 79. Where a target description is present adjust the setting appropriately. --- Orgad, Can you please check if this change addresses your problem? I'm not currently set up to fully regression-test this change with `gdbserver', but I did some manual testing and things look right. The change for `num_regs' in the XML-described case (which is now either 72 or 79, for non-DSP and DSP targets respectively, rather than always 79) is in particular going to be always overridden in `mips_linux_init_abi' with `MIPS_RESTART_REGNUM + 1' (80) anyway -- we don't have proper support for XML-described bare-metal targets, so only the Linux target matters. So I think this patch is safe and I'm going to install it once I've got a confirmation that the legacy case has been addressed. Maciej gdb-mips-gdbarch-init-linux-num-regs.diff Index: binutils/gdb/mips-tdep.c =================================================================== --- binutils.orig/gdb/mips-tdep.c 2016-04-18 11:53:07.592133428 +0100 +++ binutils/gdb/mips-tdep.c 2016-04-18 12:30:58.698574753 +0100 @@ -8192,7 +8192,7 @@ mips_gdbarch_init (struct gdbarch_info i mips_regnum.dspctl = -1; dspacc = 72; dspctl = 78; - num_regs = 79; + num_regs = 90; reg_names = mips_linux_reg_names; } else @@ -8311,6 +8311,8 @@ mips_gdbarch_init (struct gdbarch_info i return NULL; } + num_regs = mips_regnum.fp_implementation_revision + 1; + if (dspacc >= 0) { feature = tdesc_find_feature (info.target_desc, @@ -8344,6 +8346,8 @@ mips_gdbarch_init (struct gdbarch_info i mips_regnum.dspacc = dspacc; mips_regnum.dspctl = dspctl; + + num_regs = mips_regnum.dspctl + 1; } }