diff --git a/Makefile b/Makefile index 74240ab895..355a404e04 100644 --- a/Makefile +++ b/Makefile @@ -613,20 +613,37 @@ RSYNC_VCS_EXCLUSIONS = \ --exclude .svn --exclude .git --exclude .hg --exclude .bzr \ --exclude CVS -STRIP_FIND_CMD = find $(TARGET_DIR) -ifneq (,$(call qstrip,$(BR2_STRIP_EXCLUDE_DIRS))) -STRIP_FIND_CMD += \( $(call finddirclauses,$(TARGET_DIR),$(call qstrip,$(BR2_STRIP_EXCLUDE_DIRS))) \) -prune -o -endif -STRIP_FIND_CMD += -type f \( -perm /111 -o -name '*.so*' \) -# file exclusions: +# When stripping, obey to BR2_STRIP_EXCLUDE_DIRS and +# BR2_STRIP_EXCLUDE_FILES +STRIP_FIND_COMMON_CMD = \ + find $(TARGET_DIR) \ + $(if $(call qstrip,$(BR2_STRIP_EXCLUDE_DIRS)), \ + \( $(call finddirclauses,$(TARGET_DIR),$(call qstrip,$(BR2_STRIP_EXCLUDE_DIRS))) \) \ + -prune -o \ + ) \ + $(if $(call qstrip,$(BR2_STRIP_EXCLUDE_FILES)), \ + -not \( $(call findfileclauses,$(call qstrip,$(BR2_STRIP_EXCLUDE_FILES))) \) ) + +# Regular stripping for everything, except libpthread, ld-*.so and +# kernel modules: # - libpthread.so: a non-stripped libpthread shared library is needed for # proper debugging of pthread programs using gdb. # - ld.so: a non-stripped dynamic linker library is needed for valgrind # - kernel modules (*.ko): do not function properly when stripped like normal # applications and libraries. Normally kernel modules are already excluded -# by the executable permission check above, so the explicit exclusion is only +# by the executable permission check, so the explicit exclusion is only # 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 +STRIP_FIND_CMD = \ + $(STRIP_FIND_COMMON_CMD) \ + -type f \( -perm /111 -o -name '*.so*' \) \ + -not \( $(call findfileclauses,libpthread*.so* ld-*.so* *.ko) \) \ + -print0 + +# Special stripping (only debugging symbols) for libpthread and ld-*.so. +STRIP_FIND_SPECIAL_LIBS_CMD = \ + $(STRIP_FIND_COMMON_CMD) \ + \( -name 'ld-*.so*' -o -name 'libpthread*.so*' \) \ + -print0 ifeq ($(BR2_ECLIPSE_REGISTER),y) define TOOLCHAIN_ECLIPSE_REGISTER @@ -744,19 +761,8 @@ endif rm -rf $(TARGET_DIR)/usr/share/gtk-doc rmdir $(TARGET_DIR)/usr/share 2>/dev/null || true $(STRIP_FIND_CMD) | xargs -0 $(STRIPCMD) 2>/dev/null || true + $(STRIP_FIND_SPECIAL_LIBS_CMD) | xargs -0 -r $(STRIPCMD) $(STRIP_STRIP_DEBUG) 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 - -# 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 && \