]> git.donarmstrong.com Git - debhelper.git/blobdiff - dh_strip
dh_strip: Use build-id in /usr/lib/debug. Closes: #642158 Thanks, Jakub Wilk
[debhelper.git] / dh_strip
index aebc10096990b61374d80ccd4abc37bc74e1aba7..be0b000d7abd3947db1699c352fe13a4fc65b54c 100755 (executable)
--- a/dh_strip
+++ b/dh_strip
@@ -161,16 +161,23 @@ sub make_debug {
        return unless get_file_type($file) =~ /not stripped/;
 
        my ($base_file)=$file=~/^\Q$tmp\E(.*)/;
-       my $debug_path=$desttmp."/usr/lib/debug/".$base_file;
+       my $debug_path;
+       my $elfnotes=`readelf -n $file`;
+       if ($elfnotes =~ /^\s+Build ID: ([0-9a-f]{2})([0-9a-f]+)$/m) {
+               $debug_path=$desttmp."/usr/lib/debug/.build-id/$1/$2.debug"
+       }
+       else {
+               $debug_path=$desttmp."/usr/lib/debug/".$base_file;
+       }
        my $debug_dir=dirname($debug_path);
        if (! -d $debug_dir) {
                doit("install", "-d", $debug_dir);
        }
-       if(compat(8)) {
+       if (compat(8)) {
                doit($objcopy, "--only-keep-debug", $file, $debug_path);
        }
        else {
-               doit($objcopy, "--only-keep-debug --compress-debug-sections", $file, $debug_path);
+               doit($objcopy, "--only-keep-debug", "--compress-debug-sections", $file, $debug_path);
        }
        # No reason for this to be executable.
        doit("chmod", 644, $debug_path);