From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Tom Tromey Newsgroups: gmane.comp.gdb.patches,gmane.lisp.guile.user Subject: Re: [PATCH v2 02/13] script language API for GDB: extension.[ch] Date: Mon, 06 Jan 2014 14:53:47 -0700 Message-ID: <87r48kkc9g.fsf@fleche.redhat.com> References: <52a7f3e8.e7ed440a.1c58.020f@mx.google.com> <87vbyffcwu.fsf@fleche.redhat.com> <87txdklqk4.fsf@gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Trace: ger.gmane.org 1389045230 11644 80.91.229.3 (6 Jan 2014 21:53:50 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 6 Jan 2014 21:53:50 +0000 (UTC) Cc: gdb-patches@sourceware.org, guile-user@gnu.org To: ludo@gnu.org (Ludovic =?utf-8?Q?Court=C3=A8s?=) Original-X-From: gdb-patches-return-108904-gdb-gdb-patches=m.gmane.org@sourceware.org Mon Jan 06 22:53:58 2014 Return-path: Envelope-to: gdb-gdb-patches@plane.gmane.org Original-Received: from server1.sourceware.org ([209.132.180.131] helo=sourceware.org) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1W0I7R-0000MF-57 for gdb-gdb-patches@plane.gmane.org; Mon, 06 Jan 2014 22:53:57 +0100 DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:references:date:in-reply-to :message-id:mime-version:content-type:content-transfer-encoding; q=dns; s=default; b=AjuYgX28IqHcspiKUJrJZ9VBF1DjS3r7MIKhZgmfwC+ shCpEW7J/h8SzQGLu8+E+BdfPzqFlMFvVzmSJhWe8y5NdhUcD5sKiGJ/Q2PWW55k KEKUaU+Pou4p95FPUkfDB6DDIj9Evq4dUZlYNxZh6mDuPJdvOqLMnJBbxqrX228Y = DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:references:date:in-reply-to :message-id:mime-version:content-type:content-transfer-encoding; s=default; bh=8h0ipTXfkkoF4nmaoGriy/WNvlE=; b=pG41YLFTsjDHi/75B LiEFKrsIvNlUMC0pdRKsoijZEtzF5APLwJGGRg2FpZYZAzXsle3/9E9suoolGtHB ogUiCmwrfAYwhZ7JMJ3+IjfE43X4jVls9UMwfoPTWThM63O0Ydd384NHbnPQOCyV nRn13nmev+5VYOtATpoZCFF/u0= Original-Received: (qmail 24221 invoked by alias); 6 Jan 2014 21:53:54 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Original-Sender: gdb-patches-owner@sourceware.org Original-Received: (qmail 24211 invoked by uid 89); 6 Jan 2014 21:53:53 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-3.2 required=5.0 tests=AWL,BAYES_00,RP_MATCHES_RCVD,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mx1.redhat.com Original-Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 06 Jan 2014 21:53:52 +0000 Original-Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s06Lrn6H002142 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 6 Jan 2014 16:53:50 -0500 Original-Received: from barimba (ovpn-113-85.phx2.redhat.com [10.3.113.85]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s06Lrm9t023188 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Mon, 6 Jan 2014 16:53:49 -0500 In-Reply-To: <87txdklqk4.fsf@gnu.org> ("Ludovic \=\?utf-8\?Q\?Court\=C3\=A8s\=22'\?\= \=\?utf-8\?Q\?s\?\= message of "Fri, 03 Jan 2014 22:10:35 +0100") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) Xref: news.gmane.org gmane.comp.gdb.patches:93906 gmane.lisp.guile.user:10983 Archived-At: >>>>> "Ludovic" =3D=3D Ludovic Court=C3=A8s writes: Ludovic> I=E2=80=99m not sure I understand the problem. Ludovic> What are extension languages typically expected to do when the =E2= =80=98quit=E2=80=99 Ludovic> flag is set? The basic idea is that if some extension code is running, then C-c ought to interrupt that code in the way expected by programmers writing code in that language. Python provides a kind of low-level API to its equivalent of Guile's SCM_TICK and async stuff. So the approach we took in gdb was to unify gdb's implementation with Python's, when Python is enabled. This ensures that a SIGINT delivery is handled a single time -- by Python if Python code is running, and by gdb if gdb code is running. One approach for multiple extension languages might be to notice when switching languages and move the bit. However I didn't see any way to do this in the Guile API. In Python it can be accomplished with PyErr_SetInterrupt and PyOS_InterruptOccurred. Tom