From: William Douglas Date: Wed, 6 Mar 2013 23:18:17 +0000 (-0800) Subject: Keep function symbols for backtraces. X-Git-Tag: accepted/trunk/20130309.052847^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=343c985ee3f8e027386fec73da1c63f827e48a03;p=platform%2Fupstream%2Frpm.git Keep function symbols for backtraces. In order to get minimal backtraces in gdb without installing debug-info packages strip packages with eu-strip -g. Also check for kernel modules and strip them without attempting to leave minimal function symbols in place (as this does not work correctly). Signed-off-by: William Douglas --- diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh index 82dd150..50ceb18 100644 --- a/scripts/find-debuginfo.sh +++ b/scripts/find-debuginfo.sh @@ -95,13 +95,18 @@ debugdir="${RPM_BUILD_ROOT}/usr/lib/debug" strip_to_debug() { - local g= local r= $strip_r && r=--reloc-debug-sections - $strip_g && case "$(file -bi "$2")" in - application/x-sharedlib*) g=-g ;; + case $2 in + *.ko) + # don't attempt to create a minimal backtrace binary for + # kernel modules as this just causes the stripping process + # to be skipped entirely + eu-strip --remove-comment $r -f "$1" "$2" || exit + ;; + *) + eu-strip --remove-comment -g -f "$1" "$2" || exit esac - eu-strip --remove-comment $r $g -f "$1" "$2" || exit chmod 444 "$1" || exit } @@ -267,8 +272,6 @@ while read nlinks inum f; do fi echo "extracting debug info from $f" - mode=$(stat -c %a "$f") - chmod +w "$f" id=$($(DEBUGEDIT=$(which debugedit 2>/dev/null); \ echo ${DEBUGEDIT:-/usr/lib/rpm/debugedit}) -b "$RPM_BUILD_DIR" \ -d /usr/src/debug -i -l "$SOURCEFILE" "$f") || exit @@ -291,25 +294,13 @@ while read nlinks inum f; do esac mkdir -p "${debugdn}" - objcopy --only-keep-debug $f $debugfn || : - ( - shopt -s extglob - strip_option="--strip-all" - case "$f" in - *.ko) - strip_option="--strip-debug" ;; - *$STRIP_KEEP_SYMTAB*) - if test -n "$STRIP_KEEP_SYMTAB"; then - strip_option="--strip-debug" - fi - ;; - esac - if test "$NO_DEBUGINFO_STRIP_DEBUG" = true ; then - strip_option= - fi - objcopy --add-gnu-debuglink=$debugfn -R .comment -R .GCC.command.line $strip_option $f - chmod $mode $f - ) || : + if test -w "$f"; then + strip_to_debug "${debugfn}" "$f" + else + chmod u+w "$f" + strip_to_debug "${debugfn}" "$f" + chmod u-w "$f" + fi if [ -n "$id" ]; then make_id_link "$id" "$dn/$(basename $f)"