From nobody Tue Feb 10 04:30:29 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1544098562688873.8608626559787; Thu, 6 Dec 2018 04:16:02 -0800 (PST) Received: from localhost ([::1]:40394 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gUsZS-0001nr-2W for importer@patchew.org; Thu, 06 Dec 2018 07:15:58 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41660) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gUsKU-000089-5C for qemu-devel@nongnu.org; Thu, 06 Dec 2018 07:00:34 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gUsKO-0005JX-HE for qemu-devel@nongnu.org; Thu, 06 Dec 2018 07:00:30 -0500 Received: from mail.ispras.ru ([83.149.199.45]:60086) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gUsKM-00059T-Bu for qemu-devel@nongnu.org; Thu, 06 Dec 2018 07:00:24 -0500 Received: from Misha-PC.lan02.inno (unknown [85.142.117.226]) by mail.ispras.ru (Postfix) with ESMTPSA id 9562954008B; Thu, 6 Dec 2018 15:00:18 +0300 (MSK) From: Mikhail Abakumov To: qemu-devel@nongnu.org Date: Thu, 06 Dec 2018 15:00:14 +0300 Message-ID: <154409761380.5432.1067124865535256250.stgit@Misha-PC.lan02.inno> In-Reply-To: <154409751316.5432.3325938832238028060.stgit@Misha-PC.lan02.inno> References: <154409751316.5432.3325938832238028060.stgit@Misha-PC.lan02.inno> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 83.149.199.45 Subject: [Qemu-devel] [PATCH v3 17/39] windbg: generate ExceptionStateChange and LoadSymbolsStateChange X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: sw@weilnetz.de, lprosek@redhat.com, dovgaluk@ispras.ru, rkagan@virtuozzo.com, pbonzini@redhat.com, den@openvz.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Mikhail Abakumov Signed-off-by: Pavel Dovgalyuk --- include/exec/windbgstub-utils.h | 3 +++ target/i386/windbgstub.c | 33 ++++++++++++++++++++++++++++++++- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/include/exec/windbgstub-utils.h b/include/exec/windbgstub-util= s.h index a28068eecd..794cb387b0 100644 --- a/include/exec/windbgstub-utils.h +++ b/include/exec/windbgstub-utils.h @@ -67,6 +67,9 @@ typedef struct PacketData { const char *kd_api_name(int id); const char *kd_pkt_type_name(int id); =20 +DBGKD_ANY_WAIT_STATE_CHANGE *kd_state_change_exc(CPUState *cs); +DBGKD_ANY_WAIT_STATE_CHANGE *kd_state_change_ls(CPUState *cs); + bool windbg_on_load(void); void windbg_on_reset(void); =20 diff --git a/target/i386/windbgstub.c b/target/i386/windbgstub.c index b2ac7a6d5f..37c5805818 100644 --- a/target/i386/windbgstub.c +++ b/target/i386/windbgstub.c @@ -161,7 +161,6 @@ void windbg_on_reset(void) #endif } =20 -__attribute__ ((unused)) /* unused yet */ static void kd_init_state_change(CPUState *cs, DBGKD_ANY_WAIT_STATE_CHANGE= *sc) { X86CPU *cpu =3D X86_CPU(cs); @@ -201,3 +200,35 @@ static void kd_init_state_change(CPUState *cs, DBGKD_A= NY_WAIT_STATE_CHANGE *sc) memset(cr->InstructionStream, 0, DBGKD_MAXSTREAM); stw_p(&cr->InstructionCount, 0); } + +DBGKD_ANY_WAIT_STATE_CHANGE *kd_state_change_exc(CPUState *cs) +{ + DBGKD_ANY_WAIT_STATE_CHANGE *sc =3D g_new0(DBGKD_ANY_WAIT_STATE_CHANGE= , 1); + DBGKM_EXCEPTION_RECORD64 *exc =3D &sc->u.Exception.ExceptionRecord; + X86CPU *cpu =3D X86_CPU(cs); + CPUX86State *env =3D &cpu->env; + + kd_init_state_change(cs, sc); + + stl_p(&sc->NewState, DbgKdExceptionStateChange); + sttul_p(&exc->ExceptionAddress, env->eip); + + /* TODO: Fix this hardcoded value. */ + stl_p(&exc->ExceptionCode, 0x80000003); + + return sc; +} + +DBGKD_ANY_WAIT_STATE_CHANGE *kd_state_change_ls(CPUState *cs) +{ + DBGKD_ANY_WAIT_STATE_CHANGE *sc =3D g_new0(DBGKD_ANY_WAIT_STATE_CHANGE= , 1); + + kd_init_state_change(cs, sc); + + stl_p(&sc->NewState, DbgKdLoadSymbolsStateChange); + + /* TODO: Path to load symbold (with extra array). */ + stl_p(&sc->u.LoadSymbols.PathNameLength, 0); + + return sc; +}