From 4b9d6b9519f542358221d95accdad0804427babf Mon Sep 17 00:00:00 2001 From: jilles Date: Fri, 6 Sep 2013 12:56:49 +0000 Subject: libc/stdio: Provide proper TAP output for fmemopen/open_[w]memstream. A *.t file should provide Test Anything Protocol output so that it can be run using the Perl "prove" tool. --- tools/regression/lib/libc/stdio/test-fmemopen.t | 7 ++++++- tools/regression/lib/libc/stdio/test-open_memstream.t | 7 ++++++- tools/regression/lib/libc/stdio/test-open_wmemstream.t | 7 ++++++- 3 files changed, 18 insertions(+), 3 deletions(-) (limited to 'tools') 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-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 -- cgit v1.1 From dfd17597dbfd8db62df39a4c1a2591a3a41d505d Mon Sep 17 00:00:00 2001 From: jilles Date: Fri, 6 Sep 2013 12:59:48 +0000 Subject: libc/stdio: Run mkostemp test using prove. --- tools/regression/lib/libc/stdio/test-mkostemp.t | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 tools/regression/lib/libc/stdio/test-mkostemp.t (limited to 'tools') 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 -- cgit v1.1 From 68907dc5984d1396b8cd4013146c968206aeb2ad Mon Sep 17 00:00:00 2001 From: jilles Date: Fri, 6 Sep 2013 13:47:16 +0000 Subject: libc/stdio: Allow fopen/freopen modes in any order (except initial r/w/a). Austin Group issue #411 requires 'e' to be accepted before and after 'x', and encourages accepting the characters in any order, except the initial 'r', 'w' or 'a'. Given that glibc accepts the characters after r/w/a in any order and that diagnosing this problem may be hard, change our libc to behave that way as well. --- tools/regression/lib/libc/stdio/test-fopen.c | 113 +++++++++++++++++++++++++++ tools/regression/lib/libc/stdio/test-fopen.t | 10 +++ 2 files changed, 123 insertions(+) create mode 100644 tools/regression/lib/libc/stdio/test-fopen.c create mode 100644 tools/regression/lib/libc/stdio/test-fopen.t (limited to 'tools') 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 +__FBSDID("$FreeBSD$"); + +#include +#include +#include + +/* + * 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 -- cgit v1.1 From 1df952388b48e11694d9be00cbdb7fed2ca1c0f3 Mon Sep 17 00:00:00 2001 From: theraven Date: Fri, 6 Sep 2013 20:08:03 +0000 Subject: On platforms where clang is the default compiler, don't build gcc or libstdc++. To enable them, set WITH_GCC and WITH_GNUCXX in src.conf. Make clang default to using libc++ on FreeBSD 10. Bumped __FreeBSD_version for the change. GCC is still enabled on PC98, because the PC98 bootloader requires GCC to build (or, at least, hard-codes the use of gcc into its build). Thanks to everyone who helped make the ports tree ready for this (and bapt for coordinating them all). Also to imp for reviewing this and working on the forward-porting of the changes in our gcc so that we're getting to a much better place with regard to external toolchains. Sorry to all of the people who helped who I forgot to mention by name. Reviewed by: bapt, imp, dim, ... --- tools/build/options/WITHOUT_GNUCXX | 3 +++ tools/build/options/WITH_GNUCXX | 3 +++ 2 files changed, 6 insertions(+) create mode 100644 tools/build/options/WITHOUT_GNUCXX create mode 100644 tools/build/options/WITH_GNUCXX (limited to 'tools') 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_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. -- cgit v1.1 From 00e0402a54a176a819172cd81836420ae9946eeb Mon Sep 17 00:00:00 2001 From: theraven Date: Fri, 6 Sep 2013 20:46:07 +0000 Subject: Don't delete c++filt when doing a make delete-old if GCC is not built but C++ is. --- tools/build/mk/OptionalObsoleteFiles.inc | 2 ++ 1 file changed, 2 insertions(+) (limited to 'tools') diff --git a/tools/build/mk/OptionalObsoleteFiles.inc b/tools/build/mk/OptionalObsoleteFiles.inc index 633ead0..097294a 100644 --- a/tools/build/mk/OptionalObsoleteFiles.inc +++ b/tools/build/mk/OptionalObsoleteFiles.inc @@ -1546,7 +1546,9 @@ 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 -- cgit v1.1 From bec4e7f703d1b7f5796de123f179951f76946568 Mon Sep 17 00:00:00 2001 From: zeising Date: Fri, 6 Sep 2013 20:49:48 +0000 Subject: Add WITH_GCC alongside WITHOUT_GCC. Remove the comment from WITHOUT_GCC about this not working without an alternate toolchain, we have clang now. --- tools/build/options/WITHOUT_GCC | 6 +----- tools/build/options/WITH_GCC | 2 ++ 2 files changed, 3 insertions(+), 5 deletions(-) create mode 100644 tools/build/options/WITH_GCC (limited to 'tools') 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/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++. -- cgit v1.1 From a9ab0c7cf9c6f1aefec9e90c14d03d5af2582602 Mon Sep 17 00:00:00 2001 From: glebius Date: Sat, 7 Sep 2013 09:45:43 +0000 Subject: Add more leftovers from gcc. --- tools/build/mk/OptionalObsoleteFiles.inc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'tools') diff --git a/tools/build/mk/OptionalObsoleteFiles.inc b/tools/build/mk/OptionalObsoleteFiles.inc index 097294a..5fcbdc6 100644 --- a/tools/build/mk/OptionalObsoleteFiles.inc +++ b/tools/build/mk/OptionalObsoleteFiles.inc @@ -1554,13 +1554,17 @@ 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" -- cgit v1.1 From 07738e0ff2367465532d7f649ee73f2262468f6e Mon Sep 17 00:00:00 2001 From: antoine Date: Sat, 7 Sep 2013 11:02:38 +0000 Subject: Do not try to remove directories that are part of BSD.include.dist --- tools/build/mk/OptionalObsoleteFiles.inc | 2 -- 1 file changed, 2 deletions(-) (limited to 'tools') diff --git a/tools/build/mk/OptionalObsoleteFiles.inc b/tools/build/mk/OptionalObsoleteFiles.inc index 5fcbdc6..1c3afe1 100644 --- a/tools/build/mk/OptionalObsoleteFiles.inc +++ b/tools/build/mk/OptionalObsoleteFiles.inc @@ -1574,8 +1574,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 -- cgit v1.1 From 3468524333c136e1f0abb9b852e8979834b891a5 Mon Sep 17 00:00:00 2001 From: antoine Date: Sat, 7 Sep 2013 19:04:28 +0000 Subject: Adjust optional obsolete files with new MK_GNUCXX --- tools/build/mk/OptionalObsoleteFiles.inc | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) (limited to 'tools') diff --git a/tools/build/mk/OptionalObsoleteFiles.inc b/tools/build/mk/OptionalObsoleteFiles.inc index 1c3afe1..52ef18f 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 -- cgit v1.1 From 62efb2b6ebe4e6824104ab4b17c9c0c3b62f00c5 Mon Sep 17 00:00:00 2001 From: emaste Date: Tue, 10 Sep 2013 13:51:19 +0000 Subject: Add a sendfile regression test for transmit length > file size. This test identified the issue fixed in FreeBSD-SA-13:11.sendfile. Sponsored by: The FreeBSD Foundation Approved by: re (glebius) --- tools/regression/sockets/sendfile/sendfile.c | 96 ++++++++++++++++++---------- 1 file changed, 64 insertions(+), 32 deletions(-) (limited to 'tools') 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); } -- cgit v1.1 From 4a76b49949900686f74510b7e0b3fec1fe456016 Mon Sep 17 00:00:00 2001 From: des Date: Tue, 10 Sep 2013 18:34:38 +0000 Subject: Make this more deterministic by sorting the libraries before processing them and ensuring that we always use the samme collation rules. Approved by: re (gjb) --- tools/make_libdeps.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'tools') 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}) -- cgit v1.1 From c3bd2283835242173e76312c8ec97a6dfefe43b1 Mon Sep 17 00:00:00 2001 From: des Date: Tue, 10 Sep 2013 18:40:43 +0000 Subject: Clean up the Kerberos build by turning libheimipcc and libheimipcs into private shared libraries, instead of hacked-together archives of PIC objects. This makes it possible to build a static libkrb5 that works. Reviewed by: stas Approved by: re (gjb) --- tools/build/mk/OptionalObsoleteFiles.inc | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'tools') diff --git a/tools/build/mk/OptionalObsoleteFiles.inc b/tools/build/mk/OptionalObsoleteFiles.inc index 52ef18f..036aa5f 100644 --- a/tools/build/mk/OptionalObsoleteFiles.inc +++ b/tools/build/mk/OptionalObsoleteFiles.inc @@ -2548,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 @@ -2617,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 -- cgit v1.1