From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 48195 invoked by alias); 29 Nov 2016 15:48:26 -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 48014 invoked by uid 89); 29 Nov 2016 15:48:17 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-4.6 required=5.0 tests=AWL,BAYES_00,RP_MATCHES_RCVD,SPF_PASS autolearn=ham version=3.3.2 spammy=TRY, *args, target_ops, Tel X-HELO: mga14.intel.com Received: from mga14.intel.com (HELO mga14.intel.com) (192.55.52.115) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 29 Nov 2016 15:48:03 +0000 Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga103.fm.intel.com with ESMTP; 29 Nov 2016 07:48:02 -0800 X-ExtLoop1: 1 Received: from irsmsx108.ger.corp.intel.com ([163.33.3.3]) by orsmga004.jf.intel.com with ESMTP; 29 Nov 2016 07:48:01 -0800 Received: from irsmsx112.ger.corp.intel.com (10.108.20.5) by IRSMSX108.ger.corp.intel.com (163.33.3.3) with Microsoft SMTP Server (TLS) id 14.3.248.2; Tue, 29 Nov 2016 15:47:59 +0000 Received: from irsmsx104.ger.corp.intel.com ([169.254.5.52]) by irsmsx112.ger.corp.intel.com ([169.254.1.113]) with mapi id 14.03.0248.002; Tue, 29 Nov 2016 15:47:59 +0000 From: "Metzger, Markus T" To: "Wiederhake, Tim" , "gdb-patches@sourceware.org" CC: "palves@redhat.com" Subject: RE: [PATCH v3 5/8] python: Create Python bindings for record history. Date: Tue, 29 Nov 2016 15:48:00 -0000 Message-ID: References: <1479743318-24523-1-git-send-email-tim.wiederhake@intel.com> <1479743318-24523-6-git-send-email-tim.wiederhake@intel.com> In-Reply-To: <1479743318-24523-6-git-send-email-tim.wiederhake@intel.com> Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-IsSubscribed: yes X-SW-Source: 2016-11/txt/msg00955.txt.bz2 > -----Original Message----- > From: Wiederhake, Tim > Sent: Monday, November 21, 2016 4:49 PM > To: gdb-patches@sourceware.org > Cc: palves@redhat.com; Metzger, Markus T > Subject: [PATCH v3 5/8] python: Create Python bindings for record history. >=20 > This patch adds three new functions to the gdb module in Python: > - start_recording > - stop_recording > - current_recording > start_recording and current_recording return an object of the new type > gdb.Record, which can be used to access the recorded data. >=20 > 2016-11-21 Tim Wiederhake >=20 > gdb/ChangeLog >=20 > * Makefile.in (SUBDIR_PYTHON_OBS): Add python/py-record.o. > (SUBDIR_PYTHON_SRCS): Add python/py-record.c. > * python/py-record.c: New file. > * python/py-record.h: New file. > * python/python-internal.h (gdbpy_start_recording, > gdbpy_current_recording, gdpy_stop_recording, > gdbpy_initialize_record): New export. > * python/python.c (_initialize_python): Add gdbpy_initialize_record. > (python_GdbMethods): Add gdbpy_start_recording, > gdbpy_current_recording and gdbpy_stop_recording. > * target-debug.h (target_debug_print_struct_record_python_interface): > New define. > * target-delegates.c: Regenerate. > * target.c (target_record_python_interface): New function. > * target.h: Added struct record_python_interface forward declaration. > Export target_record_python_interface. > (struct target_ops): Add to_record_python_interface function. > +/* Python Record object. */ > + > +typedef struct > +{ > + PyObject_HEAD > + > + struct record_python_interface interface; You may want to document every field. > +static PyObject * > +recpy_method (PyObject *self, void* closure) > +{ > + recpy_record_object *obj =3D (recpy_record_object *) self; > + > + if (obj->interface.method =3D=3D NULL) > + return PyString_FromString (_("unknown")); Should this return None, instead? > + > + return PyString_FromString (obj->interface.method); > +} > + > +/* Implementation of record.format. */ > + > +static PyObject * > +recpy_format (PyObject *self, void* closure) > +{ > + recpy_record_object *obj =3D (recpy_record_object *) self; > + > + if (obj->interface.format =3D=3D NULL) > + return PyString_FromString (_("unknown")); Same here. > +/* Implementation of gdb.current_recording (self) -> gdb.Record. */ > + > +PyObject * > +gdbpy_current_recording (PyObject *self, PyObject *args) > +{ > + recpy_record_object* obj; > + > + obj =3D PyObject_New (recpy_record_object, &recpy_record_type); > + if (obj =3D=3D NULL) > + return NULL; > + > + memset (&obj->interface, 0, sizeof (struct record_python_interface)); How about "sizeof (obj->interface)" instead? > +/* Implementation of gdb.stop_recording (self) -> None. */ > + > +PyObject * > +gdbpy_stop_recording (PyObject *self, PyObject *args) > +{ > + TRY > + { > + execute_command_to_string ("record stop", 0); > + Py_RETURN_NONE; > + } > + CATCH (except, RETURN_MASK_ALL) > + { > + gdbpy_convert_exception (except); > + } > + END_CATCH > + > + return NULL; We shouldn't really get here, should we?=20 Thanks, Markus. Intel Deutschland GmbH Registered Address: Am Campeon 10-12, 85579 Neubiberg, Germany Tel: +49 89 99 8853-0, www.intel.de Managing Directors: Christin Eisenschmid, Christian Lamprechter Chairperson of the Supervisory Board: Nicole Lau Registered Office: Munich Commercial Register: Amtsgericht Muenchen HRB 186928