mirror of
https://git.yoctoproject.org/poky
synced 2026-05-30 12:29:55 +00:00
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
This commit is contained in:
@@ -177,8 +177,10 @@ runstrip() {
|
|||||||
ro=1
|
ro=1
|
||||||
chmod +w "$1"
|
chmod +w "$1"
|
||||||
}
|
}
|
||||||
|
'${OBJCOPY}' --only-keep-debug "$1" "$1.dbg"
|
||||||
'${STRIP}' "$1"
|
'${STRIP}' "$1"
|
||||||
st=$?
|
st=$?
|
||||||
|
'${OBJCOPY}' --add-gnu-debuglink="$1.dbg" "$1"
|
||||||
test -n "$ro" && chmod -w "$1"
|
test -n "$ro" && chmod -w "$1"
|
||||||
if test $st -ne 0
|
if test $st -ne 0
|
||||||
then
|
then
|
||||||
@@ -249,6 +251,21 @@ python populate_packages () {
|
|||||||
bb.error("%s is listed in PACKAGES mutliple times. Undefined behaviour will result." % pkg)
|
bb.error("%s is listed in PACKAGES mutliple times. Undefined behaviour will result." % pkg)
|
||||||
pkgs += 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():
|
for pkg in packages.split():
|
||||||
localdata = bb.data.createCopy(d)
|
localdata = bb.data.createCopy(d)
|
||||||
root = os.path.join(workdir, "install", pkg)
|
root = os.path.join(workdir, "install", pkg)
|
||||||
@@ -273,7 +290,6 @@ python populate_packages () {
|
|||||||
bb.mkdirhier(root)
|
bb.mkdirhier(root)
|
||||||
filesvar = bb.data.getVar('FILES', localdata, 1) or ""
|
filesvar = bb.data.getVar('FILES', localdata, 1) or ""
|
||||||
files = filesvar.split()
|
files = filesvar.split()
|
||||||
stripfunc = ""
|
|
||||||
for file in files:
|
for file in files:
|
||||||
if os.path.isabs(file):
|
if os.path.isabs(file):
|
||||||
file = '.' + file
|
file = '.' + file
|
||||||
@@ -293,17 +309,9 @@ python populate_packages () {
|
|||||||
fpath = os.path.join(root,file)
|
fpath = os.path.join(root,file)
|
||||||
dpath = os.path.dirname(fpath)
|
dpath = os.path.dirname(fpath)
|
||||||
bb.mkdirhier(dpath)
|
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)
|
ret = bb.movefile(file,fpath)
|
||||||
if ret is None or ret == 0:
|
if ret is None or ret == 0:
|
||||||
raise bb.build.FuncFailed("File population failed")
|
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
|
del localdata
|
||||||
os.chdir(workdir)
|
os.chdir(workdir)
|
||||||
|
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ PROVIDES = ""
|
|||||||
PROVIDES_prepend = "${P} ${PF} ${PN} "
|
PROVIDES_prepend = "${P} ${PF} ${PN} "
|
||||||
RPROVIDES = ""
|
RPROVIDES = ""
|
||||||
|
|
||||||
PACKAGES = "${PN} ${PN}-doc ${PN}-dev ${PN}-locale"
|
PACKAGES = "${PN}-dbg ${PN} ${PN}-doc ${PN}-dev ${PN}-locale"
|
||||||
FILES = ""
|
FILES = ""
|
||||||
FILES_${PN} = "${bindir} ${sbindir} ${libexecdir} ${libdir}/lib*.so.* \
|
FILES_${PN} = "${bindir} ${sbindir} ${libexecdir} ${libdir}/lib*.so.* \
|
||||||
${sysconfdir} ${sharedstatedir} ${localstatedir} \
|
${sysconfdir} ${sharedstatedir} ${localstatedir} \
|
||||||
@@ -118,6 +118,8 @@ FILES_${PN}-dev = "${includedir} ${libdir}/lib*.so ${libdir}/*.la \
|
|||||||
${libdir}/*.a ${libdir}/*.o ${libdir}/pkgconfig \
|
${libdir}/*.a ${libdir}/*.o ${libdir}/pkgconfig \
|
||||||
/lib/*.a /lib/*.o ${datadir}/aclocal"
|
/lib/*.a /lib/*.o ${datadir}/aclocal"
|
||||||
FILES_${PN}-locale = "${datadir}/locale"
|
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
|
# File manifest
|
||||||
|
|
||||||
@@ -222,6 +224,7 @@ export AR = "${HOST_PREFIX}ar"
|
|||||||
export AS = "${HOST_PREFIX}as"
|
export AS = "${HOST_PREFIX}as"
|
||||||
export RANLIB = "${HOST_PREFIX}ranlib"
|
export RANLIB = "${HOST_PREFIX}ranlib"
|
||||||
export STRIP = "${HOST_PREFIX}strip"
|
export STRIP = "${HOST_PREFIX}strip"
|
||||||
|
export OBJCOPY = "${HOST_PREFIX}objcopy"
|
||||||
|
|
||||||
export BUILD_CC = "${CCACHE}${BUILD_PREFIX}gcc ${BUILD_CC_ARCH}"
|
export BUILD_CC = "${CCACHE}${BUILD_PREFIX}gcc ${BUILD_CC_ARCH}"
|
||||||
export BUILD_CXX = "${CCACHE}${BUILD_PREFIX}g++ ${BUILD_CC_ARCH}"
|
export BUILD_CXX = "${CCACHE}${BUILD_PREFIX}g++ ${BUILD_CC_ARCH}"
|
||||||
|
|||||||
Reference in New Issue
Block a user