This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFC - Python] New ObjFile event


sorry, gdb/python/py-newobjfileevent.c has not been included in the
patch, here is its content:

-----
/* Python interface to new object file loading events.

   Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc.

   This file is part of GDB.

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 3 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */

#include "py-event.h"

static PyTypeObject new_objfile_event_object_type;

PyObject *
create_new_objfile_event_object (void)
{
  return create_event_object (&new_objfile_event_object_type);
}

/* Callback function which notifies observers when a new objfile event occurs.
   This function will create a new Python new_objfile event object.
   Return -1 if emit fails.  */

int
emit_new_objfile_event (struct objfile *objfile)
{
  PyObject *event;

  if (evregpy_no_listeners_p (gdb_py_events.newobjfile))
    return 0;

  event = create_new_objfile_event_object ();
  if (event)
    return evpy_emit_event (event, gdb_py_events.newobjfile);
  return -1;
}

GDBPY_NEW_EVENT_TYPE (new_objfile,
                      "gdb.NewObjFileEvent",
                      "NewObjFileEvent",
                      "GDB new object file event object",
                      event_object_type,
                      static);
---

On Mon, Mar 28, 2011 at 4:06 AM, Kevin Pouget <kevin.pouget@gmail.com> wrote:
> Hello,
>
> following this discussion at
> http://sourceware.org/ml/gdb/2011-03/msg00136.html, I would like to
> suggest a patch for the Python event system. Based on the ''exited",
> "cont", ... events, this patch allows a python script to register an
> interest to the loading of new object files in the debuggee. GDB
> observer "observer_attach_new_objfile" is used to trigger the Python
> callback.
>
> This patch completes the auto-loading feature
> (http://sourceware.org/gdb/current/onlinedocs/gdb/objfile_002dgdb_002epy-file.html#objfile_002dgdb_002epy-file),
> and, likewise, allows Python's "gdb.current_objfile ()" to return the current
> object file.
>
> Here is an example of it utilization:
>
>> def obj_handler (event):
>> ? ? ? if gdb.current_objfile () is not None:
>> ? ? ? ? ? ? ? print "-->",gdb.current_objfile ().filename
>> ? ? ? else:
>> ? ? ? ? ? ? ? print "---------------->Cleanup"
>>
>> gdb.events.newobjfile.connect (obj_handler)
>
>
> There is still one thing I'm not happy with in the code, it's how to
> 'properly' access "gdbpy_current_objfile" ? I commented out "static"
> and declared it "extern" when I needed it, but that's certainly not
> the best way:
>
> gdb/python/python.c
> /*static*/ struct objfile *gdbpy_current_objfile;
> gdb/python/py-inferior.c
> extern struct objfile *gdbpy_current_objfile;
>
>
> please let me know what you thing about it
>
> Cordially,
>
> Kevin
>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]