aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Xu (Hello71) <alex_y_xu@yahoo.ca>2023-03-11 12:27:23 -0500
committerSam James <sam@gentoo.org>2024-05-04 02:32:47 +0100
commit51f6ad158fc3de14df3f87d1242ff950b2189f05 (patch)
treeba45bea7b2b8459dc0f54781bc2cdbd55aedcd46
parentNEWS: fix typo in placeholder (diff)
downloadportage-51f6ad158fc3de14df3f87d1242ff950b2189f05.tar.gz
portage-51f6ad158fc3de14df3f87d1242ff950b2189f05.tar.bz2
portage-51f6ad158fc3de14df3f87d1242ff950b2189f05.zip
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>
-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