Add new system-gdbinit infrastructure
gdb/ChangeLog: * data-directory/Makefile.in (SYSTEM_GDBINIT_SRCDIR): New variable. (VPATH): Add SYSTEM_GDBINIT_SRCDIR. (SYSTEM_GDBINIT_DIR, SYSTEM_GDBINIT_INSTALL_DIR) (SYSTEM_GDBINIT_FILES): New variables. (all): Add stamp-system-gdbinit. (stamp-system-gdbinit): New rule. (clean-system-gdbinit, install-system-gdbinit) (uninstall-system-gdbinit): New rules. Make them .PHONY. (install-only): Add dependency on install-system-gdbinit. (uninstall): Add dependency on uninstall-system-gdbinit. (clean): Add dependency on clean-system-gdbinit. * system-gdbinit/elinos.py: New file. * system-gdbinit/wrs-linux.py: New file.
This commit is contained in:
parent
1509e5737f
commit
776af39ed7
|
@ -1,3 +1,20 @@
|
|||
2013-05-21 Joel Brobecker <brobecker@adacore.com>
|
||||
|
||||
* data-directory/Makefile.in (SYSTEM_GDBINIT_SRCDIR): New
|
||||
variable.
|
||||
(VPATH): Add SYSTEM_GDBINIT_SRCDIR.
|
||||
(SYSTEM_GDBINIT_DIR, SYSTEM_GDBINIT_INSTALL_DIR)
|
||||
(SYSTEM_GDBINIT_FILES): New variables.
|
||||
(all): Add stamp-system-gdbinit.
|
||||
(stamp-system-gdbinit): New rule.
|
||||
(clean-system-gdbinit, install-system-gdbinit)
|
||||
(uninstall-system-gdbinit): New rules. Make them .PHONY.
|
||||
(install-only): Add dependency on install-system-gdbinit.
|
||||
(uninstall): Add dependency on uninstall-system-gdbinit.
|
||||
(clean): Add dependency on clean-system-gdbinit.
|
||||
* system-gdbinit/elinos.py: New file.
|
||||
* system-gdbinit/wrs-linux.py: New file.
|
||||
|
||||
2013-05-21 Joel Brobecker <brobecker@adacore.com>
|
||||
|
||||
* ada-lang.c (old_renaming_is_invisible): Fix cleanup leak.
|
||||
|
|
|
@ -19,7 +19,8 @@
|
|||
srcdir = @srcdir@
|
||||
SYSCALLS_SRCDIR = $(srcdir)/../syscalls
|
||||
PYTHON_SRCDIR = $(srcdir)/../python/lib
|
||||
VPATH = $(srcdir):$(SYSCALLS_SRCDIR):$(PYTHON_SRCDIR)
|
||||
SYSTEM_GDBINIT_SRCDIR = $(srcdir)/../system-gdbinit
|
||||
VPATH = $(srcdir):$(SYSCALLS_SRCDIR):$(PYTHON_SRCDIR):$(SYSTEM_GDBINIT_SRCDIR)
|
||||
|
||||
top_srcdir = @top_srcdir@
|
||||
top_builddir = @top_builddir@
|
||||
|
@ -68,6 +69,12 @@ PYTHON_FILES = \
|
|||
gdb/function/__init__.py \
|
||||
gdb/function/strfns.py
|
||||
|
||||
SYSTEM_GDBINIT_DIR = system-gdbinit
|
||||
SYSTEM_GDBINIT_INSTALL_DIR = $(DESTDIR)$(GDB_DATADIR)/$(SYSTEM_GDBINIT_DIR)
|
||||
SYSTEM_GDBINIT_FILES = \
|
||||
elinos.py \
|
||||
wrs-linux.py
|
||||
|
||||
FLAGS_TO_PASS = \
|
||||
"prefix=$(prefix)" \
|
||||
"exec_prefix=$(exec_prefix)" \
|
||||
|
@ -101,7 +108,7 @@ FLAGS_TO_PASS = \
|
|||
"RUNTESTFLAGS=$(RUNTESTFLAGS)"
|
||||
|
||||
.PHONY: all
|
||||
all: stamp-syscalls stamp-python
|
||||
all: stamp-syscalls stamp-python stamp-system-gdbinit
|
||||
|
||||
# For portability's sake, we need to handle systems that don't have
|
||||
# symbolic links.
|
||||
|
@ -185,6 +192,47 @@ uninstall-python:
|
|||
done \
|
||||
done
|
||||
|
||||
stamp-system-gdbinit: Makefile $(SYSTEM_GDBINIT_FILES)
|
||||
rm -rf ./$(SYSTEM_GDBINIT_DIR)
|
||||
mkdir ./$(SYSTEM_GDBINIT_DIR)
|
||||
files='$(SYSTEM_GDBINIT_FILES)' ; \
|
||||
for file in $$files ; do \
|
||||
f=$(SYSTEM_GDBINIT_SRCDIR)/$$file ; \
|
||||
if test -f $$f ; then \
|
||||
$(INSTALL_DATA) $$f ./$(SYSTEM_GDBINIT_DIR) ; \
|
||||
fi ; \
|
||||
done
|
||||
touch $@
|
||||
|
||||
.PHONY: clean-system-gdbinit
|
||||
clean-system-gdbinit:
|
||||
rm -rf $(SYSTEM_GDBINIT_DIR)
|
||||
rm -f stamp-system-gdbinit
|
||||
|
||||
.PHONY: install-system-gdbinit
|
||||
install-system-gdbinit:
|
||||
$(INSTALL_DIR) $(SYSTEM_GDBINIT_INSTALL_DIR)
|
||||
files='$(SYSTEM_GDBINIT_FILES)' ; \
|
||||
for file in $$files; do \
|
||||
f=$(SYSTEM_GDBINIT_SRCDIR)/$$file ; \
|
||||
if test -f $$f ; then \
|
||||
$(INSTALL_DATA) $$f $(SYSTEM_GDBINIT_INSTALL_DIR) ; \
|
||||
fi ; \
|
||||
done
|
||||
|
||||
.PHONY: uninstall-system-gdbinit
|
||||
uninstall-system-gdbinit:
|
||||
files='$(SYSTEM_GDBINIT_FILES)' ; \
|
||||
for file in $$files ; do \
|
||||
slashdir=`echo "/$$file" | sed 's,/[^/]*$$,,'` ; \
|
||||
rm -f $(SYSTEM_GDBINIT_INSTALL_DIR)/$$file ; \
|
||||
while test "x$$file" != "x$$slashdir" ; do \
|
||||
rmdir 2>/dev/null "$(SYSTEM_GDBINIT_INSTALL_DIR)$$slashdir" ; \
|
||||
file="$$slashdir" ; \
|
||||
slashdir=`echo "$$file" | sed 's,/[^/]*$$,,'` ; \
|
||||
done \
|
||||
done
|
||||
|
||||
# Traditionally "install" depends on "all". But it may be useful
|
||||
# not to; for example, if the user has made some trivial change to a
|
||||
# source file and doesn't care about rebuilding or just wants to save the
|
||||
|
@ -195,13 +243,13 @@ install: all
|
|||
@$(MAKE) $(FLAGS_TO_PASS) install-only
|
||||
|
||||
.PHONY: install-only
|
||||
install-only: install-syscalls install-python
|
||||
install-only: install-syscalls install-python install-system-gdbinit
|
||||
|
||||
.PHONY: uninstall
|
||||
uninstall: uninstall-syscalls uninstall-python
|
||||
uninstall: uninstall-syscalls uninstall-python uninstall-system-gdbinit
|
||||
|
||||
.PHONY: clean
|
||||
clean: clean-syscalls clean-python
|
||||
clean: clean-syscalls clean-python clean-system-gdbinit
|
||||
|
||||
.PHONY: maintainer-clean realclean distclean
|
||||
maintainer-clean realclean distclean: clean
|
||||
|
|
|
@ -0,0 +1,79 @@
|
|||
# Copyright (C) 2011-2013 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
"""Configure GDB using the ELinOS environment."""
|
||||
|
||||
import os
|
||||
import glob
|
||||
import gdb
|
||||
|
||||
|
||||
def warn(msg):
|
||||
print "warning: %s" % msg
|
||||
|
||||
|
||||
def get_elinos_environment():
|
||||
"""Return the ELinOS environment.
|
||||
|
||||
If the ELinOS environment is properly set up, return a dictionary
|
||||
which contains:
|
||||
* The path to the ELinOS project at key 'project';
|
||||
* The path to the ELinOS CDK at key 'cdk';
|
||||
* The ELinOS target name at key 'target' (Eg. 'i486-linux');
|
||||
* A list of Xenomai install prefixes (which could be empty, if
|
||||
the ELinOS project does not include Xenomai) at key 'xenomai'.
|
||||
|
||||
If one of these cannot be found, it is then assumed that the ELinOS
|
||||
environment is not properly set up. Return None in such a case,
|
||||
and print a warning.
|
||||
"""
|
||||
result = {}
|
||||
for key in ("project", "cdk", "target"):
|
||||
var = "ELINOS_" + key.upper()
|
||||
if var in os.environ:
|
||||
result[key] = os.environ[var]
|
||||
else:
|
||||
warn("%s not set" % var)
|
||||
return None
|
||||
|
||||
result["xenomai"] = glob.glob(result["project"] + "/xenomai-[0-9.]*")
|
||||
return result
|
||||
|
||||
|
||||
def elinos_init():
|
||||
"""Initialize debugger environment for ELinOS.
|
||||
|
||||
Let the debugger know where to find the ELinOS libraries on host. This
|
||||
assumes that an ELinOS environment is properly set up. If not, abort
|
||||
with a warning.
|
||||
"""
|
||||
elinos_env = get_elinos_environment()
|
||||
|
||||
if elinos_env is None:
|
||||
warn("ELinOS system libraries will not be loaded")
|
||||
else:
|
||||
solib_prefix = "%s/%s" % (elinos_env["cdk"], elinos_env["target"])
|
||||
|
||||
solib_dirs = []
|
||||
for dir in elinos_env['xenomai']:
|
||||
solib_dirs += ["%s/%s" % (dir, "xenomai-build/usr/realtime/lib")]
|
||||
solib_dirs += ["%s/%s" % (solib_prefix, "lib")]
|
||||
|
||||
gdb.execute("set solib-absolute-prefix %s" % solib_prefix)
|
||||
gdb.execute("set solib-search-path %s" % ":".join(solib_dirs))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
elinos_init()
|
|
@ -0,0 +1,25 @@
|
|||
# Copyright (C) 2011-2013 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
"""Configure GDB using the WRS/Linux environment."""
|
||||
|
||||
import os
|
||||
|
||||
if 'ENV_PREFIX' in os.environ:
|
||||
gdb.execute('set sysroot %s' % os.environ['ENV_PREFIX'])
|
||||
|
||||
else:
|
||||
print "warning: ENV_PREFIX environment variable missing."
|
||||
print "The debugger will probably be unable to find the correct system libraries"
|
Loading…
Reference in New Issue