Skip to content

Commit

Permalink
linux: use INSTALL_MOD_STRIP=1 to strip modules
Browse files Browse the repository at this point in the history
We used to do a special handling of Linux kernel modules when stripping
target binaries because there's some special precious data in modules
that we must keep for them to properly operate. This is for example true
for stack unwinding data etc.

It turned out there're cases when our existing "strip --strip-unneeded"
doesn't work well. For example this removes .debug_frame section used by
Linux on ARC for stack unwinding, refer to [1] and [2] for more details.

Now Linux kernel may strip modules as a part of "modules_install" target
if INSTALL_MOD_STRIP=1 is passed in command line. And so we'll do
allowing kernel decide how to strip modules in the best way.

Still note as of today Linux kernel strips modules uniformly for all
arches with "strip" command, so this commit alone doesn't solve
mentioned problem but it opens a possibility to add later a patch to the
kernel which will strip modules for ARC differently - and that's our
plan for mainline kernel.

[1] foss-for-synopsys-dwc-arc-processors/toolchain#86
[2] http://lists.busybox.net/pipermail/buildroot/2016-September/172161.html

Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
Cc: Vineet Gupta <vgupta@synopsys.com>
Cc: Peter Korsgaard <peter@korsgaard.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Daniel Mentz <danielmentz@google.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
  • Loading branch information
abrodkin authored and tpetazzoni committed Sep 19, 2016
1 parent a81d1cd commit 10c4d27
Show file tree
Hide file tree
Showing 3 changed files with 4 additions and 6 deletions.
3 changes: 0 additions & 3 deletions Makefile
Expand Up @@ -631,9 +631,6 @@ endif
rm -rf $(TARGET_DIR)/usr/share/gtk-doc
-rmdir $(TARGET_DIR)/usr/share 2>/dev/null
$(STRIP_FIND_CMD) | xargs -0 $(STRIPCMD) 2>/dev/null || true
if test -d $(TARGET_DIR)/lib/modules; then \
find $(TARGET_DIR)/lib/modules -type f -name '*.ko' -print0 | \
xargs -0 -r $(KSTRIPCMD); fi

# 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
Expand Down
4 changes: 4 additions & 0 deletions linux/linux.mk
Expand Up @@ -384,6 +384,10 @@ define LINUX_INSTALL_IMAGES_CMDS
$(call LINUX_INSTALL_DTB,$(BINARIES_DIR))
endef

ifeq ($(BR2_STRIP_strip),y)
LINUX_MAKE_FLAGS += INSTALL_MOD_STRIP=1
endif

define LINUX_INSTALL_TARGET_CMDS
$(LINUX_INSTALL_KERNEL_IMAGE_TO_TARGET)
# Install modules and remove symbolic links pointing to build
Expand Down
3 changes: 0 additions & 3 deletions package/Makefile.in
Expand Up @@ -203,16 +203,13 @@ TARGET_OBJDUMP = $(TARGET_CROSS)objdump

ifeq ($(BR2_STRIP_strip),y)
STRIP_STRIP_DEBUG := --strip-debug
STRIP_STRIP_UNNEEDED := --strip-unneeded
STRIP_STRIP_ALL := --strip-all
TARGET_STRIP = $(TARGET_CROSS)strip
STRIPCMD = $(TARGET_CROSS)strip --remove-section=.comment --remove-section=.note
KSTRIPCMD = $(STRIPCMD) $(STRIP_STRIP_UNNEEDED)
endif
ifeq ($(BR2_STRIP_none),y)
TARGET_STRIP = true
STRIPCMD = $(TARGET_STRIP)
KSTRIPCMD = $(TARGET_STRIP)
endif
INSTALL := $(shell which install || type -p install)
FLEX := $(shell which flex || type -p flex)
Expand Down

0 comments on commit 10c4d27

Please sign in to comment.