diff options
-rwxr-xr-x | bin/estrip | 18 |
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 |