Skip to contentSkip to conversation

infra: fix striping of ld.so and libpthread

PATCH New Jérôme Pouiller 2 participants 2 messages Nov 9, 2016 Kbuild

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 infra: fix striping of ld.so and libpthread

If 'lib' is a symlink, 'find lib' does not return correct result. So, until now, libpthread*.so* and ld-*.so* was not stripped when 'lib' was a symlink.

We fix tit by using 'find lib/' instead of 'find lib'

---
 Makefile | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
Makefile +3 -3
index 6cf5f1c..e4f5441 100644
@@ -644,7 +644,7 @@ target-finalize: $(PACKAGES)
 		$(TARGET_DIR)/usr/lib/pkgconfig $(TARGET_DIR)/usr/share/pkgconfig \
 		$(TARGET_DIR)/usr/lib/cmake $(TARGET_DIR)/usr/share/cmake
 	find $(TARGET_DIR)/usr/{lib,share}/ -name '*.cmake' -print0 | xargs -0 rm -f
-	find $(TARGET_DIR)/lib $(TARGET_DIR)/usr/lib $(TARGET_DIR)/usr/libexec \
+	find $(TARGET_DIR)/lib/ $(TARGET_DIR)/usr/lib/ $(TARGET_DIR)/usr/libexec/ \
 		\( -name '*.a' -o -name '*.la' \) -print0 | xargs -0 rm -f
 ifneq ($(BR2_PACKAGE_GDB),y)
 	rm -rf $(TARGET_DIR)/usr/share/gdb
@@ -666,13 +666,13 @@ endif
 # 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*' | \
+	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*' | \
+	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
Signature · 1 line
2.9.3
#1 lore raw

PATCH 1/1 infra: fix striping of ld.so and libpthread

Hello,

Thanks for contributing this patch, this was definitely buggy.

In the commit title: striping -> stripping.

Quoted 1 line · J?r?me Pouiller

If 'lib' is a symlink, 'find lib' does not return correct result. So, until now,

return *the* correct result. Also, it would have been good to explain that this typically occurs when the "merged /usr" option is enabled.

Quoted 3 lines

libpthread*.so* and ld-*.so* was not stripped when 'lib' was a symlink.

We fix tit by using 'find lib/' instead of 'find lib'

We fix *this*.

Makefile target-finalize: $(PACKAGES) · line 647

Quoted 6 lines
Makefile +1 -1
@@ -644,7 +644,7 @@ target-finalize: $(PACKAGES)
 		$(TARGET_DIR)/usr/lib/pkgconfig $(TARGET_DIR)/usr/share/pkgconfig \
 		$(TARGET_DIR)/usr/lib/cmake $(TARGET_DIR)/usr/share/cmake
 	find $(TARGET_DIR)/usr/{lib,share}/ -name '*.cmake' -print0 | xargs -0 rm -f
-	find $(TARGET_DIR)/lib $(TARGET_DIR)/usr/lib $(TARGET_DIR)/usr/libexec \
+	find $(TARGET_DIR)/lib/ $(TARGET_DIR)/usr/lib/ $(TARGET_DIR)/usr/libexec/ \

This change should have been explained in the commit log: it's just done for consistency, but doesn't fix anything by itself.

I've applied to master with those various issues fixed.

Thanks!

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com