[Buildroot] [PATCH] Fix external toolchain gdbserver copy path for using buildroot-generated toolchain

Worth, Kevin kevin.worth at hp.com
Wed Mar 20 17:25:46 UTC 2013


I have a few different toolchains and boards, and I'm using buildroot to generate toolchains and system images for them. I'm building my toolchain using O=board1.toolchain, then my system using O=board1. I simply set my system defconfig to use an external toolchain, which points to the matching toolchain directory at $(TOPDIR)/board1.toolchain/host/usr.

This works quite nicely so far (I can do a clean system build in about 10 minutes without the 20 minute toolchain build), except that the gdbserver generated by buildroot goes to output/target/usr/bin/gdbserver (appropriately so, since it runs on the target, not the host).

However, toolchain/toolchain-external/ext-tool.mk only looks in sysroot and sysroot/../debug-root; neither of which is the right spot for buildroot's generated toolchain, and it dies as follows:

>>>   Checking external toolchain settings
>>>   Copying external toolchain libraries to target...
>>>   Copying external toolchain sysroot to staging...
>>>   Copying gdbserver
Could not find gdbserver in external toolchain
make: *** [/.../stamps/ext-toolchain-installed]

This patch is a simple fix to add buildroot's generated gdbserver path list of searched directories. Perhaps I should be configuring my system to point somewhere besides board1.toolchain/host/usr, but I've been unable to find anything around the web. Another alternative could be to create a debug-root symlink (a path already searched by ext-tool.mk) in the buildroot toolchain generation of gdb that points to the host directory, but I'm not sure if that is the intended purpose of the debug-root path.

Looking at toolchain/gdb/gdb.mk, there is a conditional check for a (possibly stale, I can't find it elsewhere) configuration option- BR2_CROSS_TOOLCHAIN_TARGET_UTILS:

$(TARGET_DIR)/usr/bin/gdbserver: $(GDB_SERVER_DIR)/gdbserver
ifeq ($(BR2_CROSS_TOOLCHAIN_TARGET_UTILS),y)
	mkdir -p $(STAGING_DIR)/usr/$(GNU_TARGET_NAME)/target_utils
	install -c $(GDB_SERVER_DIR)/gdbserver \
		$(STAGING_DIR)/usr/$(GNU_TARGET_NAME)/target_utils/gdbserver
endif
	install -c -D $(GDB_SERVER_DIR)/gdbserver $(TARGET_DIR)/usr/bin/gdbserver

Perhaps this would be a candidate for putting gdbserver in a place that ext-tool.mk will know to pick it up?


Signed-off-by: Kevin Worth <kevin.worth_at_hp.com>
---
 toolchain/toolchain-external/ext-tool.mk |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/toolchain/toolchain-external/ext-tool.mk b/toolchain/toolchain-external/ext-tool.mk
index b477bc0..84ded7b 100644
--- a/toolchain/toolchain-external/ext-tool.mk
+++ b/toolchain/toolchain-external/ext-tool.mk
@@ -438,7 +438,7 @@ $(STAMP_DIR)/ext-toolchain-installed: $(STAMP_DIR)/ext-toolchain-checked
 	if test x"$(BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY)" == x"y"; then \
 		$(call MESSAGE,"Copying gdbserver") ; \
 		gdbserver_found=0 ; \
-		for d in $${ARCH_SYSROOT_DIR} $${ARCH_SYSROOT_DIR}/../debug-root/ ; do \
+		for d in $${ARCH_SYSROOT_DIR} $${ARCH_SYSROOT_DIR}/../debug-root/ $${ARCH_SYSROOT_DIR}/../../../../target/; 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 ; \
-- 
1.7.4.1



More information about the buildroot mailing list