[Buildroot] [PATCH] Makefile: respect strip exclusions for special libraries
Yann E. MORIN
yann.morin.1998 at free.fr
Mon Jul 2 16:40:44 UTC 2018
John, All,
On 2018-07-02 17:00 +0100, John Keeping spake thusly:
> ld-*.so and libpthread*.so* are not stripped in the same way as other
> binaries because some applications need symbols in these libraries in
> order to operate correctly.
>
> However, the special handling for these binaries ignores the usual
> BR2_STRIP_EXCLUDE_* rules so it is not possible to build an image which
> has debugging symbols in these binaries.
>
> Instead of running one-off commands to strip each of these special
> binaries, build a single command for everything that needs
> $(STRIP_STRIP_DEBUG) and include the normal exclusion rules in this
> command.
>
> Signed-off-by: John Keeping <john at metanate.com>
> ---
> Makefile | 32 +++++++++++++++++++++-----------
> 1 file changed, 21 insertions(+), 11 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index 8d25c8a239..2deb5fd54a 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -606,6 +606,26 @@ STRIP_FIND_CMD += -type f \( -perm /111 -o -name '*.so*' \)
> # done for kernel modules with incorrect permissions.
> STRIP_FIND_CMD += -not \( $(call findfileclauses,libpthread*.so* ld-*.so* *.ko $(call qstrip,$(BR2_STRIP_EXCLUDE_FILES))) \) -print0
>
> +# This is the command used to handle the special cases above.
> +STRIP_SPECIAL_LIBS_CMD = find $(TARGET_DIR)/lib/
> +ifneq (,$(filter lib/%,$(call qstrip,$(BR2_STRIP_EXCLUDE_DIRS))))
> +STRIP_SPECIAL_LIBS_CMD += \( $(call finddirclauses,$(TARGET_DIR),$(BR2_STRIP_EXCLUDE_DIRS)) \) -prune -o
> +endif
> +# Valgrind needs ld.so with enough information, so only strip
> +# debugging symbols.
> +STRIP_SPECIAL_LIBS_CMD += \( -name 'ld-*.so*'
> +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)
> +# See http://sourceware.org/gdb/wiki/FAQ, "GDB does not see any threads
> +# besides the one in which crash occurred; or SIGTRAP kills my program when
> +# I set a breakpoint"
> +STRIP_SPECIAL_LIBS_CMD += -o -name 'libpthread*.so*'
> +endif
> +STRIP_SPECIAL_LIBS_CMD += \)
> +ifneq (,$(call qstrip,$(BR2_STRIP_EXCLUDE_FILES)))
> +STRIP_SPECIAL_LIBS_CMD += -not \( $(call qstrip,$(BR2_STRIP_EXCLUDE_FILES)) \)
I guess you forgot to use 'findfileclauses' here, that is:
STRIP_SPECIAL_LIBS_CMD += -not \( $(call findfileclauses,$(call qstrip,$(BR2_STRIP_EXCLUDE_FILES))) \)
Otherwise, expansion of the variable would give an invalide find
pattern, like so:
-not \( some-excluded-file some-other-file a-tird-file \)
Or did I miss something?
Regards,
Yann E. MORIN.
> +endif
> +STRIP_SPECIAL_LIBS_CMD += | xargs -r $(STRIPCMD) $(STRIP_STRIP_DEBUG)
> +
> ifeq ($(BR2_ECLIPSE_REGISTER),y)
> define TOOLCHAIN_ECLIPSE_REGISTER
> ./support/scripts/eclipse-register-toolchain `readlink -f $(O)` \
> @@ -717,18 +737,8 @@ endif
> rmdir $(TARGET_DIR)/usr/share 2>/dev/null || true
> $(STRIP_FIND_CMD) | xargs -0 $(STRIPCMD) 2>/dev/null || true
>
> -# See http://sourceware.org/gdb/wiki/FAQ, "GDB does not see any threads
> -# besides the one in which crash occurred; or SIGTRAP kills my program when
> -# I set a breakpoint"
> -ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)
> - find $(TARGET_DIR)/lib/ -type f -name 'libpthread*.so*' | \
> - xargs -r $(STRIPCMD) $(STRIP_STRIP_DEBUG)
> -endif
> + $(STRIP_SPECIAL_LIBS_CMD) || true
>
> -# Valgrind needs ld.so with enough information, so only strip
> -# debugging symbols.
> - find $(TARGET_DIR)/lib/ -type f -name 'ld-*.so*' | \
> - xargs -r $(STRIPCMD) $(STRIP_STRIP_DEBUG)
> test -f $(TARGET_DIR)/etc/ld.so.conf && \
> { echo "ERROR: we shouldn't have a /etc/ld.so.conf file"; exit 1; } || true
> test -d $(TARGET_DIR)/etc/ld.so.conf.d && \
> --
> 2.18.0
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
More information about the buildroot
mailing list