summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Purdie <richard@openedhand.com>2006-07-24 08:35:37 +0000
committerRichard Purdie <richard@openedhand.com>2006-07-24 08:35:37 +0000
commit2ca73b57dc7df958ce80bfa3c2e3dc3fc18950b5 (patch)
tree3e901319353dfdc6d8175b9d65a021943ae91a2c
parent23b93ceb820de17f28c2bf2bf114c0fca70cf159 (diff)
downloadopenembedded-core-2ca73b57dc7df958ce80bfa3c2e3dc3fc18950b5.tar.gz
openembedded-core-2ca73b57dc7df958ce80bfa3c2e3dc3fc18950b5.tar.bz2
openembedded-core-2ca73b57dc7df958ce80bfa3c2e3dc3fc18950b5.tar.xz
openembedded-core-2ca73b57dc7df958ce80bfa3c2e3dc3fc18950b5.zip
Add automatic generation of -dbg packages. These contain the debug symbols that are stripped from binaries and the symbols are linked to the original binaries via the gnu-debuglink section. If the -dbg packages are installed, oprofile and gdb will use them for symbol lookup.
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@546 311d38ba-8fff-0310-9ca6-ca027cbcb966
-rw-r--r--meta/classes/package.bbclass26
-rw-r--r--meta/conf/bitbake.conf5
2 files changed, 21 insertions, 10 deletions
diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
index 9edcc1e5e..636574895 100644
--- a/meta/classes/package.bbclass
+++ b/meta/classes/package.bbclass
@@ -177,8 +177,10 @@ runstrip() {
ro=1
chmod +w "$1"
}
+ '${OBJCOPY}' --only-keep-debug "$1" "$1.dbg"
'${STRIP}' "$1"
st=$?
+ '${OBJCOPY}' --add-gnu-debuglink="$1.dbg" "$1"
test -n "$ro" && chmod -w "$1"
if test $st -ne 0
then
@@ -249,6 +251,21 @@ python populate_packages () {
bb.error("%s is listed in PACKAGES mutliple times. Undefined behaviour will result." % pkg)
pkgs += pkg
+ if (bb.data.getVar('INHIBIT_PACKAGE_STRIP', d, 1) != '1'):
+ stripfunc = ""
+ for root, dirs, files in os.walk(dvar):
+ for f in files:
+ file = os.path.join(root, f)
+ if not os.path.islink(file) and isexec(file):
+ stripfunc += "\trunstrip %s || st=1\n" % (file)
+ if not stripfunc == "":
+ from bb import build
+ localdata = bb.data.createCopy(d)
+ # strip
+ bb.data.setVar('RUNSTRIP', '\tlocal st\n\tst=0\n%s\treturn $st' % stripfunc, localdata)
+ bb.data.setVarFlag('RUNSTRIP', 'func', 1, localdata)
+ bb.build.exec_func('RUNSTRIP', localdata)
+
for pkg in packages.split():
localdata = bb.data.createCopy(d)
root = os.path.join(workdir, "install", pkg)
@@ -273,7 +290,6 @@ python populate_packages () {
bb.mkdirhier(root)
filesvar = bb.data.getVar('FILES', localdata, 1) or ""
files = filesvar.split()
- stripfunc = ""
for file in files:
if os.path.isabs(file):
file = '.' + file
@@ -293,17 +309,9 @@ python populate_packages () {
fpath = os.path.join(root,file)
dpath = os.path.dirname(fpath)
bb.mkdirhier(dpath)
- if (bb.data.getVar('INHIBIT_PACKAGE_STRIP', d, 1) != '1') and not os.path.islink(file) and isexec(file):
- stripfunc += "\trunstrip %s || st=1\n" % fpath
ret = bb.movefile(file,fpath)
if ret is None or ret == 0:
raise bb.build.FuncFailed("File population failed")
- if not stripfunc == "":
- from bb import build
- # strip
- bb.data.setVar('RUNSTRIP', '\tlocal st\n\tst=0\n%s\treturn $st' % stripfunc, localdata)
- bb.data.setVarFlag('RUNSTRIP', 'func', 1, localdata)
- bb.build.exec_func('RUNSTRIP', localdata)
del localdata
os.chdir(workdir)
diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
index 529405a3e..6c15ef71b 100644
--- a/meta/conf/bitbake.conf
+++ b/meta/conf/bitbake.conf
@@ -102,7 +102,7 @@ PROVIDES = ""
PROVIDES_prepend = "${P} ${PF} ${PN} "
RPROVIDES = ""
-PACKAGES = "${PN} ${PN}-doc ${PN}-dev ${PN}-locale"
+PACKAGES = "${PN}-dbg ${PN} ${PN}-doc ${PN}-dev ${PN}-locale"
FILES = ""
FILES_${PN} = "${bindir} ${sbindir} ${libexecdir} ${libdir}/lib*.so.* \
${sysconfdir} ${sharedstatedir} ${localstatedir} \
@@ -118,6 +118,8 @@ FILES_${PN}-dev = "${includedir} ${libdir}/lib*.so ${libdir}/*.la \
${libdir}/*.a ${libdir}/*.o ${libdir}/pkgconfig \
/lib/*.a /lib/*.o ${datadir}/aclocal"
FILES_${PN}-locale = "${datadir}/locale"
+FILES_${PN}-dbg = "${bindir}/*.dbg ${sbindir}/*.dbg ${libexecdir}/*.dbg ${libdir}/lib*.so.*.dbg \
+ /bin/*.dbg /sbin/*.dbg /lib/*.so*.dbg ${libdir}/${PN}/*.dbg"
# File manifest
@@ -222,6 +224,7 @@ export AR = "${HOST_PREFIX}ar"
export AS = "${HOST_PREFIX}as"
export RANLIB = "${HOST_PREFIX}ranlib"
export STRIP = "${HOST_PREFIX}strip"
+export OBJCOPY = "${HOST_PREFIX}objcopy"
export BUILD_CC = "${CCACHE}${BUILD_PREFIX}gcc ${BUILD_CC_ARCH}"
export BUILD_CXX = "${CCACHE}${BUILD_PREFIX}g++ ${BUILD_CC_ARCH}"