From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=36867 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PZkCx-0002DW-Vu for qemu-devel@nongnu.org; Mon, 03 Jan 2011 08:12:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PZkCx-0000GY-09 for qemu-devel@nongnu.org; Mon, 03 Jan 2011 08:12:19 -0500 Received: from smtp.salomon.at ([193.186.16.13]:61456 helo=sauxb.salomon.at) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PZkCw-0000G9-MH for qemu-devel@nongnu.org; Mon, 03 Jan 2011 08:12:18 -0500 Received: from servex01.wamas.com (servex01.salomon.at [172.28.2.2]) by sauxb.salomon.at (8.12.10/8.12.10) with ESMTP id p03DCFh9014522 for ; Mon, 3 Jan 2011 14:12:16 +0100 (MET) Message-ID: <4D21CB2A.3000802@salomon.at> Date: Mon, 03 Jan 2011 14:12:10 +0100 From: Markus Duft MIME-Version: 1.0 Subject: Re: [Qemu-devel] Re: Debugging a 64-bit kernel in qemu References: <4D21A474.2040909@salomon.at> <4D21AFB5.9010605@web.de> <4D21BDFA.1050105@salomon.at> <4D21C0AA.8010907@salomon.at> <4D21C85A.5070207@web.de> In-Reply-To: <4D21C85A.5070207@web.de> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org On 01/03/2011 02:00 PM, Jan Kiszka wrote: > [ please keep CCs ] > > Am 03.01.2011 13:27, Markus Duft wrote: >> On 01/03/2011 01:15 PM, Markus Duft wrote: >>> On 01/03/2011 12:15 PM, Jan Kiszka wrote: >>> [snip] >> [snip] >>> actually, i find that Ted Harkington was right: in 0.11.1 i can debug 32 bit code with qemu-system-x86_64 well enough (which means i debugged all the 32 bit part of my kernel without ever seen _any_ problem/non-working feature/whatever). wouldn't it be better to have 64 bit debugging working in the 64 bit version, with 32 bit mode working mostly (with whatever small issues), rather than just completely dooming 64 bit debugging...? >>> >> >> owh - spoke too soon. there must be more to it: i tried reverting 5f30fa18ad043a841fe9f0c3917ac60f2519ebd1, which restores ability to debug my 64 bit kernel just fine, but now i get the packet too long when trying to debug 32 bit code.... > > Hmm, that's new. You definitely loose stack unwinding when using the > wrong mode, thus source-level debugging. hmmm... ok - that could be. my "source" in that case is all assembly for the 32 bit part ;) i didn't have such a close look at stack unwinding, as i'm all in one single 32 bit procedure. the next call is already a far call to 64 bit mode, which re-sets the stack anyway. > > I thought that thread suggested to set the arch explicitly, maybe I > misremembered that: > > set arch i386:x86_64 > tar rem :1234 arch is automatically at x86_64, as i start gdb giving it my elf64 kernel to load (which switches gdb to x86_64). however the first few instructions are 32 bit, switching to long mode then. > > If that is required, you probably load a 32-bit binary into gdb that > also contains 64-bit code in some section. I guess this is even more > confusing for gdb. the other way round: i have a elf64 binary, containing all 64 bit code, but with exactly _one_ section containing 32 bit bootstrap code, which switches to long mode. > >> >> wouldn't it be possible to implement some kind of explicit switch with qemu in the meantime, so i can choose what bitness i want to debug? I know, it's a problem with gdb under the hood, but still - it's really uncool debugging doesn't work in either of the two cases. > > Wasn't required so far. If you debug in either mode, "set arch" should > do the job. If you have to debug across mode switches, that knob won't > help anyway. that definitely doesn't help in either of my cases... :( behaviour stays the same, no matter if i'm currently breaking in 32 bit or 64 bit code, and setting either architecture in any of the situations. Regards, Markus > > Jan >