diff --git a/config/functions b/config/functions index 0107e2cf29..f77ec476f7 100644 --- a/config/functions +++ b/config/functions @@ -208,6 +208,7 @@ setup_pkg_config_host() { } setup_toolchain() { + local have_gold="no" if [ "$LTO_SUPPORT" = "yes" ]; then if flag_enabled "lto-parallel" "no"; then TARGET_CFLAGS+=" $FLAGS_OPTIM_LTO_PARALLEL $FLAGS_OPTIM_LTO_NO_FAT" @@ -233,13 +234,20 @@ setup_toolchain() { # gold flag if flag_enabled "gold" "$GOLD_SUPPORT" "only-disable"; then TARGET_LDFLAGS+=" $LDFLAGS_OPTIM_GOLD" + have_gold="yes" fi # compiler optimization, descending priority: speed, size, default if [ "${BUILD_WITH_DEBUG}" = "yes" ]; then - TARGET_CFLAGS+=" $CFLAGS_OPTIM_DEBUG" - TARGET_CXXFLAGS+=" $CXXFLAGS_OPTIM_DEBUG" - TARGET_LDFLAGS+=" $LDFLAGS_OPTIM_DEBUG" + if [ "${SPLIT_DEBUG_INFO}" = "yes" -a "${have_gold}" = "yes" ]; then + TARGET_CFLAGS+=" $CFLAGS_OPTIM_DEBUG_SPLIT" + TARGET_CXXFLAGS+=" $CXXFLAGS_OPTIM_DEBUG_SPLIT" + TARGET_LDFLAGS+=" $LDFLAGS_OPTIM_DEBUG_SPLIT" + else + TARGET_CFLAGS+=" $CFLAGS_OPTIM_DEBUG" + TARGET_CXXFLAGS+=" $CXXFLAGS_OPTIM_DEBUG" + TARGET_LDFLAGS+=" $LDFLAGS_OPTIM_DEBUG" + fi elif flag_enabled "speed" "no"; then TARGET_CFLAGS+=" $CFLAGS_OPTIM_SPEED" TARGET_CXXFLAGS+=" $CXXFLAGS_OPTIM_SPEED" diff --git a/config/optimize b/config/optimize index 7cdb26447d..d8486d2af4 100644 --- a/config/optimize +++ b/config/optimize @@ -43,6 +43,10 @@ CXXFLAGS_OPTIM_SIZE="$CFLAGS_OPTIM_SIZE" CFLAGS_OPTIM_DEBUG="-ggdb -Os" CXXFLAGS_OPTIM_DEBUG="$CFLAGS_OPTIM_DEBUG" LDFLAGS_OPTIM_DEBUG="-ggdb" +# split debug settings (requires gold) +CFLAGS_OPTIM_DEBUG_SPLIT="-gsplit-dwarf -Os" +CXXFLAGS_OPTIM_DEBUG_SPLIT="$CFLAGS_OPTIM_DEBUG_SPLIT" +LDFLAGS_OPTIM_DEBUG_SPLIT="-Wl,--gdb-index" # position-independent code CFLAGS_OPTIM_PIC="-fPIC -DPIC" diff --git a/packages/debug/gdb/package.mk b/packages/debug/gdb/package.mk index 2867e0af0d..47804f8c18 100644 --- a/packages/debug/gdb/package.mk +++ b/packages/debug/gdb/package.mk @@ -9,10 +9,11 @@ PKG_LICENSE="GPL" PKG_SITE="http://www.gnu.org/software/gdb/" PKG_URL="https://ftp.gnu.org/gnu/gdb/$PKG_NAME-$PKG_VERSION.tar.xz" PKG_DEPENDS_TARGET="toolchain zlib ncurses expat" +PKG_DEPENDS_HOST="toolchain:host zlib:host ncurses:host expat:host" PKG_LONGDESC="GNU Project debugger, allows you to see what is going on inside another program while it executes." PKG_BUILD_FLAGS="+size" -PKG_CONFIGURE_OPTS_TARGET="bash_cv_have_mbstate_t=set \ +PKG_CONFIGURE_OPTS_COMMON="bash_cv_have_mbstate_t=set \ --disable-shared \ --enable-static \ --with-auto-load-safe-path=/ \ @@ -22,7 +23,6 @@ PKG_CONFIGURE_OPTS_TARGET="bash_cv_have_mbstate_t=set \ --with-intel-pt=no \ --with-babeltrace=no \ --with-expat=yes \ - --with-libexpat-prefix=${SYSROOT_PREFIX}/usr \ --disable-source-highlight \ --disable-nls \ --disable-sim \ @@ -36,6 +36,12 @@ PKG_CONFIGURE_OPTS_TARGET="bash_cv_have_mbstate_t=set \ --enable-libssp \ --disable-werror" +PKG_CONFIGURE_OPTS_TARGET="${PKG_CONFIGURE_OPTS_COMMON} \ + --with-libexpat-prefix=${SYSROOT_PREFIX}/usr" + +PKG_CONFIGURE_OPTS_HOST="${PKG_CONFIGURE_OPTS_COMMON} \ + --target=${TARGET_NAME}" + pre_configure_target() { CC_FOR_BUILD="$HOST_CC" CFLAGS_FOR_BUILD="$HOST_CFLAGS" diff --git a/packages/devel/ncurses/package.mk b/packages/devel/ncurses/package.mk index 2748beda82..449c4a20b5 100644 --- a/packages/devel/ncurses/package.mk +++ b/packages/devel/ncurses/package.mk @@ -60,6 +60,12 @@ PKG_CONFIGURE_OPTS_TARGET="--without-ada \ --disable-home-terminfo \ --disable-assertions" +PKG_CONFIGURE_OPTS_HOST="--enable-termcap \ + --with-termlib \ + --with-shared \ + --enable-pc-files \ + --without-manpages" + post_makeinstall_target() { cp misc/ncurses-config $TOOLCHAIN/bin chmod +x $TOOLCHAIN/bin/ncurses-config diff --git a/packages/virtual/debug/package.mk b/packages/virtual/debug/package.mk index d2a771cc8b..b12030eff6 100644 --- a/packages/virtual/debug/package.mk +++ b/packages/virtual/debug/package.mk @@ -24,3 +24,7 @@ fi if build_with_debug && [ "$VALGRIND" = "yes" ]; then PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET valgrind" fi + +if [ "$REMOTE_GDB" = "yes" ]; then + PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET gdb:host" +fi