From nobody Mon Feb 9 23:39:55 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 1544015713049688.4466608026107; Wed, 5 Dec 2018 05:15:13 -0800 (PST) Received: from localhost ([::1]:34162 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gUX1D-0000TH-Bc for importer@patchew.org; Wed, 05 Dec 2018 08:15:11 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33966) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gUWgP-00020P-SV for qemu-devel@nongnu.org; Wed, 05 Dec 2018 07:53:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gUWgP-000676-3j for qemu-devel@nongnu.org; Wed, 05 Dec 2018 07:53:41 -0500 Received: from mail.ispras.ru ([83.149.199.45]:50354) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gUWgO-00066w-RK for qemu-devel@nongnu.org; Wed, 05 Dec 2018 07:53:41 -0500 Received: from Misha-PC.lan02.inno (unknown [85.142.117.226]) by mail.ispras.ru (Postfix) with ESMTPSA id 23CAC540089; Wed, 5 Dec 2018 15:53:40 +0300 (MSK) From: Mikhail Abakumov To: qemu-devel@nongnu.org Date: Wed, 05 Dec 2018 15:53:38 +0300 Message-ID: <154401441847.8440.6378171982172059609.stgit@Misha-PC.lan02.inno> In-Reply-To: <154401431697.8440.845616703562380651.stgit@Misha-PC.lan02.inno> References: <154401431697.8440.845616703562380651.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 2 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; +}