Hi folks, I think the directory Pacman is using for the split-out debug symbols is incorrect. This appears to be needed:
commit 61ed104abf95ac38e7d317c760807f308ea90555 Author: Steven Noonan <[email protected]> Date: Wed Feb 12 05:44:16 2014 -0800 makepkg: use dash instead of underscore in /usr/lib/debug/.build-id Signed-off-by: Steven Noonan <[email protected]> diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in index 027fcc3..7e663af 100644 --- a/scripts/makepkg.sh.in +++ b/scripts/makepkg.sh.in @@ -1525,7 +1525,7 @@ strip_file() { # has this file already been stripped if [[ -n "$bid" ]]; then - if [[ -f "$dbgdir/.build_id/${bid:0:2}/${bid:2}.debug" ]]; then + if [[ -f "$dbgdir/.build-id/${bid:0:2}/${bid:2}.debug" ]]; then return fi elif [[ -f "$dbgdir/$binary.debug" ]]; then @@ -1546,15 +1546,15 @@ strip_file() { if [[ -n "$bid" ]]; then local target - mkdir -p "$dbgdir/.build_id/${bid:0:2}" + mkdir -p "$dbgdir/.build-id/${bid:0:2}" target="../../../../../${binary#./}" target="${target/..\/..\/usr\/lib\/}" target="${target/..\/usr\/}" - ln -s "$target" "$dbgdir/.build_id/${bid:0:2}/${bid:2}" + ln -s "$target" "$dbgdir/.build-id/${bid:0:2}/${bid:2}" target="../../${binary#./}.debug" - ln -s "$target" "$dbgdir/.build_id/${bid:0:2}/${bid:2}.debug" + ln -s "$target" "$dbgdir/.build-id/${bid:0:2}/${bid:2}.debug" fi fi To justify this change, I can't find any tools that actually look in 'build_id' (with an underscore) when searching for symbols. For example, perf does this (lines 101, 105): https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/tools/perf/util/build-id.c#n92 GDB also looks in '.build-id' (lines 83, 102): https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob;f=gdb/build-id.c;h=491900b3e545c72325a54fc79847b8872fa63aae;hb=HEAD#l73 OProfile, same issue (lines 93, 104): http://sourceforge.net/p/oprofile/oprofile/ci/master/tree/libutil++/bfd_support.cpp I noticed tool breakage back when I submitted the kernel module split+debug patch, but kept the patch to myself because I figured I must have been missing the rationale for the difference, but I've been so far unable to find any. - Steven
