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] [PATCH] Provide the ability to write the frame unwinder in Python


> Nit: we are setting the register here.
Fixed.

>> +        _("When non-zero, Pythin unwinder debugging is enabled."),
>
> "Python"
Fixed.

> Still no support for register names.
Registers can be retrieved by name, please see
gdb/testsuite/gdb.python/py-unwind.py as an example.

>> +import gdb
>> +from gdb.sniffer import Sniffer
>> +
>> +class TestSniffer(Sniffer):
>
> I still think it's much better to call these "unwinders".  You say that
> it's the terminology that GDB uses but that's not really the case --
> "sniffer" names part of the unwinder interface, which Python and Guile
> implement the whole of.  You chose "unwinder" as the documentation
> heading and the file name; why introduce a new term to the user?
Renamed all but SnifferInfo.

2015-03-28  Sasha Smundak  <asmundak@google.com>

        * Makefile.in (SUBDIR_PYTHON_OBJS): Add py-unwind.o.
        (SUBDIR_PYTHON_SRCS): Add py-unwind.c.
        (py-unwind.o): New recipe.
        * NEWS: mention Python frame unwinding.
        * data-directory/Makefile.in (PYTHON_FILE_LIST):  Add unwinders.py.
        * doc/python.texi (Writing a Frame Unwinder in Python): Add
        section.
        * python/lib/gdb/__init__.py (packages): Add frame_unwinders list.
        * python/lib/gdb/command/unwinders.py: New file, implements GDB
        commands to list/enable/disable Python unwinders.
        * python/lib/gdb/function/unwinders.py: New file, implements
        execute_unwinders function.
        * python/lib/gdb/unwinder.py: New file, contains Unwinder class and
        register_unwinder function.
        * python/py-objfile.c (objfile_object): Add frame_unwinders field.
        (objfpy_dealloc): Decrement frame_unwinders reference count.
        (objfpy_initialize): Create frame_unwinders list.
        (objfpy_get_frame_unwinders): Implement Objfile.frame_unwinders
        getter.
        (objfpy_set_frame_unwinders): Implement Objfile.frame_unwinders
        setter.
        (objfile_getset): Add frame_unwinders attribute to Objfile.
        * python/py-progspace.c (pspace_object): Add frame_unwinders field.
        (pspy_dealloc): Decrement frame_unwinders reference count.
        (pspy_initialize): Create frame_unwinders list.
        (pspy_get_frame_unwinders): Implement gdb.Progspace.frame_unwinders
        getter.
        (pspy_set_frame_unwinders): Implement gdb.Progspace.frame_unwinders
        setter.
        (pspy_getset): Add frame_unwinders attribute to gdb.Progspace.
        * python/py-unwind.c: New file, implements Python frame unwinders
        interface.
        * python/python-internal.h (pspy_get_name_unwinders): New prototype.
        (objpy_get_frame_unwinders): New prototype.
        (gdbpy_initialize_unwind): New prototype.
        * python/python.c (gdbpy_apply_type_printers): Call
        gdbpy_initialize_unwind.

2015-03-28  Sasha Smundak  <asmundak@google.com>

        * gdb.python/py-unwind-maint.c: Test program for py-unwind-maint.
        * gdb.python/py-unwind-maint.exp: Tests unwinder-related GDB
        commands.
        * gdb.python/py-unwind-maint.py: Pythons frame unwinders for the test.
        * gdb.python/py-unwind.c: Test program for the py-unwind test.
        * gdb.python/py-unwind.exp: Python frame unwinders test.
        * gdb.python/py-unwind.py: Python frame unwinder tested by
        py-unwind test.

Attachment: patch8.diff
Description: Text document


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