Module Name:    src
Committed By:   christos
Date:           Tue May 23 00:54:13 UTC 2017

Modified Files:
        src/share/mk: bsd.lib.mk

Log Message:
XXX: Remove -fPIE for profiled libraries because this breaks relocations for
the call to __mcount.


To generate a diff of this commit:
cvs rdiff -u -r1.370 -r1.371 src/share/mk/bsd.lib.mk

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/share/mk/bsd.lib.mk
diff -u src/share/mk/bsd.lib.mk:1.370 src/share/mk/bsd.lib.mk:1.371
--- src/share/mk/bsd.lib.mk:1.370	Mon Apr 24 13:09:37 2017
+++ src/share/mk/bsd.lib.mk	Mon May 22 20:54:13 2017
@@ -1,4 +1,4 @@
-#	$NetBSD: bsd.lib.mk,v 1.370 2017/04/24 17:09:37 chs Exp $
+#	$NetBSD: bsd.lib.mk,v 1.371 2017/05/23 00:54:13 christos Exp $
 #	@(#)bsd.lib.mk	8.3 (Berkeley) 4/22/94
 
 .include <bsd.init.mk>
@@ -43,6 +43,10 @@ realinstall:	checkver libinstall
 # Perhaps a more correct solution is to always generate _pic.a
 # files or always have a shared library.
 # XXX: This breaks profiling (__mcount relocation is wrong)
+# XXX: This is why we remove the PIE_CFLAGS from the profile
+# built-in rule below.
+# Another fix is to provide rcrt0.o like OpenBSD does and
+# do relocations for static PIE.
 .if defined(MKPIE) && (${MKPIE} != "no") && !defined(NOPIE)
 CFLAGS+=        ${PIE_CFLAGS}
 AFLAGS+=        ${PIE_AFLAGS}
@@ -220,7 +224,8 @@ LIBSTRIPSHLIBOBJS=	yes
 
 .c.po:
 	${_MKTARGET_COMPILE}
-	${COMPILE.c} ${PROFFLAGS} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} -pg ${.IMPSRC} -o ${.TARGET}
+	# XXX: See __mcount comment above
+	${COMPILE.c:S/${PIE_CFLAGS}//} ${PROFFLAGS} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} -pg ${.IMPSRC} -o ${.TARGET}
 .if defined(CTFCONVERT)
 	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
 .endif

Reply via email to