ports/75436: [maintainer] devel/valgrind*: Check for kernel option USER_LDT
Simon Barner
barner at gmx.de
Thu Dec 23 15:40:20 UTC 2004
>Number: 75436
>Category: ports
>Synopsis: [maintainer] devel/valgrind*: Check for kernel option USER_LDT
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: maintainer-update
>Submitter-Id: current-users
>Arrival-Date: Thu Dec 23 15:40:19 GMT 2004
>Closed-Date:
>Last-Modified:
>Originator: Simon Barner
>Release: FreeBSD 5.3-STABLE i386
>Organization:
>Environment:
FreeBSD zi025.glhnet.mhn.de 5.3-STABLE FreeBSD 5.3-STABLE #0: Fri Nov 5 02:17:53 CET 2004 root at zi025.glhnet.mhn.de:/usr/obj/usr/src/sys/KISTE i386
>Description:
Valgrind needs a kernel that is built with option USER_LDT to perform some kind of pointer analysis.
The attached patches print a warning in case the running kernel does not
support i386_set_ldt() and advises the user to rebuilt her kernel accordingly.
Please note: These patches are cumulative to
http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/71832
>How-To-Repeat:
N/A
>Fix:
--- valgrind-USER_LDT.patch begins here ---
diff -ruN valgrind.orig/Makefile valgrind/Makefile
--- valgrind.orig/Makefile Thu Dec 23 16:11:47 2004
+++ valgrind/Makefile Thu Dec 23 16:12:38 2004
@@ -69,6 +69,16 @@
@${INSTALL_DATA} ${WRKSRC}/coregrind/vg_unistd.h \
${PREFIX}/include/valgrind
+# Check if kernel is built with USER_LDT option (FreeBSD 4 only)
+.if ${OSVERSION} < 500000
+ @${PREFIX}/bin/valgrind --tool=memcheck true 2> ${WRKDIR}/ldt.test
+ @${GREP} i386_set_ldt ${WRKDIR}/ldt.test >/dev/null &&\
+ ${ECHO_CMD} !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! && \
+ ${ECHO_CMD} Please rebuild your kernel with ``options USER_LDT''! && \
+ ${ECHO_CMD} Otherwise, valgrind will not be able to perform pointer analysis! && \
+ ${ECHO_CMD} !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! || true
+.endif
+
@yes | ${PREFIX}/bin/valgrind --tool=memcheck --gen-suppressions=yes true \
| ${SED} -e 's,.*{$$,{,' \
| ${GREP} -v '^=' \
--- valgrind-USER_LDT.patch ends here ---
--- valgrind-snapshot-USER_LDT.patch begins here ---
diff -ruN valgrind-snapshot.orig/Makefile valgrind-snapshot/Makefile
--- valgrind-snapshot.orig/Makefile Thu Dec 23 16:15:19 2004
+++ valgrind-snapshot/Makefile Thu Dec 23 16:14:45 2004
@@ -32,18 +32,17 @@
.include <bsd.port.pre.mk>
-.if ${OSVERSION} >= 500000
-PLIST_SUB+= RELENG_4="@comment"
-PLIST_SUB+= RELENG_5=""
-.else
-PLIST_SUB+= RELENG_4=""
-PLIST_SUB+= PRELENG_5="@comment"
-.endif
-
.if ${PERL_LEVEL} < 500601
IGNORE= "can\'t be built. Your Perl version is too old. Please use lang/perl5.8 port to upgrade your Perl"
.endif
+.if ${OSVERSION} < 500000
+PLIST_SUB+= RELENG_4="" \
+ RELENG_5="@comment "
+.else
+PLIST_SUB+= RELENG_4="@comment " \
+ RELENG_5=""
+.endif
PROCFS!= /sbin/mount | ${GREP} '^procfs' | ${AWK} '{print $1}'
pre-everything::
@@ -73,6 +72,17 @@
@${INSTALL_DATA} ${WRKSRC}/coregrind/vg_unistd.h \
${PREFIX}/include/valgrind
+# Check if kernel is built with USER_LDT option (FreeBSD 4 only)
+.if ${OSVERSION} < 500000
+ @${PREFIX}/bin/valgrind --tool=memcheck true 2> ${WRKDIR}/ldt.test
+ @${GREP} i386_set_ldt ${WRKDIR}/ldt.test >/dev/null &&\
+ ${ECHO_CMD} !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! && \
+ ${ECHO_CMD} Please rebuild your kernel with ``options USER_LDT''! && \
+ ${ECHO_CMD} Otherwise, valgrind will not be able to perform pointer analysis! && \
+ ${ECHO_CMD} !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! || true
+.endif
+
+# Generate suppression files
@yes | ${PREFIX}/bin/valgrind --tool=memcheck --gen-suppressions=yes true \
| ${SED} -e 's,.*{$$,{,' \
| ${GREP} -v '^=' \
--- valgrind-snapshot-USER_LDT.patch ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list