From owner-p4-projects@FreeBSD.ORG Mon Jul 29 22:15:50 2013 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5537E888; Mon, 29 Jul 2013 22:15:50 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 1910A886 for ; Mon, 29 Jul 2013 22:15:50 +0000 (UTC) (envelope-from brooks@freebsd.org) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [8.8.178.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 04E6A23F8 for ; Mon, 29 Jul 2013 22:15:50 +0000 (UTC) Received: from skunkworks.freebsd.org ([127.0.1.74]) by skunkworks.freebsd.org (8.14.7/8.14.7) with ESMTP id r6TMFn0H022881 for ; Mon, 29 Jul 2013 22:15:49 GMT (envelope-from brooks@freebsd.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.7/8.14.6/Submit) id r6TMFn91022878 for perforce@freebsd.org; Mon, 29 Jul 2013 22:15:49 GMT (envelope-from brooks@freebsd.org) Date: Mon, 29 Jul 2013 22:15:49 GMT Message-Id: <201307292215.r6TMFn91022878@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to brooks@freebsd.org using -f From: Brooks Davis Subject: PERFORCE change 231565 for review To: Perforce Change Reviews Precedence: bulk X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.14 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 29 Jul 2013 22:15:50 -0000 http://p4web.freebsd.org/@@231565?ac=10 Change 231565 by brooks@brooks_zenith on 2013/07/29 22:15:11 Add counters for each type of timeout and report them via sysctl. Tidy the timeout code a bit and ensure that the last status register check is performed after the last timeout expires. Based on feedback from: imp Affected files ... .. //depot/projects/ctsrd/beribsd/src/sys/dev/cfi/cfi_core.c#18 edit .. //depot/projects/ctsrd/beribsd/src/sys/dev/cfi/cfi_var.h#9 edit Differences ... ==== //depot/projects/ctsrd/beribsd/src/sys/dev/cfi/cfi_core.c#18 (text+ko) ==== @@ -55,6 +55,8 @@ #include #include +static void cfi_add_sysctls(struct cfi_softc *); + extern struct cdevsw cfi_cdevsw; char cfi_driver_name[] = "cfi"; @@ -343,6 +345,8 @@ "%s%u", cfi_driver_name, u); sc->sc_nod->si_drv1 = sc; + cfi_add_sysctls(sc); + #ifdef CFI_SUPPORT_STRATAFLASH /* * Store the Intel factory PPR in the environment. In some @@ -363,6 +367,45 @@ return (0); } +static void +cfi_add_sysctls(struct cfi_softc *sc) +{ + struct sysctl_ctx_list *ctx; + struct sysctl_oid_list *children; + + ctx = device_get_sysctl_ctx(sc->sc_dev); + children = SYSCTL_CHILDREN(device_get_sysctl_tree(sc->sc_dev)); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "typical_erase_timout_count", + CTLFLAG_RD, &sc->sc_tto_counts[CFI_TIMEOUT_ERASE], + 0, "Number of times the typical erase timeout was exceeded"); + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "max_erase_timout_count", + CTLFLAG_RD, &sc->sc_mto_counts[CFI_TIMEOUT_ERASE], 0, + "Number of times the maximum erase timeout was exceeded"); + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "typical_write_timout_count", + CTLFLAG_RD, &sc->sc_tto_counts[CFI_TIMEOUT_WRITE], 0, + "Number of times the typical write timeout was exceeded"); + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "max_write_timout_count", + CTLFLAG_RD, &sc->sc_mto_counts[CFI_TIMEOUT_WRITE], 0, + "Number of times the maximum write timeout was exceeded"); + if (sc->sc_maxbuf > 0) { + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "typical_bufwrite_timout_count", + CTLFLAG_RD, &sc->sc_tto_counts[CFI_TIMEOUT_BUFWRITE], 0, + "Number of times the typical buffered write timeout was " + "exceeded"); + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "max_bufwrite_timout_count", + CTLFLAG_RD, &sc->sc_mto_counts[CFI_TIMEOUT_BUFWRITE], 0, + "Number of times the maximum buffered write timeout was " + "exceeded"); + } +} + int cfi_detach(device_t dev) { @@ -382,15 +425,18 @@ { int done, error, tto_exceeded; uint32_t st0 = 0, st = 0; - sbintime_t mend, now, tend; - - tend = start + sc->sc_typical_timeouts[cmd]; - mend = start + sc->sc_max_timeouts[cmd]; + sbintime_t now; done = 0; error = 0; tto_exceeded = 0; while (!done && !error) { + /* + * Save time before we start so we always do one check + * after the timeout has expired. + */ + now = sbinuptime(); + switch (sc->sc_cmdset) { case CFI_VEND_INTEL_ECS: case CFI_VEND_INTEL_SCS: @@ -419,24 +465,25 @@ break; } - now = sbinuptime(); - if (tto_exceeded || now > tend) { - if (!tto_exceeded) + if (tto_exceeded || + now > start + sc->sc_typical_timeouts[cmd]) { + if (!tto_exceeded) { tto_exceeded = 1; - if (now > mend) { + sc->sc_tto_counts[cmd]++; +#ifdef CFI_DEBUG_TIMEOUT + device_printf(sc->sc_dev, + "typical timeout exceeded (cmd %d)", cmd); +#endif + } + if (now > start + sc->sc_max_timeouts[cmd]) { + sc->sc_mto_counts[cmd]++; #ifdef CFI_DEBUG_TIMEOUT device_printf(sc->sc_dev, "max timeout exceeded (cmd %d)", cmd); #endif - break; } } } -#ifdef CFI_DEBUG_TIMEOUT - if (tto_exceeded) - device_printf(sc->sc_dev, - "typical timeout exceeded (cmd %d)", cmd); -#endif if (!done && !error) error = ETIMEDOUT; if (error) ==== //depot/projects/ctsrd/beribsd/src/sys/dev/cfi/cfi_var.h#9 (text+ko) ==== @@ -65,6 +65,8 @@ u_int sc_cmdset; sbintime_t sc_typical_timeouts[3]; sbintime_t sc_max_timeouts[3]; + u_int sc_tto_counts[3]; + u_int sc_mto_counts[3]; u_int sc_maxbuf; From owner-p4-projects@FreeBSD.ORG Thu Aug 1 22:20:11 2013 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id A145FEAB; Thu, 1 Aug 2013 22:20:11 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 6294CEA9 for ; Thu, 1 Aug 2013 22:20:11 +0000 (UTC) (envelope-from brooks@freebsd.org) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [8.8.178.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4DD612E4A for ; Thu, 1 Aug 2013 22:20:11 +0000 (UTC) Received: from skunkworks.freebsd.org ([127.0.1.74]) by skunkworks.freebsd.org (8.14.7/8.14.7) with ESMTP id r71MKB2n081221 for ; Thu, 1 Aug 2013 22:20:11 GMT (envelope-from brooks@freebsd.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.7/8.14.6/Submit) id r71MKB5S081218 for perforce@freebsd.org; Thu, 1 Aug 2013 22:20:11 GMT (envelope-from brooks@freebsd.org) Date: Thu, 1 Aug 2013 22:20:11 GMT Message-Id: <201308012220.r71MKB5S081218@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to brooks@freebsd.org using -f From: Brooks Davis Subject: PERFORCE change 231634 for review To: Perforce Change Reviews Precedence: bulk X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.14 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 01 Aug 2013 22:20:11 -0000 http://p4web.freebsd.org/@@231634?ac=10 Change 231634 by brooks@brooks_zenith on 2013/08/01 22:19:35 Fix a bunch of cases of using spaces instead of tabs. Affected files ... .. //depot/projects/ctsrd/tesla/src/bin/pax/Makefile#2 edit .. //depot/projects/ctsrd/tesla/src/sbin/adjkerntz/Makefile#2 edit .. //depot/projects/ctsrd/tesla/src/sbin/growfs/Makefile#2 edit .. //depot/projects/ctsrd/tesla/src/sbin/iscontrol/Makefile#2 edit .. //depot/projects/ctsrd/tesla/src/sbin/rcorder/Makefile#2 edit .. //depot/projects/ctsrd/tesla/src/usr.bin/cpuset/Makefile#2 edit .. //depot/projects/ctsrd/tesla/src/usr.bin/pamtest/Makefile#2 edit .. //depot/projects/ctsrd/tesla/src/usr.bin/rctl/Makefile#2 edit .. //depot/projects/ctsrd/tesla/src/usr.bin/setchannel/Makefile#2 edit .. //depot/projects/ctsrd/tesla/src/usr.bin/stdbuf/Makefile#2 edit .. //depot/projects/ctsrd/tesla/src/usr.sbin/cdcontrol/Makefile#2 edit .. //depot/projects/ctsrd/tesla/src/usr.sbin/crunch/crunchide/Makefile#2 edit .. //depot/projects/ctsrd/tesla/src/usr.sbin/getfmac/Makefile#2 edit .. //depot/projects/ctsrd/tesla/src/usr.sbin/getpmac/Makefile#2 edit .. //depot/projects/ctsrd/tesla/src/usr.sbin/setfmac/Makefile#2 edit .. //depot/projects/ctsrd/tesla/src/usr.sbin/setpmac/Makefile#2 edit Differences ... ==== //depot/projects/ctsrd/tesla/src/bin/pax/Makefile#2 (text+ko) ==== @@ -25,7 +25,7 @@ # regex routines and must define NET2_REGEX. # Pax may not compile if this not (un)defined properly. -PROG= pax +PROG= pax SRCS= ar_io.c ar_subs.c buf_subs.c cache.c cpio.c file_subs.c ftree.c \ gen_subs.c getoldopt.c options.c pat_rep.c pax.c sel_subs.c \ tables.c tar.c tty_subs.c ==== //depot/projects/ctsrd/tesla/src/sbin/adjkerntz/Makefile#2 (text+ko) ==== @@ -1,6 +1,6 @@ # $FreeBSD: head/sbin/adjkerntz/Makefile 202532 2010-01-17 21:56:27Z ed $ -PROG= adjkerntz +PROG= adjkerntz MAN= adjkerntz.8 .include ==== //depot/projects/ctsrd/tesla/src/sbin/growfs/Makefile#2 (text+ko) ==== @@ -8,13 +8,13 @@ .PATH: ${.CURDIR}/../mount -PROG= growfs -SRCS= growfs.c getmntopts.c +PROG= growfs +SRCS= growfs.c getmntopts.c MAN= growfs.8 CFLAGS+=-I${.CURDIR}/../mount .if defined(GFSDBG) -SRCS+= debug.c +SRCS+= debug.c .endif DPADD= ${LIBUTIL} ==== //depot/projects/ctsrd/tesla/src/sbin/iscontrol/Makefile#2 (text+ko) ==== @@ -1,14 +1,14 @@ # $FreeBSD: head/sbin/iscontrol/Makefile 234425 2012-04-18 16:47:57Z jpaetzel $ -SRCS= iscontrol.c pdu.c fsm.c config.c login.c auth_subr.c misc.c -PROG= iscontrol -DPADD= ${LIBCAM} ${LIBMD} -LDADD= -lcam -lmd -S= ${.CURDIR}/../../sys +SRCS= iscontrol.c pdu.c fsm.c config.c login.c auth_subr.c misc.c +PROG= iscontrol +DPADD= ${LIBCAM} ${LIBMD} +LDADD= -lcam -lmd +S= ${.CURDIR}/../../sys WARNS?= 3 CFLAGS+= -I$S -MAN= iscsi.conf.5 iscontrol.8 +MAN= iscsi.conf.5 iscontrol.8 .include ==== //depot/projects/ctsrd/tesla/src/sbin/rcorder/Makefile#2 (text+ko) ==== @@ -1,15 +1,15 @@ # $NetBSD: Makefile,v 1.1 1999/11/23 05:28:20 mrg Exp $ # $FreeBSD: head/sbin/rcorder/Makefile 198236 2009-10-19 16:00:24Z ru $ -PROG= rcorder -SRCS= ealloc.c hash.c rcorder.c +PROG= rcorder +SRCS= ealloc.c hash.c rcorder.c MAN= rcorder.8 LDADD= -lutil DPADD= ${LIBUTIL} # XXX hack for make's hash.[ch] -CFLAGS+= -DORDER -I. +CFLAGS+= -DORDER -I. SRCS+= util.h CLEANFILES+= util.h ==== //depot/projects/ctsrd/tesla/src/usr.bin/cpuset/Makefile#2 (text+ko) ==== @@ -1,5 +1,5 @@ # $FreeBSD: head/usr.bin/cpuset/Makefile 201386 2010-01-02 10:27:05Z ed $ -PROG= cpuset +PROG= cpuset .include ==== //depot/projects/ctsrd/tesla/src/usr.bin/pamtest/Makefile#2 (text+ko) ==== @@ -3,9 +3,9 @@ OPENPAM= ${.CURDIR}/../../contrib/openpam .PATH: ${OPENPAM}/include ${OPENPAM}/bin/pamtest -PROG= pamtest -SRCS= pamtest.c -DPADD= ${LIBPAM} -LDADD= ${MINUSLPAM} +PROG= pamtest +SRCS= pamtest.c +DPADD= ${LIBPAM} +LDADD= ${MINUSLPAM} .include ==== //depot/projects/ctsrd/tesla/src/usr.bin/rctl/Makefile#2 (text+ko) ==== @@ -1,6 +1,6 @@ # $FreeBSD: head/usr.bin/rctl/Makefile 222772 2011-06-06 20:24:17Z ed $ -PROG= rctl +PROG= rctl MAN= rctl.8 DPADD= ${LIBUTIL} ==== //depot/projects/ctsrd/tesla/src/usr.bin/setchannel/Makefile#2 (text+ko) ==== @@ -1,5 +1,5 @@ # $FreeBSD: head/usr.bin/setchannel/Makefile 165023 2006-12-09 02:27:45Z grog $ -PROG= setchannel +PROG= setchannel .include ==== //depot/projects/ctsrd/tesla/src/usr.bin/stdbuf/Makefile#2 (text+ko) ==== @@ -1,6 +1,5 @@ # $FreeBSD: head/usr.bin/stdbuf/Makefile 240372 2012-09-11 21:13:18Z delphij $ -PROG= stdbuf -SRCS= stdbuf.c +PROG= stdbuf .include ==== //depot/projects/ctsrd/tesla/src/usr.sbin/cdcontrol/Makefile#2 (text+ko) ==== @@ -1,6 +1,6 @@ # $FreeBSD: head/usr.sbin/cdcontrol/Makefile 201724 2010-01-07 09:40:34Z dwmalone $ -PROG= cdcontrol +PROG= cdcontrol DPADD= ${LIBEDIT} ${LIBTERMCAP} LDADD= -ledit -ltermcap ==== //depot/projects/ctsrd/tesla/src/usr.sbin/crunch/crunchide/Makefile#2 (text+ko) ==== @@ -1,6 +1,6 @@ # $FreeBSD: head/usr.sbin/crunch/crunchide/Makefile 232911 2012-03-13 05:21:14Z jmallett $ -PROG= crunchide +PROG= crunchide SRCS= crunchide.c TARGET_ARCH?= ${MACHINE_ARCH} ==== //depot/projects/ctsrd/tesla/src/usr.sbin/getfmac/Makefile#2 (text+ko) ==== @@ -1,6 +1,6 @@ # $FreeBSD: head/usr.sbin/getfmac/Makefile 201390 2010-01-02 11:07:44Z ed $ -PROG= getfmac +PROG= getfmac MAN= getfmac.8 .include ==== //depot/projects/ctsrd/tesla/src/usr.sbin/getpmac/Makefile#2 (text+ko) ==== @@ -1,6 +1,6 @@ # $FreeBSD: head/usr.sbin/getpmac/Makefile 201390 2010-01-02 11:07:44Z ed $ -PROG= getpmac +PROG= getpmac MAN= getpmac.8 .include ==== //depot/projects/ctsrd/tesla/src/usr.sbin/setfmac/Makefile#2 (text+ko) ==== @@ -1,6 +1,6 @@ # $FreeBSD: head/usr.sbin/setfmac/Makefile 201390 2010-01-02 11:07:44Z ed $ -PROG= setfmac +PROG= setfmac LINKS= ${BINDIR}/setfmac ${BINDIR}/setfsmac MAN= setfmac.8 setfsmac.8 ==== //depot/projects/ctsrd/tesla/src/usr.sbin/setpmac/Makefile#2 (text+ko) ==== @@ -1,6 +1,6 @@ # $FreeBSD: head/usr.sbin/setpmac/Makefile 201390 2010-01-02 11:07:44Z ed $ -PROG= setpmac +PROG= setpmac MAN= setpmac.8 .include From owner-p4-projects@FreeBSD.ORG Fri Aug 2 03:47:06 2013 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id DA917E81; Fri, 2 Aug 2013 03:47:05 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 8BCDBE7F for ; Fri, 2 Aug 2013 03:47:05 +0000 (UTC) (envelope-from brooks@freebsd.org) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [8.8.178.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 7917F227F for ; Fri, 2 Aug 2013 03:47:05 +0000 (UTC) Received: from skunkworks.freebsd.org ([127.0.1.74]) by skunkworks.freebsd.org (8.14.7/8.14.7) with ESMTP id r723l5CZ029597 for ; Fri, 2 Aug 2013 03:47:05 GMT (envelope-from brooks@freebsd.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.7/8.14.6/Submit) id r723l5Z9029594 for perforce@freebsd.org; Fri, 2 Aug 2013 03:47:05 GMT (envelope-from brooks@freebsd.org) Date: Fri, 2 Aug 2013 03:47:05 GMT Message-Id: <201308020347.r723l5Z9029594@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to brooks@freebsd.org using -f From: Brooks Davis Subject: PERFORCE change 231637 for review To: Perforce Change Reviews Precedence: bulk X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.14 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Aug 2013 03:47:06 -0000 http://p4web.freebsd.org/@@231637?ac=10 Change 231637 by brooks@brooks_zenith on 2013/08/02 03:46:08 Simplify the generation of make rules and reduce duplicate code. Affected files ... .. //depot/projects/ctsrd/tesla/src/share/mk/bsd.prog.mk#8 edit Differences ... ==== //depot/projects/ctsrd/tesla/src/share/mk/bsd.prog.mk#8 (text+ko) ==== @@ -42,39 +42,17 @@ .if defined(PROG) PROGNAME?= ${PROG} -.if defined(SRCS) -OBJS+= ${SRCS:N*.h:R:S/$/.o/g} - -.if target(beforelinking) -beforelinking: ${OBJS} -${PROG}: beforelinking -.endif -${PROG}: ${OBJS} -.if defined(PROG_CXX) - ${CXX} ${CXXFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD} -.else - ${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD} -.endif -.if ${MK_CTF} != "no" - ${CTFMERGE} ${CTFFLAGS} -o ${.TARGET} ${OBJS} -.endif - -.else # !defined(SRCS) - -.if !target(${PROG}) +.if !defined(SRCS) && !target(${PROG}) .if defined(PROG_CXX) SRCS= ${PROG}.cc .else SRCS= ${PROG}.c .endif +.endif -# Always make an intermediate object file because: -# - it saves time rebuilding when only the library has changed -# - the name of the object gets put into the executable symbol table instead of -# the name of a variable temporary object. -# - it's useful to keep objects around for crunching. -OBJS+= ${PROG}.o +.if defined(SRCS) && !empty(SRCS) +OBJS+= ${SRCS:N*.h:R:S/$/.o/g} .if target(beforelinking) beforelinking: ${OBJS} @@ -91,8 +69,6 @@ .endif .endif -.endif # !defined(SRCS) - # XXX: forced assignment due to make not figuring out how to make things # from generated .c files (which are added to SRCS later). CSRC_OBJS:= ${SRCS:M*.c:R:S/$/.object/:N.object} From owner-p4-projects@FreeBSD.ORG Fri Aug 2 15:34:55 2013 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id A67D797; Fri, 2 Aug 2013 15:34:55 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 63DC895 for ; Fri, 2 Aug 2013 15:34:55 +0000 (UTC) (envelope-from brooks@freebsd.org) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [8.8.178.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 503382CB8 for ; Fri, 2 Aug 2013 15:34:55 +0000 (UTC) Received: from skunkworks.freebsd.org ([127.0.1.74]) by skunkworks.freebsd.org (8.14.7/8.14.7) with ESMTP id r72FYtsM033313 for ; Fri, 2 Aug 2013 15:34:55 GMT (envelope-from brooks@freebsd.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.7/8.14.6/Submit) id r72FYthd033310 for perforce@freebsd.org; Fri, 2 Aug 2013 15:34:55 GMT (envelope-from brooks@freebsd.org) Date: Fri, 2 Aug 2013 15:34:55 GMT Message-Id: <201308021534.r72FYthd033310@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to brooks@freebsd.org using -f From: Brooks Davis Subject: PERFORCE change 231643 for review To: Perforce Change Reviews Precedence: bulk X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.14 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Aug 2013 15:34:55 -0000 http://p4web.freebsd.org/@@231643?ac=10 Change 231643 by brooks@brooks_zenith on 2013/08/02 15:34:28 Emit explicit .c.obc rules in tesla mode. Affected files ... .. //depot/projects/ctsrd/tesla/src/usr.sbin/config/mkmakefile.c#5 edit Differences ... ==== //depot/projects/ctsrd/tesla/src/usr.sbin/config/mkmakefile.c#5 (text+ko) ==== @@ -821,6 +821,23 @@ fprintf(f, "\t%s -S -emit-llvm -o ${.TARGET}\n", teslacompilewith); fprintf(f, "\n"); + + if (ftp->f_depends) + fprintf(f, "%s%sobc: $S/%s%c %s\n", + ftp->f_objprefix, tail(np), np, och, + ftp->f_depends); + else + fprintf(f, "%s%sobc: $S/%s%c\n", + ftp->f_objprefix, tail(np), np, och); + if (strlen(ftp->f_objprefix)) + fprintf(f, + "\t%s $S/%s -emit-llvm -o ${.TARGET}\n", + teslacompilewith, np); + else + fprintf(f, "\t%s -emit-llvm -o ${.TARGET}\n", + teslacompilewith); + fprintf(f, "\n"); + if (teslacompilewith != compilewith) free(teslacompilewith); From owner-p4-projects@FreeBSD.ORG Fri Aug 2 15:36:58 2013 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 211931AD; Fri, 2 Aug 2013 15:36:58 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id BC5FF1AB for ; Fri, 2 Aug 2013 15:36:57 +0000 (UTC) (envelope-from brooks@freebsd.org) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [8.8.178.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id A89842CC7 for ; Fri, 2 Aug 2013 15:36:57 +0000 (UTC) Received: from skunkworks.freebsd.org ([127.0.1.74]) by skunkworks.freebsd.org (8.14.7/8.14.7) with ESMTP id r72FavNq033459 for ; Fri, 2 Aug 2013 15:36:57 GMT (envelope-from brooks@freebsd.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.7/8.14.6/Submit) id r72Favv2033456 for perforce@freebsd.org; Fri, 2 Aug 2013 15:36:57 GMT (envelope-from brooks@freebsd.org) Date: Fri, 2 Aug 2013 15:36:57 GMT Message-Id: <201308021536.r72Favv2033456@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to brooks@freebsd.org using -f From: Brooks Davis Subject: PERFORCE change 231644 for review To: Perforce Change Reviews Precedence: bulk X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.14 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Aug 2013 15:36:58 -0000 http://p4web.freebsd.org/@@231644?ac=10 Change 231644 by brooks@brooks_zenith on 2013/08/02 15:36:25 Add the ability to do TESLA (and TESLA-style) llvm instrumentaton using bitcode files in addition to LLVM IR files. Default to using bitcode files as it is signficantly faster (no-op instrumentation is faster than traditional compilation). Affected files ... .. //depot/projects/ctsrd/tesla/src/share/mk/bsd.own.mk#8 edit .. //depot/projects/ctsrd/tesla/src/share/mk/sys.mk#13 edit .. //depot/projects/ctsrd/tesla/src/sys/conf/kern.post.mk#5 edit .. //depot/projects/ctsrd/tesla/src/sys/conf/kern.pre.mk#7 edit Differences ... ==== //depot/projects/ctsrd/tesla/src/share/mk/bsd.own.mk#8 (text+ko) ==== @@ -646,8 +646,15 @@ .endif .else LLVM_INSTR_DEP= tesla.manifest +.if ${LLVM_IR_TYPE} == "bc" +LLVM_INSTR_COMMAND= ${TESLA} instrument -verify-each -tesla-manifest \ + tesla.manifest ${.IMPSRC} -o ${.TARGET} +.elif ${LLVM_IR_TYPE} == "ll" LLVM_INSTR_COMMAND= ${TESLA} instrument -S -verify-each -tesla-manifest \ tesla.manifest ${.IMPSRC} -o ${.TARGET} +.else +.error unknown LLVM IR type ${LLVM_IR_TYPE} +.endif .if defined(WITHOUT_LLVM_INSTRUMENTED) .error WITHOUT_LLVM_INSTRUMENTED and WITH_TESLA can't both be set. .else ==== //depot/projects/ctsrd/tesla/src/share/mk/sys.mk#13 (text+ko) ==== @@ -32,7 +32,7 @@ .if defined(%POSIX) .SUFFIXES: .o .c .y .l .a .sh .f .else -.SUFFIXES: .out .a .dot .instrll .instro .oll .ln .manifest .o .c .cc .cpp .cxx .C .m .F .f .e .r .tesla .y .l .S .asm .s .cl .p .h .sh +.SUFFIXES: .out .a .dot .instrbc .instrll .instro .obc .oll .ln .manifest .o .c .cc .cpp .cxx .C .m .F .f .e .r .tesla .y .l .S .asm .s .cl .p .h .sh .endif AR ?= ar @@ -128,6 +128,8 @@ LLC ?= llc LLCFLAGS ?= ${CFLAGS:M-O*:S/^-O$/-O1/:S/-O/-O=/} +LLVM_IR_TYPE ?= bc + LLVM_LINK ?= llvm-link MAKE ?= make @@ -231,6 +233,9 @@ cp -fp ${.IMPSRC} ${.TARGET} chmod a+x ${.TARGET} +.c.obc: + ${CC} ${CFLAGS:N-O*} -emit-llvm -c ${.IMPSRC} -o ${.TARGET} + .c.oll: ${CC} ${CFLAGS:N-O*} -emit-llvm -S ${.IMPSRC} -o ${.TARGET} @@ -274,13 +279,24 @@ .e.o .r.o .F.o .f.o: ${FC} ${RFLAGS} ${EFLAGS} ${FFLAGS} -c ${.IMPSRC} +.if ${LLVM_IR_TYPE} == "bc" +.instrbc.instro: + ${LLC} -filetype=obj ${LLCFLAGS} ${.IMPSRC} -o ${.TARGET} + ${CTFCONVERT_CMD} +.elif ${LLVM_IR_TYPE} == "ll" .instrll.instro: ${LLC} -filetype=obj ${LLCFLAGS} ${.IMPSRC} -o ${.TARGET} ${CTFCONVERT_CMD} +.else +.error Unknown LLVM IR type ${LLVM_IR_TYPE} +.endif .manifest.dot: ${TESLA} graph ${.IMPSRC} -o ${.TARGET} +.obc.instrbc: tesla.manifest + ${LLVM_INSTR_COMMAND} + .oll.instrll: tesla.manifest ${LLVM_INSTR_COMMAND} ==== //depot/projects/ctsrd/tesla/src/sys/conf/kern.post.mk#5 (text+ko) ==== @@ -157,7 +157,7 @@ linterrs tags vers.c \ vnode_if.c vnode_if.h vnode_if_newproto.h vnode_if_typedef.h \ ${MFILES:T:S/.m$/.c/} ${MFILES:T:S/.m$/.h/} \ - ${TESLA_FILES} ${OLLS} ${INSTRLLS} ${INSTROBJS} \ + ${TESLA_FILES} ${OIRS} ${INSTR_IRS} ${INSTR_OBJS} \ tesla.manifest \ ${CLEAN} ==== //depot/projects/ctsrd/tesla/src/sys/conf/kern.pre.mk#7 (text+ko) ==== @@ -176,9 +176,9 @@ # XXX: should probably include GEN_CFILES, but may be tricky LLVM_CFILES= ${CFILES} ${SYSTEM_CFILES} TESLA_FILES= ${LLVM_CFILES:T:.c=.tesla} -OLLS= ${LLVM_CFILES:T:.c=.oll} -INSTRLLS= ${LLVM_CFILES:T:.c=.instrll} -INSTROBJS= ${LLVM_CFILES:T:.c=.instro} +OIRS= ${LLVM_CFILES:T:.c=.o${LLVM_IR_TYPE}} +INSTR_IRS= ${LLVM_CFILES:T:.c=.instr${LLVM_IR_TYPE}} +INSTR_OBJS= ${LLVM_CFILES:T:.c=.instro} SYSTEM_OBJS+= ${LLVM_CFILES:T:.c=.instro} ${NOT_C_OBJS} .endif SYSTEM_OBJS+= hack.So From owner-p4-projects@FreeBSD.ORG Fri Aug 2 16:16:41 2013 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C8115D16; Fri, 2 Aug 2013 16:16:41 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 8A561D14 for ; Fri, 2 Aug 2013 16:16:41 +0000 (UTC) (envelope-from brooks@freebsd.org) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [8.8.178.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 5EF042ED5 for ; Fri, 2 Aug 2013 16:16:41 +0000 (UTC) Received: from skunkworks.freebsd.org ([127.0.1.74]) by skunkworks.freebsd.org (8.14.7/8.14.7) with ESMTP id r72GGfvN039526 for ; Fri, 2 Aug 2013 16:16:41 GMT (envelope-from brooks@freebsd.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.7/8.14.6/Submit) id r72GGfbo039523 for perforce@freebsd.org; Fri, 2 Aug 2013 16:16:41 GMT (envelope-from brooks@freebsd.org) Date: Fri, 2 Aug 2013 16:16:41 GMT Message-Id: <201308021616.r72GGfbo039523@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to brooks@freebsd.org using -f From: Brooks Davis Subject: PERFORCE change 231645 for review To: Perforce Change Reviews Precedence: bulk X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.14 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Aug 2013 16:16:42 -0000 http://p4web.freebsd.org/@@231645?ac=10 Change 231645 by brooks@brooks_zenith on 2013/08/02 16:16:08 Add a simple tesla kernel with other debugging turned off. Affected files ... .. //depot/projects/ctsrd/tesla/src/sys/amd64/conf/TESLA_NODEBUG#1 add Differences ... From owner-p4-projects@FreeBSD.ORG Fri Aug 2 20:46:36 2013 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3092BE8C; Fri, 2 Aug 2013 20:46:36 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id CD6C2E8A for ; Fri, 2 Aug 2013 20:46:35 +0000 (UTC) (envelope-from brooks@freebsd.org) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [8.8.178.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id AACE92A3F for ; Fri, 2 Aug 2013 20:46:35 +0000 (UTC) Received: from skunkworks.freebsd.org ([127.0.1.74]) by skunkworks.freebsd.org (8.14.7/8.14.7) with ESMTP id r72KkZmK078534 for ; Fri, 2 Aug 2013 20:46:35 GMT (envelope-from brooks@freebsd.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.7/8.14.6/Submit) id r72KkZwl078531 for perforce@freebsd.org; Fri, 2 Aug 2013 20:46:35 GMT (envelope-from brooks@freebsd.org) Date: Fri, 2 Aug 2013 20:46:35 GMT Message-Id: <201308022046.r72KkZwl078531@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to brooks@freebsd.org using -f From: Brooks Davis Subject: PERFORCE change 231651 for review To: Perforce Change Reviews Precedence: bulk X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.14 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Aug 2013 20:46:36 -0000 http://p4web.freebsd.org/@@231651?ac=10 Change 231651 by brooks@brooks_zenith on 2013/08/02 20:46:24 Add support for WITH_LLVM_INSTRUMENTED and probably WITH_TESLA to bsd.prog.mk. Disabled instrumentation in rtld and bootstrap tools and disble building /rescue when either WITH_ option is set. Affected files ... .. //depot/projects/ctsrd/tesla/src/Makefile.inc1#16 edit .. //depot/projects/ctsrd/tesla/src/libexec/rtld-elf/Makefile#2 edit .. //depot/projects/ctsrd/tesla/src/share/mk/bsd.libnames.mk#4 edit .. //depot/projects/ctsrd/tesla/src/share/mk/bsd.prog.mk#9 edit .. //depot/projects/ctsrd/tesla/src/share/mk/sys.mk#14 edit .. //depot/projects/ctsrd/tesla/src/sys/boot/i386/Makefile.inc#2 edit Differences ... ==== //depot/projects/ctsrd/tesla/src/Makefile.inc1#16 (text+ko) ==== @@ -73,7 +73,7 @@ .if ${MK_KERBEROS} != "no" SUBDIR+=kerberos5 .endif -.if ${MK_RESCUE} != "no" +.if ${MK_RESCUE} != "no" && ${MK_LLVM_INSTRUMENTED} == "no" SUBDIR+=rescue .endif SUBDIR+=sbin @@ -237,7 +237,8 @@ DESTDIR= \ BOOTSTRAPPING=${OSRELDATE} \ SSP_CFLAGS= \ - -DWITHOUT_HTML -DWITHOUT_INFO -DNO_LINT -DWITHOUT_MAN \ + -DWITHOUT_HTML -DWITHOUT_INFO -DNO_LLVM_IR -DNO_LINT \ + -DWITHOUT_MAN \ -DNO_PIC -DNO_PROFILE -DNO_SHARED \ -DNO_CPU_CFLAGS -DNO_WARNS -DNO_CTF -DEARLY_BUILD @@ -1270,7 +1271,7 @@ _gcc_tools= gnu/usr.bin/cc/cc_tools .endif -.if ${MK_RESCUE} != "no" +.if ${MK_RESCUE} != "no" && ${MK_LLVM_INSTRUMENTED} == "no" _rescue= rescue/rescue .endif ==== //depot/projects/ctsrd/tesla/src/libexec/rtld-elf/Makefile#2 (text+ko) ==== @@ -2,6 +2,7 @@ .include MK_SSP= no +NO_LLVM_IR= yes PROG?= ld-elf.so.1 SRCS= rtld_start.S \ ==== //depot/projects/ctsrd/tesla/src/share/mk/bsd.libnames.mk#4 (text+ko) ==== @@ -156,6 +156,7 @@ LIBTACPLUS?= ${DESTDIR}${LIBDIR}/libtacplus.a LIBTERMCAP?= ${DESTDIR}${LIBDIR}/libtermcap.a LIBTERMLIB?= "don't use LIBTERMLIB, use LIBTERMCAP" +LIBTESLA?= ${DESTDIR}${LIBDIR}/libtesla.a LIBTINFO?= "don't use LIBTINFO, use LIBNCURSES" LIBUFS?= ${DESTDIR}${LIBDIR}/libufs.a LIBUGIDFW?= ${DESTDIR}${LIBDIR}/libugidfw.a ==== //depot/projects/ctsrd/tesla/src/share/mk/bsd.prog.mk#9 (text+ko) ==== @@ -52,7 +52,27 @@ .endif .if defined(SRCS) && !empty(SRCS) +# XXX: currently tesla can't handle C++ so build C++ code normaly in the +# WITH_TESLA case. +.if defined(NO_LLVM_IR) || ${MK_LLVM_INSTRUMENTED} == "no" || \ + (${MK_TESLA} != "no" && defined(PROG_CXX)) OBJS+= ${SRCS:N*.h:R:S/$/.o/g} +.else +# XXX: should blow up if other SRCS types are found +OBJS+= ${SRCS:M*.bin:R:S/$/.o/g:N.o} ${SRCS:M*.[Ss]:R:S/$/.o/g:N.o} +LLVM_CFILES= ${SRCS:M*.c} \ + ${SRCS:M*.cc} ${SRCS:M*.cpp} ${SRCS:M*.cxx} ${SRCS:M*.C} \ + ${SRCS:M*.l:R:S/$/.c/:N.c} ${SRCS:M*.y:R:S/$/.c/:N.c} +OIRS= ${LLVM_CFILES:R:S/$/.o${LLVM_IR_TYPE}/} +INSTR_IRS= ${LLVM_CFILES:R:S/$/.instr${LLVM_IR_TYPE}/} +INSTR_OBJS= ${LLVM_CFILES:R:S/$/.instro/} +OBJS+= ${INSTR_OBJS} +CLEANFILES+= ${OIRS} ${INSTR_IRS} ${INSTR_OBJS} +.if ${MK_TESLA} != "no" +TESLA_FILES= ${LLVM_CFILES:R:S/$/.tesla/} +CLEANFILES+= ${TESLA_FILES} tesla.manifest +.endif +.endif .if target(beforelinking) beforelinking: ${OBJS} @@ -69,47 +89,15 @@ .endif .endif -# XXX: forced assignment due to make not figuring out how to make things -# from generated .c files (which are added to SRCS later). -CSRC_OBJS:= ${SRCS:M*.c:R:S/$/.object/:N.object} -CXXSRC_OBJS:= ${SRCS:M*.cc:R:S/$/.object/:N.object} \ - ${SRCS:M*.cpp:R:S/$/.object/:N.object} \ - ${SRCS:M*.cxx:R:S/$/.object/:N.object} \ - ${SRCS:M*.C:R:S/$/.object/:N.object} -SRC_OBJS= ${CSRC_OBJS} ${CXX_OBJS} - -TESLA_FILES= ${CSRC_OBJS:.object=.tesla} -OLLS= ${CSRC_OBJS:.object=.oll} -INSTRLLS= ${CSRC_OBJS:.object=.instrll} -INSTROBJS= ${CSRC_OBJS:.object=.instro} -CLEANFILES+= ${TESLA_FILES} tesla.manifest ${OLLS} ${INSTRLLS} ${INSTROBJS} \ - ${PROG}.instrumented - +.if ${MK_TESLA} != "no" tesla.manifest: ${TESLA_FILES} cat ${TESLA_FILES} > ${.TARGET} -tesla: ${PROG}.instrumented - -${PROG}.instrumented: ${INSTROBJS} - ${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${INSTROBJS} ${LDADD} -ltesla - -.if defined(LLVM_IR) && !defined(NO_LLVM_IR) -LOBJS:= ${SRC_OBJS:.object=.obc} -CLEANFILES+= ${PROG}.bc ${LOBJS} - -.if !empty(LOBJS) -all: ${PROG}.bc -${PROG}.bc: ${LOBJS} - ${LLVM_LINK} -o ${.TARGET} ${LOBJS} - -all: ${PROG}.bc-opt -${PROG}.bc-opt: ${PROG}.bc -.if empty(OPT_PASSES) - cp ${PROG}.bc ${.TARGET} +DPADD+= ${LIBTESLA} +LDADD+= -ltesla .else - ${OPT} -o ${.TARGET} ${OPT_PASSES} ${PROG}.bc -.endif -.endif +tesla.manifest: + touch ${.TARGET} .endif .if ${MK_MAN} != "no" && !defined(MAN) && \ ==== //depot/projects/ctsrd/tesla/src/share/mk/sys.mk#14 (text+ko) ==== @@ -233,12 +233,6 @@ cp -fp ${.IMPSRC} ${.TARGET} chmod a+x ${.TARGET} -.c.obc: - ${CC} ${CFLAGS:N-O*} -emit-llvm -c ${.IMPSRC} -o ${.TARGET} - -.c.oll: - ${CC} ${CFLAGS:N-O*} -emit-llvm -S ${.IMPSRC} -o ${.TARGET} - .c.ln: ${LINT} ${LINTOBJFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC} || \ touch ${.TARGET} @@ -255,6 +249,12 @@ ${CC} ${CFLAGS} -c ${.IMPSRC} ${CTFCONVERT_CMD} +.c.obc: + ${CC} ${CFLAGS:N-O*} -emit-llvm -c ${.IMPSRC} -o ${.TARGET} + +.c.oll: + ${CC} ${CFLAGS:N-O*} -emit-llvm -S ${.IMPSRC} -o ${.TARGET} + .c.tesla: ${TESLA} analyse ${.IMPSRC} -o ${.TARGET} -- ${CFLAGS} ${XFLAGS} -D TESLA @@ -264,6 +264,12 @@ .cc.o .cpp.o .cxx.o .C.o: ${CXX} ${CXXFLAGS} -c ${.IMPSRC} +.cc.obc .cpp.obc .cxx.obc .C.obc: + ${CC} ${CXXFLAGS:N-O*} -emit-llvm -c ${.IMPSRC} -o ${.TARGET} + +.c.oll: + ${CC} ${CXXFLAGS:N-O*} -emit-llvm -S ${.IMPSRC} -o ${.TARGET} + .m.o: ${OBJC} ${OBJCFLAGS} -c ${.IMPSRC} ${CTFCONVERT_CMD} ==== //depot/projects/ctsrd/tesla/src/sys/boot/i386/Makefile.inc#2 (text+ko) ==== @@ -4,6 +4,8 @@ BINDIR?= /boot +NO_LLVM_IR= yes + LOADER_ADDRESS?=0x200000 CFLAGS+= -march=i386 -ffreestanding -mpreferred-stack-boundary=2 \ -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -msoft-float From owner-p4-projects@FreeBSD.ORG Sat Aug 3 02:10:28 2013 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id CDC51899; Sat, 3 Aug 2013 02:10:28 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 89E3A897 for ; Sat, 3 Aug 2013 02:10:28 +0000 (UTC) (envelope-from brooks@freebsd.org) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [8.8.178.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 77287232C for ; Sat, 3 Aug 2013 02:10:28 +0000 (UTC) Received: from skunkworks.freebsd.org ([127.0.1.74]) by skunkworks.freebsd.org (8.14.7/8.14.7) with ESMTP id r732ARK1025994 for ; Sat, 3 Aug 2013 02:10:27 GMT (envelope-from brooks@freebsd.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.7/8.14.6/Submit) id r732ARl9025991 for perforce@freebsd.org; Sat, 3 Aug 2013 02:10:27 GMT (envelope-from brooks@freebsd.org) Date: Sat, 3 Aug 2013 02:10:27 GMT Message-Id: <201308030210.r732ARl9025991@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to brooks@freebsd.org using -f From: Brooks Davis Subject: PERFORCE change 231658 for review To: Perforce Change Reviews Precedence: bulk X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.14 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 03 Aug 2013 02:10:29 -0000 http://p4web.freebsd.org/@@231658?ac=10 Change 231658 by brooks@brooks_zenith on 2013/08/03 02:10:26 Add support for building bitcode or IR for libraries. With -DWITH_LLVM_INSTRUMENTED enabled libraries produce two files lib${LIB}.(bc|ll)-a and lib${LIB}.native-a which contain bitcode or IR from C and C++ files and native code from other sources such as assembly files. If no files of a give class exist then an empty files is created but not installed. Further work may be required to build bitcode/IR early enough for a WITH_SOAAP pass to be fully implemented, but this allows buildworld to complete. Affected files ... .. //depot/projects/ctsrd/tesla/src/Makefile.inc1#17 edit .. //depot/projects/ctsrd/tesla/src/share/mk/bsd.lib.mk#6 edit .. //depot/projects/ctsrd/tesla/src/share/mk/sys.mk#15 edit .. //depot/projects/ctsrd/tesla/src/tools/build/Makefile#2 edit Differences ... ==== //depot/projects/ctsrd/tesla/src/Makefile.inc1#17 (text+ko) ==== @@ -272,7 +272,7 @@ CROSS_COMPILER_PREFIX?=${CROSS_TOOLCHAIN_PREFIX} CROSS_BINUTILS_PREFIX?=${CROSS_TOOLCHAIN_PREFIX} .endif -XCOMPILERS= CC CXX CPP LLC +XCOMPILERS= CC CXX CPP LLC LLVM_LINK .for COMPILER in ${XCOMPILERS} .if defined(CROSS_COMPILER_PREFIX) X${COMPILER}?= ${CROSS_COMPILER_PREFIX}${${COMPILER}} @@ -290,6 +290,7 @@ .endfor WMAKEENV+= CC="${XCC} ${XFLAGS}" CXX="${XCXX} ${XFLAGS}" \ CPP="${XCPP} ${XFLAGS}" LLC="${XLLC}" \ + LLVM_LINK="${XLLVM_LINK}" \ AS="${XAS}" AR="${XAR}" LD="${XLD}" NM=${XNM} \ OBJDUMP=${XOBJDUMP} RANLIB=${XRANLIB} STRINGS=${XSTRINGS} \ XFLAGS="${XFLAGS}" @@ -591,7 +592,7 @@ cd ${.CURDIR}/libexec/rtld-elf; PROG=ld-elf32.so.1 ${LIB32WMAKE} \ DIRPRFX=libexec/rtld-elf/ ${_t} cd ${.CURDIR}/usr.bin/ldd; PROG=ldd32 ${LIB32WMAKE} \ - DIRPRFX=usr.bin/ldd ${_t} + -DNO_LLVM_IR DIRPRFX=usr.bin/ldd ${_t} .endfor distribute32 install32: @@ -1538,8 +1539,8 @@ cd ${.CURDIR}/${_lib}; \ ${MAKE} DIRPRFX=${_lib}/ obj; \ ${MAKE} DIRPRFX=${_lib}/ depend; \ - ${MAKE} -DNO_PROFILE -DNO_PIC DIRPRFX=${_lib}/ all; \ - ${MAKE} -DNO_PROFILE -DNO_PIC DIRPRFX=${_lib}/ install + ${MAKE} -DNO_PROFILE -DNO_PIC -DNO_LLVM_IR DIRPRFX=${_lib}/ all; \ + ${MAKE} -DNO_PROFILE -DNO_PIC -DNO_LLVM_IR DIRPRFX=${_lib}/ install .endif .endfor @@ -1550,8 +1551,8 @@ cd ${.CURDIR}/${_lib}; \ ${MAKE} DIRPRFX=${_lib}/ obj; \ ${MAKE} DIRPRFX=${_lib}/ depend; \ - ${MAKE} DIRPRFX=${_lib}/ all; \ - ${MAKE} DIRPRFX=${_lib}/ install + ${MAKE} DIRPRFX=${_lib}/ -DNO_LLVM_IR all; \ + ${MAKE} DIRPRFX=${_lib}/ -DNO_LLVM_IR install .endif .endfor @@ -1563,8 +1564,8 @@ cd ${.CURDIR}/lib/libpam; \ ${MAKE} DIRPRFX=lib/libpam/ obj; \ ${MAKE} DIRPRFX=lib/libpam/ depend; \ - ${MAKE} DIRPRFX=lib/libpam/ -D_NO_LIBPAM_SO_YET all; \ - ${MAKE} DIRPRFX=lib/libpam/ -D_NO_LIBPAM_SO_YET install + ${MAKE} DIRPRFX=lib/libpam/ -D_NO_LIBPAM_SO_YET -DNO_LLVM_IR all; \ + ${MAKE} DIRPRFX=lib/libpam/ -D_NO_LIBPAM_SO_YET -DNO_LLVM_IR install _prereq_libs: ${_prereq_libs:S/$/__PL/} _startup_libs: ${_startup_libs:S/$/__L/} ==== //depot/projects/ctsrd/tesla/src/share/mk/bsd.lib.mk#6 (text+ko) ==== @@ -60,13 +60,16 @@ PO_FLAG=-pg -.c.obc: - ${CC} -c -g -emit-llvm ${CFLAGS} ${.IMPSRC} -o ${.TARGET} - .c.o: ${CC} ${STATIC_CFLAGS} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} ${CTFCONVERT_CMD} +.c.obc: + ${CC} -emit-llvm ${STATIC_CFLAGS} ${CFLAGS:N-O*} -c ${.IMPSRC} -o ${.TARGET} + +.c.oll: + ${CC} -emit-llvm ${STATIC_CFLAGS} ${CFLAGS:N-O*} -S ${.IMPSRC} -o ${.TARGET} + .c.po: ${CC} ${PO_FLAG} ${STATIC_CFLAGS} ${PO_CFLAGS} -c ${.IMPSRC} -o ${.TARGET} ${CTFCONVERT_CMD} @@ -78,6 +81,12 @@ .cc.o .C.o .cpp.o .cxx.o: ${CXX} ${STATIC_CXXFLAGS} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} +.cc.obc .cpp.obc .cxx.obc .C.obc: + ${CXX} -emit-llvm ${STATIC_CXXFLAGS} ${CXXFLAGS:N-O*} -c ${.IMPSRC} -o ${.TARGET} + +.cc.oll .cpp.oll .cxx.oll .C.oll: + ${CXX} -emit-llvm ${STATIC_CXXFLAGS} ${CXXFLAGS:N-O*} -S ${.IMPSRC} -o ${.TARGET} + .cc.po .C.po .cpp.po .cxx.po: ${CXX} ${PO_FLAG} ${STATIC_CXXFLAGS} ${PO_CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} @@ -150,25 +159,36 @@ .endif ${RANLIB} ${.TARGET} -.if defined(LLVM_IR) && !defined(NO_LLVM_IR) -_LIBS+= lib${LIB}.bc lib${LIB}.bc-opt -# XXX: force expantion now to avoid picking up generated C code. -# Ideally we do want it, but there is an undiagnosed dependency issue that -# causes the .obc file to not be built. -LOBJS:= ${SRCS:M*.[Cc]:R:S/$/.obc/:N.obc} \ - ${SRCS:M*.cc:R:S/$/.obc/:N.obc} \ - ${SRCS:M*.cpp:R:S/$/.obc/:N.obc} \ - ${SRCS:M*.cxx:R:S/$/.obc/:N.obc} -LLVM_LINK?= llvm-link +.if !defined(NO_LLVM_IR) && ${MK_LLVM_INSTRUMENTED} != "no" +_LIBS+= lib${LIB}.${LLVM_IR_TYPE}-a lib${LIB}.native-a +OIRS= ${SRCS:M*.[Ccly]:R:S/$/.o${LLVM_IR_TYPE}/:N.o${LLVM_IR_TYPE}} \ + ${SRCS:M*.cc:R:S/$/.o${LLVM_IR_TYPE}/:N.o${LLVM_IR_TYPE}} \ + ${SRCS:M*.cpp:R:S/$/.o${LLVM_IR_TYPE}/:N.o${LLVM_IR_TYPE}} \ + ${SRCS:M*.cxx:R:S/$/.o${LLVM_IR_TYPE}/:N.o${LLVM_IR_TYPE}} +NOBJS= ${SRCS:M*.[Ss]:R:S/$/.o/:N.o} +CLEANFILES+= ${OIRS} ${NOBJS} \ + lib${LIB}.${LLVM_IR_TYPE}-a lib${LIB}.native-a -lib${LIB}.bc: ${LOBJS} - ${LLVM_LINK} -o ${.TARGET} ${LOBJS} +lib${LIB}.${LLVM_IR_TYPE}-a: ${OIRS} + if [ -z "${OIRS}" ]; then \ + touch ${.TARGET} ;\ + else \ + ${LLVM_LINK} -o ${.TARGET} ${OIRS} ;\ + fi -lib${LIB}.bc-opt: lib${LIB}.bc -.if empty(OPT_PASSES) - cp lib${LIB}.bc ${.TARGET} +lib${LIB}.native-a: ${NOBJS} +.if !defined(NM) + if [ -z "${NOBJS}" ]; then \ + touch ${.TARGET} ;\ + else \ + ${AR} ${ARFLAGS} ${.TARGET} `lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD} ;\ + fi .else - ${OPT} -o ${.TARGET} ${OPT_PASSES} lib${LIB}.bc + if [ -z "${NOBJS}" ]; then \ + touch ${.TARGET} ;\ + else \ + ${AR} ${ARFLAGS} ${.TARGET} `NM='${NM}' lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD} ;\ + fi .endif .endif @@ -304,6 +324,15 @@ ${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ ${_INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR} .endif +.if defined(LIB) && !empty(LIB) && ${MK_INSTALLLIB} != "no" && \ + !defined(NO_LLVM_IR) && ${MK_LLVM_INSTRUMENTED} != "no" + test -n lib${LIB}.${LLVM_IR_TYPE}-a && \ + ${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ + ${_INSTALLFLAGS} lib${LIB}.${LLVM_IR_TYPE}-a ${DESTDIR}${LIBDIR} + test -n lib${LIB}.native-a && \ + ${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ + ${_INSTALLFLAGS} lib${LIB}.native-a ${DESTDIR}${LIBDIR} +.endif .if ${MK_PROFILE} != "no" && defined(LIB) && !empty(LIB) ${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ ${_INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR} @@ -414,9 +443,6 @@ .endif .if defined(LIB) && !empty(LIB) rm -f a.out ${OBJS} ${OBJS:S/$/.tmp/} ${STATICOBJS} -.if defined(LLVM_IR) - rm -f ${LOBJS} -.endif .endif .if !defined(INTERNALLIB) .if ${MK_PROFILE} != "no" && defined(LIB) && !empty(LIB) ==== //depot/projects/ctsrd/tesla/src/share/mk/sys.mk#15 (text+ko) ==== ==== //depot/projects/ctsrd/tesla/src/tools/build/Makefile#2 (text+ko) ==== @@ -2,6 +2,8 @@ .PATH: ${.CURDIR}/../../include +NO_LLVM_IR= yes + LIB= egacy SRC= INCSGROUPS= INCS