upgraded to gcc 4.6.1 and glibc 2.14.1 (XCC)
authorAndrew Waterman <waterman@s144.Millennium.Berkeley.EDU>
Thu, 3 Nov 2011 01:20:00 +0000 (18:20 -0700)
committerKevin Klues <klueska@cs.berkeley.edu>
Thu, 3 Nov 2011 01:28:05 +0000 (18:28 -0700)
This commit includes not only brigning in the new gcc and glibc, but also the
changes to the glibc-*-ros files as well.  We did this so that this commit
will compile and build properly.  To see the diff of the glibc-*-ros files
with the old version, run the following command relative to checking out THIS
commit:

git diff HEAD^:tools/compilers/gcc-glibc/glibc-2.11.1-ros \
  HEAD:tools/compilers/gcc-glibc/glibc-2.14.1-ros

286 files changed:
tools/compilers/gcc-glibc/Makefile
tools/compilers/gcc-glibc/binutils-2.18-ros.patch [deleted file]
tools/compilers/gcc-glibc/binutils-2.21.1-riscv.patch
tools/compilers/gcc-glibc/binutils-2.21.1-ros.patch
tools/compilers/gcc-glibc/gcc-4.3.2-ros.patch [deleted file]
tools/compilers/gcc-glibc/gcc-4.6.1-riscv.patch [new file with mode: 0644]
tools/compilers/gcc-glibc/gcc-4.6.1-ros.patch [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/Makeconfig [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/abi-tags [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/configure [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/elf/Makefile [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/include/features.h [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/libio/genops.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/libio/libio.h [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/malloc/Makefile [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/manual/Makefile [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/manual/libm-err.texi [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/nptl/shlib-versions [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/rt/Makefile [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/scripts/config.sub [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/shlib-versions [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/socket/accept4.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/socket/connect.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/generic/sys/ucontext.h [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/i386/configure [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/i386/tlsdesc.sym [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/posix/getaddrinfo.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/posix/pwrite64.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/Implies [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/Makefile [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/Subdirs [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/Versions [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/____longjmp_chk.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/_exit.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/abort.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/access.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/bits/dirent.h [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/bits/errno.h [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/bits/fcntl.h [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/bits/ioctls.h [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/bits/libc-lock.h [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/bits/local_lim.h [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/bits/mman.h [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/bits/semaphore.h [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/bits/sigcontext.h [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/bits/signum.h [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/bits/socket.h [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/bits/stat.h [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/bits/stdio-lock.h [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/bits/termios.h [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/bits/typesizes.h [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/bits/utmp.h [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/brk.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/chdir.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/check_fds.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/check_native.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/chmod.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/close.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/closedir.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/configure [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/dirfd.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/dirstream.h [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/dl-execstack.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/errlist.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/errno.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/execve.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/fchdir.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/fcntl.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/flockfile.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/fork.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/ftrylockfile.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/funlockfile.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/fxstat.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/fxstat64.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/getaddrinfo.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/getcwd.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/getdents.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/getpagesize.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/getpeername.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/getpid.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/getsysstats.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/gettimeofday.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/i386/sysdep.h [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/i386/tls.h [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/init-first.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/isatty.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/kernel-features.h [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/kill.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/link.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/lowlevellock.h [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/lseek.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/lxstat.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/lxstat64.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/machine/trap.h [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/madvise.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/malloc-machine.h [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/mkdir.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/mmap.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/mprotect.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/munmap.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/net/if.h [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/netpacket/packet.h [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/open.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/opendir.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/poll.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/ptsname.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/read.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/readdir.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/readdir_r.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/readlink.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/rename.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/rmdir.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/rtld.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/sa_len.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/sbrk.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/sched_cpualloc.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/sched_yield.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/setgid.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/setrlimit.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/setuid.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/sparc/sparc32/sysdep.h [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/sparc/sparc32/tls.h [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/start.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/symlink.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/sys/param.h [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/sys/procfs.h [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/sys/queue.h [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/syscall.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/sysconf.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/sysdep-cancel.h [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/tcgetattr.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/tcsetattr.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/time.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/times.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/truncate.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/umask.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/unlink.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/wait.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/waitpid.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/write.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/writev.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/xstat.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/xstat64.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/sparc/fpu/bits/mathinline.h [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/sparc/sparc32/Implies [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/sparc/sparc32/dl-machine.h [deleted file]
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/unix/opendir.c [deleted file]
tools/compilers/gcc-glibc/glibc-2.14.1-riscv.patch [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/Makeconfig [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/abi-tags [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/elf/Makefile [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/libio/genops.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/libio/libio.h [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/malloc/Makefile [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/nptl/shlib-versions [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/posix/Makefile [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/rt/Makefile [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/scripts/config.sub [new file with mode: 0755]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/shlib-versions [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/socket/accept4.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/socket/connect.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/generic/sys/ucontext.h [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/i386/configure [new file with mode: 0755]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/i386/configure.in [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/i386/tlsdesc.sym [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/posix/getaddrinfo.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/posix/pwrite64.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/Implies [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/Makefile [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/Subdirs [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/Versions [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/____longjmp_chk.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/_exit.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/abort.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/access.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/bits/dirent.h [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/bits/errno.h [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/bits/fcntl.h [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/bits/ioctls.h [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/bits/libc-lock.h [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/bits/local_lim.h [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/bits/mman.h [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/bits/semaphore.h [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/bits/sigcontext.h [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/bits/signum.h [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/bits/socket.h [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/bits/stat.h [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/bits/stdio-lock.h [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/bits/termios.h [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/bits/typesizes.h [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/bits/utmp.h [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/brk.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/chdir.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/check_fds.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/check_native.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/chmod.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/close.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/closedir.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/configure [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/dirfd.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/dirstream.h [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/dl-execstack.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/errlist.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/errno.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/execve.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/fchdir.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/fcntl.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/flockfile.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/fork.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/ftrylockfile.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/funlockfile.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/fxstat.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/fxstat64.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/getaddrinfo.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/getcwd.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/getdents.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/getpagesize.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/getpeername.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/getpid.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/getsysstats.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/gettimeofday.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/i386/sysdep.h [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/i386/tls.h [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/init-first.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/isatty.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/kernel-features.h [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/kill.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/link.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/lowlevellock.h [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/lseek.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/lxstat.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/lxstat64.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/machine/trap.h [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/madvise.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/malloc-machine.h [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/mkdir.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/mmap.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/mprotect.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/munmap.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/net/if.h [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/netpacket/packet.h [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/open.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/opendir.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/poll.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/ptsname.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/read.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/readdir.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/readdir_r.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/readlink.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/rename.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/rmdir.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/rtld.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/sa_len.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/sbrk.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/sched_cpualloc.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/sched_yield.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/setgid.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/setrlimit.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/setuid.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/sparc/sparc32/sysdep.h [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/sparc/sparc32/tls.h [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/start.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/symlink.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/sys/param.h [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/sys/procfs.h [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/sys/queue.h [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/syscall.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/sysconf.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/sysdep-cancel.h [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/tcgetattr.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/tcsetattr.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/time.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/times.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/truncate.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/umask.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/unlink.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/wait.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/waitpid.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/write.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/writev.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/xstat.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/xstat64.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/sparc/fpu/bits/mathinline.h [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/sparc/sparc32/Implies [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/sparc/sparc32/dl-machine.h [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/unix/opendir.c [new file with mode: 0644]

index 0033942..cddf99a 100644 (file)
@@ -20,9 +20,16 @@ ifneq ($(AWK),GNU)
 $(error You need to have 'gawk' installed on your system!)
 endif
 
+# Check to make sure that we have the GMP, MPFR, and MPC libraries installed
+GMP_OK := $(shell echo "int main() {return 0;}" | gcc -x c - -lgmp -lmpfr -lmpc -o /dev/null > /dev/null && echo OK)
+ifneq ($(GMP_OK),OK)
+$(error You need to have the libraries GMP, MPFR, and MPC installed on your system!)
+endif
+
+
 BINUTILS_VERSION := 2.21.1
-GCC_VERSION := 4.3.2
-GLIBC_VERSION := 2.11.1
+GCC_VERSION := 4.6.1
+GLIBC_VERSION := 2.14.1
 
 BUILDDIR ?= $(shell pwd)/
 ROSDIR ?= $(BUILDDIR)/../../../
@@ -31,7 +38,7 @@ DESTDIR ?= /
 # Configuration parameters for make-riscv
 RISCV_ARCH := riscv
 RISCV_BINARY_PREFIX := $(RISCV_ARCH)-ros-
-RISCV_GCC_BUILD_FLAGS := --with-cpu=v8
+RISCV_GCC_BUILD_FLAGS :=
 RISCV_CFLAGS :=
 
 # Configuration parameters for x86
@@ -134,15 +141,15 @@ binutils-$(BINUTILS_VERSION): binutils-$(BINUTILS_VERSION).tar.bz2
        rm -rf binutils-$(BINUTILS_VERSION);
        tar -jxf binutils-$(BINUTILS_VERSION).tar.bz2
        patch -p0 < binutils-$(BINUTILS_VERSION)-ros.patch
-       patch -p0 < binutils-$(BINUTILS_VERSION)-riscv.patch
+       patch --no-backup-if-mismatch -p0 < binutils-$(BINUTILS_VERSION)-riscv.patch
 
-gcc-$(GCC_VERSION):
+gcc-$(GCC_VERSION): gcc-$(GCC_VERSION).tar.bz2
        rm -rf gcc-$(GCC_VERSION)
-       tar -zxf gcc-$(GCC_VERSION).tar.gz
-       cd gcc-$(GCC_VERSION); \
-       patch -p1 < ../gcc-$(GCC_VERSION)-ros.patch
+       tar -jxf gcc-$(GCC_VERSION).tar.bz2
+       patch -p0 < gcc-$(GCC_VERSION)-ros.patch
+       patch --no-backup-if-mismatch -p0 < gcc-$(GCC_VERSION)-riscv.patch
 
-glibc-$(GLIBC_VERSION): 
+glibc-$(GLIBC_VERSION): glibc-$(GLIBC_VERSION).tar.bz2
        rm -rf glibc-$(GLIBC_VERSION)
        tar -jxf glibc-$(GLIBC_VERSION).tar.bz2
        rm glibc-$(GLIBC_VERSION)/sysdeps/sparc/sparc32/elf/start.S
@@ -151,6 +158,7 @@ glibc-$(GLIBC_VERSION):
        rm glibc-$(GLIBC_VERSION)/sysdeps/i386/init-first.c
        rm glibc-$(GLIBC_VERSION)/sysdeps/i386/sysdep.h
        $(MAKE) .glibc-patch
+       patch --no-backup-if-mismatch -p0 < glibc-$(GLIBC_VERSION)-riscv.patch
 
 .glibc-patch: glibc-$(GLIBC_VERSION)
        -cd glibc-$(GLIBC_VERSION); \
@@ -249,9 +257,10 @@ $(BINARY_PREFIX)gcc-stage2-builddir: gcc-$(GCC_VERSION)
                --disable-checking \
                --disable-werror \
                --disable-multilib \
-               --disable-libmudflap \
-               --disable-libssp \
-               --disable-libgomp \
+               --disable-libmudflap \
+               --disable-libssp \
+               --disable-libquadmath \
+               --disable-libgomp \
                --disable-nls \
                --program-prefix=$(BINARY_PREFIX) \
                --target=$(ARCH)-ros \
@@ -269,7 +278,7 @@ $(BINARY_PREFIX)gcc-stage2-builddir: gcc-$(GCC_VERSION)
        make -j $(MAKE_JOBS) inhibit_libc=true cross-compiling=yes
 
 .$(BINARY_PREFIX)gcc-stage1-install: 
-       cd $(BINARY_PREFIX)gcc-stage1-builddir; \
+       -cd $(BINARY_PREFIX)gcc-stage1-builddir; \
        make -j $(MAKE_JOBS) install
        #-ln -vs libgcc.a `$(BINARY_PREFIX)gcc -print-libgcc-file-name | \
        #                 sed 's/libgcc/&_eh/'`
@@ -306,7 +315,7 @@ $(BINARY_PREFIX)gcc-stage2-builddir: gcc-$(GCC_VERSION)
        ../gcc-$(GCC_VERSION)/configure \
                  --enable-shared \
                  --disable-multilib \
-                 --disable-nls \
+                 --disable-nls \
                  --program-prefix=$(BINARY_PREFIX) \
                  --target=$(ARCH)-ros \
                  --prefix=$(INSTDIR) \
@@ -327,18 +336,20 @@ $(BINARY_PREFIX)gcc-stage2-builddir: gcc-$(GCC_VERSION)
        make -j $(MAKE_JOBS) install
 
 patches:
-       rm -rf gcc-$(GCC_VERSION)/libstdc++-v3/autom4te.cache
-       mv gcc-$(GCC_VERSION) gcc-$(GCC_VERSION).new
-       tar -zxf gcc-$(GCC_VERSION).tar.gz
-       -diff -ruN gcc-$(GCC_VERSION) gcc-$(GCC_VERSION).new \
+       rm -rf orig-src
+       mkdir orig-src
+       
+       find . -name autom4te.cache | xargs rm -rf
+       patch --no-backup-if-mismatch -Rp0 < gcc-$(GCC_VERSION)-riscv.patch
+       tar -C orig-src -jxf gcc-$(GCC_VERSION).tar.bz2
+       -diff -ruN orig-src/gcc-$(GCC_VERSION) gcc-$(GCC_VERSION) \
              > gcc-$(GCC_VERSION)-ros.patch
-       rm -rf gcc-$(GCC_VERSION)
-       mv gcc-$(GCC_VERSION).new gcc-$(GCC_VERSION)
+       patch --no-backup-if-mismatch -p0 < gcc-$(GCC_VERSION)-riscv.patch
        
-       mv binutils-$(BINUTILS_VERSION) binutils-$(BINUTILS_VERSION).new
-       tar -zxf binutils-$(BINUTILS_VERSION).tar.gz
-       -diff -ruN binutils-$(BINUTILS_VERSION) binutils-$(BINUTILS_VERSION).new \
+       patch --no-backup-if-mismatch -Rp0 < binutils-$(BINUTILS_VERSION)-riscv.patch
+       tar -C orig-src -jxf binutils-$(BINUTILS_VERSION).tar.bz2
+       -diff -ruN orig-src/binutils-$(BINUTILS_VERSION) binutils-$(BINUTILS_VERSION) \
              > binutils-$(BINUTILS_VERSION)-ros.patch
-       rm -rf binutils-$(BINUTILS_VERSION)
-       mv binutils-$(BINUTILS_VERSION).new binutils-$(BINUTILS_VERSION)
-
+       patch --no-backup-if-mismatch -p0 < binutils-$(BINUTILS_VERSION)-riscv.patch
+       
+       rm -rf orig-src
diff --git a/tools/compilers/gcc-glibc/binutils-2.18-ros.patch b/tools/compilers/gcc-glibc/binutils-2.18-ros.patch
deleted file mode 100644 (file)
index 09477e0..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-diff -ruN binutils-2.18/bfd/config.bfd binutils-2.18.new/bfd/config.bfd
---- binutils-2.18/bfd/config.bfd       2007-08-28 10:19:33.000000000 -0700
-+++ binutils-2.18.new/bfd/config.bfd   2010-02-27 15:18:45.000000000 -0800
-@@ -499,6 +499,9 @@
-   i[3-7]86-*-aros*)
-     targ_defvec=bfd_elf32_i386_vec
-     ;;
-+  i[3-7]86-*-ros*)
-+    targ_defvec=bfd_elf32_i386_vec
-+    ;;
-   i[3-7]86-*-chorus*)
-     targ_defvec=bfd_elf32_i386_vec
-     ;;
-@@ -1349,6 +1352,9 @@
-     targ_defvec=bfd_elf32_sparc_vec
-     targ_selvecs=sunos_big_vec
-     ;;
-+  sparc-*-ros*) 
-+    targ_defvec=bfd_elf32_sparc_vec
-+    ;;
- #ifdef BFD64
-   sparc-*-solaris2* | sparcv9-*-solaris2* | sparc64-*-solaris2*)
-     targ_defvec=bfd_elf32_sparc_vec
-diff -ruN binutils-2.18/config.sub binutils-2.18.new/config.sub
---- binutils-2.18/config.sub   2007-08-06 13:00:30.000000000 -0700
-+++ binutils-2.18.new/config.sub       2010-02-27 15:18:45.000000000 -0800
-@@ -1207,7 +1207,7 @@
-             | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
-             | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
-             | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
--            | -aos* \
-+            | -aos* | -ros* \
-             | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
-             | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
-             | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
-diff -ruN binutils-2.18/gas/configure.tgt binutils-2.18.new/gas/configure.tgt
---- binutils-2.18/gas/configure.tgt    2007-08-28 10:19:36.000000000 -0700
-+++ binutils-2.18.new/gas/configure.tgt        2010-02-27 15:18:45.000000000 -0800
-@@ -173,6 +173,7 @@
-   i386-*-beos*)                               fmt=elf ;;
-   i386-*-coff)                                fmt=coff ;;
-   i386-*-elf)                         fmt=elf ;;
-+  i386-*-ros)                         fmt=elf ;;
-   i386-*-kaos*)                               fmt=elf ;;
-   i386-*-bsd*)                                fmt=aout em=386bsd ;;
-   i386-*-netbsd0.8)                   fmt=aout em=386bsd ;;
-@@ -357,6 +358,7 @@
-   sparc-*-linux-*)                    fmt=elf em=linux ;;
-   sparc-fujitsu-none)                 fmt=aout ;;
-   sparc-*-elf)                                fmt=elf ;;
-+  sparc-*-ros)                                fmt=elf ;;
-   sparc-*-sysv4*)                     fmt=elf ;;
-   sparc-*-solaris*)                   fmt=elf ;;
-   sparc-*-netbsdelf*)                 fmt=elf em=nbsd ;;
-diff -ruN binutils-2.18/ld/configure.tgt binutils-2.18.new/ld/configure.tgt
---- binutils-2.18/ld/configure.tgt     2007-08-28 10:19:42.000000000 -0700
-+++ binutils-2.18.new/ld/configure.tgt 2010-02-27 15:18:45.000000000 -0800
-@@ -231,6 +231,7 @@
-                       esac ;;
- i[3-7]86-*-netware)   targ_emul=i386nw ;;
- i[3-7]86-*-elf*)      targ_emul=elf_i386 ;;
-+i[3-7]86-*-ros*)      targ_emul=elf_i386 ;;
- x86_64-*-elf*)                targ_emul=elf_x86_64
-                       targ_extra_emuls=elf_i386
-                       ;;
-@@ -551,6 +552,7 @@
- sparc*-*-aout)                targ_emul=sparcaout ;;
- sparc*-*-coff)                targ_emul=coff_sparc ;;
- sparc*-*-elf)         targ_emul=elf32_sparc ;;
-+sparc*-*-ros)         targ_emul=elf32_sparc ;;
- sparc*-*-sysv4*)      targ_emul=elf32_sparc ;;
- sparc*-*-vxworks*)    targ_emul=elf32_sparc_vxworks ;;
- sparc64-*-freebsd* | sparcv9-*-freebsd* | sparc64-*-kfreebsd*-gnu | sparcv9-*-kfreebsd*-gnu)
-diff -ruN binutils-2.18/ld/emulparams/elf32_sparc.sh binutils-2.18.new/ld/emulparams/elf32_sparc.sh
---- binutils-2.18/ld/emulparams/elf32_sparc.sh 2007-08-12 12:00:07.000000000 -0700
-+++ binutils-2.18.new/ld/emulparams/elf32_sparc.sh     2010-02-27 15:18:45.000000000 -0800
-@@ -3,7 +3,7 @@
- SCRIPT_NAME=elf
- OUTPUT_FORMAT="elf32-sparc"
--TEXT_START_ADDR=0x10000
-+TEXT_START_ADDR=0x100000
- MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
- COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)"
- ALIGNMENT=8
index e274daf..f486e85 100644 (file)
@@ -1,5 +1,5 @@
-diff -ruN binutils-2.21.1-orig/bfd/archures.c binutils-2.21.1/bfd/archures.c
---- binutils-2.21.1-orig/bfd/archures.c        2010-07-23 07:52:46.000000000 -0700
+diff -x autom4te.cache -ruN ../binutils-2.21.1-orig/bfd/archures.c binutils-2.21.1/bfd/archures.c
+--- ../binutils-2.21.1-orig/bfd/archures.c     2010-07-23 07:52:46.000000000 -0700
 +++ binutils-2.21.1/bfd/archures.c     2011-10-22 18:46:17.000000000 -0700
 @@ -515,6 +515,7 @@
  extern const bfd_arch_info_type bfd_plugin_arch;
@@ -17,8 +17,8 @@ diff -ruN binutils-2.21.1-orig/bfd/archures.c binutils-2.21.1/bfd/archures.c
      &bfd_rs6000_arch,
      &bfd_rx_arch,
      &bfd_s390_arch,
-diff -ruN binutils-2.21.1-orig/bfd/bfd-in2.h binutils-2.21.1/bfd/bfd-in2.h
---- binutils-2.21.1-orig/bfd/bfd-in2.h 2011-06-27 00:39:01.000000000 -0700
+diff -x autom4te.cache -ruN ../binutils-2.21.1-orig/bfd/bfd-in2.h binutils-2.21.1/bfd/bfd-in2.h
+--- ../binutils-2.21.1-orig/bfd/bfd-in2.h      2011-06-27 00:39:01.000000000 -0700
 +++ binutils-2.21.1/bfd/bfd-in2.h      2011-10-22 18:46:17.000000000 -0700
 @@ -1919,6 +1919,9 @@
  #define bfd_mach_ppc_e500mc    5001
@@ -45,8 +45,8 @@ diff -ruN binutils-2.21.1-orig/bfd/bfd-in2.h binutils-2.21.1/bfd/bfd-in2.h
  /* This is used to tell the dynamic linker to copy the value out of
  the dynamic object into the runtime process image.  */
    BFD_RELOC_MICROBLAZE_COPY,
-diff -ruN binutils-2.21.1-orig/bfd/config.bfd binutils-2.21.1/bfd/config.bfd
---- binutils-2.21.1-orig/bfd/config.bfd        2011-04-01 05:02:42.000000000 -0700
+diff -x autom4te.cache -ruN ../binutils-2.21.1-orig/bfd/config.bfd binutils-2.21.1/bfd/config.bfd
+--- ../binutils-2.21.1-orig/bfd/config.bfd     2011-04-01 05:02:42.000000000 -0700
 +++ binutils-2.21.1/bfd/config.bfd     2011-10-22 18:46:17.000000000 -0700
 @@ -96,6 +96,7 @@
  pdp11*)                targ_archs=bfd_pdp11_arch ;;
@@ -71,8 +71,8 @@ diff -ruN binutils-2.21.1-orig/bfd/config.bfd binutils-2.21.1/bfd/config.bfd
    rx-*-elf)
      targ_defvec=bfd_elf32_rx_le_vec
      targ_selvecs="bfd_elf32_rx_be_vec bfd_elf32_rx_le_vec"
-diff -ruN binutils-2.21.1-orig/bfd/configure binutils-2.21.1/bfd/configure
---- binutils-2.21.1-orig/bfd/configure 2011-06-27 01:57:12.000000000 -0700
+diff -x autom4te.cache -ruN ../binutils-2.21.1-orig/bfd/configure binutils-2.21.1/bfd/configure
+--- ../binutils-2.21.1-orig/bfd/configure      2011-06-27 01:57:12.000000000 -0700
 +++ binutils-2.21.1/bfd/configure      2011-10-22 18:47:51.000000000 -0700
 @@ -15239,6 +15239,7 @@
      bfd_elf32_littlemips_vec)         tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
@@ -90,8 +90,8 @@ diff -ruN binutils-2.21.1-orig/bfd/configure binutils-2.21.1/bfd/configure
      bfd_elf64_mmix_vec)       tb="$tb elf64-mmix.lo elf64.lo $elf" target_size=64 ;;
      bfd_elf64_powerpc_vec)    tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf"; target_size=64 ;;
      bfd_elf64_powerpcle_vec)  tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf" target_size=64 ;;
-diff -ruN binutils-2.21.1-orig/bfd/configure.in binutils-2.21.1/bfd/configure.in
---- binutils-2.21.1-orig/bfd/configure.in      2011-06-27 01:57:10.000000000 -0700
+diff -x autom4te.cache -ruN ../binutils-2.21.1-orig/bfd/configure.in binutils-2.21.1/bfd/configure.in
+--- ../binutils-2.21.1-orig/bfd/configure.in   2011-06-27 01:57:10.000000000 -0700
 +++ binutils-2.21.1/bfd/configure.in   2011-10-22 18:46:17.000000000 -0700
 @@ -730,6 +730,7 @@
      bfd_elf32_littlemips_vec)         tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
@@ -109,8 +109,8 @@ diff -ruN binutils-2.21.1-orig/bfd/configure.in binutils-2.21.1/bfd/configure.in
      bfd_elf64_mmix_vec)       tb="$tb elf64-mmix.lo elf64.lo $elf" target_size=64 ;;
      bfd_elf64_powerpc_vec)    tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf"; target_size=64 ;;
      bfd_elf64_powerpcle_vec)  tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf" target_size=64 ;;
-diff -ruN binutils-2.21.1-orig/bfd/cpu-riscv.c binutils-2.21.1/bfd/cpu-riscv.c
---- binutils-2.21.1-orig/bfd/cpu-riscv.c       1969-12-31 16:00:00.000000000 -0800
+diff -x autom4te.cache -ruN ../binutils-2.21.1-orig/bfd/cpu-riscv.c binutils-2.21.1/bfd/cpu-riscv.c
+--- ../binutils-2.21.1-orig/bfd/cpu-riscv.c    1969-12-31 16:00:00.000000000 -0800
 +++ binutils-2.21.1/bfd/cpu-riscv.c    2011-10-22 18:50:03.000000000 -0700
 @@ -0,0 +1,78 @@
 +/* bfd back-end for mips support
@@ -191,8 +191,8 @@ diff -ruN binutils-2.21.1-orig/bfd/cpu-riscv.c binutils-2.21.1/bfd/cpu-riscv.c
 +
 +const bfd_arch_info_type bfd_riscv_arch =
 +N (64, 64, 0, "riscv", TRUE, &arch_info_struct[0]);
-diff -ruN binutils-2.21.1-orig/bfd/elf32-riscv.c binutils-2.21.1/bfd/elf32-riscv.c
---- binutils-2.21.1-orig/bfd/elf32-riscv.c     1969-12-31 16:00:00.000000000 -0800
+diff -x autom4te.cache -ruN ../binutils-2.21.1-orig/bfd/elf32-riscv.c binutils-2.21.1/bfd/elf32-riscv.c
+--- ../binutils-2.21.1-orig/bfd/elf32-riscv.c  1969-12-31 16:00:00.000000000 -0800
 +++ binutils-2.21.1/bfd/elf32-riscv.c  2011-10-22 18:50:03.000000000 -0700
 @@ -0,0 +1,2300 @@
 +/* MIPS-specific support for 32-bit ELF
@@ -2495,8 +2495,8 @@ diff -ruN binutils-2.21.1-orig/bfd/elf32-riscv.c binutils-2.21.1/bfd/elf32-riscv
 +#define ELF_COMMONPAGESIZE            0x1000
 +
 +#include "elf32-target.h"
-diff -ruN binutils-2.21.1-orig/bfd/elf64-riscv.c binutils-2.21.1/bfd/elf64-riscv.c
---- binutils-2.21.1-orig/bfd/elf64-riscv.c     1969-12-31 16:00:00.000000000 -0800
+diff -x autom4te.cache -ruN ../binutils-2.21.1-orig/bfd/elf64-riscv.c binutils-2.21.1/bfd/elf64-riscv.c
+--- ../binutils-2.21.1-orig/bfd/elf64-riscv.c  1969-12-31 16:00:00.000000000 -0800
 +++ binutils-2.21.1/bfd/elf64-riscv.c  2011-10-22 18:50:03.000000000 -0700
 @@ -0,0 +1,3298 @@
 +/* MIPS-specific support for 64-bit ELF
@@ -5797,8 +5797,8 @@ diff -ruN binutils-2.21.1-orig/bfd/elf64-riscv.c binutils-2.21.1/bfd/elf64-riscv
 +#define ELF_COMMONPAGESIZE            0x1000
 +
 +#include "elf64-target.h"
-diff -ruN binutils-2.21.1-orig/bfd/elfxx-riscv.c binutils-2.21.1/bfd/elfxx-riscv.c
---- binutils-2.21.1-orig/bfd/elfxx-riscv.c     1969-12-31 16:00:00.000000000 -0800
+diff -x autom4te.cache -ruN ../binutils-2.21.1-orig/bfd/elfxx-riscv.c binutils-2.21.1/bfd/elfxx-riscv.c
+--- ../binutils-2.21.1-orig/bfd/elfxx-riscv.c  1969-12-31 16:00:00.000000000 -0800
 +++ binutils-2.21.1/bfd/elfxx-riscv.c  2011-10-22 18:50:03.000000000 -0700
 @@ -0,0 +1,9383 @@
 +/* vim: set ts=8 */
@@ -15184,8 +15184,8 @@ diff -ruN binutils-2.21.1-orig/bfd/elfxx-riscv.c binutils-2.21.1/bfd/elfxx-riscv
 +      i_ehdrp->e_ident[EI_ABIVERSION] = 1;
 +    }
 +}
-diff -ruN binutils-2.21.1-orig/bfd/elfxx-riscv.h binutils-2.21.1/bfd/elfxx-riscv.h
---- binutils-2.21.1-orig/bfd/elfxx-riscv.h     1969-12-31 16:00:00.000000000 -0800
+diff -x autom4te.cache -ruN ../binutils-2.21.1-orig/bfd/elfxx-riscv.h binutils-2.21.1/bfd/elfxx-riscv.h
+--- ../binutils-2.21.1-orig/bfd/elfxx-riscv.h  1969-12-31 16:00:00.000000000 -0800
 +++ binutils-2.21.1/bfd/elfxx-riscv.h  2011-10-22 18:50:03.000000000 -0700
 @@ -0,0 +1,150 @@
 +/* RISC-V ELF specific backend routines.
@@ -15338,8 +15338,8 @@ diff -ruN binutils-2.21.1-orig/bfd/elfxx-riscv.h binutils-2.21.1/bfd/elfxx-riscv
 +#define elf_backend_eh_frame_address_size _bfd_riscv_elf_eh_frame_address_size
 +#define elf_backend_merge_symbol_attribute  _bfd_riscv_elf_merge_symbol_attribute
 +#define elf_backend_post_process_headers _bfd_riscv_post_process_headers
-diff -ruN binutils-2.21.1-orig/bfd/targets.c binutils-2.21.1/bfd/targets.c
---- binutils-2.21.1-orig/bfd/targets.c 2010-10-22 05:08:28.000000000 -0700
+diff -x autom4te.cache -ruN ../binutils-2.21.1-orig/bfd/targets.c binutils-2.21.1/bfd/targets.c
+--- ../binutils-2.21.1-orig/bfd/targets.c      2010-10-22 05:08:28.000000000 -0700
 +++ binutils-2.21.1/bfd/targets.c      2011-10-22 18:46:17.000000000 -0700
 @@ -624,6 +624,7 @@
  extern const bfd_target bfd_elf32_littlearm_vxworks_vec;
@@ -15357,8 +15357,8 @@ diff -ruN binutils-2.21.1-orig/bfd/targets.c binutils-2.21.1/bfd/targets.c
  extern const bfd_target bfd_elf64_mmix_vec;
  extern const bfd_target bfd_elf64_powerpc_vec;
  extern const bfd_target bfd_elf64_powerpcle_vec;
-diff -ruN binutils-2.21.1-orig/binutils/readelf.c binutils-2.21.1/binutils/readelf.c
---- binutils-2.21.1-orig/binutils/readelf.c    2011-03-16 01:36:01.000000000 -0700
+diff -x autom4te.cache -ruN ../binutils-2.21.1-orig/binutils/readelf.c binutils-2.21.1/binutils/readelf.c
+--- ../binutils-2.21.1-orig/binutils/readelf.c 2011-03-16 01:36:01.000000000 -0700
 +++ binutils-2.21.1/binutils/readelf.c 2011-10-22 18:46:17.000000000 -0700
 @@ -123,6 +123,7 @@
  #include "elf/mep.h"
@@ -15408,8 +15408,8 @@ diff -ruN binutils-2.21.1-orig/binutils/readelf.c binutils-2.21.1/binutils/reade
        case EM_SH:
          switch ((e_flags & EF_SH_MACH_MASK))
            {
-diff -ruN binutils-2.21.1-orig/config.sub binutils-2.21.1/config.sub
---- binutils-2.21.1-orig/config.sub    2010-06-01 10:53:40.000000000 -0700
+diff -x autom4te.cache -ruN ../binutils-2.21.1-orig/config.sub binutils-2.21.1/config.sub
+--- ../binutils-2.21.1-orig/config.sub 2010-06-01 10:53:40.000000000 -0700
 +++ binutils-2.21.1/config.sub 2011-10-22 18:46:17.000000000 -0700
 @@ -323,6 +323,9 @@
        ms1)
@@ -15421,8 +15421,8 @@ diff -ruN binutils-2.21.1-orig/config.sub binutils-2.21.1/config.sub
  
        # We use `pc' rather than `unknown'
        # because (1) that's what they normally are, and
-diff -ruN binutils-2.21.1-orig/gas/config/tc-riscv.c binutils-2.21.1/gas/config/tc-riscv.c
---- binutils-2.21.1-orig/gas/config/tc-riscv.c 1969-12-31 16:00:00.000000000 -0800
+diff -x autom4te.cache -ruN ../binutils-2.21.1-orig/gas/config/tc-riscv.c binutils-2.21.1/gas/config/tc-riscv.c
+--- ../binutils-2.21.1-orig/gas/config/tc-riscv.c      1969-12-31 16:00:00.000000000 -0800
 +++ binutils-2.21.1/gas/config/tc-riscv.c      2011-10-22 22:13:39.000000000 -0700
 @@ -0,0 +1,4942 @@
 +/* tc-mips.c -- assemble code for a MIPS chip.
@@ -20367,8 +20367,8 @@ diff -ruN binutils-2.21.1-orig/gas/config/tc-riscv.c binutils-2.21.1/gas/config/
 +
 +  return regnum;
 +}
-diff -ruN binutils-2.21.1-orig/gas/config/tc-riscv.h binutils-2.21.1/gas/config/tc-riscv.h
---- binutils-2.21.1-orig/gas/config/tc-riscv.h 1969-12-31 16:00:00.000000000 -0800
+diff -x autom4te.cache -ruN ../binutils-2.21.1-orig/gas/config/tc-riscv.h binutils-2.21.1/gas/config/tc-riscv.h
+--- ../binutils-2.21.1-orig/gas/config/tc-riscv.h      1969-12-31 16:00:00.000000000 -0800
 +++ binutils-2.21.1/gas/config/tc-riscv.h      2011-10-22 18:50:03.000000000 -0700
 @@ -0,0 +1,162 @@
 +/* tc-mips.h -- header file for tc-mips.c.
@@ -20533,8 +20533,8 @@ diff -ruN binutils-2.21.1-orig/gas/config/tc-riscv.h binutils-2.21.1/gas/config/
 +#define DWARF2_CIE_DATA_ALIGNMENT (-4)
 +
 +#endif /* TC_RISCV */
-diff -ruN binutils-2.21.1-orig/gas/configure.tgt binutils-2.21.1/gas/configure.tgt
---- binutils-2.21.1-orig/gas/configure.tgt     2011-04-01 05:02:42.000000000 -0700
+diff -x autom4te.cache -ruN ../binutils-2.21.1-orig/gas/configure.tgt binutils-2.21.1/gas/configure.tgt
+--- ../binutils-2.21.1-orig/gas/configure.tgt  2011-04-01 05:02:42.000000000 -0700
 +++ binutils-2.21.1/gas/configure.tgt  2011-10-22 18:46:17.000000000 -0700
 @@ -63,6 +63,7 @@
    pj*)                        cpu_type=pj endian=big ;;
@@ -20553,8 +20553,8 @@ diff -ruN binutils-2.21.1-orig/gas/configure.tgt binutils-2.21.1/gas/configure.t
    s390-*-linux-*)                     fmt=elf em=linux ;;
    s390-*-tpf*)                                fmt=elf ;;
  
-diff -ruN binutils-2.21.1-orig/gas/Makefile.am binutils-2.21.1/gas/Makefile.am
---- binutils-2.21.1-orig/gas/Makefile.am       2010-07-04 07:35:53.000000000 -0700
+diff -x autom4te.cache -ruN ../binutils-2.21.1-orig/gas/Makefile.am binutils-2.21.1/gas/Makefile.am
+--- ../binutils-2.21.1-orig/gas/Makefile.am    2010-07-04 07:35:53.000000000 -0700
 +++ binutils-2.21.1/gas/Makefile.am    2011-10-22 18:46:17.000000000 -0700
 @@ -150,6 +150,7 @@
        config/tc-pdp11.c \
@@ -20572,8 +20572,8 @@ diff -ruN binutils-2.21.1-orig/gas/Makefile.am binutils-2.21.1/gas/Makefile.am
        config/tc-rx.h \
        config/tc-s390.h \
        config/tc-score.h \
-diff -ruN binutils-2.21.1-orig/gas/Makefile.in binutils-2.21.1/gas/Makefile.in
---- binutils-2.21.1-orig/gas/Makefile.in       2010-11-05 03:33:35.000000000 -0700
+diff -x autom4te.cache -ruN ../binutils-2.21.1-orig/gas/Makefile.in binutils-2.21.1/gas/Makefile.in
+--- ../binutils-2.21.1-orig/gas/Makefile.in    2010-11-05 03:33:35.000000000 -0700
 +++ binutils-2.21.1/gas/Makefile.in    2011-10-22 18:46:17.000000000 -0700
 @@ -417,6 +417,7 @@
        config/tc-pdp11.c \
@@ -20620,8 +20620,8 @@ diff -ruN binutils-2.21.1-orig/gas/Makefile.in binutils-2.21.1/gas/Makefile.in
  tc-rx.o: config/tc-rx.c
  @am__fastdepCC_TRUE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tc-rx.o -MD -MP -MF $(DEPDIR)/tc-rx.Tpo -c -o tc-rx.o `test -f 'config/tc-rx.c' || echo '$(srcdir)/'`config/tc-rx.c
  @am__fastdepCC_TRUE@  $(am__mv) $(DEPDIR)/tc-rx.Tpo $(DEPDIR)/tc-rx.Po
-diff -ruN binutils-2.21.1-orig/include/dis-asm.h binutils-2.21.1/include/dis-asm.h
---- binutils-2.21.1-orig/include/dis-asm.h     2010-06-28 21:17:27.000000000 -0700
+diff -x autom4te.cache -ruN ../binutils-2.21.1-orig/include/dis-asm.h binutils-2.21.1/include/dis-asm.h
+--- ../binutils-2.21.1-orig/include/dis-asm.h  2010-06-28 21:17:27.000000000 -0700
 +++ binutils-2.21.1/include/dis-asm.h  2011-10-22 18:46:17.000000000 -0700
 @@ -227,6 +227,7 @@
  extern int print_insn_big_mips                (bfd_vma, disassemble_info *);
@@ -20639,8 +20639,8 @@ diff -ruN binutils-2.21.1-orig/include/dis-asm.h binutils-2.21.1/include/dis-asm
  extern int print_insn_little_score      (bfd_vma, disassemble_info *); 
  extern int print_insn_lm32            (bfd_vma, disassemble_info *);
  extern int print_insn_m32c            (bfd_vma, disassemble_info *);
-diff -ruN binutils-2.21.1-orig/include/elf/common.h binutils-2.21.1/include/elf/common.h
---- binutils-2.21.1-orig/include/elf/common.h  2010-05-17 20:31:06.000000000 -0700
+diff -x autom4te.cache -ruN ../binutils-2.21.1-orig/include/elf/common.h binutils-2.21.1/include/elf/common.h
+--- ../binutils-2.21.1-orig/include/elf/common.h       2010-05-17 20:31:06.000000000 -0700
 +++ binutils-2.21.1/include/elf/common.h       2011-10-22 18:46:17.000000000 -0700
 @@ -295,6 +295,7 @@
  #define EM_TILEPRO    188     /* Tilera TILEPro multicore architecture family */
@@ -20650,8 +20650,8 @@ diff -ruN binutils-2.21.1-orig/include/elf/common.h binutils-2.21.1/include/elf/
  
  /* If it is necessary to assign new unofficial EM_* values, please pick large
     random numbers (0x8523, 0xa7f2, etc.) to minimize the chances of collision
-diff -ruN binutils-2.21.1-orig/include/elf/riscv.h binutils-2.21.1/include/elf/riscv.h
---- binutils-2.21.1-orig/include/elf/riscv.h   1969-12-31 16:00:00.000000000 -0800
+diff -x autom4te.cache -ruN ../binutils-2.21.1-orig/include/elf/riscv.h binutils-2.21.1/include/elf/riscv.h
+--- ../binutils-2.21.1-orig/include/elf/riscv.h        1969-12-31 16:00:00.000000000 -0800
 +++ binutils-2.21.1/include/elf/riscv.h        2011-10-22 18:50:03.000000000 -0700
 @@ -0,0 +1,485 @@
 +/* RISC-V ELF support for BFD.
@@ -21139,8 +21139,8 @@ diff -ruN binutils-2.21.1-orig/include/elf/riscv.h binutils-2.21.1/include/elf/r
 +  (bfd *, const Elf64_Internal_RegInfo *, Elf64_External_RegInfo *);
 +
 +#endif /* _ELF_RISCV_H */
-diff -ruN binutils-2.21.1-orig/include/opcode/riscv.h binutils-2.21.1/include/opcode/riscv.h
---- binutils-2.21.1-orig/include/opcode/riscv.h        1969-12-31 16:00:00.000000000 -0800
+diff -x autom4te.cache -ruN ../binutils-2.21.1-orig/include/opcode/riscv.h binutils-2.21.1/include/opcode/riscv.h
+--- ../binutils-2.21.1-orig/include/opcode/riscv.h     1969-12-31 16:00:00.000000000 -0800
 +++ binutils-2.21.1/include/opcode/riscv.h     2011-10-22 19:17:57.000000000 -0700
 @@ -0,0 +1,253 @@
 +/* riscv.h.  RISC-V opcode list for GDB, the GNU debugger.
@@ -21396,8 +21396,8 @@ diff -ruN binutils-2.21.1-orig/include/opcode/riscv.h binutils-2.21.1/include/op
 +#define NUMOPCODES bfd_riscv_num_opcodes
 +
 +#endif /* _MIPS_H_ */
-diff -ruN binutils-2.21.1-orig/include/opcode/riscv-opc.h binutils-2.21.1/include/opcode/riscv-opc.h
---- binutils-2.21.1-orig/include/opcode/riscv-opc.h    1969-12-31 16:00:00.000000000 -0800
+diff -x autom4te.cache -ruN ../binutils-2.21.1-orig/include/opcode/riscv-opc.h binutils-2.21.1/include/opcode/riscv-opc.h
+--- ../binutils-2.21.1-orig/include/opcode/riscv-opc.h 1969-12-31 16:00:00.000000000 -0800
 +++ binutils-2.21.1/include/opcode/riscv-opc.h 2011-10-22 18:50:03.000000000 -0700
 @@ -0,0 +1,545 @@
 +/* Automatically generated by parse-opcodes */
@@ -21945,8 +21945,8 @@ diff -ruN binutils-2.21.1-orig/include/opcode/riscv-opc.h binutils-2.21.1/includ
 +#define  MASK_VFSSEGD 0x1ffff
 +#define MATCH_SD 0x1a3
 +#define  MASK_SD 0x3ff
-diff -ruN binutils-2.21.1-orig/ld/configure.tgt binutils-2.21.1/ld/configure.tgt
---- binutils-2.21.1-orig/ld/configure.tgt      2011-04-01 05:03:54.000000000 -0700
+diff -x autom4te.cache -ruN ../binutils-2.21.1-orig/ld/configure.tgt binutils-2.21.1/ld/configure.tgt
+--- ../binutils-2.21.1-orig/ld/configure.tgt   2011-04-01 05:03:54.000000000 -0700
 +++ binutils-2.21.1/ld/configure.tgt   2011-10-22 18:46:17.000000000 -0700
 @@ -504,6 +504,9 @@
  powerpc-*-beos*)      targ_emul=aixppc ;;
@@ -21958,9 +21958,8 @@ diff -ruN binutils-2.21.1-orig/ld/configure.tgt binutils-2.21.1/ld/configure.tgt
  rs6000-*-aix[5-9]*)   targ_emul=aix5rs6 ;;
  rs6000-*-aix*)                targ_emul=aixrs6
                        ;;
-Binary files binutils-2.21.1-orig/ld/.configure.tgt.swp and binutils-2.21.1/ld/.configure.tgt.swp differ
-diff -ruN binutils-2.21.1-orig/ld/emulparams/elf32lriscv-defs.sh binutils-2.21.1/ld/emulparams/elf32lriscv-defs.sh
---- binutils-2.21.1-orig/ld/emulparams/elf32lriscv-defs.sh     1969-12-31 16:00:00.000000000 -0800
+diff -x autom4te.cache -ruN ../binutils-2.21.1-orig/ld/emulparams/elf32lriscv-defs.sh binutils-2.21.1/ld/emulparams/elf32lriscv-defs.sh
+--- ../binutils-2.21.1-orig/ld/emulparams/elf32lriscv-defs.sh  1969-12-31 16:00:00.000000000 -0800
 +++ binutils-2.21.1/ld/emulparams/elf32lriscv-defs.sh  2011-10-22 18:50:03.000000000 -0700
 @@ -0,0 +1,93 @@
 +# This is an ELF platform.
@@ -22056,8 +22055,8 @@ diff -ruN binutils-2.21.1-orig/ld/emulparams/elf32lriscv-defs.sh binutils-2.21.1
 +OTHER_SECTIONS="/DISCARD/ : { *(.MIPS.content*) *(.MIPS.events*) }"
 +
 +TEXT_DYNAMIC=
-diff -ruN binutils-2.21.1-orig/ld/emulparams/elf32lriscv.sh binutils-2.21.1/ld/emulparams/elf32lriscv.sh
---- binutils-2.21.1-orig/ld/emulparams/elf32lriscv.sh  1969-12-31 16:00:00.000000000 -0800
+diff -x autom4te.cache -ruN ../binutils-2.21.1-orig/ld/emulparams/elf32lriscv.sh binutils-2.21.1/ld/emulparams/elf32lriscv.sh
+--- ../binutils-2.21.1-orig/ld/emulparams/elf32lriscv.sh       1969-12-31 16:00:00.000000000 -0800
 +++ binutils-2.21.1/ld/emulparams/elf32lriscv.sh       2011-10-22 18:50:03.000000000 -0700
 @@ -0,0 +1,15 @@
 +# If you change this file, please also look at files which source this one:
@@ -22075,15 +22074,15 @@ diff -ruN binutils-2.21.1-orig/ld/emulparams/elf32lriscv.sh binutils-2.21.1/ld/e
 +  .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
 +  .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
 +'
-diff -ruN binutils-2.21.1-orig/ld/emulparams/elf64lriscv-defs.sh binutils-2.21.1/ld/emulparams/elf64lriscv-defs.sh
---- binutils-2.21.1-orig/ld/emulparams/elf64lriscv-defs.sh     1969-12-31 16:00:00.000000000 -0800
+diff -x autom4te.cache -ruN ../binutils-2.21.1-orig/ld/emulparams/elf64lriscv-defs.sh binutils-2.21.1/ld/emulparams/elf64lriscv-defs.sh
+--- ../binutils-2.21.1-orig/ld/emulparams/elf64lriscv-defs.sh  1969-12-31 16:00:00.000000000 -0800
 +++ binutils-2.21.1/ld/emulparams/elf64lriscv-defs.sh  2011-10-22 18:50:03.000000000 -0700
 @@ -0,0 +1,3 @@
 +. ${srcdir}/emulparams/elf32lriscv-defs.sh
 +COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)"
 +INITIAL_READONLY_SECTIONS=".MIPS.options : { *(.MIPS.options) }"
-diff -ruN binutils-2.21.1-orig/ld/emulparams/elf64lriscv.sh binutils-2.21.1/ld/emulparams/elf64lriscv.sh
---- binutils-2.21.1-orig/ld/emulparams/elf64lriscv.sh  1969-12-31 16:00:00.000000000 -0800
+diff -x autom4te.cache -ruN ../binutils-2.21.1-orig/ld/emulparams/elf64lriscv.sh binutils-2.21.1/ld/emulparams/elf64lriscv.sh
+--- ../binutils-2.21.1-orig/ld/emulparams/elf64lriscv.sh       1969-12-31 16:00:00.000000000 -0800
 +++ binutils-2.21.1/ld/emulparams/elf64lriscv.sh       2011-10-22 18:50:03.000000000 -0700
 @@ -0,0 +1,13 @@
 +# If you change this file, please also look at files which source this one:
@@ -22099,8 +22098,8 @@ diff -ruN binutils-2.21.1-orig/ld/emulparams/elf64lriscv.sh binutils-2.21.1/ld/e
 +  .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
 +  .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
 +'
-diff -ruN binutils-2.21.1-orig/ld/emultempl/riscvelf.em binutils-2.21.1/ld/emultempl/riscvelf.em
---- binutils-2.21.1-orig/ld/emultempl/riscvelf.em      1969-12-31 16:00:00.000000000 -0800
+diff -x autom4te.cache -ruN ../binutils-2.21.1-orig/ld/emultempl/riscvelf.em binutils-2.21.1/ld/emultempl/riscvelf.em
+--- ../binutils-2.21.1-orig/ld/emultempl/riscvelf.em   1969-12-31 16:00:00.000000000 -0800
 +++ binutils-2.21.1/ld/emultempl/riscvelf.em   2011-10-24 17:20:34.000000000 -0700
 @@ -0,0 +1,241 @@
 +# This shell script emits a C file. -*- C -*-
@@ -22344,8 +22343,8 @@ diff -ruN binutils-2.21.1-orig/ld/emultempl/riscvelf.em binutils-2.21.1/ld/emult
 +LDEMUL_AFTER_PARSE=riscv_after_parse
 +LDEMUL_BEFORE_ALLOCATION=riscv_before_allocation
 +LDEMUL_CREATE_OUTPUT_SECTION_STATEMENTS=riscv_create_output_section_statements
-diff -ruN binutils-2.21.1-orig/ld/Makefile.am binutils-2.21.1/ld/Makefile.am
---- binutils-2.21.1-orig/ld/Makefile.am        2011-03-16 01:37:30.000000000 -0700
+diff -x autom4te.cache -ruN ../binutils-2.21.1-orig/ld/Makefile.am binutils-2.21.1/ld/Makefile.am
+--- ../binutils-2.21.1-orig/ld/Makefile.am     2011-03-16 01:37:30.000000000 -0700
 +++ binutils-2.21.1/ld/Makefile.am     2011-10-22 18:46:17.000000000 -0700
 @@ -211,6 +211,7 @@
        eelf32lppc.c \
@@ -22386,8 +22385,8 @@ diff -ruN binutils-2.21.1-orig/ld/Makefile.am binutils-2.21.1/ld/Makefile.am
  eelf64ltsmip.c: $(srcdir)/emulparams/elf64ltsmip.sh \
    $(srcdir)/emulparams/elf64btsmip.sh $(srcdir)/emulparams/elf64bmip-defs.sh \
    $(srcdir)/emulparams/elf32bmipn32-defs.sh $(ELF_DEPS) \
-diff -ruN binutils-2.21.1-orig/ld/Makefile.in binutils-2.21.1/ld/Makefile.in
---- binutils-2.21.1-orig/ld/Makefile.in        2011-03-16 01:37:30.000000000 -0700
+diff -x autom4te.cache -ruN ../binutils-2.21.1-orig/ld/Makefile.in binutils-2.21.1/ld/Makefile.in
+--- ../binutils-2.21.1-orig/ld/Makefile.in     2011-03-16 01:37:30.000000000 -0700
 +++ binutils-2.21.1/ld/Makefile.in     2011-10-22 18:46:17.000000000 -0700
 @@ -516,6 +516,7 @@
        eelf32lppc.c \
@@ -22444,8 +22443,8 @@ diff -ruN binutils-2.21.1-orig/ld/Makefile.in binutils-2.21.1/ld/Makefile.in
  eelf64ltsmip.c: $(srcdir)/emulparams/elf64ltsmip.sh \
    $(srcdir)/emulparams/elf64btsmip.sh $(srcdir)/emulparams/elf64bmip-defs.sh \
    $(srcdir)/emulparams/elf32bmipn32-defs.sh $(ELF_DEPS) \
-diff -ruN binutils-2.21.1-orig/opcodes/configure binutils-2.21.1/opcodes/configure
---- binutils-2.21.1-orig/opcodes/configure     2010-11-05 03:32:32.000000000 -0700
+diff -x autom4te.cache -ruN ../binutils-2.21.1-orig/opcodes/configure binutils-2.21.1/opcodes/configure
+--- ../binutils-2.21.1-orig/opcodes/configure  2010-11-05 03:32:32.000000000 -0700
 +++ binutils-2.21.1/opcodes/configure  2011-10-22 18:48:48.000000000 -0700
 @@ -12462,6 +12462,7 @@
        bfd_powerpc_arch)       ta="$ta ppc-dis.lo ppc-opc.lo" ;;
@@ -22455,8 +22454,8 @@ diff -ruN binutils-2.21.1-orig/opcodes/configure binutils-2.21.1/opcodes/configu
        bfd_romp_arch)          ;;
        bfd_rs6000_arch)        ta="$ta ppc-dis.lo ppc-opc.lo" ;;
        bfd_rx_arch)            ta="$ta rx-dis.lo rx-decode.lo";;
-diff -ruN binutils-2.21.1-orig/opcodes/configure.in binutils-2.21.1/opcodes/configure.in
---- binutils-2.21.1-orig/opcodes/configure.in  2010-06-28 21:17:33.000000000 -0700
+diff -x autom4te.cache -ruN ../binutils-2.21.1-orig/opcodes/configure.in binutils-2.21.1/opcodes/configure.in
+--- ../binutils-2.21.1-orig/opcodes/configure.in       2010-06-28 21:17:33.000000000 -0700
 +++ binutils-2.21.1/opcodes/configure.in       2011-10-22 18:46:17.000000000 -0700
 @@ -268,6 +268,7 @@
        bfd_powerpc_arch)       ta="$ta ppc-dis.lo ppc-opc.lo" ;;
@@ -22466,8 +22465,8 @@ diff -ruN binutils-2.21.1-orig/opcodes/configure.in binutils-2.21.1/opcodes/conf
        bfd_romp_arch)          ;;
        bfd_rs6000_arch)        ta="$ta ppc-dis.lo ppc-opc.lo" ;;
        bfd_rx_arch)            ta="$ta rx-dis.lo rx-decode.lo";;
-diff -ruN binutils-2.21.1-orig/opcodes/disassemble.c binutils-2.21.1/opcodes/disassemble.c
---- binutils-2.21.1-orig/opcodes/disassemble.c 2010-08-05 20:59:49.000000000 -0700
+diff -x autom4te.cache -ruN ../binutils-2.21.1-orig/opcodes/disassemble.c binutils-2.21.1/opcodes/disassemble.c
+--- ../binutils-2.21.1-orig/opcodes/disassemble.c      2010-08-05 20:59:49.000000000 -0700
 +++ binutils-2.21.1/opcodes/disassemble.c      2011-10-22 18:46:17.000000000 -0700
 @@ -338,6 +338,14 @@
        disassemble = print_insn_little_powerpc;
@@ -22484,8 +22483,8 @@ diff -ruN binutils-2.21.1-orig/opcodes/disassemble.c binutils-2.21.1/opcodes/dis
  #ifdef ARCH_rs6000
      case bfd_arch_rs6000:
        if (bfd_get_mach (abfd) == bfd_mach_ppc_620)
-diff -ruN binutils-2.21.1-orig/opcodes/riscv-dis.c binutils-2.21.1/opcodes/riscv-dis.c
---- binutils-2.21.1-orig/opcodes/riscv-dis.c   1969-12-31 16:00:00.000000000 -0800
+diff -x autom4te.cache -ruN ../binutils-2.21.1-orig/opcodes/riscv-dis.c binutils-2.21.1/opcodes/riscv-dis.c
+--- ../binutils-2.21.1-orig/opcodes/riscv-dis.c        1969-12-31 16:00:00.000000000 -0800
 +++ binutils-2.21.1/opcodes/riscv-dis.c        2011-10-22 19:19:34.000000000 -0700
 @@ -0,0 +1,905 @@
 +/* vim: set ts=8: */
@@ -23393,8 +23392,8 @@ diff -ruN binutils-2.21.1-orig/opcodes/riscv-dis.c binutils-2.21.1/opcodes/riscv
 +
 +  fprintf (stream, _("\n"));
 +}
-diff -ruN binutils-2.21.1-orig/opcodes/riscv-opc.c binutils-2.21.1/opcodes/riscv-opc.c
---- binutils-2.21.1-orig/opcodes/riscv-opc.c   1969-12-31 16:00:00.000000000 -0800
+diff -x autom4te.cache -ruN ../binutils-2.21.1-orig/opcodes/riscv-opc.c binutils-2.21.1/opcodes/riscv-opc.c
+--- ../binutils-2.21.1-orig/opcodes/riscv-opc.c        1969-12-31 16:00:00.000000000 -0800
 +++ binutils-2.21.1/opcodes/riscv-opc.c        2011-10-22 19:14:45.000000000 -0700
 @@ -0,0 +1,449 @@
 +/* mips-opc.c -- MIPS opcode list.
index 7a7952a..38939de 100644 (file)
@@ -1,6 +1,6 @@
-diff -ruN binutils-2.21.1-orig/bfd/config.bfd binutils-2.21.1/bfd/config.bfd
---- binutils-2.21.1-orig/bfd/config.bfd        2011-04-01 05:02:42.000000000 -0700
-+++ binutils-2.21.1/bfd/config.bfd     2011-10-24 17:08:29.000000000 -0700
+diff -ruN orig-src/binutils-2.21.1/bfd/config.bfd binutils-2.21.1/bfd/config.bfd
+--- orig-src/binutils-2.21.1/bfd/config.bfd    2011-04-01 05:02:42.000000000 -0700
++++ binutils-2.21.1/bfd/config.bfd     2011-10-27 19:58:05.000000000 -0700
 @@ -519,6 +519,19 @@
    i[3-7]86-*-aros*)
      targ_defvec=bfd_elf32_i386_vec
@@ -21,9 +21,9 @@ diff -ruN binutils-2.21.1-orig/bfd/config.bfd binutils-2.21.1/bfd/config.bfd
    i[3-7]86-*-chorus*)
      targ_defvec=bfd_elf32_i386_vec
      ;;
-diff -ruN binutils-2.21.1-orig/config.sub binutils-2.21.1/config.sub
---- binutils-2.21.1-orig/config.sub    2010-06-01 10:53:40.000000000 -0700
-+++ binutils-2.21.1/config.sub 2011-10-24 17:00:52.000000000 -0700
+diff -ruN orig-src/binutils-2.21.1/config.sub binutils-2.21.1/config.sub
+--- orig-src/binutils-2.21.1/config.sub        2010-06-01 10:53:40.000000000 -0700
++++ binutils-2.21.1/config.sub 2011-10-27 19:58:05.000000000 -0700
 @@ -1297,7 +1297,7 @@
              | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
              | -sym* | -kopensolaris* \
@@ -33,9 +33,9 @@ diff -ruN binutils-2.21.1-orig/config.sub binutils-2.21.1/config.sub
              | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
              | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
              | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
-diff -ruN binutils-2.21.1-orig/gas/configure.tgt binutils-2.21.1/gas/configure.tgt
---- binutils-2.21.1-orig/gas/configure.tgt     2011-04-01 05:02:42.000000000 -0700
-+++ binutils-2.21.1/gas/configure.tgt  2011-10-24 17:06:31.000000000 -0700
+diff -ruN orig-src/binutils-2.21.1/gas/configure.tgt binutils-2.21.1/gas/configure.tgt
+--- orig-src/binutils-2.21.1/gas/configure.tgt 2011-04-01 05:02:42.000000000 -0700
++++ binutils-2.21.1/gas/configure.tgt  2011-10-27 19:58:05.000000000 -0700
 @@ -180,6 +180,9 @@
    i386-*-beos*)                               fmt=elf ;;
    i386-*-coff)                                fmt=coff ;;
@@ -46,9 +46,9 @@ diff -ruN binutils-2.21.1-orig/gas/configure.tgt binutils-2.21.1/gas/configure.t
    i386-*-kaos*)                               fmt=elf ;;
    i386-*-bsd*)                                fmt=aout em=386bsd ;;
    i386-*-netbsd0.8)                   fmt=aout em=386bsd ;;
-diff -ruN binutils-2.21.1-orig/ld/configure.tgt binutils-2.21.1/ld/configure.tgt
---- binutils-2.21.1-orig/ld/configure.tgt      2011-04-01 05:03:54.000000000 -0700
-+++ binutils-2.21.1/ld/configure.tgt   2011-10-24 17:07:38.000000000 -0700
+diff -ruN orig-src/binutils-2.21.1/ld/configure.tgt binutils-2.21.1/ld/configure.tgt
+--- orig-src/binutils-2.21.1/ld/configure.tgt  2011-04-01 05:03:54.000000000 -0700
++++ binutils-2.21.1/ld/configure.tgt   2011-10-27 19:58:05.000000000 -0700
 @@ -242,6 +242,9 @@
                        esac ;;
  i[3-7]86-*-netware)   targ_emul=i386nw ;;
diff --git a/tools/compilers/gcc-glibc/gcc-4.3.2-ros.patch b/tools/compilers/gcc-glibc/gcc-4.3.2-ros.patch
deleted file mode 100644 (file)
index b2e022a..0000000
+++ /dev/null
@@ -1,3849 +0,0 @@
-diff -ruN gcc-4.3.2/config.sub gcc-4.3.2.new/config.sub
---- gcc-4.3.2/config.sub       2008-01-22 18:37:40.000000000 -0800
-+++ gcc-4.3.2.new/config.sub   2010-03-05 18:33:03.494162381 -0800
-@@ -1239,7 +1239,7 @@
-             | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
-             | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
-             | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
--            | -aos* \
-+            | -aos* | -ros* \
-             | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
-             | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
-             | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
-diff -ruN gcc-4.3.2/gcc/config/i386/ros.h gcc-4.3.2.new/gcc/config/i386/ros.h
---- gcc-4.3.2/gcc/config/i386/ros.h    1969-12-31 16:00:00.000000000 -0800
-+++ gcc-4.3.2.new/gcc/config/i386/ros.h        2010-03-05 18:33:03.494162381 -0800
-@@ -0,0 +1,201 @@
-+/* Definitions for Intel 386 running Linux-based GNU systems with ELF format.
-+   Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2004, 2005,
-+   2006, 2007 Free Software Foundation, Inc.
-+   Contributed by Eric Youngdale.
-+   Modified for stabs-in-ELF by H.J. Lu.
-+
-+This file is part of GCC.
-+
-+GCC 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 3, or (at your option)
-+any later version.
-+
-+GCC 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 GCC; see the file COPYING3.  If not see
-+<http://www.gnu.org/licenses/>.  */
-+
-+/* Output at beginning of assembler file.  */
-+/* The .file command should always begin the output.  */
-+#define TARGET_ASM_FILE_START_FILE_DIRECTIVE true
-+
-+#define TARGET_VERSION fprintf (stderr, " (i386 ROS/ELF)");
-+
-+/* The svr4 ABI for the i386 says that records and unions are returned
-+   in memory.  */
-+#undef DEFAULT_PCC_STRUCT_RETURN
-+#define DEFAULT_PCC_STRUCT_RETURN 1
-+
-+/* We arrange for the whole %gs segment to map the tls area.  */
-+#undef TARGET_TLS_DIRECT_SEG_REFS_DEFAULT
-+#define TARGET_TLS_DIRECT_SEG_REFS_DEFAULT MASK_TLS_DIRECT_SEG_REFS
-+
-+#undef ASM_COMMENT_START
-+#define ASM_COMMENT_START "#"
-+
-+#undef DBX_REGISTER_NUMBER
-+#define DBX_REGISTER_NUMBER(n) \
-+  (TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n])
-+
-+/* Output assembler code to FILE to call the profiler.
-+   To the best of my knowledge, no Linux libc has required the label
-+   argument to mcount.  */
-+
-+#define NO_PROFILE_COUNTERS   1
-+
-+#undef MCOUNT_NAME
-+#define MCOUNT_NAME "mcount"
-+
-+/* The GLIBC version of mcount for the x86 assumes that there is a
-+   frame, so we cannot allow profiling without a frame pointer.  */
-+
-+#undef SUBTARGET_FRAME_POINTER_REQUIRED
-+#define SUBTARGET_FRAME_POINTER_REQUIRED current_function_profile
-+
-+#undef SIZE_TYPE
-+#define SIZE_TYPE "unsigned int"
-+ 
-+#undef PTRDIFF_TYPE
-+#define PTRDIFF_TYPE "int"
-+  
-+#undef WCHAR_TYPE
-+#define WCHAR_TYPE "long int"
-+   
-+#undef WCHAR_TYPE_SIZE
-+#define WCHAR_TYPE_SIZE BITS_PER_WORD
-+    
-+#define TARGET_OS_CPP_BUILTINS()              \
-+  do                                          \
-+    {                                         \
-+      LINUX_TARGET_OS_CPP_BUILTINS();         \
-+    }                                         \
-+  while (0)
-+
-+#undef CPP_SPEC
-+#define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
-+
-+#undef CC1_SPEC
-+#define CC1_SPEC "%(cc1_cpu) %{profile:-p}"
-+
-+/* Provide a LINK_SPEC appropriate for Linux.  Here we provide support
-+   for the special GCC options -static and -shared, which allow us to
-+   link things in one of these three modes by applying the appropriate
-+   combinations of options at link-time. We like to support here for
-+   as many of the other GNU linker options as possible. But I don't
-+   have the time to search for those flags. I am sure how to add
-+   support for -soname shared_object_name. H.J.
-+
-+   I took out %{v:%{!V:-V}}. It is too much :-(. They can use
-+   -Wl,-V.
-+
-+   When the -shared link option is used a final link is not being
-+   done.  */
-+
-+/* If ELF is the default format, we should not use /lib/elf.  */
-+
-+/* These macros may be overridden in k*bsd-gnu.h and i386/k*bsd-gnu.h. */
-+#define LINK_EMULATION "elf_i386"
-+#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
-+
-+#undef  SUBTARGET_EXTRA_SPECS
-+#define SUBTARGET_EXTRA_SPECS \
-+  { "link_emulation", LINK_EMULATION },\
-+  { "dynamic_linker", GLIBC_DYNAMIC_LINKER }
-+
-+#undef        LINK_SPEC
-+#define LINK_SPEC "-m %(link_emulation) %{shared:-shared} \
-+  %{!shared: \
-+    %{!ibcs: \
-+      %{!static: \
-+      %{rdynamic:-export-dynamic} \
-+      %{!dynamic-linker:-dynamic-linker %(dynamic_linker)}} \
-+      %{static:-static}}}"
-+
-+/* Similar to standard Linux, but adding -ffast-math support.  */
-+#undef  ENDFILE_SPEC
-+#define ENDFILE_SPEC \
-+  "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
-+   %{mpc32:crtprec32.o%s} \
-+   %{mpc64:crtprec64.o%s} \
-+   %{mpc80:crtprec80.o%s} \
-+   %{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
-+
-+/* A C statement (sans semicolon) to output to the stdio stream
-+   FILE the assembler definition of uninitialized global DECL named
-+   NAME whose size is SIZE bytes and alignment is ALIGN bytes.
-+   Try to use asm_output_aligned_bss to implement this macro.  */
-+
-+#define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \
-+  asm_output_aligned_bss (FILE, DECL, NAME, SIZE, ALIGN)
-+
-+/* A C statement to output to the stdio stream FILE an assembler
-+   command to advance the location counter to a multiple of 1<<LOG
-+   bytes if it is within MAX_SKIP bytes.
-+
-+   This is used to align code labels according to Intel recommendations.  */
-+
-+#ifdef HAVE_GAS_MAX_SKIP_P2ALIGN
-+#define ASM_OUTPUT_MAX_SKIP_ALIGN(FILE,LOG,MAX_SKIP)                  \
-+  do {                                                                        \
-+    if ((LOG) != 0) {                                                 \
-+      if ((MAX_SKIP) == 0) fprintf ((FILE), "\t.p2align %d\n", (LOG));        \
-+      else {                                                          \
-+      fprintf ((FILE), "\t.p2align %d,,%d\n", (LOG), (MAX_SKIP));     \
-+      /* Make sure that we have at least 8 byte alignment if > 8 byte \
-+         alignment is preferred.  */                                  \
-+      if ((LOG) > 3 && (1 << (LOG)) > ((MAX_SKIP) + 1))               \
-+        fprintf ((FILE), "\t.p2align 3\n");                           \
-+      }                                                                       \
-+    }                                                                 \
-+  } while (0)
-+#endif
-+
-+/* Handle special EH pointer encodings.  Absolute, pc-relative, and
-+   indirect are handled automatically.  */
-+#define ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX(FILE, ENCODING, SIZE, ADDR, DONE) \
-+  do {                                                                        \
-+    if ((SIZE) == 4 && ((ENCODING) & 0x70) == DW_EH_PE_datarel)               \
-+      {                                                                       \
-+        fputs (ASM_LONG, FILE);                       \
-+        assemble_name (FILE, XSTR (ADDR, 0));                         \
-+      fputs (((ENCODING) & DW_EH_PE_indirect ? "@GOT" : "@GOTOFF"), FILE); \
-+        goto DONE;                                                    \
-+      }                                                                       \
-+  } while (0)
-+
-+/* Used by crtstuff.c to initialize the base of data-relative relocations.
-+   These are GOT relative on x86, so return the pic register.  */
-+#ifdef __PIC__
-+#define CRT_GET_RFIB_DATA(BASE)                       \
-+  {                                           \
-+    register void *ebx_ __asm__("ebx");               \
-+    BASE = ebx_;                              \
-+  }
-+#else
-+#define CRT_GET_RFIB_DATA(BASE)                                               \
-+  __asm__ ("call\t.LPR%=\n"                                           \
-+         ".LPR%=:\n\t"                                                \
-+         "pop{l}\t%0\n\t"                                             \
-+         /* Due to a GAS bug, this cannot use EAX.  That encodes      \
-+            smaller than the traditional EBX, which results in the    \
-+            offset being off by one.  */                              \
-+         "add{l}\t{$_GLOBAL_OFFSET_TABLE_+[.-.LPR%=],%0"              \
-+                 "|%0,_GLOBAL_OFFSET_TABLE_+(.-.LPR%=)}"              \
-+         : "=d"(BASE))
-+#endif
-+
-+#undef NEED_INDICATE_EXEC_STACK
-+#define NEED_INDICATE_EXEC_STACK 1
-+
-+/* This macro may be overridden in i386/k*bsd-gnu.h.  */
-+#define REG_NAME(reg) reg
-+
-+#ifdef TARGET_LIBC_PROVIDES_SSP
-+/* i386 glibc provides __stack_chk_guard in %gs:0x14.  */
-+#define TARGET_THREAD_SSP_OFFSET      0x14
-+#endif
-diff -ruN gcc-4.3.2/gcc/config/ros.h gcc-4.3.2.new/gcc/config/ros.h
---- gcc-4.3.2/gcc/config/ros.h 1969-12-31 16:00:00.000000000 -0800
-+++ gcc-4.3.2.new/gcc/config/ros.h     2010-03-05 18:33:03.494162381 -0800
-@@ -0,0 +1,125 @@
-+/* Definitions for Linux-based GNU systems with ELF format
-+   Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2003, 2004, 2005, 2006,
-+   2007 Free Software Foundation, Inc.
-+   Contributed by Eric Youngdale.
-+   Modified for stabs-in-ELF by H.J. Lu (hjl@lucon.org).
-+
-+This file is part of GCC.
-+
-+GCC 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 3, or (at your option)
-+any later version.
-+
-+GCC 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 GCC; see the file COPYING3.  If not see
-+<http://www.gnu.org/licenses/>.  */
-+
-+/* Don't assume anything about the header files.  */
-+#define NO_IMPLICIT_EXTERN_C
-+
-+#undef ASM_APP_ON
-+#define ASM_APP_ON "#APP\n"
-+
-+#undef ASM_APP_OFF
-+#define ASM_APP_OFF "#NO_APP\n"
-+
-+#undef MD_EXEC_PREFIX
-+#undef MD_STARTFILE_PREFIX
-+
-+/* Provide a STARTFILE_SPEC appropriate for GNU/Linux.  Here we add
-+   the GNU/Linux magical crtbegin.o file (see crtstuff.c) which
-+   provides part of the support for getting C++ file-scope static
-+   object constructed before entering `main'.  */
-+   
-+#undef        STARTFILE_SPEC
-+#if defined HAVE_LD_PIE
-+#define STARTFILE_SPEC \
-+  "%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \
-+   crti.o%s %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s}"
-+#else
-+#define STARTFILE_SPEC \
-+  "%{!shared: %{pg|p|profile:gcrt1.o%s;:crt1.o%s}} \
-+   crti.o%s %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s}"
-+#endif
-+
-+/* Provide a ENDFILE_SPEC appropriate for GNU/Linux.  Here we tack on
-+   the GNU/Linux magical crtend.o file (see crtstuff.c) which
-+   provides part of the support for getting C++ file-scope static
-+   object constructed before entering `main', followed by a normal
-+   GNU/Linux "finalizer" file, `crtn.o'.  */
-+
-+#undef        ENDFILE_SPEC
-+#define ENDFILE_SPEC \
-+  "%{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
-+
-+/* This is for -profile to use -lc_p instead of -lc.  */
-+#ifndef CC1_SPEC
-+#define CC1_SPEC "%{profile:-p}"
-+#endif
-+
-+/* The GNU C++ standard library requires that these macros be defined.  */
-+#undef CPLUSPLUS_CPP_SPEC
-+#define CPLUSPLUS_CPP_SPEC "-D_GNU_SOURCE %(cpp)"
-+
-+#undef        LIB_SPEC
-+#define LIB_SPEC \
-+  "%{pthread:-lpthread} \
-+   %{shared:-lc} \
-+   %{!shared:%{mieee-fp:-lieee} %{profile:-lc_p}%{!profile:-lc}}"
-+
-+#define LINUX_TARGET_OS_CPP_BUILTINS()                                \
-+    do {                                                      \
-+      builtin_define ("__gnu_ros__");                 \
-+      builtin_define_std ("ros");                             \
-+      builtin_define_std ("unix");                            \
-+      builtin_assert ("system=ros");                  \
-+      builtin_assert ("system=unix");                         \
-+      builtin_assert ("system=posix");                        \
-+    } while (0)
-+
-+#if defined(HAVE_LD_EH_FRAME_HDR)
-+#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
-+#endif
-+
-+/* Define this so we can compile MS code for use with WINE.  */
-+#define HANDLE_PRAGMA_PACK_PUSH_POP
-+
-+#undef LINK_GCC_C_SEQUENCE_SPEC
-+#define LINK_GCC_C_SEQUENCE_SPEC \
-+  "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}"
-+
-+/* Use --as-needed -lgcc_s for eh support.  */
-+#ifdef HAVE_LD_AS_NEEDED
-+#define USE_LD_AS_NEEDED 1
-+#endif
-+
-+/* Determine which dynamic linker to use depending on whether GLIBC or
-+   uClibc is the default C library and whether -muclibc or -mglibc has
-+   been passed to change the default.  */
-+#if UCLIBC_DEFAULT
-+#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:%{muclibc:%e-mglibc and -muclibc used together}" G ";:" U "}"
-+#else
-+#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:%{mglibc:%e-mglibc and -muclibc used together}" U ";:" G "}"
-+#endif
-+
-+/* For most targets the following definitions suffice;
-+   GLIBC_DYNAMIC_LINKER must be defined for each target using them, or
-+   GLIBC_DYNAMIC_LINKER32 and GLIBC_DYNAMIC_LINKER64 for targets
-+   supporting both 32-bit and 64-bit compilation.  */
-+#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
-+#define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
-+#define LINUX_DYNAMIC_LINKER \
-+  CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER)
-+#define LINUX_DYNAMIC_LINKER32 \
-+  CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32)
-+#define LINUX_DYNAMIC_LINKER64 \
-+  CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64)
-+
-+#define TARGET_POSIX_IO
-diff -ruN gcc-4.3.2/gcc/config/sparc/ros.h gcc-4.3.2.new/gcc/config/sparc/ros.h
---- gcc-4.3.2/gcc/config/sparc/ros.h   1969-12-31 16:00:00.000000000 -0800
-+++ gcc-4.3.2.new/gcc/config/sparc/ros.h       2010-03-05 18:33:03.494162381 -0800
-@@ -0,0 +1,240 @@
-+/* Definitions for SPARC running Linux-based GNU systems with ELF.
-+   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
-+   2007 Free Software Foundation, Inc.
-+   Contributed by Eddie C. Dost (ecd@skynet.be)
-+
-+This file is part of GCC.
-+
-+GCC 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 3, or (at your option)
-+any later version.
-+
-+GCC 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 GCC; see the file COPYING3.  If not see
-+<http://www.gnu.org/licenses/>.  */
-+
-+#define TARGET_OS_CPP_BUILTINS()              \
-+  do                                          \
-+    {                                         \
-+      builtin_define_std ("unix");            \
-+      builtin_define_std ("ros");             \
-+      builtin_define ("__ros__");             \
-+      builtin_assert ("system=ros");          \
-+      builtin_assert ("system=unix");         \
-+      builtin_assert ("system=posix");                \
-+      if (TARGET_LONG_DOUBLE_128)             \
-+      builtin_define ("__LONG_DOUBLE_128__"); \
-+    }                                         \
-+  while (0)
-+
-+/* Don't assume anything about the header files.  */
-+#define NO_IMPLICIT_EXTERN_C
-+
-+#undef MD_EXEC_PREFIX
-+#undef MD_STARTFILE_PREFIX
-+
-+/* Provide a STARTFILE_SPEC appropriate for GNU/Linux.  Here we add
-+   the GNU/Linux magical crtbegin.o file (see crtstuff.c) which
-+   provides part of the support for getting C++ file-scope static
-+   object constructed before entering `main'.  */
-+   
-+#undef  STARTFILE_SPEC
-+#if defined HAVE_LD_PIE
-+#define STARTFILE_SPEC \
-+  "%{!shared: %{pg|p:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}}\
-+   crti.o%s %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s}"
-+#else
-+#define STARTFILE_SPEC \
-+  "%{!shared: %{pg|p:gcrt1.o%s;:crt1.o%s}}\
-+   crti.o%s %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s}"
-+#endif
-+
-+/* Provide a ENDFILE_SPEC appropriate for GNU/Linux.  Here we tack on
-+   the GNU/Linux magical crtend.o file (see crtstuff.c) which
-+   provides part of the support for getting C++ file-scope static
-+   object constructed before entering `main', followed by a normal
-+   GNU/Linux "finalizer" file, `crtn.o'.  */
-+
-+#undef  ENDFILE_SPEC
-+#define ENDFILE_SPEC \
-+  "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
-+   %{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
-+
-+/* This is for -profile to use -lc_p instead of -lc.  */
-+#undef        CC1_SPEC
-+#define       CC1_SPEC "%{profile:-p} \
-+%{sun4:} %{target:} \
-+%{mcypress:-mcpu=cypress} \
-+%{msparclite:-mcpu=sparclite} %{mf930:-mcpu=f930} %{mf934:-mcpu=f934} \
-+%{mv8:-mcpu=v8} %{msupersparc:-mcpu=supersparc} \
-+"
-+
-+/* The GNU C++ standard library requires that these macros be defined.  */
-+#undef CPLUSPLUS_CPP_SPEC
-+#define CPLUSPLUS_CPP_SPEC "-D_GNU_SOURCE %(cpp)"
-+
-+#undef TARGET_VERSION
-+#define TARGET_VERSION fprintf (stderr, " (sparc ROS/ELF)");
-+
-+#undef SIZE_TYPE
-+#define SIZE_TYPE "unsigned int"
-+ 
-+#undef PTRDIFF_TYPE
-+#define PTRDIFF_TYPE "int"
-+  
-+#undef WCHAR_TYPE
-+#define WCHAR_TYPE "int"
-+   
-+#undef WCHAR_TYPE_SIZE
-+#define WCHAR_TYPE_SIZE 32
-+
-+#undef CPP_SUBTARGET_SPEC
-+#define CPP_SUBTARGET_SPEC \
-+"%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
-+
-+#undef LIB_SPEC
-+#define LIB_SPEC \
-+  "%{pthread:-lpthread} \
-+   %{shared:-lc} \
-+   %{!shared:%{mieee-fp:-lieee} %{profile:-lc_p}%{!profile:-lc}}"
-+
-+/* Provide a LINK_SPEC appropriate for GNU/Linux.  Here we provide support
-+   for the special GCC options -static and -shared, which allow us to
-+   link things in one of these three modes by applying the appropriate
-+   combinations of options at link-time. We like to support here for
-+   as many of the other GNU linker options as possible. But I don't
-+   have the time to search for those flags. I am sure how to add
-+   support for -soname shared_object_name. H.J.
-+
-+   I took out %{v:%{!V:-V}}. It is too much :-(. They can use
-+   -Wl,-V.
-+
-+   When the -shared link option is used a final link is not being
-+   done.  */
-+
-+/* If ELF is the default format, we should not use /lib/elf.  */
-+
-+#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
-+#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#if UCLIBC_DEFAULT
-+#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:%{muclibc:%e-mglibc and -muclibc used together}" G ";:" U "}"
-+#else
-+#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:%{mglibc:%e-mglibc and -muclibc used together}" U ";:" G "}"
-+#endif
-+#define LINUX_DYNAMIC_LINKER \
-+  CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER)
-+
-+
-+#undef  LINK_SPEC
-+#define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \
-+  %{!mno-relax:%{!r:-relax}} \
-+  %{!shared: \
-+    %{!ibcs: \
-+      %{!static: \
-+        %{rdynamic:-export-dynamic} \
-+        %{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER "}} \
-+        %{static:-static}}}"
-+
-+/* The sun bundled assembler doesn't accept -Yd, (and neither does gas).
-+   It's safe to pass -s always, even if -g is not used.  */
-+#undef ASM_SPEC
-+#define ASM_SPEC \
-+  "%{V} %{v:%{!V:-V}} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Wa,*:%*} -s \
-+   %{fpic|fPIC|fpie|fPIE:-K PIC} %(asm_cpu) %(asm_relax)"
-+
-+/* Same as sparc.h */
-+#undef DBX_REGISTER_NUMBER
-+#define DBX_REGISTER_NUMBER(REGNO) (REGNO)
-+
-+#undef ASM_OUTPUT_ALIGNED_LOCAL
-+#define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN)             \
-+do {                                                                  \
-+  fputs ("\t.local\t", (FILE));               \
-+  assemble_name ((FILE), (NAME));                                     \
-+  putc ('\n', (FILE));                                                        \
-+  ASM_OUTPUT_ALIGNED_COMMON (FILE, NAME, SIZE, ALIGN);                        \
-+} while (0)
-+
-+#undef COMMON_ASM_OP
-+#define COMMON_ASM_OP "\t.common\t"
-+
-+#undef  LOCAL_LABEL_PREFIX
-+#define LOCAL_LABEL_PREFIX  "."
-+
-+/* This is how to store into the string LABEL
-+   the symbol_ref name of an internal numbered label where
-+   PREFIX is the class of label and NUM is the number within the class.
-+   This is suitable for output with `assemble_name'.  */
-+
-+#undef  ASM_GENERATE_INTERNAL_LABEL
-+#define ASM_GENERATE_INTERNAL_LABEL(LABEL,PREFIX,NUM) \
-+  sprintf (LABEL, "*.L%s%ld", PREFIX, (long)(NUM))
-+
-+\f
-+/* Define for support of TFmode long double.
-+   SPARC ABI says that long double is 4 words.  */
-+#undef LONG_DOUBLE_TYPE_SIZE
-+#define LONG_DOUBLE_TYPE_SIZE (TARGET_LONG_DOUBLE_128 ? 128 : 64)
-+
-+/* Define this to set long double type size to use in libgcc2.c, which can
-+   not depend on target_flags.  */
-+#ifdef __LONG_DOUBLE_128__
-+#define LIBGCC2_LONG_DOUBLE_TYPE_SIZE 128
-+#else
-+#define LIBGCC2_LONG_DOUBLE_TYPE_SIZE 64
-+#endif
-+
-+#undef DITF_CONVERSION_LIBFUNCS
-+#define DITF_CONVERSION_LIBFUNCS 1
-+
-+#if defined(HAVE_LD_EH_FRAME_HDR)
-+#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
-+#endif
-+\f
-+#ifdef HAVE_AS_TLS
-+#undef TARGET_SUN_TLS
-+#undef TARGET_GNU_TLS
-+#define TARGET_SUN_TLS 0
-+#define TARGET_GNU_TLS 1
-+#endif
-+\f
-+/* Don't be different from other Linux platforms in this regard.  */
-+#define HANDLE_PRAGMA_PACK_PUSH_POP
-+
-+/* We use GNU ld so undefine this so that attribute((init_priority)) works.  */
-+#undef CTORS_SECTION_ASM_OP
-+#undef DTORS_SECTION_ASM_OP
-+
-+#define TARGET_POSIX_IO
-+
-+#undef LINK_GCC_C_SEQUENCE_SPEC
-+#define LINK_GCC_C_SEQUENCE_SPEC \
-+  "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}"
-+
-+/* Use --as-needed -lgcc_s for eh support.  */
-+#ifdef HAVE_LD_AS_NEEDED
-+#define USE_LD_AS_NEEDED 1
-+#endif
-+
-+/* Linux currently uses RMO in uniprocessor mode, which is equivalent to
-+   TMO, and TMO in multiprocessor mode.  But they reserve the right to
-+   change their minds.  */
-+#undef SPARC_RELAXED_ORDERING
-+#define SPARC_RELAXED_ORDERING true
-+
-+#undef NEED_INDICATE_EXEC_STACK
-+#define NEED_INDICATE_EXEC_STACK 1
-+
-+#ifdef TARGET_LIBC_PROVIDES_SSP
-+/* sparc glibc provides __stack_chk_guard in [%g7 + 0x14].  */
-+#define TARGET_THREAD_SSP_OFFSET      0x14
-+#endif
-+
-+/* Define if long doubles should be mangled as 'g'.  */
-+#define TARGET_ALTERNATE_LONG_DOUBLE_MANGLING
-diff -ruN gcc-4.3.2/gcc/config.gcc gcc-4.3.2.new/gcc/config.gcc
---- gcc-4.3.2/gcc/config.gcc   2008-06-09 09:32:15.000000000 -0700
-+++ gcc-4.3.2.new/gcc/config.gcc       2010-03-05 18:33:03.494162381 -0800
-@@ -609,6 +609,12 @@
-   # Assume that newlib is being used and so __cxa_atexit is provided.
-   default_use_cxa_atexit=yes
-   ;;
-+*-*-ros*)
-+  extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o"
-+  gas=yes
-+  gnu_ld=yes
-+  default_use_cxa_atexit=yes
-+  ;;
- esac
- case ${target} in
-@@ -1090,6 +1096,11 @@
-       tmake_file="i386/t-i386elf t-svr4"
-       use_fixproto=yes
-       ;;
-+i[34567]86-*-ros*) 
-+      tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h ros.h i386/ros.h"
-+      tmake_file="t-slibgcc-elf-ver t-linux"
-+      use_fixproto=yes
-+      ;;
- x86_64-*-elf*)
-       tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h i386/i386elf.h i386/x86-64.h"
-       tmake_file="i386/t-i386elf t-svr4"
-@@ -2343,6 +2354,12 @@
-       extra_parts="crti.o crtn.o crtbegin.o crtend.o"
-       use_fixproto=yes
-       ;;
-+sparc-*-ros*)
-+      tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/ros.h"
-+      tmake_file="sparc/t-elf sparc/t-crtfm t-slibgcc-elf-ver"
-+      extra_parts="$extra_parts crtfastmath.o"
-+      use_fixproto=yes
-+      ;;
- sparc-*-linux*)               # SPARC's running GNU/Linux, libc6
-       tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/linux.h"
-       extra_options="${extra_options} sparc/long-double-switch.opt"
-diff -ruN gcc-4.3.2/libgcc/config.host gcc-4.3.2.new/libgcc/config.host
---- gcc-4.3.2/libgcc/config.host       2008-01-25 12:49:04.000000000 -0800
-+++ gcc-4.3.2.new/libgcc/config.host   2010-03-05 18:33:03.494162381 -0800
-@@ -166,6 +166,9 @@
-   # Must come before *-*-gnu* (because of *-*-linux-gnu* systems).
-   extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
-   ;;
-+*-*-ros*)
-+  extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o"
-+  ;;
- *-*-gnu*)
-   ;;
- *-*-netbsd*)
-@@ -323,6 +326,8 @@
-       ;;
- i[34567]86-*-openbsd*)
-       ;;
-+i[34567]86-*-ros*)
-+      ;;
- i[34567]86-*-coff*)
-       ;;
- i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu)
-@@ -572,6 +577,10 @@
-       ;;
- sparc-*-elf*)
-       ;;
-+sparc-*-ros*)
-+      extra_parts="$extra_parts crtfastmath.o"
-+      tmake_file="${tmake_file} sparc/t-crtfm"
-+      ;;
- sparc-*-linux*)               # SPARC's running GNU/Linux, libc6
-       extra_parts="$extra_parts crtfastmath.o"
-       tmake_file="${tmake_file} sparc/t-crtfm"
-diff -ruN gcc-4.3.2/libstdc++-v3/acinclude.m4 gcc-4.3.2.new/libstdc++-v3/acinclude.m4
---- gcc-4.3.2/libstdc++-v3/acinclude.m4        2008-04-25 09:52:57.000000000 -0700
-+++ gcc-4.3.2.new/libstdc++-v3/acinclude.m4    2010-03-05 18:33:03.494162381 -0800
-@@ -104,7 +104,7 @@
-   AC_PROG_CC
-   AC_PROG_CXX
-   CXXFLAGS="$save_CXXFLAGS"
--  m4_rename([glibcxx_PRECIOUS],[_AC_ARG_VAR_PRECIOUS])
-+  m4_rename_force([glibcxx_PRECIOUS],[_AC_ARG_VAR_PRECIOUS])
-   AC_SUBST(CFLAGS)
-   AC_SUBST(CXXFLAGS)
-diff -ruN gcc-4.3.2/libstdc++-v3/configure gcc-4.3.2.new/libstdc++-v3/configure
---- gcc-4.3.2/libstdc++-v3/configure   2008-07-07 12:49:54.000000000 -0700
-+++ gcc-4.3.2.new/libstdc++-v3/configure       2010-03-05 18:41:44.354163440 -0800
-@@ -112811,6 +112811,3153 @@
- _ACEOF
-     ;;
-+  *-ros*)
-+
-+
-+
-+for ac_header in sys/types.h locale.h float.h
-+do
-+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-+if eval "test \"\${$as_ac_Header+set}\" = set"; then
-+  echo "$as_me:$LINENO: checking for $ac_header" >&5
-+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-+if eval "test \"\${$as_ac_Header+set}\" = set"; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+fi
-+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-+else
-+  # Is the header compilable?
-+echo "$as_me:$LINENO: checking $ac_header usability" >&5
-+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+$ac_includes_default
-+#include <$ac_header>
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+       { ac_try='test -z "$ac_c_werror_flag"
-+                       || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+       { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  ac_header_compiler=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_header_compiler=no
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-+echo "${ECHO_T}$ac_header_compiler" >&6
-+
-+# Is the header present?
-+echo "$as_me:$LINENO: checking $ac_header presence" >&5
-+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+#include <$ac_header>
-+_ACEOF
-+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } >/dev/null; then
-+  if test -s conftest.err; then
-+    ac_cpp_err=$ac_c_preproc_warn_flag
-+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-+  else
-+    ac_cpp_err=
-+  fi
-+else
-+  ac_cpp_err=yes
-+fi
-+if test -z "$ac_cpp_err"; then
-+  ac_header_preproc=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+  ac_header_preproc=no
-+fi
-+rm -f conftest.err conftest.$ac_ext
-+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-+echo "${ECHO_T}$ac_header_preproc" >&6
-+
-+# So?  What about this header?
-+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-+  yes:no: )
-+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-+    ac_header_preproc=yes
-+    ;;
-+  no:yes:* )
-+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-+    (
-+      cat <<\_ASBOX
-+## ----------------------------------------- ##
-+## Report this to the package-unused lists.  ##
-+## ----------------------------------------- ##
-+_ASBOX
-+    ) |
-+      sed "s/^/$as_me: WARNING:     /" >&2
-+    ;;
-+esac
-+echo "$as_me:$LINENO: checking for $ac_header" >&5
-+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-+if eval "test \"\${$as_ac_Header+set}\" = set"; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+  eval "$as_ac_Header=\$ac_header_preproc"
-+fi
-+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-+
-+fi
-+if test `eval echo '${'$as_ac_Header'}'` = yes; then
-+  cat >>confdefs.h <<_ACEOF
-+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-+_ACEOF
-+
-+fi
-+
-+done
-+
-+
-+
-+  echo "$as_me:$LINENO: checking for __builtin_abs declaration" >&5
-+echo $ECHO_N "checking for __builtin_abs declaration... $ECHO_C" >&6
-+  if test x${glibcxx_cv_func___builtin_abs_use+set} != xset; then
-+    if test "${glibcxx_cv_func___builtin_abs_use+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+
-+
-+
-+      ac_ext=cc
-+ac_cpp='$CXXCPP $CPPFLAGS'
-+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-+
-+      cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+#include <math.h>
-+int
-+main ()
-+{
-+ __builtin_abs(0);
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+       { ac_try='test -z "$ac_cxx_werror_flag"
-+                       || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+       { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  glibcxx_cv_func___builtin_abs_use=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+glibcxx_cv_func___builtin_abs_use=no
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+      ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+
-+fi
-+
-+  fi
-+  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_abs_use" >&5
-+echo "${ECHO_T}$glibcxx_cv_func___builtin_abs_use" >&6
-+  if test x$glibcxx_cv_func___builtin_abs_use = x"yes"; then
-+    echo "$as_me:$LINENO: checking for __builtin_abs linkage" >&5
-+echo $ECHO_N "checking for __builtin_abs linkage... $ECHO_C" >&6
-+    if test x${glibcxx_cv_func___builtin_abs_link+set} != xset; then
-+      if test "${glibcxx_cv_func___builtin_abs_link+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+
-+        if test x$gcc_no_link = xyes; then
-+  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-+   { (exit 1); exit 1; }; }
-+fi
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+#include <math.h>
-+int
-+main ()
-+{
-+ __builtin_abs(0);
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+  (eval $ac_link) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+       { ac_try='test -z "$ac_c_werror_flag"
-+                       || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+       { ac_try='test -s conftest$ac_exeext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  glibcxx_cv_func___builtin_abs_link=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+glibcxx_cv_func___builtin_abs_link=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+      conftest$ac_exeext conftest.$ac_ext
-+
-+fi
-+
-+    fi
-+    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_abs_link" >&5
-+echo "${ECHO_T}$glibcxx_cv_func___builtin_abs_link" >&6
-+
-+    if test x$glibcxx_cv_func___builtin_abs_link = x"yes"; then
-+
-+cat >>confdefs.h <<\_ACEOF
-+#define HAVE___BUILTIN_ABS 1
-+_ACEOF
-+
-+    fi
-+
-+  fi
-+
-+
-+  echo "$as_me:$LINENO: checking for __builtin_fabsf declaration" >&5
-+echo $ECHO_N "checking for __builtin_fabsf declaration... $ECHO_C" >&6
-+  if test x${glibcxx_cv_func___builtin_fabsf_use+set} != xset; then
-+    if test "${glibcxx_cv_func___builtin_fabsf_use+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+
-+
-+
-+      ac_ext=cc
-+ac_cpp='$CXXCPP $CPPFLAGS'
-+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-+
-+      cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+#include <math.h>
-+int
-+main ()
-+{
-+ __builtin_fabsf(0);
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+       { ac_try='test -z "$ac_cxx_werror_flag"
-+                       || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+       { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  glibcxx_cv_func___builtin_fabsf_use=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+glibcxx_cv_func___builtin_fabsf_use=no
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+      ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+
-+fi
-+
-+  fi
-+  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_fabsf_use" >&5
-+echo "${ECHO_T}$glibcxx_cv_func___builtin_fabsf_use" >&6
-+  if test x$glibcxx_cv_func___builtin_fabsf_use = x"yes"; then
-+    echo "$as_me:$LINENO: checking for __builtin_fabsf linkage" >&5
-+echo $ECHO_N "checking for __builtin_fabsf linkage... $ECHO_C" >&6
-+    if test x${glibcxx_cv_func___builtin_fabsf_link+set} != xset; then
-+      if test "${glibcxx_cv_func___builtin_fabsf_link+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+
-+        if test x$gcc_no_link = xyes; then
-+  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-+   { (exit 1); exit 1; }; }
-+fi
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+#include <math.h>
-+int
-+main ()
-+{
-+ __builtin_fabsf(0);
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+  (eval $ac_link) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+       { ac_try='test -z "$ac_c_werror_flag"
-+                       || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+       { ac_try='test -s conftest$ac_exeext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  glibcxx_cv_func___builtin_fabsf_link=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+glibcxx_cv_func___builtin_fabsf_link=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+      conftest$ac_exeext conftest.$ac_ext
-+
-+fi
-+
-+    fi
-+    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_fabsf_link" >&5
-+echo "${ECHO_T}$glibcxx_cv_func___builtin_fabsf_link" >&6
-+
-+    if test x$glibcxx_cv_func___builtin_fabsf_link = x"yes"; then
-+
-+cat >>confdefs.h <<\_ACEOF
-+#define HAVE___BUILTIN_FABSF 1
-+_ACEOF
-+
-+    fi
-+
-+  fi
-+
-+
-+  echo "$as_me:$LINENO: checking for __builtin_fabs declaration" >&5
-+echo $ECHO_N "checking for __builtin_fabs declaration... $ECHO_C" >&6
-+  if test x${glibcxx_cv_func___builtin_fabs_use+set} != xset; then
-+    if test "${glibcxx_cv_func___builtin_fabs_use+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+
-+
-+
-+      ac_ext=cc
-+ac_cpp='$CXXCPP $CPPFLAGS'
-+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-+
-+      cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+#include <math.h>
-+int
-+main ()
-+{
-+ __builtin_fabs(0);
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+       { ac_try='test -z "$ac_cxx_werror_flag"
-+                       || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+       { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  glibcxx_cv_func___builtin_fabs_use=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+glibcxx_cv_func___builtin_fabs_use=no
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+      ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+
-+fi
-+
-+  fi
-+  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_fabs_use" >&5
-+echo "${ECHO_T}$glibcxx_cv_func___builtin_fabs_use" >&6
-+  if test x$glibcxx_cv_func___builtin_fabs_use = x"yes"; then
-+    echo "$as_me:$LINENO: checking for __builtin_fabs linkage" >&5
-+echo $ECHO_N "checking for __builtin_fabs linkage... $ECHO_C" >&6
-+    if test x${glibcxx_cv_func___builtin_fabs_link+set} != xset; then
-+      if test "${glibcxx_cv_func___builtin_fabs_link+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+
-+        if test x$gcc_no_link = xyes; then
-+  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-+   { (exit 1); exit 1; }; }
-+fi
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+#include <math.h>
-+int
-+main ()
-+{
-+ __builtin_fabs(0);
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+  (eval $ac_link) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+       { ac_try='test -z "$ac_c_werror_flag"
-+                       || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+       { ac_try='test -s conftest$ac_exeext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  glibcxx_cv_func___builtin_fabs_link=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+glibcxx_cv_func___builtin_fabs_link=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+      conftest$ac_exeext conftest.$ac_ext
-+
-+fi
-+
-+    fi
-+    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_fabs_link" >&5
-+echo "${ECHO_T}$glibcxx_cv_func___builtin_fabs_link" >&6
-+
-+    if test x$glibcxx_cv_func___builtin_fabs_link = x"yes"; then
-+
-+cat >>confdefs.h <<\_ACEOF
-+#define HAVE___BUILTIN_FABS 1
-+_ACEOF
-+
-+    fi
-+
-+  fi
-+
-+
-+  echo "$as_me:$LINENO: checking for __builtin_fabsl declaration" >&5
-+echo $ECHO_N "checking for __builtin_fabsl declaration... $ECHO_C" >&6
-+  if test x${glibcxx_cv_func___builtin_fabsl_use+set} != xset; then
-+    if test "${glibcxx_cv_func___builtin_fabsl_use+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+
-+
-+
-+      ac_ext=cc
-+ac_cpp='$CXXCPP $CPPFLAGS'
-+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-+
-+      cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+#include <math.h>
-+int
-+main ()
-+{
-+ __builtin_fabsl(0);
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+       { ac_try='test -z "$ac_cxx_werror_flag"
-+                       || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+       { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  glibcxx_cv_func___builtin_fabsl_use=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+glibcxx_cv_func___builtin_fabsl_use=no
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+      ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+
-+fi
-+
-+  fi
-+  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_fabsl_use" >&5
-+echo "${ECHO_T}$glibcxx_cv_func___builtin_fabsl_use" >&6
-+  if test x$glibcxx_cv_func___builtin_fabsl_use = x"yes"; then
-+    echo "$as_me:$LINENO: checking for __builtin_fabsl linkage" >&5
-+echo $ECHO_N "checking for __builtin_fabsl linkage... $ECHO_C" >&6
-+    if test x${glibcxx_cv_func___builtin_fabsl_link+set} != xset; then
-+      if test "${glibcxx_cv_func___builtin_fabsl_link+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+
-+        if test x$gcc_no_link = xyes; then
-+  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-+   { (exit 1); exit 1; }; }
-+fi
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+#include <math.h>
-+int
-+main ()
-+{
-+ __builtin_fabsl(0);
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+  (eval $ac_link) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+       { ac_try='test -z "$ac_c_werror_flag"
-+                       || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+       { ac_try='test -s conftest$ac_exeext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  glibcxx_cv_func___builtin_fabsl_link=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+glibcxx_cv_func___builtin_fabsl_link=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+      conftest$ac_exeext conftest.$ac_ext
-+
-+fi
-+
-+    fi
-+    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_fabsl_link" >&5
-+echo "${ECHO_T}$glibcxx_cv_func___builtin_fabsl_link" >&6
-+
-+    if test x$glibcxx_cv_func___builtin_fabsl_link = x"yes"; then
-+
-+cat >>confdefs.h <<\_ACEOF
-+#define HAVE___BUILTIN_FABSL 1
-+_ACEOF
-+
-+    fi
-+
-+  fi
-+
-+
-+  echo "$as_me:$LINENO: checking for __builtin_labs declaration" >&5
-+echo $ECHO_N "checking for __builtin_labs declaration... $ECHO_C" >&6
-+  if test x${glibcxx_cv_func___builtin_labs_use+set} != xset; then
-+    if test "${glibcxx_cv_func___builtin_labs_use+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+
-+
-+
-+      ac_ext=cc
-+ac_cpp='$CXXCPP $CPPFLAGS'
-+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-+
-+      cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+#include <math.h>
-+int
-+main ()
-+{
-+ __builtin_labs(0);
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+       { ac_try='test -z "$ac_cxx_werror_flag"
-+                       || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+       { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  glibcxx_cv_func___builtin_labs_use=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+glibcxx_cv_func___builtin_labs_use=no
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+      ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+
-+fi
-+
-+  fi
-+  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_labs_use" >&5
-+echo "${ECHO_T}$glibcxx_cv_func___builtin_labs_use" >&6
-+  if test x$glibcxx_cv_func___builtin_labs_use = x"yes"; then
-+    echo "$as_me:$LINENO: checking for __builtin_labs linkage" >&5
-+echo $ECHO_N "checking for __builtin_labs linkage... $ECHO_C" >&6
-+    if test x${glibcxx_cv_func___builtin_labs_link+set} != xset; then
-+      if test "${glibcxx_cv_func___builtin_labs_link+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+
-+        if test x$gcc_no_link = xyes; then
-+  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-+   { (exit 1); exit 1; }; }
-+fi
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+#include <math.h>
-+int
-+main ()
-+{
-+ __builtin_labs(0);
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+  (eval $ac_link) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+       { ac_try='test -z "$ac_c_werror_flag"
-+                       || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+       { ac_try='test -s conftest$ac_exeext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  glibcxx_cv_func___builtin_labs_link=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+glibcxx_cv_func___builtin_labs_link=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+      conftest$ac_exeext conftest.$ac_ext
-+
-+fi
-+
-+    fi
-+    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_labs_link" >&5
-+echo "${ECHO_T}$glibcxx_cv_func___builtin_labs_link" >&6
-+
-+    if test x$glibcxx_cv_func___builtin_labs_link = x"yes"; then
-+
-+cat >>confdefs.h <<\_ACEOF
-+#define HAVE___BUILTIN_LABS 1
-+_ACEOF
-+
-+    fi
-+
-+  fi
-+
-+
-+
-+  echo "$as_me:$LINENO: checking for __builtin_sqrtf declaration" >&5
-+echo $ECHO_N "checking for __builtin_sqrtf declaration... $ECHO_C" >&6
-+  if test x${glibcxx_cv_func___builtin_sqrtf_use+set} != xset; then
-+    if test "${glibcxx_cv_func___builtin_sqrtf_use+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+
-+
-+
-+      ac_ext=cc
-+ac_cpp='$CXXCPP $CPPFLAGS'
-+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-+
-+      cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+#include <math.h>
-+int
-+main ()
-+{
-+ __builtin_sqrtf(0);
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+       { ac_try='test -z "$ac_cxx_werror_flag"
-+                       || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+       { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  glibcxx_cv_func___builtin_sqrtf_use=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+glibcxx_cv_func___builtin_sqrtf_use=no
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+      ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+
-+fi
-+
-+  fi
-+  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sqrtf_use" >&5
-+echo "${ECHO_T}$glibcxx_cv_func___builtin_sqrtf_use" >&6
-+  if test x$glibcxx_cv_func___builtin_sqrtf_use = x"yes"; then
-+    echo "$as_me:$LINENO: checking for __builtin_sqrtf linkage" >&5
-+echo $ECHO_N "checking for __builtin_sqrtf linkage... $ECHO_C" >&6
-+    if test x${glibcxx_cv_func___builtin_sqrtf_link+set} != xset; then
-+      if test "${glibcxx_cv_func___builtin_sqrtf_link+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+
-+        if test x$gcc_no_link = xyes; then
-+  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-+   { (exit 1); exit 1; }; }
-+fi
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+#include <math.h>
-+int
-+main ()
-+{
-+ __builtin_sqrtf(0);
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+  (eval $ac_link) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+       { ac_try='test -z "$ac_c_werror_flag"
-+                       || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+       { ac_try='test -s conftest$ac_exeext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  glibcxx_cv_func___builtin_sqrtf_link=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+glibcxx_cv_func___builtin_sqrtf_link=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+      conftest$ac_exeext conftest.$ac_ext
-+
-+fi
-+
-+    fi
-+    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sqrtf_link" >&5
-+echo "${ECHO_T}$glibcxx_cv_func___builtin_sqrtf_link" >&6
-+
-+    if test x$glibcxx_cv_func___builtin_sqrtf_link = x"yes"; then
-+
-+cat >>confdefs.h <<\_ACEOF
-+#define HAVE___BUILTIN_SQRTF 1
-+_ACEOF
-+
-+    fi
-+
-+  fi
-+
-+
-+  echo "$as_me:$LINENO: checking for __builtin_sqrt declaration" >&5
-+echo $ECHO_N "checking for __builtin_sqrt declaration... $ECHO_C" >&6
-+  if test x${glibcxx_cv_func___builtin_sqrt_use+set} != xset; then
-+    if test "${glibcxx_cv_func___builtin_sqrt_use+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+
-+
-+
-+      ac_ext=cc
-+ac_cpp='$CXXCPP $CPPFLAGS'
-+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-+
-+      cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+#include <math.h>
-+int
-+main ()
-+{
-+ __builtin_sqrt(0);
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+       { ac_try='test -z "$ac_cxx_werror_flag"
-+                       || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+       { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  glibcxx_cv_func___builtin_sqrt_use=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+glibcxx_cv_func___builtin_sqrt_use=no
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+      ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+
-+fi
-+
-+  fi
-+  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sqrt_use" >&5
-+echo "${ECHO_T}$glibcxx_cv_func___builtin_sqrt_use" >&6
-+  if test x$glibcxx_cv_func___builtin_sqrt_use = x"yes"; then
-+    echo "$as_me:$LINENO: checking for __builtin_sqrt linkage" >&5
-+echo $ECHO_N "checking for __builtin_sqrt linkage... $ECHO_C" >&6
-+    if test x${glibcxx_cv_func___builtin_sqrt_link+set} != xset; then
-+      if test "${glibcxx_cv_func___builtin_sqrt_link+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+
-+        if test x$gcc_no_link = xyes; then
-+  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-+   { (exit 1); exit 1; }; }
-+fi
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+#include <math.h>
-+int
-+main ()
-+{
-+ __builtin_sqrt(0);
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+  (eval $ac_link) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+       { ac_try='test -z "$ac_c_werror_flag"
-+                       || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+       { ac_try='test -s conftest$ac_exeext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  glibcxx_cv_func___builtin_sqrt_link=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+glibcxx_cv_func___builtin_sqrt_link=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+      conftest$ac_exeext conftest.$ac_ext
-+
-+fi
-+
-+    fi
-+    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sqrt_link" >&5
-+echo "${ECHO_T}$glibcxx_cv_func___builtin_sqrt_link" >&6
-+
-+    if test x$glibcxx_cv_func___builtin_sqrt_link = x"yes"; then
-+
-+cat >>confdefs.h <<\_ACEOF
-+#define HAVE___BUILTIN_SQRT 1
-+_ACEOF
-+
-+    fi
-+
-+  fi
-+
-+
-+  echo "$as_me:$LINENO: checking for __builtin_sqrtl declaration" >&5
-+echo $ECHO_N "checking for __builtin_sqrtl declaration... $ECHO_C" >&6
-+  if test x${glibcxx_cv_func___builtin_sqrtl_use+set} != xset; then
-+    if test "${glibcxx_cv_func___builtin_sqrtl_use+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+
-+
-+
-+      ac_ext=cc
-+ac_cpp='$CXXCPP $CPPFLAGS'
-+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-+
-+      cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+#include <math.h>
-+int
-+main ()
-+{
-+ __builtin_sqrtl(0);
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+       { ac_try='test -z "$ac_cxx_werror_flag"
-+                       || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+       { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  glibcxx_cv_func___builtin_sqrtl_use=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+glibcxx_cv_func___builtin_sqrtl_use=no
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+      ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+
-+fi
-+
-+  fi
-+  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sqrtl_use" >&5
-+echo "${ECHO_T}$glibcxx_cv_func___builtin_sqrtl_use" >&6
-+  if test x$glibcxx_cv_func___builtin_sqrtl_use = x"yes"; then
-+    echo "$as_me:$LINENO: checking for __builtin_sqrtl linkage" >&5
-+echo $ECHO_N "checking for __builtin_sqrtl linkage... $ECHO_C" >&6
-+    if test x${glibcxx_cv_func___builtin_sqrtl_link+set} != xset; then
-+      if test "${glibcxx_cv_func___builtin_sqrtl_link+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+
-+        if test x$gcc_no_link = xyes; then
-+  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-+   { (exit 1); exit 1; }; }
-+fi
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+#include <math.h>
-+int
-+main ()
-+{
-+ __builtin_sqrtl(0);
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+  (eval $ac_link) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+       { ac_try='test -z "$ac_c_werror_flag"
-+                       || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+       { ac_try='test -s conftest$ac_exeext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  glibcxx_cv_func___builtin_sqrtl_link=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+glibcxx_cv_func___builtin_sqrtl_link=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+      conftest$ac_exeext conftest.$ac_ext
-+
-+fi
-+
-+    fi
-+    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sqrtl_link" >&5
-+echo "${ECHO_T}$glibcxx_cv_func___builtin_sqrtl_link" >&6
-+
-+    if test x$glibcxx_cv_func___builtin_sqrtl_link = x"yes"; then
-+
-+cat >>confdefs.h <<\_ACEOF
-+#define HAVE___BUILTIN_SQRTL 1
-+_ACEOF
-+
-+    fi
-+
-+  fi
-+
-+
-+
-+  echo "$as_me:$LINENO: checking for __builtin_sinf declaration" >&5
-+echo $ECHO_N "checking for __builtin_sinf declaration... $ECHO_C" >&6
-+  if test x${glibcxx_cv_func___builtin_sinf_use+set} != xset; then
-+    if test "${glibcxx_cv_func___builtin_sinf_use+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+
-+
-+
-+      ac_ext=cc
-+ac_cpp='$CXXCPP $CPPFLAGS'
-+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-+
-+      cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+#include <math.h>
-+int
-+main ()
-+{
-+ __builtin_sinf(0);
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+       { ac_try='test -z "$ac_cxx_werror_flag"
-+                       || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+       { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  glibcxx_cv_func___builtin_sinf_use=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+glibcxx_cv_func___builtin_sinf_use=no
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+      ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+
-+fi
-+
-+  fi
-+  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sinf_use" >&5
-+echo "${ECHO_T}$glibcxx_cv_func___builtin_sinf_use" >&6
-+  if test x$glibcxx_cv_func___builtin_sinf_use = x"yes"; then
-+    echo "$as_me:$LINENO: checking for __builtin_sinf linkage" >&5
-+echo $ECHO_N "checking for __builtin_sinf linkage... $ECHO_C" >&6
-+    if test x${glibcxx_cv_func___builtin_sinf_link+set} != xset; then
-+      if test "${glibcxx_cv_func___builtin_sinf_link+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+
-+        if test x$gcc_no_link = xyes; then
-+  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-+   { (exit 1); exit 1; }; }
-+fi
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+#include <math.h>
-+int
-+main ()
-+{
-+ __builtin_sinf(0);
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+  (eval $ac_link) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+       { ac_try='test -z "$ac_c_werror_flag"
-+                       || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+       { ac_try='test -s conftest$ac_exeext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  glibcxx_cv_func___builtin_sinf_link=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+glibcxx_cv_func___builtin_sinf_link=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+      conftest$ac_exeext conftest.$ac_ext
-+
-+fi
-+
-+    fi
-+    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sinf_link" >&5
-+echo "${ECHO_T}$glibcxx_cv_func___builtin_sinf_link" >&6
-+
-+    if test x$glibcxx_cv_func___builtin_sinf_link = x"yes"; then
-+
-+cat >>confdefs.h <<\_ACEOF
-+#define HAVE___BUILTIN_SINF 1
-+_ACEOF
-+
-+    fi
-+
-+  fi
-+
-+
-+  echo "$as_me:$LINENO: checking for __builtin_sin declaration" >&5
-+echo $ECHO_N "checking for __builtin_sin declaration... $ECHO_C" >&6
-+  if test x${glibcxx_cv_func___builtin_sin_use+set} != xset; then
-+    if test "${glibcxx_cv_func___builtin_sin_use+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+
-+
-+
-+      ac_ext=cc
-+ac_cpp='$CXXCPP $CPPFLAGS'
-+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-+
-+      cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+#include <math.h>
-+int
-+main ()
-+{
-+ __builtin_sin(0);
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+       { ac_try='test -z "$ac_cxx_werror_flag"
-+                       || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+       { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  glibcxx_cv_func___builtin_sin_use=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+glibcxx_cv_func___builtin_sin_use=no
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+      ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+
-+fi
-+
-+  fi
-+  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sin_use" >&5
-+echo "${ECHO_T}$glibcxx_cv_func___builtin_sin_use" >&6
-+  if test x$glibcxx_cv_func___builtin_sin_use = x"yes"; then
-+    echo "$as_me:$LINENO: checking for __builtin_sin linkage" >&5
-+echo $ECHO_N "checking for __builtin_sin linkage... $ECHO_C" >&6
-+    if test x${glibcxx_cv_func___builtin_sin_link+set} != xset; then
-+      if test "${glibcxx_cv_func___builtin_sin_link+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+
-+        if test x$gcc_no_link = xyes; then
-+  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-+   { (exit 1); exit 1; }; }
-+fi
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+#include <math.h>
-+int
-+main ()
-+{
-+ __builtin_sin(0);
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+  (eval $ac_link) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+       { ac_try='test -z "$ac_c_werror_flag"
-+                       || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+       { ac_try='test -s conftest$ac_exeext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  glibcxx_cv_func___builtin_sin_link=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+glibcxx_cv_func___builtin_sin_link=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+      conftest$ac_exeext conftest.$ac_ext
-+
-+fi
-+
-+    fi
-+    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sin_link" >&5
-+echo "${ECHO_T}$glibcxx_cv_func___builtin_sin_link" >&6
-+
-+    if test x$glibcxx_cv_func___builtin_sin_link = x"yes"; then
-+
-+cat >>confdefs.h <<\_ACEOF
-+#define HAVE___BUILTIN_SIN 1
-+_ACEOF
-+
-+    fi
-+
-+  fi
-+
-+
-+  echo "$as_me:$LINENO: checking for __builtin_sinl declaration" >&5
-+echo $ECHO_N "checking for __builtin_sinl declaration... $ECHO_C" >&6
-+  if test x${glibcxx_cv_func___builtin_sinl_use+set} != xset; then
-+    if test "${glibcxx_cv_func___builtin_sinl_use+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+
-+
-+
-+      ac_ext=cc
-+ac_cpp='$CXXCPP $CPPFLAGS'
-+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-+
-+      cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+#include <math.h>
-+int
-+main ()
-+{
-+ __builtin_sinl(0);
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+       { ac_try='test -z "$ac_cxx_werror_flag"
-+                       || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+       { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  glibcxx_cv_func___builtin_sinl_use=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+glibcxx_cv_func___builtin_sinl_use=no
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+      ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+
-+fi
-+
-+  fi
-+  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sinl_use" >&5
-+echo "${ECHO_T}$glibcxx_cv_func___builtin_sinl_use" >&6
-+  if test x$glibcxx_cv_func___builtin_sinl_use = x"yes"; then
-+    echo "$as_me:$LINENO: checking for __builtin_sinl linkage" >&5
-+echo $ECHO_N "checking for __builtin_sinl linkage... $ECHO_C" >&6
-+    if test x${glibcxx_cv_func___builtin_sinl_link+set} != xset; then
-+      if test "${glibcxx_cv_func___builtin_sinl_link+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+
-+        if test x$gcc_no_link = xyes; then
-+  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-+   { (exit 1); exit 1; }; }
-+fi
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+#include <math.h>
-+int
-+main ()
-+{
-+ __builtin_sinl(0);
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+  (eval $ac_link) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+       { ac_try='test -z "$ac_c_werror_flag"
-+                       || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+       { ac_try='test -s conftest$ac_exeext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  glibcxx_cv_func___builtin_sinl_link=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+glibcxx_cv_func___builtin_sinl_link=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+      conftest$ac_exeext conftest.$ac_ext
-+
-+fi
-+
-+    fi
-+    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sinl_link" >&5
-+echo "${ECHO_T}$glibcxx_cv_func___builtin_sinl_link" >&6
-+
-+    if test x$glibcxx_cv_func___builtin_sinl_link = x"yes"; then
-+
-+cat >>confdefs.h <<\_ACEOF
-+#define HAVE___BUILTIN_SINL 1
-+_ACEOF
-+
-+    fi
-+
-+  fi
-+
-+
-+
-+  echo "$as_me:$LINENO: checking for __builtin_cosf declaration" >&5
-+echo $ECHO_N "checking for __builtin_cosf declaration... $ECHO_C" >&6
-+  if test x${glibcxx_cv_func___builtin_cosf_use+set} != xset; then
-+    if test "${glibcxx_cv_func___builtin_cosf_use+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+
-+
-+
-+      ac_ext=cc
-+ac_cpp='$CXXCPP $CPPFLAGS'
-+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-+
-+      cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+#include <math.h>
-+int
-+main ()
-+{
-+ __builtin_cosf(0);
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+       { ac_try='test -z "$ac_cxx_werror_flag"
-+                       || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+       { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  glibcxx_cv_func___builtin_cosf_use=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+glibcxx_cv_func___builtin_cosf_use=no
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+      ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+
-+fi
-+
-+  fi
-+  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_cosf_use" >&5
-+echo "${ECHO_T}$glibcxx_cv_func___builtin_cosf_use" >&6
-+  if test x$glibcxx_cv_func___builtin_cosf_use = x"yes"; then
-+    echo "$as_me:$LINENO: checking for __builtin_cosf linkage" >&5
-+echo $ECHO_N "checking for __builtin_cosf linkage... $ECHO_C" >&6
-+    if test x${glibcxx_cv_func___builtin_cosf_link+set} != xset; then
-+      if test "${glibcxx_cv_func___builtin_cosf_link+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+
-+        if test x$gcc_no_link = xyes; then
-+  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-+   { (exit 1); exit 1; }; }
-+fi
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+#include <math.h>
-+int
-+main ()
-+{
-+ __builtin_cosf(0);
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+  (eval $ac_link) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+       { ac_try='test -z "$ac_c_werror_flag"
-+                       || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+       { ac_try='test -s conftest$ac_exeext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  glibcxx_cv_func___builtin_cosf_link=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+glibcxx_cv_func___builtin_cosf_link=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+      conftest$ac_exeext conftest.$ac_ext
-+
-+fi
-+
-+    fi
-+    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_cosf_link" >&5
-+echo "${ECHO_T}$glibcxx_cv_func___builtin_cosf_link" >&6
-+
-+    if test x$glibcxx_cv_func___builtin_cosf_link = x"yes"; then
-+
-+cat >>confdefs.h <<\_ACEOF
-+#define HAVE___BUILTIN_COSF 1
-+_ACEOF
-+
-+    fi
-+
-+  fi
-+
-+
-+  echo "$as_me:$LINENO: checking for __builtin_cos declaration" >&5
-+echo $ECHO_N "checking for __builtin_cos declaration... $ECHO_C" >&6
-+  if test x${glibcxx_cv_func___builtin_cos_use+set} != xset; then
-+    if test "${glibcxx_cv_func___builtin_cos_use+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+
-+
-+
-+      ac_ext=cc
-+ac_cpp='$CXXCPP $CPPFLAGS'
-+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-+
-+      cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+#include <math.h>
-+int
-+main ()
-+{
-+ __builtin_cos(0);
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+       { ac_try='test -z "$ac_cxx_werror_flag"
-+                       || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+       { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  glibcxx_cv_func___builtin_cos_use=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+glibcxx_cv_func___builtin_cos_use=no
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+      ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+
-+fi
-+
-+  fi
-+  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_cos_use" >&5
-+echo "${ECHO_T}$glibcxx_cv_func___builtin_cos_use" >&6
-+  if test x$glibcxx_cv_func___builtin_cos_use = x"yes"; then
-+    echo "$as_me:$LINENO: checking for __builtin_cos linkage" >&5
-+echo $ECHO_N "checking for __builtin_cos linkage... $ECHO_C" >&6
-+    if test x${glibcxx_cv_func___builtin_cos_link+set} != xset; then
-+      if test "${glibcxx_cv_func___builtin_cos_link+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+
-+        if test x$gcc_no_link = xyes; then
-+  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-+   { (exit 1); exit 1; }; }
-+fi
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+#include <math.h>
-+int
-+main ()
-+{
-+ __builtin_cos(0);
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+  (eval $ac_link) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+       { ac_try='test -z "$ac_c_werror_flag"
-+                       || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+       { ac_try='test -s conftest$ac_exeext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  glibcxx_cv_func___builtin_cos_link=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+glibcxx_cv_func___builtin_cos_link=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+      conftest$ac_exeext conftest.$ac_ext
-+
-+fi
-+
-+    fi
-+    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_cos_link" >&5
-+echo "${ECHO_T}$glibcxx_cv_func___builtin_cos_link" >&6
-+
-+    if test x$glibcxx_cv_func___builtin_cos_link = x"yes"; then
-+
-+cat >>confdefs.h <<\_ACEOF
-+#define HAVE___BUILTIN_COS 1
-+_ACEOF
-+
-+    fi
-+
-+  fi
-+
-+
-+  echo "$as_me:$LINENO: checking for __builtin_cosl declaration" >&5
-+echo $ECHO_N "checking for __builtin_cosl declaration... $ECHO_C" >&6
-+  if test x${glibcxx_cv_func___builtin_cosl_use+set} != xset; then
-+    if test "${glibcxx_cv_func___builtin_cosl_use+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+
-+
-+
-+      ac_ext=cc
-+ac_cpp='$CXXCPP $CPPFLAGS'
-+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-+
-+      cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+#include <math.h>
-+int
-+main ()
-+{
-+ __builtin_cosl(0);
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+       { ac_try='test -z "$ac_cxx_werror_flag"
-+                       || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+       { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  glibcxx_cv_func___builtin_cosl_use=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+glibcxx_cv_func___builtin_cosl_use=no
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+      ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+
-+fi
-+
-+  fi
-+  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_cosl_use" >&5
-+echo "${ECHO_T}$glibcxx_cv_func___builtin_cosl_use" >&6
-+  if test x$glibcxx_cv_func___builtin_cosl_use = x"yes"; then
-+    echo "$as_me:$LINENO: checking for __builtin_cosl linkage" >&5
-+echo $ECHO_N "checking for __builtin_cosl linkage... $ECHO_C" >&6
-+    if test x${glibcxx_cv_func___builtin_cosl_link+set} != xset; then
-+      if test "${glibcxx_cv_func___builtin_cosl_link+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+
-+        if test x$gcc_no_link = xyes; then
-+  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-+   { (exit 1); exit 1; }; }
-+fi
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+#include <math.h>
-+int
-+main ()
-+{
-+ __builtin_cosl(0);
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+  (eval $ac_link) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+       { ac_try='test -z "$ac_c_werror_flag"
-+                       || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+       { ac_try='test -s conftest$ac_exeext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  glibcxx_cv_func___builtin_cosl_link=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+glibcxx_cv_func___builtin_cosl_link=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+      conftest$ac_exeext conftest.$ac_ext
-+
-+fi
-+
-+    fi
-+    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_cosl_link" >&5
-+echo "${ECHO_T}$glibcxx_cv_func___builtin_cosl_link" >&6
-+
-+    if test x$glibcxx_cv_func___builtin_cosl_link = x"yes"; then
-+
-+cat >>confdefs.h <<\_ACEOF
-+#define HAVE___BUILTIN_COSL 1
-+_ACEOF
-+
-+    fi
-+
-+  fi
-+
-+
-+
-+
-+echo "$as_me:$LINENO: checking for main in -lm" >&5
-+echo $ECHO_N "checking for main in -lm... $ECHO_C" >&6
-+if test "${ac_cv_lib_m_main+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+  ac_check_lib_save_LIBS=$LIBS
-+LIBS="-lm  $LIBS"
-+if test x$gcc_no_link = xyes; then
-+  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-+   { (exit 1); exit 1; }; }
-+fi
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+
-+
-+int
-+main ()
-+{
-+main ();
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+  (eval $ac_link) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+       { ac_try='test -z "$ac_c_werror_flag"
-+                       || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+       { ac_try='test -s conftest$ac_exeext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  ac_cv_lib_m_main=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_m_main=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+      conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_m_main" >&5
-+echo "${ECHO_T}$ac_cv_lib_m_main" >&6
-+if test $ac_cv_lib_m_main = yes; then
-+  cat >>confdefs.h <<_ACEOF
-+#define HAVE_LIBM 1
-+_ACEOF
-+
-+  LIBS="-lm $LIBS"
-+
-+fi
-+
-+
-+for ac_func in copysignf
-+do
-+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-+echo "$as_me:$LINENO: checking for $ac_func" >&5
-+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-+if eval "test \"\${$as_ac_var+set}\" = set"; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+  if test x$gcc_no_link = xyes; then
-+  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-+   { (exit 1); exit 1; }; }
-+fi
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-+#define $ac_func innocuous_$ac_func
-+
-+/* System header to define __stub macros and hopefully few prototypes,
-+    which can conflict with char $ac_func (); below.
-+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-+    <limits.h> exists even on freestanding compilers.  */
-+
-+#ifdef __STDC__
-+# include <limits.h>
-+#else
-+# include <assert.h>
-+#endif
-+
-+#undef $ac_func
-+
-+/* Override any gcc2 internal prototype to avoid an error.  */
-+#ifdef __cplusplus
-+extern "C"
-+{
-+#endif
-+/* We use char because int might match the return type of a gcc2
-+   builtin and then its argument prototype would still apply.  */
-+char $ac_func ();
-+/* The GNU C library defines this for functions which it implements
-+    to always fail with ENOSYS.  Some functions are actually named
-+    something starting with __ and the normal name is an alias.  */
-+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-+choke me
-+#else
-+char (*f) () = $ac_func;
-+#endif
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+int
-+main ()
-+{
-+return f != $ac_func;
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+  (eval $ac_link) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+       { ac_try='test -z "$ac_c_werror_flag"
-+                       || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+       { ac_try='test -s conftest$ac_exeext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  eval "$as_ac_var=yes"
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+eval "$as_ac_var=no"
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+      conftest$ac_exeext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-+if test `eval echo '${'$as_ac_var'}'` = yes; then
-+  cat >>confdefs.h <<_ACEOF
-+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-+_ACEOF
-+
-+else
-+  LIBMATHOBJS="$LIBMATHOBJS ${ac_func}.lo"
-+fi
-+done
-+
-+
-+
-+for ac_func in __signbit
-+do
-+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-+echo "$as_me:$LINENO: checking for $ac_func" >&5
-+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-+if eval "test \"\${$as_ac_var+set}\" = set"; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+  if test x$gcc_no_link = xyes; then
-+  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-+   { (exit 1); exit 1; }; }
-+fi
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-+#define $ac_func innocuous_$ac_func
-+
-+/* System header to define __stub macros and hopefully few prototypes,
-+    which can conflict with char $ac_func (); below.
-+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-+    <limits.h> exists even on freestanding compilers.  */
-+
-+#ifdef __STDC__
-+# include <limits.h>
-+#else
-+# include <assert.h>
-+#endif
-+
-+#undef $ac_func
-+
-+/* Override any gcc2 internal prototype to avoid an error.  */
-+#ifdef __cplusplus
-+extern "C"
-+{
-+#endif
-+/* We use char because int might match the return type of a gcc2
-+   builtin and then its argument prototype would still apply.  */
-+char $ac_func ();
-+/* The GNU C library defines this for functions which it implements
-+    to always fail with ENOSYS.  Some functions are actually named
-+    something starting with __ and the normal name is an alias.  */
-+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-+choke me
-+#else
-+char (*f) () = $ac_func;
-+#endif
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+int
-+main ()
-+{
-+return f != $ac_func;
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+  (eval $ac_link) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+       { ac_try='test -z "$ac_c_werror_flag"
-+                       || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+       { ac_try='test -s conftest$ac_exeext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  eval "$as_ac_var=yes"
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+eval "$as_ac_var=no"
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+      conftest$ac_exeext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-+if test `eval echo '${'$as_ac_var'}'` = yes; then
-+  cat >>confdefs.h <<_ACEOF
-+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-+_ACEOF
-+
-+else
-+  LIBMATHOBJS="$LIBMATHOBJS signbit.lo"
-+fi
-+done
-+
-+
-+
-+for ac_func in __signbitf
-+do
-+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-+echo "$as_me:$LINENO: checking for $ac_func" >&5
-+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-+if eval "test \"\${$as_ac_var+set}\" = set"; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+  if test x$gcc_no_link = xyes; then
-+  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-+   { (exit 1); exit 1; }; }
-+fi
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-+#define $ac_func innocuous_$ac_func
-+
-+/* System header to define __stub macros and hopefully few prototypes,
-+    which can conflict with char $ac_func (); below.
-+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-+    <limits.h> exists even on freestanding compilers.  */
-+
-+#ifdef __STDC__
-+# include <limits.h>
-+#else
-+# include <assert.h>
-+#endif
-+
-+#undef $ac_func
-+
-+/* Override any gcc2 internal prototype to avoid an error.  */
-+#ifdef __cplusplus
-+extern "C"
-+{
-+#endif
-+/* We use char because int might match the return type of a gcc2
-+   builtin and then its argument prototype would still apply.  */
-+char $ac_func ();
-+/* The GNU C library defines this for functions which it implements
-+    to always fail with ENOSYS.  Some functions are actually named
-+    something starting with __ and the normal name is an alias.  */
-+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-+choke me
-+#else
-+char (*f) () = $ac_func;
-+#endif
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+int
-+main ()
-+{
-+return f != $ac_func;
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+  (eval $ac_link) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+       { ac_try='test -z "$ac_c_werror_flag"
-+                       || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+       { ac_try='test -s conftest$ac_exeext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  eval "$as_ac_var=yes"
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+eval "$as_ac_var=no"
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+      conftest$ac_exeext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-+if test `eval echo '${'$as_ac_var'}'` = yes; then
-+  cat >>confdefs.h <<_ACEOF
-+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-+_ACEOF
-+
-+else
-+  LIBMATHOBJS="$LIBMATHOBJS signbitf.lo"
-+fi
-+done
-+
-+
-+          if test x$ac_cv_func_copysignl = x"yes"; then
-+
-+for ac_func in __signbitl
-+do
-+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-+echo "$as_me:$LINENO: checking for $ac_func" >&5
-+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-+if eval "test \"\${$as_ac_var+set}\" = set"; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+  if test x$gcc_no_link = xyes; then
-+  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-+   { (exit 1); exit 1; }; }
-+fi
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-+#define $ac_func innocuous_$ac_func
-+
-+/* System header to define __stub macros and hopefully few prototypes,
-+    which can conflict with char $ac_func (); below.
-+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-+    <limits.h> exists even on freestanding compilers.  */
-+
-+#ifdef __STDC__
-+# include <limits.h>
-+#else
-+# include <assert.h>
-+#endif
-+
-+#undef $ac_func
-+
-+/* Override any gcc2 internal prototype to avoid an error.  */
-+#ifdef __cplusplus
-+extern "C"
-+{
-+#endif
-+/* We use char because int might match the return type of a gcc2
-+   builtin and then its argument prototype would still apply.  */
-+char $ac_func ();
-+/* The GNU C library defines this for functions which it implements
-+    to always fail with ENOSYS.  Some functions are actually named
-+    something starting with __ and the normal name is an alias.  */
-+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-+choke me
-+#else
-+char (*f) () = $ac_func;
-+#endif
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+int
-+main ()
-+{
-+return f != $ac_func;
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+  (eval $ac_link) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+       { ac_try='test -z "$ac_c_werror_flag"
-+                       || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+       { ac_try='test -s conftest$ac_exeext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  eval "$as_ac_var=yes"
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+eval "$as_ac_var=no"
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+      conftest$ac_exeext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-+if test `eval echo '${'$as_ac_var'}'` = yes; then
-+  cat >>confdefs.h <<_ACEOF
-+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-+_ACEOF
-+
-+else
-+  LIBMATHOBJS="$LIBMATHOBJS signbitl.lo"
-+fi
-+done
-+
-+  fi
-+
-+  # Used in libmath/Makefile.am.
-+  if test -n "$LIBMATHOBJS"; then
-+    need_libmath=yes
-+  fi
-+
-+
-+
-+  ac_test_CXXFLAGS="${CXXFLAGS+set}"
-+  ac_save_CXXFLAGS="$CXXFLAGS"
-+  CXXFLAGS='-fno-builtin -D_GNU_SOURCE'
-+
-+
-+  echo "$as_me:$LINENO: checking for strtold declaration" >&5
-+echo $ECHO_N "checking for strtold declaration... $ECHO_C" >&6
-+  if test x${glibcxx_cv_func_strtold_use+set} != xset; then
-+    if test "${glibcxx_cv_func_strtold_use+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+
-+
-+
-+      ac_ext=cc
-+ac_cpp='$CXXCPP $CPPFLAGS'
-+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-+
-+      cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+#include <stdlib.h>
-+int
-+main ()
-+{
-+ strtold(0, 0);
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+       { ac_try='test -z "$ac_cxx_werror_flag"
-+                       || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+       { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  glibcxx_cv_func_strtold_use=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+glibcxx_cv_func_strtold_use=no
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+      ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+
-+fi
-+
-+  fi
-+  echo "$as_me:$LINENO: result: $glibcxx_cv_func_strtold_use" >&5
-+echo "${ECHO_T}$glibcxx_cv_func_strtold_use" >&6
-+  if test x$glibcxx_cv_func_strtold_use = x"yes"; then
-+
-+for ac_func in strtold
-+do
-+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-+echo "$as_me:$LINENO: checking for $ac_func" >&5
-+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-+if eval "test \"\${$as_ac_var+set}\" = set"; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+  if test x$gcc_no_link = xyes; then
-+  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-+   { (exit 1); exit 1; }; }
-+fi
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-+#define $ac_func innocuous_$ac_func
-+
-+/* System header to define __stub macros and hopefully few prototypes,
-+    which can conflict with char $ac_func (); below.
-+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-+    <limits.h> exists even on freestanding compilers.  */
-+
-+#ifdef __STDC__
-+# include <limits.h>
-+#else
-+# include <assert.h>
-+#endif
-+
-+#undef $ac_func
-+
-+/* Override any gcc2 internal prototype to avoid an error.  */
-+#ifdef __cplusplus
-+extern "C"
-+{
-+#endif
-+/* We use char because int might match the return type of a gcc2
-+   builtin and then its argument prototype would still apply.  */
-+char $ac_func ();
-+/* The GNU C library defines this for functions which it implements
-+    to always fail with ENOSYS.  Some functions are actually named
-+    something starting with __ and the normal name is an alias.  */
-+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-+choke me
-+#else
-+char (*f) () = $ac_func;
-+#endif
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+int
-+main ()
-+{
-+return f != $ac_func;
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+  (eval $ac_link) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+       { ac_try='test -z "$ac_c_werror_flag"
-+                       || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+       { ac_try='test -s conftest$ac_exeext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  eval "$as_ac_var=yes"
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+eval "$as_ac_var=no"
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+      conftest$ac_exeext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-+if test `eval echo '${'$as_ac_var'}'` = yes; then
-+  cat >>confdefs.h <<_ACEOF
-+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-+_ACEOF
-+
-+fi
-+done
-+
-+  fi
-+
-+
-+
-+
-+
-+  echo "$as_me:$LINENO: checking for strtof declaration" >&5
-+echo $ECHO_N "checking for strtof declaration... $ECHO_C" >&6
-+  if test x${glibcxx_cv_func_strtof_use+set} != xset; then
-+    if test "${glibcxx_cv_func_strtof_use+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+
-+
-+
-+      ac_ext=cc
-+ac_cpp='$CXXCPP $CPPFLAGS'
-+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-+
-+      cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+#include <stdlib.h>
-+int
-+main ()
-+{
-+ strtof(0, 0);
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+       { ac_try='test -z "$ac_cxx_werror_flag"
-+                       || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+       { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  glibcxx_cv_func_strtof_use=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+glibcxx_cv_func_strtof_use=no
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+      ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+
-+fi
-+
-+  fi
-+  echo "$as_me:$LINENO: result: $glibcxx_cv_func_strtof_use" >&5
-+echo "${ECHO_T}$glibcxx_cv_func_strtof_use" >&6
-+  if test x$glibcxx_cv_func_strtof_use = x"yes"; then
-+
-+for ac_func in strtof
-+do
-+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-+echo "$as_me:$LINENO: checking for $ac_func" >&5
-+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-+if eval "test \"\${$as_ac_var+set}\" = set"; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+  if test x$gcc_no_link = xyes; then
-+  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-+   { (exit 1); exit 1; }; }
-+fi
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-+#define $ac_func innocuous_$ac_func
-+
-+/* System header to define __stub macros and hopefully few prototypes,
-+    which can conflict with char $ac_func (); below.
-+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-+    <limits.h> exists even on freestanding compilers.  */
-+
-+#ifdef __STDC__
-+# include <limits.h>
-+#else
-+# include <assert.h>
-+#endif
-+
-+#undef $ac_func
-+
-+/* Override any gcc2 internal prototype to avoid an error.  */
-+#ifdef __cplusplus
-+extern "C"
-+{
-+#endif
-+/* We use char because int might match the return type of a gcc2
-+   builtin and then its argument prototype would still apply.  */
-+char $ac_func ();
-+/* The GNU C library defines this for functions which it implements
-+    to always fail with ENOSYS.  Some functions are actually named
-+    something starting with __ and the normal name is an alias.  */
-+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-+choke me
-+#else
-+char (*f) () = $ac_func;
-+#endif
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+int
-+main ()
-+{
-+return f != $ac_func;
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+  (eval $ac_link) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+       { ac_try='test -z "$ac_c_werror_flag"
-+                       || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+       { ac_try='test -s conftest$ac_exeext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  eval "$as_ac_var=yes"
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+eval "$as_ac_var=no"
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+      conftest$ac_exeext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-+if test `eval echo '${'$as_ac_var'}'` = yes; then
-+  cat >>confdefs.h <<_ACEOF
-+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-+_ACEOF
-+
-+fi
-+done
-+
-+  fi
-+
-+
-+
-+
-+
-+  CXXFLAGS="$ac_save_CXXFLAGS"
-+
-+    ;;
-   *-solaris*)
-     case "$target" in
-     #  *-solaris2.5)
-diff -ruN gcc-4.3.2/libstdc++-v3/crossconfig.m4 gcc-4.3.2.new/libstdc++-v3/crossconfig.m4
---- gcc-4.3.2/libstdc++-v3/crossconfig.m4      2008-01-14 16:15:43.000000000 -0800
-+++ gcc-4.3.2.new/libstdc++-v3/crossconfig.m4  2010-03-05 18:33:03.494162381 -0800
-@@ -299,6 +299,12 @@
-     AC_DEFINE(HAVE_SINHF)
-     AC_DEFINE(HAVE_SINHL)
-     ;;
-+  *-ros*)
-+    AC_CHECK_HEADERS([sys/types.h locale.h float.h])
-+    GLIBCXX_CHECK_BUILTIN_MATH_SUPPORT
-+    GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
-+    GLIBCXX_CHECK_STDLIB_SUPPORT
-+    ;;
-   *-solaris*)
-     case "$target" in
-     #  *-solaris2.5)
diff --git a/tools/compilers/gcc-glibc/gcc-4.6.1-riscv.patch b/tools/compilers/gcc-glibc/gcc-4.6.1-riscv.patch
new file mode 100644 (file)
index 0000000..ce5ef05
--- /dev/null
@@ -0,0 +1,15403 @@
+diff -x mpfr -x mpc -x gmp -x autom4te.cache -ruN ../gcc-4.6.1-orig/config.sub gcc-4.6.1/config.sub
+--- ../gcc-4.6.1-orig/config.sub       2010-05-25 06:22:07.000000000 -0700
++++ gcc-4.6.1/config.sub       2011-10-22 19:26:57.000000000 -0700
+@@ -323,6 +323,9 @@
+       ms1)
+               basic_machine=mt-unknown
+               ;;
++      riscv)
++              basic_machine=riscv-ucb
++              ;;
+       # We use `pc' rather than `unknown'
+       # because (1) that's what they normally are, and
+diff -x mpfr -x mpc -x gmp -x autom4te.cache -ruN ../gcc-4.6.1-orig/gcc/config/riscv/constraints.md gcc-4.6.1/gcc/config/riscv/constraints.md
+--- ../gcc-4.6.1-orig/gcc/config/riscv/constraints.md  1969-12-31 16:00:00.000000000 -0800
++++ gcc-4.6.1/gcc/config/riscv/constraints.md  2011-10-22 16:54:57.000000000 -0700
+@@ -0,0 +1,199 @@
++;; Constraint definitions for MIPS.
++;; Copyright (C) 2006, 2007, 2008, 2010 Free Software Foundation, Inc.
++;;
++;; This file is part of GCC.
++;;
++;; GCC 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 3, or (at your option)
++;; any later version.
++;;
++;; GCC 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 GCC; see the file COPYING3.  If not see
++;; <http://www.gnu.org/licenses/>.
++
++;; Register constraints
++
++(define_register_constraint "d" "BASE_REG_CLASS"
++  "An address register.  This is equivalent to @code{r} unless
++   generating MIPS16 code.")
++
++(define_register_constraint "t" "T_REG"
++  "@internal")
++
++(define_register_constraint "f" "TARGET_HARD_FLOAT ? FP_REGS : NO_REGS"
++  "A floating-point register (if available).")
++
++(define_register_constraint "h" "NO_REGS"
++  "Formerly the @code{hi} register.  This constraint is no longer supported.")
++
++(define_register_constraint "b" "ALL_REGS"
++  "@internal")
++
++;; MIPS16 code always calls through a MIPS16 register; see mips_emit_call_insn
++;; for details.
++(define_register_constraint "c" "TARGET_USE_PIC_FN_ADDR_REG ? PIC_FN_ADDR_REG
++                               : GR_REGS"
++  "A register suitable for use in an indirect jump.  This will always be
++   @code{$25} for @option{-mabicalls}.")
++
++(define_register_constraint "e" "LEA_REGS"
++  "@internal")
++
++(define_register_constraint "j" "PIC_FN_ADDR_REG"
++  "@internal")
++
++;; Don't use this constraint in gcc code!  It runs the risk of
++;; introducing a spill failure; see tls_get_tp_<mode>.
++(define_register_constraint "v" "V1_REG"
++  "Register @code{$3}.  Do not use this constraint in new code;
++   it is retained only for compatibility with glibc.")
++
++(define_register_constraint "y" "GR_REGS"
++  "Equivalent to @code{r}; retained for backwards compatibility.")
++
++(define_register_constraint "z" "GR_REGS"
++  "A floating-point condition code register.")
++
++(define_constraint "kf"
++  "@internal"
++  (match_operand 0 "force_to_mem_operand"))
++
++;; This is a normal rather than a register constraint because we can
++;; never use the stack pointer as a reload register.
++(define_constraint "ks"
++  "@internal"
++  (and (match_code "reg")
++       (match_test "REGNO (op) == STACK_POINTER_REGNUM")))
++
++;; Integer constraints
++
++(define_constraint "Z"
++  "A signed 16-bit constant (for arithmetic instructions)."
++  (and (match_code "const_int")
++       (match_test "1")))
++
++(define_constraint "I"
++  "A signed 16-bit constant (for arithmetic instructions)."
++  (and (match_code "const_int")
++       (match_test "SMALL_OPERAND (ival)")))
++
++(define_constraint "J"
++  "Integer zero."
++  (and (match_code "const_int")
++       (match_test "ival == 0")))
++ 
++(define_constraint "L"
++  "A signed 32-bit constant in which the lower 16 bits are zero.
++   Such constants can be loaded using @code{lui}."
++  (and (match_code "const_int")
++       (match_test "LUI_OPERAND (ival)")))
++
++(define_constraint "M"
++  "A constant that cannot be loaded using @code{lui}, @code{addiu}
++   or @code{ori}."
++  (and (match_code "const_int")
++       (match_test "!SMALL_OPERAND (ival)")
++       (match_test "!LUI_OPERAND (ival)")))
++
++(define_constraint "N"
++  "A constant in the range -65535 to -1 (inclusive)."
++  (and (match_code "const_int")
++       (match_test "ival >= -0xffff && ival < 0")))
++
++(define_constraint "O"
++  "A signed 15-bit constant."
++  (and (match_code "const_int")
++       (match_test "ival >= -0x4000 && ival < 0x4000")))
++
++(define_constraint "P"
++  "A constant in the range 1 to 65535 (inclusive)."
++  (and (match_code "const_int")
++       (match_test "ival > 0 && ival < 0x10000")))
++
++;; Floating-point constraints
++
++(define_constraint "G"
++  "Floating-point zero."
++  (and (match_code "const_double")
++       (match_test "op == CONST0_RTX (mode)")))
++
++;; General constraints
++
++(define_constraint "Q"
++  "@internal"
++  (match_operand 0 "const_arith_operand"))
++
++(define_memory_constraint "YR"
++  "An address that is held in a general-purpose register."
++  (and (match_code "mem")
++       (match_test "GET_CODE(XEXP(op,0)) == REG")))
++
++(define_memory_constraint "R"
++  "An address that can be used in a non-macro load or store."
++  (and (match_code "mem")
++       (match_test "mips_address_insns (XEXP (op, 0), mode, false) == 1")))
++
++(define_constraint "S"
++  "@internal
++   A constant call address."
++  (and (match_operand 0 "call_insn_operand")
++       (match_test "CONSTANT_P (op)")))
++
++(define_constraint "T"
++  "@internal
++   A constant @code{move_operand} that cannot be safely loaded into @code{$25}
++   using @code{la}."
++  (and (match_operand 0 "move_operand")
++       (match_test "CONSTANT_P (op)")))
++
++(define_constraint "U"
++  "@internal
++   A constant @code{move_operand} that can be safely loaded into @code{$25}
++   using @code{la}."
++  (and (match_operand 0 "move_operand")
++       (match_test "CONSTANT_P (op)")))
++
++(define_memory_constraint "W"
++  "@internal
++   A memory address based on a member of @code{BASE_REG_CLASS}.  This is
++   true for all references (although it can sometimes be implicit if
++   @samp{!TARGET_EXPLICIT_RELOCS}).  For MIPS16, it excludes stack and
++   constant-pool references."
++  (and (match_code "mem")
++       (match_operand 0 "memory_operand")))
++
++(define_constraint "YG"
++  "@internal
++   A vector zero."
++  (and (match_code "const_vector")
++       (match_test "op == CONST0_RTX (mode)")))
++
++(define_constraint "YA"
++  "@internal
++   An unsigned 6-bit constant."
++  (and (match_code "const_int")
++       (match_test "UIMM6_OPERAND (ival)")))
++
++(define_constraint "YB"
++  "@internal
++   A signed 10-bit constant."
++  (and (match_code "const_int")
++       (match_test "IMM10_OPERAND (ival)")))
++
++(define_constraint "Yb"
++   "@internal"
++   (match_operand 0 "qi_mask_operand"))
++
++(define_constraint "Yh"
++   "@internal"
++    (match_operand 0 "hi_mask_operand"))
++
++(define_constraint "Yw"
++   "@internal"
++    (match_operand 0 "si_mask_operand"))
+diff -x mpfr -x mpc -x gmp -x autom4te.cache -ruN ../gcc-4.6.1-orig/gcc/config/riscv/crti.asm gcc-4.6.1/gcc/config/riscv/crti.asm
+--- ../gcc-4.6.1-orig/gcc/config/riscv/crti.asm        1969-12-31 16:00:00.000000000 -0800
++++ gcc-4.6.1/gcc/config/riscv/crti.asm        2011-10-22 02:23:59.000000000 -0700
+@@ -0,0 +1,49 @@
++/* Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++
++This file is part of GCC.
++
++GCC 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 3, or (at your option) any later
++version.
++
++GCC 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.
++
++Under Section 7 of GPL version 3, you are granted additional
++permissions described in the GCC Runtime Library Exception, version
++3.1, as published by the Free Software Foundation.
++
++You should have received a copy of the GNU General Public License and
++a copy of the GCC Runtime Library Exception along with this program;
++see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++<http://www.gnu.org/licenses/>.  */
++
++/* 4 slots for argument spill area.  1 for cpreturn, 1 for stack.
++   Return spill offset of 40 and 20.  Aligned to 16 bytes for n32.  */
++
++      .section .init,"ax",@progbits
++      .globl  _init
++      .type   _init,@function
++_init:
++#ifdef __riscv64
++      add     sp, sp, -48
++      sd      ra, 40(sp)
++#else
++      add     sp, sp, -32
++      sw      ra, 20(sp)
++#endif
++
++      .section .fini,"ax",@progbits
++      .globl  _fini
++      .type   _fini,@function
++_fini:
++#ifdef __riscv64
++      add     sp, sp, -48
++      sd      ra, 40(sp)
++#else
++      add     sp, sp, -32
++      sw      ra, 20(sp)
++#endif
+diff -x mpfr -x mpc -x gmp -x autom4te.cache -ruN ../gcc-4.6.1-orig/gcc/config/riscv/crtn.asm gcc-4.6.1/gcc/config/riscv/crtn.asm
+--- ../gcc-4.6.1-orig/gcc/config/riscv/crtn.asm        1969-12-31 16:00:00.000000000 -0800
++++ gcc-4.6.1/gcc/config/riscv/crtn.asm        2011-10-22 02:25:23.000000000 -0700
+@@ -0,0 +1,46 @@
++/* Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++
++This file is part of GCC.
++
++GCC 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 3, or (at your option) any later
++version.
++
++GCC 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.
++
++Under Section 7 of GPL version 3, you are granted additional
++permissions described in the GCC Runtime Library Exception, version
++3.1, as published by the Free Software Foundation.
++
++You should have received a copy of the GNU General Public License and
++a copy of the GCC Runtime Library Exception along with this program;
++see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++<http://www.gnu.org/licenses/>.  */
++
++/* 4 slots for argument spill area.  1 for cpreturn, 1 for stack.
++   Return spill offset of 40 and 20.  Aligned to 16 bytes for n32.  */
++
++      .section .init,"ax",@progbits
++#ifdef __mips64
++      ld      ra, 40(sp)
++      add     sp, sp, 48
++#else
++      lw      ra, 20($sp)
++      add     sp, sp, 32
++#endif
++      ret
++
++      .section .fini,"ax",@progbits
++#ifdef        __mips64
++      ld      ra, 40(sp)
++      add     sp, sp, 48
++#else
++      lw      ra, 20(sp)
++      add     sp, sp, 32
++#endif
++      ret
++
+diff -x mpfr -x mpc -x gmp -x autom4te.cache -ruN ../gcc-4.6.1-orig/gcc/config/riscv/elf.h gcc-4.6.1/gcc/config/riscv/elf.h
+--- ../gcc-4.6.1-orig/gcc/config/riscv/elf.h   1969-12-31 16:00:00.000000000 -0800
++++ gcc-4.6.1/gcc/config/riscv/elf.h   2011-09-21 16:05:37.000000000 -0700
+@@ -0,0 +1,51 @@
++/* Target macros for mips*-elf targets.
++   Copyright (C) 1994, 1997, 1999, 2000, 2002, 2003, 2004, 2007, 2010
++   Free Software Foundation, Inc.
++
++This file is part of GCC.
++
++GCC 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 3, or (at your option)
++any later version.
++
++GCC 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 GCC; see the file COPYING3.  If not see
++<http://www.gnu.org/licenses/>.  */
++
++/* MIPS assemblers don't have the usual .set foo,bar construct;
++   .set is used for assembler options instead.  */
++#undef SET_ASM_OP
++#define ASM_OUTPUT_DEF(FILE, LABEL1, LABEL2)                  \
++  do                                                          \
++    {                                                         \
++      fputc ('\t', FILE);                                     \
++      assemble_name (FILE, LABEL1);                           \
++      fputs (" = ", FILE);                                    \
++      assemble_name (FILE, LABEL2);                           \
++      fputc ('\n', FILE);                                     \
++    }                                                         \
++  while (0)
++
++#undef ASM_DECLARE_OBJECT_NAME
++#define ASM_DECLARE_OBJECT_NAME mips_declare_object_name
++
++#undef ASM_FINISH_DECLARE_OBJECT
++#define ASM_FINISH_DECLARE_OBJECT mips_finish_declare_object
++
++/* Leave the linker script to choose the appropriate libraries.  */
++#undef  LIB_SPEC
++#define LIB_SPEC ""
++
++#undef  STARTFILE_SPEC
++#define STARTFILE_SPEC "crti%O%s crtbegin%O%s"
++
++#undef  ENDFILE_SPEC
++#define ENDFILE_SPEC "crtend%O%s crtn%O%s"
++
++#define NO_IMPLICIT_EXTERN_C 1
+diff -x mpfr -x mpc -x gmp -x autom4te.cache -ruN ../gcc-4.6.1-orig/gcc/config/riscv/generic.md gcc-4.6.1/gcc/config/riscv/generic.md
+--- ../gcc-4.6.1-orig/gcc/config/riscv/generic.md      1969-12-31 16:00:00.000000000 -0800
++++ gcc-4.6.1/gcc/config/riscv/generic.md      2011-09-21 16:05:37.000000000 -0700
+@@ -0,0 +1,105 @@
++;; Generic DFA-based pipeline description for MIPS targets
++;;   Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
++;;
++;; This file is part of GCC.
++
++;; GCC 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 3, or (at your
++;; option) any later version.
++
++;; GCC 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 GCC; see the file COPYING3.  If not see
++;; <http://www.gnu.org/licenses/>.
++
++
++;; This file is derived from the old define_function_unit description.
++;; Each reservation can be overridden on a processor-by-processor basis.
++
++(define_insn_reservation "generic_alu" 1
++  (eq_attr "type" "unknown,prefetch,prefetchx,condmove,const,arith,
++                 shift,slt,clz,trap,multi,nop,logical,signext,move")
++  "alu")
++
++(define_insn_reservation "generic_load" 3
++  (eq_attr "type" "load,fpload,fpidxload")
++  "alu")
++
++(define_insn_reservation "generic_store" 1
++  (eq_attr "type" "store,fpstore,fpidxstore")
++  "alu")
++
++(define_insn_reservation "generic_xfer" 2
++  (eq_attr "type" "mfc,mtc")
++  "alu")
++
++(define_insn_reservation "generic_branch" 1
++  (eq_attr "type" "branch,jump,call")
++  "alu")
++
++(define_insn_reservation "generic_hilo" 1
++  (eq_attr "type" "mfhilo,mthilo")
++  "imuldiv*3")
++
++(define_insn_reservation "generic_imul" 17
++  (eq_attr "type" "imul,imul3,imadd")
++  "imuldiv*17")
++
++(define_insn_reservation "generic_idiv" 38
++  (eq_attr "type" "idiv")
++  "imuldiv*38")
++
++(define_insn_reservation "generic_fcvt" 1
++  (eq_attr "type" "fcvt")
++  "alu")
++
++(define_insn_reservation "generic_fmove" 2
++  (eq_attr "type" "fabs,fneg,fmove")
++  "alu")
++
++(define_insn_reservation "generic_fcmp" 3
++  (eq_attr "type" "fcmp")
++  "alu")
++
++(define_insn_reservation "generic_fadd" 4
++  (eq_attr "type" "fadd")
++  "alu")
++
++(define_insn_reservation "generic_fmul_single" 7
++  (and (eq_attr "type" "fmul,fmadd")
++       (eq_attr "mode" "SF"))
++  "alu")
++
++(define_insn_reservation "generic_fmul_double" 8
++  (and (eq_attr "type" "fmul,fmadd")
++       (eq_attr "mode" "DF"))
++  "alu")
++
++(define_insn_reservation "generic_fdiv_single" 23
++  (and (eq_attr "type" "fdiv,frdiv")
++       (eq_attr "mode" "SF"))
++  "alu")
++
++(define_insn_reservation "generic_fdiv_double" 36
++  (and (eq_attr "type" "fdiv,frdiv")
++       (eq_attr "mode" "DF"))
++  "alu")
++
++(define_insn_reservation "generic_fsqrt_single" 54
++  (and (eq_attr "type" "fsqrt,frsqrt")
++       (eq_attr "mode" "SF"))
++  "alu")
++
++(define_insn_reservation "generic_fsqrt_double" 112
++  (and (eq_attr "type" "fsqrt,frsqrt")
++       (eq_attr "mode" "DF"))
++  "alu")
++
++(define_insn_reservation "generic_frecip_fsqrt_step" 5
++  (eq_attr "type" "frdiv1,frdiv2,frsqrt1,frsqrt2")
++  "alu")
+diff -x mpfr -x mpc -x gmp -x autom4te.cache -ruN ../gcc-4.6.1-orig/gcc/config/riscv/linux64.h gcc-4.6.1/gcc/config/riscv/linux64.h
+--- ../gcc-4.6.1-orig/gcc/config/riscv/linux64.h       1969-12-31 16:00:00.000000000 -0800
++++ gcc-4.6.1/gcc/config/riscv/linux64.h       2011-10-24 18:12:40.000000000 -0700
+@@ -0,0 +1,62 @@
++/* Definitions for MIPS running Linux-based GNU systems with ELF format
++   using n32/64 abi.
++   Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010, 2011
++   Free Software Foundation, Inc.
++
++This file is part of GCC.
++
++GCC 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 3, or (at your option)
++any later version.
++
++GCC 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 GCC; see the file COPYING3.  If not see
++<http://www.gnu.org/licenses/>.  */
++
++/* Force the default endianness and ABI flags onto the command line
++   in order to make the other specs easier to write.  */
++#undef DRIVER_SELF_SPECS
++#define DRIVER_SELF_SPECS \
++  BASE_DRIVER_SELF_SPECS, \
++  LINUX_DRIVER_SELF_SPECS \
++  " %{!EB:%{!EL:%(endian_spec)}}" \
++  " %{!mabi=*: -mabi=64}"
++
++#undef LIB_SPEC
++#define LIB_SPEC "\
++%{pthread:-lpthread} \
++%{shared:-lc} \
++%{!shared: \
++  %{profile:-lc_p} %{!profile:-lc}}"
++
++#define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1"
++#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld.so.1"
++
++#undef LINK_SPEC
++#define LINK_SPEC "\
++%{G*} %{EB} %{EL} %{mips1} %{mips2} %{mips3} %{mips4} \
++%{shared} \
++ %(endian_spec) \
++  %{!shared: \
++    %{!static: \
++      %{rdynamic:-export-dynamic} \
++      %{mabi=64: -dynamic-linker " LINUX_DYNAMIC_LINKER64 "} \
++      %{mabi=32: -dynamic-linker " LINUX_DYNAMIC_LINKER32 "}} \
++    %{static:-static}} \
++%{mabi=64:-melf64%{EB:b}%{EL:l}riscv} \
++%{mabi=32:-melf32%{EB:b}%{EL:l}riscv}"
++
++#undef LOCAL_LABEL_PREFIX
++#define LOCAL_LABEL_PREFIX "."
++
++/* GNU/Linux doesn't use the same floating-point format that IRIX uses
++   for long double.  There's no need to override this here, since
++   ieee_quad_format is the default, but let's put this here to make
++   sure nobody thinks we just forgot to set it to something else.  */
++#define MIPS_TFMODE_FORMAT mips_quad_format
+diff -x mpfr -x mpc -x gmp -x autom4te.cache -ruN ../gcc-4.6.1-orig/gcc/config/riscv/linux.h gcc-4.6.1/gcc/config/riscv/linux.h
+--- ../gcc-4.6.1-orig/gcc/config/riscv/linux.h 1969-12-31 16:00:00.000000000 -0800
++++ gcc-4.6.1/gcc/config/riscv/linux.h 2011-10-22 03:19:37.000000000 -0700
+@@ -0,0 +1,134 @@
++/* Definitions for MIPS running Linux-based GNU systems with ELF format.
++   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
++   2007, 2008, 2010, 2011 Free Software Foundation, Inc.
++
++This file is part of GCC.
++
++GCC 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 3, or (at your option)
++any later version.
++
++GCC 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 GCC; see the file COPYING3.  If not see
++<http://www.gnu.org/licenses/>.  */
++
++#undef WCHAR_TYPE
++#define WCHAR_TYPE "int"
++
++#undef WCHAR_TYPE_SIZE
++#define WCHAR_TYPE_SIZE 32
++
++#undef ASM_DECLARE_OBJECT_NAME
++#define ASM_DECLARE_OBJECT_NAME mips_declare_object_name
++
++#undef TARGET_VERSION
++#if TARGET_ENDIAN_DEFAULT == 0
++#define TARGET_VERSION fprintf (stderr, " (RISC-V LE Linux/ELF)");
++#else
++#define TARGET_VERSION fprintf (stderr, " (RISC-V BE Linux/ELF)");
++#endif
++
++/* If we don't set MASK_ABICALLS, we can't default to PIC.  */
++#undef TARGET_DEFAULT
++#define TARGET_DEFAULT MASK_ABICALLS
++
++#define TARGET_OS_CPP_BUILTINS()                              \
++  do {                                                                \
++    LINUX_TARGET_OS_CPP_BUILTINS();                           \
++    /* The GNU C++ standard library requires this.  */                \
++    if (c_dialect_cxx ())                                     \
++      builtin_define ("_GNU_SOURCE");                         \
++  } while (0)
++
++#undef SUBTARGET_CPP_SPEC
++#define SUBTARGET_CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
++
++/* A standard GNU/Linux mapping.  On most targets, it is included in
++   CC1_SPEC itself by config/linux.h, but mips.h overrides CC1_SPEC
++   and provides this hook instead.  */
++#undef SUBTARGET_CC1_SPEC
++#define SUBTARGET_CC1_SPEC "%{profile:-p}"
++
++#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
++
++/* Borrowed from sparc/linux.h */
++#undef LINK_SPEC
++#define LINK_SPEC \
++ "%(endian_spec) \
++  %{shared:-shared} \
++  %{!shared: \
++    %{!static: \
++      %{rdynamic:-export-dynamic} \
++      -dynamic-linker " LINUX_DYNAMIC_LINKER "} \
++      %{static:-static}}"
++
++#undef SUBTARGET_ASM_SPEC
++#define SUBTARGET_ASM_SPEC \
++  "%{fPIC:-KPIC}"
++
++/* The MIPS assembler has different syntax for .set. We set it to
++   .dummy to trap any errors.  */
++#undef SET_ASM_OP
++#define SET_ASM_OP "\t.dummy\t"
++
++#undef ASM_OUTPUT_DEF
++#define ASM_OUTPUT_DEF(FILE,LABEL1,LABEL2)                            \
++ do {                                                                 \
++      fputc ( '\t', FILE);                                            \
++      assemble_name (FILE, LABEL1);                                   \
++      fputs ( " = ", FILE);                                           \
++      assemble_name (FILE, LABEL2);                                   \
++      fputc ( '\n', FILE);                                            \
++ } while (0)
++
++/* The glibc _mcount stub will save $v0 for us.  Don't mess with saving
++   it, since ASM_OUTPUT_REG_PUSH/ASM_OUTPUT_REG_POP do not work in the
++   presence of $gp-relative calls.  */
++#undef ASM_OUTPUT_REG_PUSH
++#undef ASM_OUTPUT_REG_POP
++
++#undef LIB_SPEC
++#define LIB_SPEC "\
++%{pthread:-lpthread} \
++%{shared:-lc} \
++%{!shared: \
++  %{profile:-lc_p} %{!profile:-lc}}"
++
++#define MD_UNWIND_SUPPORT "config/riscv/linux-unwind.h"
++
++#ifdef HAVE_AS_NO_SHARED
++/* Default to -mno-shared for non-PIC.  */
++# define NO_SHARED_SPECS \
++  "%{mshared|mno-shared|fpic|fPIC|fpie|fPIE:;:-mno-shared}"
++#else
++# define NO_SHARED_SPECS ""
++#endif
++
++/* -march=native handling only makes sense with compiler running on
++   a RISC-V machine.  */
++#define MARCH_MTUNE_NATIVE_SPECS ""
++
++#define LINUX_DRIVER_SELF_SPECS \
++  NO_SHARED_SPECS                                                     \
++  MARCH_MTUNE_NATIVE_SPECS,                                           \
++  /* -mplt has no effect without -mno-shared.  Simplify later         \
++     specs handling by removing a redundant option.  */                       \
++  "%{!mno-shared:%<mplt}",                                            \
++  /* -mplt likewise has no effect for -mabi=64 without -msym32.  */   \
++  "%{mabi=64:%{!msym32:%<mplt}}"
++
++#undef DRIVER_SELF_SPECS
++#define DRIVER_SELF_SPECS \
++  BASE_DRIVER_SELF_SPECS, \
++  LINUX_DRIVER_SELF_SPECS
++
++/* Similar to standard Linux, but adding -ffast-math support.  */
++#undef  ENDFILE_SPEC
++#define ENDFILE_SPEC \
++   "%{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
+diff -x mpfr -x mpc -x gmp -x autom4te.cache -ruN ../gcc-4.6.1-orig/gcc/config/riscv/linux-unwind.h gcc-4.6.1/gcc/config/riscv/linux-unwind.h
+--- ../gcc-4.6.1-orig/gcc/config/riscv/linux-unwind.h  1969-12-31 16:00:00.000000000 -0800
++++ gcc-4.6.1/gcc/config/riscv/linux-unwind.h  2011-09-21 16:05:37.000000000 -0700
+@@ -0,0 +1,120 @@
++/* DWARF2 EH unwinding support for MIPS Linux.
++   Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
++
++This file is part of GCC.
++
++GCC 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 3, or (at your option)
++any later version.
++
++GCC 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.
++
++Under Section 7 of GPL version 3, you are granted additional
++permissions described in the GCC Runtime Library Exception, version
++3.1, as published by the Free Software Foundation.
++
++You should have received a copy of the GNU General Public License and
++a copy of the GCC Runtime Library Exception along with this program;
++see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++<http://www.gnu.org/licenses/>.  */
++
++#ifndef inhibit_libc
++/* Do code reading to identify a signal frame, and set the frame
++   state data appropriately.  See unwind-dw2.c for the structs.  */
++
++#include <signal.h>
++#include <asm/unistd.h>
++
++/* The third parameter to the signal handler points to something with
++ * this structure defined in asm/ucontext.h, but the name clashes with
++ * struct ucontext from sys/ucontext.h so this private copy is used.  */
++typedef struct _sig_ucontext {
++    unsigned long         uc_flags;
++    struct _sig_ucontext  *uc_link;
++    stack_t               uc_stack;
++    struct sigcontext uc_mcontext;
++    sigset_t      uc_sigmask;
++} _sig_ucontext_t;
++
++#define MD_FALLBACK_FRAME_STATE_FOR mips_fallback_frame_state
++
++static _Unwind_Reason_Code
++mips_fallback_frame_state (struct _Unwind_Context *context,
++                         _Unwind_FrameState *fs)
++{
++  u_int32_t *pc = (u_int32_t *) context->ra;
++  struct sigcontext *sc;
++  _Unwind_Ptr new_cfa, reg_offset;
++  int i;
++
++  /* 24021061 li v0, 0x1061 (rt_sigreturn)*/
++  /* 0000000c syscall    */
++  /*    or */
++  /* 24021017 li v0, 0x1017 (sigreturn) */
++  /* 0000000c syscall  */
++  if (pc[1] != 0x0000000c)
++    return _URC_END_OF_STACK;
++#if _MIPS_SIM == _ABIO32
++  if (pc[0] == (0x24020000 | __NR_sigreturn))
++    {
++      struct sigframe {
++      u_int32_t ass[4];  /* Argument save space for o32.  */
++      u_int32_t trampoline[2];
++      struct sigcontext sigctx;
++      } *rt_ = context->cfa;
++      sc = &rt_->sigctx;
++    }
++  else
++#endif
++  if (pc[0] == (0x24020000 | __NR_rt_sigreturn))
++    {
++      struct rt_sigframe {
++      u_int32_t ass[4];  /* Argument save space for o32.  */
++      u_int32_t trampoline[2];
++      struct siginfo info;
++      _sig_ucontext_t uc;
++      } *rt_ = context->cfa;
++      sc = &rt_->uc.uc_mcontext;
++    }
++  else
++    return _URC_END_OF_STACK;
++
++  new_cfa = (_Unwind_Ptr) sc;
++  fs->regs.cfa_how = CFA_REG_OFFSET;
++  fs->regs.cfa_reg = STACK_POINTER_REGNUM;
++  fs->regs.cfa_offset = new_cfa - (_Unwind_Ptr) context->cfa;
++
++  /* On o32 Linux, the register save slots in the sigcontext are
++     eight bytes.  We need the lower half of each register slot,
++     so slide our view of the structure back four bytes.  */
++#if _MIPS_SIM == _ABIO32 && defined __MIPSEB__
++  reg_offset = 4;
++#else
++  reg_offset = 0;
++#endif
++
++  for (i = 0; i < 32; i++) {
++    fs->regs.reg[i].how = REG_SAVED_OFFSET;
++    fs->regs.reg[i].loc.offset
++      = (_Unwind_Ptr)&(sc->sc_regs[i]) + reg_offset - new_cfa;
++  }
++  /* "PC & -2" points to the faulting instruction, but the unwind code
++     searches for "(ADDR & -2) - 1".  (See MASK_RETURN_ADDR for the source
++     of the -2 mask.)  Adding 2 here ensures that "(ADDR & -2) - 1" is the
++     address of the second byte of the faulting instruction.
++
++     Note that setting fs->signal_frame would not work.  As the comment
++     above MASK_RETURN_ADDR explains, MIPS unwinders must earch for an
++     odd-valued address.  */
++  fs->regs.reg[DWARF_ALT_FRAME_RETURN_COLUMN].how = REG_SAVED_VAL_OFFSET;
++  fs->regs.reg[DWARF_ALT_FRAME_RETURN_COLUMN].loc.offset
++    = (_Unwind_Ptr)(sc->sc_pc) + 2 - new_cfa;
++  fs->retaddr_column = DWARF_ALT_FRAME_RETURN_COLUMN;
++
++  return _URC_NO_REASON;
++}
++#endif
+diff -x mpfr -x mpc -x gmp -x autom4te.cache -ruN ../gcc-4.6.1-orig/gcc/config/riscv/opcode-riscv.h gcc-4.6.1/gcc/config/riscv/opcode-riscv.h
+--- ../gcc-4.6.1-orig/gcc/config/riscv/opcode-riscv.h  1969-12-31 16:00:00.000000000 -0800
++++ gcc-4.6.1/gcc/config/riscv/opcode-riscv.h  2011-10-22 19:22:14.000000000 -0700
+@@ -0,0 +1,253 @@
++/* riscv.h.  RISC-V opcode list for GDB, the GNU debugger.
++   Copyright 2011
++   Free Software Foundation, Inc.
++   Contributed by Andrew Waterman 
++
++This file is part of GDB, GAS, and the GNU binutils.
++
++GDB, GAS, and the GNU binutils are free software; you can redistribute
++them and/or modify them under the terms of the GNU General Public
++License as published by the Free Software Foundation; either version
++1, or (at your option) any later version.
++
++GDB, GAS, and the GNU binutils are distributed in the hope that they
++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 file; see the file COPYING.  If not, write to the Free
++Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
++
++#ifndef _RISCV_H_
++#define _RISCV_H_
++
++/* RVC fields */
++
++#define OP_MASK_COP           0x1f
++#define OP_SH_COP             0
++#define OP_MASK_CRD           0x1f
++#define OP_SH_CRD             5
++#define OP_MASK_CRS2  0x1f
++#define OP_SH_CRS2    5
++#define OP_MASK_CRS1  0x1f
++#define OP_SH_CRS1    10
++#define OP_MASK_CRDS          0x7
++#define OP_SH_CRDS            13
++#define OP_MASK_CRS2S 0x7
++#define OP_SH_CRS2S   13
++#define OP_MASK_CRS2BS        0x7
++#define OP_SH_CRS2BS  5
++#define OP_MASK_CRS1S 0x7
++#define OP_SH_CRS1S   10
++#define OP_MASK_CIMM6 0x3f
++#define OP_SH_CIMM6   10
++#define OP_MASK_CIMM5 0x1f
++#define OP_SH_CIMM5   5
++#define OP_MASK_CIMM10        0x3ff
++#define OP_SH_CIMM10  5
++
++static const char rvc_rs1_regmap[8] = { 20, 21, 2, 3, 4, 5, 6, 7 };
++#define rvc_rd_regmap rvc_rs1_regmap
++#define rvc_rs2b_regmap rvc_rs1_regmap
++static const char rvc_rs2_regmap[8] = { 20, 21, 2, 3, 4, 5, 6, 0 };
++
++#define RVC_JUMP_BITS 10
++#define RVC_JUMP_ALIGN_BITS 1
++#define RVC_JUMP_ALIGN (1 << RVC_JUMP_ALIGN_BITS)
++#define RVC_JUMP_REACH ((1ULL<<RVC_JUMP_BITS)*RVC_JUMP_ALIGN)
++
++#define RVC_BRANCH_BITS 5
++#define RVC_BRANCH_ALIGN_BITS RVC_JUMP_ALIGN_BITS
++#define RVC_BRANCH_ALIGN (1 << RVC_BRANCH_ALIGN_BITS)
++#define RVC_BRANCH_REACH ((1ULL<<RVC_BRANCH_BITS)*RVC_BRANCH_ALIGN)
++
++#define RISCV_JTYPE(insn, target) \
++  ((MATCH_ ## insn) | (((target) & ((1<<RISCV_JUMP_BITS)-1)) << OP_SH_TARGET))
++#define RISCV_LTYPE(insn, rd, bigimm) \
++  ((MATCH_ ## insn) | ((rd) << OP_SH_RD) | (((bigimm) & ((1<<RISCV_BIGIMM_BITS)-1)) << OP_SH_BIGIMMEDIATE))
++#define RISCV_ITYPE(insn, rd, rs1, imm) \
++  ((MATCH_ ## insn) | ((rd) << OP_SH_RD) | ((rs1) << OP_SH_RS) | (((imm) & (RISCV_IMM_REACH-1)) << OP_SH_IMMEDIATE))
++#define RISCV_RTYPE(insn, rd, rs1, rs2) \
++  ((MATCH_ ## insn) | ((rd) << OP_SH_RD) | ((rs1) << OP_SH_RS) | ((rs2) << OP_SH_RT))
++
++#define RISCV_NOP RISCV_ITYPE(ADDI, 0, 0, 0)
++
++#define RISCV_JUMP_TARGET(address) ((address) >> RISCV_JUMP_ALIGN_BITS)
++#define RISCV_CONST_HIGH_PART(VALUE) \
++  (((VALUE) + (RISCV_IMM_REACH/2)) & ~(RISCV_IMM_REACH-1))
++#define RISCV_CONST_LOW_PART(VALUE) ((VALUE) - RISCV_CONST_HIGH_PART (VALUE))
++#define RISCV_LUI_HIGH_PART(VALUE) (RISCV_CONST_HIGH_PART(VALUE) >> RISCV_IMM_BITS)
++
++/* RV fields */
++
++#define OP_MASK_OP            0x7f
++#define OP_SH_OP              0
++#define OP_MASK_RT            0x1f
++#define OP_SH_RT              17
++#define OP_MASK_FT            0x1f
++#define OP_SH_FT              17
++#define OP_MASK_RS            0x1f
++#define OP_SH_RS              22
++#define OP_MASK_FS            0x1f
++#define OP_SH_FS              22
++#define OP_MASK_FR            0x1f
++#define OP_SH_FR              12
++#define OP_MASK_RD            0x1f
++#define OP_SH_RD              27
++#define OP_MASK_FD            0x1f
++#define OP_SH_FD              27
++#define OP_MASK_SHAMT         0x3f
++#define OP_SH_SHAMT           10
++#define OP_MASK_SHAMTW                0x1f
++#define OP_SH_SHAMTW  10
++#define OP_MASK_RM            0x7
++#define OP_SH_RM      9
++
++static const char * const riscv_rm[8] =
++  { "rne", "rtz", "rdn", "rup", "rmm", 0, 0, "dyn" };
++
++#define OP_MASK_VRD           0x1f
++#define OP_SH_VRD             27
++#define OP_MASK_VRS           0x1f
++#define OP_SH_VRS             22
++#define OP_MASK_VRT           0x1f
++#define OP_SH_VRT             17
++#define OP_MASK_VRR           0x1f
++#define OP_SH_VRR             12
++
++#define OP_MASK_VFD           0x1f
++#define OP_SH_VFD             27
++#define OP_MASK_VFS           0x1f
++#define OP_SH_VFS             22
++#define OP_MASK_VFT           0x1f
++#define OP_SH_VFT             17
++#define OP_MASK_VFR           0x1f
++#define OP_SH_VFR             12
++
++#define OP_MASK_IMMNGPR         0x3f
++#define OP_SH_IMMNGPR           10
++#define OP_MASK_IMMNFPR         0x3f
++#define OP_SH_IMMNFPR           16
++#define OP_MASK_IMMSEGNELM      0x1f
++#define OP_SH_IMMSEGNELM        17
++#define OP_MASK_IMMSEGSTNELM    0x1f
++#define OP_SH_IMMSEGSTNELM      12
++
++#define LINK_REG 1
++
++#define RISCV_JUMP_BITS 25
++#define RISCV_JUMP_ALIGN_BITS 1
++#define RISCV_JUMP_ALIGN (1 << RISCV_JUMP_ALIGN_BITS)
++#define RISCV_JUMP_REACH ((1ULL<<RISCV_JUMP_BITS)*RISCV_JUMP_ALIGN)
++
++#define OP_MASK_TARGET                ((1<<RISCV_JUMP_BITS)-1)
++#define OP_SH_TARGET          7
++
++#define RISCV_IMM_BITS 12
++#define RISCV_IMMLO_BITS 7
++#define RISCV_IMMHI_BITS (RISCV_IMM_BITS - RISCV_IMMLO_BITS)
++#define RISCV_BIGIMM_BITS (32-RISCV_IMM_BITS)
++#define RISCV_IMM_REACH (1LL<<RISCV_IMM_BITS)
++#define RISCV_BIGIMM_REACH (1LL<<RISCV_BIGIMM_BITS)
++#define RISCV_BRANCH_BITS RISCV_IMM_BITS
++#define RISCV_BRANCH_ALIGN_BITS RISCV_JUMP_ALIGN_BITS
++#define RISCV_BRANCH_ALIGN (1 << RISCV_BRANCH_ALIGN_BITS)
++#define RISCV_BRANCH_REACH (RISCV_IMM_REACH*RISCV_BRANCH_ALIGN)
++
++#define OP_MASK_BIGIMMEDIATE  ((1<<RISCV_BIGIMM_BITS)-1)
++#define OP_SH_BIGIMMEDIATE            7
++#define OP_MASK_IMMEDIATE     ((1<<RISCV_IMM_BITS)-1)
++#define OP_SH_IMMEDIATE               10
++#define OP_MASK_IMMLO ((1<<RISCV_IMMLO_BITS)-1)
++#define OP_SH_IMMLO   10
++#define OP_MASK_IMMHI ((1<<(RISCV_IMM_BITS-RISCV_IMMLO_BITS))-1)
++#define OP_SH_IMMHI   27
++
++#include "riscv-opc.h"
++
++/* This structure holds information for a particular instruction.  */
++
++struct riscv_opcode
++{
++  /* The name of the instruction.  */
++  const char *name;
++  /* A string describing the arguments for this instruction.  */
++  const char *args;
++  /* The basic opcode for the instruction.  When assembling, this
++     opcode is modified by the arguments to produce the actual opcode
++     that is used.  If pinfo is INSN_MACRO, then this is 0.  */
++  unsigned long match;
++  /* If pinfo is not INSN_MACRO, then this is a bit mask for the
++     relevant portions of the opcode when disassembling.  If the
++     actual opcode anded with the match field equals the opcode field,
++     then we have found the correct instruction.  If pinfo is
++     INSN_MACRO, then this field is the macro identifier.  */
++  unsigned long mask;
++  /* For a macro, this is INSN_MACRO.  Otherwise, it is a collection
++     of bits describing the instruction, notably any relevant hazard
++     information.  */
++  unsigned long pinfo;
++};
++
++#define INSN_WRITE_GPR_D            0x00000001
++#define INSN_WRITE_GPR_RA           0x00000004
++#define INSN_WRITE_FPR_D            0x00000008
++#define INSN_READ_GPR_S             0x00000040
++#define INSN_READ_GPR_T             0x00000080
++#define INSN_READ_FPR_S             0x00000100
++#define INSN_READ_FPR_T             0x00000200
++#define INSN_READ_FPR_R                   0x00000400
++/* Instruction is a simple alias (I.E. "move" for daddu/addu/or) */
++#define       INSN_ALIAS                  0x00001000
++/* Instruction is actually a macro.  It should be ignored by the
++   disassembler, and requires special treatment by the assembler.  */
++#define INSN_MACRO                  0xffffffff
++
++/* These are the bits which may be set in the pinfo2 field of an
++   instruction. */
++
++/* MIPS ISA defines, use instead of hardcoding ISA level.  */
++
++#define       ISA_UNKNOWN     0               /* Gas internal use.  */
++#define       ISA_RV32        1
++#define       ISA_RV64        2
++
++#define CPU_UNKNOWN    0
++#define CPU_ROCKET32 132
++#define CPU_ROCKET64 164
++
++/* This is a list of macro expanded instructions.
++
++   _I appended means immediate
++   _A appended means address
++   _AB appended means address with base register
++   _D appended means 64 bit floating point constant
++   _S appended means 32 bit floating point constant.  */
++
++enum
++{
++  M_LA_AB,
++  M_J,
++  M_LI,
++  M_NUM_MACROS
++};
++
++
++/* The order of overloaded instructions matters.  Label arguments and
++   register arguments look the same. Instructions that can have either
++   for arguments must apear in the correct order in this table for the
++   assembler to pick the right one. In other words, entries with
++   immediate operands must apear after the same instruction with
++   registers.
++
++   Many instructions are short hand for other instructions (i.e., The
++   jal <register> instruction is short for jalr <register>).  */
++
++extern const struct riscv_opcode riscv_builtin_opcodes[];
++extern const int bfd_riscv_num_builtin_opcodes;
++extern struct riscv_opcode *riscv_opcodes;
++extern int bfd_riscv_num_opcodes;
++#define NUMOPCODES bfd_riscv_num_opcodes
++
++#endif /* _MIPS_H_ */
+diff -x mpfr -x mpc -x gmp -x autom4te.cache -ruN ../gcc-4.6.1-orig/gcc/config/riscv/predicates.md gcc-4.6.1/gcc/config/riscv/predicates.md
+--- ../gcc-4.6.1-orig/gcc/config/riscv/predicates.md   1969-12-31 16:00:00.000000000 -0800
++++ gcc-4.6.1/gcc/config/riscv/predicates.md   2011-10-22 17:06:59.000000000 -0700
+@@ -0,0 +1,250 @@
++;; Predicate definitions for MIPS.
++;; Copyright (C) 2004, 2007, 2008 Free Software Foundation, Inc.
++;;
++;; This file is part of GCC.
++;;
++;; GCC 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 3, or (at your option)
++;; any later version.
++;;
++;; GCC 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 GCC; see the file COPYING3.  If not see
++;; <http://www.gnu.org/licenses/>.
++
++(define_predicate "const_arith_operand"
++  (and (match_code "const_int")
++       (match_test "SMALL_OPERAND (INTVAL (op))")))
++
++(define_predicate "arith_operand"
++  (ior (match_operand 0 "const_arith_operand")
++       (match_operand 0 "register_operand")))
++
++(define_predicate "const_uimm6_operand"
++  (and (match_code "const_int")
++       (match_test "UIMM6_OPERAND (INTVAL (op))")))
++
++(define_predicate "const_imm10_operand"
++  (and (match_code "const_int")
++       (match_test "IMM10_OPERAND (INTVAL (op))")))
++
++(define_predicate "reg_imm10_operand"
++  (ior (match_operand 0 "const_imm10_operand")
++       (match_operand 0 "register_operand")))
++
++(define_predicate "sle_operand"
++  (and (match_code "const_int")
++       (match_test "SMALL_OPERAND (INTVAL (op) + 1)")))
++
++(define_predicate "sleu_operand"
++  (and (match_operand 0 "sle_operand")
++       (match_test "INTVAL (op) + 1 != 0")))
++
++(define_predicate "const_0_operand"
++  (and (match_code "const_int,const_double,const_vector")
++       (match_test "op == CONST0_RTX (GET_MODE (op))")))
++
++(define_predicate "reg_or_0_operand"
++  (ior (match_operand 0 "const_0_operand")
++       (match_operand 0 "register_operand")))
++
++(define_predicate "const_1_operand"
++  (and (match_code "const_int,const_double,const_vector")
++       (match_test "op == CONST1_RTX (GET_MODE (op))")))
++
++(define_predicate "reg_or_1_operand"
++  (ior (match_operand 0 "const_1_operand")
++       (match_operand 0 "register_operand")))
++
++;; This is used for indexing into vectors, and hence only accepts const_int.
++(define_predicate "const_0_or_1_operand"
++  (and (match_code "const_int")
++       (ior (match_test "op == CONST0_RTX (GET_MODE (op))")
++          (match_test "op == CONST1_RTX (GET_MODE (op))"))))
++
++(define_predicate "qi_mask_operand"
++  (and (match_code "const_int")
++       (match_test "UINTVAL (op) == 0xff")))
++
++(define_predicate "hi_mask_operand"
++  (and (match_code "const_int")
++       (match_test "UINTVAL (op) == 0xffff")))
++
++(define_predicate "si_mask_operand"
++  (and (match_code "const_int")
++       (match_test "UINTVAL (op) == 0xffffffff")))
++
++(define_predicate "and_load_operand"
++  (ior (match_operand 0 "qi_mask_operand")
++       (match_operand 0 "hi_mask_operand")
++       (match_operand 0 "si_mask_operand")))
++
++(define_predicate "and_reg_operand"
++  (ior (match_operand 0 "register_operand")
++           (match_operand 0 "const_arith_operand")
++       (match_operand 0 "si_mask_operand")))
++
++(define_predicate "and_operand"
++  (ior (match_operand 0 "and_load_operand")
++       (match_operand 0 "and_reg_operand")))
++
++(define_predicate "d_operand"
++  (and (match_code "reg")
++       (match_test "GP_REG_P (REGNO (op))")))
++(define_special_predicate "pc_or_label_operand"
++  (match_code "pc,label_ref"))
++
++(define_predicate "const_call_insn_operand"
++  (match_code "const,symbol_ref,label_ref")
++{
++  enum mips_symbol_type symbol_type;
++
++  if (!mips_symbolic_constant_p (op, &symbol_type))
++    return false;
++
++  if (symbol_type == SYMBOL_ABSOLUTE)
++    {
++      /* We can only use direct calls if we're sure that the target
++       function does not need $25 to be valid on entry.  */
++      if (mips_use_pic_fn_addr_reg_p (op))
++      return false;
++
++      /* If -mlong-calls or if this function has an explicit long_call
++       attribute, we must use register addressing.  The
++       SYMBOL_FLAG_LONG_CALL bit is set by mips_encode_section_info.  */
++      return !(GET_CODE (op) == SYMBOL_REF && SYMBOL_REF_LONG_CALL_P (op));
++    }
++
++  return false;
++})
++
++(define_predicate "call_insn_operand"
++  (ior (match_operand 0 "const_call_insn_operand")
++       (match_operand 0 "register_operand")))
++
++;; A legitimate CONST_INT operand that takes more than one instruction
++;; to load.
++(define_predicate "splittable_const_int_operand"
++  (match_code "const_int")
++{
++  /* Don't handle multi-word moves this way; we don't want to introduce
++     the individual word-mode moves until after reload.  */
++  if (GET_MODE_SIZE (mode) > UNITS_PER_WORD)
++    return false;
++
++  /* Otherwise check whether the constant can be loaded in a single
++     instruction.  */
++  return !LUI_INT (op) && !SMALL_INT (op);
++})
++
++(define_predicate "move_operand"
++  (match_operand 0 "general_operand")
++{
++  enum mips_symbol_type symbol_type;
++
++  /* The thinking here is as follows:
++
++     (1) The move expanders should split complex load sequences into
++       individual instructions.  Those individual instructions can
++       then be optimized by all rtl passes.
++
++     (2) The target of pre-reload load sequences should not be used
++       to store temporary results.  If the target register is only
++       assigned one value, reload can rematerialize that value
++       on demand, rather than spill it to the stack.
++
++     (3) If we allowed pre-reload passes like combine and cse to recreate
++       complex load sequences, we would want to be able to split the
++       sequences before reload as well, so that the pre-reload scheduler
++       can see the individual instructions.  This falls foul of (2);
++       the splitter would be forced to reuse the target register for
++       intermediate results.
++
++     (4) We want to define complex load splitters for combine.  These
++       splitters can request a temporary scratch register, which avoids
++       the problem in (2).  They allow things like:
++
++            (set (reg T1) (high SYM))
++            (set (reg T2) (low (reg T1) SYM))
++            (set (reg X) (plus (reg T2) (const_int OFFSET)))
++
++       to be combined into:
++
++            (set (reg T3) (high SYM+OFFSET))
++            (set (reg X) (lo_sum (reg T3) SYM+OFFSET))
++
++       if T2 is only used this once.  */
++  switch (GET_CODE (op))
++    {
++    case CONST_INT:
++      return !splittable_const_int_operand (op, mode);
++
++    case CONST:
++    case SYMBOL_REF:
++    case LABEL_REF:
++      return (mips_symbolic_constant_p (op, &symbol_type)
++            && !mips_split_p[symbol_type]);
++
++    case HIGH:
++      op = XEXP (op, 0);
++      return mips_symbolic_constant_p (op, &symbol_type);
++
++    default:
++      return true;
++    }
++})
++
++(define_predicate "consttable_operand"
++  (match_test "CONSTANT_P (op)"))
++
++(define_predicate "symbolic_operand"
++  (match_code "const,symbol_ref,label_ref")
++{
++  enum mips_symbol_type type;
++  return mips_symbolic_constant_p (op, &type);
++})
++
++(define_predicate "absolute_symbolic_operand"
++  (match_code "const,symbol_ref,label_ref")
++{
++  enum mips_symbol_type type;
++  return (mips_symbolic_constant_p (op, &type)
++        && type == SYMBOL_ABSOLUTE);
++})
++
++(define_predicate "force_to_mem_operand"
++  (match_code "const,symbol_ref,label_ref")
++{
++  enum mips_symbol_type symbol_type;
++  return (mips_symbolic_constant_p (op, &symbol_type)
++        && symbol_type == SYMBOL_FORCE_TO_MEM);
++})
++
++(define_predicate "got_disp_operand"
++  (match_code "const,symbol_ref,label_ref")
++{
++  enum mips_symbol_type type;
++  return (mips_symbolic_constant_p (op, &type)
++        && type == SYMBOL_GOT_DISP);
++})
++
++(define_predicate "symbol_ref_operand"
++  (match_code "symbol_ref"))
++
++(define_predicate "stack_operand"
++  (and (match_code "mem")
++       (match_test "mips_stack_address_p (XEXP (op, 0), GET_MODE (op))")))
++
++(define_predicate "equality_operator"
++  (match_code "eq,ne"))
++
++(define_predicate "order_operator"
++  (match_code "eq,ne,lt,ltu,le,leu,ge,geu,gt,gtu"))
++
++(define_predicate "fp_order_operator"
++  (match_code "eq,lt,le,gt,ge"))
+diff -x mpfr -x mpc -x gmp -x autom4te.cache -ruN ../gcc-4.6.1-orig/gcc/config/riscv/riscv.c gcc-4.6.1/gcc/config/riscv/riscv.c
+--- ../gcc-4.6.1-orig/gcc/config/riscv/riscv.c 1969-12-31 16:00:00.000000000 -0800
++++ gcc-4.6.1/gcc/config/riscv/riscv.c 2011-10-22 17:02:49.000000000 -0700
+@@ -0,0 +1,7604 @@
++/* vim: set ts=8: */
++/* Subroutines used for MIPS code generation.
++   Copyright (C) 1989, 1990, 1991, 1993, 1994, 1995, 1996, 1997, 1998,
++   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
++   2011
++   Free Software Foundation, Inc.
++   Contributed by A. Lichnewsky, lich@inria.inria.fr.
++   Changes by Michael Meissner, meissner@osf.org.
++   64-bit r4000 support by Ian Lance Taylor, ian@cygnus.com, and
++   Brendan Eich, brendan@microunity.com.
++
++This file is part of GCC.
++
++GCC 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 3, or (at your option)
++any later version.
++
++GCC 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 GCC; see the file COPYING3.  If not see
++<http://www.gnu.org/licenses/>.  */
++
++#include "config.h"
++#include "system.h"
++#include "coretypes.h"
++#include "tm.h"
++#include "rtl.h"
++#include "regs.h"
++#include "hard-reg-set.h"
++#include "insn-config.h"
++#include "conditions.h"
++#include "insn-attr.h"
++#include "recog.h"
++#include "output.h"
++#include "tree.h"
++#include "function.h"
++#include "expr.h"
++#include "optabs.h"
++#include "libfuncs.h"
++#include "flags.h"
++#include "reload.h"
++#include "tm_p.h"
++#include "ggc.h"
++#include "gstab.h"
++#include "hashtab.h"
++#include "debug.h"
++#include "target.h"
++#include "target-def.h"
++#include "integrate.h"
++#include "langhooks.h"
++#include "cfglayout.h"
++#include "sched-int.h"
++#include "gimple.h"
++#include "bitmap.h"
++#include "diagnostic.h"
++#include "target-globals.h"
++
++/* True if X is an UNSPEC wrapper around a SYMBOL_REF or LABEL_REF.  */
++#define UNSPEC_ADDRESS_P(X)                                   \
++  (GET_CODE (X) == UNSPEC                                     \
++   && XINT (X, 1) >= UNSPEC_ADDRESS_FIRST                     \
++   && XINT (X, 1) < UNSPEC_ADDRESS_FIRST + NUM_SYMBOL_TYPES)
++
++/* Extract the symbol or label from UNSPEC wrapper X.  */
++#define UNSPEC_ADDRESS(X) \
++  XVECEXP (X, 0, 0)
++
++/* Extract the symbol type from UNSPEC wrapper X.  */
++#define UNSPEC_ADDRESS_TYPE(X) \
++  ((enum mips_symbol_type) (XINT (X, 1) - UNSPEC_ADDRESS_FIRST))
++
++/* The maximum distance between the top of the stack frame and the
++   value $sp has when we save and restore registers.
++
++   The value for normal-mode code must be a SMALL_OPERAND and must
++   preserve the maximum stack alignment.  We therefore use a value
++   of 0x7ff0 in this case.
++
++   MIPS16e SAVE and RESTORE instructions can adjust the stack pointer by
++   up to 0x7f8 bytes and can usually save or restore all the registers
++   that we need to save or restore.  (Note that we can only use these
++   instructions for o32, for which the stack alignment is 8 bytes.)
++
++   We use a maximum gap of 0x100 or 0x400 for MIPS16 code when SAVE and
++   RESTORE are not available.  We can then use unextended instructions
++   to save and restore registers, and to allocate and deallocate the top
++   part of the frame.  */
++#define MIPS_MAX_FIRST_STACK_STEP (RISCV_IMM_REACH/2 - 16)
++
++/* True if INSN is a mips.md pattern or asm statement.  */
++#define USEFUL_INSN_P(INSN)                                           \
++  (NONDEBUG_INSN_P (INSN)                                             \
++   && GET_CODE (PATTERN (INSN)) != USE                                        \
++   && GET_CODE (PATTERN (INSN)) != CLOBBER                            \
++   && GET_CODE (PATTERN (INSN)) != ADDR_VEC                           \
++   && GET_CODE (PATTERN (INSN)) != ADDR_DIFF_VEC)
++
++/* True if bit BIT is set in VALUE.  */
++#define BITSET_P(VALUE, BIT) (((VALUE) & (1 << (BIT))) != 0)
++
++/* Classifies an address.
++
++   ADDRESS_REG
++       A natural register + offset address.  The register satisfies
++       mips_valid_base_register_p and the offset is a const_arith_operand.
++
++   ADDRESS_LO_SUM
++       A LO_SUM rtx.  The first operand is a valid base register and
++       the second operand is a symbolic address.
++
++   ADDRESS_CONST_INT
++       A signed 16-bit constant address.
++
++   ADDRESS_SYMBOLIC:
++       A constant symbolic address.  */
++enum mips_address_type {
++  ADDRESS_REG,
++  ADDRESS_LO_SUM,
++  ADDRESS_CONST_INT,
++  ADDRESS_SYMBOLIC
++};
++
++/* Macros to create an enumeration identifier for a function prototype.  */
++#define MIPS_FTYPE_NAME1(A, B) MIPS_##A##_FTYPE_##B
++#define MIPS_FTYPE_NAME2(A, B, C) MIPS_##A##_FTYPE_##B##_##C
++#define MIPS_FTYPE_NAME3(A, B, C, D) MIPS_##A##_FTYPE_##B##_##C##_##D
++#define MIPS_FTYPE_NAME4(A, B, C, D, E) MIPS_##A##_FTYPE_##B##_##C##_##D##_##E
++
++/* Classifies the prototype of a built-in function.  */
++enum mips_function_type {
++#define DEF_MIPS_FTYPE(NARGS, LIST) MIPS_FTYPE_NAME##NARGS LIST,
++#include "config/riscv/riscv-ftypes.def"
++#undef DEF_MIPS_FTYPE
++  MIPS_MAX_FTYPE_MAX
++};
++
++/* Specifies how a built-in function should be converted into rtl.  */
++enum mips_builtin_type {
++  /* The function corresponds directly to an .md pattern.  The return
++     value is mapped to operand 0 and the arguments are mapped to
++     operands 1 and above.  */
++  MIPS_BUILTIN_DIRECT,
++
++  /* The function corresponds directly to an .md pattern.  There is no return
++     value and the arguments are mapped to operands 0 and above.  */
++  MIPS_BUILTIN_DIRECT_NO_TARGET
++};
++
++/* Invoke MACRO (COND) for each C.cond.fmt condition.  */
++#define MIPS_FP_CONDITIONS(MACRO) \
++  MACRO (f),  \
++  MACRO (un), \
++  MACRO (eq), \
++  MACRO (ueq),        \
++  MACRO (olt),        \
++  MACRO (ult),        \
++  MACRO (ole),        \
++  MACRO (ule),        \
++  MACRO (sf), \
++  MACRO (ngle),       \
++  MACRO (seq),        \
++  MACRO (ngl),        \
++  MACRO (lt), \
++  MACRO (nge),        \
++  MACRO (le), \
++  MACRO (ngt)
++
++/* Enumerates the codes above as MIPS_FP_COND_<X>.  */
++#define DECLARE_MIPS_COND(X) MIPS_FP_COND_ ## X
++enum mips_fp_condition {
++  MIPS_FP_CONDITIONS (DECLARE_MIPS_COND)
++};
++
++/* Index X provides the string representation of MIPS_FP_COND_<X>.  */
++#define STRINGIFY(X) #X
++static const char *const mips_fp_conditions[] = {
++  MIPS_FP_CONDITIONS (STRINGIFY)
++};
++
++/* Information about a function's frame layout.  */
++struct GTY(())  mips_frame_info {
++  /* The size of the frame in bytes.  */
++  HOST_WIDE_INT total_size;
++
++  /* The number of bytes allocated to variables.  */
++  HOST_WIDE_INT var_size;
++
++  /* The number of bytes allocated to outgoing function arguments.  */
++  HOST_WIDE_INT args_size;
++
++  /* Bit X is set if the function saves or restores GPR X.  */
++  unsigned int mask;
++
++  /* Likewise FPR X.  */
++  unsigned int fmask;
++
++  /* The number of GPRs, FPRs, doubleword accumulators and COP0
++     registers saved.  */
++  unsigned int num_gp;
++  unsigned int num_fp;
++
++  /* The offset of the topmost GPR, FPR, accumulator and COP0-register
++     save slots from the top of the frame, or zero if no such slots are
++     needed.  */
++  HOST_WIDE_INT gp_save_offset;
++  HOST_WIDE_INT fp_save_offset;
++
++  /* Likewise, but giving offsets from the bottom of the frame.  */
++  HOST_WIDE_INT gp_sp_offset;
++  HOST_WIDE_INT fp_sp_offset;
++
++  /* Similar, but the value passed to _mcount.  */
++  HOST_WIDE_INT ra_fp_offset;
++
++  /* The offset of arg_pointer_rtx from the bottom of the frame.  */
++  HOST_WIDE_INT arg_pointer_offset;
++
++  /* The offset of hard_frame_pointer_rtx from the bottom of the frame.  */
++  HOST_WIDE_INT hard_frame_pointer_offset;
++};
++
++struct GTY(())  machine_function {
++  /* The number of extra stack bytes taken up by register varargs.
++     This area is allocated by the callee at the very top of the frame.  */
++  int varargs_size;
++
++  /* The current frame information, calculated by mips_compute_frame_info.  */
++  struct mips_frame_info frame;
++
++  /* The register to use as the function's global pointer, or INVALID_REGNUM
++     if the function doesn't need one.  */
++  unsigned int global_pointer;
++
++  /* True if the function has "inflexible" and "flexible" references
++     to the global pointer.  See mips_cfun_has_inflexible_gp_ref_p
++     and mips_cfun_has_flexible_gp_ref_p for details.  */
++  bool has_flexible_gp_insn_p;
++
++  /* True if the function's prologue must load the global pointer
++     value into pic_offset_table_rtx and store the same value in
++     the function's cprestore slot (if any).  Even if this value
++     is currently false, we may decide to set it to true later;
++     see mips_must_initialize_gp_p () for details.  */
++  bool must_initialize_gp_p;
++};
++
++/* Information about a single argument.  */
++struct mips_arg_info {
++  /* True if the argument is passed in a floating-point register, or
++     would have been if we hadn't run out of registers.  */
++  bool fpr_p;
++
++  /* The number of words passed in registers, rounded up.  */
++  unsigned int reg_words;
++
++  /* For EABI, the offset of the first register from GP_ARG_FIRST or
++     FP_ARG_FIRST.  For other ABIs, the offset of the first register from
++     the start of the ABI's argument structure (see the CUMULATIVE_ARGS
++     comment for details).
++
++     The value is MAX_ARGS_IN_REGISTERS if the argument is passed entirely
++     on the stack.  */
++  unsigned int reg_offset;
++
++  /* The number of words that must be passed on the stack, rounded up.  */
++  unsigned int stack_words;
++
++  /* The offset from the start of the stack overflow area of the argument's
++     first stack word.  Only meaningful when STACK_WORDS is nonzero.  */
++  unsigned int stack_offset;
++};
++
++/* Information about an address described by mips_address_type.
++
++   ADDRESS_CONST_INT
++       No fields are used.
++
++   ADDRESS_REG
++       REG is the base register and OFFSET is the constant offset.
++
++   ADDRESS_LO_SUM
++       REG and OFFSET are the operands to the LO_SUM and SYMBOL_TYPE
++       is the type of symbol it references.
++
++   ADDRESS_SYMBOLIC
++       SYMBOL_TYPE is the type of symbol that the address references.  */
++struct mips_address_info {
++  enum mips_address_type type;
++  rtx reg;
++  rtx offset;
++  enum mips_symbol_type symbol_type;
++};
++
++/* One stage in a constant building sequence.  These sequences have
++   the form:
++
++      A = VALUE[0]
++      A = A CODE[1] VALUE[1]
++      A = A CODE[2] VALUE[2]
++      ...
++
++   where A is an accumulator, each CODE[i] is a binary rtl operation
++   and each VALUE[i] is a constant integer.  CODE[0] is undefined.  */
++struct mips_integer_op {
++  enum rtx_code code;
++  unsigned HOST_WIDE_INT value;
++};
++
++/* The largest number of operations needed to load an integer constant.
++   The worst accepted case for 64-bit constants is LUI,ORI,SLL,ORI,SLL,ORI.
++   When the lowest bit is clear, we can try, but reject a sequence with
++   an extra SLL at the end.  */
++#define MIPS_MAX_INTEGER_OPS 256
++
++/* Costs of various operations on the different architectures.  */
++
++struct mips_rtx_cost_data
++{
++  unsigned short fp_add;
++  unsigned short fp_mult_sf;
++  unsigned short fp_mult_df;
++  unsigned short fp_div_sf;
++  unsigned short fp_div_df;
++  unsigned short int_mult_si;
++  unsigned short int_mult_di;
++  unsigned short int_div_si;
++  unsigned short int_div_di;
++  unsigned short branch_cost;
++  unsigned short memory_latency;
++};
++
++/* Global variables for machine-dependent things.  */
++
++/* The number of file directives written by mips_output_filename.  */
++int num_source_filenames;
++
++/* The name that appeared in the last .file directive written by
++   mips_output_filename, or "" if mips_output_filename hasn't
++   written anything yet.  */
++const char *current_function_file = "";
++
++/* A label counter used by PUT_SDB_BLOCK_START and PUT_SDB_BLOCK_END.  */
++int sdb_label_count;
++
++/* Arrays that map GCC register numbers to debugger register numbers.  */
++int mips_dbx_regno[FIRST_PSEUDO_REGISTER];
++int mips_dwarf_regno[FIRST_PSEUDO_REGISTER];
++
++/* The current instruction-set architecture.  */
++enum processor mips_arch;
++const struct mips_cpu_info *mips_arch_info;
++
++/* The processor that we should tune the code for.  */
++enum processor mips_tune;
++const struct mips_cpu_info *mips_tune_info;
++
++/* The ISA level associated with mips_arch.  */
++int mips_isa;
++
++/* The architecture selected by -mipsN, or null if -mipsN wasn't used.  */
++static const struct mips_cpu_info *mips_isa_option_info;
++
++/* Which ABI to use.  */
++int mips_abi = MIPS_ABI_DEFAULT;
++
++/* Which cost information to use.  */
++static const struct mips_rtx_cost_data *mips_cost;
++
++/* The ambient target flags, excluding MASK_MIPS16.  */
++static int mips_base_target_flags;
++
++/* The ambient values of other global variables.  */
++static int mips_base_schedule_insns; /* flag_schedule_insns */
++static int mips_base_reorder_blocks_and_partition; /* flag_reorder... */
++static int mips_base_move_loop_invariants; /* flag_move_loop_invariants */
++static int mips_base_align_loops; /* align_loops */
++static int mips_base_align_jumps; /* align_jumps */
++static int mips_base_align_functions; /* align_functions */
++
++/* The -mcode-readable setting.  */
++enum mips_code_readable_setting mips_code_readable = CODE_READABLE_YES;
++
++/* Index [M][R] is true if register R is allowed to hold a value of mode M.  */
++bool mips_hard_regno_mode_ok[(int) MAX_MACHINE_MODE][FIRST_PSEUDO_REGISTER];
++
++static GTY (()) int mips_output_filename_first_time = 1;
++
++/* mips_split_p[X] is true if symbols of type X can be split by
++   mips_split_symbol.  */
++bool mips_split_p[NUM_SYMBOL_TYPES];
++
++/* mips_lo_relocs[X] is the relocation to use when a symbol of type X
++   appears in a LO_SUM.  It can be null if such LO_SUMs aren't valid or
++   if they are matched by a special .md file pattern.  */
++static const char *mips_lo_relocs[NUM_SYMBOL_TYPES];
++
++/* Likewise for HIGHs.  */
++static const char *mips_hi_relocs[NUM_SYMBOL_TYPES];
++
++/* Target state for MIPS16.  */
++struct target_globals *mips16_globals;
++
++/* Index R is the smallest register class that contains register R.  */
++const enum reg_class mips_regno_to_class[FIRST_PSEUDO_REGISTER] = {
++/*
++yunsup: new register mapping
++$0 , $ra, $v0, $v1,
++$a0, $a1, $a2, $a3,
++$a4, $a5, $a6, $a7,
++$t0, $t1, $t2, $t3,
++$t4, $t5, $t6, $t7,
++$s0, $s1, $s2, $s3,
++$s4, $s5, $s6, $s7,
++$s8, $s9, $sp, $tp
++*/
++  LEA_REGS,   LEA_REGS,       M16_REGS,       V1_REG,
++  M16_REGS,   M16_REGS,       M16_REGS,       M16_REGS,
++  LEA_REGS,   LEA_REGS,       LEA_REGS,       LEA_REGS,
++  LEA_REGS,   LEA_REGS,       LEA_REGS,       LEA_REGS,
++  LEA_REGS,   LEA_REGS,       T_REG,          PIC_FN_ADDR_REG,
++  M16_REGS,   M16_REGS,       LEA_REGS,       LEA_REGS,
++  LEA_REGS,   LEA_REGS,       LEA_REGS,       LEA_REGS,
++  LEA_REGS,   LEA_REGS,       LEA_REGS,       LEA_REGS,
++  FP_REGS,    FP_REGS,        FP_REGS,        FP_REGS,
++  FP_REGS,    FP_REGS,        FP_REGS,        FP_REGS,
++  FP_REGS,    FP_REGS,        FP_REGS,        FP_REGS,
++  FP_REGS,    FP_REGS,        FP_REGS,        FP_REGS,
++  FP_REGS,    FP_REGS,        FP_REGS,        FP_REGS,
++  FP_REGS,    FP_REGS,        FP_REGS,        FP_REGS,
++  FP_REGS,    FP_REGS,        FP_REGS,        FP_REGS,
++  FP_REGS,    FP_REGS,        FP_REGS,        FP_REGS,
++  VEC_GR_REGS,        VEC_GR_REGS,    VEC_GR_REGS,    VEC_GR_REGS,
++  VEC_GR_REGS,        VEC_GR_REGS,    VEC_GR_REGS,    VEC_GR_REGS,
++  VEC_GR_REGS,        VEC_GR_REGS,    VEC_GR_REGS,    VEC_GR_REGS,
++  VEC_GR_REGS,        VEC_GR_REGS,    VEC_GR_REGS,    VEC_GR_REGS,
++  VEC_GR_REGS,        VEC_GR_REGS,    VEC_GR_REGS,    VEC_GR_REGS,
++  VEC_GR_REGS,        VEC_GR_REGS,    VEC_GR_REGS,    VEC_GR_REGS,
++  VEC_GR_REGS,        VEC_GR_REGS,    VEC_GR_REGS,    VEC_GR_REGS,
++  VEC_GR_REGS,        VEC_GR_REGS,    VEC_GR_REGS,    VEC_GR_REGS,
++  VEC_FP_REGS,        VEC_FP_REGS,    VEC_FP_REGS,    VEC_FP_REGS,
++  VEC_FP_REGS,        VEC_FP_REGS,    VEC_FP_REGS,    VEC_FP_REGS,
++  VEC_FP_REGS,        VEC_FP_REGS,    VEC_FP_REGS,    VEC_FP_REGS,
++  VEC_FP_REGS,        VEC_FP_REGS,    VEC_FP_REGS,    VEC_FP_REGS,
++  VEC_FP_REGS,        VEC_FP_REGS,    VEC_FP_REGS,    VEC_FP_REGS,
++  VEC_FP_REGS,        VEC_FP_REGS,    VEC_FP_REGS,    VEC_FP_REGS,
++  VEC_FP_REGS,        VEC_FP_REGS,    VEC_FP_REGS,    VEC_FP_REGS,
++  VEC_FP_REGS,        VEC_FP_REGS,    VEC_FP_REGS,    VEC_FP_REGS,
++  FRAME_REGS, FRAME_REGS,     NO_REGS,        NO_REGS,
++};
++
++/* The value of TARGET_ATTRIBUTE_TABLE.  */
++static const struct attribute_spec mips_attribute_table[] = {
++  /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler } */
++  { "long_call",   0, 0, false, true,  true,  NULL },
++  { "far",               0, 0, false, true,  true,  NULL },
++  { "near",        0, 0, false, true,  true,  NULL },
++  { "utfunc",      0, 0, true,  false, false, NULL },
++  { NULL,        0, 0, false, false, false, NULL }
++};
++\f
++/* A table describing all the processors GCC knows about.  Names are
++   matched in the order listed.  The first mention of an ISA level is
++   taken as the canonical name for that ISA.
++
++   To ease comparison, please keep this table in the same order
++   as GAS's mips_cpu_info_table.  Please also make sure that
++   MIPS_ISA_LEVEL_SPEC and MIPS_ARCH_FLOAT_SPEC handle all -march
++   options correctly.  */
++static const struct mips_cpu_info mips_cpu_info_table[] = {
++  /* Entries for generic ISAs.  */
++  { "rocket", PROCESSOR_ROCKET, ISA_RV64, 0 }
++};
++
++/* Default costs.  If these are used for a processor we should look
++   up the actual costs.  */
++#define DEFAULT_COSTS COSTS_N_INSNS (6),  /* fp_add */       \
++                      COSTS_N_INSNS (7),  /* fp_mult_sf */   \
++                      COSTS_N_INSNS (8),  /* fp_mult_df */   \
++                      COSTS_N_INSNS (23), /* fp_div_sf */    \
++                      COSTS_N_INSNS (36), /* fp_div_df */    \
++                      COSTS_N_INSNS (10), /* int_mult_si */  \
++                      COSTS_N_INSNS (10), /* int_mult_di */  \
++                      COSTS_N_INSNS (69), /* int_div_si */   \
++                      COSTS_N_INSNS (69), /* int_div_di */   \
++                                       2, /* branch_cost */  \
++                                       4  /* memory_latency */
++
++/* Floating-point costs for processors without an FPU.  Just assume that
++   all floating-point libcalls are very expensive.  */
++#define SOFT_FP_COSTS COSTS_N_INSNS (256), /* fp_add */       \
++                      COSTS_N_INSNS (256), /* fp_mult_sf */   \
++                      COSTS_N_INSNS (256), /* fp_mult_df */   \
++                      COSTS_N_INSNS (256), /* fp_div_sf */    \
++                      COSTS_N_INSNS (256)  /* fp_div_df */
++
++/* Costs to use when optimizing for size.  */
++static const struct mips_rtx_cost_data mips_rtx_cost_optimize_size = {
++  COSTS_N_INSNS (1),            /* fp_add */
++  COSTS_N_INSNS (1),            /* fp_mult_sf */
++  COSTS_N_INSNS (1),            /* fp_mult_df */
++  COSTS_N_INSNS (1),            /* fp_div_sf */
++  COSTS_N_INSNS (1),            /* fp_div_df */
++  COSTS_N_INSNS (1),            /* int_mult_si */
++  COSTS_N_INSNS (1),            /* int_mult_di */
++  COSTS_N_INSNS (1),            /* int_div_si */
++  COSTS_N_INSNS (1),            /* int_div_di */
++                 2,           /* branch_cost */
++                 4            /* memory_latency */
++};
++
++/* Costs to use when optimizing for speed, indexed by processor.  */
++static const struct mips_rtx_cost_data
++  mips_rtx_cost_data[NUM_PROCESSOR_VALUES] = {
++  { /* Rocket */
++    COSTS_N_INSNS (8),            /* fp_add */
++    COSTS_N_INSNS (8),            /* fp_mult_sf */
++    COSTS_N_INSNS (8),            /* fp_mult_df */
++    COSTS_N_INSNS (20),           /* fp_div_sf */
++    COSTS_N_INSNS (30),           /* fp_div_df */
++    COSTS_N_INSNS (8),           /* int_mult_si */
++    COSTS_N_INSNS (8),           /* int_mult_di */
++    COSTS_N_INSNS (32),           /* int_div_si */
++    COSTS_N_INSNS (64),           /* int_div_di */
++                   2,           /* branch_cost */
++                   7            /* memory_latency */
++  }
++};
++\f
++static rtx mips_find_pic_call_symbol (rtx, rtx, bool);
++static int mips_register_move_cost (enum machine_mode, reg_class_t,
++                                  reg_class_t);
++static unsigned int mips_function_arg_boundary (enum machine_mode, const_tree);
++
++/* Predicates to test for presence of "near" and "far"/"long_call"
++   attributes on the given TYPE.  */
++
++static bool
++mips_near_type_p (const_tree type)
++{
++  return lookup_attribute ("near", TYPE_ATTRIBUTES (type)) != NULL;
++}
++
++static bool
++mips_far_type_p (const_tree type)
++{
++  return (lookup_attribute ("long_call", TYPE_ATTRIBUTES (type)) != NULL
++        || lookup_attribute ("far", TYPE_ATTRIBUTES (type)) != NULL);
++}
++
++/* Implement TARGET_COMP_TYPE_ATTRIBUTES.  */
++
++static int
++mips_comp_type_attributes (const_tree type1, const_tree type2)
++{
++  /* Disallow mixed near/far attributes.  */
++  if (mips_far_type_p (type1) && mips_near_type_p (type2))
++    return 0;
++  if (mips_near_type_p (type1) && mips_far_type_p (type2))
++    return 0;
++  return 1;
++}
++
++/* If X is a PLUS of a CONST_INT, return the two terms in *BASE_PTR
++   and *OFFSET_PTR.  Return X in *BASE_PTR and 0 in *OFFSET_PTR otherwise.  */
++
++static void
++mips_split_plus (rtx x, rtx *base_ptr, HOST_WIDE_INT *offset_ptr)
++{
++  if (GET_CODE (x) == PLUS && CONST_INT_P (XEXP (x, 1)))
++    {
++      *base_ptr = XEXP (x, 0);
++      *offset_ptr = INTVAL (XEXP (x, 1));
++    }
++  else
++    {
++      *base_ptr = x;
++      *offset_ptr = 0;
++    }
++}
++
++static unsigned int
++mips_build_integer_recursive (struct mips_integer_op *codes,
++                  unsigned HOST_WIDE_INT value, int level)
++{
++  unsigned HOST_WIDE_INT tmp;
++  int shamt = 0, i, j;
++  unsigned alt_cost, cost = (unsigned)-1;
++  struct mips_integer_op alt_codes[MIPS_MAX_INTEGER_OPS];
++
++  // try simply ORI/ADDI or LUI
++  if(SMALL_OPERAND(value) || LUI_OPERAND(value))
++  {
++    codes[0].code = UNKNOWN;
++    codes[0].value = value;
++    return 1;
++  }
++
++  // try (whatever) followed by ADDI
++  if((value & (RISCV_IMM_REACH-1)) != 0)
++  {
++    struct { signed int x : RISCV_IMM_BITS; } s;
++
++    alt_cost = mips_build_integer_recursive(alt_codes, (value + RISCV_IMM_REACH/2) & ~(unsigned HOST_WIDE_INT)(RISCV_IMM_REACH-1), level+1);
++    alt_codes[alt_cost].code = PLUS;
++    alt_codes[alt_cost++].value = (HOST_WIDE_INT)(s.x = value & (unsigned HOST_WIDE_INT)(RISCV_IMM_REACH-1));
++
++    if(alt_cost < cost)
++    {
++      memcpy(codes, alt_codes, sizeof(alt_codes));
++      cost = alt_cost;
++    }
++  }
++
++  // try (whatever) followed by either kind of right shift.
++  // this step occurs at most once in any recursive call chain
++  if(level < 2)
++  {
++    // try all reasonable widths of shifting
++    for(i = 1; i < 32; i++)
++    {
++      // try SRLI
++      if(((value << i) >> i) == value)
++      {
++        // try both zero extension and sign extension
++        for(j = 0; j <= i; j += i)
++        {
++          tmp = (value << i) | (((unsigned HOST_WIDE_INT)1 << j) - 1);
++          alt_cost = mips_build_integer_recursive(alt_codes, tmp, level+2);
++          alt_codes[alt_cost].code = LSHIFTRT;
++          alt_codes[alt_cost++].value = i;
++          if(alt_cost < cost)
++          {
++            memcpy(codes, alt_codes, sizeof(alt_codes));
++            cost = alt_cost;
++          }
++        }
++      }
++      // try SRAI
++      if(((HOST_WIDE_INT)(value << i) >> i) == (HOST_WIDE_INT)value)
++      {
++        // try both zero extension and sign extension
++        for(j = 0; j <= i; j += i)
++        {
++          tmp = (value << i) | (((unsigned HOST_WIDE_INT)1 << j) - 1);
++          alt_cost = mips_build_integer_recursive(alt_codes, tmp, level+2);
++          alt_codes[alt_cost].code = ASHIFTRT;
++          alt_codes[alt_cost++].value = i;
++          if(alt_cost < cost)
++          {
++            memcpy(codes, alt_codes, sizeof(alt_codes));
++            cost = alt_cost;
++          }
++        }
++      }
++    }
++  }
++
++  // if the number has trailing zeros, try building it without them, then
++  // generate a left shift.  this isn't included in the brute-force code
++  // above because it's necessary to guarantee forward progress for some
++  // 64b constants.
++  tmp = value;
++  shamt = 0;
++  while((tmp & 1) == 0)
++    tmp >>= 1, shamt++;
++  if(shamt)
++  {
++    alt_cost = mips_build_integer_recursive(alt_codes,tmp,level+1);
++    alt_codes[alt_cost].code = ASHIFT;
++    alt_codes[alt_cost++].value = shamt;
++
++    if(alt_cost < cost)
++    {
++      memcpy(codes, alt_codes, sizeof(alt_codes));
++      cost = alt_cost;
++    }
++  }
++
++  gcc_assert(cost != (unsigned)-1);
++
++  return cost;
++}
++
++static unsigned int
++mips_build_integer (struct mips_integer_op *codes,
++                  unsigned HOST_WIDE_INT value)
++{
++  unsigned HOST_WIDE_INT foo;
++  int i, ninsns;
++
++  ninsns = mips_build_integer_recursive (codes, value, 0);
++
++  // simulate the generated instructions to verify we correctly generated
++  // the constant.  fail noisily if we didn't.
++  foo = codes[0].value;
++  for(i = 1; i < ninsns; i++)
++  {
++    switch(codes[i].code)
++    {
++      case IOR: foo |= codes[i].value; break;
++      case PLUS: foo += codes[i].value; break;
++      case ASHIFT: foo <<= codes[i].value; break;
++      case LSHIFTRT: foo >>= codes[i].value; break;
++      case ASHIFTRT: foo = (HOST_WIDE_INT)foo >> codes[i].value; break;
++      default: abort();
++    }
++  }
++  gcc_assert(foo == value);
++
++  return ninsns;
++}
++
++/* Return true if symbols of type TYPE require a GOT access.  */
++
++static bool
++mips_got_symbol_type_p (enum mips_symbol_type type)
++{
++  return type == SYMBOL_GOT_DISP;
++}
++
++/* Return true if X is a thread-local symbol.  */
++
++static bool
++mips_tls_symbol_p (rtx x)
++{
++  return GET_CODE (x) == SYMBOL_REF && SYMBOL_REF_TLS_MODEL (x) != 0;
++}
++
++/* Return true if SYMBOL_REF X binds locally.  */
++
++static bool
++mips_symbol_binds_local_p (const_rtx x)
++{
++  return (SYMBOL_REF_DECL (x)
++        ? targetm.binds_local_p (SYMBOL_REF_DECL (x))
++        : SYMBOL_REF_LOCAL_P (x));
++}
++
++/* Return true if calls to X might need $25 to be valid on entry.  */
++
++bool
++mips_use_pic_fn_addr_reg_p (const_rtx x)
++{
++  if (!TARGET_USE_PIC_FN_ADDR_REG)
++    return false;
++
++  if (GET_CODE (x) == SYMBOL_REF)
++    {
++      /* If PLTs and copy relocations are available, the static linker
++       will make sure that $25 is valid on entry to the target function.  */
++      if (TARGET_ABICALLS_PIC0)
++      return false;
++
++      /* Locally-defined functions use absolute accesses to set up
++       the global pointer.  */
++      if (TARGET_ABSOLUTE_ABICALLS
++        && mips_symbol_binds_local_p (x)
++        && !SYMBOL_REF_EXTERNAL_P (x))
++      return false;
++    }
++
++  return true;
++}
++
++/* Return the method that should be used to access SYMBOL_REF or
++   LABEL_REF X in context CONTEXT.  */
++
++static enum mips_symbol_type
++mips_classify_symbol (const_rtx x)
++{
++  if (GET_CODE (x) == LABEL_REF)
++    {
++      if (TARGET_ABICALLS && !TARGET_ABSOLUTE_ABICALLS)
++      return SYMBOL_GOT_DISP;
++
++      return SYMBOL_ABSOLUTE;
++    }
++
++  gcc_assert (GET_CODE (x) == SYMBOL_REF);
++
++  if (SYMBOL_REF_TLS_MODEL (x))
++    return SYMBOL_TLS;
++
++  /* Don't use GOT accesses for locally-binding symbols when -mno-shared
++     is in effect.  */
++  if (TARGET_ABICALLS_PIC2
++      && !(TARGET_ABSOLUTE_ABICALLS && mips_symbol_binds_local_p (x)))
++    return SYMBOL_GOT_DISP;
++
++  return SYMBOL_ABSOLUTE;
++}
++
++/* Classify the base of symbolic expression X, given that X appears in
++   context CONTEXT.  */
++
++static enum mips_symbol_type
++mips_classify_symbolic_expression (rtx x)
++{
++  rtx offset;
++
++  split_const (x, &x, &offset);
++  if (UNSPEC_ADDRESS_P (x))
++    return UNSPEC_ADDRESS_TYPE (x);
++
++  return mips_classify_symbol (x);
++}
++
++/* Return true if OFFSET is within the range [0, ALIGN), where ALIGN
++   is the alignment in bytes of SYMBOL_REF X.  */
++
++static bool
++mips_offset_within_alignment_p (rtx x, HOST_WIDE_INT offset)
++{
++  HOST_WIDE_INT align;
++
++  align = SYMBOL_REF_DECL (x) ? DECL_ALIGN_UNIT (SYMBOL_REF_DECL (x)) : 1;
++  return IN_RANGE (offset, 0, align - 1);
++}
++
++/* Return true if X is a symbolic constant that can be used in context
++   CONTEXT.  If it is, store the type of the symbol in *SYMBOL_TYPE.  */
++
++bool
++mips_symbolic_constant_p (rtx x, enum mips_symbol_type *symbol_type)
++{
++  rtx offset;
++
++  split_const (x, &x, &offset);
++  if (UNSPEC_ADDRESS_P (x))
++    {
++      *symbol_type = UNSPEC_ADDRESS_TYPE (x);
++      x = UNSPEC_ADDRESS (x);
++    }
++  else if (GET_CODE (x) == SYMBOL_REF || GET_CODE (x) == LABEL_REF)
++    {
++      *symbol_type = mips_classify_symbol (x);
++      if (*symbol_type == SYMBOL_TLS)
++      return false;
++    }
++  else
++    return false;
++
++  if (offset == const0_rtx)
++    return true;
++
++  /* Check whether a nonzero offset is valid for the underlying
++     relocations.  */
++  switch (*symbol_type)
++    {
++    case SYMBOL_ABSOLUTE:
++    case SYMBOL_FORCE_TO_MEM:
++    case SYMBOL_32_HIGH:
++      /* If the target has 64-bit pointers and the object file only
++       supports 32-bit symbols, the values of those symbols will be
++       sign-extended.  In this case we can't allow an arbitrary offset
++       in case the 32-bit value X + OFFSET has a different sign from X.  */
++      if (Pmode == DImode && !ABI_HAS_64BIT_SYMBOLS)
++      return offset_within_block_p (x, INTVAL (offset));
++
++      /* In other cases the relocations can handle any offset.  */
++      return true;
++
++    case SYMBOL_TPREL:
++    case SYMBOL_DTPREL:
++      /* There is no carry between the HI and LO REL relocations, so the
++       offset is only valid if we know it won't lead to such a carry.  */
++      return mips_offset_within_alignment_p (x, INTVAL (offset));
++
++    case SYMBOL_GOT_DISP:
++    case SYMBOL_GOTOFF_DISP:
++    case SYMBOL_GOTOFF_CALL:
++    case SYMBOL_GOTOFF_LOADGP:
++    case SYMBOL_TLSGD:
++    case SYMBOL_TLSLDM:
++    case SYMBOL_GOTTPREL:
++    case SYMBOL_TLS:
++      return false;
++    }
++  gcc_unreachable ();
++}
++\f
++/* Like mips_symbol_insns, but treat extended MIPS16 instructions as a
++   single instruction.  We rely on the fact that, in the worst case,
++   all instructions involved in a MIPS16 address calculation are usually
++   extended ones.  */
++
++static int
++mips_symbol_insns (enum mips_symbol_type type, enum machine_mode mode)
++{
++  switch (type)
++    {
++    case SYMBOL_ABSOLUTE:
++      return 2;
++
++    case SYMBOL_FORCE_TO_MEM:
++      /* LEAs will be converted into constant-pool references by
++       mips_reorg.  */
++      if (mode == MAX_MACHINE_MODE)
++      return 1;
++
++      /* The constant must be loaded and then dereferenced.  */
++      return 0;
++
++    case SYMBOL_GOT_DISP:
++      /* The constant will have to be loaded from the GOT before it
++       is used in an address.  */
++      if (mode != MAX_MACHINE_MODE)
++      return 0;
++
++      /* Fall through.  */
++
++    case SYMBOL_GOTOFF_DISP:
++    case SYMBOL_GOTOFF_CALL:
++    case SYMBOL_GOTOFF_LOADGP:
++    case SYMBOL_32_HIGH:
++    case SYMBOL_TLSGD:
++    case SYMBOL_TLSLDM:
++    case SYMBOL_DTPREL:
++    case SYMBOL_GOTTPREL:
++    case SYMBOL_TPREL:
++      /* A 16-bit constant formed by a single relocation, or a 32-bit
++       constant formed from a high 16-bit relocation and a low 16-bit
++       relocation.  Use mips_split_p to determine which.  32-bit
++       constants need an "lui; addiu" sequence for normal mode and
++       an "li; sll; addiu" sequence for MIPS16 mode.  */
++      return !mips_split_p[type] ? 1 : 2;
++
++    case SYMBOL_TLS:
++      /* We don't treat a bare TLS symbol as a constant.  */
++      return 0;
++    }
++  gcc_unreachable ();
++}
++
++/* A for_each_rtx callback.  Stop the search if *X references a
++   thread-local symbol.  */
++
++static int
++mips_tls_symbol_ref_1 (rtx *x, void *data ATTRIBUTE_UNUSED)
++{
++  return mips_tls_symbol_p (*x);
++}
++
++/* Implement TARGET_CANNOT_FORCE_CONST_MEM.  */
++
++static bool
++mips_cannot_force_const_mem (rtx x)
++{
++  enum mips_symbol_type type;
++  rtx base, offset;
++
++  /* There is no assembler syntax for expressing an address-sized
++     high part.  */
++  if (GET_CODE (x) == HIGH)
++    return true;
++
++  /* As an optimization, reject constants that mips_legitimize_move
++     can expand inline.
++
++     Suppose we have a multi-instruction sequence that loads constant C
++     into register R.  If R does not get allocated a hard register, and
++     R is used in an operand that allows both registers and memory
++     references, reload will consider forcing C into memory and using
++     one of the instruction's memory alternatives.  Returning false
++     here will force it to use an input reload instead.  */
++  if (CONST_INT_P (x) && LEGITIMATE_CONSTANT_P (x))
++    return true;
++
++  split_const (x, &base, &offset);
++  if (mips_symbolic_constant_p (base, &type) && type != SYMBOL_FORCE_TO_MEM)
++    {
++      /* The same optimization as for CONST_INT.  */
++      if (SMALL_INT (offset) && mips_symbol_insns (type, MAX_MACHINE_MODE) > 0)
++      return true;
++    }
++
++  /* TLS symbols must be computed by mips_legitimize_move.  */
++  if (for_each_rtx (&x, &mips_tls_symbol_ref_1, NULL))
++    return true;
++
++  return false;
++}
++
++/* Implement TARGET_USE_BLOCKS_FOR_CONSTANT_P.  We can't use blocks for
++   constants when we're using a per-function constant pool.  */
++
++static bool
++mips_use_blocks_for_constant_p (enum machine_mode mode ATTRIBUTE_UNUSED,
++                              const_rtx x ATTRIBUTE_UNUSED)
++{
++  return true;
++}
++\f
++/* Return true if register REGNO is a valid base register for mode MODE.
++   STRICT_P is true if REG_OK_STRICT is in effect.  */
++
++int
++mips_regno_mode_ok_for_base_p (int regno, enum machine_mode mode ATTRIBUTE_UNUSED,
++                             bool strict_p)
++{
++  if (!HARD_REGISTER_NUM_P (regno))
++    {
++      if (!strict_p)
++      return true;
++      regno = reg_renumber[regno];
++    }
++
++  /* These fake registers will be eliminated to either the stack or
++     hard frame pointer, both of which are usually valid base registers.
++     Reload deals with the cases where the eliminated form isn't valid.  */
++  if (regno == ARG_POINTER_REGNUM || regno == FRAME_POINTER_REGNUM)
++    return true;
++
++  return GP_REG_P (regno);
++}
++
++/* Return true if X is a valid base register for mode MODE.
++   STRICT_P is true if REG_OK_STRICT is in effect.  */
++
++static bool
++mips_valid_base_register_p (rtx x, enum machine_mode mode, bool strict_p)
++{
++  if (!strict_p && GET_CODE (x) == SUBREG)
++    x = SUBREG_REG (x);
++
++  return (REG_P (x)
++        && mips_regno_mode_ok_for_base_p (REGNO (x), mode, strict_p));
++}
++
++/* Return true if, for every base register BASE_REG, (plus BASE_REG X)
++   can address a value of mode MODE.  */
++
++static bool
++mips_valid_offset_p (rtx x, enum machine_mode mode)
++{
++  /* Check that X is a signed 16-bit number.  */
++  if (!const_arith_operand (x, Pmode))
++    return false;
++
++  /* We may need to split multiword moves, so make sure that every word
++     is accessible.  */
++  if (GET_MODE_SIZE (mode) > UNITS_PER_WORD
++      && !SMALL_OPERAND (INTVAL (x) + GET_MODE_SIZE (mode) - UNITS_PER_WORD))
++    return false;
++
++  return true;
++}
++
++/* Return true if a LO_SUM can address a value of mode MODE when the
++   LO_SUM symbol has type SYMBOL_TYPE.  */
++
++static bool
++mips_valid_lo_sum_p (enum mips_symbol_type symbol_type, enum machine_mode mode)
++{
++  /* Check that symbols of type SYMBOL_TYPE can be used to access values
++     of mode MODE.  */
++  if (mips_symbol_insns (symbol_type, mode) == 0)
++    return false;
++
++  /* Check that there is a known low-part relocation.  */
++  if (mips_lo_relocs[symbol_type] == NULL)
++    return false;
++
++  /* We may need to split multiword moves, so make sure that each word
++     can be accessed without inducing a carry.  This is mainly needed
++     for o64, which has historically only guaranteed 64-bit alignment
++     for 128-bit types.  */
++  if (GET_MODE_SIZE (mode) > UNITS_PER_WORD
++      && GET_MODE_BITSIZE (mode) > GET_MODE_ALIGNMENT (mode))
++    return false;
++
++  return true;
++}
++
++/* Return true if X is a valid address for machine mode MODE.  If it is,
++   fill in INFO appropriately.  STRICT_P is true if REG_OK_STRICT is in
++   effect.  */
++
++static bool
++mips_classify_address (struct mips_address_info *info, rtx x,
++                     enum machine_mode mode, bool strict_p)
++{
++  switch (GET_CODE (x))
++    {
++    case REG:
++    case SUBREG:
++      info->type = ADDRESS_REG;
++      info->reg = x;
++      info->offset = const0_rtx;
++      return mips_valid_base_register_p (info->reg, mode, strict_p);
++
++    case PLUS:
++      info->type = ADDRESS_REG;
++      info->reg = XEXP (x, 0);
++      info->offset = XEXP (x, 1);
++      return (mips_valid_base_register_p (info->reg, mode, strict_p)
++            && mips_valid_offset_p (info->offset, mode));
++
++    case LO_SUM:
++      info->type = ADDRESS_LO_SUM;
++      info->reg = XEXP (x, 0);
++      info->offset = XEXP (x, 1);
++      /* We have to trust the creator of the LO_SUM to do something vaguely
++       sane.  Target-independent code that creates a LO_SUM should also
++       create and verify the matching HIGH.  Target-independent code that
++       adds an offset to a LO_SUM must prove that the offset will not
++       induce a carry.  Failure to do either of these things would be
++       a bug, and we are not required to check for it here.  The MIPS
++       backend itself should only create LO_SUMs for valid symbolic
++       constants, with the high part being either a HIGH or a copy
++       of _gp. */
++      info->symbol_type
++      = mips_classify_symbolic_expression (info->offset);
++      return (mips_valid_base_register_p (info->reg, mode, strict_p)
++            && mips_valid_lo_sum_p (info->symbol_type, mode));
++
++    case CONST_INT:
++      /* Small-integer addresses don't occur very often, but they
++       are legitimate if $0 is a valid base register.  */
++      info->type = ADDRESS_CONST_INT;
++      return SMALL_INT (x);
++
++    case CONST:
++    case LABEL_REF:
++    case SYMBOL_REF:
++      info->type = ADDRESS_SYMBOLIC;
++      return (mips_symbolic_constant_p (x, &info->symbol_type)
++            && mips_symbol_insns (info->symbol_type, mode) > 0
++            && !mips_split_p[info->symbol_type]);
++
++    default:
++      return false;
++    }
++}
++
++/* Implement TARGET_LEGITIMATE_ADDRESS_P.  */
++
++static bool
++mips_legitimate_address_p (enum machine_mode mode, rtx x, bool strict_p)
++{
++  struct mips_address_info addr;
++
++  return mips_classify_address (&addr, x, mode, strict_p);
++}
++
++/* Return true if X is a legitimate $sp-based address for mode MDOE.  */
++
++bool
++mips_stack_address_p (rtx x, enum machine_mode mode)
++{
++  struct mips_address_info addr;
++
++  return (mips_classify_address (&addr, x, mode, false)
++        && addr.type == ADDRESS_REG
++        && addr.reg == stack_pointer_rtx);
++}
++
++/* Return the number of instructions needed to load or store a value
++   of mode MODE at address X.  Return 0 if X isn't valid for MODE.
++   Assume that multiword moves may need to be split into word moves
++   if MIGHT_SPLIT_P, otherwise assume that a single load or store is
++   enough.
++
++   For MIPS16 code, count extended instructions as two instructions.  */
++
++int
++mips_address_insns (rtx x, enum machine_mode mode, bool might_split_p)
++{
++  struct mips_address_info addr;
++  int factor;
++
++  /* BLKmode is used for single unaligned loads and stores and should
++     not count as a multiword mode.  (GET_MODE_SIZE (BLKmode) is pretty
++     meaningless, so we have to single it out as a special case one way
++     or the other.)  */
++  if (mode != BLKmode && might_split_p)
++    factor = (GET_MODE_SIZE (mode) + UNITS_PER_WORD - 1) / UNITS_PER_WORD;
++  else
++    factor = 1;
++
++  if (mips_classify_address (&addr, x, mode, false))
++    switch (addr.type)
++      {
++      case ADDRESS_REG:
++      return factor;
++
++      case ADDRESS_LO_SUM:
++      return factor;
++
++      case ADDRESS_CONST_INT:
++      return factor;
++
++      case ADDRESS_SYMBOLIC:
++      return factor * mips_symbol_insns (addr.symbol_type, mode);
++      }
++  return 0;
++}
++
++/* Return the number of instructions needed to load constant X.
++   Return 0 if X isn't a valid constant.  */
++
++int
++mips_const_insns (rtx x)
++{
++  struct mips_integer_op codes[MIPS_MAX_INTEGER_OPS];
++  enum mips_symbol_type symbol_type;
++  rtx offset;
++
++  switch (GET_CODE (x))
++    {
++    case HIGH:
++      if (!mips_symbolic_constant_p (XEXP (x, 0), &symbol_type)
++        || !mips_split_p[symbol_type])
++      return 0;
++
++      /* This is simply an LUI. */
++      return 1;
++
++    case CONST_INT:
++      return mips_build_integer (codes, INTVAL (x));
++
++    case CONST_DOUBLE:
++    case CONST_VECTOR:
++      /* Allow zeros for normal mode, where we can use $0.  */
++      return x == CONST0_RTX (GET_MODE (x)) ? 1 : 0;
++
++    case CONST:
++      /* See if we can refer to X directly.  */
++      if (mips_symbolic_constant_p (x, &symbol_type))
++      return mips_symbol_insns (symbol_type, MAX_MACHINE_MODE);
++
++      /* Otherwise try splitting the constant into a base and offset.
++       If the offset is a 16-bit value, we can load the base address
++       into a register and then use (D)ADDIU to add in the offset.
++       If the offset is larger, we can load the base and offset
++       into separate registers and add them together with (D)ADDU.
++       However, the latter is only possible before reload; during
++       and after reload, we must have the option of forcing the
++       constant into the pool instead.  */
++      split_const (x, &x, &offset);
++      if (offset != 0)
++      {
++        int n = mips_const_insns (x);
++        if (n != 0)
++          {
++            if (SMALL_INT (offset))
++              return n + 1;
++            else if (!targetm.cannot_force_const_mem (x))
++              return n + 1 + mips_build_integer (codes, INTVAL (offset));
++          }
++      }
++      return 0;
++
++    case SYMBOL_REF:
++    case LABEL_REF:
++      return mips_symbol_insns (mips_classify_symbol (x), MAX_MACHINE_MODE);
++
++    default:
++      return 0;
++    }
++}
++
++/* X is a doubleword constant that can be handled by splitting it into
++   two words and loading each word separately.  Return the number of
++   instructions required to do this.  */
++
++int
++mips_split_const_insns (rtx x)
++{
++  unsigned int low, high;
++
++  low = mips_const_insns (mips_subword (x, false));
++  high = mips_const_insns (mips_subword (x, true));
++  gcc_assert (low > 0 && high > 0);
++  return low + high;
++}
++
++/* Return the number of instructions needed to implement INSN,
++   given that it loads from or stores to MEM.  Count extended
++   MIPS16 instructions as two instructions.  */
++
++int
++mips_load_store_insns (rtx mem, rtx insn)
++{
++  enum machine_mode mode;
++  bool might_split_p;
++  rtx set;
++
++  gcc_assert (MEM_P (mem));
++  mode = GET_MODE (mem);
++
++  /* Try to prove that INSN does not need to be split.  */
++  might_split_p = true;
++  if (GET_MODE_BITSIZE (mode) == 64)
++    {
++      set = single_set (insn);
++      if (set && !mips_split_64bit_move_p (SET_DEST (set), SET_SRC (set)))
++      might_split_p = false;
++    }
++
++  return mips_address_insns (XEXP (mem, 0), mode, might_split_p);
++}
++
++/* Return the number of instructions needed for an integer division.  */
++
++int
++mips_idiv_insns (void)
++{
++  int count;
++
++  count = 1;
++  if (TARGET_CHECK_ZERO_DIV)
++    count += 2;
++
++  return count;
++}
++\f
++/* Emit a move from SRC to DEST.  Assume that the move expanders can
++   handle all moves if !can_create_pseudo_p ().  The distinction is
++   important because, unlike emit_move_insn, the move expanders know
++   how to force Pmode objects into the constant pool even when the
++   constant pool address is not itself legitimate.  */
++
++rtx
++mips_emit_move (rtx dest, rtx src)
++{
++  return (can_create_pseudo_p ()
++        ? emit_move_insn (dest, src)
++        : emit_move_insn_1 (dest, src));
++}
++
++/* Emit an instruction of the form (set TARGET (CODE OP0 OP1)).  */
++
++static void
++mips_emit_binary (enum rtx_code code, rtx target, rtx op0, rtx op1)
++{
++  emit_insn (gen_rtx_SET (VOIDmode, target,
++                        gen_rtx_fmt_ee (code, GET_MODE (target), op0, op1)));
++}
++
++/* Compute (CODE OP0 OP1) and store the result in a new register
++   of mode MODE.  Return that new register.  */
++
++static rtx
++mips_force_binary (enum machine_mode mode, enum rtx_code code, rtx op0, rtx op1)
++{
++  rtx reg;
++
++  reg = gen_reg_rtx (mode);
++  mips_emit_binary (code, reg, op0, op1);
++  return reg;
++}
++
++/* Copy VALUE to a register and return that register.  If new pseudos
++   are allowed, copy it into a new register, otherwise use DEST.  */
++
++static rtx
++mips_force_temporary (rtx dest, rtx value)
++{
++  if (can_create_pseudo_p ())
++    return force_reg (Pmode, value);
++  else
++    {
++      mips_emit_move (dest, value);
++      return dest;
++    }
++}
++
++/* Emit a call sequence with call pattern PATTERN and return the call
++   instruction itself (which is not necessarily the last instruction
++   emitted).  ORIG_ADDR is the original, unlegitimized address,
++   ADDR is the legitimized form, and LAZY_P is true if the call
++   address is lazily-bound.  */
++
++static rtx
++mips_emit_call_insn (rtx pattern, bool lazy_p)
++{
++  rtx insn;
++
++  insn = emit_call_insn (pattern);
++
++  if (lazy_p)
++    /* Lazy-binding stubs require $gp to be valid on entry.  */
++    use_reg (&CALL_INSN_FUNCTION_USAGE (insn), pic_offset_table_rtx);
++
++  if (TARGET_USE_GOT)
++    {
++      /* See the comment above load_call<mode> for details.  */
++      use_reg (&CALL_INSN_FUNCTION_USAGE (insn),
++             gen_rtx_REG (Pmode, GOT_VERSION_REGNUM));
++      emit_insn (gen_update_got_version ());
++    }
++  return insn;
++}
++\f
++/* Wrap symbol or label BASE in an UNSPEC address of type SYMBOL_TYPE,
++   then add CONST_INT OFFSET to the result.  */
++
++static rtx
++mips_unspec_address_offset (rtx base, rtx offset,
++                          enum mips_symbol_type symbol_type)
++{
++  base = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, base),
++                       UNSPEC_ADDRESS_FIRST + symbol_type);
++  if (offset != const0_rtx)
++    base = gen_rtx_PLUS (Pmode, base, offset);
++  return gen_rtx_CONST (Pmode, base);
++}
++
++/* Return an UNSPEC address with underlying address ADDRESS and symbol
++   type SYMBOL_TYPE.  */
++
++rtx
++mips_unspec_address (rtx address, enum mips_symbol_type symbol_type)
++{
++  rtx base, offset;
++
++  split_const (address, &base, &offset);
++  return mips_unspec_address_offset (base, offset, symbol_type);
++}
++
++/* If OP is an UNSPEC address, return the address to which it refers,
++   otherwise return OP itself.  */
++
++static rtx
++mips_strip_unspec_address (rtx op)
++{
++  rtx base, offset;
++
++  split_const (op, &base, &offset);
++  if (UNSPEC_ADDRESS_P (base))
++    op = plus_constant (UNSPEC_ADDRESS (base), INTVAL (offset));
++  return op;
++}
++
++/* If mips_unspec_address (ADDR, SYMBOL_TYPE) is a 32-bit value, add the
++   high part to BASE and return the result.  Just return BASE otherwise.
++   TEMP is as for mips_force_temporary.
++
++   The returned expression can be used as the first operand to a LO_SUM.  */
++
++static rtx
++mips_unspec_offset_high (rtx temp, rtx base, rtx addr,
++                       enum mips_symbol_type symbol_type)
++{
++  if (mips_split_p[symbol_type])
++    {
++      addr = gen_rtx_HIGH (Pmode, mips_unspec_address (addr, symbol_type));
++      addr = mips_force_temporary (temp, addr);
++      base = mips_force_temporary (temp, gen_rtx_PLUS (Pmode, addr, base));
++    }
++  return base;
++}
++
++/* Return the RHS of a load_call<mode> insn.  */
++
++static rtx
++mips_unspec_call (rtx reg, rtx symbol)
++{
++  rtvec vec;
++
++  vec = gen_rtvec (3, reg, symbol, gen_rtx_REG (SImode, GOT_VERSION_REGNUM));
++  return gen_rtx_UNSPEC (Pmode, vec, UNSPEC_LOAD_CALL);
++}
++
++/* If SRC is the RHS of a load_call<mode> insn, return the underlying symbol
++   reference.  Return NULL_RTX otherwise.  */
++
++static rtx
++mips_strip_unspec_call (rtx src)
++{
++  if (GET_CODE (src) == UNSPEC && XINT (src, 1) == UNSPEC_LOAD_CALL)
++    return mips_strip_unspec_address (XVECEXP (src, 0, 1));
++  return NULL_RTX;
++}
++
++/* Create and return a GOT reference of type TYPE for address ADDR.
++   TEMP, if nonnull, is a scratch Pmode base register.  */
++
++rtx
++mips_got_load (rtx temp, rtx addr, enum mips_symbol_type type)
++{
++  rtx base, high, lo_sum_symbol;
++
++  base = pic_offset_table_rtx;
++
++  /* If we used the temporary register to load $gp, we can't use
++     it for the high part as well.  */
++  if (temp != NULL && reg_overlap_mentioned_p (base, temp))
++    temp = NULL;
++
++  high = mips_unspec_offset_high (temp, base, addr, type);
++  lo_sum_symbol = mips_unspec_address (addr, type);
++
++  if (type == SYMBOL_GOTOFF_CALL)
++    return mips_unspec_call (high, lo_sum_symbol);
++  else
++    return (Pmode == SImode
++          ? gen_unspec_gotsi (high, lo_sum_symbol)
++          : gen_unspec_gotdi (high, lo_sum_symbol));
++}
++
++/* If MODE is MAX_MACHINE_MODE, ADDR appears as a move operand, otherwise
++   it appears in a MEM of that mode.  Return true if ADDR is a legitimate
++   constant in that context and can be split into high and low parts.
++   If so, and if LOW_OUT is nonnull, emit the high part and store the
++   low part in *LOW_OUT.  Leave *LOW_OUT unchanged otherwise.
++
++   TEMP is as for mips_force_temporary and is used to load the high
++   part into a register.
++
++   When MODE is MAX_MACHINE_MODE, the low part is guaranteed to be
++   a legitimize SET_SRC for an .md pattern, otherwise the low part
++   is guaranteed to be a legitimate address for mode MODE.  */
++
++bool
++mips_split_symbol (rtx temp, rtx addr, enum machine_mode mode, rtx *low_out)
++{
++  enum mips_symbol_type symbol_type;
++  rtx high;
++
++  if (!(GET_CODE (addr) == HIGH && mode == MAX_MACHINE_MODE))
++    {
++      if (mips_symbolic_constant_p (addr, &symbol_type)
++        && mips_symbol_insns (symbol_type, mode) > 0
++        && mips_split_p[symbol_type])
++      {
++        if (low_out)
++          switch (symbol_type)
++            {
++            case SYMBOL_GOT_DISP:
++              /* SYMBOL_GOT_DISP symbols are loaded from the GOT.  */
++              *low_out = mips_got_load (temp, addr, SYMBOL_GOTOFF_DISP);
++              break;
++
++            default:
++              high = gen_rtx_HIGH (Pmode, copy_rtx (addr));
++              high = mips_force_temporary (temp, high);
++              *low_out = gen_rtx_LO_SUM (Pmode, high, addr);
++              break;
++            }
++        return true;
++      }
++    }
++  return false;
++}
++
++/* Return a legitimate address for REG + OFFSET.  TEMP is as for
++   mips_force_temporary; it is only needed when OFFSET is not a
++   SMALL_OPERAND.  */
++
++static rtx
++mips_add_offset (rtx temp, rtx reg, HOST_WIDE_INT offset)
++{
++  if (!SMALL_OPERAND (offset))
++    {
++      rtx high;
++
++      /* Leave OFFSET as a 16-bit offset and put the excess in HIGH.
++         The addition inside the macro CONST_HIGH_PART may cause an
++         overflow, so we need to force a sign-extension check.  */
++      high = gen_int_mode (RISCV_CONST_HIGH_PART (offset), Pmode);
++      offset = RISCV_CONST_LOW_PART (offset);
++      high = mips_force_temporary (temp, high);
++      reg = mips_force_temporary (temp, gen_rtx_PLUS (Pmode, high, reg));
++    }
++  return plus_constant (reg, offset);
++}
++\f
++/* The __tls_get_attr symbol.  */
++static GTY(()) rtx mips_tls_symbol;
++
++/* Return an instruction sequence that calls __tls_get_addr.  SYM is
++   the TLS symbol we are referencing and TYPE is the symbol type to use
++   (either global dynamic or local dynamic).  V0 is an RTX for the
++   return value location.  */
++
++static rtx
++mips_call_tls_get_addr (rtx sym, enum mips_symbol_type type, rtx v0)
++{
++  rtx insn, loc, a0, temp;
++
++  a0 = gen_rtx_REG (Pmode, GP_ARG_FIRST);
++
++  if (!mips_tls_symbol)
++    mips_tls_symbol = init_one_libfunc ("__tls_get_addr");
++
++  temp = gen_reg_rtx (Pmode);
++  loc = mips_unspec_offset_high (temp, pic_offset_table_rtx, sym, type);
++  loc = gen_rtx_LO_SUM (Pmode, loc,
++                      mips_unspec_address (sym, type));
++
++  start_sequence ();
++
++  emit_insn (gen_rtx_SET (Pmode, a0, loc));
++  insn = mips_expand_call (MIPS_CALL_NORMAL, v0, mips_tls_symbol,
++                         const0_rtx, NULL_RTX, false);
++  RTL_CONST_CALL_P (insn) = 1;
++  use_reg (&CALL_INSN_FUNCTION_USAGE (insn), a0);
++  insn = get_insns ();
++
++  end_sequence ();
++
++  return insn;
++}
++
++/* Generate the code to access LOC, a thread-local SYMBOL_REF, and return
++   its address.  The return value will be both a valid address and a valid
++   SET_SRC (either a REG or a LO_SUM).  */
++
++static rtx
++mips_legitimize_tls_address (rtx loc)
++{
++  rtx dest, insn, v0, tp, tmp1, tmp2, eqv;
++  enum tls_model model;
++
++  model = SYMBOL_REF_TLS_MODEL (loc);
++  /* Only TARGET_ABICALLS code can have more than one module; other
++     code must be be static and should not use a GOT.  All TLS models
++     reduce to local exec in this situation.  */
++  if (!TARGET_ABICALLS)
++    model = TLS_MODEL_LOCAL_EXEC;
++
++  switch (model)
++    {
++    case TLS_MODEL_GLOBAL_DYNAMIC:
++      v0 = gen_rtx_REG (Pmode, GP_RETURN);
++      insn = mips_call_tls_get_addr (loc, SYMBOL_TLSGD, v0);
++      dest = gen_reg_rtx (Pmode);
++      emit_libcall_block (insn, dest, v0, loc);
++      break;
++
++    case TLS_MODEL_LOCAL_DYNAMIC:
++      v0 = gen_rtx_REG (Pmode, GP_RETURN);
++      insn = mips_call_tls_get_addr (loc, SYMBOL_TLSLDM, v0);
++      tmp1 = gen_reg_rtx (Pmode);
++
++      /* Attach a unique REG_EQUIV, to allow the RTL optimizers to
++       share the LDM result with other LD model accesses.  */
++      eqv = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, const0_rtx),
++                          UNSPEC_TLS_LDM);
++      emit_libcall_block (insn, tmp1, v0, eqv);
++
++      tmp2 = mips_unspec_offset_high (NULL, tmp1, loc, SYMBOL_DTPREL);
++      dest = gen_rtx_LO_SUM (Pmode, tmp2,
++                           mips_unspec_address (loc, SYMBOL_DTPREL));
++      break;
++
++    case TLS_MODEL_INITIAL_EXEC:
++      tp = gen_rtx_REG (Pmode, THREAD_POINTER_REGNUM);
++      tmp1 = gen_reg_rtx (Pmode);
++      tmp2 = mips_got_load (tmp1, loc, SYMBOL_GOTTPREL);
++      emit_insn (gen_rtx_SET (VOIDmode, tmp1, tmp2));
++      dest = gen_reg_rtx (Pmode);
++      emit_insn (gen_add3_insn (dest, tmp1, tp));
++      break;
++
++    case TLS_MODEL_LOCAL_EXEC:
++      tp = gen_rtx_REG (Pmode, THREAD_POINTER_REGNUM);
++      tmp1 = mips_unspec_offset_high (NULL, tp, loc, SYMBOL_TPREL);
++      dest = gen_rtx_LO_SUM (Pmode, tmp1,
++                           mips_unspec_address (loc, SYMBOL_TPREL));
++      break;
++
++    default:
++      gcc_unreachable ();
++    }
++  return dest;
++}
++\f
++/* If X is not a valid address for mode MODE, force it into a register.  */
++
++static rtx
++mips_force_address (rtx x, enum machine_mode mode)
++{
++  if (!mips_legitimate_address_p (mode, x, false))
++    x = force_reg (Pmode, x);
++  return x;
++}
++
++/* This function is used to implement LEGITIMIZE_ADDRESS.  If X can
++   be legitimized in a way that the generic machinery might not expect,
++   return a new address, otherwise return NULL.  MODE is the mode of
++   the memory being accessed.  */
++
++static rtx
++mips_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNUSED,
++                       enum machine_mode mode)
++{
++  rtx base, addr;
++  HOST_WIDE_INT offset;
++
++  if (mips_tls_symbol_p (x))
++    return mips_legitimize_tls_address (x);
++
++  /* See if the address can split into a high part and a LO_SUM.  */
++  if (mips_split_symbol (NULL, x, mode, &addr))
++    return mips_force_address (addr, mode);
++
++  /* Handle BASE + OFFSET using mips_add_offset.  */
++  mips_split_plus (x, &base, &offset);
++  if (offset != 0)
++    {
++      if (!mips_valid_base_register_p (base, mode, false))
++      base = copy_to_mode_reg (Pmode, base);
++      addr = mips_add_offset (NULL, base, offset);
++      return mips_force_address (addr, mode);
++    }
++
++  return x;
++}
++
++/* Load VALUE into DEST.  TEMP is as for mips_force_temporary.  */
++
++void
++mips_move_integer (rtx temp, rtx dest, unsigned HOST_WIDE_INT value)
++{
++  struct mips_integer_op codes[MIPS_MAX_INTEGER_OPS];
++  enum machine_mode mode;
++  unsigned int i, num_ops;
++  rtx x;
++
++  mode = GET_MODE (dest);
++  num_ops = mips_build_integer (codes, value);
++
++  /* Apply each binary operation to X.  Invariant: X is a legitimate
++     source operand for a SET pattern.  */
++  x = GEN_INT (codes[0].value);
++
++  /* The story with HImode:
++   * MIPS didn't handle it because HImode constants could always fit in ORI.
++   * For our HImode constants that don't fit, we hack it together with an LUI
++   * followed by a right shift (logical or arithmetic).  mips_build_integer
++   * is guaranteed to produce either LUI/ADDI
++   *
++   * We generate a "bullshit addi" to add the low part to the SImode result
++   * of LUI to generate the HImode value we desire.  We call it bullshit
++   * because, in general, it doesn't guarantee that the result is in
++   * canonical form (i.e. bits above 16 are equal to bit 16).  However, we
++   * know that for any legitimate HImode constant, this will be the case,
++   * so it's safe.
++   */
++  if(mode == HImode && num_ops > 1)
++  {
++    gcc_assert(num_ops == 2);
++    gcc_assert(codes[1].code == PLUS);
++    gcc_assert((codes[0].value + codes[1].value) == value);
++
++    if (!can_create_pseudo_p ())
++    {
++      emit_insn (gen_rtx_SET (SImode, temp, x));
++      x = temp;
++    }
++    else
++      x = force_reg (SImode, x);
++
++    emit_insn (gen_bullshit_addsihi(dest, x, GEN_INT(codes[1].value)));
++
++    return;
++  }
++
++  for (i = 1; i < num_ops; i++)
++    {
++      if (!can_create_pseudo_p ())
++      {
++        emit_insn (gen_rtx_SET (VOIDmode, temp, x));
++        x = temp;
++      }
++      else
++      x = force_reg (mode, x);
++
++      x = gen_rtx_fmt_ee (codes[i].code, mode, x, GEN_INT (codes[i].value));
++    }
++
++  emit_insn (gen_rtx_SET (VOIDmode, dest, x));
++}
++
++/* Subroutine of mips_legitimize_move.  Move constant SRC into register
++   DEST given that SRC satisfies immediate_operand but doesn't satisfy
++   move_operand.  */
++
++static void
++mips_legitimize_const_move (enum machine_mode mode, rtx dest, rtx src)
++{
++  rtx base, offset;
++
++  /* Split moves of big integers into smaller pieces.  */
++  if (splittable_const_int_operand (src, mode))
++    {
++      mips_move_integer (dest, dest, INTVAL (src));
++      return;
++    }
++
++  /* Split moves of symbolic constants into high/low pairs.  */
++  if (mips_split_symbol (dest, src, MAX_MACHINE_MODE, &src))
++    {
++      emit_insn (gen_rtx_SET (VOIDmode, dest, src));
++      return;
++    }
++
++  /* Generate the appropriate access sequences for TLS symbols.  */
++  if (mips_tls_symbol_p (src))
++    {
++      mips_emit_move (dest, mips_legitimize_tls_address (src));
++      return;
++    }
++
++  /* If we have (const (plus symbol offset)), and that expression cannot
++     be forced into memory, load the symbol first and add in the offset.
++     In non-MIPS16 mode, prefer to do this even if the constant _can_ be
++     forced into memory, as it usually produces better code.  */
++  split_const (src, &base, &offset);
++  if (offset != const0_rtx
++      && (targetm.cannot_force_const_mem (src)
++        || can_create_pseudo_p ()))
++    {
++      base = mips_force_temporary (dest, base);
++      mips_emit_move (dest, mips_add_offset (NULL, base, INTVAL (offset)));
++      return;
++    }
++
++  src = force_const_mem (mode, src);
++
++  /* When using explicit relocs, constant pool references are sometimes
++     not legitimate addresses.  */
++  mips_split_symbol (dest, XEXP (src, 0), mode, &XEXP (src, 0));
++  mips_emit_move (dest, src);
++}
++
++/* If (set DEST SRC) is not a valid move instruction, emit an equivalent
++   sequence that is valid.  */
++
++bool
++mips_legitimize_move (enum machine_mode mode, rtx dest, rtx src)
++{
++  if (!register_operand (dest, mode) && !reg_or_0_operand (src, mode))
++    {
++      mips_emit_move (dest, force_reg (mode, src));
++      return true;
++    }
++
++  /* We need to deal with constants that would be legitimate
++     immediate_operands but aren't legitimate move_operands.  */
++  if (CONSTANT_P (src) && !move_operand (src, mode))
++    {
++      mips_legitimize_const_move (mode, dest, src);
++      set_unique_reg_note (get_last_insn (), REG_EQUAL, copy_rtx (src));
++      return true;
++    }
++  return false;
++}
++
++/* The cost of loading values from the constant pool.  It should be
++   larger than the cost of any constant we want to synthesize inline.  */
++#define CONSTANT_POOL_COST COSTS_N_INSNS (8)
++
++/* Return true if there is a non-MIPS16 instruction that implements CODE
++   and if that instruction accepts X as an immediate operand.  */
++
++static int
++mips_immediate_operand_p (int code, HOST_WIDE_INT x)
++{
++  switch (code)
++    {
++    case ASHIFT:
++    case ASHIFTRT:
++    case LSHIFTRT:
++      /* All shift counts are truncated to a valid constant.  */
++      return true;
++
++    case ROTATE:
++    case ROTATERT:
++      /* Likewise rotates, if the target supports rotates at all.  */
++      return false;
++
++    case AND:
++    case IOR:
++    case XOR:
++    case PLUS:
++    case LT:
++    case LTU:
++      /* These instructions take 16-bit signed immediates.  */
++      return SMALL_OPERAND (x);
++
++    case EQ:
++    case NE:
++    case GT:
++    case GTU:
++      /* The "immediate" forms of these instructions are really
++       implemented as comparisons with register 0.  */
++      return x == 0;
++
++    case GE:
++    case GEU:
++      /* Likewise, meaning that the only valid immediate operand is 1.  */
++      return x == 1;
++
++    case LE:
++      /* We add 1 to the immediate and use SLT.  */
++      return SMALL_OPERAND (x + 1);
++
++    case LEU:
++      /* Likewise SLTU, but reject the always-true case.  */
++      return SMALL_OPERAND (x + 1) && x + 1 != 0;
++
++    case SIGN_EXTRACT:
++    case ZERO_EXTRACT:
++      /* The bit position and size are immediate operands.  */
++      return false;
++
++    default:
++      /* By default assume that $0 can be used for 0.  */
++      return x == 0;
++    }
++}
++
++/* Return the cost of binary operation X, given that the instruction
++   sequence for a word-sized or smaller operation has cost SINGLE_COST
++   and that the sequence of a double-word operation has cost DOUBLE_COST.
++   If SPEED is true, optimize for speed otherwise optimize for size.  */
++
++static int
++mips_binary_cost (rtx x, int single_cost, int double_cost, bool speed)
++{
++  int cost;
++
++  if (GET_MODE_SIZE (GET_MODE (x)) == UNITS_PER_WORD * 2)
++    cost = double_cost;
++  else
++    cost = single_cost;
++  return (cost
++        + rtx_cost (XEXP (x, 0), SET, speed)
++        + rtx_cost (XEXP (x, 1), GET_CODE (x), speed));
++}
++
++/* Return the cost of floating-point multiplications of mode MODE.  */
++
++static int
++mips_fp_mult_cost (enum machine_mode mode)
++{
++  return mode == DFmode ? mips_cost->fp_mult_df : mips_cost->fp_mult_sf;
++}
++
++/* Return the cost of floating-point divisions of mode MODE.  */
++
++static int
++mips_fp_div_cost (enum machine_mode mode)
++{
++  return mode == DFmode ? mips_cost->fp_div_df : mips_cost->fp_div_sf;
++}
++
++/* Return the cost of sign-extending OP to mode MODE, not including the
++   cost of OP itself.  */
++
++static int
++mips_sign_extend_cost (enum machine_mode mode, rtx op)
++{
++  if (MEM_P (op))
++    /* Extended loads are as cheap as unextended ones.  */
++    return 0;
++
++  if (TARGET_64BIT && mode == DImode && GET_MODE (op) == SImode)
++    /* A sign extension from SImode to DImode in 64-bit mode is free.  */
++    return 0;
++
++  /* We need to use a shift left and a shift right.  */
++  return COSTS_N_INSNS (2);
++}
++
++/* Return the cost of zero-extending OP to mode MODE, not including the
++   cost of OP itself.  */
++
++static int
++mips_zero_extend_cost (enum machine_mode mode, rtx op)
++{
++  if (MEM_P (op))
++    /* Extended loads are as cheap as unextended ones.  */
++    return 0;
++
++  if ((TARGET_64BIT && mode == DImode && GET_MODE (op) == SImode) ||
++      ((mode == DImode || mode == SImode) && GET_MODE (op) == HImode))
++    /* We need a shift left by 32 bits and a shift right by 32 bits.  */
++    return COSTS_N_INSNS (2);
++
++  /* We can use ANDI.  */
++  return COSTS_N_INSNS (1);
++}
++
++/* Implement TARGET_RTX_COSTS.  */
++
++static bool
++mips_rtx_costs (rtx x, int code, int outer_code, int *total, bool speed)
++{
++  enum machine_mode mode = GET_MODE (x);
++  bool float_mode_p = FLOAT_MODE_P (mode);
++  int cost;
++  rtx addr;
++
++  /* The cost of a COMPARE is hard to define for MIPS.  COMPAREs don't
++     appear in the instruction stream, and the cost of a comparison is
++     really the cost of the branch or scc condition.  At the time of
++     writing, GCC only uses an explicit outer COMPARE code when optabs
++     is testing whether a constant is expensive enough to force into a
++     register.  We want optabs to pass such constants through the MIPS
++     expanders instead, so make all constants very cheap here.  */
++  if (outer_code == COMPARE)
++    {
++      gcc_assert (CONSTANT_P (x));
++      *total = 0;
++      return true;
++    }
++
++  switch (code)
++    {
++    case CONST_INT:
++      /* Treat *clear_upper32-style ANDs as having zero cost in the
++       second operand.  The cost is entirely in the first operand.
++
++       ??? This is needed because we would otherwise try to CSE
++       the constant operand.  Although that's the right thing for
++       instructions that continue to be a register operation throughout
++       compilation, it is disastrous for instructions that could
++       later be converted into a memory operation.  */
++      if (TARGET_64BIT
++        && outer_code == AND
++        && UINTVAL (x) == 0xffffffff)
++      {
++        *total = 0;
++        return true;
++      }
++
++      /* When not optimizing for size, we care more about the cost
++         of hot code, and hot code is often in a loop.  If a constant
++         operand needs to be forced into a register, we will often be
++         able to hoist the constant load out of the loop, so the load
++         should not contribute to the cost.  */
++      if (speed || mips_immediate_operand_p (outer_code, INTVAL (x)))
++        {
++          *total = 0;
++          return true;
++        }
++      /* Fall through.  */
++
++    case CONST:
++    case SYMBOL_REF:
++    case LABEL_REF:
++    case CONST_DOUBLE:
++      if (force_to_mem_operand (x, VOIDmode))
++      {
++        *total = COSTS_N_INSNS (1);
++        return true;
++      }
++      cost = mips_const_insns (x);
++      if (cost > 0)
++      {
++        /* If the constant is likely to be stored in a GPR, SETs of
++           single-insn constants are as cheap as register sets; we
++           never want to CSE them.
++
++           Don't reduce the cost of storing a floating-point zero in
++           FPRs.  If we have a zero in an FPR for other reasons, we
++           can get better cfg-cleanup and delayed-branch results by
++           using it consistently, rather than using $0 sometimes and
++           an FPR at other times.  Also, moves between floating-point
++           registers are sometimes cheaper than (D)MTC1 $0.  */
++        if (cost == 1
++            && outer_code == SET
++            && !(float_mode_p && TARGET_HARD_FLOAT))
++          cost = 0;
++        /* When non-MIPS16 code loads a constant N>1 times, we rarely
++           want to CSE the constant itself.  It is usually better to
++           have N copies of the last operation in the sequence and one
++           shared copy of the other operations.  (Note that this is
++           not true for MIPS16 code, where the final operation in the
++           sequence is often an extended instruction.)
++
++           Also, if we have a CONST_INT, we don't know whether it is
++           for a word or doubleword operation, so we cannot rely on
++           the result of mips_build_integer.  */
++        else if (outer_code == SET || mode == VOIDmode)
++          cost = 1;
++        *total = COSTS_N_INSNS (cost);
++        return true;
++      }
++      /* The value will need to be fetched from the constant pool.  */
++      *total = CONSTANT_POOL_COST;
++      return true;
++
++    case MEM:
++      /* If the address is legitimate, return the number of
++       instructions it needs.  */
++      addr = XEXP (x, 0);
++      cost = mips_address_insns (addr, mode, true);
++      if (cost > 0)
++      {
++        *total = COSTS_N_INSNS (cost + 1);
++        return true;
++      }
++      /* Otherwise use the default handling.  */
++      return false;
++
++    case FFS:
++      *total = COSTS_N_INSNS (6);
++      return false;
++
++    case NOT:
++      *total = COSTS_N_INSNS (GET_MODE_SIZE (mode) > UNITS_PER_WORD ? 2 : 1);
++      return false;
++
++    case AND:
++      /* Check for a *clear_upper32 pattern and treat it like a zero
++       extension.  See the pattern's comment for details.  */
++      if (TARGET_64BIT
++        && mode == DImode
++        && CONST_INT_P (XEXP (x, 1))
++        && UINTVAL (XEXP (x, 1)) == 0xffffffff)
++      {
++        *total = (mips_zero_extend_cost (mode, XEXP (x, 0))
++                  + rtx_cost (XEXP (x, 0), SET, speed));
++        return true;
++      }
++      /* Fall through.  */
++
++    case IOR:
++    case XOR:
++      /* Double-word operations use two single-word operations.  */
++      *total = mips_binary_cost (x, COSTS_N_INSNS (1), COSTS_N_INSNS (2),
++                               speed);
++      return true;
++
++    case ASHIFT:
++    case ASHIFTRT:
++    case LSHIFTRT:
++    case ROTATE:
++    case ROTATERT:
++      if (CONSTANT_P (XEXP (x, 1)))
++      *total = mips_binary_cost (x, COSTS_N_INSNS (1), COSTS_N_INSNS (4),
++                                 speed);
++      else
++      *total = mips_binary_cost (x, COSTS_N_INSNS (1), COSTS_N_INSNS (12),
++                                 speed);
++      return true;
++
++    case ABS:
++      if (float_mode_p)
++        *total = mips_cost->fp_add;
++      else
++        *total = COSTS_N_INSNS (4);
++      return false;
++
++    case LO_SUM:
++      /* Low-part immediates need an extended MIPS16 instruction.  */
++      *total = (COSTS_N_INSNS (1)
++              + rtx_cost (XEXP (x, 0), SET, speed));
++      return true;
++
++    case LT:
++    case LTU:
++    case LE:
++    case LEU:
++    case GT:
++    case GTU:
++    case GE:
++    case GEU:
++    case EQ:
++    case NE:
++    case UNORDERED:
++    case LTGT:
++      /* Branch comparisons have VOIDmode, so use the first operand's
++       mode instead.  */
++      mode = GET_MODE (XEXP (x, 0));
++      if (FLOAT_MODE_P (mode))
++      {
++        *total = mips_cost->fp_add;
++        return false;
++      }
++      *total = mips_binary_cost (x, COSTS_N_INSNS (1), COSTS_N_INSNS (4),
++                               speed);
++      return true;
++
++    case MINUS:
++      if (float_mode_p
++        && !HONOR_NANS (mode)
++        && !HONOR_SIGNED_ZEROS (mode))
++      {
++        /* See if we can use NMADD or NMSUB.  See mips.md for the
++           associated patterns.  */
++        rtx op0 = XEXP (x, 0);
++        rtx op1 = XEXP (x, 1);
++        if (GET_CODE (op0) == MULT && GET_CODE (XEXP (op0, 0)) == NEG)
++          {
++            *total = (mips_fp_mult_cost (mode)
++                      + rtx_cost (XEXP (XEXP (op0, 0), 0), SET, speed)
++                      + rtx_cost (XEXP (op0, 1), SET, speed)
++                      + rtx_cost (op1, SET, speed));
++            return true;
++          }
++        if (GET_CODE (op1) == MULT)
++          {
++            *total = (mips_fp_mult_cost (mode)
++                      + rtx_cost (op0, SET, speed)
++                      + rtx_cost (XEXP (op1, 0), SET, speed)
++                      + rtx_cost (XEXP (op1, 1), SET, speed));
++            return true;
++          }
++      }
++      /* Fall through.  */
++
++    case PLUS:
++      if (float_mode_p)
++      {
++        /* If this is part of a MADD or MSUB, treat the PLUS as
++           being free.  */
++        if (GET_CODE (XEXP (x, 0)) == MULT)
++          *total = 0;
++        else
++          *total = mips_cost->fp_add;
++        return false;
++      }
++
++      /* Double-word operations require three single-word operations and
++       an SLTU.  The MIPS16 version then needs to move the result of
++       the SLTU from $24 to a MIPS16 register.  */
++      *total = mips_binary_cost (x, COSTS_N_INSNS (1),
++                               COSTS_N_INSNS (4),
++                               speed);
++      return true;
++
++    case NEG:
++      if (float_mode_p
++        && !HONOR_NANS (mode)
++        && HONOR_SIGNED_ZEROS (mode))
++      {
++        /* See if we can use NMADD or NMSUB.  See mips.md for the
++           associated patterns.  */
++        rtx op = XEXP (x, 0);
++        if ((GET_CODE (op) == PLUS || GET_CODE (op) == MINUS)
++            && GET_CODE (XEXP (op, 0)) == MULT)
++          {
++            *total = (mips_fp_mult_cost (mode)
++                      + rtx_cost (XEXP (XEXP (op, 0), 0), SET, speed)
++                      + rtx_cost (XEXP (XEXP (op, 0), 1), SET, speed)
++                      + rtx_cost (XEXP (op, 1), SET, speed));
++            return true;
++          }
++      }
++
++      if (float_mode_p)
++      *total = mips_cost->fp_add;
++      else
++      *total = COSTS_N_INSNS (GET_MODE_SIZE (mode) > UNITS_PER_WORD ? 4 : 1);
++      return false;
++
++    case MULT:
++      if (float_mode_p)
++      *total = mips_fp_mult_cost (mode);
++      else if (mode == DImode && !TARGET_64BIT)
++      /* Synthesized from 2 mulsi3s, 1 mulsidi3 and two additions,
++         where the mulsidi3 always includes an MFHI and an MFLO.  */
++      *total = (speed
++                ? mips_cost->int_mult_si * 3 + 6
++                : COSTS_N_INSNS (7));
++      else if (!speed)
++      *total = 1;
++      else if (mode == DImode)
++      *total = mips_cost->int_mult_di;
++      else
++      *total = mips_cost->int_mult_si;
++      return false;
++
++    case DIV:
++      /* Check for a reciprocal.  */
++      if (float_mode_p
++        && flag_unsafe_math_optimizations
++        && XEXP (x, 0) == CONST1_RTX (mode))
++      {
++        if (outer_code == SQRT || GET_CODE (XEXP (x, 1)) == SQRT)
++          /* An rsqrt<mode>a or rsqrt<mode>b pattern.  Count the
++             division as being free.  */
++          *total = rtx_cost (XEXP (x, 1), SET, speed);
++