|
@@ -485,6 +485,26 @@ define TOOLCHAIN_EXTERNAL_INSTALL_GDBINIT
|
|
|
fi
|
|
|
endef
|
|
|
|
|
|
+# GCC installs a libstdcxx-...so-gdb.py file that gdb will load automatically,
|
|
|
+# but it contains hardcoded paths referring to the location where the (external)
|
|
|
+# toolchain was built. Fix up these paths so that the pretty printers can be
|
|
|
+# loaded automatically.
|
|
|
+# By default, the pretty printers are installed in
|
|
|
+# $(datadir)/gcc-$(gcc_version)/python but this could have been overwritten with
|
|
|
+# the gcc configure option: --with-python-dir. We thus have to search the
|
|
|
+# correct path first.
|
|
|
+define TOOLCHAIN_EXTERNAL_FIXUP_PRETTY_PRINTER_LOADER
|
|
|
+ $(Q)loadfiles=$$(find $(STAGING_DIR) -name 'libstdc++.so*-gdb.py' 2>/dev/null); \
|
|
|
+ pythondir=$$(find $(TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR) -path '*/libstdcxx/__init__.py' 2>/dev/null | sed 's%/libstdcxx/__init__.py%%' | head -n1); \
|
|
|
+ if [ -n "$$loadfiles" ] && [ -n "$$pythondir" ]; then \
|
|
|
+ echo "Fixing up hardcoded paths in GDB pretty-printer auto-load file(s) for libstdcxx: $$loadfiles"; \
|
|
|
+ sed -ri \
|
|
|
+ -e 's%^libdir\s*=.*%libdir = "$(STAGING_DIR)/lib"%' \
|
|
|
+ -e "s%^pythondir\s*=.*%pythondir = '$$pythondir'%" \
|
|
|
+ $$loadfiles; \
|
|
|
+ fi
|
|
|
+endef
|
|
|
+
|
|
|
# uClibc-ng dynamic loader is called ld-uClibc.so.1, but gcc is not
|
|
|
# patched specifically for uClibc-ng, so it continues to generate
|
|
|
# binaries that expect the dynamic loader to be named ld-uClibc.so.0,
|
|
@@ -589,6 +609,7 @@ define $(2)_INSTALL_STAGING_CMDS
|
|
|
$$(TOOLCHAIN_EXTERNAL_INSTALL_SYSROOT_LIBS)
|
|
|
$$(TOOLCHAIN_EXTERNAL_INSTALL_WRAPPER)
|
|
|
$$(TOOLCHAIN_EXTERNAL_INSTALL_GDBINIT)
|
|
|
+ $$(TOOLCHAIN_EXTERNAL_FIXUP_PRETTY_PRINTER_LOADER)
|
|
|
endef
|
|
|
|
|
|
# Even though we're installing things in both the staging, the host
|