[Buildroot] [PATCH] Use gdbserver from external toolchain.
Anders Darander
anders.darander at gmail.com
Tue Nov 10 07:03:22 UTC 2009
Allow the user to copy the pre-compiled gdbserver from the external toolchain
to the rootfs.
It is assumed that the external toolchain has been generated with crosstool-NG,
as there is no generic way to find the location of gdbserver.
Signed-off-by: Anders Darander <ad at datarespons.se>
---
toolchain/external-toolchain/Config.in | 9 +++++++
toolchain/external-toolchain/ext-tool.mk | 35 ++++++++++++++++++++++++++++++
2 files changed, 44 insertions(+), 0 deletions(-)
diff --git a/toolchain/external-toolchain/Config.in b/toolchain/external-toolchain/Config.in
index efc8378..8837f47 100644
--- a/toolchain/external-toolchain/Config.in
+++ b/toolchain/external-toolchain/Config.in
@@ -19,4 +19,13 @@ config BR2_TOOLCHAIN_EXTERNAL_STRIP
prompt "Strip shared libraries"
help
Strip shared libraries copied from the external toolchain.
+
+config BR2_TOOLCHAIN_EXTERNAL_GDBSERVER
+ bool
+ prompt "Install the gdbserver"
+ help
+ Install the gdbserver from the external toolchain.
+ It is assumed that the external toolchain has been generated
+ by crosstool-NG, as there is no generic mechanism available
+ to find the location of the gdbserver.
endif
diff --git a/toolchain/external-toolchain/ext-tool.mk b/toolchain/external-toolchain/ext-tool.mk
index 1f5aa19..0fc7ae8 100644
--- a/toolchain/external-toolchain/ext-tool.mk
+++ b/toolchain/external-toolchain/ext-tool.mk
@@ -72,6 +72,37 @@ copy_toolchain_lib_root = \
echo -n
#
+# Copy selected files from the toolchain debug-root to the target dir.
+#
+# $1: The sysroot-feature (this is used for the base of the debug-root)
+# $2: The file to be installed
+# $3: Destination folder on the rootfs.
+# $4: strip (y|n), default is to strip
+#
+copy_toolchain_debugroot = \
+ DEBUGROOT_DIR="$(strip $1)"/../debug-root; \
+ FILE="$(strip $2)"; \
+ DST="$(strip $3)"; \
+ STRIP="$(strip $4)"; \
+\
+ if $$($(TARGET_CROSS)cc -v 2>&1 | grep crosstool-NG 2>&1 1>/dev/null) ; then \
+ echo "A Crosstool-NG generated toolchain is detected."; \
+ if test -f $${DEBUGROOT_DIR}/usr/bin/$${FILE}; then \
+ $(INSTALL) -m0755 $${DEBUGROOT_DIR}/usr/bin/$${FILE} $(TARGET_DIR)/$${DST}/$${FILE}; \
+ case "$${STRIP}" in \
+ (+ | n | no) \
+;; \
+ (*) \
+ $(TARGET_CROSS)strip $(TARGET_DIR)/$${DST}/$${FILE}; \
+;; \
+ esac \
+ fi \
+ else \
+ echo "Error: Not a known toolchain!"; \
+ exit 1; \
+ fi
+
+#
# Copy the full external toolchain sysroot directory to the staging
# dir
#
@@ -227,6 +258,10 @@ endif
$(Q)for libs in $(EXTERNAL_LIBS); do \
$(call copy_toolchain_lib_root,$(SYSROOT_DIR),$$libs,/lib,$(BR2_TOOLCHAIN_EXTERNAL_STRIP)); \
done
+ifeq ($(BR2_TOOLCHAIN_EXTERNAL_GDBSERVER),y)
+ @echo "Copy gdbserver from the external toolchain to target..."
+ $(Q) $(call copy_toolchain_debugroot,$(SYSROOT_DIR),gdbserver,/usr/bin,$(BR2_TOOLCHAIN_EXTERNAL_STRIP))
+endif
@echo "Copy external toolchain sysroot to staging..."
$(Q)$(call copy_toolchain_sysroot,$(SYSROOT_DIR))
@touch $@
--
1.6.5.2
More information about the buildroot
mailing list