diff options
author | Alex Xu (Hello71) <alex_y_xu@yahoo.ca> | 2023-03-11 12:27:23 -0500 |
---|---|---|
committer | Sam James <sam@gentoo.org> | 2024-05-04 02:32:47 +0100 |
commit | 51f6ad158fc3de14df3f87d1242ff950b2189f05 (patch) | |
tree | ba45bea7b2b8459dc0f54781bc2cdbd55aedcd46 | |
parent | NEWS: fix typo in placeholder (diff) | |
download | portage-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-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 |