On Mar 29, 2014 1:52 PM, "Steven Noonan" <steven@uplinklabs.net> wrote:
On Sat, Mar 29, 2014 at 10:41 AM, Dave Reisner <d@falconindy.com> wrote:
On Mar 29, 2014 1:36 PM, "Steven Noonan" <steven@uplinklabs.net> wrote:
Hi folks,
I think the directory Pacman is using for the split-out debug symbols is incorrect. This appears to be needed:
Why do you think this? What are the symptoms you're seeing? I use debug packages all the time and they work as expected.
I've seen tools complain they can't find debug symbols or simply not show
any.
What tools have you used successfully? perf, gdb, and oprofile all seem to look in the 'debug-id' directory, not in 'debug_id'...
gdb and valgrind, mostly. I've not seen either complain about missing symbols.
commit 61ed104abf95ac38e7d317c760807f308ea90555 Author: Steven Noonan <steven@uplinklabs.net> 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 <steven@uplinklabs.net>
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/to...
GDB also looks in '.build-id' (lines 83, 102):
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob;f=gdb/build-...
OProfile, same issue (lines 93, 104):
http://sourceforge.net/p/oprofile/oprofile/ci/master/tree/libutil++/bfd_supp...
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