diff options
Diffstat (limited to 'lang/ifc/files')
-rw-r--r-- | lang/ifc/files/assert_fail.c | 40 | ||||
-rw-r--r-- | lang/ifc/files/cpio-exclude | 70 | ||||
-rw-r--r-- | lang/ifc/files/cxa_atexit.c | 52 | ||||
-rw-r--r-- | lang/ifc/files/cxa_finalize.c | 38 | ||||
-rw-r--r-- | lang/ifc/files/errno_location.c | 37 | ||||
-rw-r--r-- | lang/ifc/files/ld.c | 452 | ||||
-rw-r--r-- | lang/ifc/files/linux_file.c | 163 | ||||
-rw-r--r-- | lang/ifc/files/mcount.S | 34 | ||||
-rw-r--r-- | lang/ifc/files/patch-aa | 14 | ||||
-rw-r--r-- | lang/ifc/files/patch-ifc | 42 | ||||
-rw-r--r-- | lang/ifc/files/stderr.c | 34 | ||||
-rw-r--r-- | lang/ifc/files/sysconf.c | 145 |
12 files changed, 1107 insertions, 14 deletions
diff --git a/lang/ifc/files/assert_fail.c b/lang/ifc/files/assert_fail.c new file mode 100644 index 000000000000..eb264ba71681 --- /dev/null +++ b/lang/ifc/files/assert_fail.c @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2002 Marius Strobl + * 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: /tmp/pcvs/ports/lang/ifc/files/assert_fail.c,v 1.1 2002-11-18 09:27:32 maho Exp $ + */ + +#include <err.h> +#include <stdlib.h> + +void +__assert_fail(const char *failedexpr, const char *file, unsigned int line, + const char *fn) +{ + warnx("assertion \"%s\" failed: file \"%s\", line %u%s%s%s", failedexpr, + file, line, fn ? ", function: \"" : "", fn ? fn : "", + fn ? "\"" : ""); + abort(); +} diff --git a/lang/ifc/files/cpio-exclude b/lang/ifc/files/cpio-exclude new file mode 100644 index 000000000000..9ec2e94a79cb --- /dev/null +++ b/lang/ifc/files/cpio-exclude @@ -0,0 +1,70 @@ +*/opt/intel/compiler60/ia32/bin/uninstall +*/opt/intel/compiler60/ia32/include/algorithm +*/opt/intel/compiler60/ia32/include/bitset +*/opt/intel/compiler60/ia32/include/complex +*/opt/intel/compiler60/ia32/include/deque +*/opt/intel/compiler60/ia32/include/fstream +*/opt/intel/compiler60/ia32/include/fstream.h +*/opt/intel/compiler60/ia32/include/functional +*/opt/intel/compiler60/ia32/include/hash_map +*/opt/intel/compiler60/ia32/include/hash_set +*/opt/intel/compiler60/ia32/include/iomanip +*/opt/intel/compiler60/ia32/include/iomanip.h +*/opt/intel/compiler60/ia32/include/ios +*/opt/intel/compiler60/ia32/include/iosfwd +*/opt/intel/compiler60/ia32/include/iostream +*/opt/intel/compiler60/ia32/include/iostream.h +*/opt/intel/compiler60/ia32/include/istream +*/opt/intel/compiler60/ia32/include/iterator +*/opt/intel/compiler60/ia32/include/limits +*/opt/intel/compiler60/ia32/include/list +*/opt/intel/compiler60/ia32/include/locale +*/opt/intel/compiler60/ia32/include/map +*/opt/intel/compiler60/ia32/include/memory +*/opt/intel/compiler60/ia32/include/numeric +*/opt/intel/compiler60/ia32/include/ostream +*/opt/intel/compiler60/ia32/include/queue +*/opt/intel/compiler60/ia32/include/set +*/opt/intel/compiler60/ia32/include/slist +*/opt/intel/compiler60/ia32/include/sstream +*/opt/intel/compiler60/ia32/include/stack +*/opt/intel/compiler60/ia32/include/stdexcept +*/opt/intel/compiler60/ia32/include/stdiostream.h +*/opt/intel/compiler60/ia32/include/stl.h +*/opt/intel/compiler60/ia32/include/stream.h +*/opt/intel/compiler60/ia32/include/streambuf +*/opt/intel/compiler60/ia32/include/string +*/opt/intel/compiler60/ia32/include/strstream +*/opt/intel/compiler60/ia32/include/strstream.h +*/opt/intel/compiler60/ia32/include/utility +*/opt/intel/compiler60/ia32/include/valarray +*/opt/intel/compiler60/ia32/include/vector +*/opt/intel/compiler60/ia32/include/xcomplex +*/opt/intel/compiler60/ia32/include/xdebug +*/opt/intel/compiler60/ia32/include/xhash +*/opt/intel/compiler60/ia32/include/xiosbase +*/opt/intel/compiler60/ia32/include/xlocale +*/opt/intel/compiler60/ia32/include/xlocinfo +*/opt/intel/compiler60/ia32/include/xlocinfo.h +*/opt/intel/compiler60/ia32/include/xlocmes +*/opt/intel/compiler60/ia32/include/xlocmon +*/opt/intel/compiler60/ia32/include/xlocnum +*/opt/intel/compiler60/ia32/include/xloctime +*/opt/intel/compiler60/ia32/include/xmemory +*/opt/intel/compiler60/ia32/include/xstring +*/opt/intel/compiler60/ia32/include/xtree +*/opt/intel/compiler60/ia32/include/xutility +*/opt/intel/compiler60/ia32/include/ymath.h +*/opt/intel/compiler60/ia32/lib/libcprts.so +*/opt/intel/compiler60/ia32/lib/libcprts.so.1 +*/opt/intel/compiler60/ia32/lib/libguide.a +*/opt/intel/compiler60/ia32/lib/libguide.so +*/opt/intel/compiler60/ia32/lib/libunwind.so +*/opt/intel/compiler60/ia32/lib/libunwind.so.1 +*/opt/intel/compiler60/ia32/lib/libimf.so +*/opt/intel/compiler60/ia32/lib/libintrins.so +*/opt/intel/compiler60/ia32/lib/libCEPCF90.so +*/opt/intel/compiler60/ia32/lib/libF90.so +*/opt/intel/compiler60/ia32/lib/libIEPCF90.so +*/opt/intel/compiler60/ia32/lib/libPEPCF90.so +*/opt/intel/compiler60/ia32/lib/libPOSF90.so diff --git a/lang/ifc/files/cxa_atexit.c b/lang/ifc/files/cxa_atexit.c new file mode 100644 index 000000000000..4154334a2c98 --- /dev/null +++ b/lang/ifc/files/cxa_atexit.c @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2002 Marius Strobl + * 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: /tmp/pcvs/ports/lang/ifc/files/cxa_atexit.c,v 1.1 2002-11-18 09:27:32 maho Exp $ + */ + +#include <stdlib.h> + +/* + * The __cxa_atexit() function and friends are needed for full (IA64) C++ ABI + * compatibility but FreeBSD doesn't have implemented them, yet. In addition + * to the classic atexit() it is not only used to register functions to be + * called at program exit but also to call them (C++ destructors in that case) + * when a shared object is unloaded. For the later to work the dynamic linker + * assigns a unique dynamic shared object handle to every shared object while + * a handle of NULL represents a main program. When __cxa_finalize() is called + * with a specific (non-NULL) handle as an argument all functions registered + * via __cxa_atexit() and having the same handle are called. + * The best we can do here to emulate that behaviour until FreeBSD supports + * this is to register the functions via atexit(). While this certainly is a + * bad hack it seems to work, even the current dynamic linker is assigning + * the handles. I didn't see a function getting registered with an argument + * so far. + */ +int +__cxa_atexit(void (*fn)(), void *arg, void *handle) +{ + + return (handle ? atexit(fn) : 0); +} diff --git a/lang/ifc/files/cxa_finalize.c b/lang/ifc/files/cxa_finalize.c new file mode 100644 index 000000000000..ea2d11b18de9 --- /dev/null +++ b/lang/ifc/files/cxa_finalize.c @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2002 Marius Strobl + * 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: /tmp/pcvs/ports/lang/ifc/files/Attic/cxa_finalize.c,v 1.1 2002-11-18 09:27:32 maho Exp $ + */ + +void +__cxa_finalize(void *handle) +{ + + /* + * As we dared to register the functions via atexit() this job will + * be done by exit(). + */ + return; +} diff --git a/lang/ifc/files/errno_location.c b/lang/ifc/files/errno_location.c new file mode 100644 index 000000000000..65017d3c1457 --- /dev/null +++ b/lang/ifc/files/errno_location.c @@ -0,0 +1,37 @@ +/*- + * Copyright (c) 2000 Andrew Gallatin and David O'Brien + * 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. + * + * copied over from: FreeBSD: ports/lang/compaq-cc/files/errno_location.c,v 1.1 2000/12/08 13:27:29 obrien Exp + * + * $FreeBSD: /tmp/pcvs/ports/lang/ifc/files/errno_location.c,v 1.1 2002-11-18 09:27:32 maho Exp $ + */ + +#include <errno.h> + +int * +__errno_location(void) +{ + return &errno; +} diff --git a/lang/ifc/files/ld.c b/lang/ifc/files/ld.c new file mode 100644 index 000000000000..71852e591b44 --- /dev/null +++ b/lang/ifc/files/ld.c @@ -0,0 +1,452 @@ +/* + * Copyright (c) 2002 Marius Strobl + * 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. + * + * Wrapper for Intel(R) C/C++ Compiler for Linux to allow linking of native + * FreeBSD binaries. + * Based on a shell-script written by Dan Nelson <dnelson@allantgroup.com> + * with some modifications by Alexander Leidinger <netchild@FreeBSD.org>. + * + * $FreeBSD: /tmp/pcvs/ports/lang/ifc/files/ld.c,v 1.1 2002-11-18 09:27:32 maho Exp $ + */ + +/* Uses code marked: */ + +/* OpenBSD: mailwrapper.c,v 1.6 1999/12/17 05:06:28 mickey Exp */ +/* NetBSD: mailwrapper.c,v 1.3 1999/05/29 18:18:15 christos Exp */ +/* FreeBSD: src/usr.sbin/mailwrapper/mailwrapper.c,v 1.8 2002/07/11 18:27:55 alfred Exp */ + +/* + * Copyright (c) 1998 + * Perry E. Metzger. 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. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgment: + * This product includes software developed for the NetBSD Project + * by Perry E. Metzger. + * 4. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 <err.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#if defined (__FreeBSD__) && __FreeBSD__ >= 2 + #include <osreldate.h> +#else + #error "Won't work here." +#endif + +#define PATH_LD "/usr/bin/ld" + +struct arglist { + size_t argc, maxc; + char **argv; +}; + +static void initarg(struct arglist *al); +static void addarg(struct arglist *al, const char *arg, int copy); +static void freearg(struct arglist *al, int copy); +int main(int argc, char *argv[], char *envp[]); + +static void +initarg(struct arglist *al) +{ + + al->argc = 0; + al->maxc = 10; + if ((al->argv = malloc(al->maxc * sizeof(char *))) == NULL) + err(1, NULL); +} + +static void +addarg(struct arglist *al, const char *arg, int copy) +{ + char **argv2; + + if (al->argc == al->maxc) { + al->maxc <<= 1; + + if ((argv2 = realloc(al->argv, + al->maxc * sizeof(char *))) == NULL) { + if (al->argv) + free(al->argv); + al->argv = NULL; + err(1, NULL); + } else { + al->argv = argv2; + } + } + if (copy) { + if ((al->argv[al->argc++] = strdup(arg)) == NULL) + err(1, NULL); + } else { + al->argv[al->argc++] = (char *)arg; + } +} + +static +void freearg(struct arglist *al, int copy) +{ + size_t i; + + if (copy) + for (i = 0; i < al->argc; i++) + free(al->argv[i]); + free(al->argv); +} + +int +main(int argc, char *argv[], char *envp[]) +{ + size_t i; + int bootstrap, cpp, dynamic, pic, gprof, stlinserted, threaded; + char *libc, *libc_r, *prefix; + struct arglist al; + + if (argc == 1) + errx(1, "no input files"); + + if ((prefix = getenv("PREFIX")) == NULL) + errx(1, "can't get PREFIX"); + + initarg(&al); + bootstrap = cpp = dynamic = pic = gprof = stlinserted = threaded = 0; + +#ifdef DEBUG + printf("input: "); +#endif + +#define ARGCMP(x) !strcmp(argv[i], (x)) +#define ARGCMPB(x, y) (strlen(x) + strlen(y) == strlen(argv[i]) && \ + !strncmp(argv[i], (x), strlen(x)) && \ + !strncmp(argv[i] + strlen(x), (y), strlen(y))) + + /* + * XXX This doesn't deal with whitespace but a) the output of the + * compiler should be fixed and b) the real linker is also picky + * about whitespace. + */ + for (i = 0; i < argc; i++) { +#ifdef DEBUG + printf("%s ", argv[i]); +#endif + + if (ARGCMP("-CPLUSPLUS")) { + cpp++; + continue; + } + + if (ARGCMP("-BOOTSTRAPSTLPORT")) { + bootstrap++; + continue; + } + + if (ARGCMP("-PIC")) { + pic++; + continue; + } + + /* + * If the compiler was called with -static we shouldn't see + * "--dynamic-linker" here. + * Note: According to ld(1) this is "--dynamic-linker" but + * ICC passes "-dynamic-linker" to it. + */ + if (ARGCMP("--dynamic-linker") || ARGCMP("-dynamic-linker")) { + dynamic++; + continue; + } + + /* + * Just link libstlport_icc* once when compiling the stlport + * tests. + */ + if (!strncmp(argv[i], "-lstlport_icc", + strlen("-lstlport_icc"))) { + stlinserted++; + continue; + } + + /* + * If IFC, do not use libstlport_icc. + */ + if (!strcmp(argv[i], "-lF90")) { + stlinserted++; + continue; + } + + /* + * ICC links the thread safe libircmt instead of libirc when + * told to generate threaded code by any of the compiler flags + * "-mt", "-openmp" or "-parallel". We use this as an indicator + * to link against libc_r. + */ + if (ARGCMP("-lircmt")) { + threaded++; + continue; + } + + /* + * Link against libc_p when "-pg" was given, "/usr/lib/gcrt1.o" + * indicates this. + */ + if (ARGCMP("/usr/lib/gcrt1.o")) { + gprof++; + continue; + } + } + + /* + * Use the appropriate libs for libc and libc_r when linking static + * and "-KPIC" or "-pg" where given. + */ + if (!dynamic && (pic || gprof)) { + /* + * Let libc_p win above libc_pic when both, "-KPIC" and "-pg", + * where given, GCC does the same. + */ + if (!gprof) { + libc = strdup("-lc_pic"); + libc_r = strdup("-lc_r"); + } else { + libc = strdup("-lc_p"); + libc_r = strdup("-lc_r_p"); + } + } else { + libc = strdup("-lc"); + libc_r = strdup("-lc_r"); + } + +#ifdef DEBUG + printf("\ncpp: %s bootstrap: %s dynamic: %s gprof: %s pic: %s " + "threaded: %s\n", cpp ? "YES" : "NO", bootstrap ? "YES" : "NO", + dynamic ? "YES" : "NO", gprof ? "YES" : "NO", pic ? "YES" : "NO", + threaded ? "YES" : "NO"); +#endif + + if (bootstrap && !cpp) + errx(1, "-BOOTSTRAPSTLPORT is only valid in combination with " + "-CPLUSPLUS"); + + for (i = 0; i < argc; i++) { + if (ARGCMP("-CPLUSPLUS") || ARGCMP("-BOOTSTRAPSTLPORT") || + ARGCMP("-PIC")) + continue; + + /* prepend "-melf_i386" to the commandline */ + if (i == 0) { + addarg(&al, argv[0], 1); +#if __FreeBSD_version < 500042 + addarg(&al, "-melf_i386", 1); +#else + addarg(&al, "-melf_i386_fbsd", 1); +#endif + continue; + } + + /* + * "-u ___pseudo_link" triggers linking of additional objects + * from libcxa which seem to bloat the binaries, i.e. they + * perfectly work without it. Intel Support promised to look + * up what this servers for... + */ + if (ARGCMP("-u") || ARGCMP("___pseudo_link")) + continue; + + /* Don't add obsolete flag "-Qy". */ + if (ARGCMP("-Qy")) + continue; + + /* Libunwind is only needed when compiling C++ source. */ + if (!cpp && ARGCMP("-lunwind")) + continue; + + /* + * Replace libcprts with libstlport_icc. The Dinkumware STL + * shipping with ICC has unresolvable glibc dependencies + * in both, the static and the dynamic, versions. + */ + if (ARGCMP("-lcprts")) { + if (cpp && !bootstrap && !stlinserted) { + addarg(&al, + dynamic ? "-Bdynamic" : "-Bstatic", 1); + addarg(&al, "-lstlport_icc", 1); + stlinserted++; + } + continue; + } + + /* + * Link against libc_r when compiling multi-threaded or C++ + * code (libcxa and libunwind depend on libc_r when compiling + * C++ source). + */ + if (ARGCMP("-lc")) { + if (al.argc > 0 && + strncmp(al.argv[al.argc - 1], "-B", strlen("-B"))) + addarg(&al, + dynamic ? "-Bdynamic" : "-Bstatic", 1); + if (cpp || threaded) { +#if __FreeBSD_version < 500016 + addarg(&al, libc_r, 0); +#else + addarg(&al, libc, 0); + addarg(&al, + dynamic ? "-Bdynamic" : "-Bstatic", 1); + addarg(&al, libc_r, 0); +#endif + } else { + addarg(&al, libc, 0); + } + continue; + } + + /* Switch Linux stuff to FreeBSD counterparts. */ + if (ARGCMP("/lib/ld-linux.so.2")) { + addarg(&al, "/usr/libexec/ld-elf.so.1", 1); + continue; + } + if (ARGCMP("-L/usr/lib")) { + char *temp; + + if ((temp = (char *) malloc(strlen("-L") + + strlen(prefix) + strlen("/lib") + 1)) == NULL) + err(1, NULL); + + addarg(&al, "-L/usr/libexec/elf", 1); + addarg(&al, "-L/usr/libexec", 1); + addarg(&al, "-L/usr/lib", 1); + snprintf(temp, strlen("-L") + strlen(prefix) + + strlen("/lib") + 1, "-L%s/lib", prefix); + addarg(&al, temp, 1); + free(temp); + continue; + } + + /* + * Link and map files for C++ exception handling. + */ + if (!cpp && + (ARGCMP("--version-script") || + ARGCMPB(prefix, "/intel/compiler60/ia32/lib/icrt.link") || + ARGCMPB(prefix, + "/intel/compiler60/ia32/lib/icrt.internal.map"))) + continue; + + /* + * Force libcxa and libunwind to static linkage, since the + * dynamic versions have glibc dependencies. + * Don't add superfluous -Bdynamic. + */ + if (ARGCMP("-Bdynamic") && i < argc - 1) { + if (!strcmp(argv[i + 1], "-lcxa") || + (cpp && !strcmp(argv[i + 1], "-lunwind"))) { + addarg(&al, "-Bstatic", 1); + continue; + } + + if (!strcmp(argv[i + 1], "-lcprts") || + !strcmp(argv[i + 1], "-lunwind")) + continue; + } + + /* Don't add superfluous -Bstatic. */ + if (ARGCMP("-Bstatic") && i < argc - 1 && + (!strcmp(argv[i + 1], "-lcprts") || + (!cpp && !strcmp(argv[i + 1], "-lunwind")))) + continue; + + /* + * Sanity check if every lib is prepended by a linkage option, + * add if missing. + */ + if (!strncmp(argv[i], "-l", strlen("-l")) && al.argc > 0 && + strncmp(al.argv[al.argc - 1], "-B", strlen("-B"))) { + if (!strcmp(argv[i], "-lcxa") || + !strcmp(argv[i], "-limf") || + !strcmp(argv[i], "-lirc") || + !strcmp(argv[i], "-lircmt") || + !strcmp(argv[i], "-lunwind")) + addarg(&al, "-Bstatic", 1); + else + addarg(&al, + dynamic ? "-Bdynamic" : "-Bstatic", 1); + + addarg(&al, argv[i], 1); + continue; + } + + /* default */ + addarg(&al, argv[i], 1); + } + +#undef ARGCMP +#undef ARGCMPB + + /* Still something to do ? */ + if (al.argc == 1) + errx(1, "no input files"); + +#ifdef DEBUG + printf("output: "); + + for (i = 0; i < al.argc; i++) + printf("%s ", al.argv[i]); + + printf("\n"); +#endif + + addarg(&al, NULL, 0); + + /* Launch the real linker */ + if (execve(PATH_LD, al.argv, envp) == -1) + err(1, "execing %s", PATH_LD); + + freearg(&al, 1); + + exit (1); +} diff --git a/lang/ifc/files/linux_file.c b/lang/ifc/files/linux_file.c new file mode 100644 index 000000000000..06d420718489 --- /dev/null +++ b/lang/ifc/files/linux_file.c @@ -0,0 +1,163 @@ +/* + * Copyright (c) 2002 The FreeBSD Project + * 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$ + */ + +short unsigned int *__ctype_b /* 0x0 */; + +#include <fcntl.h> +#include <stdarg.h> +#include <sys/types.h> +#include <sys/stat.h> + +typedef long long int __off64_t; + +int open64(const char *path, int flags, ...) { + int mode; + va_list args; + + va_start (args, flags); + return open(path, flags, va_arg(args, int)); + va_end (args); +} + + +int creat64(const char *path, unsigned int mode) { + return open(path, O_CREAT | O_TRUNC | O_WRONLY, mode); +} + + +__off64_t lseek64 (int __fd, __off64_t __offset, int __whence) { + return (__off64_t) lseek(__fd, (off_t) __offset, __whence); +} + + +int ftruncate64 (int __fd, __off64_t __length) { + return ftruncate(__fd, (off_t) __length); +} + + +/* This matches struct stat64 in glibc2.1, hence the absolutely + * insane amounts of padding around dev_t's. + */ +struct stat64 { + unsigned short st_dev; + unsigned char __pad0[10]; + +#define STAT64_HAS_BROKEN_ST_INO 1 + unsigned long __st_ino; + + unsigned int st_mode; + unsigned int st_nlink; + + unsigned long st_uid; + unsigned long st_gid; + + unsigned short st_rdev; + unsigned char __pad3[10]; + + long long st_size; + unsigned long st_blksize; + + unsigned long st_blocks; /* Number 512-byte blocks allocated. */ + unsigned long __pad4; /* future possible st_blocks high bits */ + + unsigned long st_atime_; + unsigned long __pad5; + + unsigned long st_mtime_; + unsigned long __pad6; + + unsigned long st_ctime_; + unsigned long __pad7; /* will be high 32 bits of ctime someday */ + + unsigned long long st_ino; +}; + + +struct stat64 stat2stat64(struct stat sb) { + static struct stat64 sb64; + + sb64.st_dev = sb.st_dev; + sb64.st_ino = sb.st_ino; + sb64.st_mode = sb.st_mode; + sb64.st_nlink = sb.st_nlink; + sb64.st_uid = sb.st_uid; + sb64.st_gid = sb.st_gid; + sb64.st_rdev = sb.st_rdev; + sb64.st_size = sb.st_size; + sb64.st_blksize = sb.st_blksize; + sb64.st_blocks = sb.st_blocks; + sb64.st_atime_ = sb.st_atime; + sb64.st_mtime_ = sb.st_mtime; + sb64.st_ctime_ = sb.st_ctime; + + return sb64; +} + + +int __fxstat64 (int __ver, int __fildes, struct stat64 *__stat_buf) { + struct stat sb; + int result; + + result = fstat (__fildes, &sb); + *__stat_buf = stat2stat64(sb); + return result; +} + + +int __xstat64 (int __ver, __const char *__filename, + struct stat64 *__stat_buf) { + struct stat sb; + int result; + + result = stat (__filename, &sb); + *__stat_buf = stat2stat64(sb); + return result; +} + + +#include <stdio.h> + +void __xstat() { + fprintf(stderr, __FILE__ ": __xstat() is dummy.\n"); +}; +void __fxstat() { + fprintf(stderr, __FILE__ ": __fxstat() is dummy.\n"); +}; +void __lxstat() { + fprintf(stderr, __FILE__ ": __lxstat() is dummy.\n"); +}; +void __lxstat64() { + fprintf(stderr, __FILE__ ": __lxstat64() is dummy.\n"); +}; + +int __xmknod (int vers /* 0x8 */, char *path /* 0xc */, + unsigned int mode /* 0x10 */, + long long unsigned int *dev /* 0x14 */) +{ + return mknod(path, mode, *dev); +}; diff --git a/lang/ifc/files/mcount.S b/lang/ifc/files/mcount.S new file mode 100644 index 000000000000..5d3ed1d8c7d5 --- /dev/null +++ b/lang/ifc/files/mcount.S @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2002 Marius Strobl + * 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: /tmp/pcvs/ports/lang/ifc/files/mcount.S,v 1.1 2002-11-18 09:27:32 maho Exp $ + */ + + .text + .extern .mcount + .globl mcount + .type mcount,@function +mcount: + jmp .mcount diff --git a/lang/ifc/files/patch-aa b/lang/ifc/files/patch-aa deleted file mode 100644 index ac74eace1fe4..000000000000 --- a/lang/ifc/files/patch-aa +++ /dev/null @@ -1,14 +0,0 @@ ---- opt/intel/compiler60/ia32/bin/ifc.old Thu Jul 18 18:52:59 2002 -+++ opt/intel/compiler60/ia32/bin/ifc Thu Jul 18 18:54:03 2002 -@@ -13,9 +13,9 @@ - - if [ -z PATH ] - then -- PATH=<INSTALLDIR>/compiler60/ia32/bin; -+ PATH=@LINUXBASE@/usr/bin:<INSTALLDIR>/compiler60/ia32/bin; - else -- PATH=<INSTALLDIR>/compiler60/ia32/bin:$PATH; -+ PATH=@LINUXBASE@/usr/bin:<INSTALLDIR>/compiler60/ia32/bin:$PATH; - fi - export PATH; - diff --git a/lang/ifc/files/patch-ifc b/lang/ifc/files/patch-ifc new file mode 100644 index 000000000000..3428a50551d2 --- /dev/null +++ b/lang/ifc/files/patch-ifc @@ -0,0 +1,42 @@ +--- opt/intel/compiler60/ia32/bin/ifc.orig Sun Sep 22 01:03:04 2002 ++++ opt/intel/compiler60/ia32/bin/ifc Sun Sep 22 01:06:31 2002 +@@ -1,29 +1,31 @@ + #!/bin/sh + +-INTEL_LICENSE_FILE=<INSTALLDIR>/licenses; ++PREFIX=/usr/local ++export PREFIX ++INTEL_LICENSE_FILE=${PREFIX}/intel/licenses; + export INTEL_LICENSE_FILE; + + if [ -z LD_LIBRARY_PATH ] + then +- LD_LIBRARY_PATH=<INSTALLDIR>/compiler60/ia32/lib; ++ LD_LIBRARY_PATH=${PREFIX}/intel/compiler60/ia32/lib; + else +- LD_LIBRARY_PATH=<INSTALLDIR>/compiler60/ia32/lib:$LD_LIBRARY_PATH ++ LD_LIBRARY_PATH=${PREFIX}/intel/compiler60/ia32/lib:$LD_LIBRARY_PATH + fi + export LD_LIBRARY_PATH; + + if [ -z PATH ] + then +- PATH=<INSTALLDIR>/compiler60/ia32/bin; ++ PATH=${PREFIX}/intel/compiler60/ia32/bin; + else +- PATH=<INSTALLDIR>/compiler60/ia32/bin:$PATH; ++ PATH=${PREFIX}/intel/compiler60/ia32/bin:$PATH; + fi + export PATH; + +-export -n IA32ROOT; unset IA32ROOT; ++unset IA32ROOT; + + if [ $# != 0 ] + then +- exec -a "<INSTALLDIR>/compiler60/ia32/bin/ifc" <INSTALLDIR>/compiler60/ia32/bin/ifcbin "$@"; ++ exec ${PREFIX}/intel/compiler60/ia32/bin/ifcbin "$@"; + else +- exec -a "<INSTALLDIR>/compiler60/ia32/bin/ifc" <INSTALLDIR>/compiler60/ia32/bin/ifcbin; ++ exec ${PREFIX}/intel/compiler60/ia32/bin/ifcbin; + fi diff --git a/lang/ifc/files/stderr.c b/lang/ifc/files/stderr.c new file mode 100644 index 000000000000..6c3987effb03 --- /dev/null +++ b/lang/ifc/files/stderr.c @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2002 Marius Strobl + * 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: /tmp/pcvs/ports/lang/ifc/files/stderr.c,v 1.1 2002-11-18 09:27:32 maho Exp $ + */ + +#include <stdio.h> + +#undef stdout +#undef stderr +FILE *stdout = &__sF[1]; +FILE *stderr = &__sF[2]; diff --git a/lang/ifc/files/sysconf.c b/lang/ifc/files/sysconf.c new file mode 100644 index 000000000000..ef49a91a7d3b --- /dev/null +++ b/lang/ifc/files/sysconf.c @@ -0,0 +1,145 @@ +/* + * Copyright (c) 2002 The FreeBSD Project + * 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: /tmp/pcvs/ports/lang/ifc/files/sysconf.c,v 1.1 2002-11-18 09:27:32 maho Exp $ + */ +#include <unistd.h> +#include <errno.h> + +#define _SC_UNDEF 0 + +static int linux_sysconf[] = { + _SC_ARG_MAX, + _SC_CHILD_MAX, + _SC_CLK_TCK, + _SC_NGROUPS_MAX, + _SC_OPEN_MAX, + _SC_STREAM_MAX, + _SC_TZNAME_MAX, + _SC_JOB_CONTROL, + _SC_SAVED_IDS, + _SC_REALTIME_SIGNALS, + _SC_PRIORITY_SCHEDULING, + _SC_TIMERS, + _SC_ASYNCHRONOUS_IO, + _SC_PRIORITIZED_IO, + _SC_SYNCHRONIZED_IO, + _SC_FSYNC, + _SC_MAPPED_FILES, + _SC_MEMLOCK, + _SC_MEMLOCK_RANGE, + _SC_MEMORY_PROTECTION, + _SC_MESSAGE_PASSING, + _SC_SEMAPHORES, + _SC_SHARED_MEMORY_OBJECTS, + _SC_AIO_LISTIO_MAX, + _SC_AIO_MAX, + _SC_AIO_PRIO_DELTA_MAX, + _SC_DELAYTIMER_MAX, + _SC_MQ_OPEN_MAX, + _SC_UNDEF, + _SC_VERSION, + _SC_PAGESIZE, + _SC_RTSIG_MAX, + _SC_SEM_NSEMS_MAX, + _SC_SEM_VALUE_MAX, + _SC_SIGQUEUE_MAX, + _SC_TIMER_MAX, + _SC_BC_BASE_MAX, + _SC_BC_DIM_MAX, + _SC_BC_SCALE_MAX, + _SC_BC_STRING_MAX, + _SC_COLL_WEIGHTS_MAX, + _SC_UNDEF, + _SC_EXPR_NEST_MAX, + _SC_LINE_MAX, + _SC_RE_DUP_MAX, + _SC_UNDEF, + _SC_2_VERSION, + _SC_2_C_BIND, + _SC_2_C_DEV, + _SC_2_FORT_DEV, + _SC_2_FORT_RUN, + _SC_2_SW_DEV, + _SC_2_LOCALEDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_UNDEF, + _SC_2_CHAR_TERM, + _SC_UNDEF, + _SC_2_UPE, +}; + +#define SYSCONF_SIZE (sizeof(linux_sysconf)/sizeof(int)) + +long __sysconf(int name) +{ + if (name >= SYSCONF_SIZE || linux_sysconf[name] == _SC_UNDEF) { + errno = EINVAL; + return -1; + } + + return sysconf(linux_sysconf[name]); +} |