summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Wielaard <mark@klomp.org>2017-04-16 18:16:02 +0200
committerPanu Matilainen <pmatilai@redhat.com>2017-04-19 12:36:05 +0300
commit3790a6872749a9601be6044be7d8fb0951131376 (patch)
tree24a8ad0beabeef3a5a89b53b8d52dc63a69c9e90
parent6e9fd97f6dba9e04cfd33225b610272b964cc5fc (diff)
downloadrpm-3790a6872749a9601be6044be7d8fb0951131376.tar.gz
find-debuginfo.sh: Only add minisymtab for executables or shared libraries.
It only makes sense to add a minisymtab for executables and shared libraries. Other executable ELF files (like kernel modules) don't need it. Since those don't have a dynsym section trying to add it will fail and produce confusing errors from nm. Signed-off-by: Mark Wielaard <mark@klomp.org>
-rwxr-xr-xscripts/find-debuginfo.sh11
1 files changed, 10 insertions, 1 deletions
diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh
index f7ffbbc2a..8effac87a 100755
--- a/scripts/find-debuginfo.sh
+++ b/scripts/find-debuginfo.sh
@@ -374,7 +374,16 @@ do_file()
fi
# strip -g implies we have full symtab, don't add mini symtab in that case.
- $strip_g || ($include_minidebug && add_minidebug "${debugfn}" "$f")
+ # It only makes sense to add a minisymtab for executables and shared
+ # libraries. Other executable ELF files (like kernel modules) don't need it.
+ if [ "$include_minidebug" = "true" -a "$strip_g" = "false" ]; then
+ skip_mini=true
+ case "$(file -bi "$f")" in
+ application/x-sharedlib*) skip_mini=false ;;
+ application/x-executable*) skip_mini=false ;;
+ esac
+ $skip_mini || add_minidebug "${debugfn}" "$f"
+ fi
echo "./${f#$RPM_BUILD_ROOT}" >> "$ELFBINSFILE"