qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Jan Kiszka <jan.kiszka@web.de>
To: Paul Brook <paul@codesourcery.com>
Cc: Andreas Schultz <aschultz@warp10.net>,
	qemu-devel@nongnu.org, kvm@vger.kernel.org
Subject: Re: [Qemu-devel] Re: gdbstub: packet reply is too long
Date: Sat, 20 Dec 2008 23:34:09 +0100	[thread overview]
Message-ID: <494D72E1.6020104@web.de> (raw)
In-Reply-To: <200812202208.34044.paul@codesourcery.com>

[-- Attachment #1: Type: text/plain, Size: 2555 bytes --]

Paul Brook wrote:
>> Well, I'm using gdb over qemu and kvm in precisely that hybrid
>> scenarios, but also in normal ones. Heavily. And I'm only able to do
>> this because of the workaround. But I'm willing to learn about scenarios
>> where it causes /regressions/.
> 
> I find that hard to believe. Doesn't it break horribly as soon as the CPU 
> switches modes?

It still breaks in very few corner cases, but that's (most probably) due
to the fact the gdb is not yet well prepared to switch sub-architectures
properly during runtime. However, it only breaks in cases that wouldn't
work without the switching anyway. And you can heal them by restarting gdb.

> 
> It's not just regressions that are important. It's the fact that once qemu has 
> your automatic switching hack it's impossible to make it work properly.

Interestingly, qemu used to work precisely like that before.

> 
>>>> There are internal issues in gdb (hard coupling of current and target
>>>> arch) that will not allow this to be fixed in the near future
>>> Really? I'm pretty sure other architectures already manage it.
>> What other archs are comparably weird like x86?
> 
> ARM has multiple instruction sets/cpu modes (and can mix the two within the 
> same process). PPC and MIPS also have something similar, though I'm not sure 
> how well they're supported by gdb.

Do those archs also have multiple register layouts that are coupled to
those different instruction sets? Do they switch the instruction sets
via 'set arch'? I think x86 is (historically) special here.

> 
> I suspect you may be approaching this the wrong way. Instead of trying to 
> switch architectures, you probably need to teach the 64-bit debugger how to 
> debug 32-bit code.

As I said, the problem in gdb is the hard coupling of the target
architecture (which could perfectly stay at x86_64 for a session) and
the current debugger architecture (which should be switched according to
the current CPU mode). Unfortunately, this is not yet feasible with gdb,
see gdbarch_update_p().

Fixing this (once understood what are all the problems preventing a fix
for several years now) is one thing, keeping the workaround for current
gdb in qemu is, IMHO, another. Right now we don't have a gdb fix in
sight, so I'm simply voting for reintroducing the workaround. That's
all. We can kill it or make it optional once the issue is solved. But we
should _not_ do this _before_ it is solved, causing only pain to people
who just want to use the gdbstub.

Jan


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 257 bytes --]

  reply	other threads:[~2008-12-20 22:35 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1229776952.22890.2.camel@ws-aschultz>
2008-12-20 15:49 ` [Qemu-devel] Re: gdbstub: packet reply is too long Jan Kiszka
2008-12-20 20:35   ` Paul Brook
2008-12-20 21:00     ` Jan Kiszka
2008-12-20 21:03       ` Paul Brook
2008-12-20 21:22         ` Jan Kiszka
2008-12-20 21:34           ` Paul Brook
2008-12-20 21:55             ` Jan Kiszka
2008-12-20 22:08               ` Paul Brook
2008-12-20 22:34                 ` Jan Kiszka [this message]
2008-12-20 22:46                   ` Paul Brook
2008-12-20 23:44                     ` Jan Kiszka
2008-12-26 23:30                       ` Daniel Jacobowitz
2008-12-29 14:58                         ` Jan Kiszka
2008-12-30 22:43                           ` Daniel Jacobowitz
2009-01-02 12:53                             ` Jan Kiszka
2009-01-03  1:53                               ` Jamie Lokier
2009-01-04 13:50                                 ` Jan Kiszka

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=494D72E1.6020104@web.de \
    --to=jan.kiszka@web.de \
    --cc=aschultz@warp10.net \
    --cc=kvm@vger.kernel.org \
    --cc=paul@codesourcery.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).