aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDoug Evans <dje@google.com>2016-10-06 10:41:27 -0700
committerDoug Evans <dje@google.com>2016-10-06 10:41:27 -0700
commit33fa2c6e1b1e63599156f7d79de8c0a6ea69c8af (patch)
treeb933abe112c0e009cc5c027554b526483a391c93
parentd73f9c4bab1a0ec82007f9d36b8a7bf5d34f7bf6 (diff)
downloadgdb-33fa2c6e1b1e63599156f7d79de8c0a6ea69c8af.zip
gdb-33fa2c6e1b1e63599156f7d79de8c0a6ea69c8af.tar.gz
gdb-33fa2c6e1b1e63599156f7d79de8c0a6ea69c8af.tar.bz2
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.
-rw-r--r--gdb/ChangeLog4
-rw-r--r--gdb/python/py-value.c5
-rw-r--r--gdb/testsuite/ChangeLog5
-rw-r--r--gdb/testsuite/gdb.python/py-value.exp5
4 files changed, 18 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index b60b3e6..502d3de 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -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.
diff --git a/gdb/python/py-value.c b/gdb/python/py-value.c
index b0d3df3..46683b8 100644
--- a/gdb/python/py-value.c
+++ b/gdb/python/py-value.c
@@ -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. */
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 7157544..4722c34 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -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.
diff --git a/gdb/testsuite/gdb.python/py-value.exp b/gdb/testsuite/gdb.python/py-value.exp
index 57a9ba1..662c5b4 100644
--- a/gdb/testsuite/gdb.python/py-value.exp
+++ b/gdb/testsuite/gdb.python/py-value.exp
@@ -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"