Don't use gdb_py_long_from_ulongest

Remove the gdb_py_long_from_ulongest defines and change the Python
layer to prefer gdb_py_object_from_ulongest.  While writing this I
noticed that the error handling in archpy_disassemble was incorrect --
it could call PyDict_SetItemString with a NULL value.  This patch also
fixes this bug.

gdb/ChangeLog
2020-09-15  Tom Tromey  <tromey@adacore.com>

	* python/python-internal.h (gdb_py_long_from_ulongest): Remove
	defines.
	* python/py-value.c (valpy_long): Use
	gdb_py_object_from_ulongest.
	* python/py-symtab.c (salpy_get_pc): Use
	gdb_py_object_from_ulongest.
	(salpy_get_last): Likewise.
	* python/py-record-btrace.c (recpy_bt_insn_pc): Use
	gdb_py_object_from_ulongest.
	* python/py-lazy-string.c (stpy_get_address): Use
	gdb_py_object_from_ulongest.
	* python/py-frame.c (frapy_pc): Use gdb_py_object_from_ulongest.
	* python/py-arch.c (archpy_disassemble): Use
	gdb_py_object_from_ulongest and gdb_py_object_from_longest.  Fix
	error handling.
This commit is contained in:
Tom Tromey 2020-09-15 11:08:56 -06:00
parent 4bde49dc81
commit d1cab9876d
8 changed files with 41 additions and 16 deletions

View file

@ -264,7 +264,7 @@ salpy_get_pc (PyObject *self, void *closure)
SALPY_REQUIRE_VALID (self, sal);
return gdb_py_long_from_ulongest (sal->pc);
return gdb_py_object_from_ulongest (sal->pc).release ();
}
/* Implementation of the get method for the 'last' attribute of
@ -278,7 +278,7 @@ salpy_get_last (PyObject *self, void *closure)
SALPY_REQUIRE_VALID (self, sal);
if (sal->end > 0)
return gdb_py_long_from_ulongest (sal->end - 1);
return gdb_py_object_from_ulongest (sal->end - 1).release ();
else
Py_RETURN_NONE;
}