svn commit: r265743 - in projects/random_number_generator: . bin/dd bin/sh/tests/builtins cddl/compat/opensolaris/include cddl/compat/opensolaris/misc cddl/contrib/opensolaris/lib/libdtrace/common ...
Mark Murray
markm at FreeBSD.org
Fri May 9 07:07:42 UTC 2014
Author: markm
Date: Fri May 9 07:07:38 2014
New Revision: 265743
URL: http://svnweb.freebsd.org/changeset/base/265743
Log:
MFC - tracking commit.
Merging r265457 through r265740.
Added:
projects/random_number_generator/bin/sh/tests/builtins/getopts3.0
- copied unchanged from r265740, head/bin/sh/tests/builtins/getopts3.0
projects/random_number_generator/bin/sh/tests/builtins/getopts4.0
- copied unchanged from r265740, head/bin/sh/tests/builtins/getopts4.0
projects/random_number_generator/bin/sh/tests/builtins/getopts5.0
- copied unchanged from r265740, head/bin/sh/tests/builtins/getopts5.0
projects/random_number_generator/cddl/compat/opensolaris/misc/thread_pool.c
- copied unchanged from r265740, head/cddl/compat/opensolaris/misc/thread_pool.c
projects/random_number_generator/cddl/compat/opensolaris/misc/thread_pool_impl.h
- copied unchanged from r265740, head/cddl/compat/opensolaris/misc/thread_pool_impl.h
projects/random_number_generator/release/doc/share/xml/sponsor.ent
- copied unchanged from r265740, head/release/doc/share/xml/sponsor.ent
projects/random_number_generator/release/doc/share/xml/vendor.ent
- copied unchanged from r265740, head/release/doc/share/xml/vendor.ent
projects/random_number_generator/share/man/man4/mrsas.4
- copied unchanged from r265740, head/share/man/man4/mrsas.4
projects/random_number_generator/sys/arm/mv/armadaxp/mptramp.S
- copied unchanged from r265740, head/sys/arm/mv/armadaxp/mptramp.S
projects/random_number_generator/sys/arm/rockchip/rk30xx_mp.c
- copied unchanged from r265740, head/sys/arm/rockchip/rk30xx_mp.c
projects/random_number_generator/sys/dev/mrsas/
- copied from r265740, head/sys/dev/mrsas/
projects/random_number_generator/sys/modules/mrsas/
- copied from r265740, head/sys/modules/mrsas/
Modified:
projects/random_number_generator/ObsoleteFiles.inc
projects/random_number_generator/UPDATING
projects/random_number_generator/bin/dd/dd.c
projects/random_number_generator/bin/dd/dd.h
projects/random_number_generator/bin/dd/misc.c
projects/random_number_generator/bin/sh/tests/builtins/Makefile
projects/random_number_generator/cddl/compat/opensolaris/include/thread_pool.h
projects/random_number_generator/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c
projects/random_number_generator/cddl/lib/libzfs/Makefile
projects/random_number_generator/contrib/llvm/tools/clang/include/clang/Driver/Options.td
projects/random_number_generator/contrib/llvm/tools/clang/include/clang/Frontend/CodeGenOptions.h
projects/random_number_generator/contrib/llvm/tools/clang/lib/CodeGen/CGDebugInfo.cpp
projects/random_number_generator/contrib/llvm/tools/clang/lib/Driver/Tools.cpp
projects/random_number_generator/contrib/llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp
projects/random_number_generator/contrib/ntp/ntpd/ntp_request.c
projects/random_number_generator/etc/defaults/rc.conf
projects/random_number_generator/gnu/usr.bin/groff/tmac/mdoc.local
projects/random_number_generator/lib/libc/sys/msync.2
projects/random_number_generator/lib/libmagic/Makefile
projects/random_number_generator/lib/librtld_db/librtld_db.3
projects/random_number_generator/lib/librtld_db/rtld_db.c
projects/random_number_generator/lib/librtld_db/rtld_db.h
projects/random_number_generator/libexec/rtld-elf/Symbol.map
projects/random_number_generator/libexec/rtld-elf/rtld.c
projects/random_number_generator/release/doc/en_US.ISO8859-1/hardware/article.xml
projects/random_number_generator/release/doc/en_US.ISO8859-1/relnotes/article.xml
projects/random_number_generator/release/doc/share/xml/catalog.xml
projects/random_number_generator/release/doc/share/xml/release.xsl
projects/random_number_generator/sbin/gvinum/gvinum.c
projects/random_number_generator/sbin/route/route.c
projects/random_number_generator/share/man/man4/Makefile
projects/random_number_generator/share/man/man4/bce.4
projects/random_number_generator/share/man/man4/bxe.4
projects/random_number_generator/share/mk/Makefile
projects/random_number_generator/share/mk/bsd.compiler.mk
projects/random_number_generator/share/mk/bsd.mkopt.mk
projects/random_number_generator/share/mk/bsd.opts.mk
projects/random_number_generator/share/mk/bsd.prog.mk
projects/random_number_generator/share/mk/src.opts.mk
projects/random_number_generator/sys/arm/arm/locore.S
projects/random_number_generator/sys/arm/conf/RADXA
projects/random_number_generator/sys/arm/mv/armadaxp/files.armadaxp
projects/random_number_generator/sys/arm/rockchip/files.rk30xx
projects/random_number_generator/sys/arm/rockchip/rk30xx_machdep.c
projects/random_number_generator/sys/arm/xilinx/zy7_devcfg.c
projects/random_number_generator/sys/boot/fdt/dts/arm/rk3188.dtsi
projects/random_number_generator/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c
projects/random_number_generator/sys/conf/files
projects/random_number_generator/sys/dev/ath/if_ath_rx.c
projects/random_number_generator/sys/dev/ath/if_ath_tdma.c
projects/random_number_generator/sys/dev/bce/if_bce.c
projects/random_number_generator/sys/dev/bce/if_bcefw.h
projects/random_number_generator/sys/dev/bce/if_bcereg.h
projects/random_number_generator/sys/dev/bxe/bxe.c
projects/random_number_generator/sys/dev/mpr/mpr.c
projects/random_number_generator/sys/dev/mpr/mpr_sas.c
projects/random_number_generator/sys/dev/mpr/mpr_sas_lsi.c
projects/random_number_generator/sys/dev/mpr/mpr_user.c
projects/random_number_generator/sys/dev/mps/mps_sas.c
projects/random_number_generator/sys/dev/vt/hw/fb/vt_early_fb.c
projects/random_number_generator/sys/dev/vt/vt.h
projects/random_number_generator/sys/dev/vt/vt_buf.c
projects/random_number_generator/sys/dev/vt/vt_consolectl.c
projects/random_number_generator/sys/dev/vt/vt_core.c
projects/random_number_generator/sys/dev/vt/vt_sysmouse.c
projects/random_number_generator/sys/geom/part/g_part_mbr.c
projects/random_number_generator/sys/geom/part/g_part_pc98.c
projects/random_number_generator/sys/geom/part/g_part_vtoc8.c
projects/random_number_generator/sys/modules/Makefile
projects/random_number_generator/sys/modules/bce/Makefile
projects/random_number_generator/sys/net/rtsock.c
projects/random_number_generator/sys/netinet/ip_output.c
projects/random_number_generator/sys/ufs/ffs/ffs_softdep.c
projects/random_number_generator/sys/vm/vm_mmap.c
projects/random_number_generator/usr.bin/elfdump/elfdump.c
projects/random_number_generator/usr.bin/mkimg/apm.c
projects/random_number_generator/usr.bin/mkimg/bsd.c
projects/random_number_generator/usr.bin/mkimg/ebr.c
projects/random_number_generator/usr.bin/mkimg/gpt.c
projects/random_number_generator/usr.bin/mkimg/mbr.c
projects/random_number_generator/usr.bin/mkimg/mkimg.c (contents, props changed)
projects/random_number_generator/usr.bin/mkimg/mkimg.h
projects/random_number_generator/usr.bin/mkimg/pc98.c
projects/random_number_generator/usr.bin/mkimg/vtoc8.c
projects/random_number_generator/usr.bin/printf/printf.c
projects/random_number_generator/usr.bin/stat/stat.1
projects/random_number_generator/usr.bin/stat/stat.c
Directory Properties:
projects/random_number_generator/ (props changed)
projects/random_number_generator/cddl/ (props changed)
projects/random_number_generator/cddl/contrib/opensolaris/ (props changed)
projects/random_number_generator/contrib/llvm/ (props changed)
projects/random_number_generator/contrib/llvm/tools/clang/ (props changed)
projects/random_number_generator/contrib/ntp/ (props changed)
projects/random_number_generator/etc/ (props changed)
projects/random_number_generator/lib/libc/ (props changed)
projects/random_number_generator/sbin/ (props changed)
projects/random_number_generator/share/man/man4/ (props changed)
projects/random_number_generator/sys/ (props changed)
projects/random_number_generator/sys/boot/ (props changed)
projects/random_number_generator/sys/cddl/contrib/opensolaris/ (props changed)
projects/random_number_generator/sys/conf/ (props changed)
Modified: projects/random_number_generator/ObsoleteFiles.inc
==============================================================================
--- projects/random_number_generator/ObsoleteFiles.inc Fri May 9 07:07:25 2014 (r265742)
+++ projects/random_number_generator/ObsoleteFiles.inc Fri May 9 07:07:38 2014 (r265743)
@@ -38,6 +38,8 @@
# xargs -n1 | sort | uniq -d;
# done
+# 20140505: Bogusly installing src.opts.mk
+OLD_FILES+=usr/share/mk/src.opts.mk
# 20140505: Reject PR kern/187551
OLD_DIRS+=usr/tests/sbin/ifconfig
OLD_FILES+=usr/tests/sbin/ifconfig/Kyuafile
Modified: projects/random_number_generator/UPDATING
==============================================================================
--- projects/random_number_generator/UPDATING Fri May 9 07:07:25 2014 (r265742)
+++ projects/random_number_generator/UPDATING Fri May 9 07:07:38 2014 (r265743)
@@ -31,6 +31,11 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 11
disable the most expensive debugging functionality run
"ln -s 'abort:false,junk:false' /etc/malloc.conf".)
+20140508:
+ We bogusly installed src.opts.mk in /usr/share/mk. This file should
+ be removed to avoid issues in the future (and has been added to
+ ObsoleteFiles.inc).
+
20140505:
/etc/src.conf now affects only builds of the FreeBSD src tree. In the
past, it affected all builds that used the bsd.*.mk files. The old
@@ -44,6 +49,11 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 11
temporary breakage was fixed with MAKESYSPATH settings for buildworld
as well...
+ One side effect of all this cleaning up is that bsd.compiler.mk
+ is no longer implicitly included by bsd.own.mk. If you wish to
+ use COMPILER_TYPE, you must now explicitly include bsd.compiler.mk
+ as well.
+
20140430:
The lindev device has been removed since /dev/full has been made a
standard device. __FreeBSD_version has been bumped.
Modified: projects/random_number_generator/bin/dd/dd.c
==============================================================================
--- projects/random_number_generator/bin/dd/dd.c Fri May 9 07:07:25 2014 (r265742)
+++ projects/random_number_generator/bin/dd/dd.c Fri May 9 07:07:38 2014 (r265743)
@@ -50,8 +50,8 @@ __FBSDID("$FreeBSD$");
#include <sys/conf.h>
#include <sys/disklabel.h>
#include <sys/filio.h>
-#include <sys/time.h>
+#include <assert.h>
#include <ctype.h>
#include <err.h>
#include <errno.h>
@@ -61,6 +61,7 @@ __FBSDID("$FreeBSD$");
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <time.h>
#include <unistd.h>
#include "dd.h"
@@ -76,6 +77,7 @@ STAT st; /* statistics */
void (*cfunc)(void); /* conversion function */
uintmax_t cpy_cnt; /* # of blocks to copy */
static off_t pending = 0; /* pending seek if sparse */
+static off_t last_sp = 0; /* size of last added sparse block */
u_int ddflags = 0; /* conversion options */
size_t cbsz; /* conversion block size */
uintmax_t files_cnt = 1; /* # of files to copy */
@@ -123,7 +125,6 @@ static void
setup(void)
{
u_int cnt;
- struct timeval tv;
if (in.name == NULL) {
in.name = "stdin";
@@ -173,6 +174,8 @@ setup(void)
} else if ((in.db = malloc(MAX(in.dbsz, cbsz) + cbsz)) == NULL ||
(out.db = malloc(out.dbsz + cbsz)) == NULL)
err(1, "output buffer");
+
+ /* dbp is the first free position in each buffer. */
in.dbp = in.db;
out.dbp = out.db;
@@ -240,8 +243,8 @@ setup(void)
ctab = casetab;
}
- (void)gettimeofday(&tv, NULL);
- st.start = tv.tv_sec + tv.tv_usec * 1e-6;
+ if (clock_gettime(CLOCK_MONOTONIC, &st.start))
+ err(1, "clock_gettime");
}
static void
@@ -434,8 +437,15 @@ dd_out(int force)
* we play games with the buffer size, and it's usually a partial write.
*/
outp = out.db;
+
+ /*
+ * If force, first try to write all pending data, else try to write
+ * just one block. Subsequently always write data one full block at
+ * a time at most.
+ */
for (n = force ? out.dbcnt : out.dbsz;; n = out.dbsz) {
- for (cnt = n;; cnt -= nw) {
+ cnt = n;
+ do {
sparse = 0;
if (ddflags & C_SPARSE) {
sparse = 1; /* Is buffer sparse? */
@@ -447,18 +457,24 @@ dd_out(int force)
}
if (sparse && !force) {
pending += cnt;
+ last_sp = cnt;
nw = cnt;
} else {
if (pending != 0) {
- if (force)
- pending--;
+ /* If forced to write, and we have no
+ * data left, we need to write the last
+ * sparse block explicitly.
+ */
+ if (force && cnt == 0) {
+ pending -= last_sp;
+ assert(outp == out.db);
+ memset(outp, 0, cnt);
+ }
if (lseek(out.fd, pending, SEEK_CUR) ==
-1)
err(2, "%s: seek error creating sparse file",
out.name);
- if (force)
- write(out.fd, outp, 1);
- pending = 0;
+ pending = last_sp = 0;
}
if (cnt)
nw = write(out.fd, outp, cnt);
@@ -473,27 +489,29 @@ dd_out(int force)
err(1, "%s", out.name);
nw = 0;
}
+
outp += nw;
st.bytes += nw;
- if ((size_t)nw == n) {
- if (n != out.dbsz)
- ++st.out_part;
- else
- ++st.out_full;
- break;
- }
- ++st.out_part;
- if ((size_t)nw == cnt)
- break;
- if (out.flags & ISTAPE)
- errx(1, "%s: short write on tape device",
- out.name);
- if (out.flags & ISCHR && !warned) {
- warned = 1;
- warnx("%s: short write on character device",
- out.name);
+
+ if ((size_t)nw == n && n == out.dbsz)
+ ++st.out_full;
+ else
+ ++st.out_part;
+
+ if ((size_t) nw != cnt) {
+ if (out.flags & ISTAPE)
+ errx(1, "%s: short write on tape device",
+ out.name);
+ if (out.flags & ISCHR && !warned) {
+ warned = 1;
+ warnx("%s: short write on character device",
+ out.name);
+ }
}
- }
+
+ cnt -= nw;
+ } while (cnt != 0);
+
if ((out.dbcnt -= n) < out.dbsz)
break;
}
Modified: projects/random_number_generator/bin/dd/dd.h
==============================================================================
--- projects/random_number_generator/bin/dd/dd.h Fri May 9 07:07:25 2014 (r265742)
+++ projects/random_number_generator/bin/dd/dd.h Fri May 9 07:07:38 2014 (r265743)
@@ -64,7 +64,7 @@ typedef struct {
uintmax_t trunc; /* # of truncated records */
uintmax_t swab; /* # of odd-length swab blocks */
uintmax_t bytes; /* # of bytes written */
- double start; /* start time of dd */
+ struct timespec start; /* start time of dd */
} STAT;
/* Flags (in ddflags). */
Modified: projects/random_number_generator/bin/dd/misc.c
==============================================================================
--- projects/random_number_generator/bin/dd/misc.c Fri May 9 07:07:25 2014 (r265742)
+++ projects/random_number_generator/bin/dd/misc.c Fri May 9 07:07:38 2014 (r265743)
@@ -40,14 +40,15 @@ static char sccsid[] = "@(#)misc.c 8.3 (
__FBSDID("$FreeBSD$");
#include <sys/types.h>
-#include <sys/time.h>
+#include <err.h>
#include <errno.h>
#include <inttypes.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <time.h>
#include <unistd.h>
#include "dd.h"
@@ -56,16 +57,21 @@ __FBSDID("$FreeBSD$");
void
summary(void)
{
- struct timeval tv;
- double secs;
+ struct timespec end, ts_res;
+ double secs, res;
if (ddflags & C_NOINFO)
return;
- (void)gettimeofday(&tv, NULL);
- secs = tv.tv_sec + tv.tv_usec * 1e-6 - st.start;
- if (secs < 1e-6)
- secs = 1e-6;
+ if (clock_gettime(CLOCK_MONOTONIC, &end))
+ err(1, "clock_gettime");
+ if (clock_getres(CLOCK_MONOTONIC, &ts_res))
+ err(1, "clock_getres");
+ secs = (end.tv_sec - st.start.tv_sec) + \
+ (end.tv_nsec - st.start.tv_nsec) * 1e-9;
+ res = ts_res.tv_sec + ts_res.tv_nsec * 1e-9;
+ if (secs < res)
+ secs = res;
(void)fprintf(stderr,
"%ju+%ju records in\n%ju+%ju records out\n",
st.in_full, st.in_part, st.out_full, st.out_part);
Modified: projects/random_number_generator/bin/sh/tests/builtins/Makefile
==============================================================================
--- projects/random_number_generator/bin/sh/tests/builtins/Makefile Fri May 9 07:07:25 2014 (r265742)
+++ projects/random_number_generator/bin/sh/tests/builtins/Makefile Fri May 9 07:07:38 2014 (r265743)
@@ -80,6 +80,9 @@ FILES+= for2.0
FILES+= for3.0
FILES+= getopts1.0 getopts1.0.stdout
FILES+= getopts2.0 getopts2.0.stdout
+FILES+= getopts3.0
+FILES+= getopts4.0
+FILES+= getopts5.0
FILES+= hash1.0 hash1.0.stdout
FILES+= hash2.0 hash2.0.stdout
FILES+= hash3.0 hash3.0.stdout
Copied: projects/random_number_generator/bin/sh/tests/builtins/getopts3.0 (from r265740, head/bin/sh/tests/builtins/getopts3.0)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ projects/random_number_generator/bin/sh/tests/builtins/getopts3.0 Fri May 9 07:07:38 2014 (r265743, copy of r265740, head/bin/sh/tests/builtins/getopts3.0)
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+shift $#
+getopts x opt
+r=$?
+[ "$r" != 0 ] && [ "$OPTIND" = 1 ]
Copied: projects/random_number_generator/bin/sh/tests/builtins/getopts4.0 (from r265740, head/bin/sh/tests/builtins/getopts4.0)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ projects/random_number_generator/bin/sh/tests/builtins/getopts4.0 Fri May 9 07:07:38 2014 (r265743, copy of r265740, head/bin/sh/tests/builtins/getopts4.0)
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+set -- -x
+opt=not
+getopts x opt
+r1=$? OPTIND1=$OPTIND opt1=$opt
+getopts x opt
+r2=$? OPTIND2=$OPTIND
+[ "$r1" = 0 ] && [ "$OPTIND1" = 2 ] && [ "$opt1" = x ] && [ "$r2" != 0 ] &&
+ [ "$OPTIND2" = 2 ]
Copied: projects/random_number_generator/bin/sh/tests/builtins/getopts5.0 (from r265740, head/bin/sh/tests/builtins/getopts5.0)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ projects/random_number_generator/bin/sh/tests/builtins/getopts5.0 Fri May 9 07:07:38 2014 (r265743, copy of r265740, head/bin/sh/tests/builtins/getopts5.0)
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+set -- -x arg
+opt=not
+getopts x opt
+r1=$? OPTIND1=$OPTIND opt1=$opt
+getopts x opt
+r2=$? OPTIND2=$OPTIND
+[ "$r1" = 0 ] && [ "$OPTIND1" = 2 ] && [ "$opt1" = x ] && [ "$r2" != 0 ] &&
+ [ "$OPTIND2" = 2 ]
Modified: projects/random_number_generator/cddl/compat/opensolaris/include/thread_pool.h
==============================================================================
--- projects/random_number_generator/cddl/compat/opensolaris/include/thread_pool.h Fri May 9 07:07:25 2014 (r265742)
+++ projects/random_number_generator/cddl/compat/opensolaris/include/thread_pool.h Fri May 9 07:07:38 2014 (r265743)
@@ -1,39 +1,78 @@
-/*-
- * Copyright (c) 2010 Pawel Jakub Dawidek <pjd at FreeBSD.org>
- * All rights reserved.
+/*
+ * CDDL HEADER START
*
- * 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.
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
*
- * THIS SOFTWARE IS PROVIDED BY THE AUTHORS 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 AUTHORS 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.
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
*
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+/*
* $FreeBSD$
*/
-#ifndef _OPENSOLARIS_THREAD_POOL_H_
-#define _OPENSOLARIS_THREAD_POOL_H_
+#ifndef _THREAD_POOL_H_
+#define _THREAD_POOL_H_
+
+#pragma ident "%Z%%M% %I% %E% SMI"
+
+#include <sys/types.h>
+#include <thread.h>
+#include <pthread.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct tpool tpool_t; /* opaque thread pool descriptor */
+
+#if defined(__STDC__)
+
+extern tpool_t *tpool_create(uint_t min_threads, uint_t max_threads,
+ uint_t linger, pthread_attr_t *attr);
+extern int tpool_dispatch(tpool_t *tpool,
+ void (*func)(void *), void *arg);
+extern void tpool_destroy(tpool_t *tpool);
+extern void tpool_abandon(tpool_t *tpool);
+extern void tpool_wait(tpool_t *tpool);
+extern void tpool_suspend(tpool_t *tpool);
+extern int tpool_suspended(tpool_t *tpool);
+extern void tpool_resume(tpool_t *tpool);
+extern int tpool_member(tpool_t *tpool);
+
+#else /* Non ANSI */
+
+extern tpool_t *tpool_create();
+extern int tpool_dispatch();
+extern void tpool_destroy();
+extern void tpool_abandon();
+extern void tpool_wait();
+extern void tpool_suspend();
+extern int tpool_suspended();
+extern void tpool_resume();
+extern int tpool_member();
-typedef int tpool_t;
+#endif /* __STDC__ */
-#define tpool_create(a, b, c, d) (0)
-#define tpool_dispatch(pool, func, arg) func(arg)
-#define tpool_wait(pool) do { } while (0)
-#define tpool_destroy(pool) do { } while (0)
+#ifdef __cplusplus
+}
+#endif
-#endif /* !_OPENSOLARIS_THREAD_POOL_H_ */
+#endif /* _THREAD_POOL_H_ */
Copied: projects/random_number_generator/cddl/compat/opensolaris/misc/thread_pool.c (from r265740, head/cddl/compat/opensolaris/misc/thread_pool.c)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ projects/random_number_generator/cddl/compat/opensolaris/misc/thread_pool.c Fri May 9 07:07:38 2014 (r265743, copy of r265740, head/cddl/compat/opensolaris/misc/thread_pool.c)
@@ -0,0 +1,430 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#pragma ident "%Z%%M% %I% %E% SMI"
+
+#include <stdlib.h>
+#include <signal.h>
+#include <errno.h>
+#include "thread_pool_impl.h"
+
+typedef void (*_Voidfp)(void*); /* pointer to extern "C" function */
+
+static void
+delete_pool(tpool_t *tpool)
+{
+ tpool_job_t *job;
+
+ /*
+ * There should be no pending jobs, but just in case...
+ */
+ for (job = tpool->tp_head; job != NULL; job = tpool->tp_head) {
+ tpool->tp_head = job->tpj_next;
+ free(job);
+ }
+ (void) pthread_attr_destroy(&tpool->tp_attr);
+ free(tpool);
+}
+
+/*
+ * Worker thread is terminating.
+ */
+static void
+worker_cleanup(void *arg)
+{
+ tpool_t *tpool = arg;
+
+ if (--tpool->tp_current == 0 &&
+ (tpool->tp_flags & (TP_DESTROY | TP_ABANDON))) {
+ if (tpool->tp_flags & TP_ABANDON) {
+ pthread_mutex_unlock(&tpool->tp_mutex);
+ delete_pool(tpool);
+ return;
+ }
+ if (tpool->tp_flags & TP_DESTROY)
+ (void) pthread_cond_broadcast(&tpool->tp_busycv);
+ }
+ pthread_mutex_unlock(&tpool->tp_mutex);
+}
+
+static void
+notify_waiters(tpool_t *tpool)
+{
+ if (tpool->tp_head == NULL && tpool->tp_active == NULL) {
+ tpool->tp_flags &= ~TP_WAIT;
+ (void) pthread_cond_broadcast(&tpool->tp_waitcv);
+ }
+}
+
+/*
+ * Called by a worker thread on return from a tpool_dispatch()d job.
+ */
+static void
+job_cleanup(void *arg)
+{
+ tpool_t *tpool = arg;
+ pthread_t my_tid = pthread_self();
+ tpool_active_t *activep;
+ tpool_active_t **activepp;
+
+ pthread_mutex_lock(&tpool->tp_mutex);
+ /* CSTYLED */
+ for (activepp = &tpool->tp_active;; activepp = &activep->tpa_next) {
+ activep = *activepp;
+ if (activep->tpa_tid == my_tid) {
+ *activepp = activep->tpa_next;
+ break;
+ }
+ }
+ if (tpool->tp_flags & TP_WAIT)
+ notify_waiters(tpool);
+}
+
+static void *
+tpool_worker(void *arg)
+{
+ tpool_t *tpool = (tpool_t *)arg;
+ int elapsed;
+ tpool_job_t *job;
+ void (*func)(void *);
+ tpool_active_t active;
+ sigset_t maskset;
+
+ pthread_mutex_lock(&tpool->tp_mutex);
+ pthread_cleanup_push(worker_cleanup, tpool);
+
+ /*
+ * This is the worker's main loop.
+ * It will only be left if a timeout or an error has occured.
+ */
+ active.tpa_tid = pthread_self();
+ for (;;) {
+ elapsed = 0;
+ tpool->tp_idle++;
+ if (tpool->tp_flags & TP_WAIT)
+ notify_waiters(tpool);
+ while ((tpool->tp_head == NULL ||
+ (tpool->tp_flags & TP_SUSPEND)) &&
+ !(tpool->tp_flags & (TP_DESTROY | TP_ABANDON))) {
+ if (tpool->tp_current <= tpool->tp_minimum ||
+ tpool->tp_linger == 0) {
+ (void) pthread_cond_wait(&tpool->tp_workcv,
+ &tpool->tp_mutex);
+ } else {
+ struct timespec timeout;
+
+ clock_gettime(CLOCK_MONOTONIC, &timeout);
+ timeout.tv_sec += tpool->tp_linger;
+ if (pthread_cond_timedwait(&tpool->tp_workcv,
+ &tpool->tp_mutex, &timeout) != 0) {
+ elapsed = 1;
+ break;
+ }
+ }
+ }
+ tpool->tp_idle--;
+ if (tpool->tp_flags & TP_DESTROY)
+ break;
+ if (tpool->tp_flags & TP_ABANDON) {
+ /* can't abandon a suspended pool */
+ if (tpool->tp_flags & TP_SUSPEND) {
+ tpool->tp_flags &= ~TP_SUSPEND;
+ (void) pthread_cond_broadcast(&tpool->tp_workcv);
+ }
+ if (tpool->tp_head == NULL)
+ break;
+ }
+ if ((job = tpool->tp_head) != NULL &&
+ !(tpool->tp_flags & TP_SUSPEND)) {
+ elapsed = 0;
+ func = job->tpj_func;
+ arg = job->tpj_arg;
+ tpool->tp_head = job->tpj_next;
+ if (job == tpool->tp_tail)
+ tpool->tp_tail = NULL;
+ tpool->tp_njobs--;
+ active.tpa_next = tpool->tp_active;
+ tpool->tp_active = &active;
+ pthread_mutex_unlock(&tpool->tp_mutex);
+ pthread_cleanup_push(job_cleanup, tpool);
+ free(job);
+ /*
+ * Call the specified function.
+ */
+ func(arg);
+ /*
+ * We don't know what this thread has been doing,
+ * so we reset its signal mask and cancellation
+ * state back to the initial values.
+ */
+ sigfillset(&maskset);
+ (void) pthread_sigmask(SIG_SETMASK, &maskset, NULL);
+ (void) pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED,
+ NULL);
+ (void) pthread_setcancelstate(PTHREAD_CANCEL_ENABLE,
+ NULL);
+ pthread_cleanup_pop(1);
+ }
+ if (elapsed && tpool->tp_current > tpool->tp_minimum) {
+ /*
+ * We timed out and there is no work to be done
+ * and the number of workers exceeds the minimum.
+ * Exit now to reduce the size of the pool.
+ */
+ break;
+ }
+ }
+ pthread_cleanup_pop(1);
+ return (arg);
+}
+
+/*
+ * Create a worker thread, with all signals blocked.
+ */
+static int
+create_worker(tpool_t *tpool)
+{
+ sigset_t maskset, oset;
+ pthread_t thread;
+ int error;
+
+ sigfillset(&maskset);
+ (void) pthread_sigmask(SIG_SETMASK, &maskset, &oset);
+ error = pthread_create(&thread, &tpool->tp_attr, tpool_worker, tpool);
+ (void) pthread_sigmask(SIG_SETMASK, &oset, NULL);
+ return (error);
+}
+
+tpool_t *
+tpool_create(uint_t min_threads, uint_t max_threads, uint_t linger,
+ pthread_attr_t *attr)
+{
+ tpool_t *tpool;
+ int error;
+
+ if (min_threads > max_threads || max_threads < 1) {
+ errno = EINVAL;
+ return (NULL);
+ }
+
+ tpool = malloc(sizeof (*tpool));
+ if (tpool == NULL) {
+ errno = ENOMEM;
+ return (NULL);
+ }
+ bzero(tpool, sizeof(*tpool));
+ (void) pthread_mutex_init(&tpool->tp_mutex, NULL);
+ (void) pthread_cond_init(&tpool->tp_busycv, NULL);
+ (void) pthread_cond_init(&tpool->tp_workcv, NULL);
+ (void) pthread_cond_init(&tpool->tp_waitcv, NULL);
+ tpool->tp_minimum = min_threads;
+ tpool->tp_maximum = max_threads;
+ tpool->tp_linger = linger;
+
+ /* make all pool threads be detached daemon threads */
+ (void) pthread_attr_init(&tpool->tp_attr);
+ (void) pthread_attr_setdetachstate(&tpool->tp_attr,
+ PTHREAD_CREATE_DETACHED);
+
+ return (tpool);
+}
+
+/*
+ * Dispatch a work request to the thread pool.
+ * If there are idle workers, awaken one.
+ * Else, if the maximum number of workers has
+ * not been reached, spawn a new worker thread.
+ * Else just return with the job added to the queue.
+ */
+int
+tpool_dispatch(tpool_t *tpool, void (*func)(void *), void *arg)
+{
+ tpool_job_t *job;
+
+ if ((job = malloc(sizeof (*job))) == NULL)
+ return (-1);
+ bzero(job, sizeof(*job));
+ job->tpj_next = NULL;
+ job->tpj_func = func;
+ job->tpj_arg = arg;
+
+ pthread_mutex_lock(&tpool->tp_mutex);
+
+ if (tpool->tp_head == NULL)
+ tpool->tp_head = job;
+ else
+ tpool->tp_tail->tpj_next = job;
+ tpool->tp_tail = job;
+ tpool->tp_njobs++;
+
+ if (!(tpool->tp_flags & TP_SUSPEND)) {
+ if (tpool->tp_idle > 0)
+ (void) pthread_cond_signal(&tpool->tp_workcv);
+ else if (tpool->tp_current < tpool->tp_maximum &&
+ create_worker(tpool) == 0)
+ tpool->tp_current++;
+ }
+
+ pthread_mutex_unlock(&tpool->tp_mutex);
+ return (0);
+}
+
+/*
+ * Assumes: by the time tpool_destroy() is called no one will use this
+ * thread pool in any way and no one will try to dispatch entries to it.
+ * Calling tpool_destroy() from a job in the pool will cause deadlock.
+ */
+void
+tpool_destroy(tpool_t *tpool)
+{
+ tpool_active_t *activep;
+
+ pthread_mutex_lock(&tpool->tp_mutex);
+ pthread_cleanup_push((_Voidfp)pthread_mutex_unlock, &tpool->tp_mutex);
+
+ /* mark the pool as being destroyed; wakeup idle workers */
+ tpool->tp_flags |= TP_DESTROY;
+ tpool->tp_flags &= ~TP_SUSPEND;
+ (void) pthread_cond_broadcast(&tpool->tp_workcv);
+
+ /* cancel all active workers */
+ for (activep = tpool->tp_active; activep; activep = activep->tpa_next)
+ (void) pthread_cancel(activep->tpa_tid);
+
+ /* wait for all active workers to finish */
+ while (tpool->tp_active != NULL) {
+ tpool->tp_flags |= TP_WAIT;
+ (void) pthread_cond_wait(&tpool->tp_waitcv, &tpool->tp_mutex);
+ }
+
+ /* the last worker to terminate will wake us up */
+ while (tpool->tp_current != 0)
+ (void) pthread_cond_wait(&tpool->tp_busycv, &tpool->tp_mutex);
+
+ pthread_cleanup_pop(1); /* pthread_mutex_unlock(&tpool->tp_mutex); */
+ delete_pool(tpool);
+}
+
+/*
+ * Like tpool_destroy(), but don't cancel workers or wait for them to finish.
+ * The last worker to terminate will delete the pool.
+ */
+void
+tpool_abandon(tpool_t *tpool)
+{
+
+ pthread_mutex_lock(&tpool->tp_mutex);
+ if (tpool->tp_current == 0) {
+ /* no workers, just delete the pool */
+ pthread_mutex_unlock(&tpool->tp_mutex);
+ delete_pool(tpool);
+ } else {
+ /* wake up all workers, last one will delete the pool */
+ tpool->tp_flags |= TP_ABANDON;
+ tpool->tp_flags &= ~TP_SUSPEND;
+ (void) pthread_cond_broadcast(&tpool->tp_workcv);
+ pthread_mutex_unlock(&tpool->tp_mutex);
+ }
+}
+
+/*
+ * Wait for all jobs to complete.
+ * Calling tpool_wait() from a job in the pool will cause deadlock.
+ */
+void
+tpool_wait(tpool_t *tpool)
+{
+
+ pthread_mutex_lock(&tpool->tp_mutex);
+ pthread_cleanup_push((_Voidfp)pthread_mutex_unlock, &tpool->tp_mutex);
+ while (tpool->tp_head != NULL || tpool->tp_active != NULL) {
+ tpool->tp_flags |= TP_WAIT;
+ (void) pthread_cond_wait(&tpool->tp_waitcv, &tpool->tp_mutex);
+ }
+ pthread_cleanup_pop(1); /* pthread_mutex_unlock(&tpool->tp_mutex); */
+}
+
+void
+tpool_suspend(tpool_t *tpool)
+{
+
+ pthread_mutex_lock(&tpool->tp_mutex);
+ tpool->tp_flags |= TP_SUSPEND;
+ pthread_mutex_unlock(&tpool->tp_mutex);
+}
+
+int
+tpool_suspended(tpool_t *tpool)
+{
+ int suspended;
+
+ pthread_mutex_lock(&tpool->tp_mutex);
+ suspended = (tpool->tp_flags & TP_SUSPEND) != 0;
+ pthread_mutex_unlock(&tpool->tp_mutex);
+
+ return (suspended);
+}
+
+void
+tpool_resume(tpool_t *tpool)
+{
+ int excess;
+
+ pthread_mutex_lock(&tpool->tp_mutex);
+ if (!(tpool->tp_flags & TP_SUSPEND)) {
+ pthread_mutex_unlock(&tpool->tp_mutex);
+ return;
+ }
+ tpool->tp_flags &= ~TP_SUSPEND;
+ (void) pthread_cond_broadcast(&tpool->tp_workcv);
+ excess = tpool->tp_njobs - tpool->tp_idle;
+ while (excess-- > 0 && tpool->tp_current < tpool->tp_maximum) {
+ if (create_worker(tpool) != 0)
+ break; /* pthread_create() failed */
+ tpool->tp_current++;
+ }
+ pthread_mutex_unlock(&tpool->tp_mutex);
+}
+
+int
+tpool_member(tpool_t *tpool)
+{
+ pthread_t my_tid = pthread_self();
+ tpool_active_t *activep;
+
+ pthread_mutex_lock(&tpool->tp_mutex);
+ for (activep = tpool->tp_active; activep; activep = activep->tpa_next) {
+ if (activep->tpa_tid == my_tid) {
+ pthread_mutex_unlock(&tpool->tp_mutex);
+ return (1);
+ }
+ }
+ pthread_mutex_unlock(&tpool->tp_mutex);
+ return (0);
+}
Copied: projects/random_number_generator/cddl/compat/opensolaris/misc/thread_pool_impl.h (from r265740, head/cddl/compat/opensolaris/misc/thread_pool_impl.h)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ projects/random_number_generator/cddl/compat/opensolaris/misc/thread_pool_impl.h Fri May 9 07:07:38 2014 (r265743, copy of r265740, head/cddl/compat/opensolaris/misc/thread_pool_impl.h)
@@ -0,0 +1,99 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+/*
+ * $FreeBSD$
+ */
+
+#ifndef _THREAD_POOL_IMPL_H
+#define _THREAD_POOL_IMPL_H
+
+#pragma ident "%Z%%M% %I% %E% SMI"
+
+#include <thread_pool.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Thread pool implementation definitions.
+ * See <thread_pool.h> for interface declarations.
+ */
+
+/*
+ * FIFO queued job
+ */
+typedef struct tpool_job tpool_job_t;
+struct tpool_job {
+ tpool_job_t *tpj_next; /* list of jobs */
+ void (*tpj_func)(void *); /* function to call */
+ void *tpj_arg; /* its argument */
+};
+
+/*
+ * List of active threads, linked through their stacks.
+ */
+typedef struct tpool_active tpool_active_t;
+struct tpool_active {
+ tpool_active_t *tpa_next; /* list of active threads */
+ pthread_t tpa_tid; /* active thread id */
+};
+
+/*
+ * The thread pool.
+ */
+struct tpool {
+ tpool_t *tp_forw; /* circular list of all thread pools */
+ tpool_t *tp_back;
+ mutex_t tp_mutex; /* protects the pool data */
+ cond_t tp_busycv; /* synchronization in tpool_dispatch */
+ cond_t tp_workcv; /* synchronization with workers */
+ cond_t tp_waitcv; /* synchronization in tpool_wait() */
+ tpool_active_t *tp_active; /* threads performing work */
+ tpool_job_t *tp_head; /* FIFO job queue */
+ tpool_job_t *tp_tail;
+ pthread_attr_t tp_attr; /* attributes of the workers */
+ int tp_flags; /* see below */
+ uint_t tp_linger; /* seconds before idle workers exit */
+ int tp_njobs; /* number of jobs in job queue */
+ int tp_minimum; /* minimum number of worker threads */
+ int tp_maximum; /* maximum number of worker threads */
+ int tp_current; /* current number of worker threads */
+ int tp_idle; /* number of idle workers */
+};
+
+/* tp_flags */
+#define TP_WAIT 0x01 /* waiting in tpool_wait() */
+#define TP_SUSPEND 0x02 /* pool is being suspended */
+#define TP_DESTROY 0x04 /* pool is being destroyed */
+#define TP_ABANDON 0x08 /* pool is abandoned (auto-destroy) */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _THREAD_POOL_IMPL_H */
Modified: projects/random_number_generator/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c
==============================================================================
--- projects/random_number_generator/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c Fri May 9 07:07:25 2014 (r265742)
+++ projects/random_number_generator/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c Fri May 9 07:07:38 2014 (r265743)
@@ -1138,7 +1138,7 @@ alloc:
#if defined(sun)
dtp->dt_prcmode = DT_PROC_STOP_PREINIT;
#else
- dtp->dt_prcmode = DT_PROC_STOP_MAIN;
+ dtp->dt_prcmode = DT_PROC_STOP_POSTINIT;
#endif
dtp->dt_linkmode = DT_LINK_KERNEL;
dtp->dt_linktype = DT_LTYP_ELF;
Modified: projects/random_number_generator/cddl/lib/libzfs/Makefile
==============================================================================
--- projects/random_number_generator/cddl/lib/libzfs/Makefile Fri May 9 07:07:25 2014 (r265742)
+++ projects/random_number_generator/cddl/lib/libzfs/Makefile Fri May 9 07:07:38 2014 (r265743)
@@ -14,6 +14,7 @@ SRCS= deviceid.c \
fsshare.c \
mkdirp.c \
mnttab.c \
+ thread_pool.c \
zmount.c \
zone.c
Modified: projects/random_number_generator/contrib/llvm/tools/clang/include/clang/Driver/Options.td
==============================================================================
--- projects/random_number_generator/contrib/llvm/tools/clang/include/clang/Driver/Options.td Fri May 9 07:07:25 2014 (r265742)
+++ projects/random_number_generator/contrib/llvm/tools/clang/include/clang/Driver/Options.td Fri May 9 07:07:38 2014 (r265743)
@@ -549,8 +549,6 @@ def finstrument_functions : Flag<["-"],
def fkeep_inline_functions : Flag<["-"], "fkeep-inline-functions">, Group<clang_ignored_f_Group>;
def flat__namespace : Flag<["-"], "flat_namespace">;
def flax_vector_conversions : Flag<["-"], "flax-vector-conversions">, Group<f_Group>;
-def flimit_debug_info : Flag<["-"], "flimit-debug-info">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Limit debug information produced to reduce size of debug binary">;
def flimited_precision_EQ : Joined<["-"], "flimited-precision=">, Group<f_Group>;
def flto : Flag<["-"], "flto">, Group<f_Group>;
def fno_lto : Flag<["-"], "fno-lto">, Group<f_Group>;
@@ -645,8 +643,6 @@ def fno_inline : Flag<["-"], "fno-inline
def fno_keep_inline_functions : Flag<["-"], "fno-keep-inline-functions">, Group<clang_ignored_f_Group>;
def fno_lax_vector_conversions : Flag<["-"], "fno-lax-vector-conversions">, Group<f_Group>,
HelpText<"Disallow implicit conversions between vectors with a different number of elements or different element types">, Flags<[CC1Option]>;
-def fno_limit_debug_info : Flag<["-"], "fno-limit-debug-info">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Do not limit debug information produced to reduce size of debug binary">;
def fno_merge_all_constants : Flag<["-"], "fno-merge-all-constants">, Group<f_Group>,
Flags<[CC1Option]>, HelpText<"Disallow merging of constants">;
def fno_modules : Flag <["-"], "fno-modules">, Group<f_Group>,
@@ -774,6 +770,12 @@ def fno_signed_char : Flag<["-"], "fno-s
def fsplit_stack : Flag<["-"], "fsplit-stack">, Group<f_Group>;
def fstack_protector_all : Flag<["-"], "fstack-protector-all">, Group<f_Group>;
def fstack_protector : Flag<["-"], "fstack-protector">, Group<f_Group>;
+def fstandalone_debug : Flag<["-"], "fstandalone-debug">, Group<f_Group>, Flags<[CC1Option]>,
+ HelpText<"Emit full debug info for all types used by the program">;
+def fno_standalone_debug : Flag<["-"], "fno-standalone-debug">, Group<f_Group>, Flags<[CC1Option]>,
+ HelpText<"Limit debug information produced to reduce size of debug binary">;
+def flimit_debug_info : Flag<["-"], "flimit-debug-info">, Alias<fno_standalone_debug>;
+def fno_limit_debug_info : Flag<["-"], "fno-limit-debug-info">, Alias<fstandalone_debug>;
def fstrict_aliasing : Flag<["-"], "fstrict-aliasing">, Group<f_Group>;
def fstrict_enums : Flag<["-"], "fstrict-enums">, Group<f_Group>, Flags<[CC1Option]>,
HelpText<"Enable optimizations based on the strict definition of an enum's "
Modified: projects/random_number_generator/contrib/llvm/tools/clang/include/clang/Frontend/CodeGenOptions.h
==============================================================================
--- projects/random_number_generator/contrib/llvm/tools/clang/include/clang/Frontend/CodeGenOptions.h Fri May 9 07:07:25 2014 (r265742)
+++ projects/random_number_generator/contrib/llvm/tools/clang/include/clang/Frontend/CodeGenOptions.h Fri May 9 07:07:38 2014 (r265743)
@@ -50,12 +50,20 @@ public:
};
enum DebugInfoKind {
- NoDebugInfo, // Don't generate debug info.
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-projects
mailing list