aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/python/py-value.c3
-rw-r--r--gdb/testsuite/ChangeLog6
-rw-r--r--gdb/testsuite/gdb.python/py-value.exp11
4 files changed, 23 insertions, 3 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 9ea593d..a03163f 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,11 @@
2018-09-23 Tom Tromey <tom@tromey.com>
+ PR python/18170:
+ * python/py-value.c (valpy_int): Allow conversion from pointer
+ type.
+
+2018-09-23 Tom Tromey <tom@tromey.com>
+
PR python/20126:
* python/py-value.c (valpy_int): Respect type sign.
diff --git a/gdb/python/py-value.c b/gdb/python/py-value.c
index 5c6792f..26e91ff 100644
--- a/gdb/python/py-value.c
+++ b/gdb/python/py-value.c
@@ -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);
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 40523fa..c04f09a 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,5 +1,11 @@
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.
+
+2018-09-23 Tom Tromey <tom@tromey.com>
+
PR python/20126:
* gdb.python/py-value.exp (test_value_numeric_ops): Add
signed-ness conversion tests.
diff --git a/gdb/testsuite/gdb.python/py-value.exp b/gdb/testsuite/gdb.python/py-value.exp
index ccf8629..2234b1e 100644
--- a/gdb/testsuite/gdb.python/py-value.exp
+++ b/gdb/testsuite/gdb.python/py-value.exp
@@ -130,6 +130,11 @@ proc test_value_numeric_ops {} {
gdb_test "print (void *) 5" ".*" ""
gdb_test_no_output "python b = gdb.history (0)" ""
+ gdb_test "python print(int(b))" "5" "convert pointer to int"
+ if {!$gdb_py_is_py3k} {
+ gdb_test "python print(long(b))" "5" "convert pointer to long"
+ }
+
gdb_test "python print ('result = ' + str(a+5))" " = 0x7( <.*>)?" "add pointer value with python integer"
gdb_test "python print ('result = ' + str(b-2))" " = 0x3( <.*>)?" "subtract python integer from pointer value"
gdb_test "python print ('result = ' + str(b-a))" " = 3" "subtract two pointer values"
@@ -138,8 +143,10 @@ proc test_value_numeric_ops {} {
"result = r" "use value as string index"
gdb_test "python print ('result = ' + str((1,2,3)\[gdb.Value(0)\]))" \
"result = 1" "use value as tuple index"
- gdb_test "python print ('result = ' + str(\[1,2,3\]\[gdb.Value(0)\]))" \
- "result = 1" "use value as array index"
+ if {!$gdb_py_is_py3k} {
+ gdb_test "python print ('result = ' + str(\[1,2,3\]\[gdb.Value(0)\]))" \
+ "result = 1" "use value as array index"
+ }
gdb_test "python print('%x' % int(gdb.parse_and_eval('-1ull')))" \
"f+" "int conversion respect type sign"