Allow conversion of pointers to Python int

PR python/18170 questions why it's not possible to convert a pointer
value to a Python int.

Digging a bit shows that the Python 2.7 int() constructor will happily
return a long in some cases.  And, it seems gdb already understands
this in other places -- this is what gdb_py_object_from_longest
handles.

So, this patch simply extends valpy_int to allow pointer conversions,
as valpy_long does.

gdb/ChangeLog
2018-09-23  Tom Tromey  <tom@tromey.com>

	PR python/18170:
	* python/py-value.c (valpy_int): Allow conversion from pointer
	type.

gdb/testsuite/ChangeLog
2018-09-23  Tom Tromey  <tom@tromey.com>

	PR python/18170:
	* gdb.python/py-value.exp (test_value_numeric_ops): Add tests to
	convert pointers to int and long.
This commit is contained in:
Tom Tromey
2018-09-14 23:20:58 -06:00
parent 1c1e54f6b4
commit f5769a2c69
4 changed files with 23 additions and 3 deletions

View File

@ -1503,7 +1503,8 @@ valpy_int (PyObject *self)
value = value_cast (type, value);
}
if (!is_integral_type (type))
if (!is_integral_type (type)
&& TYPE_CODE (type) != TYPE_CODE_PTR)
error (_("Cannot convert value to int."));
l = value_as_long (value);