This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [RFC][Python] gdbpy_frame_stop_reason_string bug
On Wednesday 12 October 2011 16:28:24, Phil Muldoon wrote:
> Kevin Pouget <kevin.pouget@gmail.com> writes:
>
>
> > it looks like these enums are not documented, are they? I can't grep
> > 'FRAME_UNWIND_NO_REASON' in gdb.texinfo
>
> Yeah, that at least is a bug for sure.
>
> > ('2' was a bad example, but the reason why I first used '0' was
> > because it was returned by Frame.unwind_stop_reason(), as depicted in
> > the first mail)
> > by the way, python print
> > gdb.frame_stop_reason_string(gdb.FRAME_UNWIND_FIRST_ERROR) crashes the
> > same way, there is certainly a few more lines to fix on the Python
> > side
>
> I can look at this, or you can hack on it. I don't mind.
I found this:
/* Note: These would probably be best exposed as class attributes of
Frame, but I don't know how to do it except by messing with the
type's dictionary. That seems too messy. */
PyModule_AddIntConstant (gdb_module, "NORMAL_FRAME", NORMAL_FRAME);
PyModule_AddIntConstant (gdb_module, "DUMMY_FRAME", DUMMY_FRAME);
PyModule_AddIntConstant (gdb_module, "INLINE_FRAME", INLINE_FRAME);
PyModule_AddIntConstant (gdb_module, "TAILCALL_FRAME", TAILCALL_FRAME);
PyModule_AddIntConstant (gdb_module, "SIGTRAMP_FRAME", SIGTRAMP_FRAME);
PyModule_AddIntConstant (gdb_module, "ARCH_FRAME", ARCH_FRAME);
PyModule_AddIntConstant (gdb_module, "SENTINEL_FRAME", SENTINEL_FRAME);
PyModule_AddIntConstant (gdb_module,
"FRAME_UNWIND_NO_REASON", UNWIND_NO_REASON);
PyModule_AddIntConstant (gdb_module,
"FRAME_UNWIND_NULL_ID", UNWIND_NULL_ID);
PyModule_AddIntConstant (gdb_module,
"FRAME_UNWIND_FIRST_ERROR", UNWIND_FIRST_ERROR);
PyModule_AddIntConstant (gdb_module,
"FRAME_UNWIND_INNER_ID", UNWIND_INNER_ID);
PyModule_AddIntConstant (gdb_module,
"FRAME_UNWIND_SAME_ID", UNWIND_SAME_ID);
PyModule_AddIntConstant (gdb_module,
"FRAME_UNWIND_NO_SAVED_PC", UNWIND_NO_SAVED_PC);
We should definitely reimplement these enums in a table in a
.def file. That's 2 places already that map the enums to
something else. This one is missing UNWIND_UNAVAILABLE.
And what do you think of making UNWIND_FIRST_ERROR
an alias like in my patch? Do you think that's likely
to break anything?
--
Pedro Alves