From b5bc6ff322112503b038f564ee44ccfce8f1fd05 Mon Sep 17 00:00:00 2001 From: Fulup Ar Foll Date: Mon, 31 Jul 2017 18:36:42 +0200 Subject: Fixed target-populate dependencies and update native-remote debug Change-Id: Ia041caa86dd57af48ae6ee53f26fb0be86f95e88 Signed-off-by: Fulup Ar Foll --- cmake/cmake.d/01-variables.cmake | 3 +++ cmake/cmake.d/02-macros.cmake | 7 +++++-- gdb/gdb-native-target.ini.in | 35 +++++++++++++++++++++++++++++++++++ gdb/gdb-on-target.ini.in | 32 -------------------------------- 4 files changed, 43 insertions(+), 34 deletions(-) create mode 100644 gdb/gdb-native-target.ini.in delete mode 100644 gdb/gdb-on-target.ini.in diff --git a/cmake/cmake.d/01-variables.cmake b/cmake/cmake.d/01-variables.cmake index 3891f53..a06c537 100644 --- a/cmake/cmake.d/01-variables.cmake +++ b/cmake/cmake.d/01-variables.cmake @@ -147,3 +147,6 @@ if(OSRELEASE MATCHES "debian" AND NOT DEFINED ENV{SDKTARGETSYSROOT} AND NOT DEFI set(PACKAGING_DEB_OUTPUT_CONTROL ${PROJECT_PKG_ENTRY_POINT}/debian.control) set(PACKAGING_DEB_OUTPUT_RULES ${PROJECT_PKG_ENTRY_POINT}/debian.rules) endif() + +# Break After Binding are loaded but before they get initialised +set(GDB_INITIAL_BREAK "personality" CACHE STRING "Initial Break Point for GDB remote") \ No newline at end of file diff --git a/cmake/cmake.d/02-macros.cmake b/cmake/cmake.d/02-macros.cmake index 5f8e5fa..8cb0e45 100644 --- a/cmake/cmake.d/02-macros.cmake +++ b/cmake/cmake.d/02-macros.cmake @@ -85,15 +85,18 @@ macro(project_targets_populate) add_custom_command(OUTPUT ${PACKAGE_LIBDIR}/${P}${OUT}.so COMMAND mkdir -p ${PACKAGE_LIBDIR} COMMAND cp ${BD}/${P}${OUT}.so ${PACKAGE_LIBDIR} + DEPENDS ${BD}/${P}${OUT}.so ) - add_custom_target(${POPULE_PACKAGE_TARGET} DEPENDS ${PACKAGE_LIBDIR}/${P}${TARGET}.so) +message ("DEPENDS ${BD}/${P}${OUT}.so") + add_custom_target(${POPULE_PACKAGE_TARGET} DEPENDS ${TARGET} DEPENDS ${PACKAGE_LIBDIR}/${P}${OUT}.so) add_dependencies(populate ${POPULE_PACKAGE_TARGET} ${TARGET}) elseif(${T} STREQUAL "EXECUTABLE") add_custom_command(OUTPUT ${PACKAGE_BINDIR}/${P}${OUT} COMMAND mkdir -p ${PACKAGE_BINDIR} COMMAND cp ${BD}/${P}${OUT} ${PACKAGE_BINDIR} + DEPENDS ${BD}/${P}${OUT} ) - add_custom_target(${POPULE_PACKAGE_TARGET} DEPENDS ${PACKAGE_BINDIR}/${P}${TARGET}) + add_custom_target(${POPULE_PACKAGE_TARGET} DEPENDS ${TARGET} DEPENDS ${PACKAGE_BINDIR}/${P}${OUT}) add_dependencies(populate ${POPULE_PACKAGE_TARGET} ${TARGET}) elseif(${T} STREQUAL "HTDOCS") add_custom_command(OUTPUT ${PACKAGE_HTTPDIR}-xx diff --git a/gdb/gdb-native-target.ini.in b/gdb/gdb-native-target.ini.in new file mode 100644 index 0000000..1ba6bdb --- /dev/null +++ b/gdb/gdb-native-target.ini.in @@ -0,0 +1,35 @@ +# gdb-remote.init file for IDE +# Object: allow to use standard gdb to remote debug a target +# Usage: remote-target-populate update script under ./build directory +# Author: Fulup Ar Foll (IoT.bzh) +# Reference: https://blog.flameeyes.eu/2010/02/remote-debugging-with-gdb-part-2-gdb/ +# +# Warning: In remote native mode netbeans impose debug-command to point on a local instance of afb-daemon binary + +# Fulup Hoops: --ldpath should be absolute as solib-search-path refuse to work as documented + +# Start gdbserver on target and connect through SSH link WARNING: +target remote | ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null @RSYNC_TARGET@ gdbserver - afb-daemon --port=@AFB_REMPORT@ --workdir=$HOME/@RSYNC_PREFIX@/@PROJECT_NAME@ --roothttp=htdocs --ldpaths=$HOME/@RSYNC_PREFIX@/@PROJECT_NAME@/lib --verbose --token=@AFB_TOKEN@ + +# Disable auto answer no on questions and to set breakpoint +set confirm off + +# Disable auto load of libraries to improved perf +set auto-solib-add off + +# Define path for project libraries +set solib-search-path ${PROJECT_PKG_BUILD_DIR} + +# Replace run by continue (gdb use 'run' when gdbserver wants 'continue') +define run +continue +end + +# Manually load project libraries when loaded by afb-daemon +tbreak @GDB_INITIAL_BREAK@ +commands +sharedlibrary @RSYNC_PREFIX@/@PROJECT_NAME@ +continue +end + + diff --git a/gdb/gdb-on-target.ini.in b/gdb/gdb-on-target.ini.in deleted file mode 100644 index 52a33e2..0000000 --- a/gdb/gdb-on-target.ini.in +++ /dev/null @@ -1,32 +0,0 @@ -# gdb-remote.init file for IDE -# Object: allow to use standard gdb to remote debug a target -# Usage: remote-target-populate update script under ./build directory -# Author: Fulup Ar Foll (IoT.bzh) -# Reference: https://blog.flameeyes.eu/2010/02/remote-debugging-with-gdb-part-2-gdb/ - -# Start gdbserver on target and connect through SSH link -target remote | ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null @RSYNC_TARGET@ gdbserver - afb-daemon --port=@AFB_REMPORT@ --workdir=@RSYNC_PREFIX@/@PROJECT_NAME@ --roothttp=./htdocs --ldpaths=./lib --verbose --token=@AFB_TOKEN@ - -# Disable auto answer no on questions and to set breakpoint -set confirm off - -# Disable auto load of libraries to improved perf -set auto-solib-add off - -# Define path for project libraries -set solib-search-path $ENV{PROJECT_DIR}/build/@PKGOUT_DIR@/lib - -# Path substitution for source file names -set substitute-path @CMAKE_CURRENT_SOURCE_DIR@ $ENV{PROJECT_DIR} - -# Replace run by continue (gdb use 'run' when gdbserver wants 'continue') -define run -continue -end - -# Manually load project libraries when loaded by afb-daemon -break execute_command -commands -sharedlibrary @BINDINGS_REGEX@ -continue -end -- cgit 1.2.3-korg