OpenCores
URL https://opencores.org/ocsvn/or1200_soc/or1200_soc/trunk

Subversion Repositories or1200_soc

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /or1200_soc
    from Rev 25 to Rev 26
    Reverse comparison

Rev 25 → Rev 26

/trunk/sw/Meansoffreedom/binutils_2.16.1_unified.diff_rgd_fixed.bz2 Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream
trunk/sw/Meansoffreedom/binutils_2.16.1_unified.diff_rgd_fixed.bz2 Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: trunk/sw/Meansoffreedom/linux_2.6.19_or32_unified_simtested.bz2 =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: trunk/sw/Meansoffreedom/linux_2.6.19_or32_unified_simtested.bz2 =================================================================== --- trunk/sw/Meansoffreedom/linux_2.6.19_or32_unified_simtested.bz2 (nonexistent) +++ trunk/sw/Meansoffreedom/linux_2.6.19_or32_unified_simtested.bz2 (revision 26)
trunk/sw/Meansoffreedom/linux_2.6.19_or32_unified_simtested.bz2 Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: trunk/sw/Meansoffreedom/.config =================================================================== --- trunk/sw/Meansoffreedom/.config (nonexistent) +++ trunk/sw/Meansoffreedom/.config (revision 26) @@ -0,0 +1,144 @@ +# +# Automatically generated make config: don't edit +# +# TARGET_alpha is not set +# TARGET_arm is not set +# TARGET_bfin is not set +# TARGET_cris is not set +# TARGET_e1 is not set +# TARGET_frv is not set +# TARGET_h8300 is not set +# TARGET_i386 is not set +# TARGET_i960 is not set +# TARGET_m68k is not set +# TARGET_microblaze is not set +# TARGET_mips is not set +# TARGET_nios is not set +# TARGET_nios2 is not set +TARGET_or32=y +# TARGET_powerpc is not set +# TARGET_sh is not set +# TARGET_sh64 is not set +# TARGET_sparc is not set +# TARGET_v850 is not set +# TARGET_x86_64 is not set + +# +# Target Architecture Features and Options +# +HAVE_ELF=y +TARGET_ARCH="or32" +ARCH_HAS_C_SYMBOL_PREFIX=y +CROSS="or32-uclinux-" +CONFIG_OR32=y +# ARCH_LITTLE_ENDIAN is not set +# ARCH_BIG_ENDIAN is not set +# ARCH_HAS_NO_MMU is not set +ARCH_HAS_MMU=y +UCLIBC_HAS_FLOATS=y +HAS_FPU=y +# DO_C99_MATH is not set +KERNEL_SOURCE="/cygdrive/c/qaz/_CVS_WORK/units/or1k/Meansoffreedom/linux-2.6.19" +C_SYMBOL_PREFIX="_" +HAVE_DOT_CONFIG=y + +# +# General Library Settings +# +# HAVE_NO_PIC is not set +# DOPIC is not set +HAVE_NO_SHARED=y +ARCH_HAS_NO_LDSO=y +DL_FINI_CRT_COMPAT=y +# UCLIBC_CTOR_DTOR is not set +HAS_NO_THREADS=y +UCLIBC_HAS_LFS=y +UCLIBC_STATIC_LDCONFIG=y +# MALLOC is not set +# MALLOC_SIMPLE is not set +MALLOC_STANDARD=y +# MALLOC_GLIBC_COMPAT is not set +UCLIBC_DYNAMIC_ATEXIT=y +HAS_SHADOW=y +UNIX98PTY_ONLY=y +ASSUME_DEVPTS=y +UCLIBC_HAS_TM_EXTENSIONS=y +UCLIBC_HAS_TZ_CACHING=y +UCLIBC_HAS_TZ_FILE=y +UCLIBC_HAS_TZ_FILE_READ_MANY=y +UCLIBC_TZ_FILE_PATH="/etc/TZ" + +# +# Networking Support +# +# UCLIBC_HAS_IPV6 is not set +# UCLIBC_HAS_RPC is not set + +# +# String and Stdio Support +# +UCLIBC_HAS_STRING_GENERIC_OPT=y +UCLIBC_HAS_STRING_ARCH_OPT=y +UCLIBC_HAS_CTYPE_TABLES=y +UCLIBC_HAS_CTYPE_SIGNED=y +UCLIBC_HAS_CTYPE_UNSAFE=y +# UCLIBC_HAS_CTYPE_CHECKED is not set +# UCLIBC_HAS_CTYPE_ENFORCED is not set +# UCLIBC_HAS_WCHAR is not set +# UCLIBC_HAS_LOCALE is not set +# UCLIBC_HAS_HEXADECIMAL_FLOATS is not set +# UCLIBC_HAS_GLIBC_CUSTOM_PRINTF is not set +# USE_OLD_VFPRINTF is not set +UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9 +# UCLIBC_HAS_SCANF_GLIBC_A_FLAG is not set +# UCLIBC_HAS_STDIO_BUFSIZ_NONE is not set +# UCLIBC_HAS_STDIO_BUFSIZ_256 is not set +# UCLIBC_HAS_STDIO_BUFSIZ_512 is not set +# UCLIBC_HAS_STDIO_BUFSIZ_1024 is not set +# UCLIBC_HAS_STDIO_BUFSIZ_2048 is not set +UCLIBC_HAS_STDIO_BUFSIZ_4096=y +# UCLIBC_HAS_STDIO_BUFSIZ_8192 is not set +UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y +# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set +# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set +# UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set +UCLIBC_HAS_STDIO_GETC_MACRO=y +UCLIBC_HAS_STDIO_PUTC_MACRO=y +UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y +# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set +# UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE is not set +# UCLIBC_HAS_GLIBC_CUSTOM_STREAMS is not set +# UCLIBC_HAS_PRINTF_M_SPEC is not set +UCLIBC_HAS_ERRNO_MESSAGES=y +# UCLIBC_HAS_SYS_ERRLIST is not set +UCLIBC_HAS_SIGNUM_MESSAGES=y +# UCLIBC_HAS_SYS_SIGLIST is not set +UCLIBC_HAS_GNU_GETOPT=y + +# +# Big and Tall +# +UCLIBC_HAS_REGEX=y +# UCLIBC_HAS_WORDEXP is not set +# UCLIBC_HAS_FTW is not set +UCLIBC_HAS_GLOB=y + +# +# Library Installation Options +# +RUNTIME_PREFIX="/usr/$(TARGET_ARCH)-linux-uclibc/" +DEVEL_PREFIX="/cygdrive/c/qaz/_CVS_WORK/units/or1k/Meansoffreedom/tools/or32-uclinux" + +# +# uClibc security related options +# +# UCLIBC_SECURITY is not set + +# +# uClibc development/debugging options +# +CROSS_COMPILER_PREFIX="" +# DODEBUG is not set +# DOASSERTS is not set +WARNINGS="-Wall" +# UCLIBC_MJN3_ONLY is not set Index: trunk/sw/Meansoffreedom/__notes.txt =================================================================== --- trunk/sw/Meansoffreedom/__notes.txt (nonexistent) +++ trunk/sw/Meansoffreedom/__notes.txt (revision 26) @@ -0,0 +1,96 @@ + +# cd to or1200_soc/sw/Meansoffreedom + +export WORK_ROOT=$PWD + +# build binutils +tar -xf binutils-2.16.1.tar.bz2 +cd binutils-2.16.1 +bzip2 -dc ../binutils_2.16.1_unified.diff_rgd_fixed.bz2 |patch -p1 +cd .. +mkdir b-b +mkdir tools +cd b-b +../binutils-2.16.1/configure --target=or32-uclinux --prefix=$WORK_ROOT/tools/or32-uclinux +make all install +ls $WORK_ROOT/tools/or32-uclinux/bin +export PATH=$WORK_ROOT/tools/or32-uclinux/bin:$PATH +cd .. + +# first build gcc +tar -xf linux-2.6.19.tar.bz2 +cd linux-2.6.19 +bzip2 -dc ../linux_2.6.19_or32_unified_simtested.bz2 |patch -p1 +cd .. +mkdir tools/or32-uclinux/include +mkdir tools/or32-uclinux/include/asm +mkdir tools/or32-uclinux/include/linux +cp -f -dR linux-2.6.19/include/linux/* $WORK_ROOT/tools/or32-uclinux/include/linux +cp -f -dR linux-2.6.19/include/asm-or32/* $WORK_ROOT/tools/or32-uclinux/include/asm +cd $WORK_ROOT/tools/or32-uclinux +ln -s include sys-include +cd ../../ +mkdir b-gcc +cd gcc-3.4.4 +bzip2 -dc ../gcc-3.4.4-or32-unified.diff.bz2 |patch -p1 +cd ../b-gcc +../gcc-3.4.4/configure --target=or32-uclinux --prefix=$WORK_ROOT/tools/or32-uclinux --with-localprefix=$WORK_ROOT/tools/or32-uclinux/or32-uclinux --with-gnu-as --with-gnu-ld --verbose --enable-languages=c +make all install +cd ../linux-2.6.19 +make vmlinux ARCH=or32 CROSS_COMPILE=$WORK_ROOT/tools/or32-uclinux/bin/or32-uclinux- +cd .. + + +# build uClibc +tar -xf uClibc-0.9.28.3.tar.bz2 +cd uClibc-0.9.28.3 +bzip2 -dc ../uClibc-0.9.28-or32-unified.bz2 |patch -p1 +cd libc +bzip2 -dc ../../uClibc-0.9.28-or32-libc-support.bz2 |patch -p1 +cd .. +ln -s extra/Configs/Config.or32 Config +export CC=or32-uclinux-gcc +cp ../.config ./ +make all install +cd ../ +unset CC + +# second build gcc with C++ hack +cd $WORK_ROOT/tools/or32-uclinux/or32-uclinux/ +ln -s ../include sys-include +cd $WORK_ROOT/tools/or32-uclinux/or32-uclinux/lib +cp ../../lib/*.* . +cp $WORK_ROOT/C_plus_hack/configure.ac $WORK_ROOT/gcc-3.4.4/libstdc++-v3/ +cp $WORK_ROOT/C_plus_hack/strsignal.c $WORK_ROOT/gcc-3.4.4/libiberty/ + +cd $WORK_ROOT/b-gcc +../gcc-3.4.4/configure --target=or32-uclinux --prefix=$WORK_ROOT/tools/or32-uclinux --with-localprefix=$WORK_ROOT/tools/or32-uclinux/or32-uclinux --with-gnu-as --with-gnu-ld --verbose --with-newlib --enable-languages=c,c++ +make all install +# wait for the build to fail + +cp $WORK_ROOT/C_plus_hack/ctype_base.h $WORK_ROOT/b-gcc/or32-uclinux/libstdc++-v3/include/or32-uclinux/bits/ +cp $WORK_ROOT/C_plus_hack/ctype_noninline.h $WORK_ROOT/b-gcc/or32-uclinux/libstdc++-v3/include/or32-uclinux/bits/ +make all install +# wait for the build to fail + +cp $WORK_ROOT/C_plus_hack/c++locale.cc $WORK_ROOT/b-gcc/or32-uclinux/libstdc++-v3/src/ +make all install +# wait for the build to fail + +cp /lib/gcc/i686-pc-cygwin/3.4.4/include/c++/i686-pc-cygwin/bits/stdc++.h.gch/* $WORK_ROOT/b-gcc/or32-uclinux/libstdc++-v3/include/or32-uclinux/bits/stdc++.h.gch +make all install + +cd $WORK_ROOT/tools/or32-uclinux/or32-uclinux +ln -s ../include sys-include +cd lib +cp ../../lib/*.* . + +# done. test it. +cd $WORK_ROOT/../ecos_debug +export PATH=$WORK_ROOT/tools/or32-uclinux/bin:$WORK_ROOT/../ecos-3.0/tools/bin:$PATH +export ECOS_REPOSITORY=$WORK_ROOT/../ecos-3.0/packages +ecosconfig new OR1200_SOC redboot +ecosconfig import ./ecos_debug.ecm +ecosconfig tree +make + Index: trunk/sw/Meansoffreedom/gcc-3.4.4-or32-unified.diff.bz2 =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: trunk/sw/Meansoffreedom/gcc-3.4.4-or32-unified.diff.bz2 =================================================================== --- trunk/sw/Meansoffreedom/gcc-3.4.4-or32-unified.diff.bz2 (nonexistent) +++ trunk/sw/Meansoffreedom/gcc-3.4.4-or32-unified.diff.bz2 (revision 26)
trunk/sw/Meansoffreedom/gcc-3.4.4-or32-unified.diff.bz2 Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: trunk/sw/Meansoffreedom/C_plus_hack/configure.ac =================================================================== --- trunk/sw/Meansoffreedom/C_plus_hack/configure.ac (nonexistent) +++ trunk/sw/Meansoffreedom/C_plus_hack/configure.ac (revision 26) @@ -0,0 +1,359 @@ +# Process this file with autoconf to produce a configure script, like so: +# aclocal && autoconf && autoheader && automake + +AC_PREREQ(2.57) +AC_INIT(package-unused, version-unused,, libstdc++) +AC_CONFIG_SRCDIR(src/ios.cc) +AC_CONFIG_HEADER(config.h) + +# This works around the fact that libtool configuration may change LD +# for this particular configuration, but some shells, instead of +# keeping the changes in LD private, export them just because LD is +# exported. Only used at the end of this file. +### am handles this now? ORIGINAL_LD_FOR_MULTILIBS=$LD + +# For libtool versioning info, format is CURRENT:REVISION:AGE +libtool_VERSION=6:3:0 +AC_SUBST(libtool_VERSION) + +# Find the rest of the source tree framework. +GLIBCXX_TOPREL_CONFIGURE + +# Gets build, host, target, *_vendor, *_cpu, *_os, etc. +# +# You will slowly go insane if you do not grok the following fact: when +# building v3 as part of the compiler, the top-level /target/ becomes the +# library's /host/. configure then causes --target to default to --host, +# exactly like any other package using autoconf. Therefore, 'target' and +# 'host' will always be the same. This makes sense both for native and +# cross compilers, just think about it for a little while. :-) +# +# Also, if v3 is being configured as part of a cross compiler, the top-level +# configure script will pass the "real" host as $with_cross_host. +# +# Do not delete or change the following two lines. For why, see +# http://gcc.gnu.org/ml/libstdc++/2003-07/msg00451.html +AC_CANONICAL_SYSTEM +target_alias=${target_alias-$host_alias} + +# Handy for debugging: +#AC_MSG_NOTICE($build / $host / $target / $host_alias / $target_alias); sleep 5 + +if test "$build" != "$host"; then + # We are being configured with some form of cross compiler. + GLIBCXX_IS_NATIVE=false + GCC_NO_EXECUTABLES +else + GLIBCXX_IS_NATIVE=true +fi + +# Sets up automake. Must come after AC_CANONICAL_SYSTEM. Each of the +# following is magically included in AUTOMAKE_OPTIONS in each Makefile.am. +# 1.x: minimum required version +# no-define: PACKAGE and VERSION will not be #define'd in config.h (a bunch +# of other PACKAGE_* variables will, however, and there's nothing +# we can do about that; they come from AC_INIT). +# foreign: we don't follow the normal rules for GNU packages (no COPYING +# file in the top srcdir, etc, etc), so stop complaining. +# no-dependencies: turns off auto dependency generation (just for now) +# -Wall: turns on all automake warnings... +# -Wno-portability: ...except this one, since GNU make is now required. +AM_INIT_AUTOMAKE([1.7.6 no-define foreign no-dependencies -Wall -Wno-portability]) + +# Runs configure.host, finds CC, CXX, and assorted other critical bits. Sets +# up critical shell variables. +GLIBCXX_CONFIGURE + +#AC_MSG_NOTICE([====== Starting libtool configuration]) + +if test "x${with_newlib}" != "xyes"; then +AC_LIBTOOL_DLOPEN +fi + +AM_PROG_LIBTOOL +AC_SUBST(enable_shared) +AC_SUBST(enable_static) +#AC_MSG_NOTICE([====== Finished libtool configuration]) ; sleep 10 + +# Possibly disable most of the library. +## XXX Consider skipping unncessary tests altogether in this case, rather +## than just ignoring the results. Faster /and/ more correct, win win. +GLIBCXX_ENABLE_HOSTED + +# Check for support bits and g++ features that don't require linking. +GLIBCXX_ENABLE_SJLJ_EXCEPTIONS +GLIBCXX_ENABLE_PCH($is_hosted) + +# Enable all the variable C++ runtime options. +# NB: C_MBCHAR must come early. +GLIBCXX_ENABLE_CSTDIO +GLIBCXX_ENABLE_CLOCALE +GLIBCXX_ENABLE_ALLOCATOR +GLIBCXX_ENABLE_CHEADERS($c_model) dnl c_model from configure.host +GLIBCXX_ENABLE_C_MBCHAR([yes]) +GLIBCXX_ENABLE_C99([yes]) +GLIBCXX_ENABLE_LONG_LONG([yes]) +GLIBCXX_ENABLE_THREADS +GLIBCXX_ENABLE_CONCEPT_CHECKS([no]) +GLIBCXX_ENABLE_DEBUG_FLAGS(["-g3 -O0"]) +GLIBCXX_ENABLE_DEBUG([no]) +GLIBCXX_ENABLE_CXX_FLAGS +GLIBCXX_ENABLE_FULLY_DYNAMIC_STRING([no]) + +# No surprises, no surprises... +if test $atomicity_dir = cpu/generic ; then + AC_MSG_WARN([No native atomic operations are provided for this platform.]) + if test $target_thread_file = single; then + AC_MSG_WARN([They cannot be faked when thread support is disabled.]) + AC_MSG_WARN([Thread-safety of certain classes is not guaranteed.]) + else + AC_MSG_WARN([They will be faked using a mutex.]) + AC_MSG_WARN([Performance of certain classes will degrade as a result.]) + fi +fi + + +if $GLIBCXX_IS_NATIVE; then + + # We can do more elaborate tests that assume a working linker. + CANADIAN=no + + # Check for available headers. + AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h machine/endian.h \ + machine/param.h sys/machine.h fp.h locale.h float.h inttypes.h gconv.h \ + sys/types.h]) + + GLIBCXX_CHECK_COMPILER_FEATURES + GLIBCXX_CHECK_LINKER_FEATURES + GLIBCXX_CHECK_MATH_SUPPORT + GLIBCXX_CHECK_BUILTIN_MATH_SUPPORT + GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT + GLIBCXX_CHECK_WCHAR_T_SUPPORT + GLIBCXX_CHECK_STDLIB_SUPPORT + + # For showmanyc_helper(). + AC_CHECK_HEADERS(sys/ioctl.h sys/filio.h) + GLIBCXX_CHECK_POLL + GLIBCXX_CHECK_S_ISREG_OR_S_IFREG + + # For xsputn_2(). + AC_CHECK_HEADERS(sys/uio.h) + GLIBCXX_CHECK_WRITEV + + # For the __streamoff_base_type typedef. + GLIBCXX_CHECK_INT64_T + + # For LFS support. + GLIBCXX_CHECK_LFS + + AC_LC_MESSAGES + + AC_TRY_COMPILE( + [#include ], + [sigjmp_buf env; + while (! sigsetjmp (env, 1)) + siglongjmp (env, 1); + ], + [AC_DEFINE(HAVE_SIGSETJMP, 1, [Define if sigsetjmp is available.])]) + + AC_FUNC_MMAP + +else + + # This lets us hard-code the functionality we know we'll have in the cross + # target environment. "Let" is a sugar-coated word placed on an especially + # dull and tedious hack, actually. + # + # Here's why GLIBCXX_CHECK_MATH_SUPPORT, and other autoconf macros + # that involve linking, can't be used: + # "cannot open sim-crt0.o" + # "cannot open crt0.o" + # etc. All this is because there currently exists no unified, consistent + # way for top level CC information to be passed down to target directories: + # newlib includes, newlib linking info, libgloss versus newlib crt0.o, etc. + # When all of that is done, all of this hokey, excessive AC_DEFINE junk for + # crosses can be removed. + + # If Canadian cross, then don't pick up tools from the build directory. + # Used only in GLIBCXX_EXPORT_INCLUDES. + if test -n "$with_cross_host" && + test x"$build_alias" != x"$with_cross_host" && + test x"$build" != x"$target"; + then + CANADIAN=yes + else + CANADIAN=no + fi + + # Construct crosses by hand, eliminating bits that need ld... + # GLIBCXX_CHECK_COMPILER_FEATURES + # GLIBCXX_CHECK_BUILTIN_MATH_SUPPORT + # GLIBCXX_CHECK_MATH_SUPPORT + + # First, test for "known" system libraries. We may be using newlib even + # on a hosted environment. + if test "x${with_newlib}" = "xyes"; then + os_include_dir="os/newlib" + AC_DEFINE(HAVE_HYPOT) + + # GLIBCXX_CHECK_STDLIB_SUPPORT + AC_DEFINE(HAVE_STRTOF) + # AC_FUNC_MMAP + AC_DEFINE(HAVE_MMAP) + + AC_DEFINE(HAVE_ACOSF) + AC_DEFINE(HAVE_ASINF) + AC_DEFINE(HAVE_ATAN2F) + AC_DEFINE(HAVE_ATANF) + AC_DEFINE(HAVE_CEILF) + AC_DEFINE(HAVE_COPYSIGN) + AC_DEFINE(HAVE_COPYSIGNF) + AC_DEFINE(HAVE_COSF) + AC_DEFINE(HAVE_COSHF) + AC_DEFINE(HAVE_EXPF) + AC_DEFINE(HAVE_FABSF) + AC_DEFINE(HAVE_FLOORF) + AC_DEFINE(HAVE_FMODF) + AC_DEFINE(HAVE_FREXPF) + AC_DEFINE(HAVE_LDEXPF) + AC_DEFINE(HAVE_LOG10F) + AC_DEFINE(HAVE_LOGF) + AC_DEFINE(HAVE_MODFF) + AC_DEFINE(HAVE_POWF) + AC_DEFINE(HAVE_SINF) + AC_DEFINE(HAVE_SINHF) + AC_DEFINE(HAVE_SQRTF) + AC_DEFINE(HAVE_TANF) + AC_DEFINE(HAVE_TANHF) + + AC_DEFINE(HAVE_S_ISREG) + AC_DEFINE(HAVE_S_IFREG) + else + m4_include([crossconfig.m4]) + fi + + # At some point, we should differentiate between architectures + # like x86, which have long double versions, and alpha/powerpc/etc., + # which don't. For the time being, punt. + if test x"long_double_math_on_this_cpu" = x"yes"; then + AC_DEFINE(HAVE_ACOSL) + AC_DEFINE(HAVE_ASINL) + AC_DEFINE(HAVE_ATAN2L) + AC_DEFINE(HAVE_ATANL) + AC_DEFINE(HAVE_CEILL) + AC_DEFINE(HAVE_COPYSIGNL) + AC_DEFINE(HAVE_COSL) + AC_DEFINE(HAVE_COSHL) + AC_DEFINE(HAVE_EXPL) + AC_DEFINE(HAVE_FABSL) + AC_DEFINE(HAVE_FLOORL) + AC_DEFINE(HAVE_FMODL) + AC_DEFINE(HAVE_FREXPL) + AC_DEFINE(HAVE_LDEXPL) + AC_DEFINE(HAVE_LOG10L) + AC_DEFINE(HAVE_LOGL) + AC_DEFINE(HAVE_MODFL) + AC_DEFINE(HAVE_POWL) + AC_DEFINE(HAVE_SINCOSL) + AC_DEFINE(HAVE_SINL) + AC_DEFINE(HAVE_SINHL) + AC_DEFINE(HAVE_SQRTL) + AC_DEFINE(HAVE_TANL) + AC_DEFINE(HAVE_TANHL) + fi + +fi + +# This depends on GLIBCXX CHECK_LINKER_FEATURES, but without it assumes no. +GLIBCXX_ENABLE_SYMVERS([yes]) + +# This depends on GLIBCXX_ENABLE_SYMVERS and GLIBCXX_IS_NATIVE. +GLIBCXX_CONFIGURE_TESTSUITE + +# Propagate the target-specific source directories through the build chain. +# (Nothing currently uses cpu_include_dir directly; only atomicity_include_dir +# uses it, and it only gets used in this file.) +ATOMICITY_SRCDIR=config/${atomicity_dir} +ATOMIC_WORD_SRCDIR=config/${atomic_word_dir} +OS_INC_SRCDIR=config/${os_include_dir} +AC_SUBST(ATOMICITY_SRCDIR) +AC_SUBST(ATOMIC_WORD_SRCDIR) +AC_SUBST(OS_INC_SRCDIR) + +# Determine cross-compile flags and AM_CONDITIONALs. +#AC_SUBST(GLIBCXX_IS_NATIVE) +#AM_CONDITIONAL(CANADIAN, test $CANADIAN = yes) +# from GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT: +#AM_CONDITIONAL(GLIBCXX_BUILD_LIBMATH, test $need_libmath = yes) +GLIBCXX_EVALUATE_CONDITIONALS + +AC_CACHE_SAVE + +if test ${multilib} = yes; then + multilib_arg="--enable-multilib" +else + multilib_arg= +fi + +# Export all the install information. +GLIBCXX_EXPORT_INSTALL_INFO + +# Export all the include and flag information to Makefiles. +GLIBCXX_EXPORT_INCLUDES +GLIBCXX_EXPORT_FLAGS + +if ${CONFIG_SHELL-/bin/sh} ./libtool --tag CXX --features | + grep "enable shared" > /dev/null; +then + LIBSUPCXX_PICFLAGS=-prefer-pic +else + LIBSUPCXX_PICFLAGS= +fi +AC_SUBST(LIBSUPCXX_PICFLAGS) + +dnl In autoconf 2.5x, AC_OUTPUT is replaced by four AC_CONFIG_* macros, +dnl which can all be called multiple times as needed, plus one (different) +dnl AC_OUTPUT macro. This one lists the files to be created: +AC_CONFIG_FILES( \ + Makefile \ + AC_FOREACH([DIR], glibcxx_SUBDIRS, [DIR/Makefile ]) + ) +AC_CONFIG_FILES([scripts/check_survey],[chmod +x scripts/check_survey]) +AC_CONFIG_FILES([scripts/testsuite_flags],[chmod +x scripts/testsuite_flags]) + +dnl These commands are run at the end of config.status: +AC_CONFIG_COMMANDS([default], +[if test -n "$CONFIG_FILES"; then + # Multilibs need MULTISUBDIR defined correctly in certain makefiles so + # that multilib installs will end up installed in the correct place. + # The testsuite needs it for multilib-aware ABI baseline files. + # To work around this not being passed down from config-ml.in -> + # srcdir/Makefile.am -> srcdir/{src,libsupc++,...}/Makefile.am, manually + # append it here. Only modify Makefiles that have just been created. + # + # Also, get rid of this simulated-VPATH thing that automake does. + cat > vpsed << \_EOF +s!`test -f '$<' || echo '$(srcdir)/'`!! +_EOF + for i in $SUBDIRS; do + case $CONFIG_FILES in + *${i}/Makefile*) + #echo "Adding MULTISUBDIR to $i/Makefile" + sed -f vpsed $i/Makefile > tmp + grep '^MULTISUBDIR =' Makefile >> tmp + mv tmp $i/Makefile + ;; + esac + done + rm vpsed + fi + (cd include && ${MAKE-make}) +], +[ +# Variables needed in config.status (file generation) which aren't already +# passed by autoconf. +SUBDIRS="$SUBDIRS" +]) + +dnl And this actually makes things happen: +AC_OUTPUT Index: trunk/sw/Meansoffreedom/C_plus_hack/ctype_noninline.h =================================================================== --- trunk/sw/Meansoffreedom/C_plus_hack/ctype_noninline.h (nonexistent) +++ trunk/sw/Meansoffreedom/C_plus_hack/ctype_noninline.h (revision 26) @@ -0,0 +1,100 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, +// USA. + +// As a special exception, you may use this file as part of a free software +// library without restriction. Specifically, if other files instantiate +// templates or use macros or inline functions from this file, or you compile +// this file and link it with other files to produce an executable, this +// file does not by itself cause the resulting executable to be covered by +// the GNU General Public License. This exception does not however +// invalidate any other reasons why the executable file might be covered by +// the GNU General Public License. + +// +// ISO C++ 14882: 22.1 Locales +// + +// Information as gleaned from /usr/include/ctype.h + +char _ctype_[257]; + + const ctype_base::mask* + ctype::classic_table() throw() + { return _ctype_ + 1; } + + ctype::ctype(__c_locale, const mask* __table, bool __del, + size_t __refs) + : facet(__refs), _M_del(__table != 0 && __del), + _M_toupper(NULL), _M_tolower(NULL), + _M_table(__table ? __table : classic_table()) + { + memset(_M_widen, 0, sizeof(_M_widen)); + _M_widen_ok = 0; + memset(_M_narrow, 0, sizeof(_M_narrow)); + _M_narrow_ok = 0; + } + + ctype::ctype(const mask* __table, bool __del, size_t __refs) + : facet(__refs), _M_del(__table != 0 && __del), + _M_toupper(NULL), _M_tolower(NULL), + _M_table(__table ? __table : classic_table()) + { + memset(_M_widen, 0, sizeof(_M_widen)); + _M_widen_ok = 0; + memset(_M_narrow, 0, sizeof(_M_narrow)); + _M_narrow_ok = 0; + } + + char + ctype::do_toupper(char __c) const + { + int __x = __c; + return (this->is(ctype_base::lower, __c) ? (__x - 'a' + 'A') : __x); + } + + const char* + ctype::do_toupper(char* __low, const char* __high) const + { + while (__low < __high) + { + *__low = this->do_toupper(*__low); + ++__low; + } + return __high; + } + + char + ctype::do_tolower(char __c) const + { + int __x = __c; + return (this->is(ctype_base::upper, __c) ? (__x - 'A' + 'a') : __x); + } + + const char* + ctype::do_tolower(char* __low, const char* __high) const + { + while (__low < __high) + { + *__low = this->do_tolower(*__low); + ++__low; + } + return __high; + } + Index: trunk/sw/Meansoffreedom/C_plus_hack/ctype_base.h =================================================================== --- trunk/sw/Meansoffreedom/C_plus_hack/ctype_base.h (nonexistent) +++ trunk/sw/Meansoffreedom/C_plus_hack/ctype_base.h (revision 26) @@ -0,0 +1,66 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, +// USA. + +// As a special exception, you may use this file as part of a free software +// library without restriction. Specifically, if other files instantiate +// templates or use macros or inline functions from this file, or you compile +// this file and link it with other files to produce an executable, this +// file does not by itself cause the resulting executable to be covered by +// the GNU General Public License. This exception does not however +// invalidate any other reasons why the executable file might be covered by +// the GNU General Public License. + +// +// ISO C++ 14882: 22.1 Locales +// + +// Information as gleaned from /usr/include/ctype.h, for solaris2.5.1 + +// Support for Solaris 2.5.1 + +#define _U 01 //upper +#define _L 02 //lower +#define _N 04 //number +#define _S 010 //space +#define _P 020 //punctuation +#define _C 040 //control +#define _X 0100 //hex +#define _B 0200 //blank + + struct ctype_base + { + // Non-standard typedefs. + typedef const int* __to_type; + + // NB: Offsets into ctype::_M_table force a particular size + // on the mask type. Because of this, we don't use an enum. + typedef char mask; + static const mask upper = _U; + static const mask lower = _L; + static const mask alpha = _U | _L; + static const mask digit = _N; + static const mask xdigit = _X | _N; + static const mask space = _S; + static const mask print = _P | _U | _L | _N | _B; + static const mask graph = _P | _U | _L | _N; + static const mask cntrl = _C; + static const mask punct = _P; + static const mask alnum = _U | _L | _N; + }; Index: trunk/sw/Meansoffreedom/C_plus_hack/strsignal.c =================================================================== --- trunk/sw/Meansoffreedom/C_plus_hack/strsignal.c (nonexistent) +++ trunk/sw/Meansoffreedom/C_plus_hack/strsignal.c (revision 26) @@ -0,0 +1,618 @@ +/* Extended support for using signal values. + Written by Fred Fish. fnf@cygnus.com + This file is in the public domain. */ + +#include "ansidecl.h" +#include "libiberty.h" + +#include "config.h" + +/* We need to declare sys_siglist, because even if the system provides + it we can't assume that it is declared in (for example, + SunOS provides sys_siglist, but it does not declare it in any + header file). fHowever, we can't declare sys_siglist portably, + because on some systems it is declared with const and on some + systems it is declared without const. If we were using autoconf, + we could work out the right declaration. Until, then we just + ignore any declaration in the system header files, and always + declare it ourselves. With luck, this will always work. */ +#define sys_siglist no_such_symbol +#define sys_nsig sys_nsig__no_such_symbol + +#include +#include + +/* Routines imported from standard C runtime libraries. */ + +#ifdef HAVE_STDLIB_H +#include +#else +extern PTR malloc (); +#endif + +#ifdef HAVE_STRING_H +#include +#else +extern PTR memset (); +#endif + +/* Undefine the macro we used to hide the definition of sys_siglist + found in the system header files. */ +#undef sys_siglist +#undef sys_nsig + +#ifndef NULL +# ifdef ANSI_PROTOTYPES +# define NULL (void *) 0 +# else +# define NULL 0 +# endif +#endif + +#ifndef MAX +# define MAX(a,b) ((a) > (b) ? (a) : (b)) +#endif + +static void init_signal_tables PARAMS ((void)); + +/* Translation table for signal values. + + Note that this table is generally only accessed when it is used at runtime + to initialize signal name and message tables that are indexed by signal + value. + + Not all of these signals will exist on all systems. This table is the only + thing that should have to be updated as new signal numbers are introduced. + It's sort of ugly, but at least its portable. */ + +struct signal_info +{ + const int value; /* The numeric value from */ + const char *const name; /* The equivalent symbolic value */ +#ifndef HAVE_SYS_SIGLIST + const char *const msg; /* Short message about this value */ +#endif +}; + +#ifndef HAVE_SYS_SIGLIST +# define ENTRY(value, name, msg) {value, name, msg} +#else +# define ENTRY(value, name, msg) {value, name} +#endif + +static const struct signal_info signal_table[] = +{ +#if defined (SIGHUP) + ENTRY(SIGHUP, "SIGHUP", "Hangup"), +#endif +#if defined (SIGINT) + ENTRY(SIGINT, "SIGINT", "Interrupt"), +#endif +#if defined (SIGQUIT) + ENTRY(SIGQUIT, "SIGQUIT", "Quit"), +#endif +#if defined (SIGILL) + ENTRY(SIGILL, "SIGILL", "Illegal instruction"), +#endif +#if defined (SIGTRAP) + ENTRY(SIGTRAP, "SIGTRAP", "Trace/breakpoint trap"), +#endif +/* Put SIGIOT before SIGABRT, so that if SIGIOT==SIGABRT then SIGABRT + overrides SIGIOT. SIGABRT is in ANSI and POSIX.1, and SIGIOT isn't. */ +#if defined (SIGIOT) + ENTRY(SIGIOT, "SIGIOT", "IOT trap"), +#endif +#if defined (SIGABRT) + ENTRY(SIGABRT, "SIGABRT", "Aborted"), +#endif +#if defined (SIGEMT) + ENTRY(SIGEMT, "SIGEMT", "Emulation trap"), +#endif +#if defined (SIGFPE) + ENTRY(SIGFPE, "SIGFPE", "Arithmetic exception"), +#endif +#if defined (SIGKILL) + ENTRY(SIGKILL, "SIGKILL", "Killed"), +#endif +#if defined (SIGBUS) + ENTRY(SIGBUS, "SIGBUS", "Bus error"), +#endif +#if defined (SIGSEGV) + ENTRY(SIGSEGV, "SIGSEGV", "Segmentation fault"), +#endif +#if defined (SIGSYS) + ENTRY(SIGSYS, "SIGSYS", "Bad system call"), +#endif +#if defined (SIGPIPE) + ENTRY(SIGPIPE, "SIGPIPE", "Broken pipe"), +#endif +#if defined (SIGALRM) + ENTRY(SIGALRM, "SIGALRM", "Alarm clock"), +#endif +#if defined (SIGTERM) + ENTRY(SIGTERM, "SIGTERM", "Terminated"), +#endif +#if defined (SIGUSR1) + ENTRY(SIGUSR1, "SIGUSR1", "User defined signal 1"), +#endif +#if defined (SIGUSR2) + ENTRY(SIGUSR2, "SIGUSR2", "User defined signal 2"), +#endif +/* Put SIGCLD before SIGCHLD, so that if SIGCLD==SIGCHLD then SIGCHLD + overrides SIGCLD. SIGCHLD is in POXIX.1 */ +#if defined (SIGCLD) + ENTRY(SIGCLD, "SIGCLD", "Child status changed"), +#endif +#if defined (SIGCHLD) + ENTRY(SIGCHLD, "SIGCHLD", "Child status changed"), +#endif +#if defined (SIGPWR) + ENTRY(SIGPWR, "SIGPWR", "Power fail/restart"), +#endif +#if defined (SIGWINCH) + ENTRY(SIGWINCH, "SIGWINCH", "Window size changed"), +#endif +#if defined (SIGURG) + ENTRY(SIGURG, "SIGURG", "Urgent I/O condition"), +#endif +#if defined (SIGIO) + /* "I/O pending" has also been suggested, but is misleading since the + signal only happens when the process has asked for it, not everytime + I/O is pending. */ + ENTRY(SIGIO, "SIGIO", "I/O possible"), +#endif +#if defined (SIGPOLL) + ENTRY(SIGPOLL, "SIGPOLL", "Pollable event occurred"), +#endif +#if defined (SIGSTOP) + ENTRY(SIGSTOP, "SIGSTOP", "Stopped (signal)"), +#endif +#if defined (SIGTSTP) + ENTRY(SIGTSTP, "SIGTSTP", "Stopped (user)"), +#endif +#if defined (SIGCONT) + ENTRY(SIGCONT, "SIGCONT", "Continued"), +#endif +#if defined (SIGTTIN) + ENTRY(SIGTTIN, "SIGTTIN", "Stopped (tty input)"), +#endif +#if defined (SIGTTOU) + ENTRY(SIGTTOU, "SIGTTOU", "Stopped (tty output)"), +#endif +#if defined (SIGVTALRM) + ENTRY(SIGVTALRM, "SIGVTALRM", "Virtual timer expired"), +#endif +#if defined (SIGPROF) + ENTRY(SIGPROF, "SIGPROF", "Profiling timer expired"), +#endif +#if defined (SIGXCPU) + ENTRY(SIGXCPU, "SIGXCPU", "CPU time limit exceeded"), +#endif +#if defined (SIGXFSZ) + ENTRY(SIGXFSZ, "SIGXFSZ", "File size limit exceeded"), +#endif +#if defined (SIGWIND) + ENTRY(SIGWIND, "SIGWIND", "SIGWIND"), +#endif +#if defined (SIGPHONE) + ENTRY(SIGPHONE, "SIGPHONE", "SIGPHONE"), +#endif +#if defined (SIGLOST) + ENTRY(SIGLOST, "SIGLOST", "Resource lost"), +#endif +#if defined (SIGWAITING) + ENTRY(SIGWAITING, "SIGWAITING", "Process's LWPs are blocked"), +#endif +#if defined (SIGLWP) + ENTRY(SIGLWP, "SIGLWP", "Signal LWP"), +#endif +#if defined (SIGDANGER) + ENTRY(SIGDANGER, "SIGDANGER", "Swap space dangerously low"), +#endif +#if defined (SIGGRANT) + ENTRY(SIGGRANT, "SIGGRANT", "Monitor mode granted"), +#endif +#if defined (SIGRETRACT) + ENTRY(SIGRETRACT, "SIGRETRACT", "Need to relinguish monitor mode"), +#endif +#if defined (SIGMSG) + ENTRY(SIGMSG, "SIGMSG", "Monitor mode data available"), +#endif +#if defined (SIGSOUND) + ENTRY(SIGSOUND, "SIGSOUND", "Sound completed"), +#endif +#if defined (SIGSAK) + ENTRY(SIGSAK, "SIGSAK", "Secure attention"), +#endif + ENTRY(0, NULL, NULL) +}; + +/* Translation table allocated and initialized at runtime. Indexed by the + signal value to find the equivalent symbolic value. */ + +static const char **signal_names; +static int num_signal_names = 0; + +/* Translation table allocated and initialized at runtime, if it does not + already exist in the host environment. Indexed by the signal value to find + the descriptive string. + + We don't export it for use in other modules because even though it has the + same name, it differs from other implementations in that it is dynamically + initialized rather than statically initialized. */ + +#ifndef HAVE_SYS_SIGLIST + +static int sys_nsig; +static const char **sys_siglist; + +#else + +#ifdef NSIG +static int sys_nsig = NSIG; +#else +#ifdef _NSIG +static int sys_nsig = _NSIG; +#endif +#endif +extern const char * const sys_siglist[]; + +#endif + + +/* + +NAME + + init_signal_tables -- initialize the name and message tables + +SYNOPSIS + + static void init_signal_tables (); + +DESCRIPTION + + Using the signal_table, which is initialized at compile time, generate + the signal_names and the sys_siglist (if needed) tables, which are + indexed at runtime by a specific signal value. + +BUGS + + The initialization of the tables may fail under low memory conditions, + in which case we don't do anything particularly useful, but we don't + bomb either. Who knows, it might succeed at a later point if we free + some memory in the meantime. In any case, the other routines know + how to deal with lack of a table after trying to initialize it. This + may or may not be considered to be a bug, that we don't specifically + warn about this particular failure mode. + +*/ + +static void +init_signal_tables () +{ + const struct signal_info *eip; + int nbytes; + + /* If we haven't already scanned the signal_table once to find the maximum + signal value, then go find it now. */ + + if (num_signal_names == 0) + { + for (eip = signal_table; eip -> name != NULL; eip++) + { + if (eip -> value >= num_signal_names) + { + num_signal_names = eip -> value + 1; + } + } + } + + /* Now attempt to allocate the signal_names table, zero it out, and then + initialize it from the statically initialized signal_table. */ + + if (signal_names == NULL) + { + nbytes = num_signal_names * sizeof (char *); + if ((signal_names = (const char **) malloc (nbytes)) != NULL) + { + memset (signal_names, 0, nbytes); + for (eip = signal_table; eip -> name != NULL; eip++) + { + signal_names[eip -> value] = eip -> name; + } + } + } + +#ifndef HAVE_SYS_SIGLIST + + /* Now attempt to allocate the sys_siglist table, zero it out, and then + initialize it from the statically initialized signal_table. */ + + if (sys_siglist == NULL) + { + nbytes = num_signal_names * sizeof (char *); + if ((sys_siglist = (const char **) malloc (nbytes)) != NULL) + { + memset (sys_siglist, 0, nbytes); + sys_nsig = num_signal_names; + for (eip = signal_table; eip -> name != NULL; eip++) + { + sys_siglist[eip -> value] = eip -> msg; + } + } + } + +#endif + +} + + +/* + +@deftypefn Extension int signo_max (void) + +Returns the maximum signal value for which a corresponding symbolic +name or message is available. Note that in the case where we use the +@code{sys_siglist} supplied by the system, it is possible for there to +be more symbolic names than messages, or vice versa. In fact, the +manual page for @code{psignal(3b)} explicitly warns that one should +check the size of the table (@code{NSIG}) before indexing it, since +new signal codes may be added to the system before they are added to +the table. Thus @code{NSIG} might be smaller than value implied by +the largest signo value defined in @code{}. + +We return the maximum value that can be used to obtain a meaningful +symbolic name or message. + +@end deftypefn + +*/ + +int +signo_max () +{ + int maxsize; + + if (signal_names == NULL) + { + init_signal_tables (); + } + maxsize = MAX (sys_nsig, num_signal_names); + return (maxsize - 1); +} + + +/* + +@deftypefn Supplemental {const char *} strsignal (int @var{signo}) + +Maps an signal number to an signal message string, the contents of +which are implementation defined. On systems which have the external +variable @code{sys_siglist}, these strings will be the same as the +ones used by @code{psignal()}. + +If the supplied signal number is within the valid range of indices for +the @code{sys_siglist}, but no message is available for the particular +signal number, then returns the string @samp{Signal @var{num}}, where +@var{num} is the signal number. + +If the supplied signal number is not a valid index into +@code{sys_siglist}, returns @code{NULL}. + +The returned string is only guaranteed to be valid only until the next +call to @code{strsignal}. + +@end deftypefn + +*/ + +#ifndef HAVE_STRSIGNAL + +const char * +strsignal (signo) + int signo; +{ + const char *msg; + static char buf[32]; + +#ifndef HAVE_SYS_SIGLIST + + if (signal_names == NULL) + { + init_signal_tables (); + } + +#endif + + if ((signo < 0) || (signo >= sys_nsig)) + { + /* Out of range, just return NULL */ + msg = NULL; + } + else if ((sys_siglist == NULL) || (sys_siglist[signo] == NULL)) + { + /* In range, but no sys_siglist or no entry at this index. */ + sprintf (buf, "Signal %d", signo); + msg = (const char *) buf; + } + else + { + /* In range, and a valid message. Just return the message. */ + msg = (const char *) sys_siglist[signo]; + } + + return (msg); +} + +#endif /* ! HAVE_STRSIGNAL */ + +/* + +@deftypefn Extension {const char*} strsigno (int @var{signo}) + +Given an signal number, returns a pointer to a string containing the +symbolic name of that signal number, as found in @code{}. + +If the supplied signal number is within the valid range of indices for +symbolic names, but no name is available for the particular signal +number, then returns the string @samp{Signal @var{num}}, where +@var{num} is the signal number. + +If the supplied signal number is not within the range of valid +indices, then returns @code{NULL}. + +The contents of the location pointed to are only guaranteed to be +valid until the next call to @code{strsigno}. + +@end deftypefn + +*/ + +const char * +strsigno (signo) + int signo; +{ + const char *name; + static char buf[32]; + + if (signal_names == NULL) + { + init_signal_tables (); + } + + if ((signo < 0) || (signo >= num_signal_names)) + { + /* Out of range, just return NULL */ + name = NULL; + } + else if ((signal_names == NULL) || (signal_names[signo] == NULL)) + { + /* In range, but no signal_names or no entry at this index. */ + sprintf (buf, "Signal %d", signo); + name = (const char *) buf; + } + else + { + /* In range, and a valid name. Just return the name. */ + name = signal_names[signo]; + } + + return (name); +} + + +/* + +@deftypefn Extension int strtosigno (const char *@var{name}) + +Given the symbolic name of a signal, map it to a signal number. If no +translation is found, returns 0. + +@end deftypefn + +*/ + +int +strtosigno (name) + const char *name; +{ + int signo = 0; + + if (name != NULL) + { + if (signal_names == NULL) + { + init_signal_tables (); + } + for (signo = 0; signo < num_signal_names; signo++) + { + if ((signal_names[signo] != NULL) && + (strcmp (name, signal_names[signo]) == 0)) + { + break; + } + } + if (signo == num_signal_names) + { + signo = 0; + } + } + return (signo); +} + + +/* + +@deftypefn Supplemental void psignal (unsigned @var{signo}, char *@var{message}) + +Print @var{message} to the standard error, followed by a colon, +followed by the description of the signal specified by @var{signo}, +followed by a newline. + +@end deftypefn + +*/ + +#ifndef HAVE_PSIGNAL + +void +psignal (signo, message) + int signo; + const char *message; +{ + if (signal_names == NULL) + { + init_signal_tables (); + } + if ((signo <= 0) || (signo >= sys_nsig)) + { + fprintf (stderr, "%s: unknown signal\n", message); + } + else + { + fprintf (stderr, "%s: %s\n", message, sys_siglist[signo]); + } +} + +#endif /* ! HAVE_PSIGNAL */ + + +/* A simple little main that does nothing but print all the signal translations + if MAIN is defined and this file is compiled and linked. */ + +#ifdef MAIN + +#include + +int +main () +{ + int signo; + int maxsigno; + const char *name; + const char *msg; + + maxsigno = signo_max (); + printf ("%d entries in names table.\n", num_signal_names); + printf ("%d entries in messages table.\n", sys_nsig); + printf ("%d is max useful index.\n", maxsigno); + + /* Keep printing values until we get to the end of *both* tables, not + *either* table. Note that knowing the maximum useful index does *not* + relieve us of the responsibility of testing the return pointer for + NULL. */ + + for (signo = 0; signo <= maxsigno; signo++) + { + name = strsigno (signo); + name = (name == NULL) ? "" : name; + msg = strsignal (signo); + msg = (msg == NULL) ? "" : msg; + printf ("%-4d%-18s%s\n", signo, name, msg); + } + + return 0; +} + +#endif Index: trunk/sw/Meansoffreedom/C_plus_hack/c++locale.cc =================================================================== --- trunk/sw/Meansoffreedom/C_plus_hack/c++locale.cc (nonexistent) +++ trunk/sw/Meansoffreedom/C_plus_hack/c++locale.cc (revision 26) @@ -0,0 +1,188 @@ +// Wrapper for underlying C-language localization -*- C++ -*- + +// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, +// USA. + +// As a special exception, you may use this file as part of a free software +// library without restriction. Specifically, if other files instantiate +// templates or use macros or inline functions from this file, or you compile +// this file and link it with other files to produce an executable, this +// file does not by itself cause the resulting executable to be covered by +// the GNU General Public License. This exception does not however +// invalidate any other reasons why the executable file might be covered by +// the GNU General Public License. + +// +// ISO C++ 14882: 22.8 Standard locale categories. +// + +// Written by Benjamin Kosnik + +#include // For errno +#include // For isinf, finite, finitef, fabs +#include // For strof, strtold +#include + +#ifdef _GLIBCXX_HAVE_IEEEFP_H +#include +#endif + +namespace std +{ + // Specializations for all types used in num_get. + template<> + void + __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err, + const __c_locale&) + { + if (!(__err & ios_base::failbit)) + { + // Assumes __s formatted for "C" locale. + char* __old = strdup(setlocale(LC_ALL, NULL)); + setlocale(LC_ALL, "C"); + char* __sanity; + errno = 0; +// #if defined(_GLIBCXX_HAVE_STRTOF) +#if 0 + float __f = strtof(__s, &__sanity); +#else + double __d = strtod(__s, &__sanity); + float __f = static_cast(__d); +// #ifdef _GLIBCXX_HAVE_FINITEF +#if 0 + if (!finitef (__f)) + errno = ERANGE; +// #elif defined (_GLIBCXX_HAVE_FINITE) +#elif 0 + if (!finite (static_cast (__f))) + errno = ERANGE; +// #elif defined (_GLIBCXX_HAVE_ISINF) +#elif 0 + if (isinf (static_cast (__f))) + errno = ERANGE; +#else + if (fabs(__d) > numeric_limits::max()) + errno = ERANGE; +#endif +#endif + if (__sanity != __s && errno != ERANGE) + __v = __f; + else + __err |= ios_base::failbit; + setlocale(LC_ALL, __old); + free(__old); + } + } + + template<> + void + __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err, + const __c_locale&) + { + if (!(__err & ios_base::failbit)) + { + // Assumes __s formatted for "C" locale. + char* __old = strdup(setlocale(LC_ALL, NULL)); + setlocale(LC_ALL, "C"); + char* __sanity; + errno = 0; + double __d = strtod(__s, &__sanity); + if (__sanity != __s && errno != ERANGE) + __v = __d; + else + __err |= ios_base::failbit; + setlocale(LC_ALL, __old); + free(__old); + } + } + + template<> + void + __convert_to_v(const char* __s, long double& __v, + ios_base::iostate& __err, const __c_locale&) + { + if (!(__err & ios_base::failbit)) + { + // Assumes __s formatted for "C" locale. + char* __old = strdup(setlocale(LC_ALL, NULL)); + setlocale(LC_ALL, "C"); +#if defined(_GLIBCXX_HAVE_STRTOLD) + char* __sanity; + errno = 0; + long double __ld = strtold(__s, &__sanity); + if (__sanity != __s && errno != ERANGE) + __v = __ld; +#else + typedef char_traits::int_type int_type; + long double __ld; + errno = 0; + int __p = sscanf(__s, "%Lf", &__ld); + if (errno == ERANGE) + __p = 0; +#ifdef _GLIBCXX_HAVE_FINITEL + if ((__p == 1) && !finitel (__ld)) + __p = 0; +#endif + if (__p && static_cast(__p) != char_traits::eof()) + __v = __ld; +#endif + else + __err |= ios_base::failbit; + setlocale(LC_ALL, __old); + free(__old); + } + } + + void + locale::facet::_S_create_c_locale(__c_locale& __cloc, const char* __s, + __c_locale) + { + // Currently, the generic model only supports the "C" locale. + // See http://gcc.gnu.org/ml/libstdc++/2003-02/msg00345.html + __cloc = NULL; + if (strcmp(__s, "C")) + __throw_runtime_error(__N("locale::facet::_S_create_c_locale " + "name not valid")); + } + + void + locale::facet::_S_destroy_c_locale(__c_locale& __cloc) + { __cloc = NULL; } + + __c_locale + locale::facet::_S_clone_c_locale(__c_locale&) + { return __c_locale(); } +} // namespace std + +namespace __gnu_cxx +{ + const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] = + { + "LC_CTYPE", + "LC_NUMERIC", + "LC_TIME", + "LC_COLLATE", + "LC_MONETARY", + "LC_MESSAGES" + }; +} + +namespace std +{ + const char* const* const locale::_S_categories = __gnu_cxx::category_names; +} // namespace std Index: trunk/sw/Meansoffreedom/Meansoffreedom.URL =================================================================== --- trunk/sw/Meansoffreedom/Meansoffreedom.URL (nonexistent) +++ trunk/sw/Meansoffreedom/Meansoffreedom.URL (revision 26) @@ -0,0 +1,2 @@ +[InternetShortcut] +URL=http://www.meansoffreedom.com/ Index: trunk/sw/Meansoffreedom/Openrisc toolchain.pdf =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: trunk/sw/Meansoffreedom/Openrisc toolchain.pdf =================================================================== --- trunk/sw/Meansoffreedom/Openrisc toolchain.pdf (nonexistent) +++ trunk/sw/Meansoffreedom/Openrisc toolchain.pdf (revision 26)
trunk/sw/Meansoffreedom/Openrisc toolchain.pdf Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: trunk/sw/Meansoffreedom/uClibc-0.9.28-or32-libc-support.bz2 =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: trunk/sw/Meansoffreedom/uClibc-0.9.28-or32-libc-support.bz2 =================================================================== --- trunk/sw/Meansoffreedom/uClibc-0.9.28-or32-libc-support.bz2 (nonexistent) +++ trunk/sw/Meansoffreedom/uClibc-0.9.28-or32-libc-support.bz2 (revision 26)
trunk/sw/Meansoffreedom/uClibc-0.9.28-or32-libc-support.bz2 Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: trunk/sw/Meansoffreedom/uClibc-0.9.28-or32-unified.bz2 =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: trunk/sw/Meansoffreedom/uClibc-0.9.28-or32-unified.bz2 =================================================================== --- trunk/sw/Meansoffreedom/uClibc-0.9.28-or32-unified.bz2 (nonexistent) +++ trunk/sw/Meansoffreedom/uClibc-0.9.28-or32-unified.bz2 (revision 26)
trunk/sw/Meansoffreedom/uClibc-0.9.28-or32-unified.bz2 Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.