From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57251) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V8no7-0005Ya-1U for qemu-devel@nongnu.org; Mon, 12 Aug 2013 04:49:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1V8nny-0007BW-KY for qemu-devel@nongnu.org; Mon, 12 Aug 2013 04:48:54 -0400 Received: from cantor2.suse.de ([195.135.220.15]:52639 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V8nny-0007BE-97 for qemu-devel@nongnu.org; Mon, 12 Aug 2013 04:48:46 -0400 Message-ID: <5208A169.4010109@suse.de> Date: Mon, 12 Aug 2013 10:48:41 +0200 From: =?ISO-8859-15?Q?Andreas_F=E4rber?= MIME-Version: 1.0 References: <1376244860-19714-1-git-send-email-aneesh.kumar@linux.vnet.ibm.com> In-Reply-To: <1376244860-19714-1-git-send-email-aneesh.kumar@linux.vnet.ibm.com> Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH] gdb: Fix gdb error List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Aneesh Kumar K.V" Cc: aliguori@us.ibm.com, qemu-devel@nongnu.org Hi Aneesh, Am 11.08.2013 20:14, schrieb Aneesh Kumar K.V: > From: "Aneesh Kumar K.V" >=20 > Don't update the global register count if not requested. > Without this patch a remote gdb session gives >=20 > (gdb) target remote localhost:1234 > Remote debugging using localhost:1234 > Remote 'g' packet reply is too long: > 0000000028000084c000000000ccba50c000000000c ... > .... > ... > (gdb) >=20 > This is a regression introduce by a0e372f0c49ac01faeaeb73a6e8f50e8ac615= f34 >=20 > Signed-off-by: Aneesh Kumar K.V Thanks for tracking this down. I'm willing to include a variation in today's pull to fix 1.6.0-rc3. However, did you find an explanation *why* it needs to be like this? I understand it is a revert to using the static variable, updated to using the CPUClass field rather than the previous preprocessor constant. > --- > gdbstub.c | 12 ++++++++++-- > 1 file changed, 10 insertions(+), 2 deletions(-) >=20 > diff --git a/gdbstub.c b/gdbstub.c > index 1af25a6..4b58a1e 100644 > --- a/gdbstub.c > +++ b/gdbstub.c > @@ -598,6 +598,12 @@ void gdb_register_coprocessor(CPUState *cpu, > { > GDBRegisterState *s; > GDBRegisterState **p; > + static int last_reg; > + CPUClass *cc =3D CPU_GET_CLASS(cpu); > + > + if (!last_reg) { > + last_reg =3D cc->gdb_num_core_regs; > + } > =20 > p =3D &cpu->gdb_regs; > while (*p) { > @@ -608,19 +614,21 @@ void gdb_register_coprocessor(CPUState *cpu, > } > =20 > s =3D g_new0(GDBRegisterState, 1); > - s->base_reg =3D cpu->gdb_num_regs; > + s->base_reg =3D last_reg; > s->num_regs =3D num_regs; > s->get_reg =3D get_reg; > s->set_reg =3D set_reg; > s->xml =3D xml; > =20 > /* Add to end of list. */ > - cpu->gdb_num_regs +=3D num_regs; > + last_reg +=3D num_regs; > *p =3D s; > if (g_pos) { > if (g_pos !=3D s->base_reg) { > fprintf(stderr, "Error: Bad gdb register numbering for '%s= '\n" > "Expected %d got %d\n", xml, g_pos, s->base_reg); > + } else { > + cpu->gdb_num_regs =3D last_reg; This bit looks wrong to me - it is updating the per-CPU count with the global value. Could you retest without this please? Regards, Andreas > } > } > } >=20 --=20 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 N=FCrnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imend=F6rffer; HRB 16746 AG N=FCrnbe= rg