summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorsjg <sjg@FreeBSD.org>2013-09-11 18:16:18 +0000
committersjg <sjg@FreeBSD.org>2013-09-11 18:16:18 +0000
commitff87b5d1477fd150ff715e5c3c2a205deb66804f (patch)
treea3620d99f472deaa7f019c4324bb8f4e38ac4272 /tools
parent62bb1062226d3ce6a2350808256a25508978352d (diff)
parent4d92de31b23f33109e1fa7f0b1499ed6c3501ee1 (diff)
downloadFreeBSD-src-ff87b5d1477fd150ff715e5c3c2a205deb66804f.zip
FreeBSD-src-ff87b5d1477fd150ff715e5c3c2a205deb66804f.tar.gz
Merge head
Diffstat (limited to 'tools')
-rw-r--r--tools/build/mk/OptionalObsoleteFiles.inc48
-rw-r--r--tools/build/options/WITHOUT_GCC6
-rw-r--r--tools/build/options/WITHOUT_GNUCXX3
-rw-r--r--tools/build/options/WITH_GCC2
-rw-r--r--tools/build/options/WITH_GNUCXX3
-rw-r--r--tools/make_libdeps.sh3
-rw-r--r--tools/regression/lib/libc/stdio/test-fmemopen.t7
-rw-r--r--tools/regression/lib/libc/stdio/test-fopen.c113
-rw-r--r--tools/regression/lib/libc/stdio/test-fopen.t10
-rw-r--r--tools/regression/lib/libc/stdio/test-mkostemp.t10
-rw-r--r--tools/regression/lib/libc/stdio/test-open_memstream.t7
-rw-r--r--tools/regression/lib/libc/stdio/test-open_wmemstream.t7
-rw-r--r--tools/regression/sockets/sendfile/sendfile.c96
13 files changed, 268 insertions, 47 deletions
diff --git a/tools/build/mk/OptionalObsoleteFiles.inc b/tools/build/mk/OptionalObsoleteFiles.inc
index 633ead0..036aa5f 100644
--- a/tools/build/mk/OptionalObsoleteFiles.inc
+++ b/tools/build/mk/OptionalObsoleteFiles.inc
@@ -900,6 +900,11 @@ OLD_FILES+=usr/bin/CC
OLD_FILES+=usr/bin/c++
OLD_FILES+=usr/bin/c++filt
OLD_FILES+=usr/bin/g++
+OLD_FILES+=usr/libexec/cc1plus
+.endif
+
+.if ${MK_GNUCXX} == no
+OLD_FILES+=usr/bin/g++
OLD_FILES+=usr/include/c++/4.2/algorithm
OLD_FILES+=usr/include/c++/4.2/backward/algo.h
OLD_FILES+=usr/include/c++/4.2/backward/algobase.h
@@ -1455,12 +1460,23 @@ OLD_FILES+=usr/include/c++/4.2/utility
OLD_FILES+=usr/include/c++/4.2/valarray
OLD_FILES+=usr/include/c++/4.2/vector
OLD_FILES+=usr/lib/libstdc++.a
-# Keep libs to allow bootstrapping g++(1) with gperf(1)
-#OLD_LIBS+=usr/lib/libstdc++.so
-#OLD_LIBS+=usr/lib/libstdc++.so.6
+OLD_FILES+=usr/lib/libstdc++.so
+OLD_LIBS+=usr/lib/libstdc++.so.6
OLD_FILES+=usr/lib/libstdc++_p.a
OLD_FILES+=usr/lib/libsupc++.a
+OLD_FILES+=usr/lib/libsupc++.so
+OLD_LIBS+=usr/lib/libsupc++.so.1
OLD_FILES+=usr/lib/libsupc++_p.a
+.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64"
+OLD_FILES+=usr/lib32/libstdc++.a
+OLD_FILES+=usr/lib32/libstdc++.so
+OLD_LIBS+=usr/lib32/libstdc++.so.6
+OLD_FILES+=usr/lib32/libstdc++_p.a
+OLD_FILES+=usr/lib32/libsupc++.a
+OLD_FILES+=usr/lib32/libsupc++.so
+OLD_LIBS+=usr/lib32/libsupc++.so.1
+OLD_FILES+=usr/lib32/libsupc++_p.a
+.endif
OLD_FILES+=usr/libexec/cc1plus
.endif
@@ -1546,19 +1562,25 @@ OLD_FILES+=usr/share/man/man8/unstr.8.gz
.endif
.if ${MK_GCC} == no
+.if ${MK_CXX} == no
OLD_FILES+=usr/bin/c++filt
+.endif
OLD_FILES+=usr/bin/g++
OLD_FILES+=usr/bin/gcc
OLD_FILES+=usr/bin/gcov
OLD_FILES+=usr/bin/gcpp
.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "i386"
+OLD_FILES+=usr/include/gcc/4.2/__wmmintrin_aes.h
+OLD_FILES+=usr/include/gcc/4.2/__wmmintrin_pclmul.h
+OLD_FILES+=usr/include/gcc/4.2/ammintrin.h
OLD_FILES+=usr/include/gcc/4.2/emmintrin.h
+OLD_FILES+=usr/include/gcc/4.2/mm3dnow.h
OLD_FILES+=usr/include/gcc/4.2/mm_malloc.h
OLD_FILES+=usr/include/gcc/4.2/mmintrin.h
OLD_FILES+=usr/include/gcc/4.2/pmmintrin.h
OLD_FILES+=usr/include/gcc/4.2/tmmintrin.h
+OLD_FILES+=usr/include/gcc/4.2/wmmintrin.h
OLD_FILES+=usr/include/gcc/4.2/xmmintrin.h
-OLD_FILES+=usr/include/gcc/4.2/mm3dnow.h
.elif ${TARGET_ARCH} == "ia64"
OLD_FILES+=usr/include/gcc/4.2/ia64intrin.h
.elif ${TARGET_ARCH} == "arm"
@@ -1568,8 +1590,6 @@ OLD_FILES+=usr/include/gcc/4.2/altivec.h
OLD_FILES+=usr/include/gcc/4.2/ppc-asm.h
OLD_FILES+=usr/include/gcc/4.2/spe.h
.endif
-OLD_DIRS+=usr/include/gcc/4.2
-OLD_DIRS+=usr/include/gcc
OLD_FILES+=usr/libexec/cc1
OLD_FILES+=usr/libexec/cc1plus
OLD_FILES+=usr/share/info/cpp.info.gz
@@ -2528,6 +2548,14 @@ OLD_FILES+=usr/lib/pam_krb5.so
OLD_LIBS+=usr/lib/pam_krb5.so.5
OLD_FILES+=usr/lib/pam_ksu.so
OLD_LIBS+=usr/lib/pam_ksu.so.5
+OLD_FILES+=usr/lib/private/libheimipcc.a
+OLD_FILES+=usr/lib/private/libheimipcc.so
+OLD_LIBS+=usr/lib/private/libheimipcc.so.11
+OLD_FILES+=usr/lib/private/libheimipcc_p.a
+OLD_FILES+=usr/lib/private/libheimipcs.a
+OLD_FILES+=usr/lib/private/libheimipcs.so
+OLD_LIBS+=usr/lib/private/libheimipcs.so.11
+OLD_FILES+=usr/lib/private/libheimipcs_p.a
.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64"
OLD_FILES+=usr/lib32/libasn1.a
OLD_FILES+=usr/lib32/libasn1.so
@@ -2597,6 +2625,14 @@ OLD_FILES+=usr/lib32/pam_krb5.so
OLD_LIBS+=usr/lib32/pam_krb5.so.5
OLD_FILES+=usr/lib32/pam_ksu.so
OLD_LIBS+=usr/lib32/pam_ksu.so.5
+OLD_FILES+=usr/lib32/private/libheimipcc.a
+OLD_FILES+=usr/lib32/private/libheimipcc.so
+OLD_LIBS+=usr/lib32/private/libheimipcc.so.11
+OLD_FILES+=usr/lib32/private/libheimipcc_p.a
+OLD_FILES+=usr/lib32/private/libheimipcs.a
+OLD_FILES+=usr/lib32/private/libheimipcs.so
+OLD_LIBS+=usr/lib32/private/libheimipcs.so.11
+OLD_FILES+=usr/lib32/private/libheimipcs_p.a
.endif
OLD_FILES+=usr/libexec/digest-service
OLD_FILES+=usr/libexec/hprop
diff --git a/tools/build/options/WITHOUT_GCC b/tools/build/options/WITHOUT_GCC
index 5717f64..7bb21f8 100644
--- a/tools/build/options/WITHOUT_GCC
+++ b/tools/build/options/WITHOUT_GCC
@@ -1,6 +1,2 @@
.\" $FreeBSD$
-Set to not install gcc and g++.
-.Bf -symbolic
-The option does not generally work for build targets, unless some alternative
-toolchain is enabled.
-.Ef
+Set to not build and install gcc and g++.
diff --git a/tools/build/options/WITHOUT_GNUCXX b/tools/build/options/WITHOUT_GNUCXX
new file mode 100644
index 0000000..ce10636
--- /dev/null
+++ b/tools/build/options/WITHOUT_GNUCXX
@@ -0,0 +1,3 @@
+.\" $FreeBSD$
+Do not build the GNU C++ stack (g++, libstdc++).
+This is the default on platforms where clang is the system compiler.
diff --git a/tools/build/options/WITH_GCC b/tools/build/options/WITH_GCC
new file mode 100644
index 0000000..c121fe5
--- /dev/null
+++ b/tools/build/options/WITH_GCC
@@ -0,0 +1,2 @@
+.\" $FreeBSD$
+Set to build and install gcc and g++.
diff --git a/tools/build/options/WITH_GNUCXX b/tools/build/options/WITH_GNUCXX
new file mode 100644
index 0000000..c49e7cd
--- /dev/null
+++ b/tools/build/options/WITH_GNUCXX
@@ -0,0 +1,3 @@
+.\" $FreeBSD$
+Build the GNU C++ stack (g++, libstdc++).
+This is the default on platforms where gcc is the system compiler.
diff --git a/tools/make_libdeps.sh b/tools/make_libdeps.sh
index 3b59488..2f5b32b 100644
--- a/tools/make_libdeps.sh
+++ b/tools/make_libdeps.sh
@@ -28,6 +28,7 @@
export PATH=/bin:/usr/bin
+LC_ALL=C # make sort deterministic
FS=': ' # internal field separator
LIBDEPENDS=./_libdeps # intermediate output file
USRSRC=${1:-/usr/src} # source root
@@ -64,7 +65,7 @@ genlibdepends()
{
(
cd ${USRSRC}
- find ${LIBS} -mindepth 1 -name Makefile |
+ find -s ${LIBS} -mindepth 1 -name Makefile |
xargs grep -l 'bsd\.lib\.mk' |
while read makefile; do
libdir=$(dirname ${makefile})
diff --git a/tools/regression/lib/libc/stdio/test-fmemopen.t b/tools/regression/lib/libc/stdio/test-fmemopen.t
index 8bdfd03..bd5157b 100644
--- a/tools/regression/lib/libc/stdio/test-fmemopen.t
+++ b/tools/regression/lib/libc/stdio/test-fmemopen.t
@@ -7,4 +7,9 @@ executable=`basename $0 .t`
make $executable 2>&1 > /dev/null
-exec ./$executable
+echo 1..1
+if ./$executable; then
+ echo ok 1 - $executable successful
+else
+ echo not ok 1 - $executable failed
+fi
diff --git a/tools/regression/lib/libc/stdio/test-fopen.c b/tools/regression/lib/libc/stdio/test-fopen.c
new file mode 100644
index 0000000..8605717
--- /dev/null
+++ b/tools/regression/lib/libc/stdio/test-fopen.c
@@ -0,0 +1,113 @@
+/*-
+ * Copyright (c) 2013 Jilles Tjoelker
+ * 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.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <fcntl.h>
+#include <stdio.h>
+#include <string.h>
+
+/*
+ * O_ACCMODE is currently defined incorrectly. This is what it should be.
+ * Various code depends on the incorrect value.
+ */
+#define CORRECT_O_ACCMODE (O_ACCMODE | O_EXEC)
+
+static int testnum = 1;
+
+static void
+runtest(const char *fname, const char *mode)
+{
+ FILE *fp;
+ int fd, flags, wantedflags;
+
+ fp = fopen(fname, mode);
+ if (fp == NULL) {
+ printf("not ok %d - fopen(\"%s\", \"%s\") failed\n",
+ testnum++, fname, mode);
+ printf("not ok %d - FD_CLOEXEC # SKIP\n",
+ testnum++);
+ return;
+ }
+ fd = fileno(fp);
+ if (fd < 0)
+ printf("not ok %d - fileno() failed\n", testnum++);
+ else
+ printf("ok %d - fopen(\"%s\", \"%s\") and fileno() succeeded\n",
+ testnum++, fname, mode);
+ if (fcntl(fd, F_GETFD) == (strchr(mode, 'e') != NULL ? FD_CLOEXEC : 0))
+ printf("ok %d - FD_CLOEXEC flag correct\n", testnum++);
+ else
+ printf("not ok %d - FD_CLOEXEC flag incorrect\n", testnum++);
+ flags = fcntl(fd, F_GETFL);
+ if (strchr(mode, '+'))
+ wantedflags = O_RDWR | (*mode == 'a' ? O_APPEND : 0);
+ else if (*mode == 'r')
+ wantedflags = O_RDONLY;
+ else if (*mode == 'w')
+ wantedflags = O_WRONLY;
+ else if (*mode == 'a')
+ wantedflags = O_WRONLY | O_APPEND;
+ else
+ wantedflags = -1;
+ if (wantedflags == -1)
+ printf("not ok %d - unrecognized mode\n", testnum++);
+ else if ((flags & (CORRECT_O_ACCMODE | O_APPEND)) == wantedflags)
+ printf("ok %d - correct access mode\n", testnum++);
+ else
+ printf("not ok %d - incorrect access mode\n", testnum++);
+ fclose(fp);
+}
+
+/*
+ * Test program for fopen().
+ */
+int
+main(int argc, char *argv[])
+{
+ printf("1..45\n");
+ runtest("/dev/null", "r");
+ runtest("/dev/null", "r+");
+ runtest("/dev/null", "w");
+ runtest("/dev/null", "w+");
+ runtest("/dev/null", "a");
+ runtest("/dev/null", "a+");
+ runtest("/dev/null", "re");
+ runtest("/dev/null", "r+e");
+ runtest("/dev/null", "we");
+ runtest("/dev/null", "w+e");
+ runtest("/dev/null", "ae");
+ runtest("/dev/null", "a+e");
+ runtest("/dev/null", "re+");
+ runtest("/dev/null", "we+");
+ runtest("/dev/null", "ae+");
+
+ return 0;
+}
+
+/* vim:ts=8:cin:sw=8
+ * */
diff --git a/tools/regression/lib/libc/stdio/test-fopen.t b/tools/regression/lib/libc/stdio/test-fopen.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/lib/libc/stdio/test-fopen.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/lib/libc/stdio/test-mkostemp.t b/tools/regression/lib/libc/stdio/test-mkostemp.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/lib/libc/stdio/test-mkostemp.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/lib/libc/stdio/test-open_memstream.t b/tools/regression/lib/libc/stdio/test-open_memstream.t
index 8bdfd03..bd5157b 100644
--- a/tools/regression/lib/libc/stdio/test-open_memstream.t
+++ b/tools/regression/lib/libc/stdio/test-open_memstream.t
@@ -7,4 +7,9 @@ executable=`basename $0 .t`
make $executable 2>&1 > /dev/null
-exec ./$executable
+echo 1..1
+if ./$executable; then
+ echo ok 1 - $executable successful
+else
+ echo not ok 1 - $executable failed
+fi
diff --git a/tools/regression/lib/libc/stdio/test-open_wmemstream.t b/tools/regression/lib/libc/stdio/test-open_wmemstream.t
index 8bdfd03..bd5157b 100644
--- a/tools/regression/lib/libc/stdio/test-open_wmemstream.t
+++ b/tools/regression/lib/libc/stdio/test-open_wmemstream.t
@@ -7,4 +7,9 @@ executable=`basename $0 .t`
make $executable 2>&1 > /dev/null
-exec ./$executable
+echo 1..1
+if ./$executable; then
+ echo ok 1 - $executable successful
+else
+ echo not ok 1 - $executable failed
+fi
diff --git a/tools/regression/sockets/sendfile/sendfile.c b/tools/regression/sockets/sendfile/sendfile.c
index bd8c0c5..73033d7 100644
--- a/tools/regression/sockets/sendfile/sendfile.c
+++ b/tools/regression/sockets/sendfile/sendfile.c
@@ -74,12 +74,13 @@ struct sendfile_test {
uint32_t hdr_length;
uint32_t offset;
uint32_t length;
+ uint32_t file_size;
};
-int file_fd;
-char path[PATH_MAX];
-int listen_socket;
-int accept_socket;
+static int file_fd;
+static char path[PATH_MAX];
+static int listen_socket;
+static int accept_socket;
static int test_th(struct test_header *th, uint32_t *header_length,
uint32_t *offset, uint32_t *length);
@@ -92,6 +93,7 @@ static int new_test_socket(int *connect_socket);
static void init_th(struct test_header *th, uint32_t header_length,
uint32_t offset, uint32_t length);
static int send_test(int connect_socket, struct sendfile_test);
+static int write_test_file(size_t file_size);
static void run_parent(void);
static void cleanup(void);
@@ -278,15 +280,12 @@ send_test(int connect_socket, struct sendfile_test test)
if (len != 0)
FAIL_ERR("lseek")
- if (test.length == 0) {
- struct stat st;
- if (fstat(file_fd, &st) < 0)
- FAIL_ERR("fstat")
- length = st.st_size - test.offset;
- }
- else {
+ struct stat st;
+ if (fstat(file_fd, &st) < 0)
+ FAIL_ERR("fstat")
+ length = st.st_size - test.offset;
+ if (test.length > 0 && test.length < (uint32_t)length)
length = test.length;
- }
init_th(&th, test.hdr_length, test.offset, length);
@@ -336,17 +335,55 @@ send_test(int connect_socket, struct sendfile_test test)
return (0);
}
+static int
+write_test_file(size_t file_size)
+{
+ char *page_buffer;
+ ssize_t len;
+ static size_t current_file_size = 0;
+
+ if (file_size == current_file_size)
+ return (0);
+ else if (file_size < current_file_size) {
+ if (ftruncate(file_fd, file_size) != 0)
+ FAIL_ERR("ftruncate");
+ current_file_size = file_size;
+ return (0);
+ }
+
+ page_buffer = malloc(file_size);
+ if (page_buffer == NULL)
+ FAIL_ERR("malloc")
+ bzero(page_buffer, file_size);
+
+ len = write(file_fd, page_buffer, file_size);
+ if (len < 0)
+ FAIL_ERR("write")
+
+ len = lseek(file_fd, 0, SEEK_SET);
+ if (len < 0)
+ FAIL_ERR("lseek")
+ if (len != 0)
+ FAIL("len != 0")
+
+ free(page_buffer);
+ current_file_size = file_size;
+ return (0);
+}
+
static void
run_parent(void)
{
int connect_socket;
int status;
int test_num;
+ int test_count;
int pid;
+ size_t desired_file_size = 0;
const int pagesize = getpagesize();
- struct sendfile_test tests[10] = {
+ struct sendfile_test tests[] = {
{ .hdr_length = 0, .offset = 0, .length = 1 },
{ .hdr_length = 0, .offset = 0, .length = pagesize },
{ .hdr_length = 0, .offset = 1, .length = 1 },
@@ -356,12 +393,23 @@ run_parent(void)
{ .hdr_length = 0, .offset = 0, .length = 0 },
{ .hdr_length = 0, .offset = pagesize, .length = 0 },
{ .hdr_length = 0, .offset = 2*pagesize, .length = 0 },
- { .hdr_length = 0, .offset = TEST_PAGES*pagesize, .length = 0 }
+ { .hdr_length = 0, .offset = TEST_PAGES*pagesize, .length = 0 },
+ { .hdr_length = 0, .offset = 0, .length = pagesize,
+ .file_size = 1 }
};
- printf("1..10\n");
+ test_count = sizeof(tests) / sizeof(tests[0]);
+ printf("1..%d\n", test_count);
- for (test_num = 1; test_num <= 10; test_num++) {
+ for (test_num = 1; test_num <= test_count; test_num++) {
+
+ desired_file_size = tests[test_num - 1].file_size;
+ if (desired_file_size == 0)
+ desired_file_size = TEST_PAGES * pagesize;
+ if (write_test_file(desired_file_size) != 0) {
+ printf("not ok %d\n", test_num);
+ continue;
+ }
pid = fork();
if (pid == -1) {
@@ -411,17 +459,11 @@ cleanup(void)
int
main(int argc, char *argv[])
{
- char *page_buffer;
int pagesize;
- ssize_t len;
*path = '\0';
pagesize = getpagesize();
- page_buffer = malloc(TEST_PAGES * pagesize);
- if (page_buffer == NULL)
- FAIL_ERR("malloc")
- bzero(page_buffer, TEST_PAGES * pagesize);
if (argc == 1) {
snprintf(path, PATH_MAX, "/tmp/sendfile.XXXXXXXXXXXX");
@@ -439,16 +481,6 @@ main(int argc, char *argv[])
atexit(cleanup);
- len = write(file_fd, page_buffer, TEST_PAGES * pagesize);
- if (len < 0)
- FAIL_ERR("write")
-
- len = lseek(file_fd, 0, SEEK_SET);
- if (len < 0)
- FAIL_ERR("lseek")
- if (len != 0)
- FAIL("len != 0")
-
run_parent();
return (0);
}
OpenPOWER on IntegriCloud