On Mon, Dec 05, 2016 at 03:02:10PM +1000, Allan McRae wrote: > Debug packages are fairly useless currently because the soucre files needed > for stepping through code etc are not packaged with them. This patch adds the > needed source files to the debug package and adjusts the debug info to look at > the /usr/src/debug/ directory for them rather than the build location. This > requires using the "debugedit" program which is provided as part of the RPM > sources.
...will pacman provide a copy of debugedit? > Signed-off-by: Allan McRae <al...@archlinux.org> > --- > scripts/libmakepkg/tidy/strip.sh.in | 21 ++++++++++++++++++++- > 1 file changed, 20 insertions(+), 1 deletion(-) > > diff --git a/scripts/libmakepkg/tidy/strip.sh.in > b/scripts/libmakepkg/tidy/strip.sh.in > index 9baed9f..ff75cb4 100644 > --- a/scripts/libmakepkg/tidy/strip.sh.in > +++ b/scripts/libmakepkg/tidy/strip.sh.in > @@ -35,6 +35,11 @@ build_id() { > LANG=C readelf -n $1 | sed -n '/Build ID/ { s/.*: //p; q; }' > } > > +source_files() { > + LANG=C readelf $1 --debug-dump | \ "$1" > + awk '/DW_AT_name +:/{name=$8}/DW_AT_comp_dir +:/{print $8 "/" > name}' > +} > + > strip_file() { > local binary=$1; shift > > @@ -50,6 +55,18 @@ strip_file() { > return > fi > > + # copy source files to debug directory > + local f t > + for f in $(source_files "$binary"); do http://mywiki.wooledge.org/DontReadLinesWithFor while read -r f; do ... done < <(source_files "$binary") > + t=${f/$srcdir/$dbgsrc} t=${f/"$srcdir"/$dbgsrc} > + mkdir -p "${t%/*}" > + cp "$f" "$t" cp -- "$f" "$t" > + done > + > + # adjust debug symbols to point at sources > + debugedit -b "${srcdir}" -d /usr/src/debug/ -i "$binary" &> > /dev/null > + > + # copy debug symbols to debug directory > mkdir -p "$dbgdir/${binary%/*}" > objcopy --only-keep-debug "$binary" "$dbgdir/$binary.debug" > objcopy --add-gnu-debuglink="$dbgdir/${binary#/}.debug" > "$binary" > @@ -88,8 +105,10 @@ tidy_strip() { > [[ -z ${STRIP_STATIC+x} ]] && STRIP_STATIC="-S" > > if check_option "debug" "y"; then > + > > dbgdir="$pkgdirbase/$pkgbase-@DEBUGSUFFIX@/usr/lib/debug" > - mkdir -p "$dbgdir" > + > dbgsrc="$pkgdirbase/$pkgbase-@DEBUGSUFFIX@/usr/src/debug" > + mkdir -p "$dbgdir" "$dbgsrc" > fi > > local binary strip_flags > -- > 2.10.2