mirror of
https://git.yoctoproject.org/poky
synced 2026-04-30 12:32:12 +02:00
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] (From OE-Core rev: d4eaf42f7708f8d3a31a04d958bd7420dd7dd6b9) Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
87d3a9685d
commit
c0abc412bc
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user