Commit 84d584ea authored by Thomas Petazzoni's avatar Thomas Petazzoni Committed by Peter Korsgaard
Browse files

gdb: add support for Python in target gdb



This commit adds a new option BR2_PACKAGE_GDB_PYTHON to enable Python
support in the target gdb. Since we can assume that the user will be
aware that Python is needed to get Python support in gdb, we chose to
use a "depends on" dependency instead of a "select" dependency.

The other weird thing is the need for a wrapper shell script to
replace gdb's provided python-config.py script. See the shell script
comment itself for all the details.

Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: default avatarPeter Korsgaard <peter@korsgaard.com>
parent d79cc3cd
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -60,6 +60,13 @@ config BR2_PACKAGE_GDB_TUI

	  https://sourceware.org/gdb/current/onlinedocs/gdb/TUI.html

config BR2_PACKAGE_GDB_PYTHON
	bool "Python support"
	# Only Python 2.x is supported by gdb for now
	depends on BR2_PACKAGE_PYTHON
	help
	  This option enables Python support in the target gdb.

endif

endif
+36 −0
Original line number Diff line number Diff line
#!/bin/sh

# This shell script is used to fake Python. Gdb wants to be passed a
# Python interpreter, to run its own python-config.py program, which
# uses sysconfig. However, when cross-compiling, this doesn't work
# well since we would have to use the host Python, whose sysconfig
# module would return host values.
#
# As recommended at
# https://sourceware.org/gdb/wiki/CrossCompilingWithPythonSupport,
# this wrapper shell script can be used as a replacement. It ignores
# the python-config.py script passed as first arguments, and
# "emulates" its behavior.

if [ $# -ne 2 ] ; then
    echo "Bad # args." >&2
    exit 1
fi

# The first argument is the path to python-config.py, ignore it.

case "$2" in
    --includes)
	echo "-I${STAGING_DIR}/usr/include/python2.7"
	;;
    --ldflags)
	echo "-lpthread -ldl -lutil -lm -lpython2.7"
	;;
    --exec-prefix)
	echo "/usr"
	;;
    *)
	echo "Bad arg $2." >&2
	exit 1
	;;
esac
+7 −0
Original line number Diff line number Diff line
@@ -91,6 +91,13 @@ else
	GDB_CONF_OPT += --disable-tui
endif

ifeq ($(BR2_PACKAGE_GDB_PYTHON),y)
	GDB_CONF_OPT += --with-python=$(TOPDIR)/package/gdb/gdb-python-config
	GDB_DEPENDENCIES += python
else
	GDB_CONF_OPT += --without-python
endif

# This removes some unneeded Python scripts and XML target description
# files that are not useful for a normal usage of the debugger.
define GDB_REMOVE_UNNEEDED_FILES