Fix gdb.Value->python conversion for large unsigned ints.

gdb/ChangeLog:

	* python/py-value.c (valpy_long): Handle unsigned values.

gdb/testsuite/ChangeLog:

	* gdb.python/py-value.exp (test_value_creation): Add test for large
	unsigned 64-bit value.
This commit is contained in:
Doug Evans 2016-10-06 10:41:27 -07:00
parent d73f9c4bab
commit 33fa2c6e1b
4 changed files with 18 additions and 1 deletions

View File

@ -1,3 +1,7 @@
2016-10-06 Doug Evans <dje@google.com>
* python/py-value.c (valpy_long): Handle unsigned values.
2016-10-06 Simon Marchi <simon.marchi@ericsson.com>
* frame.h: Forward-declare struct ui_out.

View File

@ -1518,7 +1518,10 @@ valpy_long (PyObject *self)
}
END_CATCH
return gdb_py_long_from_longest (l);
if (TYPE_UNSIGNED (type))
return gdb_py_long_from_ulongest (l);
else
return gdb_py_long_from_longest (l);
}
/* Implements conversion to float. */

View File

@ -1,3 +1,8 @@
2016-10-06 Doug Evans <dje@google.com>
* gdb.python/py-value.exp (test_value_creation): Add test for large
unsigned 64-bit value.
2016-10-06 Tom Tromey <tom@tromey.com>
* gdb.compile/compile.exp: Change java tests to rust.

View File

@ -54,10 +54,15 @@ proc test_value_creation {} {
if { $gdb_py_is_py3k == 0 } {
gdb_py_test_silent_cmd "python i = gdb.Value (5L)" "create long value" 1
}
gdb_py_test_silent_cmd "python l = gdb.Value(0xffffffff12345678)" "create large unsigned 64-bit value" 1
gdb_test "python print long(l)" "18446744069720004216" "large unsigned 64-bit int conversion to python"
gdb_py_test_silent_cmd "python f = gdb.Value (1.25)" "create double value" 1
gdb_py_test_silent_cmd "python a = gdb.Value ('string test')" "create 8-bit string value" 1
gdb_test "python print (a)" "\"string test\"" "print 8-bit string"
gdb_test "python print (a.__class__)" "<(type|class) 'gdb.Value'>" "verify type of 8-bit string"
if { $gdb_py_is_py3k == 0 } {
gdb_py_test_silent_cmd "python a = gdb.Value (u'unicode test')" "create unicode value" 1
gdb_test "python print (a)" "\"unicode test\"" "print Unicode string"