libstdc++: Install GDB pretty printers for debug library

The additional libraries installed by --enable-libstdcxx-debug are built
without optimization to aid debugging, but the Python pretty printers
are not installed alongside them. This means that you can step through
the unoptimized library code, but at the expense of pretty printing the
library types.

This remedies the situation by installing another copy of the GDB hooks
alongside the debug version of libstdc++.so.

Signed-off-by: Jonathan Wakely <jwakely@redhat.com>

libstdc++-v3/ChangeLog:

	* python/Makefile.am [GLIBCXX_BUILD_DEBUG] (install-data-local):
	Install another copy of the GDB hook.
	* python/Makefile.in: Regenerate.

(cherry picked from commit db853ff78a)
This commit is contained in:
Jonathan Wakely 2021-08-12 19:56:14 +01:00
parent 371e12a7fd
commit a9e07e1651
2 changed files with 18 additions and 2 deletions

View File

@ -29,6 +29,12 @@ else
pythondir = $(datadir)/gcc-$(gcc_version)/python
endif
if GLIBCXX_BUILD_DEBUG
debug_gdb_py = YES
else
debug_gdb_py =
endif
all-local: gdb.py
nobase_python_DATA = \
@ -53,4 +59,8 @@ install-data-local: gdb.py
$(DESTDIR)$(toolexeclibdir)/libstdc++.la`; \
fi; \
echo " $(INSTALL_DATA) gdb.py $(DESTDIR)$(toolexeclibdir)/$$libname-gdb.py"; \
$(INSTALL_DATA) gdb.py $(DESTDIR)$(toolexeclibdir)/$$libname-gdb.py
$(INSTALL_DATA) gdb.py $(DESTDIR)$(toolexeclibdir)/$$libname-gdb.py ; \
if [ -n "$(debug_gdb_py)" ]; then \
sed "/^libdir = /s;'$$;/debug';" gdb.py > debug-gdb.py ; \
$(INSTALL_DATA) debug-gdb.py $(DESTDIR)$(toolexeclibdir)/debug/$$libname-gdb.py ; \
fi

View File

@ -403,6 +403,8 @@ WARN_CXXFLAGS = \
AM_CPPFLAGS = $(GLIBCXX_INCLUDES) $(CPPFLAGS)
@ENABLE_PYTHONDIR_FALSE@pythondir = $(datadir)/gcc-$(gcc_version)/python
@ENABLE_PYTHONDIR_TRUE@pythondir = $(prefix)/$(python_mod_dir)
@GLIBCXX_BUILD_DEBUG_FALSE@debug_gdb_py =
@GLIBCXX_BUILD_DEBUG_TRUE@debug_gdb_py = YES
nobase_python_DATA = \
libstdcxx/v6/printers.py \
libstdcxx/v6/xmethods.py \
@ -614,7 +616,11 @@ install-data-local: gdb.py
$(DESTDIR)$(toolexeclibdir)/libstdc++.la`; \
fi; \
echo " $(INSTALL_DATA) gdb.py $(DESTDIR)$(toolexeclibdir)/$$libname-gdb.py"; \
$(INSTALL_DATA) gdb.py $(DESTDIR)$(toolexeclibdir)/$$libname-gdb.py
$(INSTALL_DATA) gdb.py $(DESTDIR)$(toolexeclibdir)/$$libname-gdb.py ; \
if [ -n "$(debug_gdb_py)" ]; then \
sed "/^libdir = /s;'$$;/debug';" gdb.py > debug-gdb.py ; \
$(INSTALL_DATA) debug-gdb.py $(DESTDIR)$(toolexeclibdir)/debug/$$libname-gdb.py ; \
fi
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.