aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
Diffstat (limited to 'gdb')
-rw-r--r--gdb/NEWS3
-rw-r--r--gdb/README2
-rwxr-xr-xgdb/configure78
-rw-r--r--gdb/configure.ac18
-rw-r--r--gdb/doc/python.texi2
-rw-r--r--gdb/python/lib/gdb/__init__.py2
-rw-r--r--gdb/python/lib/gdb/command/explore.py22
-rw-r--r--gdb/python/lib/gdb/printer/bound_registers.py7
-rw-r--r--gdb/python/lib/gdb/printing.py9
-rw-r--r--gdb/python/lib/gdb/xmethod.py8
-rw-r--r--gdb/python/py-arch.c6
-rw-r--r--gdb/python/py-evts.c6
-rw-r--r--gdb/python/py-framefilter.c6
-rw-r--r--gdb/python/py-membuf.c73
-rw-r--r--gdb/python/py-param.c8
-rw-r--r--gdb/python/py-record-btrace.c17
-rw-r--r--gdb/python/py-type.c13
-rw-r--r--gdb/python/py-utils.c47
-rw-r--r--gdb/python/py-value.c66
-rw-r--r--gdb/python/python-internal.h10
-rw-r--r--gdb/python/python.c19
-rw-r--r--gdb/testsuite/gdb.python/py-inferior.exp6
-rw-r--r--gdb/testsuite/gdb.python/py-mi-var-info-path-expression.py12
-rw-r--r--gdb/testsuite/gdb.python/py-record-btrace.exp6
-rw-r--r--gdb/testsuite/gdb.python/py-send-packet.py58
-rw-r--r--gdb/testsuite/gdb.python/py-shared.exp7
-rw-r--r--gdb/testsuite/gdb.python/py-value.exp40
-rw-r--r--gdb/testsuite/lib/gdb.exp12
28 files changed, 61 insertions, 502 deletions
diff --git a/gdb/NEWS b/gdb/NEWS
index e7f163e..e100627 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -5,6 +5,9 @@
* GDB now supports hardware watchpoints on FreeBSD/Aarch64.
+* Remove support for building against Python 2, it is now only possible to
+ build GDB against Python 3.
+
* Python API
** New function gdb.format_address(ADDRESS, PROGSPACE, ARCHITECTURE),
diff --git a/gdb/README b/gdb/README
index e65c5ea..bd5a88f 100644
--- a/gdb/README
+++ b/gdb/README
@@ -506,7 +506,7 @@ more obscure GDB `configure' options are not listed here.
GDB scripting much more powerful than the restricted CLI
scripting language. If your host does not have Python installed,
you can find it on `http://www.python.org/download/'. The oldest
- version of Python supported by GDB is 2.6. The optional argument
+ version of Python supported by GDB is 3.2. The optional argument
PYTHON is used to find the Python headers and libraries. It can
be either the name of a Python executable, or the name of the
directory in which Python is installed.
diff --git a/gdb/configure b/gdb/configure
index b34baff..7ae8a2a 100755
--- a/gdb/configure
+++ b/gdb/configure
@@ -11262,81 +11262,12 @@ $as_echo_n "checking for python... " >&6; }
int
main ()
{
-Py_Initialize ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- have_libpython=yes
- found_usable_python=yes
- PYTHON_CPPFLAGS=$new_CPPFLAGS
- PYTHON_LIBS=$new_LIBS
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- CPPFLAGS=$save_CPPFLAGS
- LIBS=$save_LIBS
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${found_usable_python}" >&5
-$as_echo "${found_usable_python}" >&6; }
-
- elif test "${have_python_config}" != failed; then
- if test "${have_libpython}" = no; then
-
-
- new_CPPFLAGS=${python_includes}
- new_LIBS="-lpython2.7 ${python_libs}"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for python" >&5
-$as_echo_n "checking for python... " >&6; }
- save_CPPFLAGS=$CPPFLAGS
- save_LIBS=$LIBS
- CPPFLAGS="$CPPFLAGS $new_CPPFLAGS"
- LIBS="$new_LIBS $LIBS"
- found_usable_python=no
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include "Python.h"
-int
-main ()
-{
-Py_Initialize ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- have_libpython=yes
- found_usable_python=yes
- PYTHON_CPPFLAGS=$new_CPPFLAGS
- PYTHON_LIBS=$new_LIBS
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- CPPFLAGS=$save_CPPFLAGS
- LIBS=$save_LIBS
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${found_usable_python}" >&5
-$as_echo "${found_usable_python}" >&6; }
- fi
- if test "${have_libpython}" = no; then
+ #if PY_MAJOR_VERSION != 3
+ # error "We only support Python 3"
+ #endif
+ Py_Initialize ();
-
- new_CPPFLAGS=${python_includes}
- new_LIBS="-lpython2.6 ${python_libs}"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for python" >&5
-$as_echo_n "checking for python... " >&6; }
- save_CPPFLAGS=$CPPFLAGS
- save_LIBS=$LIBS
- CPPFLAGS="$CPPFLAGS $new_CPPFLAGS"
- LIBS="$new_LIBS $LIBS"
- found_usable_python=no
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include "Python.h"
-int
-main ()
-{
-Py_Initialize ();
;
return 0;
}
@@ -11354,7 +11285,6 @@ rm -f core conftest.err conftest.$ac_objext \
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${found_usable_python}" >&5
$as_echo "${found_usable_python}" >&6; }
- fi
fi
if test "${have_libpython}" = no; then
diff --git a/gdb/configure.ac b/gdb/configure.ac
index bc8925d..310c765 100644
--- a/gdb/configure.ac
+++ b/gdb/configure.ac
@@ -717,7 +717,12 @@ AC_DEFUN([AC_TRY_LIBPYTHON],
LIBS="$new_LIBS $LIBS"
found_usable_python=no
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include "Python.h"]],
- [[Py_Initialize ();]])],
+ [[
+ #if PY_MAJOR_VERSION != 3
+ # error "We only support Python 3"
+ #endif
+ Py_Initialize ();
+ ]])],
[have_libpython_var=yes
found_usable_python=yes
PYTHON_CPPFLAGS=$new_CPPFLAGS
@@ -733,7 +738,6 @@ dnl no - Don't include python support.
dnl yes - Include python support, error if it's missing.
dnl If we find python in $PATH, use it to fetch configure options,
dnl otherwise assume the compiler can find it with no help from us.
-dnl Python 2.7 and 2.6 are tried in turn.
dnl auto - Same as "yes", but if python is missing from the system,
dnl fall back to "no".
dnl /path/to/python/exec-prefix -
@@ -742,7 +746,6 @@ dnl If /path/to/python/exec-prefix/bin/python exists, use it to find
dnl the compilation parameters. Otherwise use
dnl -I/path/to/python/exec-prefix/include,
dnl -L/path/to/python/exec-prefix/lib.
-dnl Python 2.7 and 2.6 are tried in turn.
dnl NOTE: This case is historical. It is what was done for 7.0/7.1
dnl but is deprecated.
dnl /path/to/python/executable -
@@ -877,15 +880,6 @@ else
if test "${have_python_config}" = yes; then
AC_TRY_LIBPYTHON(have_libpython,
${python_includes}, ${python_libs})
- elif test "${have_python_config}" != failed; then
- if test "${have_libpython}" = no; then
- AC_TRY_LIBPYTHON(have_libpython,
- ${python_includes}, "-lpython2.7 ${python_libs}")
- fi
- if test "${have_libpython}" = no; then
- AC_TRY_LIBPYTHON(have_libpython,
- ${python_includes}, "-lpython2.6 ${python_libs}")
- fi
fi
if test "${have_libpython}" = no; then
diff --git a/gdb/doc/python.texi b/gdb/doc/python.texi
index 50b0fc8..7c414b0 100644
--- a/gdb/doc/python.texi
+++ b/gdb/doc/python.texi
@@ -18,8 +18,6 @@
You can extend @value{GDBN} using the @uref{http://www.python.org/,
Python programming language}. This feature is available only if
@value{GDBN} was configured using @option{--with-python}.
-@value{GDBN} can be built against either Python 2 or Python 3; which
-one you have depends on this configure-time option.
@cindex python directory
Python scripts used by @value{GDBN} should be installed in
diff --git a/gdb/python/lib/gdb/__init__.py b/gdb/python/lib/gdb/__init__.py
index 5f63bce..a52f6b4 100644
--- a/gdb/python/lib/gdb/__init__.py
+++ b/gdb/python/lib/gdb/__init__.py
@@ -22,7 +22,7 @@ from contextlib import contextmanager
# Python 3 moved "reload"
if sys.version_info >= (3, 4):
from importlib import reload
-elif sys.version_info[0] > 2:
+else:
from imp import reload
from _gdb import *
diff --git a/gdb/python/lib/gdb/command/explore.py b/gdb/python/lib/gdb/command/explore.py
index ea49c38..c03bef3 100644
--- a/gdb/python/lib/gdb/command/explore.py
+++ b/gdb/python/lib/gdb/command/explore.py
@@ -19,10 +19,6 @@
import gdb
import sys
-if sys.version_info[0] > 2:
- # Python 3 renamed raw_input to input
- raw_input = input
-
class Explorer(object):
"""Internal class which invokes other explorers."""
@@ -172,7 +168,7 @@ class Explorer(object):
so that the exploration session can shift back to the parent value.
Useful when exploring values.
"""
- raw_input("\nPress enter to return to parent value: ")
+ input("\nPress enter to return to parent value: ")
@staticmethod
def return_to_enclosing_type():
@@ -187,7 +183,7 @@ class Explorer(object):
so that the exploration session can shift back to the enclosing type.
Useful when exploring types.
"""
- raw_input("\nPress enter to return to enclosing type: ")
+ input("\nPress enter to return to enclosing type: ")
class ScalarExplorer(object):
@@ -244,7 +240,7 @@ class PointerExplorer(object):
"'%s' is a pointer to a value of type '%s'"
% (expr, str(value.type.target()))
)
- option = raw_input(
+ option = input(
"Continue exploring it as a pointer to a single " "value [y/n]: "
)
if option == "y":
@@ -264,13 +260,13 @@ class PointerExplorer(object):
)
return False
- option = raw_input("Continue exploring it as a pointer to an " "array [y/n]: ")
+ option = input("Continue exploring it as a pointer to an " "array [y/n]: ")
if option == "y":
while True:
index = 0
try:
index = int(
- raw_input(
+ input(
"Enter the index of the element you "
"want to explore in '%s': " % expr
)
@@ -338,7 +334,7 @@ class ArrayExplorer(object):
index = 0
try:
index = int(
- raw_input(
+ input(
"Enter the index of the element you want to "
"explore in '%s': " % expr
)
@@ -354,7 +350,7 @@ class ArrayExplorer(object):
str(element)
except gdb.MemoryError:
print("Cannot read value at index %d." % index)
- raw_input("Press enter to continue... ")
+ input("Press enter to continue... ")
return True
Explorer.explore_expr(
@@ -474,7 +470,7 @@ class CompoundExplorer(object):
print("")
if has_explorable_fields:
- choice = raw_input("Enter the field number of choice: ")
+ choice = input("Enter the field number of choice: ")
if choice in choice_to_compound_field_map:
Explorer.explore_expr(
choice_to_compound_field_map[choice][0],
@@ -550,7 +546,7 @@ class CompoundExplorer(object):
print("")
if len(choice_to_compound_field_map) > 0:
- choice = raw_input("Enter the field number of choice: ")
+ choice = input("Enter the field number of choice: ")
if choice in choice_to_compound_field_map:
if is_child:
new_name = "%s '%s' of %s" % (
diff --git a/gdb/python/lib/gdb/printer/bound_registers.py b/gdb/python/lib/gdb/printer/bound_registers.py
index f8ce9ea..7cb6e8f 100644
--- a/gdb/python/lib/gdb/printer/bound_registers.py
+++ b/gdb/python/lib/gdb/printer/bound_registers.py
@@ -18,11 +18,6 @@ import sys
import gdb.printing
-if sys.version_info[0] > 2:
- # Python 3 removed basestring and long
- basestring = str
- long = int
-
class MpxBound128Printer:
"""Adds size field to a mpx __gdb_builtin_type_bound128 type."""
@@ -33,7 +28,7 @@ class MpxBound128Printer:
def to_string(self):
upper = self.val["ubound"]
lower = self.val["lbound"]
- size = (long)((upper) - (lower))
+ size = upper - lower
if size > -1:
size = size + 1
result = "{lbound = %s, ubound = %s} : size %s" % (lower, upper, size)
diff --git a/gdb/python/lib/gdb/printing.py b/gdb/python/lib/gdb/printing.py
index 93d61f1..e208e88 100644
--- a/gdb/python/lib/gdb/printing.py
+++ b/gdb/python/lib/gdb/printing.py
@@ -21,11 +21,6 @@ import gdb.types
import re
import sys
-if sys.version_info[0] > 2:
- # Python 3 removed basestring and long
- basestring = str
- long = int
-
class PrettyPrinter(object):
"""A basic pretty-printer.
@@ -132,7 +127,7 @@ def register_pretty_printer(obj, printer, replace=False):
# Printers implemented as functions are old-style. In order to not risk
# breaking anything we do not check __name__ here.
if hasattr(printer, "name"):
- if not isinstance(printer.name, basestring):
+ if not isinstance(printer.name, str):
raise TypeError("printer name is not a string")
# If printer provides a name, make sure it doesn't contain ";".
# Semicolon is used by the info/enable/disable pretty-printer commands
@@ -232,7 +227,7 @@ class _EnumInstance:
def to_string(self):
flag_list = []
- v = long(self.val)
+ v = int(self.val)
any_found = False
for (e_name, e_value) in self.enumerators:
if v & e_value != 0:
diff --git a/gdb/python/lib/gdb/xmethod.py b/gdb/python/lib/gdb/xmethod.py
index 4c3a522..c69ea99 100644
--- a/gdb/python/lib/gdb/xmethod.py
+++ b/gdb/python/lib/gdb/xmethod.py
@@ -21,12 +21,6 @@ import re
import sys
-if sys.version_info[0] > 2:
- # Python 3 removed basestring and long
- basestring = str
- long = int
-
-
class XMethod(object):
"""Base class (or a template) for an xmethod description.
@@ -223,7 +217,7 @@ def _validate_xmethod_matcher(matcher):
return TypeError("Xmethod matcher is missing attribute: name")
if not hasattr(matcher, "enabled"):
return TypeError("Xmethod matcher is missing attribute: enabled")
- if not isinstance(matcher.name, basestring):
+ if not isinstance(matcher.name, str):
return TypeError("Attribute 'name' of xmethod matcher is not a " "string")
if matcher.name.find(";") >= 0:
return ValueError("Xmethod matcher name cannot contain ';' in it")
diff --git a/gdb/python/py-arch.c b/gdb/python/py-arch.c
index e6dfb24..cc217df 100644
--- a/gdb/python/py-arch.c
+++ b/gdb/python/py-arch.c
@@ -148,12 +148,6 @@ archpy_disassemble (PyObject *self, PyObject *args, PyObject *kw)
conversion process. */
if (PyLong_Check (end_obj))
end = PyLong_AsUnsignedLongLong (end_obj);
-#if PY_MAJOR_VERSION == 2
- else if (PyInt_Check (end_obj))
- /* If the end_pc value is specified without a trailing 'L', end_obj will
- be an integer and not a long integer. */
- end = PyInt_AsLong (end_obj);
-#endif
else
{
PyErr_SetString (PyExc_TypeError,
diff --git a/gdb/python/py-evts.c b/gdb/python/py-evts.c
index 457825c..23a5d75 100644
--- a/gdb/python/py-evts.c
+++ b/gdb/python/py-evts.c
@@ -20,7 +20,6 @@
#include "defs.h"
#include "py-events.h"
-#ifdef IS_PY3K
static struct PyModuleDef EventModuleDef =
{
PyModuleDef_HEAD_INIT,
@@ -33,7 +32,6 @@ static struct PyModuleDef EventModuleDef =
NULL,
NULL
};
-#endif
/* Initialize python events. */
@@ -53,11 +51,7 @@ add_new_registry (eventregistry_object **registryp, const char *name)
int
gdbpy_initialize_py_events (void)
{
-#ifdef IS_PY3K
gdb_py_events.module = PyModule_Create (&EventModuleDef);
-#else
- gdb_py_events.module = Py_InitModule ("events", NULL);
-#endif
if (!gdb_py_events.module)
return -1;
diff --git a/gdb/python/py-framefilter.c b/gdb/python/py-framefilter.c
index e6eb1ec..0170fe6 100644
--- a/gdb/python/py-framefilter.c
+++ b/gdb/python/py-framefilter.c
@@ -920,11 +920,7 @@ py_print_frame (PyObject *filter, frame_filter_flags flags,
function = function_to_free.get ();
}
- else if (PyLong_Check (py_func.get ())
-#if PY_MAJOR_VERSION == 2
- || PyInt_Check (py_func.get ())
-#endif
- )
+ else if (PyLong_Check (py_func.get ()))
{
CORE_ADDR addr;
struct bound_minimal_symbol msymbol;
diff --git a/gdb/python/py-membuf.c b/gdb/python/py-membuf.c
index 74cc0fb..348dfa3 100644
--- a/gdb/python/py-membuf.c
+++ b/gdb/python/py-membuf.c
@@ -54,15 +54,7 @@ gdbpy_buffer_to_membuf (gdb::unique_xmalloc_ptr<gdb_byte> buffer,
membuf_obj->addr = address;
membuf_obj->length = length;
- PyObject *result;
-#ifdef IS_PY3K
- result = PyMemoryView_FromObject ((PyObject *) membuf_obj.get ());
-#else
- result = PyBuffer_FromReadWriteObject ((PyObject *) membuf_obj.get (), 0,
- Py_END_OF_BUFFER);
-#endif
-
- return result;
+ return PyMemoryView_FromObject ((PyObject *) membuf_obj.get ());
}
/* Destructor for gdb.Membuf objects. */
@@ -88,8 +80,6 @@ which is %s bytes long."),
pulongest (membuf_obj->length));
}
-#ifdef IS_PY3K
-
static int
get_buffer (PyObject *self, Py_buffer *buf, int flags)
{
@@ -107,54 +97,6 @@ get_buffer (PyObject *self, Py_buffer *buf, int flags)
return ret;
}
-#else
-
-static Py_ssize_t
-get_read_buffer (PyObject *self, Py_ssize_t segment, void **ptrptr)
-{
- membuf_object *membuf_obj = (membuf_object *) self;
-
- if (segment)
- {
- PyErr_SetString (PyExc_SystemError,
- _("The memory buffer supports only one segment."));
- return -1;
- }
-
- *ptrptr = membuf_obj->buffer;
-
- return membuf_obj->length;
-}
-
-static Py_ssize_t
-get_write_buffer (PyObject *self, Py_ssize_t segment, void **ptrptr)
-{
- return get_read_buffer (self, segment, ptrptr);
-}
-
-static Py_ssize_t
-get_seg_count (PyObject *self, Py_ssize_t *lenp)
-{
- if (lenp)
- *lenp = ((membuf_object *) self)->length;
-
- return 1;
-}
-
-static Py_ssize_t
-get_char_buffer (PyObject *self, Py_ssize_t segment, char **ptrptr)
-{
- void *ptr = nullptr;
- Py_ssize_t ret;
-
- ret = get_read_buffer (self, segment, &ptr);
- *ptrptr = (char *) ptr;
-
- return ret;
-}
-
-#endif /* IS_PY3K */
-
/* General Python initialization callback. */
int
@@ -168,24 +110,11 @@ gdbpy_initialize_membuf (void)
(PyObject *) &membuf_object_type);
}
-#ifdef IS_PY3K
-
static PyBufferProcs buffer_procs =
{
get_buffer
};
-#else
-
-static PyBufferProcs buffer_procs = {
- get_read_buffer,
- get_write_buffer,
- get_seg_count,
- get_char_buffer
-};
-
-#endif /* IS_PY3K */
-
PyTypeObject membuf_object_type = {
PyVarObject_HEAD_INIT (nullptr, 0)
"gdb.Membuf", /*tp_name*/
diff --git a/gdb/python/py-param.c b/gdb/python/py-param.c
index 00f917e..6be771c 100644
--- a/gdb/python/py-param.c
+++ b/gdb/python/py-param.c
@@ -126,11 +126,7 @@ static PyObject *
get_attr (PyObject *obj, PyObject *attr_name)
{
if (PyString_Check (attr_name)
-#ifdef IS_PY3K
&& ! PyUnicode_CompareWithASCIIString (attr_name, "value"))
-#else
- && ! strcmp (PyString_AsString (attr_name), "value"))
-#endif
{
parmpy_object *self = (parmpy_object *) obj;
@@ -313,11 +309,7 @@ static int
set_attr (PyObject *obj, PyObject *attr_name, PyObject *val)
{
if (PyString_Check (attr_name)
-#ifdef IS_PY3K
&& ! PyUnicode_CompareWithASCIIString (attr_name, "value"))
-#else
- && ! strcmp (PyString_AsString (attr_name), "value"))
-#endif
{
if (!val)
{
diff --git a/gdb/python/py-record-btrace.c b/gdb/python/py-record-btrace.c
index 2a0e89d..bee17e0 100644
--- a/gdb/python/py-record-btrace.c
+++ b/gdb/python/py-record-btrace.c
@@ -28,16 +28,6 @@
#include "disasm.h"
#include "gdbarch.h"
-#if defined (IS_PY3K)
-
-#define BTPY_PYSLICE(x) (x)
-
-#else
-
-#define BTPY_PYSLICE(x) ((PySliceObject *) x)
-
-#endif
-
/* Python object for btrace record lists. */
struct btpy_list_object {
@@ -295,12 +285,7 @@ recpy_bt_insn_data (PyObject *self, void *closure)
if (object == NULL)
return NULL;
-#ifdef IS_PY3K
return PyMemoryView_FromObject (object);
-#else
- return PyBuffer_FromObject (object, 0, Py_END_OF_BUFFER);
-#endif
-
}
/* Implementation of RecordInstruction.decoded [str] for btrace.
@@ -500,7 +485,7 @@ btpy_list_slice (PyObject *self, PyObject *value)
if (!PySlice_Check (value))
return PyErr_Format (PyExc_TypeError, _("Index must be int or slice."));
- if (0 != PySlice_GetIndicesEx (BTPY_PYSLICE (value), length, &start, &stop,
+ if (0 != PySlice_GetIndicesEx (value, length, &start, &stop,
&step, &slicelength))
return NULL;
diff --git a/gdb/python/py-type.c b/gdb/python/py-type.c
index 7be3f32..8838884 100644
--- a/gdb/python/py-type.c
+++ b/gdb/python/py-type.c
@@ -1610,9 +1610,6 @@ static PyNumberMethods type_object_as_number = {
NULL, /* nb_add */
NULL, /* nb_subtract */
NULL, /* nb_multiply */
-#ifndef IS_PY3K
- NULL, /* nb_divide */
-#endif
NULL, /* nb_remainder */
NULL, /* nb_divmod */
NULL, /* nb_power */
@@ -1626,19 +1623,9 @@ static PyNumberMethods type_object_as_number = {
NULL, /* nb_and */
NULL, /* nb_xor */
NULL, /* nb_or */
-#ifdef IS_PY3K
NULL, /* nb_int */
NULL, /* reserved */
-#else
- NULL, /* nb_coerce */
- NULL, /* nb_int */
- NULL, /* nb_long */
-#endif
NULL, /* nb_float */
-#ifndef IS_PY3K
- NULL, /* nb_oct */
- NULL /* nb_hex */
-#endif
};
static PyMappingMethods typy_mapping = {
diff --git a/gdb/python/py-utils.c b/gdb/python/py-utils.c
index 838853c..e7b147c 100644
--- a/gdb/python/py-utils.c
+++ b/gdb/python/py-utils.c
@@ -45,14 +45,10 @@ python_string_to_unicode (PyObject *obj)
unicode_str = obj;
Py_INCREF (obj);
}
-#ifndef IS_PY3K
- else if (PyString_Check (obj))
- unicode_str = PyUnicode_FromEncodedObject (obj, host_charset (), NULL);
-#endif
else
{
PyErr_SetString (PyExc_TypeError,
- _("Expected a string or unicode object."));
+ _("Expected a string object."));
unicode_str = NULL;
}
@@ -166,11 +162,7 @@ host_string_to_python_string (const char *str)
int
gdbpy_is_string (PyObject *obj)
{
-#ifdef IS_PY3K
return PyUnicode_Check (obj);
-#else
- return PyString_Check (obj) || PyUnicode_Check (obj);
-#endif
}
/* Return the string representation of OBJ, i.e., str (obj).
@@ -182,17 +174,7 @@ gdbpy_obj_to_string (PyObject *obj)
gdbpy_ref<> str_obj (PyObject_Str (obj));
if (str_obj != NULL)
- {
- gdb::unique_xmalloc_ptr<char> msg;
-
-#ifdef IS_PY3K
- msg = python_string_to_host_string (str_obj.get ());
-#else
- msg.reset (xstrdup (PyString_AsString (str_obj.get ())));
-#endif
-
- return msg;
- }
+ return python_string_to_host_string (str_obj.get ());
return NULL;
}
@@ -296,20 +278,9 @@ get_addr_from_python (PyObject *obj, CORE_ADDR *addr)
gdbpy_ref<>
gdb_py_object_from_longest (LONGEST l)
{
-#ifdef IS_PY3K
if (sizeof (l) > sizeof (long))
return gdbpy_ref<> (PyLong_FromLongLong (l));
return gdbpy_ref<> (PyLong_FromLong (l));
-#else
-#ifdef HAVE_LONG_LONG /* Defined by Python. */
- /* If we have 'long long', and the value overflows a 'long', use a
- Python Long; otherwise use a Python Int. */
- if (sizeof (l) > sizeof (long)
- && (l > PyInt_GetMax () || l < (- (LONGEST) PyInt_GetMax ()) - 1))
- return gdbpy_ref<> (PyLong_FromLongLong (l));
-#endif
- return gdbpy_ref<> (PyInt_FromLong (l));
-#endif
}
/* Convert a ULONGEST to the appropriate Python object -- either an
@@ -318,23 +289,9 @@ gdb_py_object_from_longest (LONGEST l)
gdbpy_ref<>
gdb_py_object_from_ulongest (ULONGEST l)
{
-#ifdef IS_PY3K
if (sizeof (l) > sizeof (unsigned long))
return gdbpy_ref<> (PyLong_FromUnsignedLongLong (l));
return gdbpy_ref<> (PyLong_FromUnsignedLong (l));
-#else
-#ifdef HAVE_LONG_LONG /* Defined by Python. */
- /* If we have 'long long', and the value overflows a 'long', use a
- Python Long; otherwise use a Python Int. */
- if (sizeof (l) > sizeof (unsigned long) && l > PyInt_GetMax ())
- return gdbpy_ref<> (PyLong_FromUnsignedLongLong (l));
-#endif
-
- if (l > PyInt_GetMax ())
- return gdbpy_ref<> (PyLong_FromUnsignedLong (l));
-
- return gdbpy_ref<> (PyInt_FromLong (l));
-#endif
}
/* Like PyInt_AsLong, but returns 0 on failure, 1 on success, and puts
diff --git a/gdb/python/py-value.c b/gdb/python/py-value.c
index b546344..e779f49 100644
--- a/gdb/python/py-value.c
+++ b/gdb/python/py-value.c
@@ -1695,41 +1695,6 @@ valpy_richcompare (PyObject *self, PyObject *other, int op)
Py_RETURN_FALSE;
}
-#ifndef IS_PY3K
-/* Implements conversion to int. */
-static PyObject *
-valpy_int (PyObject *self)
-{
- struct value *value = ((value_object *) self)->value;
- struct type *type = value_type (value);
- LONGEST l = 0;
-
- try
- {
- if (is_floating_value (value))
- {
- type = builtin_type_pylong;
- value = value_cast (type, value);
- }
-
- if (!is_integral_type (type)
- && type->code () != TYPE_CODE_PTR)
- error (_("Cannot convert value to int."));
-
- l = value_as_long (value);
- }
- catch (const gdb_exception &except)
- {
- GDB_PY_HANDLE_EXCEPTION (except);
- }
-
- if (type->is_unsigned ())
- return gdb_py_object_from_ulongest (l).release ();
- else
- return gdb_py_object_from_longest (l).release ();
-}
-#endif
-
/* Implements conversion to long. */
static PyObject *
valpy_long (PyObject *self)
@@ -1914,15 +1879,6 @@ convert_value_from_python (PyObject *obj)
else
value = value_from_longest (builtin_type_pylong, l);
}
-#if PY_MAJOR_VERSION == 2
- else if (PyInt_Check (obj))
- {
- long l = PyInt_AsLong (obj);
-
- if (! PyErr_Occurred ())
- value = value_from_longest (builtin_type_pyint, l);
- }
-#endif
else if (PyFloat_Check (obj))
{
double d = PyFloat_AsDouble (obj);
@@ -1948,14 +1904,8 @@ convert_value_from_python (PyObject *obj)
value = value_copy (((value_object *) result)->value);
}
else
-#ifdef IS_PY3K
PyErr_Format (PyExc_TypeError,
_("Could not convert Python object: %S."), obj);
-#else
- PyErr_Format (PyExc_TypeError,
- _("Could not convert Python object: %s."),
- PyString_AsString (PyObject_Str (obj)));
-#endif
}
catch (const gdb_exception &except)
{
@@ -2176,9 +2126,6 @@ static PyNumberMethods value_object_as_number = {
valpy_add,
valpy_subtract,
valpy_multiply,
-#ifndef IS_PY3K
- valpy_divide,
-#endif
valpy_remainder,
NULL, /* nb_divmod */
valpy_power, /* nb_power */
@@ -2192,25 +2139,12 @@ static PyNumberMethods value_object_as_number = {
valpy_and, /* nb_and */
valpy_xor, /* nb_xor */
valpy_or, /* nb_or */
-#ifdef IS_PY3K
valpy_long, /* nb_int */
NULL, /* reserved */
-#else
- NULL, /* nb_coerce */
- valpy_int, /* nb_int */
- valpy_long, /* nb_long */
-#endif
valpy_float, /* nb_float */
-#ifndef IS_PY3K
- NULL, /* nb_oct */
- NULL, /* nb_hex */
-#endif
NULL, /* nb_inplace_add */
NULL, /* nb_inplace_subtract */
NULL, /* nb_inplace_multiply */
-#ifndef IS_PY3K
- NULL, /* nb_inplace_divide */
-#endif
NULL, /* nb_inplace_remainder */
NULL, /* nb_inplace_power */
NULL, /* nb_inplace_lshift */
diff --git a/gdb/python/python-internal.h b/gdb/python/python-internal.h
index 7d1e425..ccf440c 100644
--- a/gdb/python/python-internal.h
+++ b/gdb/python/python-internal.h
@@ -87,11 +87,6 @@
#include <frameobject.h>
#include "py-ref.h"
-#if PY_MAJOR_VERSION >= 3
-#define IS_PY3K 1
-#endif
-
-#ifdef IS_PY3K
#define Py_TPFLAGS_CHECKTYPES 0
#define PyInt_Check PyLong_Check
@@ -102,7 +97,6 @@
#define PyString_Decode PyUnicode_Decode
#define PyString_FromFormat PyUnicode_FromFormat
#define PyString_Check PyUnicode_Check
-#endif
/* If Python.h does not define WITH_THREAD, then the various
GIL-related functions will not be defined. However,
@@ -209,11 +203,7 @@ gdb_PySys_GetObject (const char *name)
before Python 3.6. Hence, we wrap it in a function to avoid errors
when compiled with -Werror. */
-#ifdef IS_PY3K
# define GDB_PYSYS_SETPATH_CHAR wchar_t
-#else
-# define GDB_PYSYS_SETPATH_CHAR char
-#endif
static inline void
gdb_PySys_SetPath (const GDB_PYSYS_SETPATH_CHAR *path)
diff --git a/gdb/python/python.c b/gdb/python/python.c
index 541227d..dc4edaa 100644
--- a/gdb/python/python.c
+++ b/gdb/python/python.c
@@ -317,11 +317,6 @@ eval_python_command (const char *command)
if (v == NULL)
return -1;
-#ifndef IS_PY3K
- if (Py_FlushLine ())
- PyErr_Clear ();
-#endif
-
return 0;
}
@@ -1904,7 +1899,6 @@ finalize_python (void *ignore)
restore_active_ext_lang (previous_active);
}
-#ifdef IS_PY3K
static struct PyModuleDef python_GdbModuleDef =
{
PyModuleDef_HEAD_INIT,
@@ -1927,7 +1921,6 @@ init__gdb_module (void)
{
return PyModule_Create (&python_GdbModuleDef);
}
-#endif
/* Emit a gdb.GdbExitingEvent, return a negative value if there are any
errors, otherwise, return 0. */
@@ -1974,7 +1967,6 @@ do_start_initialization ()
gdb::unique_xmalloc_ptr<char> progname
(concat (ldirname (python_libdir.c_str ()).c_str (), SLASH_STRING, "bin",
SLASH_STRING, "python", (char *) NULL));
-#ifdef IS_PY3K
/* Python documentation indicates that the memory given
to Py_SetProgramName cannot be freed. However, it seems that
at least Python 3.7.4 Py_SetProgramName takes a copy of the
@@ -2003,9 +1995,6 @@ do_start_initialization ()
/* Define _gdb as a built-in module. */
PyImport_AppendInittab ("_gdb", init__gdb_module);
-#else
- Py_SetProgramName (progname.release ());
-#endif
#endif
Py_Initialize ();
@@ -2016,11 +2005,7 @@ do_start_initialization ()
PyEval_InitThreads ();
#endif
-#ifdef IS_PY3K
gdb_module = PyImport_ImportModule ("_gdb");
-#else
- gdb_module = Py_InitModule ("_gdb", python_GdbMethods);
-#endif
if (gdb_module == NULL)
return false;
@@ -2321,11 +2306,7 @@ do_initialize (const struct extension_language_defn *extlang)
/* If sys.path is not defined yet, define it first. */
if (!(sys_path && PyList_Check (sys_path)))
{
-#ifdef IS_PY3K
PySys_SetPath (L"");
-#else
- PySys_SetPath ("");
-#endif
sys_path = PySys_GetObject ("path");
}
if (sys_path && PyList_Check (sys_path))
diff --git a/gdb/testsuite/gdb.python/py-inferior.exp b/gdb/testsuite/gdb.python/py-inferior.exp
index aa78a15..552f9b1 100644
--- a/gdb/testsuite/gdb.python/py-inferior.exp
+++ b/gdb/testsuite/gdb.python/py-inferior.exp
@@ -77,11 +77,7 @@ gdb_py_test_silent_cmd "python addr = gdb.selected_frame ().read_var ('str')" \
"read str address" 0
gdb_py_test_silent_cmd "python str = gdb.inferiors()\[0\].read_memory (addr, 5); print(str)" \
"read str contents" 1
-if { $gdb_py_is_py3k == 0 } {
- gdb_py_test_silent_cmd "python a = 'a'" "" 0
-} else {
- gdb_py_test_silent_cmd "python a = bytes('a', 'ascii')" "" 0
-}
+gdb_py_test_silent_cmd "python a = bytes('a', 'ascii')" "" 0
gdb_py_test_silent_cmd "python str\[1\] = a" "change str" 0
gdb_py_test_silent_cmd "python gdb.inferiors()\[0\].write_memory (addr, str)" \
"write str" 1
diff --git a/gdb/testsuite/gdb.python/py-mi-var-info-path-expression.py b/gdb/testsuite/gdb.python/py-mi-var-info-path-expression.py
index dfc2ebd..035478f 100644
--- a/gdb/testsuite/gdb.python/py-mi-var-info-path-expression.py
+++ b/gdb/testsuite/gdb.python/py-mi-var-info-path-expression.py
@@ -17,27 +17,23 @@ import sys
import gdb
import gdb.types
-# Following is for Python 3 compatibility...
-if sys.version_info[0] > 2:
- long = int
-
class cons_pp(object):
def __init__(self, val):
self._val = val
def to_string(self):
- if long(self._val) == 0:
+ if int(self._val) == 0:
return "nil"
- elif long(self._val["type"]) == 0:
+ elif int(self._val["type"]) == 0:
return "( . )"
else:
return "%d" % self._val["atom"]["ival"]
def children(self):
- if long(self._val) == 0:
+ if int(self._val) == 0:
return []
- elif long(self._val["type"]) == 0:
+ elif int(self._val["type"]) == 0:
return [("atom", self._val["atom"])]
else:
return [
diff --git a/gdb/testsuite/gdb.python/py-record-btrace.exp b/gdb/testsuite/gdb.python/py-record-btrace.exp
index 8204577..e9fdd06 100644
--- a/gdb/testsuite/gdb.python/py-record-btrace.exp
+++ b/gdb/testsuite/gdb.python/py-record-btrace.exp
@@ -85,11 +85,7 @@ with_test_prefix "instruction " {
gdb_test "python print(i.number)" "1"
gdb_test "python print(i.sal)" "symbol and line for .*"
gdb_test "python print(i.pc)" "$decimal"
- if { $gdb_py_is_py3k == 0 } {
- gdb_test "python print(repr(i.data))" "<read-only buffer for $hex,.*>"
- } else {
- gdb_test "python print(repr(i.data))" "<memory at $hex>"
- }
+ gdb_test "python print(repr(i.data))" "<memory at $hex>"
gdb_test "python print(i.decoded)" ".*"
gdb_test "python print(i.size)" "$decimal"
gdb_test "python print(i.is_speculative)" "False"
diff --git a/gdb/testsuite/gdb.python/py-send-packet.py b/gdb/testsuite/gdb.python/py-send-packet.py
index 4966688..a6adc82 100644
--- a/gdb/testsuite/gdb.python/py-send-packet.py
+++ b/gdb/testsuite/gdb.python/py-send-packet.py
@@ -81,17 +81,9 @@ def run_send_packet_test():
# the 'maint packet' command so that the output from the two sources
# can be compared.
def bytes_to_string(byte_array):
-
- # Python 2/3 compatibility. We need a function that can give us
- # the value of a single element in BYTE_ARRAY as an integer.
- if sys.version_info[0] > 2:
- value_of_single_byte = int
- else:
- value_of_single_byte = ord
-
res = ""
for b in byte_array:
- b = value_of_single_byte(b)
+ b = int(b)
if b >= 32 and b <= 126:
res = res + ("%c" % b)
else:
@@ -136,39 +128,23 @@ def run_set_global_var_test():
res = conn.send_packet(b"X%x,4:\x02\x02\x02\x02" % addr)
assert isinstance(res, bytes)
check_global_var(0x02020202)
- if sys.version_info[0] > 2:
- # On Python 3 this first attempt will not work as we're
- # passing a Unicode string containing non-ascii characters.
- saw_error = False
- try:
- res = conn.send_packet("X%x,4:\xff\xff\xff\xff" % addr)
- except UnicodeError:
- saw_error = True
- except:
- assert False
- assert saw_error
- check_global_var(0x02020202)
- # Now we pass a bytes object, which will work.
- res = conn.send_packet(b"X%x,4:\xff\xff\xff\xff" % addr)
- check_global_var(0xFFFFFFFF)
- else:
- # On Python 2 we need to force the creation of a Unicode
- # string, but, with that done, we expect to see the same error
- # as on Python 3; the unicode string contains non-ascii
- # characters.
- saw_error = False
- try:
- res = conn.send_packet(unicode("X%x,4:\xff\xff\xff\xff") % addr)
- except UnicodeError:
- saw_error = True
- except:
- assert False
- assert saw_error
- check_global_var(0x02020202)
- # Now we pass a plain string, which, on Python 2, is the same
- # as a bytes object, this, we expect to work.
+
+ # This first attempt will not work as we're passing a Unicode string
+ # containing non-ascii characters.
+ saw_error = False
+ try:
res = conn.send_packet("X%x,4:\xff\xff\xff\xff" % addr)
- check_global_var(0xFFFFFFFF)
+ except UnicodeError:
+ saw_error = True
+ except:
+ assert False
+
+ assert saw_error
+ check_global_var(0x02020202)
+ # Now we pass a bytes object, which will work.
+ res = conn.send_packet(b"X%x,4:\xff\xff\xff\xff" % addr)
+ check_global_var(0xFFFFFFFF)
+
print("set global_var test passed")
diff --git a/gdb/testsuite/gdb.python/py-shared.exp b/gdb/testsuite/gdb.python/py-shared.exp
index 61c057a..2d33902 100644
--- a/gdb/testsuite/gdb.python/py-shared.exp
+++ b/gdb/testsuite/gdb.python/py-shared.exp
@@ -57,14 +57,11 @@ runto [gdb_get_line_number "Break to end."]
# Test gdb.solib_name
gdb_test "p &func1" "" "func1 address"
gdb_py_test_silent_cmd "python func1 = gdb.history(0)" "Aquire func1 address" 1
-if { $gdb_py_is_py3k == 1 } {
- gdb_py_test_silent_cmd "python long = int" "" 0
-}
-gdb_test "python print (gdb.solib_name(long(func1)))" "py-shared-sl.sl" "test func1 solib location"
+gdb_test "python print (gdb.solib_name(int(func1)))" "py-shared-sl.sl" "test func1 solib location"
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"
+gdb_test "python print (gdb.solib_name(int(main)))" "None" "test main solib location"
if {[is_lp64_target]} {
gdb_test "python print (len(\[gdb.solib_name(0xffffffffffffffff)\]))" "1"
diff --git a/gdb/testsuite/gdb.python/py-value.exp b/gdb/testsuite/gdb.python/py-value.exp
index 60039c9..5d77b0c 100644
--- a/gdb/testsuite/gdb.python/py-value.exp
+++ b/gdb/testsuite/gdb.python/py-value.exp
@@ -47,33 +47,19 @@ proc build_inferior {exefile lang} {
proc test_value_creation {} {
global gdb_prompt
- global gdb_py_is_py3k
gdb_py_test_silent_cmd "python i = gdb.Value (True)" "create boolean value" 1
gdb_py_test_silent_cmd "python i = gdb.Value (5)" "create integer value" 1
gdb_py_test_silent_cmd "python i = gdb.Value (3,None)" "create integer value, with None type" 1
- 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
- if { $gdb_py_is_py3k == 0 } {
- gdb_test "python print long(l)" "18446744069720004216" "large unsigned 64-bit int conversion to python"
- } else {
- gdb_test "python print (int(l))" "18446744069720004216" "large unsigned 64-bit int conversion to python"
- }
+ gdb_test "python print (int(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"
- gdb_test "python print (a.__class__)" "<(type|class) 'gdb.Value'>" "verify type of unicode string"
- }
-
# Test address attribute is None in a non-addressable value
gdb_test "python print ('result = %s' % i.address)" "= None" "test address attribute in non-addressable value"
}
@@ -92,7 +78,6 @@ proc test_value_reinit {} {
proc test_value_numeric_ops {} {
global gdb_prompt
- global gdb_py_is_py3k
gdb_py_test_silent_cmd "python i = gdb.Value (5)" "create first integer value" 0
gdb_py_test_silent_cmd "python j = gdb.Value (2)" "create second integer value" 0
@@ -144,9 +129,6 @@ proc test_value_numeric_ops {} {
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"
@@ -156,17 +138,11 @@ 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"
- 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 ('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"
- if {!$gdb_py_is_py3k} {
- gdb_test "python print('%x' % long(gdb.parse_and_eval('-1ull')))" \
- "f+" "long conversion respect type sign"
- }
# Test some invalid operations.
@@ -242,7 +218,6 @@ proc test_value_compare {} {
proc test_value_in_inferior {} {
global gdb_prompt
global testfile
- global gdb_py_is_py3k
gdb_breakpoint [gdb_get_line_number "break to inspect struct and union"]
gdb_continue_to_breakpoint "break to inspect struct and union"
@@ -253,9 +228,6 @@ proc test_value_in_inferior {} {
gdb_py_test_silent_cmd "python s = gdb.history (0)" "get value s from history" 1
gdb_test "python print ('result = ' + str(s\['a'\]))" " = 3" "access element inside struct using 8-bit string name"
- if { $gdb_py_is_py3k == 0 } {
- gdb_test "python print ('result = ' + str(s\[u'a'\]))" " = 3" "access element inside struct using unicode name"
- }
# Test dereferencing the argv pointer
@@ -533,13 +505,8 @@ proc test_value_hash {} {
}
proc test_float_conversion {} {
- global gdb_py_is_py3k
gdb_test "python print(int(gdb.Value(0)))" "0"
gdb_test "python print(int(gdb.Value(2.5)))" "2"
- if {!$gdb_py_is_py3k} {
- gdb_test "python print(long(gdb.Value(0)))" "0"
- gdb_test "python print(long(gdb.Value(2.5)))" "2"
- }
gdb_test "python print(float(gdb.Value(2.5)))" "2\\.5"
gdb_test "python print(float(gdb.Value(0)))" "0\\.0"
}
@@ -565,7 +532,6 @@ proc prepare_type_and_buffer {} {
proc test_value_from_buffer {} {
global gdb_prompt
- global gdb_py_is_py3k
prepare_type_and_buffer
gdb_test "python v=gdb.Value(b,tp); print(v)" "1" \
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index d8015fb..0b242b6 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -2360,8 +2360,6 @@ proc skip_rust_tests {} {
# PROMPT_REGEXP is the expected prompt.
proc skip_python_tests_prompt { prompt_regexp } {
- global gdb_py_is_py3k
-
gdb_test_multiple "python print ('test')" "verify python support" \
-prompt "$prompt_regexp" {
-re "not supported.*$prompt_regexp" {
@@ -2371,16 +2369,6 @@ proc skip_python_tests_prompt { prompt_regexp } {
-re "$prompt_regexp" {}
}
- gdb_test_multiple "python print (sys.version_info\[0\])" "check if python 3" \
- -prompt "$prompt_regexp" {
- -re "3.*$prompt_regexp" {
- set gdb_py_is_py3k 1
- }
- -re ".*$prompt_regexp" {
- set gdb_py_is_py3k 0
- }
- }
-
return 0
}