From owner-svn-src-user@FreeBSD.ORG  Sun Oct 17 23:15:37 2010
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 3FF7B1065697;
	Sun, 17 Oct 2010 23:15:37 +0000 (UTC)
	(envelope-from weongyo@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 2D8BD8FC20;
	Sun, 17 Oct 2010 23:15:37 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o9HNFb22050016;
	Sun, 17 Oct 2010 23:15:37 GMT (envelope-from weongyo@svn.freebsd.org)
Received: (from weongyo@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o9HNFbUF050012;
	Sun, 17 Oct 2010 23:15:37 GMT (envelope-from weongyo@svn.freebsd.org)
Message-Id: <201010172315.o9HNFbUF050012@svn.freebsd.org>
From: Weongyo Jeong <weongyo@FreeBSD.org>
Date: Sun, 17 Oct 2010 23:15:37 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r214000 - in user/weongyo/usb/usb.sbin: . usbdump
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
	src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 17 Oct 2010 23:15:37 -0000

Author: weongyo
Date: Sun Oct 17 23:15:36 2010
New Revision: 214000
URL: http://svn.freebsd.org/changeset/base/214000

Log:
  Adds userland tool, usbdump(8), to show/dump the USB packets between
  host controller and drvier and adds a crude man page how to use it.

Added:
  user/weongyo/usb/usb.sbin/
  user/weongyo/usb/usb.sbin/usbdump/
  user/weongyo/usb/usb.sbin/usbdump/Makefile   (contents, props changed)
  user/weongyo/usb/usb.sbin/usbdump/usbdump.8
  user/weongyo/usb/usb.sbin/usbdump/usbdump.c   (contents, props changed)

Added: user/weongyo/usb/usb.sbin/usbdump/Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/weongyo/usb/usb.sbin/usbdump/Makefile	Sun Oct 17 23:15:36 2010	(r214000)
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+PROG=	usbdump
+SRCS=	usbdump.c
+MAN=	usbdump.8
+WARNS?=	4
+
+.include <bsd.prog.mk>

Added: user/weongyo/usb/usb.sbin/usbdump/usbdump.8
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/weongyo/usb/usb.sbin/usbdump/usbdump.8	Sun Oct 17 23:15:36 2010	(r214000)
@@ -0,0 +1,72 @@
+.\"
+.\" Copyright (c) 2010 Weongyo Jeong.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd October 14, 2010
+.Dt usbdump 8
+.Os
+.Sh NAME
+.Nm usbdump
+.Nd "dump traffic on USB host controller"
+.Sh SYNOPSIS
+.Nm
+.Op Fl i Ar ifname
+.Op Fl r Ar file
+.Op Fl s Ar snaplen
+.Op Fl v
+.Op Fl w Ar file
+.Sh DESCRIPTION
+The
+.Nm
+utility provides a way to dump USB packets on each host controller.
+.Pp
+The following options are accepted.
+.Bl -tag -width ".Fl f Ar file"
+.It Fl i Ar ifname
+Listen on USB bus interface.
+.It Fl r Ar file
+Read the raw packets from file.
+.It Fl s Ar snaplen
+Snapshot bytes from each packet.
+.It Fl v
+Enable debugging messages.
+When it defined multiple times the verbose level increases.
+.It Fl w Ar file
+Write the raw packets to file.
+.El
+.Sh EXAMPLES
+Dumps the USB raw packets of usbus2 into the file without packet
+size limit:
+.Pp
+.Dl "usbdump -i usbus2 -s 0 -w /tmp/dump_pkts"
+.Pp
+Read the USB raw packets from the file:
+.Pp
+.Dl "usbdump -r /tmp/dump_pkts -v"
+.Sh SEE ALSO
+.Xr usbconfig 8
+.Sh AUTHORS
+.An Weongyo Jeong

Added: user/weongyo/usb/usb.sbin/usbdump/usbdump.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/weongyo/usb/usb.sbin/usbdump/usbdump.c	Sun Oct 17 23:15:36 2010	(r214000)
@@ -0,0 +1,562 @@
+/*-
+ * Copyright (c) 2010 Weongyo Jeong <weongyo@freebsd.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer,
+ *    without modification.
+ * 2. Redistributions in binary form must reproduce at minimum a disclaimer
+ *    similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
+ *    redistribution must be conditioned upon including a substantially
+ *    similar Disclaimer requirement for further binary redistribution.
+ *
+ * NO WARRANTY
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+ * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
+ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGES.
+ */
+
+#include <sys/param.h>
+#include <sys/endian.h>
+#include <sys/ioctl.h>
+#include <sys/utsname.h>
+#include <dev/usb/usb.h>
+#include <dev/usb/usb_pf.h>
+#include <dev/usb/usbdi.h>
+#include <assert.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <unistd.h>
+
+struct usbcap {
+	int		fd;		/* fd for /dev/usbpf */
+	u_int		bufsize;
+	char		*buffer;
+
+	/* for -w option */
+	int		wfd;
+	/* for -r option */
+	int		rfd;
+};
+
+struct usbcap_filehdr {
+	u_int		magic;		/* 0x9a90000e */
+	u_char		major;
+	u_char		minor;
+	u_char		reserved[26];
+} __packed;
+
+static int doexit = 0;
+static int pkt_captured = 0;
+static int verbose = 0;
+static const char *i_arg = "usbus0";;
+static const char *r_arg = NULL;
+static const char *w_arg = NULL;
+static const char *errstr_table[USB_ERR_MAX] = {
+	[USB_ERR_NORMAL_COMPLETION]	= "NORMAL_COMPLETION",
+	[USB_ERR_PENDING_REQUESTS]	= "PENDING_REQUESTS",
+	[USB_ERR_NOT_STARTED]		= "NOT_STARTED",
+	[USB_ERR_INVAL]			= "INVAL",
+	[USB_ERR_NOMEM]			= "NOMEM",
+	[USB_ERR_CANCELLED]		= "CANCELLED",
+	[USB_ERR_BAD_ADDRESS]		= "BAD_ADDRESS",
+	[USB_ERR_BAD_BUFSIZE]		= "BAD_BUFSIZE",
+	[USB_ERR_BAD_FLAG]		= "BAD_FLAG",
+	[USB_ERR_NO_CALLBACK]		= "NO_CALLBACK",
+	[USB_ERR_IN_USE]		= "IN_USE",
+	[USB_ERR_NO_ADDR]		= "NO_ADDR",
+	[USB_ERR_NO_PIPE]		= "NO_PIPE",
+	[USB_ERR_ZERO_NFRAMES]		= "ZERO_NFRAMES",
+	[USB_ERR_ZERO_MAXP]		= "ZERO_MAXP",
+	[USB_ERR_SET_ADDR_FAILED]	= "SET_ADDR_FAILED",
+	[USB_ERR_NO_POWER]		= "NO_POWER",
+	[USB_ERR_TOO_DEEP]		= "TOO_DEEP",
+	[USB_ERR_IOERROR]		= "IOERROR",
+	[USB_ERR_NOT_CONFIGURED]	= "NOT_CONFIGURED",
+	[USB_ERR_TIMEOUT]		= "TIMEOUT",
+	[USB_ERR_SHORT_XFER]		= "SHORT_XFER",
+	[USB_ERR_STALLED]		= "STALLED",
+	[USB_ERR_INTERRUPTED]		= "INTERRUPTED",
+	[USB_ERR_DMA_LOAD_FAILED]	= "DMA_LOAD_FAILED",
+	[USB_ERR_BAD_CONTEXT]		= "BAD_CONTEXT",
+	[USB_ERR_NO_ROOT_HUB]		= "NO_ROOT_HUB",
+	[USB_ERR_NO_INTR_THREAD]	= "NO_INTR_THREAD",
+	[USB_ERR_NOT_LOCKED]		= "NOT_LOCKED",
+};
+
+static const char *xfertype_table[] = {
+	[UE_CONTROL]			= "CTRL",
+	[UE_ISOCHRONOUS]		= "ISOC",
+	[UE_BULK]			= "BULK",
+	[UE_INTERRUPT]			= "INTR"
+};
+
+static void
+handle_sigint(int sig)
+{
+
+	(void)sig;
+	doexit = 1;
+}
+
+static void
+print_flags(u_int32_t flags)
+{
+#define	USBD_FORCE_SHORT_XFER	(1 << 0)	/* force a short xfer last */
+#define	USBD_SHORT_XFER_OK	(1 << 1)	/* allow short receive xfer */
+#define	USBD_SHORT_FRAME_OK	(1 << 2)	/* allow short frames */
+#define	USBD_PIPE_BOF		(1 << 3)	/* block pipe on failure */
+	/* makes buffer size a factor of "max_frame_size" */
+#define	USBD_PROXY_BUFFER	(1 << 4)
+#define	USBD_EXT_BUFFER		(1 << 5)	/* uses external DMA buffer */
+	/* non automatic status stage on control transfers */
+#define	USBD_MANUSL_STATUS	(1 << 6)
+	/* set if "USB_ERR_NO_PIPE" error can be ignored */
+#define	USBD_NO_PIPE_OK		(1 << 7)
+	/*
+	 * set if the endpoint belonging to this USB transfer should be
+	 * stalled before starting this transfer!
+	 */
+#define	USBD_STALL_PIPE		(1 << 8)
+#define	PRINTFLAGS(name)			\
+	if ((flags & USBD_##name) != 0)		\
+		printf("%s ", #name);
+	printf(" flags %#x", flags);
+	printf(" < ");
+	PRINTFLAGS(FORCE_SHORT_XFER);
+	PRINTFLAGS(SHORT_XFER_OK);
+	PRINTFLAGS(SHORT_FRAME_OK);
+	PRINTFLAGS(PIPE_BOF);
+	PRINTFLAGS(PROXY_BUFFER);
+	PRINTFLAGS(EXT_BUFFER);
+	PRINTFLAGS(MANUSL_STATUS);
+	PRINTFLAGS(NO_PIPE_OK);
+	PRINTFLAGS(STALL_PIPE);
+	printf(">\n");
+#undef PRINTFLAGS
+}
+
+static void
+print_status(u_int32_t status)
+{
+#define	XFER_STATUS_OPENED	(1 << 0)	/* USB pipe has been opened */
+#define	XFER_STATUS_XFERRING	(1 << 1)	/* xfer is in progress */
+#define	XFER_STATUS_DMADELAYED	(1 << 2)	/* we waited for HW DMA */
+#define	XFER_STATUS_CLOSED	(1 << 3)	/* closed the USB xfer */
+#define	XFER_STATUS_DRAINING	(1 << 4)	/* draining an USB xfer */
+#define	XFER_STATUS_STARTED	(1 << 5)	/* track of started/stopped */
+#define	XFER_STATUS_CTRLXFER	(1 << 6)	/* set if control transfer */
+#define	XFER_STATUS_CTRLHDR	(1 << 7)	/* if ctrlhdr should be sent */
+#define	XFER_STATUS_CTRLACTIVE	(1 << 8)	/* if ctrlxfer is active */
+#define	XFER_STATUS_CTRLSTALL	(1 << 9)	/* if ctrlxfer should stalled */
+#define	XFER_STATUS_SHORTFRAME_OK (1 << 10)	/* filtered version */
+#define	XFER_STATUS_SHORTXFER_OK (1 << 11)	/* filtered version */
+#define	XFER_STATUS_DMAENABLE	(1 << 12)	/* hardware supports DMA */
+/* set if the USB callback wrapper should not do the BUS-DMA post sync */
+#define	XFER_STATUS_DMA_NOPOSTSYNC (1 << 13)
+#define	XFER_STATUS_DMASETUP	(1 << 14)	/* BUS-DMA has been setup */
+#define	XFER_STATUS_ISOCXFER	(1 << 15)	/* set if isochronous xfer */
+/* set if USB transfer can be cancelled immediately */
+#define	XFER_STATUS_CAN_CANCEL_IMMED (1 << 16)
+#define	XFER_STATUS_DOINGCALLBACK (1 << 17)	/* set if executing the cb */
+#define	XFER_STATUS_BWRECLAIMED (1 << 18)
+#define	PRINTSTATUS(name)			\
+	if ((status & XFER_STATUS_##name) != 0)	\
+		printf("%s ", #name);
+
+	printf(" status %#x", status);
+	printf(" < ");
+	PRINTSTATUS(OPENED);
+	PRINTSTATUS(XFERRING);
+	PRINTSTATUS(DMADELAYED);
+	PRINTSTATUS(CLOSED);
+	PRINTSTATUS(DRAINING);
+	PRINTSTATUS(STARTED);
+	PRINTSTATUS(CTRLXFER);
+	PRINTSTATUS(CTRLHDR);
+	PRINTSTATUS(CTRLACTIVE);
+	PRINTSTATUS(CTRLSTALL);
+	PRINTSTATUS(SHORTFRAME_OK);
+	PRINTSTATUS(SHORTXFER_OK);
+	PRINTSTATUS(DMAENABLE);
+	PRINTSTATUS(DMA_NOPOSTSYNC);
+	PRINTSTATUS(DMASETUP);
+	PRINTSTATUS(ISOCXFER);
+	PRINTSTATUS(CAN_CANCEL_IMMED);
+	PRINTSTATUS(DOINGCALLBACK);
+	PRINTSTATUS(BWRECLAIMED);
+	printf(">\n");
+#undef PRINTSTATUS
+}
+
+/*
+ * Display a region in traditional hexdump format.
+ */
+static void
+hexdump(const char *region, size_t len)
+{
+	const char *line;
+	int x, c;
+	char lbuf[80];
+#define EMIT(fmt, args...)	do {		\
+	sprintf(lbuf, fmt , ## args);		\
+	printf("%s", lbuf);			\
+} while (0)
+
+	for (line = region; line < (region + len); line += 16) {
+		EMIT(" %04lx  ", (long) (line - region));
+		for (x = 0; x < 16; x++) {
+			if ((line + x) < (region + len))
+				EMIT("%02x ", *(const u_int8_t *)(line + x));
+			else
+				EMIT("-- ");
+			if (x == 7)
+				EMIT(" ");
+		}
+		EMIT(" |");
+		for (x = 0; x < 16; x++) {
+			if ((line + x) < (region + len)) {
+				c = *(const u_int8_t *)(line + x);
+				/* !isprint(c) */
+				if ((c < ' ') || (c > '~'))
+					c = '.';
+				EMIT("%c", c);
+			} else
+				EMIT(" ");
+		}
+		EMIT("|\n");
+	}
+#undef EMIT
+}
+
+static void
+print_apacket(const struct usbpf_xhdr *hdr, const struct usbpf_pkthdr *up,
+    const char *payload)
+{
+	struct tm *tm;
+	struct timeval tv;
+	size_t len;
+	u_int32_t framelen, x;
+	const char *ptr = payload;
+	char buf[64];
+
+	tv.tv_sec = hdr->uh_tstamp.ut_sec;
+	tv.tv_usec = hdr->uh_tstamp.ut_frac;
+	tm = localtime(&tv.tv_sec);
+
+	len = strftime(buf, sizeof(buf), "%H:%M:%S", tm);
+	printf("%.*s.%06ju", (int)len, buf, tv.tv_usec);
+	printf(" usbus%d.%d 0x%02x %s %s", up->up_busunit, up->up_address,
+	    up->up_endpoint,
+	    xfertype_table[up->up_xfertype],
+	    up->up_type == USBPF_XFERTAP_SUBMIT ? ">" : "<");
+	printf(" (%d/%d)", up->up_frames, up->up_length);
+	if (up->up_type == USBPF_XFERTAP_DONE)
+		printf(" %s", errstr_table[up->up_error]);
+	if (up->up_xfertype == UE_BULK || up->up_xfertype == UE_ISOCHRONOUS)
+		printf(" %d", up->up_interval);
+	printf("\n");
+
+	if (verbose >= 1) {
+		for (x = 0; x < up->up_frames; x++) {
+			framelen = *((const u_int32_t *)ptr);
+			ptr += sizeof(u_int32_t);
+			printf(" frame[%u] len %d\n", x, framelen);
+			assert(framelen < (1024 * 4));
+			hexdump(ptr, framelen);
+			ptr += framelen;
+		}
+	}
+	if (verbose >= 2) {
+		print_flags(up->up_flags);
+		print_status(up->up_status);
+	}
+}
+    
+
+static void
+print_packets(const char *data, const int datalen)
+{
+	const struct usbpf_pkthdr *up;
+	const struct usbpf_xhdr *hdr;
+	u_int32_t framelen, x;
+	const char *ptr, *next;
+
+	for (ptr = data; ptr < (data + datalen); ptr = next) {
+		hdr = (const struct usbpf_xhdr *)ptr;
+		up = (const struct usbpf_pkthdr *)(ptr + hdr->uh_hdrlen);
+		next = ptr + USBPF_WORDALIGN(hdr->uh_hdrlen + hdr->uh_caplen);
+
+		ptr = ((const char *)up) + sizeof(struct usbpf_pkthdr);
+		if (w_arg == NULL)
+			print_apacket(hdr, up, ptr);
+		pkt_captured++;
+		for (x = 0; x < up->up_frames; x++) {
+			framelen = *((const u_int32_t *)ptr);
+			ptr += sizeof(u_int32_t) + framelen;
+		}
+	}
+}
+
+static void
+write_packets(struct usbcap *p, const char *data, const int datalen)
+{
+	int len = htole32(datalen), ret;
+
+	ret = write(p->wfd, &len, sizeof(int));
+	assert(ret == sizeof(int));
+	ret = write(p->wfd, data, datalen);
+	assert(ret == datalen);
+}
+
+static void
+read_file(struct usbcap *p)
+{
+	int datalen, ret;
+	char *data;
+
+	while ((ret = read(p->rfd, &datalen, sizeof(int))) == sizeof(int)) {
+		datalen = le32toh(datalen);
+		data = malloc(datalen);
+		assert(data != NULL);
+		ret = read(p->rfd, data, datalen);
+		assert(ret == datalen);
+		print_packets(data, datalen);
+	}
+	if (ret == -1)
+		fprintf(stderr, "read: %s\n", strerror(errno));
+}
+
+static void
+do_loop(struct usbcap *p)
+{
+	int cc;
+
+	while (doexit == 0) {
+		cc = read(p->fd, (char *)p->buffer, p->bufsize);
+		if (cc < 0) {
+			switch (errno) {
+			case EINTR:
+				break;
+			default:
+				fprintf(stderr, "read: %s\n", strerror(errno));
+				return;
+			}
+			continue;
+		}
+		if (cc == 0)
+			continue;
+		if (w_arg != NULL)
+			write_packets(p, p->buffer, cc);
+		print_packets(p->buffer, cc);
+	}
+}
+
+static void
+init_rfile(struct usbcap *p)
+{
+	struct usbcap_filehdr uf;
+	int ret;
+
+	p->rfd = open(r_arg, O_RDONLY);
+	if (p->rfd < 0) {
+		fprintf(stderr, "open: %s (%s)\n", r_arg, strerror(errno));
+		exit(EXIT_FAILURE);
+	}
+	ret = read(p->rfd, &uf, sizeof(uf));
+	assert(ret == sizeof(uf));
+	assert(le32toh(uf.magic) == 0x9a90000e);
+	assert(uf.major == 0);
+	assert(uf.minor == 1);
+}
+
+static void
+init_wfile(struct usbcap *p)
+{
+	struct usbcap_filehdr uf;
+	int ret;
+
+	p->wfd = open(w_arg, O_CREAT | O_TRUNC | O_WRONLY);
+	if (p->wfd < 0) {
+		fprintf(stderr, "open: %s (%s)\n", w_arg, strerror(errno));
+		exit(EXIT_FAILURE);
+	}
+	bzero(&uf, sizeof(uf));
+	uf.magic = htole32(0x9a90000e);
+	uf.major = 0;
+	uf.minor = 1;
+	ret = write(p->wfd, (const void *)&uf, sizeof(uf));
+	assert(ret == sizeof(uf));
+}
+
+static void
+usage(void)
+{
+
+#define FMT "    %-14s %s\n"
+	fprintf(stderr, "usage: usbdump [options]\n");
+	fprintf(stderr, FMT, "-i ifname", "Listen on USB bus interface");
+	fprintf(stderr, FMT, "-r file", "Read the raw packets from file");
+	fprintf(stderr, FMT, "-s snaplen", "Snapshot bytes from each packet");
+	fprintf(stderr, FMT, "-v", "Increases the verbose level");
+	fprintf(stderr, FMT, "-w file", "Write the raw packets to file");
+#undef FMT
+	exit(1);
+}
+
+int
+main(int argc, char *argv[])
+{
+	struct timeval tv;
+	struct usbpf_insn total_insn;
+	struct usbpf_program total_prog;
+	struct usbpf_stat us;
+	struct usbpf_version uv;
+	struct usbcap uc, *p = &uc;
+	struct usbpf_ifreq ufr;
+	long snapshot = 192;
+	u_int v;
+	int fd, o;
+	const char *optstring;
+
+	bzero(&uc, sizeof(struct usbcap));
+
+	optstring = "i:r:s:vw:";
+	while ((o = getopt(argc, argv, optstring)) != -1) {
+		switch (o) {
+		case 'i':
+			i_arg = optarg;
+			break;
+		case 'r':
+			r_arg = optarg;
+			init_rfile(p);
+			break;
+		case 's':
+			snapshot = strtol(optarg, NULL, 10);
+			errno = 0;
+			if (snapshot == 0 && errno == EINVAL)
+				usage();
+			/* snapeshot == 0 is special */
+			if (snapshot == 0)
+				snapshot = -1;
+			break;
+		case 'v':
+			verbose++;
+			break;
+		case 'w':
+			w_arg = optarg;
+			init_wfile(p);
+			break;
+		default:
+			usage();
+			/* NOTREACHED */
+		}
+	}
+
+	if (r_arg != NULL) {
+		read_file(p);
+		exit(EXIT_SUCCESS);
+	}
+
+	p->fd = fd = open("/dev/usbpf", O_RDONLY);
+	if (p->fd < 0) {
+		fprintf(stderr, "(no devices found)\n");
+		return (EXIT_FAILURE);
+	}
+
+	if (ioctl(fd, UIOCVERSION, (caddr_t)&uv) < 0) {
+		fprintf(stderr, "UIOCVERSION: %s\n", strerror(errno));
+		return (EXIT_FAILURE);
+	}
+	if (uv.uv_major != USBPF_MAJOR_VERSION ||
+	    uv.uv_minor < USBPF_MINOR_VERSION) {
+		fprintf(stderr, "kernel bpf filter out of date");
+		return (EXIT_FAILURE);
+	}
+
+	if ((ioctl(fd, UIOCGBLEN, (caddr_t)&v) < 0) || v < 65536)
+		v = 65536;
+	for ( ; v != 0; v >>= 1) {
+		(void)ioctl(fd, UIOCSBLEN, (caddr_t)&v);
+		(void)strncpy(ufr.ufr_name, i_arg, sizeof(ufr.ufr_name));
+		if (ioctl(fd, UIOCSETIF, (caddr_t)&ufr) >= 0)
+			break;
+	}
+	if (v == 0) {
+		fprintf(stderr, "UIOCSBLEN: %s: No buffer size worked", i_arg);
+		return (EXIT_FAILURE);
+	}
+
+	if (ioctl(fd, UIOCGBLEN, (caddr_t)&v) < 0) {
+		fprintf(stderr, "UIOCGBLEN: %s", strerror(errno));
+		return (EXIT_FAILURE);
+	}
+
+	p->bufsize = v;
+	p->buffer = (u_char *)malloc(p->bufsize);
+	if (p->buffer == NULL) {
+		fprintf(stderr, "malloc: %s", strerror(errno));
+		return (EXIT_FAILURE);
+	}
+
+	/* XXX no read filter rules yet so at this moment accept everything */
+	total_insn.code = (u_short)(USBPF_RET | USBPF_K);
+	total_insn.jt = 0;
+	total_insn.jf = 0;
+	total_insn.k = snapshot;
+
+	total_prog.uf_len = 1;
+	total_prog.uf_insns = &total_insn;
+	if (ioctl(p->fd, UIOCSETF, (caddr_t)&total_prog) < 0) {
+		fprintf(stderr, "UIOCSETF: %s", strerror(errno));
+		return (EXIT_FAILURE);
+	}
+
+	/* 1 second read timeout */
+	tv.tv_sec = 1;
+	tv.tv_usec = 0;
+	if (ioctl(p->fd, UIOCSRTIMEOUT, (caddr_t)&tv) < 0) {
+		fprintf(stderr, "UIOCSRTIMEOUT: %s", strerror(errno));
+		return (EXIT_FAILURE);
+	}
+
+	(void)signal(SIGINT, handle_sigint);
+
+	do_loop(p);
+
+	if (ioctl(fd, UIOCGSTATS, (caddr_t)&us) < 0) {
+		fprintf(stderr, "UIOCGSTATS: %s", strerror(errno));
+		return (EXIT_FAILURE);
+	}
+
+	/* XXX what's difference between pkt_captured and us.us_recv? */
+	printf("\n");
+	printf("%d packets captured\n", pkt_captured);
+	printf("%d packets received by filter\n", us.us_recv);
+	printf("%d packets dropped by kernel\n", us.us_drop);
+
+	if (p->fd > 0)
+		close(p->fd);
+	if (p->rfd > 0)
+		close(p->rfd);
+	if (p->wfd > 0)
+		close(p->wfd);
+
+	return (EXIT_SUCCESS);
+}

From owner-svn-src-user@FreeBSD.ORG  Thu Oct 21 19:04:04 2010
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 2241C106566C;
	Thu, 21 Oct 2010 19:04:04 +0000 (UTC) (envelope-from ed@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id ECE5C8FC19;
	Thu, 21 Oct 2010 19:04:03 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o9LJ43KF000523;
	Thu, 21 Oct 2010 19:04:03 GMT (envelope-from ed@svn.freebsd.org)
Received: (from ed@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o9LJ43DZ000522;
	Thu, 21 Oct 2010 19:04:03 GMT (envelope-from ed@svn.freebsd.org)
Message-Id: <201010211904.o9LJ43DZ000522@svn.freebsd.org>
From: Ed Schouten <ed@FreeBSD.org>
Date: Thu, 21 Oct 2010 19:04:03 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r214155 - user/ed/compiler-rt
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
	src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 21 Oct 2010 19:04:04 -0000

Author: ed
Date: Thu Oct 21 19:04:03 2010
New Revision: 214155
URL: http://svn.freebsd.org/changeset/base/214155

Log:
  Create a branch to toy around with compiler-rt.

Added:
     - copied from r214154, head/
Directory Properties:
  user/ed/compiler-rt/   (props changed)

From owner-svn-src-user@FreeBSD.ORG  Thu Oct 21 19:04:51 2010
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 8822B1065670;
	Thu, 21 Oct 2010 19:04:51 +0000 (UTC) (envelope-from ed@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 5E46B8FC1C;
	Thu, 21 Oct 2010 19:04:51 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o9LJ4pbo000578;
	Thu, 21 Oct 2010 19:04:51 GMT (envelope-from ed@svn.freebsd.org)
Received: (from ed@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o9LJ4ptT000577;
	Thu, 21 Oct 2010 19:04:51 GMT (envelope-from ed@svn.freebsd.org)
Message-Id: <201010211904.o9LJ4ptT000577@svn.freebsd.org>
From: Ed Schouten <ed@FreeBSD.org>
Date: Thu, 21 Oct 2010 19:04:51 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r214156 - user/ed/compiler-rt/contrib/compiler-rt
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
	src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 21 Oct 2010 19:04:51 -0000

Author: ed
Date: Thu Oct 21 19:04:51 2010
New Revision: 214156
URL: http://svn.freebsd.org/changeset/base/214156

Log:
  Add compiler-rt to the contrib space.

Added:
  user/ed/compiler-rt/contrib/compiler-rt/
     - copied from r214155, vendor/compiler-rt/dist/

From owner-svn-src-user@FreeBSD.ORG  Thu Oct 21 19:29:20 2010
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id C726B106564A;
	Thu, 21 Oct 2010 19:29:20 +0000 (UTC) (envelope-from ed@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 9CB3E8FC1D;
	Thu, 21 Oct 2010 19:29:20 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o9LJTK8k001326;
	Thu, 21 Oct 2010 19:29:20 GMT (envelope-from ed@svn.freebsd.org)
Received: (from ed@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o9LJTKAD001323;
	Thu, 21 Oct 2010 19:29:20 GMT (envelope-from ed@svn.freebsd.org)
Message-Id: <201010211929.o9LJTKAD001323@svn.freebsd.org>
From: Ed Schouten <ed@FreeBSD.org>
Date: Thu, 21 Oct 2010 19:29:20 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r214161 - in user/ed/compiler-rt/lib: . libcompiler_rt
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
	src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 21 Oct 2010 19:29:20 -0000

Author: ed
Date: Thu Oct 21 19:29:20 2010
New Revision: 214161
URL: http://svn.freebsd.org/changeset/base/214161

Log:
  Hook up libcompiler_rt to the build.

Added:
  user/ed/compiler-rt/lib/libcompiler_rt/
  user/ed/compiler-rt/lib/libcompiler_rt/Makefile   (contents, props changed)
Modified:
  user/ed/compiler-rt/lib/Makefile

Modified: user/ed/compiler-rt/lib/Makefile
==============================================================================
--- user/ed/compiler-rt/lib/Makefile	Thu Oct 21 19:28:52 2010	(r214160)
+++ user/ed/compiler-rt/lib/Makefile	Thu Oct 21 19:29:20 2010	(r214161)
@@ -34,6 +34,7 @@ SUBDIR_ORDERED=	${_csu} \
 	libbsm \
 	libauditd \
 	libcom_err \
+	libcompiler_rt \
 	libcrypt \
 	libelf \
 	libkvm \

Added: user/ed/compiler-rt/lib/libcompiler_rt/Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/ed/compiler-rt/lib/libcompiler_rt/Makefile	Thu Oct 21 19:29:20 2010	(r214161)
@@ -0,0 +1,33 @@
+# $FreeBSD$
+
+LIB=	compiler_rt
+NO_PIC=
+WARNS?=	2
+
+.PATH: ${.CURDIR}/../../contrib/compiler-rt/lib
+
+SRCS+=	absvdi2.c absvsi2.c absvti2.c adddf3.c addsf3.c addvdi3.c \
+	addvsi3.c addvti3.c apple_versioning.c ashldi3.c ashlti3.c \
+	ashrdi3.c ashrti3.c clear_cache.c clzdi2.c clzsi2.c clzti2.c \
+	cmpdi2.c cmpti2.c comparedf2.c comparesf2.c ctzdi2.c ctzsi2.c \
+	ctzti2.c divdc3.c divdf3.c divdi3.c divsc3.c divsf3.c divsi3.c \
+	divti3.c divxc3.c enable_execute_stack.c eprintf.c \
+	extendsfdf2.c ffsdi2.c ffsti2.c fixdfdi.c fixdfsi.c fixdfti.c \
+	fixsfdi.c fixsfsi.c fixsfti.c fixunsdfdi.c fixunsdfsi.c \
+	fixunsdfti.c fixunssfdi.c fixunssfsi.c fixunssfti.c \
+	fixunsxfdi.c fixunsxfsi.c fixunsxfti.c fixxfdi.c fixxfti.c \
+	floatdidf.c floatdisf.c floatdixf.c floatsidf.c floatsisf.c \
+	floattidf.c floattisf.c floattixf.c floatundidf.c \
+	floatundisf.c floatundixf.c floatunsidf.c floatunsisf.c \
+	floatuntidf.c floatuntisf.c floatuntixf.c gcc_personality_v0.c \
+	lshrdi3.c lshrti3.c moddi3.c modsi3.c modti3.c muldc3.c \
+	muldf3.c muldi3.c mulsc3.c mulsf3.c multi3.c mulvdi3.c \
+	mulvsi3.c mulvti3.c mulxc3.c negdf2.c negdi2.c negsf2.c \
+	negti2.c negvdi2.c negvsi2.c negvti2.c paritydi2.c paritysi2.c \
+	parityti2.c popcountdi2.c popcountsi2.c popcountti2.c \
+	powidf2.c powisf2.c powitf2.c powixf2.c subvdi3.c subvsi3.c \
+	subvti3.c trampoline_setup.c truncdfsf2.c ucmpdi2.c ucmpti2.c \
+	udivdi3.c udivmoddi4.c udivmodti4.c udivsi3.c udivti3.c \
+	umoddi3.c umodsi3.c umodti3.c
+
+.include <bsd.lib.mk>

From owner-svn-src-user@FreeBSD.ORG  Thu Oct 21 19:56:27 2010
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id DF0791065672;
	Thu, 21 Oct 2010 19:56:26 +0000 (UTC) (envelope-from ed@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 782538FC13;
	Thu, 21 Oct 2010 19:56:26 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o9LJuQxB001997;
	Thu, 21 Oct 2010 19:56:26 GMT (envelope-from ed@svn.freebsd.org)
Received: (from ed@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o9LJuQMH001993;
	Thu, 21 Oct 2010 19:56:26 GMT (envelope-from ed@svn.freebsd.org)
Message-Id: <201010211956.o9LJuQMH001993@svn.freebsd.org>
From: Ed Schouten <ed@FreeBSD.org>
Date: Thu, 21 Oct 2010 19:56:26 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r214164 - in user/ed/compiler-rt: .
	contrib/llvm/tools/clang/lib/Driver gnu/usr.bin/cc/cc_tools
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
	src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 21 Oct 2010 19:56:27 -0000

Author: ed
Date: Thu Oct 21 19:56:26 2010
New Revision: 214164
URL: http://svn.freebsd.org/changeset/base/214164

Log:
  Let both GCC and Clang use -lcompiler_rt instead of -lgcc.

Modified:
  user/ed/compiler-rt/Makefile.inc1
  user/ed/compiler-rt/contrib/llvm/tools/clang/lib/Driver/Tools.cpp
  user/ed/compiler-rt/gnu/usr.bin/cc/cc_tools/freebsd-native.h

Modified: user/ed/compiler-rt/Makefile.inc1
==============================================================================
--- user/ed/compiler-rt/Makefile.inc1	Thu Oct 21 19:44:28 2010	(r214163)
+++ user/ed/compiler-rt/Makefile.inc1	Thu Oct 21 19:56:26 2010	(r214164)
@@ -1123,7 +1123,7 @@ libraries:
 #
 # static libgcc.a prerequisite for shared libc
 #
-_prereq_libs= gnu/lib/libssp/libssp_nonshared gnu/lib/libgcc
+_prereq_libs= gnu/lib/libssp/libssp_nonshared gnu/lib/libgcc lib/libcompiler_rt
 
 # These dependencies are not automatically generated:
 #
@@ -1139,6 +1139,7 @@ _startup_libs+=	lib/csu/${MACHINE_ARCH}
 _startup_libs+=	lib/csu/${MACHINE_CPUARCH}
 .endif
 _startup_libs+=	gnu/lib/libgcc
+_startup_libs+=	lib/libcompiler_rt
 _startup_libs+=	lib/libc
 
 gnu/lib/libgcc__L: lib/libc__L

Modified: user/ed/compiler-rt/contrib/llvm/tools/clang/lib/Driver/Tools.cpp
==============================================================================
--- user/ed/compiler-rt/contrib/llvm/tools/clang/lib/Driver/Tools.cpp	Thu Oct 21 19:44:28 2010	(r214163)
+++ user/ed/compiler-rt/contrib/llvm/tools/clang/lib/Driver/Tools.cpp	Thu Oct 21 19:56:26 2010	(r214164)
@@ -2928,7 +2928,7 @@ void freebsd::Link::ConstructJob(Compila
     }
     // FIXME: For some reason GCC passes -lgcc and -lgcc_s before adding
     // the default system libraries. Just mimic this for now.
-    CmdArgs.push_back("-lgcc");
+    CmdArgs.push_back("-lcompiler_rt");
     if (Args.hasArg(options::OPT_static)) {
       CmdArgs.push_back("-lgcc_eh");
     } else {
@@ -2941,7 +2941,7 @@ void freebsd::Link::ConstructJob(Compila
       CmdArgs.push_back("-lpthread");
     CmdArgs.push_back("-lc");
 
-    CmdArgs.push_back("-lgcc");
+    CmdArgs.push_back("-lcompiler_rt");
     if (Args.hasArg(options::OPT_static)) {
       CmdArgs.push_back("-lgcc_eh");
     } else {

Modified: user/ed/compiler-rt/gnu/usr.bin/cc/cc_tools/freebsd-native.h
==============================================================================
--- user/ed/compiler-rt/gnu/usr.bin/cc/cc_tools/freebsd-native.h	Thu Oct 21 19:44:28 2010	(r214163)
+++ user/ed/compiler-rt/gnu/usr.bin/cc/cc_tools/freebsd-native.h	Thu Oct 21 19:56:26 2010	(r214164)
@@ -48,16 +48,16 @@
 
 #if 0
 #define LIBGCC_SPEC		"%{shared: -lgcc_pic} \
-    %{!shared: %{!pg: -lgcc} %{pg: -lgcc_p}}"
+    %{!shared: %{!pg: -lcompiler_rt} %{pg: -lgcc_p}}"
 #endif
 #define LIBSTDCXX_PROFILE	"-lstdc++_p"
 #define MATH_LIBRARY_PROFILE	"-lm_p"
 #define FORTRAN_LIBRARY_PROFILE	"-lg2c_p"
 
-#define LIBGCC_SPEC		"-lgcc"
+#define LIBGCC_SPEC		"-lcompiler_rt"
 /* For the native system compiler, we actually build libgcc in a profiled
    version.  So we should use it with -pg.  */
-#define LIBGCC_STATIC_LIB_SPEC	  "%{pg: -lgcc_p;:-lgcc}"
+#define LIBGCC_STATIC_LIB_SPEC	  "%{pg: -lgcc_p;:-lcompiler_rt}"
 #define LIBGCC_EH_STATIC_LIB_SPEC "%{pg: -lgcc_eh_p;:-lgcc_eh}"
 
 /* FreeBSD is 4.4BSD derived */

From owner-svn-src-user@FreeBSD.ORG  Thu Oct 21 22:18:13 2010
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 5EE65106564A;
	Thu, 21 Oct 2010 22:18:13 +0000 (UTC) (envelope-from ed@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 4C9798FC15;
	Thu, 21 Oct 2010 22:18:13 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o9LMIDia005678;
	Thu, 21 Oct 2010 22:18:13 GMT (envelope-from ed@svn.freebsd.org)
Received: (from ed@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o9LMID6m005673;
	Thu, 21 Oct 2010 22:18:13 GMT (envelope-from ed@svn.freebsd.org)
Message-Id: <201010212218.o9LMID6m005673@svn.freebsd.org>
From: Ed Schouten <ed@FreeBSD.org>
Date: Thu, 21 Oct 2010 22:18:13 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r214186 - in user/ed/compiler-rt:
	contrib/llvm/tools/clang/lib/Driver gnu/lib/libgcc
	gnu/usr.bin/cc/cc_tools lib/libcompiler_rt
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
	src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 21 Oct 2010 22:18:13 -0000

Author: ed
Date: Thu Oct 21 22:18:12 2010
New Revision: 214186
URL: http://svn.freebsd.org/changeset/base/214186

Log:
  Just remove libgcc.a and symlink libcompiler_rt.a.
  
  I've noticed GCC tries to be smart when libgcc isn't called libgcc. It
  never tries to link in libgcc_s in that case, causing the unwinder to be
  omitted.
  
  - Revert the changes to Clang and GCC to user -lcompiler_rt.
  - Change libgcc's Makefile to not install libgcc.a and libgcc_p.a.
  - Let libcompiler_rt's Makefile symlink the library.

Modified:
  user/ed/compiler-rt/contrib/llvm/tools/clang/lib/Driver/Tools.cpp
  user/ed/compiler-rt/gnu/lib/libgcc/Makefile
  user/ed/compiler-rt/gnu/usr.bin/cc/cc_tools/freebsd-native.h
  user/ed/compiler-rt/lib/libcompiler_rt/Makefile

Modified: user/ed/compiler-rt/contrib/llvm/tools/clang/lib/Driver/Tools.cpp
==============================================================================
--- user/ed/compiler-rt/contrib/llvm/tools/clang/lib/Driver/Tools.cpp	Thu Oct 21 21:08:12 2010	(r214185)
+++ user/ed/compiler-rt/contrib/llvm/tools/clang/lib/Driver/Tools.cpp	Thu Oct 21 22:18:12 2010	(r214186)
@@ -2928,7 +2928,7 @@ void freebsd::Link::ConstructJob(Compila
     }
     // FIXME: For some reason GCC passes -lgcc and -lgcc_s before adding
     // the default system libraries. Just mimic this for now.
-    CmdArgs.push_back("-lcompiler_rt");
+    CmdArgs.push_back("-lgcc");
     if (Args.hasArg(options::OPT_static)) {
       CmdArgs.push_back("-lgcc_eh");
     } else {
@@ -2941,7 +2941,7 @@ void freebsd::Link::ConstructJob(Compila
       CmdArgs.push_back("-lpthread");
     CmdArgs.push_back("-lc");
 
-    CmdArgs.push_back("-lcompiler_rt");
+    CmdArgs.push_back("-lgcc");
     if (Args.hasArg(options::OPT_static)) {
       CmdArgs.push_back("-lgcc_eh");
     } else {

Modified: user/ed/compiler-rt/gnu/lib/libgcc/Makefile
==============================================================================
--- user/ed/compiler-rt/gnu/lib/libgcc/Makefile	Thu Oct 21 21:08:12 2010	(r214185)
+++ user/ed/compiler-rt/gnu/lib/libgcc/Makefile	Thu Oct 21 22:18:12 2010	(r214186)
@@ -3,7 +3,6 @@
 GCCDIR=	${.CURDIR}/../../../contrib/gcc
 GCCLIB=	${.CURDIR}/../../../contrib/gcclibs
 
-LIB=		gcc
 SHLIB_NAME=	libgcc_s.so.1
 SHLIBDIR?=	/lib
 
@@ -334,21 +333,21 @@ CLEANFILES +=	libgcc.map
 #
 # Build additional static libgcc_eh[_p].a libraries.
 #
-lib${LIB}_eh.a:	${EH_OBJS_T}
-	@${ECHO} building static ${LIB}_eh library
+libgcc_eh.a:	${EH_OBJS_T}
+	@${ECHO} building static gcc_eh library
 	@rm -f ${.TARGET}
 	@${AR} cq ${.TARGET} `lorder ${EH_OBJS_T} | tsort -q`
 	${RANLIB} ${.TARGET}
 
-all:	lib${LIB}_eh.a
+all:	libgcc_eh.a
 
 .if ${MK_PROFILE} != "no"
-lib${LIB}_eh_p.a:	${EH_OBJS_P}
-	@${ECHO} building profiled ${LIB}_eh library
+libgcc_eh_p.a:	${EH_OBJS_P}
+	@${ECHO} building profiled gcc_eh library
 	@rm -f ${.TARGET}
 	@${AR} cq ${.TARGET} `lorder ${EH_OBJS_P} | tsort -q`
 	${RANLIB} ${.TARGET}
-all:	lib${LIB}_eh_p.a
+all:	libgcc_eh_p.a
 .endif
 
 _libinstall: _lib-eh-install
@@ -356,14 +355,14 @@ _libinstall: _lib-eh-install
 _lib-eh-install:
 .if ${MK_INSTALLLIB} != "no"
 	${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
-		${_INSTALLFLAGS} lib${LIB}_eh.a ${DESTDIR}${LIBDIR}
+		${_INSTALLFLAGS} libgcc_eh.a ${DESTDIR}${LIBDIR}
 .endif
 .if ${MK_PROFILE} != "no"
 	${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
-		${_INSTALLFLAGS} lib${LIB}_eh_p.a ${DESTDIR}${LIBDIR}
+		${_INSTALLFLAGS} libgcc_eh_p.a ${DESTDIR}${LIBDIR}
 .endif
 
-CLEANFILES+=	lib${LIB}_eh.a lib${LIB}_eh_p.a ${EH_OBJS_T} ${EH_OBJS_P}
+CLEANFILES+=	libgcc_eh.a libgcc_eh_p.a ${EH_OBJS_T} ${EH_OBJS_P}
 
 .include <bsd.lib.mk>
 

Modified: user/ed/compiler-rt/gnu/usr.bin/cc/cc_tools/freebsd-native.h
==============================================================================
--- user/ed/compiler-rt/gnu/usr.bin/cc/cc_tools/freebsd-native.h	Thu Oct 21 21:08:12 2010	(r214185)
+++ user/ed/compiler-rt/gnu/usr.bin/cc/cc_tools/freebsd-native.h	Thu Oct 21 22:18:12 2010	(r214186)
@@ -48,16 +48,16 @@
 
 #if 0
 #define LIBGCC_SPEC		"%{shared: -lgcc_pic} \
-    %{!shared: %{!pg: -lcompiler_rt} %{pg: -lgcc_p}}"
+    %{!shared: %{!pg: -lgcc} %{pg: -lgcc_p}}"
 #endif
 #define LIBSTDCXX_PROFILE	"-lstdc++_p"
 #define MATH_LIBRARY_PROFILE	"-lm_p"
 #define FORTRAN_LIBRARY_PROFILE	"-lg2c_p"
 
-#define LIBGCC_SPEC		"-lcompiler_rt"
+#define LIBGCC_SPEC		"-lgcc"
 /* For the native system compiler, we actually build libgcc in a profiled
    version.  So we should use it with -pg.  */
-#define LIBGCC_STATIC_LIB_SPEC	  "%{pg: -lgcc_p;:-lcompiler_rt}"
+#define LIBGCC_STATIC_LIB_SPEC	  "%{pg: -lgcc_p;:-lgcc}"
 #define LIBGCC_EH_STATIC_LIB_SPEC "%{pg: -lgcc_eh_p;:-lgcc_eh}"
 
 /* FreeBSD is 4.4BSD derived */

Modified: user/ed/compiler-rt/lib/libcompiler_rt/Makefile
==============================================================================
--- user/ed/compiler-rt/lib/libcompiler_rt/Makefile	Thu Oct 21 21:08:12 2010	(r214185)
+++ user/ed/compiler-rt/lib/libcompiler_rt/Makefile	Thu Oct 21 22:18:12 2010	(r214186)
@@ -1,5 +1,7 @@
 # $FreeBSD$
 
+.include <bsd.own.mk>
+
 LIB=	compiler_rt
 NO_PIC=
 WARNS?=	2
@@ -30,4 +32,11 @@ SRCS+=	absvdi2.c absvsi2.c absvti2.c add
 	udivdi3.c udivmoddi4.c udivmodti4.c udivsi3.c udivti3.c \
 	umoddi3.c umodsi3.c umodti3.c
 
+.if ${MK_INSTALLLIB} != "no"
+SYMLINKS+=libcompiler_rt.a ${LIBDIR}/libgcc.a
+.endif
+.if ${MK_PROFILE} != "no"
+SYMLINKS+=libcompiler_rt_p.a ${LIBDIR}/libgcc_p.a
+.endif
+
 .include <bsd.lib.mk>

From owner-svn-src-user@FreeBSD.ORG  Fri Oct 22 06:39:15 2010
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 183C5106566C;
	Fri, 22 Oct 2010 06:39:15 +0000 (UTC) (envelope-from ed@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 0794E8FC19;
	Fri, 22 Oct 2010 06:39:15 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o9M6dEv3015965;
	Fri, 22 Oct 2010 06:39:14 GMT (envelope-from ed@svn.freebsd.org)
Received: (from ed@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o9M6dEF1015963;
	Fri, 22 Oct 2010 06:39:14 GMT (envelope-from ed@svn.freebsd.org)
Message-Id: <201010220639.o9M6dEF1015963@svn.freebsd.org>
From: Ed Schouten <ed@FreeBSD.org>
Date: Fri, 22 Oct 2010 06:39:14 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r214195 - user/ed/compiler-rt/lib/libcompiler_rt
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
	src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 22 Oct 2010 06:39:15 -0000

Author: ed
Date: Fri Oct 22 06:39:14 2010
New Revision: 214195
URL: http://svn.freebsd.org/changeset/base/214195

Log:
  Add infrastructure to build per-arch files.
  
  When assembly-files are present in the per-arch directory, they will be
  preferred over the C-version.

Modified:
  user/ed/compiler-rt/lib/libcompiler_rt/Makefile

Modified: user/ed/compiler-rt/lib/libcompiler_rt/Makefile
==============================================================================
--- user/ed/compiler-rt/lib/libcompiler_rt/Makefile	Fri Oct 22 04:43:04 2010	(r214194)
+++ user/ed/compiler-rt/lib/libcompiler_rt/Makefile	Fri Oct 22 06:39:14 2010	(r214195)
@@ -6,31 +6,44 @@ LIB=	compiler_rt
 NO_PIC=
 WARNS?=	2
 
-.PATH: ${.CURDIR}/../../contrib/compiler-rt/lib
+.if ${MACHINE_CPUARCH} == "amd64"
+CRTARCH=x86_64
+.elif ${MACHINE_CPUARCH} == "powerpc"
+CRTARCH=ppc
+.else
+CRTARCH=${MACHINE_CPUARCH}
+.endif
+
+CRTSRC=${.CURDIR}/../../contrib/compiler-rt/lib
+
+.PATH: ${CRTSRC}/${CRTARCH} ${CRTSRC}
+
+SRCF=	absvdi2 absvsi2 absvti2 adddf3 addsf3 addvdi3 addvsi3 addvti3 \
+	apple_versioning ashldi3 ashlti3 ashrdi3 ashrti3 clear_cache \
+	clzdi2 clzsi2 clzti2 cmpdi2 cmpti2 comparedf2 comparesf2 \
+	ctzdi2 ctzsi2 ctzti2 divdc3 divdf3 divdi3 divsc3 divsf3 divsi3 \
+	divti3 divxc3 enable_execute_stack eprintf extendsfdf2 ffsdi2 \
+	ffsti2 fixdfdi fixdfsi fixdfti fixsfdi fixsfsi fixsfti \
+	fixunsdfdi fixunsdfsi fixunsdfti fixunssfdi fixunssfsi \
+	fixunssfti fixunsxfdi fixunsxfsi fixunsxfti fixxfdi fixxfti \
+	floatdidf floatdisf floatdixf floatsidf floatsisf floattidf \
+	floattisf floattixf floatundidf floatundisf floatundixf \
+	floatunsidf floatunsisf floatuntidf floatuntisf floatuntixf \
+	gcc_personality_v0 lshrdi3 lshrti3 moddi3 modsi3 modti3 muldc3 \
+	muldf3 muldi3 mulsc3 mulsf3 multi3 mulvdi3 mulvsi3 mulvti3 \
+	mulxc3 negdf2 negdi2 negsf2 negti2 negvdi2 negvsi2 negvti2 \
+	paritydi2 paritysi2 parityti2 popcountdi2 popcountsi2 \
+	popcountti2 powidf2 powisf2 powitf2 powixf2 subvdi3 subvsi3 \
+	subvti3 trampoline_setup truncdfsf2 ucmpdi2 ucmpti2 udivdi3 \
+	udivmoddi4 udivmodti4 udivsi3 udivti3 umoddi3 umodsi3 umodti3
 
-SRCS+=	absvdi2.c absvsi2.c absvti2.c adddf3.c addsf3.c addvdi3.c \
-	addvsi3.c addvti3.c apple_versioning.c ashldi3.c ashlti3.c \
-	ashrdi3.c ashrti3.c clear_cache.c clzdi2.c clzsi2.c clzti2.c \
-	cmpdi2.c cmpti2.c comparedf2.c comparesf2.c ctzdi2.c ctzsi2.c \
-	ctzti2.c divdc3.c divdf3.c divdi3.c divsc3.c divsf3.c divsi3.c \
-	divti3.c divxc3.c enable_execute_stack.c eprintf.c \
-	extendsfdf2.c ffsdi2.c ffsti2.c fixdfdi.c fixdfsi.c fixdfti.c \
-	fixsfdi.c fixsfsi.c fixsfti.c fixunsdfdi.c fixunsdfsi.c \
-	fixunsdfti.c fixunssfdi.c fixunssfsi.c fixunssfti.c \
-	fixunsxfdi.c fixunsxfsi.c fixunsxfti.c fixxfdi.c fixxfti.c \
-	floatdidf.c floatdisf.c floatdixf.c floatsidf.c floatsisf.c \
-	floattidf.c floattisf.c floattixf.c floatundidf.c \
-	floatundisf.c floatundixf.c floatunsidf.c floatunsisf.c \
-	floatuntidf.c floatuntisf.c floatuntixf.c gcc_personality_v0.c \
-	lshrdi3.c lshrti3.c moddi3.c modsi3.c modti3.c muldc3.c \
-	muldf3.c muldi3.c mulsc3.c mulsf3.c multi3.c mulvdi3.c \
-	mulvsi3.c mulvti3.c mulxc3.c negdf2.c negdi2.c negsf2.c \
-	negti2.c negvdi2.c negvsi2.c negvti2.c paritydi2.c paritysi2.c \
-	parityti2.c popcountdi2.c popcountsi2.c popcountti2.c \
-	powidf2.c powisf2.c powitf2.c powixf2.c subvdi3.c subvsi3.c \
-	subvti3.c trampoline_setup.c truncdfsf2.c ucmpdi2.c ucmpti2.c \
-	udivdi3.c udivmoddi4.c udivmodti4.c udivsi3.c udivti3.c \
-	umoddi3.c umodsi3.c umodti3.c
+.for file in ${SRCF}
+. if exists(${CRTSRC}/${CRTARCH}/${file}.S)
+SRCS+=	${file}.S
+. else
+SRCS+=	${file}.c
+. endif
+.endfor
 
 .if ${MK_INSTALLLIB} != "no"
 SYMLINKS+=libcompiler_rt.a ${LIBDIR}/libgcc.a

From owner-svn-src-user@FreeBSD.ORG  Fri Oct 22 14:01:12 2010
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 3BA961065672;
	Fri, 22 Oct 2010 14:01:12 +0000 (UTC) (envelope-from ed@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 2B0CD8FC17;
	Fri, 22 Oct 2010 14:01:12 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o9ME1CCB052247;
	Fri, 22 Oct 2010 14:01:12 GMT (envelope-from ed@svn.freebsd.org)
Received: (from ed@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o9ME1C4l052245;
	Fri, 22 Oct 2010 14:01:12 GMT (envelope-from ed@svn.freebsd.org)
Message-Id: <201010221401.o9ME1C4l052245@svn.freebsd.org>
From: Ed Schouten <ed@FreeBSD.org>
Date: Fri, 22 Oct 2010 14:01:12 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r214204 - user/ed/compiler-rt/contrib/compiler-rt/lib
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
	src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 22 Oct 2010 14:01:12 -0000

Author: ed
Date: Fri Oct 22 14:01:11 2010
New Revision: 214204
URL: http://svn.freebsd.org/changeset/base/214204

Log:
  Add missing #include to clear_cache.c, to make it build on non-Darwin.

Modified:
  user/ed/compiler-rt/contrib/compiler-rt/lib/clear_cache.c

Modified: user/ed/compiler-rt/contrib/compiler-rt/lib/clear_cache.c
==============================================================================
--- user/ed/compiler-rt/contrib/compiler-rt/lib/clear_cache.c	Fri Oct 22 11:42:02 2010	(r214203)
+++ user/ed/compiler-rt/contrib/compiler-rt/lib/clear_cache.c	Fri Oct 22 14:01:11 2010	(r214204)
@@ -8,6 +8,7 @@
  * ===----------------------------------------------------------------------===
  */
 
+#include "int_lib.h"
 #include <stdlib.h>
 
 #if __APPLE__

From owner-svn-src-user@FreeBSD.ORG  Fri Oct 22 14:07:13 2010
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 4F726106566C;
	Fri, 22 Oct 2010 14:07:13 +0000 (UTC) (envelope-from ed@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 3EEAD8FC2A;
	Fri, 22 Oct 2010 14:07:13 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o9ME7D4U052911;
	Fri, 22 Oct 2010 14:07:13 GMT (envelope-from ed@svn.freebsd.org)
Received: (from ed@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o9ME7DYQ052909;
	Fri, 22 Oct 2010 14:07:13 GMT (envelope-from ed@svn.freebsd.org)
Message-Id: <201010221407.o9ME7DYQ052909@svn.freebsd.org>
From: Ed Schouten <ed@FreeBSD.org>
Date: Fri, 22 Oct 2010 14:07:13 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r214205 - user/ed/compiler-rt/lib/libcompiler_rt
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
	src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 22 Oct 2010 14:07:13 -0000

Author: ed
Date: Fri Oct 22 14:07:12 2010
New Revision: 214205
URL: http://svn.freebsd.org/changeset/base/214205

Log:
  Make libcompiler_rt build properly on mips and arm.
  
  The optimized assembly files for arm use a different syntax as the one
  supported by GNU as. Also, some of the routines provided by
  libcompiler_rt are also part of libc's.

Modified:
  user/ed/compiler-rt/lib/libcompiler_rt/Makefile

Modified: user/ed/compiler-rt/lib/libcompiler_rt/Makefile
==============================================================================
--- user/ed/compiler-rt/lib/libcompiler_rt/Makefile	Fri Oct 22 14:01:11 2010	(r214204)
+++ user/ed/compiler-rt/lib/libcompiler_rt/Makefile	Fri Oct 22 14:07:12 2010	(r214205)
@@ -18,27 +18,130 @@ CRTSRC=${.CURDIR}/../../contrib/compiler
 
 .PATH: ${CRTSRC}/${CRTARCH} ${CRTSRC}
 
-SRCF=	absvdi2 absvsi2 absvti2 adddf3 addsf3 addvdi3 addvsi3 addvti3 \
-	apple_versioning ashldi3 ashlti3 ashrdi3 ashrti3 clear_cache \
-	clzdi2 clzsi2 clzti2 cmpdi2 cmpti2 comparedf2 comparesf2 \
-	ctzdi2 ctzsi2 ctzti2 divdc3 divdf3 divdi3 divsc3 divsf3 divsi3 \
-	divti3 divxc3 enable_execute_stack eprintf extendsfdf2 ffsdi2 \
-	ffsti2 fixdfdi fixdfsi fixdfti fixsfdi fixsfsi fixsfti \
-	fixunsdfdi fixunsdfsi fixunsdfti fixunssfdi fixunssfsi \
-	fixunssfti fixunsxfdi fixunsxfsi fixunsxfti fixxfdi fixxfti \
-	floatdidf floatdisf floatdixf floatsidf floatsisf floattidf \
-	floattisf floattixf floatundidf floatundisf floatundixf \
-	floatunsidf floatunsisf floatuntidf floatuntisf floatuntixf \
-	gcc_personality_v0 lshrdi3 lshrti3 moddi3 modsi3 modti3 muldc3 \
-	muldf3 muldi3 mulsc3 mulsf3 multi3 mulvdi3 mulvsi3 mulvti3 \
-	mulxc3 negdf2 negdi2 negsf2 negti2 negvdi2 negvsi2 negvti2 \
-	paritydi2 paritysi2 parityti2 popcountdi2 popcountsi2 \
-	popcountti2 powidf2 powisf2 powitf2 powixf2 subvdi3 subvsi3 \
-	subvti3 trampoline_setup truncdfsf2 ucmpdi2 ucmpti2 udivdi3 \
-	udivmoddi4 udivmodti4 udivsi3 udivti3 umoddi3 umodsi3 umodti3
+SRCF=	absvdi2 \
+	absvsi2 \
+	absvti2 \
+	addvdi3 \
+	addvsi3 \
+	addvti3 \
+	ashldi3 \
+	ashlti3 \
+	ashrdi3 \
+	ashrti3 \
+	clear_cache \
+	clzdi2 \
+	clzsi2 \
+	clzti2 \
+	cmpdi2 \
+	cmpti2 \
+	comparedf2 \
+	comparesf2 \
+	ctzdi2 \
+	ctzsi2 \
+	ctzti2 \
+	divdc3 \
+	divdi3 \
+	divsc3 \
+	divti3 \
+	divxc3 \
+	enable_execute_stack \
+	eprintf \
+	ffsdi2 \
+	ffsti2 \
+	fixdfdi \
+	fixdfti \
+	fixsfdi \
+	fixsfti \
+	fixunsdfdi \
+	fixunsdfsi \
+	fixunsdfti \
+	fixunssfdi \
+	fixunssfsi \
+	fixunssfti \
+	fixunsxfdi \
+	fixunsxfsi \
+	fixunsxfti \
+	fixxfdi \
+	fixxfti \
+	floatdidf \
+	floatdisf \
+	floatdixf \
+	floattidf \
+	floattisf \
+	floattixf \
+	floatundidf \
+	floatundisf \
+	floatundixf \
+	floatunsidf \
+	floatunsisf \
+	floatuntidf \
+	floatuntisf \
+	floatuntixf \
+	gcc_personality_v0 \
+	lshrdi3 \
+	lshrti3 \
+	moddi3 \
+	modti3 \
+	muldc3 \
+	muldi3 \
+	mulsc3 \
+	multi3 \
+	mulvdi3 \
+	mulvsi3 \
+	mulvti3 \
+	mulxc3 \
+	negdf2 \
+	negdi2 \
+	negsf2 \
+	negti2 \
+	negvdi2 \
+	negvsi2 \
+	negvti2 \
+	paritydi2 \
+	paritysi2 \
+	parityti2 \
+	popcountdi2 \
+	popcountsi2 \
+	popcountti2 \
+	powidf2 \
+	powisf2 \
+	powitf2 \
+	powixf2 \
+	subvdi3 \
+	subvsi3 \
+	subvti3 \
+	trampoline_setup \
+	ucmpdi2 \
+	ucmpti2 \
+	udivdi3 \
+	udivmoddi4 \
+	udivmodti4 \
+	udivti3 \
+	umoddi3 \
+	umodti3
+
+# These are already shipped by libc.a on arm and mips
+.if ${MACHINE_CPUARCH} != "arm" && ${MACHINE_CPUARCH} != "mips"
+SRCF+=	adddf3 \
+	addsf3 \
+	divdf3 \
+	divsf3 \
+	divsi3 \
+	extendsfdf2 \
+	fixdfsi \
+	fixsfsi \
+	floatsidf \
+	floatsisf \
+	modsi3 \
+	muldf3 \
+	mulsf3 \
+	truncdfsf2 \
+	udivsi3 \
+	umodsi3
+.endif
 
 .for file in ${SRCF}
-. if exists(${CRTSRC}/${CRTARCH}/${file}.S)
+. if ${MACHINE_CPUARCH} != "arm" && exists(${CRTSRC}/${CRTARCH}/${file}.S)
 SRCS+=	${file}.S
 . else
 SRCS+=	${file}.c

From owner-svn-src-user@FreeBSD.ORG  Fri Oct 22 18:33:39 2010
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 7AFCF1065670;
	Fri, 22 Oct 2010 18:33:39 +0000 (UTC) (envelope-from ae@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 6A9708FC08;
	Fri, 22 Oct 2010 18:33:39 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o9MIXdqD062516;
	Fri, 22 Oct 2010 18:33:39 GMT (envelope-from ae@svn.freebsd.org)
Received: (from ae@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o9MIXdBU062513;
	Fri, 22 Oct 2010 18:33:39 GMT (envelope-from ae@svn.freebsd.org)
Message-Id: <201010221833.o9MIXdBU062513@svn.freebsd.org>
From: "Andrey V. Elsukov" <ae@FreeBSD.org>
Date: Fri, 22 Oct 2010 18:33:39 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r214217 - user/ae/usr.sbin/sade
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
	src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 22 Oct 2010 18:33:39 -0000

Author: ae
Date: Fri Oct 22 18:33:39 2010
New Revision: 214217
URL: http://svn.freebsd.org/changeset/base/214217

Log:
  In r212554 argument name was changed from "geom" to "arg0".
  Sync libgeom related code with head/ and replace "geom" with "arg0" too.
  Add sys/types.h to fix build.

Modified:
  user/ae/usr.sbin/sade/customdlg.c
  user/ae/usr.sbin/sade/parts.c

Modified: user/ae/usr.sbin/sade/customdlg.c
==============================================================================
--- user/ae/usr.sbin/sade/customdlg.c	Fri Oct 22 18:31:44 2010	(r214216)
+++ user/ae/usr.sbin/sade/customdlg.c	Fri Oct 22 18:33:39 2010	(r214217)
@@ -27,6 +27,7 @@
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD$");
 
+#include <sys/types.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>

Modified: user/ae/usr.sbin/sade/parts.c
==============================================================================
--- user/ae/usr.sbin/sade/parts.c	Fri Oct 22 18:31:44 2010	(r214216)
+++ user/ae/usr.sbin/sade/parts.c	Fri Oct 22 18:33:39 2010	(r214217)
@@ -45,6 +45,7 @@ __FBSDID("$FreeBSD$");
 
 static const char *class_name = "PART";
 static const char *sade_flags = "sade";
+static const char *arg0_name = "arg0";
 static char de_errstr[BUFSIZ];
 
 char*
@@ -267,7 +268,7 @@ de_dev_scheme_destroy(struct de_device *
 
 	gctl_ro_param(req, "verb", -1, "destroy");
 	gctl_ro_param(req, "class", -1, class_name);
-	gctl_ro_param(req, "geom", -1, pdev->de_name);
+	gctl_ro_param(req, arg0_name, -1, pdev->de_name);
 	gctl_ro_param(req, "flags", -1, sade_flags);
 
 	error = de_gpart_issue(req);
@@ -351,7 +352,7 @@ de_dev_bootcode(struct de_device *pdev, 
 
 	gctl_ro_param(req, "verb", -1, "bootcode");
 	gctl_ro_param(req, "class", -1, class_name);
-	gctl_ro_param(req, "geom", -1, pdev->de_name);
+	gctl_ro_param(req, arg0_name, -1, pdev->de_name);
 	gctl_ro_param(req, "bootcode", size, code);
 	gctl_ro_param(req, "flags", -1, sade_flags);
 
@@ -377,7 +378,7 @@ de_dev_undo(struct de_device *pdev)
 
 	gctl_ro_param(req, "verb", -1, "undo");
 	gctl_ro_param(req, "class", -1, class_name);
-	gctl_ro_param(req, "geom", -1, pdev->de_name);
+	gctl_ro_param(req, arg0_name, -1, pdev->de_name);
 
 	error = de_gpart_issue(req);
 	gctl_free(req);
@@ -399,7 +400,7 @@ de_dev_commit(struct de_device *pdev)
 
 	gctl_ro_param(req, "verb", -1, "commit");
 	gctl_ro_param(req, "class", -1, class_name);
-	gctl_ro_param(req, "geom", -1, pdev->de_name);
+	gctl_ro_param(req, arg0_name, -1, pdev->de_name);
 
 	error = de_gpart_issue(req);
 	gctl_free(req);
@@ -562,7 +563,7 @@ de_part_add(struct de_device *pdev, cons
 
 	gctl_ro_param(req, "verb", -1, "add");
 	gctl_ro_param(req, "class", -1, class_name);
-	gctl_ro_param(req, "geom", -1, pdev->de_name);
+	gctl_ro_param(req, arg0_name, -1, pdev->de_name);
 	gctl_ro_param(req, "type", -1, type);
 	gctl_ro_param(req, "start", -1, sstart);
 	gctl_ro_param(req, "size", -1, ssize);
@@ -603,7 +604,7 @@ de_part_del(struct de_device *pdev, int 
 
 	gctl_ro_param(req, "verb", -1, "delete");
 	gctl_ro_param(req, "class", -1, class_name);
-	gctl_ro_param(req, "geom", -1, pdev->de_name);
+	gctl_ro_param(req, arg0_name, -1, pdev->de_name);
 	gctl_ro_param(req, "index", -1, sindex);
 	gctl_ro_param(req, "flags", -1, sade_flags);
 
@@ -637,7 +638,7 @@ de_part_attr(struct de_device *pdev, int
 
 	gctl_ro_param(req, "verb", -1, cmdstr);
 	gctl_ro_param(req, "class", -1, class_name);
-	gctl_ro_param(req, "geom", -1, pdev->de_name);
+	gctl_ro_param(req, arg0_name, -1, pdev->de_name);
 	gctl_ro_param(req, "attrib", -1, name);
 	gctl_ro_param(req, "index", -1, sindex);
 	gctl_ro_param(req, "flags", -1, sade_flags);
@@ -686,7 +687,7 @@ de_part_mod(struct de_device *pdev, cons
 
 	gctl_ro_param(req, "verb", -1, "modify");
 	gctl_ro_param(req, "class", -1, class_name);
-	gctl_ro_param(req, "geom", -1, pdev->de_name);
+	gctl_ro_param(req, arg0_name, -1, pdev->de_name);
 	gctl_ro_param(req, "index", -1, sindex);
 	gctl_ro_param(req, "flags", -1, sade_flags);
 	if (label)
@@ -785,7 +786,7 @@ de_part_resize(struct de_device *pdev, c
 
 	gctl_ro_param(req, "class", -1, class_name);
 	gctl_ro_param(req, "verb", -1, "resize");
-	gctl_ro_param(req, "geom", -1, pdev->de_name);
+	gctl_ro_param(req, arg0_name, -1, pdev->de_name);
 	gctl_ro_param(req, "size", -1, size);
 	gctl_ro_param(req, "index", -1, sindex);
 	gctl_ro_param(req, "flags", -1, sade_flags);

From owner-svn-src-user@FreeBSD.ORG  Fri Oct 22 19:18:49 2010
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 97C24106566B;
	Fri, 22 Oct 2010 19:18:49 +0000 (UTC) (envelope-from ae@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 500D28FC0A;
	Fri, 22 Oct 2010 19:18:49 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o9MJInGE063405;
	Fri, 22 Oct 2010 19:18:49 GMT (envelope-from ae@svn.freebsd.org)
Received: (from ae@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o9MJInK4063403;
	Fri, 22 Oct 2010 19:18:49 GMT (envelope-from ae@svn.freebsd.org)
Message-Id: <201010221918.o9MJInK4063403@svn.freebsd.org>
From: "Andrey V. Elsukov" <ae@FreeBSD.org>
Date: Fri, 22 Oct 2010 19:18:49 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r214218 - user/ae/usr.sbin/sade
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
	src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 22 Oct 2010 19:18:50 -0000

Author: ae
Date: Fri Oct 22 19:18:48 2010
New Revision: 214218
URL: http://svn.freebsd.org/changeset/base/214218

Log:
  Update yet another argument that should be replaced to arg0.
  Since G_TYPE_ASCNUM was removed in r212614 some of arguments in gctl
  request should be updated too.

Modified:
  user/ae/usr.sbin/sade/parts.c

Modified: user/ae/usr.sbin/sade/parts.c
==============================================================================
--- user/ae/usr.sbin/sade/parts.c	Fri Oct 22 18:33:39 2010	(r214217)
+++ user/ae/usr.sbin/sade/parts.c	Fri Oct 22 19:18:48 2010	(r214218)
@@ -245,7 +245,7 @@ de_dev_scheme_create(struct de_device *p
 	gctl_ro_param(req, "verb", -1, "create");
 	gctl_ro_param(req, "class", -1, class_name);
 	gctl_ro_param(req, "scheme", -1, scheme);
-	gctl_ro_param(req, "provider", -1, pdev->de_name);
+	gctl_ro_param(req, arg0_name, -1, pdev->de_name);
 	gctl_ro_param(req, "flags", -1, sade_flags);
 
 	error = de_gpart_issue(req);
@@ -528,10 +528,10 @@ int
 de_part_add(struct de_device *pdev, const char *type, off_t start, off_t size,
     const char* label, int idx)
 {
-	int error;
 	struct gctl_req *req;
-	char *sindex = NULL;
 	char *sstart = NULL, *ssize = NULL;
+	intmax_t index;
+	int error;
 
 	assert(pdev != NULL);
 	assert(pdev->de_name != NULL);
@@ -545,11 +545,6 @@ de_part_add(struct de_device *pdev, cons
 		if (error)
 			return (error);
 	}
-	if (idx > 0) {
-		asprintf(&sindex, "%d", idx);
-		if (sindex == NULL)
-			return (ENOMEM);
-	}
 	error = ENOMEM;
 	asprintf(&sstart, "%jd", (intmax_t)start);
 	if (sstart == NULL)
@@ -568,15 +563,16 @@ de_part_add(struct de_device *pdev, cons
 	gctl_ro_param(req, "start", -1, sstart);
 	gctl_ro_param(req, "size", -1, ssize);
 	gctl_ro_param(req, "flags", -1, sade_flags);
-	if (idx > 0)
-		gctl_ro_param(req, "index", -1, sindex);
+	if (idx > 0) {
+		index = (intmax_t)idx;
+		gctl_ro_param(req, "index", sizeof(index), &index);
+	}
 	if (label)
 		gctl_ro_param(req, "label", -1, label);
 
 	error = de_gpart_issue(req);
 	gctl_free(req);
 fail:
-	free(sindex);
 	free(sstart);
 	free(ssize);
 	return (error);
@@ -585,68 +581,60 @@ fail:
 int
 de_part_del(struct de_device *pdev, int idx)
 {
-	int error;
 	struct gctl_req *req;
-	char *sindex;
+	intmax_t index;
+	int error;
 
 	assert(pdev != NULL);
 	assert(pdev->de_name != NULL);
 
 	if (idx <= 0)
 		return (EINVAL);
-	asprintf(&sindex, "%d", idx);
-	if (sindex == NULL)
-		return (ENOMEM);
+	index = (intmax_t)idx;
 
 	req = gctl_get_handle();
 	if (req == NULL)
-		goto fail;
+		return (ENOMEM);
 
 	gctl_ro_param(req, "verb", -1, "delete");
 	gctl_ro_param(req, "class", -1, class_name);
 	gctl_ro_param(req, arg0_name, -1, pdev->de_name);
-	gctl_ro_param(req, "index", -1, sindex);
+	gctl_ro_param(req, "index", sizeof(index), &index);
 	gctl_ro_param(req, "flags", -1, sade_flags);
 
 	error = de_gpart_issue(req);
 	gctl_free(req);
-fail:
-	free(sindex);
 	return (error);
 }
 
 static int
 de_part_attr(struct de_device *pdev, int act, const char *name, int idx)
 {
-	int error;
 	struct gctl_req *req;
 	const char *cmdstr = act ? "set": "unset";
-	char *sindex;
+	intmax_t index;
+	int error;
 
 	assert(pdev != NULL);
 	assert(pdev->de_name != NULL);
 
 	if (idx <= 0)
 		return (EINVAL);
-	asprintf(&sindex, "%d", idx);
-	if (sindex == NULL)
-		return (ENOMEM);
+	index = (intmax_t)idx;
 
 	req = gctl_get_handle();
 	if (req == NULL)
-		goto fail;
+		return (ENOMEM);
 
 	gctl_ro_param(req, "verb", -1, cmdstr);
 	gctl_ro_param(req, "class", -1, class_name);
 	gctl_ro_param(req, arg0_name, -1, pdev->de_name);
 	gctl_ro_param(req, "attrib", -1, name);
-	gctl_ro_param(req, "index", -1, sindex);
+	gctl_ro_param(req, "index", sizeof(index), &index);
 	gctl_ro_param(req, "flags", -1, sade_flags);
 
 	error = de_gpart_issue(req);
 	gctl_free(req);
-fail:
-	free(sindex);
 	return (error);
 }
 
@@ -666,9 +654,9 @@ int
 de_part_mod(struct de_device *pdev, const char *type, const char *label,
     int idx)
 {
-	int error;
 	struct gctl_req *req;
-	char *sindex = NULL;
+	intmax_t index;
+	int error;
 
 	assert(pdev != NULL);
 	assert(pdev->de_name != NULL);
@@ -677,18 +665,16 @@ de_part_mod(struct de_device *pdev, cons
 		return (EINVAL);
 	if (type == NULL && label == NULL)
 		return (EINVAL);
-	asprintf(&sindex, "%d", idx);
-	if (sindex == NULL)
-		return (ENOMEM);
+	index = (intmax_t)idx;
 
 	req = gctl_get_handle();
 	if (req == NULL)
-		goto fail;
+		return (ENOMEM);
 
 	gctl_ro_param(req, "verb", -1, "modify");
 	gctl_ro_param(req, "class", -1, class_name);
 	gctl_ro_param(req, arg0_name, -1, pdev->de_name);
-	gctl_ro_param(req, "index", -1, sindex);
+	gctl_ro_param(req, "index", sizeof(index), &index);
 	gctl_ro_param(req, "flags", -1, sade_flags);
 	if (label)
 		gctl_ro_param(req, "label", -1, label);
@@ -697,8 +683,6 @@ de_part_mod(struct de_device *pdev, cons
 
 	error = de_gpart_issue(req);
 	gctl_free(req);
-fail:
-	free(sindex);
 	return (error);
 }
 

From owner-svn-src-user@FreeBSD.ORG  Sat Oct 23 08:07:05 2010
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id B26C3106566C;
	Sat, 23 Oct 2010 08:07:05 +0000 (UTC) (envelope-from ed@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id A1FD68FC0C;
	Sat, 23 Oct 2010 08:07:05 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o9N875xB080113;
	Sat, 23 Oct 2010 08:07:05 GMT (envelope-from ed@svn.freebsd.org)
Received: (from ed@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o9N8759k080111;
	Sat, 23 Oct 2010 08:07:05 GMT (envelope-from ed@svn.freebsd.org)
Message-Id: <201010230807.o9N8759k080111@svn.freebsd.org>
From: Ed Schouten <ed@FreeBSD.org>
Date: Sat, 23 Oct 2010 08:07:05 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r214233 - user/ed/compiler-rt/lib/libcompiler_rt
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
	src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 23 Oct 2010 08:07:05 -0000

Author: ed
Date: Sat Oct 23 08:07:05 2010
New Revision: 214233
URL: http://svn.freebsd.org/changeset/base/214233

Log:
  Compile compiler-rt with -fPIC.

Modified:
  user/ed/compiler-rt/lib/libcompiler_rt/Makefile

Modified: user/ed/compiler-rt/lib/libcompiler_rt/Makefile
==============================================================================
--- user/ed/compiler-rt/lib/libcompiler_rt/Makefile	Sat Oct 23 00:44:16 2010	(r214232)
+++ user/ed/compiler-rt/lib/libcompiler_rt/Makefile	Sat Oct 23 08:07:05 2010	(r214233)
@@ -6,6 +6,8 @@ LIB=	compiler_rt
 NO_PIC=
 WARNS?=	2
 
+CFLAGS+=${PICFLAG}
+
 .if ${MACHINE_CPUARCH} == "amd64"
 CRTARCH=x86_64
 .elif ${MACHINE_CPUARCH} == "powerpc"

From owner-svn-src-user@FreeBSD.ORG  Sat Oct 23 08:12:45 2010
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 6F7CB106564A;
	Sat, 23 Oct 2010 08:12:45 +0000 (UTC) (envelope-from ed@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 446668FC08;
	Sat, 23 Oct 2010 08:12:45 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o9N8Cje8080252;
	Sat, 23 Oct 2010 08:12:45 GMT (envelope-from ed@svn.freebsd.org)
Received: (from ed@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o9N8CjNU080248;
	Sat, 23 Oct 2010 08:12:45 GMT (envelope-from ed@svn.freebsd.org)
Message-Id: <201010230812.o9N8CjNU080248@svn.freebsd.org>
From: Ed Schouten <ed@FreeBSD.org>
Date: Sat, 23 Oct 2010 08:12:45 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r214234 - in user/ed/compiler-rt/lib: . libblocksruntime
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
	src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 23 Oct 2010 08:12:45 -0000

Author: ed
Date: Sat Oct 23 08:12:44 2010
New Revision: 214234
URL: http://svn.freebsd.org/changeset/base/214234

Log:
  While we're at it, add libblocksruntime as well.
  
  libblocksruntime is part of compiler-rt and is one of the essential
  libraries needed to make Blocks work.
  
  Discussed with:	rwatson

Added:
  user/ed/compiler-rt/lib/libblocksruntime/
  user/ed/compiler-rt/lib/libblocksruntime/Makefile   (contents, props changed)
  user/ed/compiler-rt/lib/libblocksruntime/config.h   (contents, props changed)
Modified:
  user/ed/compiler-rt/lib/Makefile

Modified: user/ed/compiler-rt/lib/Makefile
==============================================================================
--- user/ed/compiler-rt/lib/Makefile	Sat Oct 23 08:07:05 2010	(r214233)
+++ user/ed/compiler-rt/lib/Makefile	Sat Oct 23 08:12:44 2010	(r214234)
@@ -54,6 +54,7 @@ SUBDIR=	${SUBDIR_ORDERED} \
 	libarchive \
 	${_libatm} \
 	libbegemot \
+	libblocksruntime \
 	${_libbluetooth} \
 	${_libbsnmp} \
 	libbz2 \

Added: user/ed/compiler-rt/lib/libblocksruntime/Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/ed/compiler-rt/lib/libblocksruntime/Makefile	Sat Oct 23 08:12:44 2010	(r214234)
@@ -0,0 +1,13 @@
+# $FreeBSD$
+
+LIB=	BlocksRuntime
+SHLIB_MAJOR=0
+CFLAGS+=-I.
+WARNS?=	2
+
+.PATH: ${.CURDIR}/../../contrib/compiler-rt/BlocksRuntime
+
+INCS=	Block.h Block_private.h
+SRCS=	data.c runtime.c
+
+.include <bsd.lib.mk>

Added: user/ed/compiler-rt/lib/libblocksruntime/config.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/ed/compiler-rt/lib/libblocksruntime/config.h	Sat Oct 23 08:12:44 2010	(r214234)
@@ -0,0 +1,14 @@
+/* $FreeBSD$ */
+
+/* #undef HAVE_SYS_BYTEORDER_H */
+/* #undef HAVE_AVAILABILITY_MACROS_H */
+/* #undef HAVE_TARGET_CONDITIONALS_H */
+/* #undef HAVE_LIBKERN_OSATOMIC_H */
+
+#define HAVE_SYSCONF 1
+
+/* #undef HAVE_OSATOMIC_COMPARE_AND_SWAP_INT */
+/* #undef HAVE_OSATOMIC_COMPARE_AND_SWAP_LONG */
+
+#define HAVE_SYNC_BOOL_COMPARE_AND_SWAP_INT 1
+#define HAVE_SYNC_BOOL_COMPARE_AND_SWAP_LONG 1

From owner-svn-src-user@FreeBSD.ORG  Sat Oct 23 10:46:11 2010
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 647AD106566C;
	Sat, 23 Oct 2010 10:46:11 +0000 (UTC) (envelope-from ed@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 542808FC14;
	Sat, 23 Oct 2010 10:46:11 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o9NAkB5s084723;
	Sat, 23 Oct 2010 10:46:11 GMT (envelope-from ed@svn.freebsd.org)
Received: (from ed@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o9NAkBPa084721;
	Sat, 23 Oct 2010 10:46:11 GMT (envelope-from ed@svn.freebsd.org)
Message-Id: <201010231046.o9NAkBPa084721@svn.freebsd.org>
From: Ed Schouten <ed@FreeBSD.org>
Date: Sat, 23 Oct 2010 10:46:11 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r214235 - user/ed/compiler-rt/lib/libblocksruntime
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
	src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 23 Oct 2010 10:46:11 -0000

Author: ed
Date: Sat Oct 23 10:46:11 2010
New Revision: 214235
URL: http://svn.freebsd.org/changeset/base/214235

Log:
  Use correct include path.

Modified:
  user/ed/compiler-rt/lib/libblocksruntime/Makefile

Modified: user/ed/compiler-rt/lib/libblocksruntime/Makefile
==============================================================================
--- user/ed/compiler-rt/lib/libblocksruntime/Makefile	Sat Oct 23 08:12:44 2010	(r214234)
+++ user/ed/compiler-rt/lib/libblocksruntime/Makefile	Sat Oct 23 10:46:11 2010	(r214235)
@@ -2,7 +2,7 @@
 
 LIB=	BlocksRuntime
 SHLIB_MAJOR=0
-CFLAGS+=-I.
+CFLAGS+=-I${.CURDIR}
 WARNS?=	2
 
 .PATH: ${.CURDIR}/../../contrib/compiler-rt/BlocksRuntime

From owner-svn-src-user@FreeBSD.ORG  Sat Oct 23 14:27:48 2010
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id C42441065670;
	Sat, 23 Oct 2010 14:27:48 +0000 (UTC) (envelope-from ed@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id B36188FC27;
	Sat, 23 Oct 2010 14:27:48 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o9NERmFO089695;
	Sat, 23 Oct 2010 14:27:48 GMT (envelope-from ed@svn.freebsd.org)
Received: (from ed@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o9NERmdq089694;
	Sat, 23 Oct 2010 14:27:48 GMT (envelope-from ed@svn.freebsd.org)
Message-Id: <201010231427.o9NERmdq089694@svn.freebsd.org>
From: Ed Schouten <ed@FreeBSD.org>
Date: Sat, 23 Oct 2010 14:27:48 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r214246 - in user/ed/compiler-rt/contrib/compiler-rt: .
	cmake make test www
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
	src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 23 Oct 2010 14:27:48 -0000

Author: ed
Date: Sat Oct 23 14:27:48 2010
New Revision: 214246
URL: http://svn.freebsd.org/changeset/base/214246

Log:
  Remove unneeded files/directories from compiler-rt root.

Deleted:
  user/ed/compiler-rt/contrib/compiler-rt/CMakeLists.txt
  user/ed/compiler-rt/contrib/compiler-rt/CREDITS.TXT
  user/ed/compiler-rt/contrib/compiler-rt/LICENSE.TXT
  user/ed/compiler-rt/contrib/compiler-rt/Makefile
  user/ed/compiler-rt/contrib/compiler-rt/README.txt
  user/ed/compiler-rt/contrib/compiler-rt/cmake/
  user/ed/compiler-rt/contrib/compiler-rt/make/
  user/ed/compiler-rt/contrib/compiler-rt/test/
  user/ed/compiler-rt/contrib/compiler-rt/www/

From owner-svn-src-user@FreeBSD.ORG  Sat Oct 23 14:29:18 2010
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 4ED491065674;
	Sat, 23 Oct 2010 14:29:18 +0000 (UTC) (envelope-from ed@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 3D36A8FC16;
	Sat, 23 Oct 2010 14:29:18 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o9NETIg0089754;
	Sat, 23 Oct 2010 14:29:18 GMT (envelope-from ed@svn.freebsd.org)
Received: (from ed@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o9NETIa2089753;
	Sat, 23 Oct 2010 14:29:18 GMT (envelope-from ed@svn.freebsd.org)
Message-Id: <201010231429.o9NETIa2089753@svn.freebsd.org>
From: Ed Schouten <ed@FreeBSD.org>
Date: Sat, 23 Oct 2010 14:29:18 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r214247 - in user/ed/compiler-rt/contrib/compiler-rt: .
	BlocksRuntime BlocksRuntime/tests lib lib/arm lib/i386
	lib/ppc lib/x86_64
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
	src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 23 Oct 2010 14:29:18 -0000

Author: ed
Date: Sat Oct 23 14:29:17 2010
New Revision: 214247
URL: http://svn.freebsd.org/changeset/base/214247

Log:
  Remove even more unneeded files.

Deleted:
  user/ed/compiler-rt/contrib/compiler-rt/.gitignore
  user/ed/compiler-rt/contrib/compiler-rt/BlocksRuntime/CMakeLists.txt
  user/ed/compiler-rt/contrib/compiler-rt/BlocksRuntime/tests/
  user/ed/compiler-rt/contrib/compiler-rt/lib/CMakeLists.txt
  user/ed/compiler-rt/contrib/compiler-rt/lib/Makefile.mk
  user/ed/compiler-rt/contrib/compiler-rt/lib/arm/CMakeLists.txt
  user/ed/compiler-rt/contrib/compiler-rt/lib/arm/Makefile.mk
  user/ed/compiler-rt/contrib/compiler-rt/lib/i386/CMakeLists.txt
  user/ed/compiler-rt/contrib/compiler-rt/lib/i386/Makefile.mk
  user/ed/compiler-rt/contrib/compiler-rt/lib/ppc/CMakeLists.txt
  user/ed/compiler-rt/contrib/compiler-rt/lib/ppc/Makefile.mk
  user/ed/compiler-rt/contrib/compiler-rt/lib/x86_64/CMakeLists.txt
  user/ed/compiler-rt/contrib/compiler-rt/lib/x86_64/Makefile.mk

From owner-svn-src-user@FreeBSD.ORG  Sat Oct 23 14:30:27 2010
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id A9B42106566C;
	Sat, 23 Oct 2010 14:30:27 +0000 (UTC) (envelope-from ed@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 7EE348FC1F;
	Sat, 23 Oct 2010 14:30:27 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o9NEURAR089817;
	Sat, 23 Oct 2010 14:30:27 GMT (envelope-from ed@svn.freebsd.org)
Received: (from ed@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o9NEURqV089816;
	Sat, 23 Oct 2010 14:30:27 GMT (envelope-from ed@svn.freebsd.org)
Message-Id: <201010231430.o9NEURqV089816@svn.freebsd.org>
From: Ed Schouten <ed@FreeBSD.org>
Date: Sat, 23 Oct 2010 14:30:27 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r214248 -
	user/ed/compiler-rt/contrib/compiler-rt/lib/sparc64
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
	src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 23 Oct 2010 14:30:27 -0000

Author: ed
Date: Sat Oct 23 14:30:27 2010
New Revision: 214248
URL: http://svn.freebsd.org/changeset/base/214248

Log:
  Remove empty directory.

Deleted:
  user/ed/compiler-rt/contrib/compiler-rt/lib/sparc64/