summaryrefslogtreecommitdiffstats
path: root/share/mk/bsd.lib.mk
diff options
context:
space:
mode:
authoremaste <emaste@FreeBSD.org>2012-12-15 00:03:35 +0000
committeremaste <emaste@FreeBSD.org>2012-12-15 00:03:35 +0000
commit7de08e4543a4fa97d34aa2f77627e50d7398dc14 (patch)
tree8f6604f09b2f6b5a5dcf71a26fe18a4a8d1c27f9 /share/mk/bsd.lib.mk
parent868038e38dbd637a0125c0bf32f3c3711de30334 (diff)
downloadFreeBSD-src-7de08e4543a4fa97d34aa2f77627e50d7398dc14.zip
FreeBSD-src-7de08e4543a4fa97d34aa2f77627e50d7398dc14.tar.gz
Put shared library debug info into separate .symbols file
Sponsored by: ADARA Networks
Diffstat (limited to 'share/mk/bsd.lib.mk')
-rw-r--r--share/mk/bsd.lib.mk22
1 files changed, 20 insertions, 2 deletions
diff --git a/share/mk/bsd.lib.mk b/share/mk/bsd.lib.mk
index 0335d53..82216a2 100644
--- a/share/mk/bsd.lib.mk
+++ b/share/mk/bsd.lib.mk
@@ -173,11 +173,15 @@ SOLINKOPTS+= -Wl,--fatal-warnings -Wl,--warn-shared-textrel
.if target(beforelinking)
${SHLIB_NAME}: beforelinking
.endif
+.if defined(DEBUG_FLAGS)
+${SHLIB_NAME}.debug: ${SOBJS}
+.else
${SHLIB_NAME}: ${SOBJS}
+.endif
@${ECHO} building shared library ${SHLIB_NAME}
- @rm -f ${.TARGET} ${SHLIB_LINK}
+ @rm -f ${SHLIB_NAME} ${SHLIB_LINK}
.if defined(SHLIB_LINK)
- @ln -fs ${.TARGET} ${SHLIB_LINK}
+ @ln -fs ${SHLIB_NAME} ${SHLIB_LINK}
.endif
.if !defined(NM)
@${CC} ${LDFLAGS} ${SSP_CFLAGS} ${SOLINKOPTS} \
@@ -191,6 +195,15 @@ ${SHLIB_NAME}: ${SOBJS}
.if ${MK_CTF} != "no"
${CTFMERGE} ${CTFFLAGS} -o ${.TARGET} ${SOBJS}
.endif
+
+.if defined(DEBUG_FLAGS)
+${SHLIB_NAME}: ${SHLIB_NAME}.debug ${SHLIB_NAME}.symbols
+ ${OBJCOPY} --strip-debug --add-gnu-debuglink=${SHLIB_NAME}.symbols \
+ ${SHLIB_NAME}.debug ${.TARGET}
+
+${SHLIB_NAME}.symbols: ${SHLIB_NAME}.debug
+ ${OBJCOPY} --only-keep-debug ${SHLIB_NAME}.debug ${.TARGET}
+.endif
.endif
.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) && ${MK_TOOLCHAIN} != "no"
@@ -267,6 +280,11 @@ _libinstall:
${INSTALL} ${STRIP} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
${_INSTALLFLAGS} ${_SHLINSTALLFLAGS} \
${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}
+.if defined(DEBUG_FLAGS)
+ ${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
+ ${_INSTALLFLAGS} ${_SHLINSTALLFLAGS} \
+ ${SHLIB_NAME}.symbols ${DESTDIR}${SHLIBDIR}
+.endif
.if defined(SHLIB_LINK)
# ${_SHLIBDIRPREFIX} and ${_LDSCRIPTROOT} are both needed when cross-building
# and when building 32 bits library shims. ${_SHLIBDIRPREFIX} is the directory
OpenPOWER on IntegriCloud