debug: provide an option to copy the gdbserver to the target
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Wed, 14 Mar 2012 22:49:57 +0000 (23:49 +0100)
committerPeter Korsgaard <jacmet@sunsite.dk>
Thu, 15 Mar 2012 22:04:39 +0000 (23:04 +0100)
When an external toolchain is used, it is very likely that it contains
a pre-built version of a gdbserver that has the same version as the
cross-gdb included in the external toolchain. So, we now provide an
option that allows to copy this pre-built gdbserver to the target.

As the location of the gdbserver in the external toolchain is not
standardized, we only support the CodeSourcery and Crosstool-NG
layouts for the moment. Other locations can be added later.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
toolchain/gdb/Config.in
toolchain/toolchain-external/ext-tool.mk

index 8501983aa40267d405f28158e9f941bc232d8d6d..980666b0d58741934005b1b63c282d3c9c7c20f8 100644 (file)
@@ -14,10 +14,18 @@ comment "Gdb debugger for the target needs WCHAR support in toolchain"
 
 config BR2_PACKAGE_GDB_SERVER
        bool "Build gdb server for the Target"
+       depends on !BR2_TOOLCHAIN_EXTERNAL
        help
            Build the gdbserver stub to run on the target.
            A full gdb is needed to debug the progam.
 
+config BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY
+       bool "Copy gdb server to the Target"
+       depends on BR2_TOOLCHAIN_EXTERNAL
+       help
+         Copy the gdbserver provided by the external toolchain to the
+         target.
+
 config BR2_PACKAGE_GDB_HOST
        bool "Build gdb for the Host"
        # cross-gdb is supposed to be part of the external
index dbd39b0688fbff8d12bf8df87287a6ee4cb16e73..31ba50f97b7b4cb82532370ee32d46d3f8dc34a3 100644 (file)
@@ -375,6 +375,20 @@ $(STAMP_DIR)/ext-toolchain-installed: $(STAMP_DIR)/ext-toolchain-checked
        if [ -L $${ARCH_SYSROOT_DIR}/lib64 ] ; then \
                $(call create_lib64_symlinks) ; \
        fi ; \
+       if test x"$(BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY)" == x"y"; then \
+               gdbserver_found=0 ; \
+               for d in $${ARCH_SYSROOT_DIR} $${ARCH_SYSROOT_DIR}/../debug-root/ ; do \
+                       if test -f $${d}/usr/bin/gdbserver ; then \
+                               install -m 0755 -D $${d}/usr/bin/gdbserver $(TARGET_DIR)/usr/bin/gdbserver ; \
+                               gdbserver_found=1 ; \
+                               break ; \
+                       fi ; \
+               done ; \
+               if [ $${gdbserver_found} -eq 0 ] ; then \
+                       echo "Could not find gdbserver in external toolchain" ; \
+                       exit 1 ; \
+               fi ; \
+       fi ; \
        touch $@
 
 # Build toolchain wrapper for preprocessor, C and C++ compiler, and setup