aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/estrip18
1 files changed, 12 insertions, 6 deletions
diff --git a/bin/estrip b/bin/estrip
index 2d9d50922..640645be6 100755
--- a/bin/estrip
+++ b/bin/estrip
@@ -280,9 +280,6 @@ dedup_elf_debug() {
# Usage: save_elf_debug <src> <inode_debug> [splitdebug]
save_elf_debug() {
- ${FEATURES_splitdebug} || return 0
- ${PORTAGE_RESTRICT_splitdebug} && return 0
-
debug-print-function "${FUNCNAME}" "$@"
# NOTE: Debug files must be installed in
@@ -390,7 +387,7 @@ process_elf() {
if ${strip_this} ; then
# See if we can split & strip at the same time
- if [[ -n ${SPLIT_STRIP_FLAGS} ]] ; then
+ if ${splitdebug} && [[ -n ${SPLIT_STRIP_FLAGS} ]] ; then
local shortname="${x##*/}.debug"
local splitdebug="${tmpdir}/splitdebug/${shortname}.${BASHPID:-$(__bashpid)}"
@@ -401,7 +398,9 @@ process_elf() {
"${x}"
save_elf_debug "${x}" "${inode_link}_debug" "${splitdebug}"
else
- save_elf_debug "${x}" "${inode_link}_debug"
+ if ${splitdebug} ; then
+ save_elf_debug "${x}" "${inode_link}_debug"
+ fi
${already_stripped} || ${STRIP} ${strip_flags} "${x}"
fi
fi
@@ -431,7 +430,7 @@ process_ar() {
# There is no concept of splitdebug for objects not yet
# linked in (only for finally linked ELFs), so we have to
# retain the debug info in the archive itself.
- if ! ${FEATURES_splitdebug} || ${PORTAGE_RESTRICT_splitdebug} ; then
+ if ! ${splitdebug} ; then
${STRIP} -g "${x}" && ${RANLIB} "${x}"
fi
fi
@@ -542,6 +541,12 @@ do
set +o noglob
fi
+ if ${FEATURES_splitdebug} && ! ${PORTAGE_RESTRICT_splitdebug} ; then
+ splitdebug=true
+ else
+ splitdebug=false
+ fi
+
# In Prefix we are usually an unprivileged user, so we can't strip
# unwritable objects. Make them temporarily writable for the
# stripping.
@@ -564,6 +569,7 @@ do
${f} == *"SB shared object"* ]] ; then
process_elf "${x}" "${inode_link}" ${PORTAGE_STRIP_FLAGS}
elif [[ ${f} == *"SB relocatable"* ]] ; then
+ [[ ${x} == *.ko ]] || splitdebug=false
process_elf "${x}" "${inode_link}" ${SAFE_STRIP_FLAGS}
fi