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] 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


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