From patchwork Sun Oct 26 16:58:13 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wei-cheng Wang X-Patchwork-Id: 403331 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 51591140081 for ; Mon, 27 Oct 2014 08:13:10 +1100 (AEDT) Received: from localhost ([::1]:58395 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XiV7Y-0000gD-Ix for incoming@patchwork.ozlabs.org; Sun, 26 Oct 2014 17:13:04 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52939) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XiR8y-00044f-Q3 for qemu-devel@nongnu.org; Sun, 26 Oct 2014 12:58:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XiR8x-0002QM-O7 for qemu-devel@nongnu.org; Sun, 26 Oct 2014 12:58:16 -0400 Received: from mail-la0-x22a.google.com ([2a00:1450:4010:c03::22a]:46166) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XiR8x-0002Op-Fh for qemu-devel@nongnu.org; Sun, 26 Oct 2014 12:58:15 -0400 Received: by mail-la0-f42.google.com with SMTP id gf13so5588477lab.1 for ; Sun, 26 Oct 2014 09:58:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=kaAB1cm6mxdiW/pBDgsOS5qw84EHBkxIscnUVHGOhOY=; b=Wd6n5boBS1XB045jIdqXSU+jMC6XBQIKAmVw9//F02P8CyWp0KZ/7s1Y4gULQr05bR komMHn6ggXxzlZz/+yibmn0DLjxzV3cwlrTKV2UlOLaXDdYSsYbYJsfNGBTtLyTMEmnO HEMnwhPNLFuro5o8UR+u7b/VBigvAQVE2oK8gTrDvjkc5F+6bwurBkjAodouGfJQjWfU +nY+VVYRIhoJ0NGE+Qajcumd7jHFD/Fk0qPsmhZWmSegaloYNe+NSOvr1WzCZzkJaDCl b/25+qVCznTQDwwaqe5goRSXqpCUHG+iJH8kFUNa/QJJzvCwKdfClIKTtEQuSPpod+If RKoA== MIME-Version: 1.0 X-Received: by 10.112.28.75 with SMTP id z11mr17671874lbg.49.1414342693397; Sun, 26 Oct 2014 09:58:13 -0700 (PDT) Received: by 10.112.138.198 with HTTP; Sun, 26 Oct 2014 09:58:13 -0700 (PDT) Date: Mon, 27 Oct 2014 00:58:13 +0800 Message-ID: From: Wei-cheng Wang To: qemu-devel@nongnu.org X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2a00:1450:4010:c03::22a X-Mailman-Approved-At: Sun, 26 Oct 2014 17:12:43 -0400 Subject: [Qemu-devel] [PATCH] gdbstub: Convert gdb-signal to target signal when continuing. X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org QEMU should convert signal number reciving from GDB cilent from gdb-signal number to target sginal number - using gdb_signal_to_target(). In this case, GDB_SIG_BUS is 10. However, 10 is SIGUSR1 for target. So QEMU continues with the wrong signal number. #include #include void handle_signal (int sig) { puts ("Hello"); } int main () { signal (SIGBUS, handle_signal); kill (0, SIGBUS); return 0; } (gdb) target remote :25566 Remote debugging using :25566 0x00008b98 in _start () (gdb) c Continuing. Program received signal SIGBUS, Bus error. 0x0000e18c in kill () (gdb) c Continuing. Program terminated with signal SIGUSR1, User defined signal 1. ^^^^^^^ The program no longer exists. (gdb) Thansk, Wei-cheng Wang From: Cole Wang Date: Mon, 27 Oct 2014 00:33:18 +0800 Subject: [PATCH] gdbstub: Convert gdb-signal to target signal when continuing. Signed-off-by: Wei-cheng Wang --- gdbstub.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) } -- 1.9.1 diff --git a/gdbstub.c b/gdbstub.c index d1b5afd..cce5c69 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -851,7 +851,7 @@ static int gdb_handle_packet(GDBState *s, const char *line_buf) if (res == 's') { cpu_single_step(s->c_cpu, sstep_flags); } - s->signal = res_signal; + s->signal = gdb_signal_to_target(res_signal); gdb_continue(s); return RS_IDLE;