[RFA] Fix PR python/18984
Commit Message
This fixes PR python/18984.
The bug is that gdbpy_solib_name uses GDB_PY_LL_ARG, whereas it should
use GDB_PY_LLU_ARG to avoid overflow.
Built and tested on x86-64 Fedora 23.
2016-05-18 Tom Tromey <tom@tromey.com>
PR python/18984:
* python/python.c (gdbpy_solib_name): Use GDB_PY_LLU_ARG.
2016-05-18 Tom Tromey <tom@tromey.com>
PR python/18984:
* gdb.python/py-shared.exp: Add solib_name test.
---
gdb/ChangeLog | 5 +++++
gdb/python/python.c | 4 ++--
gdb/testsuite/ChangeLog | 5 +++++
gdb/testsuite/gdb.python/py-shared.exp | 4 ++++
4 files changed, 16 insertions(+), 2 deletions(-)
Comments
Tom> + gdb_test "python print len(\[gdb.solib_name(0xffffffffffffffff)\])" "1"
Apparently my build is using Python 2, so this slipped through.
I'll fix up the tests in these patches for Python 3 compatibility.
Tom
>>>>> "Tom" == Tom Tromey <tom@tromey.com> writes:
Tom> This fixes PR python/18984.
Tom> The bug is that gdbpy_solib_name uses GDB_PY_LL_ARG, whereas it should
Tom> use GDB_PY_LLU_ARG to avoid overflow.
Tom> Built and tested on x86-64 Fedora 23.
Tom> 2016-05-18 Tom Tromey <tom@tromey.com>
Tom> PR python/18984:
Tom> * python/python.c (gdbpy_solib_name): Use GDB_PY_LLU_ARG.
Ping.
This one bit me again today, and the fix is particularly simple.
Tom
Hey Tom,
> Tom> This fixes PR python/18984.
> Tom> The bug is that gdbpy_solib_name uses GDB_PY_LL_ARG, whereas it should
> Tom> use GDB_PY_LLU_ARG to avoid overflow.
>
> Tom> Built and tested on x86-64 Fedora 23.
>
> Tom> 2016-05-18 Tom Tromey <tom@tromey.com>
>
> Tom> PR python/18984:
> Tom> * python/python.c (gdbpy_solib_name): Use GDB_PY_LLU_ARG.
>
> Ping.
>
> This one bit me again today, and the fix is particularly simple.
Sorry about the delay. The code patch looks good to me. For the testcase
patch, you said you'd be adjusting it for Python 3 as well? Just for
the avoidance of doubt, you're pre-approved on that as well. If there
are comments on it, we can address those later, as it wouldn't break
GDB anyways.
Thanks!
@@ -1,5 +1,10 @@
2016-05-18 Tom Tromey <tom@tromey.com>
+ PR python/18984:
+ * python/python.c (gdbpy_solib_name): Use GDB_PY_LLU_ARG.
+
+2016-05-18 Tom Tromey <tom@tromey.com>
+
* rust-lang.c (rust_subscript): Initialize "high".
2016-05-17 Simon Marchi <simon.marchi@ericsson.com>
@@ -696,9 +696,9 @@ gdbpy_solib_name (PyObject *self, PyObject *args)
{
char *soname;
PyObject *str_obj;
- gdb_py_longest pc;
+ gdb_py_ulongest pc;
- if (!PyArg_ParseTuple (args, GDB_PY_LL_ARG, &pc))
+ if (!PyArg_ParseTuple (args, GDB_PY_LLU_ARG, &pc))
return NULL;
soname = solib_name_from_address (current_program_space, pc);
@@ -1,3 +1,8 @@
+2016-05-18 Tom Tromey <tom@tromey.com>
+
+ PR python/18984:
+ * gdb.python/py-shared.exp: Add solib_name test.
+
2016-05-18 Simon Marchi <simon.marchi@ericsson.com>
* gdb.mi/mi-threads-interrupt.c: New file.
@@ -66,3 +66,7 @@ gdb_test "python print (gdb.solib_name(long(func1)))" "py-shared-sl.sl" "test fu
gdb_test "p &main" "" "main address"
gdb_py_test_silent_cmd "python main = gdb.history(0)" "Aquire main address" 1
gdb_test "python print (gdb.solib_name(long(main)))" "None" "test main solib location"
+
+if {[is_lp64_target]} {
+ gdb_test "python print len(\[gdb.solib_name(0xffffffffffffffff)\])" "1"
+}