diff --git a/lfs/strip b/lfs/strip
index 466dfd9d5..c577c954b 100644
--- a/lfs/strip
+++ b/lfs/strip
@@ -48,7 +48,10 @@ md5 :
 $(TARGET) :
 ifeq "$(TOOLCHAIN)" "1"
 	# Strip everything in the toolchain
-	$(DIR_SRC)/src/stripper $(TOOLS_DIR)
+	$(DIR_SRC)/src/stripper $(TOOLS_DIR) \
+		--strip="$(TOOLS_DIR)/$(CROSSTARGET)/bin/strip" \
+		--ignore-errors \
+		--exclude=$(TOOLS_DIR)/$(CROSSTARGET)
 else
 	# Don't strip VDR binaries, because they use a weird plugin system
 	# which does not work when unneeded symbols get stripped from
diff --git a/src/stripper b/src/stripper
index fa624815b..498a8a30e 100755
--- a/src/stripper
+++ b/src/stripper
@@ -2,12 +2,20 @@
 
 paths=()
 excludes=()
+strip="strip"
+break_on_error="1"
 
 while [ $# -gt 0 ]; do
 	case "${1}" in
+		--strip=*)
+			strip="${1#*=}"
+			;;
 		--exclude=*)
 			excludes+=( "!" "-path" "${1#*=}/*" )
 			;;
+		--ignore-errors)
+			break_on_error="0"
+			;;
 		*)
 			paths+=( "${1}" )
 			;;
@@ -49,11 +57,10 @@ function _strip() {
 		--absolute-names --dump "${file}" 2>/dev/null)"
 
 	echo "Stripping ${file}..."
-	if ! strip "${args[@]}" "${file}"; then
-		return 1
+	if ! "${strip}" "${args[@]}" "${file}"; then
+		return ${break_on_error}
 	fi
 
-
 	# Restore capabilities
 	if [ -n "${capabilities}" ]; then
 		setfattr --no-dereference --restore=<(echo "${capabilities}")
