From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1836 invoked by alias); 25 Nov 2013 09:49:40 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 1805 invoked by uid 89); 25 Nov 2013 09:49:40 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.1 required=5.0 tests=AWL,BAYES_50,RDNS_NONE,SPF_PASS,URIBL_BLOCKED autolearn=no version=3.3.2 X-HELO: mx1.redhat.com Received: from Unknown (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 25 Nov 2013 09:48:38 +0000 Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id rAP9mTs0021439 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 25 Nov 2013 04:48:30 -0500 Received: from localhost.localdomain (ovpn-112-49.ams2.redhat.com [10.36.112.49]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id rAP9mSgJ001133; Mon, 25 Nov 2013 04:48:29 -0500 Message-ID: <52931CEC.7040407@redhat.com> Date: Mon, 25 Nov 2013 11:50:00 -0000 From: Phil Muldoon MIME-Version: 1.0 To: Nick Bull , gdb-patches@sourceware.org Subject: Re: [PATCH v2] Events when inferior is modified References: <51CDBD48.6010903@gmail.com> <87k3k7kbdy.fsf@fleche.redhat.com> <528A0A83.1080203@gmail.com> In-Reply-To: <528A0A83.1080203@gmail.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-IsSubscribed: yes X-SW-Source: 2013-11/txt/msg00760.txt.bz2 On 18/11/13 12:39, Nick Bull wrote: > This patch adds new observers, and corresponding Python events, for > various actions on an inferior: calling a function (by hand), > modifying registers or modifying memory. Thanks just a few nits and some questions. I did not see tests for these, and also, documentation? In any case, both are needed. Cheers, Phil > diff --git a/gdb/Makefile.in b/gdb/Makefile.in > index 975edbf..7775bde 100644 > --- a/gdb/Makefile.in > +++ b/gdb/Makefile.in > @@ -297,6 +297,7 @@ SUBDIR_PYTHON_OBS = \ > py-function.o \ > py-gdb-readline.o \ > py-inferior.o \ > + py-infcallevent.o \ I'd appreciate if you kept the alphabetical ordering here. > py-infthread.o \ > py-lazy-string.o \ > py-linetable.o \ > @@ -333,6 +334,7 @@ SUBDIR_PYTHON_SRCS = \ > python/py-function.c \ > python/py-gdb-readline.c \ > python/py-inferior.c \ > + python/py-infcallevent.c \ And here. > +py-infcallevent.o: $(srcdir)/python/py-infcallevent.c > + $(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-infcallevent.c > + $(POSTCOMPILE) > + > py-infthread.o: $(srcdir)/python/py-infthread.c > $(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-infthread.c > $(POSTCOMPILE) Ditto. > diff --git a/gdb/doc/observer.texi b/gdb/doc/observer.texi > index f753965..ab15725 100644 > --- a/gdb/doc/observer.texi > +++ b/gdb/doc/observer.texi > @@ -253,6 +253,22 @@ The trace state variable @var{tsv} is deleted. If @var{tsv} is > diff --git a/gdb/python/py-event.h b/gdb/python/py-event.h > index f0ff629..2f2da90 100644 > --- a/gdb/python/py-event.h > +++ b/gdb/python/py-event.h > @@ -105,6 +105,15 @@ typedef struct > extern int emit_continue_event (ptid_t ptid); > extern int emit_exited_event (const LONGEST *exit_code, struct inferior *inf); > > +typedef enum > +{ > + inferior_altered_pre_call, > + inferior_altered_post_call, > + inferior_altered_register_change, > + inferior_altered_memory_change > +} inferior_altered_kind; > + I'm kind of on the fence about the inferior_altered naming. A lot of things can alter an inferior which would make this a very broad event category. Like single stepping I would consider altering the inferior. With your memory changed event, would it fire on a breakpoint insertion? GDB does a lot of installing/uninstalling of breakpoints behind the scene in the inferior. Also, it would be super if we could split up the register and memory events with read/write events. What do you think? > diff --git a/gdb/python/py-infcallevent.c b/gdb/python/py-infcallevent.c > new file mode 100644 > index 0000000..68e70f1 > --- /dev/null > +++ b/gdb/python/py-infcallevent.c > @@ -0,0 +1,98 @@ > +/* Python interface to inferior function events. > + > + Copyright (C) 2009-2013 Free Software Foundation, Inc. > + If this is a new file, probably just 2013. > +/* Callback function which notifies observers when a continue event occurs. > + This function will create a new Python continue event object. > + Return -1 if emit fails. */ > + This comment attached to the function below looks pasted from another function? > +int > +emit_inferior_altered_event (inferior_altered_kind flag) > +{ > + PyObject *event; > + > + if (evregpy_no_listeners_p (gdb_py_events.inferior_altered)) > + return 0; > + > + event = create_inferior_call_event_object (flag); > + if (event != NULL) > + return evpy_emit_event (event, gdb_py_events.inferior_altered); > + return -1; > +} > + Cheers, Phil