diff options
author | emaste <emaste@FreeBSD.org> | 2012-12-15 00:03:35 +0000 |
---|---|---|
committer | emaste <emaste@FreeBSD.org> | 2012-12-15 00:03:35 +0000 |
commit | 7de08e4543a4fa97d34aa2f77627e50d7398dc14 (patch) | |
tree | 8f6604f09b2f6b5a5dcf71a26fe18a4a8d1c27f9 /share/mk/bsd.lib.mk | |
parent | 868038e38dbd637a0125c0bf32f3c3711de30334 (diff) | |
download | FreeBSD-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.mk | 22 |
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 |