[oe-commits] [openembedded-core] 01/22: package.bbclass: only one hardlink of separated debug info file in each directory

git at git.openembedded.org git at git.openembedded.org
Tue Aug 28 09:32:30 UTC 2018


This is an automated email from the git hooks/post-receive script.

rpurdie pushed a commit to branch master
in repository openembedded-core.

commit d4eaf42f7708f8d3a31a04d958bd7420dd7dd6b9
Author: Hongxu Jia <hongxu.jia at windriver.com>
AuthorDate: Fri Aug 24 15:00:31 2018 +0800

    package.bbclass: only one hardlink of separated debug info file in each directory
    
    While multiple hardlinks of binary located in different dirs,
    there are also multiple hardlinks of separated debug info file
    with the same binary name in same debug dirs. But in each dir,
    only one debug file with original name works. Because all of
    binary hardlinks have one `.gnu_debuglink' which is added in
    `splitdebuginfo'. It caused gdb could not find debugging
    symbols.
    
    [Before the patch]
    $ find .
    ./usr/bin/foo
    ./usr/bin/foo-hd1
    ./usr/bin/.debug
    ./usr/bin/.debug/foo
    ./usr/bin/.debug/foo-hd1
    ./usr/libexec/foo-hd2
    ./usr/libexec/.debug
    ./usr/libexec/.debug/foo-hd2
    
    $ readelf --debug-dump usr/libexec/foo-hd2
    Contents of the .gnu_debuglink section:
      Separate debug info file: foo
    
    $ gdb usr/libexec/foo-hd2
    Reading symbols from usr/libexec/foo-hd2...(no debugging symbols found)...done.
    [Before the patch]
    
    [Apply the patch]
    $ find .
    ./usr/bin/foo
    ./usr/bin/foo-hd1
    ./usr/bin/.debug
    ./usr/bin/.debug/foo
    ./usr/libexec/foo-hd2
    ./usr/libexec/.debug
    ./usr/libexec/.debug/foo
    
    $ gdb usr/libexec/foo-hd2
    Reading symbols from usr/libexec/foo-hd2...Reading symbols from usr/libexec/.debug/foo...done.
    [Apply the patch]
    
    Signed-off-by: Hongxu Jia <hongxu.jia at windriver.com>
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 meta/classes/package.bbclass | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
index df9aacb..9cfe43c 100644
--- a/meta/classes/package.bbclass
+++ b/meta/classes/package.bbclass
@@ -1043,15 +1043,18 @@ python split_and_strip_files () {
         for ref in inodes:
             if len(inodes[ref]) == 1:
                 continue
+
+            target = inodes[ref][0][len(dvar):]
             for file in inodes[ref][1:]:
                 src = file[len(dvar):]
-                dest = debuglibdir + os.path.dirname(src) + debugdir + "/" + os.path.basename(src) + debugappend
+                dest = debuglibdir + os.path.dirname(src) + debugdir + "/" + os.path.basename(target) + debugappend
                 fpath = dvar + dest
-                target = inodes[ref][0][len(dvar):]
                 ftarget = dvar + debuglibdir + os.path.dirname(target) + debugdir + "/" + os.path.basename(target) + debugappend
                 bb.utils.mkdirhier(os.path.dirname(fpath))
-                #bb.note("Link %s -> %s" % (fpath, ftarget))
-                os.link(ftarget, fpath)
+                # Only one hardlink of separated debug info file in each directory
+                if not os.access(fpath, os.R_OK):
+                    #bb.note("Link %s -> %s" % (fpath, ftarget))
+                    os.link(ftarget, fpath)
 
         # Create symlinks for all cases we were able to split symbols
         for file in symlinks:

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list