estrip: Don't use splitdebug for .o files
As the process_ar comment explained, object files cannot be splitdebug.
Bug: https://bugs.gentoo.org/787623 ("www-client/firefox[clang]: .gnu_debuglink is busted when using LLD")
Fixes: 51579fb34c19 ("prepstrip: add support for elfutils strip")
Signed-off-by: Alex Xu (Hello71) <alex_y_xu@yahoo.ca>
Signed-off-by: Sam James <sam@gentoo.org>
diff --git a/bin/estrip b/bin/estrip
index 2d9d509..640645b 100755
--- a/bin/estrip
+++ b/bin/estrip
@@ -280,9 +280,6 @@
# 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 @@
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 @@
"${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 @@
# 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 @@
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 @@
${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