From 4372980f5881e7d537a52e3c49588ce116088061 Mon Sep 17 00:00:00 2001 From: Chris Metcalf Date: Mon, 10 Feb 2014 10:54:47 -0500 Subject: Move tilegx, tilepro, and linux-generic from ports to libc. I've moved the TILE-Gx and TILEPro ports to the main sysdeps hierarchy, along with the linux-generic ports infrastructure. Beyond the README update, the move was just git mv ports/sysdeps/tile sysdeps/tile git mv ports/sysdeps/unix/sysv/linux/tile \ sysdeps/unix/sysv/linux/tile git mv ports/sysdeps/unix/sysv/linux/generic \ sysdeps/unix/sysv/linux/generic I updated the relevant ChangeLogs along the lines of the ARM move in commit c6bfe5c4d75 and tested the 64-bit tilegx build to confirm that there were no changes in "objdump -dr" output in the shared objects. --- ChangeLog | 9 + README | 4 +- ports/ChangeLog.linux-generic | 12 + ports/ChangeLog.tile | 13 + ports/sysdeps/tile/Implies | 2 - ports/sysdeps/tile/Makefile | 13 - ports/sysdeps/tile/Versions | 6 - ports/sysdeps/tile/__longjmp.S | 57 - ports/sysdeps/tile/__tls_get_addr.S | 152 - ports/sysdeps/tile/_mcount.S | 87 - ports/sysdeps/tile/abort-instr.h | 2 - ports/sysdeps/tile/backtrace.c | 1 - ports/sysdeps/tile/bits/atomic.h | 86 - ports/sysdeps/tile/bits/byteswap.h | 37 - ports/sysdeps/tile/bits/endian.h | 11 - ports/sysdeps/tile/bits/fenv.h | 45 - ports/sysdeps/tile/bits/link.h | 57 - ports/sysdeps/tile/bits/mathdef.h | 48 - ports/sysdeps/tile/bits/mathinline.h | 44 - ports/sysdeps/tile/bits/setjmp.h | 36 - ports/sysdeps/tile/bsd-_setjmp.S | 1 - ports/sysdeps/tile/bsd-setjmp.S | 1 - ports/sysdeps/tile/bzero.S | 30 - ports/sysdeps/tile/crti.S | 124 - ports/sysdeps/tile/crtn.S | 55 - ports/sysdeps/tile/dl-lookupcfg.h | 27 - ports/sysdeps/tile/dl-machine.h | 913 ---- ports/sysdeps/tile/dl-runtime.c | 158 - ports/sysdeps/tile/dl-start.S | 114 - ports/sysdeps/tile/dl-tls.c | 27 - ports/sysdeps/tile/dl-tls.h | 45 - ports/sysdeps/tile/dl-trampoline.S | 193 - ports/sysdeps/tile/ffs.c | 45 - ports/sysdeps/tile/ffsll.c | 1 - ports/sysdeps/tile/gccframe.h | 21 - ports/sysdeps/tile/jmpbuf-offsets.h | 62 - ports/sysdeps/tile/jmpbuf-unwind.h | 48 - ports/sysdeps/tile/ldsodefs.h | 40 - ports/sysdeps/tile/libm-test-ulps | 5460 -------------------- ports/sysdeps/tile/machine-gmon.h | 25 - ports/sysdeps/tile/math_private.h | 31 - ports/sysdeps/tile/memcopy.h | 27 - ports/sysdeps/tile/nptl/Makefile | 20 - ports/sysdeps/tile/nptl/pthread_spin_lock.c | 56 - ports/sysdeps/tile/nptl/pthread_spin_trylock.c | 32 - ports/sysdeps/tile/nptl/pthread_spin_unlock.c | 33 - ports/sysdeps/tile/nptl/pthreaddef.h | 41 - ports/sysdeps/tile/nptl/tcb-offsets.sym | 17 - ports/sysdeps/tile/nptl/tls.h | 194 - ports/sysdeps/tile/preconfigure | 17 - ports/sysdeps/tile/s_fma.c | 1 - ports/sysdeps/tile/s_fmaf.c | 1 - ports/sysdeps/tile/setjmp.S | 46 - ports/sysdeps/tile/sfp-machine.h | 97 - ports/sysdeps/tile/shlib-versions | 2 - ports/sysdeps/tile/sotruss-lib.c | 49 - ports/sysdeps/tile/stackguard-macros.h | 20 - ports/sysdeps/tile/stackinfo.h | 48 - ports/sysdeps/tile/start.S | 203 - ports/sysdeps/tile/sysdep.h | 110 - ports/sysdeps/tile/tilegx/Makefile | 35 - ports/sysdeps/tile/tilegx/bits/atomic.h | 49 - ports/sysdeps/tile/tilegx/bits/wordsize.h | 8 - ports/sysdeps/tile/tilegx/memchr.c | 73 - ports/sysdeps/tile/tilegx/memcpy.c | 272 - ports/sysdeps/tile/tilegx/memmove.c | 22 - ports/sysdeps/tile/tilegx/memset.c | 151 - ports/sysdeps/tile/tilegx/memusage.h | 31 - ports/sysdeps/tile/tilegx/rawmemchr.c | 45 - ports/sysdeps/tile/tilegx/strchr.c | 67 - ports/sysdeps/tile/tilegx/strchrnul.c | 64 - ports/sysdeps/tile/tilegx/string-endian.h | 47 - ports/sysdeps/tile/tilegx/strlen.c | 39 - ports/sysdeps/tile/tilegx/strrchr.c | 68 - ports/sysdeps/tile/tilegx/tilegx32/Implies | 3 - ports/sysdeps/tile/tilegx/tilegx64/Implies | 3 - ports/sysdeps/tile/tilepro/Implies | 2 - ports/sysdeps/tile/tilepro/bits/atomic.h | 81 - ports/sysdeps/tile/tilepro/bits/wordsize.h | 3 - ports/sysdeps/tile/tilepro/memchr.c | 72 - ports/sysdeps/tile/tilepro/memcpy.S | 397 -- ports/sysdeps/tile/tilepro/memset.c | 151 - ports/sysdeps/tile/tilepro/memusage.h | 29 - ports/sysdeps/tile/tilepro/rawmemchr.c | 45 - ports/sysdeps/tile/tilepro/strchr.c | 68 - ports/sysdeps/tile/tilepro/strchrnul.c | 65 - ports/sysdeps/tile/tilepro/strlen.c | 39 - ports/sysdeps/tile/tilepro/strrchr.c | 73 - ports/sysdeps/tile/tls-macros.h | 84 - ports/sysdeps/tile/tst-audit.h | 23 - ports/sysdeps/tile/wordcopy.c | 449 -- ports/sysdeps/unix/sysv/linux/generic/Makefile | 3 - .../unix/sysv/linux/generic/____longjmp_chk.c | 57 - ports/sysdeps/unix/sysv/linux/generic/access.c | 31 - ports/sysdeps/unix/sysv/linux/generic/bits/fcntl.h | 56 - ports/sysdeps/unix/sysv/linux/generic/bits/msq.h | 84 - ports/sysdeps/unix/sysv/linux/generic/bits/sem.h | 92 - ports/sysdeps/unix/sysv/linux/generic/bits/shm.h | 111 - ports/sysdeps/unix/sysv/linux/generic/bits/stat.h | 171 - .../sysdeps/unix/sysv/linux/generic/bits/statfs.h | 86 - .../unix/sysv/linux/generic/bits/typesizes.h | 78 - ports/sysdeps/unix/sysv/linux/generic/brk.c | 45 - ports/sysdeps/unix/sysv/linux/generic/chmod.c | 31 - ports/sysdeps/unix/sysv/linux/generic/chown.c | 32 - ports/sysdeps/unix/sysv/linux/generic/creat.c | 38 - ports/sysdeps/unix/sysv/linux/generic/dl-origin.c | 81 - ports/sysdeps/unix/sysv/linux/generic/dup2.c | 37 - .../sysdeps/unix/sysv/linux/generic/epoll_create.c | 38 - ports/sysdeps/unix/sysv/linux/generic/epoll_wait.c | 28 - ports/sysdeps/unix/sysv/linux/generic/futimesat.c | 52 - ports/sysdeps/unix/sysv/linux/generic/getdents.c | 1 - ports/sysdeps/unix/sysv/linux/generic/getdents64.c | 37 - .../sysdeps/unix/sysv/linux/generic/inotify_init.c | 32 - .../sysdeps/unix/sysv/linux/generic/kernel_stat.h | 26 - ports/sysdeps/unix/sysv/linux/generic/lchown.c | 32 - ports/sysdeps/unix/sysv/linux/generic/link.c | 31 - ports/sysdeps/unix/sysv/linux/generic/lxstat.c | 48 - ports/sysdeps/unix/sysv/linux/generic/mkdir.c | 33 - ports/sysdeps/unix/sysv/linux/generic/not-cancel.h | 34 - .../unix/sysv/linux/generic/nptl/not-cancel.h | 1 - ports/sysdeps/unix/sysv/linux/generic/open.c | 71 - ports/sysdeps/unix/sysv/linux/generic/open64.c | 55 - ports/sysdeps/unix/sysv/linux/generic/pause.c | 63 - ports/sysdeps/unix/sysv/linux/generic/pipe.c | 33 - ports/sysdeps/unix/sysv/linux/generic/poll.c | 53 - ports/sysdeps/unix/sysv/linux/generic/readlink.c | 31 - .../sysdeps/unix/sysv/linux/generic/readlink_chk.c | 39 - ports/sysdeps/unix/sysv/linux/generic/recv.c | 45 - ports/sysdeps/unix/sysv/linux/generic/rename.c | 29 - ports/sysdeps/unix/sysv/linux/generic/rmdir.c | 31 - ports/sysdeps/unix/sysv/linux/generic/select.c | 74 - ports/sysdeps/unix/sysv/linux/generic/send.c | 43 - ports/sysdeps/unix/sysv/linux/generic/symlink.c | 30 - .../sysdeps/unix/sysv/linux/generic/syscalls.list | 32 - ports/sysdeps/unix/sysv/linux/generic/sysctl.c | 32 - ports/sysdeps/unix/sysv/linux/generic/sysdep.h | 41 - ports/sysdeps/unix/sysv/linux/generic/umount.c | 30 - ports/sysdeps/unix/sysv/linux/generic/unlink.c | 31 - ports/sysdeps/unix/sysv/linux/generic/ustat.c | 32 - ports/sysdeps/unix/sysv/linux/generic/utimes.c | 45 - .../unix/sysv/linux/generic/wordsize-32/Versions | 5 - .../unix/sysv/linux/generic/wordsize-32/fcntl.c | 87 - .../unix/sysv/linux/generic/wordsize-32/fstatfs.c | 32 - .../sysv/linux/generic/wordsize-32/ftruncate.c | 31 - .../sysv/linux/generic/wordsize-32/ftruncate64.c | 32 - .../unix/sysv/linux/generic/wordsize-32/fxstat.c | 45 - .../unix/sysv/linux/generic/wordsize-32/fxstatat.c | 45 - .../unix/sysv/linux/generic/wordsize-32/getdents.c | 115 - .../unix/sysv/linux/generic/wordsize-32/llseek.c | 46 - .../unix/sysv/linux/generic/wordsize-32/lseek.c | 38 - .../unix/sysv/linux/generic/wordsize-32/lxstat.c | 43 - .../unix/sysv/linux/generic/wordsize-32/lxstat64.c | 38 - .../unix/sysv/linux/generic/wordsize-32/mmap.c | 40 - .../unix/sysv/linux/generic/wordsize-32/overflow.h | 60 - .../sysv/linux/generic/wordsize-32/posix_fadvise.c | 37 - .../unix/sysv/linux/generic/wordsize-32/pread.c | 58 - .../unix/sysv/linux/generic/wordsize-32/pread64.c | 58 - .../unix/sysv/linux/generic/wordsize-32/preadv.c | 55 - .../unix/sysv/linux/generic/wordsize-32/preadv64.c | 56 - .../unix/sysv/linux/generic/wordsize-32/pwrite.c | 59 - .../unix/sysv/linux/generic/wordsize-32/pwrite64.c | 59 - .../unix/sysv/linux/generic/wordsize-32/pwritev.c | 56 - .../sysv/linux/generic/wordsize-32/pwritev64.c | 57 - .../unix/sysv/linux/generic/wordsize-32/sendfile.c | 45 - .../unix/sysv/linux/generic/wordsize-32/statfs.c | 33 - .../sysv/linux/generic/wordsize-32/syscalls.list | 7 - .../unix/sysv/linux/generic/wordsize-32/truncate.c | 31 - .../sysv/linux/generic/wordsize-32/truncate64.c | 31 - .../unix/sysv/linux/generic/wordsize-32/xstat.c | 43 - .../unix/sysv/linux/generic/wordsize-32/xstat64.c | 38 - ports/sysdeps/unix/sysv/linux/generic/xmknod.c | 54 - ports/sysdeps/unix/sysv/linux/generic/xstat.c | 48 - ports/sysdeps/unix/sysv/linux/tile/Makefile | 25 - ports/sysdeps/unix/sysv/linux/tile/Versions | 17 - .../unix/sysv/linux/tile/bits/environments.h | 100 - .../sysdeps/unix/sysv/linux/tile/bits/libc-vdso.h | 30 - .../sysdeps/unix/sysv/linux/tile/bits/local_lim.h | 100 - ports/sysdeps/unix/sysv/linux/tile/bits/mman.h | 40 - .../sysdeps/unix/sysv/linux/tile/bits/sigaction.h | 77 - ports/sysdeps/unix/sysv/linux/tile/bits/siginfo.h | 341 -- ports/sysdeps/unix/sysv/linux/tile/cacheflush.c | 34 - ports/sysdeps/unix/sysv/linux/tile/configure | 4 - ports/sysdeps/unix/sysv/linux/tile/configure.ac | 4 - ports/sysdeps/unix/sysv/linux/tile/dl-static.c | 84 - ports/sysdeps/unix/sysv/linux/tile/getcontext.S | 95 - ports/sysdeps/unix/sysv/linux/tile/gettimeofday.c | 37 - ports/sysdeps/unix/sysv/linux/tile/init-first.c | 34 - .../sysdeps/unix/sysv/linux/tile/kernel-features.h | 35 - ports/sysdeps/unix/sysv/linux/tile/ldsodefs.h | 32 - ports/sysdeps/unix/sysv/linux/tile/makecontext.c | 67 - ports/sysdeps/unix/sysv/linux/tile/nptl/Makefile | 2 - .../unix/sysv/linux/tile/nptl/bits/pthreadtypes.h | 223 - .../unix/sysv/linux/tile/nptl/bits/semaphore.h | 41 - ports/sysdeps/unix/sysv/linux/tile/nptl/clone.S | 221 - .../unix/sysv/linux/tile/nptl/createthread.c | 24 - ports/sysdeps/unix/sysv/linux/tile/nptl/fork.c | 31 - .../unix/sysv/linux/tile/nptl/lowlevellock.h | 321 -- ports/sysdeps/unix/sysv/linux/tile/nptl/pt-vfork.S | 2 - .../unix/sysv/linux/tile/nptl/pthread_once.c | 94 - .../unix/sysv/linux/tile/nptl/sysdep-cancel.h | 154 - ports/sysdeps/unix/sysv/linux/tile/nptl/vfork.S | 80 - ports/sysdeps/unix/sysv/linux/tile/nptl/waitpid.S | 20 - .../sysdeps/unix/sysv/linux/tile/profil-counter.h | 26 - ports/sysdeps/unix/sysv/linux/tile/set_dataplane.c | 36 - ports/sysdeps/unix/sysv/linux/tile/setcontext.S | 204 - .../sysdeps/unix/sysv/linux/tile/sigcontextinfo.h | 27 - ports/sysdeps/unix/sysv/linux/tile/swapcontext.S | 89 - ports/sysdeps/unix/sysv/linux/tile/sys/cachectl.h | 36 - ports/sysdeps/unix/sysv/linux/tile/sys/dataplane.h | 33 - ports/sysdeps/unix/sysv/linux/tile/sys/procfs.h | 128 - ports/sysdeps/unix/sysv/linux/tile/sys/ptrace.h | 183 - ports/sysdeps/unix/sysv/linux/tile/sys/reg.h | 2 - ports/sysdeps/unix/sysv/linux/tile/sys/ucontext.h | 70 - ports/sysdeps/unix/sysv/linux/tile/sys/user.h | 1 - ports/sysdeps/unix/sysv/linux/tile/syscall.S | 32 - ports/sysdeps/unix/sysv/linux/tile/sysdep.c | 33 - ports/sysdeps/unix/sysv/linux/tile/sysdep.h | 223 - ports/sysdeps/unix/sysv/linux/tile/tilegx/Makefile | 6 - .../sysdeps/unix/sysv/linux/tile/tilegx/configure | 4 - .../unix/sysv/linux/tile/tilegx/configure.ac | 4 - ports/sysdeps/unix/sysv/linux/tile/tilegx/ioctl.S | 41 - .../sysdeps/unix/sysv/linux/tile/tilegx/ldconfig.h | 26 - .../unix/sysv/linux/tile/tilegx/ldd-rewrite.sed | 1 - .../unix/sysv/linux/tile/tilegx/register-dump.h | 123 - .../unix/sysv/linux/tile/tilegx/sched_getcpu.c | 87 - .../unix/sysv/linux/tile/tilegx/tilegx32/Implies | 4 - .../unix/sysv/linux/tile/tilegx/tilegx32/Makefile | 1 - .../linux/tile/tilegx/tilegx32/nptl/c++-types.data | 67 - .../linux/tile/tilegx/tilegx32/nptl/ld.abilist | 11 - .../tilegx/tilegx32/nptl/libBrokenLocale.abilist | 3 - .../linux/tile/tilegx/tilegx32/nptl/libanl.abilist | 6 - .../linux/tile/tilegx/tilegx32/nptl/libc.abilist | 2093 -------- .../tile/tilegx/tilegx32/nptl/libcrypt.abilist | 9 - .../linux/tile/tilegx/tilegx32/nptl/libdl.abilist | 11 - .../linux/tile/tilegx/tilegx32/nptl/libm.abilist | 373 -- .../linux/tile/tilegx/tilegx32/nptl/libnsl.abilist | 123 - .../tile/tilegx/tilegx32/nptl/libpthread.abilist | 228 - .../tile/tilegx/tilegx32/nptl/libresolv.abilist | 93 - .../linux/tile/tilegx/tilegx32/nptl/librt.abilist | 42 - .../tile/tilegx/tilegx32/nptl/libthread_db.abilist | 42 - .../tile/tilegx/tilegx32/nptl/libutil.abilist | 8 - .../unix/sysv/linux/tile/tilegx/tilegx64/Implies | 4 - .../unix/sysv/linux/tile/tilegx/tilegx64/Makefile | 1 - .../linux/tile/tilegx/tilegx64/nptl/c++-types.data | 67 - .../linux/tile/tilegx/tilegx64/nptl/ld.abilist | 11 - .../tilegx/tilegx64/nptl/libBrokenLocale.abilist | 3 - .../linux/tile/tilegx/tilegx64/nptl/libanl.abilist | 6 - .../linux/tile/tilegx/tilegx64/nptl/libc.abilist | 2093 -------- .../tile/tilegx/tilegx64/nptl/libcrypt.abilist | 9 - .../linux/tile/tilegx/tilegx64/nptl/libdl.abilist | 11 - .../linux/tile/tilegx/tilegx64/nptl/libm.abilist | 373 -- .../linux/tile/tilegx/tilegx64/nptl/libnsl.abilist | 123 - .../tile/tilegx/tilegx64/nptl/libpthread.abilist | 228 - .../tile/tilegx/tilegx64/nptl/libresolv.abilist | 93 - .../linux/tile/tilegx/tilegx64/nptl/librt.abilist | 42 - .../tile/tilegx/tilegx64/nptl/libthread_db.abilist | 42 - .../tile/tilegx/tilegx64/nptl/libutil.abilist | 8 - ports/sysdeps/unix/sysv/linux/tile/tilepro/Implies | 3 - .../unix/sysv/linux/tile/tilepro/ldconfig.h | 25 - .../sysv/linux/tile/tilepro/nptl/c++-types.data | 67 - .../unix/sysv/linux/tile/tilepro/nptl/ld.abilist | 11 - .../tile/tilepro/nptl/libBrokenLocale.abilist | 3 - .../sysv/linux/tile/tilepro/nptl/libanl.abilist | 6 - .../unix/sysv/linux/tile/tilepro/nptl/libc.abilist | 2093 -------- .../sysv/linux/tile/tilepro/nptl/libcrypt.abilist | 9 - .../sysv/linux/tile/tilepro/nptl/libdl.abilist | 11 - .../unix/sysv/linux/tile/tilepro/nptl/libm.abilist | 373 -- .../sysv/linux/tile/tilepro/nptl/libnsl.abilist | 123 - .../linux/tile/tilepro/nptl/libpthread.abilist | 228 - .../sysv/linux/tile/tilepro/nptl/libresolv.abilist | 93 - .../sysv/linux/tile/tilepro/nptl/librt.abilist | 42 - .../linux/tile/tilepro/nptl/libthread_db.abilist | 42 - .../sysv/linux/tile/tilepro/nptl/libutil.abilist | 8 - .../unix/sysv/linux/tile/tilepro/register-dump.h | 111 - ports/sysdeps/unix/sysv/linux/tile/ucontext_i.h | 42 - sysdeps/tile/Implies | 2 + sysdeps/tile/Makefile | 13 + sysdeps/tile/Versions | 6 + sysdeps/tile/__longjmp.S | 57 + sysdeps/tile/__tls_get_addr.S | 152 + sysdeps/tile/_mcount.S | 87 + sysdeps/tile/abort-instr.h | 2 + sysdeps/tile/backtrace.c | 1 + sysdeps/tile/bits/atomic.h | 86 + sysdeps/tile/bits/byteswap.h | 37 + sysdeps/tile/bits/endian.h | 11 + sysdeps/tile/bits/fenv.h | 45 + sysdeps/tile/bits/link.h | 57 + sysdeps/tile/bits/mathdef.h | 48 + sysdeps/tile/bits/mathinline.h | 44 + sysdeps/tile/bits/setjmp.h | 36 + sysdeps/tile/bsd-_setjmp.S | 1 + sysdeps/tile/bsd-setjmp.S | 1 + sysdeps/tile/bzero.S | 30 + sysdeps/tile/crti.S | 124 + sysdeps/tile/crtn.S | 55 + sysdeps/tile/dl-lookupcfg.h | 27 + sysdeps/tile/dl-machine.h | 913 ++++ sysdeps/tile/dl-runtime.c | 158 + sysdeps/tile/dl-start.S | 114 + sysdeps/tile/dl-tls.c | 27 + sysdeps/tile/dl-tls.h | 45 + sysdeps/tile/dl-trampoline.S | 193 + sysdeps/tile/ffs.c | 45 + sysdeps/tile/ffsll.c | 1 + sysdeps/tile/gccframe.h | 21 + sysdeps/tile/jmpbuf-offsets.h | 62 + sysdeps/tile/jmpbuf-unwind.h | 48 + sysdeps/tile/ldsodefs.h | 40 + sysdeps/tile/libm-test-ulps | 5460 ++++++++++++++++++++ sysdeps/tile/machine-gmon.h | 25 + sysdeps/tile/math_private.h | 31 + sysdeps/tile/memcopy.h | 27 + sysdeps/tile/nptl/Makefile | 20 + sysdeps/tile/nptl/pthread_spin_lock.c | 56 + sysdeps/tile/nptl/pthread_spin_trylock.c | 32 + sysdeps/tile/nptl/pthread_spin_unlock.c | 33 + sysdeps/tile/nptl/pthreaddef.h | 41 + sysdeps/tile/nptl/tcb-offsets.sym | 17 + sysdeps/tile/nptl/tls.h | 194 + sysdeps/tile/preconfigure | 17 + sysdeps/tile/s_fma.c | 1 + sysdeps/tile/s_fmaf.c | 1 + sysdeps/tile/setjmp.S | 46 + sysdeps/tile/sfp-machine.h | 97 + sysdeps/tile/shlib-versions | 2 + sysdeps/tile/sotruss-lib.c | 49 + sysdeps/tile/stackguard-macros.h | 20 + sysdeps/tile/stackinfo.h | 48 + sysdeps/tile/start.S | 203 + sysdeps/tile/sysdep.h | 110 + sysdeps/tile/tilegx/Makefile | 35 + sysdeps/tile/tilegx/bits/atomic.h | 49 + sysdeps/tile/tilegx/bits/wordsize.h | 8 + sysdeps/tile/tilegx/memchr.c | 73 + sysdeps/tile/tilegx/memcpy.c | 272 + sysdeps/tile/tilegx/memmove.c | 22 + sysdeps/tile/tilegx/memset.c | 151 + sysdeps/tile/tilegx/memusage.h | 31 + sysdeps/tile/tilegx/rawmemchr.c | 45 + sysdeps/tile/tilegx/strchr.c | 67 + sysdeps/tile/tilegx/strchrnul.c | 64 + sysdeps/tile/tilegx/string-endian.h | 47 + sysdeps/tile/tilegx/strlen.c | 39 + sysdeps/tile/tilegx/strrchr.c | 68 + sysdeps/tile/tilegx/tilegx32/Implies | 3 + sysdeps/tile/tilegx/tilegx64/Implies | 3 + sysdeps/tile/tilepro/Implies | 2 + sysdeps/tile/tilepro/bits/atomic.h | 81 + sysdeps/tile/tilepro/bits/wordsize.h | 3 + sysdeps/tile/tilepro/memchr.c | 72 + sysdeps/tile/tilepro/memcpy.S | 397 ++ sysdeps/tile/tilepro/memset.c | 151 + sysdeps/tile/tilepro/memusage.h | 29 + sysdeps/tile/tilepro/rawmemchr.c | 45 + sysdeps/tile/tilepro/strchr.c | 68 + sysdeps/tile/tilepro/strchrnul.c | 65 + sysdeps/tile/tilepro/strlen.c | 39 + sysdeps/tile/tilepro/strrchr.c | 73 + sysdeps/tile/tls-macros.h | 84 + sysdeps/tile/tst-audit.h | 23 + sysdeps/tile/wordcopy.c | 449 ++ sysdeps/unix/sysv/linux/generic/Makefile | 3 + sysdeps/unix/sysv/linux/generic/____longjmp_chk.c | 57 + sysdeps/unix/sysv/linux/generic/access.c | 31 + sysdeps/unix/sysv/linux/generic/bits/fcntl.h | 56 + sysdeps/unix/sysv/linux/generic/bits/msq.h | 84 + sysdeps/unix/sysv/linux/generic/bits/sem.h | 92 + sysdeps/unix/sysv/linux/generic/bits/shm.h | 111 + sysdeps/unix/sysv/linux/generic/bits/stat.h | 171 + sysdeps/unix/sysv/linux/generic/bits/statfs.h | 86 + sysdeps/unix/sysv/linux/generic/bits/typesizes.h | 78 + sysdeps/unix/sysv/linux/generic/brk.c | 45 + sysdeps/unix/sysv/linux/generic/chmod.c | 31 + sysdeps/unix/sysv/linux/generic/chown.c | 32 + sysdeps/unix/sysv/linux/generic/creat.c | 38 + sysdeps/unix/sysv/linux/generic/dl-origin.c | 81 + sysdeps/unix/sysv/linux/generic/dup2.c | 37 + sysdeps/unix/sysv/linux/generic/epoll_create.c | 38 + sysdeps/unix/sysv/linux/generic/epoll_wait.c | 28 + sysdeps/unix/sysv/linux/generic/futimesat.c | 52 + sysdeps/unix/sysv/linux/generic/getdents.c | 1 + sysdeps/unix/sysv/linux/generic/getdents64.c | 37 + sysdeps/unix/sysv/linux/generic/inotify_init.c | 32 + sysdeps/unix/sysv/linux/generic/kernel_stat.h | 26 + sysdeps/unix/sysv/linux/generic/lchown.c | 32 + sysdeps/unix/sysv/linux/generic/link.c | 31 + sysdeps/unix/sysv/linux/generic/lxstat.c | 48 + sysdeps/unix/sysv/linux/generic/mkdir.c | 33 + sysdeps/unix/sysv/linux/generic/not-cancel.h | 34 + sysdeps/unix/sysv/linux/generic/nptl/not-cancel.h | 1 + sysdeps/unix/sysv/linux/generic/open.c | 71 + sysdeps/unix/sysv/linux/generic/open64.c | 55 + sysdeps/unix/sysv/linux/generic/pause.c | 63 + sysdeps/unix/sysv/linux/generic/pipe.c | 33 + sysdeps/unix/sysv/linux/generic/poll.c | 53 + sysdeps/unix/sysv/linux/generic/readlink.c | 31 + sysdeps/unix/sysv/linux/generic/readlink_chk.c | 39 + sysdeps/unix/sysv/linux/generic/recv.c | 45 + sysdeps/unix/sysv/linux/generic/rename.c | 29 + sysdeps/unix/sysv/linux/generic/rmdir.c | 31 + sysdeps/unix/sysv/linux/generic/select.c | 74 + sysdeps/unix/sysv/linux/generic/send.c | 43 + sysdeps/unix/sysv/linux/generic/symlink.c | 30 + sysdeps/unix/sysv/linux/generic/syscalls.list | 32 + sysdeps/unix/sysv/linux/generic/sysctl.c | 32 + sysdeps/unix/sysv/linux/generic/sysdep.h | 41 + sysdeps/unix/sysv/linux/generic/umount.c | 30 + sysdeps/unix/sysv/linux/generic/unlink.c | 31 + sysdeps/unix/sysv/linux/generic/ustat.c | 32 + sysdeps/unix/sysv/linux/generic/utimes.c | 45 + .../unix/sysv/linux/generic/wordsize-32/Versions | 5 + .../unix/sysv/linux/generic/wordsize-32/fcntl.c | 87 + .../unix/sysv/linux/generic/wordsize-32/fstatfs.c | 32 + .../sysv/linux/generic/wordsize-32/ftruncate.c | 31 + .../sysv/linux/generic/wordsize-32/ftruncate64.c | 32 + .../unix/sysv/linux/generic/wordsize-32/fxstat.c | 45 + .../unix/sysv/linux/generic/wordsize-32/fxstatat.c | 45 + .../unix/sysv/linux/generic/wordsize-32/getdents.c | 115 + .../unix/sysv/linux/generic/wordsize-32/llseek.c | 46 + .../unix/sysv/linux/generic/wordsize-32/lseek.c | 38 + .../unix/sysv/linux/generic/wordsize-32/lxstat.c | 43 + .../unix/sysv/linux/generic/wordsize-32/lxstat64.c | 38 + sysdeps/unix/sysv/linux/generic/wordsize-32/mmap.c | 40 + .../unix/sysv/linux/generic/wordsize-32/overflow.h | 60 + .../sysv/linux/generic/wordsize-32/posix_fadvise.c | 37 + .../unix/sysv/linux/generic/wordsize-32/pread.c | 58 + .../unix/sysv/linux/generic/wordsize-32/pread64.c | 58 + .../unix/sysv/linux/generic/wordsize-32/preadv.c | 55 + .../unix/sysv/linux/generic/wordsize-32/preadv64.c | 56 + .../unix/sysv/linux/generic/wordsize-32/pwrite.c | 59 + .../unix/sysv/linux/generic/wordsize-32/pwrite64.c | 59 + .../unix/sysv/linux/generic/wordsize-32/pwritev.c | 56 + .../sysv/linux/generic/wordsize-32/pwritev64.c | 57 + .../unix/sysv/linux/generic/wordsize-32/sendfile.c | 45 + .../unix/sysv/linux/generic/wordsize-32/statfs.c | 33 + .../sysv/linux/generic/wordsize-32/syscalls.list | 7 + .../unix/sysv/linux/generic/wordsize-32/truncate.c | 31 + .../sysv/linux/generic/wordsize-32/truncate64.c | 31 + .../unix/sysv/linux/generic/wordsize-32/xstat.c | 43 + .../unix/sysv/linux/generic/wordsize-32/xstat64.c | 38 + sysdeps/unix/sysv/linux/generic/xmknod.c | 54 + sysdeps/unix/sysv/linux/generic/xstat.c | 48 + sysdeps/unix/sysv/linux/tile/Makefile | 25 + sysdeps/unix/sysv/linux/tile/Versions | 17 + sysdeps/unix/sysv/linux/tile/bits/environments.h | 100 + sysdeps/unix/sysv/linux/tile/bits/libc-vdso.h | 30 + sysdeps/unix/sysv/linux/tile/bits/local_lim.h | 100 + sysdeps/unix/sysv/linux/tile/bits/mman.h | 40 + sysdeps/unix/sysv/linux/tile/bits/sigaction.h | 77 + sysdeps/unix/sysv/linux/tile/bits/siginfo.h | 341 ++ sysdeps/unix/sysv/linux/tile/cacheflush.c | 34 + sysdeps/unix/sysv/linux/tile/configure | 4 + sysdeps/unix/sysv/linux/tile/configure.ac | 4 + sysdeps/unix/sysv/linux/tile/dl-static.c | 84 + sysdeps/unix/sysv/linux/tile/getcontext.S | 95 + sysdeps/unix/sysv/linux/tile/gettimeofday.c | 37 + sysdeps/unix/sysv/linux/tile/init-first.c | 34 + sysdeps/unix/sysv/linux/tile/kernel-features.h | 35 + sysdeps/unix/sysv/linux/tile/ldsodefs.h | 32 + sysdeps/unix/sysv/linux/tile/makecontext.c | 67 + sysdeps/unix/sysv/linux/tile/nptl/Makefile | 2 + .../unix/sysv/linux/tile/nptl/bits/pthreadtypes.h | 223 + sysdeps/unix/sysv/linux/tile/nptl/bits/semaphore.h | 41 + sysdeps/unix/sysv/linux/tile/nptl/clone.S | 221 + sysdeps/unix/sysv/linux/tile/nptl/createthread.c | 24 + sysdeps/unix/sysv/linux/tile/nptl/fork.c | 31 + sysdeps/unix/sysv/linux/tile/nptl/lowlevellock.h | 321 ++ sysdeps/unix/sysv/linux/tile/nptl/pt-vfork.S | 2 + sysdeps/unix/sysv/linux/tile/nptl/pthread_once.c | 94 + sysdeps/unix/sysv/linux/tile/nptl/sysdep-cancel.h | 154 + sysdeps/unix/sysv/linux/tile/nptl/vfork.S | 80 + sysdeps/unix/sysv/linux/tile/nptl/waitpid.S | 20 + sysdeps/unix/sysv/linux/tile/profil-counter.h | 26 + sysdeps/unix/sysv/linux/tile/set_dataplane.c | 36 + sysdeps/unix/sysv/linux/tile/setcontext.S | 204 + sysdeps/unix/sysv/linux/tile/sigcontextinfo.h | 27 + sysdeps/unix/sysv/linux/tile/swapcontext.S | 89 + sysdeps/unix/sysv/linux/tile/sys/cachectl.h | 36 + sysdeps/unix/sysv/linux/tile/sys/dataplane.h | 33 + sysdeps/unix/sysv/linux/tile/sys/procfs.h | 128 + sysdeps/unix/sysv/linux/tile/sys/ptrace.h | 183 + sysdeps/unix/sysv/linux/tile/sys/reg.h | 2 + sysdeps/unix/sysv/linux/tile/sys/ucontext.h | 70 + sysdeps/unix/sysv/linux/tile/sys/user.h | 1 + sysdeps/unix/sysv/linux/tile/syscall.S | 32 + sysdeps/unix/sysv/linux/tile/sysdep.c | 33 + sysdeps/unix/sysv/linux/tile/sysdep.h | 223 + sysdeps/unix/sysv/linux/tile/tilegx/Makefile | 6 + sysdeps/unix/sysv/linux/tile/tilegx/configure | 4 + sysdeps/unix/sysv/linux/tile/tilegx/configure.ac | 4 + sysdeps/unix/sysv/linux/tile/tilegx/ioctl.S | 41 + sysdeps/unix/sysv/linux/tile/tilegx/ldconfig.h | 26 + .../unix/sysv/linux/tile/tilegx/ldd-rewrite.sed | 1 + .../unix/sysv/linux/tile/tilegx/register-dump.h | 123 + sysdeps/unix/sysv/linux/tile/tilegx/sched_getcpu.c | 87 + .../unix/sysv/linux/tile/tilegx/tilegx32/Implies | 4 + .../unix/sysv/linux/tile/tilegx/tilegx32/Makefile | 1 + .../linux/tile/tilegx/tilegx32/nptl/c++-types.data | 67 + .../linux/tile/tilegx/tilegx32/nptl/ld.abilist | 11 + .../tilegx/tilegx32/nptl/libBrokenLocale.abilist | 3 + .../linux/tile/tilegx/tilegx32/nptl/libanl.abilist | 6 + .../linux/tile/tilegx/tilegx32/nptl/libc.abilist | 2093 ++++++++ .../tile/tilegx/tilegx32/nptl/libcrypt.abilist | 9 + .../linux/tile/tilegx/tilegx32/nptl/libdl.abilist | 11 + .../linux/tile/tilegx/tilegx32/nptl/libm.abilist | 373 ++ .../linux/tile/tilegx/tilegx32/nptl/libnsl.abilist | 123 + .../tile/tilegx/tilegx32/nptl/libpthread.abilist | 228 + .../tile/tilegx/tilegx32/nptl/libresolv.abilist | 93 + .../linux/tile/tilegx/tilegx32/nptl/librt.abilist | 42 + .../tile/tilegx/tilegx32/nptl/libthread_db.abilist | 42 + .../tile/tilegx/tilegx32/nptl/libutil.abilist | 8 + .../unix/sysv/linux/tile/tilegx/tilegx64/Implies | 4 + .../unix/sysv/linux/tile/tilegx/tilegx64/Makefile | 1 + .../linux/tile/tilegx/tilegx64/nptl/c++-types.data | 67 + .../linux/tile/tilegx/tilegx64/nptl/ld.abilist | 11 + .../tilegx/tilegx64/nptl/libBrokenLocale.abilist | 3 + .../linux/tile/tilegx/tilegx64/nptl/libanl.abilist | 6 + .../linux/tile/tilegx/tilegx64/nptl/libc.abilist | 2093 ++++++++ .../tile/tilegx/tilegx64/nptl/libcrypt.abilist | 9 + .../linux/tile/tilegx/tilegx64/nptl/libdl.abilist | 11 + .../linux/tile/tilegx/tilegx64/nptl/libm.abilist | 373 ++ .../linux/tile/tilegx/tilegx64/nptl/libnsl.abilist | 123 + .../tile/tilegx/tilegx64/nptl/libpthread.abilist | 228 + .../tile/tilegx/tilegx64/nptl/libresolv.abilist | 93 + .../linux/tile/tilegx/tilegx64/nptl/librt.abilist | 42 + .../tile/tilegx/tilegx64/nptl/libthread_db.abilist | 42 + .../tile/tilegx/tilegx64/nptl/libutil.abilist | 8 + sysdeps/unix/sysv/linux/tile/tilepro/Implies | 3 + sysdeps/unix/sysv/linux/tile/tilepro/ldconfig.h | 25 + .../sysv/linux/tile/tilepro/nptl/c++-types.data | 67 + .../unix/sysv/linux/tile/tilepro/nptl/ld.abilist | 11 + .../tile/tilepro/nptl/libBrokenLocale.abilist | 3 + .../sysv/linux/tile/tilepro/nptl/libanl.abilist | 6 + .../unix/sysv/linux/tile/tilepro/nptl/libc.abilist | 2093 ++++++++ .../sysv/linux/tile/tilepro/nptl/libcrypt.abilist | 9 + .../sysv/linux/tile/tilepro/nptl/libdl.abilist | 11 + .../unix/sysv/linux/tile/tilepro/nptl/libm.abilist | 373 ++ .../sysv/linux/tile/tilepro/nptl/libnsl.abilist | 123 + .../linux/tile/tilepro/nptl/libpthread.abilist | 228 + .../sysv/linux/tile/tilepro/nptl/libresolv.abilist | 93 + .../sysv/linux/tile/tilepro/nptl/librt.abilist | 42 + .../linux/tile/tilepro/nptl/libthread_db.abilist | 42 + .../sysv/linux/tile/tilepro/nptl/libutil.abilist | 8 + .../unix/sysv/linux/tile/tilepro/register-dump.h | 111 + sysdeps/unix/sysv/linux/tile/ucontext_i.h | 42 + 546 files changed, 28763 insertions(+), 28729 deletions(-) delete mode 100644 ports/sysdeps/tile/Implies delete mode 100644 ports/sysdeps/tile/Makefile delete mode 100644 ports/sysdeps/tile/Versions delete mode 100644 ports/sysdeps/tile/__longjmp.S delete mode 100644 ports/sysdeps/tile/__tls_get_addr.S delete mode 100644 ports/sysdeps/tile/_mcount.S delete mode 100644 ports/sysdeps/tile/abort-instr.h delete mode 100644 ports/sysdeps/tile/backtrace.c delete mode 100644 ports/sysdeps/tile/bits/atomic.h delete mode 100644 ports/sysdeps/tile/bits/byteswap.h delete mode 100644 ports/sysdeps/tile/bits/endian.h delete mode 100644 ports/sysdeps/tile/bits/fenv.h delete mode 100644 ports/sysdeps/tile/bits/link.h delete mode 100644 ports/sysdeps/tile/bits/mathdef.h delete mode 100644 ports/sysdeps/tile/bits/mathinline.h delete mode 100644 ports/sysdeps/tile/bits/setjmp.h delete mode 100644 ports/sysdeps/tile/bsd-_setjmp.S delete mode 100644 ports/sysdeps/tile/bsd-setjmp.S delete mode 100644 ports/sysdeps/tile/bzero.S delete mode 100644 ports/sysdeps/tile/crti.S delete mode 100644 ports/sysdeps/tile/crtn.S delete mode 100644 ports/sysdeps/tile/dl-lookupcfg.h delete mode 100644 ports/sysdeps/tile/dl-machine.h delete mode 100644 ports/sysdeps/tile/dl-runtime.c delete mode 100644 ports/sysdeps/tile/dl-start.S delete mode 100644 ports/sysdeps/tile/dl-tls.c delete mode 100644 ports/sysdeps/tile/dl-tls.h delete mode 100644 ports/sysdeps/tile/dl-trampoline.S delete mode 100644 ports/sysdeps/tile/ffs.c delete mode 100644 ports/sysdeps/tile/ffsll.c delete mode 100644 ports/sysdeps/tile/gccframe.h delete mode 100644 ports/sysdeps/tile/jmpbuf-offsets.h delete mode 100644 ports/sysdeps/tile/jmpbuf-unwind.h delete mode 100644 ports/sysdeps/tile/ldsodefs.h delete mode 100644 ports/sysdeps/tile/libm-test-ulps delete mode 100644 ports/sysdeps/tile/machine-gmon.h delete mode 100644 ports/sysdeps/tile/math_private.h delete mode 100644 ports/sysdeps/tile/memcopy.h delete mode 100644 ports/sysdeps/tile/nptl/Makefile delete mode 100644 ports/sysdeps/tile/nptl/pthread_spin_lock.c delete mode 100644 ports/sysdeps/tile/nptl/pthread_spin_trylock.c delete mode 100644 ports/sysdeps/tile/nptl/pthread_spin_unlock.c delete mode 100644 ports/sysdeps/tile/nptl/pthreaddef.h delete mode 100644 ports/sysdeps/tile/nptl/tcb-offsets.sym delete mode 100644 ports/sysdeps/tile/nptl/tls.h delete mode 100644 ports/sysdeps/tile/preconfigure delete mode 100644 ports/sysdeps/tile/s_fma.c delete mode 100644 ports/sysdeps/tile/s_fmaf.c delete mode 100644 ports/sysdeps/tile/setjmp.S delete mode 100644 ports/sysdeps/tile/sfp-machine.h delete mode 100644 ports/sysdeps/tile/shlib-versions delete mode 100644 ports/sysdeps/tile/sotruss-lib.c delete mode 100644 ports/sysdeps/tile/stackguard-macros.h delete mode 100644 ports/sysdeps/tile/stackinfo.h delete mode 100644 ports/sysdeps/tile/start.S delete mode 100644 ports/sysdeps/tile/sysdep.h delete mode 100644 ports/sysdeps/tile/tilegx/Makefile delete mode 100644 ports/sysdeps/tile/tilegx/bits/atomic.h delete mode 100644 ports/sysdeps/tile/tilegx/bits/wordsize.h delete mode 100644 ports/sysdeps/tile/tilegx/memchr.c delete mode 100644 ports/sysdeps/tile/tilegx/memcpy.c delete mode 100644 ports/sysdeps/tile/tilegx/memmove.c delete mode 100644 ports/sysdeps/tile/tilegx/memset.c delete mode 100644 ports/sysdeps/tile/tilegx/memusage.h delete mode 100644 ports/sysdeps/tile/tilegx/rawmemchr.c delete mode 100644 ports/sysdeps/tile/tilegx/strchr.c delete mode 100644 ports/sysdeps/tile/tilegx/strchrnul.c delete mode 100644 ports/sysdeps/tile/tilegx/string-endian.h delete mode 100644 ports/sysdeps/tile/tilegx/strlen.c delete mode 100644 ports/sysdeps/tile/tilegx/strrchr.c delete mode 100644 ports/sysdeps/tile/tilegx/tilegx32/Implies delete mode 100644 ports/sysdeps/tile/tilegx/tilegx64/Implies delete mode 100644 ports/sysdeps/tile/tilepro/Implies delete mode 100644 ports/sysdeps/tile/tilepro/bits/atomic.h delete mode 100644 ports/sysdeps/tile/tilepro/bits/wordsize.h delete mode 100644 ports/sysdeps/tile/tilepro/memchr.c delete mode 100644 ports/sysdeps/tile/tilepro/memcpy.S delete mode 100644 ports/sysdeps/tile/tilepro/memset.c delete mode 100644 ports/sysdeps/tile/tilepro/memusage.h delete mode 100644 ports/sysdeps/tile/tilepro/rawmemchr.c delete mode 100644 ports/sysdeps/tile/tilepro/strchr.c delete mode 100644 ports/sysdeps/tile/tilepro/strchrnul.c delete mode 100644 ports/sysdeps/tile/tilepro/strlen.c delete mode 100644 ports/sysdeps/tile/tilepro/strrchr.c delete mode 100644 ports/sysdeps/tile/tls-macros.h delete mode 100644 ports/sysdeps/tile/tst-audit.h delete mode 100644 ports/sysdeps/tile/wordcopy.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/Makefile delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/____longjmp_chk.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/access.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/bits/fcntl.h delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/bits/msq.h delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/bits/sem.h delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/bits/shm.h delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/bits/stat.h delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/bits/statfs.h delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/bits/typesizes.h delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/brk.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/chmod.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/chown.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/creat.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/dl-origin.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/dup2.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/epoll_create.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/epoll_wait.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/futimesat.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/getdents.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/getdents64.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/inotify_init.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/kernel_stat.h delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/lchown.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/link.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/lxstat.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/mkdir.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/not-cancel.h delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/nptl/not-cancel.h delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/open.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/open64.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/pause.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/pipe.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/poll.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/readlink.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/readlink_chk.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/recv.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/rename.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/rmdir.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/select.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/send.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/symlink.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/syscalls.list delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/sysctl.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/sysdep.h delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/umount.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/unlink.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/ustat.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/utimes.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/wordsize-32/Versions delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/wordsize-32/fcntl.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/wordsize-32/fstatfs.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/wordsize-32/ftruncate.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/wordsize-32/ftruncate64.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/wordsize-32/fxstat.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/wordsize-32/fxstatat.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/wordsize-32/getdents.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/wordsize-32/llseek.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/wordsize-32/lseek.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/wordsize-32/lxstat.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/wordsize-32/lxstat64.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/wordsize-32/mmap.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/wordsize-32/overflow.h delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/wordsize-32/posix_fadvise.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/wordsize-32/pread.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/wordsize-32/pread64.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/wordsize-32/preadv.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/wordsize-32/preadv64.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite64.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/wordsize-32/pwritev.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/wordsize-32/pwritev64.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/wordsize-32/sendfile.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/wordsize-32/statfs.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/wordsize-32/syscalls.list delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/wordsize-32/truncate.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/wordsize-32/truncate64.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/wordsize-32/xstat.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/wordsize-32/xstat64.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/xmknod.c delete mode 100644 ports/sysdeps/unix/sysv/linux/generic/xstat.c delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/Makefile delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/Versions delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/bits/environments.h delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/bits/libc-vdso.h delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/bits/local_lim.h delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/bits/mman.h delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/bits/sigaction.h delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/bits/siginfo.h delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/cacheflush.c delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/configure delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/configure.ac delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/dl-static.c delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/getcontext.S delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/gettimeofday.c delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/init-first.c delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/kernel-features.h delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/ldsodefs.h delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/makecontext.c delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/nptl/Makefile delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/nptl/bits/pthreadtypes.h delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/nptl/bits/semaphore.h delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/nptl/clone.S delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/nptl/createthread.c delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/nptl/fork.c delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/nptl/lowlevellock.h delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/nptl/pt-vfork.S delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/nptl/pthread_once.c delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/nptl/sysdep-cancel.h delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/nptl/vfork.S delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/nptl/waitpid.S delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/profil-counter.h delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/set_dataplane.c delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/setcontext.S delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/sigcontextinfo.h delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/swapcontext.S delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/sys/cachectl.h delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/sys/dataplane.h delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/sys/procfs.h delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/sys/ptrace.h delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/sys/reg.h delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/sys/ucontext.h delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/sys/user.h delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/syscall.S delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/sysdep.c delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/sysdep.h delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/Makefile delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/configure delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/configure.ac delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/ioctl.S delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/ldconfig.h delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/ldd-rewrite.sed delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/register-dump.h delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/sched_getcpu.c delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/Implies delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/Makefile delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/c++-types.data delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/ld.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libBrokenLocale.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libanl.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libc.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libcrypt.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libdl.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libm.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libnsl.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libpthread.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libresolv.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/librt.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libthread_db.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libutil.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/Implies delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/Makefile delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/c++-types.data delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/ld.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libBrokenLocale.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libanl.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libc.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libcrypt.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libdl.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libm.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libnsl.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libpthread.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libresolv.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/librt.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libthread_db.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libutil.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilepro/Implies delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilepro/ldconfig.h delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/c++-types.data delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/ld.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libBrokenLocale.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libanl.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libc.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libcrypt.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libdl.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libm.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libnsl.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libpthread.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libresolv.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/librt.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libthread_db.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libutil.abilist delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/tilepro/register-dump.h delete mode 100644 ports/sysdeps/unix/sysv/linux/tile/ucontext_i.h create mode 100644 sysdeps/tile/Implies create mode 100644 sysdeps/tile/Makefile create mode 100644 sysdeps/tile/Versions create mode 100644 sysdeps/tile/__longjmp.S create mode 100644 sysdeps/tile/__tls_get_addr.S create mode 100644 sysdeps/tile/_mcount.S create mode 100644 sysdeps/tile/abort-instr.h create mode 100644 sysdeps/tile/backtrace.c create mode 100644 sysdeps/tile/bits/atomic.h create mode 100644 sysdeps/tile/bits/byteswap.h create mode 100644 sysdeps/tile/bits/endian.h create mode 100644 sysdeps/tile/bits/fenv.h create mode 100644 sysdeps/tile/bits/link.h create mode 100644 sysdeps/tile/bits/mathdef.h create mode 100644 sysdeps/tile/bits/mathinline.h create mode 100644 sysdeps/tile/bits/setjmp.h create mode 100644 sysdeps/tile/bsd-_setjmp.S create mode 100644 sysdeps/tile/bsd-setjmp.S create mode 100644 sysdeps/tile/bzero.S create mode 100644 sysdeps/tile/crti.S create mode 100644 sysdeps/tile/crtn.S create mode 100644 sysdeps/tile/dl-lookupcfg.h create mode 100644 sysdeps/tile/dl-machine.h create mode 100644 sysdeps/tile/dl-runtime.c create mode 100644 sysdeps/tile/dl-start.S create mode 100644 sysdeps/tile/dl-tls.c create mode 100644 sysdeps/tile/dl-tls.h create mode 100644 sysdeps/tile/dl-trampoline.S create mode 100644 sysdeps/tile/ffs.c create mode 100644 sysdeps/tile/ffsll.c create mode 100644 sysdeps/tile/gccframe.h create mode 100644 sysdeps/tile/jmpbuf-offsets.h create mode 100644 sysdeps/tile/jmpbuf-unwind.h create mode 100644 sysdeps/tile/ldsodefs.h create mode 100644 sysdeps/tile/libm-test-ulps create mode 100644 sysdeps/tile/machine-gmon.h create mode 100644 sysdeps/tile/math_private.h create mode 100644 sysdeps/tile/memcopy.h create mode 100644 sysdeps/tile/nptl/Makefile create mode 100644 sysdeps/tile/nptl/pthread_spin_lock.c create mode 100644 sysdeps/tile/nptl/pthread_spin_trylock.c create mode 100644 sysdeps/tile/nptl/pthread_spin_unlock.c create mode 100644 sysdeps/tile/nptl/pthreaddef.h create mode 100644 sysdeps/tile/nptl/tcb-offsets.sym create mode 100644 sysdeps/tile/nptl/tls.h create mode 100644 sysdeps/tile/preconfigure create mode 100644 sysdeps/tile/s_fma.c create mode 100644 sysdeps/tile/s_fmaf.c create mode 100644 sysdeps/tile/setjmp.S create mode 100644 sysdeps/tile/sfp-machine.h create mode 100644 sysdeps/tile/shlib-versions create mode 100644 sysdeps/tile/sotruss-lib.c create mode 100644 sysdeps/tile/stackguard-macros.h create mode 100644 sysdeps/tile/stackinfo.h create mode 100644 sysdeps/tile/start.S create mode 100644 sysdeps/tile/sysdep.h create mode 100644 sysdeps/tile/tilegx/Makefile create mode 100644 sysdeps/tile/tilegx/bits/atomic.h create mode 100644 sysdeps/tile/tilegx/bits/wordsize.h create mode 100644 sysdeps/tile/tilegx/memchr.c create mode 100644 sysdeps/tile/tilegx/memcpy.c create mode 100644 sysdeps/tile/tilegx/memmove.c create mode 100644 sysdeps/tile/tilegx/memset.c create mode 100644 sysdeps/tile/tilegx/memusage.h create mode 100644 sysdeps/tile/tilegx/rawmemchr.c create mode 100644 sysdeps/tile/tilegx/strchr.c create mode 100644 sysdeps/tile/tilegx/strchrnul.c create mode 100644 sysdeps/tile/tilegx/string-endian.h create mode 100644 sysdeps/tile/tilegx/strlen.c create mode 100644 sysdeps/tile/tilegx/strrchr.c create mode 100644 sysdeps/tile/tilegx/tilegx32/Implies create mode 100644 sysdeps/tile/tilegx/tilegx64/Implies create mode 100644 sysdeps/tile/tilepro/Implies create mode 100644 sysdeps/tile/tilepro/bits/atomic.h create mode 100644 sysdeps/tile/tilepro/bits/wordsize.h create mode 100644 sysdeps/tile/tilepro/memchr.c create mode 100644 sysdeps/tile/tilepro/memcpy.S create mode 100644 sysdeps/tile/tilepro/memset.c create mode 100644 sysdeps/tile/tilepro/memusage.h create mode 100644 sysdeps/tile/tilepro/rawmemchr.c create mode 100644 sysdeps/tile/tilepro/strchr.c create mode 100644 sysdeps/tile/tilepro/strchrnul.c create mode 100644 sysdeps/tile/tilepro/strlen.c create mode 100644 sysdeps/tile/tilepro/strrchr.c create mode 100644 sysdeps/tile/tls-macros.h create mode 100644 sysdeps/tile/tst-audit.h create mode 100644 sysdeps/tile/wordcopy.c create mode 100644 sysdeps/unix/sysv/linux/generic/Makefile create mode 100644 sysdeps/unix/sysv/linux/generic/____longjmp_chk.c create mode 100644 sysdeps/unix/sysv/linux/generic/access.c create mode 100644 sysdeps/unix/sysv/linux/generic/bits/fcntl.h create mode 100644 sysdeps/unix/sysv/linux/generic/bits/msq.h create mode 100644 sysdeps/unix/sysv/linux/generic/bits/sem.h create mode 100644 sysdeps/unix/sysv/linux/generic/bits/shm.h create mode 100644 sysdeps/unix/sysv/linux/generic/bits/stat.h create mode 100644 sysdeps/unix/sysv/linux/generic/bits/statfs.h create mode 100644 sysdeps/unix/sysv/linux/generic/bits/typesizes.h create mode 100644 sysdeps/unix/sysv/linux/generic/brk.c create mode 100644 sysdeps/unix/sysv/linux/generic/chmod.c create mode 100644 sysdeps/unix/sysv/linux/generic/chown.c create mode 100644 sysdeps/unix/sysv/linux/generic/creat.c create mode 100644 sysdeps/unix/sysv/linux/generic/dl-origin.c create mode 100644 sysdeps/unix/sysv/linux/generic/dup2.c create mode 100644 sysdeps/unix/sysv/linux/generic/epoll_create.c create mode 100644 sysdeps/unix/sysv/linux/generic/epoll_wait.c create mode 100644 sysdeps/unix/sysv/linux/generic/futimesat.c create mode 100644 sysdeps/unix/sysv/linux/generic/getdents.c create mode 100644 sysdeps/unix/sysv/linux/generic/getdents64.c create mode 100644 sysdeps/unix/sysv/linux/generic/inotify_init.c create mode 100644 sysdeps/unix/sysv/linux/generic/kernel_stat.h create mode 100644 sysdeps/unix/sysv/linux/generic/lchown.c create mode 100644 sysdeps/unix/sysv/linux/generic/link.c create mode 100644 sysdeps/unix/sysv/linux/generic/lxstat.c create mode 100644 sysdeps/unix/sysv/linux/generic/mkdir.c create mode 100644 sysdeps/unix/sysv/linux/generic/not-cancel.h create mode 100644 sysdeps/unix/sysv/linux/generic/nptl/not-cancel.h create mode 100644 sysdeps/unix/sysv/linux/generic/open.c create mode 100644 sysdeps/unix/sysv/linux/generic/open64.c create mode 100644 sysdeps/unix/sysv/linux/generic/pause.c create mode 100644 sysdeps/unix/sysv/linux/generic/pipe.c create mode 100644 sysdeps/unix/sysv/linux/generic/poll.c create mode 100644 sysdeps/unix/sysv/linux/generic/readlink.c create mode 100644 sysdeps/unix/sysv/linux/generic/readlink_chk.c create mode 100644 sysdeps/unix/sysv/linux/generic/recv.c create mode 100644 sysdeps/unix/sysv/linux/generic/rename.c create mode 100644 sysdeps/unix/sysv/linux/generic/rmdir.c create mode 100644 sysdeps/unix/sysv/linux/generic/select.c create mode 100644 sysdeps/unix/sysv/linux/generic/send.c create mode 100644 sysdeps/unix/sysv/linux/generic/symlink.c create mode 100644 sysdeps/unix/sysv/linux/generic/syscalls.list create mode 100644 sysdeps/unix/sysv/linux/generic/sysctl.c create mode 100644 sysdeps/unix/sysv/linux/generic/sysdep.h create mode 100644 sysdeps/unix/sysv/linux/generic/umount.c create mode 100644 sysdeps/unix/sysv/linux/generic/unlink.c create mode 100644 sysdeps/unix/sysv/linux/generic/ustat.c create mode 100644 sysdeps/unix/sysv/linux/generic/utimes.c create mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/Versions create mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/fcntl.c create mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/fstatfs.c create mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/ftruncate.c create mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/ftruncate64.c create mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/fxstat.c create mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/fxstatat.c create mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/getdents.c create mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/llseek.c create mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/lseek.c create mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/lxstat.c create mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/lxstat64.c create mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/mmap.c create mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/overflow.h create mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/posix_fadvise.c create mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/pread.c create mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/pread64.c create mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/preadv.c create mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/preadv64.c create mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite.c create mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite64.c create mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/pwritev.c create mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/pwritev64.c create mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/sendfile.c create mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/statfs.c create mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/syscalls.list create mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/truncate.c create mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/truncate64.c create mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/xstat.c create mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/xstat64.c create mode 100644 sysdeps/unix/sysv/linux/generic/xmknod.c create mode 100644 sysdeps/unix/sysv/linux/generic/xstat.c create mode 100644 sysdeps/unix/sysv/linux/tile/Makefile create mode 100644 sysdeps/unix/sysv/linux/tile/Versions create mode 100644 sysdeps/unix/sysv/linux/tile/bits/environments.h create mode 100644 sysdeps/unix/sysv/linux/tile/bits/libc-vdso.h create mode 100644 sysdeps/unix/sysv/linux/tile/bits/local_lim.h create mode 100644 sysdeps/unix/sysv/linux/tile/bits/mman.h create mode 100644 sysdeps/unix/sysv/linux/tile/bits/sigaction.h create mode 100644 sysdeps/unix/sysv/linux/tile/bits/siginfo.h create mode 100644 sysdeps/unix/sysv/linux/tile/cacheflush.c create mode 100644 sysdeps/unix/sysv/linux/tile/configure create mode 100644 sysdeps/unix/sysv/linux/tile/configure.ac create mode 100644 sysdeps/unix/sysv/linux/tile/dl-static.c create mode 100644 sysdeps/unix/sysv/linux/tile/getcontext.S create mode 100644 sysdeps/unix/sysv/linux/tile/gettimeofday.c create mode 100644 sysdeps/unix/sysv/linux/tile/init-first.c create mode 100644 sysdeps/unix/sysv/linux/tile/kernel-features.h create mode 100644 sysdeps/unix/sysv/linux/tile/ldsodefs.h create mode 100644 sysdeps/unix/sysv/linux/tile/makecontext.c create mode 100644 sysdeps/unix/sysv/linux/tile/nptl/Makefile create mode 100644 sysdeps/unix/sysv/linux/tile/nptl/bits/pthreadtypes.h create mode 100644 sysdeps/unix/sysv/linux/tile/nptl/bits/semaphore.h create mode 100644 sysdeps/unix/sysv/linux/tile/nptl/clone.S create mode 100644 sysdeps/unix/sysv/linux/tile/nptl/createthread.c create mode 100644 sysdeps/unix/sysv/linux/tile/nptl/fork.c create mode 100644 sysdeps/unix/sysv/linux/tile/nptl/lowlevellock.h create mode 100644 sysdeps/unix/sysv/linux/tile/nptl/pt-vfork.S create mode 100644 sysdeps/unix/sysv/linux/tile/nptl/pthread_once.c create mode 100644 sysdeps/unix/sysv/linux/tile/nptl/sysdep-cancel.h create mode 100644 sysdeps/unix/sysv/linux/tile/nptl/vfork.S create mode 100644 sysdeps/unix/sysv/linux/tile/nptl/waitpid.S create mode 100644 sysdeps/unix/sysv/linux/tile/profil-counter.h create mode 100644 sysdeps/unix/sysv/linux/tile/set_dataplane.c create mode 100644 sysdeps/unix/sysv/linux/tile/setcontext.S create mode 100644 sysdeps/unix/sysv/linux/tile/sigcontextinfo.h create mode 100644 sysdeps/unix/sysv/linux/tile/swapcontext.S create mode 100644 sysdeps/unix/sysv/linux/tile/sys/cachectl.h create mode 100644 sysdeps/unix/sysv/linux/tile/sys/dataplane.h create mode 100644 sysdeps/unix/sysv/linux/tile/sys/procfs.h create mode 100644 sysdeps/unix/sysv/linux/tile/sys/ptrace.h create mode 100644 sysdeps/unix/sysv/linux/tile/sys/reg.h create mode 100644 sysdeps/unix/sysv/linux/tile/sys/ucontext.h create mode 100644 sysdeps/unix/sysv/linux/tile/sys/user.h create mode 100644 sysdeps/unix/sysv/linux/tile/syscall.S create mode 100644 sysdeps/unix/sysv/linux/tile/sysdep.c create mode 100644 sysdeps/unix/sysv/linux/tile/sysdep.h create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/Makefile create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/configure create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/configure.ac create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/ioctl.S create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/ldconfig.h create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/ldd-rewrite.sed create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/register-dump.h create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/sched_getcpu.c create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/Implies create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/Makefile create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/c++-types.data create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/ld.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libBrokenLocale.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libanl.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libc.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libcrypt.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libdl.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libm.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libnsl.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libpthread.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libresolv.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/librt.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libthread_db.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libutil.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/Implies create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/Makefile create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/c++-types.data create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/ld.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libBrokenLocale.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libanl.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libc.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libcrypt.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libdl.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libm.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libnsl.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libpthread.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libresolv.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/librt.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libthread_db.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libutil.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilepro/Implies create mode 100644 sysdeps/unix/sysv/linux/tile/tilepro/ldconfig.h create mode 100644 sysdeps/unix/sysv/linux/tile/tilepro/nptl/c++-types.data create mode 100644 sysdeps/unix/sysv/linux/tile/tilepro/nptl/ld.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilepro/nptl/libBrokenLocale.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilepro/nptl/libanl.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilepro/nptl/libc.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilepro/nptl/libcrypt.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilepro/nptl/libdl.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilepro/nptl/libm.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilepro/nptl/libnsl.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilepro/nptl/libpthread.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilepro/nptl/libresolv.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilepro/nptl/librt.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilepro/nptl/libthread_db.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilepro/nptl/libutil.abilist create mode 100644 sysdeps/unix/sysv/linux/tile/tilepro/register-dump.h create mode 100644 sysdeps/unix/sysv/linux/tile/ucontext_i.h diff --git a/ChangeLog b/ChangeLog index eadce522e8..d40320e10c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2014-02-10 Chris Metcalf + + * sysdeps/tile: Move directory from ports/sysdeps/tile. + * sysdeps/unix/sysv/linux/generic: Move directory from + ports/sysdeps/unix/sysv/linux/generic. + * sysdeps/unix/sysv/linux/tile: Move directory from + ports/sysdeps/unix/sysv/linux/tile. + * README: Update listing for tile*-*-linux-gnu. + 2014-02-10 Ondřej Bílka * assert/assert.c (__assert_fail_base): Use glibc_likely instead __builtin_expect. diff --git a/README b/README index c234e8a892..dff16dff3d 100644 --- a/README +++ b/README @@ -34,6 +34,8 @@ The GNU C Library supports these configurations for using Linux kernels: sh[34]-*-linux-gnu sparc*-*-linux-gnu sparc64*-*-linux-gnu + tilegx-*-linux-gnu + tilepro-*-linux-gnu The code for other CPU configurations supported by volunteers outside of the core glibc maintenance effort is contained in the `ports' add-on, @@ -46,8 +48,6 @@ located in the `ports' subdirectory of the source tree. m68k-*-linux-gnu mips-*-linux-gnu mips64-*-linux-gnu - tilegx-*-linux-gnu - tilepro-*-linux-gnu If you are interested in doing a port, please contact the glibc maintainers; see http://www.gnu.org/software/libc/ for more diff --git a/ports/ChangeLog.linux-generic b/ports/ChangeLog.linux-generic index c8acddc88b..19ace4410e 100644 --- a/ports/ChangeLog.linux-generic +++ b/ports/ChangeLog.linux-generic @@ -1,3 +1,15 @@ +This file describes changes to the linux-generic infrastructure while +it was in the ports add-on directory. This code is no longer maintained +here and so future changes to it should be listed in the top-level +ChangeLog file. + + + +2014-02-10 Chris Metcalf + + * sysdeps/unix/sysv/linux/generic: Move directory to + ../sysdeps/unix/sysv/linux/generic. + 2013-11-13 Chung-Lin Tang * sysdeps/unix/sysv/linux/generic/bits/stat.h (__field64): Use diff --git a/ports/ChangeLog.tile b/ports/ChangeLog.tile index cb8d4d0823..cc8328ab34 100644 --- a/ports/ChangeLog.tile +++ b/ports/ChangeLog.tile @@ -1,3 +1,16 @@ +This file describes changes to the TILE-Gx and TILEPro ports while they +were in the ports add-on directory. These ports are no longer part of +an add-on and so future changes to them should be listed in the top-level +ChangeLog file, not here. + + + +2014-02-10 Chris Metcalf + + * sysdeps/tile: Move directory to ../sysdeps/tile. + * sysdeps/unix/sysv/linux/tile: Move directory to + ../sysdeps/unix/sysv/linux/tile. + 2014-01-03 Chris Metcalf * sysdeps/tile/libm-test-ulps: Regenerated. diff --git a/ports/sysdeps/tile/Implies b/ports/sysdeps/tile/Implies deleted file mode 100644 index 5b29b26128..0000000000 --- a/ports/sysdeps/tile/Implies +++ /dev/null @@ -1,2 +0,0 @@ -ieee754/dbl-64 -ieee754/flt-32 diff --git a/ports/sysdeps/tile/Makefile b/ports/sysdeps/tile/Makefile deleted file mode 100644 index 3cd4d1e752..0000000000 --- a/ports/sysdeps/tile/Makefile +++ /dev/null @@ -1,13 +0,0 @@ -# We don't support long doubles as a distinct type. We don't need to set -# this variable; it's here mostly for documentational purposes. - -long-double-fcts = no - -ifeq ($(subdir),gmon) -sysdep_routines += _mcount -endif - -ifeq ($(subdir),elf) -# Extra shared linker files to link only into dl-allobjs.so. -sysdep-rtld-routines += dl-start __tls_get_addr -endif diff --git a/ports/sysdeps/tile/Versions b/ports/sysdeps/tile/Versions deleted file mode 100644 index b275d7ff3b..0000000000 --- a/ports/sysdeps/tile/Versions +++ /dev/null @@ -1,6 +0,0 @@ -libc { - GLIBC_2.12 { - # name requested by gcc community. - __mcount; - } -} diff --git a/ports/sysdeps/tile/__longjmp.S b/ports/sysdeps/tile/__longjmp.S deleted file mode 100644 index 2edcecc777..0000000000 --- a/ports/sysdeps/tile/__longjmp.S +++ /dev/null @@ -1,57 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include - -/* PL to return to via iret in longjmp */ -#define RETURN_PL 0 - - .text -ENTRY (__longjmp) - FEEDBACK_ENTER(__longjmp) - -#define RESTORE(r) { LD r, r0 ; ADDI_PTR r0, r0, REGSIZE } - FOR_EACH_CALLEE_SAVED_REG(RESTORE) - - /* Make longjmp(buf, 0) return "1" instead. - At the same time, construct our iret context; we set ICS so - we can validly load EX_CONTEXT for iret without being - interrupted halfway through. */ - { - LD r2, r0 /* retrieve ICS bit from jmp_buf */ - movei r3, 1 - CMPEQI r0, r1, 0 - } - { - mtspr INTERRUPT_CRITICAL_SECTION, r3 - shli r2, r2, SPR_EX_CONTEXT_0_1__ICS_SHIFT - } - { - mtspr EX_CONTEXT_0_0, lr - ori r2, r2, RETURN_PL - } - { - or r0, r1, r0 - mtspr EX_CONTEXT_0_1, r2 - } - iret - jrp lr /* Keep the backtracer happy. */ -END (__longjmp) diff --git a/ports/sysdeps/tile/__tls_get_addr.S b/ports/sysdeps/tile/__tls_get_addr.S deleted file mode 100644 index e624fbcd56..0000000000 --- a/ports/sysdeps/tile/__tls_get_addr.S +++ /dev/null @@ -1,152 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include - -#if __WORDSIZE == 64 -#define LOG_SIZEOF_DTV_T 4 -#else -#define LOG_SIZEOF_DTV_T 3 -#endif - -/* On entry, r0 points to two words, the module and the offset. - On return, r0 holds the pointer to the relevant TLS memory. - Only registers r25..r29 are clobbered by the call. */ - - .text -ENTRY (__tls_get_addr) - { - lnk r25 - ADDI_PTR r27, tp, DTV_OFFSET - } -.Llnk: -#ifdef __tilegx__ - { - LD_PTR r27, r27 /* r27 = THREAD_DTV() */ - moveli r26, hw1_last(_rtld_local + TLS_GENERATION_OFFSET - .Llnk) - } - shl16insli r26, r26, hw0(_rtld_local + TLS_GENERATION_OFFSET - .Llnk) - { - ADD_PTR r25, r25, r26 - LD_PTR r26, r0 /* r26 = ti_module */ - } -#else - { - LD_PTR r27, r27 /* r27 = THREAD_DTV() */ - addli r25, r25, lo16(_rtld_local + TLS_GENERATION_OFFSET - .Llnk) - } - { - auli r25, r25, ha16(_rtld_local + TLS_GENERATION_OFFSET - .Llnk) - LD_PTR r26, r0 /* r26 = ti_module */ - } -#endif - LD_PTR r25, r25 /* r25 = DL(dl_tls_generation) */ - { - LD_PTR r28, r27 /* r28 = THREAD_DTV()->counter */ - ADDI_PTR r29, r0, __SIZEOF_POINTER__ - } - { - LD_PTR r29, r29 /* r29 = ti_offset */ - CMPEQ r25, r28, r25 /* r25 nonzero if generation OK */ - shli r28, r26, LOG_SIZEOF_DTV_T /* byte index into dtv array */ - } - { - BEQZ r25, .Lslowpath - CMPEQI r25, r26, -1 /* r25 nonzero if ti_module invalid */ - } - { - BNEZ r25, .Lslowpath - ADD_PTR r28, r28, r27 /* pointer into module array */ - } - LD_PTR r26, r28 /* r26 = module TLS pointer */ - CMPEQI r25, r26, -1 /* check r26 == TLS_DTV_UNALLOCATED */ - BNEZ r25, .Lslowpath - { - ADD_PTR r0, r26, r29 - jrp lr - } - -.Lslowpath: - { - ST sp, lr - ADDLI_PTR r29, sp, - (25 * REGSIZE) - } - cfi_offset (lr, 0) - { - ST r29, sp - ADDLI_PTR sp, sp, - (26 * REGSIZE) - } - cfi_def_cfa_offset (26 * REGSIZE) - ADDI_PTR r29, sp, (2 * REGSIZE) - { ST r29, r1; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r2; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r3; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r4; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r5; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r6; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r7; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r8; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r9; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r10; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r11; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r12; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r13; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r14; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r15; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r16; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r17; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r18; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r19; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r20; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r21; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r22; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r23; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r24; ADDI_PTR r29, r29, REGSIZE } - .hidden __tls_get_addr_slow - jal __tls_get_addr_slow - ADDI_PTR r29, sp, (2 * REGSIZE) - { LD r1, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r2, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r3, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r4, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r5, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r6, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r7, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r8, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r9, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r10, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r11, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r12, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r13, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r14, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r15, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r16, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r17, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r18, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r19, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r20, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r21, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r22, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r23, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r24, r29; ADDLI_PTR sp, sp, (26 * REGSIZE) } - cfi_def_cfa_offset (0) - LD lr, sp - jrp lr -END (__tls_get_addr) diff --git a/ports/sysdeps/tile/_mcount.S b/ports/sysdeps/tile/_mcount.S deleted file mode 100644 index c3648afec0..0000000000 --- a/ports/sysdeps/tile/_mcount.S +++ /dev/null @@ -1,87 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - Based on work contributed by David Mosberger (davidm@cs.arizona.edu). - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -/* Assembly stub to invoke __mcount_internal(). Compiler-generated - code calls mcount after executing a function's prologue, placing - the "lr" register in "r10" for the call. As a result "lr" is the - function that invoked mcount, and "r10" is mcount's caller's - caller. However, we have to save all the parameter registers here - before invoking _mcount_internal. Callee-save and temporary - registers need no special attention. We save r10 and restore it to - lr on the way out, to properly handle the case of ENTRY() in - assembly code, before lr is saved. We use the name __mcount since - the gcc community prefers using the reserved namespace. */ - -#include - - .text -ENTRY(__mcount) - { - ST sp, lr - ADDI_PTR r29, sp, - (12 * REGSIZE) - } - cfi_offset (lr, 0) - { - ADDI_PTR sp, sp, - (13 * REGSIZE) - ST r29, sp - ADDI_PTR r29, r29, REGSIZE - } - cfi_def_cfa_offset (13 * REGSIZE) - { ST r29, r0; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r1; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r2; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r3; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r4; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r5; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r6; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r7; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r8; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r9; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r10; ADDI_PTR r29, r29, REGSIZE; move r0, r10 } - { - move r1, lr - jal __mcount_internal - } - { - ADDI_PTR r29, sp, (2 * REGSIZE) - } - { LD r0, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r1, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r2, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r3, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r4, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r5, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r6, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r7, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r8, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r9, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r10, r29; ADDI_PTR sp, sp, (13 * REGSIZE) } - cfi_def_cfa_offset (0) - { - LD lr, sp - } - { - move lr, r10 - jrp lr - } -END(__mcount) - -#undef mcount -weak_alias (__mcount, _mcount) /* exported in gmon/Versions */ -weak_alias (__mcount, mcount) /* exported in stdlib/Versions */ diff --git a/ports/sysdeps/tile/abort-instr.h b/ports/sysdeps/tile/abort-instr.h deleted file mode 100644 index 0f57da5198..0000000000 --- a/ports/sysdeps/tile/abort-instr.h +++ /dev/null @@ -1,2 +0,0 @@ -/* An instruction which should crash any program is `hlt'. */ -#define ABORT_INSTRUCTION asm ("ill") diff --git a/ports/sysdeps/tile/backtrace.c b/ports/sysdeps/tile/backtrace.c deleted file mode 100644 index 27ce597b39..0000000000 --- a/ports/sysdeps/tile/backtrace.c +++ /dev/null @@ -1 +0,0 @@ -#include diff --git a/ports/sysdeps/tile/bits/atomic.h b/ports/sysdeps/tile/bits/atomic.h deleted file mode 100644 index 2cbb086069..0000000000 --- a/ports/sysdeps/tile/bits/atomic.h +++ /dev/null @@ -1,86 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -/* The sub-architecture headers provide definitions for these macros - that work for "int" and "long" size values only: - - atomic_compare_and_exchange_val_acq() - atomic_exchange_acq() - atomic_exchange_and_add() - atomic_and_val() - atomic_or_val() - atomic_decrement_if_positive() [tilegx only] - - Here we provide generic definitions true for all Tilera chips. */ - -#include -#include - -typedef int32_t atomic32_t; -typedef uint32_t uatomic32_t; -typedef int_fast32_t atomic_fast32_t; -typedef uint_fast32_t uatomic_fast32_t; - -typedef int64_t atomic64_t; -typedef uint64_t uatomic64_t; -typedef int_fast64_t atomic_fast64_t; -typedef uint_fast64_t uatomic_fast64_t; - -typedef intptr_t atomicptr_t; -typedef uintptr_t uatomicptr_t; -typedef intmax_t atomic_max_t; -typedef uintmax_t uatomic_max_t; - -/* Barrier macro. */ -#define atomic_full_barrier() __sync_synchronize() - -/* APIs with "release" semantics. */ -#define atomic_compare_and_exchange_val_rel(mem, n, o) \ - ({ \ - atomic_full_barrier (); \ - atomic_compare_and_exchange_val_acq ((mem), (n), (o)); \ - }) -#define atomic_compare_and_exchange_bool_rel(mem, n, o) \ - ({ \ - atomic_full_barrier (); \ - atomic_compare_and_exchange_bool_acq ((mem), (n), (o)); \ - }) -#define atomic_exchange_rel(mem, n) \ - ({ \ - atomic_full_barrier (); \ - atomic_exchange_acq ((mem), (n)); \ - }) - -/* Various macros that should just be synonyms. */ -#define catomic_exchange_and_add atomic_exchange_and_add -#define atomic_and(mem, mask) ((void) atomic_and_val ((mem), (mask))) -#define catomic_and atomic_and -#define atomic_or(mem, mask) ((void) atomic_or_val ((mem), (mask))) -#define catomic_or atomic_or - -/* atomic_bit_test_set in terms of atomic_or_val. */ -#define atomic_bit_test_set(mem, bit) \ - ({ __typeof (*(mem)) __att0_mask = ((__typeof (*(mem))) 1 << (bit)); \ - atomic_or_val ((mem), __att0_mask) & __att0_mask; }) - -/* - * This non-existent symbol is called for unsupporrted sizes, - * indicating a bug in the caller. - */ -extern int __atomic_error_bad_argument_size(void) - __attribute__ ((warning ("bad sizeof atomic argument"))); diff --git a/ports/sysdeps/tile/bits/byteswap.h b/ports/sysdeps/tile/bits/byteswap.h deleted file mode 100644 index 1e1007708b..0000000000 --- a/ports/sysdeps/tile/bits/byteswap.h +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#if !defined _BYTESWAP_H && !defined _NETINET_IN_H && !defined _ENDIAN_H -# error "Never use directly; include instead." -#endif - -#ifndef _BITS_BYTESWAP_H -#define _BITS_BYTESWAP_H 1 - -#include - -/* gcc __builtin_bswap64() can constant-fold, etc, so always use it. */ -#define __bswap_16(x) ((unsigned short)(__builtin_bswap32(x) >> 16)) -#define __bswap_32(x) ((unsigned int)__builtin_bswap32(x)) -#define __bswap_64(x) ((__uint64_t)__builtin_bswap64(x)) - -#define __bswap_constant_16(x) __bswap_16(x) -#define __bswap_constant_32(x) __bswap_32(x) -#define __bswap_constant_64(x) __bswap_64(x) - -#endif /* _BITS_BYTESWAP_H */ diff --git a/ports/sysdeps/tile/bits/endian.h b/ports/sysdeps/tile/bits/endian.h deleted file mode 100644 index 835042a7ac..0000000000 --- a/ports/sysdeps/tile/bits/endian.h +++ /dev/null @@ -1,11 +0,0 @@ -/* Set endianness for tile. */ - -#ifndef _ENDIAN_H -# error "Never use directly; include instead." -#endif - -#if defined __BIG_ENDIAN__ -# define __BYTE_ORDER __BIG_ENDIAN -#else -# define __BYTE_ORDER __LITTLE_ENDIAN -#endif diff --git a/ports/sysdeps/tile/bits/fenv.h b/ports/sysdeps/tile/bits/fenv.h deleted file mode 100644 index b5092c5039..0000000000 --- a/ports/sysdeps/tile/bits/fenv.h +++ /dev/null @@ -1,45 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#ifndef _FENV_H -# error "Never use directly; include instead." -#endif - -/* The TILE-Gx hardware does not provide floating-point exception - handling, and TILEPro does not support any floating-point operations. */ -#define FE_ALL_EXCEPT 0 - -/* TILE-Gx supports only round-to-nearest. The software - floating-point support also acts this way. */ -enum - { - __FE_UNDEFINED = 0, - - FE_TONEAREST = -#define FE_TONEAREST 1 - FE_TONEAREST, - }; - -/* Type representing exception flags (if there were any). */ -typedef unsigned int fexcept_t; - -/* Type representing floating-point environment. */ -typedef unsigned int fenv_t; - -/* If the default argument is used we use this value. */ -#define FE_DFL_ENV ((const fenv_t *) -1l) diff --git a/ports/sysdeps/tile/bits/link.h b/ports/sysdeps/tile/bits/link.h deleted file mode 100644 index abc3496030..0000000000 --- a/ports/sysdeps/tile/bits/link.h +++ /dev/null @@ -1,57 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#ifndef _LINK_H -# error "Never include directly; use instead." -#endif - -#define __need_int_reg_t -#include - - -/* Registers for entry into PLT. */ -typedef struct La_tile_regs -{ - __uint_reg_t lr_reg[10]; -} La_tile_regs; - -/* Return values for calls from PLT. */ -typedef struct La_tile_retval -{ - /* Up to ten registers can be used for a return value (e.g. small struct). */ - __uint_reg_t lrv_reg[10]; -} La_tile_retval; - - -__BEGIN_DECLS - -extern ElfW(Addr) la_tile_gnu_pltenter (ElfW(Sym) *__sym, unsigned int __ndx, - uintptr_t *__refcook, - uintptr_t *__defcook, - La_tile_regs *__regs, - unsigned int *__flags, - const char *__symname, - long int *__framesizep); -extern unsigned int la_tile_gnu_pltexit (ElfW(Sym) *__sym, unsigned int __ndx, - uintptr_t *__refcook, - uintptr_t *__defcook, - const La_tile_regs *__inregs, - La_tile_retval *__outregs, - const char *__symname); - -__END_DECLS diff --git a/ports/sysdeps/tile/bits/mathdef.h b/ports/sysdeps/tile/bits/mathdef.h deleted file mode 100644 index d043b4af5f..0000000000 --- a/ports/sysdeps/tile/bits/mathdef.h +++ /dev/null @@ -1,48 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#if !defined _MATH_H && !defined _COMPLEX_H -# error "Never use directly; include instead" -#endif - -#if defined __USE_ISOC99 && defined _MATH_H && !defined _MATH_H_MATHDEF -# define _MATH_H_MATHDEF 1 - -/* "float" and "double" expressions evaluated as "float" and "double". */ -typedef float float_t; -typedef double double_t; - -/* The values returned by `ilogb' for 0 and NaN respectively. */ -# define FP_ILOGB0 (-2147483647) -# define FP_ILOGBNAN (2147483647) - -/* The GCC 4.6 compiler will define __FP_FAST_FMA{,F,L} if the fma{,f,l} - builtins are supported. */ -# if __FP_FAST_FMA -# define FP_FAST_FMA 1 -# endif - -# if __FP_FAST_FMAF -# define FP_FAST_FMAF 1 -# endif - -# if __FP_FAST_FMAL -# define FP_FAST_FMAL 1 -# endif - -#endif /* ISO C99 */ diff --git a/ports/sysdeps/tile/bits/mathinline.h b/ports/sysdeps/tile/bits/mathinline.h deleted file mode 100644 index f6f9102a98..0000000000 --- a/ports/sysdeps/tile/bits/mathinline.h +++ /dev/null @@ -1,44 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#ifndef _MATH_H -# error "Never use directly; include instead." -#endif - -#ifndef __extern_always_inline -# define __MATH_INLINE __inline -#else -# define __MATH_INLINE __extern_always_inline -#endif - - -#if defined __USE_ISOC99 && defined __GNUC__ - -/* Test for negative number. Used in the signbit() macro. */ -__MATH_INLINE int -__NTH (__signbitf (float __x)) -{ - return __builtin_signbitf (__x); -} -__MATH_INLINE int -__NTH (__signbit (double __x)) -{ - return __builtin_signbit (__x); -} - -#endif diff --git a/ports/sysdeps/tile/bits/setjmp.h b/ports/sysdeps/tile/bits/setjmp.h deleted file mode 100644 index a9ba3b986f..0000000000 --- a/ports/sysdeps/tile/bits/setjmp.h +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -/* Define the machine-dependent type `jmp_buf'. TILE version. */ -#ifndef _BITS_SETJMP_H -#define _BITS_SETJMP_H 1 - -#if !defined _SETJMP_H && !defined _PTHREAD_H -# error "Never include directly; use instead." -#endif - -#ifndef _ASM - -#define __need_int_reg_t -#include - -typedef __uint_reg_t __jmp_buf[32]; - -#endif - -#endif /* bits/setjmp.h */ diff --git a/ports/sysdeps/tile/bsd-_setjmp.S b/ports/sysdeps/tile/bsd-_setjmp.S deleted file mode 100644 index 4e6a2da560..0000000000 --- a/ports/sysdeps/tile/bsd-_setjmp.S +++ /dev/null @@ -1 +0,0 @@ -/* _setjmp is in setjmp.S */ diff --git a/ports/sysdeps/tile/bsd-setjmp.S b/ports/sysdeps/tile/bsd-setjmp.S deleted file mode 100644 index 1da848d2f1..0000000000 --- a/ports/sysdeps/tile/bsd-setjmp.S +++ /dev/null @@ -1 +0,0 @@ -/* setjmp is in setjmp.S */ diff --git a/ports/sysdeps/tile/bzero.S b/ports/sysdeps/tile/bzero.S deleted file mode 100644 index 584c955746..0000000000 --- a/ports/sysdeps/tile/bzero.S +++ /dev/null @@ -1,30 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include - - .text -ENTRY(__bzero) - FEEDBACK_ENTER(__bzero) - { - move r2, r1 - move r1, zero - } - j __memset -END(__bzero) -weak_alias (__bzero, bzero) diff --git a/ports/sysdeps/tile/crti.S b/ports/sysdeps/tile/crti.S deleted file mode 100644 index 55eb238866..0000000000 --- a/ports/sysdeps/tile/crti.S +++ /dev/null @@ -1,124 +0,0 @@ -/* Special .init and .fini section support for tile. - Copyright (C) 2012-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - In addition to the permissions in the GNU Lesser General Public - License, the Free Software Foundation gives you unlimited - permission to link the compiled version of this file with other - programs, and to distribute those programs without any restriction - coming from the use of this file. (The GNU Lesser General Public - License restrictions do apply in other respects; for example, they - cover modification of the file, and distribution when not linked - into another program.) - - Note that people who make modified versions of this file are not - obligated to grant this special exception for their modified - versions; it is their choice whether to do so. The GNU Lesser - General Public License gives permission to release a modified - version without this exception; this exception also makes it - possible to release a modified version which carries forward this - exception. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -/* crti.S puts a function prologue at the beginning of the .init and - .fini sections and defines global symbols for those addresses, so - they can be called as functions. The symbols _init and _fini are - magic and cause the linker to emit DT_INIT and DT_FINI. */ - -#include -#include - -#ifndef PREINIT_FUNCTION -# define PREINIT_FUNCTION __gmon_start__ -#endif - -#ifndef PREINIT_FUNCTION_WEAK -# define PREINIT_FUNCTION_WEAK 1 -#endif - -#if PREINIT_FUNCTION_WEAK - weak_extern (PREINIT_FUNCTION) -#else - .hidden PREINIT_FUNCTION -#endif - - .section .init,"ax",@progbits - .align 8 - .globl _init - .type _init, @function -_init: - { - move r29, sp - ADDI_PTR r28, sp, -REGSIZE - ST sp, lr - } - ADDI_PTR sp, sp, -(2 * REGSIZE) - ST r28, r29 -#if PREINIT_FUNCTION_WEAK - lnk r2 -0: -# ifdef __tilegx__ - moveli r1, hw2_last(_GLOBAL_OFFSET_TABLE_ - 0b) - { - shl16insli r1, r1, hw1(_GLOBAL_OFFSET_TABLE_ - 0b) - moveli r0, hw1_last_got(PREINIT_FUNCTION) - } - { - shl16insli r1, r1, hw0(_GLOBAL_OFFSET_TABLE_ - 0b) - shl16insli r0, r0, hw0_got(PREINIT_FUNCTION) - } -# else - { - moveli r1, lo16(_GLOBAL_OFFSET_TABLE_ - 0b) - moveli r0, got_lo16(PREINIT_FUNCTION) - } - { - auli r1, r1, ha16(_GLOBAL_OFFSET_TABLE_ - 0b) - auli r0, r0, got_ha16(PREINIT_FUNCTION) - } -# endif - ADD_PTR r0, r0, r1 - ADD_PTR r0, r0, r2 - LD_PTR r0, r0 - BEQZ r0, .Lno_weak_fn - jalr r0 -#elif defined(__tilegx__) && !defined(NO_PLT_PCREL) - /* Since we are calling from the start of the object to the PLT, - call by loading the full address into a register. */ - lnk r2 -0: - moveli r0, hw2_last_plt(PREINIT_FUNCTION - 0b) - shl16insli r0, r0, hw1_plt(PREINIT_FUNCTION - 0b) - shl16insli r0, r0, hw0_plt(PREINIT_FUNCTION - 0b) - add r0, r0, r2 - jalr r0 -#else - jal plt(PREINIT_FUNCTION) -#endif -.Lno_weak_fn: - - .section .fini,"ax",@progbits - .align 8 - .globl _fini - .type _fini, @function -_fini: - { - move r29, sp - ADDI_PTR r28, sp, -REGSIZE - ST sp, lr - } - ADDI_PTR sp, sp, -(2 * REGSIZE) - ST r28, r29 diff --git a/ports/sysdeps/tile/crtn.S b/ports/sysdeps/tile/crtn.S deleted file mode 100644 index 184ef8a665..0000000000 --- a/ports/sysdeps/tile/crtn.S +++ /dev/null @@ -1,55 +0,0 @@ -/* Special .init and .fini section support for tile. - Copyright (C) 2012-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - In addition to the permissions in the GNU Lesser General Public - License, the Free Software Foundation gives you unlimited - permission to link the compiled version of this file with other - programs, and to distribute those programs without any restriction - coming from the use of this file. (The GNU Lesser General Public - License restrictions do apply in other respects; for example, they - cover modification of the file, and distribution when not linked - into another program.) - - Note that people who make modified versions of this file are not - obligated to grant this special exception for their modified - versions; it is their choice whether to do so. The GNU Lesser - General Public License gives permission to release a modified - version without this exception; this exception also makes it - possible to release a modified version which carries forward this - exception. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -/* crtn.S puts function epilogues in the .init and .fini sections - corresponding to the prologues in crti.S. */ - -#include - - .section .init,"ax",@progbits - ADDI_PTR r29, sp, (2 * REGSIZE) - { - ADDI_PTR sp, sp, (2 * REGSIZE) - LD lr, r29 - } - jrp lr - - .section .fini,"ax",@progbits - ADDI_PTR r29, sp, (2 * REGSIZE) - { - ADDI_PTR sp, sp, (2 * REGSIZE) - LD lr, r29 - } - jrp lr diff --git a/ports/sysdeps/tile/dl-lookupcfg.h b/ports/sysdeps/tile/dl-lookupcfg.h deleted file mode 100644 index 16c7cd849b..0000000000 --- a/ports/sysdeps/tile/dl-lookupcfg.h +++ /dev/null @@ -1,27 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#define DL_UNMAP_IS_SPECIAL - -#include_next - -struct link_map; - -void internal_function _dl_unmap (struct link_map *map); - -#define DL_UNMAP(map) _dl_unmap (map) diff --git a/ports/sysdeps/tile/dl-machine.h b/ports/sysdeps/tile/dl-machine.h deleted file mode 100644 index 8a24a92184..0000000000 --- a/ports/sysdeps/tile/dl-machine.h +++ /dev/null @@ -1,913 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - Based on work contributed by by Carl Pederson & Martin Schwidefsky. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#ifndef dl_machine_h -#define dl_machine_h - -#ifdef __tilegx__ -#define ELF_MACHINE_NAME "tilegx" -#else -#define ELF_MACHINE_NAME "tilepro" -#endif - -#include -#include -#include -#include -#include -#include - -/* Return nonzero iff ELF header is compatible with the running host. */ -static inline int -elf_machine_matches_host (const ElfW(Ehdr) *ehdr) -{ -#if defined __tilegx__ - if (ehdr->e_machine != EM_TILEGX) - return 0; -# if __WORDSIZE == 32 - return (ehdr->e_ident[EI_CLASS] == ELFCLASS32); -# else - return (ehdr->e_ident[EI_CLASS] == ELFCLASS64); -# endif -#elif defined __tilepro__ - return ehdr->e_machine == EM_TILEPRO; -#else -# error "Unknown tile architecture." -#endif -} - - -/* Return the link-time address of _DYNAMIC. Conveniently, this is the - first element of the GOT. This must be inlined in a function which - uses global data. */ - -static inline ElfW(Addr) -elf_machine_dynamic (void) -{ - ElfW(Addr) *got; - -#ifdef __tilegx__ - ElfW(Addr) tmp; - asm( " { lnk %0; moveli %1, hw2_last(_GLOBAL_OFFSET_TABLE_ - 1f) }\n" - "1: shl16insli %1, %1, hw1(_GLOBAL_OFFSET_TABLE_ - 1b)\n" - " shl16insli %1, %1, hw0(_GLOBAL_OFFSET_TABLE_ - 1b)\n" - " add %0, %0, %1" - : "=r" (got), "=r" (tmp)); -#else - asm( " lnk %0\n" - "1: addli %0, %0, lo16(_GLOBAL_OFFSET_TABLE_ - 1b)\n" - " auli %0, %0, ha16(_GLOBAL_OFFSET_TABLE_ - 1b)" - : "=r" (got)); -#endif - - return *got; -} - - -/* Return the run-time load address of the shared object. */ -static inline ElfW(Addr) -elf_machine_load_address (void) -{ - ElfW(Addr) *got; - ElfW(Addr) dynamic; - -#ifdef __tilegx__ - ElfW(Addr) tmp; - asm( " lnk %2\n" - "1: {\n" - " moveli %0, hw2_last(_GLOBAL_OFFSET_TABLE_ - 1b)\n" - " moveli %1, hw2_last(_DYNAMIC - 1b)\n" - " }\n" - " {\n" - " shl16insli %0, %0, hw1(_GLOBAL_OFFSET_TABLE_ - 1b)\n" - " shl16insli %1, %1, hw1(_DYNAMIC - 1b)\n" - " }\n" - " {\n" - " shl16insli %0, %0, hw0(_GLOBAL_OFFSET_TABLE_ - 1b)\n" - " shl16insli %1, %1, hw0(_DYNAMIC - 1b)\n" - " }\n" - " {\n" - " add %0, %0, %2\n" - " add %1, %1, %2\n" - " }" - : "=r" (got), "=r" (dynamic), "=r" (tmp)); -#else - asm( " lnk %0\n" - "1: {\n" - " addli %0, %0, lo16(_GLOBAL_OFFSET_TABLE_ - 1b)\n" - " addli %1, %0, lo16(_DYNAMIC - 1b)\n" - " }\n" - " {\n" - " auli %0, %0, ha16(_GLOBAL_OFFSET_TABLE_ - 1b)\n" - " auli %1, %1, ha16(_DYNAMIC - 1b)\n" - " }\n" - : "=r" (got), "=r" (dynamic)); -#endif - - return dynamic - *got; -} - -/* Flush some range of the instruction cache. If invoked prior to - actually setting dl_pagesize, we conservatively use 4KB, which - is the smallest page size we could plausibly be running with. */ -static inline void -_dl_flush_icache (const void *addr, unsigned long size) -{ - invalidate_icache (addr, size, GLRO(dl_pagesize) ? : 4096); -} - -/* Set up the loaded object described by L so its unrelocated PLT - entries will jump to the on-demand fixup code in dl-runtime.c. */ - -static inline int __attribute__ ((unused)) -elf_machine_runtime_setup (struct link_map *l, int lazy, int profile) -{ - ElfW(Addr) *gotplt; - extern void _dl_runtime_resolve (ElfW(Word)); - extern void _dl_runtime_profile (ElfW(Word)); - - if (l->l_info[DT_JMPREL] && lazy) - { - gotplt = (ElfW(Addr) *) D_PTR (l, l_info[DT_PLTGOT]); - - /* The GOT entries for functions in the PLT have not yet been filled - in. Their initial contents will arrange when called to put in - registers an offset into the .rel.plt section, and gotplt[0], then - jump to gotplt[1]. */ - - /* Identify this shared object. */ - gotplt[0] = (ElfW(Addr)) l; - - /* The gotplt[1] entry contains the address of a function which gets - called to get the address of a so far unresolved function and jump - to it. The profiling extension of the dynamic linker allows to - intercept the calls to collect information. In this case we don't - store the address in the GOTPLT so that all future calls also end - in this function. */ - if (__builtin_expect (profile, 0)) - { - gotplt[1] = (ElfW(Addr)) &_dl_runtime_profile; - - if (GLRO(dl_profile) != NULL - && _dl_name_match_p (GLRO(dl_profile), l)) - /* This is the object we are looking for. Say that we really - want profiling and the timers are started. */ - GL(dl_profile_map) = l; - } - else - /* This function will get called to fix up the GOTPLT entry - indicated by the offset on the stack, and then jump to the - resolved address. */ - gotplt[1] = (ElfW(Addr)) &_dl_runtime_resolve; - } - - return lazy; -} - -#if __WORDSIZE == 32 -/* Mask identifying addresses reserved for the user program, - where the dynamic linker should not map anything. */ -#define ELF_MACHINE_USER_ADDRESS_MASK 0xf8000000UL -#endif - -/* Initial entry point code for the dynamic linker. - The C function `_dl_start' is the real entry point; - its return value is the user program's entry point. */ - -#define RTLD_START asm (".globl _dl_start"); - -#ifndef RTLD_START_SPECIAL_INIT -#define RTLD_START_SPECIAL_INIT /* nothing */ -#endif - -/* Wrap a generic Tilera relocation type. */ -#ifdef __tilegx__ -#define R_TILE(x) R_TILEGX_##x -#define __R_TILE_TLS(x,c) R_TILEGX_TLS_##x##c -#define _R_TILE_TLS(x,c) __R_TILE_TLS(x,c) -#define R_TILE_TLS(x) _R_TILE_TLS(x,__ELF_NATIVE_CLASS) -#else -#define R_TILE(x) R_TILEPRO_##x -#define R_TILE_TLS(x) R_TILEPRO_TLS_##x##32 -#endif - -/* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry or - TLS variable, so undefined references should not be allowed to - define the value. - ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve to one - of the main executable's symbols, as for a COPY reloc. */ -#define elf_machine_type_class(type) \ - ((((type) == R_TILE(JMP_SLOT) || (type) == R_TILE_TLS(DTPMOD) \ - || (type) == R_TILE_TLS(DTPOFF) || (type) == R_TILE_TLS(TPOFF)) \ - * ELF_RTYPE_CLASS_PLT) \ - | (((type) == R_TILE(COPY)) * ELF_RTYPE_CLASS_COPY)) - -/* A reloc type used for ld.so cmdline arg lookups to reject PLT entries. */ -#define ELF_MACHINE_JMP_SLOT R_TILE(JMP_SLOT) - -/* TILE never uses Elf32_Rel relocations. */ -#define ELF_MACHINE_NO_REL 1 - -/* We define an initialization functions. This is called very early in - _dl_sysdep_start. */ -#define DL_PLATFORM_INIT dl_platform_init () - -static inline void __attribute__ ((unused)) -dl_platform_init (void) -{ - if (GLRO(dl_platform) != NULL && *GLRO(dl_platform) == '\0') - /* Avoid an empty string which would disturb us. */ - GLRO(dl_platform) = NULL; -} - -static inline ElfW(Addr) -elf_machine_fixup_plt (struct link_map *map, lookup_t t, - const ElfW(Rela) *reloc, - ElfW(Addr) *reloc_addr, ElfW(Addr) value) -{ - return *reloc_addr = value; -} - -/* Return the final value of a plt relocation. */ -static inline ElfW(Addr) -elf_machine_plt_value (struct link_map *map, const ElfW(Rela) *reloc, - ElfW(Addr) value) -{ - return value; -} - -/* Support notifying the simulator about new objects. */ -void internal_function _dl_after_load (struct link_map *l); -#define DL_AFTER_LOAD _dl_after_load - -/* Names of the architecture-specific auditing callback functions. */ -#define ARCH_LA_PLTENTER tile_gnu_pltenter -#define ARCH_LA_PLTEXIT tile_gnu_pltexit - -#endif /* !dl_machine_h */ - - -#ifdef RESOLVE_MAP - -struct reloc_howto -{ - /* Right shift operand by this number of bits. */ - unsigned char right_shift; - -#ifdef __tilegx__ - /* If nonzero, this is updating a code bundle. */ - unsigned char is_bundle_update; -#else - /* If nonzero, add 0x8000 to the value. */ - unsigned char add_0x8000; -#endif - - /* If nonzero, subtract the containing address from the address. */ - unsigned char is_pcrel; - - /* Size in bytes, or 0 if this table entry should be ignored. */ - unsigned char byte_size; -}; - -/* Relocation information. Cannot contain create_* function pointers - because then the table would not be position-independent. */ -static const struct reloc_howto howto[] = -{ -#ifdef __tilegx__ - -# if __WORDSIZE == 32 - /* The GX -m32 loader only handles 32-bit types, so it will be confused - by shifts larger than that. We convert them to just sign-extend; - they usually indicate a program bug or missed optimization, but we - have to handle them correctly anyway. */ -# define S32 31 -# define S48 31 -# else -# define S32 32 -# define S48 48 -# endif - - /* R_TILEGX_NONE */ { 0, 0, 0, 0 }, - /* R_TILEGX_64 */ { 0, 0, 0, 8 }, - /* R_TILEGX_32 */ { 0, 0, 0, 4 }, - /* R_TILEGX_16 */ { 0, 0, 0, 2 }, - /* R_TILEGX_8 */ { 0, 0, 0, 1 }, - /* R_TILEGX_64_PCREL */ { 0, 0, 1, 8 }, - /* R_TILEGX_32_PCREL */ { 0, 0, 1, 4 }, - /* R_TILEGX_16_PCREL */ { 0, 0, 1, 2 }, - /* R_TILEGX_8_PCREL */ { 0, 0, 1, 1 }, - /* R_TILEGX_HW0 */ { 0, 0, 0, 0 }, - /* R_TILEGX_HW1 */ { 16, 0, 0, 0 }, - /* R_TILEGX_HW2 */ { S32, 0, 0, 0 }, - /* R_TILEGX_HW3 */ { S48, 0, 0, 0 }, - /* R_TILEGX_HW0_LAST */ { 0, 0, 0, 0 }, - /* R_TILEGX_HW1_LAST */ { 16, 0, 0, 0 }, - /* R_TILEGX_HW2_LAST */ { S32, 0, 0, 0 }, - /* R_TILEGX_COPY */ { 0, 0, 0, 0 }, - /* R_TILEGX_GLOB_DAT */ { 0, 0, 0, 8 }, - /* R_TILEGX_JMP_SLOT */ { 0, 0, 0, 0 }, - /* R_TILEGX_RELATIVE */ { 0, 0, 0, 0 }, - /* R_TILEGX_BROFF_X1 */ { 3, 1, 1, 8 }, - /* R_TILEGX_JUMPOFF_X1 */ { 3, 1, 1, 8 }, - /* R_TILEGX_JUMPOFF_X1_PLT */ { 3, 1, 1, 8 }, - /* R_TILEGX_IMM8_X0 */ { 0, 1, 0, 8 }, - /* R_TILEGX_IMM8_Y0 */ { 0, 1, 0, 8 }, - /* R_TILEGX_IMM8_X1 */ { 0, 1, 0, 8 }, - /* R_TILEGX_IMM8_Y1 */ { 0, 1, 0, 8 }, - /* R_TILEGX_DEST_IMM8_X1 */ { 0, 1, 0, 8 }, - /* R_TILEGX_MT_IMM14_X1 */ { 0, 1, 0, 8 }, - /* R_TILEGX_MF_IMM14_X1 */ { 0, 1, 0, 8 }, - /* R_TILEGX_MMSTART_X0 */ { 0, 1, 0, 8 }, - /* R_TILEGX_MMEND_X0 */ { 0, 1, 0, 8 }, - /* R_TILEGX_SHAMT_X0 */ { 0, 1, 0, 8 }, - /* R_TILEGX_SHAMT_X1 */ { 0, 1, 0, 8 }, - /* R_TILEGX_SHAMT_Y0 */ { 0, 1, 0, 8 }, - /* R_TILEGX_SHAMT_Y1 */ { 0, 1, 0, 8 }, - /* R_TILEGX_IMM16_X0_HW0 */ { 0, 1, 0, 8 }, - /* R_TILEGX_IMM16_X1_HW0 */ { 0, 1, 0, 8 }, - /* R_TILEGX_IMM16_X0_HW1 */ { 16, 1, 0, 8 }, - /* R_TILEGX_IMM16_X1_HW1 */ { 16, 1, 0, 8 }, - /* R_TILEGX_IMM16_X0_HW2 */ { S32, 1, 0, 8 }, - /* R_TILEGX_IMM16_X1_HW2 */ { S32, 1, 0, 8 }, - /* R_TILEGX_IMM16_X0_HW3 */ { S48, 1, 0, 8 }, - /* R_TILEGX_IMM16_X1_HW3 */ { S48, 1, 0, 8 }, - /* R_TILEGX_IMM16_X0_HW0_LAST */ { 0, 1, 0, 8 }, - /* R_TILEGX_IMM16_X1_HW0_LAST */ { 0, 1, 0, 8 }, - /* R_TILEGX_IMM16_X0_HW1_LAST */ { 16, 1, 0, 8 }, - /* R_TILEGX_IMM16_X1_HW1_LAST */ { 16, 1, 0, 8 }, - /* R_TILEGX_IMM16_X0_HW2_LAST */ { S32, 1, 0, 8 }, - /* R_TILEGX_IMM16_X1_HW2_LAST */ { S32, 1, 0, 8 }, - /* R_TILEGX_IMM16_X0_HW0_PCREL */ { 0, 1, 1, 8 }, - /* R_TILEGX_IMM16_X1_HW0_PCREL */ { 0, 1, 1, 8 }, - /* R_TILEGX_IMM16_X0_HW1_PCREL */ { 16, 1, 1, 8 }, - /* R_TILEGX_IMM16_X1_HW1_PCREL */ { 16, 1, 1, 8 }, - /* R_TILEGX_IMM16_X0_HW2_PCREL */ { S32, 1, 1, 8 }, - /* R_TILEGX_IMM16_X1_HW2_PCREL */ { S32, 1, 1, 8 }, - /* R_TILEGX_IMM16_X0_HW3_PCREL */ { S48, 1, 1, 8 }, - /* R_TILEGX_IMM16_X1_HW3_PCREL */ { S48, 1, 1, 8 }, - /* R_TILEGX_IMM16_X0_HW0_LAST_PCREL */ { 0, 1, 1, 8 }, - /* R_TILEGX_IMM16_X1_HW0_LAST_PCREL */ { 0, 1, 1, 8 }, - /* R_TILEGX_IMM16_X0_HW1_LAST_PCREL */ { 16, 1, 1, 8 }, - /* R_TILEGX_IMM16_X1_HW1_LAST_PCREL */ { 16, 1, 1, 8 }, - /* R_TILEGX_IMM16_X0_HW2_LAST_PCREL */ { S32, 1, 1, 8 }, - /* R_TILEGX_IMM16_X1_HW2_LAST_PCREL */ { S32, 1, 1, 8 }, - /* R_TILEGX_IMM16_X0_HW0_GOT */ { 0, 1, 0, 0 }, - /* R_TILEGX_IMM16_X1_HW0_GOT */ { 0, 1, 0, 0 }, - /* R_TILEGX_IMM16_X0_HW1_GOT */ { 16, 1, 0, 0 }, - /* R_TILEGX_IMM16_X1_HW1_GOT */ { 16, 1, 0, 0 }, - /* R_TILEGX_IMM16_X0_HW2_GOT */ { S32, 1, 0, 0 }, - /* R_TILEGX_IMM16_X1_HW2_GOT */ { S32, 1, 0, 0 }, - /* R_TILEGX_IMM16_X0_HW3_GOT */ { S48, 1, 0, 0 }, - /* R_TILEGX_IMM16_X1_HW3_GOT */ { S48, 1, 0, 0 }, - /* R_TILEGX_IMM16_X0_HW0_LAST_GOT */ { 0, 1, 0, 0 }, - /* R_TILEGX_IMM16_X1_HW0_LAST_GOT */ { 0, 1, 0, 0 }, - /* R_TILEGX_IMM16_X0_HW1_LAST_GOT */ { 16, 1, 0, 0 }, - /* R_TILEGX_IMM16_X1_HW1_LAST_GOT */ { 16, 1, 0, 0 }, - /* R_TILEGX_IMM16_X0_HW2_LAST_GOT */ { S32, 1, 0, 0 }, - /* R_TILEGX_IMM16_X1_HW2_LAST_GOT */ { S32, 1, 0, 0 }, - /* R_TILEGX_IMM16_X0_HW0_TLS_GD */ { 0, 1, 0, 8 }, - /* R_TILEGX_IMM16_X1_HW0_TLS_GD */ { 0, 1, 0, 8 }, - /* R_TILEGX_IMM16_X0_HW1_TLS_GD */ { 16, 1, 0, 8 }, - /* R_TILEGX_IMM16_X1_HW1_TLS_GD */ { 16, 1, 0, 8 }, - /* R_TILEGX_IMM16_X0_HW2_TLS_GD */ { S32, 1, 0, 8 }, - /* R_TILEGX_IMM16_X1_HW2_TLS_GD */ { S32, 1, 0, 8 }, - /* R_TILEGX_IMM16_X0_HW3_TLS_GD */ { S48, 1, 0, 8 }, - /* R_TILEGX_IMM16_X1_HW3_TLS_GD */ { S48, 1, 0, 8 }, - /* R_TILEGX_IMM16_X0_HW0_LAST_TLS_GD */{ 0, 1, 0, 8 }, - /* R_TILEGX_IMM16_X1_HW0_LAST_TLS_GD */{ 0, 1, 0, 8 }, - /* R_TILEGX_IMM16_X0_HW1_LAST_TLS_GD */{ 16, 1, 0, 8 }, - /* R_TILEGX_IMM16_X1_HW1_LAST_TLS_GD */{ 16, 1, 0, 8 }, - /* R_TILEGX_IMM16_X0_HW2_LAST_TLS_GD */{ S32, 1, 0, 8 }, - /* R_TILEGX_IMM16_X1_HW2_LAST_TLS_GD */{ S32, 1, 0, 8 }, - /* R_TILEGX_IMM16_X0_HW0_TLS_IE */ { 0, 1, 0, 8 }, - /* R_TILEGX_IMM16_X1_HW0_TLS_IE */ { 0, 1, 0, 8 }, - /* R_TILEGX_IMM16_X0_HW1_TLS_IE */ { 16, 1, 0, 8 }, - /* R_TILEGX_IMM16_X1_HW1_TLS_IE */ { 16, 1, 0, 8 }, - /* R_TILEGX_IMM16_X0_HW2_TLS_IE */ { S32, 1, 0, 8 }, - /* R_TILEGX_IMM16_X1_HW2_TLS_IE */ { S32, 1, 0, 8 }, - /* R_TILEGX_IMM16_X0_HW3_TLS_IE */ { S48, 1, 0, 8 }, - /* R_TILEGX_IMM16_X1_HW3_TLS_IE */ { S48, 1, 0, 8 }, - /* R_TILEGX_IMM16_X0_HW0_LAST_TLS_IE */{ 0, 1, 0, 8 }, - /* R_TILEGX_IMM16_X1_HW0_LAST_TLS_IE */{ 0, 1, 0, 8 }, - /* R_TILEGX_IMM16_X0_HW1_LAST_TLS_IE */{ 16, 1, 0, 8 }, - /* R_TILEGX_IMM16_X1_HW1_LAST_TLS_IE */{ 16, 1, 0, 8 }, - /* R_TILEGX_IMM16_X0_HW2_LAST_TLS_IE */{ S32, 1, 0, 8 }, - /* R_TILEGX_IMM16_X1_HW2_LAST_TLS_IE */{ S32, 1, 0, 8 }, - /* R_TILEGX_TLS_DTPMOD64 */ { 0, 0, 0, 0 }, - /* R_TILEGX_TLS_DTPOFF64 */ { 0, 0, 0, 0 }, - /* R_TILEGX_TLS_TPOFF64 */ { 0, 0, 0, 0 }, - /* R_TILEGX_TLS_DTPMOD32 */ { 0, 0, 0, 0 }, - /* R_TILEGX_TLS_DTPOFF32 */ { 0, 0, 0, 0 }, - /* R_TILEGX_TLS_TPOFF32 */ { 0, 0, 0, 0 } -#else - /* R_TILEPRO_NONE */ { 0, 0, 0, 0 }, - /* R_TILEPRO_32 */ { 0, 0, 0, 4 }, - /* R_TILEPRO_16 */ { 0, 0, 0, 2 }, - /* R_TILEPRO_8 */ { 0, 0, 0, 1 }, - /* R_TILEPRO_32_PCREL */ { 0, 0, 1, 4 }, - /* R_TILEPRO_16_PCREL */ { 0, 0, 1, 2 }, - /* R_TILEPRO_8_PCREL */ { 0, 0, 1, 1 }, - /* R_TILEPRO_LO16 */ { 0, 0, 0, 2 }, - /* R_TILEPRO_HI16 */ { 16, 0, 0, 2 }, - /* R_TILEPRO_HA16 */ { 16, 1, 0, 2 }, - /* R_TILEPRO_COPY */ { 0, 0, 0, 0 }, - /* R_TILEPRO_GLOB_DAT */ { 0, 0, 0, 4 }, - /* R_TILEPRO_JMP_SLOT */ { 0, 0, 0, 0 }, - /* R_TILEPRO_RELATIVE */ { 0, 0, 0, 0 }, - /* R_TILEPRO_BROFF_X1 */ { 3, 0, 1, 8 }, - /* R_TILEPRO_JOFFLONG_X1 */ { 3, 0, 1, 8 }, - /* R_TILEPRO_JOFFLONG_X1_PLT */ { 3, 0, 1, 8 }, - /* R_TILEPRO_IMM8_X0 */ { 0, 0, 0, 8 }, - /* R_TILEPRO_IMM8_Y0 */ { 0, 0, 0, 8 }, - /* R_TILEPRO_IMM8_X1 */ { 0, 0, 0, 8 }, - /* R_TILEPRO_IMM8_Y1 */ { 0, 0, 0, 8 }, - /* R_TILEPRO_MT_IMM15_X1 */ { 0, 0, 0, 8 }, - /* R_TILEPRO_MF_IMM15_X1 */ { 0, 0, 0, 8 }, - /* R_TILEPRO_IMM16_X0 */ { 0, 0, 0, 8 }, - /* R_TILEPRO_IMM16_X1 */ { 0, 0, 0, 8 }, - /* R_TILEPRO_IMM16_X0_LO */ { 0, 0, 0, 8 }, - /* R_TILEPRO_IMM16_X1_LO */ { 0, 0, 0, 8 }, - /* R_TILEPRO_IMM16_X0_HI */ { 16, 0, 0, 8 }, - /* R_TILEPRO_IMM16_X1_HI */ { 16, 0, 0, 8 }, - /* R_TILEPRO_IMM16_X0_HA */ { 16, 1, 0, 8 }, - /* R_TILEPRO_IMM16_X1_HA */ { 16, 1, 0, 8 }, - /* R_TILEPRO_IMM16_X0_PCREL */ { 0, 0, 1, 8 }, - /* R_TILEPRO_IMM16_X1_PCREL */ { 0, 0, 1, 8 }, - /* R_TILEPRO_IMM16_X0_LO_PCREL */ { 0, 0, 1, 8 }, - /* R_TILEPRO_IMM16_X1_LO_PCREL */ { 0, 0, 1, 8 }, - /* R_TILEPRO_IMM16_X0_HI_PCREL */ { 16, 0, 1, 8 }, - /* R_TILEPRO_IMM16_X1_HI_PCREL */ { 16, 0, 1, 8 }, - /* R_TILEPRO_IMM16_X0_HA_PCREL */ { 16, 1, 1, 8 }, - /* R_TILEPRO_IMM16_X1_HA_PCREL */ { 16, 1, 1, 8 }, - /* R_TILEPRO_IMM16_X0_GOT */ { 0, 0, 0, 0 }, - /* R_TILEPRO_IMM16_X1_GOT */ { 0, 0, 0, 0 }, - /* R_TILEPRO_IMM16_X0_GOT_LO */ { 0, 0, 0, 0 }, - /* R_TILEPRO_IMM16_X1_GOT_LO */ { 0, 0, 0, 0 }, - /* R_TILEPRO_IMM16_X0_GOT_HI */ { 0, 0, 0, 0 }, - /* R_TILEPRO_IMM16_X1_GOT_HI */ { 0, 0, 0, 0 }, - /* R_TILEPRO_IMM16_X0_GOT_HA */ { 0, 0, 0, 0 }, - /* R_TILEPRO_IMM16_X1_GOT_HA */ { 0, 0, 0, 0 }, - /* R_TILEPRO_MMSTART_X0 */ { 0, 0, 0, 8 }, - /* R_TILEPRO_MMEND_X0 */ { 0, 0, 0, 8 }, - /* R_TILEPRO_MMSTART_X1 */ { 0, 0, 0, 8 }, - /* R_TILEPRO_MMEND_X1 */ { 0, 0, 0, 8 }, - /* R_TILEPRO_SHAMT_X0 */ { 0, 0, 0, 8 }, - /* R_TILEPRO_SHAMT_X1 */ { 0, 0, 0, 8 }, - /* R_TILEPRO_SHAMT_Y0 */ { 0, 0, 0, 8 }, - /* R_TILEPRO_SHAMT_Y1 */ { 0, 0, 0, 8 }, - /* R_TILEPRO_SN_BROFF */ { 0, 0, 0, 0 }, - /* R_TILEPRO_SN_IMM8 */ { 0, 0, 0, 0 }, - /* R_TILEPRO_SN_UIMM8 */ { 0, 0, 0, 0 }, - /* R_TILEPRO_SN_BYTE0 */ { 0, 0, 0, 0 }, - /* R_TILEPRO_SN_BYTE1 */ { 0, 0, 0, 0 }, - /* R_TILEPRO_SN_BYTE2 */ { 0, 0, 0, 0 }, - /* R_TILEPRO_SN_BYTE3 */ { 0, 0, 0, 0 }, - /* R_TILEPRO_SN_SPCREL0 */ { 0, 0, 0, 0 }, - /* R_TILEPRO_SN_SPCREL1 */ { 0, 0, 0, 0 }, - /* R_TILEPRO_SN_SPCREL2 */ { 0, 0, 0, 0 }, - /* R_TILEPRO_SN_SPCREL3 */ { 0, 0, 0, 0 }, - /* R_TILEPRO_IMM16_X0_TLS_GD */ { 0, 0, 0, 8 }, - /* R_TILEPRO_IMM16_X1_TLS_GD */ { 0, 0, 0, 8 }, - /* R_TILEPRO_IMM16_X0_TLS_GD_LO */ { 0, 0, 0, 8 }, - /* R_TILEPRO_IMM16_X1_TLS_GD_LO */ { 0, 0, 0, 8 }, - /* R_TILEPRO_IMM16_X0_TLS_GD_HI */ { 16, 0, 0, 8 }, - /* R_TILEPRO_IMM16_X1_TLS_GD_HI */ { 16, 0, 0, 8 }, - /* R_TILEPRO_IMM16_X0_TLS_GD_HA */ { 16, 1, 0, 8 }, - /* R_TILEPRO_IMM16_X1_TLS_GD_HA */ { 16, 1, 0, 8 }, - /* R_TILEPRO_IMM16_X0_TLS_IE */ { 0, 0, 0, 8 }, - /* R_TILEPRO_IMM16_X1_TLS_IE */ { 0, 0, 0, 8 }, - /* R_TILEPRO_IMM16_X0_TLS_IE_LO */ { 0, 0, 0, 8 }, - /* R_TILEPRO_IMM16_X1_TLS_IE_LO */ { 0, 0, 0, 8 }, - /* R_TILEPRO_IMM16_X0_TLS_IE_HI */ { 16, 0, 0, 8 }, - /* R_TILEPRO_IMM16_X1_TLS_IE_HI */ { 16, 0, 0, 8 }, - /* R_TILEPRO_IMM16_X0_TLS_IE_HA */ { 16, 1, 0, 8 }, - /* R_TILEPRO_IMM16_X1_TLS_IE_HA */ { 16, 1, 0, 8 }, - /* R_TILEPRO_TLS_DTPMOD32 */ { 0, 0, 0, 0 }, - /* R_TILEPRO_TLS_DTPOFF32 */ { 0, 0, 0, 0 }, - /* R_TILEPRO_TLS_TPOFF32 */ { 0, 0, 0, 0 }, -#endif -}; - -#if __ELF_NATIVE_CLASS == 32 -#define ELFW_R_TYPE ELF32_R_TYPE -#define ELFW_ST_TYPE ELF32_ST_TYPE -#else -#define ELFW_R_TYPE ELF64_R_TYPE -#define ELFW_ST_TYPE ELF64_ST_TYPE -#endif - -/* Perform the relocation specified by RELOC and SYM (which is fully resolved). - MAP is the object containing the reloc. */ - -auto inline void __attribute__ ((always_inline)) -elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc, - const ElfW(Sym) *sym, const struct r_found_version *version, - void *const reloc_addr_arg, int skip_ifunc) -{ - ElfW(Addr) *const reloc_addr = reloc_addr_arg; - const unsigned int r_type = ELFW_R_TYPE (reloc->r_info); - -#if !defined RTLD_BOOTSTRAP || !defined HAVE_Z_COMBRELOC - if (__builtin_expect (r_type == R_TILE(RELATIVE), 0)) - { -# if !defined RTLD_BOOTSTRAP && !defined HAVE_Z_COMBRELOC - /* This is defined in rtld.c, but nowhere in the static libc.a; - make the reference weak so static programs can still link. - This declaration cannot be done when compiling rtld.c - (i.e. #ifdef RTLD_BOOTSTRAP) because rtld.c contains the - common defn for _dl_rtld_map, which is incompatible with a - weak decl in the same file. */ -# ifndef SHARED - weak_extern (GL(dl_rtld_map)); -# endif - if (map != &GL(dl_rtld_map)) /* Already done in rtld itself. */ -# endif - *reloc_addr = map->l_addr + reloc->r_addend; - return; - } -#endif - - if (__builtin_expect (r_type == R_TILE(NONE), 0)) - return; - -#if !defined RTLD_BOOTSTRAP && !defined RESOLVE_CONFLICT_FIND_MAP - const ElfW(Sym) *const refsym = sym; -#endif - struct link_map *sym_map = RESOLVE_MAP (&sym, version, r_type); - ElfW(Addr) value; - - if (sym == NULL) - value = 0; - else if (ELFW_ST_TYPE (sym->st_info) == STT_SECTION) - value = map->l_addr; /* like a RELATIVE reloc */ - else - value = sym_map->l_addr + sym->st_value; - - if (sym != NULL - && __builtin_expect (ELFW(ST_TYPE) (sym->st_info) == STT_GNU_IFUNC, 0) - && __builtin_expect (sym->st_shndx != SHN_UNDEF, 1) - && __builtin_expect (!skip_ifunc, 1)) - value = ((Elf64_Addr (*) (void)) value) (); - - switch (r_type) - { - case R_TILE(JMP_SLOT): - elf_machine_fixup_plt (map, 0, reloc, reloc_addr, - value + reloc->r_addend); - return; - -#ifndef RESOLVE_CONFLICT_FIND_MAP - case R_TILE_TLS(DTPMOD): -# ifdef RTLD_BOOTSTRAP - /* During startup the dynamic linker is always the module - with index 1. - XXX If this relocation is necessary move before RESOLVE - call. */ - *reloc_addr = 1; -# else - /* Get the information from the link map returned by the - resolv function. */ - if (sym_map != NULL) - *reloc_addr = sym_map->l_tls_modid; -# endif - return; - case R_TILE_TLS(DTPOFF): -# ifndef RTLD_BOOTSTRAP - /* During relocation all TLS symbols are defined and used. - Therefore the offset is already correct. */ - if (sym != NULL) - *reloc_addr = sym->st_value + reloc->r_addend; -# endif - return; - case R_TILE_TLS(TPOFF): -# ifdef RTLD_BOOTSTRAP - *reloc_addr = sym->st_value + reloc->r_addend + map->l_tls_offset; -# else - if (sym != NULL) - { - CHECK_STATIC_TLS (map, sym_map); - *reloc_addr = (sym->st_value + reloc->r_addend - + sym_map->l_tls_offset); - } -#endif - return; -#endif /* use TLS */ - -#if !defined RTLD_BOOTSTRAP && !defined RESOLVE_CONFLICT_FIND_MAP - /* Not needed in dl-conflict.c. */ - case R_TILE(COPY): - if (sym == NULL) - /* This can happen in trace mode if an object could not be found. */ - return; - if (__builtin_expect (sym->st_size > refsym->st_size, 0) - || (__builtin_expect (sym->st_size < refsym->st_size, 0) - && __builtin_expect (GLRO(dl_verbose), 0))) - { - const char *strtab; - - strtab = (const char *) D_PTR (map,l_info[DT_STRTAB]); - _dl_error_printf ("%s: Symbol `%s' has different size in shared" - " object, consider re-linking\n", - RTLD_PROGNAME, strtab + refsym->st_name); - } - memcpy (reloc_addr_arg, (void *) value, - MIN (sym->st_size, refsym->st_size)); - return; -#endif - } - - /* All remaining relocations must be in the lookup table. */ - const struct reloc_howto *h = &howto[r_type]; - if ((unsigned int) r_type >= sizeof howto / sizeof howto[0] || - h->byte_size == 0) - { -#if !defined RTLD_BOOTSTRAP || defined _NDEBUG - /* We add these checks in the version to relocate ld.so only - if we are still debugging. */ - _dl_reloc_bad_type (map, r_type, 0); -#endif - return; - } - - value += reloc->r_addend; - - /* The lookup table entry knows how to perform this reloc. */ - if (h->is_pcrel) - value -= (ElfW(Addr)) reloc_addr; - -#ifndef __tilegx__ - if (h->add_0x8000) - value += 0x8000; -#endif - - value >>= h->right_shift; - - switch (h->byte_size) - { - case 1: - *(char *) reloc_addr = value; - return; - case 2: - *(short *) reloc_addr = value; - return; - case 4: - *(int *) reloc_addr = value; - return; -#ifdef __tilegx__ - case 8: - if (!h->is_bundle_update) - { - *(ElfW(Addr) *) reloc_addr = value; - return; - } -#endif - } - - /* We are updating a bundle, so use the function pointer that - swizzles the operand bits into the right location. */ - - tile_bundle_bits *p = (tile_bundle_bits *) reloc_addr; - tile_bundle_bits bits = *p; - -#define MUNGE(func) do { \ - bits = ((bits & ~create_##func (-1)) | create_##func (value)); \ - if (get_##func (bits) != value) \ - _dl_signal_error (0, map->l_name, NULL, \ - "relocation value too large for " #func); \ - } while (0) - -#define MUNGE_NOCHECK(func) \ - bits = ((bits & ~create_##func (-1)) | create_##func (value)) - - switch (r_type) - { -#ifdef __tilegx__ - case R_TILEGX_BROFF_X1: - MUNGE (BrOff_X1); - break; - case R_TILEGX_JUMPOFF_X1: - case R_TILEGX_JUMPOFF_X1_PLT: - MUNGE (JumpOff_X1); - break; - case R_TILEGX_IMM8_X0: - MUNGE (Imm8_X0); - break; - case R_TILEGX_IMM8_Y0: - MUNGE (Imm8_Y0); - break; - case R_TILEGX_IMM8_X1: - MUNGE (Imm8_X1); - break; - case R_TILEGX_IMM8_Y1: - MUNGE (Imm8_Y1); - break; - case R_TILEGX_MT_IMM14_X1: - MUNGE (MT_Imm14_X1); - break; - case R_TILEGX_MF_IMM14_X1: - MUNGE (MF_Imm14_X1); - break; - case R_TILEGX_IMM16_X0_HW0: - case R_TILEGX_IMM16_X0_HW1: - case R_TILEGX_IMM16_X0_HW2: - case R_TILEGX_IMM16_X0_HW3: - case R_TILEGX_IMM16_X0_HW0_PCREL: - case R_TILEGX_IMM16_X0_HW1_PCREL: - case R_TILEGX_IMM16_X0_HW2_PCREL: - case R_TILEGX_IMM16_X0_HW3_PCREL: - case R_TILEGX_IMM16_X0_HW0_TLS_GD: - case R_TILEGX_IMM16_X0_HW0_TLS_IE: - MUNGE_NOCHECK (Imm16_X0); - break; - case R_TILEGX_IMM16_X0_HW0_LAST: - case R_TILEGX_IMM16_X0_HW1_LAST: - case R_TILEGX_IMM16_X0_HW2_LAST: - case R_TILEGX_IMM16_X0_HW0_LAST_PCREL: - case R_TILEGX_IMM16_X0_HW1_LAST_PCREL: - case R_TILEGX_IMM16_X0_HW2_LAST_PCREL: - case R_TILEGX_IMM16_X0_HW0_LAST_TLS_GD: - case R_TILEGX_IMM16_X0_HW1_LAST_TLS_GD: - case R_TILEGX_IMM16_X0_HW0_LAST_TLS_IE: - case R_TILEGX_IMM16_X0_HW1_LAST_TLS_IE: - MUNGE (Imm16_X0); - break; - case R_TILEGX_IMM16_X1_HW0: - case R_TILEGX_IMM16_X1_HW1: - case R_TILEGX_IMM16_X1_HW2: - case R_TILEGX_IMM16_X1_HW3: - case R_TILEGX_IMM16_X1_HW0_PCREL: - case R_TILEGX_IMM16_X1_HW1_PCREL: - case R_TILEGX_IMM16_X1_HW2_PCREL: - case R_TILEGX_IMM16_X1_HW3_PCREL: - case R_TILEGX_IMM16_X1_HW0_TLS_GD: - case R_TILEGX_IMM16_X1_HW0_TLS_IE: - MUNGE_NOCHECK (Imm16_X1); - break; - case R_TILEGX_IMM16_X1_HW0_LAST: - case R_TILEGX_IMM16_X1_HW1_LAST: - case R_TILEGX_IMM16_X1_HW2_LAST: - case R_TILEGX_IMM16_X1_HW0_LAST_PCREL: - case R_TILEGX_IMM16_X1_HW1_LAST_PCREL: - case R_TILEGX_IMM16_X1_HW2_LAST_PCREL: - case R_TILEGX_IMM16_X1_HW0_LAST_TLS_GD: - case R_TILEGX_IMM16_X1_HW1_LAST_TLS_GD: - case R_TILEGX_IMM16_X1_HW0_LAST_TLS_IE: - case R_TILEGX_IMM16_X1_HW1_LAST_TLS_IE: - MUNGE (Imm16_X1); - break; - case R_TILEGX_MMSTART_X0: - MUNGE (BFStart_X0); - break; - case R_TILEGX_MMEND_X0: - MUNGE (BFEnd_X0); - break; - case R_TILEGX_SHAMT_X0: - MUNGE (ShAmt_X0); - break; - case R_TILEGX_SHAMT_X1: - MUNGE (ShAmt_X1); - break; - case R_TILEGX_SHAMT_Y0: - MUNGE (ShAmt_Y0); - break; - case R_TILEGX_SHAMT_Y1: - MUNGE (ShAmt_Y1); - break; -#else - case R_TILEPRO_BROFF_X1: - MUNGE (BrOff_X1); - break; - case R_TILEPRO_JOFFLONG_X1: - case R_TILEPRO_JOFFLONG_X1_PLT: - MUNGE_NOCHECK (JOffLong_X1); /* holds full 32-bit value */ - break; - case R_TILEPRO_IMM8_X0: - MUNGE (Imm8_X0); - break; - case R_TILEPRO_IMM8_Y0: - MUNGE (Imm8_Y0); - break; - case R_TILEPRO_IMM8_X1: - MUNGE (Imm8_X1); - break; - case R_TILEPRO_IMM8_Y1: - MUNGE (Imm8_Y1); - break; - case R_TILEPRO_MT_IMM15_X1: - MUNGE (MT_Imm15_X1); - break; - case R_TILEPRO_MF_IMM15_X1: - MUNGE (MF_Imm15_X1); - break; - case R_TILEPRO_IMM16_X0_LO: - case R_TILEPRO_IMM16_X0_HI: - case R_TILEPRO_IMM16_X0_HA: - case R_TILEPRO_IMM16_X0_LO_PCREL: - case R_TILEPRO_IMM16_X0_HI_PCREL: - case R_TILEPRO_IMM16_X0_HA_PCREL: - case R_TILEPRO_IMM16_X0_TLS_GD_LO: - case R_TILEPRO_IMM16_X0_TLS_GD_HI: - case R_TILEPRO_IMM16_X0_TLS_GD_HA: - case R_TILEPRO_IMM16_X0_TLS_IE_LO: - case R_TILEPRO_IMM16_X0_TLS_IE_HI: - case R_TILEPRO_IMM16_X0_TLS_IE_HA: - MUNGE_NOCHECK (Imm16_X0); - break; - case R_TILEPRO_IMM16_X0: - case R_TILEPRO_IMM16_X0_PCREL: - case R_TILEPRO_IMM16_X0_TLS_GD: - case R_TILEPRO_IMM16_X0_TLS_IE: - MUNGE (Imm16_X0); - break; - case R_TILEPRO_IMM16_X1_LO: - case R_TILEPRO_IMM16_X1_HI: - case R_TILEPRO_IMM16_X1_HA: - case R_TILEPRO_IMM16_X1_LO_PCREL: - case R_TILEPRO_IMM16_X1_HI_PCREL: - case R_TILEPRO_IMM16_X1_HA_PCREL: - case R_TILEPRO_IMM16_X1_TLS_GD_LO: - case R_TILEPRO_IMM16_X1_TLS_GD_HI: - case R_TILEPRO_IMM16_X1_TLS_GD_HA: - case R_TILEPRO_IMM16_X1_TLS_IE_LO: - case R_TILEPRO_IMM16_X1_TLS_IE_HI: - case R_TILEPRO_IMM16_X1_TLS_IE_HA: - MUNGE_NOCHECK (Imm16_X1); - break; - case R_TILEPRO_IMM16_X1: - case R_TILEPRO_IMM16_X1_PCREL: - case R_TILEPRO_IMM16_X1_TLS_GD: - case R_TILEPRO_IMM16_X1_TLS_IE: - MUNGE (Imm16_X1); - break; - case R_TILEPRO_MMSTART_X0: - MUNGE (MMStart_X0); - break; - case R_TILEPRO_MMEND_X0: - MUNGE (MMEnd_X0); - break; - case R_TILEPRO_MMSTART_X1: - MUNGE (MMStart_X1); - break; - case R_TILEPRO_MMEND_X1: - MUNGE (MMEnd_X1); - break; - case R_TILEPRO_SHAMT_X0: - MUNGE (ShAmt_X0); - break; - case R_TILEPRO_SHAMT_X1: - MUNGE (ShAmt_X1); - break; - case R_TILEPRO_SHAMT_Y0: - MUNGE (ShAmt_Y0); - break; - case R_TILEPRO_SHAMT_Y1: - MUNGE (ShAmt_Y1); - break; -#endif - } -#undef MUNGE - *p = bits; - _dl_flush_icache (p, sizeof (*p)); -} - -auto inline void __attribute__ ((always_inline)) -elf_machine_rela_relative (ElfW(Addr) l_addr, const ElfW(Rela) *reloc, - void *const reloc_addr_arg) -{ - ElfW(Addr) *const reloc_addr = reloc_addr_arg; - *reloc_addr = l_addr + reloc->r_addend; -} - -auto inline void __attribute__ ((always_inline)) -elf_machine_lazy_rel (struct link_map *map, - ElfW(Addr) l_addr, const ElfW(Rela) *reloc, - int skip_ifunc) -{ - const unsigned int r_type = ELF32_R_TYPE (reloc->r_info); - - /* Check for unexpected PLT reloc type. */ - if (__builtin_expect (r_type == R_TILE(JMP_SLOT), 1)) - { - *(ElfW(Addr) *) (l_addr + reloc->r_offset) += l_addr; - } - else - _dl_reloc_bad_type (map, r_type, 1); -} - -#endif /* RESOLVE_MAP */ diff --git a/ports/sysdeps/tile/dl-runtime.c b/ports/sysdeps/tile/dl-runtime.c deleted file mode 100644 index 3bfb830320..0000000000 --- a/ports/sysdeps/tile/dl-runtime.c +++ /dev/null @@ -1,158 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -/* Like x86_64, we pass the index of the relocation and not its offset. - In _dl_profile_fixup and _dl_call_pltexit we also use the index. - Therefore it is wasteful to compute the offset in the trampoline - just to reverse the operation immediately afterwards. */ -#define reloc_offset reloc_arg * sizeof (PLTREL) -#define reloc_index reloc_arg - -#include - -#include -#include - -/* Like realpath(), but simplified: no dynamic memory use, no lstat(), - no set_errno(), no valid "rpath" on error, etc. This handles some - simple cases where the simulator might not have a valid entry for - a loaded Elf object, in particular dlopen() with a relative path. - For this relatively rare case, one could also imagine using - link_map.l_origin to avoid the getcwd() here, but the simpler code - here seems like a better solution. */ -static char * -dl_realpath (const char *name, char *rpath) -{ - char *dest; - const char *start, *end; - - if (name[0] != '/') - { - if (!__getcwd (rpath, PATH_MAX)) - return NULL; - dest = __rawmemchr (rpath, '\0'); - } - else - { - rpath[0] = '/'; - dest = rpath + 1; - } - - for (start = end = name; *start; start = end) - { - /* Skip sequence of multiple path-separators. */ - while (*start == '/') - ++start; - - /* Find end of path component. */ - for (end = start; *end && *end != '/'; ++end) - /* Nothing. */; - - if (end - start == 0) - break; - else if (end - start == 1 && start[0] == '.') - /* nothing */; - else if (end - start == 2 && start[0] == '.' && start[1] == '.') - { - /* Back up to previous component, ignore if at root already. */ - if (dest > rpath + 1) - while ((--dest)[-1] != '/'); - } - else - { - if (dest[-1] != '/') - *dest++ = '/'; - - if (dest + (end - start) >= rpath + PATH_MAX) - return NULL; - - dest = __mempcpy (dest, start, end - start); - *dest = '\0'; - } - } - if (dest > rpath + 1 && dest[-1] == '/') - --dest; - *dest = '\0'; - - return rpath; -} - -/* Support notifying the simulator about new objects. */ -void internal_function -_dl_after_load (struct link_map *l) -{ - int shift; - char pathbuf[PATH_MAX]; - char *path; - - /* Don't bother if not in the simulator. */ - if (__insn_mfspr (SPR_SIM_CONTROL) == 0) - return; - -#define DLPUTC(c) __insn_mtspr (SPR_SIM_CONTROL, \ - (SIM_CONTROL_DLOPEN \ - | ((c) << _SIM_CONTROL_OPERATOR_BITS))) - - /* Write the library address in hex. */ - DLPUTC ('0'); - DLPUTC ('x'); - for (shift = (int) sizeof (unsigned long) * 8 - 4; shift >= 0; shift -= 4) - DLPUTC ("0123456789abcdef"[(l->l_map_start >> shift) & 0xF]); - DLPUTC (':'); - - /* Write the library path, including the terminating '\0'. */ - path = dl_realpath (l->l_name, pathbuf) ?: l->l_name; - for (size_t i = 0;; i++) - { - DLPUTC (path[i]); - if (path[i] == '\0') - break; - } -#undef DLPUTC -} - -/* Support notifying the simulator about removed objects prior to munmap(). */ -static void -sim_dlclose (ElfW(Addr) map_start) -{ - int shift; - - /* Don't bother if not in the simulator. */ - if (__insn_mfspr (SPR_SIM_CONTROL) == 0) - return; - -#define DLPUTC(c) __insn_mtspr (SPR_SIM_CONTROL, \ - (SIM_CONTROL_DLCLOSE \ - | ((c) << _SIM_CONTROL_OPERATOR_BITS))) - - /* Write the library address in hex. */ - DLPUTC ('0'); - DLPUTC ('x'); - for (shift = (int) sizeof (unsigned long) * 8 - 4; shift >= 0; shift -= 4) - DLPUTC ("0123456789abcdef"[(map_start >> shift) & 0xF]); - DLPUTC ('\0'); - -#undef DLPUTC -} - -void internal_function -_dl_unmap (struct link_map *l) -{ - sim_dlclose (l->l_map_start); - __munmap ((void *) l->l_map_start, l->l_map_end - l->l_map_start); -} diff --git a/ports/sysdeps/tile/dl-start.S b/ports/sysdeps/tile/dl-start.S deleted file mode 100644 index d13f6096dc..0000000000 --- a/ports/sysdeps/tile/dl-start.S +++ /dev/null @@ -1,114 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include - - /* Get address of "sym" in "reg" assuming r51 holds ".Llink". */ - .macro pic_addr reg, sym -#ifdef __tilegx__ - moveli \reg, hw1_last(\sym - .Llink) - shl16insli \reg, \reg, hw0(\sym - .Llink) - ADD_PTR \reg, r51, \reg -#else - ADDLI_PTR \reg, r51, lo16(\sym - .Llink) - auli \reg, \reg, ha16(\sym - .Llink) -#endif - .endm - - .text -ENTRY (_start) - /* Linux starts us with sp pointing at the conventional Elf layout, - but we need to allow two 'caller' words for our ABI convention. */ - { - move r52, sp - andi sp, sp, -8 - } - cfi_def_cfa_register (r52) - { - /* Point sp at base of ABI area; point r4 to the caller-sp word. */ - ADDI_PTR sp, sp, -(2 * REGSIZE) - ADDI_PTR r4, sp, -REGSIZE - } - { - /* Save zero for caller sp in our 'caller' save area, and make - sure lr has a zero value, to limit backtraces. */ - move lr, zero - ST r4, zero - } - { - move r0, r52 - jal _dl_start - } - /* Save returned start of user program address for later. */ - move r50, r0 - - /* See if we were invoked explicitly with the dynamic loader, - in which case we have to adjust the argument vector. */ - lnk r51; .Llink: - pic_addr r4, _dl_skip_args - LD4U r4, r4 - BEQZT r4, .Lno_skip - - /* Load the argc word at the initial sp and adjust it. - We basically jump "sp" up over the first few argv entries - and write "argc" a little higher up in memory, to be the - base of the new kernel-initialized stack area. */ - LD_PTR r0, r52 - { - sub r0, r0, r4 - SHL_PTR_ADD r52, r4, r52 - } - { - ST_PTR r52, r0 - SHL_PTR_ADD sp, r4, sp - } - andi sp, sp, -8 - -.Lno_skip: - /* Call_dl_init (_dl_loaded, argc, argv, envp). See elf/start.s - for the layout of memory here; r52 is pointing to "+0". */ - pic_addr r0, _rtld_local - { - LD_PTR r1, r52 /* load argc in r1 */ - ADDLI_PTR r2, r52, __SIZEOF_POINTER__ /* point r2 at argv */ - } - { - LD_PTR r0, r0 /* yields _rtld_global._ns_loaded */ - addi r3, r1, 1 - move lr, zero - } - { - SHL_PTR_ADD r3, r3, r2 /* point r3 at envp */ - jal _dl_init_internal - } - - /* Call user program whose address we saved in r50. - We invoke it just like a static binary, but with _dl_fini - in r0 so we can distinguish. */ - - pic_addr r0, _dl_fini - move lr, zero - { - move sp, r52 - jr r50 - } - - /* Tell backtracer to give up (_start has no caller). */ - info 2 /* INFO_OP_CANNOT_BACKTRACE */ - -END (_start) diff --git a/ports/sysdeps/tile/dl-tls.c b/ports/sysdeps/tile/dl-tls.c deleted file mode 100644 index c98527def8..0000000000 --- a/ports/sysdeps/tile/dl-tls.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#ifdef SHARED -/* We provide a fast-path version of __tls_get_addr to allow for - the normal case to be fast, both by coding the function tightly, - and more importantly by fixing its register clobber API so the - compiler can avoid having to set up frames, etc., unnecessarily. */ -#define __tls_get_addr __tls_get_addr_slow -#endif - -#include diff --git a/ports/sysdeps/tile/dl-tls.h b/ports/sysdeps/tile/dl-tls.h deleted file mode 100644 index 03b9433ad6..0000000000 --- a/ports/sysdeps/tile/dl-tls.h +++ /dev/null @@ -1,45 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - - -/* Type used for the representation of TLS information in the GOT. */ -typedef struct -{ - unsigned long int ti_module; - unsigned long int ti_offset; -} tls_index; - -/* Fast-path function to get a TLS pointer. */ -extern void *__tls_get_addr (tls_index *ti); - -/* The thread pointer points to the first static TLS block. */ -#define TLS_TP_OFFSET 0 - -/* Dynamic thread vector pointers at the start of each TLS block. */ -#define TLS_DTV_OFFSET 0 - -/* Compute the value for a GOTTPREL reloc. */ -#define TLS_TPREL_VALUE(sym_map, sym) \ - ((sym_map)->l_tls_offset + (sym)->st_value - TLS_TP_OFFSET) - -/* Compute the value for a DTPREL reloc. */ -#define TLS_DTPREL_VALUE(sym) \ - ((sym)->st_value - TLS_DTV_OFFSET) - -/* Value used for dtv entries for which the allocation is delayed. */ -#define TLS_DTV_UNALLOCATED ((void *) -1l) diff --git a/ports/sysdeps/tile/dl-trampoline.S b/ports/sysdeps/tile/dl-trampoline.S deleted file mode 100644 index 7a4914ef6e..0000000000 --- a/ports/sysdeps/tile/dl-trampoline.S +++ /dev/null @@ -1,193 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include - -/* This function is called via the PLT header, which is called - from an individual PLT entry. - - At this point we have several values passed in: - - lr: return address to original user code - r28: the tpnt value to pass to _dl_runtime_resolver - r29: the PLT index of the invoked jump table entry. - - We set up a frame entry that looks like this (in int_reg_t units): - - +57: r25 return values from function... - +56: r24 - [...] - +33: r1 - +32: r0 - +31: PLT index - +30: tpnt - +29: stackframe - +28: caller lr - +27: r25 arguments to function... - +26: r24 - [...] - +3: r1 - +2: r0 - +1: standard ABI slot (sp) - +0: standard ABI slot (callee lr) - - The entries from "stackframe" up are only used in _dl_profile_resolve. - We save and restore r0 through r25, rather than the strictly - architected r0 through r9, to support unusual calling conventions; - for example, __tls_get_addr takes r0 and returns r0, but promises - not to clobber r1 through r24 to support its usual fast path. */ - -#define FRAME_SP (1 * REGSIZE) -#define FRAME_REGS (2 * REGSIZE) -#define FRAME_LR (28 * REGSIZE) /* Must follow FRAME_REGS */ -#define FRAME_STACKFRAME (29 * REGSIZE) -#define FRAME_TPNT (30 * REGSIZE) -#define FRAME_INDEX (31 * REGSIZE) -#define FRAME_RETVAL (32 * REGSIZE) - -#define FRAME_SIZE_SMALL (30 * REGSIZE) -#define FRAME_SIZE_LARGE (58 * REGSIZE) - -#define FOR_EACH_REG(f) \ - f(r0); f(r1); f(r2); f(r3); \ - f(r4); f(r5); f(r6); f(r7); \ - f(r8); f(r9); f(r10); f(r11); \ - f(r12); f(r13); f(r14); f(r15); \ - f(r16); f(r17); f(r18); f(r19); \ - f(r20); f(r21); f(r22); f(r23); \ - f(r24); f(r25) - -#define SAVE(REG) { ST r27, REG; ADDI_PTR r27, r27, REGSIZE } -#define RESTORE(REG) { LD REG, r27; ADDI_PTR r27, r27, REGSIZE } - - .macro dl_resolve, name, profile, framesize -.text -.global \name -.hidden \name -/* Note that cpp expands ENTRY(\name) incorrectly. */ -.type \name,@function -.align 8 -\name: - cfi_startproc - { - ST sp, lr - move r26, sp - } - { - ADDLI_PTR sp, sp, -\framesize - ADDLI_PTR r27, sp, FRAME_SP - \framesize - } - cfi_def_cfa_offset (\framesize) - { - ST r27, r26 - ADDI_PTR r27, r27, FRAME_REGS - FRAME_SP - } - FOR_EACH_REG(SAVE) - { - ST r27, lr - ADDLI_PTR r27, sp, FRAME_TPNT - } - cfi_offset (lr, FRAME_LR - \framesize) - .if \profile - { - move r0, r28 /* tpnt value */ - ST r27, r28 - ADDI_PTR r27, r27, FRAME_INDEX - FRAME_TPNT - } - { - move r1, r29 /* PLT index */ - ST r27, r29 - } - { - move r2, lr /* retaddr */ - ADDI_PTR r3, sp, FRAME_REGS /* La_tile_regs pointer */ - } - { - ADDLI_PTR r4, sp, FRAME_STACKFRAME /* framesize pointer */ - jal _dl_profile_fixup - } - ADDLI_PTR r28, sp, FRAME_STACKFRAME - LD_PTR r28, r28 - BGTZ r28, 1f - .else - { - move r0, r28 /* tpnt value 1 */ - move r1, r29 /* PLT index 2 */ - } - jal _dl_fixup - .endif - { - /* Copy aside the return value so we can restore r0 below. */ - move r29, r0 - /* Set up r27 to let us start restoring registers. */ - ADDLI_PTR r27, sp, FRAME_REGS - } - FOR_EACH_REG(RESTORE) - .if \profile - ADDLI_PTR r28, sp, FRAME_STACKFRAME - LD r28, r28 - BGTZ r28, 1f - .endif - { - /* Restore original user return address. */ - LD lr, r27 - /* Pop off our stack frame. */ - ADDLI_PTR sp, sp, \framesize - } - cfi_def_cfa_offset (0) - jr r29 /* Transfer control to freshly loaded code. */ - jrp lr /* Keep backtracer happy. */ - - .if \profile -1: jalr r29 /* Call resolved function. */ - { - ADDLI_PTR r28, sp, FRAME_TPNT - ADDLI_PTR r27, sp, FRAME_RETVAL - } - FOR_EACH_REG(SAVE) - { - LD r0, r28 - ADDI_PTR r28, r28, FRAME_INDEX - FRAME_TPNT - } - { - LD r1, r28 - ADDLI_PTR r2, sp, FRAME_REGS - } - { - ADDLI_PTR r3, sp, FRAME_RETVAL - jal _dl_call_pltexit - } - { - ADDLI_PTR lr, sp, FRAME_LR - ADDLI_PTR r27, sp, FRAME_RETVAL - } - FOR_EACH_REG(RESTORE) - { - LD lr, lr - ADDLI_PTR sp, sp, \framesize - } - jrp lr - .endif -END (\name) - .endm - - dl_resolve _dl_runtime_resolve, 0, FRAME_SIZE_SMALL -#ifndef PROF - dl_resolve _dl_runtime_profile, 1, FRAME_SIZE_LARGE -#endif diff --git a/ports/sysdeps/tile/ffs.c b/ports/sysdeps/tile/ffs.c deleted file mode 100644 index 3e52f8c6ef..0000000000 --- a/ports/sysdeps/tile/ffs.c +++ /dev/null @@ -1,45 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#define ffsl __something_else -#include - -#undef ffs -int -__ffs (int x) -{ - return __builtin_ffs (x); -} -weak_alias (__ffs, ffs) -libc_hidden_def (__ffs) -libc_hidden_builtin_def (ffs) - -#undef ffsll -int -ffsll (long long x) -{ - return __builtin_ffsll (x); -} - -#undef ffsl -#if ULONG_MAX == UINT_MAX -weak_alias (__ffs, ffsl) -#else -weak_alias (ffsll, ffsl) -#endif diff --git a/ports/sysdeps/tile/ffsll.c b/ports/sysdeps/tile/ffsll.c deleted file mode 100644 index 180eaa8c23..0000000000 --- a/ports/sysdeps/tile/ffsll.c +++ /dev/null @@ -1 +0,0 @@ -/* This function is defined in ffs.c. */ diff --git a/ports/sysdeps/tile/gccframe.h b/ports/sysdeps/tile/gccframe.h deleted file mode 100644 index 22a5463eb6..0000000000 --- a/ports/sysdeps/tile/gccframe.h +++ /dev/null @@ -1,21 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#define FIRST_PSEUDO_REGISTER 64 - -#include diff --git a/ports/sysdeps/tile/jmpbuf-offsets.h b/ports/sysdeps/tile/jmpbuf-offsets.h deleted file mode 100644 index c16175f370..0000000000 --- a/ports/sysdeps/tile/jmpbuf-offsets.h +++ /dev/null @@ -1,62 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -/* We don't use most of these symbols; they are here for documentation. */ -#define JB_R30 0 -#define JB_R31 1 -#define JB_R32 2 -#define JB_R33 3 -#define JB_R34 4 -#define JB_R35 5 -#define JB_R36 6 -#define JB_R37 7 -#define JB_R38 8 -#define JB_R39 9 -#define JB_R40 10 -#define JB_R41 11 -#define JB_R42 12 -#define JB_R43 13 -#define JB_R44 14 -#define JB_R45 15 -#define JB_R46 16 -#define JB_R47 17 -#define JB_R48 18 -#define JB_R49 19 -#define JB_R50 20 -#define JB_R51 21 -#define JB_FP 22 /* r52 */ -#define JB_TP 23 /* r53 */ -#define JB_SP 24 /* r54 */ -#define JB_PC 25 /* normally LR, r55 */ -#define JB_ICS 26 /* interrupt critical section bit */ - -/* We save space for some extra state to accommodate future changes. */ -#define JB_LEN 32 /* number of words */ - -#define JB_SIZE (JB_LEN * REGSIZE) - -/* Helper macro used by all the setjmp/longjmp assembly code. */ -#define FOR_EACH_CALLEE_SAVED_REG(f) \ - .no_require_canonical_reg_names; f(r30); f(r31); \ - f(r32); f(r33); f(r34); f(r35); f(r36); f(r37); f(r38); f(r39); \ - f(r40); f(r41); f(r42); f(r43); f(r44); f(r45); f(r46); f(r47); \ - f(r48); f(r49); f(r50); f(r51); f(r52); f(r53); f(r54); f(r55) - -/* Helper for generic ____longjmp_chk(). */ -#define JB_FRAME_ADDRESS(buf) \ - ((void *) (unsigned long) (buf[JB_SP])) diff --git a/ports/sysdeps/tile/jmpbuf-unwind.h b/ports/sysdeps/tile/jmpbuf-unwind.h deleted file mode 100644 index 3925e905b1..0000000000 --- a/ports/sysdeps/tile/jmpbuf-unwind.h +++ /dev/null @@ -1,48 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - Based on work contributed by Jakub Jelinek , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include -#include - -/* Test if longjmp to JMPBUF would unwind the frame - containing a local variable at ADDRESS. */ -#define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \ - ((void *) (address) < (void *) demangle ((jmpbuf)[JB_SP])) - -#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \ - _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj) - -static inline uintptr_t __attribute__ ((unused)) -_jmpbuf_sp (__jmp_buf regs) -{ - uintptr_t sp = regs[JB_SP]; -#ifdef PTR_DEMANGLE - PTR_DEMANGLE (sp); -#endif - return sp; -} - -#define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \ - ((uintptr_t) (_address) - (_adj) < _jmpbuf_sp (_jmpbuf) - (_adj)) - -/* We use the normal longjmp for unwinding. */ -#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val) diff --git a/ports/sysdeps/tile/ldsodefs.h b/ports/sysdeps/tile/ldsodefs.h deleted file mode 100644 index 682d4f2893..0000000000 --- a/ports/sysdeps/tile/ldsodefs.h +++ /dev/null @@ -1,40 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#ifndef _TILE_LDSODEFS_H -#define _TILE_LDSODEFS_H 1 - -#include - -struct La_tile_regs; -struct La_tile_retval; - -#define ARCH_PLTENTER_MEMBERS \ - ElfW(Addr) (*tile_gnu_pltenter) (ElfW(Sym) *, unsigned int, uintptr_t *, \ - uintptr_t *, struct La_tile_regs *, \ - unsigned int *, const char *, \ - long int *) - -#define ARCH_PLTEXIT_MEMBERS \ - ElfW(Addr) (*tile_gnu_pltexit) (ElfW(Sym) *, unsigned int, uintptr_t *, \ - uintptr_t *, const struct La_tile_regs *, \ - struct La_tile_retval *, const char *) - -#include_next - -#endif diff --git a/ports/sysdeps/tile/libm-test-ulps b/ports/sysdeps/tile/libm-test-ulps deleted file mode 100644 index 60bdc4758d..0000000000 --- a/ports/sysdeps/tile/libm-test-ulps +++ /dev/null @@ -1,5460 +0,0 @@ -# Begin of automatic generation - -# acosh -Test "acosh (0x6.4p+4)": -double: 1 -idouble: 1 -Test "acosh (0xf.ffffffffffff8p+1020)": -double: 1 - -# asinh -Test "asinh (-0xf.ffffffffffff8p+1020)": -double: 1 -Test "asinh (0xap+0)": -float: 1 -ifloat: 1 -Test "asinh (0xf.ffffffffffff8p+1020)": -double: 1 - -# atan2 -Test "atan2 (-0x1.effe82p-8, -0x7.57d1d8p-12)": -float: 1 -ifloat: 1 -Test "atan2 (-0xcp-4, -0x1p+0)": -float: 1 -ifloat: 1 -Test "atan2 (-0xf.fffffp+124, -0x4p-128)": -float: 1 -ifloat: 1 -Test "atan2 (-0xf.fffffp+124, -0x8p-152)": -float: 1 -ifloat: 1 -Test "atan2 (0x1.64p+0, 0xe.ep-4)": -float: 1 -ifloat: 1 -Test "atan2 (0xcp-4, -0x1p+0)": -float: 1 -ifloat: 1 -Test "atan2 (0xf.fffffp+124, -0x4p-128)": -float: 1 -ifloat: 1 -Test "atan2 (0xf.fffffp+124, -0x8p-152)": -float: 1 -ifloat: 1 - -# atanh -Test "atanh (-0xcp-4)": -float: 1 -ifloat: 1 -Test "atanh (0xcp-4)": -float: 1 -ifloat: 1 - -# cacos -Test "Imaginary part of: cacos (+0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (+0 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacos (+0 + 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (+0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (+0 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacos (+0 - 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0 + 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0 - 1.5 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (-0.25 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0.25 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0.25 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0.25 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0.5 + 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0.5 + 0x1p-105 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0.5 + 0x1p-112 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0.5 + 0x1p-23 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (-0.5 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0.5 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0.5 - 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0.5 - 0x1p-105 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0.5 - 0x1p-112 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0.5 - 0x1p-23 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (-0.5 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0.5 - 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0x0.fffffffffffff8p0 + 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0x0.fffffffffffff8p0 - 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0x0.ffffffp0 + 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: cacos (-0x0.ffffffp0 - 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: cacos (-0x1.000002p0 + 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1.000002p0 - 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1.fp-10 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-10 - 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (-0x1.fp-100 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1.fp-100 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1.fp-100 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1.fp-100 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1.fp-1000 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-1000 - 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-1025 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-1025 + 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-1025 - 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (-0x1.fp-1025 - 1.5 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (-0x1.fp-129 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1.fp-129 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1.fp-129 + 0x0.ffffffp0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1.fp-129 + 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1.fp-129 + 0x1.fp-129 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1.fp-129 + 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1.fp-129 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1.fp-129 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1.fp-129 + 1.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1.fp-129 + 1.5 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (-0x1.fp-129 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1.fp-129 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1.fp-129 - 0x0.ffffffp0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1.fp-129 - 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1.fp-129 - 0x1.fp-129 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1.fp-129 - 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1.fp-129 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1.fp-129 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1.fp-129 - 1.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1.fp-129 - 1.5 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (-0x1.fp-30 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1.fp-30 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1.fp-30 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1.fp-30 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-105 + 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-105 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1p-105 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-105 + 0x1p-105 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-105 - 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-105 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1p-105 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-105 - 0x1p-105 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-112 + 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-112 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1p-112 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-112 + 0x1p-112 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-112 - 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-112 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1p-112 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-112 - 0x1p-112 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-23 + 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-23 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1p-23 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1p-23 + 0x0.ffffffp0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (-0x1p-23 + 0x1.fp-129 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-23 + 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-23 - 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-23 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1p-23 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1p-23 - 0x0.ffffffp0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (-0x1p-23 - 0x1.fp-129 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-23 - 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-52 + 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-52 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1p-52 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-52 + 0x1p-52 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-52 - 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-52 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1p-52 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-52 - 0x1p-52 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-63 + 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-63 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1p-63 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-63 + 0x1p-63 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-63 - 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-63 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-0x1p-63 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-0x1p-63 - 0x1p-63 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-1.0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-1.0 + 0x1.fp-10 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-1.0 + 0x1p50 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-1.0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (-1.0 - 0x1.fp-10 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-1.0 - 0x1p50 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (-2 - 3 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0.25 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0.25 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (0.5 + +0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0.5 + 0x1.fp-1025 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0.5 + 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0.5 + 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0.5 + 0x1p-105 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0.5 + 0x1p-105 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0.5 + 0x1p-112 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0.5 + 0x1p-112 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0.5 + 0x1p-23 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0.5 + 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0.5 + 0x1p-63 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0.5 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0.5 + 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0.5 - 0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0.5 - 0x1.fp-1025 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0.5 - 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0.5 - 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0.5 - 0x1p-105 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0.5 - 0x1p-105 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0.5 - 0x1p-112 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0.5 - 0x1p-112 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0.5 - 0x1p-23 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0.5 - 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0.5 - 0x1p-63 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0.5 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0.5 - 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0x0.fffffffffffff8p0 + 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0x0.fffffffffffff8p0 - 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0x0.ffffffp0 + 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (0x0.ffffffp0 + 0x1.fp-129 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (0x0.ffffffp0 + 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: cacos (0x0.ffffffp0 + 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Real part of: cacos (0x0.ffffffp0 - 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (0x0.ffffffp0 - 0x1.fp-129 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (0x0.ffffffp0 - 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: cacos (0x0.ffffffp0 - 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Real part of: cacos (0x1.0000000000001p0 + 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0x1.0000000000001p0 - 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (0x1.000002p0 + 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: cacos (0x1.000002p0 + 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (0x1.000002p0 - 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: cacos (0x1.000002p0 - 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0x1.fp-10 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0x1.fp-10 - 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0x1.fp-100 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0x1.fp-100 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0x1.fp-1000 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0x1.fp-1000 - 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0x1.fp-1025 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0x1.fp-1025 + 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0x1.fp-1025 - 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0x1.fp-1025 - 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0x1.fp-129 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0x1.fp-129 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0x1.fp-129 + 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0x1.fp-129 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0x1.fp-129 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0x1.fp-129 - 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0x1.fp-30 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0x1.fp-30 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0x1.fp1023 + 0x1.fp1023 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0x1.fp127 + 0x1.fp127 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0x1p-105 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0x1p-105 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0x1p-112 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0x1p-112 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0x1p-23 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0x1p-23 + 0x0.ffffffp0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0x1p-23 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0x1p-23 - 0x0.ffffffp0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacos (0x1p-52 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0x1p-52 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0x1p-63 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (0x1p-63 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (1.0 + 0.25 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (1.0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (1.0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (1.0 + 0x1.fp-10 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: cacos (1.0 + 0x1.fp-10 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (1.0 - 0.25 i)": -double: 1 -idouble: 1 -Test "Real part of: cacos (1.0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacos (1.0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacos (1.0 - 0x1.fp-10 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: cacos (1.0 - 0x1.fp-10 i)": -float: 1 -ifloat: 1 - -# cacosh -Test "Real part of: cacosh (+0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (+0 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: cacosh (+0 + 1.5 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (+0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (+0 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: cacosh (+0 - 1.5 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: cacosh (-0 + 1.5 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: cacosh (-0 - 1.5 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0.25 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0.25 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: cacosh (-0.25 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0.25 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: cacosh (-0.5 + 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0.5 + 0x1p-105 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0.5 + 0x1p-112 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0.5 + 0x1p-23 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0.5 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (-0.5 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0.5 - 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0.5 - 0x1p-105 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0.5 - 0x1p-112 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0.5 - 0x1p-23 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0.5 - 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (-0.5 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x0.fffffffffffff8p0 + 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0x0.fffffffffffff8p0 - 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0x0.ffffffp0 + 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Real part of: cacosh (-0x0.ffffffp0 - 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Real part of: cacosh (-0x1.000002p0 + 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1.000002p0 - 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1.fp-10 + 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0x1.fp-10 - 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0x1.fp-100 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-100 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1.fp-100 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-100 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1.fp-1000 + 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0x1.fp-1000 - 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0x1.fp-1025 + 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0x1.fp-1025 + 1.5 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0x1.fp-1025 - 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0x1.fp-1025 - 1.5 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (-0x1.fp-129 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 + 0x0.ffffffp0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 + 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 + 0x1.fp-129 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 + 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1.fp-129 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1.fp-129 + 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 + 1.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1.fp-129 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 - 0x0.ffffffp0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 - 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 - 0x1.fp-129 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 - 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1.fp-129 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1.fp-129 - 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (-0x1.fp-129 - 1.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1.fp-30 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-30 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1.fp-30 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1.fp-30 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-105 + 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1p-105 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-105 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-105 + 0x1p-105 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-105 - 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1p-105 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-105 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-105 - 0x1p-105 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-112 + 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1p-112 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-112 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-112 + 0x1p-112 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-112 - 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1p-112 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-112 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-112 - 0x1p-112 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-23 + 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1p-23 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-23 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1p-23 + 0x0.ffffffp0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (-0x1p-23 + 0x1.fp-129 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-23 + 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-23 - 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1p-23 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-23 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1p-23 - 0x0.ffffffp0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (-0x1p-23 - 0x1.fp-129 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-23 - 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-52 + 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1p-52 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-52 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-52 + 0x1p-52 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-52 - 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1p-52 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-52 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-52 - 0x1p-52 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-63 + 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1p-63 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-63 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-63 + 0x1p-63 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-63 - 0.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-0x1p-63 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-63 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-0x1p-63 - 0x1p-63 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-1.0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-1.0 + 0x1.fp-10 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-1.0 + 0x1p50 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-1.0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (-1.0 - 0x1.fp-10 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-1.0 - 0x1p50 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (-2 - 3 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (0.25 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (0.25 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (0.5 + +0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0.5 + 0x1.fp-1025 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0.5 + 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0.5 + 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0.5 + 0x1p-105 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0.5 + 0x1p-105 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0.5 + 0x1p-112 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0.5 + 0x1p-112 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0.5 + 0x1p-23 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0.5 + 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0.5 + 0x1p-63 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0.5 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0.5 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (0.5 - 0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0.5 - 0x1.fp-1025 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0.5 - 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0.5 - 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0.5 - 0x1p-105 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0.5 - 0x1p-105 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0.5 - 0x1p-112 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0.5 - 0x1p-112 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0.5 - 0x1p-23 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0.5 - 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0.5 - 0x1p-63 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0.5 - 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0.5 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (0x0.fffffffffffff8p0 + 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0x0.fffffffffffff8p0 - 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0x0.ffffffp0 + 0.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (0x0.ffffffp0 + 0x1.fp-129 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (0x0.ffffffp0 + 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: cacosh (0x0.ffffffp0 + 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: cacosh (0x0.ffffffp0 - 0.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (0x0.ffffffp0 - 0x1.fp-129 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (0x0.ffffffp0 - 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: cacosh (0x0.ffffffp0 - 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: cacosh (0x1.0000000000001p0 + 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cacosh (0x1.0000000000001p0 - 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0x1.000002p0 + 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (0x1.000002p0 + 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Real part of: cacosh (0x1.000002p0 - 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (0x1.000002p0 - 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Real part of: cacosh (0x1.fp-10 + 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0x1.fp-10 - 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0x1.fp-100 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: cacosh (0x1.fp-100 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: cacosh (0x1.fp-1000 + 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0x1.fp-1000 - 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0x1.fp-1025 + 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0x1.fp-1025 + 1.5 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0x1.fp-1025 - 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0x1.fp-1025 - 1.5 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0x1.fp-129 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (0x1.fp-129 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: cacosh (0x1.fp-129 + 1.5 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0x1.fp-129 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (0x1.fp-129 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: cacosh (0x1.fp-129 - 1.5 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0x1.fp-30 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: cacosh (0x1.fp-30 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: cacosh (0x1.fp1023 + 0x1.fp1023 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0x1.fp127 + 0x1.fp127 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0x1p-105 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (0x1p-105 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (0x1p-112 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (0x1p-112 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (0x1p-23 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (0x1p-23 + 0x0.ffffffp0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0x1p-23 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (0x1p-23 - 0x0.ffffffp0 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (0x1p-52 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (0x1p-52 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (0x1p-63 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (0x1p-63 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (1.0 + 0.25 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (1.0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (1.0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (1.0 + 0x1.fp-10 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (1.0 + 0x1.fp-10 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: cacosh (1.0 - 0.25 i)": -double: 1 -idouble: 1 -Test "Real part of: cacosh (1.0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (1.0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: cacosh (1.0 - 0x1.fp-10 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cacosh (1.0 - 0x1.fp-10 i)": -float: 2 -ifloat: 2 - -# casin -Test "Imaginary part of: casin (+0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (+0 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (+0 + 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (+0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (+0 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (+0 - 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0 + 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0 - 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0.25 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0.25 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0.5 + 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0.5 + 0x1p-105 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0.5 + 0x1p-112 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0.5 + 0x1p-23 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0.5 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0.5 - 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0.5 - 0x1p-105 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0.5 - 0x1p-112 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0.5 - 0x1p-23 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0.5 - 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0x0.fffffffffffff8p0 + 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0x0.fffffffffffff8p0 - 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0x0.ffffffp0 + 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: casin (-0x0.ffffffp0 - 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: casin (-0x1.000002p0 + 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1.000002p0 - 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Real part of: casin (-0x1.fp-10 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1.fp-10 + 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: casin (-0x1.fp-10 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1.fp-10 - 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0x1.fp-100 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1.fp-100 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1.fp-1000 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0x1.fp-1000 - 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0x1.fp-1025 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0x1.fp-1025 + 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0x1.fp-1025 - 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0x1.fp-1025 - 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0x1.fp-129 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1.fp-129 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1.fp-129 + 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0x1.fp-129 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1.fp-129 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1.fp-129 - 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (-0x1.fp-30 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1.fp-30 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1p-105 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1p-105 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1p-112 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1p-112 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: casin (-0x1p-23 + 0.5 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1p-23 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1p-23 + 0x0.ffffffp0 i)": -double: 1 -idouble: 1 -Test "Real part of: casin (-0x1p-23 + 0x1.000002p0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casin (-0x1p-23 - 0.5 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1p-23 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1p-23 - 0x0.ffffffp0 i)": -double: 1 -idouble: 1 -Test "Real part of: casin (-0x1p-23 - 0x1.000002p0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1p-52 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1p-52 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1p-63 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-0x1p-63 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: casin (-1.0 + 0.25 i)": -double: 1 -idouble: 1 -Test "Real part of: casin (-1.0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-1.0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-1.0 + 0x1.fp-10 i)": -float: 1 -ifloat: 1 -Test "Real part of: casin (-1.0 - 0.25 i)": -double: 1 -idouble: 1 -Test "Real part of: casin (-1.0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-1.0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (-1.0 - 0x1.fp-10 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (0.25 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (0.25 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (0.5 + 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0.5 + 0x1p-105 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0.5 + 0x1p-112 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0.5 + 0x1p-23 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0.5 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0.5 - 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0.5 - 0x1p-105 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0.5 - 0x1p-112 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0.5 - 0x1p-23 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0.5 - 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: casin (0.75 + 1.25 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x0.fffffffffffff8p0 + 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0x0.fffffffffffff8p0 - 0x1p-52 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0x0.ffffffp0 + 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: casin (0x0.ffffffp0 - 0x1p-23 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: casin (0x1.000002p0 + 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1.000002p0 - 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Real part of: casin (0x1.fp-10 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1.fp-10 + 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: casin (0x1.fp-10 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1.fp-10 - 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0x1.fp-100 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1.fp-100 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1.fp-1000 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0x1.fp-1000 - 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0x1.fp-1025 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0x1.fp-1025 + 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0x1.fp-1025 - 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0x1.fp-1025 - 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0x1.fp-129 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1.fp-129 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1.fp-129 + 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0x1.fp-129 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1.fp-129 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1.fp-129 - 1.5 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0x1.fp-30 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1.fp-30 - 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1.fp1023 + 0x1.fp1023 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0x1.fp127 + 0x1.fp127 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casin (0x1p-105 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1p-105 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1p-112 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1p-112 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: casin (0x1p-23 + 0.5 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1p-23 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1p-23 + 0x0.ffffffp0 i)": -double: 1 -idouble: 1 -Test "Real part of: casin (0x1p-23 + 0x1.000002p0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casin (0x1p-23 - 0.5 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1p-23 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1p-23 - 0x0.ffffffp0 i)": -double: 1 -idouble: 1 -Test "Real part of: casin (0x1p-23 - 0x1.000002p0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1p-52 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1p-52 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1p-63 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (0x1p-63 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: casin (1.0 + 0.25 i)": -double: 1 -idouble: 1 -Test "Real part of: casin (1.0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (1.0 + 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (1.0 + 0x1.fp-10 i)": -float: 1 -ifloat: 1 -Test "Real part of: casin (1.0 - 0.25 i)": -double: 1 -idouble: 1 -Test "Real part of: casin (1.0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (1.0 - 0.5 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casin (1.0 - 0x1.fp-10 i)": -float: 1 -ifloat: 1 - -# casinh -Test "Imaginary part of: casinh (-0.25 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casinh (-0.25 - 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-0.5 + +0 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0.5 + 0x1.fp-129 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0.5 + 0x1p-105 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0.5 + 0x1p-112 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0.5 + 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casinh (-0.5 + 0x1p-23 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (-0.5 + 0x1p-52 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0.5 + 0x1p-63 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0.5 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casinh (-0.5 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0.5 - 0 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0.5 - 0x1.fp-129 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0.5 - 0x1p-105 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0.5 - 0x1p-112 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0.5 - 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casinh (-0.5 - 0x1p-23 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (-0.5 - 0x1p-52 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0.5 - 0x1p-63 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0.5 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casinh (-0.5 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0x0.ffffffp0 + 0x1p-23 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-0x0.ffffffp0 - 0x1p-23 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casinh (-0x1.000002p0 + 0x1p-23 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casinh (-0x1.000002p0 - 0x1p-23 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (-0x1.fp-10 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0x1.fp-10 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0x1.fp-129 + 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-0x1.fp-129 - 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-0x1p-105 + 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-0x1p-105 - 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-0x1p-112 + 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-0x1p-112 - 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-0x1p-23 + 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-0x1p-23 + 0x0.ffffffp0 i)": -float: 2 -ifloat: 2 -Test "Real part of: casinh (-0x1p-23 + 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0x1p-23 - 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-0x1p-23 - 0x0.ffffffp0 i)": -float: 2 -ifloat: 2 -Test "Real part of: casinh (-0x1p-23 - 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-0x1p-52 + 0x0.fffffffffffff8p0 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-0x1p-52 - 0x0.fffffffffffff8p0 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-1.0 + +0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (-1.0 + 0.25 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-1.0 + 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-1.0 + 0x1.fp-10 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casinh (-1.0 + 0x1.fp-10 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-1.0 + 0x1.fp-100 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (-1.0 + 0x1.fp-1000 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-1.0 + 0x1.fp-1025 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-1.0 + 0x1.fp-129 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (-1.0 + 0x1.fp-30 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (-1.0 - 0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (-1.0 - 0.25 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-1.0 - 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-1.0 - 0x1.fp-10 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casinh (-1.0 - 0x1.fp-10 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (-1.0 - 0x1.fp-100 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (-1.0 - 0x1.fp-1000 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-1.0 - 0x1.fp-1025 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-1.0 - 0x1.fp-129 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (-1.0 - 0x1.fp-30 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (-1.5 + +0 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-1.5 + 0x1.fp-1025 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-1.5 + 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-1.5 - 0 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-1.5 - 0x1.fp-1025 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (-1.5 - 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casinh (0.25 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casinh (0.25 - 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (0.5 + +0 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0.5 + 0x1.fp-129 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0.5 + 0x1p-105 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0.5 + 0x1p-112 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0.5 + 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casinh (0.5 + 0x1p-23 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (0.5 + 0x1p-52 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0.5 + 0x1p-63 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0.5 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casinh (0.5 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0.5 - 0 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0.5 - 0x1.fp-129 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0.5 - 0x1p-105 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0.5 - 0x1p-112 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0.5 - 0x1p-23 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casinh (0.5 - 0x1p-23 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (0.5 - 0x1p-52 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0.5 - 0x1p-63 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0.5 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casinh (0.5 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0.75 + 1.25 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: casinh (0.75 + 1.25 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (0x0.ffffffp0 + 0x1p-23 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (0x0.ffffffp0 - 0x1p-23 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casinh (0x1.000002p0 + 0x1p-23 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: casinh (0x1.000002p0 - 0x1p-23 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (0x1.fp-10 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0x1.fp-10 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0x1.fp-129 + 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (0x1.fp-129 - 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (0x1.fp1023 + 0x1.fp1023 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (0x1.fp127 + 0x1.fp127 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (0x1p-105 + 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (0x1p-105 - 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (0x1p-112 + 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (0x1p-112 - 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (0x1p-23 + 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (0x1p-23 + 0x0.ffffffp0 i)": -float: 2 -ifloat: 2 -Test "Real part of: casinh (0x1p-23 + 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0x1p-23 - 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (0x1p-23 - 0x0.ffffffp0 i)": -float: 2 -ifloat: 2 -Test "Real part of: casinh (0x1p-23 - 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (0x1p-52 + 0x0.fffffffffffff8p0 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (0x1p-52 - 0x0.fffffffffffff8p0 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (1.0 + +0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (1.0 + 0.25 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (1.0 + 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (1.0 + 0x1.fp-10 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casinh (1.0 + 0x1.fp-10 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (1.0 + 0x1.fp-100 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (1.0 + 0x1.fp-1000 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (1.0 + 0x1.fp-1025 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (1.0 + 0x1.fp-129 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (1.0 + 0x1.fp-30 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (1.0 - 0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (1.0 - 0.25 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (1.0 - 0.5 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (1.0 - 0x1.fp-10 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: casinh (1.0 - 0x1.fp-10 i)": -float: 1 -ifloat: 1 -Test "Real part of: casinh (1.0 - 0x1.fp-100 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (1.0 - 0x1.fp-1000 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (1.0 - 0x1.fp-1025 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (1.0 - 0x1.fp-129 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (1.0 - 0x1.fp-30 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: casinh (1.5 + +0 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (1.5 + 0x1.fp-1025 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (1.5 + 0x1.fp-129 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (1.5 - 0 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (1.5 - 0x1.fp-1025 i)": -double: 1 -idouble: 1 -Test "Real part of: casinh (1.5 - 0x1.fp-129 i)": -double: 1 -idouble: 1 - -# catan -Test "Imaginary part of: catan (-0x0.fffffffffffff8p0 + 0x1p-27 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (-0x0.ffffffp0 + 0x1p-13 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: catan (-0x1.0000000000001p0 - 0x1p-27 i)": -double: 1 -idouble: 1 -Test "Real part of: catan (-0x1.000002p0 + 0x1p-126 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (-0x1.000002p0 + 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (-0x1.000002p0 - 0x1p-126 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (-0x1.000002p0 - 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catan (-0x1.000002p0 - 0x1p-13 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (-0x1.fp1023 + 0x1.fp1023 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (-0x1.fp1023 - 0x1.fp1023 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (-0x1.fp127 + 0x1.fp127 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (-0x1.fp127 - 0x1.fp127 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (-0x1p-1020 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (-0x1p-1020 - 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: catan (-0x1p-13 + 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (-0x1p-13 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (-0x1p-13 - 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catan (-0x1p-13 - 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (-0x1p-13 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catan (-0x1p-54 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catan (-0x1p-54 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catan (-0x1p-57 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catan (-0x1p-57 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (-1.0 + 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (-1.0 - 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catan (-2 - 3 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: catan (0x0.fffffffffffff8p0 + 0x1p-27 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (0x0.ffffffp0 + 0x1p-13 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: catan (0x1.0000000000001p0 - 0x1p-27 i)": -double: 1 -idouble: 1 -Test "Real part of: catan (0x1.000002p0 + 0x1p-126 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (0x1.000002p0 + 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (0x1.000002p0 - 0x1p-126 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (0x1.000002p0 - 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catan (0x1.000002p0 - 0x1p-13 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (0x1.fp1023 + 0x1.fp1023 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (0x1.fp1023 - 0x1.fp1023 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (0x1.fp127 + 0x1.fp127 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (0x1.fp127 - 0x1.fp127 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (0x1p-1020 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catan (0x1p-1020 - 1.0 i)": -double: 1 -idouble: 1 -Test "Real part of: catan (0x1p-13 + 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (0x1p-13 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (0x1p-13 - 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catan (0x1p-13 - 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (0x1p-13 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catan (0x1p-54 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catan (0x1p-54 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catan (0x1p-57 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catan (0x1p-57 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (1.0 + 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Real part of: catan (1.0 - 0x1p-13 i)": -float: 1 -ifloat: 1 - -# catanh -Test "Real part of: catanh (-0x1.000002p0 + 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catanh (-0x1.000002p0 + 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (-0x1.000002p0 - 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catanh (-0x1.000002p0 - 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (-0x1.fp1023 + 0x1.fp1023 i)": -double: 1 -idouble: 1 -Test "Real part of: catanh (-0x1.fp1023 - 0x1.fp1023 i)": -double: 1 -idouble: 1 -Test "Real part of: catanh (-0x1.fp127 + 0x1.fp127 i)": -double: 1 -idouble: 1 -Test "Real part of: catanh (-0x1.fp127 - 0x1.fp127 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catanh (-0x1p-126 + 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catanh (-0x1p-126 - 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (-0x1p-13 + 0x1.000002p0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catanh (-0x1p-13 + 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catanh (-0x1p-13 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (-0x1p-13 - 0x1.000002p0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catanh (-0x1p-13 - 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catanh (-0x1p-13 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (-0x1p-27 + 0x1.0000000000001p0 i)": -double: 1 -idouble: 1 -Test "Real part of: catanh (-0x1p-27 - 0x1.0000000000001p0 i)": -double: 1 -idouble: 1 -Test "Real part of: catanh (-1.0 + 0x1p-1020 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catanh (-1.0 + 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (-1.0 + 0x1p-54 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (-1.0 + 0x1p-57 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (-1.0 - 0x1p-1020 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catanh (-1.0 - 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (-1.0 - 0x1p-54 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (-1.0 - 0x1p-57 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (-2 - 3 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catanh (0x1.000002p0 + 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catanh (0x1.000002p0 - 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (0x1.fp1023 + 0x1.fp1023 i)": -double: 1 -idouble: 1 -Test "Real part of: catanh (0x1.fp1023 - 0x1.fp1023 i)": -double: 1 -idouble: 1 -Test "Real part of: catanh (0x1.fp127 + 0x1.fp127 i)": -double: 1 -idouble: 1 -Test "Real part of: catanh (0x1.fp127 - 0x1.fp127 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catanh (0x1p-126 + 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catanh (0x1p-126 - 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (0x1p-13 + 0x0.ffffffp0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: catanh (0x1p-13 + 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catanh (0x1p-13 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (0x1p-13 - 0x0.ffffffp0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: catanh (0x1p-13 - 0x1.000002p0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: catanh (0x1p-13 - 1.0 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (0x1p-27 + 0x0.fffffffffffff8p0 i)": -double: 1 -idouble: 1 -Test "Real part of: catanh (0x1p-27 - 0x0.fffffffffffff8p0 i)": -double: 1 -idouble: 1 -Test "Real part of: catanh (1.0 + 0x1p-1020 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catanh (1.0 + 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (1.0 + 0x1p-54 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (1.0 + 0x1p-57 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (1.0 - 0x1p-1020 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: catanh (1.0 - 0x1p-13 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (1.0 - 0x1p-54 i)": -float: 1 -ifloat: 1 -Test "Real part of: catanh (1.0 - 0x1p-57 i)": -float: 1 -ifloat: 1 - -# cbrt -Test "cbrt (-0x1.bp+4)": -double: 1 -idouble: 1 -Test "cbrt (-0x4.18937p-12)": -float: 1 -ifloat: 1 -Test "cbrt (0xcp-4)": -double: 1 -idouble: 1 -Test "cbrt (0xf.ep-4)": -double: 1 -idouble: 1 - -# ccos -Test "Imaginary part of: ccos (-0x2p+0 - 0x3p+0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ccos (-0xcp-4 + 0x2.c68p+8 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ccos (-0xcp-4 + 0x5.98p+4 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ccos (-0xcp-4 - 0x2.c68p+8 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ccos (-0xcp-4 - 0x5.98p+4 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ccos (0x4p-1076 + 0x5.ap+8 i)": -double: 1 -idouble: 1 -Test "Real part of: ccos (0xcp-4 + 0x1.4p+0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: ccos (0xcp-4 + 0x1.4p+0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ccos (0xcp-4 + 0x2.c68p+8 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ccos (0xcp-4 + 0x5.98p+4 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ccos (0xcp-4 - 0x2.c68p+8 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ccos (0xcp-4 - 0x5.98p+4 i)": -float: 1 -ifloat: 1 - -# ccosh -Test "Imaginary part of: ccosh (-0x2.c68p+8 + 0xcp-4 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ccosh (-0x2.c68p+8 - 0xcp-4 i)": -double: 1 -idouble: 1 -Test "Real part of: ccosh (-0x2p+0 - 0x3p+0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ccosh (-0x2p+0 - 0x3p+0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ccosh (-0x5.98p+4 + 0xcp-4 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ccosh (-0x5.98p+4 - 0xcp-4 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ccosh (0x2.c68p+8 + 0xcp-4 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ccosh (0x2.c68p+8 - 0xcp-4 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ccosh (0x5.98p+4 + 0xcp-4 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ccosh (0x5.98p+4 - 0xcp-4 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ccosh (0x5.ap+8 + 0x4p-1076 i)": -double: 1 -idouble: 1 -Test "Real part of: ccosh (0xcp-4 + 0x1.4p+0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: ccosh (0xcp-4 + 0x1.4p+0 i)": -float: 1 -ifloat: 1 - -# cexp -Test "Imaginary part of: cexp (-0x2p+0 - 0x3p+0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cexp (-0x5.fp+4 + 0xcp-4 i)": -double: 1 -idouble: 1 -Test "Real part of: cexp (0x1.f4p+8 + 0x8p+1020 i)": -double: 1 -idouble: 1 -Test "Real part of: cexp (0x2.c5dp+8 + 0xcp-4 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: cexp (0x2.c5dp+8 + 0xcp-4 i)": -double: 1 -idouble: 1 -Test "Real part of: cexp (0x3.2p+4 + 0x8p+124 i)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "Imaginary part of: cexp (0x3.2p+4 + 0x8p+124 i)": -double: 1 -idouble: 1 -Test "Real part of: cexp (0x5.8cp+4 + 0xcp-4 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: cexp (0x5.8cp+4 + 0xcp-4 i)": -float: 2 -ifloat: 2 -Test "Imaginary part of: cexp (0x5.ap+8 + 0x4p-1076 i)": -double: 1 -idouble: 1 -Test "Real part of: cexp (0xcp-4 + 0x1.4p+0 i)": -float: 1 -ifloat: 1 - -# clog -Test "Real part of: clog (+0 + 0x4p-1076 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (-0x1.0000000123456p+0 + +0 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (-0x1.0000000123456p+0 + 0x1.2345678p-1000 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (-0x1.0000000123456p+0 + 0x4.8d1598p-32 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (-0x1.0000000123456p+0 + 0x4.8d159ep-32 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (-0x1.0000000123456p+0 + 0x8p-152 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (-0x1.000002p+0 + +0 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (-0x1.000002p+0 + 0x4.8d1598p-32 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: clog (-0x1.000002p+0 + 0x4.8d159ep-32 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (-0x1.000002p+0 + 0x4.8d15ap-32 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: clog (-0x1.000002p+0 + 0x8p-152 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog (-0x1.234566p-40 - 0x1p+0 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (-0x8p-152 + 0xf.8p+124 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog (-0x8p-152 + 0xf.8p+124 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog (-0x8p-152 + 0xf.fffffp+124 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (-0x8p-152 - 0xf.8p+124 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog (-0x8p-152 - 0xf.8p+124 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog (-0x8p-152 - 0xf.fffffp+124 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (-0xf.8p+124 + 0x8p-152 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (-0xf.8p+124 - 0x8p-152 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x1.0000000000001p+0 + +0 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x1.0000000000001p+0 + 0x1.234566p-60 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x1.0000000000001p+0 + 0x1.23456789p-1000 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x1.0000000000001p+0 + 0x1.23456789p-60 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x1.0000000000001p+0 + 0x1.234568p-60 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x1.0000000000001p+0 + 0x8p-152 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x1.000002p+0 + +0 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x1.000002p+0 + 0x1.234566p-60 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x1.000002p+0 + 0x1.234568p-60 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x1.000002p+0 + 0x8p-152 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x1.000566p+0 + 0x4.8dp-12 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x1.48e45e3268d8p-4 + 0xf.f2c64p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x1.48e45ep-4 + 0xf.f2c63p-4 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x1.48e45ep-4 + 0xf.f2c64p-4 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x1.8907bc3694fd4p-4 + 0xf.ed1990460bdf8p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x1.8907bc3694fd5p-4 + 0xf.ed1990460bdf8p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x1.c67eccp-4 + 0xf.e6b4d1d7a6e08p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x1.c67eccp-4 + 0xf.e6b4d1d7a6e1p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x1.c67eccp-4 + 0xf.e6b4ep-4 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x1.c67ecd92a8594p-4 + 0xf.e6b4dp-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x1.c67ecd92a8594p-4 + 0xf.e6b4ep-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x1.c67ecep-4 + 0xf.e6b4d1d7a6e1p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x1p+0 + 0x4.8d1598p-12 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x2.0ce7ba1e4902p-4 + 0xf.de3a3p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x2.82b794p-4 + 0xf.cd42a15bf9a38p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x2.82b795e420b28p-4 + 0xf.cd42a15bf9a3p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x2p-148 + 0x2p-148 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x3.3b8f94p-4 + 0xf.ab873p-4 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x3.6e17119fb8aacp-4 + 0xf.a0c58p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x3.6e1714p-4 + 0xf.a0c58a83e57cp-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x3.6e1714p-4 + 0xf.a0c58p-4 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog (0x3.6e1714p-4 + 0xf.a0c58p-4 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x3.6e1714p-4 + 0xf.a0c59p-4 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog (0x3.6e1714p-4 + 0xf.a0c59p-4 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x3.bea2bcp-4 + 0xf.8e3d619a8d118p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x3.bea2bd62e35p-4 + 0xf.8e3d6p-4 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog (0x3.bea2cp-4 + 0xf.8e3d6p-4 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x3.bea2cp-4 + 0xf.8e3d7p-4 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x3.e1d0a105ac4eap-4 + 0xf.859b3d1b06d08p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x3.e1d0ap-4 + 0xf.859b3d1b06d08p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x3.e1d0ap-4 + 0xf.859b3p-4 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog (0x3.e1d0ap-4 + 0xf.859b4p-4 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x4.0dbf7d40fe1acp-4 + 0xf.7a5c1af8e3ce8p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x4.0dbf7d40fe1acp-4 + 0xf.7a5c1p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x4.7017a2e36807cp-4 + 0xf.5f4a550c9d758p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x4.7017a8p-4 + 0xf.5f4a550c9d76p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x4.7017a8p-4 + 0xf.5f4a6p-4 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x4.d9e8c8p-4 + 0xf.3f303p-4 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x4.d9e8cp-4 + 0xf.3f30281507d8p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x4p-1076 + +0 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x4p-1076 + 0x4p-1076 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog (0x5.03p-4 + 0xf.31ep-4 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x5.318c596a8cb1p-4 + 0xf.22364p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x5.b06b68p-4 + 0xe.f452b965da9fp-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x5.b06b68p-4 + 0xe.f452bp-4 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x5.b06b7p-4 + 0xe.f452b965da9fp-4 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog (0x5.b06b7p-4 + 0xe.f452bp-4 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x6.02fd5037c479p-4 + 0xe.d3e21p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x6.02fd5037c479p-4 + 0xe.d3e2p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x6.02fd58p-4 + 0xe.d3e2086dcca8p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x6.02fd58p-4 + 0xe.d3e21p-4 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog (0x6.02fd5p-4 + 0xe.d3e21p-4 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x6.1c643068cd128p-4 + 0xe.c97c2p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x6.1c6438p-4 + 0xe.c97c2018b4288p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x6.1c6438p-4 + 0xe.c97c2018b428p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x6.1c6438p-4 + 0xe.c97c3p-4 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x6.2aff83ae6467cp-4 + 0xe.c36a6p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x6.2aff83ae6468p-4 + 0xe.c36a599a86ba8p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x6.2aff83ae6468p-4 + 0xe.c36a5p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x6.2aff88p-4 + 0xe.c36a599a86ba8p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x6.b10b48p-4 + 0xe.8893cbb44925p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x6.b10b4f3520218p-4 + 0xe.8893dp-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x6.b10b5p-4 + 0xe.8893cbb449258p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x6.b10b5p-4 + 0xe.8893cbb44925p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x7.eca921b40e028p-4 + 0xd.e655fp-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x7.eca928p-4 + 0xd.e655e694e5108p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x7.eca928p-4 + 0xd.e655fp-4 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x7.f2c8d20a1eca4p-4 + 0xd.e2d66p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x7.f2c8d20a1ecap-4 + 0xd.e2d65p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x7.f2c8d8p-4 + 0xd.e2d65939160b8p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x7.f2c8dp-4 + 0xd.e2d65939160bp-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x7.f4b088p-4 + 0xd.e1bf04f3688p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x8.88faep-4 + 0xd.888bdp-4 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog (0x8.88faep-4 + 0xd.888bdp-4 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x8.88fafp-4 + 0xd.888bdp-4 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x8.ecbf810c4ae6p-4 + 0xd.47946p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x8.ecbf8p-4 + 0xd.479468b09a37p-4 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog (0x8.ecbf8p-4 + 0xd.47946p-4 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x8.ecbf9p-4 + 0xd.479468b09a37p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x8p-152 + 0xf.8p+124 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x8p-152 - 0xf.8p+124 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x9.b386fp-4 + 0xc.b9317p-4 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0x9.c1b6ac509a248p-4 + 0xc.ae53de1d5a7dp-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x9.c1b6ac509a248p-4 + 0xc.ae53ep-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x9.c1b6ac509a24p-4 + 0xc.ae53dp-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x9.c1b6ac509a24p-4 + 0xc.ae53ep-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x9.c1b6ap-4 + 0xc.ae53de1d5a7dp-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0x9.c1b6ap-4 + 0xc.ae53dp-4 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog (0x9.c1b6ap-4 + 0xc.ae53ep-4 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0xa.47c0c65bd4928p-4 + 0xc.42a51p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0xa.47c0cp-4 + 0xc.42a51p-4 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog (0xa.47c0cp-4 + 0xc.42a51p-4 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0xa.afc57p-4 + 0xb.e867932966df8p-4 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog (0xa.afc58p-4 + 0xb.e867ap-4 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0xa.b96da19075eap-8 + 0xf.fc679p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0xa.b96dap-8 + 0xf.fc67818f89d2p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0xa.b96dap-8 + 0xf.fc678p-4 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0xa.b96dap-8 + 0xf.fc679p-4 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0xa.e7de8cc868ff8p-4 + 0xb.b51cbp-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0xa.e7de8p-4 + 0xb.b51cbp-4 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0xa.e7de9p-4 + 0xb.b51cb9f04d4dp-4 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog (0xa.e7de9p-4 + 0xb.b51cbp-4 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0xa.ec55b7682e528p-4 + 0xb.b0f24p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0xa.ec55cp-4 + 0xb.b0f2405504a68p-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0xa.ec55cp-4 + 0xb.b0f25p-4 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0xb.263a77543bp-4 + 0xb.79c9ap-4 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0xb.263a8p-4 + 0xb.79c9bp-4 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0xf.8p+124 + 0x8p-152 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0xf.8p+124 - 0x8p-152 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0xf.fffffp+124 + 0x8p+1020 i)": -double: 1 -idouble: 1 -Test "Real part of: clog (0xf.fffffp-4 + +0 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0xf.fffffp-4 + 0x8p-152 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog (0xf.fffffp-4 + 0xf.fffffp-104 i)": -float: 1 -ifloat: 1 - -# clog10 -Test "Imaginary part of: clog10 (-0 + inf i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-0 - inf i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: clog10 (-0x1.0000000123456p0 + 0x1.2345678p-1000 i)": -double: 2 -idouble: 2 -Test "Imaginary part of: clog10 (-0x1.0000000123456p0 + 0x1.2345678p-1000 i)": -double: 1 -idouble: 1 -Test "Real part of: clog10 (-0x1.0000000123456p0 + 0x1.2345678p-30 i)": -double: 2 -idouble: 2 -Test "Imaginary part of: clog10 (-0x1.0000000123456p0 + 0x1.2345678p-30 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (-0x1.fp+1023 + 0x1p-1074 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (-0x1.fp+1023 - 0x1p-1074 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (-0x1.fp+127 + 0x1p-149 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-0x1.fp+127 - 0x1p-149 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-0x1p-1074 + 0x1.fp+1023 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (-0x1p-1074 - 0x1.fp+1023 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (-0x1p-149 + 0x1.fp+127 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (-0x1p-149 - 0x1.fp+127 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (-1.0 + 0x1.234566p-20 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (-2 - 3 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (-3 + inf i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-3 - inf i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-inf + 0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-inf + 1 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-inf + inf i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (-inf - 0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (-inf - 1 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0 + inf i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0 - inf i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: clog10 (0x0.fffffffffffff8p0 + 0x0.fffffffffffff8p-1000 i)": -double: 1 -idouble: 1 -Test "Real part of: clog10 (0x0.ffffffp0 + 0x0.ffffffp-100 i)": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -Test "Real part of: clog10 (0x1.000566p0 + 0x1.234p-10 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x1.000566p0 + 0x1.234p-10 i)": -double: 1 -idouble: 1 -Test "Real part of: clog10 (0x1.000566p0 + 0x1.234p-100 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x1.234566p-30 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x1.234566p-50 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x1.234566p-60 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x1.fffffep+127 + 0x1.fffffep+127 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: clog10 (0x1.fffffep+127 + 1.0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x1.fffffffffffffp+1023 + 0x1.fffffffffffffp+1023 i)": -double: 1 -idouble: 1 -Test "Real part of: clog10 (0x10673dd0f2481p-51 + 0x7ef1d17cefbd2p-51 i)": -double: 1 -idouble: 1 -Test "Real part of: clog10 (0x1367a310575591p-54 + 0x3cfcc0a0541f60p-54 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0x1367a310575591p-54 + 0x3cfcc0a0541f60p-54 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0x164c74eea876p-45 + 0x16f393482f77p-45 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0x1a6p-10 + 0x3a5p-10 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0x1p-1073 + 0x1p-1073 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0x1p-1074 + 0x1.fp+1023 i)": -double: 1 -idouble: 1 -Test "Real part of: clog10 (0x1p-1074 + 0x1p-1074 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0x1p-1074 + 0x1p-1074 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0x1p-1074 - 0x1.fp+1023 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0x1p-147 + 0x1p-147 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x1p-149 + 0x1.fp+127 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x1p-149 + 0x1p-149 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x1p-149 - 0x1.fp+127 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x1p-509 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0x1p-510 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0x1p-511 + 1.0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0x1p-61 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x1p-62 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x1p-63 + 1.0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: clog10 (0x2818p-15 + 0x798fp-15 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x2818p-15 + 0x798fp-15 i)": -float: 1 -ifloat: 1 -Test "Real part of: clog10 (0x2dd46725bp-35 + 0x7783a1284p-35 i)": -double: 1 -idouble: 1 -Test "Real part of: clog10 (0x2ede88p-23 + 0x771c3fp-23 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (0x2ede88p-23 + 0x771c3fp-23 i)": -double: 1 -idouble: 1 -Test "Real part of: clog10 (0x4447d7175p-35 + 0x6c445e00ap-35 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0x5b06b680ea2ccp-52 + 0xef452b965da9fp-52 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0x9b57bp-20 + 0xcb7b4p-20 i)": -double: 1 -idouble: 1 -Test "Real part of: clog10 (0xf2p-10 + 0x3e3p-10 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0xf2p-10 + 0x3e3p-10 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (0xfe961079616p-45 + 0x1bc37e09e6d1p-45 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (1.0 + 0x1.234566p-10 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: clog10 (3 + inf i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (3 - inf i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (inf + inf i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: clog10 (inf - inf i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# cos -Test "cos (0x1p+120)": -float: 1 -ifloat: 1 -Test "cos (0x7p+0)": -float: 1 -ifloat: 1 -Test "cos (0x8p+124)": -float: 1 -ifloat: 1 -Test "cos (0xc.d4967p-4)": -float: 1 -ifloat: 1 - -# cos_tonearest -Test "cos_tonearest (0x1p+120)": -float: 1 -ifloat: 1 -Test "cos_tonearest (0x7p+0)": -float: 1 -ifloat: 1 -Test "cos_tonearest (0x8p+124)": -float: 1 -ifloat: 1 -Test "cos_tonearest (0xc.d4967p-4)": -float: 1 -ifloat: 1 - -# cosh -Test "cosh (-0x1p+0)": -float: 1 -ifloat: 1 -Test "cosh (-0x2.c5e3acp+8)": -double: 1 -idouble: 1 -Test "cosh (-0x2.c679dp+8)": -double: 1 -idouble: 1 -Test "cosh (0x2.c5e3acp+8)": -double: 1 -idouble: 1 -Test "cosh (0x2.c679dp+8)": -double: 1 -idouble: 1 - -# cosh_tonearest -Test "cosh_tonearest (-0x1p+0)": -float: 1 -ifloat: 1 -Test "cosh_tonearest (-0x2.c5e3acp+8)": -double: 1 -idouble: 1 -Test "cosh_tonearest (-0x2.c679dp+8)": -double: 1 -idouble: 1 -Test "cosh_tonearest (0x2.c5e3acp+8)": -double: 1 -idouble: 1 -Test "cosh_tonearest (0x2.c679dp+8)": -double: 1 -idouble: 1 - -# cpow -Test "Real part of: cpow (0x2p+0 + 0x3p+0 i, 0x4p+0 + +0 i)": -double: 1 -float: 4 -idouble: 1 -ifloat: 4 -Test "Imaginary part of: cpow (0x2p+0 + 0x3p+0 i, 0x4p+0 + +0 i)": -float: 2 -ifloat: 2 -Test "Real part of: cpow (0xcp-4 + 0x1.4p+0 i, +0 + 0x1p+0 i)": -float: 1 -ifloat: 1 -Test "Real part of: cpow (0xcp-4 + 0x1.4p+0 i, 0x1p+0 + 0x1p+0 i)": -double: 2 -float: 3 -idouble: 2 -ifloat: 3 -Test "Real part of: cpow (0xcp-4 + 0x1.4p+0 i, 0xcp-4 + 0x1.4p+0 i)": -double: 1 -float: 4 -idouble: 1 -ifloat: 4 - -# csin -Test "Real part of: csin (-0.75 + 710.5 i)": -double: 1 -idouble: 1 -Test "Real part of: csin (-0.75 + 89.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: csin (-0.75 - 710.5 i)": -double: 1 -idouble: 1 -Test "Real part of: csin (-0.75 - 89.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: csin (0.75 + 710.5 i)": -double: 1 -idouble: 1 -Test "Real part of: csin (0.75 + 89.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: csin (0.75 - 710.5 i)": -double: 1 -idouble: 1 -Test "Real part of: csin (0.75 - 89.5 i)": -float: 1 -ifloat: 1 -Test "Real part of: csin (0x1p-1074 + 1440 i)": -double: 1 -idouble: 1 - -# csinh -Test "Imaginary part of: csinh (-2 - 3 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: csinh (-710.5 + 0.75 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: csinh (-710.5 - 0.75 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: csinh (-89.5 + 0.75 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: csinh (-89.5 - 0.75 i)": -float: 1 -ifloat: 1 -Test "Real part of: csinh (0.75 + 1.25 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: csinh (0.75 + 1.25 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: csinh (1440 + 0x1p-1074 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: csinh (710.5 + 0.75 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: csinh (710.5 - 0.75 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: csinh (89.5 + 0.75 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: csinh (89.5 - 0.75 i)": -float: 1 -ifloat: 1 - -# csqrt -Test "Real part of: csqrt (-0x2p+0 + 0x3p+0 i)": -float: 1 -ifloat: 1 -Test "Real part of: csqrt (-0x2p+0 - 0x3p+0 i)": -float: 1 -ifloat: 1 -Test "Real part of: csqrt (-0x4.000008p-128 - 0x4.000008p-128 i)": -double: 1 -idouble: 1 -Test "Real part of: csqrt (-0x8p-152 - 0x4p-1076 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: csqrt (0x4.000008p-128 + 0x4.000008p-128 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: csqrt (0x4p-1076 + 0xf.fffffp+124 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: csqrt (0x8p+1020 + 0x8p-152 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: csqrt (0x8p+124 + 0x8p-152 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: csqrt (0x8p-152 + 0x4p-1076 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: csqrt (0x8p-152 + 0x8p-1076 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: csqrt (0x8p-152 + 0xf.fffffp+124 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: csqrt (0xf.ffffffffffff8p+1020 + 0x8p+1020 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: csqrt (0xf.ffffffffffff8p+1020 + 0x8p-152 i)": -double: 1 -idouble: 1 -Test "Real part of: csqrt (0xf.ffffffffffff8p+1020 + 0xf.ffffffffffff8p+1020 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: csqrt (0xf.ffffffffffff8p+1020 + 0xf.ffffffffffff8p+1020 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: csqrt (0xf.ffffffffffff8p+1020 + 0xf.fffffp+124 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: csqrt (0xf.fffffp+124 + 0x1p+0 i)": -float: 1 -ifloat: 1 - -# ctan -Test "Real part of: ctan (-0x2p+0 - 0x3p+0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ctan (-0x2p+0 - 0x3p+0 i)": -double: 1 -idouble: 1 -Test "Real part of: ctan (0x1.921fb4p+0 + +0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: ctan (0x1.921fb4p+0 + 0x4p-1076 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ctan (0x1.921fb4p+0 + 0x4p-1076 i)": -double: 1 -idouble: 1 -Test "Real part of: ctan (0x1.921fb4p+0 + 0x8p-152 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: ctan (0x1.921fb4p+0 + 0x8p-152 i)": -double: 1 -idouble: 1 -Test "Real part of: ctan (0x1.921fb54442d19p+0 + +0 i)": -double: 1 -idouble: 1 -Test "Real part of: ctan (0x1.921fb54442d19p+0 + 0x4p-1076 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ctan (0x1.921fb54442d19p+0 + 0x4p-1076 i)": -double: 2 -idouble: 2 -Test "Real part of: ctan (0x1.921fb54442d19p+0 + 0x8p-152 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ctan (0x1.921fb54442d19p+0 + 0x8p-152 i)": -double: 2 -idouble: 2 -Test "Real part of: ctan (0x1.921fb6p+0 + +0 i)": -float: 1 -ifloat: 1 -Test "Real part of: ctan (0x1.921fb6p+0 + 0x8p-152 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ctan (0x1.921fb6p+0 + 0x8p-152 i)": -float: 1 -ifloat: 1 -Test "Real part of: ctan (0x8p+1020 + 0x1p+0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ctan (0x8p+124 + 0x1p+0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ctan (0xcp-4 + 0x1.4p+0 i)": -double: 1 -idouble: 1 -Test "Real part of: ctan (0xf.ffffffffffff8p+1020 + 0x1p+0 i)": -double: 1 -idouble: 1 -Test "Real part of: ctan (0xf.fffffp+124 + 0x1p+0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ctan (0xf.fffffp+124 + 0x1p+0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# ctan_tonearest -Test "Real part of: ctan_tonearest (-0x2p+0 - 0x3p+0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ctan_tonearest (-0x2p+0 - 0x3p+0 i)": -double: 1 -idouble: 1 -Test "Real part of: ctan_tonearest (0x1.921fb4p+0 + +0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: ctan_tonearest (0x1.921fb4p+0 + 0x4p-1076 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ctan_tonearest (0x1.921fb4p+0 + 0x4p-1076 i)": -double: 1 -idouble: 1 -Test "Real part of: ctan_tonearest (0x1.921fb4p+0 + 0x8p-152 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: ctan_tonearest (0x1.921fb4p+0 + 0x8p-152 i)": -double: 1 -idouble: 1 -Test "Real part of: ctan_tonearest (0x1.921fb54442d19p+0 + +0 i)": -double: 1 -idouble: 1 -Test "Real part of: ctan_tonearest (0x1.921fb54442d19p+0 + 0x4p-1076 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ctan_tonearest (0x1.921fb54442d19p+0 + 0x4p-1076 i)": -double: 2 -idouble: 2 -Test "Real part of: ctan_tonearest (0x1.921fb54442d19p+0 + 0x8p-152 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ctan_tonearest (0x1.921fb54442d19p+0 + 0x8p-152 i)": -double: 2 -idouble: 2 -Test "Real part of: ctan_tonearest (0x1.921fb6p+0 + +0 i)": -float: 1 -ifloat: 1 -Test "Real part of: ctan_tonearest (0x1.921fb6p+0 + 0x8p-152 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ctan_tonearest (0x1.921fb6p+0 + 0x8p-152 i)": -float: 1 -ifloat: 1 -Test "Real part of: ctan_tonearest (0x8p+1020 + 0x1p+0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ctan_tonearest (0x8p+124 + 0x1p+0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ctan_tonearest (0xcp-4 + 0x1.4p+0 i)": -double: 1 -idouble: 1 -Test "Real part of: ctan_tonearest (0xf.ffffffffffff8p+1020 + 0x1p+0 i)": -double: 1 -idouble: 1 -Test "Real part of: ctan_tonearest (0xf.fffffp+124 + 0x1p+0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ctan_tonearest (0xf.fffffp+124 + 0x1p+0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# ctanh -Test "Imaginary part of: ctanh (+0 + 0x1.921fb4p+0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: ctanh (+0 + 0x1.921fb54442d19p+0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ctanh (+0 + 0x1.921fb6p+0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ctanh (+0 + 0xc.90fdaa22168cp-4 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ctanh (+0 + 0xc.90fdap-4 i)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "Imaginary part of: ctanh (+0 + 0xc.90fdbp-4 i)": -float: 1 -ifloat: 1 -Test "Real part of: ctanh (-0x2p+0 - 0x3p+0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: ctanh (-0x2p+0 - 0x3p+0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: ctanh (0x1p+0 + 0x8p+1020 i)": -double: 1 -idouble: 1 -Test "Real part of: ctanh (0x1p+0 + 0x8p+124 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ctanh (0x1p+0 + 0xf.ffffffffffff8p+1020 i)": -double: 1 -idouble: 1 -Test "Real part of: ctanh (0x1p+0 + 0xf.fffffp+124 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: ctanh (0x1p+0 + 0xf.fffffp+124 i)": -double: 1 -idouble: 1 -Test "Real part of: ctanh (0x4p-1076 + 0x1.921fb4p+0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ctanh (0x4p-1076 + 0x1.921fb4p+0 i)": -double: 1 -idouble: 1 -Test "Real part of: ctanh (0x4p-1076 + 0x1.921fb54442d19p+0 i)": -double: 2 -idouble: 2 -Test "Imaginary part of: ctanh (0x4p-1076 + 0x1.921fb54442d19p+0 i)": -double: 1 -idouble: 1 -Test "Real part of: ctanh (0x8p-152 + 0x1.921fb4p+0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ctanh (0x8p-152 + 0x1.921fb4p+0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: ctanh (0x8p-152 + 0x1.921fb54442d19p+0 i)": -double: 2 -idouble: 2 -Test "Imaginary part of: ctanh (0x8p-152 + 0x1.921fb54442d19p+0 i)": -double: 1 -idouble: 1 -Test "Real part of: ctanh (0x8p-152 + 0x1.921fb6p+0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ctanh (0x8p-152 + 0x1.921fb6p+0 i)": -float: 1 -ifloat: 1 -Test "Real part of: ctanh (0xcp-4 + 0x1.4p+0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: ctanh (0xcp-4 + 0x1.4p+0 i)": -float: 2 -ifloat: 2 - -# ctanh_tonearest -Test "Imaginary part of: ctanh_tonearest (+0 + 0x1.921fb4p+0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: ctanh_tonearest (+0 + 0x1.921fb54442d19p+0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ctanh_tonearest (+0 + 0x1.921fb6p+0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ctanh_tonearest (+0 + 0xc.90fdaa22168cp-4 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ctanh_tonearest (+0 + 0xc.90fdap-4 i)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "Imaginary part of: ctanh_tonearest (+0 + 0xc.90fdbp-4 i)": -float: 1 -ifloat: 1 -Test "Real part of: ctanh_tonearest (-0x2p+0 - 0x3p+0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: ctanh_tonearest (-0x2p+0 - 0x3p+0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: ctanh_tonearest (0x1p+0 + 0x8p+1020 i)": -double: 1 -idouble: 1 -Test "Real part of: ctanh_tonearest (0x1p+0 + 0x8p+124 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ctanh_tonearest (0x1p+0 + 0xf.ffffffffffff8p+1020 i)": -double: 1 -idouble: 1 -Test "Real part of: ctanh_tonearest (0x1p+0 + 0xf.fffffp+124 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: ctanh_tonearest (0x1p+0 + 0xf.fffffp+124 i)": -double: 1 -idouble: 1 -Test "Real part of: ctanh_tonearest (0x4p-1076 + 0x1.921fb4p+0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ctanh_tonearest (0x4p-1076 + 0x1.921fb4p+0 i)": -double: 1 -idouble: 1 -Test "Real part of: ctanh_tonearest (0x4p-1076 + 0x1.921fb54442d19p+0 i)": -double: 2 -idouble: 2 -Test "Imaginary part of: ctanh_tonearest (0x4p-1076 + 0x1.921fb54442d19p+0 i)": -double: 1 -idouble: 1 -Test "Real part of: ctanh_tonearest (0x8p-152 + 0x1.921fb4p+0 i)": -double: 1 -idouble: 1 -Test "Imaginary part of: ctanh_tonearest (0x8p-152 + 0x1.921fb4p+0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Real part of: ctanh_tonearest (0x8p-152 + 0x1.921fb54442d19p+0 i)": -double: 2 -idouble: 2 -Test "Imaginary part of: ctanh_tonearest (0x8p-152 + 0x1.921fb54442d19p+0 i)": -double: 1 -idouble: 1 -Test "Real part of: ctanh_tonearest (0x8p-152 + 0x1.921fb6p+0 i)": -float: 1 -ifloat: 1 -Test "Imaginary part of: ctanh_tonearest (0x8p-152 + 0x1.921fb6p+0 i)": -float: 1 -ifloat: 1 -Test "Real part of: ctanh_tonearest (0xcp-4 + 0x1.4p+0 i)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "Imaginary part of: ctanh_tonearest (0xcp-4 + 0x1.4p+0 i)": -float: 2 -ifloat: 2 - -# erf -Test "erf (0x1.4p+0)": -double: 1 -idouble: 1 - -# erfc -Test "erfc (-0x8p-4)": -float: 1 -ifloat: 1 -Test "erfc (0x2p+0)": -double: 1 -idouble: 1 -Test "erfc (0x3.ee6078p+0)": -double: 1 -idouble: 1 -Test "erfc (0x4.2p+0)": -double: 1 -idouble: 1 -Test "erfc (0x7.fe8008p+0)": -float: 1 -ifloat: 1 -Test "erfc (0x7.fffd6p+0)": -float: 1 -ifloat: 1 - -# exp10 -Test "exp10 (-0x1.31p+8)": -double: 1 -idouble: 1 -Test "exp10 (-0x1p+0)": -double: 1 -idouble: 1 -Test "exp10 (-0x2.4p+4)": -double: 1 -idouble: 1 -Test "exp10 (0x2.4p+4)": -double: 1 -idouble: 1 -Test "exp10 (0x3p+0)": -double: 1 -idouble: 1 - -# exp10_tonearest -Test "exp10_tonearest (-0x1.31p+8)": -double: 1 -idouble: 1 -Test "exp10_tonearest (-0x1p+0)": -double: 1 -idouble: 1 -Test "exp10_tonearest (-0x2.4p+4)": -double: 1 -idouble: 1 -Test "exp10_tonearest (0x2.4p+4)": -double: 1 -idouble: 1 -Test "exp10_tonearest (0x3p+0)": -double: 1 -idouble: 1 - -# expm1 -Test "expm1 (0x1.f4p+8)": -double: 1 -idouble: 1 -Test "expm1 (0x1p+0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "expm1 (0xcp-4)": -double: 1 -idouble: 1 - -# expm1_tonearest -Test "expm1_tonearest (0x1.f4p+8)": -double: 1 -idouble: 1 -Test "expm1_tonearest (0x1p+0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "expm1_tonearest (0xcp-4)": -double: 1 -idouble: 1 - -# gamma -Test "gamma (-0x1p-20)": -double: 1 -idouble: 1 -Test "gamma (-0x2p-16)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "gamma (-0x4p-12)": -double: 1 -idouble: 1 -Test "gamma (-0x8p-8)": -double: 1 -idouble: 1 -Test "gamma (0x4p-12)": -float: 1 -ifloat: 1 -Test "gamma (0x4p-32)": -double: 1 -idouble: 1 -Test "gamma (0xb.333333333333p-4)": -double: 1 -idouble: 1 -Test "gamma (0xb.33333p-4)": -double: 1 -idouble: 1 - -# hypot -Test "hypot (-0xb.33334p-4, -0xc.6666666666668p+0)": -double: 1 -idouble: 1 -Test "hypot (-0xb.33334p-4, 0xc.6666666666668p+0)": -double: 1 -idouble: 1 -Test "hypot (-0xc.6666666666668p+0, -0xb.33334p-4)": -double: 1 -idouble: 1 -Test "hypot (-0xc.6666666666668p+0, 0xb.33334p-4)": -double: 1 -idouble: 1 -Test "hypot (0xb.33334p-4, -0xc.6666666666668p+0)": -double: 1 -idouble: 1 -Test "hypot (0xb.33334p-4, 0xc.6666666666668p+0)": -double: 1 -idouble: 1 -Test "hypot (0xc.6666666666668p+0, -0xb.33334p-4)": -double: 1 -idouble: 1 -Test "hypot (0xc.6666666666668p+0, 0xb.33334p-4)": -double: 1 -idouble: 1 - -# j0 -Test "j0 (-0x4p+0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "j0 (-0xf.fffffp+124)": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 -Test "j0 (0x2p+0)": -float: 2 -ifloat: 2 -Test "j0 (0x4p+0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "j0 (0x8p+0)": -float: 1 -ifloat: 1 -Test "j0 (0xap+0)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "j0 (0xcp-4)": -float: 1 -ifloat: 1 -Test "j0 (0xe.be71dp+104)": -float: 2 -ifloat: 2 -Test "j0 (0xf.fffffp+124)": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 - -# j1 -Test "j1 (0x1.ff00000000002p+840)": -double: 1 -idouble: 1 -Test "j1 (0x2p+0)": -double: 1 -idouble: 1 -Test "j1 (0x4.ffcp+72)": -double: 1 -idouble: 1 -Test "j1 (0x8p+0)": -double: 1 -idouble: 1 -Test "j1 (0xap+0)": -float: 2 -ifloat: 2 -Test "j1 (0xf.ffffffffffff8p+1020)": -double: 1 -idouble: 1 -Test "j1 (0xf.fffffp+124)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# jn -Test "jn (0, -0x4p+0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "jn (0, 0x2p+0)": -float: 2 -ifloat: 2 -Test "jn (0, 0x4p+0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "jn (0, 0x8p+0)": -float: 1 -ifloat: 1 -Test "jn (0, 0xap+0)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "jn (0, 0xcp-4)": -float: 1 -ifloat: 1 -Test "jn (1, 0x2p+0)": -double: 1 -idouble: 1 -Test "jn (1, 0x8p+0)": -double: 1 -idouble: 1 -Test "jn (1, 0xap+0)": -float: 2 -ifloat: 2 -Test "jn (10, 0x2p+0)": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -Test "jn (10, 0x2p-4)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "jn (10, 0xap+0)": -double: 4 -float: 2 -idouble: 4 -ifloat: 2 -Test "jn (10, 0xcp-4)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "jn (2, 0x2.67a2a4p+0)": -float: 1 -ifloat: 1 -Test "jn (2, 0x2.67a2a5d2e3682p+0)": -double: 1 -idouble: 1 -Test "jn (2, 0x2.67a2a5d2e368p+0)": -double: 2 -idouble: 2 -Test "jn (2, 0x2.67a2a8p+0)": -double: 1 -float: 3 -idouble: 1 -ifloat: 3 -Test "jn (2, 0x8p+124)": -double: 1 -idouble: 1 -Test "jn (2, 0xf.fffb1p+96)": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 -Test "jn (2, 0xf.fffffp+124)": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 -Test "jn (3, 0x2.67a2a4p+0)": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -Test "jn (3, 0x2.67a2a5d2e3682p+0)": -double: 1 -idouble: 1 -Test "jn (3, 0x2.67a2a5d2e368p+0)": -double: 3 -idouble: 3 -Test "jn (3, 0x2.67a2a8p+0)": -double: 1 -float: 3 -idouble: 1 -ifloat: 3 -Test "jn (3, 0x2p+0)": -float: 1 -ifloat: 1 -Test "jn (3, 0x2p-4)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "jn (3, 0xap+0)": -double: 3 -idouble: 3 -Test "jn (3, 0xcp-4)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "jn (4, 0x2.67a2a4p+0)": -float: 1 -ifloat: 1 -Test "jn (4, 0x2.67a2a5d2e3682p+0)": -double: 1 -idouble: 1 -Test "jn (4, 0x2.67a2a5d2e368p+0)": -double: 1 -idouble: 1 -Test "jn (4, 0x2.67a2a8p+0)": -float: 1 -ifloat: 1 -Test "jn (5, 0x2.67a2a4p+0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "jn (5, 0x2.67a2a5d2e3682p+0)": -double: 1 -idouble: 1 -Test "jn (5, 0x2.67a2a5d2e368p+0)": -double: 2 -idouble: 2 -Test "jn (5, 0x2.67a2a8p+0)": -float: 2 -ifloat: 2 -Test "jn (6, 0x2.67a2a4p+0)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "jn (6, 0x2.67a2a5d2e3682p+0)": -double: 2 -idouble: 2 -Test "jn (6, 0x2.67a2a5d2e368p+0)": -double: 4 -idouble: 4 -Test "jn (6, 0x2.67a2a8p+0)": -double: 2 -float: 3 -idouble: 2 -ifloat: 3 -Test "jn (7, 0x2.67a2a4p+0)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "jn (7, 0x2.67a2a5d2e368p+0)": -double: 3 -idouble: 3 -Test "jn (7, 0x2.67a2a8p+0)": -double: 2 -float: 3 -idouble: 2 -ifloat: 3 -Test "jn (8, 0x2.67a2a4p+0)": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 -Test "jn (8, 0x2.67a2a5d2e3682p+0)": -double: 1 -idouble: 1 -Test "jn (8, 0x2.67a2a5d2e368p+0)": -double: 3 -idouble: 3 -Test "jn (8, 0x2.67a2a8p+0)": -double: 2 -float: 4 -idouble: 2 -ifloat: 4 -Test "jn (9, 0x2.67a2a4p+0)": -double: 3 -float: 3 -idouble: 3 -ifloat: 3 -Test "jn (9, 0x2.67a2a5d2e3682p+0)": -double: 4 -idouble: 4 -Test "jn (9, 0x2.67a2a5d2e368p+0)": -double: 1 -idouble: 1 -Test "jn (9, 0x2.67a2a8p+0)": -double: 3 -float: 3 -idouble: 3 -ifloat: 3 - -# lgamma -Test "lgamma (-0x1p-20)": -double: 1 -idouble: 1 -Test "lgamma (-0x2p-16)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "lgamma (-0x4p-12)": -double: 1 -idouble: 1 -Test "lgamma (-0x8p-8)": -double: 1 -idouble: 1 -Test "lgamma (0x4p-12)": -float: 1 -ifloat: 1 -Test "lgamma (0x4p-32)": -double: 1 -idouble: 1 -Test "lgamma (0xb.333333333333p-4)": -double: 1 -idouble: 1 -Test "lgamma (0xb.33333p-4)": -double: 1 -idouble: 1 - -# log -Test "log (0x2.b7e15p+0)": -float: 1 -ifloat: 1 - -# log10 -Test "log10 (0x2.b7e154p+0)": -float: 1 -ifloat: 1 -Test "log10 (0xcp-4)": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -# log1p -Test "log1p (-0x4p-4)": -float: 1 -ifloat: 1 -Test "log1p (0x1.b7e15p+0)": -float: 1 -ifloat: 1 - -# pow -Test "pow (0x1.000002p+0, 0x1p+24)": -float: 1 -ifloat: 1 -Test "pow (0xf.fffffp-4, -0x1p+24)": -float: 1 -ifloat: 1 -Test "pow (0xf.fffffp-4, 0x1p+24)": -float: 1 -ifloat: 1 - -# pow10 -Test "pow10 (-0x1.31p+8)": -double: 1 -idouble: 1 -Test "pow10 (-0x1p+0)": -double: 1 -idouble: 1 -Test "pow10 (-0x2.4p+4)": -double: 1 -idouble: 1 -Test "pow10 (0x2.4p+4)": -double: 1 -idouble: 1 -Test "pow10 (0x3p+0)": -double: 1 -idouble: 1 - -# pow_tonearest -Test "pow_tonearest (0x1.000002p+0, 0x1p+24)": -float: 1 -ifloat: 1 -Test "pow_tonearest (0xf.fffffp-4, -0x1p+24)": -float: 1 -ifloat: 1 -Test "pow_tonearest (0xf.fffffp-4, 0x1p+24)": -float: 1 -ifloat: 1 - -# sin -Test "sin (0x1p+0)": -float: 1 -ifloat: 1 - -# sin_tonearest -Test "sin_tonearest (0x1p+0)": -float: 1 -ifloat: 1 - -# sincos -Test "sincos (0x1.0c1522p+0) extra output 1": -float: 1 -ifloat: 1 -Test "sincos (0x1p+120) extra output 2": -float: 1 -ifloat: 1 -Test "sincos (0x8.60a92p-4) extra output 2": -float: 1 -ifloat: 1 -Test "sincos (0x8p+124) extra output 2": -float: 1 -ifloat: 1 -Test "sincos (0xc.d4967p-4) extra output 2": -float: 1 -ifloat: 1 - -# tgamma -Test "tgamma (-0x1.000002p+0)": -double: 2 -idouble: 2 -Test "tgamma (-0x1.3ffffep+4)": -float: 2 -ifloat: 2 -Test "tgamma (-0x1.4000000000001p+4)": -double: 1 -idouble: 1 -Test "tgamma (-0x1.400002p+4)": -float: 1 -ifloat: 1 -Test "tgamma (-0x1.dffffep+4)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (-0x1.e000000000001p+4)": -double: 3 -idouble: 3 -Test "tgamma (-0x1.e00002p+4)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (-0x2.0000000000002p+0)": -double: 1 -idouble: 1 -Test "tgamma (-0x2.000004p+0)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "tgamma (-0x2.146544p+4)": -float: 2 -ifloat: 2 -Test "tgamma (-0x2.7fffffffffffep+4)": -double: 1 -idouble: 1 -Test "tgamma (-0x2.8000000000002p+4)": -double: 1 -idouble: 1 -Test "tgamma (-0x2.800004p+4)": -double: 2 -idouble: 2 -Test "tgamma (-0x2.8p+0)": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -Test "tgamma (-0x2.900004p+4)": -double: 1 -idouble: 1 -Test "tgamma (-0x2.9ffffcp+4)": -double: 1 -idouble: 1 -Test "tgamma (-0x2.fffffcp+0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (-0x3.000004p+0)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "tgamma (-0x3.1ffffcp+4)": -double: 1 -idouble: 1 -Test "tgamma (-0x3.1fffffffffffep+4)": -double: 3 -idouble: 3 -Test "tgamma (-0x3.8p+0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (-0x3.fffffcp+0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (-0x3.ffffffffffffep+0)": -double: 2 -idouble: 2 -Test "tgamma (-0x4.000008p+0)": -float: 1 -ifloat: 1 -Test "tgamma (-0x4.8p+0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (-0x4.fffff8p+0)": -double: 1 -idouble: 1 -Test "tgamma (-0x4.ffffffffffffcp+0)": -double: 1 -idouble: 1 -Test "tgamma (-0x5.000008p+0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (-0x5.8p+0)": -double: 1 -idouble: 1 -Test "tgamma (-0x5.ffffffffffffcp+0)": -double: 1 -idouble: 1 -Test "tgamma (-0x6.000008p+0)": -float: 2 -ifloat: 2 -Test "tgamma (-0x6.3fffffffffffcp+4)": -double: 2 -idouble: 2 -Test "tgamma (-0x6.4000000000004p+4)": -double: 1 -idouble: 1 -Test "tgamma (-0x6.400008p+4)": -double: 1 -idouble: 1 -Test "tgamma (-0x6.8p+0)": -float: 1 -ifloat: 1 -Test "tgamma (-0x6.fffff8p+0)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "tgamma (-0x6.ffffffffffffcp+0)": -double: 4 -idouble: 4 -Test "tgamma (-0x7.0000000000004p+0)": -double: 3 -idouble: 3 -Test "tgamma (-0x7.000008p+0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (-0x7.8p+0)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "tgamma (-0x7.fffff8p+0)": -double: 3 -float: 1 -idouble: 3 -ifloat: 1 -Test "tgamma (-0x7.ffffffffffffcp+0)": -double: 3 -idouble: 3 -Test "tgamma (-0x8.00001p+0)": -double: 2 -idouble: 2 -Test "tgamma (-0x8.8p+0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (-0x8p-4)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (-0x9.6000000000008p+4)": -double: 1 -idouble: 1 -Test "tgamma (-0x9.60001p+4)": -double: 1 -idouble: 1 -Test "tgamma (-0x9.8p+0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (-0x9.ffffffffffff8p+0)": -double: 1 -idouble: 1 -Test "tgamma (-0x9.fffffp+0)": -float: 1 -ifloat: 1 -Test "tgamma (-0xa.00001p+0)": -double: 1 -idouble: 1 -Test "tgamma (-0xa.c0001p+4)": -double: 1 -idouble: 1 -Test "tgamma (-0xf.ffffffffffff8p-4)": -double: 1 -idouble: 1 -Test "tgamma (-0xf.fffffp-4)": -float: 1 -ifloat: 1 -Test "tgamma (0x1.28p+4)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (0x1.38p+4)": -double: 2 -idouble: 2 -Test "tgamma (0x1.78p+4)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (0x1.d8p+4)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (0x1.e8p+4)": -float: 1 -ifloat: 1 -Test "tgamma (0x1.fffffep+0)": -float: 1 -ifloat: 1 -Test "tgamma (0x1.fffffffffffffp+0)": -double: 1 -idouble: 1 -Test "tgamma (0x1p-24)": -float: 1 -ifloat: 1 -Test "tgamma (0x2.18p+4)": -float: 1 -ifloat: 1 -Test "tgamma (0x2.28p+4)": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -Test "tgamma (0x2.30a43cp+4)": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -Test "tgamma (0x2.8p+0)": -float: 2 -ifloat: 2 -Test "tgamma (0x2.fffffcp+0)": -float: 3 -ifloat: 3 -Test "tgamma (0x3.8p+0)": -float: 2 -ifloat: 2 -Test "tgamma (0x3.fffffcp+0)": -float: 1 -ifloat: 1 -Test "tgamma (0x3.ffffffffffffep+0)": -double: 1 -idouble: 1 -Test "tgamma (0x3p+0)": -float: 1 -ifloat: 1 -Test "tgamma (0x4.0000000000004p+0)": -double: 1 -idouble: 1 -Test "tgamma (0x4.8p+0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (0x4.ffffffffffffcp+0)": -double: 1 -idouble: 1 -Test "tgamma (0x4p+0)": -float: 1 -ifloat: 1 -Test "tgamma (0x5.0000000000004p+0)": -double: 1 -idouble: 1 -Test "tgamma (0x5.000008p+0)": -float: 2 -ifloat: 2 -Test "tgamma (0x5.fffff8p+0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (0x6.0000000000004p+0)": -double: 1 -idouble: 1 -Test "tgamma (0x6.000008p+0)": -float: 2 -ifloat: 2 -Test "tgamma (0x6.8p+0)": -float: 1 -ifloat: 1 -Test "tgamma (0x6.fffff8p+0)": -double: 1 -idouble: 1 -Test "tgamma (0x6.ffffffffffffcp+0)": -double: 4 -idouble: 4 -Test "tgamma (0x6p+0)": -float: 1 -ifloat: 1 -Test "tgamma (0x7.0000000000004p+0)": -double: 4 -idouble: 4 -Test "tgamma (0x7.000008p+0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (0x7.8p+0)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "tgamma (0x7.fffff8p+0)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "tgamma (0x7.ffffffffffffcp+0)": -double: 2 -idouble: 2 -Test "tgamma (0x7p+0)": -double: 1 -idouble: 1 -Test "tgamma (0x8.00001p+0)": -double: 2 -idouble: 2 -Test "tgamma (0x8.8p+0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "tgamma (0x8p+0)": -double: 1 -idouble: 1 -Test "tgamma (0x8p-4)": -float: 1 -ifloat: 1 -Test "tgamma (0x8p-56)": -double: 1 -idouble: 1 -Test "tgamma (0x9.8p+0)": -double: 1 -idouble: 1 -Test "tgamma (0x9p+0)": -double: 1 -idouble: 1 -Test "tgamma (0xa.b9fd72b0fb238p+4)": -double: 1 -idouble: 1 -Test "tgamma (0xa.b9fd7p+4)": -double: 2 -idouble: 2 -Test "tgamma (0xap+0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# y0 -Test "y0 (0x1.8p+0)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "y0 (0x1.ff00000000002p+840)": -double: 1 -idouble: 1 -Test "y0 (0x1p+0)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "y0 (0x1p-20)": -float: 1 -ifloat: 1 -Test "y0 (0x1p-40)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "y0 (0x1p-80)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "y0 (0x4.ffcp+72)": -double: 1 -idouble: 1 -Test "y0 (0x4p-112)": -double: 1 -idouble: 1 -Test "y0 (0x4p-12)": -double: 1 -idouble: 1 -Test "y0 (0x4p-32)": -float: 1 -ifloat: 1 -Test "y0 (0x4p-52)": -float: 1 -ifloat: 1 -Test "y0 (0x4p-72)": -double: 1 -idouble: 1 -Test "y0 (0x8p+0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "y0 (0xap+0)": -float: 1 -ifloat: 1 -Test "y0 (0xf.ffffffffffff8p+1020)": -double: 1 -idouble: 1 -Test "y0 (0xf.fffffp+124)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -# y1 -Test "y1 (0x1.8p+0)": -float: 1 -ifloat: 1 -Test "y1 (0x2p+0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "y1 (0x2p-4)": -double: 1 -idouble: 1 -Test "y1 (0x4p-12)": -double: 1 -idouble: 1 -Test "y1 (0x8p+0)": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -Test "y1 (0x9.3f102p+96)": -double: 1 -idouble: 1 -Test "y1 (0xap+0)": -double: 3 -float: 1 -idouble: 3 -ifloat: 1 -Test "y1 (0xf.fffffp+124)": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 - -# yn -Test "yn (-10, 0x1p+0)": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -Test "yn (0, 0x1.8p+0)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "yn (0, 0x1p+0)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "yn (0, 0x8p+0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "yn (0, 0xap+0)": -float: 1 -ifloat: 1 -Test "yn (1, 0x1.8p+0)": -float: 1 -ifloat: 1 -Test "yn (1, 0x2p+0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "yn (1, 0x2p-4)": -double: 1 -idouble: 1 -Test "yn (1, 0x8p+0)": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -Test "yn (1, 0xap+0)": -double: 3 -float: 1 -idouble: 3 -ifloat: 1 -Test "yn (10, 0x1p+0)": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 -Test "yn (10, 0x2p+0)": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 -Test "yn (10, 0x2p-4)": -double: 1 -idouble: 1 -Test "yn (10, 0xap+0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "yn (10, 0xcp-4)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "yn (2, 0x8p+124)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "yn (2, 0xf.fffb1p+96)": -double: 1 -idouble: 1 -Test "yn (2, 0xf.ffffffffffff8p+1020)": -double: 1 -idouble: 1 -Test "yn (2, 0xf.fffffp+124)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "yn (3, 0x2p+0)": -double: 1 -idouble: 1 -Test "yn (3, 0x2p-4)": -double: 1 -idouble: 1 -Test "yn (3, 0xap+0)": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 -Test "yn (3, 0xcp-4)": -double: 1 -idouble: 1 - -# Maximal error of functions: -Function: "acosh": -double: 1 -idouble: 1 - -Function: "asinh": -double: 1 -float: 1 -ifloat: 1 - -Function: "atan2": -float: 1 -ifloat: 1 - -Function: "atanh": -float: 1 -ifloat: 1 - -Function: Real part of "cacos": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: Imaginary part of "cacos": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: Real part of "cacosh": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: Imaginary part of "cacosh": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: Real part of "casin": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Imaginary part of "casin": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: Real part of "casinh": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: Imaginary part of "casinh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Real part of "catan": -float: 1 -ifloat: 1 - -Function: Imaginary part of "catan": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Real part of "catanh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Imaginary part of "catanh": -float: 1 -ifloat: 1 - -Function: "cbrt": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Real part of "ccos": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Imaginary part of "ccos": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Real part of "ccosh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Imaginary part of "ccosh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Real part of "cexp": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -Function: Imaginary part of "cexp": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: Real part of "clog": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Imaginary part of "clog": -float: 1 -ifloat: 1 - -Function: Real part of "clog10": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 - -Function: Imaginary part of "clog10": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "cos": -float: 1 -ifloat: 1 - -Function: "cos_tonearest": -float: 1 -ifloat: 1 - -Function: "cosh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "cosh_tonearest": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Real part of "cpow": -double: 2 -float: 4 -idouble: 2 -ifloat: 4 - -Function: Imaginary part of "cpow": -float: 2 -ifloat: 2 - -Function: Real part of "csin": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Real part of "csinh": -float: 1 -ifloat: 1 - -Function: Imaginary part of "csinh": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Real part of "csqrt": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Imaginary part of "csqrt": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Real part of "ctan": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Imaginary part of "ctan": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -Function: Real part of "ctan_tonearest": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: Imaginary part of "ctan_tonearest": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -Function: Real part of "ctanh": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -Function: Imaginary part of "ctanh": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 - -Function: Real part of "ctanh_tonearest": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -Function: Imaginary part of "ctanh_tonearest": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 - -Function: "erf": -double: 1 -idouble: 1 - -Function: "erfc": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "exp10": -double: 1 -idouble: 1 - -Function: "exp10_tonearest": -double: 1 -idouble: 1 - -Function: "expm1": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "expm1_tonearest": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "gamma": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "hypot": -double: 1 -idouble: 1 - -Function: "j0": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 - -Function: "j1": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: "jn": -double: 4 -float: 4 -idouble: 4 -ifloat: 4 - -Function: "lgamma": -double: 1 -float: 1 -idouble: 1 -ifloat: 1 - -Function: "log": -float: 1 -ifloat: 1 - -Function: "log10": -double: 1 -float: 2 -idouble: 1 -ifloat: 2 - -Function: "log1p": -float: 1 -ifloat: 1 - -Function: "pow": -float: 1 -ifloat: 1 - -Function: "pow10": -double: 1 -idouble: 1 - -Function: "pow_tonearest": -float: 1 -ifloat: 1 - -Function: "sin": -float: 1 -ifloat: 1 - -Function: "sin_tonearest": -float: 1 -ifloat: 1 - -Function: "sincos": -float: 1 -ifloat: 1 - -Function: "tgamma": -double: 4 -float: 3 -idouble: 4 -ifloat: 3 - -Function: "y0": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -Function: "y1": -double: 3 -float: 2 -idouble: 3 -ifloat: 2 - -Function: "yn": -double: 3 -float: 2 -idouble: 3 -ifloat: 2 - -# end of automatic generation diff --git a/ports/sysdeps/tile/machine-gmon.h b/ports/sysdeps/tile/machine-gmon.h deleted file mode 100644 index 39ea9f472c..0000000000 --- a/ports/sysdeps/tile/machine-gmon.h +++ /dev/null @@ -1,25 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#define _MCOUNT_DECL(from, self) \ - void __mcount_internal (u_long from, u_long self) - -/* Call __mcount_internal with our the return PC for our caller, and - the return PC our caller will return to. Empty since we use an - assembly stub instead. */ -#define MCOUNT diff --git a/ports/sysdeps/tile/math_private.h b/ports/sysdeps/tile/math_private.h deleted file mode 100644 index 90dcc3f866..0000000000 --- a/ports/sysdeps/tile/math_private.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef _MATH_PRIVATE_H - -/* Internally, we suppress any use of exception or rounding other - than what is supported by the hardware. This does mean that some - code will silently fail to report exceptions, set rounding mode - as expected, etc., but it allows math code to compile that otherwise - wouldn't (such as math/s_fma.c) and so is valuable. - - We intentionally ignore the "exception" arguments of functions that - take an exception, since we can't even evaluate the argument - without causing a build failure. The extra level of statement - expression wrapping avoids "statement with no effect" warnings. - Since the callers don't check for errors anyway, we just claim - success in every case. - - The overrides for libc_ functions must happen before we include - the generic math_private.h, and the overrides for regular - functions must happen afterwards, to avoid clashing with - the declarations of those functions. */ - -#define libc_fesetround(rnd) ({ 0; }) -#define libc_fetestexcept(exc) ({ 0; }) -#define libc_feholdexcept_setround(env, exc) ({ (void) (env); 0; }) -#define libc_feupdateenv_test(env, exc) ({ (void) (env); 0; }) - -#include_next - -#define feraiseexcept(excepts) ({ 0; }) -#define feclearexcept(exc) ({ 0; }) - -#endif diff --git a/ports/sysdeps/tile/memcopy.h b/ports/sysdeps/tile/memcopy.h deleted file mode 100644 index e8326eee66..0000000000 --- a/ports/sysdeps/tile/memcopy.h +++ /dev/null @@ -1,27 +0,0 @@ -/* memcopy.h -- definitions for memory copy functions. Tile version. - Copyright (C) 2012-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include - -/* Support more efficient copying on tilegx32, which supports - long long as a native 64-bit type. */ -#if defined (__tilegx__) && __WORDSIZE == 32 -# undef op_t -# define op_t unsigned long long int -#endif diff --git a/ports/sysdeps/tile/nptl/Makefile b/ports/sysdeps/tile/nptl/Makefile deleted file mode 100644 index 0dea187cf5..0000000000 --- a/ports/sysdeps/tile/nptl/Makefile +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright (C) 2002-2014 Free Software Foundation, Inc. -# This file is part of the GNU C Library. - -# The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. - -# The GNU C Library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. - -# You should have received a copy of the GNU Lesser General Public -# License along with the GNU C Library. If not, see -# . - -ifeq ($(subdir),csu) -gen-as-const-headers += tcb-offsets.sym -endif diff --git a/ports/sysdeps/tile/nptl/pthread_spin_lock.c b/ports/sysdeps/tile/nptl/pthread_spin_lock.c deleted file mode 100644 index 9414121fb7..0000000000 --- a/ports/sysdeps/tile/nptl/pthread_spin_lock.c +++ /dev/null @@ -1,56 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include "pthreadP.h" -#include -#include - -/* Bound point for bounded exponential backoff */ -#define BACKOFF_MAX 2048 - -/* Initial cycle delay for exponential backoff */ -#define BACKOFF_START 32 - -#ifdef __tilegx__ -/* Use cmpexch() after the initial fast-path exch to avoid - invalidating the cache line of the lock holder. */ -# define TNS(p) atomic_exchange_acq((p), 1) -# define CMPTNS(p) atomic_compare_and_exchange_val_acq((p), 1, 0) -#else -# define TNS(p) __insn_tns(p) -# define CMPTNS(p) __insn_tns(p) -# define SPR_CYCLE SPR_CYCLE_LOW /* The low 32 bits are sufficient. */ -#endif - -int -pthread_spin_lock (pthread_spinlock_t *lock) -{ - if (__builtin_expect (TNS (lock) != 0, 0)) - { - unsigned int backoff = BACKOFF_START; - while (CMPTNS (lock) != 0) - { - unsigned int start = __insn_mfspr (SPR_CYCLE); - while (__insn_mfspr (SPR_CYCLE) - start < backoff) - ; - if (backoff < BACKOFF_MAX) - backoff *= 2; - } - } - return 0; -} diff --git a/ports/sysdeps/tile/nptl/pthread_spin_trylock.c b/ports/sysdeps/tile/nptl/pthread_spin_trylock.c deleted file mode 100644 index bf96e61a96..0000000000 --- a/ports/sysdeps/tile/nptl/pthread_spin_trylock.c +++ /dev/null @@ -1,32 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include "pthreadP.h" -#include - -#ifdef __tilegx__ -#define TNS(p) __insn_exch4((p), 1) -#else -#define TNS(p) __insn_tns(p) -#endif - -int -pthread_spin_trylock (pthread_spinlock_t *lock) -{ - return (TNS (lock) == 0) ? 0 : EBUSY; -} diff --git a/ports/sysdeps/tile/nptl/pthread_spin_unlock.c b/ports/sysdeps/tile/nptl/pthread_spin_unlock.c deleted file mode 100644 index 0c4ac073c9..0000000000 --- a/ports/sysdeps/tile/nptl/pthread_spin_unlock.c +++ /dev/null @@ -1,33 +0,0 @@ -/* pthread_spin_unlock -- unlock a spin lock. Tile version. - Copyright (C) 2012-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include "pthreadP.h" -#include - -int -pthread_spin_unlock (pthread_spinlock_t *lock) -{ -#ifdef __tilegx__ - /* Use exchange() to bypass the write buffer. */ - atomic_exchange_rel (lock, 0); -#else - atomic_full_barrier (); - *lock = 0; -#endif - return 0; -} diff --git a/ports/sysdeps/tile/nptl/pthreaddef.h b/ports/sysdeps/tile/nptl/pthreaddef.h deleted file mode 100644 index f3997250d2..0000000000 --- a/ports/sysdeps/tile/nptl/pthreaddef.h +++ /dev/null @@ -1,41 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include - -/* Default stack size. */ -#define ARCH_STACK_DEFAULT_SIZE (2 * 1024 * 1024) - -/* Required stack pointer alignment at beginning. */ -#define STACK_ALIGN 16 - -/* Minimal stack size after allocating thread descriptor and guard size. */ -#define MINIMAL_REST_STACK 2048 - -/* Alignment requirement for TCB. */ -#define TCB_ALIGNMENT 16 - - -/* Location of current stack frame. */ -#define CURRENT_STACK_FRAME __builtin_frame_address (0) - -/* XXX Until we have a better place keep the definitions here. */ - -#define __exit_thread_inline(val) \ - INLINE_SYSCALL (exit, 1, (val)) diff --git a/ports/sysdeps/tile/nptl/tcb-offsets.sym b/ports/sysdeps/tile/nptl/tcb-offsets.sym deleted file mode 100644 index 6740bc976f..0000000000 --- a/ports/sysdeps/tile/nptl/tcb-offsets.sym +++ /dev/null @@ -1,17 +0,0 @@ -#define SHARED /* needed to get struct rtld_global from */ -#include -#include -#include - --- - --- Abuse tls.h macros to derive offsets relative to the thread register. -#define thread_offsetof(mem) (long)(offsetof(struct pthread, mem) - TLS_TCB_OFFSET - TLS_PRE_TCB_SIZE) - -MULTIPLE_THREADS_OFFSET thread_offsetof (header.multiple_threads) -PID_OFFSET thread_offsetof (pid) -TID_OFFSET thread_offsetof (tid) -POINTER_GUARD (offsetof (tcbhead_t, pointer_guard) - TLS_TCB_OFFSET - sizeof (tcbhead_t)) -FEEDBACK_DATA_OFFSET (offsetof (tcbhead_t, feedback_data) - TLS_TCB_OFFSET - sizeof (tcbhead_t)) -DTV_OFFSET (offsetof (tcbhead_t, dtv) - TLS_TCB_OFFSET - sizeof (tcbhead_t)) -TLS_GENERATION_OFFSET offsetof (struct rtld_global, _dl_tls_generation) diff --git a/ports/sysdeps/tile/nptl/tls.h b/ports/sysdeps/tile/nptl/tls.h deleted file mode 100644 index d226188fea..0000000000 --- a/ports/sysdeps/tile/nptl/tls.h +++ /dev/null @@ -1,194 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#ifndef _TLS_H -#define _TLS_H 1 - -# include - -#ifndef __ASSEMBLER__ -# include -# include -# include - -/* Type for the dtv. */ -typedef union dtv -{ - size_t counter; - struct - { - void *val; - bool is_static; - } pointer; -} dtv_t; - -#else /* __ASSEMBLER__ */ -# include -#endif /* __ASSEMBLER__ */ - - -#ifndef __ASSEMBLER__ - -/* Get system call information. */ -# include - -/* The TP points to the start of the thread blocks. */ -# define TLS_DTV_AT_TP 1 - -/* We use the multiple_threads field in the pthread struct */ -#define TLS_MULTIPLE_THREADS_IN_TCB 1 - -/* Get the thread descriptor definition. */ -# include - -/* The stack_guard is accessed directly by GCC -fstack-protector code, - so it is a part of public ABI. The dtv and pointer_guard fields - are private. */ -typedef struct -{ - void *feedback_data; - uintptr_t pointer_guard; - uintptr_t stack_guard; - dtv_t *dtv; -} tcbhead_t; - -/* This is the size of the initial TCB. Because our TCB is before the thread - pointer, we don't need this. */ -# define TLS_INIT_TCB_SIZE 0 - -/* Alignment requirements for the initial TCB. */ -# define TLS_INIT_TCB_ALIGN __alignof__ (struct pthread) - -/* This is the size of the TCB. Because our TCB is before the thread - pointer, we don't need this. */ -# define TLS_TCB_SIZE 0 - -/* Alignment requirements for the TCB. */ -# define TLS_TCB_ALIGN __alignof__ (struct pthread) - -/* This is the size we need before TCB - actually, it includes the TCB. */ -# define TLS_PRE_TCB_SIZE \ - (sizeof (struct pthread) \ - + ((sizeof (tcbhead_t) + TLS_TCB_ALIGN - 1) & ~(TLS_TCB_ALIGN - 1))) - -/* Return the thread descriptor (tp) for the current thread. */ -register void *__thread_pointer asm ("tp"); - -/* The thread pointer (in hardware register tp) points to the end of - the TCB. The pthread_descr structure is immediately in front of the TCB. */ -# define TLS_TCB_OFFSET 0 - -/* Install the dtv pointer. The pointer passed is to the element with - index -1 which contain the length. */ -# define INSTALL_DTV(tcbp, dtvp) \ - (((tcbhead_t *) (tcbp))[-1].dtv = (dtvp) + 1) - -/* Install new dtv for current thread. */ -# define INSTALL_NEW_DTV(dtv) (THREAD_DTV() = (dtv)) - -/* Return dtv of given thread descriptor. */ -# define GET_DTV(tcbp) (((tcbhead_t *) (tcbp))[-1].dtv) - -/* Code to initially initialize the thread pointer (tp). */ -# define TLS_INIT_TP(tcbp, secondcall) \ - (__thread_pointer = (char *)(tcbp) + TLS_TCB_OFFSET, NULL) - -/* Return the address of the dtv for the current thread. */ -# define THREAD_DTV() \ - (((tcbhead_t *) (__thread_pointer - TLS_TCB_OFFSET))[-1].dtv) - -/* Return the thread descriptor for the current thread. */ -# define THREAD_SELF \ - ((struct pthread *) (__thread_pointer \ - - TLS_TCB_OFFSET - TLS_PRE_TCB_SIZE)) - -/* Magic for libthread_db to know how to do THREAD_SELF. */ -#ifdef __tilegx__ -# define DB_THREAD_SELF \ - REGISTER (64, 64, REG_TP * 8, - TLS_TCB_OFFSET - TLS_PRE_TCB_SIZE) -#else -# define DB_THREAD_SELF \ - REGISTER (32, 32, REG_TP * 4, - TLS_TCB_OFFSET - TLS_PRE_TCB_SIZE) -#endif - -/* Read member of the thread descriptor directly. */ -# define THREAD_GETMEM(descr, member) (descr->member) - -/* Same as THREAD_GETMEM, but the member offset can be non-constant. */ -# define THREAD_GETMEM_NC(descr, member, idx) \ - (descr->member[idx]) - -/* Set member of the thread descriptor directly. */ -# define THREAD_SETMEM(descr, member, value) \ - (descr->member = (value)) - -/* Same as THREAD_SETMEM, but the member offset can be non-constant. */ -# define THREAD_SETMEM_NC(descr, member, idx, value) \ - (descr->member[idx] = (value)) - -/* Set the stack guard field in TCB head. */ -# define THREAD_SET_STACK_GUARD(value) \ - (((tcbhead_t *) ((char *) __thread_pointer \ - - TLS_TCB_OFFSET))[-1].stack_guard = (value)) -# define THREAD_COPY_STACK_GUARD(descr) \ - (((tcbhead_t *) ((char *) (descr) \ - + TLS_PRE_TCB_SIZE))[-1].stack_guard \ - = ((tcbhead_t *) ((char *) __thread_pointer \ - - TLS_TCB_OFFSET))[-1].stack_guard) - -/* Set the pointer guard field in TCB head. */ -# define THREAD_GET_POINTER_GUARD() \ - (((tcbhead_t *) ((char *) __thread_pointer \ - - TLS_TCB_OFFSET))[-1].pointer_guard) -# define THREAD_SET_POINTER_GUARD(value) \ - (THREAD_GET_POINTER_GUARD () = (value)) -# define THREAD_COPY_POINTER_GUARD(descr) \ - (((tcbhead_t *) ((char *) (descr) \ - + TLS_PRE_TCB_SIZE))[-1].pointer_guard \ - = THREAD_GET_POINTER_GUARD()) - -/* l_tls_offset == 0 is perfectly valid on Tile, so we have to use some - different value to mean unset l_tls_offset. */ -# define NO_TLS_OFFSET -1 - -/* Get and set the global scope generation counter in struct pthread. */ -#define THREAD_GSCOPE_FLAG_UNUSED 0 -#define THREAD_GSCOPE_FLAG_USED 1 -#define THREAD_GSCOPE_FLAG_WAIT 2 -#define THREAD_GSCOPE_RESET_FLAG() \ - do \ - { int __res \ - = atomic_exchange_rel (&THREAD_SELF->header.gscope_flag, \ - THREAD_GSCOPE_FLAG_UNUSED); \ - if (__res == THREAD_GSCOPE_FLAG_WAIT) \ - lll_futex_wake (&THREAD_SELF->header.gscope_flag, 1, LLL_PRIVATE); \ - } \ - while (0) -#define THREAD_GSCOPE_SET_FLAG() \ - do \ - { \ - THREAD_SELF->header.gscope_flag = THREAD_GSCOPE_FLAG_USED; \ - atomic_write_barrier (); \ - } \ - while (0) -#define THREAD_GSCOPE_WAIT() \ - GL(dl_wait_lookup_done) () - -#endif /* __ASSEMBLER__ */ - -#endif /* tls.h */ diff --git a/ports/sysdeps/tile/preconfigure b/ports/sysdeps/tile/preconfigure deleted file mode 100644 index 9dba5b1040..0000000000 --- a/ports/sysdeps/tile/preconfigure +++ /dev/null @@ -1,17 +0,0 @@ -# This is a -*- sh -*- -case "$machine" in - tilepro) - base_machine=tile machine=tile/tilepro ;; - tilegx) - base_machine=tile - if $CC $CFLAGS $CPPFLAGS -E -dM -xc /dev/null | grep -q __LP64__; then - machine=tile/tilegx/tilegx64 - else - machine=tile/tilegx/tilegx32 - fi ;; -esac -case "$machine" in - tile*) - libc_commonpagesize=0x10000 - libc_relro_required=yes ;; -esac diff --git a/ports/sysdeps/tile/s_fma.c b/ports/sysdeps/tile/s_fma.c deleted file mode 100644 index d9613fa67c..0000000000 --- a/ports/sysdeps/tile/s_fma.c +++ /dev/null @@ -1 +0,0 @@ -#include diff --git a/ports/sysdeps/tile/s_fmaf.c b/ports/sysdeps/tile/s_fmaf.c deleted file mode 100644 index aa5c9b2d91..0000000000 --- a/ports/sysdeps/tile/s_fmaf.c +++ /dev/null @@ -1 +0,0 @@ -#include diff --git a/ports/sysdeps/tile/setjmp.S b/ports/sysdeps/tile/setjmp.S deleted file mode 100644 index a2f34251a0..0000000000 --- a/ports/sysdeps/tile/setjmp.S +++ /dev/null @@ -1,46 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include - - .text - - /* Keep traditional entry points in with sigsetjmp(). */ -ENTRY(setjmp) - { movei r1, 1; j 1f } -END(setjmp) - -ENTRY(_setjmp) - { movei r1, 0; j 1f } -END(_setjmp) -libc_hidden_def (_setjmp) - -ENTRY(__sigsetjmp) - FEEDBACK_ENTER(__sigsetjmp) -1: - move r2, r0 - -#define SAVE(r) { ST r2, r ; ADDI_PTR r2, r2, REGSIZE } - FOR_EACH_CALLEE_SAVED_REG(SAVE) - - mfspr r3, INTERRUPT_CRITICAL_SECTION - ST r2, r3 - j plt(__sigjmp_save) - jrp lr /* Keep the backtracer happy. */ -END(__sigsetjmp) diff --git a/ports/sysdeps/tile/sfp-machine.h b/ports/sysdeps/tile/sfp-machine.h deleted file mode 100644 index ff8beeffa7..0000000000 --- a/ports/sysdeps/tile/sfp-machine.h +++ /dev/null @@ -1,97 +0,0 @@ -/* Machine-dependent software floating-point definitions, tile version. - Copyright (C) 2013-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include - -#define _FP_W_TYPE_SIZE __WORDSIZE -#define _FP_W_TYPE unsigned long -#define _FP_WS_TYPE signed long -#define _FP_I_TYPE long - -#if _FP_W_TYPE_SIZE == 64 - -#define _FP_MUL_MEAT_S(R,X,Y) \ - _FP_MUL_MEAT_1_imm(_FP_WFRACBITS_S,R,X,Y) -#define _FP_MUL_MEAT_D(R,X,Y) \ - _FP_MUL_MEAT_1_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm) -#define _FP_MUL_MEAT_Q(R,X,Y) \ - _FP_MUL_MEAT_2_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm) - -#define _FP_MUL_MEAT_DW_S(R,X,Y) \ - _FP_MUL_MEAT_DW_1_imm(_FP_WFRACBITS_S,R,X,Y) -#define _FP_MUL_MEAT_DW_D(R,X,Y) \ - _FP_MUL_MEAT_DW_1_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm) -#define _FP_MUL_MEAT_DW_Q(R,X,Y) \ - _FP_MUL_MEAT_DW_2_wide_3mul(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm) - -#define _FP_DIV_MEAT_S(R,X,Y) _FP_DIV_MEAT_1_imm(S,R,X,Y,_FP_DIV_HELP_imm) -#define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_1_udiv_norm(D,R,X,Y) -#define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_2_udiv(Q,R,X,Y) - -#define _FP_NANFRAC_S _FP_QNANBIT_S -#define _FP_NANFRAC_D _FP_QNANBIT_D -#define _FP_NANFRAC_Q _FP_QNANBIT_Q, 0 - -#else /* _FP_W_TYPE_SIZE == 32 */ - -#define _FP_MUL_MEAT_S(R,X,Y) \ - _FP_MUL_MEAT_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm) -#define _FP_MUL_MEAT_D(R,X,Y) \ - _FP_MUL_MEAT_2_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm) -#define _FP_MUL_MEAT_Q(R,X,Y) \ - _FP_MUL_MEAT_4_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm) - -#define _FP_MUL_MEAT_DW_S(R,X,Y) \ - _FP_MUL_MEAT_DW_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm) -#define _FP_MUL_MEAT_DW_D(R,X,Y) \ - _FP_MUL_MEAT_DW_2_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm) -#define _FP_MUL_MEAT_DW_Q(R,X,Y) \ - _FP_MUL_MEAT_DW_4_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm) - -#define _FP_DIV_MEAT_S(R,X,Y) _FP_DIV_MEAT_1_loop(S,R,X,Y) -#define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_2_udiv(D,R,X,Y) -#define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_4_udiv(Q,R,X,Y) - -#define _FP_NANFRAC_S _FP_QNANBIT_S -#define _FP_NANFRAC_D _FP_QNANBIT_D, 0 -#define _FP_NANFRAC_Q _FP_QNANBIT_Q, 0, 0, 0 - -#endif - -#define _FP_NANSIGN_S 1 -#define _FP_NANSIGN_D 1 -#define _FP_NANSIGN_Q 1 - -#define _FP_KEEPNANFRACP 1 -#define _FP_QNANNEGATEDP 0 - -#define _FP_CHOOSENAN(fs, wc, R, X, Y, OP) \ - do { \ - if ((_FP_FRAC_HIGH_RAW_##fs(X) & _FP_QNANBIT_##fs) \ - && !(_FP_FRAC_HIGH_RAW_##fs(Y) & _FP_QNANBIT_##fs)) \ - { \ - R##_s = Y##_s; \ - _FP_FRAC_COPY_##wc(R,Y); \ - } \ - else \ - { \ - R##_s = X##_s; \ - _FP_FRAC_COPY_##wc(R,X); \ - } \ - R##_c = FP_CLS_NAN; \ - } while (0) diff --git a/ports/sysdeps/tile/shlib-versions b/ports/sysdeps/tile/shlib-versions deleted file mode 100644 index f50868ff64..0000000000 --- a/ports/sysdeps/tile/shlib-versions +++ /dev/null @@ -1,2 +0,0 @@ -# glibc 2.12 was released to customers; 2.15 was the first community version. -tile.*-.*-linux-gnu DEFAULT GLIBC_2.12 GLIBC_2.15 diff --git a/ports/sysdeps/tile/sotruss-lib.c b/ports/sysdeps/tile/sotruss-lib.c deleted file mode 100644 index 6681770ec5..0000000000 --- a/ports/sysdeps/tile/sotruss-lib.c +++ /dev/null @@ -1,49 +0,0 @@ -/* Override generic sotruss-lib.c to define actual functions for tile. - Copyright (C) 2012-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#define HAVE_ARCH_PLTENTER -#define HAVE_ARCH_PLTEXIT - -#include - -ElfW(Addr) -la_tile_gnu_pltenter (ElfW(Sym) *sym __attribute__ ((unused)), - unsigned int ndx __attribute__ ((unused)), - uintptr_t *refcook, uintptr_t *defcook, - La_tile_regs *regs, unsigned int *flags, - const char *symname, long int *framesizep) -{ - print_enter (refcook, defcook, symname, - regs->lr_reg[0], regs->lr_reg[1], regs->lr_reg[2], - *flags); - - /* No need to copy anything, we will not need the parameters in any case. */ - *framesizep = 0; - - return sym->st_value; -} - -unsigned int -la_tile_gnu_pltexit (ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook, - uintptr_t *defcook, const struct La_tile_regs *inregs, - struct La_tile_retval *outregs, const char *symname) -{ - print_exit (refcook, defcook, symname, outregs->lrv_reg[0]); - - return 0; -} diff --git a/ports/sysdeps/tile/stackguard-macros.h b/ports/sysdeps/tile/stackguard-macros.h deleted file mode 100644 index f2e041b99b..0000000000 --- a/ports/sysdeps/tile/stackguard-macros.h +++ /dev/null @@ -1,20 +0,0 @@ -#include - -#ifdef __tilegx__ -# if __WORDSIZE == 64 -# define STACK_CHK_GUARD \ - ({ uintptr_t x; asm ("addi %0, tp, -16; ld %0, %0" : "=r" (x)); x; }) -# define POINTER_CHK_GUARD \ - ({ uintptr_t x; asm ("addi %0, tp, -24; ld %0, %0" : "=r" (x)); x; }) -# else -# define STACK_CHK_GUARD \ - ({ uintptr_t x; asm ("addi %0, tp, -8; ld4s %0, %0" : "=r" (x)); x; }) -# define POINTER_CHK_GUARD \ - ({ uintptr_t x; asm ("addi %0, tp, -12; ld4s %0, %0" : "=r" (x)); x; }) -# endif -#else -# define STACK_CHK_GUARD \ - ({ uintptr_t x; asm ("addi %0, tp, -8; lw %0, %0" : "=r" (x)); x; }) -# define POINTER_CHK_GUARD \ - ({ uintptr_t x; asm ("addi %0, tp, -12; lw %0, %0" : "=r" (x)); x; }) -#endif diff --git a/ports/sysdeps/tile/stackinfo.h b/ports/sysdeps/tile/stackinfo.h deleted file mode 100644 index 45c28a757b..0000000000 --- a/ports/sysdeps/tile/stackinfo.h +++ /dev/null @@ -1,48 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -/* This file contains a bit of information about the stack allocation - of the processor. */ - -#ifndef _STACKINFO_H -#define _STACKINFO_H 1 - -#include - -/* On tile the stack grows down. */ -#define _STACK_GROWS_DOWN 1 - -/* Default to a non-executable stack. */ -#define DEFAULT_STACK_PERMS (PF_R|PF_W) - -/* Access to the stack pointer. The macros are used in alloca_account - for which they need to act as barriers as well, hence the additional - (unnecessary) parameters. */ -#define stackinfo_get_sp() \ - ({ void *p__; asm volatile ("move %0, sp" : "=r" (p__)); p__; }) -#if defined __tilegx__ && __WORDSIZE == 32 -#define __stackinfo_sub "subx" -#else -#define __stackinfo_sub "sub" -#endif -#define stackinfo_sub_sp(ptr) \ - ({ ptrdiff_t d__; \ - asm volatile (__stackinfo_sub " %0, %0, sp" : "=r" (d__) : "0" (ptr)); \ - d__; }) - -#endif /* stackinfo.h */ diff --git a/ports/sysdeps/tile/start.S b/ports/sysdeps/tile/start.S deleted file mode 100644 index 49661f21d8..0000000000 --- a/ports/sysdeps/tile/start.S +++ /dev/null @@ -1,203 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - In addition to the permissions in the GNU Lesser General Public - License, the Free Software Foundation gives you unlimited - permission to link the compiled version of this file with other - programs, and to distribute those programs without any restriction - coming from the use of this file. (The GNU Lesser General Public - License restrictions do apply in other respects; for example, they - cover modification of the file, and distribution when not linked - into another program.) - - Note that people who make modified versions of this file are not - obligated to grant this special exception for their modified - versions; it is their choice whether to do so. The GNU Lesser - General Public License gives permission to release a modified - version without this exception; this exception also makes it - possible to release a modified version which carries forward this - exception. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -/* This is the canonical entry point, usually the first thing in the text - segment. The ELF standard tells us that the stack is set up like this on - entry (the left side is the offset from "sp"), in units of - __SIZEOF_POINTER__ entries: - - +0 argc - +1 argv[0] - ... - +(argc+1) NULL - +(argc+2) envp[0] - ... - NULL - ... ElfInfo - - The ElfInfo is pairs of key/value long words following the envp - pointers and terminated by a zero-valued key. - - Although not mandated by the standard, it happens to be the case - that we store the actual argv and envp strings immediately after - the ElfInfo data on the stack. - - On entry r0 points to the shared library termination function, or 0 - if there isn't one. -*/ - -#include -#include -#include - -/* Just create no-ops if we don't support PC-relative PLT relocations. */ -#ifdef NO_PLT_PCREL -# define hw2_last_plt(x) 0 -# define hw1_plt(x) 0 -# define hw0_plt(x) 0 -#endif - - .text - .global _start - .type _start,@function - .align 8 -_start: - /* Linux starts us with sp pointing at the conventional Elf layout, - but we need to allow two "caller" words for our ABI convention. */ - { - /* Load argc (stored as a "long", equivalent to a pointer type). */ - LD_PTR r1, sp - - /* Save incoming 'sp', which points to the Elf argument block. */ - move r52, sp - } - - { - /* Allocate stack frame callee space for __libc_start_main. */ - ADDI_PTR r12, sp, -(2 * REGSIZE) - } - - { - /* Get our PC. */ - lnk r13 - - /* sp is not necessarily properly aligned on startup because - of the way ld.so pops off leading argv elements. So align it. */ - andi sp, r12, -8 - } -.Lmy_pc: - - { - /* Pass the address of the shared library termination function. */ - move r5, r0 - - /* Compute location where __libc_start_main's caller is supposed to - store its frame pointer. */ - ADDI_PTR r12, sp, REGSIZE - - /* Zero out callee space for return address. Unnecessary but free. - This is just paranoia to help backtracing not go awry. */ - ST sp, zero - } - { - /* Zero out our frame pointer for __libc_start_main. */ - ST r12, zero - - /* Zero out lr to make __libc_start_main the end of backtrace. */ - move lr, zero - - /* Compute a pointer to argv. envp will be determined - later in __libc_start_main. We set up the first argument - (the address of main) below. */ - ADDI_PTR r2, r52, __SIZEOF_POINTER__ - } - { - /* Pass the highest stack address to user code. */ - ADDI_PTR r6, sp, (2 * REGSIZE) - - /* Pass address of main() in r0, and of our own entry - points to .fini and .init in r3 and r4. */ -#ifdef __tilegx__ - moveli r0, hw2_last(main - .Lmy_pc) - } - { - shl16insli r0, r0, hw1(main - .Lmy_pc) - moveli r3, hw2_last(__libc_csu_init - .Lmy_pc) - } - { - shl16insli r0, r0, hw0(main - .Lmy_pc) - shl16insli r3, r3, hw1(__libc_csu_init - .Lmy_pc) - } - { - ADD_PTR r0, r0, r13 - shl16insli r3, r3, hw0(__libc_csu_init - .Lmy_pc) - } - { - moveli r12, hw2_last_plt(__libc_start_main - .Lmy_pc) - ADD_PTR r3, r3, r13 - } - { - shl16insli r12, r12, hw1_plt(__libc_start_main - .Lmy_pc) - moveli r4, hw2_last(__libc_csu_fini - .Lmy_pc) - } - { - shl16insli r12, r12, hw0_plt(__libc_start_main - .Lmy_pc) - shl16insli r4, r4, hw1(__libc_csu_fini - .Lmy_pc) - } - { - ADD_PTR r12, r12, r13 - shl16insli r4, r4, hw0(__libc_csu_fini - .Lmy_pc) - } - { - ADD_PTR r4, r4, r13 -# ifdef NO_PLT_PCREL - j plt(__libc_start_main) -# else - jr r12 -# endif - } -#else - addli r0, r13, lo16(main - .Lmy_pc) - } - { - auli r0, r0, ha16(main - .Lmy_pc) - addli r3, r13, lo16(__libc_csu_init - .Lmy_pc) - } - { - auli r3, r3, ha16(__libc_csu_init - .Lmy_pc) - addli r4, r13, lo16(__libc_csu_fini - .Lmy_pc) - } - { - auli r4, r4, ha16(__libc_csu_fini - .Lmy_pc) - /* Call the user's main function, and exit with its value. - But let the libc call main. */ - j plt(__libc_start_main) - } -#endif - - { - /* Tell backtracer to give up (_start has no caller). */ - info INFO_OP_CANNOT_BACKTRACE - } -.size _start, .-_start - -/* Define a symbol for the first piece of initialized data. */ - .data - .global __data_start - .align 8 -__data_start: - .long 0 - .weak data_start - data_start = __data_start diff --git a/ports/sysdeps/tile/sysdep.h b/ports/sysdeps/tile/sysdep.h deleted file mode 100644 index 32aca49ff1..0000000000 --- a/ports/sysdeps/tile/sysdep.h +++ /dev/null @@ -1,110 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include - -#if defined __ASSEMBLER__ || defined REQUEST_ASSEMBLER_MACROS - -#include - -/* Make use of .size directive. */ -#define ASM_SIZE_DIRECTIVE(name) .size name,.-name; - -/* Define an entry point visible from C. */ -#define ENTRY(name) \ - .globl C_SYMBOL_NAME(name); \ - .type C_SYMBOL_NAME(name),@function; \ - .align 8; \ - C_LABEL(name) \ - cfi_startproc; \ - CALL_MCOUNT - -#undef END -#define END(name) \ - cfi_endproc; \ - ASM_SIZE_DIRECTIVE(name) - -/* Since C identifiers are not normally prefixed with an underscore - on this system, the asm identifier `syscall_error' intrudes on the - C name space. Make sure we use an innocuous name. */ -#define syscall_error __syscall_error -#define mcount __mcount - -/* If compiled for profiling, call `mcount' at the start of each function. - The mcount code requires the caller PC in r10. The `mcount' function - sets lr back to the value r10 had on entry when it returns. */ -#ifdef PROF -#define CALL_MCOUNT { move r10, lr; jal mcount } -#else -#define CALL_MCOUNT /* Do nothing. */ -#endif - -/* Local label name for asm code. */ -#define L(name) .L##name - -/* Specify the size in bytes of a machine register. */ -#ifdef __tilegx__ -#define REGSIZE 8 -#else -#define REGSIZE 4 -#endif - -/* Support a limited form of shared assembly between tilepro and tilegx. - The presumption is that LD/ST are used for manipulating registers. - Since opcode parsing is case-insensitive, we don't need to provide - definitions for these on tilegx. */ -#ifndef __tilegx__ -#define LD lw -#define LD4U lw -#define ST sw -#define ST4 sw -#define BNEZ bnz -#define BEQZ bz -#define BEQZT bzt -#define BGTZ bgz -#define CMPEQI seqi -#define CMPEQ seq -#define CMOVEQZ mvz -#define CMOVNEZ mvnz -#endif - -/* Provide "pointer-oriented" instruction variants. These differ not - just for tilepro vs tilegx, but also for tilegx -m64 vs -m32. */ -#if defined __tilegx__ && __WORDSIZE == 32 -#define ADD_PTR addx -#define ADDI_PTR addxi -#define ADDLI_PTR addxli -#define LD_PTR ld4s -#define ST_PTR st4 -#define SHL_PTR_ADD shl2add -#else -#define ADD_PTR add -#define ADDI_PTR addi -#define ADDLI_PTR addli -#define LD_PTR LD -#define ST_PTR ST -#ifdef __tilegx__ -#define SHL_PTR_ADD shl3add -#else -#define SHL_PTR_ADD s2a -#endif -#endif - -#endif /* __ASSEMBLER__ */ diff --git a/ports/sysdeps/tile/tilegx/Makefile b/ports/sysdeps/tile/tilegx/Makefile deleted file mode 100644 index 4281dd98fc..0000000000 --- a/ports/sysdeps/tile/tilegx/Makefile +++ /dev/null @@ -1,35 +0,0 @@ -include $(common-objpfx)cflags-mcmodel-large.mk - -# Check for gcc to support the command-line switch, and for -# binutils to support the hwN_plt() assembly operators and relocations. -$(common-objpfx)cflags-mcmodel-large.mk: $(common-objpfx)config.make - mcmodel=no; \ - (echo 'int main() { return getuid(); }' | \ - $(CC) -o /dev/null -xc - -mcmodel=large -fpic) && mcmodel=yes; \ - echo "cflags-mcmodel-large = $$mcmodel" > $@ - -ifeq (yes,$(cflags-mcmodel-large)) - -ifeq ($(subdir),csu) -# elf-init.c is in libc_nonshared.o (the end of the shared object) but -# must reach the _init symbol at the very start of the shared object. -CFLAGS-elf-init.c += -mcmodel=large - -# __gmon_start__ is at the very start of the shared object when linked -# with profiling, but calls to libc.so via the PLT at the very end. -CFLAGS-gmon-start.c += -mcmodel=large -endif - -else - -# Don't try to compile assembly code with hwN_plt() directives if the -# toolchain doesn't support -mcmodel=large. -ifeq ($(subdir),csu) -CPPFLAGS-start.S += -DNO_PLT_PCREL -CPPFLAGS-crti.S += -DNO_PLT_PCREL -endif -ifeq ($(subdir),nptl) -CPPFLAGS-pt-crti.S += -DNO_PLT_PCREL -endif - -endif diff --git a/ports/sysdeps/tile/tilegx/bits/atomic.h b/ports/sysdeps/tile/tilegx/bits/atomic.h deleted file mode 100644 index ce12db0216..0000000000 --- a/ports/sysdeps/tile/tilegx/bits/atomic.h +++ /dev/null @@ -1,49 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#ifndef _BITS_ATOMIC_H -#define _BITS_ATOMIC_H 1 - -#include - -/* Pick appropriate 8- or 4-byte instruction. */ -#define __atomic_update(mem, v, op) \ - ((__typeof (*(mem))) (__typeof (*(mem) - *(mem))) \ - ((sizeof (*(mem)) == 8) ? \ - __insn_##op ((void *) (mem), (int64_t) (__typeof((v) - (v))) (v)) : \ - (sizeof (*(mem)) == 4) ? \ - __insn_##op##4 ((void *) (mem), (int32_t) (__typeof ((v) - (v))) (v)) : \ - __atomic_error_bad_argument_size())) - -#define atomic_compare_and_exchange_val_acq(mem, n, o) \ - ({ __insn_mtspr (SPR_CMPEXCH_VALUE, (int64_t) (__typeof ((o) - (o))) (o)); \ - __atomic_update (mem, n, cmpexch); }) -#define atomic_exchange_acq(mem, newvalue) \ - __atomic_update (mem, newvalue, exch) -#define atomic_exchange_and_add(mem, value) \ - __atomic_update (mem, value, fetchadd) -#define atomic_and_val(mem, mask) \ - __atomic_update (mem, mask, fetchand) -#define atomic_or_val(mem, mask) \ - __atomic_update (mem, mask, fetchor) -#define atomic_decrement_if_positive(mem) \ - __atomic_update (mem, -1, fetchaddgez) - -#include - -#endif /* bits/atomic.h */ diff --git a/ports/sysdeps/tile/tilegx/bits/wordsize.h b/ports/sysdeps/tile/tilegx/bits/wordsize.h deleted file mode 100644 index 5d4e4b4470..0000000000 --- a/ports/sysdeps/tile/tilegx/bits/wordsize.h +++ /dev/null @@ -1,8 +0,0 @@ -/* Determine the wordsize from the preprocessor defines. */ - -#ifdef __LP64__ -# define __WORDSIZE 64 -# define __WORDSIZE_TIME64_COMPAT32 1 -#else -# define __WORDSIZE 32 -#endif diff --git a/ports/sysdeps/tile/tilegx/memchr.c b/ports/sysdeps/tile/tilegx/memchr.c deleted file mode 100644 index ee17d9a40a..0000000000 --- a/ports/sysdeps/tile/tilegx/memchr.c +++ /dev/null @@ -1,73 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include "string-endian.h" - -void * -__memchr (const void *s, int c, size_t n) -{ - const uint64_t *last_word_ptr; - const uint64_t *p; - const char *last_byte_ptr; - uintptr_t s_int; - uint64_t goal, before_mask, v, bits; - char *ret; - - if (__builtin_expect (n == 0, 0)) - { - /* Don't dereference any memory if the array is empty. */ - return NULL; - } - - /* Get an aligned pointer. */ - s_int = (uintptr_t) s; - p = (const uint64_t *) (s_int & -8); - - /* Create eight copies of the byte for which we are looking. */ - goal = copy_byte(c); - - /* Read the first word, but munge it so that bytes before the array - will not match goal. */ - before_mask = MASK (s_int); - v = (*p | before_mask) ^ (goal & before_mask); - - /* Compute the address of the last byte. */ - last_byte_ptr = (const char *) s + n - 1; - - /* Compute the address of the word containing the last byte. */ - last_word_ptr = (const uint64_t *) ((uintptr_t) last_byte_ptr & -8); - - while ((bits = __insn_v1cmpeq (v, goal)) == 0) - { - if (__builtin_expect (p == last_word_ptr, 0)) - { - /* We already read the last word in the array, so give up. */ - return NULL; - } - v = *++p; - } - - /* We found a match, but it might be in a byte past the end - of the array. */ - ret = ((char *) p) + (CFZ (bits) >> 3); - return (ret <= last_byte_ptr) ? ret : NULL; -} -weak_alias (__memchr, memchr) -libc_hidden_builtin_def (memchr) diff --git a/ports/sysdeps/tile/tilegx/memcpy.c b/ports/sysdeps/tile/tilegx/memcpy.c deleted file mode 100644 index 5d5df19ef3..0000000000 --- a/ports/sysdeps/tile/tilegx/memcpy.c +++ /dev/null @@ -1,272 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include -#include - -/* How many cache lines ahead should we prefetch? */ -#define PREFETCH_LINES_AHEAD 3 - -void * -__memcpy (void *__restrict dstv, const void *__restrict srcv, size_t n) -{ - char *__restrict dst1 = (char *) dstv; - const char *__restrict src1 = (const char *) srcv; - const char *__restrict src1_end; - const char *__restrict prefetch; - op_t *__restrict dst8; /* 8-byte pointer to destination memory. */ - op_t final; /* Final bytes to write to trailing word, if any */ - long i; - - if (n < 16) - { - for (; n; n--) - *dst1++ = *src1++; - return dstv; - } - - /* Locate the end of source memory we will copy. Don't prefetch - past this. */ - src1_end = src1 + n - 1; - - /* Prefetch ahead a few cache lines, but not past the end. */ - prefetch = src1; - for (i = 0; i < PREFETCH_LINES_AHEAD; i++) - { - __insn_prefetch (prefetch); - prefetch += CHIP_L2_LINE_SIZE (); - prefetch = (prefetch < src1_end) ? prefetch : src1; - } - - /* Copy bytes until dst is word-aligned. */ - for (; (uintptr_t) dst1 & (sizeof (op_t) - 1); n--) - *dst1++ = *src1++; - - /* 8-byte pointer to destination memory. */ - dst8 = (op_t *) dst1; - - if (__builtin_expect ((uintptr_t) src1 & (sizeof (op_t) - 1), 0)) - { - /* Misaligned copy. Use glibc's _wordcopy_fwd_dest_aligned, but - inline it to avoid prologue/epilogue. TODO: Consider - prefetching and using wh64 as well. */ - void * srci; - op_t a0, a1, a2, a3; - long int dstp = (long int) dst1; - long int srcp = (long int) src1; - long int len = n / OPSIZ; - - /* Save the initial source pointer so we know the number of - bytes to shift for merging two unaligned results. */ - srci = (void *) srcp; - - /* Make SRCP aligned by rounding it down to the beginning of the - `op_t' it points in the middle of. */ - srcp &= -OPSIZ; - - switch (len % 4) - { - case 2: - a1 = ((op_t *) srcp)[0]; - a2 = ((op_t *) srcp)[1]; - len += 2; - srcp += 2 * OPSIZ; - goto do1; - case 3: - a0 = ((op_t *) srcp)[0]; - a1 = ((op_t *) srcp)[1]; - len += 1; - srcp += 2 * OPSIZ; - goto do2; - case 0: - if (OP_T_THRES <= 3 * OPSIZ && len == 0) - return dstv; - a3 = ((op_t *) srcp)[0]; - a0 = ((op_t *) srcp)[1]; - len += 0; - srcp += 2 * OPSIZ; - goto do3; - case 1: - a2 = ((op_t *) srcp)[0]; - a3 = ((op_t *) srcp)[1]; - srcp += 2 * OPSIZ; - len -= 1; - if (OP_T_THRES <= 3 * OPSIZ && len == 0) - goto do0; - goto do4; /* No-op. */ - } - - do - { - do4: - a0 = ((op_t *) srcp)[0]; - a2 = __insn_dblalign (a2, a3, srci); - ((op_t *) dstp)[0] = a2; - srcp += OPSIZ; - dstp += OPSIZ; - do3: - a1 = ((op_t *) srcp)[0]; - a3 = __insn_dblalign (a3, a0, srci); - ((op_t *) dstp)[0] = a3; - srcp += OPSIZ; - dstp += OPSIZ; - do2: - a2 = ((op_t *) srcp)[0]; - a0 = __insn_dblalign (a0, a1, srci); - ((op_t *) dstp)[0] = a0; - srcp += OPSIZ; - dstp += OPSIZ; - do1: - a3 = ((op_t *) srcp)[0]; - a1 = __insn_dblalign (a1, a2, srci); - ((op_t *) dstp)[0] = a1; - srcp += OPSIZ; - dstp += OPSIZ; - len -= 4; - } - while (len != 0); - - /* This is the right position for do0. Please don't move - it into the loop. */ - do0: - ((op_t *) dstp)[0] = __insn_dblalign (a2, a3, srci); - - n = n % OPSIZ; - if (n == 0) - return dstv; - - a0 = ((const char *) srcp <= src1_end) ? ((op_t *) srcp)[0] : 0; - - final = __insn_dblalign (a3, a0, srci); - dst8 = (op_t *)(dstp + OPSIZ); - } - else - { - /* Aligned copy. */ - - const op_t *__restrict src8 = (const op_t *) src1; - - /* src8 and dst8 are both word-aligned. */ - if (n >= CHIP_L2_LINE_SIZE ()) - { - /* Copy until 'dst' is cache-line-aligned. */ - for (; (uintptr_t) dst8 & (CHIP_L2_LINE_SIZE () - 1); - n -= sizeof (op_t)) - *dst8++ = *src8++; - - for (; n >= CHIP_L2_LINE_SIZE ();) - { - op_t tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7; - - /* Prefetch and advance to next line to prefetch, but - don't go past the end. */ - __insn_prefetch (prefetch); - prefetch += CHIP_L2_LINE_SIZE (); - prefetch = (prefetch < src1_end) ? prefetch : - (const char *) src8; - - /* Do all the loads before wh64. This is necessary if - [src8, src8+7] and [dst8, dst8+7] share the same - cache line and dst8 <= src8, as can be the case when - called from memmove, or with code tested on x86 whose - memcpy always works with forward copies. */ - tmp0 = *src8++; - tmp1 = *src8++; - tmp2 = *src8++; - tmp3 = *src8++; - tmp4 = *src8++; - tmp5 = *src8++; - tmp6 = *src8++; - tmp7 = *src8++; - - __insn_wh64 (dst8); - - *dst8++ = tmp0; - *dst8++ = tmp1; - *dst8++ = tmp2; - *dst8++ = tmp3; - *dst8++ = tmp4; - *dst8++ = tmp5; - *dst8++ = tmp6; - *dst8++ = tmp7; - - n -= 64; - } -#if CHIP_L2_LINE_SIZE() != 64 -# error "Fix code that assumes particular L2 cache line size." -#endif - } - - for (; n >= sizeof (op_t); n -= sizeof (op_t)) - *dst8++ = *src8++; - - if (__builtin_expect (n == 0, 1)) - return dstv; - - final = *src8; - } - - /* n != 0 if we get here. Write out any trailing bytes. */ - dst1 = (char *) dst8; -#ifndef __BIG_ENDIAN__ - if (n & 4) - { - *(uint32_t *) dst1 = final; - dst1 += 4; - final >>= 32; - n &= 3; - } - if (n & 2) - { - *(uint16_t *) dst1 = final; - dst1 += 2; - final >>= 16; - n &= 1; - } - if (n) - *(uint8_t *) dst1 = final; -#else - if (n & 4) - { - *(uint32_t *) dst1 = final >> 32; - dst1 += 4; - } - else - { - final >>= 32; - } - if (n & 2) - { - *(uint16_t *) dst1 = final >> 16; - dst1 += 2; - } - else - { - final >>= 16; - } - if (n & 1) - *(uint8_t *) dst1 = final >> 8; -#endif - - return dstv; -} -weak_alias (__memcpy, memcpy) -libc_hidden_builtin_def (memcpy) diff --git a/ports/sysdeps/tile/tilegx/memmove.c b/ports/sysdeps/tile/tilegx/memmove.c deleted file mode 100644 index 38323cea3d..0000000000 --- a/ports/sysdeps/tile/tilegx/memmove.c +++ /dev/null @@ -1,22 +0,0 @@ -/* Copy memory to memory until the specified number of bytes - has been copied. Overlap is handled correctly. - Copyright (C) 2012-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -/* The tilegx implementation of memcpy is safe to use for memmove. */ -#define MEMCPY_OK_FOR_FWD_MEMMOVE 1 -#include diff --git a/ports/sysdeps/tile/tilegx/memset.c b/ports/sysdeps/tile/tilegx/memset.c deleted file mode 100644 index d41b205a3c..0000000000 --- a/ports/sysdeps/tile/tilegx/memset.c +++ /dev/null @@ -1,151 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include "string-endian.h" - -void * -__memset (void *s, int c, size_t n) -{ - uint64_t *out64; - int n64, to_align64; - uint64_t v64; - uint8_t *out8 = s; - - /* Experimentation shows that a trivial tight loop is a win up until - around a size of 20, where writing a word at a time starts to win. */ -#define BYTE_CUTOFF 20 - -#if BYTE_CUTOFF < 7 - /* This must be at least at least this big, or some code later - on doesn't work. */ -# error "BYTE_CUTOFF is too small." -#endif - - if (n < BYTE_CUTOFF) - { - /* Strangely, this turns out to be the tightest way to write - this loop. */ - if (n != 0) - { - do - { - /* Strangely, combining these into one line performs worse. */ - *out8 = c; - out8++; - } - while (--n != 0); - } - - return s; - } - - /* Align 'out8'. We know n >= 7 so this won't write past the end. */ - while (((uintptr_t) out8 & 7) != 0) - { - *out8++ = c; - --n; - } - - /* Align 'n'. */ - while (n & 7) - out8[--n] = c; - - out64 = (uint64_t *) out8; - n64 = n >> 3; - - /* Tile input byte out to 64 bits. */ - v64 = copy_byte(c); - - /* This must be at least 8 or the following loop doesn't work. */ -#define CACHE_LINE_SIZE_IN_DOUBLEWORDS (CHIP_L2_LINE_SIZE() / 8) - - /* Determine how many words we need to emit before the 'out32' - pointer becomes aligned modulo the cache line size. */ - to_align64 = (-((uintptr_t) out64 >> 3)) & - (CACHE_LINE_SIZE_IN_DOUBLEWORDS - 1); - - /* Only bother aligning and using wh64 if there is at least - one full cache line to process. This check also prevents - overrunning the end of the buffer with alignment words. */ - if (to_align64 <= n64 - CACHE_LINE_SIZE_IN_DOUBLEWORDS) - { - int lines_left; - - /* Align out64 mod the cache line size so we can use wh64. */ - n64 -= to_align64; - for (; to_align64 != 0; to_align64--) - { - *out64 = v64; - out64++; - } - - /* Use unsigned divide to turn this into a right shift. */ - lines_left = (unsigned) n64 / CACHE_LINE_SIZE_IN_DOUBLEWORDS; - - do - { - /* Only wh64 a few lines at a time, so we don't exceed the - maximum number of victim lines. */ - int x = ((lines_left < CHIP_MAX_OUTSTANDING_VICTIMS ()) ? lines_left - : CHIP_MAX_OUTSTANDING_VICTIMS ()); - uint64_t *wh = out64; - int i = x; - int j; - - lines_left -= x; - - do - { - __insn_wh64 (wh); - wh += CACHE_LINE_SIZE_IN_DOUBLEWORDS; - } - while (--i); - - for (j = x * (CACHE_LINE_SIZE_IN_DOUBLEWORDS / 4); j != 0; j--) - { - *out64++ = v64; - *out64++ = v64; - *out64++ = v64; - *out64++ = v64; - } - } - while (lines_left != 0); - - /* We processed all full lines above, so only this many - words remain to be processed. */ - n64 &= CACHE_LINE_SIZE_IN_DOUBLEWORDS - 1; - } - - /* Now handle any leftover values. */ - if (n64 != 0) - { - do - { - *out64 = v64; - out64++; - } - while (--n64 != 0); - } - - return s; -} -weak_alias (__memset, memset) -libc_hidden_builtin_def (memset) diff --git a/ports/sysdeps/tile/tilegx/memusage.h b/ports/sysdeps/tile/tilegx/memusage.h deleted file mode 100644 index 7a9e661daf..0000000000 --- a/ports/sysdeps/tile/tilegx/memusage.h +++ /dev/null @@ -1,31 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include - -#define GETSP() ({ register uintptr_t stack_ptr asm ("sp"); stack_ptr; }) - -#define GETTIME(low,high) \ - { \ - uint64_t cycles = __insn_mfspr (SPR_CYCLE); \ - low = cycles & 0xffffffff; \ - high = cycles >> 32; \ - } - -#include diff --git a/ports/sysdeps/tile/tilegx/rawmemchr.c b/ports/sysdeps/tile/tilegx/rawmemchr.c deleted file mode 100644 index bd6d3c7c70..0000000000 --- a/ports/sysdeps/tile/tilegx/rawmemchr.c +++ /dev/null @@ -1,45 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include "string-endian.h" - -void * -__rawmemchr (const void *s, int c) -{ - /* Get an aligned pointer. */ - const uintptr_t s_int = (uintptr_t) s; - const uint64_t *p = (const uint64_t *) (s_int & -8); - - /* Create eight copies of the byte for which we are looking. */ - const uint64_t goal = copy_byte(c); - - /* Read the first word, but munge it so that bytes before the array - will not match goal. */ - const uint64_t before_mask = MASK (s_int); - uint64_t v = (*p | before_mask) ^ (goal & before_mask); - - uint64_t bits; - while ((bits = __insn_v1cmpeq (v, goal)) == 0) - v = *++p; - - return ((char *) p) + (CFZ (bits) >> 3); -} -libc_hidden_def (__rawmemchr) -weak_alias (__rawmemchr, rawmemchr) diff --git a/ports/sysdeps/tile/tilegx/strchr.c b/ports/sysdeps/tile/tilegx/strchr.c deleted file mode 100644 index 0ce73ce89d..0000000000 --- a/ports/sysdeps/tile/tilegx/strchr.c +++ /dev/null @@ -1,67 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include "string-endian.h" - -#undef strchr - -char * -strchr (const char *s, int c) -{ - int z, g; - - /* Get an aligned pointer. */ - const uintptr_t s_int = (uintptr_t) s; - const uint64_t *p = (const uint64_t *) (s_int & -8); - - /* Create eight copies of the byte for which we are looking. */ - const uint64_t goal = copy_byte(c); - - /* Read the first aligned word, but force bytes before the string to - match neither zero nor goal (we make sure the high bit of each byte - is 1, and the low 7 bits are all the opposite of the goal byte). */ - const uint64_t before_mask = MASK (s_int); - uint64_t v = (*p | before_mask) ^ (goal & __insn_v1shrui (before_mask, 1)); - - uint64_t zero_matches, goal_matches; - while (1) - { - /* Look for a terminating '\0'. */ - zero_matches = __insn_v1cmpeqi (v, 0); - - /* Look for the goal byte. */ - goal_matches = __insn_v1cmpeq (v, goal); - - if (__builtin_expect ((zero_matches | goal_matches) != 0, 0)) - break; - - v = *++p; - } - - z = CFZ (zero_matches); - g = CFZ (goal_matches); - - /* If we found c before '\0' we got a match. Note that if c == '\0' - then g == z, and we correctly return the address of the '\0' - rather than NULL. */ - return (g <= z) ? ((char *) p) + (g >> 3) : NULL; -} -weak_alias (strchr, index) -libc_hidden_builtin_def (strchr) diff --git a/ports/sysdeps/tile/tilegx/strchrnul.c b/ports/sysdeps/tile/tilegx/strchrnul.c deleted file mode 100644 index 34c4317417..0000000000 --- a/ports/sysdeps/tile/tilegx/strchrnul.c +++ /dev/null @@ -1,64 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include "string-endian.h" - -char * -__strchrnul (const char *s, int c) -{ - int z, g; - - /* Get an aligned pointer. */ - const uintptr_t s_int = (uintptr_t) s; - const uint64_t *p = (const uint64_t *) (s_int & -8); - - /* Create eight copies of the byte for which we are looking. */ - const uint64_t goal = copy_byte(c); - - /* Read the first aligned word, but force bytes before the string to - match neither zero nor goal (we make sure the high bit of each byte - is 1, and the low 7 bits are all the opposite of the goal byte). */ - const uint64_t before_mask = MASK (s_int); - uint64_t v = (*p | before_mask) ^ (goal & __insn_v1shrui (before_mask, 1)); - - uint64_t zero_matches, goal_matches; - while (1) - { - /* Look for a terminating '\0'. */ - zero_matches = __insn_v1cmpeqi (v, 0); - - /* Look for the goal byte. */ - goal_matches = __insn_v1cmpeq (v, goal); - - if (__builtin_expect ((zero_matches | goal_matches) != 0, 0)) - break; - - v = *++p; - } - - z = CFZ (zero_matches); - g = CFZ (goal_matches); - - /* Return a pointer to the NUL or goal, whichever is first. */ - if (z < g) - g = z; - return ((char *) p) + (g >> 3); -} -weak_alias (__strchrnul, strchrnul) diff --git a/ports/sysdeps/tile/tilegx/string-endian.h b/ports/sysdeps/tile/tilegx/string-endian.h deleted file mode 100644 index 0c4d51766d..0000000000 --- a/ports/sysdeps/tile/tilegx/string-endian.h +++ /dev/null @@ -1,47 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -/* Provide a mask based on the pointer alignment that - sets up non-zero bytes before the beginning of the string. - The MASK expression works because shift counts are taken mod 64. - Also, specify how to count "first" and "last" bits - when the bits have been read as a word. */ - -#include - -#ifndef __BIG_ENDIAN__ -#define MASK(x) (__insn_shl(1ULL, (x << 3)) - 1) -#define NULMASK(x) ((2ULL << x) - 1) -#define CFZ(x) __insn_ctz(x) -#define REVCZ(x) __insn_clz(x) -#else -#define MASK(x) (__insn_shl(-2LL, ((-x << 3) - 1))) -#define NULMASK(x) (-2LL << (63 - x)) -#define CFZ(x) __insn_clz(x) -#define REVCZ(x) __insn_ctz(x) -#endif - -/* Create eight copies of the byte in a uint64_t. */ -static inline uint64_t copy_byte(uint8_t byte) -{ - uint64_t word = byte; - word = __insn_bfins(word, word, 8, 15); - word = __insn_bfins(word, word, 16, 31); - word = __insn_bfins(word, word, 32, 63); - return word; -} diff --git a/ports/sysdeps/tile/tilegx/strlen.c b/ports/sysdeps/tile/tilegx/strlen.c deleted file mode 100644 index d0c06dc23e..0000000000 --- a/ports/sysdeps/tile/tilegx/strlen.c +++ /dev/null @@ -1,39 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include "string-endian.h" - -size_t -strlen (const char *s) -{ - /* Get an aligned pointer. */ - const uintptr_t s_int = (uintptr_t) s; - const uint64_t *p = (const uint64_t *) (s_int & -8); - - /* Read and MASK the first word. */ - uint64_t v = *p | MASK (s_int); - - uint64_t bits; - while ((bits = __insn_v1cmpeqi (v, 0)) == 0) - v = *++p; - - return ((const char *) p) + (CFZ (bits) >> 3) - s; -} -libc_hidden_builtin_def (strlen) diff --git a/ports/sysdeps/tile/tilegx/strrchr.c b/ports/sysdeps/tile/tilegx/strrchr.c deleted file mode 100644 index f201cfa4fa..0000000000 --- a/ports/sysdeps/tile/tilegx/strrchr.c +++ /dev/null @@ -1,68 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include "string-endian.h" - -char * -strrchr (const char *s, int c) -{ - /* Get an aligned pointer. */ - const uintptr_t s_int = (uintptr_t) s; - const uint64_t *p = (const uint64_t *) (s_int & -8); - - /* Create eight copies of the byte for which we are looking. */ - const uint64_t goal = copy_byte(c); - - /* Read the first aligned word, but force bytes before the string to - match neither zero nor goal (we make sure the high bit of each byte - is 1, and the low 7 bits are all the opposite of the goal byte). */ - const uint64_t before_mask = MASK (s_int); - uint64_t v = (*p | before_mask) ^ (goal & __insn_v1shrui (before_mask, 1)); - const char *found = NULL; - uint64_t zero_matches, goal_matches; - while (1) - { - /* Look for a terminating '\0'. */ - zero_matches = __insn_v1cmpeqi (v, 0); - - /* Look for the goal byte. */ - goal_matches = __insn_v1cmpeq (v, goal); - - /* If we found the goal, record the last offset. */ - if (__builtin_expect (goal_matches != 0, 0)) - { - if (__builtin_expect (zero_matches != 0, 0)) - { - /* Clear any goal after the first zero. */ - int first_nul = CFZ (zero_matches); - goal_matches &= NULMASK (first_nul); - } - if (__builtin_expect (goal_matches != 0, 1)) - found = ((char *) p) + 7 - (REVCZ (goal_matches) >> 3); - } - - if (__builtin_expect (zero_matches != 0, 0)) - return (char *) found; - - v = *++p; - } -} -weak_alias (strrchr, rindex) -libc_hidden_builtin_def (strrchr) diff --git a/ports/sysdeps/tile/tilegx/tilegx32/Implies b/ports/sysdeps/tile/tilegx/tilegx32/Implies deleted file mode 100644 index 993b7f4cd1..0000000000 --- a/ports/sysdeps/tile/tilegx/tilegx32/Implies +++ /dev/null @@ -1,3 +0,0 @@ -tile/tilegx -tile -wordsize-32 diff --git a/ports/sysdeps/tile/tilegx/tilegx64/Implies b/ports/sysdeps/tile/tilegx/tilegx64/Implies deleted file mode 100644 index eb0686e0e6..0000000000 --- a/ports/sysdeps/tile/tilegx/tilegx64/Implies +++ /dev/null @@ -1,3 +0,0 @@ -tile/tilegx -tile -wordsize-64 diff --git a/ports/sysdeps/tile/tilepro/Implies b/ports/sysdeps/tile/tilepro/Implies deleted file mode 100644 index 709e1dc122..0000000000 --- a/ports/sysdeps/tile/tilepro/Implies +++ /dev/null @@ -1,2 +0,0 @@ -tile -wordsize-32 diff --git a/ports/sysdeps/tile/tilepro/bits/atomic.h b/ports/sysdeps/tile/tilepro/bits/atomic.h deleted file mode 100644 index cbbf64cef1..0000000000 --- a/ports/sysdeps/tile/tilepro/bits/atomic.h +++ /dev/null @@ -1,81 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#ifndef _BITS_ATOMIC_H -#define _BITS_ATOMIC_H 1 - -#include - -/* 32-bit integer compare-and-exchange. */ -static __inline __attribute__ ((always_inline)) -int __atomic_cmpxchg_32 (volatile int *mem, int newval, int oldval) -{ - int result; - __asm__ __volatile__ ("swint1" - : "=R00" (result), "=m" (*mem) - : "R10" (__NR_FAST_cmpxchg), "R00" (mem), - "R01" (oldval), "R02" (newval), "m" (*mem) - : "r20", "r21", "r22", "r23", "r24", - "r25", "r26", "r27", "r28", "r29", "memory"); - return result; -} - -#define atomic_compare_and_exchange_val_acq(mem, n, o) \ - ((__typeof (*(mem))) \ - ((sizeof (*(mem)) == 4) ? \ - __atomic_cmpxchg_32 ((int *) (mem), (int) (n), (int) (o)) : \ - __atomic_error_bad_argument_size())) - -/* Atomically compute: - int old = *ptr; - *ptr = (old & mask) + addend; - return old; */ - -static __inline __attribute__ ((always_inline)) -int __atomic_update_32 (volatile int *mem, int mask, int addend) -{ - int result; - __asm__ __volatile__ ("swint1" - : "=R00" (result), "=m" (*mem) - : "R10" (__NR_FAST_atomic_update), "R00" (mem), - "R01" (mask), "R02" (addend), "m" (*mem) - : "r20", "r21", "r22", "r23", "r24", - "r25", "r26", "r27", "r28", "r29", "memory"); - return result; -} - -/* Size-checked verson of __atomic_update_32. */ -#define __atomic_update(mem, mask, addend) \ - ((__typeof (*(mem))) \ - ((sizeof (*(mem)) == 4) ? \ - __atomic_update_32 ((int *) (mem), (int) (mask), (int) (addend)) : \ - __atomic_error_bad_argument_size ())) - -#define atomic_exchange_acq(mem, newvalue) \ - __atomic_update ((mem), 0, (newvalue)) -#define atomic_exchange_and_add(mem, value) \ - __atomic_update ((mem), -1, (value)) -#define atomic_and_val(mem, mask) \ - __atomic_update ((mem), (mask), 0) -#define atomic_or_val(mem, mask) \ - ({ __typeof (mask) __att1_v = (mask); \ - __atomic_update ((mem), ~__att1_v, __att1_v); }) - -#include - -#endif /* bits/atomic.h */ diff --git a/ports/sysdeps/tile/tilepro/bits/wordsize.h b/ports/sysdeps/tile/tilepro/bits/wordsize.h deleted file mode 100644 index da587a2f12..0000000000 --- a/ports/sysdeps/tile/tilepro/bits/wordsize.h +++ /dev/null @@ -1,3 +0,0 @@ -/* Determine the wordsize from the preprocessor defines. */ - -#define __WORDSIZE 32 diff --git a/ports/sysdeps/tile/tilepro/memchr.c b/ports/sysdeps/tile/tilepro/memchr.c deleted file mode 100644 index 87e64d2216..0000000000 --- a/ports/sysdeps/tile/tilepro/memchr.c +++ /dev/null @@ -1,72 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include - -void * -__memchr (const void *s, int c, size_t n) -{ - const uint32_t *last_word_ptr; - const uint32_t *p; - const char *last_byte_ptr; - uintptr_t s_int; - uint32_t goal, before_mask, v, bits; - char *ret; - - if (__builtin_expect (n == 0, 0)) - { - /* Don't dereference any memory if the array is empty. */ - return NULL; - } - - /* Get an aligned pointer. */ - s_int = (uintptr_t) s; - p = (const uint32_t *) (s_int & -4); - - /* Create four copies of the byte for which we are looking. */ - goal = 0x01010101 * (uint8_t) c; - - /* Read the first word, but munge it so that bytes before the array - will not match goal. Note that this shift count expression works - because we know shift counts are taken mod 32. */ - before_mask = (1 << (s_int << 3)) - 1; - v = (*p | before_mask) ^ (goal & before_mask); - - /* Compute the address of the last byte. */ - last_byte_ptr = (const char *) s + n - 1; - - /* Compute the address of the word containing the last byte. */ - last_word_ptr = (const uint32_t *) ((uintptr_t) last_byte_ptr & -4); - - while ((bits = __insn_seqb (v, goal)) == 0) - { - if (__builtin_expect (p == last_word_ptr, 0)) - { - /* We already read the last word in the array, so give up. */ - return NULL; - } - v = *++p; - } - - /* We found a match, but it might be in a byte past the end of the array. */ - ret = ((char *) p) + (__insn_ctz (bits) >> 3); - return (ret <= last_byte_ptr) ? ret : NULL; -} -weak_alias (__memchr, memchr) -libc_hidden_builtin_def (memchr) diff --git a/ports/sysdeps/tile/tilepro/memcpy.S b/ports/sysdeps/tile/tilepro/memcpy.S deleted file mode 100644 index 1d496a4f2c..0000000000 --- a/ports/sysdeps/tile/tilepro/memcpy.S +++ /dev/null @@ -1,397 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include - - .text -ENTRY (__memcpy) - FEEDBACK_ENTER(__memcpy) - - /* r0 is the dest, r1 is the source, r2 is the size. */ - - /* Save aside original dest so we can return it at the end. */ - { sw sp, lr; move r23, r0; or r4, r0, r1 } - cfi_offset (lr, 0) - - /* Check for an empty size. */ - { bz r2, .Ldone; andi r4, r4, 3 } - - /* Check for an unaligned source or dest. */ - { bnz r4, .Lcopy_unaligned_maybe_many; addli r4, r2, -256 } - -.Lcheck_aligned_copy_size: - /* If we are copying < 256 bytes, branch to simple case. */ - { blzt r4, .Lcopy_8_check; slti_u r8, r2, 8 } - - /* Copying >= 256 bytes, so jump to complex prefetching loop. */ - { andi r6, r1, 63; j .Lcopy_many } - -/* Aligned 4 byte at a time copy loop. */ - -.Lcopy_8_loop: - /* Copy two words at a time to hide load latency. */ - { lw r3, r1; addi r1, r1, 4; slti_u r8, r2, 16 } - { lw r4, r1; addi r1, r1, 4 } - { sw r0, r3; addi r0, r0, 4; addi r2, r2, -4 } - { sw r0, r4; addi r0, r0, 4; addi r2, r2, -4 } -.Lcopy_8_check: - { bzt r8, .Lcopy_8_loop; slti_u r4, r2, 4 } - - /* Copy odd leftover word, if any. */ - { bnzt r4, .Lcheck_odd_stragglers } - { lw r3, r1; addi r1, r1, 4 } - { sw r0, r3; addi r0, r0, 4; addi r2, r2, -4 } - -.Lcheck_odd_stragglers: - { bnz r2, .Lcopy_unaligned_few } - -.Ldone: - { move r0, r23; jrp lr } - -/* Prefetching multiple cache line copy handler (for large transfers). */ - - /* Copy words until r1 is cache-line-aligned. */ -.Lalign_loop: - { lw r3, r1; addi r1, r1, 4 } - { andi r6, r1, 63 } - { sw r0, r3; addi r0, r0, 4; addi r2, r2, -4 } -.Lcopy_many: - { bnzt r6, .Lalign_loop; addi r9, r0, 63 } - - { addi r3, r1, 60; andi r9, r9, -64 } - - /* No need to prefetch dst, we'll just do the wh64 - right before we copy a line. */ - { lw r5, r3; addi r3, r3, 64; movei r4, 1 } - /* Intentionally stall for a few cycles to leave L2 cache alone. */ - { bnzt zero, .; move r27, lr } - { lw r6, r3; addi r3, r3, 64 } - /* Intentionally stall for a few cycles to leave L2 cache alone. */ - { bnzt zero, . } - { lw r7, r3; addi r3, r3, 64 } - /* Intentionally stall for a few cycles to leave L2 cache alone. */ - { bz zero, .Lbig_loop2 } - - /* On entry to this loop: - - r0 points to the start of dst line 0 - - r1 points to start of src line 0 - - r2 >= (256 - 60), only the first time the loop trips. - - r3 contains r1 + 128 + 60 [pointer to end of source line 2] - This is our prefetch address. When we get near the end - rather than prefetching off the end this is changed to point - to some "safe" recently loaded address. - - r5 contains *(r1 + 60) [i.e. last word of source line 0] - - r6 contains *(r1 + 64 + 60) [i.e. last word of source line 1] - - r9 contains ((r0 + 63) & -64) - [start of next dst cache line.] */ - -.Lbig_loop: - { jal .Lcopy_line2; add r15, r1, r2 } - -.Lbig_loop2: - /* Copy line 0, first stalling until r5 is ready. */ - { move r12, r5; lw r16, r1 } - { bz r4, .Lcopy_8_check; slti_u r8, r2, 8 } - /* Prefetch several lines ahead. */ - { lw r5, r3; addi r3, r3, 64 } - { jal .Lcopy_line } - - /* Copy line 1, first stalling until r6 is ready. */ - { move r12, r6; lw r16, r1 } - { bz r4, .Lcopy_8_check; slti_u r8, r2, 8 } - /* Prefetch several lines ahead. */ - { lw r6, r3; addi r3, r3, 64 } - { jal .Lcopy_line } - - /* Copy line 2, first stalling until r7 is ready. */ - { move r12, r7; lw r16, r1 } - { bz r4, .Lcopy_8_check; slti_u r8, r2, 8 } - /* Prefetch several lines ahead. */ - { lw r7, r3; addi r3, r3, 64 } - /* Use up a caches-busy cycle by jumping back to the top of the - loop. Might as well get it out of the way now. */ - { j .Lbig_loop } - - - /* On entry: - - r0 points to the destination line. - - r1 points to the source line. - - r3 is the next prefetch address. - - r9 holds the last address used for wh64. - - r12 = WORD_15 - - r16 = WORD_0. - - r17 == r1 + 16. - - r27 holds saved lr to restore. - - On exit: - - r0 is incremented by 64. - - r1 is incremented by 64, unless that would point to a word - beyond the end of the source array, in which case it is redirected - to point to an arbitrary word already in the cache. - - r2 is decremented by 64. - - r3 is unchanged, unless it points to a word beyond the - end of the source array, in which case it is redirected - to point to an arbitrary word already in the cache. - Redirecting is OK since if we are that close to the end - of the array we will not come back to this subroutine - and use the contents of the prefetched address. - - r4 is nonzero iff r2 >= 64. - - r9 is incremented by 64, unless it points beyond the - end of the last full destination cache line, in which - case it is redirected to a "safe address" that can be - clobbered (sp - 64) - - lr contains the value in r27. */ - -/* r26 unused */ - -.Lcopy_line: - /* TODO: when r3 goes past the end, we would like to redirect it - to prefetch the last partial cache line (if any) just once, for the - benefit of the final cleanup loop. But we don't want to - prefetch that line more than once, or subsequent prefetches - will go into the RTF. But then .Lbig_loop should unconditionally - branch to top of loop to execute final prefetch, and its - nop should become a conditional branch. */ - - /* We need two non-memory cycles here to cover the resources - used by the loads initiated by the caller. */ - { add r15, r1, r2 } -.Lcopy_line2: - { slt_u r13, r3, r15; addi r17, r1, 16 } - - /* NOTE: this will stall for one cycle as L1 is busy. */ - - /* Fill second L1D line. */ - { lw r17, r17; addi r1, r1, 48; mvz r3, r13, r1 } /* r17 = WORD_4 */ - - /* Prepare destination line for writing. */ - { wh64 r9; addi r9, r9, 64 } - - /* Load seven words that are L1D hits to cover wh64 L2 usage. */ - - /* Load the three remaining words from the last L1D line, which - we know has already filled the L1D. */ - { lw r4, r1; addi r1, r1, 4; addi r20, r1, 16 } /* r4 = WORD_12 */ - { lw r8, r1; addi r1, r1, 4; slt_u r13, r20, r15 }/* r8 = WORD_13 */ - { lw r11, r1; addi r1, r1, -52; mvz r20, r13, r1 } /* r11 = WORD_14 */ - - /* Load the three remaining words from the first L1D line, first - stalling until it has filled by "looking at" r16. */ - { lw r13, r1; addi r1, r1, 4; move zero, r16 } /* r13 = WORD_1 */ - { lw r14, r1; addi r1, r1, 4 } /* r14 = WORD_2 */ - { lw r15, r1; addi r1, r1, 8; addi r10, r0, 60 } /* r15 = WORD_3 */ - - /* Load second word from the second L1D line, first - stalling until it has filled by "looking at" r17. */ - { lw r19, r1; addi r1, r1, 4; move zero, r17 } /* r19 = WORD_5 */ - - /* Store last word to the destination line, potentially dirtying it - for the first time, which keeps the L2 busy for two cycles. */ - { sw r10, r12 } /* store(WORD_15) */ - - /* Use two L1D hits to cover the sw L2 access above. */ - { lw r10, r1; addi r1, r1, 4 } /* r10 = WORD_6 */ - { lw r12, r1; addi r1, r1, 4 } /* r12 = WORD_7 */ - - /* Fill third L1D line. */ - { lw r18, r1; addi r1, r1, 4 } /* r18 = WORD_8 */ - - /* Store first L1D line. */ - { sw r0, r16; addi r0, r0, 4; add r16, r0, r2 } /* store(WORD_0) */ - { sw r0, r13; addi r0, r0, 4; andi r16, r16, -64 } /* store(WORD_1) */ - { sw r0, r14; addi r0, r0, 4; slt_u r16, r9, r16 } /* store(WORD_2) */ - { sw r0, r15; addi r0, r0, 4; addi r13, sp, -64 } /* store(WORD_3) */ - - /* Store second L1D line. */ - { sw r0, r17; addi r0, r0, 4; mvz r9, r16, r13 }/* store(WORD_4) */ - { sw r0, r19; addi r0, r0, 4 } /* store(WORD_5) */ - { sw r0, r10; addi r0, r0, 4 } /* store(WORD_6) */ - { sw r0, r12; addi r0, r0, 4 } /* store(WORD_7) */ - - { lw r13, r1; addi r1, r1, 4; move zero, r18 } /* r13 = WORD_9 */ - { lw r14, r1; addi r1, r1, 4 } /* r14 = WORD_10 */ - { lw r15, r1; move r1, r20 } /* r15 = WORD_11 */ - - /* Store third L1D line. */ - { sw r0, r18; addi r0, r0, 4 } /* store(WORD_8) */ - { sw r0, r13; addi r0, r0, 4 } /* store(WORD_9) */ - { sw r0, r14; addi r0, r0, 4 } /* store(WORD_10) */ - { sw r0, r15; addi r0, r0, 4 } /* store(WORD_11) */ - - /* Store rest of fourth L1D line. */ - { sw r0, r4; addi r0, r0, 4 } /* store(WORD_12) */ - { - sw r0, r8 /* store(WORD_13) */ - addi r0, r0, 4 - /* Will r2 be > 64 after we subtract 64 below? */ - shri r4, r2, 7 - } - { - sw r0, r11 /* store(WORD_14) */ - addi r0, r0, 8 - /* Record 64 bytes successfully copied. */ - addi r2, r2, -64 - } - - { jrp lr; move lr, r27 } - - /* Convey to the backtrace library that the stack frame is - size zero, and the real return address is on the stack - rather than in 'lr'. */ - { info 8 } - - .align 64 -.Lcopy_unaligned_maybe_many: - /* Skip the setup overhead if we aren't copying many bytes. */ - { slti_u r8, r2, 20; sub r4, zero, r0 } - { bnzt r8, .Lcopy_unaligned_few; andi r4, r4, 3 } - { bz r4, .Ldest_is_word_aligned; add r18, r1, r2 } - -/* Unaligned 4 byte at a time copy handler. */ - - /* Copy single bytes until r0 == 0 mod 4, so we can store words. */ -.Lalign_dest_loop: - { lb_u r3, r1; addi r1, r1, 1; addi r4, r4, -1 } - { sb r0, r3; addi r0, r0, 1; addi r2, r2, -1 } - { bnzt r4, .Lalign_dest_loop; andi r3, r1, 3 } - - /* If source and dest are now *both* aligned, do an aligned copy. */ - { bz r3, .Lcheck_aligned_copy_size; addli r4, r2, -256 } - -.Ldest_is_word_aligned: - - { andi r8, r0, 63; lwadd_na r6, r1, 4} - { slti_u r9, r2, 64; bz r8, .Ldest_is_L2_line_aligned } - - /* This copies unaligned words until either there are fewer - than 4 bytes left to copy, or until the destination pointer - is cache-aligned, whichever comes first. - - On entry: - - r0 is the next store address. - - r1 points 4 bytes past the load address corresponding to r0. - - r2 >= 4 - - r6 is the next aligned word loaded. */ -.Lcopy_unaligned_src_words: - { lwadd_na r7, r1, 4; slti_u r8, r2, 4 + 4 } - /* stall */ - { dword_align r6, r7, r1; slti_u r9, r2, 64 + 4 } - { swadd r0, r6, 4; addi r2, r2, -4 } - { bnz r8, .Lcleanup_unaligned_words; andi r8, r0, 63 } - { bnzt r8, .Lcopy_unaligned_src_words; move r6, r7 } - - /* On entry: - - r0 is the next store address. - - r1 points 4 bytes past the load address corresponding to r0. - - r2 >= 4 (# of bytes left to store). - - r6 is the next aligned src word value. - - r9 = (r2 < 64U). - - r18 points one byte past the end of source memory. */ -.Ldest_is_L2_line_aligned: - - { - /* Not a full cache line remains. */ - bnz r9, .Lcleanup_unaligned_words - move r7, r6 - } - - /* r2 >= 64 */ - - /* Kick off two prefetches, but don't go past the end. */ - { addi r3, r1, 63 - 4; addi r8, r1, 64 + 63 - 4 } - { prefetch r3; move r3, r8; slt_u r8, r8, r18 } - { mvz r3, r8, r1; addi r8, r3, 64 } - { prefetch r3; move r3, r8; slt_u r8, r8, r18 } - { mvz r3, r8, r1; movei r17, 0 } - -.Lcopy_unaligned_line: - /* Prefetch another line. */ - { prefetch r3; addi r15, r1, 60; addi r3, r3, 64 } - /* Fire off a load of the last word we are about to copy. */ - { lw_na r15, r15; slt_u r8, r3, r18 } - - { mvz r3, r8, r1; wh64 r0 } - - /* This loop runs twice. - - On entry: - - r17 is even before the first iteration, and odd before - the second. It is incremented inside the loop. Encountering - an even value at the end of the loop makes it stop. */ -.Lcopy_half_an_unaligned_line: - { - /* Stall until the last byte is ready. In the steady state this - guarantees all words to load below will be in the L2 cache, which - avoids shunting the loads to the RTF. */ - move zero, r15 - lwadd_na r7, r1, 16 - } - { lwadd_na r11, r1, 12 } - { lwadd_na r14, r1, -24 } - { lwadd_na r8, r1, 4 } - { lwadd_na r9, r1, 4 } - { - lwadd_na r10, r1, 8 - /* r16 = (r2 < 64), after we subtract 32 from r2 below. */ - slti_u r16, r2, 64 + 32 - } - { lwadd_na r12, r1, 4; addi r17, r17, 1 } - { lwadd_na r13, r1, 8; dword_align r6, r7, r1 } - { swadd r0, r6, 4; dword_align r7, r8, r1 } - { swadd r0, r7, 4; dword_align r8, r9, r1 } - { swadd r0, r8, 4; dword_align r9, r10, r1 } - { swadd r0, r9, 4; dword_align r10, r11, r1 } - { swadd r0, r10, 4; dword_align r11, r12, r1 } - { swadd r0, r11, 4; dword_align r12, r13, r1 } - { swadd r0, r12, 4; dword_align r13, r14, r1 } - { swadd r0, r13, 4; addi r2, r2, -32 } - { move r6, r14; bbst r17, .Lcopy_half_an_unaligned_line } - - { bzt r16, .Lcopy_unaligned_line; move r7, r6 } - - /* On entry: - - r0 is the next store address. - - r1 points 4 bytes past the load address corresponding to r0. - - r2 >= 0 (# of bytes left to store). - - r7 is the next aligned src word value. */ -.Lcleanup_unaligned_words: - /* Handle any trailing bytes. */ - { bz r2, .Lcopy_unaligned_done; slti_u r8, r2, 4 } - { bzt r8, .Lcopy_unaligned_src_words; move r6, r7 } - - /* Move r1 back to the point where it corresponds to r0. */ - { addi r1, r1, -4 } - - /* Fall through */ - -/* 1 byte at a time copy handler. */ - -.Lcopy_unaligned_few: - { lb_u r3, r1; addi r1, r1, 1 } - { sb r0, r3; addi r0, r0, 1; addi r2, r2, -1 } - { bnzt r2, .Lcopy_unaligned_few } - -.Lcopy_unaligned_done: - - { move r0, r23; jrp lr } - -END (__memcpy) - -weak_alias (__memcpy, memcpy) -libc_hidden_builtin_def (memcpy) diff --git a/ports/sysdeps/tile/tilepro/memset.c b/ports/sysdeps/tile/tilepro/memset.c deleted file mode 100644 index 85d6b810ed..0000000000 --- a/ports/sysdeps/tile/tilepro/memset.c +++ /dev/null @@ -1,151 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include - -void * -__memset (void *s, int c, size_t n) -{ - uint32_t *out32; - int n32; - uint32_t v16, v32; - uint8_t *out8 = s; - int to_align32; - - /* Experimentation shows that a trivial tight loop is a win up until - around a size of 20, where writing a word at a time starts to win. */ -#define BYTE_CUTOFF 20 - -#if BYTE_CUTOFF < 3 - /* This must be at least at least this big, or some code later - on doesn't work. */ -# error "BYTE_CUTOFF is too small." -#endif - - if (n < BYTE_CUTOFF) - { - /* Strangely, this turns out to be the tightest way to write - this loop. */ - if (n != 0) - { - do - { - /* Strangely, combining these into one line performs worse. */ - *out8 = c; - out8++; - } - while (--n != 0); - } - - return s; - } - - /* Align 'out8'. We know n >= 3 so this won't write past the end. */ - while (((uintptr_t) out8 & 3) != 0) - { - *out8++ = c; - --n; - } - - /* Align 'n'. */ - while (n & 3) - out8[--n] = c; - - out32 = (uint32_t *) out8; - n32 = n >> 2; - - /* Tile input byte out to 32 bits. */ - v16 = __insn_intlb (c, c); - v32 = __insn_intlh (v16, v16); - - /* This must be at least 8 or the following loop doesn't work. */ -#define CACHE_LINE_SIZE_IN_WORDS (CHIP_L2_LINE_SIZE() / 4) - - /* Determine how many words we need to emit before the 'out32' - pointer becomes aligned modulo the cache line size. */ - to_align32 = (-((uintptr_t) out32 >> 2)) & (CACHE_LINE_SIZE_IN_WORDS - 1); - - /* Only bother aligning and using wh64 if there is at least one full - cache line to process. This check also prevents overrunning the - end of the buffer with alignment words. */ - if (to_align32 <= n32 - CACHE_LINE_SIZE_IN_WORDS) - { - int lines_left; - - /* Align out32 mod the cache line size so we can use wh64. */ - n32 -= to_align32; - for (; to_align32 != 0; to_align32--) - { - *out32 = v32; - out32++; - } - - /* Use unsigned divide to turn this into a right shift. */ - lines_left = (unsigned) n32 / CACHE_LINE_SIZE_IN_WORDS; - - do - { - /* Only wh64 a few lines at a time, so we don't exceed the - maximum number of victim lines. */ - int x = ((lines_left < CHIP_MAX_OUTSTANDING_VICTIMS ())? lines_left - : CHIP_MAX_OUTSTANDING_VICTIMS ()); - uint32_t *wh = out32; - int i = x; - int j; - - lines_left -= x; - - do - { - __insn_wh64 (wh); - wh += CACHE_LINE_SIZE_IN_WORDS; - } - while (--i); - - for (j = x * (CACHE_LINE_SIZE_IN_WORDS / 4); j != 0; j--) - { - *out32++ = v32; - *out32++ = v32; - *out32++ = v32; - *out32++ = v32; - } - } - while (lines_left != 0); - - /* We processed all full lines above, so only this many words - remain to be processed. */ - n32 &= CACHE_LINE_SIZE_IN_WORDS - 1; - } - - /* Now handle any leftover values. */ - if (n32 != 0) - { - do - { - *out32 = v32; - out32++; - } - while (--n32 != 0); - } - - return s; -} -weak_alias (__memset, memset) -libc_hidden_builtin_def (memset) diff --git a/ports/sysdeps/tile/tilepro/memusage.h b/ports/sysdeps/tile/tilepro/memusage.h deleted file mode 100644 index 1ce1a29fbe..0000000000 --- a/ports/sysdeps/tile/tilepro/memusage.h +++ /dev/null @@ -1,29 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include - -#define GETSP() ({ register uintptr_t stack_ptr asm ("sp"); stack_ptr; }) - -#define GETTIME(low,high) \ - { \ - low = __insn_mfspr (SPR_CYCLE_LOW); \ - high = __insn_mfspr (SPR_CYCLE_HIGH); \ - } - -#include diff --git a/ports/sysdeps/tile/tilepro/rawmemchr.c b/ports/sysdeps/tile/tilepro/rawmemchr.c deleted file mode 100644 index 46d9593a7f..0000000000 --- a/ports/sysdeps/tile/tilepro/rawmemchr.c +++ /dev/null @@ -1,45 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include - -void * -__rawmemchr (const void *s, int c) -{ - /* Get an aligned pointer. */ - const uintptr_t s_int = (uintptr_t) s; - const uint32_t *p = (const uint32_t *) (s_int & -4); - - /* Create four copies of the byte for which we are looking. */ - const uint32_t goal = 0x01010101 * (uint8_t) c; - - /* Read the first word, but munge it so that bytes before the array - will not match goal. Note that this shift count expression works - because we know shift counts are taken mod 32. */ - const uint32_t before_mask = (1 << (s_int << 3)) - 1; - uint32_t v = (*p | before_mask) ^ (goal & before_mask); - - uint32_t bits; - while ((bits = __insn_seqb (v, goal)) == 0) - v = *++p; - - return ((char *) p) + (__insn_ctz (bits) >> 3); -} -libc_hidden_def (__rawmemchr) -weak_alias (__rawmemchr, rawmemchr) diff --git a/ports/sysdeps/tile/tilepro/strchr.c b/ports/sysdeps/tile/tilepro/strchr.c deleted file mode 100644 index ecdbcfe5d1..0000000000 --- a/ports/sysdeps/tile/tilepro/strchr.c +++ /dev/null @@ -1,68 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include - -#undef strchr - -char * -strchr (const char *s, int c) -{ - int z, g; - - /* Get an aligned pointer. */ - const uintptr_t s_int = (uintptr_t) s; - const uint32_t *p = (const uint32_t *) (s_int & -4); - - /* Create four copies of the byte for which we are looking. */ - const uint32_t goal = 0x01010101 * (uint8_t) c; - - /* Read the first aligned word, but force bytes before the string to - match neither zero nor goal (we make sure the high bit of each - byte is 1, and the low 7 bits are all the opposite of the goal - byte). Note that this shift count expression works because we - know shift counts are taken mod 32. */ - const uint32_t before_mask = (1 << (s_int << 3)) - 1; - uint32_t v = (*p | before_mask) ^ (goal & __insn_shrib (before_mask, 1)); - - uint32_t zero_matches, goal_matches; - while (1) - { - /* Look for a terminating '\0'. */ - zero_matches = __insn_seqb (v, 0); - - /* Look for the goal byte. */ - goal_matches = __insn_seqb (v, goal); - - if (__builtin_expect ((zero_matches | goal_matches) != 0, 0)) - break; - - v = *++p; - } - - z = __insn_ctz (zero_matches); - g = __insn_ctz (goal_matches); - - /* If we found c before '\0' we got a match. Note that if c == '\0' - then g == z, and we correctly return the address of the '\0' - rather than NULL. */ - return (g <= z) ? ((char *) p) + (g >> 3) : NULL; -} -weak_alias (strchr, index) -libc_hidden_builtin_def (strchr) diff --git a/ports/sysdeps/tile/tilepro/strchrnul.c b/ports/sysdeps/tile/tilepro/strchrnul.c deleted file mode 100644 index 2dccfe1908..0000000000 --- a/ports/sysdeps/tile/tilepro/strchrnul.c +++ /dev/null @@ -1,65 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include - -char * -__strchrnul (const char *s, int c) -{ - int z, g; - - /* Get an aligned pointer. */ - const uintptr_t s_int = (uintptr_t) s; - const uint32_t *p = (const uint32_t *) (s_int & -4); - - /* Create four copies of the byte for which we are looking. */ - const uint32_t goal = 0x01010101 * (uint8_t) c; - - /* Read the first aligned word, but force bytes before the string to - match neither zero nor goal (we make sure the high bit of each - byte is 1, and the low 7 bits are all the opposite of the goal - byte). Note that this shift count expression works because we - know shift counts are taken mod 32. */ - const uint32_t before_mask = (1 << (s_int << 3)) - 1; - uint32_t v = (*p | before_mask) ^ (goal & __insn_shrib (before_mask, 1)); - - uint32_t zero_matches, goal_matches; - while (1) - { - /* Look for a terminating '\0'. */ - zero_matches = __insn_seqb (v, 0); - - /* Look for the goal byte. */ - goal_matches = __insn_seqb (v, goal); - - if (__builtin_expect ((zero_matches | goal_matches) != 0, 0)) - break; - - v = *++p; - } - - z = __insn_ctz (zero_matches); - g = __insn_ctz (goal_matches); - - /* Return a pointer to the NUL or goal, whichever is first. */ - if (z < g) - g = z; - return ((char *) p) + (g >> 3); -} -weak_alias (__strchrnul, strchrnul) diff --git a/ports/sysdeps/tile/tilepro/strlen.c b/ports/sysdeps/tile/tilepro/strlen.c deleted file mode 100644 index c40ee56c6f..0000000000 --- a/ports/sysdeps/tile/tilepro/strlen.c +++ /dev/null @@ -1,39 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include - -size_t -strlen (const char *s) -{ - /* Get an aligned pointer. */ - const uintptr_t s_int = (uintptr_t) s; - const uint32_t *p = (const uint32_t *) (s_int & -4); - - /* Read the first word, but force bytes before the string to be nonzero. - This expression works because we know shift counts are taken mod 32. */ - uint32_t v = *p | ((1 << (s_int << 3)) - 1); - - uint32_t bits; - while ((bits = __insn_seqb (v, 0)) == 0) - v = *++p; - - return ((const char *) p) + (__insn_ctz (bits) >> 3) - s; -} -libc_hidden_builtin_def (strlen) diff --git a/ports/sysdeps/tile/tilepro/strrchr.c b/ports/sysdeps/tile/tilepro/strrchr.c deleted file mode 100644 index 1c7f5e7014..0000000000 --- a/ports/sysdeps/tile/tilepro/strrchr.c +++ /dev/null @@ -1,73 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include - -char * -strrchr (const char *s, int c) -{ - /* Get an aligned pointer. */ - const uintptr_t s_int = (uintptr_t) s; - const uint32_t *p = (const uint32_t *) (s_int & -4); - - /* Create four copies of the byte for which we are looking. */ - const uint32_t goal = 0x01010101 * (uint8_t) c; - - /* Read the first aligned word, but force bytes before the string to - match neither zero nor goal (we make sure the high bit of each - byte is 1, and the low 7 bits are all the opposite of the goal - byte). Note that this shift count expression works because we - know shift counts are taken mod 32. */ - const uint32_t before_mask = (1 << (s_int << 3)) - 1; - uint32_t v = (*p | before_mask) ^ (goal & __insn_shrib (before_mask, 1)); - const char *found = NULL; - uint32_t zero_matches, goal_matches; - while (1) - { - /* Look for a terminating '\0'. */ - zero_matches = __insn_seqb (v, 0); - - /* Look for the goal byte. */ - goal_matches = __insn_seqb (v, goal); - - /* If we found the goal, record the last offset. */ - if (__builtin_expect (goal_matches != 0, 0)) - { - if (__builtin_expect (zero_matches != 0, 0)) - { - /* Clear any goal after the first zero. */ - int first_nul = __insn_ctz (zero_matches); - /* The number of top bits we need to clear is - 32 - (first_nul + 8). */ - int shift_amt = (24 - first_nul); - goal_matches <<= shift_amt; - goal_matches >>= shift_amt; - } - if (__builtin_expect (goal_matches != 0, 1)) - found = ((char *) p) + 3 - (__insn_clz (goal_matches) >> 3); - } - - if (__builtin_expect (zero_matches != 0, 0)) - return (char *) found; - - v = *++p; - } -} -weak_alias (strrchr, rindex) -libc_hidden_builtin_def (strrchr) diff --git a/ports/sysdeps/tile/tls-macros.h b/ports/sysdeps/tile/tls-macros.h deleted file mode 100644 index 20c924fc5a..0000000000 --- a/ports/sysdeps/tile/tls-macros.h +++ /dev/null @@ -1,84 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#ifdef __tilegx__ -#define TLS_GD_OFFSET(x) \ - "moveli r0, hw1_last_tls_gd(" #x ")\n\t" \ - "shl16insli r0, r0, hw0_tls_gd(" #x ")\n\t" \ - "addi r0, %1, tls_add(" #x ")\n\t" -#else -#define TLS_GD_OFFSET(x) \ - "auli r0, %1, tls_gd_ha16(" #x ")\n\t" \ - "addli r0, r0, tls_gd_lo16(" #x ")\n\t" -#endif - -#define TLS_GD(x) \ - ({ \ - int *__retval; \ - extern char _GLOBAL_OFFSET_TABLE_[]; \ - \ - asm (TLS_GD_OFFSET(x) \ - "jal tls_gd_call(" #x ")\n\t" \ - "addi %0, r0, tls_gd_add(" #x ")" : \ - "=&r" (__retval) : "r" (_GLOBAL_OFFSET_TABLE_) : \ - "r0", "r25", "r26", "r27", "r28", "r29"); \ - __retval; }) - -/* No special support for LD mode. */ -#define TLS_LD TLS_GD - -#ifdef __tilegx__ -#define TLS_IE_OFFSET(x) \ - "moveli %0, hw1_last_tls_ie(" #x ")\n\t" \ - "shl16insli %0, %0, hw0_tls_ie(" #x ")\n\t" \ - "addi %0, %1, tls_add(" #x ")\n\t" -#define LD_TLS "ld_tls" -#else -#define TLS_IE_OFFSET(x) \ - "auli %0, %1, tls_ie_ha16(" #x ")\n\t" \ - "addli %0, %0, tls_ie_lo16(" #x ")\n\t" -#define LD_TLS "lw_tls" -#endif - -#define TLS_IE(x) \ - ({ \ - int *__retval; \ - extern char _GLOBAL_OFFSET_TABLE_[]; \ - \ - asm (TLS_IE_OFFSET(x) \ - LD_TLS " %0, %0, tls_ie_load(" #x ")\n\t" \ - "add %0, %0, tp" : \ - "=&r" (__retval) : "r" (_GLOBAL_OFFSET_TABLE_)); \ - __retval; }) - -#ifdef __tilegx__ -#define _TLS_LE(x) \ - "moveli %0, hw1_last_tls_le(" #x ")\n\t" \ - "shl16insli %0, %0, hw0_tls_le(" #x ")\n\t" \ - "add %0, %0, tp" -#else -#define _TLS_LE(x) \ - "auli %0, tp, tls_le_ha16(" #x ")\n\t" \ - "addli %0, %0, tls_le_lo16(" #x ")\n\t" -#endif - -#define TLS_LE(x) \ - ({ \ - int *__retval; \ - asm (_TLS_LE(x) : "=r" (__retval)); \ - __retval; }) diff --git a/ports/sysdeps/tile/tst-audit.h b/ports/sysdeps/tile/tst-audit.h deleted file mode 100644 index e5fe61f9e7..0000000000 --- a/ports/sysdeps/tile/tst-audit.h +++ /dev/null @@ -1,23 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#define pltenter la_tile_gnu_pltenter -#define pltexit la_tile_gnu_pltexit -#define La_regs La_tile_regs -#define La_retval La_tile_retval -#define int_retval lrv_reg[0] diff --git a/ports/sysdeps/tile/wordcopy.c b/ports/sysdeps/tile/wordcopy.c deleted file mode 100644 index 5ed0e949f6..0000000000 --- a/ports/sysdeps/tile/wordcopy.c +++ /dev/null @@ -1,449 +0,0 @@ -/* wordcopy.c -- subroutines for memory copy functions. Tile version. - Copyright (C) 1991-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -/* To optimize for tile, we make the following changes from the - default glibc version: - - Use the double align instruction instead of the MERGE macro. - - Since we don't have offset addressing mode, make sure the loads / - stores in the inner loop always have indices of 0. - - Use post-increment addresses in the inner loops, which yields - better scheduling. */ - -/* BE VERY CAREFUL IF YOU CHANGE THIS CODE...! */ - -#include -#include - -/* Provide the appropriate dblalign builtin to shift two registers - based on the alignment of a pointer held in a third register. */ -#ifdef __tilegx__ -#define DBLALIGN __insn_dblalign -#else -#define DBLALIGN __insn_dword_align -#endif - -/* _wordcopy_fwd_aligned -- Copy block beginning at SRCP to - block beginning at DSTP with LEN `op_t' words (not LEN bytes!). - Both SRCP and DSTP should be aligned for memory operations on `op_t's. */ - -void -_wordcopy_fwd_aligned (dstp, srcp, len) - long int dstp; - long int srcp; - size_t len; -{ - op_t a0, a1; - - switch (len % 8) - { - case 2: - a0 = ((op_t *) srcp)[0]; - srcp += OPSIZ; - len += 6; - goto do1; - case 3: - a1 = ((op_t *) srcp)[0]; - srcp += OPSIZ; - len += 5; - goto do2; - case 4: - a0 = ((op_t *) srcp)[0]; - srcp += OPSIZ; - len += 4; - goto do3; - case 5: - a1 = ((op_t *) srcp)[0]; - srcp += OPSIZ; - len += 3; - goto do4; - case 6: - a0 = ((op_t *) srcp)[0]; - srcp += OPSIZ; - len += 2; - goto do5; - case 7: - a1 = ((op_t *) srcp)[0]; - srcp += OPSIZ; - len += 1; - goto do6; - - case 0: - if (OP_T_THRES <= 3 * OPSIZ && len == 0) - return; - a0 = ((op_t *) srcp)[0]; - srcp += OPSIZ; - goto do7; - case 1: - a1 = ((op_t *) srcp)[0]; - srcp += OPSIZ; - len -= 1; - if (OP_T_THRES <= 3 * OPSIZ && len == 0) - goto do0; - goto do8; /* No-op. */ - } - - do - { - do8: - a0 = ((op_t *) srcp)[0]; - ((op_t *) dstp)[0] = a1; - srcp += OPSIZ; - dstp += OPSIZ; - do7: - a1 = ((op_t *) srcp)[0]; - ((op_t *) dstp)[0] = a0; - srcp += OPSIZ; - dstp += OPSIZ; - do6: - a0 = ((op_t *) srcp)[0]; - ((op_t *) dstp)[0] = a1; - srcp += OPSIZ; - dstp += OPSIZ; - do5: - a1 = ((op_t *) srcp)[0]; - ((op_t *) dstp)[0] = a0; - srcp += OPSIZ; - dstp += OPSIZ; - do4: - a0 = ((op_t *) srcp)[0]; - ((op_t *) dstp)[0] = a1; - srcp += OPSIZ; - dstp += OPSIZ; - do3: - a1 = ((op_t *) srcp)[0]; - ((op_t *) dstp)[0] = a0; - srcp += OPSIZ; - dstp += OPSIZ; - do2: - a0 = ((op_t *) srcp)[0]; - ((op_t *) dstp)[0] = a1; - srcp += OPSIZ; - dstp += OPSIZ; - do1: - a1 = ((op_t *) srcp)[0]; - ((op_t *) dstp)[0] = a0; - srcp += OPSIZ; - dstp += OPSIZ; - - len -= 8; - } - while (len != 0); - - /* This is the right position for do0. Please don't move - it into the loop. */ - do0: - ((op_t *) dstp)[0] = a1; -} - -/* _wordcopy_fwd_dest_aligned -- Copy block beginning at SRCP to - block beginning at DSTP with LEN `op_t' words (not LEN bytes!). - DSTP should be aligned for memory operations on `op_t's, but SRCP must - *not* be aligned. */ - -void -_wordcopy_fwd_dest_aligned (dstp, srcp, len) - long int dstp; - long int srcp; - size_t len; -{ - void * srci; - op_t a0, a1, a2, a3; - - /* Save the initial source pointer so we know the number of bytes to - shift for merging two unaligned results. */ - srci = (void *) srcp; - - /* Make SRCP aligned by rounding it down to the beginning of the `op_t' - it points in the middle of. */ - srcp &= -OPSIZ; - - switch (len % 4) - { - case 2: - a1 = ((op_t *) srcp)[0]; - a2 = ((op_t *) srcp)[1]; - len += 2; - srcp += 2 * OPSIZ; - goto do1; - case 3: - a0 = ((op_t *) srcp)[0]; - a1 = ((op_t *) srcp)[1]; - len += 1; - srcp += 2 * OPSIZ; - goto do2; - case 0: - if (OP_T_THRES <= 3 * OPSIZ && len == 0) - return; - a3 = ((op_t *) srcp)[0]; - a0 = ((op_t *) srcp)[1]; - len += 0; - srcp += 2 * OPSIZ; - goto do3; - case 1: - a2 = ((op_t *) srcp)[0]; - a3 = ((op_t *) srcp)[1]; - srcp += 2 * OPSIZ; - len -= 1; - if (OP_T_THRES <= 3 * OPSIZ && len == 0) - goto do0; - goto do4; /* No-op. */ - } - - do - { - do4: - a0 = ((op_t *) srcp)[0]; - a2 = DBLALIGN (a2, a3, srci); - ((op_t *) dstp)[0] = a2; - srcp += OPSIZ; - dstp += OPSIZ; - do3: - a1 = ((op_t *) srcp)[0]; - a3 = DBLALIGN (a3, a0, srci); - ((op_t *) dstp)[0] = a3; - srcp += OPSIZ; - dstp += OPSIZ; - do2: - a2 = ((op_t *) srcp)[0]; - a0 = DBLALIGN (a0, a1, srci); - ((op_t *) dstp)[0] = a0; - srcp += OPSIZ; - dstp += OPSIZ; - do1: - a3 = ((op_t *) srcp)[0]; - a1 = DBLALIGN (a1, a2, srci); - ((op_t *) dstp)[0] = a1; - srcp += OPSIZ; - dstp += OPSIZ; - len -= 4; - } - while (len != 0); - - /* This is the right position for do0. Please don't move - it into the loop. */ - do0: - ((op_t *) dstp)[0] = DBLALIGN (a2, a3, srci); -} - -/* _wordcopy_bwd_aligned -- Copy block finishing right before - SRCP to block finishing right before DSTP with LEN `op_t' words - (not LEN bytes!). Both SRCP and DSTP should be aligned for memory - operations on `op_t's. */ - -void -_wordcopy_bwd_aligned (dstp, srcp, len) - long int dstp; - long int srcp; - size_t len; -{ - op_t a0, a1; - long int srcp1; - - srcp1 = srcp - 1 * OPSIZ; - srcp -= 2 * OPSIZ; - dstp -= 1 * OPSIZ; - - switch (len % 8) - { - case 2: - a0 = ((op_t *) srcp1)[0]; - len += 6; - goto do1; - case 3: - a1 = ((op_t *) srcp1)[0]; - len += 5; - goto do2; - case 4: - a0 = ((op_t *) srcp1)[0]; - len += 4; - goto do3; - case 5: - a1 = ((op_t *) srcp1)[0]; - len += 3; - goto do4; - case 6: - a0 = ((op_t *) srcp1)[0]; - len += 2; - goto do5; - case 7: - a1 = ((op_t *) srcp1)[0]; - len += 1; - goto do6; - - case 0: - if (OP_T_THRES <= 3 * OPSIZ && len == 0) - return; - a0 = ((op_t *) srcp1)[0]; - goto do7; - case 1: - a1 = ((op_t *) srcp1)[0]; - len -= 1; - if (OP_T_THRES <= 3 * OPSIZ && len == 0) - goto do0; - goto do8; /* No-op. */ - } - - do - { - do8: - a0 = ((op_t *) srcp)[0]; - ((op_t *) dstp)[0] = a1; - srcp -= OPSIZ; - dstp -= OPSIZ; - do7: - a1 = ((op_t *) srcp)[0]; - ((op_t *) dstp)[0] = a0; - srcp -= OPSIZ; - dstp -= OPSIZ; - do6: - a0 = ((op_t *) srcp)[0]; - ((op_t *) dstp)[0] = a1; - srcp -= OPSIZ; - dstp -= OPSIZ; - do5: - a1 = ((op_t *) srcp)[0]; - ((op_t *) dstp)[0] = a0; - srcp -= OPSIZ; - dstp -= OPSIZ; - do4: - a0 = ((op_t *) srcp)[0]; - ((op_t *) dstp)[0] = a1; - srcp -= OPSIZ; - dstp -= OPSIZ; - do3: - a1 = ((op_t *) srcp)[0]; - ((op_t *) dstp)[0] = a0; - srcp -= OPSIZ; - dstp -= OPSIZ; - do2: - a0 = ((op_t *) srcp)[0]; - ((op_t *) dstp)[0] = a1; - srcp -= OPSIZ; - dstp -= OPSIZ; - do1: - a1 = ((op_t *) srcp)[0]; - ((op_t *) dstp)[0] = a0; - srcp -= OPSIZ; - dstp -= OPSIZ; - - len -= 8; - } - while (len != 0); - - /* This is the right position for do0. Please don't move - it into the loop. */ - do0: - ((op_t *) dstp)[0] = a1; -} - -/* _wordcopy_bwd_dest_aligned -- Copy block finishing right - before SRCP to block finishing right before DSTP with LEN `op_t' - words (not LEN bytes!). DSTP should be aligned for memory - operations on `op_t', but SRCP must *not* be aligned. */ - -void -_wordcopy_bwd_dest_aligned (dstp, srcp, len) - long int dstp; - long int srcp; - size_t len; -{ - void * srci; - op_t a0, a1, a2, a3; - op_t b0, b1, b2, b3; - - /* Save the initial source pointer so we know the number of bytes to - shift for merging two unaligned results. */ - srci = (void *) srcp; - - /* Make SRCP aligned by rounding it down to the beginning of the op_t - it points in the middle of. */ - srcp &= -OPSIZ; - srcp += OPSIZ; - - switch (len % 4) - { - case 2: - srcp -= 3 * OPSIZ; - dstp -= 1 * OPSIZ; - b2 = ((op_t *) srcp)[2]; - b1 = a1 = ((op_t *) srcp)[1]; - len += 2; - goto do1; - case 3: - srcp -= 3 * OPSIZ; - dstp -= 1 * OPSIZ; - b3 = ((op_t *) srcp)[2]; - b2 = a2 = ((op_t *) srcp)[1]; - len += 1; - goto do2; - case 0: - if (OP_T_THRES <= 3 * OPSIZ && len == 0) - return; - srcp -= 3 * OPSIZ; - dstp -= 1 * OPSIZ; - b0 = ((op_t *) srcp)[2]; - b3 = a3 = ((op_t *) srcp)[1]; - goto do3; - case 1: - srcp -= 3 * OPSIZ; - dstp -= 1 * OPSIZ; - b1 = ((op_t *) srcp)[2]; - b0 = a0 = ((op_t *) srcp)[1]; - len -= 1; - if (OP_T_THRES <= 3 * OPSIZ && len == 0) - goto do0; - goto do4; /* No-op. */ - } - - do - { - do4: - b3 = a3 = ((op_t *) srcp)[0]; - a0 = DBLALIGN (a0, b1, srci); - ((op_t *) dstp)[0] = a0; - srcp -= OPSIZ; - dstp -= OPSIZ; - do3: - b2 = a2 = ((op_t *) srcp)[0]; - a3 = DBLALIGN (a3, b0, srci); - ((op_t *) dstp)[0] = a3; - srcp -= OPSIZ; - dstp -= OPSIZ; - do2: - b1 = a1 = ((op_t *) srcp)[0]; - a2 = DBLALIGN (a2, b3, srci); - ((op_t *) dstp)[0] = a2; - srcp -= OPSIZ; - dstp -= OPSIZ; - do1: - b0 = a0 = ((op_t *) srcp)[0]; - a1 = DBLALIGN (a1, b2, srci); - ((op_t *) dstp)[0] = a1; - srcp -= OPSIZ; - dstp -= OPSIZ; - - len -= 4; - } - while (len != 0); - - /* This is the right position for do0. Please don't move - it into the loop. */ - do0: - a0 = DBLALIGN (a0, b1, srci); - ((op_t *) dstp)[0] = a0; -} diff --git a/ports/sysdeps/unix/sysv/linux/generic/Makefile b/ports/sysdeps/unix/sysv/linux/generic/Makefile deleted file mode 100644 index c1daee2396..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -ifeq ($(subdir),misc) -sysdep_routines += epoll_create epoll_wait inotify_init -endif diff --git a/ports/sysdeps/unix/sysv/linux/generic/____longjmp_chk.c b/ports/sysdeps/unix/sysv/linux/generic/____longjmp_chk.c deleted file mode 100644 index 579cf3998f..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/____longjmp_chk.c +++ /dev/null @@ -1,57 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include -#include -#include - -#ifdef _STACK_GROWS_DOWN -#define called_from(this, saved) ((this) < (saved)) -#else -#define called_from(this, saved) ((this) > (saved)) -#endif - -extern void ____longjmp_chk (__jmp_buf __env, int __val) - __attribute__ ((__noreturn__)); - -void ____longjmp_chk (__jmp_buf env, int val) -{ - void *this_frame = __builtin_frame_address (0); - void *saved_frame = JB_FRAME_ADDRESS (env); - INTERNAL_SYSCALL_DECL (err); - stack_t ss; - - /* If "env" is from a frame that called us, we're all set. */ - if (called_from(this_frame, saved_frame)) - __longjmp (env, val); - - /* If we can't get the current stack state, give up and do the longjmp. */ - if (INTERNAL_SYSCALL (sigaltstack, err, 2, NULL, &ss) != 0) - __longjmp (env, val); - - /* If we we are executing on the alternate stack and within the - bounds, do the longjmp. */ - if (ss.ss_flags == SS_ONSTACK && - (this_frame >= ss.ss_sp && this_frame < (ss.ss_sp + ss.ss_size))) - __longjmp (env, val); - - __fortify_fail ("longjmp causes uninitialized stack frame"); -} diff --git a/ports/sysdeps/unix/sysv/linux/generic/access.c b/ports/sysdeps/unix/sysv/linux/generic/access.c deleted file mode 100644 index d09ede2d7c..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/access.c +++ /dev/null @@ -1,31 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include -#include - -/* Test for access to FILE. */ -int -__access (const char *file, int type) -{ - return INLINE_SYSCALL (faccessat, 3, AT_FDCWD, file, type); -} -weak_alias (__access, access) diff --git a/ports/sysdeps/unix/sysv/linux/generic/bits/fcntl.h b/ports/sysdeps/unix/sysv/linux/generic/bits/fcntl.h deleted file mode 100644 index bdf9171ed1..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/bits/fcntl.h +++ /dev/null @@ -1,56 +0,0 @@ -/* O_*, F_*, FD_* bit values for the generic Linux ABI. - Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#ifndef _FCNTL_H -# error "Never use directly; include instead." -#endif - -#include - -#if __WORDSIZE == 64 -# define __O_LARGEFILE 0 -#endif - -struct flock - { - short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */ - short int l_whence; /* Where `l_start' is relative to (like `lseek'). */ -#ifndef __USE_FILE_OFFSET64 - __off_t l_start; /* Offset where the lock begins. */ - __off_t l_len; /* Size of the locked area; zero means until EOF. */ -#else - __off64_t l_start; /* Offset where the lock begins. */ - __off64_t l_len; /* Size of the locked area; zero means until EOF. */ -#endif - __pid_t l_pid; /* Process holding the lock. */ - }; - -#ifdef __USE_LARGEFILE64 -struct flock64 - { - short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */ - short int l_whence; /* Where `l_start' is relative to (like `lseek'). */ - __off64_t l_start; /* Offset where the lock begins. */ - __off64_t l_len; /* Size of the locked area; zero means until EOF. */ - __pid_t l_pid; /* Process holding the lock. */ - }; -#endif - -/* Include generic Linux declarations. */ -#include diff --git a/ports/sysdeps/unix/sysv/linux/generic/bits/msq.h b/ports/sysdeps/unix/sysv/linux/generic/bits/msq.h deleted file mode 100644 index f3fcd8d645..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/bits/msq.h +++ /dev/null @@ -1,84 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#ifndef _SYS_MSG_H -# error "Never use directly; include instead." -#endif - -#include -#include - -/* Define options for message queue functions. */ -#define MSG_NOERROR 010000 /* no error if message is too big */ -#ifdef __USE_GNU -# define MSG_EXCEPT 020000 /* recv any msg except of specified type */ -# define MSG_COPY 040000 /* copy (not remove) all queue messages */ -#endif - -/* Types used in the structure definition. */ -typedef unsigned long int msgqnum_t; -typedef unsigned long int msglen_t; - -/* Structure of record for one message inside the kernel. - The type `struct msg' is opaque. */ -struct msqid_ds -{ - struct ipc_perm msg_perm; /* structure describing operation permission */ - __time_t msg_stime; /* time of last msgsnd command */ -#if __WORDSIZE == 32 - unsigned long int __glibc_reserved1; -#endif - __time_t msg_rtime; /* time of last msgrcv command */ -#if __WORDSIZE == 32 - unsigned long int __glibc_reserved2; -#endif - __time_t msg_ctime; /* time of last change */ -#if __WORDSIZE == 32 - unsigned long int __glibc_reserved3; -#endif - unsigned long int __msg_cbytes; /* current number of bytes on queue */ - msgqnum_t msg_qnum; /* number of messages currently on queue */ - msglen_t msg_qbytes; /* max number of bytes allowed on queue */ - __pid_t msg_lspid; /* pid of last msgsnd() */ - __pid_t msg_lrpid; /* pid of last msgrcv() */ - unsigned long int __glibc_reserved4; - unsigned long int __glibc_reserved5; -}; - -#ifdef __USE_MISC - -# define msg_cbytes __msg_cbytes - -/* ipcs ctl commands */ -# define MSG_STAT 11 -# define MSG_INFO 12 - -/* buffer for msgctl calls IPC_INFO, MSG_INFO */ -struct msginfo - { - int msgpool; - int msgmap; - int msgmax; - int msgmnb; - int msgmni; - int msgssz; - int msgtql; - unsigned short int msgseg; - }; - -#endif /* __USE_MISC */ diff --git a/ports/sysdeps/unix/sysv/linux/generic/bits/sem.h b/ports/sysdeps/unix/sysv/linux/generic/bits/sem.h deleted file mode 100644 index 3c9aea86ad..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/bits/sem.h +++ /dev/null @@ -1,92 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#ifndef _SYS_SEM_H -# error "Never include directly; use instead." -#endif - -#include -#include - -/* Flags for `semop'. */ -#define SEM_UNDO 0x1000 /* undo the operation on exit */ - -/* Commands for `semctl'. */ -#define GETPID 11 /* get sempid */ -#define GETVAL 12 /* get semval */ -#define GETALL 13 /* get all semval's */ -#define GETNCNT 14 /* get semncnt */ -#define GETZCNT 15 /* get semzcnt */ -#define SETVAL 16 /* set semval */ -#define SETALL 17 /* set all semval's */ - - -/* Data structure describing a set of semaphores. */ -struct semid_ds -{ - struct ipc_perm sem_perm; /* operation permission struct */ - __time_t sem_otime; /* last semop() time */ -#if __WORDSIZE == 32 - unsigned long int __glibc_reserved1; -#endif - __time_t sem_ctime; /* last time changed by semctl() */ -#if __WORDSIZE == 32 - unsigned long int __glibc_reserved2; -#endif - unsigned long int sem_nsems; /* number of semaphores in set */ - unsigned long int __glibc_reserved3; - unsigned long int __glibc_reserved4; -}; - -/* The user should define a union like the following to use it for arguments - for `semctl'. - - union semun - { - int val; <= value for SETVAL - struct semid_ds *buf; <= buffer for IPC_STAT & IPC_SET - unsigned short int *array; <= array for GETALL & SETALL - struct seminfo *__buf; <= buffer for IPC_INFO - }; - - Previous versions of this file used to define this union but this is - incorrect. One can test the macro _SEM_SEMUN_UNDEFINED to see whether - one must define the union or not. */ -#define _SEM_SEMUN_UNDEFINED 1 - -#ifdef __USE_MISC - -/* ipcs ctl cmds */ -# define SEM_STAT 18 -# define SEM_INFO 19 - -struct seminfo -{ - int semmap; - int semmni; - int semmns; - int semmnu; - int semmsl; - int semopm; - int semume; - int semusz; - int semvmx; - int semaem; -}; - -#endif /* __USE_MISC */ diff --git a/ports/sysdeps/unix/sysv/linux/generic/bits/shm.h b/ports/sysdeps/unix/sysv/linux/generic/bits/shm.h deleted file mode 100644 index 0dbed61700..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/bits/shm.h +++ /dev/null @@ -1,111 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#ifndef _SYS_SHM_H -# error "Never include directly; use instead." -#endif - -#include -#include - -/* Permission flag for shmget. */ -#define SHM_R 0400 /* or S_IRUGO from */ -#define SHM_W 0200 /* or S_IWUGO from */ - -/* Flags for `shmat'. */ -#define SHM_RDONLY 010000 /* attach read-only else read-write */ -#define SHM_RND 020000 /* round attach address to SHMLBA */ -#define SHM_REMAP 040000 /* take-over region on attach */ -#define SHM_EXEC 0100000 /* execution access */ - -/* Commands for `shmctl'. */ -#define SHM_LOCK 11 /* lock segment (root only) */ -#define SHM_UNLOCK 12 /* unlock segment (root only) */ - -__BEGIN_DECLS - -/* Segment low boundary address multiple. */ -#define SHMLBA (__getpagesize ()) -extern int __getpagesize (void) __THROW __attribute__ ((__const__)); - - -/* Type to count number of attaches. */ -typedef unsigned long int shmatt_t; - -/* Data structure describing a shared memory segment. */ -struct shmid_ds - { - struct ipc_perm shm_perm; /* operation permission struct */ - size_t shm_segsz; /* size of segment in bytes */ - __time_t shm_atime; /* time of last shmat() */ -#if __WORDSIZE == 32 - unsigned long int __glibc_reserved1; -#endif - __time_t shm_dtime; /* time of last shmdt() */ -#if __WORDSIZE == 32 - unsigned long int __glibc_reserved2; -#endif - __time_t shm_ctime; /* time of last change by shmctl() */ -#if __WORDSIZE == 32 - unsigned long int __glibc_reserved3; -#endif - __pid_t shm_cpid; /* pid of creator */ - __pid_t shm_lpid; /* pid of last shmop */ - shmatt_t shm_nattch; /* number of current attaches */ - unsigned long int __glibc_reserved4; - unsigned long int __glibc_reserved5; - }; - -#ifdef __USE_MISC - -/* ipcs ctl commands */ -# define SHM_STAT 13 -# define SHM_INFO 14 - -/* shm_mode upper byte flags */ -# define SHM_DEST 01000 /* segment will be destroyed on last detach */ -# define SHM_LOCKED 02000 /* segment will not be swapped */ -# define SHM_HUGETLB 04000 /* segment is mapped via hugetlb */ -# define SHM_NORESERVE 010000 /* don't check for reservations */ - -struct shminfo - { - unsigned long int shmmax; - unsigned long int shmmin; - unsigned long int shmmni; - unsigned long int shmseg; - unsigned long int shmall; - unsigned long int __glibc_reserved1; - unsigned long int __glibc_reserved2; - unsigned long int __glibc_reserved3; - unsigned long int __glibc_reserved4; - }; - -struct shm_info - { - int used_ids; - unsigned long int shm_tot; /* total allocated shm */ - unsigned long int shm_rss; /* total resident shm */ - unsigned long int shm_swp; /* total swapped shm */ - unsigned long int swap_attempts; - unsigned long int swap_successes; - }; - -#endif /* __USE_MISC */ - -__END_DECLS diff --git a/ports/sysdeps/unix/sysv/linux/generic/bits/stat.h b/ports/sysdeps/unix/sysv/linux/generic/bits/stat.h deleted file mode 100644 index faa28007f5..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/bits/stat.h +++ /dev/null @@ -1,171 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#if !defined _SYS_STAT_H && !defined _FCNTL_H -# error "Never include directly; use instead." -#endif - -#ifndef _BITS_STAT_H -#define _BITS_STAT_H 1 - -#include -#include - -/* 64-bit libc uses the kernel's 'struct stat', accessed via the - stat() syscall; 32-bit libc uses the kernel's 'struct stat64' - and accesses it via the stat64() syscall. All the various - APIs offered by libc use the kernel shape for their struct stat - structure; the only difference is that 32-bit programs not - using __USE_FILE_OFFSET64 only see the low 32 bits of some - of the fields (specifically st_ino, st_size, and st_blocks). */ -#define _STAT_VER_KERNEL 0 -#define _STAT_VER_LINUX 0 -#define _STAT_VER _STAT_VER_KERNEL - -/* Versions of the `xmknod' interface. */ -#define _MKNOD_VER_LINUX 0 - -#if defined __USE_FILE_OFFSET64 -# define __field64(type, type64, name) type64 name -#elif __WORDSIZE == 64 -# define __field64(type, type64, name) type name -#elif __BYTE_ORDER == __LITTLE_ENDIAN -# define __field64(type, type64, name) \ - type name __attribute__((__aligned__ (__alignof__ (type64)))); int __##name##_pad -#else -# define __field64(type, type64, name) \ - int __##name##_pad __attribute__((__aligned__ (__alignof__ (type64)))); type name -#endif - -struct stat - { - __dev_t st_dev; /* Device. */ - __field64(__ino_t, __ino64_t, st_ino); /* File serial number. */ - __mode_t st_mode; /* File mode. */ - __nlink_t st_nlink; /* Link count. */ - __uid_t st_uid; /* User ID of the file's owner. */ - __gid_t st_gid; /* Group ID of the file's group.*/ - __dev_t st_rdev; /* Device number, if device. */ - __dev_t __pad1; - __field64(__off_t, __off64_t, st_size); /* Size of file, in bytes. */ - __blksize_t st_blksize; /* Optimal block size for I/O. */ - int __pad2; - __field64(__blkcnt_t, __blkcnt64_t, st_blocks); /* 512-byte blocks */ -#ifdef __USE_MISC - /* Nanosecond resolution timestamps are stored in a format - equivalent to 'struct timespec'. This is the type used - whenever possible but the Unix namespace rules do not allow the - identifier 'timespec' to appear in the header. - Therefore we have to handle the use of this header in strictly - standard-compliant sources special. */ - struct timespec st_atim; /* Time of last access. */ - struct timespec st_mtim; /* Time of last modification. */ - struct timespec st_ctim; /* Time of last status change. */ -# define st_atime st_atim.tv_sec /* Backward compatibility. */ -# define st_mtime st_mtim.tv_sec -# define st_ctime st_ctim.tv_sec -#else - __time_t st_atime; /* Time of last access. */ - unsigned long int st_atimensec; /* Nscecs of last access. */ - __time_t st_mtime; /* Time of last modification. */ - unsigned long int st_mtimensec; /* Nsecs of last modification. */ - __time_t st_ctime; /* Time of last status change. */ - unsigned long int st_ctimensec; /* Nsecs of last status change. */ -#endif - int __glibc_reserved[2]; - }; - -#undef __field64 - -#ifdef __USE_LARGEFILE64 -struct stat64 - { - __dev_t st_dev; /* Device. */ - __ino64_t st_ino; /* File serial number. */ - __mode_t st_mode; /* File mode. */ - __nlink_t st_nlink; /* Link count. */ - __uid_t st_uid; /* User ID of the file's owner. */ - __gid_t st_gid; /* Group ID of the file's group.*/ - __dev_t st_rdev; /* Device number, if device. */ - __dev_t __pad1; - __off64_t st_size; /* Size of file, in bytes. */ - __blksize_t st_blksize; /* Optimal block size for I/O. */ - int __pad2; - __blkcnt64_t st_blocks; /* Nr. 512-byte blocks allocated. */ -#ifdef __USE_MISC - /* Nanosecond resolution timestamps are stored in a format - equivalent to 'struct timespec'. This is the type used - whenever possible but the Unix namespace rules do not allow the - identifier 'timespec' to appear in the header. - Therefore we have to handle the use of this header in strictly - standard-compliant sources special. */ - struct timespec st_atim; /* Time of last access. */ - struct timespec st_mtim; /* Time of last modification. */ - struct timespec st_ctim; /* Time of last status change. */ -#else - __time_t st_atime; /* Time of last access. */ - unsigned long int st_atimensec; /* Nscecs of last access. */ - __time_t st_mtime; /* Time of last modification. */ - unsigned long int st_mtimensec; /* Nsecs of last modification. */ - __time_t st_ctime; /* Time of last status change. */ - unsigned long int st_ctimensec; /* Nsecs of last status change. */ -#endif - int __glibc_reserved[2]; - }; -#endif - -/* Tell code we have these members. */ -#define _STATBUF_ST_BLKSIZE -#define _STATBUF_ST_RDEV -/* Nanosecond resolution time values are supported. */ -#define _STATBUF_ST_NSEC - -/* Encoding of the file mode. */ - -#define __S_IFMT 0170000 /* These bits determine file type. */ - -/* File types. */ -#define __S_IFDIR 0040000 /* Directory. */ -#define __S_IFCHR 0020000 /* Character device. */ -#define __S_IFBLK 0060000 /* Block device. */ -#define __S_IFREG 0100000 /* Regular file. */ -#define __S_IFIFO 0010000 /* FIFO. */ -#define __S_IFLNK 0120000 /* Symbolic link. */ -#define __S_IFSOCK 0140000 /* Socket. */ - -/* POSIX.1b objects. Note that these macros always evaluate to zero. But - they do it by enforcing the correct use of the macros. */ -#define __S_TYPEISMQ(buf) ((buf)->st_mode - (buf)->st_mode) -#define __S_TYPEISSEM(buf) ((buf)->st_mode - (buf)->st_mode) -#define __S_TYPEISSHM(buf) ((buf)->st_mode - (buf)->st_mode) - -/* Protection bits. */ - -#define __S_ISUID 04000 /* Set user ID on execution. */ -#define __S_ISGID 02000 /* Set group ID on execution. */ -#define __S_ISVTX 01000 /* Save swapped text after use (sticky). */ -#define __S_IREAD 0400 /* Read by owner. */ -#define __S_IWRITE 0200 /* Write by owner. */ -#define __S_IEXEC 0100 /* Execute by owner. */ - -#ifdef __USE_ATFILE -# define UTIME_NOW ((1l << 30) - 1l) -# define UTIME_OMIT ((1l << 30) - 2l) -#endif - -#endif /* bits/stat.h */ diff --git a/ports/sysdeps/unix/sysv/linux/generic/bits/statfs.h b/ports/sysdeps/unix/sysv/linux/generic/bits/statfs.h deleted file mode 100644 index e32cf76741..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/bits/statfs.h +++ /dev/null @@ -1,86 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#ifndef _SYS_STATFS_H -# error "Never include directly; use instead." -#endif - -#include -#include -#include - -/* 64-bit libc uses the kernel's 'struct statfs', accessed via the - statfs() syscall; 32-bit libc uses the kernel's 'struct statfs64' - and accesses it via the statfs64() syscall. All the various - APIs offered by libc use the kernel shape for their struct statfs - structure; the only difference is that 32-bit programs not - using __USE_FILE_OFFSET64 only see the low 32 bits of some - of the fields (the __fsblkcnt_t and __fsfilcnt_t fields). */ - -#if defined __USE_FILE_OFFSET64 -# define __field64(type, type64, name) type64 name -#elif __WORDSIZE == 64 -# define __field64(type, type64, name) type name -#elif __BYTE_ORDER == __LITTLE_ENDIAN -# define __field64(type, type64, name) \ - type name __attribute__((__aligned__ (__alignof__ (type64)))); int __##name##_pad -#else -# define __field64(type, type64, name) \ - int __##name##_pad __attribute__((__aligned__ (__alignof__ (type64)))); type name -#endif - -struct statfs - { - __SWORD_TYPE f_type; - __SWORD_TYPE f_bsize; - __field64(__fsblkcnt_t, __fsblkcnt64_t, f_blocks); - __field64(__fsblkcnt_t, __fsblkcnt64_t, f_bfree); - __field64(__fsblkcnt_t, __fsblkcnt64_t, f_bavail); - __field64(__fsfilcnt_t, __fsfilcnt64_t, f_files); - __field64(__fsfilcnt_t, __fsfilcnt64_t, f_ffree); - __fsid_t f_fsid; - __SWORD_TYPE f_namelen; - __SWORD_TYPE f_frsize; - __SWORD_TYPE f_flags; - __SWORD_TYPE f_spare[4]; - }; - -#undef __field64 - -#ifdef __USE_LARGEFILE64 -struct statfs64 - { - __SWORD_TYPE f_type; - __SWORD_TYPE f_bsize; - __fsblkcnt64_t f_blocks; - __fsblkcnt64_t f_bfree; - __fsblkcnt64_t f_bavail; - __fsfilcnt64_t f_files; - __fsfilcnt64_t f_ffree; - __fsid_t f_fsid; - __SWORD_TYPE f_namelen; - __SWORD_TYPE f_frsize; - __SWORD_TYPE f_flags; - __SWORD_TYPE f_spare[4]; - }; -#endif - -/* Tell code we have these members. */ -#define _STATFS_F_NAMELEN -#define _STATFS_F_FRSIZE -#define _STATFS_F_FLAGS diff --git a/ports/sysdeps/unix/sysv/linux/generic/bits/typesizes.h b/ports/sysdeps/unix/sysv/linux/generic/bits/typesizes.h deleted file mode 100644 index eda847da1e..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/bits/typesizes.h +++ /dev/null @@ -1,78 +0,0 @@ -/* bits/typesizes.h -- underlying types for *_t. For the generic Linux ABI. - Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#ifndef _BITS_TYPES_H -# error "Never include directly; use instead." -#endif - -#ifndef _BITS_TYPESIZES_H -#define _BITS_TYPESIZES_H 1 - -/* See for the meaning of these macros. This file exists so - that need not vary across different GNU platforms. */ - -#define __DEV_T_TYPE __UQUAD_TYPE -#define __UID_T_TYPE __U32_TYPE -#define __GID_T_TYPE __U32_TYPE -#define __INO_T_TYPE __ULONGWORD_TYPE -#define __INO64_T_TYPE __UQUAD_TYPE -#define __MODE_T_TYPE __U32_TYPE -#define __NLINK_T_TYPE __U32_TYPE -#define __OFF_T_TYPE __SLONGWORD_TYPE -#define __OFF64_T_TYPE __SQUAD_TYPE -#define __PID_T_TYPE __S32_TYPE -#define __RLIM_T_TYPE __ULONGWORD_TYPE -#define __RLIM64_T_TYPE __UQUAD_TYPE -#define __BLKCNT_T_TYPE __SLONGWORD_TYPE -#define __BLKCNT64_T_TYPE __SQUAD_TYPE -#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE -#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE -#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE -#define __FSFILCNT64_T_TYPE __UQUAD_TYPE -#define __FSWORD_T_TYPE __SWORD_TYPE -#define __ID_T_TYPE __U32_TYPE -#define __CLOCK_T_TYPE __SLONGWORD_TYPE -#define __TIME_T_TYPE __SLONGWORD_TYPE -#define __USECONDS_T_TYPE __U32_TYPE -#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE -#define __DADDR_T_TYPE __S32_TYPE -#define __KEY_T_TYPE __S32_TYPE -#define __CLOCKID_T_TYPE __S32_TYPE -#define __TIMER_T_TYPE void * -#define __BLKSIZE_T_TYPE __S32_TYPE -#define __FSID_T_TYPE struct { int __val[2]; } -#define __SSIZE_T_TYPE __SWORD_TYPE -#define __SYSCALL_SLONG_TYPE __SLONGWORD_TYPE -#define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE - -#ifdef __LP64__ -/* Tell the libc code that off_t and off64_t are actually the same type - for all ABI purposes, even if possibly expressed as different base types - for C type-checking purposes. */ -# define __OFF_T_MATCHES_OFF64_T 1 - -/* Same for ino_t and ino64_t. */ -# define __INO_T_MATCHES_INO64_T 1 -#endif - -/* Number of descriptors that can fit in an `fd_set'. */ -#define __FD_SETSIZE 1024 - - -#endif /* bits/typesizes.h */ diff --git a/ports/sysdeps/unix/sysv/linux/generic/brk.c b/ports/sysdeps/unix/sysv/linux/generic/brk.c deleted file mode 100644 index 214d8fd2fe..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/brk.c +++ /dev/null @@ -1,45 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include - -/* This must be initialized data because commons can't have aliases. */ -void *__curbrk = 0; - -/* Old braindamage in GCC's crtstuff.c requires this symbol in an attempt - to work around different old braindamage in the old Linux ELF dynamic - linker. */ -weak_alias (__curbrk, ___brk_addr) - -int -__brk (void *addr) -{ - INTERNAL_SYSCALL_DECL (err); - - __curbrk = (void *) INTERNAL_SYSCALL (brk, err, 1, addr); - if (__curbrk < addr) - { - __set_errno (ENOMEM); - return -1; - } - - return 0; -} -weak_alias (__brk, brk) diff --git a/ports/sysdeps/unix/sysv/linux/generic/chmod.c b/ports/sysdeps/unix/sysv/linux/generic/chmod.c deleted file mode 100644 index 4ff6c8685e..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/chmod.c +++ /dev/null @@ -1,31 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include -#include - -/* Change the protections of FILE to MODE. */ -int -__chmod (const char *file, mode_t mode) -{ - return INLINE_SYSCALL (fchmodat, 3, AT_FDCWD, file, mode); -} -weak_alias (__chmod, chmod) diff --git a/ports/sysdeps/unix/sysv/linux/generic/chown.c b/ports/sysdeps/unix/sysv/linux/generic/chown.c deleted file mode 100644 index d14d574c29..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/chown.c +++ /dev/null @@ -1,32 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include -#include - -/* Change the owner and group of FILE. */ -int -__chown (const char *file, uid_t owner, gid_t group) -{ - return INLINE_SYSCALL (fchownat, 5, AT_FDCWD, file, owner, group, 0); -} -libc_hidden_def (__chown) -weak_alias (__chown, chown) diff --git a/ports/sysdeps/unix/sysv/linux/generic/creat.c b/ports/sysdeps/unix/sysv/linux/generic/creat.c deleted file mode 100644 index f5d046060c..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/creat.c +++ /dev/null @@ -1,38 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include - -#undef creat - -/* Create FILE with protections MODE. */ -int -__libc_creat (const char *file, mode_t mode) -{ - return __open (file, O_WRONLY | O_CREAT | O_TRUNC, mode); -} -weak_alias (__libc_creat, creat) - -/* __open handles cancellation. */ -LIBC_CANCEL_HANDLED (); - -#if __WORDSIZE == 64 -weak_alias (__libc_creat, creat64) -#endif diff --git a/ports/sysdeps/unix/sysv/linux/generic/dl-origin.c b/ports/sysdeps/unix/sysv/linux/generic/dl-origin.c deleted file mode 100644 index c010076f06..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/dl-origin.c +++ /dev/null @@ -1,81 +0,0 @@ -/* Find path of executable. - Copyright (C) 1998-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1998. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -/* On Linux >= 2.1 systems which have the dcache implementation we can get - the path of the application from the /proc/self/exe symlink. Try this - first and fall back on the generic method if necessary. */ - -const char * -_dl_get_origin (void) -{ - char linkval[PATH_MAX]; - char *result; - int len; - INTERNAL_SYSCALL_DECL (err); - - len = INTERNAL_SYSCALL (readlinkat, err, 4, AT_FDCWD, "/proc/self/exe", - linkval, sizeof (linkval)); - if (! INTERNAL_SYSCALL_ERROR_P (len, err) && len > 0 && linkval[0] != '[') - { - /* We can use this value. */ - assert (linkval[0] == '/'); - while (len > 1 && linkval[len - 1] != '/') - --len; - result = (char *) malloc (len + 1); - if (result == NULL) - result = (char *) -1; - else if (len == 1) - memcpy (result, "/", 2); - else - *((char *) __mempcpy (result, linkval, len - 1)) = '\0'; - } - else - { - result = (char *) -1; - /* We use the environment variable LD_ORIGIN_PATH. If it is set make - a copy and strip out trailing slashes. */ - if (GLRO(dl_origin_path) != NULL) - { - size_t len = strlen (GLRO(dl_origin_path)); - result = (char *) malloc (len + 1); - if (result == NULL) - result = (char *) -1; - else - { - char *cp = __mempcpy (result, GLRO(dl_origin_path), len); - while (cp > result + 1 && cp[-1] == '/') - --cp; - *cp = '\0'; - } - } - } - - return result; -} diff --git a/ports/sysdeps/unix/sysv/linux/generic/dup2.c b/ports/sysdeps/unix/sysv/linux/generic/dup2.c deleted file mode 100644 index fb8e01a954..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/dup2.c +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include - -/* Duplicate FD to FD2, closing the old FD2 and making FD2 be - open the same file as FD is. Return FD2 or -1. */ -int -__dup2 (int fd, int fd2) -{ - /* For the degenerate case, check if the fd is valid (by trying to - get the file status flags) and return it, or else return EBADF. */ - if (fd == fd2) - return __libc_fcntl (fd, F_GETFL, 0) < 0 ? -1 : fd; - - return INLINE_SYSCALL (dup3, 3, fd, fd2, 0); -} -libc_hidden_def (__dup2) -weak_alias (__dup2, dup2) diff --git a/ports/sysdeps/unix/sysv/linux/generic/epoll_create.c b/ports/sysdeps/unix/sysv/linux/generic/epoll_create.c deleted file mode 100644 index a6f144df0b..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/epoll_create.c +++ /dev/null @@ -1,38 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include -#include - -libc_hidden_proto (epoll_create) - -int -epoll_create (int size) -{ - if (size <= 0) - { - __set_errno (EINVAL); - return -1; - } - - return INLINE_SYSCALL (epoll_create1, 1, 0); -} -libc_hidden_def (epoll_create) diff --git a/ports/sysdeps/unix/sysv/linux/generic/epoll_wait.c b/ports/sysdeps/unix/sysv/linux/generic/epoll_wait.c deleted file mode 100644 index 4cd50e439a..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/epoll_wait.c +++ /dev/null @@ -1,28 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include - -int -epoll_wait (int epfd, struct epoll_event *events, int maxevents, int timeout) -{ - return epoll_pwait (epfd, events, maxevents, timeout, NULL); -} diff --git a/ports/sysdeps/unix/sysv/linux/generic/futimesat.c b/ports/sysdeps/unix/sysv/linux/generic/futimesat.c deleted file mode 100644 index 0e9c983fb1..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/futimesat.c +++ /dev/null @@ -1,52 +0,0 @@ -/* Copyright (C) 2005-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -/* Change the access time of FILE relative to FD to TVP[0] and - the modification time of FILE to TVP[1]. */ -int -futimesat (int fd, const char *file, const struct timeval tvp[2]) -{ - struct timespec tsp[2]; - int result; - - if (tvp) - { - if (tvp[0].tv_usec >= 1000000 || tvp[0].tv_usec < 0 || - tvp[1].tv_usec >= 1000000 || tvp[1].tv_usec < 0) - { - __set_errno (EINVAL); - return -1; - } - TIMEVAL_TO_TIMESPEC (&tvp[0], &tsp[0]); - TIMEVAL_TO_TIMESPEC (&tvp[1], &tsp[1]); - } - - result = INLINE_SYSCALL (utimensat, 4, fd, file, tvp ? tsp : NULL, 0); - return result; -} diff --git a/ports/sysdeps/unix/sysv/linux/generic/getdents.c b/ports/sysdeps/unix/sysv/linux/generic/getdents.c deleted file mode 100644 index 14dbbc71a0..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/getdents.c +++ /dev/null @@ -1 +0,0 @@ -/* Defined in getdents64.c */ diff --git a/ports/sysdeps/unix/sysv/linux/generic/getdents64.c b/ports/sysdeps/unix/sysv/linux/generic/getdents64.c deleted file mode 100644 index 272799b97d..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/getdents64.c +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include -#include - -#include -#include - -/* The kernel struct linux_dirent64 matches the 'struct getdents64' type. */ -ssize_t -__getdents64 (int fd, char *buf, size_t nbytes) -{ - return INLINE_SYSCALL (getdents64, 3, fd, buf, nbytes); -} - -#if __WORDSIZE == 64 -strong_alias (__getdents64, __getdents) -#endif diff --git a/ports/sysdeps/unix/sysv/linux/generic/inotify_init.c b/ports/sysdeps/unix/sysv/linux/generic/inotify_init.c deleted file mode 100644 index ced7fe8e5e..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/inotify_init.c +++ /dev/null @@ -1,32 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include -#include - -libc_hidden_proto (inotify_init) - -int -inotify_init (void) -{ - return INLINE_SYSCALL (inotify_init1, 1, 0); -} -libc_hidden_def (inotify_init) diff --git a/ports/sysdeps/unix/sysv/linux/generic/kernel_stat.h b/ports/sysdeps/unix/sysv/linux/generic/kernel_stat.h deleted file mode 100644 index 371a7c5a0a..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/kernel_stat.h +++ /dev/null @@ -1,26 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include - -#define STAT_IS_KERNEL_STAT 1 - -/* We provide separate 32-bit API versions that check for EOVERFLOW. */ -#if __WORDSIZE == 64 -# define XSTAT_IS_XSTAT64 1 -#endif diff --git a/ports/sysdeps/unix/sysv/linux/generic/lchown.c b/ports/sysdeps/unix/sysv/linux/generic/lchown.c deleted file mode 100644 index a3718209c9..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/lchown.c +++ /dev/null @@ -1,32 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include -#include - -/* Change the owner and group of FILE. */ -int -__lchown (const char *file, uid_t owner, gid_t group) -{ - return INLINE_SYSCALL (fchownat, 5, AT_FDCWD, file, owner, group, - AT_SYMLINK_NOFOLLOW); -} -weak_alias (__lchown, lchown) diff --git a/ports/sysdeps/unix/sysv/linux/generic/link.c b/ports/sysdeps/unix/sysv/linux/generic/link.c deleted file mode 100644 index 12cf700d79..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/link.c +++ /dev/null @@ -1,31 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include - -/* Make a link to FROM called TO. */ -int -__link (const char *from, const char *to) -{ - return INLINE_SYSCALL (linkat, 5, AT_FDCWD, from, AT_FDCWD, to, 0); -} - -weak_alias (__link, link) diff --git a/ports/sysdeps/unix/sysv/linux/generic/lxstat.c b/ports/sysdeps/unix/sysv/linux/generic/lxstat.c deleted file mode 100644 index 8bb1d8e58f..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/lxstat.c +++ /dev/null @@ -1,48 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -/* Ignore prototype to avoid error if we alias __lxstat and __lxstat64. */ -#define __lxstat64 __lxstat64_disable - -#include -#include -#include -#include -#include - -#include -#include - -/* Get information about the file NAME in BUF. */ -int -__lxstat (int vers, const char *name, struct stat *buf) -{ - if (vers == _STAT_VER_KERNEL) - return INLINE_SYSCALL (newfstatat, 4, AT_FDCWD, name, buf, - AT_SYMLINK_NOFOLLOW); - errno = EINVAL; - return -1; -} - -hidden_def (__lxstat) -weak_alias (__lxstat, _lxstat); -#ifdef XSTAT_IS_XSTAT64 -#undef __lxstat64 -strong_alias (__lxstat, __lxstat64); -hidden_ver (__lxstat, __lxstat64) -#endif diff --git a/ports/sysdeps/unix/sysv/linux/generic/mkdir.c b/ports/sysdeps/unix/sysv/linux/generic/mkdir.c deleted file mode 100644 index 45ccf358c4..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/mkdir.c +++ /dev/null @@ -1,33 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include -#include -#include - - -/* Create a directory named PATH with protections MODE. */ -int -__mkdir (const char *path, mode_t mode) -{ - return INLINE_SYSCALL (mkdirat, 3, AT_FDCWD, path, mode); -} -weak_alias (__mkdir, mkdir) diff --git a/ports/sysdeps/unix/sysv/linux/generic/not-cancel.h b/ports/sysdeps/unix/sysv/linux/generic/not-cancel.h deleted file mode 100644 index b8df253607..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/not-cancel.h +++ /dev/null @@ -1,34 +0,0 @@ -/* Uncancelable versions of cancelable interfaces. Linux asm-generic version. - Copyright (C) 2012-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2012. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#ifndef _LINUX_GENERIC_NOT_CANCEL_H -#define _LINUX_GENERIC_NOT_CANCEL_H - -#include -#include - -/* Uncancelable open with openat. */ -#undef open_not_cancel -#define open_not_cancel(name, flags, mode) \ - INLINE_SYSCALL (openat, 4, AT_FDCWD, (const char *) (name), (flags), (mode)) -#undef open_not_cancel_2 -#define open_not_cancel_2(name, flags) \ - INLINE_SYSCALL (openat, 3, AT_FDCWD, (const char *) (name), (flags)) - -#endif diff --git a/ports/sysdeps/unix/sysv/linux/generic/nptl/not-cancel.h b/ports/sysdeps/unix/sysv/linux/generic/nptl/not-cancel.h deleted file mode 100644 index e6a0d135c8..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/nptl/not-cancel.h +++ /dev/null @@ -1 +0,0 @@ -#include diff --git a/ports/sysdeps/unix/sysv/linux/generic/open.c b/ports/sysdeps/unix/sysv/linux/generic/open.c deleted file mode 100644 index 4f73fa019c..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/open.c +++ /dev/null @@ -1,71 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include -#include - -/* Open FILE with access OFLAG. If OFLAG includes O_CREAT, - a third argument is the file protection. */ -int -__libc_open (const char *file, int oflag, ...) -{ - int mode = 0; - - if (oflag & O_CREAT) - { - va_list arg; - va_start (arg, oflag); - mode = va_arg (arg, int); - va_end (arg); - } - - if (SINGLE_THREAD_P) - return INLINE_SYSCALL (openat, 4, AT_FDCWD, file, oflag, mode); - - int oldtype = LIBC_CANCEL_ASYNC (); - - int result = INLINE_SYSCALL (openat, 4, AT_FDCWD, file, oflag, mode); - - LIBC_CANCEL_RESET (oldtype); - - return result; -} -libc_hidden_def (__libc_open) - -weak_alias (__libc_open, __open) -libc_hidden_weak (__open) -weak_alias (__libc_open, open) - -int -__open_nocancel (const char *file, int oflag, ...) -{ - int mode = 0; - - if (oflag & O_CREAT) - { - va_list arg; - va_start (arg, oflag); - mode = va_arg (arg, int); - va_end (arg); - } - - return INLINE_SYSCALL (openat, 4, AT_FDCWD, file, oflag, mode); -} diff --git a/ports/sysdeps/unix/sysv/linux/generic/open64.c b/ports/sysdeps/unix/sysv/linux/generic/open64.c deleted file mode 100644 index 93d79e381f..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/open64.c +++ /dev/null @@ -1,55 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include -#include - -/* Open FILE with access OFLAG. If OFLAG includes O_CREAT, - a third argument is the file protection. */ -int -__libc_open64 (const char *file, int oflag, ...) -{ - int mode = 0; - - if (oflag & O_CREAT) - { - va_list arg; - va_start (arg, oflag); - mode = va_arg (arg, int); - va_end (arg); - } - - if (SINGLE_THREAD_P) - return INLINE_SYSCALL (openat, 4, AT_FDCWD, file, - oflag | O_LARGEFILE, mode); - - int oldtype = LIBC_CANCEL_ASYNC (); - - int result = INLINE_SYSCALL (openat, 4, AT_FDCWD, file, - oflag | O_LARGEFILE, mode); - - LIBC_CANCEL_RESET (oldtype); - - return result; -} -weak_alias (__libc_open64, __open64) -libc_hidden_weak (__open64) -weak_alias (__libc_open64, open64) diff --git a/ports/sysdeps/unix/sysv/linux/generic/pause.c b/ports/sysdeps/unix/sysv/linux/generic/pause.c deleted file mode 100644 index 3804ce6e99..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/pause.c +++ /dev/null @@ -1,63 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include - -/* Suspend the process until a signal arrives. - This always returns -1 and sets errno to EINTR. */ - -static int -__syscall_pause (void) -{ - sigset_t set; - - int rc = - INLINE_SYSCALL (rt_sigprocmask, 4, SIG_BLOCK, NULL, &set, _NSIG / 8); - if (rc == 0) - rc = INLINE_SYSCALL (rt_sigsuspend, 2, &set, _NSIG / 8); - - return rc; -} - -int -__libc_pause (void) -{ - if (SINGLE_THREAD_P) - return __syscall_pause (); - - int oldtype = LIBC_CANCEL_ASYNC (); - - int result = __syscall_pause (); - - LIBC_CANCEL_RESET (oldtype); - - return result; -} -weak_alias (__libc_pause, pause) - -#ifndef NO_CANCELLATION -# include - -int -__pause_nocancel (void) -{ - return __syscall_pause (); -} -#endif diff --git a/ports/sysdeps/unix/sysv/linux/generic/pipe.c b/ports/sysdeps/unix/sysv/linux/generic/pipe.c deleted file mode 100644 index 53bf6141a0..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/pipe.c +++ /dev/null @@ -1,33 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include - -/* Create a one-way communication channel (__pipe). - If successful, two file descriptors are stored in PIPEDES; - bytes written on PIPEDES[1] can be read from PIPEDES[0]. - Returns 0 if successful, -1 if not. */ -int -__pipe (int __pipedes[2]) -{ - return INLINE_SYSCALL (pipe2, 2, __pipedes, 0); -} -libc_hidden_def (__pipe) -weak_alias (__pipe, pipe) diff --git a/ports/sysdeps/unix/sysv/linux/generic/poll.c b/ports/sysdeps/unix/sysv/linux/generic/poll.c deleted file mode 100644 index 62342779c4..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/poll.c +++ /dev/null @@ -1,53 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include - -#include -#include - -#include - -int -__poll (struct pollfd *fds, nfds_t nfds, int timeout) -{ - struct timespec timeout_ts; - struct timespec *timeout_ts_p = NULL; - - if (timeout >= 0) - { - timeout_ts.tv_sec = timeout / 1000; - timeout_ts.tv_nsec = (timeout % 1000) * 1000000; - timeout_ts_p = &timeout_ts; - } - - if (SINGLE_THREAD_P) - return INLINE_SYSCALL (ppoll, 5, fds, nfds, timeout_ts_p, NULL, 0); - - int oldtype = LIBC_CANCEL_ASYNC (); - - int result = INLINE_SYSCALL (ppoll, 5, fds, nfds, timeout_ts_p, NULL, 0); - - LIBC_CANCEL_RESET (oldtype); - - return result; -} -libc_hidden_def (__poll) -weak_alias (__poll, poll) -strong_alias (__poll, __libc_poll) diff --git a/ports/sysdeps/unix/sysv/linux/generic/readlink.c b/ports/sysdeps/unix/sysv/linux/generic/readlink.c deleted file mode 100644 index 6f25649c6c..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/readlink.c +++ /dev/null @@ -1,31 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include - -/* Read the contents of the symbolic link PATH into no more than - LEN bytes of BUF. The contents are not null-terminated. - Returns the number of characters read, or -1 for errors. */ -ssize_t -__readlink (const char *path, char *buf, size_t len) -{ - return INLINE_SYSCALL (readlinkat, 4, AT_FDCWD, path, buf, len); -} -weak_alias (__readlink, readlink) diff --git a/ports/sysdeps/unix/sysv/linux/generic/readlink_chk.c b/ports/sysdeps/unix/sysv/linux/generic/readlink_chk.c deleted file mode 100644 index f73b3c577d..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/readlink_chk.c +++ /dev/null @@ -1,39 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#ifdef HAVE_INLINED_SYSCALLS -# include -# include -#endif - - -ssize_t -__readlink_chk (const char *path, void *buf, size_t len, size_t buflen) -{ - if (len > buflen) - __chk_fail (); - -#ifdef HAVE_INLINED_SYSCALLS - return INLINE_SYSCALL (readlinkat, 4, AT_FDCWD, path, buf, len); -#else - return __readlink (path, buf, len); -#endif -} diff --git a/ports/sysdeps/unix/sysv/linux/generic/recv.c b/ports/sysdeps/unix/sysv/linux/generic/recv.c deleted file mode 100644 index 1d950eb0fe..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/recv.c +++ /dev/null @@ -1,45 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include - -ssize_t -__libc_recv (int sockfd, void *buffer, size_t len, int flags) -{ - ssize_t result; - - if (SINGLE_THREAD_P) - result = INLINE_SYSCALL (recvfrom, 6, sockfd, buffer, len, flags, - NULL, NULL); - else - { - int oldtype = LIBC_CANCEL_ASYNC (); - - result = INLINE_SYSCALL (recvfrom, 6, sockfd, buffer, len, flags, - NULL, NULL); - - LIBC_CANCEL_RESET (oldtype); - } - - return result; -} -strong_alias (__libc_recv, __recv) -weak_alias (__libc_recv, recv) diff --git a/ports/sysdeps/unix/sysv/linux/generic/rename.c b/ports/sysdeps/unix/sysv/linux/generic/rename.c deleted file mode 100644 index 73e03c03d7..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/rename.c +++ /dev/null @@ -1,29 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include - -/* Rename the file OLD to NEW. */ -int -rename (const char *old, const char *new) -{ - return INLINE_SYSCALL (renameat, 4, AT_FDCWD, old, AT_FDCWD, new); -} diff --git a/ports/sysdeps/unix/sysv/linux/generic/rmdir.c b/ports/sysdeps/unix/sysv/linux/generic/rmdir.c deleted file mode 100644 index ff5d309df6..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/rmdir.c +++ /dev/null @@ -1,31 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include - - -/* Remove the directory PATH. */ -int -__rmdir (const char *path) -{ - return INLINE_SYSCALL (unlinkat, 3, AT_FDCWD, path, AT_REMOVEDIR); -} -weak_alias (__rmdir, rmdir) diff --git a/ports/sysdeps/unix/sysv/linux/generic/select.c b/ports/sysdeps/unix/sysv/linux/generic/select.c deleted file mode 100644 index 03f96037f6..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/select.c +++ /dev/null @@ -1,74 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include -#include - -/* Check the first NFDS descriptors each in READFDS (if not NULL) for read - readiness, in WRITEFDS (if not NULL) for write readiness, and in EXCEPTFDS - (if not NULL) for exceptional conditions. If TIMEOUT is not NULL, time out - after waiting the interval specified therein. Returns the number of ready - descriptors, or -1 for errors. */ - -int -__select(int nfds, fd_set *readfds, - fd_set *writefds, fd_set *exceptfds, - struct timeval *timeout) -{ - int result; - struct timespec ts, *tsp = NULL; - - if (timeout) - { - TIMEVAL_TO_TIMESPEC (timeout, &ts); - tsp = &ts; - } - - if (SINGLE_THREAD_P) - { - result = INLINE_SYSCALL (pselect6, 6, nfds, readfds, writefds, exceptfds, - tsp, NULL); - } - else - { - int oldtype = LIBC_CANCEL_ASYNC (); - - result = INLINE_SYSCALL (pselect6, 6, nfds, readfds, writefds, exceptfds, - tsp, NULL); - - LIBC_CANCEL_RESET (oldtype); - } - - if (timeout) - { - /* Linux by default will update the timeout after a pselect6 syscall - (though the pselect() glibc call suppresses this behavior). - Since select() on Linux has the same behavior as the pselect6 - syscall, we update the timeout here. */ - TIMESPEC_TO_TIMEVAL (timeout, &ts); - } - - return result; -} -libc_hidden_def (__select) - -weak_alias (__select, select) -weak_alias (__select, __libc_select) diff --git a/ports/sysdeps/unix/sysv/linux/generic/send.c b/ports/sysdeps/unix/sysv/linux/generic/send.c deleted file mode 100644 index 2db610d4bc..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/send.c +++ /dev/null @@ -1,43 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include - -ssize_t -__libc_send (int sockfd, const void *buffer, size_t len, int flags) -{ - ssize_t result; - - if (SINGLE_THREAD_P) - result = INLINE_SYSCALL (sendto, 6, sockfd, buffer, len, flags, NULL, 0); - else - { - int oldtype = LIBC_CANCEL_ASYNC (); - - result = INLINE_SYSCALL (sendto, 6, sockfd, buffer, len, flags, NULL, 0); - - LIBC_CANCEL_RESET (oldtype); - } - - return result; -} -strong_alias (__libc_send, __send) -weak_alias (__libc_send, send) diff --git a/ports/sysdeps/unix/sysv/linux/generic/symlink.c b/ports/sysdeps/unix/sysv/linux/generic/symlink.c deleted file mode 100644 index ad36c2cae2..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/symlink.c +++ /dev/null @@ -1,30 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include - -/* Make a link to FROM called TO. */ -int -__symlink (const char *from, const char *to) -{ - return INLINE_SYSCALL (symlinkat, 3, from, AT_FDCWD, to); -} -weak_alias (__symlink, symlink) diff --git a/ports/sysdeps/unix/sysv/linux/generic/syscalls.list b/ports/sysdeps/unix/sysv/linux/generic/syscalls.list deleted file mode 100644 index 4b2e74762f..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/syscalls.list +++ /dev/null @@ -1,32 +0,0 @@ -# File name Caller Syscall name # args Strong name Weak names - -# SysV APIs -msgget - msgget i:ii __msgget msgget -msgctl - msgctl i:iip __msgctl msgctl -msgrcv - msgrcv Ci:ibnii __msgrcv msgrcv -msgsnd - msgsnd Ci:ibni __msgsnd msgsnd -semget - semget i:iii __semget semget -semctl - semctl i:iiii __semctl semctl -semtimedop - semtimedop i:ipip semtimedop -semop - semop i:ipi __semop semop -shmget - shmget i:iii __shmget shmget -shmctl - shmctl i:iip __shmctl shmctl -shmat - shmat i:ipi __shmat shmat -shmdt - shmdt i:s __shmdt shmdt - -# Socket APIs -socket - socket i:iii __socket socket -socketpair - socketpair i:iiif __socketpair socketpair -bind - bind i:ipi __bind bind -listen - listen i:ii __listen listen -accept - accept Ci:iBN __libc_accept __accept accept -connect - connect Ci:ipi __libc_connect __connect connect -getsockname - getsockname i:ipp __getsockname getsockname -getpeername - getpeername i:ipp __getpeername getpeername -sendto - sendto Ci:ibnibn __libc_sendto __sendto sendto -recvfrom - recvfrom Ci:ibniBN __libc_recvfrom __recvfrom recvfrom -setsockopt - setsockopt i:iiibn __setsockopt setsockopt -getsockopt - getsockopt i:iiiBN __getsockopt getsockopt -shutdown - shutdown i:ii __shutdown shutdown -sendmsg - sendmsg Ci:ipi __libc_sendmsg __sendmsg sendmsg -recvmsg - recvmsg Ci:ipi __libc_recvmsg __recvmsg recvmsg diff --git a/ports/sysdeps/unix/sysv/linux/generic/sysctl.c b/ports/sysdeps/unix/sysv/linux/generic/sysctl.c deleted file mode 100644 index e94237ac7c..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/sysctl.c +++ /dev/null @@ -1,32 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include - -#include -#include - -/* This deprecated syscall is no longer used (replaced with /proc/sys). */ -int -sysctl (int *name, int nlen, void *oldval, size_t *oldlenp, - void *newval, size_t newlen) -{ - __set_errno (ENOSYS); - return -1; -} -stub_warning (sysctl) diff --git a/ports/sysdeps/unix/sysv/linux/generic/sysdep.h b/ports/sysdeps/unix/sysv/linux/generic/sysdep.h deleted file mode 100644 index f1ba2589e6..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/sysdep.h +++ /dev/null @@ -1,41 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include - -/* Provide the common name to allow more code reuse. */ -#define __NR__llseek __NR_llseek - -#if __WORDSIZE == 64 -/* By defining the older names, glibc will build syscall wrappers for - both pread and pread64; sysdeps/unix/sysv/linux/wordsize-64/pread64.c - will suppress generating any separate code for pread64.c. */ -#define __NR_pread __NR_pread64 -#define __NR_pwrite __NR_pwrite64 -#endif - -/* Provide a dummy argument that can be used to force register - alignment for register pairs if required by the syscall ABI. */ -#ifdef __ASSUME_ALIGNED_REGISTER_PAIRS -#define __ALIGNMENT_ARG 0, -#define __ALIGNMENT_COUNT(a,b) b -#else -#define __ALIGNMENT_ARG -#define __ALIGNMENT_COUNT(a,b) a -#endif diff --git a/ports/sysdeps/unix/sysv/linux/generic/umount.c b/ports/sysdeps/unix/sysv/linux/generic/umount.c deleted file mode 100644 index 115dcaaaff..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/umount.c +++ /dev/null @@ -1,30 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -/* Since the generic Linux syscall ABI doesn't have an oldumount system call, - do what the kernel does down here. */ - -extern long int __umount2 (const char *name, int flags); - -long int -__umount (const char *name) -{ - return __umount2 (name, 0); -} - -weak_alias (__umount, umount); diff --git a/ports/sysdeps/unix/sysv/linux/generic/unlink.c b/ports/sysdeps/unix/sysv/linux/generic/unlink.c deleted file mode 100644 index 6fc6779c1a..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/unlink.c +++ /dev/null @@ -1,31 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include - - -/* Remove the link named NAME. */ -int -__unlink (const char *name) -{ - return INLINE_SYSCALL (unlinkat, 3, AT_FDCWD, name, 0); -} -weak_alias (__unlink, unlink) diff --git a/ports/sysdeps/unix/sysv/linux/generic/ustat.c b/ports/sysdeps/unix/sysv/linux/generic/ustat.c deleted file mode 100644 index a45e818aba..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/ustat.c +++ /dev/null @@ -1,32 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include - -#include -#include - -/* This deprecated syscall is no longer used (replaced with fstat). */ -int -ustat (dev_t dev, struct ustat *ubuf) -{ - __set_errno (ENOSYS); - return -1; -} -stub_warning (ustat) diff --git a/ports/sysdeps/unix/sysv/linux/generic/utimes.c b/ports/sysdeps/unix/sysv/linux/generic/utimes.c deleted file mode 100644 index e0abd7290a..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/utimes.c +++ /dev/null @@ -1,45 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include -#include -#include - - -/* Change the access time of FILE to TVP[0] and - the modification time of FILE to TVP[1]. */ -int -__utimes (const char *file, const struct timeval tvp[2]) -{ - struct timespec ts[2]; - struct timespec *tsp = NULL; - - if (tvp) - { - TIMEVAL_TO_TIMESPEC (&tvp[0], &ts[0]); - TIMEVAL_TO_TIMESPEC (&tvp[1], &ts[1]); - tsp = &ts[0]; - } - - return INLINE_SYSCALL (utimensat, 4, AT_FDCWD, file, tsp, 0); -} - -weak_alias (__utimes, utimes) diff --git a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/Versions b/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/Versions deleted file mode 100644 index cdc6022015..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/Versions +++ /dev/null @@ -1,5 +0,0 @@ -libc { - GLIBC_2.15 { - fallocate64; - } -} diff --git a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/fcntl.c b/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/fcntl.c deleted file mode 100644 index 2637f03451..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/fcntl.c +++ /dev/null @@ -1,87 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include /* Must come before . */ -#include -#include - -#include -#include - - -static int -do_fcntl (int fd, int cmd, void *arg) -{ - if (cmd != F_GETOWN) - return INLINE_SYSCALL (fcntl64, 3, fd, cmd, arg); - - INTERNAL_SYSCALL_DECL (err); - struct f_owner_ex fex; - int res = INTERNAL_SYSCALL (fcntl64, err, 3, fd, F_GETOWN_EX, &fex); - if (!INTERNAL_SYSCALL_ERROR_P (res, err)) - return fex.type == F_OWNER_GID ? -fex.pid : fex.pid; - - __set_errno (INTERNAL_SYSCALL_ERRNO (res, err)); - return -1; -} - - -#ifndef NO_CANCELLATION -int -__fcntl_nocancel (int fd, int cmd, ...) -{ - va_list ap; - void *arg; - - va_start (ap, cmd); - arg = va_arg (ap, void *); - va_end (ap); - - return do_fcntl (fd, cmd, arg); -} -#endif - - -int -__libc_fcntl (int fd, int cmd, ...) -{ - va_list ap; - void *arg; - - va_start (ap, cmd); - arg = va_arg (ap, void *); - va_end (ap); - - if (SINGLE_THREAD_P || cmd != F_SETLKW) - return do_fcntl (fd, cmd, arg); - - int oldtype = LIBC_CANCEL_ASYNC (); - - int result = do_fcntl (fd, cmd, arg); - - LIBC_CANCEL_RESET (oldtype); - - return result; -} -libc_hidden_def (__libc_fcntl) - -weak_alias (__libc_fcntl, __fcntl) -libc_hidden_weak (__fcntl) -weak_alias (__libc_fcntl, fcntl) diff --git a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/fstatfs.c b/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/fstatfs.c deleted file mode 100644 index bff1f4970b..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/fstatfs.c +++ /dev/null @@ -1,32 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include - -#include "overflow.h" - -/* Return information about the filesystem on which FD resides. */ -int -__fstatfs (int fd, struct statfs *buf) -{ - int rc = INLINE_SYSCALL (fstatfs64, 3, fd, sizeof (*buf), buf); - return rc ?: statfs_overflow (buf); -} -weak_alias (__fstatfs, fstatfs) diff --git a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/ftruncate.c b/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/ftruncate.c deleted file mode 100644 index f153a04933..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/ftruncate.c +++ /dev/null @@ -1,31 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include - -/* Truncate the file FD refers to to LENGTH bytes. */ -int -__ftruncate (int fd, off_t length) -{ - return INLINE_SYSCALL (ftruncate64, __ALIGNMENT_COUNT (3, 4), fd, - __ALIGNMENT_ARG - __LONG_LONG_PAIR (length >> 31, length)); -} -weak_alias (__ftruncate, ftruncate) diff --git a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/ftruncate64.c b/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/ftruncate64.c deleted file mode 100644 index e430145828..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/ftruncate64.c +++ /dev/null @@ -1,32 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include - -/* Truncate the file FD refers to to LENGTH bytes. */ -int -__ftruncate64 (int fd, off64_t length) -{ - unsigned int low = length & 0xffffffff; - unsigned int high = length >> 32; - return INLINE_SYSCALL (ftruncate64, __ALIGNMENT_COUNT (3, 4), fd, - __ALIGNMENT_ARG __LONG_LONG_PAIR (high, low)); -} -weak_alias (__ftruncate64, ftruncate64) diff --git a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/fxstat.c b/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/fxstat.c deleted file mode 100644 index 41850c34bd..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/fxstat.c +++ /dev/null @@ -1,45 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include -#include - -#include -#include - -#include "overflow.h" - -/* Get information about the file FD in BUF. */ -int -__fxstat (int vers, int fd, struct stat *buf) -{ - if (vers == _STAT_VER_KERNEL) - { - int rc = INLINE_SYSCALL (fstat64, 2, fd, buf); - return rc ?: stat_overflow (buf); - } - - errno = EINVAL; - return -1; -} - -hidden_def (__fxstat) -weak_alias (__fxstat, _fxstat); diff --git a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/fxstatat.c b/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/fxstatat.c deleted file mode 100644 index 94769b64e4..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/fxstatat.c +++ /dev/null @@ -1,45 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include "overflow.h" - -/* Get information about the file NAME in BUF. */ -int -__fxstatat (int vers, int fd, const char *file, struct stat *buf, int flag) -{ - if (vers == _STAT_VER_KERNEL) - { - int rc = INLINE_SYSCALL (fstatat64, 4, fd, file, buf, flag); - return rc ?: stat_overflow (buf); - } - - errno = EINVAL; - return -1; -} -libc_hidden_def (__fxstatat) diff --git a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/getdents.c b/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/getdents.c deleted file mode 100644 index e4b6ee0d17..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/getdents.c +++ /dev/null @@ -1,115 +0,0 @@ -/* Copyright (C) 1993-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Simplified from sysdeps/unix/sysv/linux/getdents.c. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -/* Pack the dirent64 struct down into 32-bit offset/inode fields, and - ensure that no overflow occurs. */ -ssize_t -__getdents (int fd, char *buf, size_t nbytes) -{ - union - { - struct dirent64 k; /* Kernel structure. */ - struct dirent u; - char b[1]; - } *kbuf = (void *) buf, *outp, *inp; - size_t kbytes = nbytes; - off64_t last_offset = -1; - ssize_t retval; - - const size_t size_diff = (offsetof (struct dirent64, d_name) - - offsetof (struct dirent, d_name)); - if (nbytes <= sizeof (struct dirent)) - { - kbytes = nbytes + offsetof (struct dirent64, d_name) - - offsetof (struct dirent, d_name); - kbuf = __alloca(kbytes); - } - - retval = INLINE_SYSCALL (getdents64, 3, fd, kbuf, kbytes); - if (retval == -1) - return -1; - - /* These two pointers might alias the same memory buffer. - Standard C requires that we always use the same type for them, - so we must use the union type. */ - inp = kbuf; - outp = (void *) buf; - - while (&inp->b < &kbuf->b + retval) - { - const size_t alignment = __alignof__ (struct dirent); - /* Since inp->k.d_reclen is already aligned for the kernel - structure this may compute a value that is bigger - than necessary. */ - size_t old_reclen = inp->k.d_reclen; - size_t new_reclen = ((old_reclen - size_diff + alignment - 1) - & ~(alignment - 1)); - - /* Copy the data out of the old structure into temporary space. - Then copy the name, which may overlap if BUF == KBUF. */ - const uint64_t d_ino = inp->k.d_ino; - const int64_t d_off = inp->k.d_off; - const uint8_t d_type = inp->k.d_type; - - memmove (outp->u.d_name, inp->k.d_name, - old_reclen - offsetof (struct dirent64, d_name)); - - /* Now we have copied the data from INP and access only OUTP. */ - - outp->u.d_ino = d_ino; - outp->u.d_off = d_off; - if ((sizeof (outp->u.d_ino) != sizeof (inp->k.d_ino) - && outp->u.d_ino != d_ino) - || (sizeof (outp->u.d_off) != sizeof (inp->k.d_off) - && outp->u.d_off != d_off)) - { - /* Overflow. If there was at least one entry before this one, - return them without error, otherwise signal overflow. */ - if (last_offset != -1) - { - __lseek64 (fd, last_offset, SEEK_SET); - return outp->b - buf; - } - __set_errno (EOVERFLOW); - return -1; - } - - last_offset = d_off; - outp->u.d_reclen = new_reclen; - outp->u.d_type = d_type; - - inp = (void *) inp + old_reclen; - outp = (void *) outp + new_reclen; - } - - return outp->b - buf; -} diff --git a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/llseek.c b/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/llseek.c deleted file mode 100644 index ce9eb9bd6d..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/llseek.c +++ /dev/null @@ -1,46 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include - -#include -#include - -/* Seek to OFFSET on FD, starting from WHENCE. */ -extern loff_t __llseek (int fd, loff_t offset, int whence); - -loff_t -__llseek (int fd, loff_t offset, int whence) -{ - loff_t retval; - - return (loff_t) (INLINE_SYSCALL (_llseek, 5, fd, (off_t) (offset >> 32), - (off_t) (offset & 0xffffffff), - &retval, whence) ?: retval); -} -weak_alias (__llseek, llseek) -strong_alias (__llseek, __libc_lseek64) -strong_alias (__llseek, __lseek64) -weak_alias (__llseek, lseek64) - -/* llseek doesn't have a prototype. Since the second parameter is a - 64bit type, this results in wrong behaviour if no prototype is - provided. */ -link_warning (llseek, "\ -the `llseek' function may be dangerous; use `lseek64' instead.") diff --git a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/lseek.c b/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/lseek.c deleted file mode 100644 index 96d8a35378..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/lseek.c +++ /dev/null @@ -1,38 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include - -#include -#include - -#include "overflow.h" - -off_t -__lseek (int fd, off_t offset, int whence) -{ - loff_t res; - int rc = INLINE_SYSCALL (_llseek, 5, fd, (off_t) (offset >> 31), - (off_t) offset, &res, whence); - return rc ?: lseek_overflow (res); -} -libc_hidden_def (__lseek) -weak_alias (__lseek, lseek) -strong_alias (__lseek, __libc_lseek) diff --git a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/lxstat.c b/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/lxstat.c deleted file mode 100644 index 143f727d3f..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/lxstat.c +++ /dev/null @@ -1,43 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include -#include - -#include -#include - -#include "overflow.h" - -/* Get information about the file NAME in BUF. */ -int -__lxstat (int vers, const char *name, struct stat *buf) -{ - if (vers == _STAT_VER_KERNEL) - { - int rc = INLINE_SYSCALL (fstatat64, 4, AT_FDCWD, name, buf, - AT_SYMLINK_NOFOLLOW); - return rc ?: stat_overflow (buf); - } - errno = EINVAL; - return -1; -} -hidden_def (__lxstat) diff --git a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/lxstat64.c b/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/lxstat64.c deleted file mode 100644 index 39d385cdb0..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/lxstat64.c +++ /dev/null @@ -1,38 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include -#include - -#include -#include - -/* Get information about the file NAME in BUF. */ -int -__lxstat64 (int vers, const char *name, struct stat64 *buf) -{ - if (vers == _STAT_VER_KERNEL) - return INLINE_SYSCALL (fstatat64, 4, AT_FDCWD, name, buf, - AT_SYMLINK_NOFOLLOW); - errno = EINVAL; - return -1; -} -hidden_def (__lxstat64) diff --git a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/mmap.c b/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/mmap.c deleted file mode 100644 index be8ac7b100..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/mmap.c +++ /dev/null @@ -1,40 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include - -#ifndef MMAP_PAGE_SHIFT -#define MMAP_PAGE_SHIFT 12 -#endif - -__ptr_t -__mmap (__ptr_t addr, size_t len, int prot, int flags, int fd, off_t offset) -{ - if (offset & ((1 << MMAP_PAGE_SHIFT) - 1)) - { - __set_errno (EINVAL); - return MAP_FAILED; - } - return (__ptr_t) INLINE_SYSCALL (mmap2, 6, addr, len, prot, flags, fd, - offset >> MMAP_PAGE_SHIFT); -} - -weak_alias (__mmap, mmap) diff --git a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/overflow.h b/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/overflow.h deleted file mode 100644 index 2acc2e5486..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/overflow.h +++ /dev/null @@ -1,60 +0,0 @@ -/* Overflow tests for stat, statfs, and lseek functions. - Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include - -/* Test for overflows of structures where we ask the kernel to fill them - in with standard 64-bit syscalls but return them through APIs that - only expose the low 32 bits of some fields. */ - -static inline off_t lseek_overflow (loff_t res) -{ - off_t retval = (off_t) res; - if (retval == res) - return retval; - - __set_errno (EOVERFLOW); - return (off_t) -1; -} - -static inline int stat_overflow (struct stat *buf) -{ - if (buf->__st_ino_pad == 0 && buf->__st_size_pad == 0 && - buf->__st_blocks_pad == 0) - return 0; - - __set_errno (EOVERFLOW); - return -1; -} - -/* Note that f_files and f_ffree may validly be a sign-extended -1. */ -static inline int statfs_overflow (struct statfs *buf) -{ - if (buf->__f_blocks_pad == 0 && buf->__f_bfree_pad == 0 && - buf->__f_bavail_pad == 0 && - (buf->__f_files_pad == 0 || - (buf->f_files == -1U && buf->__f_files_pad == -1)) && - (buf->__f_ffree_pad == 0 || - (buf->f_ffree == -1U && buf->__f_ffree_pad == -1))) - return 0; - - __set_errno (EOVERFLOW); - return -1; -} diff --git a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/posix_fadvise.c b/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/posix_fadvise.c deleted file mode 100644 index cc29817a95..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/posix_fadvise.c +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include - -/* Advice the system about the expected behaviour of the application with - respect to the file associated with FD. */ - -int -posix_fadvise (int fd, off_t offset, off_t len, int advise) -{ - INTERNAL_SYSCALL_DECL (err); - int ret = INTERNAL_SYSCALL (fadvise64_64, err, 6, fd, - __LONG_LONG_PAIR (offset >> 31, offset), - __LONG_LONG_PAIR (len >> 31, len), - advise); - if (INTERNAL_SYSCALL_ERROR_P (ret, err)) - return INTERNAL_SYSCALL_ERRNO (ret, err); - return 0; -} diff --git a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/pread.c b/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/pread.c deleted file mode 100644 index 2bffd1fbd9..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/pread.c +++ /dev/null @@ -1,58 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - Based on work contributed by Ulrich Drepper , 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include - -#include -#include - -#include - -static ssize_t -do_pread (int fd, void *buf, size_t count, off_t offset) -{ - assert (sizeof (offset) == 4); - return INLINE_SYSCALL (pread64, __ALIGNMENT_COUNT (5, 6), fd, - buf, count, __ALIGNMENT_ARG - __LONG_LONG_PAIR (offset >> 31, offset)); -} - -ssize_t -__libc_pread (fd, buf, count, offset) - int fd; - void *buf; - size_t count; - off_t offset; -{ - if (SINGLE_THREAD_P) - return do_pread (fd, buf, count, offset); - - int oldtype = LIBC_CANCEL_ASYNC (); - - ssize_t result = do_pread (fd, buf, count, offset); - - LIBC_CANCEL_RESET (oldtype); - - return result; -} -strong_alias (__libc_pread, __pread) -weak_alias (__libc_pread, pread) diff --git a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/pread64.c b/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/pread64.c deleted file mode 100644 index 093b874814..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/pread64.c +++ /dev/null @@ -1,58 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - Based on work contributed by Ulrich Drepper , 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include - -#include -#include - -#include - -static ssize_t -do_pread64 (int fd, void *buf, size_t count, off64_t offset) -{ - return INLINE_SYSCALL (pread64, __ALIGNMENT_COUNT (5, 6), fd, - buf, count, __ALIGNMENT_ARG - __LONG_LONG_PAIR ((off_t) (offset >> 32), - (off_t) (offset & 0xffffffff))); -} - - -ssize_t -__libc_pread64 (fd, buf, count, offset) - int fd; - void *buf; - size_t count; - off64_t offset; -{ - if (SINGLE_THREAD_P) - return do_pread64 (fd, buf, count, offset); - - int oldtype = LIBC_CANCEL_ASYNC (); - - ssize_t result = do_pread64 (fd, buf, count, offset); - - LIBC_CANCEL_RESET (oldtype); - - return result; -} - -weak_alias (__libc_pread64, __pread64) weak_alias (__libc_pread64, pread64) diff --git a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/preadv.c b/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/preadv.c deleted file mode 100644 index 1dae1272d0..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/preadv.c +++ /dev/null @@ -1,55 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - Based on work contributed by Ulrich Drepper , 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include -#include - -#include -#include - -#include - -static ssize_t -do_preadv (int fd, const struct iovec *vector, int count, off_t offset) -{ - assert (sizeof (offset) == 4); - return INLINE_SYSCALL (preadv, __ALIGNMENT_COUNT (5, 6), fd, - vector, count, __ALIGNMENT_ARG - __LONG_LONG_PAIR (offset >> 31, offset)); -} - -ssize_t -__libc_preadv (int fd, const struct iovec *vector, int count, off_t offset) -{ - if (SINGLE_THREAD_P) - return do_preadv (fd, vector, count, offset); - - int oldtype = LIBC_CANCEL_ASYNC (); - - ssize_t result = do_preadv (fd, vector, count, offset); - - LIBC_CANCEL_RESET (oldtype); - - return result; -} -strong_alias (__libc_preadv, __preadv) -weak_alias (__libc_preadv, preadv) diff --git a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/preadv64.c b/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/preadv64.c deleted file mode 100644 index 32cc314047..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/preadv64.c +++ /dev/null @@ -1,56 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - Based on work contributed by Ulrich Drepper , 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include - -#include -#include - -#include - -static ssize_t -do_preadv64 (int fd, const struct iovec *vector, int count, off64_t offset) -{ - return INLINE_SYSCALL (preadv, __ALIGNMENT_COUNT (5, 6), fd, - vector, count, __ALIGNMENT_ARG - __LONG_LONG_PAIR ((off_t) (offset >> 32), - (off_t) (offset & 0xffffffff))); -} - - -ssize_t -__libc_preadv64 (int fd, const struct iovec *vector, int count, off64_t offset) -{ - if (SINGLE_THREAD_P) - return do_preadv64 (fd, vector, count, offset); - - int oldtype = LIBC_CANCEL_ASYNC (); - - ssize_t result = do_preadv64 (fd, vector, count, offset); - - LIBC_CANCEL_RESET (oldtype); - - return result; -} - -strong_alias (__libc_preadv64, __preadv64) -weak_alias (__libc_preadv64, preadv64) diff --git a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite.c b/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite.c deleted file mode 100644 index 909255bb7e..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite.c +++ /dev/null @@ -1,59 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - Based on work contributed by Ulrich Drepper , 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include - -#include -#include - -#include - -static ssize_t -do_pwrite (int fd, const void *buf, size_t count, off_t offset) -{ - assert (sizeof (offset) == 4); - return INLINE_SYSCALL (pwrite64, __ALIGNMENT_COUNT (5, 6), fd, - buf, count, __ALIGNMENT_ARG - __LONG_LONG_PAIR (offset >> 31, offset)); -} - - -ssize_t -__libc_pwrite (fd, buf, count, offset) - int fd; - const void *buf; - size_t count; - off_t offset; -{ - if (SINGLE_THREAD_P) - return do_pwrite (fd, buf, count, offset); - - int oldtype = LIBC_CANCEL_ASYNC (); - - ssize_t result = do_pwrite (fd, buf, count, offset); - - LIBC_CANCEL_RESET (oldtype); - - return result; -} -strong_alias (__libc_pwrite, __pwrite) -weak_alias (__libc_pwrite, pwrite) diff --git a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite64.c b/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite64.c deleted file mode 100644 index cbdb9e9a4e..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite64.c +++ /dev/null @@ -1,59 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - Based on work contributed by Ulrich Drepper , 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include - -#include -#include - -#include - -static ssize_t -do_pwrite64 (int fd, const void *buf, size_t count, off64_t offset) -{ - return INLINE_SYSCALL (pwrite64, __ALIGNMENT_COUNT (5, 6), fd, - buf, count, __ALIGNMENT_ARG - __LONG_LONG_PAIR ((off_t) (offset >> 32), - (off_t) (offset & 0xffffffff))); -} - - -ssize_t -__libc_pwrite64 (fd, buf, count, offset) - int fd; - const void *buf; - size_t count; - off64_t offset; -{ - if (SINGLE_THREAD_P) - return do_pwrite64 (fd, buf, count, offset); - - int oldtype = LIBC_CANCEL_ASYNC (); - - ssize_t result = do_pwrite64 (fd, buf, count, offset); - - LIBC_CANCEL_RESET (oldtype); - - return result; -} - -weak_alias (__libc_pwrite64, __pwrite64) -libc_hidden_weak (__pwrite64) weak_alias (__libc_pwrite64, pwrite64) diff --git a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/pwritev.c b/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/pwritev.c deleted file mode 100644 index a166e32c3f..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/pwritev.c +++ /dev/null @@ -1,56 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - Based on work contributed by Ulrich Drepper , 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include -#include - -#include -#include - -#include - -static ssize_t -do_pwritev (int fd, const struct iovec *vector, int count, off_t offset) -{ - assert (sizeof (offset) == 4); - return INLINE_SYSCALL (pwritev, __ALIGNMENT_COUNT (5, 6), fd, - vector, count, __ALIGNMENT_ARG - __LONG_LONG_PAIR (offset >> 31, offset)); -} - - -ssize_t -__libc_pwritev (int fd, const struct iovec *vector, int count, off_t offset) -{ - if (SINGLE_THREAD_P) - return do_pwritev (fd, vector, count, offset); - - int oldtype = LIBC_CANCEL_ASYNC (); - - ssize_t result = do_pwritev (fd, vector, count, offset); - - LIBC_CANCEL_RESET (oldtype); - - return result; -} -strong_alias (__libc_pwritev, __pwritev) -weak_alias (__libc_pwritev, pwritev) diff --git a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/pwritev64.c b/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/pwritev64.c deleted file mode 100644 index 33f4e80e66..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/pwritev64.c +++ /dev/null @@ -1,57 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - Based on work contributed by Ulrich Drepper , 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include - -#include -#include - -#include - -static ssize_t -do_pwritev64 (int fd, const struct iovec *vector, int count, off64_t offset) -{ - return INLINE_SYSCALL (pwritev, __ALIGNMENT_COUNT (5, 6), fd, - vector, count, __ALIGNMENT_ARG - __LONG_LONG_PAIR ((off_t) (offset >> 32), - (off_t) (offset & 0xffffffff))); -} - - -ssize_t -__libc_pwritev64 (int fd, const struct iovec *vector, int count, - off64_t offset) -{ - if (SINGLE_THREAD_P) - return do_pwritev64 (fd, vector, count, offset); - - int oldtype = LIBC_CANCEL_ASYNC (); - - ssize_t result = do_pwritev64 (fd, vector, count, offset); - - LIBC_CANCEL_RESET (oldtype); - - return result; -} - -strong_alias (__libc_pwritev64, pwritev64) -weak_alias (__libc_pwritev64, __pwritev64) diff --git a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/sendfile.c b/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/sendfile.c deleted file mode 100644 index c35e54a511..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/sendfile.c +++ /dev/null @@ -1,45 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include - -/* Send COUNT bytes from file associated with IN_FD starting at OFFSET to - descriptor OUT_FD. */ -ssize_t -sendfile (int out_fd, int in_fd, off_t *offset, size_t count) -{ - __off64_t off64; - int rc; - - if (offset != NULL) - { - if (*offset < 0 || (off_t) (*offset + count) < 0) - { - __set_errno (EINVAL); - return -1; - } - off64 = *offset; - } - - rc = INLINE_SYSCALL (sendfile64, 4, out_fd, in_fd, - offset ? &off64 : NULL, count); - if (offset) - *offset = off64; - return rc; -} diff --git a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/statfs.c b/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/statfs.c deleted file mode 100644 index 7987457e8e..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/statfs.c +++ /dev/null @@ -1,33 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include - -#include "overflow.h" - -/* Return information about the filesystem on which FILE resides. */ -int -__statfs (const char *file, struct statfs *buf) -{ - int rc = INLINE_SYSCALL (statfs64, 3, file, sizeof (*buf), buf); - return rc ?: statfs_overflow (buf); -} -libc_hidden_def (__statfs) -weak_alias (__statfs, statfs) diff --git a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/syscalls.list b/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/syscalls.list deleted file mode 100644 index f055c68519..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/syscalls.list +++ /dev/null @@ -1,7 +0,0 @@ -# File name Caller Syscall name # args Strong name Weak names - -# rlimit APIs -getrlimit - getrlimit i:ip __getrlimit getrlimit -setrlimit - setrlimit i:ip __setrlimit setrlimit -prlimit64 EXTRA prlimit64 i:iipp prlimit64 -fanotify_mark EXTRA fanotify_mark i:iiiiis fanotify_mark diff --git a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/truncate.c b/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/truncate.c deleted file mode 100644 index fb31d1499c..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/truncate.c +++ /dev/null @@ -1,31 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include - -/* Truncate PATH to LENGTH bytes. */ -int -__truncate (const char *path, off_t length) -{ - return INLINE_SYSCALL (truncate64, __ALIGNMENT_COUNT (3, 4), path, - __ALIGNMENT_ARG - __LONG_LONG_PAIR (length >> 31, length)); -} -weak_alias (__truncate, truncate) diff --git a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/truncate64.c b/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/truncate64.c deleted file mode 100644 index ff19d61559..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/truncate64.c +++ /dev/null @@ -1,31 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include - -/* Truncate the file PATH to LENGTH bytes. */ -int -truncate64 (const char *path, off64_t length) -{ - unsigned int low = length & 0xffffffff; - unsigned int high = length >> 32; - return INLINE_SYSCALL (truncate64, __ALIGNMENT_COUNT (3, 4), path, - __ALIGNMENT_ARG __LONG_LONG_PAIR (high, low)); -} diff --git a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/xstat.c b/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/xstat.c deleted file mode 100644 index e9ca7aed16..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/xstat.c +++ /dev/null @@ -1,43 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include -#include - -#include -#include - -#include "overflow.h" - -/* Get information about the file NAME in BUF. */ -int -__xstat (int vers, const char *name, struct stat *buf) -{ - if (vers == _STAT_VER_KERNEL) - { - int rc = INLINE_SYSCALL (fstatat64, 4, AT_FDCWD, name, buf, 0); - return rc ?: stat_overflow (buf); - } - - errno = EINVAL; - return -1; -} -hidden_def (__xstat) diff --git a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/xstat64.c b/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/xstat64.c deleted file mode 100644 index 09862228db..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/wordsize-32/xstat64.c +++ /dev/null @@ -1,38 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include -#include - -#include -#include - -/* Get information about the file NAME in BUF. */ -int -__xstat64 (int vers, const char *name, struct stat64 *buf) -{ - if (vers == _STAT_VER_KERNEL) - return INLINE_SYSCALL (fstatat64, 4, AT_FDCWD, name, buf, 0); - - errno = EINVAL; - return -1; -} -hidden_def (__xstat64) diff --git a/ports/sysdeps/unix/sysv/linux/generic/xmknod.c b/ports/sysdeps/unix/sysv/linux/generic/xmknod.c deleted file mode 100644 index e08bb0ecea..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/xmknod.c +++ /dev/null @@ -1,54 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include -#include - -#include -#include - -/* Create a device file named PATH, with permission and special bits MODE - and device number DEV (which can be constructed from major and minor - device numbers with the `makedev' macro above). */ -int -__xmknod (int vers, const char *path, mode_t mode, dev_t *dev) -{ - unsigned long long int k_dev; - - if (vers != _MKNOD_VER) - { - __set_errno (EINVAL); - return -1; - } - - /* We must convert the value to dev_t type used by the kernel. */ - k_dev = (*dev) & ((1ULL << 32) - 1); - if (k_dev != *dev) - { - __set_errno (EINVAL); - return -1; - } - - return INLINE_SYSCALL (mknodat, 4, AT_FDCWD, path, mode, - (unsigned int) k_dev); -} -weak_alias (__xmknod, _xmknod) -libc_hidden_def (__xmknod) diff --git a/ports/sysdeps/unix/sysv/linux/generic/xstat.c b/ports/sysdeps/unix/sysv/linux/generic/xstat.c deleted file mode 100644 index 7e37e9c6e5..0000000000 --- a/ports/sysdeps/unix/sysv/linux/generic/xstat.c +++ /dev/null @@ -1,48 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -/* Ignore prototype to avoid error if we alias __xstat and __xstat64. */ -#define __xstat64 __xstat64_disable - -#include -#include -#include -#include -#include - -#include -#include - -/* Get information about the file NAME in BUF. */ -int -__xstat (int vers, const char *name, struct stat *buf) -{ - if (vers == _STAT_VER_KERNEL) - return INLINE_SYSCALL (newfstatat, 4, AT_FDCWD, name, buf, 0); - - errno = EINVAL; - return -1; -} - -hidden_def (__xstat) -weak_alias (__xstat, _xstat); -#ifdef XSTAT_IS_XSTAT64 -#undef __xstat64 -strong_alias (__xstat, __xstat64); -hidden_ver (__xstat, __xstat64) -#endif diff --git a/ports/sysdeps/unix/sysv/linux/tile/Makefile b/ports/sysdeps/unix/sysv/linux/tile/Makefile deleted file mode 100644 index 0bcb95f63a..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/Makefile +++ /dev/null @@ -1,25 +0,0 @@ -ifeq ($(subdir),misc) - -# provides something like x86 compatibility. -# New code should probably use instead. -sysdep_headers += sys/reg.h - -# MIPS-style cacheflush routine -sysdep_headers += sys/cachectl.h -sysdep_routines += cacheflush - -# Control dataplane properties of current thread. -sysdep_headers += sys/dataplane.h -sysdep_routines += set_dataplane - -endif - -ifeq ($(subdir),elf) -sysdep_routines += dl-vdso -ifeq ($(build-shared),yes) -# This is needed for DSO loading from static binaries. -sysdep-dl-routines += dl-static -sysdep_routines += dl-static -sysdep-rtld-routines += dl-static -endif -endif diff --git a/ports/sysdeps/unix/sysv/linux/tile/Versions b/ports/sysdeps/unix/sysv/linux/tile/Versions deleted file mode 100644 index 9b40d2839f..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/Versions +++ /dev/null @@ -1,17 +0,0 @@ -ld { - GLIBC_PRIVATE { - # used for loading by static libraries - _dl_var_init; - } -} -libc { - GLIBC_2.12 { - _flush_cache; - cacheflush; - fallocate64; - set_dataplane; - } - GLIBC_PRIVATE { - __syscall_error; - } -} diff --git a/ports/sysdeps/unix/sysv/linux/tile/bits/environments.h b/ports/sysdeps/unix/sysv/linux/tile/bits/environments.h deleted file mode 100644 index d7003aa92e..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/bits/environments.h +++ /dev/null @@ -1,100 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#ifndef _UNISTD_H -# error "Never include this file directly. Use instead" -#endif - -#include - -/* This header should define the following symbols under the described - situations. A value `1' means that the model is always supported, - `-1' means it is never supported. Undefined means it cannot be - statically decided. - - _POSIX_V7_ILP32_OFF32 32bit int, long, pointers, and off_t type - _POSIX_V7_ILP32_OFFBIG 32bit int, long, and pointers and larger off_t type - - _POSIX_V7_LP64_OFF32 64bit long and pointers and 32bit off_t type - _POSIX_V7_LPBIG_OFFBIG 64bit long and pointers and large off_t type - - The macros _POSIX_V6_ILP32_OFF32, _POSIX_V6_ILP32_OFFBIG, - _POSIX_V6_LP64_OFF32, _POSIX_V6_LPBIG_OFFBIG, _XBS5_ILP32_OFF32, - _XBS5_ILP32_OFFBIG, _XBS5_LP64_OFF32, and _XBS5_LPBIG_OFFBIG were - used in previous versions of the Unix standard and are available - only for compatibility. -*/ - -#if __WORDSIZE == 64 - -/* Environments with 32-bit wide pointers are optionally provided. - Therefore following macros aren't defined: - # undef _POSIX_V7_ILP32_OFF32 - # undef _POSIX_V7_ILP32_OFFBIG - # undef _POSIX_V6_ILP32_OFF32 - # undef _POSIX_V6_ILP32_OFFBIG - # undef _XBS5_ILP32_OFF32 - # undef _XBS5_ILP32_OFFBIG - and users need to check at runtime. */ - -/* We also have no use (for now) for an environment with bigger pointers - and offsets. */ -# define _POSIX_V7_LPBIG_OFFBIG -1 -# define _POSIX_V6_LPBIG_OFFBIG -1 -# define _XBS5_LPBIG_OFFBIG -1 - -/* By default we have 64-bit wide `long int', pointers and `off_t'. */ -# define _POSIX_V7_LP64_OFF64 1 -# define _POSIX_V6_LP64_OFF64 1 -# define _XBS5_LP64_OFF64 1 - -#else /* __WORDSIZE == 32 */ - -/* By default we have 32-bit wide `int', `long int', pointers and `off_t' - and all platforms support LFS. */ -# define _POSIX_V7_ILP32_OFF32 1 -# define _POSIX_V7_ILP32_OFFBIG 1 -# define _POSIX_V6_ILP32_OFF32 1 -# define _POSIX_V6_ILP32_OFFBIG 1 -# define _XBS5_ILP32_OFF32 1 -# define _XBS5_ILP32_OFFBIG 1 - -/* We optionally provide an environment with the above size but an 64-bit - side `off_t'. Therefore we don't define _POSIX_V7_ILP32_OFFBIG. */ - -/* Environments with 64-bit wide pointers can be provided, - so these macros aren't defined: - # undef _POSIX_V7_LP64_OFF64 - # undef _POSIX_V7_LPBIG_OFFBIG - # undef _POSIX_V6_LP64_OFF64 - # undef _POSIX_V6_LPBIG_OFFBIG - # undef _XBS5_LP64_OFF64 - # undef _XBS5_LPBIG_OFFBIG - and sysconf tests for it at runtime. */ - -#endif /* __WORDSIZE == 32 */ - -#ifdef __tilegx__ -/* Only TILE-Gx has the ability to choose 32- or 64-bit. */ -#define __ILP32_OFF32_CFLAGS "-m32" -#define __ILP32_OFFBIG_CFLAGS "-m32 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" -#define __ILP32_OFF32_LDFLAGS "-m32" -#define __ILP32_OFFBIG_LDFLAGS "-m32" -#define __LP64_OFF64_CFLAGS "-m64" -#define __LP64_OFF64_LDFLAGS "-m64" -#endif diff --git a/ports/sysdeps/unix/sysv/linux/tile/bits/libc-vdso.h b/ports/sysdeps/unix/sysv/linux/tile/bits/libc-vdso.h deleted file mode 100644 index c4aec16d19..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/bits/libc-vdso.h +++ /dev/null @@ -1,30 +0,0 @@ -/* Resolve function pointers to VDSO functions. - Copyright (C) 2012-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - - -#ifndef _LIBC_VDSO_H -#define _LIBC_VDSO_H - -#ifdef SHARED - -extern long int (*__vdso_gettimeofday) (struct timeval *, void *) - attribute_hidden; - -#endif - -#endif /* _LIBC_VDSO_H */ diff --git a/ports/sysdeps/unix/sysv/linux/tile/bits/local_lim.h b/ports/sysdeps/unix/sysv/linux/tile/bits/local_lim.h deleted file mode 100644 index 4e5605fd52..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/bits/local_lim.h +++ /dev/null @@ -1,100 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -/* The kernel header pollutes the namespace with the NR_OPEN symbol - and defines LINK_MAX although filesystems have different maxima. A - similar thing is true for OPEN_MAX: the limit can be changed at - runtime and therefore the macro must not be defined. Remove this - after including the header if necessary. */ -#ifndef NR_OPEN -# define __undef_NR_OPEN -#endif -#ifndef LINK_MAX -# define __undef_LINK_MAX -#endif -#ifndef OPEN_MAX -# define __undef_OPEN_MAX -#endif -#ifndef ARG_MAX -# define __undef_ARG_MAX -#endif - -/* The kernel sources contain a file with all the needed information. */ -#include - -/* Have to remove NR_OPEN? */ -#ifdef __undef_NR_OPEN -# undef NR_OPEN -# undef __undef_NR_OPEN -#endif -/* Have to remove LINK_MAX? */ -#ifdef __undef_LINK_MAX -# undef LINK_MAX -# undef __undef_LINK_MAX -#endif -/* Have to remove OPEN_MAX? */ -#ifdef __undef_OPEN_MAX -# undef OPEN_MAX -# undef __undef_OPEN_MAX -#endif -/* Have to remove ARG_MAX? */ -#ifdef __undef_ARG_MAX -# undef ARG_MAX -# undef __undef_ARG_MAX -#endif - -/* The number of data keys per process. */ -#define _POSIX_THREAD_KEYS_MAX 128 -/* This is the value this implementation supports. */ -#define PTHREAD_KEYS_MAX 1024 - -/* Controlling the iterations of destructors for thread-specific data. */ -#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4 -/* Number of iterations this implementation does. */ -#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS - -/* The number of threads per process. */ -#define _POSIX_THREAD_THREADS_MAX 64 -/* We have no predefined limit on the number of threads. */ -#undef PTHREAD_THREADS_MAX - -/* Maximum amount by which a process can descrease its asynchronous I/O - priority level. */ -#define AIO_PRIO_DELTA_MAX 20 - -/* Minimum size for a thread. At least two pages for systems with 64k - pages. */ -#define PTHREAD_STACK_MIN 131072 - -/* Maximum number of timer expiration overruns. */ -#define DELAYTIMER_MAX 2147483647 - -/* Maximum tty name length. */ -#define TTY_NAME_MAX 32 - -/* Maximum login name length. This is arbitrary. */ -#define LOGIN_NAME_MAX 256 - -/* Maximum host name length. */ -#define HOST_NAME_MAX 64 - -/* Maximum message queue priority level. */ -#define MQ_PRIO_MAX 32768 - -/* Maximum value the semaphore can have. */ -#define SEM_VALUE_MAX (2147483647) diff --git a/ports/sysdeps/unix/sysv/linux/tile/bits/mman.h b/ports/sysdeps/unix/sysv/linux/tile/bits/mman.h deleted file mode 100644 index f97f275e85..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/bits/mman.h +++ /dev/null @@ -1,40 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#ifndef _SYS_MMAN_H -# error "Never use directly; include instead." -#endif - -/* The following definitions basically come from the kernel headers. - But the kernel header is not namespace clean. */ - -#ifdef __USE_MISC -/* These are Linux-specific. */ -# define MAP_NONBLOCK 0x00080 /* Do not block on IO. */ -# define MAP_GROWSDOWN 0x00100 /* Stack-like segment. */ -# define MAP_STACK MAP_GROWSDOWN /* Provide convenience alias. */ -# define MAP_LOCKED 0x00200 /* Lock the mapping. */ -# define MAP_NORESERVE 0x00400 /* Don't check for reservations. */ -# define MAP_DENYWRITE 0x00800 /* ETXTBSY */ -# define MAP_EXECUTABLE 0x01000 /* Mark it as an executable. */ -# define MAP_POPULATE 0x00040 /* Populate (prefault) pagetables. */ -# define MAP_HUGETLB 0x04000 /* Create huge page mapping. */ -#endif - -/* Include generic Linux declarations. */ -#include diff --git a/ports/sysdeps/unix/sysv/linux/tile/bits/sigaction.h b/ports/sysdeps/unix/sysv/linux/tile/bits/sigaction.h deleted file mode 100644 index 76a6aae158..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/bits/sigaction.h +++ /dev/null @@ -1,77 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#ifndef _SIGNAL_H -# error "Never include directly; use instead." -#endif - -/* Structure describing the action to be taken when a signal arrives. */ -struct sigaction - { - /* Signal handler. */ -#ifdef __USE_POSIX199309 - union - { - /* Used if SA_SIGINFO is not set. */ - __sighandler_t sa_handler; - /* Used if SA_SIGINFO is set. */ - void (*sa_sigaction) (int, siginfo_t *, void *); - } - __sigaction_handler; -# define sa_handler __sigaction_handler.sa_handler -# define sa_sigaction __sigaction_handler.sa_sigaction -#else - __sighandler_t sa_handler; -#endif - - /* Additional set of signals to be blocked. */ - __sigset_t sa_mask; - - /* Special flags. */ - int sa_flags; - - /* Restore handler. */ - void (*sa_restorer) (void); - }; - -/* Bits in `sa_flags'. */ -#define SA_NOCLDSTOP 1 /* Don't send SIGCHLD when children stop. */ -#define SA_NOCLDWAIT 2 /* Don't create zombie on child death. */ -#define SA_SIGINFO 4 /* Invoke signal-catching function with - three arguments instead of one. */ -#if defined __USE_UNIX98 || defined __USE_MISC -# define SA_NOPTRACE 0x02000000 /* Don't ptrace this signal. */ -# define SA_ONSTACK 0x08000000 /* Use signal stack by using `sa_restorer'. */ -# define SA_RESTART 0x10000000 /* Restart syscall on signal return. */ -# define SA_NODEFER 0x40000000 /* Don't automatically block the signal when - its handler is being executed. */ -# define SA_RESETHAND 0x80000000 /* Reset to SIG_DFL on entry to handler. */ -#endif -#ifdef __USE_MISC -# define SA_INTERRUPT 0x20000000 /* Historical no-op. */ - -/* Some aliases for the SA_ constants. */ -# define SA_NOMASK SA_NODEFER -# define SA_ONESHOT SA_RESETHAND -# define SA_STACK SA_ONSTACK -#endif - -/* Values for the HOW argument to `sigprocmask'. */ -#define SIG_BLOCK 0 /* Block signals. */ -#define SIG_UNBLOCK 1 /* Unblock signals. */ -#define SIG_SETMASK 2 /* Set the set of blocked signals. */ diff --git a/ports/sysdeps/unix/sysv/linux/tile/bits/siginfo.h b/ports/sysdeps/unix/sysv/linux/tile/bits/siginfo.h deleted file mode 100644 index 089edb2e86..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/bits/siginfo.h +++ /dev/null @@ -1,341 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#if !defined _SIGNAL_H && !defined __need_siginfo_t \ - && !defined __need_sigevent_t -# error "Never include this file directly. Use instead" -#endif - -#include - -#if (!defined __have_sigval_t \ - && (defined _SIGNAL_H || defined __need_siginfo_t \ - || defined __need_sigevent_t)) -# define __have_sigval_t 1 - -/* Type for data associated with a signal. */ -typedef union sigval - { - int sival_int; - void *sival_ptr; - } sigval_t; -#endif - -#if (!defined __have_siginfo_t \ - && (defined _SIGNAL_H || defined __need_siginfo_t)) -# define __have_siginfo_t 1 - -# define __SI_MAX_SIZE 128 -# if __WORDSIZE == 64 -# define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 4) -# else -# define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 3) -# endif - -typedef struct - { - int si_signo; /* Signal number. */ - int si_errno; /* If non-zero, an errno value associated with - this signal, as defined in . */ - int si_code; /* Signal code. */ - - union - { - int _pad[__SI_PAD_SIZE]; - - /* kill(). */ - struct - { - __pid_t si_pid; /* Sending process ID. */ - __uid_t si_uid; /* Real user ID of sending process. */ - } _kill; - - /* POSIX.1b timers. */ - struct - { - int si_tid; /* Timer ID. */ - int si_overrun; /* Overrun count. */ - sigval_t si_sigval; /* Signal value. */ - } _timer; - - /* POSIX.1b signals. */ - struct - { - __pid_t si_pid; /* Sending process ID. */ - __uid_t si_uid; /* Real user ID of sending process. */ - sigval_t si_sigval; /* Signal value. */ - } _rt; - - /* SIGCHLD. */ - struct - { - __pid_t si_pid; /* Which child. */ - __uid_t si_uid; /* Real user ID of sending process. */ - int si_status; /* Exit value or signal. */ - __clock_t si_utime; - __clock_t si_stime; - } _sigchld; - - /* SIGILL, SIGFPE, SIGSEGV, SIGBUS. */ - struct - { - void *si_addr; /* Faulting insn/memory ref. */ - int si_trapno; /* TRAP # which caused the signal. */ - short int si_addr_lsb; /* Valid LSB of the reported address. */ - } _sigfault; - - /* SIGPOLL. */ - struct - { - long int si_band; /* Band event for SIGPOLL. */ - int si_fd; - } _sigpoll; - - /* SIGSYS. */ - struct - { - void *_call_addr; /* Calling user insn. */ - int _syscall; /* Triggering system call number. */ - unsigned int _arch; /* AUDIT_ARCH_* of syscall. */ - } _sigsys; - } _sifields; - } siginfo_t; - - -/* X/Open requires some more fields with fixed names. */ -# define si_pid _sifields._kill.si_pid -# define si_uid _sifields._kill.si_uid -# define si_timerid _sifields._timer.si_tid -# define si_overrun _sifields._timer.si_overrun -# define si_status _sifields._sigchld.si_status -# define si_utime _sifields._sigchld.si_utime -# define si_stime _sifields._sigchld.si_stime -# define si_value _sifields._rt.si_sigval -# define si_int _sifields._rt.si_sigval.sival_int -# define si_ptr _sifields._rt.si_sigval.sival_ptr -# define si_addr _sifields._sigfault.si_addr -# define si_trapno _sifields._sigfault.si_trapno -# define si_addr_lsb _sifields._sigfault.si_addr_lsb -# define si_band _sifields._sigpoll.si_band -# define si_fd _sifields._sigpoll.si_fd -# define si_call_addr _sifields._sigsys._call_addr -# define si_syscall _sifields._sigsys._syscall -# define si_arch _sifields._sigsys._arch - - -/* Values for `si_code'. Positive values are reserved for kernel-generated - signals. */ -enum -{ - SI_ASYNCNL = -60, /* Sent by asynch name lookup completion. */ -# define SI_ASYNCNL SI_ASYNCNL - SI_TKILL = -6, /* Sent by tkill. */ -# define SI_TKILL SI_TKILL - SI_SIGIO, /* Sent by queued SIGIO. */ -# define SI_SIGIO SI_SIGIO - SI_ASYNCIO, /* Sent by AIO completion. */ -# define SI_ASYNCIO SI_ASYNCIO - SI_MESGQ, /* Sent by real time mesq state change. */ -# define SI_MESGQ SI_MESGQ - SI_TIMER, /* Sent by timer expiration. */ -# define SI_TIMER SI_TIMER - SI_QUEUE, /* Sent by sigqueue. */ -# define SI_QUEUE SI_QUEUE - SI_USER, /* Sent by kill, sigsend, raise. */ -# define SI_USER SI_USER - SI_KERNEL = 0x80 /* Send by kernel. */ -#define SI_KERNEL SI_KERNEL -}; - - -/* `si_code' values for SIGILL signal. */ -enum -{ - ILL_ILLOPC = 1, /* Illegal opcode. */ -# define ILL_ILLOPC ILL_ILLOPC - ILL_ILLOPN, /* Illegal operand. */ -# define ILL_ILLOPN ILL_ILLOPN - ILL_ILLADR, /* Illegal addressing mode. */ -# define ILL_ILLADR ILL_ILLADR - ILL_ILLTRP, /* Illegal trap. */ -# define ILL_ILLTRP ILL_ILLTRP - ILL_PRVOPC, /* Privileged opcode. */ -# define ILL_PRVOPC ILL_PRVOPC - ILL_PRVREG, /* Privileged register. */ -# define ILL_PRVREG ILL_PRVREG - ILL_COPROC, /* Coprocessor error. */ -# define ILL_COPROC ILL_COPROC - ILL_BADSTK, /* Internal stack error. */ -# define ILL_BADSTK ILL_BADSTK - ILL_DBLFLT, /* Double fault. */ -# define ILL_DBLFLT ILL_DBLFLT - ILL_HARDWALL /* User networks hardwall violation. */ -# define ILL_HARDWALL ILL_HARDWALL -}; - -/* `si_code' values for SIGFPE signal. */ -enum -{ - FPE_INTDIV = 1, /* Integer divide by zero. */ -# define FPE_INTDIV FPE_INTDIV - FPE_INTOVF, /* Integer overflow. */ -# define FPE_INTOVF FPE_INTOVF - FPE_FLTDIV, /* Floating point divide by zero. */ -# define FPE_FLTDIV FPE_FLTDIV - FPE_FLTOVF, /* Floating point overflow. */ -# define FPE_FLTOVF FPE_FLTOVF - FPE_FLTUND, /* Floating point underflow. */ -# define FPE_FLTUND FPE_FLTUND - FPE_FLTRES, /* Floating point inexact result. */ -# define FPE_FLTRES FPE_FLTRES - FPE_FLTINV, /* Floating point invalid operation. */ -# define FPE_FLTINV FPE_FLTINV - FPE_FLTSUB /* Subscript out of range. */ -# define FPE_FLTSUB FPE_FLTSUB -}; - -/* `si_code' values for SIGSEGV signal. */ -enum -{ - SEGV_MAPERR = 1, /* Address not mapped to object. */ -# define SEGV_MAPERR SEGV_MAPERR - SEGV_ACCERR /* Invalid permissions for mapped object. */ -# define SEGV_ACCERR SEGV_ACCERR -}; - -/* `si_code' values for SIGBUS signal. */ -enum -{ - BUS_ADRALN = 1, /* Invalid address alignment. */ -# define BUS_ADRALN BUS_ADRALN - BUS_ADRERR, /* Non-existant physical address. */ -# define BUS_ADRERR BUS_ADRERR - BUS_OBJERR, /* Object specific hardware error. */ -# define BUS_OBJERR BUS_OBJERR - BUS_MCEERR_AR, /* Hardware memory error: action required. */ -# define BUS_MCEERR_AR BUS_MCEERR_AR - BUS_MCEERR_AO /* Hardware memory error: action optional. */ -# define BUS_MCEERR_AO BUS_MCEERR_AO -}; - -/* `si_code' values for SIGTRAP signal. */ -enum -{ - TRAP_BRKPT = 1, /* Process breakpoint. */ -# define TRAP_BRKPT TRAP_BRKPT - TRAP_TRACE /* Process trace trap. */ -# define TRAP_TRACE TRAP_TRACE -}; - -/* `si_code' values for SIGCHLD signal. */ -enum -{ - CLD_EXITED = 1, /* Child has exited. */ -# define CLD_EXITED CLD_EXITED - CLD_KILLED, /* Child was killed. */ -# define CLD_KILLED CLD_KILLED - CLD_DUMPED, /* Child terminated abnormally. */ -# define CLD_DUMPED CLD_DUMPED - CLD_TRAPPED, /* Traced child has trapped. */ -# define CLD_TRAPPED CLD_TRAPPED - CLD_STOPPED, /* Child has stopped. */ -# define CLD_STOPPED CLD_STOPPED - CLD_CONTINUED /* Stopped child has continued. */ -# define CLD_CONTINUED CLD_CONTINUED -}; - -/* `si_code' values for SIGPOLL signal. */ -enum -{ - POLL_IN = 1, /* Data input available. */ -# define POLL_IN POLL_IN - POLL_OUT, /* Output buffers available. */ -# define POLL_OUT POLL_OUT - POLL_MSG, /* Input message available. */ -# define POLL_MSG POLL_MSG - POLL_ERR, /* I/O error. */ -# define POLL_ERR POLL_ERR - POLL_PRI, /* High priority input available. */ -# define POLL_PRI POLL_PRI - POLL_HUP /* Device disconnected. */ -# define POLL_HUP POLL_HUP -}; - -# undef __need_siginfo_t -#endif /* !have siginfo_t && (have _SIGNAL_H || need siginfo_t). */ - - -#if (defined _SIGNAL_H || defined __need_sigevent_t) \ - && !defined __have_sigevent_t -# define __have_sigevent_t 1 - -/* Structure to transport application-defined values with signals. */ -# define __SIGEV_MAX_SIZE 64 -# if __WORDSIZE == 64 -# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4) -# else -# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3) -# endif - -/* Forward declaration. */ -# ifndef __have_pthread_attr_t -typedef union pthread_attr_t pthread_attr_t; -# define __have_pthread_attr_t 1 -# endif - -typedef struct sigevent - { - sigval_t sigev_value; - int sigev_signo; - int sigev_notify; - - union - { - int _pad[__SIGEV_PAD_SIZE]; - - /* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the - thread to receive the signal. */ - __pid_t _tid; - - struct - { - void (*_function) (sigval_t); /* Function to start. */ - pthread_attr_t *_attribute; /* Thread attributes. */ - } _sigev_thread; - } _sigev_un; - } sigevent_t; - -/* POSIX names to access some of the members. */ -# define sigev_notify_function _sigev_un._sigev_thread._function -# define sigev_notify_attributes _sigev_un._sigev_thread._attribute - -/* `sigev_notify' values. */ -enum -{ - SIGEV_SIGNAL = 0, /* Notify via signal. */ -# define SIGEV_SIGNAL SIGEV_SIGNAL - SIGEV_NONE, /* Other notification: meaningless. */ -# define SIGEV_NONE SIGEV_NONE - SIGEV_THREAD, /* Deliver via thread creation. */ -# define SIGEV_THREAD SIGEV_THREAD - - SIGEV_THREAD_ID = 4 /* Send signal to specific thread. */ -#define SIGEV_THREAD_ID SIGEV_THREAD_ID -}; - -#endif /* have _SIGNAL_H. */ diff --git a/ports/sysdeps/unix/sysv/linux/tile/cacheflush.c b/ports/sysdeps/unix/sysv/linux/tile/cacheflush.c deleted file mode 100644 index fcf725cb3d..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/cacheflush.c +++ /dev/null @@ -1,34 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include - -/* Flush cache(s). */ -int -_flush_cache (char *addr, const int nbytes, const int op) -{ -#ifdef __NR_cacheflush - return INLINE_SYSCALL (cacheflush, 3, addr, nbytes, op); -#else - __set_errno (ENOSYS); - return -1; -#endif -} -weak_alias (_flush_cache, cacheflush) diff --git a/ports/sysdeps/unix/sysv/linux/tile/configure b/ports/sysdeps/unix/sysv/linux/tile/configure deleted file mode 100644 index 02f6c8c25d..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/configure +++ /dev/null @@ -1,4 +0,0 @@ -# This file is generated from configure.ac by Autoconf. DO NOT EDIT! - # Local configure fragment for sysdeps/unix/sysv/linux/tile. - -arch_minimum_kernel=2.6.32 diff --git a/ports/sysdeps/unix/sysv/linux/tile/configure.ac b/ports/sysdeps/unix/sysv/linux/tile/configure.ac deleted file mode 100644 index b983e28be6..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/configure.ac +++ /dev/null @@ -1,4 +0,0 @@ -GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. -# Local configure fragment for sysdeps/unix/sysv/linux/tile. - -arch_minimum_kernel=2.6.32 diff --git a/ports/sysdeps/unix/sysv/linux/tile/dl-static.c b/ports/sysdeps/unix/sysv/linux/tile/dl-static.c deleted file mode 100644 index 8a749f23d9..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/dl-static.c +++ /dev/null @@ -1,84 +0,0 @@ -/* Variable initialization. Tile version. - Copyright (C) 2001-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include - -#ifdef SHARED - -void -_dl_var_init (void *array[]) -{ - /* It has to match "variables" below. */ - enum - { - DL_PAGESIZE = 0 - }; - - GLRO(dl_pagesize) = *((size_t *) array[DL_PAGESIZE]); -} - -#else - -static void *variables[] = -{ - &GLRO(dl_pagesize) -}; - -static void -_dl_unprotect_relro (struct link_map *l) -{ - ElfW(Addr) start = ((l->l_addr + l->l_relro_addr) - & ~(GLRO(dl_pagesize) - 1)); - ElfW(Addr) end = ((l->l_addr + l->l_relro_addr + l->l_relro_size) - & ~(GLRO(dl_pagesize) - 1)); - - if (start != end) - __mprotect ((void *) start, end - start, PROT_READ | PROT_WRITE); -} - -void -_dl_static_init (struct link_map *l) -{ - struct link_map *rtld_map = l; - struct r_scope_elem **scope; - const ElfW(Sym) *ref = NULL; - lookup_t loadbase; - void (*f) (void *[]); - size_t i; - - loadbase = _dl_lookup_symbol_x ("_dl_var_init", l, &ref, l->l_local_scope, - NULL, 0, 1, NULL); - - for (scope = l->l_local_scope; *scope != NULL; scope++) - for (i = 0; i < (*scope)->r_nlist; i++) - if ((*scope)->r_list[i] == loadbase) - { - rtld_map = (*scope)->r_list[i]; - break; - } - - if (ref != NULL) - { - f = (void (*) (void *[])) DL_SYMBOL_ADDRESS (loadbase, ref); - _dl_unprotect_relro (rtld_map); - f (variables); - _dl_protect_relro (rtld_map); - } -} - -#endif diff --git a/ports/sysdeps/unix/sysv/linux/tile/getcontext.S b/ports/sysdeps/unix/sysv/linux/tile/getcontext.S deleted file mode 100644 index dcfb653bdc..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/getcontext.S +++ /dev/null @@ -1,95 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include - -#include "ucontext_i.h" - -/* int getcontext (ucontext_t *ucp) */ - - .text -ENTRY (__getcontext) - FEEDBACK_ENTER(__getcontext) - - /* Save the callee-saved GPRs. There's no need to save the - caller-saved GPRs since the eventual setcontext() or - swapcontext() will assume those registers are all dead. - Save value "1" to uc_flags to later recognize getcontext(). */ - { movei r11, 1; ADDI_PTR r10, r0, UC_FLAGS_OFFSET } - { ST_PTR r10, r11; addli r10, r0, UC_REG(30) } - { ST r10, r30; ADDI_PTR r10, r10, REGSIZE } - { ST r10, r31; ADDI_PTR r10, r10, REGSIZE } - { ST r10, r32; ADDI_PTR r10, r10, REGSIZE } - { ST r10, r33; ADDI_PTR r10, r10, REGSIZE } - { ST r10, r34; ADDI_PTR r10, r10, REGSIZE } - { ST r10, r35; ADDI_PTR r10, r10, REGSIZE } - { ST r10, r36; ADDI_PTR r10, r10, REGSIZE } - { ST r10, r37; ADDI_PTR r10, r10, REGSIZE } - { ST r10, r38; ADDI_PTR r10, r10, REGSIZE } - { ST r10, r39; ADDI_PTR r10, r10, REGSIZE } - { ST r10, r40; ADDI_PTR r10, r10, REGSIZE } - { ST r10, r41; ADDI_PTR r10, r10, REGSIZE } - { ST r10, r42; ADDI_PTR r10, r10, REGSIZE } - { ST r10, r43; ADDI_PTR r10, r10, REGSIZE } - { ST r10, r44; ADDI_PTR r10, r10, REGSIZE } - { ST r10, r45; ADDI_PTR r10, r10, REGSIZE } - { ST r10, r46; ADDI_PTR r10, r10, REGSIZE } - { ST r10, r47; ADDI_PTR r10, r10, REGSIZE } - { ST r10, r48; ADDI_PTR r10, r10, REGSIZE } - { ST r10, r49; ADDI_PTR r10, r10, REGSIZE } - { ST r10, r50; ADDI_PTR r10, r10, REGSIZE } - { ST r10, r51; ADDI_PTR r10, r10, REGSIZE } - { ST r10, r52; ADDI_PTR r10, r10, REGSIZE } - { ST r10, tp; ADDI_PTR r10, r10, REGSIZE } - { ST r10, sp; ADDI_PTR r10, r10, REGSIZE } - { ST r10, lr; ADDI_PTR r10, r10, REGSIZE } - lnk r11 /* Point PC at the "jrp lr" instruction. */ - addli r11, r11, .Lreturn - . - { ST r10, r11; ADDI_PTR r10, r10, REGSIZE } - mfspr r11, INTERRUPT_CRITICAL_SECTION - { - ST r10, r11 - movei r1, 0 - } - - /* rt_sigprocmask (SIG_BLOCK, NULL, &ucp->uc_sigmask, _NSIG / 8) */ - { - movei r3, _NSIG / 8 - addli r2, r0, UC_SIGMASK_OFFSET - } - { - movei r0, SIG_BLOCK - moveli TREG_SYSCALL_NR_NAME, __NR_rt_sigprocmask - } - swint1 - BNEZ r1, .Lsyscall_error - -.Lreturn: - { - movei r0, 0 - jrp lr - } - -.Lsyscall_error: - j SYSCALL_ERROR_NAME - -END (__getcontext) -.hidden __getcontext - -weak_alias (__getcontext, getcontext) diff --git a/ports/sysdeps/unix/sysv/linux/tile/gettimeofday.c b/ports/sysdeps/unix/sysv/linux/tile/gettimeofday.c deleted file mode 100644 index 6f62ab960c..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/gettimeofday.c +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright (C) 2012-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include -#include - -int -__gettimeofday (struct timeval *tv, struct timezone *tz) -{ -#ifdef SHARED - /* If the vDSO is available we use it. */ - if (__vdso_gettimeofday != NULL) - return __vdso_gettimeofday (tv, tz); -#endif - return INLINE_SYSCALL (gettimeofday, 2, tv, tz); -} - -libc_hidden_def (__gettimeofday) -weak_alias (__gettimeofday, gettimeofday) -libc_hidden_weak (gettimeofday) diff --git a/ports/sysdeps/unix/sysv/linux/tile/init-first.c b/ports/sysdeps/unix/sysv/linux/tile/init-first.c deleted file mode 100644 index 9790d223b1..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/init-first.c +++ /dev/null @@ -1,34 +0,0 @@ -/* Copyright (C) 2012-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#ifdef SHARED -#include -#include - -long int (*__vdso_gettimeofday) (struct timeval *, void *) attribute_hidden; - -static inline void -_libc_vdso_platform_setup (void) -{ - PREPARE_VERSION (linux26, "LINUX_2.6", 61765110); - __vdso_gettimeofday = _dl_vdso_vsym ("__vdso_gettimeofday", &linux26); -} - -#define VDSO_SETUP _libc_vdso_platform_setup -#endif - -#include diff --git a/ports/sysdeps/unix/sysv/linux/tile/kernel-features.h b/ports/sysdeps/unix/sysv/linux/tile/kernel-features.h deleted file mode 100644 index 5b811288ee..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/kernel-features.h +++ /dev/null @@ -1,35 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - - -/* TILE glibc support starts with 2.6.36, guaranteeing many kernel features. */ -#define __ASSUME_UTIMES 1 -#define __ASSUME_O_CLOEXEC 1 -#define __ASSUME_SOCK_CLOEXEC 1 -#define __ASSUME_IN_NONBLOCK 1 -#define __ASSUME_PIPE2 1 -#define __ASSUME_EVENTFD2 1 -#define __ASSUME_SIGNALFD4 1 -#define __ASSUME_ACCEPT4 1 -#define __ASSUME_DUP3 1 - -#include_next - -/* Define this if your 32-bit syscall API requires 64-bit register - pairs to start with an even-number register. */ -#define __ASSUME_ALIGNED_REGISTER_PAIRS 1 diff --git a/ports/sysdeps/unix/sysv/linux/tile/ldsodefs.h b/ports/sysdeps/unix/sysv/linux/tile/ldsodefs.h deleted file mode 100644 index 77942682c1..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/ldsodefs.h +++ /dev/null @@ -1,32 +0,0 @@ -/* Run-time dynamic linker data structures for loaded ELF shared objects. Tile. - Copyright (C) 2001-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#ifndef _LDSODEFS_H - -/* Get the real definitions. */ -#include_next - -/* Now define our stuff. */ - -/* We need special support to initialize DSO loaded for statically linked - binaries. */ -extern void _dl_static_init (struct link_map *map); -#undef DL_STATIC_INIT -#define DL_STATIC_INIT(map) _dl_static_init (map) - -#endif /* ldsodefs.h */ diff --git a/ports/sysdeps/unix/sysv/linux/tile/makecontext.c b/ports/sysdeps/unix/sysv/linux/tile/makecontext.c deleted file mode 100644 index 2ed30f48ba..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/makecontext.c +++ /dev/null @@ -1,67 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include -#include -#include - -void -__makecontext (ucontext_t *ucp, void (*func) (void), int argc, ...) -{ - extern void __startcontext (void); - uint_reg_t *sp, *args; - va_list ap; - int i; - - /* Initialize the top of stack. */ - sp = (uint_reg_t *) ((((intptr_t) ucp->uc_stack.ss_sp - + ucp->uc_stack.ss_size) & -16L) - 16); - - /* Allow room for memory-passed arguments if necessary. */ - if (argc > 10) - sp -= 2 + (argc - 10); - - sp[0] = sp[1] = 0; - - /* Set parameters. */ - va_start (ap, argc); - args = &ucp->uc_mcontext.gregs[0]; - for (i = 0; i < argc; i++) - { - if (i == 10) - args = &sp[2]; - *args++ = va_arg (ap, long); - } - va_end (ap); - - /* Pass (*func) to __startcontext in pc. */ - ucp->uc_mcontext.pc = (long) func; - - /* Set stack pointer. */ - ucp->uc_mcontext.sp = (long) sp; - - /* Set the return address to trampoline. */ - ucp->uc_mcontext.lr = (long) __startcontext; - - /* Pass ucp->uc_link to __startcontext in r30. */ - ucp->uc_mcontext.gregs[30] = (long) ucp->uc_link; -} -weak_alias (__makecontext, makecontext) diff --git a/ports/sysdeps/unix/sysv/linux/tile/nptl/Makefile b/ports/sysdeps/unix/sysv/linux/tile/nptl/Makefile deleted file mode 100644 index e98c9bd866..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/nptl/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -# pull in __syscall_error routine -libpthread-routines += sysdep diff --git a/ports/sysdeps/unix/sysv/linux/tile/nptl/bits/pthreadtypes.h b/ports/sysdeps/unix/sysv/linux/tile/nptl/bits/pthreadtypes.h deleted file mode 100644 index f4693527f1..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/nptl/bits/pthreadtypes.h +++ /dev/null @@ -1,223 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Based on work contributed by Ulrich Drepper , 2002. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#ifndef _BITS_PTHREADTYPES_H -#define _BITS_PTHREADTYPES_H 1 - -#include - -#if __WORDSIZE == 64 -# define __SIZEOF_PTHREAD_ATTR_T 56 -# define __SIZEOF_PTHREAD_MUTEX_T 40 -# define __SIZEOF_PTHREAD_MUTEXATTR_T 4 -# define __SIZEOF_PTHREAD_COND_T 48 -# define __SIZEOF_PTHREAD_CONDATTR_T 4 -# define __SIZEOF_PTHREAD_RWLOCK_T 56 -# define __SIZEOF_PTHREAD_RWLOCKATTR_T 8 -# define __SIZEOF_PTHREAD_BARRIER_T 32 -# define __SIZEOF_PTHREAD_BARRIERATTR_T 4 -#else -# define __SIZEOF_PTHREAD_ATTR_T 36 -# define __SIZEOF_PTHREAD_MUTEX_T 24 -# define __SIZEOF_PTHREAD_MUTEXATTR_T 4 -# define __SIZEOF_PTHREAD_COND_T 48 -# define __SIZEOF_PTHREAD_CONDATTR_T 4 -# define __SIZEOF_PTHREAD_RWLOCK_T 32 -# define __SIZEOF_PTHREAD_RWLOCKATTR_T 8 -# define __SIZEOF_PTHREAD_BARRIER_T 20 -# define __SIZEOF_PTHREAD_BARRIERATTR_T 4 -#endif - - -/* Thread identifiers. The structure of the attribute type is not - exposed on purpose. */ -typedef unsigned long int pthread_t; - - -union pthread_attr_t -{ - char __size[__SIZEOF_PTHREAD_ATTR_T]; - long int __align; -}; -#ifndef __have_pthread_attr_t -typedef union pthread_attr_t pthread_attr_t; -# define __have_pthread_attr_t 1 -#endif - -#if __WORDSIZE == 64 -typedef struct __pthread_internal_list -{ - struct __pthread_internal_list *__prev; - struct __pthread_internal_list *__next; -} __pthread_list_t; -#else -typedef struct __pthread_internal_slist -{ - struct __pthread_internal_slist *__next; -} __pthread_slist_t; -#endif - - -/* Data structures for mutex handling. The structure of the attribute - type is not exposed on purpose. */ -typedef union -{ - struct __pthread_mutex_s - { - int __lock; - unsigned int __count; - int __owner; -#if __WORDSIZE == 64 - unsigned int __nusers; -#endif - /* KIND must stay at this position in the structure to maintain - binary compatibility. */ - int __kind; -#if __WORDSIZE == 64 - int __spins; - __pthread_list_t __list; -# define __PTHREAD_MUTEX_HAVE_PREV 1 -#else - unsigned int __nusers; - __extension__ union - { - int __spins; - __pthread_slist_t __list; - }; -#endif - } __data; - char __size[__SIZEOF_PTHREAD_MUTEX_T]; - long int __align; -} pthread_mutex_t; - -typedef union -{ - char __size[__SIZEOF_PTHREAD_MUTEXATTR_T]; - int __align; -} pthread_mutexattr_t; - - -/* Data structure for conditional variable handling. The structure of - the attribute type is not exposed on purpose. */ -typedef union -{ - struct - { - int __lock; - unsigned int __futex; - __extension__ unsigned long long int __total_seq; - __extension__ unsigned long long int __wakeup_seq; - __extension__ unsigned long long int __woken_seq; - void *__mutex; - unsigned int __nwaiters; - unsigned int __broadcast_seq; - } __data; - char __size[__SIZEOF_PTHREAD_COND_T]; - __extension__ long long int __align; -} pthread_cond_t; - -typedef union -{ - char __size[__SIZEOF_PTHREAD_CONDATTR_T]; - int __align; -} pthread_condattr_t; - - -/* Keys for thread-specific data */ -typedef unsigned int pthread_key_t; - - -/* Once-only execution */ -typedef int pthread_once_t; - - -#if defined __USE_UNIX98 || defined __USE_XOPEN2K -/* Data structure for read-write lock variable handling. The - structure of the attribute type is not exposed on purpose. */ -typedef union -{ -# if __WORDSIZE == 64 - struct - { - int __lock; - unsigned int __nr_readers; - unsigned int __readers_wakeup; - unsigned int __writer_wakeup; - unsigned int __nr_readers_queued; - unsigned int __nr_writers_queued; - int __writer; - int __shared; - unsigned long int __pad1; - unsigned long int __pad2; - /* FLAGS must stay at this position in the structure to maintain - binary compatibility. */ - unsigned int __flags; - } __data; -# else - struct - { - int __lock; - unsigned int __nr_readers; - unsigned int __readers_wakeup; - unsigned int __writer_wakeup; - unsigned int __nr_readers_queued; - unsigned int __nr_writers_queued; - /* FLAGS must stay at this position in the structure to maintain - binary compatibility. */ - unsigned char __flags; - unsigned char __shared; - unsigned char __pad1; - unsigned char __pad2; - int __writer; - } __data; -# endif - char __size[__SIZEOF_PTHREAD_RWLOCK_T]; - long int __align; -} pthread_rwlock_t; - -typedef union -{ - char __size[__SIZEOF_PTHREAD_RWLOCKATTR_T]; - long int __align; -} pthread_rwlockattr_t; -#endif - - -#ifdef __USE_XOPEN2K -/* POSIX spinlock data type. */ -typedef volatile int pthread_spinlock_t; - - -/* POSIX barriers data type. The structure of the type is - deliberately not exposed. */ -typedef union -{ - char __size[__SIZEOF_PTHREAD_BARRIER_T]; - long int __align; -} pthread_barrier_t; - -typedef union -{ - char __size[__SIZEOF_PTHREAD_BARRIERATTR_T]; - int __align; -} pthread_barrierattr_t; -#endif - - -#endif /* bits/pthreadtypes.h */ diff --git a/ports/sysdeps/unix/sysv/linux/tile/nptl/bits/semaphore.h b/ports/sysdeps/unix/sysv/linux/tile/nptl/bits/semaphore.h deleted file mode 100644 index 475617df0f..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/nptl/bits/semaphore.h +++ /dev/null @@ -1,41 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - Based on work contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#ifndef _SEMAPHORE_H -# error "Never use directly; include instead." -#endif - -#include - -#if __WORDSIZE == 64 -# define __SIZEOF_SEM_T 32 -#else -# define __SIZEOF_SEM_T 16 -#endif - - -/* Value returned if `sem_open' failed. */ -#define SEM_FAILED ((sem_t *) 0) - - -typedef union -{ - char __size[__SIZEOF_SEM_T]; - long int __align; -} sem_t; diff --git a/ports/sysdeps/unix/sysv/linux/tile/nptl/clone.S b/ports/sysdeps/unix/sysv/linux/tile/nptl/clone.S deleted file mode 100644 index f48dba523c..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/nptl/clone.S +++ /dev/null @@ -1,221 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -/* clone() is even more special than fork() as it mucks with stacks - and invokes a function in the right context after it's all over. */ - -#include -#define _ERRNO_H 1 -#include - -#include -#include -#include -#include - -/* What we save where in the stack frame; must include all callee-saves. */ -#define FRAME_NEXT_LR (0 * REGSIZE) /* reserved by ABI; not used here */ -#define FRAME_SP (1 * REGSIZE) -#define FRAME_R30 (2 * REGSIZE) -#define FRAME_R31 (3 * REGSIZE) -#define FRAME_R32 (4 * REGSIZE) -#define FRAME_SIZE (5 * REGSIZE) - -/* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg, - pid_t *ptid, struct user_desc *tls, pid_t *ctid); */ - - .text -ENTRY (__clone) - /* sanity check arguments */ - BEQZ r0, .Linvalid - BEQZ r1, .Linvalid - - /* Create a stack frame so we can pass callee-saves to new task. */ - { - move r10, sp - ST sp, lr - ADDI_PTR sp, sp, -FRAME_SIZE - } - cfi_offset (lr, 0) - cfi_def_cfa_offset (FRAME_SIZE) - ADDI_PTR r11, sp, FRAME_SP - { - ST r11, r10 - ADDI_PTR r11, sp, FRAME_R30 - } - { - ST r11, r30 - ADDI_PTR r11, sp, FRAME_R31 - } - cfi_offset (r30, FRAME_R30 - FRAME_SIZE) - { - ST r11, r31 - ADDI_PTR r11, sp, FRAME_R32 - } - cfi_offset (r31, FRAME_R31 - FRAME_SIZE) - ST r11, r32 - cfi_offset (r32, FRAME_R32 - FRAME_SIZE) - - /* Make sure child stack is properly aligned, and set up the - top frame so that we can call out of it immediately in the - child. Setting it up here means we fault in the parent if - it's bogus, which is probably cleaner than faulting first - thing in the child. */ - ADDI_PTR r1, r1, -C_ABI_SAVE_AREA_SIZE - andi r1, r1, -C_ABI_SAVE_AREA_SIZE - ADDI_PTR r9, r1, REGSIZE /* sp of this frame on entry, i.e. zero */ - ST r9, zero - - /* We need to switch the argument convention around from - libc to kernel: - - libc: - r0 fn - r1 child_stack - r2 flags - r3 arg - r4 ptid - r5 tls - r6 ctid - - kernel: - r0 flags - r1 child_stack [same as libc] - r2 ptid - r3 ctid - r4 tls - - Plus the callee-saves as described at .Lthread_start, below. */ - { - move r32, r0 - move r0, r2 - } - { - move r31, r3 - move r3, r6 - } - { - move r30, r2 - move r2, r4 - } - { - move r4, r5 - moveli TREG_SYSCALL_NR_NAME, __NR_clone - } - swint1 - BEQZ r0, .Lthread_start /* If in child task. */ - - /* Restore the callee-saved registers and return. */ - ADDLI_PTR lr, sp, FRAME_SIZE - { - LD lr, lr - ADDLI_PTR r30, sp, FRAME_R30 - } - { - LD r30, r30 - ADDLI_PTR r31, sp, FRAME_R31 - } - { - LD r31, r31 - ADDLI_PTR r32, sp, FRAME_R32 - } - { - LD r32, r32 - ADDI_PTR sp, sp, FRAME_SIZE - } - cfi_def_cfa_offset (0) - - BNEZ r1, .Lerror - jrp lr - -.Lerror: - j SYSCALL_ERROR_NAME - -.Linvalid: - { - movei r1, EINVAL - j SYSCALL_ERROR_NAME - } - -/* This function expects to receive: - - sp: the top of a valid stack area - r30: clone() flags - r31: the argument to pass to the user function - r32: the user function pointer */ - -.Lthread_start: - cfi_def_cfa_offset (FRAME_SIZE) - cfi_undefined (lr) - /* Check and see if we need to reset the PID, which we do if - CLONE_THREAD isn't set, i.e. we're not staying in the thread group. - If CLONE_VM is set, we're doing some kind of thread-like clone, - so we set the tid/pid to -1 to disable using the cached values - in getpid(). Otherwise (if CLONE_VM isn't set), it's a - fork-like clone, and we go ahead and write the cached values - from the true system pid (retrieved via __NR_getpid syscall). */ -#ifdef __tilegx__ - { - moveli r0, hw1_last(CLONE_VM) - moveli r1, hw1_last(CLONE_THREAD) - } - { - shl16insli r0, r0, hw0(CLONE_VM) - shl16insli r1, r1, hw0(CLONE_THREAD) - } -#else - { - moveli r0, lo16(CLONE_VM) - moveli r1, lo16(CLONE_THREAD) - } - { - auli r0, r0, ha16(CLONE_VM) - auli r1, r1, ha16(CLONE_THREAD) - } -#endif - { - and r0, r30, r0 - and r1, r30, r1 - } - BNEZ r1, .Lno_reset_pid /* CLONE_THREAD is set */ - { - movei r0, -1 - BNEZ r0, .Lgotpid /* CLONE_VM is set */ - } - moveli TREG_SYSCALL_NR_NAME, __NR_getpid - swint1 -.Lgotpid: - ADDLI_PTR r2, tp, PID_OFFSET - { - ST4 r2, r0 - ADDLI_PTR r2, tp, TID_OFFSET - } - ST4 r2, r0 -.Lno_reset_pid: - { - /* Invoke user function with specified argument. */ - move r0, r31 - jalr r32 - } - { - j HIDDEN_JUMPTARGET(_exit) - info INFO_OP_CANNOT_BACKTRACE /* Notify backtracer to stop. */ - } -PSEUDO_END (__clone) - -weak_alias (__clone, clone) diff --git a/ports/sysdeps/unix/sysv/linux/tile/nptl/createthread.c b/ports/sysdeps/unix/sysv/linux/tile/nptl/createthread.c deleted file mode 100644 index 8472ad5f62..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/nptl/createthread.c +++ /dev/null @@ -1,24 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -/* Value passed to 'clone' for initialization of the thread register. */ -#define TLS_VALUE ((void *) (pd) \ - + TLS_TCB_OFFSET + TLS_PRE_TCB_SIZE) - -/* Get the real implementation. */ -#include diff --git a/ports/sysdeps/unix/sysv/linux/tile/nptl/fork.c b/ports/sysdeps/unix/sysv/linux/tile/nptl/fork.c deleted file mode 100644 index 6cd83e9173..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/nptl/fork.c +++ /dev/null @@ -1,31 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - Based on work contributed by Ulrich Drepper , 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include -#include - -#define ARCH_FORK() \ - INLINE_SYSCALL (clone, 4, \ - CLONE_CHILD_SETTID | CLONE_CHILD_CLEARTID | SIGCHLD, \ - 0, NULL, &THREAD_SELF->tid) - -#include diff --git a/ports/sysdeps/unix/sysv/linux/tile/nptl/lowlevellock.h b/ports/sysdeps/unix/sysv/linux/tile/nptl/lowlevellock.h deleted file mode 100644 index 46149f1cd4..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/nptl/lowlevellock.h +++ /dev/null @@ -1,321 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#ifndef _LOWLEVELLOCK_H -#define _LOWLEVELLOCK_H 1 - -#include -#include -#include -#include -#include -#include - - -#define FUTEX_WAIT 0 -#define FUTEX_WAKE 1 -#define FUTEX_REQUEUE 3 -#define FUTEX_CMP_REQUEUE 4 -#define FUTEX_WAKE_OP 5 -#define FUTEX_OP_CLEAR_WAKE_IF_GT_ONE ((4 << 24) | 1) -#define FUTEX_LOCK_PI 6 -#define FUTEX_UNLOCK_PI 7 -#define FUTEX_TRYLOCK_PI 8 -#define FUTEX_WAIT_BITSET 9 -#define FUTEX_WAKE_BITSET 10 -#define FUTEX_WAIT_REQUEUE_PI 11 -#define FUTEX_CMP_REQUEUE_PI 12 -#define FUTEX_PRIVATE_FLAG 128 -#define FUTEX_CLOCK_REALTIME 256 - -#define FUTEX_BITSET_MATCH_ANY 0xffffffff - -/* Values for 'private' parameter of locking macros. Yes, the - definition seems to be backwards. But it is not. The bit will be - reversed before passing to the system call. */ -#define LLL_PRIVATE 0 -#define LLL_SHARED FUTEX_PRIVATE_FLAG - - -#if !defined NOT_IN_libc || defined IS_IN_rtld -/* In libc.so or ld.so all futexes are private. */ -# ifdef __ASSUME_PRIVATE_FUTEX -# define __lll_private_flag(fl, private) \ - ((fl) | FUTEX_PRIVATE_FLAG) -# else -# define __lll_private_flag(fl, private) \ - ((fl) | THREAD_GETMEM (THREAD_SELF, header.private_futex)) -# endif -#else -# ifdef __ASSUME_PRIVATE_FUTEX -# define __lll_private_flag(fl, private) \ - (((fl) | FUTEX_PRIVATE_FLAG) ^ (private)) -# else -# define __lll_private_flag(fl, private) \ - (__builtin_constant_p (private) \ - ? ((private) == 0 \ - ? ((fl) | THREAD_GETMEM (THREAD_SELF, header.private_futex)) \ - : (fl)) \ - : ((fl) | (((private) ^ FUTEX_PRIVATE_FLAG) \ - & THREAD_GETMEM (THREAD_SELF, header.private_futex)))) -# endif -#endif - - -#define lll_futex_wait(futexp, val, private) \ - lll_futex_timed_wait (futexp, val, NULL, private) - -#define lll_futex_timed_wait(futexp, val, timespec, private) \ - ({ \ - INTERNAL_SYSCALL_DECL (__err); \ - INTERNAL_SYSCALL (futex, __err, 4, (futexp), \ - __lll_private_flag (FUTEX_WAIT, private), \ - (val), (timespec)); \ - }) - -#define lll_futex_timed_wait_bitset(futexp, val, timespec, clockbit, private) \ - ({ \ - INTERNAL_SYSCALL_DECL (__err); \ - long int __ret; \ - int __op = FUTEX_WAIT_BITSET | clockbit; \ - \ - __ret = INTERNAL_SYSCALL (futex, __err, 6, (futexp), \ - __lll_private_flag (__op, private), \ - (val), (timespec), NULL /* Unused. */, \ - FUTEX_BITSET_MATCH_ANY); \ - __ret; \ - }) - -#define lll_futex_wake(futexp, nr, private) \ - ({ \ - INTERNAL_SYSCALL_DECL (__err); \ - INTERNAL_SYSCALL (futex, __err, 4, (futexp), \ - __lll_private_flag (FUTEX_WAKE, private), \ - (nr), 0); \ - }) - -#define lll_robust_dead(futexv, private) \ - do \ - { \ - int *__futexp = &(futexv); \ - atomic_or (__futexp, FUTEX_OWNER_DIED); \ - lll_futex_wake (__futexp, 1, private); \ - } \ - while (0) - -/* Returns non-zero if error happened, zero if success. */ -#define lll_futex_requeue(futexp, nr_wake, nr_move, mutex, val, private) \ - ({ \ - INTERNAL_SYSCALL_DECL (__err); \ - long int __ret; \ - __ret = INTERNAL_SYSCALL (futex, __err, 6, (futexp), \ - __lll_private_flag (FUTEX_CMP_REQUEUE, private),\ - (nr_wake), (nr_move), (mutex), (val)); \ - INTERNAL_SYSCALL_ERROR_P (__ret, __err); \ - }) - -/* Returns non-zero if error happened, zero if success. */ -#define lll_futex_wake_unlock(futexp, nr_wake, nr_wake2, futexp2, private) \ - ({ \ - INTERNAL_SYSCALL_DECL (__err); \ - long int __ret; \ - __ret = INTERNAL_SYSCALL (futex, __err, 6, (futexp), \ - __lll_private_flag (FUTEX_WAKE_OP, private), \ - (nr_wake), (nr_wake2), (futexp2), \ - FUTEX_OP_CLEAR_WAKE_IF_GT_ONE); \ - INTERNAL_SYSCALL_ERROR_P (__ret, __err); \ - }) - -/* Priority Inheritance support. */ -#define lll_futex_wait_requeue_pi(futexp, val, mutex, private) \ - lll_futex_timed_wait_requeue_pi (futexp, val, NULL, 0, mutex, private) - -#define lll_futex_timed_wait_requeue_pi(futexp, val, timespec, clockbit, \ - mutex, private) \ - ({ \ - INTERNAL_SYSCALL_DECL (__err); \ - long int __ret; \ - int __op = FUTEX_WAIT_REQUEUE_PI | clockbit; \ - \ - __ret = INTERNAL_SYSCALL (futex, __err, 5, (futexp), \ - __lll_private_flag (__op, private), \ - (val), (timespec), mutex); \ - INTERNAL_SYSCALL_ERROR_P (__ret, __err); \ - }) - -#define lll_futex_cmp_requeue_pi(futexp, nr_wake, nr_move, mutex, val, priv) \ - ({ \ - INTERNAL_SYSCALL_DECL (__err); \ - long int __ret; \ - \ - __ret = INTERNAL_SYSCALL (futex, __err, 6, (futexp), \ - __lll_private_flag (FUTEX_CMP_REQUEUE_PI, priv),\ - (nr_wake), (nr_move), (mutex), (val)); \ - INTERNAL_SYSCALL_ERROR_P (__ret, __err); \ - }) - - -static inline int __attribute__ ((always_inline)) -__lll_trylock (int *futex) -{ - return atomic_compare_and_exchange_val_acq (futex, 1, 0) != 0; -} -#define lll_trylock(lock) __lll_trylock (&(lock)) - - -static inline int __attribute__ ((always_inline)) -__lll_cond_trylock (int *futex) -{ - return atomic_compare_and_exchange_val_acq (futex, 2, 0) != 0; -} -#define lll_cond_trylock(lock) __lll_cond_trylock (&(lock)) - - -static inline int __attribute__ ((always_inline)) -__lll_robust_trylock (int *futex, int id) -{ - return atomic_compare_and_exchange_val_acq (futex, id, 0) != 0; -} -#define lll_robust_trylock(lock, id) \ - __lll_robust_trylock (&(lock), id) - -extern void __lll_lock_wait_private (int *futex) attribute_hidden; -extern void __lll_lock_wait (int *futex, int private) attribute_hidden; -extern int __lll_robust_lock_wait (int *futex, int private) attribute_hidden; - -static inline void __attribute__ ((always_inline)) -__lll_lock (int *futex, int private) -{ - if (atomic_compare_and_exchange_bool_acq (futex, 1, 0) != 0) - { - if (__builtin_constant_p (private) && private == LLL_PRIVATE) - __lll_lock_wait_private (futex); - else - __lll_lock_wait (futex, private); - } -} -#define lll_lock(futex, private) __lll_lock (&(futex), private) - - -static inline int __attribute__ ((always_inline)) -__lll_robust_lock (int *futex, int id, int private) -{ - int result = 0; - if (atomic_compare_and_exchange_bool_acq (futex, id, 0) != 0) - result = __lll_robust_lock_wait (futex, private); - return result; -} -#define lll_robust_lock(futex, id, private) \ - __lll_robust_lock (&(futex), id, private) - - -static inline void __attribute__ ((always_inline)) -__lll_cond_lock (int *futex, int private) -{ - if (atomic_compare_and_exchange_bool_acq (futex, 2, 0) != 0) - __lll_lock_wait (futex, private); -} -#define lll_cond_lock(futex, private) __lll_cond_lock (&(futex), private) - - -#define lll_robust_cond_lock(futex, id, private) \ - __lll_robust_lock (&(futex), (id) | FUTEX_WAITERS, private) - - -extern int __lll_timedlock_wait (int *futex, const struct timespec *, - int private) attribute_hidden; -extern int __lll_robust_timedlock_wait (int *futex, const struct timespec *, - int private) attribute_hidden; - -static inline int __attribute__ ((always_inline)) -__lll_timedlock (int *futex, const struct timespec *abstime, int private) -{ - int result = 0; - if (atomic_compare_and_exchange_bool_acq (futex, 1, 0) != 0) - result = __lll_timedlock_wait (futex, abstime, private); - return result; -} -#define lll_timedlock(futex, abstime, private) \ - __lll_timedlock (&(futex), abstime, private) - - -static inline int __attribute__ ((always_inline)) -__lll_robust_timedlock (int *futex, const struct timespec *abstime, - int id, int private) -{ - int result = 0; - if (atomic_compare_and_exchange_bool_acq (futex, id, 0) != 0) - result = __lll_robust_timedlock_wait (futex, abstime, private); - return result; -} -#define lll_robust_timedlock(futex, abstime, id, private) \ - __lll_robust_timedlock (&(futex), abstime, id, private) - - -#define __lll_unlock(futex, private) \ - (void) \ - ({ int *__futex = (futex); \ - int __oldval = atomic_exchange_rel (__futex, 0); \ - if (__builtin_expect (__oldval > 1, 0)) \ - lll_futex_wake (__futex, 1, private); \ - }) -#define lll_unlock(futex, private) __lll_unlock(&(futex), private) - - -#define __lll_robust_unlock(futex, private) \ - (void) \ - ({ int *__futex = (futex); \ - int __oldval = atomic_exchange_rel (__futex, 0); \ - if (__builtin_expect (__oldval & FUTEX_WAITERS, 0)) \ - lll_futex_wake (__futex, 1, private); \ - }) -#define lll_robust_unlock(futex, private) \ - __lll_robust_unlock(&(futex), private) - - -#define lll_islocked(futex) \ - (futex != 0) - -/* Initializers for lock. */ -#define LLL_LOCK_INITIALIZER (0) -#define LLL_LOCK_INITIALIZER_LOCKED (1) - - -/* The kernel notifies a process which uses CLONE_CHILD_CLEARTID via futex - wakeup when the clone terminates. The memory location contains the - thread ID while the clone is running and is reset to zero - afterwards. */ -#define lll_wait_tid(tid) \ - do { \ - __typeof (tid) __tid; \ - while ((__tid = (tid)) != 0) \ - lll_futex_wait (&(tid), __tid, LLL_SHARED); \ - } while (0) - -extern int __lll_timedwait_tid (int *, const struct timespec *) - attribute_hidden; - -#define lll_timedwait_tid(tid, abstime) \ - ({ \ - int __res = 0; \ - if ((tid) != 0) \ - __res = __lll_timedwait_tid (&(tid), (abstime)); \ - __res; \ - }) - -#endif /* lowlevellock.h */ diff --git a/ports/sysdeps/unix/sysv/linux/tile/nptl/pt-vfork.S b/ports/sysdeps/unix/sysv/linux/tile/nptl/pt-vfork.S deleted file mode 100644 index a6ccb1f51f..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/nptl/pt-vfork.S +++ /dev/null @@ -1,2 +0,0 @@ -#define PT_VFORK 1 /* pid is never zero */ -#include "vfork.S" diff --git a/ports/sysdeps/unix/sysv/linux/tile/nptl/pthread_once.c b/ports/sysdeps/unix/sysv/linux/tile/nptl/pthread_once.c deleted file mode 100644 index 1b38999870..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/nptl/pthread_once.c +++ /dev/null @@ -1,94 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - Based on work contributed by Jakub Jelinek , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include - - -unsigned long int __fork_generation attribute_hidden; - - -static void -clear_once_control (void *arg) -{ - pthread_once_t *once_control = (pthread_once_t *) arg; - - *once_control = 0; - lll_futex_wake (once_control, INT_MAX, LLL_PRIVATE); -} - - -int -__pthread_once (once_control, init_routine) - pthread_once_t *once_control; - void (*init_routine) (void); -{ - while (1) - { - int oldval, val, newval; - - val = *once_control; - do - { - /* Check if the initialized has already been done. */ - if ((val & 2) != 0) - return 0; - - oldval = val; - newval = (oldval & 3) | __fork_generation | 1; - val = atomic_compare_and_exchange_val_acq (once_control, newval, - oldval); - } - while (__builtin_expect (val != oldval, 0)); - - /* Check if another thread already runs the initializer. */ - if ((oldval & 1) != 0) - { - /* Check whether the initializer execution was interrupted - by a fork. */ - if (((oldval ^ newval) & -4) == 0) - { - /* Same generation, some other thread was faster. Wait. */ - lll_futex_wait (once_control, newval, LLL_PRIVATE); - continue; - } - } - - /* This thread is the first here. Do the initialization. - Register a cleanup handler so that in case the thread gets - interrupted the initialization can be restarted. */ - pthread_cleanup_push (clear_once_control, once_control); - - init_routine (); - - pthread_cleanup_pop (0); - - - /* Add one to *once_control. */ - atomic_increment (once_control); - - /* Wake up all other threads. */ - lll_futex_wake (once_control, INT_MAX, LLL_PRIVATE); - break; - } - - return 0; -} -weak_alias (__pthread_once, pthread_once) -hidden_def (__pthread_once) diff --git a/ports/sysdeps/unix/sysv/linux/tile/nptl/sysdep-cancel.h b/ports/sysdeps/unix/sysv/linux/tile/nptl/sysdep-cancel.h deleted file mode 100644 index 233333844f..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/nptl/sysdep-cancel.h +++ /dev/null @@ -1,154 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#ifndef __ASSEMBLER__ -# include -#endif - -#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt - -/* Allow hacking in some extra code if desired. */ -#ifndef PSEUDO_EXTRA -#define PSEUDO_EXTRA -#endif - -#undef PSEUDO -#define PSEUDO(name, syscall_name, args) \ - ENTRY(__##syscall_name##_nocancel); \ - PSEUDO_EXTRA \ - moveli TREG_SYSCALL_NR_NAME, SYS_ify(syscall_name); \ - swint1; \ - BNEZ r1, 0f; \ - jrp lr; \ - END(__##syscall_name##_nocancel); \ - ENTRY (name) \ - SINGLE_THREAD_P(r11); \ - BEQZ r11, L(pseudo_cancel); \ - PSEUDO_EXTRA \ - moveli TREG_SYSCALL_NR_NAME, SYS_ify(syscall_name); \ - swint1; \ - BNEZ r1, 0f; \ - jrp lr; \ - L(pseudo_cancel): \ - { \ - move r11, sp; \ - ST sp, lr; \ - ADDI_PTR sp, sp, -STKSPACE; \ - }; \ - cfi_offset (lr, 0); \ - cfi_def_cfa_offset (STKSPACE); \ - { \ - ADDI_PTR r12, sp, REGSIZE; \ - ADDI_PTR r13, sp, 2 * REGSIZE; /* set up for PUSHARGS_0 */ \ - }; \ - ST r12, r11; \ - PUSHARGS_##args /* save syscall args */ \ - CENABLE; \ - ADDI_PTR r12, sp, 10 * REGSIZE; \ - { \ - ST r12, r0; /* save mask */ \ - ADDI_PTR r13, sp, 2 * REGSIZE; /* set up for POPARGS_0 */ \ - }; \ - POPARGS_##args /* restore syscall args */ \ - PSEUDO_EXTRA \ - moveli TREG_SYSCALL_NR_NAME, SYS_ify(syscall_name); \ - swint1; \ - ADDI_PTR r12, sp, 12 * REGSIZE; \ - { \ - ST r12, r1; /* save syscall result */ \ - ADDI_PTR r12, sp, 11 * REGSIZE; \ - }; \ - { \ - ST r12, r0; \ - ADDI_PTR r13, sp, 10 * REGSIZE; \ - }; \ - LD r0, r13; /* pass mask as arg1 */ \ - CDISABLE; \ - { \ - ADDI_PTR lr, sp, STKSPACE; \ - ADDI_PTR r0, sp, 11 * REGSIZE; \ - }; \ - { \ - LD r0, r0; \ - ADDI_PTR r1, sp, 12 * REGSIZE; \ - }; \ - LD r1, r1; \ - { \ - LD lr, lr; \ - ADDI_PTR sp, sp, STKSPACE; \ - }; \ - cfi_def_cfa_offset (0); \ - BNEZ r1, 0f - -# define PUSHARGS_0 /* nothing to do */ -# define PUSHARGS_1 PUSHARGS_0 { ADDI_PTR r14, sp, 3 * REGSIZE; ST r13, r0 }; -# define PUSHARGS_2 PUSHARGS_1 { ADDI_PTR r13, sp, 4 * REGSIZE; ST r14, r1 }; -# define PUSHARGS_3 PUSHARGS_2 { ADDI_PTR r14, sp, 5 * REGSIZE; ST r13, r2 }; -# define PUSHARGS_4 PUSHARGS_3 { ADDI_PTR r13, sp, 6 * REGSIZE; ST r14, r3 }; -# define PUSHARGS_5 PUSHARGS_4 { ADDI_PTR r14, sp, 7 * REGSIZE; ST r13, r4 }; -# define PUSHARGS_6 PUSHARGS_5 { ADDI_PTR r13, sp, 8 * REGSIZE; ST r14, r5 }; -# define PUSHARGS_7 PUSHARGS_6 { ADDI_PTR r14, sp, 9 * REGSIZE; ST r13, r6 }; - -# define POPARGS_0 /* nothing to do */ -# define POPARGS_1 POPARGS_0 { ADDI_PTR r14, sp, 3 * REGSIZE; LD r0, r13 }; -# define POPARGS_2 POPARGS_1 { ADDI_PTR r13, sp, 4 * REGSIZE; LD r1, r14 }; -# define POPARGS_3 POPARGS_2 { ADDI_PTR r14, sp, 5 * REGSIZE; LD r2, r13 }; -# define POPARGS_4 POPARGS_3 { ADDI_PTR r13, sp, 6 * REGSIZE; LD r3, r14 }; -# define POPARGS_5 POPARGS_4 { ADDI_PTR r14, sp, 7 * REGSIZE; LD r4, r13 }; -# define POPARGS_6 POPARGS_5 { ADDI_PTR r13, sp, 8 * REGSIZE; LD r5, r14 }; -# define POPARGS_7 POPARGS_6 { ADDI_PTR r14, sp, 9 * REGSIZE; LD r6, r13 }; - -# define STKSPACE (13 * REGSIZE) - -# ifdef IS_IN_libpthread -# define CENABLE jal __pthread_enable_asynccancel -# define CDISABLE jal __pthread_disable_asynccancel -# elif defined IS_IN_librt -# define CENABLE jal __librt_enable_asynccancel -# define CDISABLE jal __librt_disable_asynccancel -# else -# define CENABLE jal __libc_enable_asynccancel -# define CDISABLE jal __libc_disable_asynccancel -# endif - -# ifndef __ASSEMBLER__ -# define SINGLE_THREAD_P \ - __builtin_expect (THREAD_GETMEM (THREAD_SELF, \ - header.multiple_threads) \ - == 0, 1) -# else -# define SINGLE_THREAD_P(reg) \ - ADDLI_PTR reg, tp, MULTIPLE_THREADS_OFFSET; \ - LD reg, reg; \ - CMPEQI reg, reg, 0 -#endif - -#elif !defined __ASSEMBLER__ - -# define SINGLE_THREAD_P 1 -# define NO_CANCELLATION 1 - -#endif - -#ifndef __ASSEMBLER__ -# define RTLD_SINGLE_THREAD_P \ - __builtin_expect (THREAD_GETMEM (THREAD_SELF, \ - header.multiple_threads) == 0, 1) -#endif diff --git a/ports/sysdeps/unix/sysv/linux/tile/nptl/vfork.S b/ports/sysdeps/unix/sysv/linux/tile/nptl/vfork.S deleted file mode 100644 index 014cccf7e2..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/nptl/vfork.S +++ /dev/null @@ -1,80 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#define __ASSEMBLY__ /* for kernel headers */ -#include -#include -#include - -/* Clone the calling process, but without copying the whole address space. - The calling process is suspended until the new process exits or is - replaced by a call to `execve'. Return -1 for errors, 0 to the new process, - and the process ID of the new process to the old process. */ - - .text -ENTRY (__vfork) - { - addli r11, tp, PID_OFFSET /* Point at PID. */ - movei r13, 1 - } - { - LD4U r12, r11 /* Load the saved PID. */ - shli r13, r13, 31 /* Build 0x80000000. */ - } - sub r12, zero, r12 /* Negate it. */ -#ifndef PT_VFORK - CMOVEQZ r12, r12, r13 /* Replace zero pids. */ -#endif - ST4 r11, r12 /* Store the temporary PID. */ - - { - moveli r0, CLONE_VFORK | CLONE_VM | SIGCHLD - move r1, zero - } - { - move r2, zero - move r3, zero - } - moveli TREG_SYSCALL_NR_NAME, __NR_clone - swint1 - - BEQZ r0, 1f /* If we are the parent... */ - { - addli r11, tp, PID_OFFSET /* Point at PID. */ - movei r13, 1 - } - { - LD4U r12, r11 /* Load the saved PID. */ - shli r13, r13, 31 /* Build 0x80000000. */ - } - { - CMPEQ r13, r12, r12 /* Test for that value. */ - sub r12, zero, r12 /* Re-negate it. */ - } -#ifndef PT_VFORK - CMOVNEZ r12, r13, zero /* Replace zero pids. */ -#endif - ST4 r11, r12 /* Restore the PID. */ -1: - BNEZ r1, 0f - jrp lr -PSEUDO_END (__vfork) -libc_hidden_def (__vfork) - -weak_alias (__vfork, vfork) diff --git a/ports/sysdeps/unix/sysv/linux/tile/nptl/waitpid.S b/ports/sysdeps/unix/sysv/linux/tile/nptl/waitpid.S deleted file mode 100644 index 9aa793e12b..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/nptl/waitpid.S +++ /dev/null @@ -1,20 +0,0 @@ -/* -extern pid_t __waitpid_nocancel (pid_t, int *, int) attribute_hidden; -*/ -#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt - -/* Call __NR_wait4, providing fourth argument (struct rusage *) as NULL. */ -#define PSEUDO_EXTRA move r3, zero; -#include - -PSEUDO (__waitpid, wait4, 3) -ret -PSEUDO_END(__waitpid) - -libc_hidden_def (__waitpid) -weak_alias (__waitpid, waitpid) -libc_hidden_weak (waitpid) -weak_alias (__waitpid, __libc_waitpid) -libc_hidden_weak (__libc_waitpid) - -#endif diff --git a/ports/sysdeps/unix/sysv/linux/tile/profil-counter.h b/ports/sysdeps/unix/sysv/linux/tile/profil-counter.h deleted file mode 100644 index 4ab1666a12..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/profil-counter.h +++ /dev/null @@ -1,26 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include - -static void -profil_counter (int signo, SIGCONTEXT scp) -{ - profil_count ((void *) GET_PC (scp)); -} diff --git a/ports/sysdeps/unix/sysv/linux/tile/set_dataplane.c b/ports/sysdeps/unix/sysv/linux/tile/set_dataplane.c deleted file mode 100644 index d53ea9fe5a..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/set_dataplane.c +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#ifdef __NR_set_dataplane -#include -#endif - -/* Request dataplane modes from the kernel. */ -int -set_dataplane (int flags) -{ -#ifdef __NR_set_dataplane - return INLINE_SYSCALL (set_dataplane, 1, flags); -#else - __set_errno (ENOSYS); - return -1; -#endif -} diff --git a/ports/sysdeps/unix/sysv/linux/tile/setcontext.S b/ports/sysdeps/unix/sysv/linux/tile/setcontext.S deleted file mode 100644 index 76a797d32c..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/setcontext.S +++ /dev/null @@ -1,204 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include - -#include "ucontext_i.h" - -/* PL to return to via iret in setcontext */ -#define RETURN_PL 0 - -/* int setcontext (const ucontext_t *ucp) */ - - .text -ENTRY (__setcontext) - FEEDBACK_ENTER(__setcontext) - - /* See if this is a true signal context (flags == 0). - If so, restore by invoking rt_sigreturn(). */ -#if UC_FLAGS_OFFSET != 0 -# error "Add offset to r0 prior to load." -#endif - LD_PTR r10, r0 - { - BEQZ r10, .Lsigreturn - addi r10, r10, -1 /* Confirm that it has value "1". */ - } - BNEZ r10, .Lbadcontext - - /* Save lr and r0 briefly on the stack and set the signal mask: - rt_sigprocmask (SIG_SETMASK, &ucp->uc_sigmask, NULL, _NSIG / 8). */ - { - ST sp, lr - ADDI_PTR r11, sp, -(2 * REGSIZE) - move r10, sp - } - ADDI_PTR sp, sp, -(3 * REGSIZE) - cfi_def_cfa_offset (3 * REGSIZE) - cfi_offset (lr, 0) - { - ST r11, r10 - ADDI_PTR r10, sp, (2 * REGSIZE) - } - { - ST r10, r0 - ADDLI_PTR r1, r0, UC_SIGMASK_OFFSET - } - cfi_offset (r0, -REGSIZE) - { - movei r3, _NSIG / 8 - movei r2, 0 - } - { - movei r0, SIG_SETMASK - moveli TREG_SYSCALL_NR_NAME, __NR_rt_sigprocmask - } - swint1 - ADDI_PTR r11, sp, 2 * REGSIZE /* Restore uc_context to r11. */ - { - LD r11, r11 - ADDI_PTR sp, sp, 3 * REGSIZE - } - cfi_def_cfa_offset (0) - LD lr, sp - { - ADDI_PTR r10, r11, UC_REG(0) - BNEZ r1, .Lsyscall_error - } - - /* Restore the argument registers; note they will be random - unless makecontext() has been called. */ - { LD r0, r10; ADDI_PTR r10, r10, REGSIZE } - { LD r1, r10; ADDI_PTR r10, r10, REGSIZE } - { LD r2, r10; ADDI_PTR r10, r10, REGSIZE } - { LD r3, r10; ADDI_PTR r10, r10, REGSIZE } - { LD r4, r10; ADDI_PTR r10, r10, REGSIZE } - { LD r5, r10; ADDI_PTR r10, r10, REGSIZE } - { LD r6, r10; ADDI_PTR r10, r10, REGSIZE } - { LD r7, r10; ADDI_PTR r10, r10, REGSIZE } - { LD r8, r10; ADDI_PTR r10, r10, REGSIZE } - { LD r9, r10; ADDLI_PTR r10, r10, UC_REG(30) - UC_REG(9) } - - /* Restore the callee-saved GPRs. */ - { LD r30, r10; ADDI_PTR r10, r10, REGSIZE } - { LD r31, r10; ADDI_PTR r10, r10, REGSIZE } - { LD r32, r10; ADDI_PTR r10, r10, REGSIZE } - { LD r33, r10; ADDI_PTR r10, r10, REGSIZE } - { LD r34, r10; ADDI_PTR r10, r10, REGSIZE } - { LD r35, r10; ADDI_PTR r10, r10, REGSIZE } - { LD r36, r10; ADDI_PTR r10, r10, REGSIZE } - { LD r37, r10; ADDI_PTR r10, r10, REGSIZE } - { LD r38, r10; ADDI_PTR r10, r10, REGSIZE } - { LD r39, r10; ADDI_PTR r10, r10, REGSIZE } - { LD r40, r10; ADDI_PTR r10, r10, REGSIZE } - { LD r41, r10; ADDI_PTR r10, r10, REGSIZE } - { LD r42, r10; ADDI_PTR r10, r10, REGSIZE } - { LD r43, r10; ADDI_PTR r10, r10, REGSIZE } - { LD r44, r10; ADDI_PTR r10, r10, REGSIZE } - { LD r45, r10; ADDI_PTR r10, r10, REGSIZE } - { LD r46, r10; ADDI_PTR r10, r10, REGSIZE } - { LD r47, r10; ADDI_PTR r10, r10, REGSIZE } - { LD r48, r10; ADDI_PTR r10, r10, REGSIZE } - { LD r49, r10; ADDI_PTR r10, r10, REGSIZE } - { LD r50, r10; ADDI_PTR r10, r10, REGSIZE } - { LD r51, r10; ADDI_PTR r10, r10, REGSIZE } - { LD r52, r10; ADDI_PTR r10, r10, REGSIZE * 2 } - /* Skip tp since it must not change for a given thread. */ - { LD sp, r10; ADDI_PTR r10, r10, REGSIZE } - { LD lr, r10; ADDI_PTR r10, r10, REGSIZE } - { LD r11, r10; ADDI_PTR r10, r10, REGSIZE } - - /* Construct an iret context; we set ICS so we can validly load - EX_CONTEXT for iret without being interrupted halfway through. */ - { - LD r12, r10 - movei r13, 1 - } - { - mtspr INTERRUPT_CRITICAL_SECTION, r13 - shli r12, r12, SPR_EX_CONTEXT_0_1__ICS_SHIFT - } - { - mtspr EX_CONTEXT_0_0, r11 - ori r12, r12, RETURN_PL - } - mtspr EX_CONTEXT_0_1, r12 - iret - jrp lr /* keep the backtracer happy */ - -.Lsigreturn: - /* This is a context obtained from a signal handler. - Perform a full restore by pushing the context - passed onto a simulated signal frame on the stack - and call the signal return syscall as if a signal - handler exited normally. */ - { - ADDLI_PTR sp, sp, -(C_ABI_SAVE_AREA_SIZE + SI_MAX_SIZE + UC_SIZE) - ADDLI_PTR r1, sp, -UC_SIZE - } - cfi_def_cfa_offset (C_ABI_SAVE_AREA_SIZE + SI_MAX_SIZE + UC_SIZE) - moveli r2, UC_SIZE / REGSIZE -0: { - LD r10, r0 - ADDI_PTR r0, r0, REGSIZE - } - { - ST r1, r10 - ADDI_PTR r1, r1, REGSIZE - addi r2, r2, -1 - } - BNEZ r2, 0b - moveli TREG_SYSCALL_NR_NAME, __NR_rt_sigreturn - swint1 - - /* Restore the stack and fall through to the error - path. Successful rt_sigreturn never returns to - its calling place. */ - ADDLI_PTR sp, sp, (C_ABI_SAVE_AREA_SIZE + SI_MAX_SIZE + UC_SIZE) - cfi_def_cfa_offset (0) - -.Lsyscall_error: - j SYSCALL_ERROR_NAME - -.Lbadcontext: - { - movei r1, EINVAL - j SYSCALL_ERROR_NAME - } - -END (__setcontext) - -.hidden __setcontext -weak_alias (__setcontext, setcontext) - -ENTRY (__startcontext) - FEEDBACK_ENTER(__startcontext) - BEQZ r30, 1f - { - move r0, r30 - jal __setcontext - } -1: { - movei r0, 0 - j HIDDEN_JUMPTARGET(exit) - } -END (__startcontext) -.hidden __startcontext diff --git a/ports/sysdeps/unix/sysv/linux/tile/sigcontextinfo.h b/ports/sysdeps/unix/sysv/linux/tile/sigcontextinfo.h deleted file mode 100644 index 3f2680d209..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/sigcontextinfo.h +++ /dev/null @@ -1,27 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include - -#define SIGCONTEXT siginfo_t *_si, struct ucontext * -#define SIGCONTEXT_EXTRA_ARGS _si, -#define GET_PC(ctx) ((void *) (long) ctx->uc_mcontext.pc) -#define GET_FRAME(ctx) ((void *) (long) ctx->uc_mcontext.regs[TREG_FP]) -#define GET_STACK(ctx) ((void *) (long) ctx->uc_mcontext.sp) -#define CALL_SIGHANDLER(handler, signo, ctx) \ - (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx)) diff --git a/ports/sysdeps/unix/sysv/linux/tile/swapcontext.S b/ports/sysdeps/unix/sysv/linux/tile/swapcontext.S deleted file mode 100644 index ef24e39898..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/swapcontext.S +++ /dev/null @@ -1,89 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include - -#include "ucontext_i.h" - -/* int swapcontext (ucontext_t *oucp, const ucontext_t *ucp) */ - - .text -ENTRY (__swapcontext) - FEEDBACK_ENTER(__swapcontext) - /* Set up a frame and save r0 and r1. */ - { - ST sp, lr - ADDI_PTR r11, sp, -(3 * REGSIZE) - move r10, sp - } - ADDI_PTR sp, sp, -(4 * REGSIZE) - cfi_def_cfa_offset (4 * REGSIZE) - cfi_offset (lr, 0) - { - ST r11, r10 - ADDI_PTR r10, sp, (2 * REGSIZE) - } - { - ST r10, r0 - ADDI_PTR r10, sp, (3 * REGSIZE) - } - ST r10, r1 - - /* Save the current context. */ - jal __getcontext - - /* Tear down the frame and restore r0, r1, and lr. */ - { - BNEZ r0, .Lerror - ADDI_PTR r1, sp, 3 * REGSIZE - } - { - LD r1, r1 - ADDI_PTR r0, sp, 2 * REGSIZE - } - { - LD r0, r0 - ADDI_PTR sp, sp, 4 * REGSIZE - } - cfi_def_cfa_offset (0) - { - LD lr, sp - ADDLI_PTR r10, r0, UC_REG(54) - } - - /* Update the stored sp and lr. */ - { - ST r10, sp - ADDLI_PTR r10, r0, UC_REG(55) - } - ST r10, lr - - /* Tail-call setcontext to finish up. */ - { - move r0, r1 - j __setcontext - } - -.Lerror: - ADDI_PTR sp, sp, 4 * REGSIZE - cfi_def_cfa_offset (0) - LD lr, sp - jrp lr -END (__swapcontext) - -weak_alias (__swapcontext, swapcontext) diff --git a/ports/sysdeps/unix/sysv/linux/tile/sys/cachectl.h b/ports/sysdeps/unix/sysv/linux/tile/sys/cachectl.h deleted file mode 100644 index 540f95e8e1..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/sys/cachectl.h +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#ifndef _SYS_CACHECTL_H -#define _SYS_CACHECTL_H 1 - -#include - -/* Get the kernel definition for the op bits. */ -#include - -__BEGIN_DECLS - -#ifdef __USE_MISC -extern int cacheflush (void *__addr, const int __nbytes, const int __op) __THROW; -#endif -extern int _flush_cache (char *__addr, const int __nbytes, const int __op) __THROW; - -__END_DECLS - -#endif /* sys/cachectl.h */ diff --git a/ports/sysdeps/unix/sysv/linux/tile/sys/dataplane.h b/ports/sysdeps/unix/sysv/linux/tile/sys/dataplane.h deleted file mode 100644 index d333ec0fd3..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/sys/dataplane.h +++ /dev/null @@ -1,33 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#ifndef _SYS_DATAPLANE_H -#define _SYS_DATAPLANE_H 1 - -#include - -/* Get the kernel definition for the flag bits. */ -#include - -__BEGIN_DECLS - -extern int set_dataplane (int flags); - -__END_DECLS - -#endif /* sys/dataplane.h */ diff --git a/ports/sysdeps/unix/sysv/linux/tile/sys/procfs.h b/ports/sysdeps/unix/sysv/linux/tile/sys/procfs.h deleted file mode 100644 index 440ce45ffe..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/sys/procfs.h +++ /dev/null @@ -1,128 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#ifndef _SYS_PROCFS_H -#define _SYS_PROCFS_H 1 - -/* This is somewhat modelled after the file of the same name on SVR4 - systems. It provides a definition of the core file format for ELF - used on Linux. It doesn't have anything to do with the /proc file - system, even though Linux has one. - - Anyway, the whole purpose of this file is for GDB and GDB only. - Don't read too much into it. Don't use it for anything other than - GDB unless you know what you are doing. */ - -#include -#include -#include - -#define __need_int_reg_t -#include - -__BEGIN_DECLS - -/* Type for a general-purpose register. */ -typedef __uint_reg_t elf_greg_t; - -/* And the whole bunch of them. We could have used `struct pt_regs' - from directly in the typedef, but tradition says that - the register set is an array, which does have some peculiar - semantics, so leave it that way. */ -#define ELF_NGREG 64 -#define ELF_NFPREG 0 -typedef elf_greg_t elf_gregset_t[ELF_NGREG]; -typedef elf_greg_t elf_fpregset_t[ELF_NFPREG]; - -/* Signal info. */ -struct elf_siginfo - { - int si_signo; /* Signal number. */ - int si_code; /* Extra code. */ - int si_errno; /* Errno. */ - }; - - -/* Definitions to generate Intel SVR4-like core files. These mostly - have the same names as the SVR4 types with "elf_" tacked on the - front to prevent clashes with Linux definitions, and the typedef - forms have been avoided. This is mostly like the SVR4 structure, - but more Linuxy, with things that Linux does not support and which - GDB doesn't really use excluded. */ - -struct elf_prstatus - { - struct elf_siginfo pr_info; /* Info associated with signal. */ - short int pr_cursig; /* Current signal. */ - unsigned long int pr_sigpend; /* Set of pending signals. */ - unsigned long int pr_sighold; /* Set of held signals. */ - __pid_t pr_pid; - __pid_t pr_ppid; - __pid_t pr_pgrp; - __pid_t pr_sid; - struct timeval pr_utime; /* User time. */ - struct timeval pr_stime; /* System time. */ - struct timeval pr_cutime; /* Cumulative user time. */ - struct timeval pr_cstime; /* Cumulative system time. */ - elf_gregset_t pr_reg; /* GP registers. */ - int pr_fpvalid; /* True if math copro being used. */ - }; - - -#define ELF_PRARGSZ (80) /* Number of chars for args. */ - -struct elf_prpsinfo - { - char pr_state; /* Numeric process state. */ - char pr_sname; /* Char for pr_state. */ - char pr_zomb; /* Zombie. */ - char pr_nice; /* Nice val. */ - unsigned long int pr_flag; /* Flags. */ - unsigned int pr_uid; - unsigned int pr_gid; - int pr_pid, pr_ppid, pr_pgrp, pr_sid; - /* Lots missing */ - char pr_fname[16]; /* Filename of executable. */ - char pr_psargs[ELF_PRARGSZ]; /* Initial part of arg list. */ - }; - - -/* The rest of this file provides the types for emulation of the - Solaris interfaces that should be implemented by - users of libthread_db. */ - -/* Addresses. */ -typedef void *psaddr_t; - -/* Register sets. Linux has different names. */ -typedef elf_gregset_t prgregset_t; - -/* Provide dummy declaration here; we don't have FP registers. */ -typedef elf_fpregset_t prfpregset_t; - -/* We don't have any differences between processes and threads, - therefore have only one PID type. */ -typedef __pid_t lwpid_t; - -/* Process status and info. In the end we do provide typedefs for them. */ -typedef struct elf_prstatus prstatus_t; -typedef struct elf_prpsinfo prpsinfo_t; - -__END_DECLS - -#endif /* sys/procfs.h */ diff --git a/ports/sysdeps/unix/sysv/linux/tile/sys/ptrace.h b/ports/sysdeps/unix/sysv/linux/tile/sys/ptrace.h deleted file mode 100644 index be31308dd3..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/sys/ptrace.h +++ /dev/null @@ -1,183 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#ifndef _SYS_PTRACE_H -#define _SYS_PTRACE_H 1 - -#include -#include - -__BEGIN_DECLS - -/* Type of the REQUEST argument to `ptrace.' */ -enum __ptrace_request -{ - /* Indicate that the process making this request should be traced. - All signals received by this process can be intercepted by its - parent, and its parent can use the other `ptrace' requests. */ - PTRACE_TRACEME = 0, -#define PT_TRACE_ME PTRACE_TRACEME - - /* Return the word in the process's text space at address ADDR. */ - PTRACE_PEEKTEXT = 1, -#define PT_READ_I PTRACE_PEEKTEXT - - /* Return the word in the process's data space at address ADDR. */ - PTRACE_PEEKDATA = 2, -#define PT_READ_D PTRACE_PEEKDATA - - /* Return the word in the process's user area at offset ADDR. */ - PTRACE_PEEKUSER = 3, -#define PT_READ_U PTRACE_PEEKUSER - - /* Write the word DATA into the process's text space at address ADDR. */ - PTRACE_POKETEXT = 4, -#define PT_WRITE_I PTRACE_POKETEXT - - /* Write the word DATA into the process's data space at address ADDR. */ - PTRACE_POKEDATA = 5, -#define PT_WRITE_D PTRACE_POKEDATA - - /* Write the word DATA into the process's user area at offset ADDR. */ - PTRACE_POKEUSER = 6, -#define PT_WRITE_U PTRACE_POKEUSER - - /* Continue the process. */ - PTRACE_CONT = 7, -#define PT_CONTINUE PTRACE_CONT - - /* Kill the process. */ - PTRACE_KILL = 8, -#define PT_KILL PTRACE_KILL - - /* Single step the process. */ - PTRACE_SINGLESTEP = 9, -#define PT_STEP PTRACE_SINGLESTEP - - /* Get all general purpose registers used by a processes. */ - PTRACE_GETREGS = 12, -#define PT_GETREGS PTRACE_GETREGS - - /* Set all general purpose registers used by a processes. */ - PTRACE_SETREGS = 13, -#define PT_SETREGS PTRACE_SETREGS - - /* Attach to a process that is already running. */ - PTRACE_ATTACH = 16, -#define PT_ATTACH PTRACE_ATTACH - - /* Detach from a process attached to with PTRACE_ATTACH. */ - PTRACE_DETACH = 17, -#define PT_DETACH PTRACE_DETACH - - /* Continue and stop at the next (return from) syscall. */ - PTRACE_SYSCALL = 24, -#define PT_SYSCALL PTRACE_SYSCALL - - /* Set ptrace filter options. */ - PTRACE_SETOPTIONS = 0x4200, -#define PT_SETOPTIONS PTRACE_SETOPTIONS - - /* Get last ptrace message. */ - PTRACE_GETEVENTMSG = 0x4201, -#define PT_GETEVENTMSG PTRACE_GETEVENTMSG - - /* Get siginfo for process. */ - PTRACE_GETSIGINFO = 0x4202, -#define PT_GETSIGINFO PTRACE_GETSIGINFO - - /* Set new siginfo for process. */ - PTRACE_SETSIGINFO = 0x4203, -#define PT_SETSIGINFO PTRACE_SETSIGINFO - - /* Set register content. */ - PTRACE_SETREGSET = 0x4205, -#define PTRACE_SETREGSET PTRACE_SETREGSET - - /* Like PTRACE_ATTACH, but do not force tracee to trap and do not affect - signal or group stop state. */ - PTRACE_SEIZE = 0x4206, -#define PTRACE_SEIZE PTRACE_SEIZE - - /* Trap seized tracee. */ - PTRACE_INTERRUPT = 0x4207, -#define PTRACE_INTERRUPT PTRACE_INTERRUPT - - /* Wait for next group event. */ - PTRACE_LISTEN = 0x4208, -#define PTRACE_LISTEN PTRACE_LISTEN - - PTRACE_PEEKSIGINFO = 0x4209 -#define PTRACE_PEEKSIGINFO PTRACE_PEEKSIGINFO -}; - - -/* Options set using PTRACE_SETOPTIONS. */ -enum __ptrace_setoptions -{ - PTRACE_O_TRACESYSGOOD = 0x00000001, - PTRACE_O_TRACEFORK = 0x00000002, - PTRACE_O_TRACEVFORK = 0x00000004, - PTRACE_O_TRACECLONE = 0x00000008, - PTRACE_O_TRACEEXEC = 0x00000010, - PTRACE_O_TRACEVFORKDONE = 0x00000020, - PTRACE_O_TRACEEXIT = 0x00000040, - PTRACE_O_TRACESECCOMP = 0x00000080, - PTRACE_O_MASK = 0x000000ff -}; - -/* Wait extended result codes for the above trace options. */ -enum __ptrace_eventcodes -{ - PTRACE_EVENT_FORK = 1, - PTRACE_EVENT_VFORK = 2, - PTRACE_EVENT_CLONE = 3, - PTRACE_EVENT_EXEC = 4, - PTRACE_EVENT_VFORK_DONE = 5, - PTRACE_EVENT_EXIT = 6, - PTRACE_EVENT_SECCOMP = 7 -}; - -/* Arguments for PTRACE_PEEKSIGINFO. */ -struct __ptrace_peeksiginfo_args -{ - __uint64_t off; /* From which siginfo to start. */ - __uint32_t flags; /* Flags for peeksiginfo. */ - __int32_t nr; /* How many siginfos to take. */ -}; - -enum __ptrace_peeksiginfo_flags -{ - /* Read signals from a shared (process wide) queue. */ - PTRACE_PEEKSIGINFO_SHARED = (1 << 0) -}; - -/* Perform process tracing functions. REQUEST is one of the values - above, and determines the action to be taken. - For all requests except PTRACE_TRACEME, PID specifies the process to be - traced. - - PID and the other arguments described above for the various requests should - appear (those that are used for the particular request) as: - pid_t PID, void *ADDR, int DATA, void *ADDR2 - after REQUEST. */ -extern long int ptrace (enum __ptrace_request __request, ...) __THROW; - -__END_DECLS - -#endif /* _SYS_PTRACE_H */ diff --git a/ports/sysdeps/unix/sysv/linux/tile/sys/reg.h b/ports/sysdeps/unix/sysv/linux/tile/sys/reg.h deleted file mode 100644 index 1ab17ce82a..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/sys/reg.h +++ /dev/null @@ -1,2 +0,0 @@ -/* The traditional purpose of "sys/reg.h" is satisfied by "arch/abi.h". */ -#include diff --git a/ports/sysdeps/unix/sysv/linux/tile/sys/ucontext.h b/ports/sysdeps/unix/sysv/linux/tile/sys/ucontext.h deleted file mode 100644 index ac540f4775..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/sys/ucontext.h +++ /dev/null @@ -1,70 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#ifndef _SYS_UCONTEXT_H -#define _SYS_UCONTEXT_H 1 - -#include -#include - -/* We need the signal context definitions even if they are not used - included in . */ -#include - -/* Get register type and register names. */ -#include - -/* Type for general register. */ -typedef uint_reg_t greg_t; - -/* Number of general registers. Must agree with . */ -#define NGREG 64 - -/* Container for all general registers. */ -typedef greg_t gregset_t[NGREG]; - -#ifdef __USE_GNU -/* Names for interesting registers in the `gregset_t' array. */ -enum -{ - /* ... r0 through r51 are just 0 through 51 ... */ - REG_FP = TREG_FP, -# define REG_FP REG_FP - REG_TP = TREG_TP, -# define REG_TP REG_TP - REG_SP = TREG_SP, -# define REG_SP REG_SP - REG_LR = TREG_LR, -# define REG_LR REG_LR -}; -#endif - -/* A machine context is exactly a sigcontext. */ -typedef struct sigcontext mcontext_t; - -/* Userlevel context. */ -typedef struct ucontext - { - unsigned long int uc_flags; - struct ucontext *uc_link; - stack_t uc_stack; - mcontext_t uc_mcontext; - __sigset_t uc_sigmask; - } ucontext_t; - -#endif /* sys/ucontext.h */ diff --git a/ports/sysdeps/unix/sysv/linux/tile/sys/user.h b/ports/sysdeps/unix/sysv/linux/tile/sys/user.h deleted file mode 100644 index c871f1a03d..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/sys/user.h +++ /dev/null @@ -1 +0,0 @@ -/* This file is not needed, but in practice gdb might try to include it. */ diff --git a/ports/sysdeps/unix/sysv/linux/tile/syscall.S b/ports/sysdeps/unix/sysv/linux/tile/syscall.S deleted file mode 100644 index 11463f3808..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/syscall.S +++ /dev/null @@ -1,32 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include - - .text -ENTRY (syscall) - FEEDBACK_ENTER(syscall) - { move TREG_SYSCALL_NR_NAME, r0; move r0, r1 } - { move r1, r2; move r2, r3 } - { move r3, r4; move r4, r5 } - { move r5, r6; move r6, r7 } - swint1 - BNEZ r1, 0f - jrp lr -PSEUDO_END (syscall) diff --git a/ports/sysdeps/unix/sysv/linux/tile/sysdep.c b/ports/sysdeps/unix/sysv/linux/tile/sysdep.c deleted file mode 100644 index ffd1eef54f..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/sysdep.c +++ /dev/null @@ -1,33 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include - -int __syscall_error (int dummy, int err); -hidden_proto (__syscall_error) - -/* This routine is jumped to by all the syscall handlers, to stash - an error number into errno. */ -int -__syscall_error (int dummy, int err) -{ - __set_errno (err); - return -1; -} -hidden_def (__syscall_error) diff --git a/ports/sysdeps/unix/sysv/linux/tile/sysdep.h b/ports/sysdeps/unix/sysv/linux/tile/sysdep.h deleted file mode 100644 index f2214f6cff..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/sysdep.h +++ /dev/null @@ -1,223 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include - -#undef SYS_ify -#define SYS_ify(syscall_name) __NR_##syscall_name - - -#ifdef __ASSEMBLER__ - -/* The actual implementation of doing a syscall. */ -#define DO_CALL(syscall_name, args) \ - moveli TREG_SYSCALL_NR_NAME, SYS_ify(syscall_name); \ - swint1 - -/* TILE Linux returns the result in r0 (or a negative errno). - The kernel "owns" the code to decide if a given value is an error, - and puts errno in r1 if so, or otherwise zero. */ -#define PSEUDO(name, syscall_name, args) \ - ENTRY (name); \ - DO_CALL(syscall_name, args); \ - BNEZ r1, 0f - -#define ret jrp lr - -#ifndef PIC -/* For static code, on error jump to __syscall_error directly. */ -# define SYSCALL_ERROR_NAME __syscall_error -#elif !defined NOT_IN_libc || defined IS_IN_libpthread -/* Use the internal name for libc/libpthread shared objects. */ -# define SYSCALL_ERROR_NAME __GI___syscall_error -#else -/* Otherwise, on error do a full PLT jump. */ -# define SYSCALL_ERROR_NAME plt(__syscall_error) -#endif - -#define PSEUDO_END(name) \ -0: \ - j SYSCALL_ERROR_NAME; \ - END (name) - -#define PSEUDO_NOERRNO(name, syscall_name, args) \ - ENTRY (name); \ - DO_CALL(syscall_name, args) - -#define ret_NOERRNO jrp lr - -#define PSEUDO_END_NOERRNO(name) \ - END (name) - -/* Convenience wrappers. */ -#define SYSCALL__(name, args) PSEUDO (__##name, name, args) -#define SYSCALL(name, args) PSEUDO (name, name, args) - -#else /* not __ASSEMBLER__ */ - -#include - -/* Define a macro which expands inline into the wrapper code for a system - call. */ -# undef INLINE_SYSCALL -# define INLINE_SYSCALL(name, nr, args...) \ - ({ \ - INTERNAL_SYSCALL_DECL (err); \ - unsigned long val = INTERNAL_SYSCALL (name, err, nr, args); \ - if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (val, err), 0)) \ - { \ - __set_errno (INTERNAL_SYSCALL_ERRNO (val, err)); \ - val = -1; \ - } \ - (long) val; }) - -#undef INTERNAL_SYSCALL -#define INTERNAL_SYSCALL(name, err, nr, args...) \ - internal_syscall##nr (SYS_ify (name), err, args) - -#undef INTERNAL_SYSCALL_NCS -#define INTERNAL_SYSCALL_NCS(number, err, nr, args...) \ - internal_syscall##nr (number, err, args) - -#undef INTERNAL_SYSCALL_DECL -#define INTERNAL_SYSCALL_DECL(err) int err - -#undef INTERNAL_SYSCALL_ERROR_P -#define INTERNAL_SYSCALL_ERROR_P(val, err) ({ (void) (val); (err) != 0; }) - -#undef INTERNAL_SYSCALL_ERRNO -#define INTERNAL_SYSCALL_ERRNO(val, err) ({ (void) (val); (err); }) - -#define internal_syscall0(num, err, dummy...) \ - ({ \ - long _sys_result, __SYSCALL_CLOBBER_DECLS; \ - __asm__ __volatile__ ( \ - "swint1" \ - : "=R00" (_sys_result), "=R01" (err), __SYSCALL_CLOBBER_OUTPUTS \ - : "R10" (num) \ - : __SYSCALL_CLOBBERS); \ - _sys_result; \ - }) - -#define internal_syscall1(num, err, arg0) \ - ({ \ - long _sys_result, __SYSCALL_CLOBBER_DECLS; \ - __asm__ __volatile__ ( \ - "swint1" \ - : "=R00" (_sys_result), "=R01" (err), __SYSCALL_CLOBBER_OUTPUTS \ - : "R10" (num), "R00" (arg0) \ - : __SYSCALL_CLOBBERS); \ - _sys_result; \ - }) - -#define internal_syscall2(num, err, arg0, arg1) \ - ({ \ - long _sys_result, __SYSCALL_CLOBBER_DECLS; \ - __asm__ __volatile__ ( \ - "swint1" \ - : "=R00" (_sys_result), "=R01" (err), __SYSCALL_CLOBBER_OUTPUTS \ - : "R10" (num), "R00" (arg0), "R01" (arg1) \ - : __SYSCALL_CLOBBERS); \ - _sys_result; \ - }) - -#define internal_syscall3(num, err, arg0, arg1, arg2) \ - ({ \ - long _sys_result, __SYSCALL_CLOBBER_DECLS; \ - __asm__ __volatile__ ( \ - "swint1" \ - : "=R00" (_sys_result), "=R01" (err), __SYSCALL_CLOBBER_OUTPUTS \ - : "R10" (num), "R00" (arg0), "R01" (arg1), "R02" (arg2) \ - : __SYSCALL_CLOBBERS); \ - _sys_result; \ - }) - -#define internal_syscall4(num, err, arg0, arg1, arg2, arg3) \ - ({ \ - long _sys_result, __SYSCALL_CLOBBER_DECLS; \ - __asm__ __volatile__ ( \ - "swint1" \ - : "=R00" (_sys_result), "=R01" (err), __SYSCALL_CLOBBER_OUTPUTS \ - : "R10" (num), "R00" (arg0), "R01" (arg1), "R02" (arg2), \ - "R03" (arg3) \ - : __SYSCALL_CLOBBERS); \ - _sys_result; \ - }) - -#define internal_syscall5(num, err, arg0, arg1, arg2, arg3, arg4) \ - ({ \ - long _sys_result, __SYSCALL_CLOBBER_DECLS; \ - __asm__ __volatile__ ( \ - "swint1" \ - : "=R00" (_sys_result), "=R01" (err), __SYSCALL_CLOBBER_OUTPUTS \ - : "R10" (num), "R00" (arg0), "R01" (arg1), "R02" (arg2), \ - "R03" (arg3), "R04" (arg4) \ - : __SYSCALL_CLOBBERS); \ - _sys_result; \ - }) - -#define internal_syscall6(num, err, arg0, arg1, arg2, arg3, arg4, arg5) \ - ({ \ - long _sys_result, __SYSCALL_CLOBBER_DECLS; \ - __asm__ __volatile__ ( \ - "swint1" \ - : "=R00" (_sys_result), "=R01" (err), __SYSCALL_CLOBBER_OUTPUTS \ - : "R10" (num), "R00" (arg0), "R01" (arg1), "R02" (arg2), \ - "R03" (arg3), "R04" (arg4), "R05" (arg5) \ - : __SYSCALL_CLOBBERS); \ - _sys_result; \ - }) - -#undef __SYSCALL_CLOBBERS -#define __SYSCALL_CLOBBERS \ - "r6", "r7", \ - "r8", "r9", "r11", "r12", "r13", "r14", "r15", \ - "r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23", \ - "r24", "r25", "r26", "r27", "r28", "r29", "memory" - -/* gcc doesn't seem to allow an input operand to be clobbered, so we - fake it with dummy outputs. */ -#define __SYSCALL_CLOBBER_DECLS \ - _clobber_r2, _clobber_r3, _clobber_r4, _clobber_r5, _clobber_r10 - -#define __SYSCALL_CLOBBER_OUTPUTS \ - "=R02" (_clobber_r2), "=R03" (_clobber_r3), "=R04" (_clobber_r4), \ - "=R05" (_clobber_r5), "=R10" (_clobber_r10) - -#endif /* not __ASSEMBLER__ */ - -/* Pointer mangling support. */ -#if defined NOT_IN_libc && defined IS_IN_rtld -/* We cannot use the thread descriptor because in ld.so we use setjmp - earlier than the descriptor is initialized. */ -#else -# ifdef __ASSEMBLER__ -# define PTR_MANGLE(reg, tmpreg) \ - ADDLI_PTR tmpreg, pt, POINTER_GUARD; \ - LD tmpreg, tmpreg; \ - xor reg, tmpreg, reg -# define PTR_DEMANGLE(reg, tmpreg) PTR_MANGLE (reg, tmpreg) -# else -# define PTR_MANGLE(var) \ - (var) = (__typeof (var)) ((uintptr_t) (var) ^ THREAD_GET_POINTER_GUARD ()) -# define PTR_DEMANGLE(var) PTR_MANGLE (var) -# endif -#endif diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/Makefile b/ports/sysdeps/unix/sysv/linux/tile/tilegx/Makefile deleted file mode 100644 index 4f101f334a..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -# Provide biarch definitions. -abi-variants := 64 32 -abi-64-options := -D__LP64__ -abi-64-condition := __WORDSIZE == 64 -abi-32-options := -U__LP64__ -abi-32-condition := __WORDSIZE == 32 diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/configure b/ports/sysdeps/unix/sysv/linux/tile/tilegx/configure deleted file mode 100644 index 0a6a63ff99..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/configure +++ /dev/null @@ -1,4 +0,0 @@ -# This file is generated from configure.ac by Autoconf. DO NOT EDIT! - # Local configure fragment for sysdeps/unix/sysv/linux/tile/tilegx - -ldd_rewrite_script=$dir/ldd-rewrite.sed diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/configure.ac b/ports/sysdeps/unix/sysv/linux/tile/tilegx/configure.ac deleted file mode 100644 index 87d86bd4c0..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/configure.ac +++ /dev/null @@ -1,4 +0,0 @@ -GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. -# Local configure fragment for sysdeps/unix/sysv/linux/tile/tilegx - -ldd_rewrite_script=$dir/ldd-rewrite.sed diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/ioctl.S b/ports/sysdeps/unix/sysv/linux/tile/tilegx/ioctl.S deleted file mode 100644 index c12129958c..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/ioctl.S +++ /dev/null @@ -1,41 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - - -/* TILE-Gx specifies that "unsigned int" is sign extended in the high - 32 bits. But since the userspace API claims to be "unsigned long", - calls into __ioctl() will not be sign extended, but rather pass all - 64 bits of the argument. Therefore, when we pass the "request" - value to the kernel, we must explicitly sign-extend it to match the - kernel's internal use of "unsigned int" as the second argument, - which we do by casting to "unsigned int". */ - -#include - - .text -ENTRY (__ioctl) - FEEDBACK_ENTER(__ioctl) - { - addxi r1, r1, 0 - moveli TREG_SYSCALL_NR_NAME, __NR_ioctl - } - swint1 - BNEZ r1, 0f - jrp lr -PSEUDO_END (__ioctl) -weak_alias (__ioctl, ioctl) diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/ldconfig.h b/ports/sysdeps/unix/sysv/linux/tile/tilegx/ldconfig.h deleted file mode 100644 index c5eaeb65ab..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/ldconfig.h +++ /dev/null @@ -1,26 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include - -#define SYSDEP_KNOWN_INTERPRETER_NAMES \ - { "/lib/ld.so.1", FLAG_ELF_LIBC6 }, \ - { "/lib32/ld.so.1", FLAG_ELF_LIBC6 }, -#define SYSDEP_KNOWN_LIBRARY_NAMES \ - { "libc.so.6", FLAG_ELF_LIBC6 }, \ - { "libm.so.6", FLAG_ELF_LIBC6 }, diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/ldd-rewrite.sed b/ports/sysdeps/unix/sysv/linux/tile/tilegx/ldd-rewrite.sed deleted file mode 100644 index 8b0bb691cc..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/ldd-rewrite.sed +++ /dev/null @@ -1 +0,0 @@ -s_^\(RTLDLIST=\)\(.*lib\)\(\|32\)\(/[^/]*\.so\.[0-9.]*\)[ ]*$_\1"\2\4 \232\4"_ diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/register-dump.h b/ports/sysdeps/unix/sysv/linux/tile/tilegx/register-dump.h deleted file mode 100644 index 2c629c5dc3..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/register-dump.h +++ /dev/null @@ -1,123 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include <_itoa.h> - -/* We will print the register dump in this format: - - R0: XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX - R4: XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX - R8: XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX - R12: XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX - R16: XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX - R20: XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX - R24: XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX - R28: XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX - R32: XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX - R36: XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX - R40: XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX - R44: XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX - R48: XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX - R52: XXXXXXXXXXXXXXXX TP: XXXXXXXXXXXXXXXX - SP: XXXXXXXXXXXXXXXX LR: XXXXXXXXXXXXXXXX - - PC: XXXXXXXXXXXXXXXX ICS: X FAULTNUM: XX - - */ - -static void -hexvalue (unsigned long int value, char *buf, size_t len) -{ - char *cp = _itoa_word (value, buf + len, 16, 0); - while (cp > buf) - *--cp = '0'; -} - -static void -register_dump (int fd, mcontext_t *ctx) -{ - char regs[59][16]; - struct iovec iov[132]; - size_t nr = 0; - unsigned int i; - -#define ADD_STRING(str) \ - iov[nr].iov_base = (char *) str; \ - iov[nr].iov_len = strlen (str); \ - ++nr -#define ADD_MEM(str, len) \ - iov[nr].iov_base = str; \ - iov[nr].iov_len = len; \ - ++nr - - /* Generate strings of register contents. */ - for (i = 0; i < 56; ++i) - hexvalue (ctx->gregs[i], regs[i], 16); - hexvalue (ctx->pc, regs[56], 16); - hexvalue (ctx->ics, regs[57], 1); - hexvalue (ctx->faultnum, regs[58], 2); - - /* Generate the output. */ - for (i = 0; i < 56;) - { - const char *prefixes[] = { - "Register dump:\n\n R0: ", - "\n R4: ", - "\n R8: ", - "\n R12: ", - "\n R16: ", - "\n R20: ", - "\n R24: ", - "\n R28: ", - "\n R32: ", - "\n R36: ", - "\n R40: ", - "\n R44: ", - "\n R48: " - }; - ADD_STRING (prefixes[i / 4]); - do - { - ADD_MEM (regs[i], 16); - ADD_STRING (" "); - } - while (++i % 4); - } - ADD_STRING ("\n R52: "); - ADD_MEM (regs[52], 16); - ADD_STRING (" TP: "); - ADD_MEM (regs[53], 16); - ADD_STRING ("\n SP: "); - ADD_MEM (regs[54], 16); - ADD_STRING (" LR: "); - ADD_MEM (regs[55], 16); - ADD_STRING ("\n\n PC: "); - ADD_MEM (regs[56], 16); - ADD_STRING (" ICS: "); - ADD_MEM (regs[57], 1); - ADD_STRING (" FAULTNUM: "); - ADD_MEM (regs[58], 2); - ADD_STRING ("\n"); - - /* Write the stuff out. */ - writev (fd, iov, nr); -} - - -#define REGISTER_DUMP register_dump (fd, &ctx->uc_mcontext) diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/sched_getcpu.c b/ports/sysdeps/unix/sysv/linux/tile/tilegx/sched_getcpu.c deleted file mode 100644 index beba3f4d05..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/sched_getcpu.c +++ /dev/null @@ -1,87 +0,0 @@ -/* Copyright (C) 2012-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include -#include -#include -#include - - -/* The count of cores horizontally (X dimension) on the chip. */ -static int chip_width; - -/* Read the chip "width" from the /sys filesystem. */ -static int -initialize_chip_width (void) -{ - int w = 0; - int fd; - - fd = __open ("/sys/devices/system/cpu/chip_width", O_RDONLY); - if (fd >= 0) - { - char buf[64]; - ssize_t n; - int i; - - n = __read (fd, buf, sizeof (buf)); - __close (fd); - - for (i = 0; i < n; ++i) - { - if (buf[i] < '0' || buf[i] > '9') - break; - w = (w * 10) + (buf[i] - '0'); - } - } - - /* Store a negative value so we don't try again. */ - if (w == 0) - w = -1; - - /* Using an atomic idempotent write here makes this thread-safe. */ - chip_width = w; - return w; -} - -int -sched_getcpu (void) -{ - unsigned int coord; - int w = chip_width; - - if (__builtin_expect (w <= 0, 0)) - { - if (w == 0) - w = initialize_chip_width (); - if (w < 0) - { - unsigned int cpu; - int r = INLINE_SYSCALL (getcpu, 3, &cpu, NULL, NULL); - return r == -1 ? r : cpu; - } - } - - /* Assign 64-bit value to a 32-bit variable to ensure 32-bit multiply. */ - coord = __insn_mfspr (SPR_TILE_COORD); - - /* Extract Y coord from bits 7..10 and X coord from bits 18..21. */ - return ((coord >> 7) & 0xf) * w + ((coord >> 18) & 0xf); -} diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/Implies b/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/Implies deleted file mode 100644 index 9090d3fb8b..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/Implies +++ /dev/null @@ -1,4 +0,0 @@ -unix/sysv/linux/tile/tilegx -unix/sysv/linux/tile -unix/sysv/linux/generic/wordsize-32 -unix/sysv/linux/generic diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/Makefile b/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/Makefile deleted file mode 100644 index 1e9d29be31..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/Makefile +++ /dev/null @@ -1 +0,0 @@ -default-abi := 32 diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/c++-types.data b/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/c++-types.data deleted file mode 100644 index 1a7bcb38d3..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/c++-types.data +++ /dev/null @@ -1,67 +0,0 @@ -blkcnt64_t:x -blkcnt_t:l -blksize_t:i -caddr_t:Pc -clockid_t:i -clock_t:l -daddr_t:i -dev_t:y -fd_mask:l -fsblkcnt64_t:y -fsblkcnt_t:m -fsfilcnt64_t:y -fsfilcnt_t:m -fsid_t:8__fsid_t -gid_t:j -id_t:j -ino64_t:y -ino_t:m -int16_t:s -int32_t:i -int64_t:x -int8_t:a -intptr_t:i -key_t:i -loff_t:x -mode_t:j -nlink_t:j -off64_t:x -off_t:l -pid_t:i -pthread_attr_t:14pthread_attr_t -pthread_barrier_t:17pthread_barrier_t -pthread_barrierattr_t:21pthread_barrierattr_t -pthread_cond_t:14pthread_cond_t -pthread_condattr_t:18pthread_condattr_t -pthread_key_t:j -pthread_mutex_t:15pthread_mutex_t -pthread_mutexattr_t:19pthread_mutexattr_t -pthread_once_t:i -pthread_rwlock_t:16pthread_rwlock_t -pthread_rwlockattr_t:20pthread_rwlockattr_t -pthread_spinlock_t:i -pthread_t:m -quad_t:x -register_t:x -rlim64_t:y -rlim_t:m -sigset_t:10__sigset_t -size_t:j -socklen_t:j -ssize_t:i -suseconds_t:l -time_t:l -u_char:h -uid_t:j -uint:j -u_int:j -u_int16_t:t -u_int32_t:j -u_int64_t:y -u_int8_t:h -ulong:m -u_long:m -u_quad_t:y -useconds_t:j -ushort:t -u_short:t diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/ld.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/ld.abilist deleted file mode 100644 index 4367346594..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/ld.abilist +++ /dev/null @@ -1,11 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - __libc_memalign F - __libc_stack_end D 0x4 - __tls_get_addr F - _dl_mcount F - _r_debug D 0x14 - calloc F - free F - malloc F - realloc F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libBrokenLocale.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libBrokenLocale.abilist deleted file mode 100644 index 4af9128544..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libBrokenLocale.abilist +++ /dev/null @@ -1,3 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - __ctype_get_mb_cur_max F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libanl.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libanl.abilist deleted file mode 100644 index 29e602a75a..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libanl.abilist +++ /dev/null @@ -1,6 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - gai_cancel F - gai_error F - gai_suspend F - getaddrinfo_a F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libc.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libc.abilist deleted file mode 100644 index caf74b89e1..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libc.abilist +++ /dev/null @@ -1,2093 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - _Exit F - _IO_2_1_stderr_ D 0xa0 - _IO_2_1_stdin_ D 0xa0 - _IO_2_1_stdout_ D 0xa0 - _IO_adjust_column F - _IO_adjust_wcolumn F - _IO_default_doallocate F - _IO_default_finish F - _IO_default_pbackfail F - _IO_default_uflow F - _IO_default_xsgetn F - _IO_default_xsputn F - _IO_do_write F - _IO_doallocbuf F - _IO_fclose F - _IO_fdopen F - _IO_feof F - _IO_ferror F - _IO_fflush F - _IO_fgetpos F - _IO_fgetpos64 F - _IO_fgets F - _IO_file_attach F - _IO_file_close F - _IO_file_close_it F - _IO_file_doallocate F - _IO_file_finish F - _IO_file_fopen F - _IO_file_init F - _IO_file_jumps D 0x54 - _IO_file_open F - _IO_file_overflow F - _IO_file_read F - _IO_file_seek F - _IO_file_seekoff F - _IO_file_setbuf F - _IO_file_stat F - _IO_file_sync F - _IO_file_underflow F - _IO_file_write F - _IO_file_xsputn F - _IO_flockfile F - _IO_flush_all F - _IO_flush_all_linebuffered F - _IO_fopen F - _IO_fprintf F - _IO_fputs F - _IO_fread F - _IO_free_backup_area F - _IO_free_wbackup_area F - _IO_fsetpos F - _IO_fsetpos64 F - _IO_ftell F - _IO_ftrylockfile F - _IO_funlockfile F - _IO_fwrite F - _IO_getc F - _IO_getline F - _IO_getline_info F - _IO_gets F - _IO_init F - _IO_init_marker F - _IO_init_wmarker F - _IO_iter_begin F - _IO_iter_end F - _IO_iter_file F - _IO_iter_next F - _IO_least_wmarker F - _IO_link_in F - _IO_list_all D 0x4 - _IO_list_lock F - _IO_list_resetlock F - _IO_list_unlock F - _IO_marker_delta F - _IO_marker_difference F - _IO_padn F - _IO_peekc_locked F - _IO_popen F - _IO_printf F - _IO_proc_close F - _IO_proc_open F - _IO_putc F - _IO_puts F - _IO_remove_marker F - _IO_seekmark F - _IO_seekoff F - _IO_seekpos F - _IO_seekwmark F - _IO_setb F - _IO_setbuffer F - _IO_setvbuf F - _IO_sgetn F - _IO_sprintf F - _IO_sputbackc F - _IO_sputbackwc F - _IO_sscanf F - _IO_str_init_readonly F - _IO_str_init_static F - _IO_str_overflow F - _IO_str_pbackfail F - _IO_str_seekoff F - _IO_str_underflow F - _IO_sungetc F - _IO_sungetwc F - _IO_switch_to_get_mode F - _IO_switch_to_main_wget_area F - _IO_switch_to_wbackup_area F - _IO_switch_to_wget_mode F - _IO_un_link F - _IO_ungetc F - _IO_unsave_markers F - _IO_unsave_wmarkers F - _IO_vfprintf F - _IO_vfscanf F - _IO_vsprintf F - _IO_wdefault_doallocate F - _IO_wdefault_finish F - _IO_wdefault_pbackfail F - _IO_wdefault_uflow F - _IO_wdefault_xsgetn F - _IO_wdefault_xsputn F - _IO_wdo_write F - _IO_wdoallocbuf F - _IO_wfile_jumps D 0x54 - _IO_wfile_overflow F - _IO_wfile_seekoff F - _IO_wfile_sync F - _IO_wfile_underflow F - _IO_wfile_xsputn F - _IO_wmarker_delta F - _IO_wsetb F - ___brk_addr D 0x4 - __adjtimex F - __after_morecore_hook D 0x4 - __argz_count F - __argz_next F - __argz_stringify F - __asprintf F - __asprintf_chk F - __assert F - __assert_fail F - __assert_perror_fail F - __backtrace F - __backtrace_symbols F - __backtrace_symbols_fd F - __bsd_getpgrp F - __bzero F - __check_rhosts_file D 0x4 - __chk_fail F - __clone F - __close F - __cmsg_nxthdr F - __confstr_chk F - __connect F - __ctype_b_loc F - __ctype_get_mb_cur_max F - __ctype_tolower_loc F - __ctype_toupper_loc F - __curbrk D 0x4 - __cxa_at_quick_exit F - __cxa_atexit F - __cxa_finalize F - __cyg_profile_func_enter F - __cyg_profile_func_exit F - __daylight D 0x4 - __dcgettext F - __default_morecore F - __dgettext F - __dprintf_chk F - __dup2 F - __duplocale F - __endmntent F - __environ D 0x4 - __errno_location F - __fbufsize F - __fcntl F - __ffs F - __fgets_chk F - __fgets_unlocked_chk F - __fgetws_chk F - __fgetws_unlocked_chk F - __finite F - __finitef F - __flbf F - __fork F - __fpending F - __fprintf_chk F - __fpu_control D 0x4 - __fpurge F - __fread_chk F - __fread_unlocked_chk F - __freadable F - __freading F - __free_hook D 0x4 - __freelocale F - __fsetlocking F - __fwprintf_chk F - __fwritable F - __fwriting F - __fxstat F - __fxstat64 F - __fxstatat F - __fxstatat64 F - __getcwd_chk F - __getdelim F - __getdomainname_chk F - __getgroups_chk F - __gethostname_chk F - __getlogin_r_chk F - __getmntent_r F - __getpagesize F - __getpgid F - __getpid F - __gets_chk F - __gettimeofday F - __getwd_chk F - __gmtime_r F - __h_errno_location F - __isalnum_l F - __isalpha_l F - __isascii_l F - __isblank_l F - __iscntrl_l F - __isctype F - __isdigit_l F - __isgraph_l F - __isinf F - __isinff F - __islower_l F - __isnan F - __isnanf F - __isoc99_fscanf F - __isoc99_fwscanf F - __isoc99_scanf F - __isoc99_sscanf F - __isoc99_swscanf F - __isoc99_vfscanf F - __isoc99_vfwscanf F - __isoc99_vscanf F - __isoc99_vsscanf F - __isoc99_vswscanf F - __isoc99_vwscanf F - __isoc99_wscanf F - __isprint_l F - __ispunct_l F - __isspace_l F - __isupper_l F - __iswalnum_l F - __iswalpha_l F - __iswblank_l F - __iswcntrl_l F - __iswctype F - __iswctype_l F - __iswdigit_l F - __iswgraph_l F - __iswlower_l F - __iswprint_l F - __iswpunct_l F - __iswspace_l F - __iswupper_l F - __iswxdigit_l F - __isxdigit_l F - __ivaliduser F - __key_decryptsession_pk_LOCAL D 0x4 - __key_encryptsession_pk_LOCAL D 0x4 - __key_gendes_LOCAL D 0x4 - __libc_allocate_rtsig F - __libc_calloc F - __libc_current_sigrtmax F - __libc_current_sigrtmin F - __libc_free F - __libc_freeres F - __libc_init_first F - __libc_mallinfo F - __libc_malloc F - __libc_mallopt F - __libc_memalign F - __libc_pvalloc F - __libc_realloc F - __libc_sa_len F - __libc_start_main F - __libc_valloc F - __longjmp_chk F - __lseek F - __lxstat F - __lxstat64 F - __malloc_hook D 0x4 - __malloc_initialize_hook D 0x4 - __mbrlen F - __mbrtowc F - __mbsnrtowcs_chk F - __mbsrtowcs_chk F - __mbstowcs_chk F - __mcount F - __memalign_hook D 0x4 - __memcpy_chk F - __memmove_chk F - __mempcpy F - __mempcpy_chk F - __mempcpy_small F - __memset_chk F - __monstartup F - __morecore D 0x4 - __nanosleep F - __newlocale F - __nl_langinfo_l F - __nss_configure_lookup F - __nss_database_lookup F - __nss_group_lookup F - __nss_hostname_digits_dots F - __nss_hosts_lookup F - __nss_next F - __nss_passwd_lookup F - __obstack_printf_chk F - __obstack_vprintf_chk F - __open F - __open64 F - __open64_2 F - __open_2 F - __openat64_2 F - __openat_2 F - __overflow F - __pipe F - __poll F - __posix_getopt F - __pread64 F - __pread64_chk F - __pread_chk F - __printf_chk F - __printf_fp F - __profile_frequency F - __progname D 0x4 - __progname_full D 0x4 - __ptsname_r_chk F - __pwrite64 F - __rawmemchr F - __rcmd_errstr D 0x4 - __read F - __read_chk F - __readlink_chk F - __readlinkat_chk F - __realloc_hook D 0x4 - __realpath_chk F - __recv_chk F - __recvfrom_chk F - __register_atfork F - __res_init F - __res_nclose F - __res_ninit F - __res_randomid F - __res_state F - __rpc_thread_createerr F - __rpc_thread_svc_fdset F - __rpc_thread_svc_max_pollfd F - __rpc_thread_svc_pollfd F - __sbrk F - __sched_cpualloc F - __sched_cpucount F - __sched_cpufree F - __sched_get_priority_max F - __sched_get_priority_min F - __sched_getparam F - __sched_getscheduler F - __sched_setscheduler F - __sched_yield F - __secure_getenv F - __select F - __setmntent F - __setpgid F - __sigaction F - __sigaddset F - __sigdelset F - __sigismember F - __signbit F - __signbitf F - __sigpause F - __sigsetjmp F - __sigsuspend F - __snprintf_chk F - __sprintf_chk F - __stack_chk_fail F - __statfs F - __stpcpy F - __stpcpy_chk F - __stpcpy_small F - __stpncpy F - __stpncpy_chk F - __strcasecmp F - __strcasecmp_l F - __strcasestr F - __strcat_chk F - __strcoll_l F - __strcpy_chk F - __strcpy_small F - __strcspn_c1 F - __strcspn_c2 F - __strcspn_c3 F - __strdup F - __strerror_r F - __strfmon_l F - __strftime_l F - __strncasecmp_l F - __strncat_chk F - __strncpy_chk F - __strndup F - __strpbrk_c2 F - __strpbrk_c3 F - __strsep_1c F - __strsep_2c F - __strsep_3c F - __strsep_g F - __strspn_c1 F - __strspn_c2 F - __strspn_c3 F - __strtod_internal F - __strtod_l F - __strtof_internal F - __strtof_l F - __strtok_r F - __strtok_r_1c F - __strtol_internal F - __strtol_l F - __strtold_internal F - __strtold_l F - __strtoll_internal F - __strtoll_l F - __strtoul_internal F - __strtoul_l F - __strtoull_internal F - __strtoull_l F - __strverscmp F - __strxfrm_l F - __swprintf_chk F - __sysconf F - __syslog_chk F - __sysv_signal F - __timezone D 0x4 - __toascii_l F - __tolower_l F - __toupper_l F - __towctrans F - __towctrans_l F - __towlower_l F - __towupper_l F - __ttyname_r_chk F - __tzname D 0x8 - __uflow F - __underflow F - __uselocale F - __vasprintf_chk F - __vdprintf_chk F - __vfork F - __vfprintf_chk F - __vfscanf F - __vfwprintf_chk F - __vprintf_chk F - __vsnprintf F - __vsnprintf_chk F - __vsprintf_chk F - __vsscanf F - __vswprintf_chk F - __vsyslog_chk F - __vwprintf_chk F - __wait F - __waitpid F - __wcpcpy_chk F - __wcpncpy_chk F - __wcrtomb_chk F - __wcscasecmp_l F - __wcscat_chk F - __wcscoll_l F - __wcscpy_chk F - __wcsftime_l F - __wcsncasecmp_l F - __wcsncat_chk F - __wcsncpy_chk F - __wcsnrtombs_chk F - __wcsrtombs_chk F - __wcstod_internal F - __wcstod_l F - __wcstof_internal F - __wcstof_l F - __wcstol_internal F - __wcstol_l F - __wcstold_internal F - __wcstold_l F - __wcstoll_internal F - __wcstoll_l F - __wcstombs_chk F - __wcstoul_internal F - __wcstoul_l F - __wcstoull_internal F - __wcstoull_l F - __wcsxfrm_l F - __wctomb_chk F - __wctrans_l F - __wctype_l F - __wmemcpy_chk F - __wmemmove_chk F - __wmempcpy_chk F - __wmemset_chk F - __woverflow F - __wprintf_chk F - __write F - __wuflow F - __wunderflow F - __xmknod F - __xmknodat F - __xpg_basename F - __xpg_sigpause F - __xpg_strerror_r F - __xstat F - __xstat64 F - _authenticate F - _dl_mcount_wrapper F - _dl_mcount_wrapper_check F - _environ D 0x4 - _exit F - _flush_cache F - _flushlbf F - _libc_intl_domainname D 0x5 - _longjmp F - _mcleanup F - _mcount F - _nl_default_dirname D 0x12 - _nl_domain_bindings D 0x4 - _nl_msg_cat_cntr D 0x4 - _null_auth D 0xc - _obstack_allocated_p F - _obstack_begin F - _obstack_begin_1 F - _obstack_free F - _obstack_memory_used F - _obstack_newchunk F - _res D 0x200 - _res_hconf D 0x30 - _rpc_dtablesize F - _seterr_reply F - _setjmp F - _sys_errlist D 0x21c - _sys_nerr D 0x4 - _sys_siglist D 0x104 - _tolower F - _toupper F - a64l F - abort F - abs F - accept F - accept4 F - access F - acct F - addmntent F - addseverity F - adjtime F - adjtimex F - advance F - alarm F - alphasort F - alphasort64 F - argp_err_exit_status D 0x4 - argp_error F - argp_failure F - argp_help F - argp_parse F - argp_program_bug_address D 0x4 - argp_program_version D 0x4 - argp_program_version_hook D 0x4 - argp_state_help F - argp_usage F - argz_add F - argz_add_sep F - argz_append F - argz_count F - argz_create F - argz_create_sep F - argz_delete F - argz_extract F - argz_insert F - argz_next F - argz_replace F - argz_stringify F - asctime F - asctime_r F - asprintf F - atof F - atoi F - atol F - atoll F - authdes_create F - authdes_getucred F - authdes_pk_create F - authnone_create F - authunix_create F - authunix_create_default F - backtrace F - backtrace_symbols F - backtrace_symbols_fd F - basename F - bcmp F - bcopy F - bdflush F - bind F - bind_textdomain_codeset F - bindresvport F - bindtextdomain F - brk F - bsd_signal F - bsearch F - btowc F - bzero F - cacheflush F - calloc F - callrpc F - canonicalize_file_name F - capget F - capset F - catclose F - catgets F - catopen F - cbc_crypt F - cfgetispeed F - cfgetospeed F - cfmakeraw F - cfree F - cfsetispeed F - cfsetospeed F - cfsetspeed F - chdir F - chflags F - chmod F - chown F - chroot F - clearenv F - clearerr F - clearerr_unlocked F - clnt_broadcast F - clnt_create F - clnt_pcreateerror F - clnt_perrno F - clnt_perror F - clnt_spcreateerror F - clnt_sperrno F - clnt_sperror F - clntraw_create F - clnttcp_create F - clntudp_bufcreate F - clntudp_create F - clntunix_create F - clock F - clone F - close F - closedir F - closelog F - confstr F - connect F - copysign F - copysignf F - copysignl F - creat F - creat64 F - create_module F - ctermid F - ctime F - ctime_r F - cuserid F - daemon F - daylight D 0x4 - dcgettext F - dcngettext F - delete_module F - des_setparity F - dgettext F - difftime F - dirfd F - dirname F - div F - dl_iterate_phdr F - dngettext F - dprintf F - drand48 F - drand48_r F - dup F - dup2 F - dup3 F - duplocale F - dysize F - eaccess F - ecb_crypt F - ecvt F - ecvt_r F - endaliasent F - endfsent F - endgrent F - endhostent F - endmntent F - endnetent F - endnetgrent F - endprotoent F - endpwent F - endrpcent F - endservent F - endsgent F - endspent F - endttyent F - endusershell F - endutent F - endutxent F - environ D 0x4 - envz_add F - envz_entry F - envz_get F - envz_merge F - envz_remove F - envz_strip F - epoll_create F - epoll_create1 F - epoll_ctl F - epoll_pwait F - epoll_wait F - erand48 F - erand48_r F - err F - error F - error_at_line F - error_message_count D 0x4 - error_one_per_line D 0x4 - error_print_progname D 0x4 - errx F - ether_aton F - ether_aton_r F - ether_hostton F - ether_line F - ether_ntoa F - ether_ntoa_r F - ether_ntohost F - euidaccess F - eventfd F - eventfd_read F - eventfd_write F - execl F - execle F - execlp F - execv F - execve F - execvp F - execvpe F - exit F - faccessat F - fallocate F - fallocate64 F - fattach F - fchdir F - fchflags F - fchmod F - fchmodat F - fchown F - fchownat F - fclose F - fcloseall F - fcntl F - fcvt F - fcvt_r F - fdatasync F - fdetach F - fdopen F - fdopendir F - feof F - feof_unlocked F - ferror F - ferror_unlocked F - fexecve F - fflush F - fflush_unlocked F - ffs F - ffsl F - ffsll F - fgetc F - fgetc_unlocked F - fgetgrent F - fgetgrent_r F - fgetpos F - fgetpos64 F - fgetpwent F - fgetpwent_r F - fgets F - fgets_unlocked F - fgetsgent F - fgetsgent_r F - fgetspent F - fgetspent_r F - fgetwc F - fgetwc_unlocked F - fgetws F - fgetws_unlocked F - fgetxattr F - fileno F - fileno_unlocked F - finite F - finitef F - finitel F - flistxattr F - flock F - flockfile F - fmemopen F - fmtmsg F - fnmatch F - fopen F - fopen64 F - fopencookie F - fork F - fpathconf F - fprintf F - fputc F - fputc_unlocked F - fputs F - fputs_unlocked F - fputwc F - fputwc_unlocked F - fputws F - fputws_unlocked F - fread F - fread_unlocked F - free F - freeaddrinfo F - freeifaddrs F - freelocale F - fremovexattr F - freopen F - freopen64 F - frexp F - frexpf F - frexpl F - fscanf F - fseek F - fseeko F - fseeko64 F - fsetpos F - fsetpos64 F - fsetxattr F - fstatfs F - fstatfs64 F - fstatvfs F - fstatvfs64 F - fsync F - ftell F - ftello F - ftello64 F - ftime F - ftok F - ftruncate F - ftruncate64 F - ftrylockfile F - fts_children F - fts_close F - fts_open F - fts_read F - fts_set F - ftw F - ftw64 F - funlockfile F - futimens F - futimes F - futimesat F - fwide F - fwprintf F - fwrite F - fwrite_unlocked F - fwscanf F - gai_strerror F - gcvt F - get_avphys_pages F - get_current_dir_name F - get_kernel_syms F - get_myaddress F - get_nprocs F - get_nprocs_conf F - get_phys_pages F - getaddrinfo F - getaliasbyname F - getaliasbyname_r F - getaliasent F - getaliasent_r F - getc F - getc_unlocked F - getchar F - getchar_unlocked F - getcontext F - getcwd F - getdate F - getdate_err D 0x4 - getdate_r F - getdelim F - getdirentries F - getdirentries64 F - getdomainname F - getdtablesize F - getegid F - getenv F - geteuid F - getfsent F - getfsfile F - getfsspec F - getgid F - getgrent F - getgrent_r F - getgrgid F - getgrgid_r F - getgrnam F - getgrnam_r F - getgrouplist F - getgroups F - gethostbyaddr F - gethostbyaddr_r F - gethostbyname F - gethostbyname2 F - gethostbyname2_r F - gethostbyname_r F - gethostent F - gethostent_r F - gethostid F - gethostname F - getifaddrs F - getipv4sourcefilter F - getitimer F - getline F - getloadavg F - getlogin F - getlogin_r F - getmntent F - getmntent_r F - getmsg F - getnameinfo F - getnetbyaddr F - getnetbyaddr_r F - getnetbyname F - getnetbyname_r F - getnetent F - getnetent_r F - getnetgrent F - getnetgrent_r F - getnetname F - getopt F - getopt_long F - getopt_long_only F - getpagesize F - getpass F - getpeername F - getpgid F - getpgrp F - getpid F - getpmsg F - getppid F - getpriority F - getprotobyname F - getprotobyname_r F - getprotobynumber F - getprotobynumber_r F - getprotoent F - getprotoent_r F - getpt F - getpublickey F - getpw F - getpwent F - getpwent_r F - getpwnam F - getpwnam_r F - getpwuid F - getpwuid_r F - getresgid F - getresuid F - getrlimit F - getrlimit64 F - getrpcbyname F - getrpcbyname_r F - getrpcbynumber F - getrpcbynumber_r F - getrpcent F - getrpcent_r F - getrpcport F - getrusage F - gets F - getsecretkey F - getservbyname F - getservbyname_r F - getservbyport F - getservbyport_r F - getservent F - getservent_r F - getsgent F - getsgent_r F - getsgnam F - getsgnam_r F - getsid F - getsockname F - getsockopt F - getsourcefilter F - getspent F - getspent_r F - getspnam F - getspnam_r F - getsubopt F - gettext F - gettimeofday F - getttyent F - getttynam F - getuid F - getusershell F - getutent F - getutent_r F - getutid F - getutid_r F - getutline F - getutline_r F - getutmp F - getutmpx F - getutxent F - getutxid F - getutxline F - getw F - getwc F - getwc_unlocked F - getwchar F - getwchar_unlocked F - getwd F - getxattr F - glob F - glob64 F - glob_pattern_p F - globfree F - globfree64 F - gmtime F - gmtime_r F - gnu_dev_major F - gnu_dev_makedev F - gnu_dev_minor F - gnu_get_libc_release F - gnu_get_libc_version F - grantpt F - group_member F - gsignal F - gtty F - h_errlist D 0x14 - h_nerr D 0x4 - hasmntopt F - hcreate F - hcreate_r F - hdestroy F - hdestroy_r F - herror F - host2netname F - hsearch F - hsearch_r F - hstrerror F - htonl F - htons F - iconv F - iconv_close F - iconv_open F - if_freenameindex F - if_indextoname F - if_nameindex F - if_nametoindex F - imaxabs F - imaxdiv F - in6addr_any D 0x10 - in6addr_loopback D 0x10 - index F - inet6_opt_append F - inet6_opt_find F - inet6_opt_finish F - inet6_opt_get_val F - inet6_opt_init F - inet6_opt_next F - inet6_opt_set_val F - inet6_option_alloc F - inet6_option_append F - inet6_option_find F - inet6_option_init F - inet6_option_next F - inet6_option_space F - inet6_rth_add F - inet6_rth_getaddr F - inet6_rth_init F - inet6_rth_reverse F - inet6_rth_segments F - inet6_rth_space F - inet_addr F - inet_aton F - inet_lnaof F - inet_makeaddr F - inet_netof F - inet_network F - inet_nsap_addr F - inet_nsap_ntoa F - inet_ntoa F - inet_ntop F - inet_pton F - init_module F - initgroups F - initstate F - initstate_r F - innetgr F - inotify_add_watch F - inotify_init F - inotify_init1 F - inotify_rm_watch F - insque F - ioctl F - iruserok F - iruserok_af F - isalnum F - isalnum_l F - isalpha F - isalpha_l F - isascii F - isastream F - isatty F - isblank F - isblank_l F - iscntrl F - iscntrl_l F - isctype F - isdigit F - isdigit_l F - isfdtype F - isgraph F - isgraph_l F - isinf F - isinff F - isinfl F - islower F - islower_l F - isnan F - isnanf F - isnanl F - isprint F - isprint_l F - ispunct F - ispunct_l F - isspace F - isspace_l F - isupper F - isupper_l F - iswalnum F - iswalnum_l F - iswalpha F - iswalpha_l F - iswblank F - iswblank_l F - iswcntrl F - iswcntrl_l F - iswctype F - iswctype_l F - iswdigit F - iswdigit_l F - iswgraph F - iswgraph_l F - iswlower F - iswlower_l F - iswprint F - iswprint_l F - iswpunct F - iswpunct_l F - iswspace F - iswspace_l F - iswupper F - iswupper_l F - iswxdigit F - iswxdigit_l F - isxdigit F - isxdigit_l F - jrand48 F - jrand48_r F - key_decryptsession F - key_decryptsession_pk F - key_encryptsession F - key_encryptsession_pk F - key_gendes F - key_get_conv F - key_secretkey_is_set F - key_setnet F - key_setsecret F - kill F - killpg F - klogctl F - l64a F - labs F - lchmod F - lchown F - lckpwdf F - lcong48 F - lcong48_r F - ldexp F - ldexpf F - ldexpl F - ldiv F - lfind F - lgetxattr F - link F - linkat F - listen F - listxattr F - llabs F - lldiv F - llistxattr F - llseek F - loc1 D 0x4 - loc2 D 0x4 - localeconv F - localtime F - localtime_r F - lockf F - lockf64 F - locs D 0x4 - longjmp F - lrand48 F - lrand48_r F - lremovexattr F - lsearch F - lseek F - lseek64 F - lsetxattr F - lutimes F - madvise F - makecontext F - mallinfo F - malloc F - malloc_get_state F - malloc_info F - malloc_set_state F - malloc_stats F - malloc_trim F - malloc_usable_size F - mallopt F - mallwatch D 0x4 - mblen F - mbrlen F - mbrtowc F - mbsinit F - mbsnrtowcs F - mbsrtowcs F - mbstowcs F - mbtowc F - mcheck F - mcheck_check_all F - mcheck_pedantic F - mcount F - memalign F - memccpy F - memchr F - memcmp F - memcpy F - memfrob F - memmem F - memmove F - mempcpy F - memrchr F - memset F - mincore F - mkdir F - mkdirat F - mkdtemp F - mkfifo F - mkfifoat F - mkostemp F - mkostemp64 F - mkostemps F - mkostemps64 F - mkstemp F - mkstemp64 F - mkstemps F - mkstemps64 F - mktemp F - mktime F - mlock F - mlockall F - mmap F - mmap64 F - modf F - modff F - modfl F - moncontrol F - monstartup F - mount F - mprobe F - mprotect F - mrand48 F - mrand48_r F - mremap F - msgctl F - msgget F - msgrcv F - msgsnd F - msync F - mtrace F - munlock F - munlockall F - munmap F - muntrace F - nanosleep F - netname2host F - netname2user F - newlocale F - nfsservctl F - nftw F - nftw64 F - ngettext F - nice F - nl_langinfo F - nl_langinfo_l F - nrand48 F - nrand48_r F - ntohl F - ntohs F - ntp_adjtime F - ntp_gettime F - ntp_gettimex F - obstack_alloc_failed_handler D 0x4 - obstack_exit_failure D 0x4 - obstack_free F - obstack_printf F - obstack_vprintf F - on_exit F - open F - open64 F - open_memstream F - open_wmemstream F - openat F - openat64 F - opendir F - openlog F - optarg D 0x4 - opterr D 0x4 - optind D 0x4 - optopt D 0x4 - parse_printf_format F - passwd2des F - pathconf F - pause F - pclose F - perror F - personality F - pipe F - pipe2 F - pivot_root F - pmap_getmaps F - pmap_getport F - pmap_rmtcall F - pmap_set F - pmap_unset F - poll F - popen F - posix_fadvise F - posix_fadvise64 F - posix_fallocate F - posix_fallocate64 F - posix_madvise F - posix_memalign F - posix_openpt F - posix_spawn F - posix_spawn_file_actions_addclose F - posix_spawn_file_actions_adddup2 F - posix_spawn_file_actions_addopen F - posix_spawn_file_actions_destroy F - posix_spawn_file_actions_init F - posix_spawnattr_destroy F - posix_spawnattr_getflags F - posix_spawnattr_getpgroup F - posix_spawnattr_getschedparam F - posix_spawnattr_getschedpolicy F - posix_spawnattr_getsigdefault F - posix_spawnattr_getsigmask F - posix_spawnattr_init F - posix_spawnattr_setflags F - posix_spawnattr_setpgroup F - posix_spawnattr_setschedparam F - posix_spawnattr_setschedpolicy F - posix_spawnattr_setsigdefault F - posix_spawnattr_setsigmask F - posix_spawnp F - ppoll F - prctl F - pread F - pread64 F - preadv F - preadv64 F - printf F - printf_size F - printf_size_info F - profil F - program_invocation_name D 0x4 - program_invocation_short_name D 0x4 - pselect F - psiginfo F - psignal F - pthread_attr_destroy F - pthread_attr_getdetachstate F - pthread_attr_getinheritsched F - pthread_attr_getschedparam F - pthread_attr_getschedpolicy F - pthread_attr_getscope F - pthread_attr_init F - pthread_attr_setdetachstate F - pthread_attr_setinheritsched F - pthread_attr_setschedparam F - pthread_attr_setschedpolicy F - pthread_attr_setscope F - pthread_cond_broadcast F - pthread_cond_destroy F - pthread_cond_init F - pthread_cond_signal F - pthread_cond_timedwait F - pthread_cond_wait F - pthread_condattr_destroy F - pthread_condattr_init F - pthread_equal F - pthread_exit F - pthread_getschedparam F - pthread_mutex_destroy F - pthread_mutex_init F - pthread_mutex_lock F - pthread_mutex_unlock F - pthread_self F - pthread_setcancelstate F - pthread_setcanceltype F - pthread_setschedparam F - ptrace F - ptsname F - ptsname_r F - putc F - putc_unlocked F - putchar F - putchar_unlocked F - putenv F - putgrent F - putmsg F - putpmsg F - putpwent F - puts F - putsgent F - putspent F - pututline F - pututxline F - putw F - putwc F - putwc_unlocked F - putwchar F - putwchar_unlocked F - pvalloc F - pwrite F - pwrite64 F - pwritev F - pwritev64 F - qecvt F - qecvt_r F - qfcvt F - qfcvt_r F - qgcvt F - qsort F - qsort_r F - query_module F - quick_exit F - quotactl F - raise F - rand F - rand_r F - random F - random_r F - rawmemchr F - rcmd F - rcmd_af F - re_comp F - re_compile_fastmap F - re_compile_pattern F - re_exec F - re_match F - re_match_2 F - re_search F - re_search_2 F - re_set_registers F - re_set_syntax F - re_syntax_options D 0x4 - read F - readahead F - readdir F - readdir64 F - readdir64_r F - readdir_r F - readlink F - readlinkat F - readv F - realloc F - realpath F - reboot F - recv F - recvfrom F - recvmmsg F - recvmsg F - regcomp F - regerror F - regexec F - regfree F - register_printf_function F - register_printf_modifier F - register_printf_specifier F - register_printf_type F - registerrpc F - remap_file_pages F - remove F - removexattr F - remque F - rename F - renameat F - revoke F - rewind F - rewinddir F - rexec F - rexec_af F - rexecoptions D 0x4 - rindex F - rmdir F - rpc_createerr D 0x10 - rpmatch F - rresvport F - rresvport_af F - rtime F - ruserok F - ruserok_af F - ruserpass F - sbrk F - scalbn F - scalbnf F - scalbnl F - scandir F - scandir64 F - scanf F - sched_get_priority_max F - sched_get_priority_min F - sched_getaffinity F - sched_getcpu F - sched_getparam F - sched_getscheduler F - sched_rr_get_interval F - sched_setaffinity F - sched_setparam F - sched_setscheduler F - sched_yield F - seed48 F - seed48_r F - seekdir F - select F - semctl F - semget F - semop F - semtimedop F - send F - sendfile F - sendfile64 F - sendmsg F - sendto F - set_dataplane F - setaliasent F - setbuf F - setbuffer F - setcontext F - setdomainname F - setegid F - setenv F - seteuid F - setfsent F - setfsgid F - setfsuid F - setgid F - setgrent F - setgroups F - sethostent F - sethostid F - sethostname F - setipv4sourcefilter F - setitimer F - setjmp F - setlinebuf F - setlocale F - setlogin F - setlogmask F - setmntent F - setnetent F - setnetgrent F - setpgid F - setpgrp F - setpriority F - setprotoent F - setpwent F - setregid F - setresgid F - setresuid F - setreuid F - setrlimit F - setrlimit64 F - setrpcent F - setservent F - setsgent F - setsid F - setsockopt F - setsourcefilter F - setspent F - setstate F - setstate_r F - settimeofday F - setttyent F - setuid F - setusershell F - setutent F - setutxent F - setvbuf F - setxattr F - sgetsgent F - sgetsgent_r F - sgetspent F - sgetspent_r F - shmat F - shmctl F - shmdt F - shmget F - shutdown F - sigaction F - sigaddset F - sigaltstack F - sigandset F - sigblock F - sigdelset F - sigemptyset F - sigfillset F - siggetmask F - sighold F - sigignore F - siginterrupt F - sigisemptyset F - sigismember F - siglongjmp F - signal F - signalfd F - sigorset F - sigpause F - sigpending F - sigprocmask F - sigqueue F - sigrelse F - sigreturn F - sigset F - sigsetmask F - sigstack F - sigsuspend F - sigtimedwait F - sigvec F - sigwait F - sigwaitinfo F - sleep F - snprintf F - sockatmark F - socket F - socketpair F - splice F - sprintf F - sprofil F - srand F - srand48 F - srand48_r F - srandom F - srandom_r F - sscanf F - ssignal F - sstk F - statfs F - statfs64 F - statvfs F - statvfs64 F - stderr D 0x4 - stdin D 0x4 - stdout D 0x4 - step F - stime F - stpcpy F - stpncpy F - strcasecmp F - strcasecmp_l F - strcasestr F - strcat F - strchr F - strchrnul F - strcmp F - strcoll F - strcoll_l F - strcpy F - strcspn F - strdup F - strerror F - strerror_l F - strerror_r F - strfmon F - strfmon_l F - strfry F - strftime F - strftime_l F - strlen F - strncasecmp F - strncasecmp_l F - strncat F - strncmp F - strncpy F - strndup F - strnlen F - strpbrk F - strptime F - strptime_l F - strrchr F - strsep F - strsignal F - strspn F - strstr F - strtod F - strtod_l F - strtof F - strtof_l F - strtoimax F - strtok F - strtok_r F - strtol F - strtol_l F - strtold F - strtold_l F - strtoll F - strtoll_l F - strtoq F - strtoul F - strtoul_l F - strtoull F - strtoull_l F - strtoumax F - strtouq F - strverscmp F - strxfrm F - strxfrm_l F - stty F - svc_exit F - svc_fdset D 0x80 - svc_getreq F - svc_getreq_common F - svc_getreq_poll F - svc_getreqset F - svc_max_pollfd D 0x4 - svc_pollfd D 0x4 - svc_register F - svc_run F - svc_sendreply F - svc_unregister F - svcauthdes_stats D 0xc - svcerr_auth F - svcerr_decode F - svcerr_noproc F - svcerr_noprog F - svcerr_progvers F - svcerr_systemerr F - svcerr_weakauth F - svcfd_create F - svcraw_create F - svctcp_create F - svcudp_bufcreate F - svcudp_create F - svcudp_enablecache F - svcunix_create F - svcunixfd_create F - swab F - swapcontext F - swapoff F - swapon F - swprintf F - swscanf F - symlink F - symlinkat F - sync F - sync_file_range F - sys_errlist D 0x21c - sys_nerr D 0x4 - sys_sigabbrev D 0x104 - sys_siglist D 0x104 - syscall F - sysconf F - sysctl F - sysinfo F - syslog F - system F - sysv_signal F - tcdrain F - tcflow F - tcflush F - tcgetattr F - tcgetpgrp F - tcgetsid F - tcsendbreak F - tcsetattr F - tcsetpgrp F - tdelete F - tdestroy F - tee F - telldir F - tempnam F - textdomain F - tfind F - time F - timegm F - timelocal F - timerfd_create F - timerfd_gettime F - timerfd_settime F - times F - timezone D 0x4 - tmpfile F - tmpfile64 F - tmpnam F - tmpnam_r F - toascii F - tolower F - tolower_l F - toupper F - toupper_l F - towctrans F - towctrans_l F - towlower F - towlower_l F - towupper F - towupper_l F - tr_break F - truncate F - truncate64 F - tsearch F - ttyname F - ttyname_r F - ttyslot F - twalk F - tzname D 0x8 - tzset F - ualarm F - ulckpwdf F - ulimit F - umask F - umount F - umount2 F - uname F - ungetc F - ungetwc F - unlink F - unlinkat F - unlockpt F - unsetenv F - unshare F - updwtmp F - updwtmpx F - uselib F - uselocale F - user2netname F - usleep F - ustat F - utime F - utimensat F - utimes F - utmpname F - utmpxname F - valloc F - vasprintf F - vdprintf F - verr F - verrx F - versionsort F - versionsort64 F - vfork F - vfprintf F - vfscanf F - vfwprintf F - vfwscanf F - vhangup F - vlimit F - vmsplice F - vprintf F - vscanf F - vsnprintf F - vsprintf F - vsscanf F - vswprintf F - vswscanf F - vsyslog F - vtimes F - vwarn F - vwarnx F - vwprintf F - vwscanf F - wait F - wait3 F - wait4 F - waitid F - waitpid F - warn F - warnx F - wcpcpy F - wcpncpy F - wcrtomb F - wcscasecmp F - wcscasecmp_l F - wcscat F - wcschr F - wcschrnul F - wcscmp F - wcscoll F - wcscoll_l F - wcscpy F - wcscspn F - wcsdup F - wcsftime F - wcsftime_l F - wcslen F - wcsncasecmp F - wcsncasecmp_l F - wcsncat F - wcsncmp F - wcsncpy F - wcsnlen F - wcsnrtombs F - wcspbrk F - wcsrchr F - wcsrtombs F - wcsspn F - wcsstr F - wcstod F - wcstod_l F - wcstof F - wcstof_l F - wcstoimax F - wcstok F - wcstol F - wcstol_l F - wcstold F - wcstold_l F - wcstoll F - wcstoll_l F - wcstombs F - wcstoq F - wcstoul F - wcstoul_l F - wcstoull F - wcstoull_l F - wcstoumax F - wcstouq F - wcswcs F - wcswidth F - wcsxfrm F - wcsxfrm_l F - wctob F - wctomb F - wctrans F - wctrans_l F - wctype F - wctype_l F - wcwidth F - wmemchr F - wmemcmp F - wmemcpy F - wmemmove F - wmempcpy F - wmemset F - wordexp F - wordfree F - wprintf F - write F - writev F - wscanf F - xdecrypt F - xdr_accepted_reply F - xdr_array F - xdr_authdes_cred F - xdr_authdes_verf F - xdr_authunix_parms F - xdr_bool F - xdr_bytes F - xdr_callhdr F - xdr_callmsg F - xdr_char F - xdr_cryptkeyarg F - xdr_cryptkeyarg2 F - xdr_cryptkeyres F - xdr_des_block F - xdr_double F - xdr_enum F - xdr_float F - xdr_free F - xdr_getcredres F - xdr_hyper F - xdr_int F - xdr_int16_t F - xdr_int32_t F - xdr_int64_t F - xdr_int8_t F - xdr_key_netstarg F - xdr_key_netstres F - xdr_keybuf F - xdr_keystatus F - xdr_long F - xdr_longlong_t F - xdr_netnamestr F - xdr_netobj F - xdr_opaque F - xdr_opaque_auth F - xdr_pmap F - xdr_pmaplist F - xdr_pointer F - xdr_quad_t F - xdr_reference F - xdr_rejected_reply F - xdr_replymsg F - xdr_rmtcall_args F - xdr_rmtcallres F - xdr_short F - xdr_sizeof F - xdr_string F - xdr_u_char F - xdr_u_hyper F - xdr_u_int F - xdr_u_long F - xdr_u_longlong_t F - xdr_u_quad_t F - xdr_u_short F - xdr_uint16_t F - xdr_uint32_t F - xdr_uint64_t F - xdr_uint8_t F - xdr_union F - xdr_unixcred F - xdr_vector F - xdr_void F - xdr_wrapstring F - xdrmem_create F - xdrrec_create F - xdrrec_endofrecord F - xdrrec_eof F - xdrrec_skiprecord F - xdrstdio_create F - xencrypt F - xprt_register F - xprt_unregister F -GLIBC_2.15 - GLIBC_2.15 A - __fdelt_chk F - __fdelt_warn F - clock_adjtime F - fanotify_init F - fanotify_mark F - name_to_handle_at F - open_by_handle_at F - posix_spawn F - posix_spawnp F - prlimit F - prlimit64 F - process_vm_readv F - process_vm_writev F - scandirat F - scandirat64 F - sendmmsg F - setns F - syncfs F -GLIBC_2.16 - GLIBC_2.16 A - __getauxval F - __poll_chk F - __ppoll_chk F - aligned_alloc F - c16rtomb F - c32rtomb F - getauxval F - mbrtoc16 F - mbrtoc32 F - timespec_get F -GLIBC_2.17 - GLIBC_2.17 A - clock_getcpuclockid F - clock_getres F - clock_gettime F - clock_nanosleep F - clock_settime F - secure_getenv F -GLIBC_2.18 - GLIBC_2.18 A - __cxa_thread_atexit_impl F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libcrypt.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libcrypt.abilist deleted file mode 100644 index 608e5df0b1..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libcrypt.abilist +++ /dev/null @@ -1,9 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - crypt F - crypt_r F - encrypt F - encrypt_r F - fcrypt F - setkey F - setkey_r F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libdl.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libdl.abilist deleted file mode 100644 index 27a72281b7..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libdl.abilist +++ /dev/null @@ -1,11 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - dladdr F - dladdr1 F - dlclose F - dlerror F - dlinfo F - dlmopen F - dlopen F - dlsym F - dlvsym F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libm.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libm.abilist deleted file mode 100644 index cb0d1a4423..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libm.abilist +++ /dev/null @@ -1,373 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - _LIB_VERSION D 0x4 - __clog10 F - __clog10f F - __clog10l F - __finite F - __finitef F - __fpclassify F - __fpclassifyf F - __signbit F - __signbitf F - acos F - acosf F - acosh F - acoshf F - acoshl F - acosl F - asin F - asinf F - asinh F - asinhf F - asinhl F - asinl F - atan F - atan2 F - atan2f F - atan2l F - atanf F - atanh F - atanhf F - atanhl F - atanl F - cabs F - cabsf F - cabsl F - cacos F - cacosf F - cacosh F - cacoshf F - cacoshl F - cacosl F - carg F - cargf F - cargl F - casin F - casinf F - casinh F - casinhf F - casinhl F - casinl F - catan F - catanf F - catanh F - catanhf F - catanhl F - catanl F - cbrt F - cbrtf F - cbrtl F - ccos F - ccosf F - ccosh F - ccoshf F - ccoshl F - ccosl F - ceil F - ceilf F - ceill F - cexp F - cexpf F - cexpl F - cimag F - cimagf F - cimagl F - clog F - clog10 F - clog10f F - clog10l F - clogf F - clogl F - conj F - conjf F - conjl F - copysign F - copysignf F - copysignl F - cos F - cosf F - cosh F - coshf F - coshl F - cosl F - cpow F - cpowf F - cpowl F - cproj F - cprojf F - cprojl F - creal F - crealf F - creall F - csin F - csinf F - csinh F - csinhf F - csinhl F - csinl F - csqrt F - csqrtf F - csqrtl F - ctan F - ctanf F - ctanh F - ctanhf F - ctanhl F - ctanl F - drem F - dremf F - dreml F - erf F - erfc F - erfcf F - erfcl F - erff F - erfl F - exp F - exp10 F - exp10f F - exp10l F - exp2 F - exp2f F - exp2l F - expf F - expl F - expm1 F - expm1f F - expm1l F - fabs F - fabsf F - fabsl F - fdim F - fdimf F - fdiml F - feclearexcept F - fedisableexcept F - feenableexcept F - fegetenv F - fegetexcept F - fegetexceptflag F - fegetround F - feholdexcept F - feraiseexcept F - fesetenv F - fesetexceptflag F - fesetround F - fetestexcept F - feupdateenv F - finite F - finitef F - finitel F - floor F - floorf F - floorl F - fma F - fmaf F - fmal F - fmax F - fmaxf F - fmaxl F - fmin F - fminf F - fminl F - fmod F - fmodf F - fmodl F - frexp F - frexpf F - frexpl F - gamma F - gammaf F - gammal F - hypot F - hypotf F - hypotl F - ilogb F - ilogbf F - ilogbl F - j0 F - j0f F - j0l F - j1 F - j1f F - j1l F - jn F - jnf F - jnl F - ldexp F - ldexpf F - ldexpl F - lgamma F - lgamma_r F - lgammaf F - lgammaf_r F - lgammal F - lgammal_r F - llrint F - llrintf F - llrintl F - llround F - llroundf F - llroundl F - log F - log10 F - log10f F - log10l F - log1p F - log1pf F - log1pl F - log2 F - log2f F - log2l F - logb F - logbf F - logbl F - logf F - logl F - lrint F - lrintf F - lrintl F - lround F - lroundf F - lroundl F - matherr F - modf F - modff F - modfl F - nan F - nanf F - nanl F - nearbyint F - nearbyintf F - nearbyintl F - nextafter F - nextafterf F - nextafterl F - nexttoward F - nexttowardf F - nexttowardl F - pow F - pow10 F - pow10f F - pow10l F - powf F - powl F - remainder F - remainderf F - remainderl F - remquo F - remquof F - remquol F - rint F - rintf F - rintl F - round F - roundf F - roundl F - scalb F - scalbf F - scalbl F - scalbln F - scalblnf F - scalblnl F - scalbn F - scalbnf F - scalbnl F - signgam D 0x4 - significand F - significandf F - significandl F - sin F - sincos F - sincosf F - sincosl F - sinf F - sinh F - sinhf F - sinhl F - sinl F - sqrt F - sqrtf F - sqrtl F - tan F - tanf F - tanh F - tanhf F - tanhl F - tanl F - tgamma F - tgammaf F - tgammal F - trunc F - truncf F - truncl F - y0 F - y0f F - y0l F - y1 F - y1f F - y1l F - yn F - ynf F - ynl F -GLIBC_2.15 - GLIBC_2.15 A - __acos_finite F - __acosf_finite F - __acosh_finite F - __acoshf_finite F - __asin_finite F - __asinf_finite F - __atan2_finite F - __atan2f_finite F - __atanh_finite F - __atanhf_finite F - __cosh_finite F - __coshf_finite F - __exp10_finite F - __exp10f_finite F - __exp2_finite F - __exp2f_finite F - __exp_finite F - __expf_finite F - __fmod_finite F - __fmodf_finite F - __gamma_r_finite F - __gammaf_r_finite F - __hypot_finite F - __hypotf_finite F - __j0_finite F - __j0f_finite F - __j1_finite F - __j1f_finite F - __jn_finite F - __jnf_finite F - __lgamma_r_finite F - __lgammaf_r_finite F - __log10_finite F - __log10f_finite F - __log2_finite F - __log2f_finite F - __log_finite F - __logf_finite F - __pow_finite F - __powf_finite F - __remainder_finite F - __remainderf_finite F - __scalb_finite F - __scalbf_finite F - __sinh_finite F - __sinhf_finite F - __sqrt_finite F - __sqrtf_finite F - __y0_finite F - __y0f_finite F - __y1_finite F - __y1f_finite F - __yn_finite F - __ynf_finite F -GLIBC_2.18 - GLIBC_2.18 A - __issignaling F - __issignalingf F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libnsl.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libnsl.abilist deleted file mode 100644 index e4217934c8..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libnsl.abilist +++ /dev/null @@ -1,123 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - __free_fdresult F - __nis_default_access F - __nis_default_group F - __nis_default_owner F - __nis_default_ttl F - __nis_finddirectory F - __nis_hash F - __nisbind_connect F - __nisbind_create F - __nisbind_destroy F - __nisbind_next F - __yp_check F - nis_add F - nis_add_entry F - nis_addmember F - nis_checkpoint F - nis_clone_directory F - nis_clone_object F - nis_clone_result F - nis_creategroup F - nis_destroy_object F - nis_destroygroup F - nis_dir_cmp F - nis_domain_of F - nis_domain_of_r F - nis_first_entry F - nis_free_directory F - nis_free_object F - nis_free_request F - nis_freenames F - nis_freeresult F - nis_freeservlist F - nis_freetags F - nis_getnames F - nis_getservlist F - nis_ismember F - nis_leaf_of F - nis_leaf_of_r F - nis_lerror F - nis_list F - nis_local_directory F - nis_local_group F - nis_local_host F - nis_local_principal F - nis_lookup F - nis_mkdir F - nis_modify F - nis_modify_entry F - nis_name_of F - nis_name_of_r F - nis_next_entry F - nis_perror F - nis_ping F - nis_print_directory F - nis_print_entry F - nis_print_group F - nis_print_group_entry F - nis_print_link F - nis_print_object F - nis_print_result F - nis_print_rights F - nis_print_table F - nis_read_obj F - nis_remove F - nis_remove_entry F - nis_removemember F - nis_rmdir F - nis_servstate F - nis_sperrno F - nis_sperror F - nis_sperror_r F - nis_stats F - nis_verifygroup F - nis_write_obj F - readColdStartFile F - writeColdStartFile F - xdr_cback_data F - xdr_domainname F - xdr_keydat F - xdr_mapname F - xdr_obj_p F - xdr_peername F - xdr_valdat F - xdr_yp_buf F - xdr_ypall F - xdr_ypbind_binding F - xdr_ypbind_resp F - xdr_ypbind_resptype F - xdr_ypbind_setdom F - xdr_ypdelete_args F - xdr_ypmap_parms F - xdr_ypmaplist F - xdr_yppush_status F - xdr_yppushresp_xfr F - xdr_ypreq_key F - xdr_ypreq_nokey F - xdr_ypreq_xfr F - xdr_ypresp_all F - xdr_ypresp_key_val F - xdr_ypresp_maplist F - xdr_ypresp_master F - xdr_ypresp_order F - xdr_ypresp_val F - xdr_ypresp_xfr F - xdr_ypstat F - xdr_ypupdate_args F - xdr_ypxfrstat F - yp_all F - yp_bind F - yp_first F - yp_get_default_domain F - yp_maplist F - yp_master F - yp_match F - yp_next F - yp_order F - yp_unbind F - yp_update F - ypbinderr_string F - yperr_string F - ypprot_err F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libpthread.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libpthread.abilist deleted file mode 100644 index f3c260071a..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libpthread.abilist +++ /dev/null @@ -1,228 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - _IO_flockfile F - _IO_ftrylockfile F - _IO_funlockfile F - __close F - __connect F - __errno_location F - __fcntl F - __fork F - __h_errno_location F - __libc_allocate_rtsig F - __libc_current_sigrtmax F - __libc_current_sigrtmin F - __lseek F - __nanosleep F - __open F - __open64 F - __pread64 F - __pthread_cleanup_routine F - __pthread_getspecific F - __pthread_key_create F - __pthread_mutex_destroy F - __pthread_mutex_init F - __pthread_mutex_lock F - __pthread_mutex_trylock F - __pthread_mutex_unlock F - __pthread_mutexattr_destroy F - __pthread_mutexattr_init F - __pthread_mutexattr_settype F - __pthread_once F - __pthread_register_cancel F - __pthread_register_cancel_defer F - __pthread_rwlock_destroy F - __pthread_rwlock_init F - __pthread_rwlock_rdlock F - __pthread_rwlock_tryrdlock F - __pthread_rwlock_trywrlock F - __pthread_rwlock_unlock F - __pthread_rwlock_wrlock F - __pthread_setspecific F - __pthread_unregister_cancel F - __pthread_unregister_cancel_restore F - __pthread_unwind_next F - __pwrite64 F - __read F - __res_state F - __send F - __sigaction F - __vfork F - __wait F - __write F - _pthread_cleanup_pop F - _pthread_cleanup_pop_restore F - _pthread_cleanup_push F - _pthread_cleanup_push_defer F - accept F - close F - connect F - fcntl F - flockfile F - fork F - fsync F - ftrylockfile F - funlockfile F - longjmp F - lseek F - lseek64 F - msync F - nanosleep F - open F - open64 F - pause F - pread F - pread64 F - pthread_attr_destroy F - pthread_attr_getaffinity_np F - pthread_attr_getdetachstate F - pthread_attr_getguardsize F - pthread_attr_getinheritsched F - pthread_attr_getschedparam F - pthread_attr_getschedpolicy F - pthread_attr_getscope F - pthread_attr_getstack F - pthread_attr_getstackaddr F - pthread_attr_getstacksize F - pthread_attr_init F - pthread_attr_setaffinity_np F - pthread_attr_setdetachstate F - pthread_attr_setguardsize F - pthread_attr_setinheritsched F - pthread_attr_setschedparam F - pthread_attr_setschedpolicy F - pthread_attr_setscope F - pthread_attr_setstack F - pthread_attr_setstackaddr F - pthread_attr_setstacksize F - pthread_barrier_destroy F - pthread_barrier_init F - pthread_barrier_wait F - pthread_barrierattr_destroy F - pthread_barrierattr_getpshared F - pthread_barrierattr_init F - pthread_barrierattr_setpshared F - pthread_cancel F - pthread_cond_broadcast F - pthread_cond_destroy F - pthread_cond_init F - pthread_cond_signal F - pthread_cond_timedwait F - pthread_cond_wait F - pthread_condattr_destroy F - pthread_condattr_getclock F - pthread_condattr_getpshared F - pthread_condattr_init F - pthread_condattr_setclock F - pthread_condattr_setpshared F - pthread_create F - pthread_detach F - pthread_equal F - pthread_exit F - pthread_getaffinity_np F - pthread_getattr_np F - pthread_getconcurrency F - pthread_getcpuclockid F - pthread_getname_np F - pthread_getschedparam F - pthread_getspecific F - pthread_join F - pthread_key_create F - pthread_key_delete F - pthread_kill F - pthread_kill_other_threads_np F - pthread_mutex_consistent F - pthread_mutex_consistent_np F - pthread_mutex_destroy F - pthread_mutex_getprioceiling F - pthread_mutex_init F - pthread_mutex_lock F - pthread_mutex_setprioceiling F - pthread_mutex_timedlock F - pthread_mutex_trylock F - pthread_mutex_unlock F - pthread_mutexattr_destroy F - pthread_mutexattr_getkind_np F - pthread_mutexattr_getprioceiling F - pthread_mutexattr_getprotocol F - pthread_mutexattr_getpshared F - pthread_mutexattr_getrobust F - pthread_mutexattr_getrobust_np F - pthread_mutexattr_gettype F - pthread_mutexattr_init F - pthread_mutexattr_setkind_np F - pthread_mutexattr_setprioceiling F - pthread_mutexattr_setprotocol F - pthread_mutexattr_setpshared F - pthread_mutexattr_setrobust F - pthread_mutexattr_setrobust_np F - pthread_mutexattr_settype F - pthread_once F - pthread_rwlock_destroy F - pthread_rwlock_init F - pthread_rwlock_rdlock F - pthread_rwlock_timedrdlock F - pthread_rwlock_timedwrlock F - pthread_rwlock_tryrdlock F - pthread_rwlock_trywrlock F - pthread_rwlock_unlock F - pthread_rwlock_wrlock F - pthread_rwlockattr_destroy F - pthread_rwlockattr_getkind_np F - pthread_rwlockattr_getpshared F - pthread_rwlockattr_init F - pthread_rwlockattr_setkind_np F - pthread_rwlockattr_setpshared F - pthread_self F - pthread_setaffinity_np F - pthread_setcancelstate F - pthread_setcanceltype F - pthread_setconcurrency F - pthread_setname_np F - pthread_setschedparam F - pthread_setschedprio F - pthread_setspecific F - pthread_sigmask F - pthread_sigqueue F - pthread_spin_destroy F - pthread_spin_init F - pthread_spin_lock F - pthread_spin_trylock F - pthread_spin_unlock F - pthread_testcancel F - pthread_timedjoin_np F - pthread_tryjoin_np F - pthread_yield F - pwrite F - pwrite64 F - raise F - read F - recv F - recvfrom F - recvmsg F - sem_close F - sem_destroy F - sem_getvalue F - sem_init F - sem_open F - sem_post F - sem_timedwait F - sem_trywait F - sem_unlink F - sem_wait F - send F - sendmsg F - sendto F - sigaction F - siglongjmp F - sigwait F - system F - tcdrain F - vfork F - wait F - waitpid F - write F -GLIBC_2.18 - GLIBC_2.18 A - pthread_getattr_default_np F - pthread_setattr_default_np F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libresolv.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libresolv.abilist deleted file mode 100644 index 64826160a1..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libresolv.abilist +++ /dev/null @@ -1,93 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - __b64_ntop F - __b64_pton F - __dn_comp F - __dn_count_labels F - __dn_expand F - __dn_skipname F - __fp_nquery F - __fp_query F - __fp_resstat F - __hostalias F - __loc_aton F - __loc_ntoa F - __p_cdname F - __p_cdnname F - __p_class F - __p_class_syms D 0x54 - __p_fqname F - __p_fqnname F - __p_option F - __p_query F - __p_rcode F - __p_secstodate F - __p_time F - __p_type F - __p_type_syms D 0x228 - __putlong F - __putshort F - __res_close F - __res_dnok F - __res_hnok F - __res_hostalias F - __res_isourserver F - __res_mailok F - __res_mkquery F - __res_nameinquery F - __res_nmkquery F - __res_nquery F - __res_nquerydomain F - __res_nsearch F - __res_nsend F - __res_ownok F - __res_queriesmatch F - __res_query F - __res_querydomain F - __res_search F - __res_send F - __sym_ntop F - __sym_ntos F - __sym_ston F - _gethtbyaddr F - _gethtbyname F - _gethtbyname2 F - _gethtent F - _getlong F - _getshort F - _res_opcodes D 0x40 - _sethtent F - inet_net_ntop F - inet_net_pton F - inet_neta F - ns_datetosecs F - ns_format_ttl F - ns_get16 F - ns_get32 F - ns_initparse F - ns_makecanon F - ns_msg_getflag F - ns_name_compress F - ns_name_ntol F - ns_name_ntop F - ns_name_pack F - ns_name_pton F - ns_name_rollback F - ns_name_skip F - ns_name_uncompress F - ns_name_unpack F - ns_parse_ttl F - ns_parserr F - ns_put16 F - ns_put32 F - ns_samedomain F - ns_samename F - ns_skiprr F - ns_sprintrr F - ns_sprintrrf F - ns_subdomain F - res_gethostbyaddr F - res_gethostbyname F - res_gethostbyname2 F - res_send_setqhook F - res_send_setrhook F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/librt.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/librt.abilist deleted file mode 100644 index 87fec065af..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/librt.abilist +++ /dev/null @@ -1,42 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - __mq_open_2 F - aio_cancel F - aio_cancel64 F - aio_error F - aio_error64 F - aio_fsync F - aio_fsync64 F - aio_init F - aio_read F - aio_read64 F - aio_return F - aio_return64 F - aio_suspend F - aio_suspend64 F - aio_write F - aio_write64 F - clock_getcpuclockid F - clock_getres F - clock_gettime F - clock_nanosleep F - clock_settime F - lio_listio F - lio_listio64 F - mq_close F - mq_getattr F - mq_notify F - mq_open F - mq_receive F - mq_send F - mq_setattr F - mq_timedreceive F - mq_timedsend F - mq_unlink F - shm_open F - shm_unlink F - timer_create F - timer_delete F - timer_getoverrun F - timer_gettime F - timer_settime F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libthread_db.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libthread_db.abilist deleted file mode 100644 index 934ce9acd6..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libthread_db.abilist +++ /dev/null @@ -1,42 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - td_init F - td_log F - td_symbol_list F - td_ta_clear_event F - td_ta_delete F - td_ta_enable_stats F - td_ta_event_addr F - td_ta_event_getmsg F - td_ta_get_nthreads F - td_ta_get_ph F - td_ta_get_stats F - td_ta_map_id2thr F - td_ta_map_lwp2thr F - td_ta_new F - td_ta_reset_stats F - td_ta_set_event F - td_ta_setconcurrency F - td_ta_thr_iter F - td_ta_tsd_iter F - td_thr_clear_event F - td_thr_dbresume F - td_thr_dbsuspend F - td_thr_event_enable F - td_thr_event_getmsg F - td_thr_get_info F - td_thr_getfpregs F - td_thr_getgregs F - td_thr_getxregs F - td_thr_getxregsize F - td_thr_set_event F - td_thr_setfpregs F - td_thr_setgregs F - td_thr_setprio F - td_thr_setsigpending F - td_thr_setxregs F - td_thr_sigsetmask F - td_thr_tls_get_addr F - td_thr_tlsbase F - td_thr_tsd F - td_thr_validate F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libutil.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libutil.abilist deleted file mode 100644 index 50c312a7c6..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libutil.abilist +++ /dev/null @@ -1,8 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - forkpty F - login F - login_tty F - logout F - logwtmp F - openpty F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/Implies b/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/Implies deleted file mode 100644 index e4e0800c0a..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/Implies +++ /dev/null @@ -1,4 +0,0 @@ -unix/sysv/linux/tile/tilegx -unix/sysv/linux/tile -unix/sysv/linux/generic -unix/sysv/linux/wordsize-64 diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/Makefile b/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/Makefile deleted file mode 100644 index c8991d31e4..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/Makefile +++ /dev/null @@ -1 +0,0 @@ -default-abi := 64 diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/c++-types.data b/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/c++-types.data deleted file mode 100644 index ac925ccb36..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/c++-types.data +++ /dev/null @@ -1,67 +0,0 @@ -blkcnt64_t:l -blkcnt_t:l -blksize_t:i -caddr_t:Pc -clockid_t:i -clock_t:l -daddr_t:i -dev_t:m -fd_mask:l -fsblkcnt64_t:m -fsblkcnt_t:m -fsfilcnt64_t:m -fsfilcnt_t:m -fsid_t:8__fsid_t -gid_t:j -id_t:j -ino64_t:m -ino_t:m -int16_t:s -int32_t:i -int64_t:l -int8_t:a -intptr_t:l -key_t:i -loff_t:l -mode_t:j -nlink_t:j -off64_t:l -off_t:l -pid_t:i -pthread_attr_t:14pthread_attr_t -pthread_barrier_t:17pthread_barrier_t -pthread_barrierattr_t:21pthread_barrierattr_t -pthread_cond_t:14pthread_cond_t -pthread_condattr_t:18pthread_condattr_t -pthread_key_t:j -pthread_mutex_t:15pthread_mutex_t -pthread_mutexattr_t:19pthread_mutexattr_t -pthread_once_t:i -pthread_rwlock_t:16pthread_rwlock_t -pthread_rwlockattr_t:20pthread_rwlockattr_t -pthread_spinlock_t:i -pthread_t:m -quad_t:l -register_t:l -rlim64_t:m -rlim_t:m -sigset_t:10__sigset_t -size_t:m -socklen_t:j -ssize_t:l -suseconds_t:l -time_t:l -u_char:h -uid_t:j -uint:j -u_int:j -u_int16_t:t -u_int32_t:j -u_int64_t:m -u_int8_t:h -ulong:m -u_long:m -u_quad_t:m -useconds_t:j -ushort:t -u_short:t diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/ld.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/ld.abilist deleted file mode 100644 index f914e4b82d..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/ld.abilist +++ /dev/null @@ -1,11 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - __libc_memalign F - __libc_stack_end D 0x8 - __tls_get_addr F - _dl_mcount F - _r_debug D 0x28 - calloc F - free F - malloc F - realloc F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libBrokenLocale.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libBrokenLocale.abilist deleted file mode 100644 index 4af9128544..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libBrokenLocale.abilist +++ /dev/null @@ -1,3 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - __ctype_get_mb_cur_max F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libanl.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libanl.abilist deleted file mode 100644 index 29e602a75a..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libanl.abilist +++ /dev/null @@ -1,6 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - gai_cancel F - gai_error F - gai_suspend F - getaddrinfo_a F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libc.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libc.abilist deleted file mode 100644 index 68d975be55..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libc.abilist +++ /dev/null @@ -1,2093 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - _Exit F - _IO_2_1_stderr_ D 0xe0 - _IO_2_1_stdin_ D 0xe0 - _IO_2_1_stdout_ D 0xe0 - _IO_adjust_column F - _IO_adjust_wcolumn F - _IO_default_doallocate F - _IO_default_finish F - _IO_default_pbackfail F - _IO_default_uflow F - _IO_default_xsgetn F - _IO_default_xsputn F - _IO_do_write F - _IO_doallocbuf F - _IO_fclose F - _IO_fdopen F - _IO_feof F - _IO_ferror F - _IO_fflush F - _IO_fgetpos F - _IO_fgetpos64 F - _IO_fgets F - _IO_file_attach F - _IO_file_close F - _IO_file_close_it F - _IO_file_doallocate F - _IO_file_finish F - _IO_file_fopen F - _IO_file_init F - _IO_file_jumps D 0xa8 - _IO_file_open F - _IO_file_overflow F - _IO_file_read F - _IO_file_seek F - _IO_file_seekoff F - _IO_file_setbuf F - _IO_file_stat F - _IO_file_sync F - _IO_file_underflow F - _IO_file_write F - _IO_file_xsputn F - _IO_flockfile F - _IO_flush_all F - _IO_flush_all_linebuffered F - _IO_fopen F - _IO_fprintf F - _IO_fputs F - _IO_fread F - _IO_free_backup_area F - _IO_free_wbackup_area F - _IO_fsetpos F - _IO_fsetpos64 F - _IO_ftell F - _IO_ftrylockfile F - _IO_funlockfile F - _IO_fwrite F - _IO_getc F - _IO_getline F - _IO_getline_info F - _IO_gets F - _IO_init F - _IO_init_marker F - _IO_init_wmarker F - _IO_iter_begin F - _IO_iter_end F - _IO_iter_file F - _IO_iter_next F - _IO_least_wmarker F - _IO_link_in F - _IO_list_all D 0x8 - _IO_list_lock F - _IO_list_resetlock F - _IO_list_unlock F - _IO_marker_delta F - _IO_marker_difference F - _IO_padn F - _IO_peekc_locked F - _IO_popen F - _IO_printf F - _IO_proc_close F - _IO_proc_open F - _IO_putc F - _IO_puts F - _IO_remove_marker F - _IO_seekmark F - _IO_seekoff F - _IO_seekpos F - _IO_seekwmark F - _IO_setb F - _IO_setbuffer F - _IO_setvbuf F - _IO_sgetn F - _IO_sprintf F - _IO_sputbackc F - _IO_sputbackwc F - _IO_sscanf F - _IO_str_init_readonly F - _IO_str_init_static F - _IO_str_overflow F - _IO_str_pbackfail F - _IO_str_seekoff F - _IO_str_underflow F - _IO_sungetc F - _IO_sungetwc F - _IO_switch_to_get_mode F - _IO_switch_to_main_wget_area F - _IO_switch_to_wbackup_area F - _IO_switch_to_wget_mode F - _IO_un_link F - _IO_ungetc F - _IO_unsave_markers F - _IO_unsave_wmarkers F - _IO_vfprintf F - _IO_vfscanf F - _IO_vsprintf F - _IO_wdefault_doallocate F - _IO_wdefault_finish F - _IO_wdefault_pbackfail F - _IO_wdefault_uflow F - _IO_wdefault_xsgetn F - _IO_wdefault_xsputn F - _IO_wdo_write F - _IO_wdoallocbuf F - _IO_wfile_jumps D 0xa8 - _IO_wfile_overflow F - _IO_wfile_seekoff F - _IO_wfile_sync F - _IO_wfile_underflow F - _IO_wfile_xsputn F - _IO_wmarker_delta F - _IO_wsetb F - ___brk_addr D 0x8 - __adjtimex F - __after_morecore_hook D 0x8 - __argz_count F - __argz_next F - __argz_stringify F - __asprintf F - __asprintf_chk F - __assert F - __assert_fail F - __assert_perror_fail F - __backtrace F - __backtrace_symbols F - __backtrace_symbols_fd F - __bsd_getpgrp F - __bzero F - __check_rhosts_file D 0x4 - __chk_fail F - __clone F - __close F - __cmsg_nxthdr F - __confstr_chk F - __connect F - __ctype_b_loc F - __ctype_get_mb_cur_max F - __ctype_tolower_loc F - __ctype_toupper_loc F - __curbrk D 0x8 - __cxa_at_quick_exit F - __cxa_atexit F - __cxa_finalize F - __cyg_profile_func_enter F - __cyg_profile_func_exit F - __daylight D 0x4 - __dcgettext F - __default_morecore F - __dgettext F - __dprintf_chk F - __dup2 F - __duplocale F - __endmntent F - __environ D 0x8 - __errno_location F - __fbufsize F - __fcntl F - __ffs F - __fgets_chk F - __fgets_unlocked_chk F - __fgetws_chk F - __fgetws_unlocked_chk F - __finite F - __finitef F - __flbf F - __fork F - __fpending F - __fprintf_chk F - __fpu_control D 0x4 - __fpurge F - __fread_chk F - __fread_unlocked_chk F - __freadable F - __freading F - __free_hook D 0x8 - __freelocale F - __fsetlocking F - __fwprintf_chk F - __fwritable F - __fwriting F - __fxstat F - __fxstat64 F - __fxstatat F - __fxstatat64 F - __getcwd_chk F - __getdelim F - __getdomainname_chk F - __getgroups_chk F - __gethostname_chk F - __getlogin_r_chk F - __getmntent_r F - __getpagesize F - __getpgid F - __getpid F - __gets_chk F - __gettimeofday F - __getwd_chk F - __gmtime_r F - __h_errno_location F - __isalnum_l F - __isalpha_l F - __isascii_l F - __isblank_l F - __iscntrl_l F - __isctype F - __isdigit_l F - __isgraph_l F - __isinf F - __isinff F - __islower_l F - __isnan F - __isnanf F - __isoc99_fscanf F - __isoc99_fwscanf F - __isoc99_scanf F - __isoc99_sscanf F - __isoc99_swscanf F - __isoc99_vfscanf F - __isoc99_vfwscanf F - __isoc99_vscanf F - __isoc99_vsscanf F - __isoc99_vswscanf F - __isoc99_vwscanf F - __isoc99_wscanf F - __isprint_l F - __ispunct_l F - __isspace_l F - __isupper_l F - __iswalnum_l F - __iswalpha_l F - __iswblank_l F - __iswcntrl_l F - __iswctype F - __iswctype_l F - __iswdigit_l F - __iswgraph_l F - __iswlower_l F - __iswprint_l F - __iswpunct_l F - __iswspace_l F - __iswupper_l F - __iswxdigit_l F - __isxdigit_l F - __ivaliduser F - __key_decryptsession_pk_LOCAL D 0x8 - __key_encryptsession_pk_LOCAL D 0x8 - __key_gendes_LOCAL D 0x8 - __libc_allocate_rtsig F - __libc_calloc F - __libc_current_sigrtmax F - __libc_current_sigrtmin F - __libc_free F - __libc_freeres F - __libc_init_first F - __libc_mallinfo F - __libc_malloc F - __libc_mallopt F - __libc_memalign F - __libc_pvalloc F - __libc_realloc F - __libc_sa_len F - __libc_start_main F - __libc_valloc F - __longjmp_chk F - __lseek F - __lxstat F - __lxstat64 F - __malloc_hook D 0x8 - __malloc_initialize_hook D 0x8 - __mbrlen F - __mbrtowc F - __mbsnrtowcs_chk F - __mbsrtowcs_chk F - __mbstowcs_chk F - __mcount F - __memalign_hook D 0x8 - __memcpy_chk F - __memmove_chk F - __mempcpy F - __mempcpy_chk F - __mempcpy_small F - __memset_chk F - __monstartup F - __morecore D 0x8 - __nanosleep F - __newlocale F - __nl_langinfo_l F - __nss_configure_lookup F - __nss_database_lookup F - __nss_group_lookup F - __nss_hostname_digits_dots F - __nss_hosts_lookup F - __nss_next F - __nss_passwd_lookup F - __obstack_printf_chk F - __obstack_vprintf_chk F - __open F - __open64 F - __open64_2 F - __open_2 F - __openat64_2 F - __openat_2 F - __overflow F - __pipe F - __poll F - __posix_getopt F - __pread64 F - __pread64_chk F - __pread_chk F - __printf_chk F - __printf_fp F - __profile_frequency F - __progname D 0x8 - __progname_full D 0x8 - __ptsname_r_chk F - __pwrite64 F - __rawmemchr F - __rcmd_errstr D 0x8 - __read F - __read_chk F - __readlink_chk F - __readlinkat_chk F - __realloc_hook D 0x8 - __realpath_chk F - __recv_chk F - __recvfrom_chk F - __register_atfork F - __res_init F - __res_nclose F - __res_ninit F - __res_randomid F - __res_state F - __rpc_thread_createerr F - __rpc_thread_svc_fdset F - __rpc_thread_svc_max_pollfd F - __rpc_thread_svc_pollfd F - __sbrk F - __sched_cpualloc F - __sched_cpucount F - __sched_cpufree F - __sched_get_priority_max F - __sched_get_priority_min F - __sched_getparam F - __sched_getscheduler F - __sched_setscheduler F - __sched_yield F - __secure_getenv F - __select F - __setmntent F - __setpgid F - __sigaction F - __sigaddset F - __sigdelset F - __sigismember F - __signbit F - __signbitf F - __sigpause F - __sigsetjmp F - __sigsuspend F - __snprintf_chk F - __sprintf_chk F - __stack_chk_fail F - __statfs F - __stpcpy F - __stpcpy_chk F - __stpcpy_small F - __stpncpy F - __stpncpy_chk F - __strcasecmp F - __strcasecmp_l F - __strcasestr F - __strcat_chk F - __strcoll_l F - __strcpy_chk F - __strcpy_small F - __strcspn_c1 F - __strcspn_c2 F - __strcspn_c3 F - __strdup F - __strerror_r F - __strfmon_l F - __strftime_l F - __strncasecmp_l F - __strncat_chk F - __strncpy_chk F - __strndup F - __strpbrk_c2 F - __strpbrk_c3 F - __strsep_1c F - __strsep_2c F - __strsep_3c F - __strsep_g F - __strspn_c1 F - __strspn_c2 F - __strspn_c3 F - __strtod_internal F - __strtod_l F - __strtof_internal F - __strtof_l F - __strtok_r F - __strtok_r_1c F - __strtol_internal F - __strtol_l F - __strtold_internal F - __strtold_l F - __strtoll_internal F - __strtoll_l F - __strtoul_internal F - __strtoul_l F - __strtoull_internal F - __strtoull_l F - __strverscmp F - __strxfrm_l F - __swprintf_chk F - __sysconf F - __syslog_chk F - __sysv_signal F - __timezone D 0x8 - __toascii_l F - __tolower_l F - __toupper_l F - __towctrans F - __towctrans_l F - __towlower_l F - __towupper_l F - __ttyname_r_chk F - __tzname D 0x10 - __uflow F - __underflow F - __uselocale F - __vasprintf_chk F - __vdprintf_chk F - __vfork F - __vfprintf_chk F - __vfscanf F - __vfwprintf_chk F - __vprintf_chk F - __vsnprintf F - __vsnprintf_chk F - __vsprintf_chk F - __vsscanf F - __vswprintf_chk F - __vsyslog_chk F - __vwprintf_chk F - __wait F - __waitpid F - __wcpcpy_chk F - __wcpncpy_chk F - __wcrtomb_chk F - __wcscasecmp_l F - __wcscat_chk F - __wcscoll_l F - __wcscpy_chk F - __wcsftime_l F - __wcsncasecmp_l F - __wcsncat_chk F - __wcsncpy_chk F - __wcsnrtombs_chk F - __wcsrtombs_chk F - __wcstod_internal F - __wcstod_l F - __wcstof_internal F - __wcstof_l F - __wcstol_internal F - __wcstol_l F - __wcstold_internal F - __wcstold_l F - __wcstoll_internal F - __wcstoll_l F - __wcstombs_chk F - __wcstoul_internal F - __wcstoul_l F - __wcstoull_internal F - __wcstoull_l F - __wcsxfrm_l F - __wctomb_chk F - __wctrans_l F - __wctype_l F - __wmemcpy_chk F - __wmemmove_chk F - __wmempcpy_chk F - __wmemset_chk F - __woverflow F - __wprintf_chk F - __write F - __wuflow F - __wunderflow F - __xmknod F - __xmknodat F - __xpg_basename F - __xpg_sigpause F - __xpg_strerror_r F - __xstat F - __xstat64 F - _authenticate F - _dl_mcount_wrapper F - _dl_mcount_wrapper_check F - _environ D 0x8 - _exit F - _flush_cache F - _flushlbf F - _libc_intl_domainname D 0x5 - _longjmp F - _mcleanup F - _mcount F - _nl_default_dirname D 0x12 - _nl_domain_bindings D 0x8 - _nl_msg_cat_cntr D 0x4 - _null_auth D 0x18 - _obstack_allocated_p F - _obstack_begin F - _obstack_begin_1 F - _obstack_free F - _obstack_memory_used F - _obstack_newchunk F - _res D 0x238 - _res_hconf D 0x48 - _rpc_dtablesize F - _seterr_reply F - _setjmp F - _sys_errlist D 0x438 - _sys_nerr D 0x4 - _sys_siglist D 0x208 - _tolower F - _toupper F - a64l F - abort F - abs F - accept F - accept4 F - access F - acct F - addmntent F - addseverity F - adjtime F - adjtimex F - advance F - alarm F - alphasort F - alphasort64 F - argp_err_exit_status D 0x4 - argp_error F - argp_failure F - argp_help F - argp_parse F - argp_program_bug_address D 0x8 - argp_program_version D 0x8 - argp_program_version_hook D 0x8 - argp_state_help F - argp_usage F - argz_add F - argz_add_sep F - argz_append F - argz_count F - argz_create F - argz_create_sep F - argz_delete F - argz_extract F - argz_insert F - argz_next F - argz_replace F - argz_stringify F - asctime F - asctime_r F - asprintf F - atof F - atoi F - atol F - atoll F - authdes_create F - authdes_getucred F - authdes_pk_create F - authnone_create F - authunix_create F - authunix_create_default F - backtrace F - backtrace_symbols F - backtrace_symbols_fd F - basename F - bcmp F - bcopy F - bdflush F - bind F - bind_textdomain_codeset F - bindresvport F - bindtextdomain F - brk F - bsd_signal F - bsearch F - btowc F - bzero F - cacheflush F - calloc F - callrpc F - canonicalize_file_name F - capget F - capset F - catclose F - catgets F - catopen F - cbc_crypt F - cfgetispeed F - cfgetospeed F - cfmakeraw F - cfree F - cfsetispeed F - cfsetospeed F - cfsetspeed F - chdir F - chflags F - chmod F - chown F - chroot F - clearenv F - clearerr F - clearerr_unlocked F - clnt_broadcast F - clnt_create F - clnt_pcreateerror F - clnt_perrno F - clnt_perror F - clnt_spcreateerror F - clnt_sperrno F - clnt_sperror F - clntraw_create F - clnttcp_create F - clntudp_bufcreate F - clntudp_create F - clntunix_create F - clock F - clone F - close F - closedir F - closelog F - confstr F - connect F - copysign F - copysignf F - copysignl F - creat F - creat64 F - create_module F - ctermid F - ctime F - ctime_r F - cuserid F - daemon F - daylight D 0x4 - dcgettext F - dcngettext F - delete_module F - des_setparity F - dgettext F - difftime F - dirfd F - dirname F - div F - dl_iterate_phdr F - dngettext F - dprintf F - drand48 F - drand48_r F - dup F - dup2 F - dup3 F - duplocale F - dysize F - eaccess F - ecb_crypt F - ecvt F - ecvt_r F - endaliasent F - endfsent F - endgrent F - endhostent F - endmntent F - endnetent F - endnetgrent F - endprotoent F - endpwent F - endrpcent F - endservent F - endsgent F - endspent F - endttyent F - endusershell F - endutent F - endutxent F - environ D 0x8 - envz_add F - envz_entry F - envz_get F - envz_merge F - envz_remove F - envz_strip F - epoll_create F - epoll_create1 F - epoll_ctl F - epoll_pwait F - epoll_wait F - erand48 F - erand48_r F - err F - error F - error_at_line F - error_message_count D 0x4 - error_one_per_line D 0x4 - error_print_progname D 0x8 - errx F - ether_aton F - ether_aton_r F - ether_hostton F - ether_line F - ether_ntoa F - ether_ntoa_r F - ether_ntohost F - euidaccess F - eventfd F - eventfd_read F - eventfd_write F - execl F - execle F - execlp F - execv F - execve F - execvp F - execvpe F - exit F - faccessat F - fallocate F - fallocate64 F - fattach F - fchdir F - fchflags F - fchmod F - fchmodat F - fchown F - fchownat F - fclose F - fcloseall F - fcntl F - fcvt F - fcvt_r F - fdatasync F - fdetach F - fdopen F - fdopendir F - feof F - feof_unlocked F - ferror F - ferror_unlocked F - fexecve F - fflush F - fflush_unlocked F - ffs F - ffsl F - ffsll F - fgetc F - fgetc_unlocked F - fgetgrent F - fgetgrent_r F - fgetpos F - fgetpos64 F - fgetpwent F - fgetpwent_r F - fgets F - fgets_unlocked F - fgetsgent F - fgetsgent_r F - fgetspent F - fgetspent_r F - fgetwc F - fgetwc_unlocked F - fgetws F - fgetws_unlocked F - fgetxattr F - fileno F - fileno_unlocked F - finite F - finitef F - finitel F - flistxattr F - flock F - flockfile F - fmemopen F - fmtmsg F - fnmatch F - fopen F - fopen64 F - fopencookie F - fork F - fpathconf F - fprintf F - fputc F - fputc_unlocked F - fputs F - fputs_unlocked F - fputwc F - fputwc_unlocked F - fputws F - fputws_unlocked F - fread F - fread_unlocked F - free F - freeaddrinfo F - freeifaddrs F - freelocale F - fremovexattr F - freopen F - freopen64 F - frexp F - frexpf F - frexpl F - fscanf F - fseek F - fseeko F - fseeko64 F - fsetpos F - fsetpos64 F - fsetxattr F - fstatfs F - fstatfs64 F - fstatvfs F - fstatvfs64 F - fsync F - ftell F - ftello F - ftello64 F - ftime F - ftok F - ftruncate F - ftruncate64 F - ftrylockfile F - fts_children F - fts_close F - fts_open F - fts_read F - fts_set F - ftw F - ftw64 F - funlockfile F - futimens F - futimes F - futimesat F - fwide F - fwprintf F - fwrite F - fwrite_unlocked F - fwscanf F - gai_strerror F - gcvt F - get_avphys_pages F - get_current_dir_name F - get_kernel_syms F - get_myaddress F - get_nprocs F - get_nprocs_conf F - get_phys_pages F - getaddrinfo F - getaliasbyname F - getaliasbyname_r F - getaliasent F - getaliasent_r F - getc F - getc_unlocked F - getchar F - getchar_unlocked F - getcontext F - getcwd F - getdate F - getdate_err D 0x4 - getdate_r F - getdelim F - getdirentries F - getdirentries64 F - getdomainname F - getdtablesize F - getegid F - getenv F - geteuid F - getfsent F - getfsfile F - getfsspec F - getgid F - getgrent F - getgrent_r F - getgrgid F - getgrgid_r F - getgrnam F - getgrnam_r F - getgrouplist F - getgroups F - gethostbyaddr F - gethostbyaddr_r F - gethostbyname F - gethostbyname2 F - gethostbyname2_r F - gethostbyname_r F - gethostent F - gethostent_r F - gethostid F - gethostname F - getifaddrs F - getipv4sourcefilter F - getitimer F - getline F - getloadavg F - getlogin F - getlogin_r F - getmntent F - getmntent_r F - getmsg F - getnameinfo F - getnetbyaddr F - getnetbyaddr_r F - getnetbyname F - getnetbyname_r F - getnetent F - getnetent_r F - getnetgrent F - getnetgrent_r F - getnetname F - getopt F - getopt_long F - getopt_long_only F - getpagesize F - getpass F - getpeername F - getpgid F - getpgrp F - getpid F - getpmsg F - getppid F - getpriority F - getprotobyname F - getprotobyname_r F - getprotobynumber F - getprotobynumber_r F - getprotoent F - getprotoent_r F - getpt F - getpublickey F - getpw F - getpwent F - getpwent_r F - getpwnam F - getpwnam_r F - getpwuid F - getpwuid_r F - getresgid F - getresuid F - getrlimit F - getrlimit64 F - getrpcbyname F - getrpcbyname_r F - getrpcbynumber F - getrpcbynumber_r F - getrpcent F - getrpcent_r F - getrpcport F - getrusage F - gets F - getsecretkey F - getservbyname F - getservbyname_r F - getservbyport F - getservbyport_r F - getservent F - getservent_r F - getsgent F - getsgent_r F - getsgnam F - getsgnam_r F - getsid F - getsockname F - getsockopt F - getsourcefilter F - getspent F - getspent_r F - getspnam F - getspnam_r F - getsubopt F - gettext F - gettimeofday F - getttyent F - getttynam F - getuid F - getusershell F - getutent F - getutent_r F - getutid F - getutid_r F - getutline F - getutline_r F - getutmp F - getutmpx F - getutxent F - getutxid F - getutxline F - getw F - getwc F - getwc_unlocked F - getwchar F - getwchar_unlocked F - getwd F - getxattr F - glob F - glob64 F - glob_pattern_p F - globfree F - globfree64 F - gmtime F - gmtime_r F - gnu_dev_major F - gnu_dev_makedev F - gnu_dev_minor F - gnu_get_libc_release F - gnu_get_libc_version F - grantpt F - group_member F - gsignal F - gtty F - h_errlist D 0x28 - h_nerr D 0x4 - hasmntopt F - hcreate F - hcreate_r F - hdestroy F - hdestroy_r F - herror F - host2netname F - hsearch F - hsearch_r F - hstrerror F - htonl F - htons F - iconv F - iconv_close F - iconv_open F - if_freenameindex F - if_indextoname F - if_nameindex F - if_nametoindex F - imaxabs F - imaxdiv F - in6addr_any D 0x10 - in6addr_loopback D 0x10 - index F - inet6_opt_append F - inet6_opt_find F - inet6_opt_finish F - inet6_opt_get_val F - inet6_opt_init F - inet6_opt_next F - inet6_opt_set_val F - inet6_option_alloc F - inet6_option_append F - inet6_option_find F - inet6_option_init F - inet6_option_next F - inet6_option_space F - inet6_rth_add F - inet6_rth_getaddr F - inet6_rth_init F - inet6_rth_reverse F - inet6_rth_segments F - inet6_rth_space F - inet_addr F - inet_aton F - inet_lnaof F - inet_makeaddr F - inet_netof F - inet_network F - inet_nsap_addr F - inet_nsap_ntoa F - inet_ntoa F - inet_ntop F - inet_pton F - init_module F - initgroups F - initstate F - initstate_r F - innetgr F - inotify_add_watch F - inotify_init F - inotify_init1 F - inotify_rm_watch F - insque F - ioctl F - iruserok F - iruserok_af F - isalnum F - isalnum_l F - isalpha F - isalpha_l F - isascii F - isastream F - isatty F - isblank F - isblank_l F - iscntrl F - iscntrl_l F - isctype F - isdigit F - isdigit_l F - isfdtype F - isgraph F - isgraph_l F - isinf F - isinff F - isinfl F - islower F - islower_l F - isnan F - isnanf F - isnanl F - isprint F - isprint_l F - ispunct F - ispunct_l F - isspace F - isspace_l F - isupper F - isupper_l F - iswalnum F - iswalnum_l F - iswalpha F - iswalpha_l F - iswblank F - iswblank_l F - iswcntrl F - iswcntrl_l F - iswctype F - iswctype_l F - iswdigit F - iswdigit_l F - iswgraph F - iswgraph_l F - iswlower F - iswlower_l F - iswprint F - iswprint_l F - iswpunct F - iswpunct_l F - iswspace F - iswspace_l F - iswupper F - iswupper_l F - iswxdigit F - iswxdigit_l F - isxdigit F - isxdigit_l F - jrand48 F - jrand48_r F - key_decryptsession F - key_decryptsession_pk F - key_encryptsession F - key_encryptsession_pk F - key_gendes F - key_get_conv F - key_secretkey_is_set F - key_setnet F - key_setsecret F - kill F - killpg F - klogctl F - l64a F - labs F - lchmod F - lchown F - lckpwdf F - lcong48 F - lcong48_r F - ldexp F - ldexpf F - ldexpl F - ldiv F - lfind F - lgetxattr F - link F - linkat F - listen F - listxattr F - llabs F - lldiv F - llistxattr F - llseek F - loc1 D 0x8 - loc2 D 0x8 - localeconv F - localtime F - localtime_r F - lockf F - lockf64 F - locs D 0x8 - longjmp F - lrand48 F - lrand48_r F - lremovexattr F - lsearch F - lseek F - lseek64 F - lsetxattr F - lutimes F - madvise F - makecontext F - mallinfo F - malloc F - malloc_get_state F - malloc_info F - malloc_set_state F - malloc_stats F - malloc_trim F - malloc_usable_size F - mallopt F - mallwatch D 0x8 - mblen F - mbrlen F - mbrtowc F - mbsinit F - mbsnrtowcs F - mbsrtowcs F - mbstowcs F - mbtowc F - mcheck F - mcheck_check_all F - mcheck_pedantic F - mcount F - memalign F - memccpy F - memchr F - memcmp F - memcpy F - memfrob F - memmem F - memmove F - mempcpy F - memrchr F - memset F - mincore F - mkdir F - mkdirat F - mkdtemp F - mkfifo F - mkfifoat F - mkostemp F - mkostemp64 F - mkostemps F - mkostemps64 F - mkstemp F - mkstemp64 F - mkstemps F - mkstemps64 F - mktemp F - mktime F - mlock F - mlockall F - mmap F - mmap64 F - modf F - modff F - modfl F - moncontrol F - monstartup F - mount F - mprobe F - mprotect F - mrand48 F - mrand48_r F - mremap F - msgctl F - msgget F - msgrcv F - msgsnd F - msync F - mtrace F - munlock F - munlockall F - munmap F - muntrace F - nanosleep F - netname2host F - netname2user F - newlocale F - nfsservctl F - nftw F - nftw64 F - ngettext F - nice F - nl_langinfo F - nl_langinfo_l F - nrand48 F - nrand48_r F - ntohl F - ntohs F - ntp_adjtime F - ntp_gettime F - ntp_gettimex F - obstack_alloc_failed_handler D 0x8 - obstack_exit_failure D 0x4 - obstack_free F - obstack_printf F - obstack_vprintf F - on_exit F - open F - open64 F - open_memstream F - open_wmemstream F - openat F - openat64 F - opendir F - openlog F - optarg D 0x8 - opterr D 0x4 - optind D 0x4 - optopt D 0x4 - parse_printf_format F - passwd2des F - pathconf F - pause F - pclose F - perror F - personality F - pipe F - pipe2 F - pivot_root F - pmap_getmaps F - pmap_getport F - pmap_rmtcall F - pmap_set F - pmap_unset F - poll F - popen F - posix_fadvise F - posix_fadvise64 F - posix_fallocate F - posix_fallocate64 F - posix_madvise F - posix_memalign F - posix_openpt F - posix_spawn F - posix_spawn_file_actions_addclose F - posix_spawn_file_actions_adddup2 F - posix_spawn_file_actions_addopen F - posix_spawn_file_actions_destroy F - posix_spawn_file_actions_init F - posix_spawnattr_destroy F - posix_spawnattr_getflags F - posix_spawnattr_getpgroup F - posix_spawnattr_getschedparam F - posix_spawnattr_getschedpolicy F - posix_spawnattr_getsigdefault F - posix_spawnattr_getsigmask F - posix_spawnattr_init F - posix_spawnattr_setflags F - posix_spawnattr_setpgroup F - posix_spawnattr_setschedparam F - posix_spawnattr_setschedpolicy F - posix_spawnattr_setsigdefault F - posix_spawnattr_setsigmask F - posix_spawnp F - ppoll F - prctl F - pread F - pread64 F - preadv F - preadv64 F - printf F - printf_size F - printf_size_info F - profil F - program_invocation_name D 0x8 - program_invocation_short_name D 0x8 - pselect F - psiginfo F - psignal F - pthread_attr_destroy F - pthread_attr_getdetachstate F - pthread_attr_getinheritsched F - pthread_attr_getschedparam F - pthread_attr_getschedpolicy F - pthread_attr_getscope F - pthread_attr_init F - pthread_attr_setdetachstate F - pthread_attr_setinheritsched F - pthread_attr_setschedparam F - pthread_attr_setschedpolicy F - pthread_attr_setscope F - pthread_cond_broadcast F - pthread_cond_destroy F - pthread_cond_init F - pthread_cond_signal F - pthread_cond_timedwait F - pthread_cond_wait F - pthread_condattr_destroy F - pthread_condattr_init F - pthread_equal F - pthread_exit F - pthread_getschedparam F - pthread_mutex_destroy F - pthread_mutex_init F - pthread_mutex_lock F - pthread_mutex_unlock F - pthread_self F - pthread_setcancelstate F - pthread_setcanceltype F - pthread_setschedparam F - ptrace F - ptsname F - ptsname_r F - putc F - putc_unlocked F - putchar F - putchar_unlocked F - putenv F - putgrent F - putmsg F - putpmsg F - putpwent F - puts F - putsgent F - putspent F - pututline F - pututxline F - putw F - putwc F - putwc_unlocked F - putwchar F - putwchar_unlocked F - pvalloc F - pwrite F - pwrite64 F - pwritev F - pwritev64 F - qecvt F - qecvt_r F - qfcvt F - qfcvt_r F - qgcvt F - qsort F - qsort_r F - query_module F - quick_exit F - quotactl F - raise F - rand F - rand_r F - random F - random_r F - rawmemchr F - rcmd F - rcmd_af F - re_comp F - re_compile_fastmap F - re_compile_pattern F - re_exec F - re_match F - re_match_2 F - re_search F - re_search_2 F - re_set_registers F - re_set_syntax F - re_syntax_options D 0x8 - read F - readahead F - readdir F - readdir64 F - readdir64_r F - readdir_r F - readlink F - readlinkat F - readv F - realloc F - realpath F - reboot F - recv F - recvfrom F - recvmmsg F - recvmsg F - regcomp F - regerror F - regexec F - regfree F - register_printf_function F - register_printf_modifier F - register_printf_specifier F - register_printf_type F - registerrpc F - remap_file_pages F - remove F - removexattr F - remque F - rename F - renameat F - revoke F - rewind F - rewinddir F - rexec F - rexec_af F - rexecoptions D 0x4 - rindex F - rmdir F - rpc_createerr D 0x20 - rpmatch F - rresvport F - rresvport_af F - rtime F - ruserok F - ruserok_af F - ruserpass F - sbrk F - scalbn F - scalbnf F - scalbnl F - scandir F - scandir64 F - scanf F - sched_get_priority_max F - sched_get_priority_min F - sched_getaffinity F - sched_getcpu F - sched_getparam F - sched_getscheduler F - sched_rr_get_interval F - sched_setaffinity F - sched_setparam F - sched_setscheduler F - sched_yield F - seed48 F - seed48_r F - seekdir F - select F - semctl F - semget F - semop F - semtimedop F - send F - sendfile F - sendfile64 F - sendmsg F - sendto F - set_dataplane F - setaliasent F - setbuf F - setbuffer F - setcontext F - setdomainname F - setegid F - setenv F - seteuid F - setfsent F - setfsgid F - setfsuid F - setgid F - setgrent F - setgroups F - sethostent F - sethostid F - sethostname F - setipv4sourcefilter F - setitimer F - setjmp F - setlinebuf F - setlocale F - setlogin F - setlogmask F - setmntent F - setnetent F - setnetgrent F - setpgid F - setpgrp F - setpriority F - setprotoent F - setpwent F - setregid F - setresgid F - setresuid F - setreuid F - setrlimit F - setrlimit64 F - setrpcent F - setservent F - setsgent F - setsid F - setsockopt F - setsourcefilter F - setspent F - setstate F - setstate_r F - settimeofday F - setttyent F - setuid F - setusershell F - setutent F - setutxent F - setvbuf F - setxattr F - sgetsgent F - sgetsgent_r F - sgetspent F - sgetspent_r F - shmat F - shmctl F - shmdt F - shmget F - shutdown F - sigaction F - sigaddset F - sigaltstack F - sigandset F - sigblock F - sigdelset F - sigemptyset F - sigfillset F - siggetmask F - sighold F - sigignore F - siginterrupt F - sigisemptyset F - sigismember F - siglongjmp F - signal F - signalfd F - sigorset F - sigpause F - sigpending F - sigprocmask F - sigqueue F - sigrelse F - sigreturn F - sigset F - sigsetmask F - sigstack F - sigsuspend F - sigtimedwait F - sigvec F - sigwait F - sigwaitinfo F - sleep F - snprintf F - sockatmark F - socket F - socketpair F - splice F - sprintf F - sprofil F - srand F - srand48 F - srand48_r F - srandom F - srandom_r F - sscanf F - ssignal F - sstk F - statfs F - statfs64 F - statvfs F - statvfs64 F - stderr D 0x8 - stdin D 0x8 - stdout D 0x8 - step F - stime F - stpcpy F - stpncpy F - strcasecmp F - strcasecmp_l F - strcasestr F - strcat F - strchr F - strchrnul F - strcmp F - strcoll F - strcoll_l F - strcpy F - strcspn F - strdup F - strerror F - strerror_l F - strerror_r F - strfmon F - strfmon_l F - strfry F - strftime F - strftime_l F - strlen F - strncasecmp F - strncasecmp_l F - strncat F - strncmp F - strncpy F - strndup F - strnlen F - strpbrk F - strptime F - strptime_l F - strrchr F - strsep F - strsignal F - strspn F - strstr F - strtod F - strtod_l F - strtof F - strtof_l F - strtoimax F - strtok F - strtok_r F - strtol F - strtol_l F - strtold F - strtold_l F - strtoll F - strtoll_l F - strtoq F - strtoul F - strtoul_l F - strtoull F - strtoull_l F - strtoumax F - strtouq F - strverscmp F - strxfrm F - strxfrm_l F - stty F - svc_exit F - svc_fdset D 0x80 - svc_getreq F - svc_getreq_common F - svc_getreq_poll F - svc_getreqset F - svc_max_pollfd D 0x4 - svc_pollfd D 0x8 - svc_register F - svc_run F - svc_sendreply F - svc_unregister F - svcauthdes_stats D 0x18 - svcerr_auth F - svcerr_decode F - svcerr_noproc F - svcerr_noprog F - svcerr_progvers F - svcerr_systemerr F - svcerr_weakauth F - svcfd_create F - svcraw_create F - svctcp_create F - svcudp_bufcreate F - svcudp_create F - svcudp_enablecache F - svcunix_create F - svcunixfd_create F - swab F - swapcontext F - swapoff F - swapon F - swprintf F - swscanf F - symlink F - symlinkat F - sync F - sync_file_range F - sys_errlist D 0x438 - sys_nerr D 0x4 - sys_sigabbrev D 0x208 - sys_siglist D 0x208 - syscall F - sysconf F - sysctl F - sysinfo F - syslog F - system F - sysv_signal F - tcdrain F - tcflow F - tcflush F - tcgetattr F - tcgetpgrp F - tcgetsid F - tcsendbreak F - tcsetattr F - tcsetpgrp F - tdelete F - tdestroy F - tee F - telldir F - tempnam F - textdomain F - tfind F - time F - timegm F - timelocal F - timerfd_create F - timerfd_gettime F - timerfd_settime F - times F - timezone D 0x8 - tmpfile F - tmpfile64 F - tmpnam F - tmpnam_r F - toascii F - tolower F - tolower_l F - toupper F - toupper_l F - towctrans F - towctrans_l F - towlower F - towlower_l F - towupper F - towupper_l F - tr_break F - truncate F - truncate64 F - tsearch F - ttyname F - ttyname_r F - ttyslot F - twalk F - tzname D 0x10 - tzset F - ualarm F - ulckpwdf F - ulimit F - umask F - umount F - umount2 F - uname F - ungetc F - ungetwc F - unlink F - unlinkat F - unlockpt F - unsetenv F - unshare F - updwtmp F - updwtmpx F - uselib F - uselocale F - user2netname F - usleep F - ustat F - utime F - utimensat F - utimes F - utmpname F - utmpxname F - valloc F - vasprintf F - vdprintf F - verr F - verrx F - versionsort F - versionsort64 F - vfork F - vfprintf F - vfscanf F - vfwprintf F - vfwscanf F - vhangup F - vlimit F - vmsplice F - vprintf F - vscanf F - vsnprintf F - vsprintf F - vsscanf F - vswprintf F - vswscanf F - vsyslog F - vtimes F - vwarn F - vwarnx F - vwprintf F - vwscanf F - wait F - wait3 F - wait4 F - waitid F - waitpid F - warn F - warnx F - wcpcpy F - wcpncpy F - wcrtomb F - wcscasecmp F - wcscasecmp_l F - wcscat F - wcschr F - wcschrnul F - wcscmp F - wcscoll F - wcscoll_l F - wcscpy F - wcscspn F - wcsdup F - wcsftime F - wcsftime_l F - wcslen F - wcsncasecmp F - wcsncasecmp_l F - wcsncat F - wcsncmp F - wcsncpy F - wcsnlen F - wcsnrtombs F - wcspbrk F - wcsrchr F - wcsrtombs F - wcsspn F - wcsstr F - wcstod F - wcstod_l F - wcstof F - wcstof_l F - wcstoimax F - wcstok F - wcstol F - wcstol_l F - wcstold F - wcstold_l F - wcstoll F - wcstoll_l F - wcstombs F - wcstoq F - wcstoul F - wcstoul_l F - wcstoull F - wcstoull_l F - wcstoumax F - wcstouq F - wcswcs F - wcswidth F - wcsxfrm F - wcsxfrm_l F - wctob F - wctomb F - wctrans F - wctrans_l F - wctype F - wctype_l F - wcwidth F - wmemchr F - wmemcmp F - wmemcpy F - wmemmove F - wmempcpy F - wmemset F - wordexp F - wordfree F - wprintf F - write F - writev F - wscanf F - xdecrypt F - xdr_accepted_reply F - xdr_array F - xdr_authdes_cred F - xdr_authdes_verf F - xdr_authunix_parms F - xdr_bool F - xdr_bytes F - xdr_callhdr F - xdr_callmsg F - xdr_char F - xdr_cryptkeyarg F - xdr_cryptkeyarg2 F - xdr_cryptkeyres F - xdr_des_block F - xdr_double F - xdr_enum F - xdr_float F - xdr_free F - xdr_getcredres F - xdr_hyper F - xdr_int F - xdr_int16_t F - xdr_int32_t F - xdr_int64_t F - xdr_int8_t F - xdr_key_netstarg F - xdr_key_netstres F - xdr_keybuf F - xdr_keystatus F - xdr_long F - xdr_longlong_t F - xdr_netnamestr F - xdr_netobj F - xdr_opaque F - xdr_opaque_auth F - xdr_pmap F - xdr_pmaplist F - xdr_pointer F - xdr_quad_t F - xdr_reference F - xdr_rejected_reply F - xdr_replymsg F - xdr_rmtcall_args F - xdr_rmtcallres F - xdr_short F - xdr_sizeof F - xdr_string F - xdr_u_char F - xdr_u_hyper F - xdr_u_int F - xdr_u_long F - xdr_u_longlong_t F - xdr_u_quad_t F - xdr_u_short F - xdr_uint16_t F - xdr_uint32_t F - xdr_uint64_t F - xdr_uint8_t F - xdr_union F - xdr_unixcred F - xdr_vector F - xdr_void F - xdr_wrapstring F - xdrmem_create F - xdrrec_create F - xdrrec_endofrecord F - xdrrec_eof F - xdrrec_skiprecord F - xdrstdio_create F - xencrypt F - xprt_register F - xprt_unregister F -GLIBC_2.15 - GLIBC_2.15 A - __fdelt_chk F - __fdelt_warn F - clock_adjtime F - fanotify_init F - fanotify_mark F - name_to_handle_at F - open_by_handle_at F - posix_spawn F - posix_spawnp F - prlimit F - prlimit64 F - process_vm_readv F - process_vm_writev F - scandirat F - scandirat64 F - sendmmsg F - setns F - syncfs F -GLIBC_2.16 - GLIBC_2.16 A - __getauxval F - __poll_chk F - __ppoll_chk F - aligned_alloc F - c16rtomb F - c32rtomb F - getauxval F - mbrtoc16 F - mbrtoc32 F - timespec_get F -GLIBC_2.17 - GLIBC_2.17 A - clock_getcpuclockid F - clock_getres F - clock_gettime F - clock_nanosleep F - clock_settime F - secure_getenv F -GLIBC_2.18 - GLIBC_2.18 A - __cxa_thread_atexit_impl F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libcrypt.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libcrypt.abilist deleted file mode 100644 index 608e5df0b1..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libcrypt.abilist +++ /dev/null @@ -1,9 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - crypt F - crypt_r F - encrypt F - encrypt_r F - fcrypt F - setkey F - setkey_r F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libdl.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libdl.abilist deleted file mode 100644 index 27a72281b7..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libdl.abilist +++ /dev/null @@ -1,11 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - dladdr F - dladdr1 F - dlclose F - dlerror F - dlinfo F - dlmopen F - dlopen F - dlsym F - dlvsym F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libm.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libm.abilist deleted file mode 100644 index cb0d1a4423..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libm.abilist +++ /dev/null @@ -1,373 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - _LIB_VERSION D 0x4 - __clog10 F - __clog10f F - __clog10l F - __finite F - __finitef F - __fpclassify F - __fpclassifyf F - __signbit F - __signbitf F - acos F - acosf F - acosh F - acoshf F - acoshl F - acosl F - asin F - asinf F - asinh F - asinhf F - asinhl F - asinl F - atan F - atan2 F - atan2f F - atan2l F - atanf F - atanh F - atanhf F - atanhl F - atanl F - cabs F - cabsf F - cabsl F - cacos F - cacosf F - cacosh F - cacoshf F - cacoshl F - cacosl F - carg F - cargf F - cargl F - casin F - casinf F - casinh F - casinhf F - casinhl F - casinl F - catan F - catanf F - catanh F - catanhf F - catanhl F - catanl F - cbrt F - cbrtf F - cbrtl F - ccos F - ccosf F - ccosh F - ccoshf F - ccoshl F - ccosl F - ceil F - ceilf F - ceill F - cexp F - cexpf F - cexpl F - cimag F - cimagf F - cimagl F - clog F - clog10 F - clog10f F - clog10l F - clogf F - clogl F - conj F - conjf F - conjl F - copysign F - copysignf F - copysignl F - cos F - cosf F - cosh F - coshf F - coshl F - cosl F - cpow F - cpowf F - cpowl F - cproj F - cprojf F - cprojl F - creal F - crealf F - creall F - csin F - csinf F - csinh F - csinhf F - csinhl F - csinl F - csqrt F - csqrtf F - csqrtl F - ctan F - ctanf F - ctanh F - ctanhf F - ctanhl F - ctanl F - drem F - dremf F - dreml F - erf F - erfc F - erfcf F - erfcl F - erff F - erfl F - exp F - exp10 F - exp10f F - exp10l F - exp2 F - exp2f F - exp2l F - expf F - expl F - expm1 F - expm1f F - expm1l F - fabs F - fabsf F - fabsl F - fdim F - fdimf F - fdiml F - feclearexcept F - fedisableexcept F - feenableexcept F - fegetenv F - fegetexcept F - fegetexceptflag F - fegetround F - feholdexcept F - feraiseexcept F - fesetenv F - fesetexceptflag F - fesetround F - fetestexcept F - feupdateenv F - finite F - finitef F - finitel F - floor F - floorf F - floorl F - fma F - fmaf F - fmal F - fmax F - fmaxf F - fmaxl F - fmin F - fminf F - fminl F - fmod F - fmodf F - fmodl F - frexp F - frexpf F - frexpl F - gamma F - gammaf F - gammal F - hypot F - hypotf F - hypotl F - ilogb F - ilogbf F - ilogbl F - j0 F - j0f F - j0l F - j1 F - j1f F - j1l F - jn F - jnf F - jnl F - ldexp F - ldexpf F - ldexpl F - lgamma F - lgamma_r F - lgammaf F - lgammaf_r F - lgammal F - lgammal_r F - llrint F - llrintf F - llrintl F - llround F - llroundf F - llroundl F - log F - log10 F - log10f F - log10l F - log1p F - log1pf F - log1pl F - log2 F - log2f F - log2l F - logb F - logbf F - logbl F - logf F - logl F - lrint F - lrintf F - lrintl F - lround F - lroundf F - lroundl F - matherr F - modf F - modff F - modfl F - nan F - nanf F - nanl F - nearbyint F - nearbyintf F - nearbyintl F - nextafter F - nextafterf F - nextafterl F - nexttoward F - nexttowardf F - nexttowardl F - pow F - pow10 F - pow10f F - pow10l F - powf F - powl F - remainder F - remainderf F - remainderl F - remquo F - remquof F - remquol F - rint F - rintf F - rintl F - round F - roundf F - roundl F - scalb F - scalbf F - scalbl F - scalbln F - scalblnf F - scalblnl F - scalbn F - scalbnf F - scalbnl F - signgam D 0x4 - significand F - significandf F - significandl F - sin F - sincos F - sincosf F - sincosl F - sinf F - sinh F - sinhf F - sinhl F - sinl F - sqrt F - sqrtf F - sqrtl F - tan F - tanf F - tanh F - tanhf F - tanhl F - tanl F - tgamma F - tgammaf F - tgammal F - trunc F - truncf F - truncl F - y0 F - y0f F - y0l F - y1 F - y1f F - y1l F - yn F - ynf F - ynl F -GLIBC_2.15 - GLIBC_2.15 A - __acos_finite F - __acosf_finite F - __acosh_finite F - __acoshf_finite F - __asin_finite F - __asinf_finite F - __atan2_finite F - __atan2f_finite F - __atanh_finite F - __atanhf_finite F - __cosh_finite F - __coshf_finite F - __exp10_finite F - __exp10f_finite F - __exp2_finite F - __exp2f_finite F - __exp_finite F - __expf_finite F - __fmod_finite F - __fmodf_finite F - __gamma_r_finite F - __gammaf_r_finite F - __hypot_finite F - __hypotf_finite F - __j0_finite F - __j0f_finite F - __j1_finite F - __j1f_finite F - __jn_finite F - __jnf_finite F - __lgamma_r_finite F - __lgammaf_r_finite F - __log10_finite F - __log10f_finite F - __log2_finite F - __log2f_finite F - __log_finite F - __logf_finite F - __pow_finite F - __powf_finite F - __remainder_finite F - __remainderf_finite F - __scalb_finite F - __scalbf_finite F - __sinh_finite F - __sinhf_finite F - __sqrt_finite F - __sqrtf_finite F - __y0_finite F - __y0f_finite F - __y1_finite F - __y1f_finite F - __yn_finite F - __ynf_finite F -GLIBC_2.18 - GLIBC_2.18 A - __issignaling F - __issignalingf F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libnsl.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libnsl.abilist deleted file mode 100644 index e4217934c8..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libnsl.abilist +++ /dev/null @@ -1,123 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - __free_fdresult F - __nis_default_access F - __nis_default_group F - __nis_default_owner F - __nis_default_ttl F - __nis_finddirectory F - __nis_hash F - __nisbind_connect F - __nisbind_create F - __nisbind_destroy F - __nisbind_next F - __yp_check F - nis_add F - nis_add_entry F - nis_addmember F - nis_checkpoint F - nis_clone_directory F - nis_clone_object F - nis_clone_result F - nis_creategroup F - nis_destroy_object F - nis_destroygroup F - nis_dir_cmp F - nis_domain_of F - nis_domain_of_r F - nis_first_entry F - nis_free_directory F - nis_free_object F - nis_free_request F - nis_freenames F - nis_freeresult F - nis_freeservlist F - nis_freetags F - nis_getnames F - nis_getservlist F - nis_ismember F - nis_leaf_of F - nis_leaf_of_r F - nis_lerror F - nis_list F - nis_local_directory F - nis_local_group F - nis_local_host F - nis_local_principal F - nis_lookup F - nis_mkdir F - nis_modify F - nis_modify_entry F - nis_name_of F - nis_name_of_r F - nis_next_entry F - nis_perror F - nis_ping F - nis_print_directory F - nis_print_entry F - nis_print_group F - nis_print_group_entry F - nis_print_link F - nis_print_object F - nis_print_result F - nis_print_rights F - nis_print_table F - nis_read_obj F - nis_remove F - nis_remove_entry F - nis_removemember F - nis_rmdir F - nis_servstate F - nis_sperrno F - nis_sperror F - nis_sperror_r F - nis_stats F - nis_verifygroup F - nis_write_obj F - readColdStartFile F - writeColdStartFile F - xdr_cback_data F - xdr_domainname F - xdr_keydat F - xdr_mapname F - xdr_obj_p F - xdr_peername F - xdr_valdat F - xdr_yp_buf F - xdr_ypall F - xdr_ypbind_binding F - xdr_ypbind_resp F - xdr_ypbind_resptype F - xdr_ypbind_setdom F - xdr_ypdelete_args F - xdr_ypmap_parms F - xdr_ypmaplist F - xdr_yppush_status F - xdr_yppushresp_xfr F - xdr_ypreq_key F - xdr_ypreq_nokey F - xdr_ypreq_xfr F - xdr_ypresp_all F - xdr_ypresp_key_val F - xdr_ypresp_maplist F - xdr_ypresp_master F - xdr_ypresp_order F - xdr_ypresp_val F - xdr_ypresp_xfr F - xdr_ypstat F - xdr_ypupdate_args F - xdr_ypxfrstat F - yp_all F - yp_bind F - yp_first F - yp_get_default_domain F - yp_maplist F - yp_master F - yp_match F - yp_next F - yp_order F - yp_unbind F - yp_update F - ypbinderr_string F - yperr_string F - ypprot_err F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libpthread.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libpthread.abilist deleted file mode 100644 index f3c260071a..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libpthread.abilist +++ /dev/null @@ -1,228 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - _IO_flockfile F - _IO_ftrylockfile F - _IO_funlockfile F - __close F - __connect F - __errno_location F - __fcntl F - __fork F - __h_errno_location F - __libc_allocate_rtsig F - __libc_current_sigrtmax F - __libc_current_sigrtmin F - __lseek F - __nanosleep F - __open F - __open64 F - __pread64 F - __pthread_cleanup_routine F - __pthread_getspecific F - __pthread_key_create F - __pthread_mutex_destroy F - __pthread_mutex_init F - __pthread_mutex_lock F - __pthread_mutex_trylock F - __pthread_mutex_unlock F - __pthread_mutexattr_destroy F - __pthread_mutexattr_init F - __pthread_mutexattr_settype F - __pthread_once F - __pthread_register_cancel F - __pthread_register_cancel_defer F - __pthread_rwlock_destroy F - __pthread_rwlock_init F - __pthread_rwlock_rdlock F - __pthread_rwlock_tryrdlock F - __pthread_rwlock_trywrlock F - __pthread_rwlock_unlock F - __pthread_rwlock_wrlock F - __pthread_setspecific F - __pthread_unregister_cancel F - __pthread_unregister_cancel_restore F - __pthread_unwind_next F - __pwrite64 F - __read F - __res_state F - __send F - __sigaction F - __vfork F - __wait F - __write F - _pthread_cleanup_pop F - _pthread_cleanup_pop_restore F - _pthread_cleanup_push F - _pthread_cleanup_push_defer F - accept F - close F - connect F - fcntl F - flockfile F - fork F - fsync F - ftrylockfile F - funlockfile F - longjmp F - lseek F - lseek64 F - msync F - nanosleep F - open F - open64 F - pause F - pread F - pread64 F - pthread_attr_destroy F - pthread_attr_getaffinity_np F - pthread_attr_getdetachstate F - pthread_attr_getguardsize F - pthread_attr_getinheritsched F - pthread_attr_getschedparam F - pthread_attr_getschedpolicy F - pthread_attr_getscope F - pthread_attr_getstack F - pthread_attr_getstackaddr F - pthread_attr_getstacksize F - pthread_attr_init F - pthread_attr_setaffinity_np F - pthread_attr_setdetachstate F - pthread_attr_setguardsize F - pthread_attr_setinheritsched F - pthread_attr_setschedparam F - pthread_attr_setschedpolicy F - pthread_attr_setscope F - pthread_attr_setstack F - pthread_attr_setstackaddr F - pthread_attr_setstacksize F - pthread_barrier_destroy F - pthread_barrier_init F - pthread_barrier_wait F - pthread_barrierattr_destroy F - pthread_barrierattr_getpshared F - pthread_barrierattr_init F - pthread_barrierattr_setpshared F - pthread_cancel F - pthread_cond_broadcast F - pthread_cond_destroy F - pthread_cond_init F - pthread_cond_signal F - pthread_cond_timedwait F - pthread_cond_wait F - pthread_condattr_destroy F - pthread_condattr_getclock F - pthread_condattr_getpshared F - pthread_condattr_init F - pthread_condattr_setclock F - pthread_condattr_setpshared F - pthread_create F - pthread_detach F - pthread_equal F - pthread_exit F - pthread_getaffinity_np F - pthread_getattr_np F - pthread_getconcurrency F - pthread_getcpuclockid F - pthread_getname_np F - pthread_getschedparam F - pthread_getspecific F - pthread_join F - pthread_key_create F - pthread_key_delete F - pthread_kill F - pthread_kill_other_threads_np F - pthread_mutex_consistent F - pthread_mutex_consistent_np F - pthread_mutex_destroy F - pthread_mutex_getprioceiling F - pthread_mutex_init F - pthread_mutex_lock F - pthread_mutex_setprioceiling F - pthread_mutex_timedlock F - pthread_mutex_trylock F - pthread_mutex_unlock F - pthread_mutexattr_destroy F - pthread_mutexattr_getkind_np F - pthread_mutexattr_getprioceiling F - pthread_mutexattr_getprotocol F - pthread_mutexattr_getpshared F - pthread_mutexattr_getrobust F - pthread_mutexattr_getrobust_np F - pthread_mutexattr_gettype F - pthread_mutexattr_init F - pthread_mutexattr_setkind_np F - pthread_mutexattr_setprioceiling F - pthread_mutexattr_setprotocol F - pthread_mutexattr_setpshared F - pthread_mutexattr_setrobust F - pthread_mutexattr_setrobust_np F - pthread_mutexattr_settype F - pthread_once F - pthread_rwlock_destroy F - pthread_rwlock_init F - pthread_rwlock_rdlock F - pthread_rwlock_timedrdlock F - pthread_rwlock_timedwrlock F - pthread_rwlock_tryrdlock F - pthread_rwlock_trywrlock F - pthread_rwlock_unlock F - pthread_rwlock_wrlock F - pthread_rwlockattr_destroy F - pthread_rwlockattr_getkind_np F - pthread_rwlockattr_getpshared F - pthread_rwlockattr_init F - pthread_rwlockattr_setkind_np F - pthread_rwlockattr_setpshared F - pthread_self F - pthread_setaffinity_np F - pthread_setcancelstate F - pthread_setcanceltype F - pthread_setconcurrency F - pthread_setname_np F - pthread_setschedparam F - pthread_setschedprio F - pthread_setspecific F - pthread_sigmask F - pthread_sigqueue F - pthread_spin_destroy F - pthread_spin_init F - pthread_spin_lock F - pthread_spin_trylock F - pthread_spin_unlock F - pthread_testcancel F - pthread_timedjoin_np F - pthread_tryjoin_np F - pthread_yield F - pwrite F - pwrite64 F - raise F - read F - recv F - recvfrom F - recvmsg F - sem_close F - sem_destroy F - sem_getvalue F - sem_init F - sem_open F - sem_post F - sem_timedwait F - sem_trywait F - sem_unlink F - sem_wait F - send F - sendmsg F - sendto F - sigaction F - siglongjmp F - sigwait F - system F - tcdrain F - vfork F - wait F - waitpid F - write F -GLIBC_2.18 - GLIBC_2.18 A - pthread_getattr_default_np F - pthread_setattr_default_np F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libresolv.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libresolv.abilist deleted file mode 100644 index dcb82acc01..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libresolv.abilist +++ /dev/null @@ -1,93 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - __b64_ntop F - __b64_pton F - __dn_comp F - __dn_count_labels F - __dn_expand F - __dn_skipname F - __fp_nquery F - __fp_query F - __fp_resstat F - __hostalias F - __loc_aton F - __loc_ntoa F - __p_cdname F - __p_cdnname F - __p_class F - __p_class_syms D 0xa8 - __p_fqname F - __p_fqnname F - __p_option F - __p_query F - __p_rcode F - __p_secstodate F - __p_time F - __p_type F - __p_type_syms D 0x450 - __putlong F - __putshort F - __res_close F - __res_dnok F - __res_hnok F - __res_hostalias F - __res_isourserver F - __res_mailok F - __res_mkquery F - __res_nameinquery F - __res_nmkquery F - __res_nquery F - __res_nquerydomain F - __res_nsearch F - __res_nsend F - __res_ownok F - __res_queriesmatch F - __res_query F - __res_querydomain F - __res_search F - __res_send F - __sym_ntop F - __sym_ntos F - __sym_ston F - _gethtbyaddr F - _gethtbyname F - _gethtbyname2 F - _gethtent F - _getlong F - _getshort F - _res_opcodes D 0x80 - _sethtent F - inet_net_ntop F - inet_net_pton F - inet_neta F - ns_datetosecs F - ns_format_ttl F - ns_get16 F - ns_get32 F - ns_initparse F - ns_makecanon F - ns_msg_getflag F - ns_name_compress F - ns_name_ntol F - ns_name_ntop F - ns_name_pack F - ns_name_pton F - ns_name_rollback F - ns_name_skip F - ns_name_uncompress F - ns_name_unpack F - ns_parse_ttl F - ns_parserr F - ns_put16 F - ns_put32 F - ns_samedomain F - ns_samename F - ns_skiprr F - ns_sprintrr F - ns_sprintrrf F - ns_subdomain F - res_gethostbyaddr F - res_gethostbyname F - res_gethostbyname2 F - res_send_setqhook F - res_send_setrhook F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/librt.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/librt.abilist deleted file mode 100644 index 87fec065af..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/librt.abilist +++ /dev/null @@ -1,42 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - __mq_open_2 F - aio_cancel F - aio_cancel64 F - aio_error F - aio_error64 F - aio_fsync F - aio_fsync64 F - aio_init F - aio_read F - aio_read64 F - aio_return F - aio_return64 F - aio_suspend F - aio_suspend64 F - aio_write F - aio_write64 F - clock_getcpuclockid F - clock_getres F - clock_gettime F - clock_nanosleep F - clock_settime F - lio_listio F - lio_listio64 F - mq_close F - mq_getattr F - mq_notify F - mq_open F - mq_receive F - mq_send F - mq_setattr F - mq_timedreceive F - mq_timedsend F - mq_unlink F - shm_open F - shm_unlink F - timer_create F - timer_delete F - timer_getoverrun F - timer_gettime F - timer_settime F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libthread_db.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libthread_db.abilist deleted file mode 100644 index 934ce9acd6..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libthread_db.abilist +++ /dev/null @@ -1,42 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - td_init F - td_log F - td_symbol_list F - td_ta_clear_event F - td_ta_delete F - td_ta_enable_stats F - td_ta_event_addr F - td_ta_event_getmsg F - td_ta_get_nthreads F - td_ta_get_ph F - td_ta_get_stats F - td_ta_map_id2thr F - td_ta_map_lwp2thr F - td_ta_new F - td_ta_reset_stats F - td_ta_set_event F - td_ta_setconcurrency F - td_ta_thr_iter F - td_ta_tsd_iter F - td_thr_clear_event F - td_thr_dbresume F - td_thr_dbsuspend F - td_thr_event_enable F - td_thr_event_getmsg F - td_thr_get_info F - td_thr_getfpregs F - td_thr_getgregs F - td_thr_getxregs F - td_thr_getxregsize F - td_thr_set_event F - td_thr_setfpregs F - td_thr_setgregs F - td_thr_setprio F - td_thr_setsigpending F - td_thr_setxregs F - td_thr_sigsetmask F - td_thr_tls_get_addr F - td_thr_tlsbase F - td_thr_tsd F - td_thr_validate F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libutil.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libutil.abilist deleted file mode 100644 index 50c312a7c6..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libutil.abilist +++ /dev/null @@ -1,8 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - forkpty F - login F - login_tty F - logout F - logwtmp F - openpty F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilepro/Implies b/ports/sysdeps/unix/sysv/linux/tile/tilepro/Implies deleted file mode 100644 index 0023bb77aa..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilepro/Implies +++ /dev/null @@ -1,3 +0,0 @@ -unix/sysv/linux/tile -unix/sysv/linux/generic/wordsize-32 -unix/sysv/linux/generic diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilepro/ldconfig.h b/ports/sysdeps/unix/sysv/linux/tile/tilepro/ldconfig.h deleted file mode 100644 index 86a81d4789..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilepro/ldconfig.h +++ /dev/null @@ -1,25 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include - -#define SYSDEP_KNOWN_INTERPRETER_NAMES \ - { "/lib/ld.so.1", FLAG_ELF_LIBC6 }, -#define SYSDEP_KNOWN_LIBRARY_NAMES \ - { "libc.so.6", FLAG_ELF_LIBC6 }, \ - { "libm.so.6", FLAG_ELF_LIBC6 }, diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/c++-types.data b/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/c++-types.data deleted file mode 100644 index 303f4570c8..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/c++-types.data +++ /dev/null @@ -1,67 +0,0 @@ -blkcnt64_t:x -blkcnt_t:l -blksize_t:i -caddr_t:Pc -clockid_t:i -clock_t:l -daddr_t:i -dev_t:y -fd_mask:l -fsblkcnt64_t:y -fsblkcnt_t:m -fsfilcnt64_t:y -fsfilcnt_t:m -fsid_t:8__fsid_t -gid_t:j -id_t:j -ino64_t:y -ino_t:m -int16_t:s -int32_t:i -int64_t:x -int8_t:a -intptr_t:i -key_t:i -loff_t:x -mode_t:j -nlink_t:j -off64_t:x -off_t:l -pid_t:i -pthread_attr_t:14pthread_attr_t -pthread_barrier_t:17pthread_barrier_t -pthread_barrierattr_t:21pthread_barrierattr_t -pthread_cond_t:14pthread_cond_t -pthread_condattr_t:18pthread_condattr_t -pthread_key_t:j -pthread_mutex_t:15pthread_mutex_t -pthread_mutexattr_t:19pthread_mutexattr_t -pthread_once_t:i -pthread_rwlock_t:16pthread_rwlock_t -pthread_rwlockattr_t:20pthread_rwlockattr_t -pthread_spinlock_t:i -pthread_t:m -quad_t:x -register_t:i -rlim64_t:y -rlim_t:m -sigset_t:10__sigset_t -size_t:j -socklen_t:j -ssize_t:i -suseconds_t:l -time_t:l -u_char:h -uid_t:j -uint:j -u_int:j -u_int16_t:t -u_int32_t:j -u_int64_t:y -u_int8_t:h -ulong:m -u_long:m -u_quad_t:y -useconds_t:j -ushort:t -u_short:t diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/ld.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/ld.abilist deleted file mode 100644 index 4367346594..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/ld.abilist +++ /dev/null @@ -1,11 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - __libc_memalign F - __libc_stack_end D 0x4 - __tls_get_addr F - _dl_mcount F - _r_debug D 0x14 - calloc F - free F - malloc F - realloc F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libBrokenLocale.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libBrokenLocale.abilist deleted file mode 100644 index 4af9128544..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libBrokenLocale.abilist +++ /dev/null @@ -1,3 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - __ctype_get_mb_cur_max F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libanl.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libanl.abilist deleted file mode 100644 index 29e602a75a..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libanl.abilist +++ /dev/null @@ -1,6 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - gai_cancel F - gai_error F - gai_suspend F - getaddrinfo_a F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libc.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libc.abilist deleted file mode 100644 index caf74b89e1..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libc.abilist +++ /dev/null @@ -1,2093 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - _Exit F - _IO_2_1_stderr_ D 0xa0 - _IO_2_1_stdin_ D 0xa0 - _IO_2_1_stdout_ D 0xa0 - _IO_adjust_column F - _IO_adjust_wcolumn F - _IO_default_doallocate F - _IO_default_finish F - _IO_default_pbackfail F - _IO_default_uflow F - _IO_default_xsgetn F - _IO_default_xsputn F - _IO_do_write F - _IO_doallocbuf F - _IO_fclose F - _IO_fdopen F - _IO_feof F - _IO_ferror F - _IO_fflush F - _IO_fgetpos F - _IO_fgetpos64 F - _IO_fgets F - _IO_file_attach F - _IO_file_close F - _IO_file_close_it F - _IO_file_doallocate F - _IO_file_finish F - _IO_file_fopen F - _IO_file_init F - _IO_file_jumps D 0x54 - _IO_file_open F - _IO_file_overflow F - _IO_file_read F - _IO_file_seek F - _IO_file_seekoff F - _IO_file_setbuf F - _IO_file_stat F - _IO_file_sync F - _IO_file_underflow F - _IO_file_write F - _IO_file_xsputn F - _IO_flockfile F - _IO_flush_all F - _IO_flush_all_linebuffered F - _IO_fopen F - _IO_fprintf F - _IO_fputs F - _IO_fread F - _IO_free_backup_area F - _IO_free_wbackup_area F - _IO_fsetpos F - _IO_fsetpos64 F - _IO_ftell F - _IO_ftrylockfile F - _IO_funlockfile F - _IO_fwrite F - _IO_getc F - _IO_getline F - _IO_getline_info F - _IO_gets F - _IO_init F - _IO_init_marker F - _IO_init_wmarker F - _IO_iter_begin F - _IO_iter_end F - _IO_iter_file F - _IO_iter_next F - _IO_least_wmarker F - _IO_link_in F - _IO_list_all D 0x4 - _IO_list_lock F - _IO_list_resetlock F - _IO_list_unlock F - _IO_marker_delta F - _IO_marker_difference F - _IO_padn F - _IO_peekc_locked F - _IO_popen F - _IO_printf F - _IO_proc_close F - _IO_proc_open F - _IO_putc F - _IO_puts F - _IO_remove_marker F - _IO_seekmark F - _IO_seekoff F - _IO_seekpos F - _IO_seekwmark F - _IO_setb F - _IO_setbuffer F - _IO_setvbuf F - _IO_sgetn F - _IO_sprintf F - _IO_sputbackc F - _IO_sputbackwc F - _IO_sscanf F - _IO_str_init_readonly F - _IO_str_init_static F - _IO_str_overflow F - _IO_str_pbackfail F - _IO_str_seekoff F - _IO_str_underflow F - _IO_sungetc F - _IO_sungetwc F - _IO_switch_to_get_mode F - _IO_switch_to_main_wget_area F - _IO_switch_to_wbackup_area F - _IO_switch_to_wget_mode F - _IO_un_link F - _IO_ungetc F - _IO_unsave_markers F - _IO_unsave_wmarkers F - _IO_vfprintf F - _IO_vfscanf F - _IO_vsprintf F - _IO_wdefault_doallocate F - _IO_wdefault_finish F - _IO_wdefault_pbackfail F - _IO_wdefault_uflow F - _IO_wdefault_xsgetn F - _IO_wdefault_xsputn F - _IO_wdo_write F - _IO_wdoallocbuf F - _IO_wfile_jumps D 0x54 - _IO_wfile_overflow F - _IO_wfile_seekoff F - _IO_wfile_sync F - _IO_wfile_underflow F - _IO_wfile_xsputn F - _IO_wmarker_delta F - _IO_wsetb F - ___brk_addr D 0x4 - __adjtimex F - __after_morecore_hook D 0x4 - __argz_count F - __argz_next F - __argz_stringify F - __asprintf F - __asprintf_chk F - __assert F - __assert_fail F - __assert_perror_fail F - __backtrace F - __backtrace_symbols F - __backtrace_symbols_fd F - __bsd_getpgrp F - __bzero F - __check_rhosts_file D 0x4 - __chk_fail F - __clone F - __close F - __cmsg_nxthdr F - __confstr_chk F - __connect F - __ctype_b_loc F - __ctype_get_mb_cur_max F - __ctype_tolower_loc F - __ctype_toupper_loc F - __curbrk D 0x4 - __cxa_at_quick_exit F - __cxa_atexit F - __cxa_finalize F - __cyg_profile_func_enter F - __cyg_profile_func_exit F - __daylight D 0x4 - __dcgettext F - __default_morecore F - __dgettext F - __dprintf_chk F - __dup2 F - __duplocale F - __endmntent F - __environ D 0x4 - __errno_location F - __fbufsize F - __fcntl F - __ffs F - __fgets_chk F - __fgets_unlocked_chk F - __fgetws_chk F - __fgetws_unlocked_chk F - __finite F - __finitef F - __flbf F - __fork F - __fpending F - __fprintf_chk F - __fpu_control D 0x4 - __fpurge F - __fread_chk F - __fread_unlocked_chk F - __freadable F - __freading F - __free_hook D 0x4 - __freelocale F - __fsetlocking F - __fwprintf_chk F - __fwritable F - __fwriting F - __fxstat F - __fxstat64 F - __fxstatat F - __fxstatat64 F - __getcwd_chk F - __getdelim F - __getdomainname_chk F - __getgroups_chk F - __gethostname_chk F - __getlogin_r_chk F - __getmntent_r F - __getpagesize F - __getpgid F - __getpid F - __gets_chk F - __gettimeofday F - __getwd_chk F - __gmtime_r F - __h_errno_location F - __isalnum_l F - __isalpha_l F - __isascii_l F - __isblank_l F - __iscntrl_l F - __isctype F - __isdigit_l F - __isgraph_l F - __isinf F - __isinff F - __islower_l F - __isnan F - __isnanf F - __isoc99_fscanf F - __isoc99_fwscanf F - __isoc99_scanf F - __isoc99_sscanf F - __isoc99_swscanf F - __isoc99_vfscanf F - __isoc99_vfwscanf F - __isoc99_vscanf F - __isoc99_vsscanf F - __isoc99_vswscanf F - __isoc99_vwscanf F - __isoc99_wscanf F - __isprint_l F - __ispunct_l F - __isspace_l F - __isupper_l F - __iswalnum_l F - __iswalpha_l F - __iswblank_l F - __iswcntrl_l F - __iswctype F - __iswctype_l F - __iswdigit_l F - __iswgraph_l F - __iswlower_l F - __iswprint_l F - __iswpunct_l F - __iswspace_l F - __iswupper_l F - __iswxdigit_l F - __isxdigit_l F - __ivaliduser F - __key_decryptsession_pk_LOCAL D 0x4 - __key_encryptsession_pk_LOCAL D 0x4 - __key_gendes_LOCAL D 0x4 - __libc_allocate_rtsig F - __libc_calloc F - __libc_current_sigrtmax F - __libc_current_sigrtmin F - __libc_free F - __libc_freeres F - __libc_init_first F - __libc_mallinfo F - __libc_malloc F - __libc_mallopt F - __libc_memalign F - __libc_pvalloc F - __libc_realloc F - __libc_sa_len F - __libc_start_main F - __libc_valloc F - __longjmp_chk F - __lseek F - __lxstat F - __lxstat64 F - __malloc_hook D 0x4 - __malloc_initialize_hook D 0x4 - __mbrlen F - __mbrtowc F - __mbsnrtowcs_chk F - __mbsrtowcs_chk F - __mbstowcs_chk F - __mcount F - __memalign_hook D 0x4 - __memcpy_chk F - __memmove_chk F - __mempcpy F - __mempcpy_chk F - __mempcpy_small F - __memset_chk F - __monstartup F - __morecore D 0x4 - __nanosleep F - __newlocale F - __nl_langinfo_l F - __nss_configure_lookup F - __nss_database_lookup F - __nss_group_lookup F - __nss_hostname_digits_dots F - __nss_hosts_lookup F - __nss_next F - __nss_passwd_lookup F - __obstack_printf_chk F - __obstack_vprintf_chk F - __open F - __open64 F - __open64_2 F - __open_2 F - __openat64_2 F - __openat_2 F - __overflow F - __pipe F - __poll F - __posix_getopt F - __pread64 F - __pread64_chk F - __pread_chk F - __printf_chk F - __printf_fp F - __profile_frequency F - __progname D 0x4 - __progname_full D 0x4 - __ptsname_r_chk F - __pwrite64 F - __rawmemchr F - __rcmd_errstr D 0x4 - __read F - __read_chk F - __readlink_chk F - __readlinkat_chk F - __realloc_hook D 0x4 - __realpath_chk F - __recv_chk F - __recvfrom_chk F - __register_atfork F - __res_init F - __res_nclose F - __res_ninit F - __res_randomid F - __res_state F - __rpc_thread_createerr F - __rpc_thread_svc_fdset F - __rpc_thread_svc_max_pollfd F - __rpc_thread_svc_pollfd F - __sbrk F - __sched_cpualloc F - __sched_cpucount F - __sched_cpufree F - __sched_get_priority_max F - __sched_get_priority_min F - __sched_getparam F - __sched_getscheduler F - __sched_setscheduler F - __sched_yield F - __secure_getenv F - __select F - __setmntent F - __setpgid F - __sigaction F - __sigaddset F - __sigdelset F - __sigismember F - __signbit F - __signbitf F - __sigpause F - __sigsetjmp F - __sigsuspend F - __snprintf_chk F - __sprintf_chk F - __stack_chk_fail F - __statfs F - __stpcpy F - __stpcpy_chk F - __stpcpy_small F - __stpncpy F - __stpncpy_chk F - __strcasecmp F - __strcasecmp_l F - __strcasestr F - __strcat_chk F - __strcoll_l F - __strcpy_chk F - __strcpy_small F - __strcspn_c1 F - __strcspn_c2 F - __strcspn_c3 F - __strdup F - __strerror_r F - __strfmon_l F - __strftime_l F - __strncasecmp_l F - __strncat_chk F - __strncpy_chk F - __strndup F - __strpbrk_c2 F - __strpbrk_c3 F - __strsep_1c F - __strsep_2c F - __strsep_3c F - __strsep_g F - __strspn_c1 F - __strspn_c2 F - __strspn_c3 F - __strtod_internal F - __strtod_l F - __strtof_internal F - __strtof_l F - __strtok_r F - __strtok_r_1c F - __strtol_internal F - __strtol_l F - __strtold_internal F - __strtold_l F - __strtoll_internal F - __strtoll_l F - __strtoul_internal F - __strtoul_l F - __strtoull_internal F - __strtoull_l F - __strverscmp F - __strxfrm_l F - __swprintf_chk F - __sysconf F - __syslog_chk F - __sysv_signal F - __timezone D 0x4 - __toascii_l F - __tolower_l F - __toupper_l F - __towctrans F - __towctrans_l F - __towlower_l F - __towupper_l F - __ttyname_r_chk F - __tzname D 0x8 - __uflow F - __underflow F - __uselocale F - __vasprintf_chk F - __vdprintf_chk F - __vfork F - __vfprintf_chk F - __vfscanf F - __vfwprintf_chk F - __vprintf_chk F - __vsnprintf F - __vsnprintf_chk F - __vsprintf_chk F - __vsscanf F - __vswprintf_chk F - __vsyslog_chk F - __vwprintf_chk F - __wait F - __waitpid F - __wcpcpy_chk F - __wcpncpy_chk F - __wcrtomb_chk F - __wcscasecmp_l F - __wcscat_chk F - __wcscoll_l F - __wcscpy_chk F - __wcsftime_l F - __wcsncasecmp_l F - __wcsncat_chk F - __wcsncpy_chk F - __wcsnrtombs_chk F - __wcsrtombs_chk F - __wcstod_internal F - __wcstod_l F - __wcstof_internal F - __wcstof_l F - __wcstol_internal F - __wcstol_l F - __wcstold_internal F - __wcstold_l F - __wcstoll_internal F - __wcstoll_l F - __wcstombs_chk F - __wcstoul_internal F - __wcstoul_l F - __wcstoull_internal F - __wcstoull_l F - __wcsxfrm_l F - __wctomb_chk F - __wctrans_l F - __wctype_l F - __wmemcpy_chk F - __wmemmove_chk F - __wmempcpy_chk F - __wmemset_chk F - __woverflow F - __wprintf_chk F - __write F - __wuflow F - __wunderflow F - __xmknod F - __xmknodat F - __xpg_basename F - __xpg_sigpause F - __xpg_strerror_r F - __xstat F - __xstat64 F - _authenticate F - _dl_mcount_wrapper F - _dl_mcount_wrapper_check F - _environ D 0x4 - _exit F - _flush_cache F - _flushlbf F - _libc_intl_domainname D 0x5 - _longjmp F - _mcleanup F - _mcount F - _nl_default_dirname D 0x12 - _nl_domain_bindings D 0x4 - _nl_msg_cat_cntr D 0x4 - _null_auth D 0xc - _obstack_allocated_p F - _obstack_begin F - _obstack_begin_1 F - _obstack_free F - _obstack_memory_used F - _obstack_newchunk F - _res D 0x200 - _res_hconf D 0x30 - _rpc_dtablesize F - _seterr_reply F - _setjmp F - _sys_errlist D 0x21c - _sys_nerr D 0x4 - _sys_siglist D 0x104 - _tolower F - _toupper F - a64l F - abort F - abs F - accept F - accept4 F - access F - acct F - addmntent F - addseverity F - adjtime F - adjtimex F - advance F - alarm F - alphasort F - alphasort64 F - argp_err_exit_status D 0x4 - argp_error F - argp_failure F - argp_help F - argp_parse F - argp_program_bug_address D 0x4 - argp_program_version D 0x4 - argp_program_version_hook D 0x4 - argp_state_help F - argp_usage F - argz_add F - argz_add_sep F - argz_append F - argz_count F - argz_create F - argz_create_sep F - argz_delete F - argz_extract F - argz_insert F - argz_next F - argz_replace F - argz_stringify F - asctime F - asctime_r F - asprintf F - atof F - atoi F - atol F - atoll F - authdes_create F - authdes_getucred F - authdes_pk_create F - authnone_create F - authunix_create F - authunix_create_default F - backtrace F - backtrace_symbols F - backtrace_symbols_fd F - basename F - bcmp F - bcopy F - bdflush F - bind F - bind_textdomain_codeset F - bindresvport F - bindtextdomain F - brk F - bsd_signal F - bsearch F - btowc F - bzero F - cacheflush F - calloc F - callrpc F - canonicalize_file_name F - capget F - capset F - catclose F - catgets F - catopen F - cbc_crypt F - cfgetispeed F - cfgetospeed F - cfmakeraw F - cfree F - cfsetispeed F - cfsetospeed F - cfsetspeed F - chdir F - chflags F - chmod F - chown F - chroot F - clearenv F - clearerr F - clearerr_unlocked F - clnt_broadcast F - clnt_create F - clnt_pcreateerror F - clnt_perrno F - clnt_perror F - clnt_spcreateerror F - clnt_sperrno F - clnt_sperror F - clntraw_create F - clnttcp_create F - clntudp_bufcreate F - clntudp_create F - clntunix_create F - clock F - clone F - close F - closedir F - closelog F - confstr F - connect F - copysign F - copysignf F - copysignl F - creat F - creat64 F - create_module F - ctermid F - ctime F - ctime_r F - cuserid F - daemon F - daylight D 0x4 - dcgettext F - dcngettext F - delete_module F - des_setparity F - dgettext F - difftime F - dirfd F - dirname F - div F - dl_iterate_phdr F - dngettext F - dprintf F - drand48 F - drand48_r F - dup F - dup2 F - dup3 F - duplocale F - dysize F - eaccess F - ecb_crypt F - ecvt F - ecvt_r F - endaliasent F - endfsent F - endgrent F - endhostent F - endmntent F - endnetent F - endnetgrent F - endprotoent F - endpwent F - endrpcent F - endservent F - endsgent F - endspent F - endttyent F - endusershell F - endutent F - endutxent F - environ D 0x4 - envz_add F - envz_entry F - envz_get F - envz_merge F - envz_remove F - envz_strip F - epoll_create F - epoll_create1 F - epoll_ctl F - epoll_pwait F - epoll_wait F - erand48 F - erand48_r F - err F - error F - error_at_line F - error_message_count D 0x4 - error_one_per_line D 0x4 - error_print_progname D 0x4 - errx F - ether_aton F - ether_aton_r F - ether_hostton F - ether_line F - ether_ntoa F - ether_ntoa_r F - ether_ntohost F - euidaccess F - eventfd F - eventfd_read F - eventfd_write F - execl F - execle F - execlp F - execv F - execve F - execvp F - execvpe F - exit F - faccessat F - fallocate F - fallocate64 F - fattach F - fchdir F - fchflags F - fchmod F - fchmodat F - fchown F - fchownat F - fclose F - fcloseall F - fcntl F - fcvt F - fcvt_r F - fdatasync F - fdetach F - fdopen F - fdopendir F - feof F - feof_unlocked F - ferror F - ferror_unlocked F - fexecve F - fflush F - fflush_unlocked F - ffs F - ffsl F - ffsll F - fgetc F - fgetc_unlocked F - fgetgrent F - fgetgrent_r F - fgetpos F - fgetpos64 F - fgetpwent F - fgetpwent_r F - fgets F - fgets_unlocked F - fgetsgent F - fgetsgent_r F - fgetspent F - fgetspent_r F - fgetwc F - fgetwc_unlocked F - fgetws F - fgetws_unlocked F - fgetxattr F - fileno F - fileno_unlocked F - finite F - finitef F - finitel F - flistxattr F - flock F - flockfile F - fmemopen F - fmtmsg F - fnmatch F - fopen F - fopen64 F - fopencookie F - fork F - fpathconf F - fprintf F - fputc F - fputc_unlocked F - fputs F - fputs_unlocked F - fputwc F - fputwc_unlocked F - fputws F - fputws_unlocked F - fread F - fread_unlocked F - free F - freeaddrinfo F - freeifaddrs F - freelocale F - fremovexattr F - freopen F - freopen64 F - frexp F - frexpf F - frexpl F - fscanf F - fseek F - fseeko F - fseeko64 F - fsetpos F - fsetpos64 F - fsetxattr F - fstatfs F - fstatfs64 F - fstatvfs F - fstatvfs64 F - fsync F - ftell F - ftello F - ftello64 F - ftime F - ftok F - ftruncate F - ftruncate64 F - ftrylockfile F - fts_children F - fts_close F - fts_open F - fts_read F - fts_set F - ftw F - ftw64 F - funlockfile F - futimens F - futimes F - futimesat F - fwide F - fwprintf F - fwrite F - fwrite_unlocked F - fwscanf F - gai_strerror F - gcvt F - get_avphys_pages F - get_current_dir_name F - get_kernel_syms F - get_myaddress F - get_nprocs F - get_nprocs_conf F - get_phys_pages F - getaddrinfo F - getaliasbyname F - getaliasbyname_r F - getaliasent F - getaliasent_r F - getc F - getc_unlocked F - getchar F - getchar_unlocked F - getcontext F - getcwd F - getdate F - getdate_err D 0x4 - getdate_r F - getdelim F - getdirentries F - getdirentries64 F - getdomainname F - getdtablesize F - getegid F - getenv F - geteuid F - getfsent F - getfsfile F - getfsspec F - getgid F - getgrent F - getgrent_r F - getgrgid F - getgrgid_r F - getgrnam F - getgrnam_r F - getgrouplist F - getgroups F - gethostbyaddr F - gethostbyaddr_r F - gethostbyname F - gethostbyname2 F - gethostbyname2_r F - gethostbyname_r F - gethostent F - gethostent_r F - gethostid F - gethostname F - getifaddrs F - getipv4sourcefilter F - getitimer F - getline F - getloadavg F - getlogin F - getlogin_r F - getmntent F - getmntent_r F - getmsg F - getnameinfo F - getnetbyaddr F - getnetbyaddr_r F - getnetbyname F - getnetbyname_r F - getnetent F - getnetent_r F - getnetgrent F - getnetgrent_r F - getnetname F - getopt F - getopt_long F - getopt_long_only F - getpagesize F - getpass F - getpeername F - getpgid F - getpgrp F - getpid F - getpmsg F - getppid F - getpriority F - getprotobyname F - getprotobyname_r F - getprotobynumber F - getprotobynumber_r F - getprotoent F - getprotoent_r F - getpt F - getpublickey F - getpw F - getpwent F - getpwent_r F - getpwnam F - getpwnam_r F - getpwuid F - getpwuid_r F - getresgid F - getresuid F - getrlimit F - getrlimit64 F - getrpcbyname F - getrpcbyname_r F - getrpcbynumber F - getrpcbynumber_r F - getrpcent F - getrpcent_r F - getrpcport F - getrusage F - gets F - getsecretkey F - getservbyname F - getservbyname_r F - getservbyport F - getservbyport_r F - getservent F - getservent_r F - getsgent F - getsgent_r F - getsgnam F - getsgnam_r F - getsid F - getsockname F - getsockopt F - getsourcefilter F - getspent F - getspent_r F - getspnam F - getspnam_r F - getsubopt F - gettext F - gettimeofday F - getttyent F - getttynam F - getuid F - getusershell F - getutent F - getutent_r F - getutid F - getutid_r F - getutline F - getutline_r F - getutmp F - getutmpx F - getutxent F - getutxid F - getutxline F - getw F - getwc F - getwc_unlocked F - getwchar F - getwchar_unlocked F - getwd F - getxattr F - glob F - glob64 F - glob_pattern_p F - globfree F - globfree64 F - gmtime F - gmtime_r F - gnu_dev_major F - gnu_dev_makedev F - gnu_dev_minor F - gnu_get_libc_release F - gnu_get_libc_version F - grantpt F - group_member F - gsignal F - gtty F - h_errlist D 0x14 - h_nerr D 0x4 - hasmntopt F - hcreate F - hcreate_r F - hdestroy F - hdestroy_r F - herror F - host2netname F - hsearch F - hsearch_r F - hstrerror F - htonl F - htons F - iconv F - iconv_close F - iconv_open F - if_freenameindex F - if_indextoname F - if_nameindex F - if_nametoindex F - imaxabs F - imaxdiv F - in6addr_any D 0x10 - in6addr_loopback D 0x10 - index F - inet6_opt_append F - inet6_opt_find F - inet6_opt_finish F - inet6_opt_get_val F - inet6_opt_init F - inet6_opt_next F - inet6_opt_set_val F - inet6_option_alloc F - inet6_option_append F - inet6_option_find F - inet6_option_init F - inet6_option_next F - inet6_option_space F - inet6_rth_add F - inet6_rth_getaddr F - inet6_rth_init F - inet6_rth_reverse F - inet6_rth_segments F - inet6_rth_space F - inet_addr F - inet_aton F - inet_lnaof F - inet_makeaddr F - inet_netof F - inet_network F - inet_nsap_addr F - inet_nsap_ntoa F - inet_ntoa F - inet_ntop F - inet_pton F - init_module F - initgroups F - initstate F - initstate_r F - innetgr F - inotify_add_watch F - inotify_init F - inotify_init1 F - inotify_rm_watch F - insque F - ioctl F - iruserok F - iruserok_af F - isalnum F - isalnum_l F - isalpha F - isalpha_l F - isascii F - isastream F - isatty F - isblank F - isblank_l F - iscntrl F - iscntrl_l F - isctype F - isdigit F - isdigit_l F - isfdtype F - isgraph F - isgraph_l F - isinf F - isinff F - isinfl F - islower F - islower_l F - isnan F - isnanf F - isnanl F - isprint F - isprint_l F - ispunct F - ispunct_l F - isspace F - isspace_l F - isupper F - isupper_l F - iswalnum F - iswalnum_l F - iswalpha F - iswalpha_l F - iswblank F - iswblank_l F - iswcntrl F - iswcntrl_l F - iswctype F - iswctype_l F - iswdigit F - iswdigit_l F - iswgraph F - iswgraph_l F - iswlower F - iswlower_l F - iswprint F - iswprint_l F - iswpunct F - iswpunct_l F - iswspace F - iswspace_l F - iswupper F - iswupper_l F - iswxdigit F - iswxdigit_l F - isxdigit F - isxdigit_l F - jrand48 F - jrand48_r F - key_decryptsession F - key_decryptsession_pk F - key_encryptsession F - key_encryptsession_pk F - key_gendes F - key_get_conv F - key_secretkey_is_set F - key_setnet F - key_setsecret F - kill F - killpg F - klogctl F - l64a F - labs F - lchmod F - lchown F - lckpwdf F - lcong48 F - lcong48_r F - ldexp F - ldexpf F - ldexpl F - ldiv F - lfind F - lgetxattr F - link F - linkat F - listen F - listxattr F - llabs F - lldiv F - llistxattr F - llseek F - loc1 D 0x4 - loc2 D 0x4 - localeconv F - localtime F - localtime_r F - lockf F - lockf64 F - locs D 0x4 - longjmp F - lrand48 F - lrand48_r F - lremovexattr F - lsearch F - lseek F - lseek64 F - lsetxattr F - lutimes F - madvise F - makecontext F - mallinfo F - malloc F - malloc_get_state F - malloc_info F - malloc_set_state F - malloc_stats F - malloc_trim F - malloc_usable_size F - mallopt F - mallwatch D 0x4 - mblen F - mbrlen F - mbrtowc F - mbsinit F - mbsnrtowcs F - mbsrtowcs F - mbstowcs F - mbtowc F - mcheck F - mcheck_check_all F - mcheck_pedantic F - mcount F - memalign F - memccpy F - memchr F - memcmp F - memcpy F - memfrob F - memmem F - memmove F - mempcpy F - memrchr F - memset F - mincore F - mkdir F - mkdirat F - mkdtemp F - mkfifo F - mkfifoat F - mkostemp F - mkostemp64 F - mkostemps F - mkostemps64 F - mkstemp F - mkstemp64 F - mkstemps F - mkstemps64 F - mktemp F - mktime F - mlock F - mlockall F - mmap F - mmap64 F - modf F - modff F - modfl F - moncontrol F - monstartup F - mount F - mprobe F - mprotect F - mrand48 F - mrand48_r F - mremap F - msgctl F - msgget F - msgrcv F - msgsnd F - msync F - mtrace F - munlock F - munlockall F - munmap F - muntrace F - nanosleep F - netname2host F - netname2user F - newlocale F - nfsservctl F - nftw F - nftw64 F - ngettext F - nice F - nl_langinfo F - nl_langinfo_l F - nrand48 F - nrand48_r F - ntohl F - ntohs F - ntp_adjtime F - ntp_gettime F - ntp_gettimex F - obstack_alloc_failed_handler D 0x4 - obstack_exit_failure D 0x4 - obstack_free F - obstack_printf F - obstack_vprintf F - on_exit F - open F - open64 F - open_memstream F - open_wmemstream F - openat F - openat64 F - opendir F - openlog F - optarg D 0x4 - opterr D 0x4 - optind D 0x4 - optopt D 0x4 - parse_printf_format F - passwd2des F - pathconf F - pause F - pclose F - perror F - personality F - pipe F - pipe2 F - pivot_root F - pmap_getmaps F - pmap_getport F - pmap_rmtcall F - pmap_set F - pmap_unset F - poll F - popen F - posix_fadvise F - posix_fadvise64 F - posix_fallocate F - posix_fallocate64 F - posix_madvise F - posix_memalign F - posix_openpt F - posix_spawn F - posix_spawn_file_actions_addclose F - posix_spawn_file_actions_adddup2 F - posix_spawn_file_actions_addopen F - posix_spawn_file_actions_destroy F - posix_spawn_file_actions_init F - posix_spawnattr_destroy F - posix_spawnattr_getflags F - posix_spawnattr_getpgroup F - posix_spawnattr_getschedparam F - posix_spawnattr_getschedpolicy F - posix_spawnattr_getsigdefault F - posix_spawnattr_getsigmask F - posix_spawnattr_init F - posix_spawnattr_setflags F - posix_spawnattr_setpgroup F - posix_spawnattr_setschedparam F - posix_spawnattr_setschedpolicy F - posix_spawnattr_setsigdefault F - posix_spawnattr_setsigmask F - posix_spawnp F - ppoll F - prctl F - pread F - pread64 F - preadv F - preadv64 F - printf F - printf_size F - printf_size_info F - profil F - program_invocation_name D 0x4 - program_invocation_short_name D 0x4 - pselect F - psiginfo F - psignal F - pthread_attr_destroy F - pthread_attr_getdetachstate F - pthread_attr_getinheritsched F - pthread_attr_getschedparam F - pthread_attr_getschedpolicy F - pthread_attr_getscope F - pthread_attr_init F - pthread_attr_setdetachstate F - pthread_attr_setinheritsched F - pthread_attr_setschedparam F - pthread_attr_setschedpolicy F - pthread_attr_setscope F - pthread_cond_broadcast F - pthread_cond_destroy F - pthread_cond_init F - pthread_cond_signal F - pthread_cond_timedwait F - pthread_cond_wait F - pthread_condattr_destroy F - pthread_condattr_init F - pthread_equal F - pthread_exit F - pthread_getschedparam F - pthread_mutex_destroy F - pthread_mutex_init F - pthread_mutex_lock F - pthread_mutex_unlock F - pthread_self F - pthread_setcancelstate F - pthread_setcanceltype F - pthread_setschedparam F - ptrace F - ptsname F - ptsname_r F - putc F - putc_unlocked F - putchar F - putchar_unlocked F - putenv F - putgrent F - putmsg F - putpmsg F - putpwent F - puts F - putsgent F - putspent F - pututline F - pututxline F - putw F - putwc F - putwc_unlocked F - putwchar F - putwchar_unlocked F - pvalloc F - pwrite F - pwrite64 F - pwritev F - pwritev64 F - qecvt F - qecvt_r F - qfcvt F - qfcvt_r F - qgcvt F - qsort F - qsort_r F - query_module F - quick_exit F - quotactl F - raise F - rand F - rand_r F - random F - random_r F - rawmemchr F - rcmd F - rcmd_af F - re_comp F - re_compile_fastmap F - re_compile_pattern F - re_exec F - re_match F - re_match_2 F - re_search F - re_search_2 F - re_set_registers F - re_set_syntax F - re_syntax_options D 0x4 - read F - readahead F - readdir F - readdir64 F - readdir64_r F - readdir_r F - readlink F - readlinkat F - readv F - realloc F - realpath F - reboot F - recv F - recvfrom F - recvmmsg F - recvmsg F - regcomp F - regerror F - regexec F - regfree F - register_printf_function F - register_printf_modifier F - register_printf_specifier F - register_printf_type F - registerrpc F - remap_file_pages F - remove F - removexattr F - remque F - rename F - renameat F - revoke F - rewind F - rewinddir F - rexec F - rexec_af F - rexecoptions D 0x4 - rindex F - rmdir F - rpc_createerr D 0x10 - rpmatch F - rresvport F - rresvport_af F - rtime F - ruserok F - ruserok_af F - ruserpass F - sbrk F - scalbn F - scalbnf F - scalbnl F - scandir F - scandir64 F - scanf F - sched_get_priority_max F - sched_get_priority_min F - sched_getaffinity F - sched_getcpu F - sched_getparam F - sched_getscheduler F - sched_rr_get_interval F - sched_setaffinity F - sched_setparam F - sched_setscheduler F - sched_yield F - seed48 F - seed48_r F - seekdir F - select F - semctl F - semget F - semop F - semtimedop F - send F - sendfile F - sendfile64 F - sendmsg F - sendto F - set_dataplane F - setaliasent F - setbuf F - setbuffer F - setcontext F - setdomainname F - setegid F - setenv F - seteuid F - setfsent F - setfsgid F - setfsuid F - setgid F - setgrent F - setgroups F - sethostent F - sethostid F - sethostname F - setipv4sourcefilter F - setitimer F - setjmp F - setlinebuf F - setlocale F - setlogin F - setlogmask F - setmntent F - setnetent F - setnetgrent F - setpgid F - setpgrp F - setpriority F - setprotoent F - setpwent F - setregid F - setresgid F - setresuid F - setreuid F - setrlimit F - setrlimit64 F - setrpcent F - setservent F - setsgent F - setsid F - setsockopt F - setsourcefilter F - setspent F - setstate F - setstate_r F - settimeofday F - setttyent F - setuid F - setusershell F - setutent F - setutxent F - setvbuf F - setxattr F - sgetsgent F - sgetsgent_r F - sgetspent F - sgetspent_r F - shmat F - shmctl F - shmdt F - shmget F - shutdown F - sigaction F - sigaddset F - sigaltstack F - sigandset F - sigblock F - sigdelset F - sigemptyset F - sigfillset F - siggetmask F - sighold F - sigignore F - siginterrupt F - sigisemptyset F - sigismember F - siglongjmp F - signal F - signalfd F - sigorset F - sigpause F - sigpending F - sigprocmask F - sigqueue F - sigrelse F - sigreturn F - sigset F - sigsetmask F - sigstack F - sigsuspend F - sigtimedwait F - sigvec F - sigwait F - sigwaitinfo F - sleep F - snprintf F - sockatmark F - socket F - socketpair F - splice F - sprintf F - sprofil F - srand F - srand48 F - srand48_r F - srandom F - srandom_r F - sscanf F - ssignal F - sstk F - statfs F - statfs64 F - statvfs F - statvfs64 F - stderr D 0x4 - stdin D 0x4 - stdout D 0x4 - step F - stime F - stpcpy F - stpncpy F - strcasecmp F - strcasecmp_l F - strcasestr F - strcat F - strchr F - strchrnul F - strcmp F - strcoll F - strcoll_l F - strcpy F - strcspn F - strdup F - strerror F - strerror_l F - strerror_r F - strfmon F - strfmon_l F - strfry F - strftime F - strftime_l F - strlen F - strncasecmp F - strncasecmp_l F - strncat F - strncmp F - strncpy F - strndup F - strnlen F - strpbrk F - strptime F - strptime_l F - strrchr F - strsep F - strsignal F - strspn F - strstr F - strtod F - strtod_l F - strtof F - strtof_l F - strtoimax F - strtok F - strtok_r F - strtol F - strtol_l F - strtold F - strtold_l F - strtoll F - strtoll_l F - strtoq F - strtoul F - strtoul_l F - strtoull F - strtoull_l F - strtoumax F - strtouq F - strverscmp F - strxfrm F - strxfrm_l F - stty F - svc_exit F - svc_fdset D 0x80 - svc_getreq F - svc_getreq_common F - svc_getreq_poll F - svc_getreqset F - svc_max_pollfd D 0x4 - svc_pollfd D 0x4 - svc_register F - svc_run F - svc_sendreply F - svc_unregister F - svcauthdes_stats D 0xc - svcerr_auth F - svcerr_decode F - svcerr_noproc F - svcerr_noprog F - svcerr_progvers F - svcerr_systemerr F - svcerr_weakauth F - svcfd_create F - svcraw_create F - svctcp_create F - svcudp_bufcreate F - svcudp_create F - svcudp_enablecache F - svcunix_create F - svcunixfd_create F - swab F - swapcontext F - swapoff F - swapon F - swprintf F - swscanf F - symlink F - symlinkat F - sync F - sync_file_range F - sys_errlist D 0x21c - sys_nerr D 0x4 - sys_sigabbrev D 0x104 - sys_siglist D 0x104 - syscall F - sysconf F - sysctl F - sysinfo F - syslog F - system F - sysv_signal F - tcdrain F - tcflow F - tcflush F - tcgetattr F - tcgetpgrp F - tcgetsid F - tcsendbreak F - tcsetattr F - tcsetpgrp F - tdelete F - tdestroy F - tee F - telldir F - tempnam F - textdomain F - tfind F - time F - timegm F - timelocal F - timerfd_create F - timerfd_gettime F - timerfd_settime F - times F - timezone D 0x4 - tmpfile F - tmpfile64 F - tmpnam F - tmpnam_r F - toascii F - tolower F - tolower_l F - toupper F - toupper_l F - towctrans F - towctrans_l F - towlower F - towlower_l F - towupper F - towupper_l F - tr_break F - truncate F - truncate64 F - tsearch F - ttyname F - ttyname_r F - ttyslot F - twalk F - tzname D 0x8 - tzset F - ualarm F - ulckpwdf F - ulimit F - umask F - umount F - umount2 F - uname F - ungetc F - ungetwc F - unlink F - unlinkat F - unlockpt F - unsetenv F - unshare F - updwtmp F - updwtmpx F - uselib F - uselocale F - user2netname F - usleep F - ustat F - utime F - utimensat F - utimes F - utmpname F - utmpxname F - valloc F - vasprintf F - vdprintf F - verr F - verrx F - versionsort F - versionsort64 F - vfork F - vfprintf F - vfscanf F - vfwprintf F - vfwscanf F - vhangup F - vlimit F - vmsplice F - vprintf F - vscanf F - vsnprintf F - vsprintf F - vsscanf F - vswprintf F - vswscanf F - vsyslog F - vtimes F - vwarn F - vwarnx F - vwprintf F - vwscanf F - wait F - wait3 F - wait4 F - waitid F - waitpid F - warn F - warnx F - wcpcpy F - wcpncpy F - wcrtomb F - wcscasecmp F - wcscasecmp_l F - wcscat F - wcschr F - wcschrnul F - wcscmp F - wcscoll F - wcscoll_l F - wcscpy F - wcscspn F - wcsdup F - wcsftime F - wcsftime_l F - wcslen F - wcsncasecmp F - wcsncasecmp_l F - wcsncat F - wcsncmp F - wcsncpy F - wcsnlen F - wcsnrtombs F - wcspbrk F - wcsrchr F - wcsrtombs F - wcsspn F - wcsstr F - wcstod F - wcstod_l F - wcstof F - wcstof_l F - wcstoimax F - wcstok F - wcstol F - wcstol_l F - wcstold F - wcstold_l F - wcstoll F - wcstoll_l F - wcstombs F - wcstoq F - wcstoul F - wcstoul_l F - wcstoull F - wcstoull_l F - wcstoumax F - wcstouq F - wcswcs F - wcswidth F - wcsxfrm F - wcsxfrm_l F - wctob F - wctomb F - wctrans F - wctrans_l F - wctype F - wctype_l F - wcwidth F - wmemchr F - wmemcmp F - wmemcpy F - wmemmove F - wmempcpy F - wmemset F - wordexp F - wordfree F - wprintf F - write F - writev F - wscanf F - xdecrypt F - xdr_accepted_reply F - xdr_array F - xdr_authdes_cred F - xdr_authdes_verf F - xdr_authunix_parms F - xdr_bool F - xdr_bytes F - xdr_callhdr F - xdr_callmsg F - xdr_char F - xdr_cryptkeyarg F - xdr_cryptkeyarg2 F - xdr_cryptkeyres F - xdr_des_block F - xdr_double F - xdr_enum F - xdr_float F - xdr_free F - xdr_getcredres F - xdr_hyper F - xdr_int F - xdr_int16_t F - xdr_int32_t F - xdr_int64_t F - xdr_int8_t F - xdr_key_netstarg F - xdr_key_netstres F - xdr_keybuf F - xdr_keystatus F - xdr_long F - xdr_longlong_t F - xdr_netnamestr F - xdr_netobj F - xdr_opaque F - xdr_opaque_auth F - xdr_pmap F - xdr_pmaplist F - xdr_pointer F - xdr_quad_t F - xdr_reference F - xdr_rejected_reply F - xdr_replymsg F - xdr_rmtcall_args F - xdr_rmtcallres F - xdr_short F - xdr_sizeof F - xdr_string F - xdr_u_char F - xdr_u_hyper F - xdr_u_int F - xdr_u_long F - xdr_u_longlong_t F - xdr_u_quad_t F - xdr_u_short F - xdr_uint16_t F - xdr_uint32_t F - xdr_uint64_t F - xdr_uint8_t F - xdr_union F - xdr_unixcred F - xdr_vector F - xdr_void F - xdr_wrapstring F - xdrmem_create F - xdrrec_create F - xdrrec_endofrecord F - xdrrec_eof F - xdrrec_skiprecord F - xdrstdio_create F - xencrypt F - xprt_register F - xprt_unregister F -GLIBC_2.15 - GLIBC_2.15 A - __fdelt_chk F - __fdelt_warn F - clock_adjtime F - fanotify_init F - fanotify_mark F - name_to_handle_at F - open_by_handle_at F - posix_spawn F - posix_spawnp F - prlimit F - prlimit64 F - process_vm_readv F - process_vm_writev F - scandirat F - scandirat64 F - sendmmsg F - setns F - syncfs F -GLIBC_2.16 - GLIBC_2.16 A - __getauxval F - __poll_chk F - __ppoll_chk F - aligned_alloc F - c16rtomb F - c32rtomb F - getauxval F - mbrtoc16 F - mbrtoc32 F - timespec_get F -GLIBC_2.17 - GLIBC_2.17 A - clock_getcpuclockid F - clock_getres F - clock_gettime F - clock_nanosleep F - clock_settime F - secure_getenv F -GLIBC_2.18 - GLIBC_2.18 A - __cxa_thread_atexit_impl F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libcrypt.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libcrypt.abilist deleted file mode 100644 index 608e5df0b1..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libcrypt.abilist +++ /dev/null @@ -1,9 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - crypt F - crypt_r F - encrypt F - encrypt_r F - fcrypt F - setkey F - setkey_r F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libdl.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libdl.abilist deleted file mode 100644 index 27a72281b7..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libdl.abilist +++ /dev/null @@ -1,11 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - dladdr F - dladdr1 F - dlclose F - dlerror F - dlinfo F - dlmopen F - dlopen F - dlsym F - dlvsym F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libm.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libm.abilist deleted file mode 100644 index cb0d1a4423..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libm.abilist +++ /dev/null @@ -1,373 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - _LIB_VERSION D 0x4 - __clog10 F - __clog10f F - __clog10l F - __finite F - __finitef F - __fpclassify F - __fpclassifyf F - __signbit F - __signbitf F - acos F - acosf F - acosh F - acoshf F - acoshl F - acosl F - asin F - asinf F - asinh F - asinhf F - asinhl F - asinl F - atan F - atan2 F - atan2f F - atan2l F - atanf F - atanh F - atanhf F - atanhl F - atanl F - cabs F - cabsf F - cabsl F - cacos F - cacosf F - cacosh F - cacoshf F - cacoshl F - cacosl F - carg F - cargf F - cargl F - casin F - casinf F - casinh F - casinhf F - casinhl F - casinl F - catan F - catanf F - catanh F - catanhf F - catanhl F - catanl F - cbrt F - cbrtf F - cbrtl F - ccos F - ccosf F - ccosh F - ccoshf F - ccoshl F - ccosl F - ceil F - ceilf F - ceill F - cexp F - cexpf F - cexpl F - cimag F - cimagf F - cimagl F - clog F - clog10 F - clog10f F - clog10l F - clogf F - clogl F - conj F - conjf F - conjl F - copysign F - copysignf F - copysignl F - cos F - cosf F - cosh F - coshf F - coshl F - cosl F - cpow F - cpowf F - cpowl F - cproj F - cprojf F - cprojl F - creal F - crealf F - creall F - csin F - csinf F - csinh F - csinhf F - csinhl F - csinl F - csqrt F - csqrtf F - csqrtl F - ctan F - ctanf F - ctanh F - ctanhf F - ctanhl F - ctanl F - drem F - dremf F - dreml F - erf F - erfc F - erfcf F - erfcl F - erff F - erfl F - exp F - exp10 F - exp10f F - exp10l F - exp2 F - exp2f F - exp2l F - expf F - expl F - expm1 F - expm1f F - expm1l F - fabs F - fabsf F - fabsl F - fdim F - fdimf F - fdiml F - feclearexcept F - fedisableexcept F - feenableexcept F - fegetenv F - fegetexcept F - fegetexceptflag F - fegetround F - feholdexcept F - feraiseexcept F - fesetenv F - fesetexceptflag F - fesetround F - fetestexcept F - feupdateenv F - finite F - finitef F - finitel F - floor F - floorf F - floorl F - fma F - fmaf F - fmal F - fmax F - fmaxf F - fmaxl F - fmin F - fminf F - fminl F - fmod F - fmodf F - fmodl F - frexp F - frexpf F - frexpl F - gamma F - gammaf F - gammal F - hypot F - hypotf F - hypotl F - ilogb F - ilogbf F - ilogbl F - j0 F - j0f F - j0l F - j1 F - j1f F - j1l F - jn F - jnf F - jnl F - ldexp F - ldexpf F - ldexpl F - lgamma F - lgamma_r F - lgammaf F - lgammaf_r F - lgammal F - lgammal_r F - llrint F - llrintf F - llrintl F - llround F - llroundf F - llroundl F - log F - log10 F - log10f F - log10l F - log1p F - log1pf F - log1pl F - log2 F - log2f F - log2l F - logb F - logbf F - logbl F - logf F - logl F - lrint F - lrintf F - lrintl F - lround F - lroundf F - lroundl F - matherr F - modf F - modff F - modfl F - nan F - nanf F - nanl F - nearbyint F - nearbyintf F - nearbyintl F - nextafter F - nextafterf F - nextafterl F - nexttoward F - nexttowardf F - nexttowardl F - pow F - pow10 F - pow10f F - pow10l F - powf F - powl F - remainder F - remainderf F - remainderl F - remquo F - remquof F - remquol F - rint F - rintf F - rintl F - round F - roundf F - roundl F - scalb F - scalbf F - scalbl F - scalbln F - scalblnf F - scalblnl F - scalbn F - scalbnf F - scalbnl F - signgam D 0x4 - significand F - significandf F - significandl F - sin F - sincos F - sincosf F - sincosl F - sinf F - sinh F - sinhf F - sinhl F - sinl F - sqrt F - sqrtf F - sqrtl F - tan F - tanf F - tanh F - tanhf F - tanhl F - tanl F - tgamma F - tgammaf F - tgammal F - trunc F - truncf F - truncl F - y0 F - y0f F - y0l F - y1 F - y1f F - y1l F - yn F - ynf F - ynl F -GLIBC_2.15 - GLIBC_2.15 A - __acos_finite F - __acosf_finite F - __acosh_finite F - __acoshf_finite F - __asin_finite F - __asinf_finite F - __atan2_finite F - __atan2f_finite F - __atanh_finite F - __atanhf_finite F - __cosh_finite F - __coshf_finite F - __exp10_finite F - __exp10f_finite F - __exp2_finite F - __exp2f_finite F - __exp_finite F - __expf_finite F - __fmod_finite F - __fmodf_finite F - __gamma_r_finite F - __gammaf_r_finite F - __hypot_finite F - __hypotf_finite F - __j0_finite F - __j0f_finite F - __j1_finite F - __j1f_finite F - __jn_finite F - __jnf_finite F - __lgamma_r_finite F - __lgammaf_r_finite F - __log10_finite F - __log10f_finite F - __log2_finite F - __log2f_finite F - __log_finite F - __logf_finite F - __pow_finite F - __powf_finite F - __remainder_finite F - __remainderf_finite F - __scalb_finite F - __scalbf_finite F - __sinh_finite F - __sinhf_finite F - __sqrt_finite F - __sqrtf_finite F - __y0_finite F - __y0f_finite F - __y1_finite F - __y1f_finite F - __yn_finite F - __ynf_finite F -GLIBC_2.18 - GLIBC_2.18 A - __issignaling F - __issignalingf F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libnsl.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libnsl.abilist deleted file mode 100644 index e4217934c8..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libnsl.abilist +++ /dev/null @@ -1,123 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - __free_fdresult F - __nis_default_access F - __nis_default_group F - __nis_default_owner F - __nis_default_ttl F - __nis_finddirectory F - __nis_hash F - __nisbind_connect F - __nisbind_create F - __nisbind_destroy F - __nisbind_next F - __yp_check F - nis_add F - nis_add_entry F - nis_addmember F - nis_checkpoint F - nis_clone_directory F - nis_clone_object F - nis_clone_result F - nis_creategroup F - nis_destroy_object F - nis_destroygroup F - nis_dir_cmp F - nis_domain_of F - nis_domain_of_r F - nis_first_entry F - nis_free_directory F - nis_free_object F - nis_free_request F - nis_freenames F - nis_freeresult F - nis_freeservlist F - nis_freetags F - nis_getnames F - nis_getservlist F - nis_ismember F - nis_leaf_of F - nis_leaf_of_r F - nis_lerror F - nis_list F - nis_local_directory F - nis_local_group F - nis_local_host F - nis_local_principal F - nis_lookup F - nis_mkdir F - nis_modify F - nis_modify_entry F - nis_name_of F - nis_name_of_r F - nis_next_entry F - nis_perror F - nis_ping F - nis_print_directory F - nis_print_entry F - nis_print_group F - nis_print_group_entry F - nis_print_link F - nis_print_object F - nis_print_result F - nis_print_rights F - nis_print_table F - nis_read_obj F - nis_remove F - nis_remove_entry F - nis_removemember F - nis_rmdir F - nis_servstate F - nis_sperrno F - nis_sperror F - nis_sperror_r F - nis_stats F - nis_verifygroup F - nis_write_obj F - readColdStartFile F - writeColdStartFile F - xdr_cback_data F - xdr_domainname F - xdr_keydat F - xdr_mapname F - xdr_obj_p F - xdr_peername F - xdr_valdat F - xdr_yp_buf F - xdr_ypall F - xdr_ypbind_binding F - xdr_ypbind_resp F - xdr_ypbind_resptype F - xdr_ypbind_setdom F - xdr_ypdelete_args F - xdr_ypmap_parms F - xdr_ypmaplist F - xdr_yppush_status F - xdr_yppushresp_xfr F - xdr_ypreq_key F - xdr_ypreq_nokey F - xdr_ypreq_xfr F - xdr_ypresp_all F - xdr_ypresp_key_val F - xdr_ypresp_maplist F - xdr_ypresp_master F - xdr_ypresp_order F - xdr_ypresp_val F - xdr_ypresp_xfr F - xdr_ypstat F - xdr_ypupdate_args F - xdr_ypxfrstat F - yp_all F - yp_bind F - yp_first F - yp_get_default_domain F - yp_maplist F - yp_master F - yp_match F - yp_next F - yp_order F - yp_unbind F - yp_update F - ypbinderr_string F - yperr_string F - ypprot_err F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libpthread.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libpthread.abilist deleted file mode 100644 index f3c260071a..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libpthread.abilist +++ /dev/null @@ -1,228 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - _IO_flockfile F - _IO_ftrylockfile F - _IO_funlockfile F - __close F - __connect F - __errno_location F - __fcntl F - __fork F - __h_errno_location F - __libc_allocate_rtsig F - __libc_current_sigrtmax F - __libc_current_sigrtmin F - __lseek F - __nanosleep F - __open F - __open64 F - __pread64 F - __pthread_cleanup_routine F - __pthread_getspecific F - __pthread_key_create F - __pthread_mutex_destroy F - __pthread_mutex_init F - __pthread_mutex_lock F - __pthread_mutex_trylock F - __pthread_mutex_unlock F - __pthread_mutexattr_destroy F - __pthread_mutexattr_init F - __pthread_mutexattr_settype F - __pthread_once F - __pthread_register_cancel F - __pthread_register_cancel_defer F - __pthread_rwlock_destroy F - __pthread_rwlock_init F - __pthread_rwlock_rdlock F - __pthread_rwlock_tryrdlock F - __pthread_rwlock_trywrlock F - __pthread_rwlock_unlock F - __pthread_rwlock_wrlock F - __pthread_setspecific F - __pthread_unregister_cancel F - __pthread_unregister_cancel_restore F - __pthread_unwind_next F - __pwrite64 F - __read F - __res_state F - __send F - __sigaction F - __vfork F - __wait F - __write F - _pthread_cleanup_pop F - _pthread_cleanup_pop_restore F - _pthread_cleanup_push F - _pthread_cleanup_push_defer F - accept F - close F - connect F - fcntl F - flockfile F - fork F - fsync F - ftrylockfile F - funlockfile F - longjmp F - lseek F - lseek64 F - msync F - nanosleep F - open F - open64 F - pause F - pread F - pread64 F - pthread_attr_destroy F - pthread_attr_getaffinity_np F - pthread_attr_getdetachstate F - pthread_attr_getguardsize F - pthread_attr_getinheritsched F - pthread_attr_getschedparam F - pthread_attr_getschedpolicy F - pthread_attr_getscope F - pthread_attr_getstack F - pthread_attr_getstackaddr F - pthread_attr_getstacksize F - pthread_attr_init F - pthread_attr_setaffinity_np F - pthread_attr_setdetachstate F - pthread_attr_setguardsize F - pthread_attr_setinheritsched F - pthread_attr_setschedparam F - pthread_attr_setschedpolicy F - pthread_attr_setscope F - pthread_attr_setstack F - pthread_attr_setstackaddr F - pthread_attr_setstacksize F - pthread_barrier_destroy F - pthread_barrier_init F - pthread_barrier_wait F - pthread_barrierattr_destroy F - pthread_barrierattr_getpshared F - pthread_barrierattr_init F - pthread_barrierattr_setpshared F - pthread_cancel F - pthread_cond_broadcast F - pthread_cond_destroy F - pthread_cond_init F - pthread_cond_signal F - pthread_cond_timedwait F - pthread_cond_wait F - pthread_condattr_destroy F - pthread_condattr_getclock F - pthread_condattr_getpshared F - pthread_condattr_init F - pthread_condattr_setclock F - pthread_condattr_setpshared F - pthread_create F - pthread_detach F - pthread_equal F - pthread_exit F - pthread_getaffinity_np F - pthread_getattr_np F - pthread_getconcurrency F - pthread_getcpuclockid F - pthread_getname_np F - pthread_getschedparam F - pthread_getspecific F - pthread_join F - pthread_key_create F - pthread_key_delete F - pthread_kill F - pthread_kill_other_threads_np F - pthread_mutex_consistent F - pthread_mutex_consistent_np F - pthread_mutex_destroy F - pthread_mutex_getprioceiling F - pthread_mutex_init F - pthread_mutex_lock F - pthread_mutex_setprioceiling F - pthread_mutex_timedlock F - pthread_mutex_trylock F - pthread_mutex_unlock F - pthread_mutexattr_destroy F - pthread_mutexattr_getkind_np F - pthread_mutexattr_getprioceiling F - pthread_mutexattr_getprotocol F - pthread_mutexattr_getpshared F - pthread_mutexattr_getrobust F - pthread_mutexattr_getrobust_np F - pthread_mutexattr_gettype F - pthread_mutexattr_init F - pthread_mutexattr_setkind_np F - pthread_mutexattr_setprioceiling F - pthread_mutexattr_setprotocol F - pthread_mutexattr_setpshared F - pthread_mutexattr_setrobust F - pthread_mutexattr_setrobust_np F - pthread_mutexattr_settype F - pthread_once F - pthread_rwlock_destroy F - pthread_rwlock_init F - pthread_rwlock_rdlock F - pthread_rwlock_timedrdlock F - pthread_rwlock_timedwrlock F - pthread_rwlock_tryrdlock F - pthread_rwlock_trywrlock F - pthread_rwlock_unlock F - pthread_rwlock_wrlock F - pthread_rwlockattr_destroy F - pthread_rwlockattr_getkind_np F - pthread_rwlockattr_getpshared F - pthread_rwlockattr_init F - pthread_rwlockattr_setkind_np F - pthread_rwlockattr_setpshared F - pthread_self F - pthread_setaffinity_np F - pthread_setcancelstate F - pthread_setcanceltype F - pthread_setconcurrency F - pthread_setname_np F - pthread_setschedparam F - pthread_setschedprio F - pthread_setspecific F - pthread_sigmask F - pthread_sigqueue F - pthread_spin_destroy F - pthread_spin_init F - pthread_spin_lock F - pthread_spin_trylock F - pthread_spin_unlock F - pthread_testcancel F - pthread_timedjoin_np F - pthread_tryjoin_np F - pthread_yield F - pwrite F - pwrite64 F - raise F - read F - recv F - recvfrom F - recvmsg F - sem_close F - sem_destroy F - sem_getvalue F - sem_init F - sem_open F - sem_post F - sem_timedwait F - sem_trywait F - sem_unlink F - sem_wait F - send F - sendmsg F - sendto F - sigaction F - siglongjmp F - sigwait F - system F - tcdrain F - vfork F - wait F - waitpid F - write F -GLIBC_2.18 - GLIBC_2.18 A - pthread_getattr_default_np F - pthread_setattr_default_np F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libresolv.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libresolv.abilist deleted file mode 100644 index 64826160a1..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libresolv.abilist +++ /dev/null @@ -1,93 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - __b64_ntop F - __b64_pton F - __dn_comp F - __dn_count_labels F - __dn_expand F - __dn_skipname F - __fp_nquery F - __fp_query F - __fp_resstat F - __hostalias F - __loc_aton F - __loc_ntoa F - __p_cdname F - __p_cdnname F - __p_class F - __p_class_syms D 0x54 - __p_fqname F - __p_fqnname F - __p_option F - __p_query F - __p_rcode F - __p_secstodate F - __p_time F - __p_type F - __p_type_syms D 0x228 - __putlong F - __putshort F - __res_close F - __res_dnok F - __res_hnok F - __res_hostalias F - __res_isourserver F - __res_mailok F - __res_mkquery F - __res_nameinquery F - __res_nmkquery F - __res_nquery F - __res_nquerydomain F - __res_nsearch F - __res_nsend F - __res_ownok F - __res_queriesmatch F - __res_query F - __res_querydomain F - __res_search F - __res_send F - __sym_ntop F - __sym_ntos F - __sym_ston F - _gethtbyaddr F - _gethtbyname F - _gethtbyname2 F - _gethtent F - _getlong F - _getshort F - _res_opcodes D 0x40 - _sethtent F - inet_net_ntop F - inet_net_pton F - inet_neta F - ns_datetosecs F - ns_format_ttl F - ns_get16 F - ns_get32 F - ns_initparse F - ns_makecanon F - ns_msg_getflag F - ns_name_compress F - ns_name_ntol F - ns_name_ntop F - ns_name_pack F - ns_name_pton F - ns_name_rollback F - ns_name_skip F - ns_name_uncompress F - ns_name_unpack F - ns_parse_ttl F - ns_parserr F - ns_put16 F - ns_put32 F - ns_samedomain F - ns_samename F - ns_skiprr F - ns_sprintrr F - ns_sprintrrf F - ns_subdomain F - res_gethostbyaddr F - res_gethostbyname F - res_gethostbyname2 F - res_send_setqhook F - res_send_setrhook F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/librt.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/librt.abilist deleted file mode 100644 index 87fec065af..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/librt.abilist +++ /dev/null @@ -1,42 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - __mq_open_2 F - aio_cancel F - aio_cancel64 F - aio_error F - aio_error64 F - aio_fsync F - aio_fsync64 F - aio_init F - aio_read F - aio_read64 F - aio_return F - aio_return64 F - aio_suspend F - aio_suspend64 F - aio_write F - aio_write64 F - clock_getcpuclockid F - clock_getres F - clock_gettime F - clock_nanosleep F - clock_settime F - lio_listio F - lio_listio64 F - mq_close F - mq_getattr F - mq_notify F - mq_open F - mq_receive F - mq_send F - mq_setattr F - mq_timedreceive F - mq_timedsend F - mq_unlink F - shm_open F - shm_unlink F - timer_create F - timer_delete F - timer_getoverrun F - timer_gettime F - timer_settime F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libthread_db.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libthread_db.abilist deleted file mode 100644 index 934ce9acd6..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libthread_db.abilist +++ /dev/null @@ -1,42 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - td_init F - td_log F - td_symbol_list F - td_ta_clear_event F - td_ta_delete F - td_ta_enable_stats F - td_ta_event_addr F - td_ta_event_getmsg F - td_ta_get_nthreads F - td_ta_get_ph F - td_ta_get_stats F - td_ta_map_id2thr F - td_ta_map_lwp2thr F - td_ta_new F - td_ta_reset_stats F - td_ta_set_event F - td_ta_setconcurrency F - td_ta_thr_iter F - td_ta_tsd_iter F - td_thr_clear_event F - td_thr_dbresume F - td_thr_dbsuspend F - td_thr_event_enable F - td_thr_event_getmsg F - td_thr_get_info F - td_thr_getfpregs F - td_thr_getgregs F - td_thr_getxregs F - td_thr_getxregsize F - td_thr_set_event F - td_thr_setfpregs F - td_thr_setgregs F - td_thr_setprio F - td_thr_setsigpending F - td_thr_setxregs F - td_thr_sigsetmask F - td_thr_tls_get_addr F - td_thr_tlsbase F - td_thr_tsd F - td_thr_validate F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libutil.abilist b/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libutil.abilist deleted file mode 100644 index 50c312a7c6..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libutil.abilist +++ /dev/null @@ -1,8 +0,0 @@ -GLIBC_2.12 - GLIBC_2.12 A - forkpty F - login F - login_tty F - logout F - logwtmp F - openpty F diff --git a/ports/sysdeps/unix/sysv/linux/tile/tilepro/register-dump.h b/ports/sysdeps/unix/sysv/linux/tile/tilepro/register-dump.h deleted file mode 100644 index 45298ec7c2..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/tilepro/register-dump.h +++ /dev/null @@ -1,111 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - Based on work contributed by Ulrich Drepper , 1998. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include <_itoa.h> - -/* We will print the register dump in this format: - - R0: XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX - R8: XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX - R16: XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX - R24: XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX - R32: XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX - R40: XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX - R48: XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX - R52: XXXXXXXX TP: XXXXXXXX SP: XXXXXXXX LR: XXXXXXXX - - PC: XXXXXXXX ICS: X FAULTNUM: XX - - */ - -static void -hexvalue (unsigned long int value, char *buf, size_t len) -{ - char *cp = _itoa_word (value, buf + len, 16, 0); - while (cp > buf) - *--cp = '0'; -} - -static void -register_dump (int fd, mcontext_t *ctx) -{ - char regs[59][8]; - struct iovec iov[143]; - size_t nr = 0; - unsigned int i; - -#define ADD_STRING(str) \ - iov[nr].iov_base = (char *) str; \ - iov[nr].iov_len = strlen (str); \ - ++nr -#define ADD_MEM(str, len) \ - iov[nr].iov_base = str; \ - iov[nr].iov_len = len; \ - ++nr - - /* Generate strings of register contents. */ - for (i = 0; i < 56; ++i) - hexvalue (ctx->gregs[i], regs[i], 8); - hexvalue (ctx->pc, regs[56], 8); - hexvalue (ctx->ics, regs[57], 1); - hexvalue (ctx->faultnum, regs[58], 2); - - /* Generate the output. */ - for (i = 0; i < 52;) - { - const char *prefixes[] = { - "Register dump:\n\n R0: ", - "\n R8: ", - "\n R16: ", - "\n R24: ", - "\n R32: ", - "\n R40: ", - "\n R48: " - }; - ADD_STRING (prefixes[i / 8]); - do - { - ADD_MEM (regs[i], 8); - ADD_STRING (" "); - } - while (++i % 8 && i < 52); - } - ADD_STRING ("\n R52: "); - ADD_MEM (regs[52], 8); - ADD_STRING (" TP: "); - ADD_MEM (regs[53], 8); - ADD_STRING (" SP: "); - ADD_MEM (regs[54], 8); - ADD_STRING (" LR: "); - ADD_MEM (regs[55], 8); - ADD_STRING ("\n\n PC: "); - ADD_MEM (regs[56], 8); - ADD_STRING (" ICS: "); - ADD_MEM (regs[57], 1); - ADD_STRING (" FAULTNUM: "); - ADD_MEM (regs[58], 2); - ADD_STRING ("\n"); - - /* Write the stuff out. */ - writev (fd, iov, nr); -} - - -#define REGISTER_DUMP register_dump (fd, &ctx->uc_mcontext) diff --git a/ports/sysdeps/unix/sysv/linux/tile/ucontext_i.h b/ports/sysdeps/unix/sysv/linux/tile/ucontext_i.h deleted file mode 100644 index fe329cdbd6..0000000000 --- a/ports/sysdeps/unix/sysv/linux/tile/ucontext_i.h +++ /dev/null @@ -1,42 +0,0 @@ -/* Copyright (C) 2011-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -/* Definitions of offsets within the ucontext_t structure. Note - that for convenience we use __SIZEOF_POINTER__ for "long" and - "ssize_t" fields (and their unsigned counterparts) as well. */ - -#define UC_FLAGS_OFFSET 0 -#define UC_LINK_OFFSET (UC_FLAGS_OFFSET + __SIZEOF_POINTER__) -#define UC_STACK_SP_OFFSET (UC_LINK_OFFSET + __SIZEOF_POINTER__) -#define UC_STACK_FLAGS_OFFSET (UC_STACK_SP_OFFSET + __SIZEOF_POINTER__) -#define UC_STACK_SIZE_OFFSET (UC_STACK_FLAGS_OFFSET + __SIZEOF_POINTER__) -#define UC_STACK_MCONTEXT_OFFSET \ - ((UC_STACK_SIZE_OFFSET + __SIZEOF_POINTER__ + REGSIZE - 1) & -REGSIZE) -#define UC_REG(i) (UC_STACK_MCONTEXT_OFFSET + ((i) * REGSIZE)) -#define UC_NREGS 64 -#define UC_SIGMASK_OFFSET UC_REG(UC_NREGS) -#define UC_SIZE (UC_SIGMASK_OFFSET + (_NSIG / 8)) - -/* From */ -#define SI_MAX_SIZE 128 - -/* From */ -#define _NSIG 64 -#define SIG_BLOCK 0 /* for blocking signals */ -#define SIG_UNBLOCK 1 /* for unblocking signals */ -#define SIG_SETMASK 2 /* for setting the signal mask */ diff --git a/sysdeps/tile/Implies b/sysdeps/tile/Implies new file mode 100644 index 0000000000..5b29b26128 --- /dev/null +++ b/sysdeps/tile/Implies @@ -0,0 +1,2 @@ +ieee754/dbl-64 +ieee754/flt-32 diff --git a/sysdeps/tile/Makefile b/sysdeps/tile/Makefile new file mode 100644 index 0000000000..3cd4d1e752 --- /dev/null +++ b/sysdeps/tile/Makefile @@ -0,0 +1,13 @@ +# We don't support long doubles as a distinct type. We don't need to set +# this variable; it's here mostly for documentational purposes. + +long-double-fcts = no + +ifeq ($(subdir),gmon) +sysdep_routines += _mcount +endif + +ifeq ($(subdir),elf) +# Extra shared linker files to link only into dl-allobjs.so. +sysdep-rtld-routines += dl-start __tls_get_addr +endif diff --git a/sysdeps/tile/Versions b/sysdeps/tile/Versions new file mode 100644 index 0000000000..b275d7ff3b --- /dev/null +++ b/sysdeps/tile/Versions @@ -0,0 +1,6 @@ +libc { + GLIBC_2.12 { + # name requested by gcc community. + __mcount; + } +} diff --git a/sysdeps/tile/__longjmp.S b/sysdeps/tile/__longjmp.S new file mode 100644 index 0000000000..2edcecc777 --- /dev/null +++ b/sysdeps/tile/__longjmp.S @@ -0,0 +1,57 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include + +/* PL to return to via iret in longjmp */ +#define RETURN_PL 0 + + .text +ENTRY (__longjmp) + FEEDBACK_ENTER(__longjmp) + +#define RESTORE(r) { LD r, r0 ; ADDI_PTR r0, r0, REGSIZE } + FOR_EACH_CALLEE_SAVED_REG(RESTORE) + + /* Make longjmp(buf, 0) return "1" instead. + At the same time, construct our iret context; we set ICS so + we can validly load EX_CONTEXT for iret without being + interrupted halfway through. */ + { + LD r2, r0 /* retrieve ICS bit from jmp_buf */ + movei r3, 1 + CMPEQI r0, r1, 0 + } + { + mtspr INTERRUPT_CRITICAL_SECTION, r3 + shli r2, r2, SPR_EX_CONTEXT_0_1__ICS_SHIFT + } + { + mtspr EX_CONTEXT_0_0, lr + ori r2, r2, RETURN_PL + } + { + or r0, r1, r0 + mtspr EX_CONTEXT_0_1, r2 + } + iret + jrp lr /* Keep the backtracer happy. */ +END (__longjmp) diff --git a/sysdeps/tile/__tls_get_addr.S b/sysdeps/tile/__tls_get_addr.S new file mode 100644 index 0000000000..e624fbcd56 --- /dev/null +++ b/sysdeps/tile/__tls_get_addr.S @@ -0,0 +1,152 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include + +#if __WORDSIZE == 64 +#define LOG_SIZEOF_DTV_T 4 +#else +#define LOG_SIZEOF_DTV_T 3 +#endif + +/* On entry, r0 points to two words, the module and the offset. + On return, r0 holds the pointer to the relevant TLS memory. + Only registers r25..r29 are clobbered by the call. */ + + .text +ENTRY (__tls_get_addr) + { + lnk r25 + ADDI_PTR r27, tp, DTV_OFFSET + } +.Llnk: +#ifdef __tilegx__ + { + LD_PTR r27, r27 /* r27 = THREAD_DTV() */ + moveli r26, hw1_last(_rtld_local + TLS_GENERATION_OFFSET - .Llnk) + } + shl16insli r26, r26, hw0(_rtld_local + TLS_GENERATION_OFFSET - .Llnk) + { + ADD_PTR r25, r25, r26 + LD_PTR r26, r0 /* r26 = ti_module */ + } +#else + { + LD_PTR r27, r27 /* r27 = THREAD_DTV() */ + addli r25, r25, lo16(_rtld_local + TLS_GENERATION_OFFSET - .Llnk) + } + { + auli r25, r25, ha16(_rtld_local + TLS_GENERATION_OFFSET - .Llnk) + LD_PTR r26, r0 /* r26 = ti_module */ + } +#endif + LD_PTR r25, r25 /* r25 = DL(dl_tls_generation) */ + { + LD_PTR r28, r27 /* r28 = THREAD_DTV()->counter */ + ADDI_PTR r29, r0, __SIZEOF_POINTER__ + } + { + LD_PTR r29, r29 /* r29 = ti_offset */ + CMPEQ r25, r28, r25 /* r25 nonzero if generation OK */ + shli r28, r26, LOG_SIZEOF_DTV_T /* byte index into dtv array */ + } + { + BEQZ r25, .Lslowpath + CMPEQI r25, r26, -1 /* r25 nonzero if ti_module invalid */ + } + { + BNEZ r25, .Lslowpath + ADD_PTR r28, r28, r27 /* pointer into module array */ + } + LD_PTR r26, r28 /* r26 = module TLS pointer */ + CMPEQI r25, r26, -1 /* check r26 == TLS_DTV_UNALLOCATED */ + BNEZ r25, .Lslowpath + { + ADD_PTR r0, r26, r29 + jrp lr + } + +.Lslowpath: + { + ST sp, lr + ADDLI_PTR r29, sp, - (25 * REGSIZE) + } + cfi_offset (lr, 0) + { + ST r29, sp + ADDLI_PTR sp, sp, - (26 * REGSIZE) + } + cfi_def_cfa_offset (26 * REGSIZE) + ADDI_PTR r29, sp, (2 * REGSIZE) + { ST r29, r1; ADDI_PTR r29, r29, REGSIZE } + { ST r29, r2; ADDI_PTR r29, r29, REGSIZE } + { ST r29, r3; ADDI_PTR r29, r29, REGSIZE } + { ST r29, r4; ADDI_PTR r29, r29, REGSIZE } + { ST r29, r5; ADDI_PTR r29, r29, REGSIZE } + { ST r29, r6; ADDI_PTR r29, r29, REGSIZE } + { ST r29, r7; ADDI_PTR r29, r29, REGSIZE } + { ST r29, r8; ADDI_PTR r29, r29, REGSIZE } + { ST r29, r9; ADDI_PTR r29, r29, REGSIZE } + { ST r29, r10; ADDI_PTR r29, r29, REGSIZE } + { ST r29, r11; ADDI_PTR r29, r29, REGSIZE } + { ST r29, r12; ADDI_PTR r29, r29, REGSIZE } + { ST r29, r13; ADDI_PTR r29, r29, REGSIZE } + { ST r29, r14; ADDI_PTR r29, r29, REGSIZE } + { ST r29, r15; ADDI_PTR r29, r29, REGSIZE } + { ST r29, r16; ADDI_PTR r29, r29, REGSIZE } + { ST r29, r17; ADDI_PTR r29, r29, REGSIZE } + { ST r29, r18; ADDI_PTR r29, r29, REGSIZE } + { ST r29, r19; ADDI_PTR r29, r29, REGSIZE } + { ST r29, r20; ADDI_PTR r29, r29, REGSIZE } + { ST r29, r21; ADDI_PTR r29, r29, REGSIZE } + { ST r29, r22; ADDI_PTR r29, r29, REGSIZE } + { ST r29, r23; ADDI_PTR r29, r29, REGSIZE } + { ST r29, r24; ADDI_PTR r29, r29, REGSIZE } + .hidden __tls_get_addr_slow + jal __tls_get_addr_slow + ADDI_PTR r29, sp, (2 * REGSIZE) + { LD r1, r29; ADDI_PTR r29, r29, REGSIZE } + { LD r2, r29; ADDI_PTR r29, r29, REGSIZE } + { LD r3, r29; ADDI_PTR r29, r29, REGSIZE } + { LD r4, r29; ADDI_PTR r29, r29, REGSIZE } + { LD r5, r29; ADDI_PTR r29, r29, REGSIZE } + { LD r6, r29; ADDI_PTR r29, r29, REGSIZE } + { LD r7, r29; ADDI_PTR r29, r29, REGSIZE } + { LD r8, r29; ADDI_PTR r29, r29, REGSIZE } + { LD r9, r29; ADDI_PTR r29, r29, REGSIZE } + { LD r10, r29; ADDI_PTR r29, r29, REGSIZE } + { LD r11, r29; ADDI_PTR r29, r29, REGSIZE } + { LD r12, r29; ADDI_PTR r29, r29, REGSIZE } + { LD r13, r29; ADDI_PTR r29, r29, REGSIZE } + { LD r14, r29; ADDI_PTR r29, r29, REGSIZE } + { LD r15, r29; ADDI_PTR r29, r29, REGSIZE } + { LD r16, r29; ADDI_PTR r29, r29, REGSIZE } + { LD r17, r29; ADDI_PTR r29, r29, REGSIZE } + { LD r18, r29; ADDI_PTR r29, r29, REGSIZE } + { LD r19, r29; ADDI_PTR r29, r29, REGSIZE } + { LD r20, r29; ADDI_PTR r29, r29, REGSIZE } + { LD r21, r29; ADDI_PTR r29, r29, REGSIZE } + { LD r22, r29; ADDI_PTR r29, r29, REGSIZE } + { LD r23, r29; ADDI_PTR r29, r29, REGSIZE } + { LD r24, r29; ADDLI_PTR sp, sp, (26 * REGSIZE) } + cfi_def_cfa_offset (0) + LD lr, sp + jrp lr +END (__tls_get_addr) diff --git a/sysdeps/tile/_mcount.S b/sysdeps/tile/_mcount.S new file mode 100644 index 0000000000..c3648afec0 --- /dev/null +++ b/sysdeps/tile/_mcount.S @@ -0,0 +1,87 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + Based on work contributed by David Mosberger (davidm@cs.arizona.edu). + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +/* Assembly stub to invoke __mcount_internal(). Compiler-generated + code calls mcount after executing a function's prologue, placing + the "lr" register in "r10" for the call. As a result "lr" is the + function that invoked mcount, and "r10" is mcount's caller's + caller. However, we have to save all the parameter registers here + before invoking _mcount_internal. Callee-save and temporary + registers need no special attention. We save r10 and restore it to + lr on the way out, to properly handle the case of ENTRY() in + assembly code, before lr is saved. We use the name __mcount since + the gcc community prefers using the reserved namespace. */ + +#include + + .text +ENTRY(__mcount) + { + ST sp, lr + ADDI_PTR r29, sp, - (12 * REGSIZE) + } + cfi_offset (lr, 0) + { + ADDI_PTR sp, sp, - (13 * REGSIZE) + ST r29, sp + ADDI_PTR r29, r29, REGSIZE + } + cfi_def_cfa_offset (13 * REGSIZE) + { ST r29, r0; ADDI_PTR r29, r29, REGSIZE } + { ST r29, r1; ADDI_PTR r29, r29, REGSIZE } + { ST r29, r2; ADDI_PTR r29, r29, REGSIZE } + { ST r29, r3; ADDI_PTR r29, r29, REGSIZE } + { ST r29, r4; ADDI_PTR r29, r29, REGSIZE } + { ST r29, r5; ADDI_PTR r29, r29, REGSIZE } + { ST r29, r6; ADDI_PTR r29, r29, REGSIZE } + { ST r29, r7; ADDI_PTR r29, r29, REGSIZE } + { ST r29, r8; ADDI_PTR r29, r29, REGSIZE } + { ST r29, r9; ADDI_PTR r29, r29, REGSIZE } + { ST r29, r10; ADDI_PTR r29, r29, REGSIZE; move r0, r10 } + { + move r1, lr + jal __mcount_internal + } + { + ADDI_PTR r29, sp, (2 * REGSIZE) + } + { LD r0, r29; ADDI_PTR r29, r29, REGSIZE } + { LD r1, r29; ADDI_PTR r29, r29, REGSIZE } + { LD r2, r29; ADDI_PTR r29, r29, REGSIZE } + { LD r3, r29; ADDI_PTR r29, r29, REGSIZE } + { LD r4, r29; ADDI_PTR r29, r29, REGSIZE } + { LD r5, r29; ADDI_PTR r29, r29, REGSIZE } + { LD r6, r29; ADDI_PTR r29, r29, REGSIZE } + { LD r7, r29; ADDI_PTR r29, r29, REGSIZE } + { LD r8, r29; ADDI_PTR r29, r29, REGSIZE } + { LD r9, r29; ADDI_PTR r29, r29, REGSIZE } + { LD r10, r29; ADDI_PTR sp, sp, (13 * REGSIZE) } + cfi_def_cfa_offset (0) + { + LD lr, sp + } + { + move lr, r10 + jrp lr + } +END(__mcount) + +#undef mcount +weak_alias (__mcount, _mcount) /* exported in gmon/Versions */ +weak_alias (__mcount, mcount) /* exported in stdlib/Versions */ diff --git a/sysdeps/tile/abort-instr.h b/sysdeps/tile/abort-instr.h new file mode 100644 index 0000000000..0f57da5198 --- /dev/null +++ b/sysdeps/tile/abort-instr.h @@ -0,0 +1,2 @@ +/* An instruction which should crash any program is `hlt'. */ +#define ABORT_INSTRUCTION asm ("ill") diff --git a/sysdeps/tile/backtrace.c b/sysdeps/tile/backtrace.c new file mode 100644 index 0000000000..27ce597b39 --- /dev/null +++ b/sysdeps/tile/backtrace.c @@ -0,0 +1 @@ +#include diff --git a/sysdeps/tile/bits/atomic.h b/sysdeps/tile/bits/atomic.h new file mode 100644 index 0000000000..2cbb086069 --- /dev/null +++ b/sysdeps/tile/bits/atomic.h @@ -0,0 +1,86 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +/* The sub-architecture headers provide definitions for these macros + that work for "int" and "long" size values only: + + atomic_compare_and_exchange_val_acq() + atomic_exchange_acq() + atomic_exchange_and_add() + atomic_and_val() + atomic_or_val() + atomic_decrement_if_positive() [tilegx only] + + Here we provide generic definitions true for all Tilera chips. */ + +#include +#include + +typedef int32_t atomic32_t; +typedef uint32_t uatomic32_t; +typedef int_fast32_t atomic_fast32_t; +typedef uint_fast32_t uatomic_fast32_t; + +typedef int64_t atomic64_t; +typedef uint64_t uatomic64_t; +typedef int_fast64_t atomic_fast64_t; +typedef uint_fast64_t uatomic_fast64_t; + +typedef intptr_t atomicptr_t; +typedef uintptr_t uatomicptr_t; +typedef intmax_t atomic_max_t; +typedef uintmax_t uatomic_max_t; + +/* Barrier macro. */ +#define atomic_full_barrier() __sync_synchronize() + +/* APIs with "release" semantics. */ +#define atomic_compare_and_exchange_val_rel(mem, n, o) \ + ({ \ + atomic_full_barrier (); \ + atomic_compare_and_exchange_val_acq ((mem), (n), (o)); \ + }) +#define atomic_compare_and_exchange_bool_rel(mem, n, o) \ + ({ \ + atomic_full_barrier (); \ + atomic_compare_and_exchange_bool_acq ((mem), (n), (o)); \ + }) +#define atomic_exchange_rel(mem, n) \ + ({ \ + atomic_full_barrier (); \ + atomic_exchange_acq ((mem), (n)); \ + }) + +/* Various macros that should just be synonyms. */ +#define catomic_exchange_and_add atomic_exchange_and_add +#define atomic_and(mem, mask) ((void) atomic_and_val ((mem), (mask))) +#define catomic_and atomic_and +#define atomic_or(mem, mask) ((void) atomic_or_val ((mem), (mask))) +#define catomic_or atomic_or + +/* atomic_bit_test_set in terms of atomic_or_val. */ +#define atomic_bit_test_set(mem, bit) \ + ({ __typeof (*(mem)) __att0_mask = ((__typeof (*(mem))) 1 << (bit)); \ + atomic_or_val ((mem), __att0_mask) & __att0_mask; }) + +/* + * This non-existent symbol is called for unsupporrted sizes, + * indicating a bug in the caller. + */ +extern int __atomic_error_bad_argument_size(void) + __attribute__ ((warning ("bad sizeof atomic argument"))); diff --git a/sysdeps/tile/bits/byteswap.h b/sysdeps/tile/bits/byteswap.h new file mode 100644 index 0000000000..1e1007708b --- /dev/null +++ b/sysdeps/tile/bits/byteswap.h @@ -0,0 +1,37 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#if !defined _BYTESWAP_H && !defined _NETINET_IN_H && !defined _ENDIAN_H +# error "Never use directly; include instead." +#endif + +#ifndef _BITS_BYTESWAP_H +#define _BITS_BYTESWAP_H 1 + +#include + +/* gcc __builtin_bswap64() can constant-fold, etc, so always use it. */ +#define __bswap_16(x) ((unsigned short)(__builtin_bswap32(x) >> 16)) +#define __bswap_32(x) ((unsigned int)__builtin_bswap32(x)) +#define __bswap_64(x) ((__uint64_t)__builtin_bswap64(x)) + +#define __bswap_constant_16(x) __bswap_16(x) +#define __bswap_constant_32(x) __bswap_32(x) +#define __bswap_constant_64(x) __bswap_64(x) + +#endif /* _BITS_BYTESWAP_H */ diff --git a/sysdeps/tile/bits/endian.h b/sysdeps/tile/bits/endian.h new file mode 100644 index 0000000000..835042a7ac --- /dev/null +++ b/sysdeps/tile/bits/endian.h @@ -0,0 +1,11 @@ +/* Set endianness for tile. */ + +#ifndef _ENDIAN_H +# error "Never use directly; include instead." +#endif + +#if defined __BIG_ENDIAN__ +# define __BYTE_ORDER __BIG_ENDIAN +#else +# define __BYTE_ORDER __LITTLE_ENDIAN +#endif diff --git a/sysdeps/tile/bits/fenv.h b/sysdeps/tile/bits/fenv.h new file mode 100644 index 0000000000..b5092c5039 --- /dev/null +++ b/sysdeps/tile/bits/fenv.h @@ -0,0 +1,45 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _FENV_H +# error "Never use directly; include instead." +#endif + +/* The TILE-Gx hardware does not provide floating-point exception + handling, and TILEPro does not support any floating-point operations. */ +#define FE_ALL_EXCEPT 0 + +/* TILE-Gx supports only round-to-nearest. The software + floating-point support also acts this way. */ +enum + { + __FE_UNDEFINED = 0, + + FE_TONEAREST = +#define FE_TONEAREST 1 + FE_TONEAREST, + }; + +/* Type representing exception flags (if there were any). */ +typedef unsigned int fexcept_t; + +/* Type representing floating-point environment. */ +typedef unsigned int fenv_t; + +/* If the default argument is used we use this value. */ +#define FE_DFL_ENV ((const fenv_t *) -1l) diff --git a/sysdeps/tile/bits/link.h b/sysdeps/tile/bits/link.h new file mode 100644 index 0000000000..abc3496030 --- /dev/null +++ b/sysdeps/tile/bits/link.h @@ -0,0 +1,57 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _LINK_H +# error "Never include directly; use instead." +#endif + +#define __need_int_reg_t +#include + + +/* Registers for entry into PLT. */ +typedef struct La_tile_regs +{ + __uint_reg_t lr_reg[10]; +} La_tile_regs; + +/* Return values for calls from PLT. */ +typedef struct La_tile_retval +{ + /* Up to ten registers can be used for a return value (e.g. small struct). */ + __uint_reg_t lrv_reg[10]; +} La_tile_retval; + + +__BEGIN_DECLS + +extern ElfW(Addr) la_tile_gnu_pltenter (ElfW(Sym) *__sym, unsigned int __ndx, + uintptr_t *__refcook, + uintptr_t *__defcook, + La_tile_regs *__regs, + unsigned int *__flags, + const char *__symname, + long int *__framesizep); +extern unsigned int la_tile_gnu_pltexit (ElfW(Sym) *__sym, unsigned int __ndx, + uintptr_t *__refcook, + uintptr_t *__defcook, + const La_tile_regs *__inregs, + La_tile_retval *__outregs, + const char *__symname); + +__END_DECLS diff --git a/sysdeps/tile/bits/mathdef.h b/sysdeps/tile/bits/mathdef.h new file mode 100644 index 0000000000..d043b4af5f --- /dev/null +++ b/sysdeps/tile/bits/mathdef.h @@ -0,0 +1,48 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#if !defined _MATH_H && !defined _COMPLEX_H +# error "Never use directly; include instead" +#endif + +#if defined __USE_ISOC99 && defined _MATH_H && !defined _MATH_H_MATHDEF +# define _MATH_H_MATHDEF 1 + +/* "float" and "double" expressions evaluated as "float" and "double". */ +typedef float float_t; +typedef double double_t; + +/* The values returned by `ilogb' for 0 and NaN respectively. */ +# define FP_ILOGB0 (-2147483647) +# define FP_ILOGBNAN (2147483647) + +/* The GCC 4.6 compiler will define __FP_FAST_FMA{,F,L} if the fma{,f,l} + builtins are supported. */ +# if __FP_FAST_FMA +# define FP_FAST_FMA 1 +# endif + +# if __FP_FAST_FMAF +# define FP_FAST_FMAF 1 +# endif + +# if __FP_FAST_FMAL +# define FP_FAST_FMAL 1 +# endif + +#endif /* ISO C99 */ diff --git a/sysdeps/tile/bits/mathinline.h b/sysdeps/tile/bits/mathinline.h new file mode 100644 index 0000000000..f6f9102a98 --- /dev/null +++ b/sysdeps/tile/bits/mathinline.h @@ -0,0 +1,44 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _MATH_H +# error "Never use directly; include instead." +#endif + +#ifndef __extern_always_inline +# define __MATH_INLINE __inline +#else +# define __MATH_INLINE __extern_always_inline +#endif + + +#if defined __USE_ISOC99 && defined __GNUC__ + +/* Test for negative number. Used in the signbit() macro. */ +__MATH_INLINE int +__NTH (__signbitf (float __x)) +{ + return __builtin_signbitf (__x); +} +__MATH_INLINE int +__NTH (__signbit (double __x)) +{ + return __builtin_signbit (__x); +} + +#endif diff --git a/sysdeps/tile/bits/setjmp.h b/sysdeps/tile/bits/setjmp.h new file mode 100644 index 0000000000..a9ba3b986f --- /dev/null +++ b/sysdeps/tile/bits/setjmp.h @@ -0,0 +1,36 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +/* Define the machine-dependent type `jmp_buf'. TILE version. */ +#ifndef _BITS_SETJMP_H +#define _BITS_SETJMP_H 1 + +#if !defined _SETJMP_H && !defined _PTHREAD_H +# error "Never include directly; use instead." +#endif + +#ifndef _ASM + +#define __need_int_reg_t +#include + +typedef __uint_reg_t __jmp_buf[32]; + +#endif + +#endif /* bits/setjmp.h */ diff --git a/sysdeps/tile/bsd-_setjmp.S b/sysdeps/tile/bsd-_setjmp.S new file mode 100644 index 0000000000..4e6a2da560 --- /dev/null +++ b/sysdeps/tile/bsd-_setjmp.S @@ -0,0 +1 @@ +/* _setjmp is in setjmp.S */ diff --git a/sysdeps/tile/bsd-setjmp.S b/sysdeps/tile/bsd-setjmp.S new file mode 100644 index 0000000000..1da848d2f1 --- /dev/null +++ b/sysdeps/tile/bsd-setjmp.S @@ -0,0 +1 @@ +/* setjmp is in setjmp.S */ diff --git a/sysdeps/tile/bzero.S b/sysdeps/tile/bzero.S new file mode 100644 index 0000000000..584c955746 --- /dev/null +++ b/sysdeps/tile/bzero.S @@ -0,0 +1,30 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include + + .text +ENTRY(__bzero) + FEEDBACK_ENTER(__bzero) + { + move r2, r1 + move r1, zero + } + j __memset +END(__bzero) +weak_alias (__bzero, bzero) diff --git a/sysdeps/tile/crti.S b/sysdeps/tile/crti.S new file mode 100644 index 0000000000..55eb238866 --- /dev/null +++ b/sysdeps/tile/crti.S @@ -0,0 +1,124 @@ +/* Special .init and .fini section support for tile. + Copyright (C) 2012-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + In addition to the permissions in the GNU Lesser General Public + License, the Free Software Foundation gives you unlimited + permission to link the compiled version of this file with other + programs, and to distribute those programs without any restriction + coming from the use of this file. (The GNU Lesser General Public + License restrictions do apply in other respects; for example, they + cover modification of the file, and distribution when not linked + into another program.) + + Note that people who make modified versions of this file are not + obligated to grant this special exception for their modified + versions; it is their choice whether to do so. The GNU Lesser + General Public License gives permission to release a modified + version without this exception; this exception also makes it + possible to release a modified version which carries forward this + exception. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +/* crti.S puts a function prologue at the beginning of the .init and + .fini sections and defines global symbols for those addresses, so + they can be called as functions. The symbols _init and _fini are + magic and cause the linker to emit DT_INIT and DT_FINI. */ + +#include +#include + +#ifndef PREINIT_FUNCTION +# define PREINIT_FUNCTION __gmon_start__ +#endif + +#ifndef PREINIT_FUNCTION_WEAK +# define PREINIT_FUNCTION_WEAK 1 +#endif + +#if PREINIT_FUNCTION_WEAK + weak_extern (PREINIT_FUNCTION) +#else + .hidden PREINIT_FUNCTION +#endif + + .section .init,"ax",@progbits + .align 8 + .globl _init + .type _init, @function +_init: + { + move r29, sp + ADDI_PTR r28, sp, -REGSIZE + ST sp, lr + } + ADDI_PTR sp, sp, -(2 * REGSIZE) + ST r28, r29 +#if PREINIT_FUNCTION_WEAK + lnk r2 +0: +# ifdef __tilegx__ + moveli r1, hw2_last(_GLOBAL_OFFSET_TABLE_ - 0b) + { + shl16insli r1, r1, hw1(_GLOBAL_OFFSET_TABLE_ - 0b) + moveli r0, hw1_last_got(PREINIT_FUNCTION) + } + { + shl16insli r1, r1, hw0(_GLOBAL_OFFSET_TABLE_ - 0b) + shl16insli r0, r0, hw0_got(PREINIT_FUNCTION) + } +# else + { + moveli r1, lo16(_GLOBAL_OFFSET_TABLE_ - 0b) + moveli r0, got_lo16(PREINIT_FUNCTION) + } + { + auli r1, r1, ha16(_GLOBAL_OFFSET_TABLE_ - 0b) + auli r0, r0, got_ha16(PREINIT_FUNCTION) + } +# endif + ADD_PTR r0, r0, r1 + ADD_PTR r0, r0, r2 + LD_PTR r0, r0 + BEQZ r0, .Lno_weak_fn + jalr r0 +#elif defined(__tilegx__) && !defined(NO_PLT_PCREL) + /* Since we are calling from the start of the object to the PLT, + call by loading the full address into a register. */ + lnk r2 +0: + moveli r0, hw2_last_plt(PREINIT_FUNCTION - 0b) + shl16insli r0, r0, hw1_plt(PREINIT_FUNCTION - 0b) + shl16insli r0, r0, hw0_plt(PREINIT_FUNCTION - 0b) + add r0, r0, r2 + jalr r0 +#else + jal plt(PREINIT_FUNCTION) +#endif +.Lno_weak_fn: + + .section .fini,"ax",@progbits + .align 8 + .globl _fini + .type _fini, @function +_fini: + { + move r29, sp + ADDI_PTR r28, sp, -REGSIZE + ST sp, lr + } + ADDI_PTR sp, sp, -(2 * REGSIZE) + ST r28, r29 diff --git a/sysdeps/tile/crtn.S b/sysdeps/tile/crtn.S new file mode 100644 index 0000000000..184ef8a665 --- /dev/null +++ b/sysdeps/tile/crtn.S @@ -0,0 +1,55 @@ +/* Special .init and .fini section support for tile. + Copyright (C) 2012-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + In addition to the permissions in the GNU Lesser General Public + License, the Free Software Foundation gives you unlimited + permission to link the compiled version of this file with other + programs, and to distribute those programs without any restriction + coming from the use of this file. (The GNU Lesser General Public + License restrictions do apply in other respects; for example, they + cover modification of the file, and distribution when not linked + into another program.) + + Note that people who make modified versions of this file are not + obligated to grant this special exception for their modified + versions; it is their choice whether to do so. The GNU Lesser + General Public License gives permission to release a modified + version without this exception; this exception also makes it + possible to release a modified version which carries forward this + exception. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +/* crtn.S puts function epilogues in the .init and .fini sections + corresponding to the prologues in crti.S. */ + +#include + + .section .init,"ax",@progbits + ADDI_PTR r29, sp, (2 * REGSIZE) + { + ADDI_PTR sp, sp, (2 * REGSIZE) + LD lr, r29 + } + jrp lr + + .section .fini,"ax",@progbits + ADDI_PTR r29, sp, (2 * REGSIZE) + { + ADDI_PTR sp, sp, (2 * REGSIZE) + LD lr, r29 + } + jrp lr diff --git a/sysdeps/tile/dl-lookupcfg.h b/sysdeps/tile/dl-lookupcfg.h new file mode 100644 index 0000000000..16c7cd849b --- /dev/null +++ b/sysdeps/tile/dl-lookupcfg.h @@ -0,0 +1,27 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#define DL_UNMAP_IS_SPECIAL + +#include_next + +struct link_map; + +void internal_function _dl_unmap (struct link_map *map); + +#define DL_UNMAP(map) _dl_unmap (map) diff --git a/sysdeps/tile/dl-machine.h b/sysdeps/tile/dl-machine.h new file mode 100644 index 0000000000..d686a655ff --- /dev/null +++ b/sysdeps/tile/dl-machine.h @@ -0,0 +1,913 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + Based on work contributed by by Carl Pederson & Martin Schwidefsky. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef dl_machine_h +#define dl_machine_h + +#ifdef __tilegx__ +#define ELF_MACHINE_NAME "tilegx" +#else +#define ELF_MACHINE_NAME "tilepro" +#endif + +#include +#include +#include +#include +#include +#include + +/* Return nonzero iff ELF header is compatible with the running host. */ +static inline int +elf_machine_matches_host (const ElfW(Ehdr) *ehdr) +{ +#if defined __tilegx__ + if (ehdr->e_machine != EM_TILEGX) + return 0; +# if __WORDSIZE == 32 + return (ehdr->e_ident[EI_CLASS] == ELFCLASS32); +# else + return (ehdr->e_ident[EI_CLASS] == ELFCLASS64); +# endif +#elif defined __tilepro__ + return ehdr->e_machine == EM_TILEPRO; +#else +# error "Unknown tile architecture." +#endif +} + + +/* Return the link-time address of _DYNAMIC. Conveniently, this is the + first element of the GOT. This must be inlined in a function which + uses global data. */ + +static inline ElfW(Addr) +elf_machine_dynamic (void) +{ + ElfW(Addr) *got; + +#ifdef __tilegx__ + ElfW(Addr) tmp; + asm( " { lnk %0; moveli %1, hw2_last(_GLOBAL_OFFSET_TABLE_ - 1f) }\n" + "1: shl16insli %1, %1, hw1(_GLOBAL_OFFSET_TABLE_ - 1b)\n" + " shl16insli %1, %1, hw0(_GLOBAL_OFFSET_TABLE_ - 1b)\n" + " add %0, %0, %1" + : "=r" (got), "=r" (tmp)); +#else + asm( " lnk %0\n" + "1: addli %0, %0, lo16(_GLOBAL_OFFSET_TABLE_ - 1b)\n" + " auli %0, %0, ha16(_GLOBAL_OFFSET_TABLE_ - 1b)" + : "=r" (got)); +#endif + + return *got; +} + + +/* Return the run-time load address of the shared object. */ +static inline ElfW(Addr) +elf_machine_load_address (void) +{ + ElfW(Addr) *got; + ElfW(Addr) dynamic; + +#ifdef __tilegx__ + ElfW(Addr) tmp; + asm( " lnk %2\n" + "1: {\n" + " moveli %0, hw2_last(_GLOBAL_OFFSET_TABLE_ - 1b)\n" + " moveli %1, hw2_last(_DYNAMIC - 1b)\n" + " }\n" + " {\n" + " shl16insli %0, %0, hw1(_GLOBAL_OFFSET_TABLE_ - 1b)\n" + " shl16insli %1, %1, hw1(_DYNAMIC - 1b)\n" + " }\n" + " {\n" + " shl16insli %0, %0, hw0(_GLOBAL_OFFSET_TABLE_ - 1b)\n" + " shl16insli %1, %1, hw0(_DYNAMIC - 1b)\n" + " }\n" + " {\n" + " add %0, %0, %2\n" + " add %1, %1, %2\n" + " }" + : "=r" (got), "=r" (dynamic), "=r" (tmp)); +#else + asm( " lnk %0\n" + "1: {\n" + " addli %0, %0, lo16(_GLOBAL_OFFSET_TABLE_ - 1b)\n" + " addli %1, %0, lo16(_DYNAMIC - 1b)\n" + " }\n" + " {\n" + " auli %0, %0, ha16(_GLOBAL_OFFSET_TABLE_ - 1b)\n" + " auli %1, %1, ha16(_DYNAMIC - 1b)\n" + " }\n" + : "=r" (got), "=r" (dynamic)); +#endif + + return dynamic - *got; +} + +/* Flush some range of the instruction cache. If invoked prior to + actually setting dl_pagesize, we conservatively use 4KB, which + is the smallest page size we could plausibly be running with. */ +static inline void +_dl_flush_icache (const void *addr, unsigned long size) +{ + invalidate_icache (addr, size, GLRO(dl_pagesize) ? : 4096); +} + +/* Set up the loaded object described by L so its unrelocated PLT + entries will jump to the on-demand fixup code in dl-runtime.c. */ + +static inline int __attribute__ ((unused)) +elf_machine_runtime_setup (struct link_map *l, int lazy, int profile) +{ + ElfW(Addr) *gotplt; + extern void _dl_runtime_resolve (ElfW(Word)); + extern void _dl_runtime_profile (ElfW(Word)); + + if (l->l_info[DT_JMPREL] && lazy) + { + gotplt = (ElfW(Addr) *) D_PTR (l, l_info[DT_PLTGOT]); + + /* The GOT entries for functions in the PLT have not yet been filled + in. Their initial contents will arrange when called to put in + registers an offset into the .rel.plt section, and gotplt[0], then + jump to gotplt[1]. */ + + /* Identify this shared object. */ + gotplt[0] = (ElfW(Addr)) l; + + /* The gotplt[1] entry contains the address of a function which gets + called to get the address of a so far unresolved function and jump + to it. The profiling extension of the dynamic linker allows to + intercept the calls to collect information. In this case we don't + store the address in the GOTPLT so that all future calls also end + in this function. */ + if (__builtin_expect (profile, 0)) + { + gotplt[1] = (ElfW(Addr)) &_dl_runtime_profile; + + if (GLRO(dl_profile) != NULL + && _dl_name_match_p (GLRO(dl_profile), l)) + /* This is the object we are looking for. Say that we really + want profiling and the timers are started. */ + GL(dl_profile_map) = l; + } + else + /* This function will get called to fix up the GOTPLT entry + indicated by the offset on the stack, and then jump to the + resolved address. */ + gotplt[1] = (ElfW(Addr)) &_dl_runtime_resolve; + } + + return lazy; +} + +#if __WORDSIZE == 32 +/* Mask identifying addresses reserved for the user program, + where the dynamic linker should not map anything. */ +#define ELF_MACHINE_USER_ADDRESS_MASK 0xf8000000UL +#endif + +/* Initial entry point code for the dynamic linker. + The C function `_dl_start' is the real entry point; + its return value is the user program's entry point. */ + +#define RTLD_START asm (".globl _dl_start"); + +#ifndef RTLD_START_SPECIAL_INIT +#define RTLD_START_SPECIAL_INIT /* nothing */ +#endif + +/* Wrap a generic Tilera relocation type. */ +#ifdef __tilegx__ +#define R_TILE(x) R_TILEGX_##x +#define __R_TILE_TLS(x,c) R_TILEGX_TLS_##x##c +#define _R_TILE_TLS(x,c) __R_TILE_TLS(x,c) +#define R_TILE_TLS(x) _R_TILE_TLS(x,__ELF_NATIVE_CLASS) +#else +#define R_TILE(x) R_TILEPRO_##x +#define R_TILE_TLS(x) R_TILEPRO_TLS_##x##32 +#endif + +/* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry or + TLS variable, so undefined references should not be allowed to + define the value. + ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve to one + of the main executable's symbols, as for a COPY reloc. */ +#define elf_machine_type_class(type) \ + ((((type) == R_TILE(JMP_SLOT) || (type) == R_TILE_TLS(DTPMOD) \ + || (type) == R_TILE_TLS(DTPOFF) || (type) == R_TILE_TLS(TPOFF)) \ + * ELF_RTYPE_CLASS_PLT) \ + | (((type) == R_TILE(COPY)) * ELF_RTYPE_CLASS_COPY)) + +/* A reloc type used for ld.so cmdline arg lookups to reject PLT entries. */ +#define ELF_MACHINE_JMP_SLOT R_TILE(JMP_SLOT) + +/* TILE never uses Elf32_Rel relocations. */ +#define ELF_MACHINE_NO_REL 1 + +/* We define an initialization functions. This is called very early in + _dl_sysdep_start. */ +#define DL_PLATFORM_INIT dl_platform_init () + +static inline void __attribute__ ((unused)) +dl_platform_init (void) +{ + if (GLRO(dl_platform) != NULL && *GLRO(dl_platform) == '\0') + /* Avoid an empty string which would disturb us. */ + GLRO(dl_platform) = NULL; +} + +static inline ElfW(Addr) +elf_machine_fixup_plt (struct link_map *map, lookup_t t, + const ElfW(Rela) *reloc, + ElfW(Addr) *reloc_addr, ElfW(Addr) value) +{ + return *reloc_addr = value; +} + +/* Return the final value of a plt relocation. */ +static inline ElfW(Addr) +elf_machine_plt_value (struct link_map *map, const ElfW(Rela) *reloc, + ElfW(Addr) value) +{ + return value; +} + +/* Support notifying the simulator about new objects. */ +void internal_function _dl_after_load (struct link_map *l); +#define DL_AFTER_LOAD _dl_after_load + +/* Names of the architecture-specific auditing callback functions. */ +#define ARCH_LA_PLTENTER tile_gnu_pltenter +#define ARCH_LA_PLTEXIT tile_gnu_pltexit + +#endif /* !dl_machine_h */ + + +#ifdef RESOLVE_MAP + +struct reloc_howto +{ + /* Right shift operand by this number of bits. */ + unsigned char right_shift; + +#ifdef __tilegx__ + /* If nonzero, this is updating a code bundle. */ + unsigned char is_bundle_update; +#else + /* If nonzero, add 0x8000 to the value. */ + unsigned char add_0x8000; +#endif + + /* If nonzero, subtract the containing address from the address. */ + unsigned char is_pcrel; + + /* Size in bytes, or 0 if this table entry should be ignored. */ + unsigned char byte_size; +}; + +/* Relocation information. Cannot contain create_* function pointers + because then the table would not be position-independent. */ +static const struct reloc_howto howto[] = +{ +#ifdef __tilegx__ + +# if __WORDSIZE == 32 + /* The GX -m32 loader only handles 32-bit types, so it will be confused + by shifts larger than that. We convert them to just sign-extend; + they usually indicate a program bug or missed optimization, but we + have to handle them correctly anyway. */ +# define S32 31 +# define S48 31 +# else +# define S32 32 +# define S48 48 +# endif + + /* R_TILEGX_NONE */ { 0, 0, 0, 0 }, + /* R_TILEGX_64 */ { 0, 0, 0, 8 }, + /* R_TILEGX_32 */ { 0, 0, 0, 4 }, + /* R_TILEGX_16 */ { 0, 0, 0, 2 }, + /* R_TILEGX_8 */ { 0, 0, 0, 1 }, + /* R_TILEGX_64_PCREL */ { 0, 0, 1, 8 }, + /* R_TILEGX_32_PCREL */ { 0, 0, 1, 4 }, + /* R_TILEGX_16_PCREL */ { 0, 0, 1, 2 }, + /* R_TILEGX_8_PCREL */ { 0, 0, 1, 1 }, + /* R_TILEGX_HW0 */ { 0, 0, 0, 0 }, + /* R_TILEGX_HW1 */ { 16, 0, 0, 0 }, + /* R_TILEGX_HW2 */ { S32, 0, 0, 0 }, + /* R_TILEGX_HW3 */ { S48, 0, 0, 0 }, + /* R_TILEGX_HW0_LAST */ { 0, 0, 0, 0 }, + /* R_TILEGX_HW1_LAST */ { 16, 0, 0, 0 }, + /* R_TILEGX_HW2_LAST */ { S32, 0, 0, 0 }, + /* R_TILEGX_COPY */ { 0, 0, 0, 0 }, + /* R_TILEGX_GLOB_DAT */ { 0, 0, 0, 8 }, + /* R_TILEGX_JMP_SLOT */ { 0, 0, 0, 0 }, + /* R_TILEGX_RELATIVE */ { 0, 0, 0, 0 }, + /* R_TILEGX_BROFF_X1 */ { 3, 1, 1, 8 }, + /* R_TILEGX_JUMPOFF_X1 */ { 3, 1, 1, 8 }, + /* R_TILEGX_JUMPOFF_X1_PLT */ { 3, 1, 1, 8 }, + /* R_TILEGX_IMM8_X0 */ { 0, 1, 0, 8 }, + /* R_TILEGX_IMM8_Y0 */ { 0, 1, 0, 8 }, + /* R_TILEGX_IMM8_X1 */ { 0, 1, 0, 8 }, + /* R_TILEGX_IMM8_Y1 */ { 0, 1, 0, 8 }, + /* R_TILEGX_DEST_IMM8_X1 */ { 0, 1, 0, 8 }, + /* R_TILEGX_MT_IMM14_X1 */ { 0, 1, 0, 8 }, + /* R_TILEGX_MF_IMM14_X1 */ { 0, 1, 0, 8 }, + /* R_TILEGX_MMSTART_X0 */ { 0, 1, 0, 8 }, + /* R_TILEGX_MMEND_X0 */ { 0, 1, 0, 8 }, + /* R_TILEGX_SHAMT_X0 */ { 0, 1, 0, 8 }, + /* R_TILEGX_SHAMT_X1 */ { 0, 1, 0, 8 }, + /* R_TILEGX_SHAMT_Y0 */ { 0, 1, 0, 8 }, + /* R_TILEGX_SHAMT_Y1 */ { 0, 1, 0, 8 }, + /* R_TILEGX_IMM16_X0_HW0 */ { 0, 1, 0, 8 }, + /* R_TILEGX_IMM16_X1_HW0 */ { 0, 1, 0, 8 }, + /* R_TILEGX_IMM16_X0_HW1 */ { 16, 1, 0, 8 }, + /* R_TILEGX_IMM16_X1_HW1 */ { 16, 1, 0, 8 }, + /* R_TILEGX_IMM16_X0_HW2 */ { S32, 1, 0, 8 }, + /* R_TILEGX_IMM16_X1_HW2 */ { S32, 1, 0, 8 }, + /* R_TILEGX_IMM16_X0_HW3 */ { S48, 1, 0, 8 }, + /* R_TILEGX_IMM16_X1_HW3 */ { S48, 1, 0, 8 }, + /* R_TILEGX_IMM16_X0_HW0_LAST */ { 0, 1, 0, 8 }, + /* R_TILEGX_IMM16_X1_HW0_LAST */ { 0, 1, 0, 8 }, + /* R_TILEGX_IMM16_X0_HW1_LAST */ { 16, 1, 0, 8 }, + /* R_TILEGX_IMM16_X1_HW1_LAST */ { 16, 1, 0, 8 }, + /* R_TILEGX_IMM16_X0_HW2_LAST */ { S32, 1, 0, 8 }, + /* R_TILEGX_IMM16_X1_HW2_LAST */ { S32, 1, 0, 8 }, + /* R_TILEGX_IMM16_X0_HW0_PCREL */ { 0, 1, 1, 8 }, + /* R_TILEGX_IMM16_X1_HW0_PCREL */ { 0, 1, 1, 8 }, + /* R_TILEGX_IMM16_X0_HW1_PCREL */ { 16, 1, 1, 8 }, + /* R_TILEGX_IMM16_X1_HW1_PCREL */ { 16, 1, 1, 8 }, + /* R_TILEGX_IMM16_X0_HW2_PCREL */ { S32, 1, 1, 8 }, + /* R_TILEGX_IMM16_X1_HW2_PCREL */ { S32, 1, 1, 8 }, + /* R_TILEGX_IMM16_X0_HW3_PCREL */ { S48, 1, 1, 8 }, + /* R_TILEGX_IMM16_X1_HW3_PCREL */ { S48, 1, 1, 8 }, + /* R_TILEGX_IMM16_X0_HW0_LAST_PCREL */ { 0, 1, 1, 8 }, + /* R_TILEGX_IMM16_X1_HW0_LAST_PCREL */ { 0, 1, 1, 8 }, + /* R_TILEGX_IMM16_X0_HW1_LAST_PCREL */ { 16, 1, 1, 8 }, + /* R_TILEGX_IMM16_X1_HW1_LAST_PCREL */ { 16, 1, 1, 8 }, + /* R_TILEGX_IMM16_X0_HW2_LAST_PCREL */ { S32, 1, 1, 8 }, + /* R_TILEGX_IMM16_X1_HW2_LAST_PCREL */ { S32, 1, 1, 8 }, + /* R_TILEGX_IMM16_X0_HW0_GOT */ { 0, 1, 0, 0 }, + /* R_TILEGX_IMM16_X1_HW0_GOT */ { 0, 1, 0, 0 }, + /* R_TILEGX_IMM16_X0_HW1_GOT */ { 16, 1, 0, 0 }, + /* R_TILEGX_IMM16_X1_HW1_GOT */ { 16, 1, 0, 0 }, + /* R_TILEGX_IMM16_X0_HW2_GOT */ { S32, 1, 0, 0 }, + /* R_TILEGX_IMM16_X1_HW2_GOT */ { S32, 1, 0, 0 }, + /* R_TILEGX_IMM16_X0_HW3_GOT */ { S48, 1, 0, 0 }, + /* R_TILEGX_IMM16_X1_HW3_GOT */ { S48, 1, 0, 0 }, + /* R_TILEGX_IMM16_X0_HW0_LAST_GOT */ { 0, 1, 0, 0 }, + /* R_TILEGX_IMM16_X1_HW0_LAST_GOT */ { 0, 1, 0, 0 }, + /* R_TILEGX_IMM16_X0_HW1_LAST_GOT */ { 16, 1, 0, 0 }, + /* R_TILEGX_IMM16_X1_HW1_LAST_GOT */ { 16, 1, 0, 0 }, + /* R_TILEGX_IMM16_X0_HW2_LAST_GOT */ { S32, 1, 0, 0 }, + /* R_TILEGX_IMM16_X1_HW2_LAST_GOT */ { S32, 1, 0, 0 }, + /* R_TILEGX_IMM16_X0_HW0_TLS_GD */ { 0, 1, 0, 8 }, + /* R_TILEGX_IMM16_X1_HW0_TLS_GD */ { 0, 1, 0, 8 }, + /* R_TILEGX_IMM16_X0_HW1_TLS_GD */ { 16, 1, 0, 8 }, + /* R_TILEGX_IMM16_X1_HW1_TLS_GD */ { 16, 1, 0, 8 }, + /* R_TILEGX_IMM16_X0_HW2_TLS_GD */ { S32, 1, 0, 8 }, + /* R_TILEGX_IMM16_X1_HW2_TLS_GD */ { S32, 1, 0, 8 }, + /* R_TILEGX_IMM16_X0_HW3_TLS_GD */ { S48, 1, 0, 8 }, + /* R_TILEGX_IMM16_X1_HW3_TLS_GD */ { S48, 1, 0, 8 }, + /* R_TILEGX_IMM16_X0_HW0_LAST_TLS_GD */{ 0, 1, 0, 8 }, + /* R_TILEGX_IMM16_X1_HW0_LAST_TLS_GD */{ 0, 1, 0, 8 }, + /* R_TILEGX_IMM16_X0_HW1_LAST_TLS_GD */{ 16, 1, 0, 8 }, + /* R_TILEGX_IMM16_X1_HW1_LAST_TLS_GD */{ 16, 1, 0, 8 }, + /* R_TILEGX_IMM16_X0_HW2_LAST_TLS_GD */{ S32, 1, 0, 8 }, + /* R_TILEGX_IMM16_X1_HW2_LAST_TLS_GD */{ S32, 1, 0, 8 }, + /* R_TILEGX_IMM16_X0_HW0_TLS_IE */ { 0, 1, 0, 8 }, + /* R_TILEGX_IMM16_X1_HW0_TLS_IE */ { 0, 1, 0, 8 }, + /* R_TILEGX_IMM16_X0_HW1_TLS_IE */ { 16, 1, 0, 8 }, + /* R_TILEGX_IMM16_X1_HW1_TLS_IE */ { 16, 1, 0, 8 }, + /* R_TILEGX_IMM16_X0_HW2_TLS_IE */ { S32, 1, 0, 8 }, + /* R_TILEGX_IMM16_X1_HW2_TLS_IE */ { S32, 1, 0, 8 }, + /* R_TILEGX_IMM16_X0_HW3_TLS_IE */ { S48, 1, 0, 8 }, + /* R_TILEGX_IMM16_X1_HW3_TLS_IE */ { S48, 1, 0, 8 }, + /* R_TILEGX_IMM16_X0_HW0_LAST_TLS_IE */{ 0, 1, 0, 8 }, + /* R_TILEGX_IMM16_X1_HW0_LAST_TLS_IE */{ 0, 1, 0, 8 }, + /* R_TILEGX_IMM16_X0_HW1_LAST_TLS_IE */{ 16, 1, 0, 8 }, + /* R_TILEGX_IMM16_X1_HW1_LAST_TLS_IE */{ 16, 1, 0, 8 }, + /* R_TILEGX_IMM16_X0_HW2_LAST_TLS_IE */{ S32, 1, 0, 8 }, + /* R_TILEGX_IMM16_X1_HW2_LAST_TLS_IE */{ S32, 1, 0, 8 }, + /* R_TILEGX_TLS_DTPMOD64 */ { 0, 0, 0, 0 }, + /* R_TILEGX_TLS_DTPOFF64 */ { 0, 0, 0, 0 }, + /* R_TILEGX_TLS_TPOFF64 */ { 0, 0, 0, 0 }, + /* R_TILEGX_TLS_DTPMOD32 */ { 0, 0, 0, 0 }, + /* R_TILEGX_TLS_DTPOFF32 */ { 0, 0, 0, 0 }, + /* R_TILEGX_TLS_TPOFF32 */ { 0, 0, 0, 0 } +#else + /* R_TILEPRO_NONE */ { 0, 0, 0, 0 }, + /* R_TILEPRO_32 */ { 0, 0, 0, 4 }, + /* R_TILEPRO_16 */ { 0, 0, 0, 2 }, + /* R_TILEPRO_8 */ { 0, 0, 0, 1 }, + /* R_TILEPRO_32_PCREL */ { 0, 0, 1, 4 }, + /* R_TILEPRO_16_PCREL */ { 0, 0, 1, 2 }, + /* R_TILEPRO_8_PCREL */ { 0, 0, 1, 1 }, + /* R_TILEPRO_LO16 */ { 0, 0, 0, 2 }, + /* R_TILEPRO_HI16 */ { 16, 0, 0, 2 }, + /* R_TILEPRO_HA16 */ { 16, 1, 0, 2 }, + /* R_TILEPRO_COPY */ { 0, 0, 0, 0 }, + /* R_TILEPRO_GLOB_DAT */ { 0, 0, 0, 4 }, + /* R_TILEPRO_JMP_SLOT */ { 0, 0, 0, 0 }, + /* R_TILEPRO_RELATIVE */ { 0, 0, 0, 0 }, + /* R_TILEPRO_BROFF_X1 */ { 3, 0, 1, 8 }, + /* R_TILEPRO_JOFFLONG_X1 */ { 3, 0, 1, 8 }, + /* R_TILEPRO_JOFFLONG_X1_PLT */ { 3, 0, 1, 8 }, + /* R_TILEPRO_IMM8_X0 */ { 0, 0, 0, 8 }, + /* R_TILEPRO_IMM8_Y0 */ { 0, 0, 0, 8 }, + /* R_TILEPRO_IMM8_X1 */ { 0, 0, 0, 8 }, + /* R_TILEPRO_IMM8_Y1 */ { 0, 0, 0, 8 }, + /* R_TILEPRO_MT_IMM15_X1 */ { 0, 0, 0, 8 }, + /* R_TILEPRO_MF_IMM15_X1 */ { 0, 0, 0, 8 }, + /* R_TILEPRO_IMM16_X0 */ { 0, 0, 0, 8 }, + /* R_TILEPRO_IMM16_X1 */ { 0, 0, 0, 8 }, + /* R_TILEPRO_IMM16_X0_LO */ { 0, 0, 0, 8 }, + /* R_TILEPRO_IMM16_X1_LO */ { 0, 0, 0, 8 }, + /* R_TILEPRO_IMM16_X0_HI */ { 16, 0, 0, 8 }, + /* R_TILEPRO_IMM16_X1_HI */ { 16, 0, 0, 8 }, + /* R_TILEPRO_IMM16_X0_HA */ { 16, 1, 0, 8 }, + /* R_TILEPRO_IMM16_X1_HA */ { 16, 1, 0, 8 }, + /* R_TILEPRO_IMM16_X0_PCREL */ { 0, 0, 1, 8 }, + /* R_TILEPRO_IMM16_X1_PCREL */ { 0, 0, 1, 8 }, + /* R_TILEPRO_IMM16_X0_LO_PCREL */ { 0, 0, 1, 8 }, + /* R_TILEPRO_IMM16_X1_LO_PCREL */ { 0, 0, 1, 8 }, + /* R_TILEPRO_IMM16_X0_HI_PCREL */ { 16, 0, 1, 8 }, + /* R_TILEPRO_IMM16_X1_HI_PCREL */ { 16, 0, 1, 8 }, + /* R_TILEPRO_IMM16_X0_HA_PCREL */ { 16, 1, 1, 8 }, + /* R_TILEPRO_IMM16_X1_HA_PCREL */ { 16, 1, 1, 8 }, + /* R_TILEPRO_IMM16_X0_GOT */ { 0, 0, 0, 0 }, + /* R_TILEPRO_IMM16_X1_GOT */ { 0, 0, 0, 0 }, + /* R_TILEPRO_IMM16_X0_GOT_LO */ { 0, 0, 0, 0 }, + /* R_TILEPRO_IMM16_X1_GOT_LO */ { 0, 0, 0, 0 }, + /* R_TILEPRO_IMM16_X0_GOT_HI */ { 0, 0, 0, 0 }, + /* R_TILEPRO_IMM16_X1_GOT_HI */ { 0, 0, 0, 0 }, + /* R_TILEPRO_IMM16_X0_GOT_HA */ { 0, 0, 0, 0 }, + /* R_TILEPRO_IMM16_X1_GOT_HA */ { 0, 0, 0, 0 }, + /* R_TILEPRO_MMSTART_X0 */ { 0, 0, 0, 8 }, + /* R_TILEPRO_MMEND_X0 */ { 0, 0, 0, 8 }, + /* R_TILEPRO_MMSTART_X1 */ { 0, 0, 0, 8 }, + /* R_TILEPRO_MMEND_X1 */ { 0, 0, 0, 8 }, + /* R_TILEPRO_SHAMT_X0 */ { 0, 0, 0, 8 }, + /* R_TILEPRO_SHAMT_X1 */ { 0, 0, 0, 8 }, + /* R_TILEPRO_SHAMT_Y0 */ { 0, 0, 0, 8 }, + /* R_TILEPRO_SHAMT_Y1 */ { 0, 0, 0, 8 }, + /* R_TILEPRO_SN_BROFF */ { 0, 0, 0, 0 }, + /* R_TILEPRO_SN_IMM8 */ { 0, 0, 0, 0 }, + /* R_TILEPRO_SN_UIMM8 */ { 0, 0, 0, 0 }, + /* R_TILEPRO_SN_BYTE0 */ { 0, 0, 0, 0 }, + /* R_TILEPRO_SN_BYTE1 */ { 0, 0, 0, 0 }, + /* R_TILEPRO_SN_BYTE2 */ { 0, 0, 0, 0 }, + /* R_TILEPRO_SN_BYTE3 */ { 0, 0, 0, 0 }, + /* R_TILEPRO_SN_SPCREL0 */ { 0, 0, 0, 0 }, + /* R_TILEPRO_SN_SPCREL1 */ { 0, 0, 0, 0 }, + /* R_TILEPRO_SN_SPCREL2 */ { 0, 0, 0, 0 }, + /* R_TILEPRO_SN_SPCREL3 */ { 0, 0, 0, 0 }, + /* R_TILEPRO_IMM16_X0_TLS_GD */ { 0, 0, 0, 8 }, + /* R_TILEPRO_IMM16_X1_TLS_GD */ { 0, 0, 0, 8 }, + /* R_TILEPRO_IMM16_X0_TLS_GD_LO */ { 0, 0, 0, 8 }, + /* R_TILEPRO_IMM16_X1_TLS_GD_LO */ { 0, 0, 0, 8 }, + /* R_TILEPRO_IMM16_X0_TLS_GD_HI */ { 16, 0, 0, 8 }, + /* R_TILEPRO_IMM16_X1_TLS_GD_HI */ { 16, 0, 0, 8 }, + /* R_TILEPRO_IMM16_X0_TLS_GD_HA */ { 16, 1, 0, 8 }, + /* R_TILEPRO_IMM16_X1_TLS_GD_HA */ { 16, 1, 0, 8 }, + /* R_TILEPRO_IMM16_X0_TLS_IE */ { 0, 0, 0, 8 }, + /* R_TILEPRO_IMM16_X1_TLS_IE */ { 0, 0, 0, 8 }, + /* R_TILEPRO_IMM16_X0_TLS_IE_LO */ { 0, 0, 0, 8 }, + /* R_TILEPRO_IMM16_X1_TLS_IE_LO */ { 0, 0, 0, 8 }, + /* R_TILEPRO_IMM16_X0_TLS_IE_HI */ { 16, 0, 0, 8 }, + /* R_TILEPRO_IMM16_X1_TLS_IE_HI */ { 16, 0, 0, 8 }, + /* R_TILEPRO_IMM16_X0_TLS_IE_HA */ { 16, 1, 0, 8 }, + /* R_TILEPRO_IMM16_X1_TLS_IE_HA */ { 16, 1, 0, 8 }, + /* R_TILEPRO_TLS_DTPMOD32 */ { 0, 0, 0, 0 }, + /* R_TILEPRO_TLS_DTPOFF32 */ { 0, 0, 0, 0 }, + /* R_TILEPRO_TLS_TPOFF32 */ { 0, 0, 0, 0 }, +#endif +}; + +#if __ELF_NATIVE_CLASS == 32 +#define ELFW_R_TYPE ELF32_R_TYPE +#define ELFW_ST_TYPE ELF32_ST_TYPE +#else +#define ELFW_R_TYPE ELF64_R_TYPE +#define ELFW_ST_TYPE ELF64_ST_TYPE +#endif + +/* Perform the relocation specified by RELOC and SYM (which is fully resolved). + MAP is the object containing the reloc. */ + +auto inline void __attribute__ ((always_inline)) +elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc, + const ElfW(Sym) *sym, const struct r_found_version *version, + void *const reloc_addr_arg, int skip_ifunc) +{ + ElfW(Addr) *const reloc_addr = reloc_addr_arg; + const unsigned int r_type = ELFW_R_TYPE (reloc->r_info); + +#if !defined RTLD_BOOTSTRAP || !defined HAVE_Z_COMBRELOC + if (__builtin_expect (r_type == R_TILE(RELATIVE), 0)) + { +# if !defined RTLD_BOOTSTRAP && !defined HAVE_Z_COMBRELOC + /* This is defined in rtld.c, but nowhere in the static libc.a; + make the reference weak so static programs can still link. + This declaration cannot be done when compiling rtld.c + (i.e. #ifdef RTLD_BOOTSTRAP) because rtld.c contains the + common defn for _dl_rtld_map, which is incompatible with a + weak decl in the same file. */ +# ifndef SHARED + weak_extern (GL(dl_rtld_map)); +# endif + if (map != &GL(dl_rtld_map)) /* Already done in rtld itself. */ +# endif + *reloc_addr = map->l_addr + reloc->r_addend; + return; + } +#endif + + if (__builtin_expect (r_type == R_TILE(NONE), 0)) + return; + +#if !defined RTLD_BOOTSTRAP && !defined RESOLVE_CONFLICT_FIND_MAP + const ElfW(Sym) *const refsym = sym; +#endif + struct link_map *sym_map = RESOLVE_MAP (&sym, version, r_type); + ElfW(Addr) value; + + if (sym == NULL) + value = 0; + else if (ELFW_ST_TYPE (sym->st_info) == STT_SECTION) + value = map->l_addr; /* like a RELATIVE reloc */ + else + value = sym_map->l_addr + sym->st_value; + + if (sym != NULL + && __builtin_expect (ELFW(ST_TYPE) (sym->st_info) == STT_GNU_IFUNC, 0) + && __builtin_expect (sym->st_shndx != SHN_UNDEF, 1) + && __builtin_expect (!skip_ifunc, 1)) + value = ((Elf64_Addr (*) (void)) value) (); + + switch (r_type) + { + case R_TILE(JMP_SLOT): + elf_machine_fixup_plt (map, 0, reloc, reloc_addr, + value + reloc->r_addend); + return; + +#ifndef RESOLVE_CONFLICT_FIND_MAP + case R_TILE_TLS(DTPMOD): +# ifdef RTLD_BOOTSTRAP + /* During startup the dynamic linker is always the module + with index 1. + XXX If this relocation is necessary move before RESOLVE + call. */ + *reloc_addr = 1; +# else + /* Get the information from the link map returned by the + resolv function. */ + if (sym_map != NULL) + *reloc_addr = sym_map->l_tls_modid; +# endif + return; + case R_TILE_TLS(DTPOFF): +# ifndef RTLD_BOOTSTRAP + /* During relocation all TLS symbols are defined and used. + Therefore the offset is already correct. */ + if (sym != NULL) + *reloc_addr = sym->st_value + reloc->r_addend; +# endif + return; + case R_TILE_TLS(TPOFF): +# ifdef RTLD_BOOTSTRAP + *reloc_addr = sym->st_value + reloc->r_addend + map->l_tls_offset; +# else + if (sym != NULL) + { + CHECK_STATIC_TLS (map, sym_map); + *reloc_addr = (sym->st_value + reloc->r_addend + + sym_map->l_tls_offset); + } +#endif + return; +#endif /* use TLS */ + +#if !defined RTLD_BOOTSTRAP && !defined RESOLVE_CONFLICT_FIND_MAP + /* Not needed in dl-conflict.c. */ + case R_TILE(COPY): + if (sym == NULL) + /* This can happen in trace mode if an object could not be found. */ + return; + if (__builtin_expect (sym->st_size > refsym->st_size, 0) + || (__builtin_expect (sym->st_size < refsym->st_size, 0) + && __builtin_expect (GLRO(dl_verbose), 0))) + { + const char *strtab; + + strtab = (const char *) D_PTR (map,l_info[DT_STRTAB]); + _dl_error_printf ("%s: Symbol `%s' has different size in shared" + " object, consider re-linking\n", + RTLD_PROGNAME, strtab + refsym->st_name); + } + memcpy (reloc_addr_arg, (void *) value, + MIN (sym->st_size, refsym->st_size)); + return; +#endif + } + + /* All remaining relocations must be in the lookup table. */ + const struct reloc_howto *h = &howto[r_type]; + if ((unsigned int) r_type >= sizeof howto / sizeof howto[0] || + h->byte_size == 0) + { +#if !defined RTLD_BOOTSTRAP || defined _NDEBUG + /* We add these checks in the version to relocate ld.so only + if we are still debugging. */ + _dl_reloc_bad_type (map, r_type, 0); +#endif + return; + } + + value += reloc->r_addend; + + /* The lookup table entry knows how to perform this reloc. */ + if (h->is_pcrel) + value -= (ElfW(Addr)) reloc_addr; + +#ifndef __tilegx__ + if (h->add_0x8000) + value += 0x8000; +#endif + + value >>= h->right_shift; + + switch (h->byte_size) + { + case 1: + *(char *) reloc_addr = value; + return; + case 2: + *(short *) reloc_addr = value; + return; + case 4: + *(int *) reloc_addr = value; + return; +#ifdef __tilegx__ + case 8: + if (!h->is_bundle_update) + { + *(ElfW(Addr) *) reloc_addr = value; + return; + } +#endif + } + + /* We are updating a bundle, so use the function pointer that + swizzles the operand bits into the right location. */ + + tile_bundle_bits *p = (tile_bundle_bits *) reloc_addr; + tile_bundle_bits bits = *p; + +#define MUNGE(func) do { \ + bits = ((bits & ~create_##func (-1)) | create_##func (value)); \ + if (get_##func (bits) != value) \ + _dl_signal_error (0, map->l_name, NULL, \ + "relocation value too large for " #func); \ + } while (0) + +#define MUNGE_NOCHECK(func) \ + bits = ((bits & ~create_##func (-1)) | create_##func (value)) + + switch (r_type) + { +#ifdef __tilegx__ + case R_TILEGX_BROFF_X1: + MUNGE (BrOff_X1); + break; + case R_TILEGX_JUMPOFF_X1: + case R_TILEGX_JUMPOFF_X1_PLT: + MUNGE (JumpOff_X1); + break; + case R_TILEGX_IMM8_X0: + MUNGE (Imm8_X0); + break; + case R_TILEGX_IMM8_Y0: + MUNGE (Imm8_Y0); + break; + case R_TILEGX_IMM8_X1: + MUNGE (Imm8_X1); + break; + case R_TILEGX_IMM8_Y1: + MUNGE (Imm8_Y1); + break; + case R_TILEGX_MT_IMM14_X1: + MUNGE (MT_Imm14_X1); + break; + case R_TILEGX_MF_IMM14_X1: + MUNGE (MF_Imm14_X1); + break; + case R_TILEGX_IMM16_X0_HW0: + case R_TILEGX_IMM16_X0_HW1: + case R_TILEGX_IMM16_X0_HW2: + case R_TILEGX_IMM16_X0_HW3: + case R_TILEGX_IMM16_X0_HW0_PCREL: + case R_TILEGX_IMM16_X0_HW1_PCREL: + case R_TILEGX_IMM16_X0_HW2_PCREL: + case R_TILEGX_IMM16_X0_HW3_PCREL: + case R_TILEGX_IMM16_X0_HW0_TLS_GD: + case R_TILEGX_IMM16_X0_HW0_TLS_IE: + MUNGE_NOCHECK (Imm16_X0); + break; + case R_TILEGX_IMM16_X0_HW0_LAST: + case R_TILEGX_IMM16_X0_HW1_LAST: + case R_TILEGX_IMM16_X0_HW2_LAST: + case R_TILEGX_IMM16_X0_HW0_LAST_PCREL: + case R_TILEGX_IMM16_X0_HW1_LAST_PCREL: + case R_TILEGX_IMM16_X0_HW2_LAST_PCREL: + case R_TILEGX_IMM16_X0_HW0_LAST_TLS_GD: + case R_TILEGX_IMM16_X0_HW1_LAST_TLS_GD: + case R_TILEGX_IMM16_X0_HW0_LAST_TLS_IE: + case R_TILEGX_IMM16_X0_HW1_LAST_TLS_IE: + MUNGE (Imm16_X0); + break; + case R_TILEGX_IMM16_X1_HW0: + case R_TILEGX_IMM16_X1_HW1: + case R_TILEGX_IMM16_X1_HW2: + case R_TILEGX_IMM16_X1_HW3: + case R_TILEGX_IMM16_X1_HW0_PCREL: + case R_TILEGX_IMM16_X1_HW1_PCREL: + case R_TILEGX_IMM16_X1_HW2_PCREL: + case R_TILEGX_IMM16_X1_HW3_PCREL: + case R_TILEGX_IMM16_X1_HW0_TLS_GD: + case R_TILEGX_IMM16_X1_HW0_TLS_IE: + MUNGE_NOCHECK (Imm16_X1); + break; + case R_TILEGX_IMM16_X1_HW0_LAST: + case R_TILEGX_IMM16_X1_HW1_LAST: + case R_TILEGX_IMM16_X1_HW2_LAST: + case R_TILEGX_IMM16_X1_HW0_LAST_PCREL: + case R_TILEGX_IMM16_X1_HW1_LAST_PCREL: + case R_TILEGX_IMM16_X1_HW2_LAST_PCREL: + case R_TILEGX_IMM16_X1_HW0_LAST_TLS_GD: + case R_TILEGX_IMM16_X1_HW1_LAST_TLS_GD: + case R_TILEGX_IMM16_X1_HW0_LAST_TLS_IE: + case R_TILEGX_IMM16_X1_HW1_LAST_TLS_IE: + MUNGE (Imm16_X1); + break; + case R_TILEGX_MMSTART_X0: + MUNGE (BFStart_X0); + break; + case R_TILEGX_MMEND_X0: + MUNGE (BFEnd_X0); + break; + case R_TILEGX_SHAMT_X0: + MUNGE (ShAmt_X0); + break; + case R_TILEGX_SHAMT_X1: + MUNGE (ShAmt_X1); + break; + case R_TILEGX_SHAMT_Y0: + MUNGE (ShAmt_Y0); + break; + case R_TILEGX_SHAMT_Y1: + MUNGE (ShAmt_Y1); + break; +#else + case R_TILEPRO_BROFF_X1: + MUNGE (BrOff_X1); + break; + case R_TILEPRO_JOFFLONG_X1: + case R_TILEPRO_JOFFLONG_X1_PLT: + MUNGE_NOCHECK (JOffLong_X1); /* holds full 32-bit value */ + break; + case R_TILEPRO_IMM8_X0: + MUNGE (Imm8_X0); + break; + case R_TILEPRO_IMM8_Y0: + MUNGE (Imm8_Y0); + break; + case R_TILEPRO_IMM8_X1: + MUNGE (Imm8_X1); + break; + case R_TILEPRO_IMM8_Y1: + MUNGE (Imm8_Y1); + break; + case R_TILEPRO_MT_IMM15_X1: + MUNGE (MT_Imm15_X1); + break; + case R_TILEPRO_MF_IMM15_X1: + MUNGE (MF_Imm15_X1); + break; + case R_TILEPRO_IMM16_X0_LO: + case R_TILEPRO_IMM16_X0_HI: + case R_TILEPRO_IMM16_X0_HA: + case R_TILEPRO_IMM16_X0_LO_PCREL: + case R_TILEPRO_IMM16_X0_HI_PCREL: + case R_TILEPRO_IMM16_X0_HA_PCREL: + case R_TILEPRO_IMM16_X0_TLS_GD_LO: + case R_TILEPRO_IMM16_X0_TLS_GD_HI: + case R_TILEPRO_IMM16_X0_TLS_GD_HA: + case R_TILEPRO_IMM16_X0_TLS_IE_LO: + case R_TILEPRO_IMM16_X0_TLS_IE_HI: + case R_TILEPRO_IMM16_X0_TLS_IE_HA: + MUNGE_NOCHECK (Imm16_X0); + break; + case R_TILEPRO_IMM16_X0: + case R_TILEPRO_IMM16_X0_PCREL: + case R_TILEPRO_IMM16_X0_TLS_GD: + case R_TILEPRO_IMM16_X0_TLS_IE: + MUNGE (Imm16_X0); + break; + case R_TILEPRO_IMM16_X1_LO: + case R_TILEPRO_IMM16_X1_HI: + case R_TILEPRO_IMM16_X1_HA: + case R_TILEPRO_IMM16_X1_LO_PCREL: + case R_TILEPRO_IMM16_X1_HI_PCREL: + case R_TILEPRO_IMM16_X1_HA_PCREL: + case R_TILEPRO_IMM16_X1_TLS_GD_LO: + case R_TILEPRO_IMM16_X1_TLS_GD_HI: + case R_TILEPRO_IMM16_X1_TLS_GD_HA: + case R_TILEPRO_IMM16_X1_TLS_IE_LO: + case R_TILEPRO_IMM16_X1_TLS_IE_HI: + case R_TILEPRO_IMM16_X1_TLS_IE_HA: + MUNGE_NOCHECK (Imm16_X1); + break; + case R_TILEPRO_IMM16_X1: + case R_TILEPRO_IMM16_X1_PCREL: + case R_TILEPRO_IMM16_X1_TLS_GD: + case R_TILEPRO_IMM16_X1_TLS_IE: + MUNGE (Imm16_X1); + break; + case R_TILEPRO_MMSTART_X0: + MUNGE (MMStart_X0); + break; + case R_TILEPRO_MMEND_X0: + MUNGE (MMEnd_X0); + break; + case R_TILEPRO_MMSTART_X1: + MUNGE (MMStart_X1); + break; + case R_TILEPRO_MMEND_X1: + MUNGE (MMEnd_X1); + break; + case R_TILEPRO_SHAMT_X0: + MUNGE (ShAmt_X0); + break; + case R_TILEPRO_SHAMT_X1: + MUNGE (ShAmt_X1); + break; + case R_TILEPRO_SHAMT_Y0: + MUNGE (ShAmt_Y0); + break; + case R_TILEPRO_SHAMT_Y1: + MUNGE (ShAmt_Y1); + break; +#endif + } +#undef MUNGE + *p = bits; + _dl_flush_icache (p, sizeof (*p)); +} + +auto inline void __attribute__ ((always_inline)) +elf_machine_rela_relative (ElfW(Addr) l_addr, const ElfW(Rela) *reloc, + void *const reloc_addr_arg) +{ + ElfW(Addr) *const reloc_addr = reloc_addr_arg; + *reloc_addr = l_addr + reloc->r_addend; +} + +auto inline void __attribute__ ((always_inline)) +elf_machine_lazy_rel (struct link_map *map, + ElfW(Addr) l_addr, const ElfW(Rela) *reloc, + int skip_ifunc) +{ + const unsigned int r_type = ELF32_R_TYPE (reloc->r_info); + + /* Check for unexpected PLT reloc type. */ + if (__builtin_expect (r_type == R_TILE(JMP_SLOT), 1)) + { + *(ElfW(Addr) *) (l_addr + reloc->r_offset) += l_addr; + } + else + _dl_reloc_bad_type (map, r_type, 1); +} + +#endif /* RESOLVE_MAP */ diff --git a/sysdeps/tile/dl-runtime.c b/sysdeps/tile/dl-runtime.c new file mode 100644 index 0000000000..3bfb830320 --- /dev/null +++ b/sysdeps/tile/dl-runtime.c @@ -0,0 +1,158 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +/* Like x86_64, we pass the index of the relocation and not its offset. + In _dl_profile_fixup and _dl_call_pltexit we also use the index. + Therefore it is wasteful to compute the offset in the trampoline + just to reverse the operation immediately afterwards. */ +#define reloc_offset reloc_arg * sizeof (PLTREL) +#define reloc_index reloc_arg + +#include + +#include +#include + +/* Like realpath(), but simplified: no dynamic memory use, no lstat(), + no set_errno(), no valid "rpath" on error, etc. This handles some + simple cases where the simulator might not have a valid entry for + a loaded Elf object, in particular dlopen() with a relative path. + For this relatively rare case, one could also imagine using + link_map.l_origin to avoid the getcwd() here, but the simpler code + here seems like a better solution. */ +static char * +dl_realpath (const char *name, char *rpath) +{ + char *dest; + const char *start, *end; + + if (name[0] != '/') + { + if (!__getcwd (rpath, PATH_MAX)) + return NULL; + dest = __rawmemchr (rpath, '\0'); + } + else + { + rpath[0] = '/'; + dest = rpath + 1; + } + + for (start = end = name; *start; start = end) + { + /* Skip sequence of multiple path-separators. */ + while (*start == '/') + ++start; + + /* Find end of path component. */ + for (end = start; *end && *end != '/'; ++end) + /* Nothing. */; + + if (end - start == 0) + break; + else if (end - start == 1 && start[0] == '.') + /* nothing */; + else if (end - start == 2 && start[0] == '.' && start[1] == '.') + { + /* Back up to previous component, ignore if at root already. */ + if (dest > rpath + 1) + while ((--dest)[-1] != '/'); + } + else + { + if (dest[-1] != '/') + *dest++ = '/'; + + if (dest + (end - start) >= rpath + PATH_MAX) + return NULL; + + dest = __mempcpy (dest, start, end - start); + *dest = '\0'; + } + } + if (dest > rpath + 1 && dest[-1] == '/') + --dest; + *dest = '\0'; + + return rpath; +} + +/* Support notifying the simulator about new objects. */ +void internal_function +_dl_after_load (struct link_map *l) +{ + int shift; + char pathbuf[PATH_MAX]; + char *path; + + /* Don't bother if not in the simulator. */ + if (__insn_mfspr (SPR_SIM_CONTROL) == 0) + return; + +#define DLPUTC(c) __insn_mtspr (SPR_SIM_CONTROL, \ + (SIM_CONTROL_DLOPEN \ + | ((c) << _SIM_CONTROL_OPERATOR_BITS))) + + /* Write the library address in hex. */ + DLPUTC ('0'); + DLPUTC ('x'); + for (shift = (int) sizeof (unsigned long) * 8 - 4; shift >= 0; shift -= 4) + DLPUTC ("0123456789abcdef"[(l->l_map_start >> shift) & 0xF]); + DLPUTC (':'); + + /* Write the library path, including the terminating '\0'. */ + path = dl_realpath (l->l_name, pathbuf) ?: l->l_name; + for (size_t i = 0;; i++) + { + DLPUTC (path[i]); + if (path[i] == '\0') + break; + } +#undef DLPUTC +} + +/* Support notifying the simulator about removed objects prior to munmap(). */ +static void +sim_dlclose (ElfW(Addr) map_start) +{ + int shift; + + /* Don't bother if not in the simulator. */ + if (__insn_mfspr (SPR_SIM_CONTROL) == 0) + return; + +#define DLPUTC(c) __insn_mtspr (SPR_SIM_CONTROL, \ + (SIM_CONTROL_DLCLOSE \ + | ((c) << _SIM_CONTROL_OPERATOR_BITS))) + + /* Write the library address in hex. */ + DLPUTC ('0'); + DLPUTC ('x'); + for (shift = (int) sizeof (unsigned long) * 8 - 4; shift >= 0; shift -= 4) + DLPUTC ("0123456789abcdef"[(map_start >> shift) & 0xF]); + DLPUTC ('\0'); + +#undef DLPUTC +} + +void internal_function +_dl_unmap (struct link_map *l) +{ + sim_dlclose (l->l_map_start); + __munmap ((void *) l->l_map_start, l->l_map_end - l->l_map_start); +} diff --git a/sysdeps/tile/dl-start.S b/sysdeps/tile/dl-start.S new file mode 100644 index 0000000000..d13f6096dc --- /dev/null +++ b/sysdeps/tile/dl-start.S @@ -0,0 +1,114 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include + + /* Get address of "sym" in "reg" assuming r51 holds ".Llink". */ + .macro pic_addr reg, sym +#ifdef __tilegx__ + moveli \reg, hw1_last(\sym - .Llink) + shl16insli \reg, \reg, hw0(\sym - .Llink) + ADD_PTR \reg, r51, \reg +#else + ADDLI_PTR \reg, r51, lo16(\sym - .Llink) + auli \reg, \reg, ha16(\sym - .Llink) +#endif + .endm + + .text +ENTRY (_start) + /* Linux starts us with sp pointing at the conventional Elf layout, + but we need to allow two 'caller' words for our ABI convention. */ + { + move r52, sp + andi sp, sp, -8 + } + cfi_def_cfa_register (r52) + { + /* Point sp at base of ABI area; point r4 to the caller-sp word. */ + ADDI_PTR sp, sp, -(2 * REGSIZE) + ADDI_PTR r4, sp, -REGSIZE + } + { + /* Save zero for caller sp in our 'caller' save area, and make + sure lr has a zero value, to limit backtraces. */ + move lr, zero + ST r4, zero + } + { + move r0, r52 + jal _dl_start + } + /* Save returned start of user program address for later. */ + move r50, r0 + + /* See if we were invoked explicitly with the dynamic loader, + in which case we have to adjust the argument vector. */ + lnk r51; .Llink: + pic_addr r4, _dl_skip_args + LD4U r4, r4 + BEQZT r4, .Lno_skip + + /* Load the argc word at the initial sp and adjust it. + We basically jump "sp" up over the first few argv entries + and write "argc" a little higher up in memory, to be the + base of the new kernel-initialized stack area. */ + LD_PTR r0, r52 + { + sub r0, r0, r4 + SHL_PTR_ADD r52, r4, r52 + } + { + ST_PTR r52, r0 + SHL_PTR_ADD sp, r4, sp + } + andi sp, sp, -8 + +.Lno_skip: + /* Call_dl_init (_dl_loaded, argc, argv, envp). See elf/start.s + for the layout of memory here; r52 is pointing to "+0". */ + pic_addr r0, _rtld_local + { + LD_PTR r1, r52 /* load argc in r1 */ + ADDLI_PTR r2, r52, __SIZEOF_POINTER__ /* point r2 at argv */ + } + { + LD_PTR r0, r0 /* yields _rtld_global._ns_loaded */ + addi r3, r1, 1 + move lr, zero + } + { + SHL_PTR_ADD r3, r3, r2 /* point r3 at envp */ + jal _dl_init_internal + } + + /* Call user program whose address we saved in r50. + We invoke it just like a static binary, but with _dl_fini + in r0 so we can distinguish. */ + + pic_addr r0, _dl_fini + move lr, zero + { + move sp, r52 + jr r50 + } + + /* Tell backtracer to give up (_start has no caller). */ + info 2 /* INFO_OP_CANNOT_BACKTRACE */ + +END (_start) diff --git a/sysdeps/tile/dl-tls.c b/sysdeps/tile/dl-tls.c new file mode 100644 index 0000000000..c98527def8 --- /dev/null +++ b/sysdeps/tile/dl-tls.c @@ -0,0 +1,27 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifdef SHARED +/* We provide a fast-path version of __tls_get_addr to allow for + the normal case to be fast, both by coding the function tightly, + and more importantly by fixing its register clobber API so the + compiler can avoid having to set up frames, etc., unnecessarily. */ +#define __tls_get_addr __tls_get_addr_slow +#endif + +#include diff --git a/sysdeps/tile/dl-tls.h b/sysdeps/tile/dl-tls.h new file mode 100644 index 0000000000..03b9433ad6 --- /dev/null +++ b/sysdeps/tile/dl-tls.h @@ -0,0 +1,45 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + + +/* Type used for the representation of TLS information in the GOT. */ +typedef struct +{ + unsigned long int ti_module; + unsigned long int ti_offset; +} tls_index; + +/* Fast-path function to get a TLS pointer. */ +extern void *__tls_get_addr (tls_index *ti); + +/* The thread pointer points to the first static TLS block. */ +#define TLS_TP_OFFSET 0 + +/* Dynamic thread vector pointers at the start of each TLS block. */ +#define TLS_DTV_OFFSET 0 + +/* Compute the value for a GOTTPREL reloc. */ +#define TLS_TPREL_VALUE(sym_map, sym) \ + ((sym_map)->l_tls_offset + (sym)->st_value - TLS_TP_OFFSET) + +/* Compute the value for a DTPREL reloc. */ +#define TLS_DTPREL_VALUE(sym) \ + ((sym)->st_value - TLS_DTV_OFFSET) + +/* Value used for dtv entries for which the allocation is delayed. */ +#define TLS_DTV_UNALLOCATED ((void *) -1l) diff --git a/sysdeps/tile/dl-trampoline.S b/sysdeps/tile/dl-trampoline.S new file mode 100644 index 0000000000..7a4914ef6e --- /dev/null +++ b/sysdeps/tile/dl-trampoline.S @@ -0,0 +1,193 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include + +/* This function is called via the PLT header, which is called + from an individual PLT entry. + + At this point we have several values passed in: + + lr: return address to original user code + r28: the tpnt value to pass to _dl_runtime_resolver + r29: the PLT index of the invoked jump table entry. + + We set up a frame entry that looks like this (in int_reg_t units): + + +57: r25 return values from function... + +56: r24 + [...] + +33: r1 + +32: r0 + +31: PLT index + +30: tpnt + +29: stackframe + +28: caller lr + +27: r25 arguments to function... + +26: r24 + [...] + +3: r1 + +2: r0 + +1: standard ABI slot (sp) + +0: standard ABI slot (callee lr) + + The entries from "stackframe" up are only used in _dl_profile_resolve. + We save and restore r0 through r25, rather than the strictly + architected r0 through r9, to support unusual calling conventions; + for example, __tls_get_addr takes r0 and returns r0, but promises + not to clobber r1 through r24 to support its usual fast path. */ + +#define FRAME_SP (1 * REGSIZE) +#define FRAME_REGS (2 * REGSIZE) +#define FRAME_LR (28 * REGSIZE) /* Must follow FRAME_REGS */ +#define FRAME_STACKFRAME (29 * REGSIZE) +#define FRAME_TPNT (30 * REGSIZE) +#define FRAME_INDEX (31 * REGSIZE) +#define FRAME_RETVAL (32 * REGSIZE) + +#define FRAME_SIZE_SMALL (30 * REGSIZE) +#define FRAME_SIZE_LARGE (58 * REGSIZE) + +#define FOR_EACH_REG(f) \ + f(r0); f(r1); f(r2); f(r3); \ + f(r4); f(r5); f(r6); f(r7); \ + f(r8); f(r9); f(r10); f(r11); \ + f(r12); f(r13); f(r14); f(r15); \ + f(r16); f(r17); f(r18); f(r19); \ + f(r20); f(r21); f(r22); f(r23); \ + f(r24); f(r25) + +#define SAVE(REG) { ST r27, REG; ADDI_PTR r27, r27, REGSIZE } +#define RESTORE(REG) { LD REG, r27; ADDI_PTR r27, r27, REGSIZE } + + .macro dl_resolve, name, profile, framesize +.text +.global \name +.hidden \name +/* Note that cpp expands ENTRY(\name) incorrectly. */ +.type \name,@function +.align 8 +\name: + cfi_startproc + { + ST sp, lr + move r26, sp + } + { + ADDLI_PTR sp, sp, -\framesize + ADDLI_PTR r27, sp, FRAME_SP - \framesize + } + cfi_def_cfa_offset (\framesize) + { + ST r27, r26 + ADDI_PTR r27, r27, FRAME_REGS - FRAME_SP + } + FOR_EACH_REG(SAVE) + { + ST r27, lr + ADDLI_PTR r27, sp, FRAME_TPNT + } + cfi_offset (lr, FRAME_LR - \framesize) + .if \profile + { + move r0, r28 /* tpnt value */ + ST r27, r28 + ADDI_PTR r27, r27, FRAME_INDEX - FRAME_TPNT + } + { + move r1, r29 /* PLT index */ + ST r27, r29 + } + { + move r2, lr /* retaddr */ + ADDI_PTR r3, sp, FRAME_REGS /* La_tile_regs pointer */ + } + { + ADDLI_PTR r4, sp, FRAME_STACKFRAME /* framesize pointer */ + jal _dl_profile_fixup + } + ADDLI_PTR r28, sp, FRAME_STACKFRAME + LD_PTR r28, r28 + BGTZ r28, 1f + .else + { + move r0, r28 /* tpnt value 1 */ + move r1, r29 /* PLT index 2 */ + } + jal _dl_fixup + .endif + { + /* Copy aside the return value so we can restore r0 below. */ + move r29, r0 + /* Set up r27 to let us start restoring registers. */ + ADDLI_PTR r27, sp, FRAME_REGS + } + FOR_EACH_REG(RESTORE) + .if \profile + ADDLI_PTR r28, sp, FRAME_STACKFRAME + LD r28, r28 + BGTZ r28, 1f + .endif + { + /* Restore original user return address. */ + LD lr, r27 + /* Pop off our stack frame. */ + ADDLI_PTR sp, sp, \framesize + } + cfi_def_cfa_offset (0) + jr r29 /* Transfer control to freshly loaded code. */ + jrp lr /* Keep backtracer happy. */ + + .if \profile +1: jalr r29 /* Call resolved function. */ + { + ADDLI_PTR r28, sp, FRAME_TPNT + ADDLI_PTR r27, sp, FRAME_RETVAL + } + FOR_EACH_REG(SAVE) + { + LD r0, r28 + ADDI_PTR r28, r28, FRAME_INDEX - FRAME_TPNT + } + { + LD r1, r28 + ADDLI_PTR r2, sp, FRAME_REGS + } + { + ADDLI_PTR r3, sp, FRAME_RETVAL + jal _dl_call_pltexit + } + { + ADDLI_PTR lr, sp, FRAME_LR + ADDLI_PTR r27, sp, FRAME_RETVAL + } + FOR_EACH_REG(RESTORE) + { + LD lr, lr + ADDLI_PTR sp, sp, \framesize + } + jrp lr + .endif +END (\name) + .endm + + dl_resolve _dl_runtime_resolve, 0, FRAME_SIZE_SMALL +#ifndef PROF + dl_resolve _dl_runtime_profile, 1, FRAME_SIZE_LARGE +#endif diff --git a/sysdeps/tile/ffs.c b/sysdeps/tile/ffs.c new file mode 100644 index 0000000000..3e52f8c6ef --- /dev/null +++ b/sysdeps/tile/ffs.c @@ -0,0 +1,45 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#define ffsl __something_else +#include + +#undef ffs +int +__ffs (int x) +{ + return __builtin_ffs (x); +} +weak_alias (__ffs, ffs) +libc_hidden_def (__ffs) +libc_hidden_builtin_def (ffs) + +#undef ffsll +int +ffsll (long long x) +{ + return __builtin_ffsll (x); +} + +#undef ffsl +#if ULONG_MAX == UINT_MAX +weak_alias (__ffs, ffsl) +#else +weak_alias (ffsll, ffsl) +#endif diff --git a/sysdeps/tile/ffsll.c b/sysdeps/tile/ffsll.c new file mode 100644 index 0000000000..180eaa8c23 --- /dev/null +++ b/sysdeps/tile/ffsll.c @@ -0,0 +1 @@ +/* This function is defined in ffs.c. */ diff --git a/sysdeps/tile/gccframe.h b/sysdeps/tile/gccframe.h new file mode 100644 index 0000000000..22a5463eb6 --- /dev/null +++ b/sysdeps/tile/gccframe.h @@ -0,0 +1,21 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#define FIRST_PSEUDO_REGISTER 64 + +#include diff --git a/sysdeps/tile/jmpbuf-offsets.h b/sysdeps/tile/jmpbuf-offsets.h new file mode 100644 index 0000000000..c16175f370 --- /dev/null +++ b/sysdeps/tile/jmpbuf-offsets.h @@ -0,0 +1,62 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +/* We don't use most of these symbols; they are here for documentation. */ +#define JB_R30 0 +#define JB_R31 1 +#define JB_R32 2 +#define JB_R33 3 +#define JB_R34 4 +#define JB_R35 5 +#define JB_R36 6 +#define JB_R37 7 +#define JB_R38 8 +#define JB_R39 9 +#define JB_R40 10 +#define JB_R41 11 +#define JB_R42 12 +#define JB_R43 13 +#define JB_R44 14 +#define JB_R45 15 +#define JB_R46 16 +#define JB_R47 17 +#define JB_R48 18 +#define JB_R49 19 +#define JB_R50 20 +#define JB_R51 21 +#define JB_FP 22 /* r52 */ +#define JB_TP 23 /* r53 */ +#define JB_SP 24 /* r54 */ +#define JB_PC 25 /* normally LR, r55 */ +#define JB_ICS 26 /* interrupt critical section bit */ + +/* We save space for some extra state to accommodate future changes. */ +#define JB_LEN 32 /* number of words */ + +#define JB_SIZE (JB_LEN * REGSIZE) + +/* Helper macro used by all the setjmp/longjmp assembly code. */ +#define FOR_EACH_CALLEE_SAVED_REG(f) \ + .no_require_canonical_reg_names; f(r30); f(r31); \ + f(r32); f(r33); f(r34); f(r35); f(r36); f(r37); f(r38); f(r39); \ + f(r40); f(r41); f(r42); f(r43); f(r44); f(r45); f(r46); f(r47); \ + f(r48); f(r49); f(r50); f(r51); f(r52); f(r53); f(r54); f(r55) + +/* Helper for generic ____longjmp_chk(). */ +#define JB_FRAME_ADDRESS(buf) \ + ((void *) (unsigned long) (buf[JB_SP])) diff --git a/sysdeps/tile/jmpbuf-unwind.h b/sysdeps/tile/jmpbuf-unwind.h new file mode 100644 index 0000000000..3925e905b1 --- /dev/null +++ b/sysdeps/tile/jmpbuf-unwind.h @@ -0,0 +1,48 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + Based on work contributed by Jakub Jelinek , 2003. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include +#include + +/* Test if longjmp to JMPBUF would unwind the frame + containing a local variable at ADDRESS. */ +#define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \ + ((void *) (address) < (void *) demangle ((jmpbuf)[JB_SP])) + +#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \ + _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj) + +static inline uintptr_t __attribute__ ((unused)) +_jmpbuf_sp (__jmp_buf regs) +{ + uintptr_t sp = regs[JB_SP]; +#ifdef PTR_DEMANGLE + PTR_DEMANGLE (sp); +#endif + return sp; +} + +#define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \ + ((uintptr_t) (_address) - (_adj) < _jmpbuf_sp (_jmpbuf) - (_adj)) + +/* We use the normal longjmp for unwinding. */ +#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val) diff --git a/sysdeps/tile/ldsodefs.h b/sysdeps/tile/ldsodefs.h new file mode 100644 index 0000000000..682d4f2893 --- /dev/null +++ b/sysdeps/tile/ldsodefs.h @@ -0,0 +1,40 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _TILE_LDSODEFS_H +#define _TILE_LDSODEFS_H 1 + +#include + +struct La_tile_regs; +struct La_tile_retval; + +#define ARCH_PLTENTER_MEMBERS \ + ElfW(Addr) (*tile_gnu_pltenter) (ElfW(Sym) *, unsigned int, uintptr_t *, \ + uintptr_t *, struct La_tile_regs *, \ + unsigned int *, const char *, \ + long int *) + +#define ARCH_PLTEXIT_MEMBERS \ + ElfW(Addr) (*tile_gnu_pltexit) (ElfW(Sym) *, unsigned int, uintptr_t *, \ + uintptr_t *, const struct La_tile_regs *, \ + struct La_tile_retval *, const char *) + +#include_next + +#endif diff --git a/sysdeps/tile/libm-test-ulps b/sysdeps/tile/libm-test-ulps new file mode 100644 index 0000000000..60bdc4758d --- /dev/null +++ b/sysdeps/tile/libm-test-ulps @@ -0,0 +1,5460 @@ +# Begin of automatic generation + +# acosh +Test "acosh (0x6.4p+4)": +double: 1 +idouble: 1 +Test "acosh (0xf.ffffffffffff8p+1020)": +double: 1 + +# asinh +Test "asinh (-0xf.ffffffffffff8p+1020)": +double: 1 +Test "asinh (0xap+0)": +float: 1 +ifloat: 1 +Test "asinh (0xf.ffffffffffff8p+1020)": +double: 1 + +# atan2 +Test "atan2 (-0x1.effe82p-8, -0x7.57d1d8p-12)": +float: 1 +ifloat: 1 +Test "atan2 (-0xcp-4, -0x1p+0)": +float: 1 +ifloat: 1 +Test "atan2 (-0xf.fffffp+124, -0x4p-128)": +float: 1 +ifloat: 1 +Test "atan2 (-0xf.fffffp+124, -0x8p-152)": +float: 1 +ifloat: 1 +Test "atan2 (0x1.64p+0, 0xe.ep-4)": +float: 1 +ifloat: 1 +Test "atan2 (0xcp-4, -0x1p+0)": +float: 1 +ifloat: 1 +Test "atan2 (0xf.fffffp+124, -0x4p-128)": +float: 1 +ifloat: 1 +Test "atan2 (0xf.fffffp+124, -0x8p-152)": +float: 1 +ifloat: 1 + +# atanh +Test "atanh (-0xcp-4)": +float: 1 +ifloat: 1 +Test "atanh (0xcp-4)": +float: 1 +ifloat: 1 + +# cacos +Test "Imaginary part of: cacos (+0 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (+0 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (+0 + 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (+0 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (+0 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (+0 - 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0 + 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0 - 1.5 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (-0.25 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0.25 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0.25 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0.25 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0.5 + 0x1.fp-129 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0.5 + 0x1p-105 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0.5 + 0x1p-112 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0.5 + 0x1p-23 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (-0.5 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0.5 + 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0.5 - 0x1.fp-129 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0.5 - 0x1p-105 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0.5 - 0x1p-112 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0.5 - 0x1p-23 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (-0.5 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0.5 - 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0x0.fffffffffffff8p0 + 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0x0.fffffffffffff8p0 - 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0x0.ffffffp0 + 0x1p-23 i)": +float: 2 +ifloat: 2 +Test "Imaginary part of: cacos (-0x0.ffffffp0 - 0x1p-23 i)": +float: 2 +ifloat: 2 +Test "Imaginary part of: cacos (-0x1.000002p0 + 0x1p-23 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.000002p0 - 0x1p-23 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-10 + 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-10 - 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (-0x1.fp-100 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-100 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1.fp-100 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-100 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-1000 + 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-1000 - 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-1025 + 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-1025 + 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-1025 - 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (-0x1.fp-1025 - 1.5 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (-0x1.fp-129 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-129 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1.fp-129 + 0x0.ffffffp0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1.fp-129 + 0x1.000002p0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1.fp-129 + 0x1.fp-129 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1.fp-129 + 0x1p-23 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1.fp-129 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-129 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1.fp-129 + 1.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-129 + 1.5 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (-0x1.fp-129 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-129 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1.fp-129 - 0x0.ffffffp0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1.fp-129 - 0x1.000002p0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1.fp-129 - 0x1.fp-129 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1.fp-129 - 0x1p-23 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1.fp-129 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-129 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1.fp-129 - 1.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-129 - 1.5 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (-0x1.fp-30 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-30 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1.fp-30 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1.fp-30 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-105 + 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-105 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-105 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-105 + 0x1p-105 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-105 - 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-105 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-105 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-105 - 0x1p-105 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-112 + 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-112 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-112 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-112 + 0x1p-112 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-112 - 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-112 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-112 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-112 - 0x1p-112 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-23 + 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-23 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-23 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-23 + 0x0.ffffffp0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (-0x1p-23 + 0x1.fp-129 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-23 + 0x1p-23 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-23 - 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-23 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-23 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-23 - 0x0.ffffffp0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (-0x1p-23 - 0x1.fp-129 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-23 - 0x1p-23 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-52 + 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-52 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-52 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-52 + 0x1p-52 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-52 - 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-52 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-52 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-52 - 0x1p-52 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-63 + 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-63 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-63 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-63 + 0x1p-63 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-63 - 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-63 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-0x1p-63 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-0x1p-63 - 0x1p-63 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-1.0 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-1.0 + 0x1.fp-10 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-1.0 + 0x1p50 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-1.0 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (-1.0 - 0x1.fp-10 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-1.0 - 0x1p50 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (-2 - 3 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0.25 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0.25 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (0.5 + +0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (0.5 + 0x1.fp-1025 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (0.5 + 0x1.fp-129 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0.5 + 0x1.fp-129 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (0.5 + 0x1p-105 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0.5 + 0x1p-105 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (0.5 + 0x1p-112 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0.5 + 0x1p-112 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0.5 + 0x1p-23 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (0.5 + 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (0.5 + 0x1p-63 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (0.5 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0.5 + 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (0.5 - 0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (0.5 - 0x1.fp-1025 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (0.5 - 0x1.fp-129 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0.5 - 0x1.fp-129 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (0.5 - 0x1p-105 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0.5 - 0x1p-105 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (0.5 - 0x1p-112 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0.5 - 0x1p-112 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0.5 - 0x1p-23 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (0.5 - 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (0.5 - 0x1p-63 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (0.5 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0.5 - 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0x0.fffffffffffff8p0 + 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0x0.fffffffffffff8p0 - 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (0x0.ffffffp0 + 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (0x0.ffffffp0 + 0x1.fp-129 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (0x0.ffffffp0 + 0x1p-23 i)": +float: 2 +ifloat: 2 +Test "Imaginary part of: cacos (0x0.ffffffp0 + 0x1p-23 i)": +float: 2 +ifloat: 2 +Test "Real part of: cacos (0x0.ffffffp0 - 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (0x0.ffffffp0 - 0x1.fp-129 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (0x0.ffffffp0 - 0x1p-23 i)": +float: 2 +ifloat: 2 +Test "Imaginary part of: cacos (0x0.ffffffp0 - 0x1p-23 i)": +float: 2 +ifloat: 2 +Test "Real part of: cacos (0x1.0000000000001p0 + 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (0x1.0000000000001p0 - 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (0x1.000002p0 + 0x1p-23 i)": +float: 2 +ifloat: 2 +Test "Imaginary part of: cacos (0x1.000002p0 + 0x1p-23 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (0x1.000002p0 - 0x1p-23 i)": +float: 2 +ifloat: 2 +Test "Imaginary part of: cacos (0x1.000002p0 - 0x1p-23 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1.fp-10 + 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0x1.fp-10 - 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0x1.fp-100 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1.fp-100 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1.fp-1000 + 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0x1.fp-1000 - 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0x1.fp-1025 + 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0x1.fp-1025 + 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0x1.fp-1025 - 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0x1.fp-1025 - 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0x1.fp-129 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1.fp-129 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1.fp-129 + 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0x1.fp-129 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1.fp-129 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1.fp-129 - 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0x1.fp-30 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1.fp-30 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1.fp1023 + 0x1.fp1023 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0x1.fp127 + 0x1.fp127 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0x1p-105 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1p-105 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1p-112 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1p-112 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1p-23 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1p-23 + 0x0.ffffffp0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0x1p-23 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1p-23 - 0x0.ffffffp0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacos (0x1p-52 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1p-52 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1p-63 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (0x1p-63 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (1.0 + 0.25 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (1.0 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (1.0 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (1.0 + 0x1.fp-10 i)": +float: 2 +ifloat: 2 +Test "Imaginary part of: cacos (1.0 + 0x1.fp-10 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (1.0 - 0.25 i)": +double: 1 +idouble: 1 +Test "Real part of: cacos (1.0 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacos (1.0 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacos (1.0 - 0x1.fp-10 i)": +float: 2 +ifloat: 2 +Test "Imaginary part of: cacos (1.0 - 0x1.fp-10 i)": +float: 1 +ifloat: 1 + +# cacosh +Test "Real part of: cacosh (+0 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (+0 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (+0 + 1.5 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (+0 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (+0 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (+0 - 1.5 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (-0 + 1.5 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (-0 - 1.5 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0.25 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0.25 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (-0.25 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0.25 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (-0.5 + 0x1.fp-129 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0.5 + 0x1p-105 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0.5 + 0x1p-112 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0.5 + 0x1p-23 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0.5 + 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (-0.5 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0.5 - 0x1.fp-129 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0.5 - 0x1p-105 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0.5 - 0x1p-112 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0.5 - 0x1p-23 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0.5 - 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (-0.5 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x0.fffffffffffff8p0 + 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0x0.fffffffffffff8p0 - 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0x0.ffffffp0 + 0x1p-23 i)": +float: 2 +ifloat: 2 +Test "Real part of: cacosh (-0x0.ffffffp0 - 0x1p-23 i)": +float: 2 +ifloat: 2 +Test "Real part of: cacosh (-0x1.000002p0 + 0x1p-23 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.000002p0 - 0x1p-23 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-10 + 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0x1.fp-10 - 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0x1.fp-100 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1.fp-100 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-100 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1.fp-100 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-1000 + 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0x1.fp-1000 - 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0x1.fp-1025 + 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0x1.fp-1025 + 1.5 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0x1.fp-1025 - 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0x1.fp-1025 - 1.5 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (-0x1.fp-129 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 + 0x0.ffffffp0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 + 0x1.000002p0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 + 0x1.fp-129 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 + 0x1p-23 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-129 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-129 + 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 + 1.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-129 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 - 0x0.ffffffp0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 - 0x1.000002p0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 - 0x1.fp-129 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 - 0x1p-23 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-129 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-129 - 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (-0x1.fp-129 - 1.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-30 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1.fp-30 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1.fp-30 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1.fp-30 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-105 + 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-105 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-105 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-105 + 0x1p-105 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-105 - 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-105 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-105 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-105 - 0x1p-105 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-112 + 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-112 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-112 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-112 + 0x1p-112 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-112 - 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-112 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-112 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-112 - 0x1p-112 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-23 + 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-23 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-23 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-23 + 0x0.ffffffp0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (-0x1p-23 + 0x1.fp-129 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-23 + 0x1p-23 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-23 - 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-23 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-23 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-23 - 0x0.ffffffp0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (-0x1p-23 - 0x1.fp-129 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-23 - 0x1p-23 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-52 + 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-52 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-52 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-52 + 0x1p-52 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-52 - 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-52 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-52 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-52 - 0x1p-52 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-63 + 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-63 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-63 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-63 + 0x1p-63 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-63 - 0.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-0x1p-63 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-63 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-0x1p-63 - 0x1p-63 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-1.0 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-1.0 + 0x1.fp-10 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-1.0 + 0x1p50 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-1.0 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (-1.0 - 0x1.fp-10 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-1.0 - 0x1p50 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (-2 - 3 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0.25 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0.25 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (0.5 + +0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0.5 + 0x1.fp-1025 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 + 0x1.fp-129 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0.5 + 0x1.fp-129 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 + 0x1p-105 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0.5 + 0x1p-105 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 + 0x1p-112 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0.5 + 0x1p-112 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 + 0x1p-23 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0.5 + 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0.5 + 0x1p-63 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 + 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0.5 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (0.5 - 0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0.5 - 0x1.fp-1025 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 - 0x1.fp-129 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0.5 - 0x1.fp-129 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 - 0x1p-105 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0.5 - 0x1p-105 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 - 0x1p-112 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0.5 - 0x1p-112 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 - 0x1p-23 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0.5 - 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0.5 - 0x1p-63 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0.5 - 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0.5 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x0.fffffffffffff8p0 + 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x0.fffffffffffff8p0 - 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0x0.ffffffp0 + 0.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (0x0.ffffffp0 + 0x1.fp-129 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x0.ffffffp0 + 0x1p-23 i)": +float: 2 +ifloat: 2 +Test "Imaginary part of: cacosh (0x0.ffffffp0 + 0x1p-23 i)": +float: 2 +ifloat: 2 +Test "Imaginary part of: cacosh (0x0.ffffffp0 - 0.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (0x0.ffffffp0 - 0x1.fp-129 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x0.ffffffp0 - 0x1p-23 i)": +float: 2 +ifloat: 2 +Test "Imaginary part of: cacosh (0x0.ffffffp0 - 0x1p-23 i)": +float: 2 +ifloat: 2 +Test "Imaginary part of: cacosh (0x1.0000000000001p0 + 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cacosh (0x1.0000000000001p0 - 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.000002p0 + 0x1p-23 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (0x1.000002p0 + 0x1p-23 i)": +float: 2 +ifloat: 2 +Test "Real part of: cacosh (0x1.000002p0 - 0x1p-23 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (0x1.000002p0 - 0x1p-23 i)": +float: 2 +ifloat: 2 +Test "Real part of: cacosh (0x1.fp-10 + 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp-10 - 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp-100 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1.fp-100 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1.fp-1000 + 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp-1000 - 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp-1025 + 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp-1025 + 1.5 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp-1025 - 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp-1025 - 1.5 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp-129 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1.fp-129 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1.fp-129 + 1.5 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp-129 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1.fp-129 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1.fp-129 - 1.5 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp-30 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1.fp-30 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1.fp1023 + 0x1.fp1023 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1.fp127 + 0x1.fp127 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1p-105 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1p-105 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1p-112 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1p-112 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1p-23 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1p-23 + 0x0.ffffffp0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1p-23 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1p-23 - 0x0.ffffffp0 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (0x1p-52 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1p-52 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1p-63 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (0x1p-63 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (1.0 + 0.25 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (1.0 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (1.0 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (1.0 + 0x1.fp-10 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (1.0 + 0x1.fp-10 i)": +float: 2 +ifloat: 2 +Test "Imaginary part of: cacosh (1.0 - 0.25 i)": +double: 1 +idouble: 1 +Test "Real part of: cacosh (1.0 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (1.0 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: cacosh (1.0 - 0x1.fp-10 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cacosh (1.0 - 0x1.fp-10 i)": +float: 2 +ifloat: 2 + +# casin +Test "Imaginary part of: casin (+0 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (+0 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (+0 + 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (+0 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (+0 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (+0 - 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0 + 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0 - 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0.25 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0.25 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0.5 + 0x1.fp-129 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0.5 + 0x1p-105 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0.5 + 0x1p-112 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0.5 + 0x1p-23 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0.5 + 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0.5 - 0x1.fp-129 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0.5 - 0x1p-105 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0.5 - 0x1p-112 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0.5 - 0x1p-23 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0.5 - 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0x0.fffffffffffff8p0 + 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0x0.fffffffffffff8p0 - 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0x0.ffffffp0 + 0x1p-23 i)": +float: 2 +ifloat: 2 +Test "Imaginary part of: casin (-0x0.ffffffp0 - 0x1p-23 i)": +float: 2 +ifloat: 2 +Test "Imaginary part of: casin (-0x1.000002p0 + 0x1p-23 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1.000002p0 - 0x1p-23 i)": +float: 1 +ifloat: 1 +Test "Real part of: casin (-0x1.fp-10 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1.fp-10 + 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: casin (-0x1.fp-10 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1.fp-10 - 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0x1.fp-100 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1.fp-100 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1.fp-1000 + 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0x1.fp-1000 - 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0x1.fp-1025 + 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0x1.fp-1025 + 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0x1.fp-1025 - 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0x1.fp-1025 - 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0x1.fp-129 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1.fp-129 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1.fp-129 + 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0x1.fp-129 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1.fp-129 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1.fp-129 - 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (-0x1.fp-30 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1.fp-30 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1p-105 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1p-105 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1p-112 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1p-112 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: casin (-0x1p-23 + 0.5 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1p-23 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1p-23 + 0x0.ffffffp0 i)": +double: 1 +idouble: 1 +Test "Real part of: casin (-0x1p-23 + 0x1.000002p0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casin (-0x1p-23 - 0.5 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1p-23 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1p-23 - 0x0.ffffffp0 i)": +double: 1 +idouble: 1 +Test "Real part of: casin (-0x1p-23 - 0x1.000002p0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1p-52 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1p-52 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1p-63 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-0x1p-63 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: casin (-1.0 + 0.25 i)": +double: 1 +idouble: 1 +Test "Real part of: casin (-1.0 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-1.0 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-1.0 + 0x1.fp-10 i)": +float: 1 +ifloat: 1 +Test "Real part of: casin (-1.0 - 0.25 i)": +double: 1 +idouble: 1 +Test "Real part of: casin (-1.0 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-1.0 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (-1.0 - 0x1.fp-10 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (0.25 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (0.25 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (0.5 + 0x1.fp-129 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0.5 + 0x1p-105 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0.5 + 0x1p-112 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0.5 + 0x1p-23 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0.5 + 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0.5 - 0x1.fp-129 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0.5 - 0x1p-105 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0.5 - 0x1p-112 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0.5 - 0x1p-23 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0.5 - 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: casin (0.75 + 1.25 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x0.fffffffffffff8p0 + 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0x0.fffffffffffff8p0 - 0x1p-52 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0x0.ffffffp0 + 0x1p-23 i)": +float: 2 +ifloat: 2 +Test "Imaginary part of: casin (0x0.ffffffp0 - 0x1p-23 i)": +float: 2 +ifloat: 2 +Test "Imaginary part of: casin (0x1.000002p0 + 0x1p-23 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1.000002p0 - 0x1p-23 i)": +float: 1 +ifloat: 1 +Test "Real part of: casin (0x1.fp-10 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1.fp-10 + 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: casin (0x1.fp-10 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1.fp-10 - 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0x1.fp-100 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1.fp-100 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1.fp-1000 + 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0x1.fp-1000 - 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0x1.fp-1025 + 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0x1.fp-1025 + 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0x1.fp-1025 - 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0x1.fp-1025 - 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0x1.fp-129 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1.fp-129 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1.fp-129 + 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0x1.fp-129 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1.fp-129 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1.fp-129 - 1.5 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0x1.fp-30 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1.fp-30 - 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1.fp1023 + 0x1.fp1023 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0x1.fp127 + 0x1.fp127 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casin (0x1p-105 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1p-105 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1p-112 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1p-112 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: casin (0x1p-23 + 0.5 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1p-23 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1p-23 + 0x0.ffffffp0 i)": +double: 1 +idouble: 1 +Test "Real part of: casin (0x1p-23 + 0x1.000002p0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casin (0x1p-23 - 0.5 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1p-23 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1p-23 - 0x0.ffffffp0 i)": +double: 1 +idouble: 1 +Test "Real part of: casin (0x1p-23 - 0x1.000002p0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1p-52 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1p-52 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1p-63 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (0x1p-63 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: casin (1.0 + 0.25 i)": +double: 1 +idouble: 1 +Test "Real part of: casin (1.0 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (1.0 + 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (1.0 + 0x1.fp-10 i)": +float: 1 +ifloat: 1 +Test "Real part of: casin (1.0 - 0.25 i)": +double: 1 +idouble: 1 +Test "Real part of: casin (1.0 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (1.0 - 0.5 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casin (1.0 - 0x1.fp-10 i)": +float: 1 +ifloat: 1 + +# casinh +Test "Imaginary part of: casinh (-0.25 + 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (-0.25 - 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (-0.5 + +0 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 + 0x1.fp-129 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 + 0x1p-105 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 + 0x1p-112 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 + 0x1p-23 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casinh (-0.5 + 0x1p-23 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 + 0x1p-52 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 + 0x1p-63 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casinh (-0.5 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 - 0 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 - 0x1.fp-129 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 - 0x1p-105 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 - 0x1p-112 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 - 0x1p-23 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casinh (-0.5 - 0x1p-23 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 - 0x1p-52 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 - 0x1p-63 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0.5 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casinh (-0.5 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0x0.ffffffp0 + 0x1p-23 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (-0x0.ffffffp0 - 0x1p-23 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (-0x1.000002p0 + 0x1p-23 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casinh (-0x1.000002p0 - 0x1p-23 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (-0x1.fp-10 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0x1.fp-10 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0x1.fp-129 + 0.5 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (-0x1.fp-129 - 0.5 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (-0x1p-105 + 0.5 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (-0x1p-105 - 0.5 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (-0x1p-112 + 0.5 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (-0x1p-112 - 0.5 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (-0x1p-23 + 0.5 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (-0x1p-23 + 0x0.ffffffp0 i)": +float: 2 +ifloat: 2 +Test "Real part of: casinh (-0x1p-23 + 0x1.000002p0 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0x1p-23 - 0.5 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (-0x1p-23 - 0x0.ffffffp0 i)": +float: 2 +ifloat: 2 +Test "Real part of: casinh (-0x1p-23 - 0x1.000002p0 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-0x1p-52 + 0x0.fffffffffffff8p0 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (-0x1p-52 - 0x0.fffffffffffff8p0 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (-1.0 + +0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (-1.0 + 0.25 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-1.0 + 0.5 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (-1.0 + 0x1.fp-10 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (-1.0 + 0x1.fp-10 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-1.0 + 0x1.fp-100 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (-1.0 + 0x1.fp-1000 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (-1.0 + 0x1.fp-1025 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (-1.0 + 0x1.fp-129 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (-1.0 + 0x1.fp-30 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (-1.0 - 0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (-1.0 - 0.25 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-1.0 - 0.5 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (-1.0 - 0x1.fp-10 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (-1.0 - 0x1.fp-10 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (-1.0 - 0x1.fp-100 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (-1.0 - 0x1.fp-1000 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (-1.0 - 0x1.fp-1025 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (-1.0 - 0x1.fp-129 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (-1.0 - 0x1.fp-30 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (-1.5 + +0 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (-1.5 + 0x1.fp-1025 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (-1.5 + 0x1.fp-129 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (-1.5 - 0 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (-1.5 - 0x1.fp-1025 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (-1.5 - 0x1.fp-129 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (0.25 + 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (0.25 - 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (0.5 + +0 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 + 0x1.fp-129 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 + 0x1p-105 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 + 0x1p-112 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 + 0x1p-23 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casinh (0.5 + 0x1p-23 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 + 0x1p-52 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 + 0x1p-63 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casinh (0.5 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 - 0 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 - 0x1.fp-129 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 - 0x1p-105 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 - 0x1p-112 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 - 0x1p-23 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casinh (0.5 - 0x1p-23 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 - 0x1p-52 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 - 0x1p-63 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0.5 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casinh (0.5 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0.75 + 1.25 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: casinh (0.75 + 1.25 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (0x0.ffffffp0 + 0x1p-23 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (0x0.ffffffp0 - 0x1p-23 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (0x1.000002p0 + 0x1p-23 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: casinh (0x1.000002p0 - 0x1p-23 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (0x1.fp-10 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0x1.fp-10 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0x1.fp-129 + 0.5 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (0x1.fp-129 - 0.5 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (0x1.fp1023 + 0x1.fp1023 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (0x1.fp127 + 0x1.fp127 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (0x1p-105 + 0.5 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (0x1p-105 - 0.5 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (0x1p-112 + 0.5 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (0x1p-112 - 0.5 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (0x1p-23 + 0.5 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (0x1p-23 + 0x0.ffffffp0 i)": +float: 2 +ifloat: 2 +Test "Real part of: casinh (0x1p-23 + 0x1.000002p0 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0x1p-23 - 0.5 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (0x1p-23 - 0x0.ffffffp0 i)": +float: 2 +ifloat: 2 +Test "Real part of: casinh (0x1p-23 - 0x1.000002p0 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (0x1p-52 + 0x0.fffffffffffff8p0 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (0x1p-52 - 0x0.fffffffffffff8p0 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (1.0 + +0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (1.0 + 0.25 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (1.0 + 0.5 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (1.0 + 0x1.fp-10 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (1.0 + 0x1.fp-10 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (1.0 + 0x1.fp-100 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (1.0 + 0x1.fp-1000 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (1.0 + 0x1.fp-1025 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (1.0 + 0x1.fp-129 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (1.0 + 0x1.fp-30 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (1.0 - 0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (1.0 - 0.25 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (1.0 - 0.5 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (1.0 - 0x1.fp-10 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: casinh (1.0 - 0x1.fp-10 i)": +float: 1 +ifloat: 1 +Test "Real part of: casinh (1.0 - 0x1.fp-100 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (1.0 - 0x1.fp-1000 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (1.0 - 0x1.fp-1025 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (1.0 - 0x1.fp-129 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (1.0 - 0x1.fp-30 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: casinh (1.5 + +0 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (1.5 + 0x1.fp-1025 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (1.5 + 0x1.fp-129 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (1.5 - 0 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (1.5 - 0x1.fp-1025 i)": +double: 1 +idouble: 1 +Test "Real part of: casinh (1.5 - 0x1.fp-129 i)": +double: 1 +idouble: 1 + +# catan +Test "Imaginary part of: catan (-0x0.fffffffffffff8p0 + 0x1p-27 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catan (-0x0.ffffffp0 + 0x1p-13 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: catan (-0x1.0000000000001p0 - 0x1p-27 i)": +double: 1 +idouble: 1 +Test "Real part of: catan (-0x1.000002p0 + 0x1p-126 i)": +float: 1 +ifloat: 1 +Test "Real part of: catan (-0x1.000002p0 + 0x1p-13 i)": +float: 1 +ifloat: 1 +Test "Real part of: catan (-0x1.000002p0 - 0x1p-126 i)": +float: 1 +ifloat: 1 +Test "Real part of: catan (-0x1.000002p0 - 0x1p-13 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catan (-0x1.000002p0 - 0x1p-13 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catan (-0x1.fp1023 + 0x1.fp1023 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catan (-0x1.fp1023 - 0x1.fp1023 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catan (-0x1.fp127 + 0x1.fp127 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catan (-0x1.fp127 - 0x1.fp127 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catan (-0x1p-1020 + 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catan (-0x1p-1020 - 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: catan (-0x1p-13 + 0x1.000002p0 i)": +float: 1 +ifloat: 1 +Test "Real part of: catan (-0x1p-13 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: catan (-0x1p-13 - 0x1.000002p0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catan (-0x1p-13 - 0x1.000002p0 i)": +float: 1 +ifloat: 1 +Test "Real part of: catan (-0x1p-13 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catan (-0x1p-54 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catan (-0x1p-54 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catan (-0x1p-57 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catan (-0x1p-57 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: catan (-1.0 + 0x1p-13 i)": +float: 1 +ifloat: 1 +Test "Real part of: catan (-1.0 - 0x1p-13 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catan (-2 - 3 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: catan (0x0.fffffffffffff8p0 + 0x1p-27 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catan (0x0.ffffffp0 + 0x1p-13 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: catan (0x1.0000000000001p0 - 0x1p-27 i)": +double: 1 +idouble: 1 +Test "Real part of: catan (0x1.000002p0 + 0x1p-126 i)": +float: 1 +ifloat: 1 +Test "Real part of: catan (0x1.000002p0 + 0x1p-13 i)": +float: 1 +ifloat: 1 +Test "Real part of: catan (0x1.000002p0 - 0x1p-126 i)": +float: 1 +ifloat: 1 +Test "Real part of: catan (0x1.000002p0 - 0x1p-13 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catan (0x1.000002p0 - 0x1p-13 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catan (0x1.fp1023 + 0x1.fp1023 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catan (0x1.fp1023 - 0x1.fp1023 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catan (0x1.fp127 + 0x1.fp127 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catan (0x1.fp127 - 0x1.fp127 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catan (0x1p-1020 + 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catan (0x1p-1020 - 1.0 i)": +double: 1 +idouble: 1 +Test "Real part of: catan (0x1p-13 + 0x1.000002p0 i)": +float: 1 +ifloat: 1 +Test "Real part of: catan (0x1p-13 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: catan (0x1p-13 - 0x1.000002p0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catan (0x1p-13 - 0x1.000002p0 i)": +float: 1 +ifloat: 1 +Test "Real part of: catan (0x1p-13 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catan (0x1p-54 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catan (0x1p-54 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catan (0x1p-57 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catan (0x1p-57 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: catan (1.0 + 0x1p-13 i)": +float: 1 +ifloat: 1 +Test "Real part of: catan (1.0 - 0x1p-13 i)": +float: 1 +ifloat: 1 + +# catanh +Test "Real part of: catanh (-0x1.000002p0 + 0x1p-13 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catanh (-0x1.000002p0 + 0x1p-13 i)": +float: 1 +ifloat: 1 +Test "Real part of: catanh (-0x1.000002p0 - 0x1p-13 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catanh (-0x1.000002p0 - 0x1p-13 i)": +float: 1 +ifloat: 1 +Test "Real part of: catanh (-0x1.fp1023 + 0x1.fp1023 i)": +double: 1 +idouble: 1 +Test "Real part of: catanh (-0x1.fp1023 - 0x1.fp1023 i)": +double: 1 +idouble: 1 +Test "Real part of: catanh (-0x1.fp127 + 0x1.fp127 i)": +double: 1 +idouble: 1 +Test "Real part of: catanh (-0x1.fp127 - 0x1.fp127 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catanh (-0x1p-126 + 0x1.000002p0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catanh (-0x1p-126 - 0x1.000002p0 i)": +float: 1 +ifloat: 1 +Test "Real part of: catanh (-0x1p-13 + 0x1.000002p0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catanh (-0x1p-13 + 0x1.000002p0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catanh (-0x1p-13 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: catanh (-0x1p-13 - 0x1.000002p0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catanh (-0x1p-13 - 0x1.000002p0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catanh (-0x1p-13 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: catanh (-0x1p-27 + 0x1.0000000000001p0 i)": +double: 1 +idouble: 1 +Test "Real part of: catanh (-0x1p-27 - 0x1.0000000000001p0 i)": +double: 1 +idouble: 1 +Test "Real part of: catanh (-1.0 + 0x1p-1020 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catanh (-1.0 + 0x1p-13 i)": +float: 1 +ifloat: 1 +Test "Real part of: catanh (-1.0 + 0x1p-54 i)": +float: 1 +ifloat: 1 +Test "Real part of: catanh (-1.0 + 0x1p-57 i)": +float: 1 +ifloat: 1 +Test "Real part of: catanh (-1.0 - 0x1p-1020 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catanh (-1.0 - 0x1p-13 i)": +float: 1 +ifloat: 1 +Test "Real part of: catanh (-1.0 - 0x1p-54 i)": +float: 1 +ifloat: 1 +Test "Real part of: catanh (-1.0 - 0x1p-57 i)": +float: 1 +ifloat: 1 +Test "Real part of: catanh (-2 - 3 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catanh (0x1.000002p0 + 0x1p-13 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catanh (0x1.000002p0 - 0x1p-13 i)": +float: 1 +ifloat: 1 +Test "Real part of: catanh (0x1.fp1023 + 0x1.fp1023 i)": +double: 1 +idouble: 1 +Test "Real part of: catanh (0x1.fp1023 - 0x1.fp1023 i)": +double: 1 +idouble: 1 +Test "Real part of: catanh (0x1.fp127 + 0x1.fp127 i)": +double: 1 +idouble: 1 +Test "Real part of: catanh (0x1.fp127 - 0x1.fp127 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catanh (0x1p-126 + 0x1.000002p0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catanh (0x1p-126 - 0x1.000002p0 i)": +float: 1 +ifloat: 1 +Test "Real part of: catanh (0x1p-13 + 0x0.ffffffp0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: catanh (0x1p-13 + 0x1.000002p0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catanh (0x1p-13 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: catanh (0x1p-13 - 0x0.ffffffp0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: catanh (0x1p-13 - 0x1.000002p0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: catanh (0x1p-13 - 1.0 i)": +float: 1 +ifloat: 1 +Test "Real part of: catanh (0x1p-27 + 0x0.fffffffffffff8p0 i)": +double: 1 +idouble: 1 +Test "Real part of: catanh (0x1p-27 - 0x0.fffffffffffff8p0 i)": +double: 1 +idouble: 1 +Test "Real part of: catanh (1.0 + 0x1p-1020 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catanh (1.0 + 0x1p-13 i)": +float: 1 +ifloat: 1 +Test "Real part of: catanh (1.0 + 0x1p-54 i)": +float: 1 +ifloat: 1 +Test "Real part of: catanh (1.0 + 0x1p-57 i)": +float: 1 +ifloat: 1 +Test "Real part of: catanh (1.0 - 0x1p-1020 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: catanh (1.0 - 0x1p-13 i)": +float: 1 +ifloat: 1 +Test "Real part of: catanh (1.0 - 0x1p-54 i)": +float: 1 +ifloat: 1 +Test "Real part of: catanh (1.0 - 0x1p-57 i)": +float: 1 +ifloat: 1 + +# cbrt +Test "cbrt (-0x1.bp+4)": +double: 1 +idouble: 1 +Test "cbrt (-0x4.18937p-12)": +float: 1 +ifloat: 1 +Test "cbrt (0xcp-4)": +double: 1 +idouble: 1 +Test "cbrt (0xf.ep-4)": +double: 1 +idouble: 1 + +# ccos +Test "Imaginary part of: ccos (-0x2p+0 - 0x3p+0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ccos (-0xcp-4 + 0x2.c68p+8 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ccos (-0xcp-4 + 0x5.98p+4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ccos (-0xcp-4 - 0x2.c68p+8 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ccos (-0xcp-4 - 0x5.98p+4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ccos (0x4p-1076 + 0x5.ap+8 i)": +double: 1 +idouble: 1 +Test "Real part of: ccos (0xcp-4 + 0x1.4p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: ccos (0xcp-4 + 0x1.4p+0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ccos (0xcp-4 + 0x2.c68p+8 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ccos (0xcp-4 + 0x5.98p+4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ccos (0xcp-4 - 0x2.c68p+8 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ccos (0xcp-4 - 0x5.98p+4 i)": +float: 1 +ifloat: 1 + +# ccosh +Test "Imaginary part of: ccosh (-0x2.c68p+8 + 0xcp-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ccosh (-0x2.c68p+8 - 0xcp-4 i)": +double: 1 +idouble: 1 +Test "Real part of: ccosh (-0x2p+0 - 0x3p+0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ccosh (-0x2p+0 - 0x3p+0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ccosh (-0x5.98p+4 + 0xcp-4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ccosh (-0x5.98p+4 - 0xcp-4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ccosh (0x2.c68p+8 + 0xcp-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ccosh (0x2.c68p+8 - 0xcp-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ccosh (0x5.98p+4 + 0xcp-4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ccosh (0x5.98p+4 - 0xcp-4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ccosh (0x5.ap+8 + 0x4p-1076 i)": +double: 1 +idouble: 1 +Test "Real part of: ccosh (0xcp-4 + 0x1.4p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: ccosh (0xcp-4 + 0x1.4p+0 i)": +float: 1 +ifloat: 1 + +# cexp +Test "Imaginary part of: cexp (-0x2p+0 - 0x3p+0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cexp (-0x5.fp+4 + 0xcp-4 i)": +double: 1 +idouble: 1 +Test "Real part of: cexp (0x1.f4p+8 + 0x8p+1020 i)": +double: 1 +idouble: 1 +Test "Real part of: cexp (0x2.c5dp+8 + 0xcp-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: cexp (0x2.c5dp+8 + 0xcp-4 i)": +double: 1 +idouble: 1 +Test "Real part of: cexp (0x3.2p+4 + 0x8p+124 i)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +Test "Imaginary part of: cexp (0x3.2p+4 + 0x8p+124 i)": +double: 1 +idouble: 1 +Test "Real part of: cexp (0x5.8cp+4 + 0xcp-4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: cexp (0x5.8cp+4 + 0xcp-4 i)": +float: 2 +ifloat: 2 +Test "Imaginary part of: cexp (0x5.ap+8 + 0x4p-1076 i)": +double: 1 +idouble: 1 +Test "Real part of: cexp (0xcp-4 + 0x1.4p+0 i)": +float: 1 +ifloat: 1 + +# clog +Test "Real part of: clog (+0 + 0x4p-1076 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (-0x1.0000000123456p+0 + +0 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (-0x1.0000000123456p+0 + 0x1.2345678p-1000 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (-0x1.0000000123456p+0 + 0x4.8d1598p-32 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (-0x1.0000000123456p+0 + 0x4.8d159ep-32 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (-0x1.0000000123456p+0 + 0x8p-152 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (-0x1.000002p+0 + +0 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (-0x1.000002p+0 + 0x4.8d1598p-32 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: clog (-0x1.000002p+0 + 0x4.8d159ep-32 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (-0x1.000002p+0 + 0x4.8d15ap-32 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: clog (-0x1.000002p+0 + 0x8p-152 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (-0x1.234566p-40 - 0x1p+0 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (-0x8p-152 + 0xf.8p+124 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (-0x8p-152 + 0xf.8p+124 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (-0x8p-152 + 0xf.fffffp+124 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (-0x8p-152 - 0xf.8p+124 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (-0x8p-152 - 0xf.8p+124 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (-0x8p-152 - 0xf.fffffp+124 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (-0xf.8p+124 + 0x8p-152 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (-0xf.8p+124 - 0x8p-152 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x1.0000000000001p+0 + +0 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x1.0000000000001p+0 + 0x1.234566p-60 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x1.0000000000001p+0 + 0x1.23456789p-1000 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x1.0000000000001p+0 + 0x1.23456789p-60 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x1.0000000000001p+0 + 0x1.234568p-60 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x1.0000000000001p+0 + 0x8p-152 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x1.000002p+0 + +0 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x1.000002p+0 + 0x1.234566p-60 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x1.000002p+0 + 0x1.234568p-60 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x1.000002p+0 + 0x8p-152 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x1.000566p+0 + 0x4.8dp-12 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x1.48e45e3268d8p-4 + 0xf.f2c64p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x1.48e45ep-4 + 0xf.f2c63p-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x1.48e45ep-4 + 0xf.f2c64p-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x1.8907bc3694fd4p-4 + 0xf.ed1990460bdf8p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x1.8907bc3694fd5p-4 + 0xf.ed1990460bdf8p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x1.c67eccp-4 + 0xf.e6b4d1d7a6e08p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x1.c67eccp-4 + 0xf.e6b4d1d7a6e1p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x1.c67eccp-4 + 0xf.e6b4ep-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x1.c67ecd92a8594p-4 + 0xf.e6b4dp-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x1.c67ecd92a8594p-4 + 0xf.e6b4ep-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x1.c67ecep-4 + 0xf.e6b4d1d7a6e1p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x1p+0 + 0x4.8d1598p-12 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x2.0ce7ba1e4902p-4 + 0xf.de3a3p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x2.82b794p-4 + 0xf.cd42a15bf9a38p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x2.82b795e420b28p-4 + 0xf.cd42a15bf9a3p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x2p-148 + 0x2p-148 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x3.3b8f94p-4 + 0xf.ab873p-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x3.6e17119fb8aacp-4 + 0xf.a0c58p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x3.6e1714p-4 + 0xf.a0c58a83e57cp-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x3.6e1714p-4 + 0xf.a0c58p-4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (0x3.6e1714p-4 + 0xf.a0c58p-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x3.6e1714p-4 + 0xf.a0c59p-4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (0x3.6e1714p-4 + 0xf.a0c59p-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x3.bea2bcp-4 + 0xf.8e3d619a8d118p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x3.bea2bd62e35p-4 + 0xf.8e3d6p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x3.bea2cp-4 + 0xf.8e3d6p-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x3.bea2cp-4 + 0xf.8e3d7p-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x3.e1d0a105ac4eap-4 + 0xf.859b3d1b06d08p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x3.e1d0ap-4 + 0xf.859b3d1b06d08p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x3.e1d0ap-4 + 0xf.859b3p-4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (0x3.e1d0ap-4 + 0xf.859b4p-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x4.0dbf7d40fe1acp-4 + 0xf.7a5c1af8e3ce8p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x4.0dbf7d40fe1acp-4 + 0xf.7a5c1p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x4.7017a2e36807cp-4 + 0xf.5f4a550c9d758p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x4.7017a8p-4 + 0xf.5f4a550c9d76p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x4.7017a8p-4 + 0xf.5f4a6p-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x4.d9e8c8p-4 + 0xf.3f303p-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x4.d9e8cp-4 + 0xf.3f30281507d8p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x4p-1076 + +0 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x4p-1076 + 0x4p-1076 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x5.03p-4 + 0xf.31ep-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x5.318c596a8cb1p-4 + 0xf.22364p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x5.b06b68p-4 + 0xe.f452b965da9fp-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x5.b06b68p-4 + 0xe.f452bp-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x5.b06b7p-4 + 0xe.f452b965da9fp-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x5.b06b7p-4 + 0xe.f452bp-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x6.02fd5037c479p-4 + 0xe.d3e21p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x6.02fd5037c479p-4 + 0xe.d3e2p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x6.02fd58p-4 + 0xe.d3e2086dcca8p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x6.02fd58p-4 + 0xe.d3e21p-4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (0x6.02fd5p-4 + 0xe.d3e21p-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x6.1c643068cd128p-4 + 0xe.c97c2p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x6.1c6438p-4 + 0xe.c97c2018b4288p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x6.1c6438p-4 + 0xe.c97c2018b428p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x6.1c6438p-4 + 0xe.c97c3p-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x6.2aff83ae6467cp-4 + 0xe.c36a6p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x6.2aff83ae6468p-4 + 0xe.c36a599a86ba8p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x6.2aff83ae6468p-4 + 0xe.c36a5p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x6.2aff88p-4 + 0xe.c36a599a86ba8p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x6.b10b48p-4 + 0xe.8893cbb44925p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x6.b10b4f3520218p-4 + 0xe.8893dp-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x6.b10b5p-4 + 0xe.8893cbb449258p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x6.b10b5p-4 + 0xe.8893cbb44925p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x7.eca921b40e028p-4 + 0xd.e655fp-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x7.eca928p-4 + 0xd.e655e694e5108p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x7.eca928p-4 + 0xd.e655fp-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x7.f2c8d20a1eca4p-4 + 0xd.e2d66p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x7.f2c8d20a1ecap-4 + 0xd.e2d65p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x7.f2c8d8p-4 + 0xd.e2d65939160b8p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x7.f2c8dp-4 + 0xd.e2d65939160bp-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x7.f4b088p-4 + 0xd.e1bf04f3688p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x8.88faep-4 + 0xd.888bdp-4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (0x8.88faep-4 + 0xd.888bdp-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x8.88fafp-4 + 0xd.888bdp-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x8.ecbf810c4ae6p-4 + 0xd.47946p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x8.ecbf8p-4 + 0xd.479468b09a37p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0x8.ecbf8p-4 + 0xd.47946p-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x8.ecbf9p-4 + 0xd.479468b09a37p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x8p-152 + 0xf.8p+124 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x8p-152 - 0xf.8p+124 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x9.b386fp-4 + 0xc.b9317p-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0x9.c1b6ac509a248p-4 + 0xc.ae53de1d5a7dp-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x9.c1b6ac509a248p-4 + 0xc.ae53ep-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x9.c1b6ac509a24p-4 + 0xc.ae53dp-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x9.c1b6ac509a24p-4 + 0xc.ae53ep-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x9.c1b6ap-4 + 0xc.ae53de1d5a7dp-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0x9.c1b6ap-4 + 0xc.ae53dp-4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (0x9.c1b6ap-4 + 0xc.ae53ep-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0xa.47c0c65bd4928p-4 + 0xc.42a51p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0xa.47c0cp-4 + 0xc.42a51p-4 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog (0xa.47c0cp-4 + 0xc.42a51p-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0xa.afc57p-4 + 0xb.e867932966df8p-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0xa.afc58p-4 + 0xb.e867ap-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0xa.b96da19075eap-8 + 0xf.fc679p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0xa.b96dap-8 + 0xf.fc67818f89d2p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0xa.b96dap-8 + 0xf.fc678p-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0xa.b96dap-8 + 0xf.fc679p-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0xa.e7de8cc868ff8p-4 + 0xb.b51cbp-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0xa.e7de8p-4 + 0xb.b51cbp-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0xa.e7de9p-4 + 0xb.b51cb9f04d4dp-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog (0xa.e7de9p-4 + 0xb.b51cbp-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0xa.ec55b7682e528p-4 + 0xb.b0f24p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0xa.ec55cp-4 + 0xb.b0f2405504a68p-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0xa.ec55cp-4 + 0xb.b0f25p-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0xb.263a77543bp-4 + 0xb.79c9ap-4 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0xb.263a8p-4 + 0xb.79c9bp-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0xf.8p+124 + 0x8p-152 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0xf.8p+124 - 0x8p-152 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0xf.fffffp+124 + 0x8p+1020 i)": +double: 1 +idouble: 1 +Test "Real part of: clog (0xf.fffffp-4 + +0 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0xf.fffffp-4 + 0x8p-152 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog (0xf.fffffp-4 + 0xf.fffffp-104 i)": +float: 1 +ifloat: 1 + +# clog10 +Test "Imaginary part of: clog10 (-0 + inf i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (-0 - inf i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: clog10 (-0x1.0000000123456p0 + 0x1.2345678p-1000 i)": +double: 2 +idouble: 2 +Test "Imaginary part of: clog10 (-0x1.0000000123456p0 + 0x1.2345678p-1000 i)": +double: 1 +idouble: 1 +Test "Real part of: clog10 (-0x1.0000000123456p0 + 0x1.2345678p-30 i)": +double: 2 +idouble: 2 +Test "Imaginary part of: clog10 (-0x1.0000000123456p0 + 0x1.2345678p-30 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (-0x1.fp+1023 + 0x1p-1074 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (-0x1.fp+1023 - 0x1p-1074 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (-0x1.fp+127 + 0x1p-149 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (-0x1.fp+127 - 0x1p-149 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (-0x1p-1074 + 0x1.fp+1023 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (-0x1p-1074 - 0x1.fp+1023 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (-0x1p-149 + 0x1.fp+127 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (-0x1p-149 - 0x1.fp+127 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (-1.0 + 0x1.234566p-20 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (-2 - 3 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (-3 + inf i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (-3 - inf i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (-inf + 0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (-inf + 1 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (-inf + inf i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (-inf - 0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (-inf - 1 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (0 + inf i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (0 - inf i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: clog10 (0x0.fffffffffffff8p0 + 0x0.fffffffffffff8p-1000 i)": +double: 1 +idouble: 1 +Test "Real part of: clog10 (0x0.ffffffp0 + 0x0.ffffffp-100 i)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +Test "Real part of: clog10 (0x1.000566p0 + 0x1.234p-10 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (0x1.000566p0 + 0x1.234p-10 i)": +double: 1 +idouble: 1 +Test "Real part of: clog10 (0x1.000566p0 + 0x1.234p-100 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (0x1.234566p-30 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (0x1.234566p-50 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (0x1.234566p-60 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (0x1.fffffep+127 + 0x1.fffffep+127 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: clog10 (0x1.fffffep+127 + 1.0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (0x1.fffffffffffffp+1023 + 0x1.fffffffffffffp+1023 i)": +double: 1 +idouble: 1 +Test "Real part of: clog10 (0x10673dd0f2481p-51 + 0x7ef1d17cefbd2p-51 i)": +double: 1 +idouble: 1 +Test "Real part of: clog10 (0x1367a310575591p-54 + 0x3cfcc0a0541f60p-54 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (0x1367a310575591p-54 + 0x3cfcc0a0541f60p-54 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (0x164c74eea876p-45 + 0x16f393482f77p-45 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (0x1a6p-10 + 0x3a5p-10 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (0x1p-1073 + 0x1p-1073 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (0x1p-1074 + 0x1.fp+1023 i)": +double: 1 +idouble: 1 +Test "Real part of: clog10 (0x1p-1074 + 0x1p-1074 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (0x1p-1074 + 0x1p-1074 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (0x1p-1074 - 0x1.fp+1023 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (0x1p-147 + 0x1p-147 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (0x1p-149 + 0x1.fp+127 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (0x1p-149 + 0x1p-149 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (0x1p-149 - 0x1.fp+127 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (0x1p-509 + 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (0x1p-510 + 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (0x1p-511 + 1.0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (0x1p-61 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (0x1p-62 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (0x1p-63 + 1.0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: clog10 (0x2818p-15 + 0x798fp-15 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (0x2818p-15 + 0x798fp-15 i)": +float: 1 +ifloat: 1 +Test "Real part of: clog10 (0x2dd46725bp-35 + 0x7783a1284p-35 i)": +double: 1 +idouble: 1 +Test "Real part of: clog10 (0x2ede88p-23 + 0x771c3fp-23 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (0x2ede88p-23 + 0x771c3fp-23 i)": +double: 1 +idouble: 1 +Test "Real part of: clog10 (0x4447d7175p-35 + 0x6c445e00ap-35 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (0x5b06b680ea2ccp-52 + 0xef452b965da9fp-52 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (0x9b57bp-20 + 0xcb7b4p-20 i)": +double: 1 +idouble: 1 +Test "Real part of: clog10 (0xf2p-10 + 0x3e3p-10 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (0xf2p-10 + 0x3e3p-10 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (0xfe961079616p-45 + 0x1bc37e09e6d1p-45 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (1.0 + 0x1.234566p-10 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: clog10 (3 + inf i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (3 - inf i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (inf + inf i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: clog10 (inf - inf i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +# cos +Test "cos (0x1p+120)": +float: 1 +ifloat: 1 +Test "cos (0x7p+0)": +float: 1 +ifloat: 1 +Test "cos (0x8p+124)": +float: 1 +ifloat: 1 +Test "cos (0xc.d4967p-4)": +float: 1 +ifloat: 1 + +# cos_tonearest +Test "cos_tonearest (0x1p+120)": +float: 1 +ifloat: 1 +Test "cos_tonearest (0x7p+0)": +float: 1 +ifloat: 1 +Test "cos_tonearest (0x8p+124)": +float: 1 +ifloat: 1 +Test "cos_tonearest (0xc.d4967p-4)": +float: 1 +ifloat: 1 + +# cosh +Test "cosh (-0x1p+0)": +float: 1 +ifloat: 1 +Test "cosh (-0x2.c5e3acp+8)": +double: 1 +idouble: 1 +Test "cosh (-0x2.c679dp+8)": +double: 1 +idouble: 1 +Test "cosh (0x2.c5e3acp+8)": +double: 1 +idouble: 1 +Test "cosh (0x2.c679dp+8)": +double: 1 +idouble: 1 + +# cosh_tonearest +Test "cosh_tonearest (-0x1p+0)": +float: 1 +ifloat: 1 +Test "cosh_tonearest (-0x2.c5e3acp+8)": +double: 1 +idouble: 1 +Test "cosh_tonearest (-0x2.c679dp+8)": +double: 1 +idouble: 1 +Test "cosh_tonearest (0x2.c5e3acp+8)": +double: 1 +idouble: 1 +Test "cosh_tonearest (0x2.c679dp+8)": +double: 1 +idouble: 1 + +# cpow +Test "Real part of: cpow (0x2p+0 + 0x3p+0 i, 0x4p+0 + +0 i)": +double: 1 +float: 4 +idouble: 1 +ifloat: 4 +Test "Imaginary part of: cpow (0x2p+0 + 0x3p+0 i, 0x4p+0 + +0 i)": +float: 2 +ifloat: 2 +Test "Real part of: cpow (0xcp-4 + 0x1.4p+0 i, +0 + 0x1p+0 i)": +float: 1 +ifloat: 1 +Test "Real part of: cpow (0xcp-4 + 0x1.4p+0 i, 0x1p+0 + 0x1p+0 i)": +double: 2 +float: 3 +idouble: 2 +ifloat: 3 +Test "Real part of: cpow (0xcp-4 + 0x1.4p+0 i, 0xcp-4 + 0x1.4p+0 i)": +double: 1 +float: 4 +idouble: 1 +ifloat: 4 + +# csin +Test "Real part of: csin (-0.75 + 710.5 i)": +double: 1 +idouble: 1 +Test "Real part of: csin (-0.75 + 89.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: csin (-0.75 - 710.5 i)": +double: 1 +idouble: 1 +Test "Real part of: csin (-0.75 - 89.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: csin (0.75 + 710.5 i)": +double: 1 +idouble: 1 +Test "Real part of: csin (0.75 + 89.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: csin (0.75 - 710.5 i)": +double: 1 +idouble: 1 +Test "Real part of: csin (0.75 - 89.5 i)": +float: 1 +ifloat: 1 +Test "Real part of: csin (0x1p-1074 + 1440 i)": +double: 1 +idouble: 1 + +# csinh +Test "Imaginary part of: csinh (-2 - 3 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: csinh (-710.5 + 0.75 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: csinh (-710.5 - 0.75 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: csinh (-89.5 + 0.75 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: csinh (-89.5 - 0.75 i)": +float: 1 +ifloat: 1 +Test "Real part of: csinh (0.75 + 1.25 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: csinh (0.75 + 1.25 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: csinh (1440 + 0x1p-1074 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: csinh (710.5 + 0.75 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: csinh (710.5 - 0.75 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: csinh (89.5 + 0.75 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: csinh (89.5 - 0.75 i)": +float: 1 +ifloat: 1 + +# csqrt +Test "Real part of: csqrt (-0x2p+0 + 0x3p+0 i)": +float: 1 +ifloat: 1 +Test "Real part of: csqrt (-0x2p+0 - 0x3p+0 i)": +float: 1 +ifloat: 1 +Test "Real part of: csqrt (-0x4.000008p-128 - 0x4.000008p-128 i)": +double: 1 +idouble: 1 +Test "Real part of: csqrt (-0x8p-152 - 0x4p-1076 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: csqrt (0x4.000008p-128 + 0x4.000008p-128 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: csqrt (0x4p-1076 + 0xf.fffffp+124 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: csqrt (0x8p+1020 + 0x8p-152 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: csqrt (0x8p+124 + 0x8p-152 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: csqrt (0x8p-152 + 0x4p-1076 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: csqrt (0x8p-152 + 0x8p-1076 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: csqrt (0x8p-152 + 0xf.fffffp+124 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: csqrt (0xf.ffffffffffff8p+1020 + 0x8p+1020 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: csqrt (0xf.ffffffffffff8p+1020 + 0x8p-152 i)": +double: 1 +idouble: 1 +Test "Real part of: csqrt (0xf.ffffffffffff8p+1020 + 0xf.ffffffffffff8p+1020 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: csqrt (0xf.ffffffffffff8p+1020 + 0xf.ffffffffffff8p+1020 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: csqrt (0xf.ffffffffffff8p+1020 + 0xf.fffffp+124 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: csqrt (0xf.fffffp+124 + 0x1p+0 i)": +float: 1 +ifloat: 1 + +# ctan +Test "Real part of: ctan (-0x2p+0 - 0x3p+0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ctan (-0x2p+0 - 0x3p+0 i)": +double: 1 +idouble: 1 +Test "Real part of: ctan (0x1.921fb4p+0 + +0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: ctan (0x1.921fb4p+0 + 0x4p-1076 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctan (0x1.921fb4p+0 + 0x4p-1076 i)": +double: 1 +idouble: 1 +Test "Real part of: ctan (0x1.921fb4p+0 + 0x8p-152 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: ctan (0x1.921fb4p+0 + 0x8p-152 i)": +double: 1 +idouble: 1 +Test "Real part of: ctan (0x1.921fb54442d19p+0 + +0 i)": +double: 1 +idouble: 1 +Test "Real part of: ctan (0x1.921fb54442d19p+0 + 0x4p-1076 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctan (0x1.921fb54442d19p+0 + 0x4p-1076 i)": +double: 2 +idouble: 2 +Test "Real part of: ctan (0x1.921fb54442d19p+0 + 0x8p-152 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctan (0x1.921fb54442d19p+0 + 0x8p-152 i)": +double: 2 +idouble: 2 +Test "Real part of: ctan (0x1.921fb6p+0 + +0 i)": +float: 1 +ifloat: 1 +Test "Real part of: ctan (0x1.921fb6p+0 + 0x8p-152 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ctan (0x1.921fb6p+0 + 0x8p-152 i)": +float: 1 +ifloat: 1 +Test "Real part of: ctan (0x8p+1020 + 0x1p+0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctan (0x8p+124 + 0x1p+0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctan (0xcp-4 + 0x1.4p+0 i)": +double: 1 +idouble: 1 +Test "Real part of: ctan (0xf.ffffffffffff8p+1020 + 0x1p+0 i)": +double: 1 +idouble: 1 +Test "Real part of: ctan (0xf.fffffp+124 + 0x1p+0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctan (0xf.fffffp+124 + 0x1p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +# ctan_tonearest +Test "Real part of: ctan_tonearest (-0x2p+0 - 0x3p+0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ctan_tonearest (-0x2p+0 - 0x3p+0 i)": +double: 1 +idouble: 1 +Test "Real part of: ctan_tonearest (0x1.921fb4p+0 + +0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: ctan_tonearest (0x1.921fb4p+0 + 0x4p-1076 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctan_tonearest (0x1.921fb4p+0 + 0x4p-1076 i)": +double: 1 +idouble: 1 +Test "Real part of: ctan_tonearest (0x1.921fb4p+0 + 0x8p-152 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: ctan_tonearest (0x1.921fb4p+0 + 0x8p-152 i)": +double: 1 +idouble: 1 +Test "Real part of: ctan_tonearest (0x1.921fb54442d19p+0 + +0 i)": +double: 1 +idouble: 1 +Test "Real part of: ctan_tonearest (0x1.921fb54442d19p+0 + 0x4p-1076 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctan_tonearest (0x1.921fb54442d19p+0 + 0x4p-1076 i)": +double: 2 +idouble: 2 +Test "Real part of: ctan_tonearest (0x1.921fb54442d19p+0 + 0x8p-152 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctan_tonearest (0x1.921fb54442d19p+0 + 0x8p-152 i)": +double: 2 +idouble: 2 +Test "Real part of: ctan_tonearest (0x1.921fb6p+0 + +0 i)": +float: 1 +ifloat: 1 +Test "Real part of: ctan_tonearest (0x1.921fb6p+0 + 0x8p-152 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ctan_tonearest (0x1.921fb6p+0 + 0x8p-152 i)": +float: 1 +ifloat: 1 +Test "Real part of: ctan_tonearest (0x8p+1020 + 0x1p+0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctan_tonearest (0x8p+124 + 0x1p+0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctan_tonearest (0xcp-4 + 0x1.4p+0 i)": +double: 1 +idouble: 1 +Test "Real part of: ctan_tonearest (0xf.ffffffffffff8p+1020 + 0x1p+0 i)": +double: 1 +idouble: 1 +Test "Real part of: ctan_tonearest (0xf.fffffp+124 + 0x1p+0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctan_tonearest (0xf.fffffp+124 + 0x1p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +# ctanh +Test "Imaginary part of: ctanh (+0 + 0x1.921fb4p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: ctanh (+0 + 0x1.921fb54442d19p+0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctanh (+0 + 0x1.921fb6p+0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ctanh (+0 + 0xc.90fdaa22168cp-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctanh (+0 + 0xc.90fdap-4 i)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +Test "Imaginary part of: ctanh (+0 + 0xc.90fdbp-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: ctanh (-0x2p+0 - 0x3p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: ctanh (-0x2p+0 - 0x3p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: ctanh (0x1p+0 + 0x8p+1020 i)": +double: 1 +idouble: 1 +Test "Real part of: ctanh (0x1p+0 + 0x8p+124 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctanh (0x1p+0 + 0xf.ffffffffffff8p+1020 i)": +double: 1 +idouble: 1 +Test "Real part of: ctanh (0x1p+0 + 0xf.fffffp+124 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: ctanh (0x1p+0 + 0xf.fffffp+124 i)": +double: 1 +idouble: 1 +Test "Real part of: ctanh (0x4p-1076 + 0x1.921fb4p+0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctanh (0x4p-1076 + 0x1.921fb4p+0 i)": +double: 1 +idouble: 1 +Test "Real part of: ctanh (0x4p-1076 + 0x1.921fb54442d19p+0 i)": +double: 2 +idouble: 2 +Test "Imaginary part of: ctanh (0x4p-1076 + 0x1.921fb54442d19p+0 i)": +double: 1 +idouble: 1 +Test "Real part of: ctanh (0x8p-152 + 0x1.921fb4p+0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctanh (0x8p-152 + 0x1.921fb4p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: ctanh (0x8p-152 + 0x1.921fb54442d19p+0 i)": +double: 2 +idouble: 2 +Test "Imaginary part of: ctanh (0x8p-152 + 0x1.921fb54442d19p+0 i)": +double: 1 +idouble: 1 +Test "Real part of: ctanh (0x8p-152 + 0x1.921fb6p+0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ctanh (0x8p-152 + 0x1.921fb6p+0 i)": +float: 1 +ifloat: 1 +Test "Real part of: ctanh (0xcp-4 + 0x1.4p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: ctanh (0xcp-4 + 0x1.4p+0 i)": +float: 2 +ifloat: 2 + +# ctanh_tonearest +Test "Imaginary part of: ctanh_tonearest (+0 + 0x1.921fb4p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: ctanh_tonearest (+0 + 0x1.921fb54442d19p+0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctanh_tonearest (+0 + 0x1.921fb6p+0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ctanh_tonearest (+0 + 0xc.90fdaa22168cp-4 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctanh_tonearest (+0 + 0xc.90fdap-4 i)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +Test "Imaginary part of: ctanh_tonearest (+0 + 0xc.90fdbp-4 i)": +float: 1 +ifloat: 1 +Test "Real part of: ctanh_tonearest (-0x2p+0 - 0x3p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: ctanh_tonearest (-0x2p+0 - 0x3p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: ctanh_tonearest (0x1p+0 + 0x8p+1020 i)": +double: 1 +idouble: 1 +Test "Real part of: ctanh_tonearest (0x1p+0 + 0x8p+124 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctanh_tonearest (0x1p+0 + 0xf.ffffffffffff8p+1020 i)": +double: 1 +idouble: 1 +Test "Real part of: ctanh_tonearest (0x1p+0 + 0xf.fffffp+124 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: ctanh_tonearest (0x1p+0 + 0xf.fffffp+124 i)": +double: 1 +idouble: 1 +Test "Real part of: ctanh_tonearest (0x4p-1076 + 0x1.921fb4p+0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctanh_tonearest (0x4p-1076 + 0x1.921fb4p+0 i)": +double: 1 +idouble: 1 +Test "Real part of: ctanh_tonearest (0x4p-1076 + 0x1.921fb54442d19p+0 i)": +double: 2 +idouble: 2 +Test "Imaginary part of: ctanh_tonearest (0x4p-1076 + 0x1.921fb54442d19p+0 i)": +double: 1 +idouble: 1 +Test "Real part of: ctanh_tonearest (0x8p-152 + 0x1.921fb4p+0 i)": +double: 1 +idouble: 1 +Test "Imaginary part of: ctanh_tonearest (0x8p-152 + 0x1.921fb4p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Real part of: ctanh_tonearest (0x8p-152 + 0x1.921fb54442d19p+0 i)": +double: 2 +idouble: 2 +Test "Imaginary part of: ctanh_tonearest (0x8p-152 + 0x1.921fb54442d19p+0 i)": +double: 1 +idouble: 1 +Test "Real part of: ctanh_tonearest (0x8p-152 + 0x1.921fb6p+0 i)": +float: 1 +ifloat: 1 +Test "Imaginary part of: ctanh_tonearest (0x8p-152 + 0x1.921fb6p+0 i)": +float: 1 +ifloat: 1 +Test "Real part of: ctanh_tonearest (0xcp-4 + 0x1.4p+0 i)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "Imaginary part of: ctanh_tonearest (0xcp-4 + 0x1.4p+0 i)": +float: 2 +ifloat: 2 + +# erf +Test "erf (0x1.4p+0)": +double: 1 +idouble: 1 + +# erfc +Test "erfc (-0x8p-4)": +float: 1 +ifloat: 1 +Test "erfc (0x2p+0)": +double: 1 +idouble: 1 +Test "erfc (0x3.ee6078p+0)": +double: 1 +idouble: 1 +Test "erfc (0x4.2p+0)": +double: 1 +idouble: 1 +Test "erfc (0x7.fe8008p+0)": +float: 1 +ifloat: 1 +Test "erfc (0x7.fffd6p+0)": +float: 1 +ifloat: 1 + +# exp10 +Test "exp10 (-0x1.31p+8)": +double: 1 +idouble: 1 +Test "exp10 (-0x1p+0)": +double: 1 +idouble: 1 +Test "exp10 (-0x2.4p+4)": +double: 1 +idouble: 1 +Test "exp10 (0x2.4p+4)": +double: 1 +idouble: 1 +Test "exp10 (0x3p+0)": +double: 1 +idouble: 1 + +# exp10_tonearest +Test "exp10_tonearest (-0x1.31p+8)": +double: 1 +idouble: 1 +Test "exp10_tonearest (-0x1p+0)": +double: 1 +idouble: 1 +Test "exp10_tonearest (-0x2.4p+4)": +double: 1 +idouble: 1 +Test "exp10_tonearest (0x2.4p+4)": +double: 1 +idouble: 1 +Test "exp10_tonearest (0x3p+0)": +double: 1 +idouble: 1 + +# expm1 +Test "expm1 (0x1.f4p+8)": +double: 1 +idouble: 1 +Test "expm1 (0x1p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "expm1 (0xcp-4)": +double: 1 +idouble: 1 + +# expm1_tonearest +Test "expm1_tonearest (0x1.f4p+8)": +double: 1 +idouble: 1 +Test "expm1_tonearest (0x1p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "expm1_tonearest (0xcp-4)": +double: 1 +idouble: 1 + +# gamma +Test "gamma (-0x1p-20)": +double: 1 +idouble: 1 +Test "gamma (-0x2p-16)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "gamma (-0x4p-12)": +double: 1 +idouble: 1 +Test "gamma (-0x8p-8)": +double: 1 +idouble: 1 +Test "gamma (0x4p-12)": +float: 1 +ifloat: 1 +Test "gamma (0x4p-32)": +double: 1 +idouble: 1 +Test "gamma (0xb.333333333333p-4)": +double: 1 +idouble: 1 +Test "gamma (0xb.33333p-4)": +double: 1 +idouble: 1 + +# hypot +Test "hypot (-0xb.33334p-4, -0xc.6666666666668p+0)": +double: 1 +idouble: 1 +Test "hypot (-0xb.33334p-4, 0xc.6666666666668p+0)": +double: 1 +idouble: 1 +Test "hypot (-0xc.6666666666668p+0, -0xb.33334p-4)": +double: 1 +idouble: 1 +Test "hypot (-0xc.6666666666668p+0, 0xb.33334p-4)": +double: 1 +idouble: 1 +Test "hypot (0xb.33334p-4, -0xc.6666666666668p+0)": +double: 1 +idouble: 1 +Test "hypot (0xb.33334p-4, 0xc.6666666666668p+0)": +double: 1 +idouble: 1 +Test "hypot (0xc.6666666666668p+0, -0xb.33334p-4)": +double: 1 +idouble: 1 +Test "hypot (0xc.6666666666668p+0, 0xb.33334p-4)": +double: 1 +idouble: 1 + +# j0 +Test "j0 (-0x4p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "j0 (-0xf.fffffp+124)": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 +Test "j0 (0x2p+0)": +float: 2 +ifloat: 2 +Test "j0 (0x4p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "j0 (0x8p+0)": +float: 1 +ifloat: 1 +Test "j0 (0xap+0)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +Test "j0 (0xcp-4)": +float: 1 +ifloat: 1 +Test "j0 (0xe.be71dp+104)": +float: 2 +ifloat: 2 +Test "j0 (0xf.fffffp+124)": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 + +# j1 +Test "j1 (0x1.ff00000000002p+840)": +double: 1 +idouble: 1 +Test "j1 (0x2p+0)": +double: 1 +idouble: 1 +Test "j1 (0x4.ffcp+72)": +double: 1 +idouble: 1 +Test "j1 (0x8p+0)": +double: 1 +idouble: 1 +Test "j1 (0xap+0)": +float: 2 +ifloat: 2 +Test "j1 (0xf.ffffffffffff8p+1020)": +double: 1 +idouble: 1 +Test "j1 (0xf.fffffp+124)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +# jn +Test "jn (0, -0x4p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "jn (0, 0x2p+0)": +float: 2 +ifloat: 2 +Test "jn (0, 0x4p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "jn (0, 0x8p+0)": +float: 1 +ifloat: 1 +Test "jn (0, 0xap+0)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +Test "jn (0, 0xcp-4)": +float: 1 +ifloat: 1 +Test "jn (1, 0x2p+0)": +double: 1 +idouble: 1 +Test "jn (1, 0x8p+0)": +double: 1 +idouble: 1 +Test "jn (1, 0xap+0)": +float: 2 +ifloat: 2 +Test "jn (10, 0x2p+0)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +Test "jn (10, 0x2p-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "jn (10, 0xap+0)": +double: 4 +float: 2 +idouble: 4 +ifloat: 2 +Test "jn (10, 0xcp-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "jn (2, 0x2.67a2a4p+0)": +float: 1 +ifloat: 1 +Test "jn (2, 0x2.67a2a5d2e3682p+0)": +double: 1 +idouble: 1 +Test "jn (2, 0x2.67a2a5d2e368p+0)": +double: 2 +idouble: 2 +Test "jn (2, 0x2.67a2a8p+0)": +double: 1 +float: 3 +idouble: 1 +ifloat: 3 +Test "jn (2, 0x8p+124)": +double: 1 +idouble: 1 +Test "jn (2, 0xf.fffb1p+96)": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 +Test "jn (2, 0xf.fffffp+124)": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 +Test "jn (3, 0x2.67a2a4p+0)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +Test "jn (3, 0x2.67a2a5d2e3682p+0)": +double: 1 +idouble: 1 +Test "jn (3, 0x2.67a2a5d2e368p+0)": +double: 3 +idouble: 3 +Test "jn (3, 0x2.67a2a8p+0)": +double: 1 +float: 3 +idouble: 1 +ifloat: 3 +Test "jn (3, 0x2p+0)": +float: 1 +ifloat: 1 +Test "jn (3, 0x2p-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "jn (3, 0xap+0)": +double: 3 +idouble: 3 +Test "jn (3, 0xcp-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "jn (4, 0x2.67a2a4p+0)": +float: 1 +ifloat: 1 +Test "jn (4, 0x2.67a2a5d2e3682p+0)": +double: 1 +idouble: 1 +Test "jn (4, 0x2.67a2a5d2e368p+0)": +double: 1 +idouble: 1 +Test "jn (4, 0x2.67a2a8p+0)": +float: 1 +ifloat: 1 +Test "jn (5, 0x2.67a2a4p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "jn (5, 0x2.67a2a5d2e3682p+0)": +double: 1 +idouble: 1 +Test "jn (5, 0x2.67a2a5d2e368p+0)": +double: 2 +idouble: 2 +Test "jn (5, 0x2.67a2a8p+0)": +float: 2 +ifloat: 2 +Test "jn (6, 0x2.67a2a4p+0)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +Test "jn (6, 0x2.67a2a5d2e3682p+0)": +double: 2 +idouble: 2 +Test "jn (6, 0x2.67a2a5d2e368p+0)": +double: 4 +idouble: 4 +Test "jn (6, 0x2.67a2a8p+0)": +double: 2 +float: 3 +idouble: 2 +ifloat: 3 +Test "jn (7, 0x2.67a2a4p+0)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +Test "jn (7, 0x2.67a2a5d2e368p+0)": +double: 3 +idouble: 3 +Test "jn (7, 0x2.67a2a8p+0)": +double: 2 +float: 3 +idouble: 2 +ifloat: 3 +Test "jn (8, 0x2.67a2a4p+0)": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 +Test "jn (8, 0x2.67a2a5d2e3682p+0)": +double: 1 +idouble: 1 +Test "jn (8, 0x2.67a2a5d2e368p+0)": +double: 3 +idouble: 3 +Test "jn (8, 0x2.67a2a8p+0)": +double: 2 +float: 4 +idouble: 2 +ifloat: 4 +Test "jn (9, 0x2.67a2a4p+0)": +double: 3 +float: 3 +idouble: 3 +ifloat: 3 +Test "jn (9, 0x2.67a2a5d2e3682p+0)": +double: 4 +idouble: 4 +Test "jn (9, 0x2.67a2a5d2e368p+0)": +double: 1 +idouble: 1 +Test "jn (9, 0x2.67a2a8p+0)": +double: 3 +float: 3 +idouble: 3 +ifloat: 3 + +# lgamma +Test "lgamma (-0x1p-20)": +double: 1 +idouble: 1 +Test "lgamma (-0x2p-16)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "lgamma (-0x4p-12)": +double: 1 +idouble: 1 +Test "lgamma (-0x8p-8)": +double: 1 +idouble: 1 +Test "lgamma (0x4p-12)": +float: 1 +ifloat: 1 +Test "lgamma (0x4p-32)": +double: 1 +idouble: 1 +Test "lgamma (0xb.333333333333p-4)": +double: 1 +idouble: 1 +Test "lgamma (0xb.33333p-4)": +double: 1 +idouble: 1 + +# log +Test "log (0x2.b7e15p+0)": +float: 1 +ifloat: 1 + +# log10 +Test "log10 (0x2.b7e154p+0)": +float: 1 +ifloat: 1 +Test "log10 (0xcp-4)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 + +# log1p +Test "log1p (-0x4p-4)": +float: 1 +ifloat: 1 +Test "log1p (0x1.b7e15p+0)": +float: 1 +ifloat: 1 + +# pow +Test "pow (0x1.000002p+0, 0x1p+24)": +float: 1 +ifloat: 1 +Test "pow (0xf.fffffp-4, -0x1p+24)": +float: 1 +ifloat: 1 +Test "pow (0xf.fffffp-4, 0x1p+24)": +float: 1 +ifloat: 1 + +# pow10 +Test "pow10 (-0x1.31p+8)": +double: 1 +idouble: 1 +Test "pow10 (-0x1p+0)": +double: 1 +idouble: 1 +Test "pow10 (-0x2.4p+4)": +double: 1 +idouble: 1 +Test "pow10 (0x2.4p+4)": +double: 1 +idouble: 1 +Test "pow10 (0x3p+0)": +double: 1 +idouble: 1 + +# pow_tonearest +Test "pow_tonearest (0x1.000002p+0, 0x1p+24)": +float: 1 +ifloat: 1 +Test "pow_tonearest (0xf.fffffp-4, -0x1p+24)": +float: 1 +ifloat: 1 +Test "pow_tonearest (0xf.fffffp-4, 0x1p+24)": +float: 1 +ifloat: 1 + +# sin +Test "sin (0x1p+0)": +float: 1 +ifloat: 1 + +# sin_tonearest +Test "sin_tonearest (0x1p+0)": +float: 1 +ifloat: 1 + +# sincos +Test "sincos (0x1.0c1522p+0) extra output 1": +float: 1 +ifloat: 1 +Test "sincos (0x1p+120) extra output 2": +float: 1 +ifloat: 1 +Test "sincos (0x8.60a92p-4) extra output 2": +float: 1 +ifloat: 1 +Test "sincos (0x8p+124) extra output 2": +float: 1 +ifloat: 1 +Test "sincos (0xc.d4967p-4) extra output 2": +float: 1 +ifloat: 1 + +# tgamma +Test "tgamma (-0x1.000002p+0)": +double: 2 +idouble: 2 +Test "tgamma (-0x1.3ffffep+4)": +float: 2 +ifloat: 2 +Test "tgamma (-0x1.4000000000001p+4)": +double: 1 +idouble: 1 +Test "tgamma (-0x1.400002p+4)": +float: 1 +ifloat: 1 +Test "tgamma (-0x1.dffffep+4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tgamma (-0x1.e000000000001p+4)": +double: 3 +idouble: 3 +Test "tgamma (-0x1.e00002p+4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tgamma (-0x2.0000000000002p+0)": +double: 1 +idouble: 1 +Test "tgamma (-0x2.000004p+0)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +Test "tgamma (-0x2.146544p+4)": +float: 2 +ifloat: 2 +Test "tgamma (-0x2.7fffffffffffep+4)": +double: 1 +idouble: 1 +Test "tgamma (-0x2.8000000000002p+4)": +double: 1 +idouble: 1 +Test "tgamma (-0x2.800004p+4)": +double: 2 +idouble: 2 +Test "tgamma (-0x2.8p+0)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +Test "tgamma (-0x2.900004p+4)": +double: 1 +idouble: 1 +Test "tgamma (-0x2.9ffffcp+4)": +double: 1 +idouble: 1 +Test "tgamma (-0x2.fffffcp+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tgamma (-0x3.000004p+0)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +Test "tgamma (-0x3.1ffffcp+4)": +double: 1 +idouble: 1 +Test "tgamma (-0x3.1fffffffffffep+4)": +double: 3 +idouble: 3 +Test "tgamma (-0x3.8p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tgamma (-0x3.fffffcp+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tgamma (-0x3.ffffffffffffep+0)": +double: 2 +idouble: 2 +Test "tgamma (-0x4.000008p+0)": +float: 1 +ifloat: 1 +Test "tgamma (-0x4.8p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tgamma (-0x4.fffff8p+0)": +double: 1 +idouble: 1 +Test "tgamma (-0x4.ffffffffffffcp+0)": +double: 1 +idouble: 1 +Test "tgamma (-0x5.000008p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tgamma (-0x5.8p+0)": +double: 1 +idouble: 1 +Test "tgamma (-0x5.ffffffffffffcp+0)": +double: 1 +idouble: 1 +Test "tgamma (-0x6.000008p+0)": +float: 2 +ifloat: 2 +Test "tgamma (-0x6.3fffffffffffcp+4)": +double: 2 +idouble: 2 +Test "tgamma (-0x6.4000000000004p+4)": +double: 1 +idouble: 1 +Test "tgamma (-0x6.400008p+4)": +double: 1 +idouble: 1 +Test "tgamma (-0x6.8p+0)": +float: 1 +ifloat: 1 +Test "tgamma (-0x6.fffff8p+0)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +Test "tgamma (-0x6.ffffffffffffcp+0)": +double: 4 +idouble: 4 +Test "tgamma (-0x7.0000000000004p+0)": +double: 3 +idouble: 3 +Test "tgamma (-0x7.000008p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tgamma (-0x7.8p+0)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +Test "tgamma (-0x7.fffff8p+0)": +double: 3 +float: 1 +idouble: 3 +ifloat: 1 +Test "tgamma (-0x7.ffffffffffffcp+0)": +double: 3 +idouble: 3 +Test "tgamma (-0x8.00001p+0)": +double: 2 +idouble: 2 +Test "tgamma (-0x8.8p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tgamma (-0x8p-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tgamma (-0x9.6000000000008p+4)": +double: 1 +idouble: 1 +Test "tgamma (-0x9.60001p+4)": +double: 1 +idouble: 1 +Test "tgamma (-0x9.8p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tgamma (-0x9.ffffffffffff8p+0)": +double: 1 +idouble: 1 +Test "tgamma (-0x9.fffffp+0)": +float: 1 +ifloat: 1 +Test "tgamma (-0xa.00001p+0)": +double: 1 +idouble: 1 +Test "tgamma (-0xa.c0001p+4)": +double: 1 +idouble: 1 +Test "tgamma (-0xf.ffffffffffff8p-4)": +double: 1 +idouble: 1 +Test "tgamma (-0xf.fffffp-4)": +float: 1 +ifloat: 1 +Test "tgamma (0x1.28p+4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tgamma (0x1.38p+4)": +double: 2 +idouble: 2 +Test "tgamma (0x1.78p+4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tgamma (0x1.d8p+4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tgamma (0x1.e8p+4)": +float: 1 +ifloat: 1 +Test "tgamma (0x1.fffffep+0)": +float: 1 +ifloat: 1 +Test "tgamma (0x1.fffffffffffffp+0)": +double: 1 +idouble: 1 +Test "tgamma (0x1p-24)": +float: 1 +ifloat: 1 +Test "tgamma (0x2.18p+4)": +float: 1 +ifloat: 1 +Test "tgamma (0x2.28p+4)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +Test "tgamma (0x2.30a43cp+4)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +Test "tgamma (0x2.8p+0)": +float: 2 +ifloat: 2 +Test "tgamma (0x2.fffffcp+0)": +float: 3 +ifloat: 3 +Test "tgamma (0x3.8p+0)": +float: 2 +ifloat: 2 +Test "tgamma (0x3.fffffcp+0)": +float: 1 +ifloat: 1 +Test "tgamma (0x3.ffffffffffffep+0)": +double: 1 +idouble: 1 +Test "tgamma (0x3p+0)": +float: 1 +ifloat: 1 +Test "tgamma (0x4.0000000000004p+0)": +double: 1 +idouble: 1 +Test "tgamma (0x4.8p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tgamma (0x4.ffffffffffffcp+0)": +double: 1 +idouble: 1 +Test "tgamma (0x4p+0)": +float: 1 +ifloat: 1 +Test "tgamma (0x5.0000000000004p+0)": +double: 1 +idouble: 1 +Test "tgamma (0x5.000008p+0)": +float: 2 +ifloat: 2 +Test "tgamma (0x5.fffff8p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tgamma (0x6.0000000000004p+0)": +double: 1 +idouble: 1 +Test "tgamma (0x6.000008p+0)": +float: 2 +ifloat: 2 +Test "tgamma (0x6.8p+0)": +float: 1 +ifloat: 1 +Test "tgamma (0x6.fffff8p+0)": +double: 1 +idouble: 1 +Test "tgamma (0x6.ffffffffffffcp+0)": +double: 4 +idouble: 4 +Test "tgamma (0x6p+0)": +float: 1 +ifloat: 1 +Test "tgamma (0x7.0000000000004p+0)": +double: 4 +idouble: 4 +Test "tgamma (0x7.000008p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tgamma (0x7.8p+0)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +Test "tgamma (0x7.fffff8p+0)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +Test "tgamma (0x7.ffffffffffffcp+0)": +double: 2 +idouble: 2 +Test "tgamma (0x7p+0)": +double: 1 +idouble: 1 +Test "tgamma (0x8.00001p+0)": +double: 2 +idouble: 2 +Test "tgamma (0x8.8p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "tgamma (0x8p+0)": +double: 1 +idouble: 1 +Test "tgamma (0x8p-4)": +float: 1 +ifloat: 1 +Test "tgamma (0x8p-56)": +double: 1 +idouble: 1 +Test "tgamma (0x9.8p+0)": +double: 1 +idouble: 1 +Test "tgamma (0x9p+0)": +double: 1 +idouble: 1 +Test "tgamma (0xa.b9fd72b0fb238p+4)": +double: 1 +idouble: 1 +Test "tgamma (0xa.b9fd7p+4)": +double: 2 +idouble: 2 +Test "tgamma (0xap+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +# y0 +Test "y0 (0x1.8p+0)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +Test "y0 (0x1.ff00000000002p+840)": +double: 1 +idouble: 1 +Test "y0 (0x1p+0)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +Test "y0 (0x1p-20)": +float: 1 +ifloat: 1 +Test "y0 (0x1p-40)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "y0 (0x1p-80)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "y0 (0x4.ffcp+72)": +double: 1 +idouble: 1 +Test "y0 (0x4p-112)": +double: 1 +idouble: 1 +Test "y0 (0x4p-12)": +double: 1 +idouble: 1 +Test "y0 (0x4p-32)": +float: 1 +ifloat: 1 +Test "y0 (0x4p-52)": +float: 1 +ifloat: 1 +Test "y0 (0x4p-72)": +double: 1 +idouble: 1 +Test "y0 (0x8p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "y0 (0xap+0)": +float: 1 +ifloat: 1 +Test "y0 (0xf.ffffffffffff8p+1020)": +double: 1 +idouble: 1 +Test "y0 (0xf.fffffp+124)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +# y1 +Test "y1 (0x1.8p+0)": +float: 1 +ifloat: 1 +Test "y1 (0x2p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "y1 (0x2p-4)": +double: 1 +idouble: 1 +Test "y1 (0x4p-12)": +double: 1 +idouble: 1 +Test "y1 (0x8p+0)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +Test "y1 (0x9.3f102p+96)": +double: 1 +idouble: 1 +Test "y1 (0xap+0)": +double: 3 +float: 1 +idouble: 3 +ifloat: 1 +Test "y1 (0xf.fffffp+124)": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 + +# yn +Test "yn (-10, 0x1p+0)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +Test "yn (0, 0x1.8p+0)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +Test "yn (0, 0x1p+0)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +Test "yn (0, 0x8p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "yn (0, 0xap+0)": +float: 1 +ifloat: 1 +Test "yn (1, 0x1.8p+0)": +float: 1 +ifloat: 1 +Test "yn (1, 0x2p+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "yn (1, 0x2p-4)": +double: 1 +idouble: 1 +Test "yn (1, 0x8p+0)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +Test "yn (1, 0xap+0)": +double: 3 +float: 1 +idouble: 3 +ifloat: 1 +Test "yn (10, 0x1p+0)": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +Test "yn (10, 0x2p+0)": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +Test "yn (10, 0x2p-4)": +double: 1 +idouble: 1 +Test "yn (10, 0xap+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "yn (10, 0xcp-4)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "yn (2, 0x8p+124)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "yn (2, 0xf.fffb1p+96)": +double: 1 +idouble: 1 +Test "yn (2, 0xf.ffffffffffff8p+1020)": +double: 1 +idouble: 1 +Test "yn (2, 0xf.fffffp+124)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "yn (3, 0x2p+0)": +double: 1 +idouble: 1 +Test "yn (3, 0x2p-4)": +double: 1 +idouble: 1 +Test "yn (3, 0xap+0)": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +Test "yn (3, 0xcp-4)": +double: 1 +idouble: 1 + +# Maximal error of functions: +Function: "acosh": +double: 1 +idouble: 1 + +Function: "asinh": +double: 1 +float: 1 +ifloat: 1 + +Function: "atan2": +float: 1 +ifloat: 1 + +Function: "atanh": +float: 1 +ifloat: 1 + +Function: Real part of "cacos": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 + +Function: Imaginary part of "cacos": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 + +Function: Real part of "cacosh": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 + +Function: Imaginary part of "cacosh": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 + +Function: Real part of "casin": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: Imaginary part of "casin": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 + +Function: Real part of "casinh": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 + +Function: Imaginary part of "casinh": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: Real part of "catan": +float: 1 +ifloat: 1 + +Function: Imaginary part of "catan": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: Real part of "catanh": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: Imaginary part of "catanh": +float: 1 +ifloat: 1 + +Function: "cbrt": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: Real part of "ccos": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: Imaginary part of "ccos": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: Real part of "ccosh": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: Imaginary part of "ccosh": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: Real part of "cexp": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 + +Function: Imaginary part of "cexp": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 + +Function: Real part of "clog": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: Imaginary part of "clog": +float: 1 +ifloat: 1 + +Function: Real part of "clog10": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 + +Function: Imaginary part of "clog10": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: "cos": +float: 1 +ifloat: 1 + +Function: "cos_tonearest": +float: 1 +ifloat: 1 + +Function: "cosh": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: "cosh_tonearest": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: Real part of "cpow": +double: 2 +float: 4 +idouble: 2 +ifloat: 4 + +Function: Imaginary part of "cpow": +float: 2 +ifloat: 2 + +Function: Real part of "csin": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: Real part of "csinh": +float: 1 +ifloat: 1 + +Function: Imaginary part of "csinh": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: Real part of "csqrt": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: Imaginary part of "csqrt": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: Real part of "ctan": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: Imaginary part of "ctan": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 + +Function: Real part of "ctan_tonearest": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: Imaginary part of "ctan_tonearest": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 + +Function: Real part of "ctanh": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 + +Function: Imaginary part of "ctanh": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 + +Function: Real part of "ctanh_tonearest": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 + +Function: Imaginary part of "ctanh_tonearest": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 + +Function: "erf": +double: 1 +idouble: 1 + +Function: "erfc": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: "exp10": +double: 1 +idouble: 1 + +Function: "exp10_tonearest": +double: 1 +idouble: 1 + +Function: "expm1": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: "expm1_tonearest": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: "gamma": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: "hypot": +double: 1 +idouble: 1 + +Function: "j0": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 + +Function: "j1": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 + +Function: "jn": +double: 4 +float: 4 +idouble: 4 +ifloat: 4 + +Function: "lgamma": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: "log": +float: 1 +ifloat: 1 + +Function: "log10": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 + +Function: "log1p": +float: 1 +ifloat: 1 + +Function: "pow": +float: 1 +ifloat: 1 + +Function: "pow10": +double: 1 +idouble: 1 + +Function: "pow_tonearest": +float: 1 +ifloat: 1 + +Function: "sin": +float: 1 +ifloat: 1 + +Function: "sin_tonearest": +float: 1 +ifloat: 1 + +Function: "sincos": +float: 1 +ifloat: 1 + +Function: "tgamma": +double: 4 +float: 3 +idouble: 4 +ifloat: 3 + +Function: "y0": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 + +Function: "y1": +double: 3 +float: 2 +idouble: 3 +ifloat: 2 + +Function: "yn": +double: 3 +float: 2 +idouble: 3 +ifloat: 2 + +# end of automatic generation diff --git a/sysdeps/tile/machine-gmon.h b/sysdeps/tile/machine-gmon.h new file mode 100644 index 0000000000..39ea9f472c --- /dev/null +++ b/sysdeps/tile/machine-gmon.h @@ -0,0 +1,25 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#define _MCOUNT_DECL(from, self) \ + void __mcount_internal (u_long from, u_long self) + +/* Call __mcount_internal with our the return PC for our caller, and + the return PC our caller will return to. Empty since we use an + assembly stub instead. */ +#define MCOUNT diff --git a/sysdeps/tile/math_private.h b/sysdeps/tile/math_private.h new file mode 100644 index 0000000000..90dcc3f866 --- /dev/null +++ b/sysdeps/tile/math_private.h @@ -0,0 +1,31 @@ +#ifndef _MATH_PRIVATE_H + +/* Internally, we suppress any use of exception or rounding other + than what is supported by the hardware. This does mean that some + code will silently fail to report exceptions, set rounding mode + as expected, etc., but it allows math code to compile that otherwise + wouldn't (such as math/s_fma.c) and so is valuable. + + We intentionally ignore the "exception" arguments of functions that + take an exception, since we can't even evaluate the argument + without causing a build failure. The extra level of statement + expression wrapping avoids "statement with no effect" warnings. + Since the callers don't check for errors anyway, we just claim + success in every case. + + The overrides for libc_ functions must happen before we include + the generic math_private.h, and the overrides for regular + functions must happen afterwards, to avoid clashing with + the declarations of those functions. */ + +#define libc_fesetround(rnd) ({ 0; }) +#define libc_fetestexcept(exc) ({ 0; }) +#define libc_feholdexcept_setround(env, exc) ({ (void) (env); 0; }) +#define libc_feupdateenv_test(env, exc) ({ (void) (env); 0; }) + +#include_next + +#define feraiseexcept(excepts) ({ 0; }) +#define feclearexcept(exc) ({ 0; }) + +#endif diff --git a/sysdeps/tile/memcopy.h b/sysdeps/tile/memcopy.h new file mode 100644 index 0000000000..e8326eee66 --- /dev/null +++ b/sysdeps/tile/memcopy.h @@ -0,0 +1,27 @@ +/* memcopy.h -- definitions for memory copy functions. Tile version. + Copyright (C) 2012-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include +#include + +/* Support more efficient copying on tilegx32, which supports + long long as a native 64-bit type. */ +#if defined (__tilegx__) && __WORDSIZE == 32 +# undef op_t +# define op_t unsigned long long int +#endif diff --git a/sysdeps/tile/nptl/Makefile b/sysdeps/tile/nptl/Makefile new file mode 100644 index 0000000000..0dea187cf5 --- /dev/null +++ b/sysdeps/tile/nptl/Makefile @@ -0,0 +1,20 @@ +# Copyright (C) 2002-2014 Free Software Foundation, Inc. +# This file is part of the GNU C Library. + +# The GNU C Library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. + +# The GNU C Library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. + +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library. If not, see +# . + +ifeq ($(subdir),csu) +gen-as-const-headers += tcb-offsets.sym +endif diff --git a/sysdeps/tile/nptl/pthread_spin_lock.c b/sysdeps/tile/nptl/pthread_spin_lock.c new file mode 100644 index 0000000000..9414121fb7 --- /dev/null +++ b/sysdeps/tile/nptl/pthread_spin_lock.c @@ -0,0 +1,56 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include "pthreadP.h" +#include +#include + +/* Bound point for bounded exponential backoff */ +#define BACKOFF_MAX 2048 + +/* Initial cycle delay for exponential backoff */ +#define BACKOFF_START 32 + +#ifdef __tilegx__ +/* Use cmpexch() after the initial fast-path exch to avoid + invalidating the cache line of the lock holder. */ +# define TNS(p) atomic_exchange_acq((p), 1) +# define CMPTNS(p) atomic_compare_and_exchange_val_acq((p), 1, 0) +#else +# define TNS(p) __insn_tns(p) +# define CMPTNS(p) __insn_tns(p) +# define SPR_CYCLE SPR_CYCLE_LOW /* The low 32 bits are sufficient. */ +#endif + +int +pthread_spin_lock (pthread_spinlock_t *lock) +{ + if (__builtin_expect (TNS (lock) != 0, 0)) + { + unsigned int backoff = BACKOFF_START; + while (CMPTNS (lock) != 0) + { + unsigned int start = __insn_mfspr (SPR_CYCLE); + while (__insn_mfspr (SPR_CYCLE) - start < backoff) + ; + if (backoff < BACKOFF_MAX) + backoff *= 2; + } + } + return 0; +} diff --git a/sysdeps/tile/nptl/pthread_spin_trylock.c b/sysdeps/tile/nptl/pthread_spin_trylock.c new file mode 100644 index 0000000000..bf96e61a96 --- /dev/null +++ b/sysdeps/tile/nptl/pthread_spin_trylock.c @@ -0,0 +1,32 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include "pthreadP.h" +#include + +#ifdef __tilegx__ +#define TNS(p) __insn_exch4((p), 1) +#else +#define TNS(p) __insn_tns(p) +#endif + +int +pthread_spin_trylock (pthread_spinlock_t *lock) +{ + return (TNS (lock) == 0) ? 0 : EBUSY; +} diff --git a/sysdeps/tile/nptl/pthread_spin_unlock.c b/sysdeps/tile/nptl/pthread_spin_unlock.c new file mode 100644 index 0000000000..0c4ac073c9 --- /dev/null +++ b/sysdeps/tile/nptl/pthread_spin_unlock.c @@ -0,0 +1,33 @@ +/* pthread_spin_unlock -- unlock a spin lock. Tile version. + Copyright (C) 2012-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include "pthreadP.h" +#include + +int +pthread_spin_unlock (pthread_spinlock_t *lock) +{ +#ifdef __tilegx__ + /* Use exchange() to bypass the write buffer. */ + atomic_exchange_rel (lock, 0); +#else + atomic_full_barrier (); + *lock = 0; +#endif + return 0; +} diff --git a/sysdeps/tile/nptl/pthreaddef.h b/sysdeps/tile/nptl/pthreaddef.h new file mode 100644 index 0000000000..f3997250d2 --- /dev/null +++ b/sysdeps/tile/nptl/pthreaddef.h @@ -0,0 +1,41 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include + +/* Default stack size. */ +#define ARCH_STACK_DEFAULT_SIZE (2 * 1024 * 1024) + +/* Required stack pointer alignment at beginning. */ +#define STACK_ALIGN 16 + +/* Minimal stack size after allocating thread descriptor and guard size. */ +#define MINIMAL_REST_STACK 2048 + +/* Alignment requirement for TCB. */ +#define TCB_ALIGNMENT 16 + + +/* Location of current stack frame. */ +#define CURRENT_STACK_FRAME __builtin_frame_address (0) + +/* XXX Until we have a better place keep the definitions here. */ + +#define __exit_thread_inline(val) \ + INLINE_SYSCALL (exit, 1, (val)) diff --git a/sysdeps/tile/nptl/tcb-offsets.sym b/sysdeps/tile/nptl/tcb-offsets.sym new file mode 100644 index 0000000000..6740bc976f --- /dev/null +++ b/sysdeps/tile/nptl/tcb-offsets.sym @@ -0,0 +1,17 @@ +#define SHARED /* needed to get struct rtld_global from */ +#include +#include +#include + +-- + +-- Abuse tls.h macros to derive offsets relative to the thread register. +#define thread_offsetof(mem) (long)(offsetof(struct pthread, mem) - TLS_TCB_OFFSET - TLS_PRE_TCB_SIZE) + +MULTIPLE_THREADS_OFFSET thread_offsetof (header.multiple_threads) +PID_OFFSET thread_offsetof (pid) +TID_OFFSET thread_offsetof (tid) +POINTER_GUARD (offsetof (tcbhead_t, pointer_guard) - TLS_TCB_OFFSET - sizeof (tcbhead_t)) +FEEDBACK_DATA_OFFSET (offsetof (tcbhead_t, feedback_data) - TLS_TCB_OFFSET - sizeof (tcbhead_t)) +DTV_OFFSET (offsetof (tcbhead_t, dtv) - TLS_TCB_OFFSET - sizeof (tcbhead_t)) +TLS_GENERATION_OFFSET offsetof (struct rtld_global, _dl_tls_generation) diff --git a/sysdeps/tile/nptl/tls.h b/sysdeps/tile/nptl/tls.h new file mode 100644 index 0000000000..d226188fea --- /dev/null +++ b/sysdeps/tile/nptl/tls.h @@ -0,0 +1,194 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _TLS_H +#define _TLS_H 1 + +# include + +#ifndef __ASSEMBLER__ +# include +# include +# include + +/* Type for the dtv. */ +typedef union dtv +{ + size_t counter; + struct + { + void *val; + bool is_static; + } pointer; +} dtv_t; + +#else /* __ASSEMBLER__ */ +# include +#endif /* __ASSEMBLER__ */ + + +#ifndef __ASSEMBLER__ + +/* Get system call information. */ +# include + +/* The TP points to the start of the thread blocks. */ +# define TLS_DTV_AT_TP 1 + +/* We use the multiple_threads field in the pthread struct */ +#define TLS_MULTIPLE_THREADS_IN_TCB 1 + +/* Get the thread descriptor definition. */ +# include + +/* The stack_guard is accessed directly by GCC -fstack-protector code, + so it is a part of public ABI. The dtv and pointer_guard fields + are private. */ +typedef struct +{ + void *feedback_data; + uintptr_t pointer_guard; + uintptr_t stack_guard; + dtv_t *dtv; +} tcbhead_t; + +/* This is the size of the initial TCB. Because our TCB is before the thread + pointer, we don't need this. */ +# define TLS_INIT_TCB_SIZE 0 + +/* Alignment requirements for the initial TCB. */ +# define TLS_INIT_TCB_ALIGN __alignof__ (struct pthread) + +/* This is the size of the TCB. Because our TCB is before the thread + pointer, we don't need this. */ +# define TLS_TCB_SIZE 0 + +/* Alignment requirements for the TCB. */ +# define TLS_TCB_ALIGN __alignof__ (struct pthread) + +/* This is the size we need before TCB - actually, it includes the TCB. */ +# define TLS_PRE_TCB_SIZE \ + (sizeof (struct pthread) \ + + ((sizeof (tcbhead_t) + TLS_TCB_ALIGN - 1) & ~(TLS_TCB_ALIGN - 1))) + +/* Return the thread descriptor (tp) for the current thread. */ +register void *__thread_pointer asm ("tp"); + +/* The thread pointer (in hardware register tp) points to the end of + the TCB. The pthread_descr structure is immediately in front of the TCB. */ +# define TLS_TCB_OFFSET 0 + +/* Install the dtv pointer. The pointer passed is to the element with + index -1 which contain the length. */ +# define INSTALL_DTV(tcbp, dtvp) \ + (((tcbhead_t *) (tcbp))[-1].dtv = (dtvp) + 1) + +/* Install new dtv for current thread. */ +# define INSTALL_NEW_DTV(dtv) (THREAD_DTV() = (dtv)) + +/* Return dtv of given thread descriptor. */ +# define GET_DTV(tcbp) (((tcbhead_t *) (tcbp))[-1].dtv) + +/* Code to initially initialize the thread pointer (tp). */ +# define TLS_INIT_TP(tcbp, secondcall) \ + (__thread_pointer = (char *)(tcbp) + TLS_TCB_OFFSET, NULL) + +/* Return the address of the dtv for the current thread. */ +# define THREAD_DTV() \ + (((tcbhead_t *) (__thread_pointer - TLS_TCB_OFFSET))[-1].dtv) + +/* Return the thread descriptor for the current thread. */ +# define THREAD_SELF \ + ((struct pthread *) (__thread_pointer \ + - TLS_TCB_OFFSET - TLS_PRE_TCB_SIZE)) + +/* Magic for libthread_db to know how to do THREAD_SELF. */ +#ifdef __tilegx__ +# define DB_THREAD_SELF \ + REGISTER (64, 64, REG_TP * 8, - TLS_TCB_OFFSET - TLS_PRE_TCB_SIZE) +#else +# define DB_THREAD_SELF \ + REGISTER (32, 32, REG_TP * 4, - TLS_TCB_OFFSET - TLS_PRE_TCB_SIZE) +#endif + +/* Read member of the thread descriptor directly. */ +# define THREAD_GETMEM(descr, member) (descr->member) + +/* Same as THREAD_GETMEM, but the member offset can be non-constant. */ +# define THREAD_GETMEM_NC(descr, member, idx) \ + (descr->member[idx]) + +/* Set member of the thread descriptor directly. */ +# define THREAD_SETMEM(descr, member, value) \ + (descr->member = (value)) + +/* Same as THREAD_SETMEM, but the member offset can be non-constant. */ +# define THREAD_SETMEM_NC(descr, member, idx, value) \ + (descr->member[idx] = (value)) + +/* Set the stack guard field in TCB head. */ +# define THREAD_SET_STACK_GUARD(value) \ + (((tcbhead_t *) ((char *) __thread_pointer \ + - TLS_TCB_OFFSET))[-1].stack_guard = (value)) +# define THREAD_COPY_STACK_GUARD(descr) \ + (((tcbhead_t *) ((char *) (descr) \ + + TLS_PRE_TCB_SIZE))[-1].stack_guard \ + = ((tcbhead_t *) ((char *) __thread_pointer \ + - TLS_TCB_OFFSET))[-1].stack_guard) + +/* Set the pointer guard field in TCB head. */ +# define THREAD_GET_POINTER_GUARD() \ + (((tcbhead_t *) ((char *) __thread_pointer \ + - TLS_TCB_OFFSET))[-1].pointer_guard) +# define THREAD_SET_POINTER_GUARD(value) \ + (THREAD_GET_POINTER_GUARD () = (value)) +# define THREAD_COPY_POINTER_GUARD(descr) \ + (((tcbhead_t *) ((char *) (descr) \ + + TLS_PRE_TCB_SIZE))[-1].pointer_guard \ + = THREAD_GET_POINTER_GUARD()) + +/* l_tls_offset == 0 is perfectly valid on Tile, so we have to use some + different value to mean unset l_tls_offset. */ +# define NO_TLS_OFFSET -1 + +/* Get and set the global scope generation counter in struct pthread. */ +#define THREAD_GSCOPE_FLAG_UNUSED 0 +#define THREAD_GSCOPE_FLAG_USED 1 +#define THREAD_GSCOPE_FLAG_WAIT 2 +#define THREAD_GSCOPE_RESET_FLAG() \ + do \ + { int __res \ + = atomic_exchange_rel (&THREAD_SELF->header.gscope_flag, \ + THREAD_GSCOPE_FLAG_UNUSED); \ + if (__res == THREAD_GSCOPE_FLAG_WAIT) \ + lll_futex_wake (&THREAD_SELF->header.gscope_flag, 1, LLL_PRIVATE); \ + } \ + while (0) +#define THREAD_GSCOPE_SET_FLAG() \ + do \ + { \ + THREAD_SELF->header.gscope_flag = THREAD_GSCOPE_FLAG_USED; \ + atomic_write_barrier (); \ + } \ + while (0) +#define THREAD_GSCOPE_WAIT() \ + GL(dl_wait_lookup_done) () + +#endif /* __ASSEMBLER__ */ + +#endif /* tls.h */ diff --git a/sysdeps/tile/preconfigure b/sysdeps/tile/preconfigure new file mode 100644 index 0000000000..9dba5b1040 --- /dev/null +++ b/sysdeps/tile/preconfigure @@ -0,0 +1,17 @@ +# This is a -*- sh -*- +case "$machine" in + tilepro) + base_machine=tile machine=tile/tilepro ;; + tilegx) + base_machine=tile + if $CC $CFLAGS $CPPFLAGS -E -dM -xc /dev/null | grep -q __LP64__; then + machine=tile/tilegx/tilegx64 + else + machine=tile/tilegx/tilegx32 + fi ;; +esac +case "$machine" in + tile*) + libc_commonpagesize=0x10000 + libc_relro_required=yes ;; +esac diff --git a/sysdeps/tile/s_fma.c b/sysdeps/tile/s_fma.c new file mode 100644 index 0000000000..d9613fa67c --- /dev/null +++ b/sysdeps/tile/s_fma.c @@ -0,0 +1 @@ +#include diff --git a/sysdeps/tile/s_fmaf.c b/sysdeps/tile/s_fmaf.c new file mode 100644 index 0000000000..aa5c9b2d91 --- /dev/null +++ b/sysdeps/tile/s_fmaf.c @@ -0,0 +1 @@ +#include diff --git a/sysdeps/tile/setjmp.S b/sysdeps/tile/setjmp.S new file mode 100644 index 0000000000..a2f34251a0 --- /dev/null +++ b/sysdeps/tile/setjmp.S @@ -0,0 +1,46 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include + + .text + + /* Keep traditional entry points in with sigsetjmp(). */ +ENTRY(setjmp) + { movei r1, 1; j 1f } +END(setjmp) + +ENTRY(_setjmp) + { movei r1, 0; j 1f } +END(_setjmp) +libc_hidden_def (_setjmp) + +ENTRY(__sigsetjmp) + FEEDBACK_ENTER(__sigsetjmp) +1: + move r2, r0 + +#define SAVE(r) { ST r2, r ; ADDI_PTR r2, r2, REGSIZE } + FOR_EACH_CALLEE_SAVED_REG(SAVE) + + mfspr r3, INTERRUPT_CRITICAL_SECTION + ST r2, r3 + j plt(__sigjmp_save) + jrp lr /* Keep the backtracer happy. */ +END(__sigsetjmp) diff --git a/sysdeps/tile/sfp-machine.h b/sysdeps/tile/sfp-machine.h new file mode 100644 index 0000000000..ff8beeffa7 --- /dev/null +++ b/sysdeps/tile/sfp-machine.h @@ -0,0 +1,97 @@ +/* Machine-dependent software floating-point definitions, tile version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include + +#define _FP_W_TYPE_SIZE __WORDSIZE +#define _FP_W_TYPE unsigned long +#define _FP_WS_TYPE signed long +#define _FP_I_TYPE long + +#if _FP_W_TYPE_SIZE == 64 + +#define _FP_MUL_MEAT_S(R,X,Y) \ + _FP_MUL_MEAT_1_imm(_FP_WFRACBITS_S,R,X,Y) +#define _FP_MUL_MEAT_D(R,X,Y) \ + _FP_MUL_MEAT_1_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm) +#define _FP_MUL_MEAT_Q(R,X,Y) \ + _FP_MUL_MEAT_2_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm) + +#define _FP_MUL_MEAT_DW_S(R,X,Y) \ + _FP_MUL_MEAT_DW_1_imm(_FP_WFRACBITS_S,R,X,Y) +#define _FP_MUL_MEAT_DW_D(R,X,Y) \ + _FP_MUL_MEAT_DW_1_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm) +#define _FP_MUL_MEAT_DW_Q(R,X,Y) \ + _FP_MUL_MEAT_DW_2_wide_3mul(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm) + +#define _FP_DIV_MEAT_S(R,X,Y) _FP_DIV_MEAT_1_imm(S,R,X,Y,_FP_DIV_HELP_imm) +#define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_1_udiv_norm(D,R,X,Y) +#define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_2_udiv(Q,R,X,Y) + +#define _FP_NANFRAC_S _FP_QNANBIT_S +#define _FP_NANFRAC_D _FP_QNANBIT_D +#define _FP_NANFRAC_Q _FP_QNANBIT_Q, 0 + +#else /* _FP_W_TYPE_SIZE == 32 */ + +#define _FP_MUL_MEAT_S(R,X,Y) \ + _FP_MUL_MEAT_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm) +#define _FP_MUL_MEAT_D(R,X,Y) \ + _FP_MUL_MEAT_2_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm) +#define _FP_MUL_MEAT_Q(R,X,Y) \ + _FP_MUL_MEAT_4_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm) + +#define _FP_MUL_MEAT_DW_S(R,X,Y) \ + _FP_MUL_MEAT_DW_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm) +#define _FP_MUL_MEAT_DW_D(R,X,Y) \ + _FP_MUL_MEAT_DW_2_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm) +#define _FP_MUL_MEAT_DW_Q(R,X,Y) \ + _FP_MUL_MEAT_DW_4_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm) + +#define _FP_DIV_MEAT_S(R,X,Y) _FP_DIV_MEAT_1_loop(S,R,X,Y) +#define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_2_udiv(D,R,X,Y) +#define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_4_udiv(Q,R,X,Y) + +#define _FP_NANFRAC_S _FP_QNANBIT_S +#define _FP_NANFRAC_D _FP_QNANBIT_D, 0 +#define _FP_NANFRAC_Q _FP_QNANBIT_Q, 0, 0, 0 + +#endif + +#define _FP_NANSIGN_S 1 +#define _FP_NANSIGN_D 1 +#define _FP_NANSIGN_Q 1 + +#define _FP_KEEPNANFRACP 1 +#define _FP_QNANNEGATEDP 0 + +#define _FP_CHOOSENAN(fs, wc, R, X, Y, OP) \ + do { \ + if ((_FP_FRAC_HIGH_RAW_##fs(X) & _FP_QNANBIT_##fs) \ + && !(_FP_FRAC_HIGH_RAW_##fs(Y) & _FP_QNANBIT_##fs)) \ + { \ + R##_s = Y##_s; \ + _FP_FRAC_COPY_##wc(R,Y); \ + } \ + else \ + { \ + R##_s = X##_s; \ + _FP_FRAC_COPY_##wc(R,X); \ + } \ + R##_c = FP_CLS_NAN; \ + } while (0) diff --git a/sysdeps/tile/shlib-versions b/sysdeps/tile/shlib-versions new file mode 100644 index 0000000000..f50868ff64 --- /dev/null +++ b/sysdeps/tile/shlib-versions @@ -0,0 +1,2 @@ +# glibc 2.12 was released to customers; 2.15 was the first community version. +tile.*-.*-linux-gnu DEFAULT GLIBC_2.12 GLIBC_2.15 diff --git a/sysdeps/tile/sotruss-lib.c b/sysdeps/tile/sotruss-lib.c new file mode 100644 index 0000000000..6681770ec5 --- /dev/null +++ b/sysdeps/tile/sotruss-lib.c @@ -0,0 +1,49 @@ +/* Override generic sotruss-lib.c to define actual functions for tile. + Copyright (C) 2012-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#define HAVE_ARCH_PLTENTER +#define HAVE_ARCH_PLTEXIT + +#include + +ElfW(Addr) +la_tile_gnu_pltenter (ElfW(Sym) *sym __attribute__ ((unused)), + unsigned int ndx __attribute__ ((unused)), + uintptr_t *refcook, uintptr_t *defcook, + La_tile_regs *regs, unsigned int *flags, + const char *symname, long int *framesizep) +{ + print_enter (refcook, defcook, symname, + regs->lr_reg[0], regs->lr_reg[1], regs->lr_reg[2], + *flags); + + /* No need to copy anything, we will not need the parameters in any case. */ + *framesizep = 0; + + return sym->st_value; +} + +unsigned int +la_tile_gnu_pltexit (ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook, + uintptr_t *defcook, const struct La_tile_regs *inregs, + struct La_tile_retval *outregs, const char *symname) +{ + print_exit (refcook, defcook, symname, outregs->lrv_reg[0]); + + return 0; +} diff --git a/sysdeps/tile/stackguard-macros.h b/sysdeps/tile/stackguard-macros.h new file mode 100644 index 0000000000..f2e041b99b --- /dev/null +++ b/sysdeps/tile/stackguard-macros.h @@ -0,0 +1,20 @@ +#include + +#ifdef __tilegx__ +# if __WORDSIZE == 64 +# define STACK_CHK_GUARD \ + ({ uintptr_t x; asm ("addi %0, tp, -16; ld %0, %0" : "=r" (x)); x; }) +# define POINTER_CHK_GUARD \ + ({ uintptr_t x; asm ("addi %0, tp, -24; ld %0, %0" : "=r" (x)); x; }) +# else +# define STACK_CHK_GUARD \ + ({ uintptr_t x; asm ("addi %0, tp, -8; ld4s %0, %0" : "=r" (x)); x; }) +# define POINTER_CHK_GUARD \ + ({ uintptr_t x; asm ("addi %0, tp, -12; ld4s %0, %0" : "=r" (x)); x; }) +# endif +#else +# define STACK_CHK_GUARD \ + ({ uintptr_t x; asm ("addi %0, tp, -8; lw %0, %0" : "=r" (x)); x; }) +# define POINTER_CHK_GUARD \ + ({ uintptr_t x; asm ("addi %0, tp, -12; lw %0, %0" : "=r" (x)); x; }) +#endif diff --git a/sysdeps/tile/stackinfo.h b/sysdeps/tile/stackinfo.h new file mode 100644 index 0000000000..45c28a757b --- /dev/null +++ b/sysdeps/tile/stackinfo.h @@ -0,0 +1,48 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +/* This file contains a bit of information about the stack allocation + of the processor. */ + +#ifndef _STACKINFO_H +#define _STACKINFO_H 1 + +#include + +/* On tile the stack grows down. */ +#define _STACK_GROWS_DOWN 1 + +/* Default to a non-executable stack. */ +#define DEFAULT_STACK_PERMS (PF_R|PF_W) + +/* Access to the stack pointer. The macros are used in alloca_account + for which they need to act as barriers as well, hence the additional + (unnecessary) parameters. */ +#define stackinfo_get_sp() \ + ({ void *p__; asm volatile ("move %0, sp" : "=r" (p__)); p__; }) +#if defined __tilegx__ && __WORDSIZE == 32 +#define __stackinfo_sub "subx" +#else +#define __stackinfo_sub "sub" +#endif +#define stackinfo_sub_sp(ptr) \ + ({ ptrdiff_t d__; \ + asm volatile (__stackinfo_sub " %0, %0, sp" : "=r" (d__) : "0" (ptr)); \ + d__; }) + +#endif /* stackinfo.h */ diff --git a/sysdeps/tile/start.S b/sysdeps/tile/start.S new file mode 100644 index 0000000000..49661f21d8 --- /dev/null +++ b/sysdeps/tile/start.S @@ -0,0 +1,203 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + In addition to the permissions in the GNU Lesser General Public + License, the Free Software Foundation gives you unlimited + permission to link the compiled version of this file with other + programs, and to distribute those programs without any restriction + coming from the use of this file. (The GNU Lesser General Public + License restrictions do apply in other respects; for example, they + cover modification of the file, and distribution when not linked + into another program.) + + Note that people who make modified versions of this file are not + obligated to grant this special exception for their modified + versions; it is their choice whether to do so. The GNU Lesser + General Public License gives permission to release a modified + version without this exception; this exception also makes it + possible to release a modified version which carries forward this + exception. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +/* This is the canonical entry point, usually the first thing in the text + segment. The ELF standard tells us that the stack is set up like this on + entry (the left side is the offset from "sp"), in units of + __SIZEOF_POINTER__ entries: + + +0 argc + +1 argv[0] + ... + +(argc+1) NULL + +(argc+2) envp[0] + ... + NULL + ... ElfInfo + + The ElfInfo is pairs of key/value long words following the envp + pointers and terminated by a zero-valued key. + + Although not mandated by the standard, it happens to be the case + that we store the actual argv and envp strings immediately after + the ElfInfo data on the stack. + + On entry r0 points to the shared library termination function, or 0 + if there isn't one. +*/ + +#include +#include +#include + +/* Just create no-ops if we don't support PC-relative PLT relocations. */ +#ifdef NO_PLT_PCREL +# define hw2_last_plt(x) 0 +# define hw1_plt(x) 0 +# define hw0_plt(x) 0 +#endif + + .text + .global _start + .type _start,@function + .align 8 +_start: + /* Linux starts us with sp pointing at the conventional Elf layout, + but we need to allow two "caller" words for our ABI convention. */ + { + /* Load argc (stored as a "long", equivalent to a pointer type). */ + LD_PTR r1, sp + + /* Save incoming 'sp', which points to the Elf argument block. */ + move r52, sp + } + + { + /* Allocate stack frame callee space for __libc_start_main. */ + ADDI_PTR r12, sp, -(2 * REGSIZE) + } + + { + /* Get our PC. */ + lnk r13 + + /* sp is not necessarily properly aligned on startup because + of the way ld.so pops off leading argv elements. So align it. */ + andi sp, r12, -8 + } +.Lmy_pc: + + { + /* Pass the address of the shared library termination function. */ + move r5, r0 + + /* Compute location where __libc_start_main's caller is supposed to + store its frame pointer. */ + ADDI_PTR r12, sp, REGSIZE + + /* Zero out callee space for return address. Unnecessary but free. + This is just paranoia to help backtracing not go awry. */ + ST sp, zero + } + { + /* Zero out our frame pointer for __libc_start_main. */ + ST r12, zero + + /* Zero out lr to make __libc_start_main the end of backtrace. */ + move lr, zero + + /* Compute a pointer to argv. envp will be determined + later in __libc_start_main. We set up the first argument + (the address of main) below. */ + ADDI_PTR r2, r52, __SIZEOF_POINTER__ + } + { + /* Pass the highest stack address to user code. */ + ADDI_PTR r6, sp, (2 * REGSIZE) + + /* Pass address of main() in r0, and of our own entry + points to .fini and .init in r3 and r4. */ +#ifdef __tilegx__ + moveli r0, hw2_last(main - .Lmy_pc) + } + { + shl16insli r0, r0, hw1(main - .Lmy_pc) + moveli r3, hw2_last(__libc_csu_init - .Lmy_pc) + } + { + shl16insli r0, r0, hw0(main - .Lmy_pc) + shl16insli r3, r3, hw1(__libc_csu_init - .Lmy_pc) + } + { + ADD_PTR r0, r0, r13 + shl16insli r3, r3, hw0(__libc_csu_init - .Lmy_pc) + } + { + moveli r12, hw2_last_plt(__libc_start_main - .Lmy_pc) + ADD_PTR r3, r3, r13 + } + { + shl16insli r12, r12, hw1_plt(__libc_start_main - .Lmy_pc) + moveli r4, hw2_last(__libc_csu_fini - .Lmy_pc) + } + { + shl16insli r12, r12, hw0_plt(__libc_start_main - .Lmy_pc) + shl16insli r4, r4, hw1(__libc_csu_fini - .Lmy_pc) + } + { + ADD_PTR r12, r12, r13 + shl16insli r4, r4, hw0(__libc_csu_fini - .Lmy_pc) + } + { + ADD_PTR r4, r4, r13 +# ifdef NO_PLT_PCREL + j plt(__libc_start_main) +# else + jr r12 +# endif + } +#else + addli r0, r13, lo16(main - .Lmy_pc) + } + { + auli r0, r0, ha16(main - .Lmy_pc) + addli r3, r13, lo16(__libc_csu_init - .Lmy_pc) + } + { + auli r3, r3, ha16(__libc_csu_init - .Lmy_pc) + addli r4, r13, lo16(__libc_csu_fini - .Lmy_pc) + } + { + auli r4, r4, ha16(__libc_csu_fini - .Lmy_pc) + /* Call the user's main function, and exit with its value. + But let the libc call main. */ + j plt(__libc_start_main) + } +#endif + + { + /* Tell backtracer to give up (_start has no caller). */ + info INFO_OP_CANNOT_BACKTRACE + } +.size _start, .-_start + +/* Define a symbol for the first piece of initialized data. */ + .data + .global __data_start + .align 8 +__data_start: + .long 0 + .weak data_start + data_start = __data_start diff --git a/sysdeps/tile/sysdep.h b/sysdeps/tile/sysdep.h new file mode 100644 index 0000000000..32aca49ff1 --- /dev/null +++ b/sysdeps/tile/sysdep.h @@ -0,0 +1,110 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include + +#if defined __ASSEMBLER__ || defined REQUEST_ASSEMBLER_MACROS + +#include + +/* Make use of .size directive. */ +#define ASM_SIZE_DIRECTIVE(name) .size name,.-name; + +/* Define an entry point visible from C. */ +#define ENTRY(name) \ + .globl C_SYMBOL_NAME(name); \ + .type C_SYMBOL_NAME(name),@function; \ + .align 8; \ + C_LABEL(name) \ + cfi_startproc; \ + CALL_MCOUNT + +#undef END +#define END(name) \ + cfi_endproc; \ + ASM_SIZE_DIRECTIVE(name) + +/* Since C identifiers are not normally prefixed with an underscore + on this system, the asm identifier `syscall_error' intrudes on the + C name space. Make sure we use an innocuous name. */ +#define syscall_error __syscall_error +#define mcount __mcount + +/* If compiled for profiling, call `mcount' at the start of each function. + The mcount code requires the caller PC in r10. The `mcount' function + sets lr back to the value r10 had on entry when it returns. */ +#ifdef PROF +#define CALL_MCOUNT { move r10, lr; jal mcount } +#else +#define CALL_MCOUNT /* Do nothing. */ +#endif + +/* Local label name for asm code. */ +#define L(name) .L##name + +/* Specify the size in bytes of a machine register. */ +#ifdef __tilegx__ +#define REGSIZE 8 +#else +#define REGSIZE 4 +#endif + +/* Support a limited form of shared assembly between tilepro and tilegx. + The presumption is that LD/ST are used for manipulating registers. + Since opcode parsing is case-insensitive, we don't need to provide + definitions for these on tilegx. */ +#ifndef __tilegx__ +#define LD lw +#define LD4U lw +#define ST sw +#define ST4 sw +#define BNEZ bnz +#define BEQZ bz +#define BEQZT bzt +#define BGTZ bgz +#define CMPEQI seqi +#define CMPEQ seq +#define CMOVEQZ mvz +#define CMOVNEZ mvnz +#endif + +/* Provide "pointer-oriented" instruction variants. These differ not + just for tilepro vs tilegx, but also for tilegx -m64 vs -m32. */ +#if defined __tilegx__ && __WORDSIZE == 32 +#define ADD_PTR addx +#define ADDI_PTR addxi +#define ADDLI_PTR addxli +#define LD_PTR ld4s +#define ST_PTR st4 +#define SHL_PTR_ADD shl2add +#else +#define ADD_PTR add +#define ADDI_PTR addi +#define ADDLI_PTR addli +#define LD_PTR LD +#define ST_PTR ST +#ifdef __tilegx__ +#define SHL_PTR_ADD shl3add +#else +#define SHL_PTR_ADD s2a +#endif +#endif + +#endif /* __ASSEMBLER__ */ diff --git a/sysdeps/tile/tilegx/Makefile b/sysdeps/tile/tilegx/Makefile new file mode 100644 index 0000000000..4281dd98fc --- /dev/null +++ b/sysdeps/tile/tilegx/Makefile @@ -0,0 +1,35 @@ +include $(common-objpfx)cflags-mcmodel-large.mk + +# Check for gcc to support the command-line switch, and for +# binutils to support the hwN_plt() assembly operators and relocations. +$(common-objpfx)cflags-mcmodel-large.mk: $(common-objpfx)config.make + mcmodel=no; \ + (echo 'int main() { return getuid(); }' | \ + $(CC) -o /dev/null -xc - -mcmodel=large -fpic) && mcmodel=yes; \ + echo "cflags-mcmodel-large = $$mcmodel" > $@ + +ifeq (yes,$(cflags-mcmodel-large)) + +ifeq ($(subdir),csu) +# elf-init.c is in libc_nonshared.o (the end of the shared object) but +# must reach the _init symbol at the very start of the shared object. +CFLAGS-elf-init.c += -mcmodel=large + +# __gmon_start__ is at the very start of the shared object when linked +# with profiling, but calls to libc.so via the PLT at the very end. +CFLAGS-gmon-start.c += -mcmodel=large +endif + +else + +# Don't try to compile assembly code with hwN_plt() directives if the +# toolchain doesn't support -mcmodel=large. +ifeq ($(subdir),csu) +CPPFLAGS-start.S += -DNO_PLT_PCREL +CPPFLAGS-crti.S += -DNO_PLT_PCREL +endif +ifeq ($(subdir),nptl) +CPPFLAGS-pt-crti.S += -DNO_PLT_PCREL +endif + +endif diff --git a/sysdeps/tile/tilegx/bits/atomic.h b/sysdeps/tile/tilegx/bits/atomic.h new file mode 100644 index 0000000000..ce12db0216 --- /dev/null +++ b/sysdeps/tile/tilegx/bits/atomic.h @@ -0,0 +1,49 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _BITS_ATOMIC_H +#define _BITS_ATOMIC_H 1 + +#include + +/* Pick appropriate 8- or 4-byte instruction. */ +#define __atomic_update(mem, v, op) \ + ((__typeof (*(mem))) (__typeof (*(mem) - *(mem))) \ + ((sizeof (*(mem)) == 8) ? \ + __insn_##op ((void *) (mem), (int64_t) (__typeof((v) - (v))) (v)) : \ + (sizeof (*(mem)) == 4) ? \ + __insn_##op##4 ((void *) (mem), (int32_t) (__typeof ((v) - (v))) (v)) : \ + __atomic_error_bad_argument_size())) + +#define atomic_compare_and_exchange_val_acq(mem, n, o) \ + ({ __insn_mtspr (SPR_CMPEXCH_VALUE, (int64_t) (__typeof ((o) - (o))) (o)); \ + __atomic_update (mem, n, cmpexch); }) +#define atomic_exchange_acq(mem, newvalue) \ + __atomic_update (mem, newvalue, exch) +#define atomic_exchange_and_add(mem, value) \ + __atomic_update (mem, value, fetchadd) +#define atomic_and_val(mem, mask) \ + __atomic_update (mem, mask, fetchand) +#define atomic_or_val(mem, mask) \ + __atomic_update (mem, mask, fetchor) +#define atomic_decrement_if_positive(mem) \ + __atomic_update (mem, -1, fetchaddgez) + +#include + +#endif /* bits/atomic.h */ diff --git a/sysdeps/tile/tilegx/bits/wordsize.h b/sysdeps/tile/tilegx/bits/wordsize.h new file mode 100644 index 0000000000..5d4e4b4470 --- /dev/null +++ b/sysdeps/tile/tilegx/bits/wordsize.h @@ -0,0 +1,8 @@ +/* Determine the wordsize from the preprocessor defines. */ + +#ifdef __LP64__ +# define __WORDSIZE 64 +# define __WORDSIZE_TIME64_COMPAT32 1 +#else +# define __WORDSIZE 32 +#endif diff --git a/sysdeps/tile/tilegx/memchr.c b/sysdeps/tile/tilegx/memchr.c new file mode 100644 index 0000000000..ee17d9a40a --- /dev/null +++ b/sysdeps/tile/tilegx/memchr.c @@ -0,0 +1,73 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include "string-endian.h" + +void * +__memchr (const void *s, int c, size_t n) +{ + const uint64_t *last_word_ptr; + const uint64_t *p; + const char *last_byte_ptr; + uintptr_t s_int; + uint64_t goal, before_mask, v, bits; + char *ret; + + if (__builtin_expect (n == 0, 0)) + { + /* Don't dereference any memory if the array is empty. */ + return NULL; + } + + /* Get an aligned pointer. */ + s_int = (uintptr_t) s; + p = (const uint64_t *) (s_int & -8); + + /* Create eight copies of the byte for which we are looking. */ + goal = copy_byte(c); + + /* Read the first word, but munge it so that bytes before the array + will not match goal. */ + before_mask = MASK (s_int); + v = (*p | before_mask) ^ (goal & before_mask); + + /* Compute the address of the last byte. */ + last_byte_ptr = (const char *) s + n - 1; + + /* Compute the address of the word containing the last byte. */ + last_word_ptr = (const uint64_t *) ((uintptr_t) last_byte_ptr & -8); + + while ((bits = __insn_v1cmpeq (v, goal)) == 0) + { + if (__builtin_expect (p == last_word_ptr, 0)) + { + /* We already read the last word in the array, so give up. */ + return NULL; + } + v = *++p; + } + + /* We found a match, but it might be in a byte past the end + of the array. */ + ret = ((char *) p) + (CFZ (bits) >> 3); + return (ret <= last_byte_ptr) ? ret : NULL; +} +weak_alias (__memchr, memchr) +libc_hidden_builtin_def (memchr) diff --git a/sysdeps/tile/tilegx/memcpy.c b/sysdeps/tile/tilegx/memcpy.c new file mode 100644 index 0000000000..5d5df19ef3 --- /dev/null +++ b/sysdeps/tile/tilegx/memcpy.c @@ -0,0 +1,272 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include +#include + +/* How many cache lines ahead should we prefetch? */ +#define PREFETCH_LINES_AHEAD 3 + +void * +__memcpy (void *__restrict dstv, const void *__restrict srcv, size_t n) +{ + char *__restrict dst1 = (char *) dstv; + const char *__restrict src1 = (const char *) srcv; + const char *__restrict src1_end; + const char *__restrict prefetch; + op_t *__restrict dst8; /* 8-byte pointer to destination memory. */ + op_t final; /* Final bytes to write to trailing word, if any */ + long i; + + if (n < 16) + { + for (; n; n--) + *dst1++ = *src1++; + return dstv; + } + + /* Locate the end of source memory we will copy. Don't prefetch + past this. */ + src1_end = src1 + n - 1; + + /* Prefetch ahead a few cache lines, but not past the end. */ + prefetch = src1; + for (i = 0; i < PREFETCH_LINES_AHEAD; i++) + { + __insn_prefetch (prefetch); + prefetch += CHIP_L2_LINE_SIZE (); + prefetch = (prefetch < src1_end) ? prefetch : src1; + } + + /* Copy bytes until dst is word-aligned. */ + for (; (uintptr_t) dst1 & (sizeof (op_t) - 1); n--) + *dst1++ = *src1++; + + /* 8-byte pointer to destination memory. */ + dst8 = (op_t *) dst1; + + if (__builtin_expect ((uintptr_t) src1 & (sizeof (op_t) - 1), 0)) + { + /* Misaligned copy. Use glibc's _wordcopy_fwd_dest_aligned, but + inline it to avoid prologue/epilogue. TODO: Consider + prefetching and using wh64 as well. */ + void * srci; + op_t a0, a1, a2, a3; + long int dstp = (long int) dst1; + long int srcp = (long int) src1; + long int len = n / OPSIZ; + + /* Save the initial source pointer so we know the number of + bytes to shift for merging two unaligned results. */ + srci = (void *) srcp; + + /* Make SRCP aligned by rounding it down to the beginning of the + `op_t' it points in the middle of. */ + srcp &= -OPSIZ; + + switch (len % 4) + { + case 2: + a1 = ((op_t *) srcp)[0]; + a2 = ((op_t *) srcp)[1]; + len += 2; + srcp += 2 * OPSIZ; + goto do1; + case 3: + a0 = ((op_t *) srcp)[0]; + a1 = ((op_t *) srcp)[1]; + len += 1; + srcp += 2 * OPSIZ; + goto do2; + case 0: + if (OP_T_THRES <= 3 * OPSIZ && len == 0) + return dstv; + a3 = ((op_t *) srcp)[0]; + a0 = ((op_t *) srcp)[1]; + len += 0; + srcp += 2 * OPSIZ; + goto do3; + case 1: + a2 = ((op_t *) srcp)[0]; + a3 = ((op_t *) srcp)[1]; + srcp += 2 * OPSIZ; + len -= 1; + if (OP_T_THRES <= 3 * OPSIZ && len == 0) + goto do0; + goto do4; /* No-op. */ + } + + do + { + do4: + a0 = ((op_t *) srcp)[0]; + a2 = __insn_dblalign (a2, a3, srci); + ((op_t *) dstp)[0] = a2; + srcp += OPSIZ; + dstp += OPSIZ; + do3: + a1 = ((op_t *) srcp)[0]; + a3 = __insn_dblalign (a3, a0, srci); + ((op_t *) dstp)[0] = a3; + srcp += OPSIZ; + dstp += OPSIZ; + do2: + a2 = ((op_t *) srcp)[0]; + a0 = __insn_dblalign (a0, a1, srci); + ((op_t *) dstp)[0] = a0; + srcp += OPSIZ; + dstp += OPSIZ; + do1: + a3 = ((op_t *) srcp)[0]; + a1 = __insn_dblalign (a1, a2, srci); + ((op_t *) dstp)[0] = a1; + srcp += OPSIZ; + dstp += OPSIZ; + len -= 4; + } + while (len != 0); + + /* This is the right position for do0. Please don't move + it into the loop. */ + do0: + ((op_t *) dstp)[0] = __insn_dblalign (a2, a3, srci); + + n = n % OPSIZ; + if (n == 0) + return dstv; + + a0 = ((const char *) srcp <= src1_end) ? ((op_t *) srcp)[0] : 0; + + final = __insn_dblalign (a3, a0, srci); + dst8 = (op_t *)(dstp + OPSIZ); + } + else + { + /* Aligned copy. */ + + const op_t *__restrict src8 = (const op_t *) src1; + + /* src8 and dst8 are both word-aligned. */ + if (n >= CHIP_L2_LINE_SIZE ()) + { + /* Copy until 'dst' is cache-line-aligned. */ + for (; (uintptr_t) dst8 & (CHIP_L2_LINE_SIZE () - 1); + n -= sizeof (op_t)) + *dst8++ = *src8++; + + for (; n >= CHIP_L2_LINE_SIZE ();) + { + op_t tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7; + + /* Prefetch and advance to next line to prefetch, but + don't go past the end. */ + __insn_prefetch (prefetch); + prefetch += CHIP_L2_LINE_SIZE (); + prefetch = (prefetch < src1_end) ? prefetch : + (const char *) src8; + + /* Do all the loads before wh64. This is necessary if + [src8, src8+7] and [dst8, dst8+7] share the same + cache line and dst8 <= src8, as can be the case when + called from memmove, or with code tested on x86 whose + memcpy always works with forward copies. */ + tmp0 = *src8++; + tmp1 = *src8++; + tmp2 = *src8++; + tmp3 = *src8++; + tmp4 = *src8++; + tmp5 = *src8++; + tmp6 = *src8++; + tmp7 = *src8++; + + __insn_wh64 (dst8); + + *dst8++ = tmp0; + *dst8++ = tmp1; + *dst8++ = tmp2; + *dst8++ = tmp3; + *dst8++ = tmp4; + *dst8++ = tmp5; + *dst8++ = tmp6; + *dst8++ = tmp7; + + n -= 64; + } +#if CHIP_L2_LINE_SIZE() != 64 +# error "Fix code that assumes particular L2 cache line size." +#endif + } + + for (; n >= sizeof (op_t); n -= sizeof (op_t)) + *dst8++ = *src8++; + + if (__builtin_expect (n == 0, 1)) + return dstv; + + final = *src8; + } + + /* n != 0 if we get here. Write out any trailing bytes. */ + dst1 = (char *) dst8; +#ifndef __BIG_ENDIAN__ + if (n & 4) + { + *(uint32_t *) dst1 = final; + dst1 += 4; + final >>= 32; + n &= 3; + } + if (n & 2) + { + *(uint16_t *) dst1 = final; + dst1 += 2; + final >>= 16; + n &= 1; + } + if (n) + *(uint8_t *) dst1 = final; +#else + if (n & 4) + { + *(uint32_t *) dst1 = final >> 32; + dst1 += 4; + } + else + { + final >>= 32; + } + if (n & 2) + { + *(uint16_t *) dst1 = final >> 16; + dst1 += 2; + } + else + { + final >>= 16; + } + if (n & 1) + *(uint8_t *) dst1 = final >> 8; +#endif + + return dstv; +} +weak_alias (__memcpy, memcpy) +libc_hidden_builtin_def (memcpy) diff --git a/sysdeps/tile/tilegx/memmove.c b/sysdeps/tile/tilegx/memmove.c new file mode 100644 index 0000000000..38323cea3d --- /dev/null +++ b/sysdeps/tile/tilegx/memmove.c @@ -0,0 +1,22 @@ +/* Copy memory to memory until the specified number of bytes + has been copied. Overlap is handled correctly. + Copyright (C) 2012-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +/* The tilegx implementation of memcpy is safe to use for memmove. */ +#define MEMCPY_OK_FOR_FWD_MEMMOVE 1 +#include diff --git a/sysdeps/tile/tilegx/memset.c b/sysdeps/tile/tilegx/memset.c new file mode 100644 index 0000000000..d41b205a3c --- /dev/null +++ b/sysdeps/tile/tilegx/memset.c @@ -0,0 +1,151 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include "string-endian.h" + +void * +__memset (void *s, int c, size_t n) +{ + uint64_t *out64; + int n64, to_align64; + uint64_t v64; + uint8_t *out8 = s; + + /* Experimentation shows that a trivial tight loop is a win up until + around a size of 20, where writing a word at a time starts to win. */ +#define BYTE_CUTOFF 20 + +#if BYTE_CUTOFF < 7 + /* This must be at least at least this big, or some code later + on doesn't work. */ +# error "BYTE_CUTOFF is too small." +#endif + + if (n < BYTE_CUTOFF) + { + /* Strangely, this turns out to be the tightest way to write + this loop. */ + if (n != 0) + { + do + { + /* Strangely, combining these into one line performs worse. */ + *out8 = c; + out8++; + } + while (--n != 0); + } + + return s; + } + + /* Align 'out8'. We know n >= 7 so this won't write past the end. */ + while (((uintptr_t) out8 & 7) != 0) + { + *out8++ = c; + --n; + } + + /* Align 'n'. */ + while (n & 7) + out8[--n] = c; + + out64 = (uint64_t *) out8; + n64 = n >> 3; + + /* Tile input byte out to 64 bits. */ + v64 = copy_byte(c); + + /* This must be at least 8 or the following loop doesn't work. */ +#define CACHE_LINE_SIZE_IN_DOUBLEWORDS (CHIP_L2_LINE_SIZE() / 8) + + /* Determine how many words we need to emit before the 'out32' + pointer becomes aligned modulo the cache line size. */ + to_align64 = (-((uintptr_t) out64 >> 3)) & + (CACHE_LINE_SIZE_IN_DOUBLEWORDS - 1); + + /* Only bother aligning and using wh64 if there is at least + one full cache line to process. This check also prevents + overrunning the end of the buffer with alignment words. */ + if (to_align64 <= n64 - CACHE_LINE_SIZE_IN_DOUBLEWORDS) + { + int lines_left; + + /* Align out64 mod the cache line size so we can use wh64. */ + n64 -= to_align64; + for (; to_align64 != 0; to_align64--) + { + *out64 = v64; + out64++; + } + + /* Use unsigned divide to turn this into a right shift. */ + lines_left = (unsigned) n64 / CACHE_LINE_SIZE_IN_DOUBLEWORDS; + + do + { + /* Only wh64 a few lines at a time, so we don't exceed the + maximum number of victim lines. */ + int x = ((lines_left < CHIP_MAX_OUTSTANDING_VICTIMS ()) ? lines_left + : CHIP_MAX_OUTSTANDING_VICTIMS ()); + uint64_t *wh = out64; + int i = x; + int j; + + lines_left -= x; + + do + { + __insn_wh64 (wh); + wh += CACHE_LINE_SIZE_IN_DOUBLEWORDS; + } + while (--i); + + for (j = x * (CACHE_LINE_SIZE_IN_DOUBLEWORDS / 4); j != 0; j--) + { + *out64++ = v64; + *out64++ = v64; + *out64++ = v64; + *out64++ = v64; + } + } + while (lines_left != 0); + + /* We processed all full lines above, so only this many + words remain to be processed. */ + n64 &= CACHE_LINE_SIZE_IN_DOUBLEWORDS - 1; + } + + /* Now handle any leftover values. */ + if (n64 != 0) + { + do + { + *out64 = v64; + out64++; + } + while (--n64 != 0); + } + + return s; +} +weak_alias (__memset, memset) +libc_hidden_builtin_def (memset) diff --git a/sysdeps/tile/tilegx/memusage.h b/sysdeps/tile/tilegx/memusage.h new file mode 100644 index 0000000000..7a9e661daf --- /dev/null +++ b/sysdeps/tile/tilegx/memusage.h @@ -0,0 +1,31 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include + +#define GETSP() ({ register uintptr_t stack_ptr asm ("sp"); stack_ptr; }) + +#define GETTIME(low,high) \ + { \ + uint64_t cycles = __insn_mfspr (SPR_CYCLE); \ + low = cycles & 0xffffffff; \ + high = cycles >> 32; \ + } + +#include diff --git a/sysdeps/tile/tilegx/rawmemchr.c b/sysdeps/tile/tilegx/rawmemchr.c new file mode 100644 index 0000000000..bd6d3c7c70 --- /dev/null +++ b/sysdeps/tile/tilegx/rawmemchr.c @@ -0,0 +1,45 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include "string-endian.h" + +void * +__rawmemchr (const void *s, int c) +{ + /* Get an aligned pointer. */ + const uintptr_t s_int = (uintptr_t) s; + const uint64_t *p = (const uint64_t *) (s_int & -8); + + /* Create eight copies of the byte for which we are looking. */ + const uint64_t goal = copy_byte(c); + + /* Read the first word, but munge it so that bytes before the array + will not match goal. */ + const uint64_t before_mask = MASK (s_int); + uint64_t v = (*p | before_mask) ^ (goal & before_mask); + + uint64_t bits; + while ((bits = __insn_v1cmpeq (v, goal)) == 0) + v = *++p; + + return ((char *) p) + (CFZ (bits) >> 3); +} +libc_hidden_def (__rawmemchr) +weak_alias (__rawmemchr, rawmemchr) diff --git a/sysdeps/tile/tilegx/strchr.c b/sysdeps/tile/tilegx/strchr.c new file mode 100644 index 0000000000..0ce73ce89d --- /dev/null +++ b/sysdeps/tile/tilegx/strchr.c @@ -0,0 +1,67 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include "string-endian.h" + +#undef strchr + +char * +strchr (const char *s, int c) +{ + int z, g; + + /* Get an aligned pointer. */ + const uintptr_t s_int = (uintptr_t) s; + const uint64_t *p = (const uint64_t *) (s_int & -8); + + /* Create eight copies of the byte for which we are looking. */ + const uint64_t goal = copy_byte(c); + + /* Read the first aligned word, but force bytes before the string to + match neither zero nor goal (we make sure the high bit of each byte + is 1, and the low 7 bits are all the opposite of the goal byte). */ + const uint64_t before_mask = MASK (s_int); + uint64_t v = (*p | before_mask) ^ (goal & __insn_v1shrui (before_mask, 1)); + + uint64_t zero_matches, goal_matches; + while (1) + { + /* Look for a terminating '\0'. */ + zero_matches = __insn_v1cmpeqi (v, 0); + + /* Look for the goal byte. */ + goal_matches = __insn_v1cmpeq (v, goal); + + if (__builtin_expect ((zero_matches | goal_matches) != 0, 0)) + break; + + v = *++p; + } + + z = CFZ (zero_matches); + g = CFZ (goal_matches); + + /* If we found c before '\0' we got a match. Note that if c == '\0' + then g == z, and we correctly return the address of the '\0' + rather than NULL. */ + return (g <= z) ? ((char *) p) + (g >> 3) : NULL; +} +weak_alias (strchr, index) +libc_hidden_builtin_def (strchr) diff --git a/sysdeps/tile/tilegx/strchrnul.c b/sysdeps/tile/tilegx/strchrnul.c new file mode 100644 index 0000000000..34c4317417 --- /dev/null +++ b/sysdeps/tile/tilegx/strchrnul.c @@ -0,0 +1,64 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include "string-endian.h" + +char * +__strchrnul (const char *s, int c) +{ + int z, g; + + /* Get an aligned pointer. */ + const uintptr_t s_int = (uintptr_t) s; + const uint64_t *p = (const uint64_t *) (s_int & -8); + + /* Create eight copies of the byte for which we are looking. */ + const uint64_t goal = copy_byte(c); + + /* Read the first aligned word, but force bytes before the string to + match neither zero nor goal (we make sure the high bit of each byte + is 1, and the low 7 bits are all the opposite of the goal byte). */ + const uint64_t before_mask = MASK (s_int); + uint64_t v = (*p | before_mask) ^ (goal & __insn_v1shrui (before_mask, 1)); + + uint64_t zero_matches, goal_matches; + while (1) + { + /* Look for a terminating '\0'. */ + zero_matches = __insn_v1cmpeqi (v, 0); + + /* Look for the goal byte. */ + goal_matches = __insn_v1cmpeq (v, goal); + + if (__builtin_expect ((zero_matches | goal_matches) != 0, 0)) + break; + + v = *++p; + } + + z = CFZ (zero_matches); + g = CFZ (goal_matches); + + /* Return a pointer to the NUL or goal, whichever is first. */ + if (z < g) + g = z; + return ((char *) p) + (g >> 3); +} +weak_alias (__strchrnul, strchrnul) diff --git a/sysdeps/tile/tilegx/string-endian.h b/sysdeps/tile/tilegx/string-endian.h new file mode 100644 index 0000000000..0c4d51766d --- /dev/null +++ b/sysdeps/tile/tilegx/string-endian.h @@ -0,0 +1,47 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +/* Provide a mask based on the pointer alignment that + sets up non-zero bytes before the beginning of the string. + The MASK expression works because shift counts are taken mod 64. + Also, specify how to count "first" and "last" bits + when the bits have been read as a word. */ + +#include + +#ifndef __BIG_ENDIAN__ +#define MASK(x) (__insn_shl(1ULL, (x << 3)) - 1) +#define NULMASK(x) ((2ULL << x) - 1) +#define CFZ(x) __insn_ctz(x) +#define REVCZ(x) __insn_clz(x) +#else +#define MASK(x) (__insn_shl(-2LL, ((-x << 3) - 1))) +#define NULMASK(x) (-2LL << (63 - x)) +#define CFZ(x) __insn_clz(x) +#define REVCZ(x) __insn_ctz(x) +#endif + +/* Create eight copies of the byte in a uint64_t. */ +static inline uint64_t copy_byte(uint8_t byte) +{ + uint64_t word = byte; + word = __insn_bfins(word, word, 8, 15); + word = __insn_bfins(word, word, 16, 31); + word = __insn_bfins(word, word, 32, 63); + return word; +} diff --git a/sysdeps/tile/tilegx/strlen.c b/sysdeps/tile/tilegx/strlen.c new file mode 100644 index 0000000000..d0c06dc23e --- /dev/null +++ b/sysdeps/tile/tilegx/strlen.c @@ -0,0 +1,39 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include "string-endian.h" + +size_t +strlen (const char *s) +{ + /* Get an aligned pointer. */ + const uintptr_t s_int = (uintptr_t) s; + const uint64_t *p = (const uint64_t *) (s_int & -8); + + /* Read and MASK the first word. */ + uint64_t v = *p | MASK (s_int); + + uint64_t bits; + while ((bits = __insn_v1cmpeqi (v, 0)) == 0) + v = *++p; + + return ((const char *) p) + (CFZ (bits) >> 3) - s; +} +libc_hidden_builtin_def (strlen) diff --git a/sysdeps/tile/tilegx/strrchr.c b/sysdeps/tile/tilegx/strrchr.c new file mode 100644 index 0000000000..f201cfa4fa --- /dev/null +++ b/sysdeps/tile/tilegx/strrchr.c @@ -0,0 +1,68 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include "string-endian.h" + +char * +strrchr (const char *s, int c) +{ + /* Get an aligned pointer. */ + const uintptr_t s_int = (uintptr_t) s; + const uint64_t *p = (const uint64_t *) (s_int & -8); + + /* Create eight copies of the byte for which we are looking. */ + const uint64_t goal = copy_byte(c); + + /* Read the first aligned word, but force bytes before the string to + match neither zero nor goal (we make sure the high bit of each byte + is 1, and the low 7 bits are all the opposite of the goal byte). */ + const uint64_t before_mask = MASK (s_int); + uint64_t v = (*p | before_mask) ^ (goal & __insn_v1shrui (before_mask, 1)); + const char *found = NULL; + uint64_t zero_matches, goal_matches; + while (1) + { + /* Look for a terminating '\0'. */ + zero_matches = __insn_v1cmpeqi (v, 0); + + /* Look for the goal byte. */ + goal_matches = __insn_v1cmpeq (v, goal); + + /* If we found the goal, record the last offset. */ + if (__builtin_expect (goal_matches != 0, 0)) + { + if (__builtin_expect (zero_matches != 0, 0)) + { + /* Clear any goal after the first zero. */ + int first_nul = CFZ (zero_matches); + goal_matches &= NULMASK (first_nul); + } + if (__builtin_expect (goal_matches != 0, 1)) + found = ((char *) p) + 7 - (REVCZ (goal_matches) >> 3); + } + + if (__builtin_expect (zero_matches != 0, 0)) + return (char *) found; + + v = *++p; + } +} +weak_alias (strrchr, rindex) +libc_hidden_builtin_def (strrchr) diff --git a/sysdeps/tile/tilegx/tilegx32/Implies b/sysdeps/tile/tilegx/tilegx32/Implies new file mode 100644 index 0000000000..993b7f4cd1 --- /dev/null +++ b/sysdeps/tile/tilegx/tilegx32/Implies @@ -0,0 +1,3 @@ +tile/tilegx +tile +wordsize-32 diff --git a/sysdeps/tile/tilegx/tilegx64/Implies b/sysdeps/tile/tilegx/tilegx64/Implies new file mode 100644 index 0000000000..eb0686e0e6 --- /dev/null +++ b/sysdeps/tile/tilegx/tilegx64/Implies @@ -0,0 +1,3 @@ +tile/tilegx +tile +wordsize-64 diff --git a/sysdeps/tile/tilepro/Implies b/sysdeps/tile/tilepro/Implies new file mode 100644 index 0000000000..709e1dc122 --- /dev/null +++ b/sysdeps/tile/tilepro/Implies @@ -0,0 +1,2 @@ +tile +wordsize-32 diff --git a/sysdeps/tile/tilepro/bits/atomic.h b/sysdeps/tile/tilepro/bits/atomic.h new file mode 100644 index 0000000000..cbbf64cef1 --- /dev/null +++ b/sysdeps/tile/tilepro/bits/atomic.h @@ -0,0 +1,81 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _BITS_ATOMIC_H +#define _BITS_ATOMIC_H 1 + +#include + +/* 32-bit integer compare-and-exchange. */ +static __inline __attribute__ ((always_inline)) +int __atomic_cmpxchg_32 (volatile int *mem, int newval, int oldval) +{ + int result; + __asm__ __volatile__ ("swint1" + : "=R00" (result), "=m" (*mem) + : "R10" (__NR_FAST_cmpxchg), "R00" (mem), + "R01" (oldval), "R02" (newval), "m" (*mem) + : "r20", "r21", "r22", "r23", "r24", + "r25", "r26", "r27", "r28", "r29", "memory"); + return result; +} + +#define atomic_compare_and_exchange_val_acq(mem, n, o) \ + ((__typeof (*(mem))) \ + ((sizeof (*(mem)) == 4) ? \ + __atomic_cmpxchg_32 ((int *) (mem), (int) (n), (int) (o)) : \ + __atomic_error_bad_argument_size())) + +/* Atomically compute: + int old = *ptr; + *ptr = (old & mask) + addend; + return old; */ + +static __inline __attribute__ ((always_inline)) +int __atomic_update_32 (volatile int *mem, int mask, int addend) +{ + int result; + __asm__ __volatile__ ("swint1" + : "=R00" (result), "=m" (*mem) + : "R10" (__NR_FAST_atomic_update), "R00" (mem), + "R01" (mask), "R02" (addend), "m" (*mem) + : "r20", "r21", "r22", "r23", "r24", + "r25", "r26", "r27", "r28", "r29", "memory"); + return result; +} + +/* Size-checked verson of __atomic_update_32. */ +#define __atomic_update(mem, mask, addend) \ + ((__typeof (*(mem))) \ + ((sizeof (*(mem)) == 4) ? \ + __atomic_update_32 ((int *) (mem), (int) (mask), (int) (addend)) : \ + __atomic_error_bad_argument_size ())) + +#define atomic_exchange_acq(mem, newvalue) \ + __atomic_update ((mem), 0, (newvalue)) +#define atomic_exchange_and_add(mem, value) \ + __atomic_update ((mem), -1, (value)) +#define atomic_and_val(mem, mask) \ + __atomic_update ((mem), (mask), 0) +#define atomic_or_val(mem, mask) \ + ({ __typeof (mask) __att1_v = (mask); \ + __atomic_update ((mem), ~__att1_v, __att1_v); }) + +#include + +#endif /* bits/atomic.h */ diff --git a/sysdeps/tile/tilepro/bits/wordsize.h b/sysdeps/tile/tilepro/bits/wordsize.h new file mode 100644 index 0000000000..da587a2f12 --- /dev/null +++ b/sysdeps/tile/tilepro/bits/wordsize.h @@ -0,0 +1,3 @@ +/* Determine the wordsize from the preprocessor defines. */ + +#define __WORDSIZE 32 diff --git a/sysdeps/tile/tilepro/memchr.c b/sysdeps/tile/tilepro/memchr.c new file mode 100644 index 0000000000..87e64d2216 --- /dev/null +++ b/sysdeps/tile/tilepro/memchr.c @@ -0,0 +1,72 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include + +void * +__memchr (const void *s, int c, size_t n) +{ + const uint32_t *last_word_ptr; + const uint32_t *p; + const char *last_byte_ptr; + uintptr_t s_int; + uint32_t goal, before_mask, v, bits; + char *ret; + + if (__builtin_expect (n == 0, 0)) + { + /* Don't dereference any memory if the array is empty. */ + return NULL; + } + + /* Get an aligned pointer. */ + s_int = (uintptr_t) s; + p = (const uint32_t *) (s_int & -4); + + /* Create four copies of the byte for which we are looking. */ + goal = 0x01010101 * (uint8_t) c; + + /* Read the first word, but munge it so that bytes before the array + will not match goal. Note that this shift count expression works + because we know shift counts are taken mod 32. */ + before_mask = (1 << (s_int << 3)) - 1; + v = (*p | before_mask) ^ (goal & before_mask); + + /* Compute the address of the last byte. */ + last_byte_ptr = (const char *) s + n - 1; + + /* Compute the address of the word containing the last byte. */ + last_word_ptr = (const uint32_t *) ((uintptr_t) last_byte_ptr & -4); + + while ((bits = __insn_seqb (v, goal)) == 0) + { + if (__builtin_expect (p == last_word_ptr, 0)) + { + /* We already read the last word in the array, so give up. */ + return NULL; + } + v = *++p; + } + + /* We found a match, but it might be in a byte past the end of the array. */ + ret = ((char *) p) + (__insn_ctz (bits) >> 3); + return (ret <= last_byte_ptr) ? ret : NULL; +} +weak_alias (__memchr, memchr) +libc_hidden_builtin_def (memchr) diff --git a/sysdeps/tile/tilepro/memcpy.S b/sysdeps/tile/tilepro/memcpy.S new file mode 100644 index 0000000000..1d496a4f2c --- /dev/null +++ b/sysdeps/tile/tilepro/memcpy.S @@ -0,0 +1,397 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include + + .text +ENTRY (__memcpy) + FEEDBACK_ENTER(__memcpy) + + /* r0 is the dest, r1 is the source, r2 is the size. */ + + /* Save aside original dest so we can return it at the end. */ + { sw sp, lr; move r23, r0; or r4, r0, r1 } + cfi_offset (lr, 0) + + /* Check for an empty size. */ + { bz r2, .Ldone; andi r4, r4, 3 } + + /* Check for an unaligned source or dest. */ + { bnz r4, .Lcopy_unaligned_maybe_many; addli r4, r2, -256 } + +.Lcheck_aligned_copy_size: + /* If we are copying < 256 bytes, branch to simple case. */ + { blzt r4, .Lcopy_8_check; slti_u r8, r2, 8 } + + /* Copying >= 256 bytes, so jump to complex prefetching loop. */ + { andi r6, r1, 63; j .Lcopy_many } + +/* Aligned 4 byte at a time copy loop. */ + +.Lcopy_8_loop: + /* Copy two words at a time to hide load latency. */ + { lw r3, r1; addi r1, r1, 4; slti_u r8, r2, 16 } + { lw r4, r1; addi r1, r1, 4 } + { sw r0, r3; addi r0, r0, 4; addi r2, r2, -4 } + { sw r0, r4; addi r0, r0, 4; addi r2, r2, -4 } +.Lcopy_8_check: + { bzt r8, .Lcopy_8_loop; slti_u r4, r2, 4 } + + /* Copy odd leftover word, if any. */ + { bnzt r4, .Lcheck_odd_stragglers } + { lw r3, r1; addi r1, r1, 4 } + { sw r0, r3; addi r0, r0, 4; addi r2, r2, -4 } + +.Lcheck_odd_stragglers: + { bnz r2, .Lcopy_unaligned_few } + +.Ldone: + { move r0, r23; jrp lr } + +/* Prefetching multiple cache line copy handler (for large transfers). */ + + /* Copy words until r1 is cache-line-aligned. */ +.Lalign_loop: + { lw r3, r1; addi r1, r1, 4 } + { andi r6, r1, 63 } + { sw r0, r3; addi r0, r0, 4; addi r2, r2, -4 } +.Lcopy_many: + { bnzt r6, .Lalign_loop; addi r9, r0, 63 } + + { addi r3, r1, 60; andi r9, r9, -64 } + + /* No need to prefetch dst, we'll just do the wh64 + right before we copy a line. */ + { lw r5, r3; addi r3, r3, 64; movei r4, 1 } + /* Intentionally stall for a few cycles to leave L2 cache alone. */ + { bnzt zero, .; move r27, lr } + { lw r6, r3; addi r3, r3, 64 } + /* Intentionally stall for a few cycles to leave L2 cache alone. */ + { bnzt zero, . } + { lw r7, r3; addi r3, r3, 64 } + /* Intentionally stall for a few cycles to leave L2 cache alone. */ + { bz zero, .Lbig_loop2 } + + /* On entry to this loop: + - r0 points to the start of dst line 0 + - r1 points to start of src line 0 + - r2 >= (256 - 60), only the first time the loop trips. + - r3 contains r1 + 128 + 60 [pointer to end of source line 2] + This is our prefetch address. When we get near the end + rather than prefetching off the end this is changed to point + to some "safe" recently loaded address. + - r5 contains *(r1 + 60) [i.e. last word of source line 0] + - r6 contains *(r1 + 64 + 60) [i.e. last word of source line 1] + - r9 contains ((r0 + 63) & -64) + [start of next dst cache line.] */ + +.Lbig_loop: + { jal .Lcopy_line2; add r15, r1, r2 } + +.Lbig_loop2: + /* Copy line 0, first stalling until r5 is ready. */ + { move r12, r5; lw r16, r1 } + { bz r4, .Lcopy_8_check; slti_u r8, r2, 8 } + /* Prefetch several lines ahead. */ + { lw r5, r3; addi r3, r3, 64 } + { jal .Lcopy_line } + + /* Copy line 1, first stalling until r6 is ready. */ + { move r12, r6; lw r16, r1 } + { bz r4, .Lcopy_8_check; slti_u r8, r2, 8 } + /* Prefetch several lines ahead. */ + { lw r6, r3; addi r3, r3, 64 } + { jal .Lcopy_line } + + /* Copy line 2, first stalling until r7 is ready. */ + { move r12, r7; lw r16, r1 } + { bz r4, .Lcopy_8_check; slti_u r8, r2, 8 } + /* Prefetch several lines ahead. */ + { lw r7, r3; addi r3, r3, 64 } + /* Use up a caches-busy cycle by jumping back to the top of the + loop. Might as well get it out of the way now. */ + { j .Lbig_loop } + + + /* On entry: + - r0 points to the destination line. + - r1 points to the source line. + - r3 is the next prefetch address. + - r9 holds the last address used for wh64. + - r12 = WORD_15 + - r16 = WORD_0. + - r17 == r1 + 16. + - r27 holds saved lr to restore. + + On exit: + - r0 is incremented by 64. + - r1 is incremented by 64, unless that would point to a word + beyond the end of the source array, in which case it is redirected + to point to an arbitrary word already in the cache. + - r2 is decremented by 64. + - r3 is unchanged, unless it points to a word beyond the + end of the source array, in which case it is redirected + to point to an arbitrary word already in the cache. + Redirecting is OK since if we are that close to the end + of the array we will not come back to this subroutine + and use the contents of the prefetched address. + - r4 is nonzero iff r2 >= 64. + - r9 is incremented by 64, unless it points beyond the + end of the last full destination cache line, in which + case it is redirected to a "safe address" that can be + clobbered (sp - 64) + - lr contains the value in r27. */ + +/* r26 unused */ + +.Lcopy_line: + /* TODO: when r3 goes past the end, we would like to redirect it + to prefetch the last partial cache line (if any) just once, for the + benefit of the final cleanup loop. But we don't want to + prefetch that line more than once, or subsequent prefetches + will go into the RTF. But then .Lbig_loop should unconditionally + branch to top of loop to execute final prefetch, and its + nop should become a conditional branch. */ + + /* We need two non-memory cycles here to cover the resources + used by the loads initiated by the caller. */ + { add r15, r1, r2 } +.Lcopy_line2: + { slt_u r13, r3, r15; addi r17, r1, 16 } + + /* NOTE: this will stall for one cycle as L1 is busy. */ + + /* Fill second L1D line. */ + { lw r17, r17; addi r1, r1, 48; mvz r3, r13, r1 } /* r17 = WORD_4 */ + + /* Prepare destination line for writing. */ + { wh64 r9; addi r9, r9, 64 } + + /* Load seven words that are L1D hits to cover wh64 L2 usage. */ + + /* Load the three remaining words from the last L1D line, which + we know has already filled the L1D. */ + { lw r4, r1; addi r1, r1, 4; addi r20, r1, 16 } /* r4 = WORD_12 */ + { lw r8, r1; addi r1, r1, 4; slt_u r13, r20, r15 }/* r8 = WORD_13 */ + { lw r11, r1; addi r1, r1, -52; mvz r20, r13, r1 } /* r11 = WORD_14 */ + + /* Load the three remaining words from the first L1D line, first + stalling until it has filled by "looking at" r16. */ + { lw r13, r1; addi r1, r1, 4; move zero, r16 } /* r13 = WORD_1 */ + { lw r14, r1; addi r1, r1, 4 } /* r14 = WORD_2 */ + { lw r15, r1; addi r1, r1, 8; addi r10, r0, 60 } /* r15 = WORD_3 */ + + /* Load second word from the second L1D line, first + stalling until it has filled by "looking at" r17. */ + { lw r19, r1; addi r1, r1, 4; move zero, r17 } /* r19 = WORD_5 */ + + /* Store last word to the destination line, potentially dirtying it + for the first time, which keeps the L2 busy for two cycles. */ + { sw r10, r12 } /* store(WORD_15) */ + + /* Use two L1D hits to cover the sw L2 access above. */ + { lw r10, r1; addi r1, r1, 4 } /* r10 = WORD_6 */ + { lw r12, r1; addi r1, r1, 4 } /* r12 = WORD_7 */ + + /* Fill third L1D line. */ + { lw r18, r1; addi r1, r1, 4 } /* r18 = WORD_8 */ + + /* Store first L1D line. */ + { sw r0, r16; addi r0, r0, 4; add r16, r0, r2 } /* store(WORD_0) */ + { sw r0, r13; addi r0, r0, 4; andi r16, r16, -64 } /* store(WORD_1) */ + { sw r0, r14; addi r0, r0, 4; slt_u r16, r9, r16 } /* store(WORD_2) */ + { sw r0, r15; addi r0, r0, 4; addi r13, sp, -64 } /* store(WORD_3) */ + + /* Store second L1D line. */ + { sw r0, r17; addi r0, r0, 4; mvz r9, r16, r13 }/* store(WORD_4) */ + { sw r0, r19; addi r0, r0, 4 } /* store(WORD_5) */ + { sw r0, r10; addi r0, r0, 4 } /* store(WORD_6) */ + { sw r0, r12; addi r0, r0, 4 } /* store(WORD_7) */ + + { lw r13, r1; addi r1, r1, 4; move zero, r18 } /* r13 = WORD_9 */ + { lw r14, r1; addi r1, r1, 4 } /* r14 = WORD_10 */ + { lw r15, r1; move r1, r20 } /* r15 = WORD_11 */ + + /* Store third L1D line. */ + { sw r0, r18; addi r0, r0, 4 } /* store(WORD_8) */ + { sw r0, r13; addi r0, r0, 4 } /* store(WORD_9) */ + { sw r0, r14; addi r0, r0, 4 } /* store(WORD_10) */ + { sw r0, r15; addi r0, r0, 4 } /* store(WORD_11) */ + + /* Store rest of fourth L1D line. */ + { sw r0, r4; addi r0, r0, 4 } /* store(WORD_12) */ + { + sw r0, r8 /* store(WORD_13) */ + addi r0, r0, 4 + /* Will r2 be > 64 after we subtract 64 below? */ + shri r4, r2, 7 + } + { + sw r0, r11 /* store(WORD_14) */ + addi r0, r0, 8 + /* Record 64 bytes successfully copied. */ + addi r2, r2, -64 + } + + { jrp lr; move lr, r27 } + + /* Convey to the backtrace library that the stack frame is + size zero, and the real return address is on the stack + rather than in 'lr'. */ + { info 8 } + + .align 64 +.Lcopy_unaligned_maybe_many: + /* Skip the setup overhead if we aren't copying many bytes. */ + { slti_u r8, r2, 20; sub r4, zero, r0 } + { bnzt r8, .Lcopy_unaligned_few; andi r4, r4, 3 } + { bz r4, .Ldest_is_word_aligned; add r18, r1, r2 } + +/* Unaligned 4 byte at a time copy handler. */ + + /* Copy single bytes until r0 == 0 mod 4, so we can store words. */ +.Lalign_dest_loop: + { lb_u r3, r1; addi r1, r1, 1; addi r4, r4, -1 } + { sb r0, r3; addi r0, r0, 1; addi r2, r2, -1 } + { bnzt r4, .Lalign_dest_loop; andi r3, r1, 3 } + + /* If source and dest are now *both* aligned, do an aligned copy. */ + { bz r3, .Lcheck_aligned_copy_size; addli r4, r2, -256 } + +.Ldest_is_word_aligned: + + { andi r8, r0, 63; lwadd_na r6, r1, 4} + { slti_u r9, r2, 64; bz r8, .Ldest_is_L2_line_aligned } + + /* This copies unaligned words until either there are fewer + than 4 bytes left to copy, or until the destination pointer + is cache-aligned, whichever comes first. + + On entry: + - r0 is the next store address. + - r1 points 4 bytes past the load address corresponding to r0. + - r2 >= 4 + - r6 is the next aligned word loaded. */ +.Lcopy_unaligned_src_words: + { lwadd_na r7, r1, 4; slti_u r8, r2, 4 + 4 } + /* stall */ + { dword_align r6, r7, r1; slti_u r9, r2, 64 + 4 } + { swadd r0, r6, 4; addi r2, r2, -4 } + { bnz r8, .Lcleanup_unaligned_words; andi r8, r0, 63 } + { bnzt r8, .Lcopy_unaligned_src_words; move r6, r7 } + + /* On entry: + - r0 is the next store address. + - r1 points 4 bytes past the load address corresponding to r0. + - r2 >= 4 (# of bytes left to store). + - r6 is the next aligned src word value. + - r9 = (r2 < 64U). + - r18 points one byte past the end of source memory. */ +.Ldest_is_L2_line_aligned: + + { + /* Not a full cache line remains. */ + bnz r9, .Lcleanup_unaligned_words + move r7, r6 + } + + /* r2 >= 64 */ + + /* Kick off two prefetches, but don't go past the end. */ + { addi r3, r1, 63 - 4; addi r8, r1, 64 + 63 - 4 } + { prefetch r3; move r3, r8; slt_u r8, r8, r18 } + { mvz r3, r8, r1; addi r8, r3, 64 } + { prefetch r3; move r3, r8; slt_u r8, r8, r18 } + { mvz r3, r8, r1; movei r17, 0 } + +.Lcopy_unaligned_line: + /* Prefetch another line. */ + { prefetch r3; addi r15, r1, 60; addi r3, r3, 64 } + /* Fire off a load of the last word we are about to copy. */ + { lw_na r15, r15; slt_u r8, r3, r18 } + + { mvz r3, r8, r1; wh64 r0 } + + /* This loop runs twice. + + On entry: + - r17 is even before the first iteration, and odd before + the second. It is incremented inside the loop. Encountering + an even value at the end of the loop makes it stop. */ +.Lcopy_half_an_unaligned_line: + { + /* Stall until the last byte is ready. In the steady state this + guarantees all words to load below will be in the L2 cache, which + avoids shunting the loads to the RTF. */ + move zero, r15 + lwadd_na r7, r1, 16 + } + { lwadd_na r11, r1, 12 } + { lwadd_na r14, r1, -24 } + { lwadd_na r8, r1, 4 } + { lwadd_na r9, r1, 4 } + { + lwadd_na r10, r1, 8 + /* r16 = (r2 < 64), after we subtract 32 from r2 below. */ + slti_u r16, r2, 64 + 32 + } + { lwadd_na r12, r1, 4; addi r17, r17, 1 } + { lwadd_na r13, r1, 8; dword_align r6, r7, r1 } + { swadd r0, r6, 4; dword_align r7, r8, r1 } + { swadd r0, r7, 4; dword_align r8, r9, r1 } + { swadd r0, r8, 4; dword_align r9, r10, r1 } + { swadd r0, r9, 4; dword_align r10, r11, r1 } + { swadd r0, r10, 4; dword_align r11, r12, r1 } + { swadd r0, r11, 4; dword_align r12, r13, r1 } + { swadd r0, r12, 4; dword_align r13, r14, r1 } + { swadd r0, r13, 4; addi r2, r2, -32 } + { move r6, r14; bbst r17, .Lcopy_half_an_unaligned_line } + + { bzt r16, .Lcopy_unaligned_line; move r7, r6 } + + /* On entry: + - r0 is the next store address. + - r1 points 4 bytes past the load address corresponding to r0. + - r2 >= 0 (# of bytes left to store). + - r7 is the next aligned src word value. */ +.Lcleanup_unaligned_words: + /* Handle any trailing bytes. */ + { bz r2, .Lcopy_unaligned_done; slti_u r8, r2, 4 } + { bzt r8, .Lcopy_unaligned_src_words; move r6, r7 } + + /* Move r1 back to the point where it corresponds to r0. */ + { addi r1, r1, -4 } + + /* Fall through */ + +/* 1 byte at a time copy handler. */ + +.Lcopy_unaligned_few: + { lb_u r3, r1; addi r1, r1, 1 } + { sb r0, r3; addi r0, r0, 1; addi r2, r2, -1 } + { bnzt r2, .Lcopy_unaligned_few } + +.Lcopy_unaligned_done: + + { move r0, r23; jrp lr } + +END (__memcpy) + +weak_alias (__memcpy, memcpy) +libc_hidden_builtin_def (memcpy) diff --git a/sysdeps/tile/tilepro/memset.c b/sysdeps/tile/tilepro/memset.c new file mode 100644 index 0000000000..85d6b810ed --- /dev/null +++ b/sysdeps/tile/tilepro/memset.c @@ -0,0 +1,151 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include + +void * +__memset (void *s, int c, size_t n) +{ + uint32_t *out32; + int n32; + uint32_t v16, v32; + uint8_t *out8 = s; + int to_align32; + + /* Experimentation shows that a trivial tight loop is a win up until + around a size of 20, where writing a word at a time starts to win. */ +#define BYTE_CUTOFF 20 + +#if BYTE_CUTOFF < 3 + /* This must be at least at least this big, or some code later + on doesn't work. */ +# error "BYTE_CUTOFF is too small." +#endif + + if (n < BYTE_CUTOFF) + { + /* Strangely, this turns out to be the tightest way to write + this loop. */ + if (n != 0) + { + do + { + /* Strangely, combining these into one line performs worse. */ + *out8 = c; + out8++; + } + while (--n != 0); + } + + return s; + } + + /* Align 'out8'. We know n >= 3 so this won't write past the end. */ + while (((uintptr_t) out8 & 3) != 0) + { + *out8++ = c; + --n; + } + + /* Align 'n'. */ + while (n & 3) + out8[--n] = c; + + out32 = (uint32_t *) out8; + n32 = n >> 2; + + /* Tile input byte out to 32 bits. */ + v16 = __insn_intlb (c, c); + v32 = __insn_intlh (v16, v16); + + /* This must be at least 8 or the following loop doesn't work. */ +#define CACHE_LINE_SIZE_IN_WORDS (CHIP_L2_LINE_SIZE() / 4) + + /* Determine how many words we need to emit before the 'out32' + pointer becomes aligned modulo the cache line size. */ + to_align32 = (-((uintptr_t) out32 >> 2)) & (CACHE_LINE_SIZE_IN_WORDS - 1); + + /* Only bother aligning and using wh64 if there is at least one full + cache line to process. This check also prevents overrunning the + end of the buffer with alignment words. */ + if (to_align32 <= n32 - CACHE_LINE_SIZE_IN_WORDS) + { + int lines_left; + + /* Align out32 mod the cache line size so we can use wh64. */ + n32 -= to_align32; + for (; to_align32 != 0; to_align32--) + { + *out32 = v32; + out32++; + } + + /* Use unsigned divide to turn this into a right shift. */ + lines_left = (unsigned) n32 / CACHE_LINE_SIZE_IN_WORDS; + + do + { + /* Only wh64 a few lines at a time, so we don't exceed the + maximum number of victim lines. */ + int x = ((lines_left < CHIP_MAX_OUTSTANDING_VICTIMS ())? lines_left + : CHIP_MAX_OUTSTANDING_VICTIMS ()); + uint32_t *wh = out32; + int i = x; + int j; + + lines_left -= x; + + do + { + __insn_wh64 (wh); + wh += CACHE_LINE_SIZE_IN_WORDS; + } + while (--i); + + for (j = x * (CACHE_LINE_SIZE_IN_WORDS / 4); j != 0; j--) + { + *out32++ = v32; + *out32++ = v32; + *out32++ = v32; + *out32++ = v32; + } + } + while (lines_left != 0); + + /* We processed all full lines above, so only this many words + remain to be processed. */ + n32 &= CACHE_LINE_SIZE_IN_WORDS - 1; + } + + /* Now handle any leftover values. */ + if (n32 != 0) + { + do + { + *out32 = v32; + out32++; + } + while (--n32 != 0); + } + + return s; +} +weak_alias (__memset, memset) +libc_hidden_builtin_def (memset) diff --git a/sysdeps/tile/tilepro/memusage.h b/sysdeps/tile/tilepro/memusage.h new file mode 100644 index 0000000000..1ce1a29fbe --- /dev/null +++ b/sysdeps/tile/tilepro/memusage.h @@ -0,0 +1,29 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include + +#define GETSP() ({ register uintptr_t stack_ptr asm ("sp"); stack_ptr; }) + +#define GETTIME(low,high) \ + { \ + low = __insn_mfspr (SPR_CYCLE_LOW); \ + high = __insn_mfspr (SPR_CYCLE_HIGH); \ + } + +#include diff --git a/sysdeps/tile/tilepro/rawmemchr.c b/sysdeps/tile/tilepro/rawmemchr.c new file mode 100644 index 0000000000..46d9593a7f --- /dev/null +++ b/sysdeps/tile/tilepro/rawmemchr.c @@ -0,0 +1,45 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include + +void * +__rawmemchr (const void *s, int c) +{ + /* Get an aligned pointer. */ + const uintptr_t s_int = (uintptr_t) s; + const uint32_t *p = (const uint32_t *) (s_int & -4); + + /* Create four copies of the byte for which we are looking. */ + const uint32_t goal = 0x01010101 * (uint8_t) c; + + /* Read the first word, but munge it so that bytes before the array + will not match goal. Note that this shift count expression works + because we know shift counts are taken mod 32. */ + const uint32_t before_mask = (1 << (s_int << 3)) - 1; + uint32_t v = (*p | before_mask) ^ (goal & before_mask); + + uint32_t bits; + while ((bits = __insn_seqb (v, goal)) == 0) + v = *++p; + + return ((char *) p) + (__insn_ctz (bits) >> 3); +} +libc_hidden_def (__rawmemchr) +weak_alias (__rawmemchr, rawmemchr) diff --git a/sysdeps/tile/tilepro/strchr.c b/sysdeps/tile/tilepro/strchr.c new file mode 100644 index 0000000000..ecdbcfe5d1 --- /dev/null +++ b/sysdeps/tile/tilepro/strchr.c @@ -0,0 +1,68 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include + +#undef strchr + +char * +strchr (const char *s, int c) +{ + int z, g; + + /* Get an aligned pointer. */ + const uintptr_t s_int = (uintptr_t) s; + const uint32_t *p = (const uint32_t *) (s_int & -4); + + /* Create four copies of the byte for which we are looking. */ + const uint32_t goal = 0x01010101 * (uint8_t) c; + + /* Read the first aligned word, but force bytes before the string to + match neither zero nor goal (we make sure the high bit of each + byte is 1, and the low 7 bits are all the opposite of the goal + byte). Note that this shift count expression works because we + know shift counts are taken mod 32. */ + const uint32_t before_mask = (1 << (s_int << 3)) - 1; + uint32_t v = (*p | before_mask) ^ (goal & __insn_shrib (before_mask, 1)); + + uint32_t zero_matches, goal_matches; + while (1) + { + /* Look for a terminating '\0'. */ + zero_matches = __insn_seqb (v, 0); + + /* Look for the goal byte. */ + goal_matches = __insn_seqb (v, goal); + + if (__builtin_expect ((zero_matches | goal_matches) != 0, 0)) + break; + + v = *++p; + } + + z = __insn_ctz (zero_matches); + g = __insn_ctz (goal_matches); + + /* If we found c before '\0' we got a match. Note that if c == '\0' + then g == z, and we correctly return the address of the '\0' + rather than NULL. */ + return (g <= z) ? ((char *) p) + (g >> 3) : NULL; +} +weak_alias (strchr, index) +libc_hidden_builtin_def (strchr) diff --git a/sysdeps/tile/tilepro/strchrnul.c b/sysdeps/tile/tilepro/strchrnul.c new file mode 100644 index 0000000000..2dccfe1908 --- /dev/null +++ b/sysdeps/tile/tilepro/strchrnul.c @@ -0,0 +1,65 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include + +char * +__strchrnul (const char *s, int c) +{ + int z, g; + + /* Get an aligned pointer. */ + const uintptr_t s_int = (uintptr_t) s; + const uint32_t *p = (const uint32_t *) (s_int & -4); + + /* Create four copies of the byte for which we are looking. */ + const uint32_t goal = 0x01010101 * (uint8_t) c; + + /* Read the first aligned word, but force bytes before the string to + match neither zero nor goal (we make sure the high bit of each + byte is 1, and the low 7 bits are all the opposite of the goal + byte). Note that this shift count expression works because we + know shift counts are taken mod 32. */ + const uint32_t before_mask = (1 << (s_int << 3)) - 1; + uint32_t v = (*p | before_mask) ^ (goal & __insn_shrib (before_mask, 1)); + + uint32_t zero_matches, goal_matches; + while (1) + { + /* Look for a terminating '\0'. */ + zero_matches = __insn_seqb (v, 0); + + /* Look for the goal byte. */ + goal_matches = __insn_seqb (v, goal); + + if (__builtin_expect ((zero_matches | goal_matches) != 0, 0)) + break; + + v = *++p; + } + + z = __insn_ctz (zero_matches); + g = __insn_ctz (goal_matches); + + /* Return a pointer to the NUL or goal, whichever is first. */ + if (z < g) + g = z; + return ((char *) p) + (g >> 3); +} +weak_alias (__strchrnul, strchrnul) diff --git a/sysdeps/tile/tilepro/strlen.c b/sysdeps/tile/tilepro/strlen.c new file mode 100644 index 0000000000..c40ee56c6f --- /dev/null +++ b/sysdeps/tile/tilepro/strlen.c @@ -0,0 +1,39 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include + +size_t +strlen (const char *s) +{ + /* Get an aligned pointer. */ + const uintptr_t s_int = (uintptr_t) s; + const uint32_t *p = (const uint32_t *) (s_int & -4); + + /* Read the first word, but force bytes before the string to be nonzero. + This expression works because we know shift counts are taken mod 32. */ + uint32_t v = *p | ((1 << (s_int << 3)) - 1); + + uint32_t bits; + while ((bits = __insn_seqb (v, 0)) == 0) + v = *++p; + + return ((const char *) p) + (__insn_ctz (bits) >> 3) - s; +} +libc_hidden_builtin_def (strlen) diff --git a/sysdeps/tile/tilepro/strrchr.c b/sysdeps/tile/tilepro/strrchr.c new file mode 100644 index 0000000000..1c7f5e7014 --- /dev/null +++ b/sysdeps/tile/tilepro/strrchr.c @@ -0,0 +1,73 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include + +char * +strrchr (const char *s, int c) +{ + /* Get an aligned pointer. */ + const uintptr_t s_int = (uintptr_t) s; + const uint32_t *p = (const uint32_t *) (s_int & -4); + + /* Create four copies of the byte for which we are looking. */ + const uint32_t goal = 0x01010101 * (uint8_t) c; + + /* Read the first aligned word, but force bytes before the string to + match neither zero nor goal (we make sure the high bit of each + byte is 1, and the low 7 bits are all the opposite of the goal + byte). Note that this shift count expression works because we + know shift counts are taken mod 32. */ + const uint32_t before_mask = (1 << (s_int << 3)) - 1; + uint32_t v = (*p | before_mask) ^ (goal & __insn_shrib (before_mask, 1)); + const char *found = NULL; + uint32_t zero_matches, goal_matches; + while (1) + { + /* Look for a terminating '\0'. */ + zero_matches = __insn_seqb (v, 0); + + /* Look for the goal byte. */ + goal_matches = __insn_seqb (v, goal); + + /* If we found the goal, record the last offset. */ + if (__builtin_expect (goal_matches != 0, 0)) + { + if (__builtin_expect (zero_matches != 0, 0)) + { + /* Clear any goal after the first zero. */ + int first_nul = __insn_ctz (zero_matches); + /* The number of top bits we need to clear is + 32 - (first_nul + 8). */ + int shift_amt = (24 - first_nul); + goal_matches <<= shift_amt; + goal_matches >>= shift_amt; + } + if (__builtin_expect (goal_matches != 0, 1)) + found = ((char *) p) + 3 - (__insn_clz (goal_matches) >> 3); + } + + if (__builtin_expect (zero_matches != 0, 0)) + return (char *) found; + + v = *++p; + } +} +weak_alias (strrchr, rindex) +libc_hidden_builtin_def (strrchr) diff --git a/sysdeps/tile/tls-macros.h b/sysdeps/tile/tls-macros.h new file mode 100644 index 0000000000..20c924fc5a --- /dev/null +++ b/sysdeps/tile/tls-macros.h @@ -0,0 +1,84 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifdef __tilegx__ +#define TLS_GD_OFFSET(x) \ + "moveli r0, hw1_last_tls_gd(" #x ")\n\t" \ + "shl16insli r0, r0, hw0_tls_gd(" #x ")\n\t" \ + "addi r0, %1, tls_add(" #x ")\n\t" +#else +#define TLS_GD_OFFSET(x) \ + "auli r0, %1, tls_gd_ha16(" #x ")\n\t" \ + "addli r0, r0, tls_gd_lo16(" #x ")\n\t" +#endif + +#define TLS_GD(x) \ + ({ \ + int *__retval; \ + extern char _GLOBAL_OFFSET_TABLE_[]; \ + \ + asm (TLS_GD_OFFSET(x) \ + "jal tls_gd_call(" #x ")\n\t" \ + "addi %0, r0, tls_gd_add(" #x ")" : \ + "=&r" (__retval) : "r" (_GLOBAL_OFFSET_TABLE_) : \ + "r0", "r25", "r26", "r27", "r28", "r29"); \ + __retval; }) + +/* No special support for LD mode. */ +#define TLS_LD TLS_GD + +#ifdef __tilegx__ +#define TLS_IE_OFFSET(x) \ + "moveli %0, hw1_last_tls_ie(" #x ")\n\t" \ + "shl16insli %0, %0, hw0_tls_ie(" #x ")\n\t" \ + "addi %0, %1, tls_add(" #x ")\n\t" +#define LD_TLS "ld_tls" +#else +#define TLS_IE_OFFSET(x) \ + "auli %0, %1, tls_ie_ha16(" #x ")\n\t" \ + "addli %0, %0, tls_ie_lo16(" #x ")\n\t" +#define LD_TLS "lw_tls" +#endif + +#define TLS_IE(x) \ + ({ \ + int *__retval; \ + extern char _GLOBAL_OFFSET_TABLE_[]; \ + \ + asm (TLS_IE_OFFSET(x) \ + LD_TLS " %0, %0, tls_ie_load(" #x ")\n\t" \ + "add %0, %0, tp" : \ + "=&r" (__retval) : "r" (_GLOBAL_OFFSET_TABLE_)); \ + __retval; }) + +#ifdef __tilegx__ +#define _TLS_LE(x) \ + "moveli %0, hw1_last_tls_le(" #x ")\n\t" \ + "shl16insli %0, %0, hw0_tls_le(" #x ")\n\t" \ + "add %0, %0, tp" +#else +#define _TLS_LE(x) \ + "auli %0, tp, tls_le_ha16(" #x ")\n\t" \ + "addli %0, %0, tls_le_lo16(" #x ")\n\t" +#endif + +#define TLS_LE(x) \ + ({ \ + int *__retval; \ + asm (_TLS_LE(x) : "=r" (__retval)); \ + __retval; }) diff --git a/sysdeps/tile/tst-audit.h b/sysdeps/tile/tst-audit.h new file mode 100644 index 0000000000..e5fe61f9e7 --- /dev/null +++ b/sysdeps/tile/tst-audit.h @@ -0,0 +1,23 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#define pltenter la_tile_gnu_pltenter +#define pltexit la_tile_gnu_pltexit +#define La_regs La_tile_regs +#define La_retval La_tile_retval +#define int_retval lrv_reg[0] diff --git a/sysdeps/tile/wordcopy.c b/sysdeps/tile/wordcopy.c new file mode 100644 index 0000000000..5ed0e949f6 --- /dev/null +++ b/sysdeps/tile/wordcopy.c @@ -0,0 +1,449 @@ +/* wordcopy.c -- subroutines for memory copy functions. Tile version. + Copyright (C) 1991-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +/* To optimize for tile, we make the following changes from the + default glibc version: + - Use the double align instruction instead of the MERGE macro. + - Since we don't have offset addressing mode, make sure the loads / + stores in the inner loop always have indices of 0. + - Use post-increment addresses in the inner loops, which yields + better scheduling. */ + +/* BE VERY CAREFUL IF YOU CHANGE THIS CODE...! */ + +#include +#include + +/* Provide the appropriate dblalign builtin to shift two registers + based on the alignment of a pointer held in a third register. */ +#ifdef __tilegx__ +#define DBLALIGN __insn_dblalign +#else +#define DBLALIGN __insn_dword_align +#endif + +/* _wordcopy_fwd_aligned -- Copy block beginning at SRCP to + block beginning at DSTP with LEN `op_t' words (not LEN bytes!). + Both SRCP and DSTP should be aligned for memory operations on `op_t's. */ + +void +_wordcopy_fwd_aligned (dstp, srcp, len) + long int dstp; + long int srcp; + size_t len; +{ + op_t a0, a1; + + switch (len % 8) + { + case 2: + a0 = ((op_t *) srcp)[0]; + srcp += OPSIZ; + len += 6; + goto do1; + case 3: + a1 = ((op_t *) srcp)[0]; + srcp += OPSIZ; + len += 5; + goto do2; + case 4: + a0 = ((op_t *) srcp)[0]; + srcp += OPSIZ; + len += 4; + goto do3; + case 5: + a1 = ((op_t *) srcp)[0]; + srcp += OPSIZ; + len += 3; + goto do4; + case 6: + a0 = ((op_t *) srcp)[0]; + srcp += OPSIZ; + len += 2; + goto do5; + case 7: + a1 = ((op_t *) srcp)[0]; + srcp += OPSIZ; + len += 1; + goto do6; + + case 0: + if (OP_T_THRES <= 3 * OPSIZ && len == 0) + return; + a0 = ((op_t *) srcp)[0]; + srcp += OPSIZ; + goto do7; + case 1: + a1 = ((op_t *) srcp)[0]; + srcp += OPSIZ; + len -= 1; + if (OP_T_THRES <= 3 * OPSIZ && len == 0) + goto do0; + goto do8; /* No-op. */ + } + + do + { + do8: + a0 = ((op_t *) srcp)[0]; + ((op_t *) dstp)[0] = a1; + srcp += OPSIZ; + dstp += OPSIZ; + do7: + a1 = ((op_t *) srcp)[0]; + ((op_t *) dstp)[0] = a0; + srcp += OPSIZ; + dstp += OPSIZ; + do6: + a0 = ((op_t *) srcp)[0]; + ((op_t *) dstp)[0] = a1; + srcp += OPSIZ; + dstp += OPSIZ; + do5: + a1 = ((op_t *) srcp)[0]; + ((op_t *) dstp)[0] = a0; + srcp += OPSIZ; + dstp += OPSIZ; + do4: + a0 = ((op_t *) srcp)[0]; + ((op_t *) dstp)[0] = a1; + srcp += OPSIZ; + dstp += OPSIZ; + do3: + a1 = ((op_t *) srcp)[0]; + ((op_t *) dstp)[0] = a0; + srcp += OPSIZ; + dstp += OPSIZ; + do2: + a0 = ((op_t *) srcp)[0]; + ((op_t *) dstp)[0] = a1; + srcp += OPSIZ; + dstp += OPSIZ; + do1: + a1 = ((op_t *) srcp)[0]; + ((op_t *) dstp)[0] = a0; + srcp += OPSIZ; + dstp += OPSIZ; + + len -= 8; + } + while (len != 0); + + /* This is the right position for do0. Please don't move + it into the loop. */ + do0: + ((op_t *) dstp)[0] = a1; +} + +/* _wordcopy_fwd_dest_aligned -- Copy block beginning at SRCP to + block beginning at DSTP with LEN `op_t' words (not LEN bytes!). + DSTP should be aligned for memory operations on `op_t's, but SRCP must + *not* be aligned. */ + +void +_wordcopy_fwd_dest_aligned (dstp, srcp, len) + long int dstp; + long int srcp; + size_t len; +{ + void * srci; + op_t a0, a1, a2, a3; + + /* Save the initial source pointer so we know the number of bytes to + shift for merging two unaligned results. */ + srci = (void *) srcp; + + /* Make SRCP aligned by rounding it down to the beginning of the `op_t' + it points in the middle of. */ + srcp &= -OPSIZ; + + switch (len % 4) + { + case 2: + a1 = ((op_t *) srcp)[0]; + a2 = ((op_t *) srcp)[1]; + len += 2; + srcp += 2 * OPSIZ; + goto do1; + case 3: + a0 = ((op_t *) srcp)[0]; + a1 = ((op_t *) srcp)[1]; + len += 1; + srcp += 2 * OPSIZ; + goto do2; + case 0: + if (OP_T_THRES <= 3 * OPSIZ && len == 0) + return; + a3 = ((op_t *) srcp)[0]; + a0 = ((op_t *) srcp)[1]; + len += 0; + srcp += 2 * OPSIZ; + goto do3; + case 1: + a2 = ((op_t *) srcp)[0]; + a3 = ((op_t *) srcp)[1]; + srcp += 2 * OPSIZ; + len -= 1; + if (OP_T_THRES <= 3 * OPSIZ && len == 0) + goto do0; + goto do4; /* No-op. */ + } + + do + { + do4: + a0 = ((op_t *) srcp)[0]; + a2 = DBLALIGN (a2, a3, srci); + ((op_t *) dstp)[0] = a2; + srcp += OPSIZ; + dstp += OPSIZ; + do3: + a1 = ((op_t *) srcp)[0]; + a3 = DBLALIGN (a3, a0, srci); + ((op_t *) dstp)[0] = a3; + srcp += OPSIZ; + dstp += OPSIZ; + do2: + a2 = ((op_t *) srcp)[0]; + a0 = DBLALIGN (a0, a1, srci); + ((op_t *) dstp)[0] = a0; + srcp += OPSIZ; + dstp += OPSIZ; + do1: + a3 = ((op_t *) srcp)[0]; + a1 = DBLALIGN (a1, a2, srci); + ((op_t *) dstp)[0] = a1; + srcp += OPSIZ; + dstp += OPSIZ; + len -= 4; + } + while (len != 0); + + /* This is the right position for do0. Please don't move + it into the loop. */ + do0: + ((op_t *) dstp)[0] = DBLALIGN (a2, a3, srci); +} + +/* _wordcopy_bwd_aligned -- Copy block finishing right before + SRCP to block finishing right before DSTP with LEN `op_t' words + (not LEN bytes!). Both SRCP and DSTP should be aligned for memory + operations on `op_t's. */ + +void +_wordcopy_bwd_aligned (dstp, srcp, len) + long int dstp; + long int srcp; + size_t len; +{ + op_t a0, a1; + long int srcp1; + + srcp1 = srcp - 1 * OPSIZ; + srcp -= 2 * OPSIZ; + dstp -= 1 * OPSIZ; + + switch (len % 8) + { + case 2: + a0 = ((op_t *) srcp1)[0]; + len += 6; + goto do1; + case 3: + a1 = ((op_t *) srcp1)[0]; + len += 5; + goto do2; + case 4: + a0 = ((op_t *) srcp1)[0]; + len += 4; + goto do3; + case 5: + a1 = ((op_t *) srcp1)[0]; + len += 3; + goto do4; + case 6: + a0 = ((op_t *) srcp1)[0]; + len += 2; + goto do5; + case 7: + a1 = ((op_t *) srcp1)[0]; + len += 1; + goto do6; + + case 0: + if (OP_T_THRES <= 3 * OPSIZ && len == 0) + return; + a0 = ((op_t *) srcp1)[0]; + goto do7; + case 1: + a1 = ((op_t *) srcp1)[0]; + len -= 1; + if (OP_T_THRES <= 3 * OPSIZ && len == 0) + goto do0; + goto do8; /* No-op. */ + } + + do + { + do8: + a0 = ((op_t *) srcp)[0]; + ((op_t *) dstp)[0] = a1; + srcp -= OPSIZ; + dstp -= OPSIZ; + do7: + a1 = ((op_t *) srcp)[0]; + ((op_t *) dstp)[0] = a0; + srcp -= OPSIZ; + dstp -= OPSIZ; + do6: + a0 = ((op_t *) srcp)[0]; + ((op_t *) dstp)[0] = a1; + srcp -= OPSIZ; + dstp -= OPSIZ; + do5: + a1 = ((op_t *) srcp)[0]; + ((op_t *) dstp)[0] = a0; + srcp -= OPSIZ; + dstp -= OPSIZ; + do4: + a0 = ((op_t *) srcp)[0]; + ((op_t *) dstp)[0] = a1; + srcp -= OPSIZ; + dstp -= OPSIZ; + do3: + a1 = ((op_t *) srcp)[0]; + ((op_t *) dstp)[0] = a0; + srcp -= OPSIZ; + dstp -= OPSIZ; + do2: + a0 = ((op_t *) srcp)[0]; + ((op_t *) dstp)[0] = a1; + srcp -= OPSIZ; + dstp -= OPSIZ; + do1: + a1 = ((op_t *) srcp)[0]; + ((op_t *) dstp)[0] = a0; + srcp -= OPSIZ; + dstp -= OPSIZ; + + len -= 8; + } + while (len != 0); + + /* This is the right position for do0. Please don't move + it into the loop. */ + do0: + ((op_t *) dstp)[0] = a1; +} + +/* _wordcopy_bwd_dest_aligned -- Copy block finishing right + before SRCP to block finishing right before DSTP with LEN `op_t' + words (not LEN bytes!). DSTP should be aligned for memory + operations on `op_t', but SRCP must *not* be aligned. */ + +void +_wordcopy_bwd_dest_aligned (dstp, srcp, len) + long int dstp; + long int srcp; + size_t len; +{ + void * srci; + op_t a0, a1, a2, a3; + op_t b0, b1, b2, b3; + + /* Save the initial source pointer so we know the number of bytes to + shift for merging two unaligned results. */ + srci = (void *) srcp; + + /* Make SRCP aligned by rounding it down to the beginning of the op_t + it points in the middle of. */ + srcp &= -OPSIZ; + srcp += OPSIZ; + + switch (len % 4) + { + case 2: + srcp -= 3 * OPSIZ; + dstp -= 1 * OPSIZ; + b2 = ((op_t *) srcp)[2]; + b1 = a1 = ((op_t *) srcp)[1]; + len += 2; + goto do1; + case 3: + srcp -= 3 * OPSIZ; + dstp -= 1 * OPSIZ; + b3 = ((op_t *) srcp)[2]; + b2 = a2 = ((op_t *) srcp)[1]; + len += 1; + goto do2; + case 0: + if (OP_T_THRES <= 3 * OPSIZ && len == 0) + return; + srcp -= 3 * OPSIZ; + dstp -= 1 * OPSIZ; + b0 = ((op_t *) srcp)[2]; + b3 = a3 = ((op_t *) srcp)[1]; + goto do3; + case 1: + srcp -= 3 * OPSIZ; + dstp -= 1 * OPSIZ; + b1 = ((op_t *) srcp)[2]; + b0 = a0 = ((op_t *) srcp)[1]; + len -= 1; + if (OP_T_THRES <= 3 * OPSIZ && len == 0) + goto do0; + goto do4; /* No-op. */ + } + + do + { + do4: + b3 = a3 = ((op_t *) srcp)[0]; + a0 = DBLALIGN (a0, b1, srci); + ((op_t *) dstp)[0] = a0; + srcp -= OPSIZ; + dstp -= OPSIZ; + do3: + b2 = a2 = ((op_t *) srcp)[0]; + a3 = DBLALIGN (a3, b0, srci); + ((op_t *) dstp)[0] = a3; + srcp -= OPSIZ; + dstp -= OPSIZ; + do2: + b1 = a1 = ((op_t *) srcp)[0]; + a2 = DBLALIGN (a2, b3, srci); + ((op_t *) dstp)[0] = a2; + srcp -= OPSIZ; + dstp -= OPSIZ; + do1: + b0 = a0 = ((op_t *) srcp)[0]; + a1 = DBLALIGN (a1, b2, srci); + ((op_t *) dstp)[0] = a1; + srcp -= OPSIZ; + dstp -= OPSIZ; + + len -= 4; + } + while (len != 0); + + /* This is the right position for do0. Please don't move + it into the loop. */ + do0: + a0 = DBLALIGN (a0, b1, srci); + ((op_t *) dstp)[0] = a0; +} diff --git a/sysdeps/unix/sysv/linux/generic/Makefile b/sysdeps/unix/sysv/linux/generic/Makefile new file mode 100644 index 0000000000..c1daee2396 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/Makefile @@ -0,0 +1,3 @@ +ifeq ($(subdir),misc) +sysdep_routines += epoll_create epoll_wait inotify_init +endif diff --git a/sysdeps/unix/sysv/linux/generic/____longjmp_chk.c b/sysdeps/unix/sysv/linux/generic/____longjmp_chk.c new file mode 100644 index 0000000000..579cf3998f --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/____longjmp_chk.c @@ -0,0 +1,57 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include +#include +#include + +#ifdef _STACK_GROWS_DOWN +#define called_from(this, saved) ((this) < (saved)) +#else +#define called_from(this, saved) ((this) > (saved)) +#endif + +extern void ____longjmp_chk (__jmp_buf __env, int __val) + __attribute__ ((__noreturn__)); + +void ____longjmp_chk (__jmp_buf env, int val) +{ + void *this_frame = __builtin_frame_address (0); + void *saved_frame = JB_FRAME_ADDRESS (env); + INTERNAL_SYSCALL_DECL (err); + stack_t ss; + + /* If "env" is from a frame that called us, we're all set. */ + if (called_from(this_frame, saved_frame)) + __longjmp (env, val); + + /* If we can't get the current stack state, give up and do the longjmp. */ + if (INTERNAL_SYSCALL (sigaltstack, err, 2, NULL, &ss) != 0) + __longjmp (env, val); + + /* If we we are executing on the alternate stack and within the + bounds, do the longjmp. */ + if (ss.ss_flags == SS_ONSTACK && + (this_frame >= ss.ss_sp && this_frame < (ss.ss_sp + ss.ss_size))) + __longjmp (env, val); + + __fortify_fail ("longjmp causes uninitialized stack frame"); +} diff --git a/sysdeps/unix/sysv/linux/generic/access.c b/sysdeps/unix/sysv/linux/generic/access.c new file mode 100644 index 0000000000..d09ede2d7c --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/access.c @@ -0,0 +1,31 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include +#include + +/* Test for access to FILE. */ +int +__access (const char *file, int type) +{ + return INLINE_SYSCALL (faccessat, 3, AT_FDCWD, file, type); +} +weak_alias (__access, access) diff --git a/sysdeps/unix/sysv/linux/generic/bits/fcntl.h b/sysdeps/unix/sysv/linux/generic/bits/fcntl.h new file mode 100644 index 0000000000..bdf9171ed1 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/bits/fcntl.h @@ -0,0 +1,56 @@ +/* O_*, F_*, FD_* bit values for the generic Linux ABI. + Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _FCNTL_H +# error "Never use directly; include instead." +#endif + +#include + +#if __WORDSIZE == 64 +# define __O_LARGEFILE 0 +#endif + +struct flock + { + short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */ + short int l_whence; /* Where `l_start' is relative to (like `lseek'). */ +#ifndef __USE_FILE_OFFSET64 + __off_t l_start; /* Offset where the lock begins. */ + __off_t l_len; /* Size of the locked area; zero means until EOF. */ +#else + __off64_t l_start; /* Offset where the lock begins. */ + __off64_t l_len; /* Size of the locked area; zero means until EOF. */ +#endif + __pid_t l_pid; /* Process holding the lock. */ + }; + +#ifdef __USE_LARGEFILE64 +struct flock64 + { + short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */ + short int l_whence; /* Where `l_start' is relative to (like `lseek'). */ + __off64_t l_start; /* Offset where the lock begins. */ + __off64_t l_len; /* Size of the locked area; zero means until EOF. */ + __pid_t l_pid; /* Process holding the lock. */ + }; +#endif + +/* Include generic Linux declarations. */ +#include diff --git a/sysdeps/unix/sysv/linux/generic/bits/msq.h b/sysdeps/unix/sysv/linux/generic/bits/msq.h new file mode 100644 index 0000000000..f3fcd8d645 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/bits/msq.h @@ -0,0 +1,84 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _SYS_MSG_H +# error "Never use directly; include instead." +#endif + +#include +#include + +/* Define options for message queue functions. */ +#define MSG_NOERROR 010000 /* no error if message is too big */ +#ifdef __USE_GNU +# define MSG_EXCEPT 020000 /* recv any msg except of specified type */ +# define MSG_COPY 040000 /* copy (not remove) all queue messages */ +#endif + +/* Types used in the structure definition. */ +typedef unsigned long int msgqnum_t; +typedef unsigned long int msglen_t; + +/* Structure of record for one message inside the kernel. + The type `struct msg' is opaque. */ +struct msqid_ds +{ + struct ipc_perm msg_perm; /* structure describing operation permission */ + __time_t msg_stime; /* time of last msgsnd command */ +#if __WORDSIZE == 32 + unsigned long int __glibc_reserved1; +#endif + __time_t msg_rtime; /* time of last msgrcv command */ +#if __WORDSIZE == 32 + unsigned long int __glibc_reserved2; +#endif + __time_t msg_ctime; /* time of last change */ +#if __WORDSIZE == 32 + unsigned long int __glibc_reserved3; +#endif + unsigned long int __msg_cbytes; /* current number of bytes on queue */ + msgqnum_t msg_qnum; /* number of messages currently on queue */ + msglen_t msg_qbytes; /* max number of bytes allowed on queue */ + __pid_t msg_lspid; /* pid of last msgsnd() */ + __pid_t msg_lrpid; /* pid of last msgrcv() */ + unsigned long int __glibc_reserved4; + unsigned long int __glibc_reserved5; +}; + +#ifdef __USE_MISC + +# define msg_cbytes __msg_cbytes + +/* ipcs ctl commands */ +# define MSG_STAT 11 +# define MSG_INFO 12 + +/* buffer for msgctl calls IPC_INFO, MSG_INFO */ +struct msginfo + { + int msgpool; + int msgmap; + int msgmax; + int msgmnb; + int msgmni; + int msgssz; + int msgtql; + unsigned short int msgseg; + }; + +#endif /* __USE_MISC */ diff --git a/sysdeps/unix/sysv/linux/generic/bits/sem.h b/sysdeps/unix/sysv/linux/generic/bits/sem.h new file mode 100644 index 0000000000..3c9aea86ad --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/bits/sem.h @@ -0,0 +1,92 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _SYS_SEM_H +# error "Never include directly; use instead." +#endif + +#include +#include + +/* Flags for `semop'. */ +#define SEM_UNDO 0x1000 /* undo the operation on exit */ + +/* Commands for `semctl'. */ +#define GETPID 11 /* get sempid */ +#define GETVAL 12 /* get semval */ +#define GETALL 13 /* get all semval's */ +#define GETNCNT 14 /* get semncnt */ +#define GETZCNT 15 /* get semzcnt */ +#define SETVAL 16 /* set semval */ +#define SETALL 17 /* set all semval's */ + + +/* Data structure describing a set of semaphores. */ +struct semid_ds +{ + struct ipc_perm sem_perm; /* operation permission struct */ + __time_t sem_otime; /* last semop() time */ +#if __WORDSIZE == 32 + unsigned long int __glibc_reserved1; +#endif + __time_t sem_ctime; /* last time changed by semctl() */ +#if __WORDSIZE == 32 + unsigned long int __glibc_reserved2; +#endif + unsigned long int sem_nsems; /* number of semaphores in set */ + unsigned long int __glibc_reserved3; + unsigned long int __glibc_reserved4; +}; + +/* The user should define a union like the following to use it for arguments + for `semctl'. + + union semun + { + int val; <= value for SETVAL + struct semid_ds *buf; <= buffer for IPC_STAT & IPC_SET + unsigned short int *array; <= array for GETALL & SETALL + struct seminfo *__buf; <= buffer for IPC_INFO + }; + + Previous versions of this file used to define this union but this is + incorrect. One can test the macro _SEM_SEMUN_UNDEFINED to see whether + one must define the union or not. */ +#define _SEM_SEMUN_UNDEFINED 1 + +#ifdef __USE_MISC + +/* ipcs ctl cmds */ +# define SEM_STAT 18 +# define SEM_INFO 19 + +struct seminfo +{ + int semmap; + int semmni; + int semmns; + int semmnu; + int semmsl; + int semopm; + int semume; + int semusz; + int semvmx; + int semaem; +}; + +#endif /* __USE_MISC */ diff --git a/sysdeps/unix/sysv/linux/generic/bits/shm.h b/sysdeps/unix/sysv/linux/generic/bits/shm.h new file mode 100644 index 0000000000..0dbed61700 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/bits/shm.h @@ -0,0 +1,111 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _SYS_SHM_H +# error "Never include directly; use instead." +#endif + +#include +#include + +/* Permission flag for shmget. */ +#define SHM_R 0400 /* or S_IRUGO from */ +#define SHM_W 0200 /* or S_IWUGO from */ + +/* Flags for `shmat'. */ +#define SHM_RDONLY 010000 /* attach read-only else read-write */ +#define SHM_RND 020000 /* round attach address to SHMLBA */ +#define SHM_REMAP 040000 /* take-over region on attach */ +#define SHM_EXEC 0100000 /* execution access */ + +/* Commands for `shmctl'. */ +#define SHM_LOCK 11 /* lock segment (root only) */ +#define SHM_UNLOCK 12 /* unlock segment (root only) */ + +__BEGIN_DECLS + +/* Segment low boundary address multiple. */ +#define SHMLBA (__getpagesize ()) +extern int __getpagesize (void) __THROW __attribute__ ((__const__)); + + +/* Type to count number of attaches. */ +typedef unsigned long int shmatt_t; + +/* Data structure describing a shared memory segment. */ +struct shmid_ds + { + struct ipc_perm shm_perm; /* operation permission struct */ + size_t shm_segsz; /* size of segment in bytes */ + __time_t shm_atime; /* time of last shmat() */ +#if __WORDSIZE == 32 + unsigned long int __glibc_reserved1; +#endif + __time_t shm_dtime; /* time of last shmdt() */ +#if __WORDSIZE == 32 + unsigned long int __glibc_reserved2; +#endif + __time_t shm_ctime; /* time of last change by shmctl() */ +#if __WORDSIZE == 32 + unsigned long int __glibc_reserved3; +#endif + __pid_t shm_cpid; /* pid of creator */ + __pid_t shm_lpid; /* pid of last shmop */ + shmatt_t shm_nattch; /* number of current attaches */ + unsigned long int __glibc_reserved4; + unsigned long int __glibc_reserved5; + }; + +#ifdef __USE_MISC + +/* ipcs ctl commands */ +# define SHM_STAT 13 +# define SHM_INFO 14 + +/* shm_mode upper byte flags */ +# define SHM_DEST 01000 /* segment will be destroyed on last detach */ +# define SHM_LOCKED 02000 /* segment will not be swapped */ +# define SHM_HUGETLB 04000 /* segment is mapped via hugetlb */ +# define SHM_NORESERVE 010000 /* don't check for reservations */ + +struct shminfo + { + unsigned long int shmmax; + unsigned long int shmmin; + unsigned long int shmmni; + unsigned long int shmseg; + unsigned long int shmall; + unsigned long int __glibc_reserved1; + unsigned long int __glibc_reserved2; + unsigned long int __glibc_reserved3; + unsigned long int __glibc_reserved4; + }; + +struct shm_info + { + int used_ids; + unsigned long int shm_tot; /* total allocated shm */ + unsigned long int shm_rss; /* total resident shm */ + unsigned long int shm_swp; /* total swapped shm */ + unsigned long int swap_attempts; + unsigned long int swap_successes; + }; + +#endif /* __USE_MISC */ + +__END_DECLS diff --git a/sysdeps/unix/sysv/linux/generic/bits/stat.h b/sysdeps/unix/sysv/linux/generic/bits/stat.h new file mode 100644 index 0000000000..faa28007f5 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/bits/stat.h @@ -0,0 +1,171 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#if !defined _SYS_STAT_H && !defined _FCNTL_H +# error "Never include directly; use instead." +#endif + +#ifndef _BITS_STAT_H +#define _BITS_STAT_H 1 + +#include +#include + +/* 64-bit libc uses the kernel's 'struct stat', accessed via the + stat() syscall; 32-bit libc uses the kernel's 'struct stat64' + and accesses it via the stat64() syscall. All the various + APIs offered by libc use the kernel shape for their struct stat + structure; the only difference is that 32-bit programs not + using __USE_FILE_OFFSET64 only see the low 32 bits of some + of the fields (specifically st_ino, st_size, and st_blocks). */ +#define _STAT_VER_KERNEL 0 +#define _STAT_VER_LINUX 0 +#define _STAT_VER _STAT_VER_KERNEL + +/* Versions of the `xmknod' interface. */ +#define _MKNOD_VER_LINUX 0 + +#if defined __USE_FILE_OFFSET64 +# define __field64(type, type64, name) type64 name +#elif __WORDSIZE == 64 +# define __field64(type, type64, name) type name +#elif __BYTE_ORDER == __LITTLE_ENDIAN +# define __field64(type, type64, name) \ + type name __attribute__((__aligned__ (__alignof__ (type64)))); int __##name##_pad +#else +# define __field64(type, type64, name) \ + int __##name##_pad __attribute__((__aligned__ (__alignof__ (type64)))); type name +#endif + +struct stat + { + __dev_t st_dev; /* Device. */ + __field64(__ino_t, __ino64_t, st_ino); /* File serial number. */ + __mode_t st_mode; /* File mode. */ + __nlink_t st_nlink; /* Link count. */ + __uid_t st_uid; /* User ID of the file's owner. */ + __gid_t st_gid; /* Group ID of the file's group.*/ + __dev_t st_rdev; /* Device number, if device. */ + __dev_t __pad1; + __field64(__off_t, __off64_t, st_size); /* Size of file, in bytes. */ + __blksize_t st_blksize; /* Optimal block size for I/O. */ + int __pad2; + __field64(__blkcnt_t, __blkcnt64_t, st_blocks); /* 512-byte blocks */ +#ifdef __USE_MISC + /* Nanosecond resolution timestamps are stored in a format + equivalent to 'struct timespec'. This is the type used + whenever possible but the Unix namespace rules do not allow the + identifier 'timespec' to appear in the header. + Therefore we have to handle the use of this header in strictly + standard-compliant sources special. */ + struct timespec st_atim; /* Time of last access. */ + struct timespec st_mtim; /* Time of last modification. */ + struct timespec st_ctim; /* Time of last status change. */ +# define st_atime st_atim.tv_sec /* Backward compatibility. */ +# define st_mtime st_mtim.tv_sec +# define st_ctime st_ctim.tv_sec +#else + __time_t st_atime; /* Time of last access. */ + unsigned long int st_atimensec; /* Nscecs of last access. */ + __time_t st_mtime; /* Time of last modification. */ + unsigned long int st_mtimensec; /* Nsecs of last modification. */ + __time_t st_ctime; /* Time of last status change. */ + unsigned long int st_ctimensec; /* Nsecs of last status change. */ +#endif + int __glibc_reserved[2]; + }; + +#undef __field64 + +#ifdef __USE_LARGEFILE64 +struct stat64 + { + __dev_t st_dev; /* Device. */ + __ino64_t st_ino; /* File serial number. */ + __mode_t st_mode; /* File mode. */ + __nlink_t st_nlink; /* Link count. */ + __uid_t st_uid; /* User ID of the file's owner. */ + __gid_t st_gid; /* Group ID of the file's group.*/ + __dev_t st_rdev; /* Device number, if device. */ + __dev_t __pad1; + __off64_t st_size; /* Size of file, in bytes. */ + __blksize_t st_blksize; /* Optimal block size for I/O. */ + int __pad2; + __blkcnt64_t st_blocks; /* Nr. 512-byte blocks allocated. */ +#ifdef __USE_MISC + /* Nanosecond resolution timestamps are stored in a format + equivalent to 'struct timespec'. This is the type used + whenever possible but the Unix namespace rules do not allow the + identifier 'timespec' to appear in the header. + Therefore we have to handle the use of this header in strictly + standard-compliant sources special. */ + struct timespec st_atim; /* Time of last access. */ + struct timespec st_mtim; /* Time of last modification. */ + struct timespec st_ctim; /* Time of last status change. */ +#else + __time_t st_atime; /* Time of last access. */ + unsigned long int st_atimensec; /* Nscecs of last access. */ + __time_t st_mtime; /* Time of last modification. */ + unsigned long int st_mtimensec; /* Nsecs of last modification. */ + __time_t st_ctime; /* Time of last status change. */ + unsigned long int st_ctimensec; /* Nsecs of last status change. */ +#endif + int __glibc_reserved[2]; + }; +#endif + +/* Tell code we have these members. */ +#define _STATBUF_ST_BLKSIZE +#define _STATBUF_ST_RDEV +/* Nanosecond resolution time values are supported. */ +#define _STATBUF_ST_NSEC + +/* Encoding of the file mode. */ + +#define __S_IFMT 0170000 /* These bits determine file type. */ + +/* File types. */ +#define __S_IFDIR 0040000 /* Directory. */ +#define __S_IFCHR 0020000 /* Character device. */ +#define __S_IFBLK 0060000 /* Block device. */ +#define __S_IFREG 0100000 /* Regular file. */ +#define __S_IFIFO 0010000 /* FIFO. */ +#define __S_IFLNK 0120000 /* Symbolic link. */ +#define __S_IFSOCK 0140000 /* Socket. */ + +/* POSIX.1b objects. Note that these macros always evaluate to zero. But + they do it by enforcing the correct use of the macros. */ +#define __S_TYPEISMQ(buf) ((buf)->st_mode - (buf)->st_mode) +#define __S_TYPEISSEM(buf) ((buf)->st_mode - (buf)->st_mode) +#define __S_TYPEISSHM(buf) ((buf)->st_mode - (buf)->st_mode) + +/* Protection bits. */ + +#define __S_ISUID 04000 /* Set user ID on execution. */ +#define __S_ISGID 02000 /* Set group ID on execution. */ +#define __S_ISVTX 01000 /* Save swapped text after use (sticky). */ +#define __S_IREAD 0400 /* Read by owner. */ +#define __S_IWRITE 0200 /* Write by owner. */ +#define __S_IEXEC 0100 /* Execute by owner. */ + +#ifdef __USE_ATFILE +# define UTIME_NOW ((1l << 30) - 1l) +# define UTIME_OMIT ((1l << 30) - 2l) +#endif + +#endif /* bits/stat.h */ diff --git a/sysdeps/unix/sysv/linux/generic/bits/statfs.h b/sysdeps/unix/sysv/linux/generic/bits/statfs.h new file mode 100644 index 0000000000..e32cf76741 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/bits/statfs.h @@ -0,0 +1,86 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _SYS_STATFS_H +# error "Never include directly; use instead." +#endif + +#include +#include +#include + +/* 64-bit libc uses the kernel's 'struct statfs', accessed via the + statfs() syscall; 32-bit libc uses the kernel's 'struct statfs64' + and accesses it via the statfs64() syscall. All the various + APIs offered by libc use the kernel shape for their struct statfs + structure; the only difference is that 32-bit programs not + using __USE_FILE_OFFSET64 only see the low 32 bits of some + of the fields (the __fsblkcnt_t and __fsfilcnt_t fields). */ + +#if defined __USE_FILE_OFFSET64 +# define __field64(type, type64, name) type64 name +#elif __WORDSIZE == 64 +# define __field64(type, type64, name) type name +#elif __BYTE_ORDER == __LITTLE_ENDIAN +# define __field64(type, type64, name) \ + type name __attribute__((__aligned__ (__alignof__ (type64)))); int __##name##_pad +#else +# define __field64(type, type64, name) \ + int __##name##_pad __attribute__((__aligned__ (__alignof__ (type64)))); type name +#endif + +struct statfs + { + __SWORD_TYPE f_type; + __SWORD_TYPE f_bsize; + __field64(__fsblkcnt_t, __fsblkcnt64_t, f_blocks); + __field64(__fsblkcnt_t, __fsblkcnt64_t, f_bfree); + __field64(__fsblkcnt_t, __fsblkcnt64_t, f_bavail); + __field64(__fsfilcnt_t, __fsfilcnt64_t, f_files); + __field64(__fsfilcnt_t, __fsfilcnt64_t, f_ffree); + __fsid_t f_fsid; + __SWORD_TYPE f_namelen; + __SWORD_TYPE f_frsize; + __SWORD_TYPE f_flags; + __SWORD_TYPE f_spare[4]; + }; + +#undef __field64 + +#ifdef __USE_LARGEFILE64 +struct statfs64 + { + __SWORD_TYPE f_type; + __SWORD_TYPE f_bsize; + __fsblkcnt64_t f_blocks; + __fsblkcnt64_t f_bfree; + __fsblkcnt64_t f_bavail; + __fsfilcnt64_t f_files; + __fsfilcnt64_t f_ffree; + __fsid_t f_fsid; + __SWORD_TYPE f_namelen; + __SWORD_TYPE f_frsize; + __SWORD_TYPE f_flags; + __SWORD_TYPE f_spare[4]; + }; +#endif + +/* Tell code we have these members. */ +#define _STATFS_F_NAMELEN +#define _STATFS_F_FRSIZE +#define _STATFS_F_FLAGS diff --git a/sysdeps/unix/sysv/linux/generic/bits/typesizes.h b/sysdeps/unix/sysv/linux/generic/bits/typesizes.h new file mode 100644 index 0000000000..eda847da1e --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/bits/typesizes.h @@ -0,0 +1,78 @@ +/* bits/typesizes.h -- underlying types for *_t. For the generic Linux ABI. + Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _BITS_TYPES_H +# error "Never include directly; use instead." +#endif + +#ifndef _BITS_TYPESIZES_H +#define _BITS_TYPESIZES_H 1 + +/* See for the meaning of these macros. This file exists so + that need not vary across different GNU platforms. */ + +#define __DEV_T_TYPE __UQUAD_TYPE +#define __UID_T_TYPE __U32_TYPE +#define __GID_T_TYPE __U32_TYPE +#define __INO_T_TYPE __ULONGWORD_TYPE +#define __INO64_T_TYPE __UQUAD_TYPE +#define __MODE_T_TYPE __U32_TYPE +#define __NLINK_T_TYPE __U32_TYPE +#define __OFF_T_TYPE __SLONGWORD_TYPE +#define __OFF64_T_TYPE __SQUAD_TYPE +#define __PID_T_TYPE __S32_TYPE +#define __RLIM_T_TYPE __ULONGWORD_TYPE +#define __RLIM64_T_TYPE __UQUAD_TYPE +#define __BLKCNT_T_TYPE __SLONGWORD_TYPE +#define __BLKCNT64_T_TYPE __SQUAD_TYPE +#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE +#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE +#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE +#define __FSFILCNT64_T_TYPE __UQUAD_TYPE +#define __FSWORD_T_TYPE __SWORD_TYPE +#define __ID_T_TYPE __U32_TYPE +#define __CLOCK_T_TYPE __SLONGWORD_TYPE +#define __TIME_T_TYPE __SLONGWORD_TYPE +#define __USECONDS_T_TYPE __U32_TYPE +#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE +#define __DADDR_T_TYPE __S32_TYPE +#define __KEY_T_TYPE __S32_TYPE +#define __CLOCKID_T_TYPE __S32_TYPE +#define __TIMER_T_TYPE void * +#define __BLKSIZE_T_TYPE __S32_TYPE +#define __FSID_T_TYPE struct { int __val[2]; } +#define __SSIZE_T_TYPE __SWORD_TYPE +#define __SYSCALL_SLONG_TYPE __SLONGWORD_TYPE +#define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE + +#ifdef __LP64__ +/* Tell the libc code that off_t and off64_t are actually the same type + for all ABI purposes, even if possibly expressed as different base types + for C type-checking purposes. */ +# define __OFF_T_MATCHES_OFF64_T 1 + +/* Same for ino_t and ino64_t. */ +# define __INO_T_MATCHES_INO64_T 1 +#endif + +/* Number of descriptors that can fit in an `fd_set'. */ +#define __FD_SETSIZE 1024 + + +#endif /* bits/typesizes.h */ diff --git a/sysdeps/unix/sysv/linux/generic/brk.c b/sysdeps/unix/sysv/linux/generic/brk.c new file mode 100644 index 0000000000..214d8fd2fe --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/brk.c @@ -0,0 +1,45 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include + +/* This must be initialized data because commons can't have aliases. */ +void *__curbrk = 0; + +/* Old braindamage in GCC's crtstuff.c requires this symbol in an attempt + to work around different old braindamage in the old Linux ELF dynamic + linker. */ +weak_alias (__curbrk, ___brk_addr) + +int +__brk (void *addr) +{ + INTERNAL_SYSCALL_DECL (err); + + __curbrk = (void *) INTERNAL_SYSCALL (brk, err, 1, addr); + if (__curbrk < addr) + { + __set_errno (ENOMEM); + return -1; + } + + return 0; +} +weak_alias (__brk, brk) diff --git a/sysdeps/unix/sysv/linux/generic/chmod.c b/sysdeps/unix/sysv/linux/generic/chmod.c new file mode 100644 index 0000000000..4ff6c8685e --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/chmod.c @@ -0,0 +1,31 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include +#include + +/* Change the protections of FILE to MODE. */ +int +__chmod (const char *file, mode_t mode) +{ + return INLINE_SYSCALL (fchmodat, 3, AT_FDCWD, file, mode); +} +weak_alias (__chmod, chmod) diff --git a/sysdeps/unix/sysv/linux/generic/chown.c b/sysdeps/unix/sysv/linux/generic/chown.c new file mode 100644 index 0000000000..d14d574c29 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/chown.c @@ -0,0 +1,32 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include +#include + +/* Change the owner and group of FILE. */ +int +__chown (const char *file, uid_t owner, gid_t group) +{ + return INLINE_SYSCALL (fchownat, 5, AT_FDCWD, file, owner, group, 0); +} +libc_hidden_def (__chown) +weak_alias (__chown, chown) diff --git a/sysdeps/unix/sysv/linux/generic/creat.c b/sysdeps/unix/sysv/linux/generic/creat.c new file mode 100644 index 0000000000..f5d046060c --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/creat.c @@ -0,0 +1,38 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include + +#undef creat + +/* Create FILE with protections MODE. */ +int +__libc_creat (const char *file, mode_t mode) +{ + return __open (file, O_WRONLY | O_CREAT | O_TRUNC, mode); +} +weak_alias (__libc_creat, creat) + +/* __open handles cancellation. */ +LIBC_CANCEL_HANDLED (); + +#if __WORDSIZE == 64 +weak_alias (__libc_creat, creat64) +#endif diff --git a/sysdeps/unix/sysv/linux/generic/dl-origin.c b/sysdeps/unix/sysv/linux/generic/dl-origin.c new file mode 100644 index 0000000000..c010076f06 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/dl-origin.c @@ -0,0 +1,81 @@ +/* Find path of executable. + Copyright (C) 1998-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1998. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +/* On Linux >= 2.1 systems which have the dcache implementation we can get + the path of the application from the /proc/self/exe symlink. Try this + first and fall back on the generic method if necessary. */ + +const char * +_dl_get_origin (void) +{ + char linkval[PATH_MAX]; + char *result; + int len; + INTERNAL_SYSCALL_DECL (err); + + len = INTERNAL_SYSCALL (readlinkat, err, 4, AT_FDCWD, "/proc/self/exe", + linkval, sizeof (linkval)); + if (! INTERNAL_SYSCALL_ERROR_P (len, err) && len > 0 && linkval[0] != '[') + { + /* We can use this value. */ + assert (linkval[0] == '/'); + while (len > 1 && linkval[len - 1] != '/') + --len; + result = (char *) malloc (len + 1); + if (result == NULL) + result = (char *) -1; + else if (len == 1) + memcpy (result, "/", 2); + else + *((char *) __mempcpy (result, linkval, len - 1)) = '\0'; + } + else + { + result = (char *) -1; + /* We use the environment variable LD_ORIGIN_PATH. If it is set make + a copy and strip out trailing slashes. */ + if (GLRO(dl_origin_path) != NULL) + { + size_t len = strlen (GLRO(dl_origin_path)); + result = (char *) malloc (len + 1); + if (result == NULL) + result = (char *) -1; + else + { + char *cp = __mempcpy (result, GLRO(dl_origin_path), len); + while (cp > result + 1 && cp[-1] == '/') + --cp; + *cp = '\0'; + } + } + } + + return result; +} diff --git a/sysdeps/unix/sysv/linux/generic/dup2.c b/sysdeps/unix/sysv/linux/generic/dup2.c new file mode 100644 index 0000000000..fb8e01a954 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/dup2.c @@ -0,0 +1,37 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include + +/* Duplicate FD to FD2, closing the old FD2 and making FD2 be + open the same file as FD is. Return FD2 or -1. */ +int +__dup2 (int fd, int fd2) +{ + /* For the degenerate case, check if the fd is valid (by trying to + get the file status flags) and return it, or else return EBADF. */ + if (fd == fd2) + return __libc_fcntl (fd, F_GETFL, 0) < 0 ? -1 : fd; + + return INLINE_SYSCALL (dup3, 3, fd, fd2, 0); +} +libc_hidden_def (__dup2) +weak_alias (__dup2, dup2) diff --git a/sysdeps/unix/sysv/linux/generic/epoll_create.c b/sysdeps/unix/sysv/linux/generic/epoll_create.c new file mode 100644 index 0000000000..a6f144df0b --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/epoll_create.c @@ -0,0 +1,38 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include +#include + +libc_hidden_proto (epoll_create) + +int +epoll_create (int size) +{ + if (size <= 0) + { + __set_errno (EINVAL); + return -1; + } + + return INLINE_SYSCALL (epoll_create1, 1, 0); +} +libc_hidden_def (epoll_create) diff --git a/sysdeps/unix/sysv/linux/generic/epoll_wait.c b/sysdeps/unix/sysv/linux/generic/epoll_wait.c new file mode 100644 index 0000000000..4cd50e439a --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/epoll_wait.c @@ -0,0 +1,28 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include + +int +epoll_wait (int epfd, struct epoll_event *events, int maxevents, int timeout) +{ + return epoll_pwait (epfd, events, maxevents, timeout, NULL); +} diff --git a/sysdeps/unix/sysv/linux/generic/futimesat.c b/sysdeps/unix/sysv/linux/generic/futimesat.c new file mode 100644 index 0000000000..0e9c983fb1 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/futimesat.c @@ -0,0 +1,52 @@ +/* Copyright (C) 2005-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +/* Change the access time of FILE relative to FD to TVP[0] and + the modification time of FILE to TVP[1]. */ +int +futimesat (int fd, const char *file, const struct timeval tvp[2]) +{ + struct timespec tsp[2]; + int result; + + if (tvp) + { + if (tvp[0].tv_usec >= 1000000 || tvp[0].tv_usec < 0 || + tvp[1].tv_usec >= 1000000 || tvp[1].tv_usec < 0) + { + __set_errno (EINVAL); + return -1; + } + TIMEVAL_TO_TIMESPEC (&tvp[0], &tsp[0]); + TIMEVAL_TO_TIMESPEC (&tvp[1], &tsp[1]); + } + + result = INLINE_SYSCALL (utimensat, 4, fd, file, tvp ? tsp : NULL, 0); + return result; +} diff --git a/sysdeps/unix/sysv/linux/generic/getdents.c b/sysdeps/unix/sysv/linux/generic/getdents.c new file mode 100644 index 0000000000..14dbbc71a0 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/getdents.c @@ -0,0 +1 @@ +/* Defined in getdents64.c */ diff --git a/sysdeps/unix/sysv/linux/generic/getdents64.c b/sysdeps/unix/sysv/linux/generic/getdents64.c new file mode 100644 index 0000000000..272799b97d --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/getdents64.c @@ -0,0 +1,37 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include +#include + +#include +#include + +/* The kernel struct linux_dirent64 matches the 'struct getdents64' type. */ +ssize_t +__getdents64 (int fd, char *buf, size_t nbytes) +{ + return INLINE_SYSCALL (getdents64, 3, fd, buf, nbytes); +} + +#if __WORDSIZE == 64 +strong_alias (__getdents64, __getdents) +#endif diff --git a/sysdeps/unix/sysv/linux/generic/inotify_init.c b/sysdeps/unix/sysv/linux/generic/inotify_init.c new file mode 100644 index 0000000000..ced7fe8e5e --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/inotify_init.c @@ -0,0 +1,32 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include +#include + +libc_hidden_proto (inotify_init) + +int +inotify_init (void) +{ + return INLINE_SYSCALL (inotify_init1, 1, 0); +} +libc_hidden_def (inotify_init) diff --git a/sysdeps/unix/sysv/linux/generic/kernel_stat.h b/sysdeps/unix/sysv/linux/generic/kernel_stat.h new file mode 100644 index 0000000000..371a7c5a0a --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/kernel_stat.h @@ -0,0 +1,26 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include + +#define STAT_IS_KERNEL_STAT 1 + +/* We provide separate 32-bit API versions that check for EOVERFLOW. */ +#if __WORDSIZE == 64 +# define XSTAT_IS_XSTAT64 1 +#endif diff --git a/sysdeps/unix/sysv/linux/generic/lchown.c b/sysdeps/unix/sysv/linux/generic/lchown.c new file mode 100644 index 0000000000..a3718209c9 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/lchown.c @@ -0,0 +1,32 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include +#include + +/* Change the owner and group of FILE. */ +int +__lchown (const char *file, uid_t owner, gid_t group) +{ + return INLINE_SYSCALL (fchownat, 5, AT_FDCWD, file, owner, group, + AT_SYMLINK_NOFOLLOW); +} +weak_alias (__lchown, lchown) diff --git a/sysdeps/unix/sysv/linux/generic/link.c b/sysdeps/unix/sysv/linux/generic/link.c new file mode 100644 index 0000000000..12cf700d79 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/link.c @@ -0,0 +1,31 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include + +/* Make a link to FROM called TO. */ +int +__link (const char *from, const char *to) +{ + return INLINE_SYSCALL (linkat, 5, AT_FDCWD, from, AT_FDCWD, to, 0); +} + +weak_alias (__link, link) diff --git a/sysdeps/unix/sysv/linux/generic/lxstat.c b/sysdeps/unix/sysv/linux/generic/lxstat.c new file mode 100644 index 0000000000..8bb1d8e58f --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/lxstat.c @@ -0,0 +1,48 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +/* Ignore prototype to avoid error if we alias __lxstat and __lxstat64. */ +#define __lxstat64 __lxstat64_disable + +#include +#include +#include +#include +#include + +#include +#include + +/* Get information about the file NAME in BUF. */ +int +__lxstat (int vers, const char *name, struct stat *buf) +{ + if (vers == _STAT_VER_KERNEL) + return INLINE_SYSCALL (newfstatat, 4, AT_FDCWD, name, buf, + AT_SYMLINK_NOFOLLOW); + errno = EINVAL; + return -1; +} + +hidden_def (__lxstat) +weak_alias (__lxstat, _lxstat); +#ifdef XSTAT_IS_XSTAT64 +#undef __lxstat64 +strong_alias (__lxstat, __lxstat64); +hidden_ver (__lxstat, __lxstat64) +#endif diff --git a/sysdeps/unix/sysv/linux/generic/mkdir.c b/sysdeps/unix/sysv/linux/generic/mkdir.c new file mode 100644 index 0000000000..45ccf358c4 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/mkdir.c @@ -0,0 +1,33 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include +#include +#include + + +/* Create a directory named PATH with protections MODE. */ +int +__mkdir (const char *path, mode_t mode) +{ + return INLINE_SYSCALL (mkdirat, 3, AT_FDCWD, path, mode); +} +weak_alias (__mkdir, mkdir) diff --git a/sysdeps/unix/sysv/linux/generic/not-cancel.h b/sysdeps/unix/sysv/linux/generic/not-cancel.h new file mode 100644 index 0000000000..b8df253607 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/not-cancel.h @@ -0,0 +1,34 @@ +/* Uncancelable versions of cancelable interfaces. Linux asm-generic version. + Copyright (C) 2012-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2012. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _LINUX_GENERIC_NOT_CANCEL_H +#define _LINUX_GENERIC_NOT_CANCEL_H + +#include +#include + +/* Uncancelable open with openat. */ +#undef open_not_cancel +#define open_not_cancel(name, flags, mode) \ + INLINE_SYSCALL (openat, 4, AT_FDCWD, (const char *) (name), (flags), (mode)) +#undef open_not_cancel_2 +#define open_not_cancel_2(name, flags) \ + INLINE_SYSCALL (openat, 3, AT_FDCWD, (const char *) (name), (flags)) + +#endif diff --git a/sysdeps/unix/sysv/linux/generic/nptl/not-cancel.h b/sysdeps/unix/sysv/linux/generic/nptl/not-cancel.h new file mode 100644 index 0000000000..e6a0d135c8 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/nptl/not-cancel.h @@ -0,0 +1 @@ +#include diff --git a/sysdeps/unix/sysv/linux/generic/open.c b/sysdeps/unix/sysv/linux/generic/open.c new file mode 100644 index 0000000000..4f73fa019c --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/open.c @@ -0,0 +1,71 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include +#include + +/* Open FILE with access OFLAG. If OFLAG includes O_CREAT, + a third argument is the file protection. */ +int +__libc_open (const char *file, int oflag, ...) +{ + int mode = 0; + + if (oflag & O_CREAT) + { + va_list arg; + va_start (arg, oflag); + mode = va_arg (arg, int); + va_end (arg); + } + + if (SINGLE_THREAD_P) + return INLINE_SYSCALL (openat, 4, AT_FDCWD, file, oflag, mode); + + int oldtype = LIBC_CANCEL_ASYNC (); + + int result = INLINE_SYSCALL (openat, 4, AT_FDCWD, file, oflag, mode); + + LIBC_CANCEL_RESET (oldtype); + + return result; +} +libc_hidden_def (__libc_open) + +weak_alias (__libc_open, __open) +libc_hidden_weak (__open) +weak_alias (__libc_open, open) + +int +__open_nocancel (const char *file, int oflag, ...) +{ + int mode = 0; + + if (oflag & O_CREAT) + { + va_list arg; + va_start (arg, oflag); + mode = va_arg (arg, int); + va_end (arg); + } + + return INLINE_SYSCALL (openat, 4, AT_FDCWD, file, oflag, mode); +} diff --git a/sysdeps/unix/sysv/linux/generic/open64.c b/sysdeps/unix/sysv/linux/generic/open64.c new file mode 100644 index 0000000000..93d79e381f --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/open64.c @@ -0,0 +1,55 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include +#include + +/* Open FILE with access OFLAG. If OFLAG includes O_CREAT, + a third argument is the file protection. */ +int +__libc_open64 (const char *file, int oflag, ...) +{ + int mode = 0; + + if (oflag & O_CREAT) + { + va_list arg; + va_start (arg, oflag); + mode = va_arg (arg, int); + va_end (arg); + } + + if (SINGLE_THREAD_P) + return INLINE_SYSCALL (openat, 4, AT_FDCWD, file, + oflag | O_LARGEFILE, mode); + + int oldtype = LIBC_CANCEL_ASYNC (); + + int result = INLINE_SYSCALL (openat, 4, AT_FDCWD, file, + oflag | O_LARGEFILE, mode); + + LIBC_CANCEL_RESET (oldtype); + + return result; +} +weak_alias (__libc_open64, __open64) +libc_hidden_weak (__open64) +weak_alias (__libc_open64, open64) diff --git a/sysdeps/unix/sysv/linux/generic/pause.c b/sysdeps/unix/sysv/linux/generic/pause.c new file mode 100644 index 0000000000..3804ce6e99 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/pause.c @@ -0,0 +1,63 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include + +/* Suspend the process until a signal arrives. + This always returns -1 and sets errno to EINTR. */ + +static int +__syscall_pause (void) +{ + sigset_t set; + + int rc = + INLINE_SYSCALL (rt_sigprocmask, 4, SIG_BLOCK, NULL, &set, _NSIG / 8); + if (rc == 0) + rc = INLINE_SYSCALL (rt_sigsuspend, 2, &set, _NSIG / 8); + + return rc; +} + +int +__libc_pause (void) +{ + if (SINGLE_THREAD_P) + return __syscall_pause (); + + int oldtype = LIBC_CANCEL_ASYNC (); + + int result = __syscall_pause (); + + LIBC_CANCEL_RESET (oldtype); + + return result; +} +weak_alias (__libc_pause, pause) + +#ifndef NO_CANCELLATION +# include + +int +__pause_nocancel (void) +{ + return __syscall_pause (); +} +#endif diff --git a/sysdeps/unix/sysv/linux/generic/pipe.c b/sysdeps/unix/sysv/linux/generic/pipe.c new file mode 100644 index 0000000000..53bf6141a0 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/pipe.c @@ -0,0 +1,33 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include + +/* Create a one-way communication channel (__pipe). + If successful, two file descriptors are stored in PIPEDES; + bytes written on PIPEDES[1] can be read from PIPEDES[0]. + Returns 0 if successful, -1 if not. */ +int +__pipe (int __pipedes[2]) +{ + return INLINE_SYSCALL (pipe2, 2, __pipedes, 0); +} +libc_hidden_def (__pipe) +weak_alias (__pipe, pipe) diff --git a/sysdeps/unix/sysv/linux/generic/poll.c b/sysdeps/unix/sysv/linux/generic/poll.c new file mode 100644 index 0000000000..62342779c4 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/poll.c @@ -0,0 +1,53 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include + +#include +#include + +#include + +int +__poll (struct pollfd *fds, nfds_t nfds, int timeout) +{ + struct timespec timeout_ts; + struct timespec *timeout_ts_p = NULL; + + if (timeout >= 0) + { + timeout_ts.tv_sec = timeout / 1000; + timeout_ts.tv_nsec = (timeout % 1000) * 1000000; + timeout_ts_p = &timeout_ts; + } + + if (SINGLE_THREAD_P) + return INLINE_SYSCALL (ppoll, 5, fds, nfds, timeout_ts_p, NULL, 0); + + int oldtype = LIBC_CANCEL_ASYNC (); + + int result = INLINE_SYSCALL (ppoll, 5, fds, nfds, timeout_ts_p, NULL, 0); + + LIBC_CANCEL_RESET (oldtype); + + return result; +} +libc_hidden_def (__poll) +weak_alias (__poll, poll) +strong_alias (__poll, __libc_poll) diff --git a/sysdeps/unix/sysv/linux/generic/readlink.c b/sysdeps/unix/sysv/linux/generic/readlink.c new file mode 100644 index 0000000000..6f25649c6c --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/readlink.c @@ -0,0 +1,31 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include + +/* Read the contents of the symbolic link PATH into no more than + LEN bytes of BUF. The contents are not null-terminated. + Returns the number of characters read, or -1 for errors. */ +ssize_t +__readlink (const char *path, char *buf, size_t len) +{ + return INLINE_SYSCALL (readlinkat, 4, AT_FDCWD, path, buf, len); +} +weak_alias (__readlink, readlink) diff --git a/sysdeps/unix/sysv/linux/generic/readlink_chk.c b/sysdeps/unix/sysv/linux/generic/readlink_chk.c new file mode 100644 index 0000000000..f73b3c577d --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/readlink_chk.c @@ -0,0 +1,39 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#ifdef HAVE_INLINED_SYSCALLS +# include +# include +#endif + + +ssize_t +__readlink_chk (const char *path, void *buf, size_t len, size_t buflen) +{ + if (len > buflen) + __chk_fail (); + +#ifdef HAVE_INLINED_SYSCALLS + return INLINE_SYSCALL (readlinkat, 4, AT_FDCWD, path, buf, len); +#else + return __readlink (path, buf, len); +#endif +} diff --git a/sysdeps/unix/sysv/linux/generic/recv.c b/sysdeps/unix/sysv/linux/generic/recv.c new file mode 100644 index 0000000000..1d950eb0fe --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/recv.c @@ -0,0 +1,45 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include + +ssize_t +__libc_recv (int sockfd, void *buffer, size_t len, int flags) +{ + ssize_t result; + + if (SINGLE_THREAD_P) + result = INLINE_SYSCALL (recvfrom, 6, sockfd, buffer, len, flags, + NULL, NULL); + else + { + int oldtype = LIBC_CANCEL_ASYNC (); + + result = INLINE_SYSCALL (recvfrom, 6, sockfd, buffer, len, flags, + NULL, NULL); + + LIBC_CANCEL_RESET (oldtype); + } + + return result; +} +strong_alias (__libc_recv, __recv) +weak_alias (__libc_recv, recv) diff --git a/sysdeps/unix/sysv/linux/generic/rename.c b/sysdeps/unix/sysv/linux/generic/rename.c new file mode 100644 index 0000000000..73e03c03d7 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/rename.c @@ -0,0 +1,29 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include + +/* Rename the file OLD to NEW. */ +int +rename (const char *old, const char *new) +{ + return INLINE_SYSCALL (renameat, 4, AT_FDCWD, old, AT_FDCWD, new); +} diff --git a/sysdeps/unix/sysv/linux/generic/rmdir.c b/sysdeps/unix/sysv/linux/generic/rmdir.c new file mode 100644 index 0000000000..ff5d309df6 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/rmdir.c @@ -0,0 +1,31 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include + + +/* Remove the directory PATH. */ +int +__rmdir (const char *path) +{ + return INLINE_SYSCALL (unlinkat, 3, AT_FDCWD, path, AT_REMOVEDIR); +} +weak_alias (__rmdir, rmdir) diff --git a/sysdeps/unix/sysv/linux/generic/select.c b/sysdeps/unix/sysv/linux/generic/select.c new file mode 100644 index 0000000000..03f96037f6 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/select.c @@ -0,0 +1,74 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include +#include + +/* Check the first NFDS descriptors each in READFDS (if not NULL) for read + readiness, in WRITEFDS (if not NULL) for write readiness, and in EXCEPTFDS + (if not NULL) for exceptional conditions. If TIMEOUT is not NULL, time out + after waiting the interval specified therein. Returns the number of ready + descriptors, or -1 for errors. */ + +int +__select(int nfds, fd_set *readfds, + fd_set *writefds, fd_set *exceptfds, + struct timeval *timeout) +{ + int result; + struct timespec ts, *tsp = NULL; + + if (timeout) + { + TIMEVAL_TO_TIMESPEC (timeout, &ts); + tsp = &ts; + } + + if (SINGLE_THREAD_P) + { + result = INLINE_SYSCALL (pselect6, 6, nfds, readfds, writefds, exceptfds, + tsp, NULL); + } + else + { + int oldtype = LIBC_CANCEL_ASYNC (); + + result = INLINE_SYSCALL (pselect6, 6, nfds, readfds, writefds, exceptfds, + tsp, NULL); + + LIBC_CANCEL_RESET (oldtype); + } + + if (timeout) + { + /* Linux by default will update the timeout after a pselect6 syscall + (though the pselect() glibc call suppresses this behavior). + Since select() on Linux has the same behavior as the pselect6 + syscall, we update the timeout here. */ + TIMESPEC_TO_TIMEVAL (timeout, &ts); + } + + return result; +} +libc_hidden_def (__select) + +weak_alias (__select, select) +weak_alias (__select, __libc_select) diff --git a/sysdeps/unix/sysv/linux/generic/send.c b/sysdeps/unix/sysv/linux/generic/send.c new file mode 100644 index 0000000000..2db610d4bc --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/send.c @@ -0,0 +1,43 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include + +ssize_t +__libc_send (int sockfd, const void *buffer, size_t len, int flags) +{ + ssize_t result; + + if (SINGLE_THREAD_P) + result = INLINE_SYSCALL (sendto, 6, sockfd, buffer, len, flags, NULL, 0); + else + { + int oldtype = LIBC_CANCEL_ASYNC (); + + result = INLINE_SYSCALL (sendto, 6, sockfd, buffer, len, flags, NULL, 0); + + LIBC_CANCEL_RESET (oldtype); + } + + return result; +} +strong_alias (__libc_send, __send) +weak_alias (__libc_send, send) diff --git a/sysdeps/unix/sysv/linux/generic/symlink.c b/sysdeps/unix/sysv/linux/generic/symlink.c new file mode 100644 index 0000000000..ad36c2cae2 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/symlink.c @@ -0,0 +1,30 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include + +/* Make a link to FROM called TO. */ +int +__symlink (const char *from, const char *to) +{ + return INLINE_SYSCALL (symlinkat, 3, from, AT_FDCWD, to); +} +weak_alias (__symlink, symlink) diff --git a/sysdeps/unix/sysv/linux/generic/syscalls.list b/sysdeps/unix/sysv/linux/generic/syscalls.list new file mode 100644 index 0000000000..4b2e74762f --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/syscalls.list @@ -0,0 +1,32 @@ +# File name Caller Syscall name # args Strong name Weak names + +# SysV APIs +msgget - msgget i:ii __msgget msgget +msgctl - msgctl i:iip __msgctl msgctl +msgrcv - msgrcv Ci:ibnii __msgrcv msgrcv +msgsnd - msgsnd Ci:ibni __msgsnd msgsnd +semget - semget i:iii __semget semget +semctl - semctl i:iiii __semctl semctl +semtimedop - semtimedop i:ipip semtimedop +semop - semop i:ipi __semop semop +shmget - shmget i:iii __shmget shmget +shmctl - shmctl i:iip __shmctl shmctl +shmat - shmat i:ipi __shmat shmat +shmdt - shmdt i:s __shmdt shmdt + +# Socket APIs +socket - socket i:iii __socket socket +socketpair - socketpair i:iiif __socketpair socketpair +bind - bind i:ipi __bind bind +listen - listen i:ii __listen listen +accept - accept Ci:iBN __libc_accept __accept accept +connect - connect Ci:ipi __libc_connect __connect connect +getsockname - getsockname i:ipp __getsockname getsockname +getpeername - getpeername i:ipp __getpeername getpeername +sendto - sendto Ci:ibnibn __libc_sendto __sendto sendto +recvfrom - recvfrom Ci:ibniBN __libc_recvfrom __recvfrom recvfrom +setsockopt - setsockopt i:iiibn __setsockopt setsockopt +getsockopt - getsockopt i:iiiBN __getsockopt getsockopt +shutdown - shutdown i:ii __shutdown shutdown +sendmsg - sendmsg Ci:ipi __libc_sendmsg __sendmsg sendmsg +recvmsg - recvmsg Ci:ipi __libc_recvmsg __recvmsg recvmsg diff --git a/sysdeps/unix/sysv/linux/generic/sysctl.c b/sysdeps/unix/sysv/linux/generic/sysctl.c new file mode 100644 index 0000000000..e94237ac7c --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/sysctl.c @@ -0,0 +1,32 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include + +#include +#include + +/* This deprecated syscall is no longer used (replaced with /proc/sys). */ +int +sysctl (int *name, int nlen, void *oldval, size_t *oldlenp, + void *newval, size_t newlen) +{ + __set_errno (ENOSYS); + return -1; +} +stub_warning (sysctl) diff --git a/sysdeps/unix/sysv/linux/generic/sysdep.h b/sysdeps/unix/sysv/linux/generic/sysdep.h new file mode 100644 index 0000000000..f1ba2589e6 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/sysdep.h @@ -0,0 +1,41 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include + +/* Provide the common name to allow more code reuse. */ +#define __NR__llseek __NR_llseek + +#if __WORDSIZE == 64 +/* By defining the older names, glibc will build syscall wrappers for + both pread and pread64; sysdeps/unix/sysv/linux/wordsize-64/pread64.c + will suppress generating any separate code for pread64.c. */ +#define __NR_pread __NR_pread64 +#define __NR_pwrite __NR_pwrite64 +#endif + +/* Provide a dummy argument that can be used to force register + alignment for register pairs if required by the syscall ABI. */ +#ifdef __ASSUME_ALIGNED_REGISTER_PAIRS +#define __ALIGNMENT_ARG 0, +#define __ALIGNMENT_COUNT(a,b) b +#else +#define __ALIGNMENT_ARG +#define __ALIGNMENT_COUNT(a,b) a +#endif diff --git a/sysdeps/unix/sysv/linux/generic/umount.c b/sysdeps/unix/sysv/linux/generic/umount.c new file mode 100644 index 0000000000..115dcaaaff --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/umount.c @@ -0,0 +1,30 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +/* Since the generic Linux syscall ABI doesn't have an oldumount system call, + do what the kernel does down here. */ + +extern long int __umount2 (const char *name, int flags); + +long int +__umount (const char *name) +{ + return __umount2 (name, 0); +} + +weak_alias (__umount, umount); diff --git a/sysdeps/unix/sysv/linux/generic/unlink.c b/sysdeps/unix/sysv/linux/generic/unlink.c new file mode 100644 index 0000000000..6fc6779c1a --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/unlink.c @@ -0,0 +1,31 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include + + +/* Remove the link named NAME. */ +int +__unlink (const char *name) +{ + return INLINE_SYSCALL (unlinkat, 3, AT_FDCWD, name, 0); +} +weak_alias (__unlink, unlink) diff --git a/sysdeps/unix/sysv/linux/generic/ustat.c b/sysdeps/unix/sysv/linux/generic/ustat.c new file mode 100644 index 0000000000..a45e818aba --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/ustat.c @@ -0,0 +1,32 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include + +#include +#include + +/* This deprecated syscall is no longer used (replaced with fstat). */ +int +ustat (dev_t dev, struct ustat *ubuf) +{ + __set_errno (ENOSYS); + return -1; +} +stub_warning (ustat) diff --git a/sysdeps/unix/sysv/linux/generic/utimes.c b/sysdeps/unix/sysv/linux/generic/utimes.c new file mode 100644 index 0000000000..e0abd7290a --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/utimes.c @@ -0,0 +1,45 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include +#include +#include + + +/* Change the access time of FILE to TVP[0] and + the modification time of FILE to TVP[1]. */ +int +__utimes (const char *file, const struct timeval tvp[2]) +{ + struct timespec ts[2]; + struct timespec *tsp = NULL; + + if (tvp) + { + TIMEVAL_TO_TIMESPEC (&tvp[0], &ts[0]); + TIMEVAL_TO_TIMESPEC (&tvp[1], &ts[1]); + tsp = &ts[0]; + } + + return INLINE_SYSCALL (utimensat, 4, AT_FDCWD, file, tsp, 0); +} + +weak_alias (__utimes, utimes) diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/Versions b/sysdeps/unix/sysv/linux/generic/wordsize-32/Versions new file mode 100644 index 0000000000..cdc6022015 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/Versions @@ -0,0 +1,5 @@ +libc { + GLIBC_2.15 { + fallocate64; + } +} diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/fcntl.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/fcntl.c new file mode 100644 index 0000000000..2637f03451 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/fcntl.c @@ -0,0 +1,87 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include /* Must come before . */ +#include +#include + +#include +#include + + +static int +do_fcntl (int fd, int cmd, void *arg) +{ + if (cmd != F_GETOWN) + return INLINE_SYSCALL (fcntl64, 3, fd, cmd, arg); + + INTERNAL_SYSCALL_DECL (err); + struct f_owner_ex fex; + int res = INTERNAL_SYSCALL (fcntl64, err, 3, fd, F_GETOWN_EX, &fex); + if (!INTERNAL_SYSCALL_ERROR_P (res, err)) + return fex.type == F_OWNER_GID ? -fex.pid : fex.pid; + + __set_errno (INTERNAL_SYSCALL_ERRNO (res, err)); + return -1; +} + + +#ifndef NO_CANCELLATION +int +__fcntl_nocancel (int fd, int cmd, ...) +{ + va_list ap; + void *arg; + + va_start (ap, cmd); + arg = va_arg (ap, void *); + va_end (ap); + + return do_fcntl (fd, cmd, arg); +} +#endif + + +int +__libc_fcntl (int fd, int cmd, ...) +{ + va_list ap; + void *arg; + + va_start (ap, cmd); + arg = va_arg (ap, void *); + va_end (ap); + + if (SINGLE_THREAD_P || cmd != F_SETLKW) + return do_fcntl (fd, cmd, arg); + + int oldtype = LIBC_CANCEL_ASYNC (); + + int result = do_fcntl (fd, cmd, arg); + + LIBC_CANCEL_RESET (oldtype); + + return result; +} +libc_hidden_def (__libc_fcntl) + +weak_alias (__libc_fcntl, __fcntl) +libc_hidden_weak (__fcntl) +weak_alias (__libc_fcntl, fcntl) diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/fstatfs.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/fstatfs.c new file mode 100644 index 0000000000..bff1f4970b --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/fstatfs.c @@ -0,0 +1,32 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include + +#include "overflow.h" + +/* Return information about the filesystem on which FD resides. */ +int +__fstatfs (int fd, struct statfs *buf) +{ + int rc = INLINE_SYSCALL (fstatfs64, 3, fd, sizeof (*buf), buf); + return rc ?: statfs_overflow (buf); +} +weak_alias (__fstatfs, fstatfs) diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/ftruncate.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/ftruncate.c new file mode 100644 index 0000000000..f153a04933 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/ftruncate.c @@ -0,0 +1,31 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include + +/* Truncate the file FD refers to to LENGTH bytes. */ +int +__ftruncate (int fd, off_t length) +{ + return INLINE_SYSCALL (ftruncate64, __ALIGNMENT_COUNT (3, 4), fd, + __ALIGNMENT_ARG + __LONG_LONG_PAIR (length >> 31, length)); +} +weak_alias (__ftruncate, ftruncate) diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/ftruncate64.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/ftruncate64.c new file mode 100644 index 0000000000..e430145828 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/ftruncate64.c @@ -0,0 +1,32 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include + +/* Truncate the file FD refers to to LENGTH bytes. */ +int +__ftruncate64 (int fd, off64_t length) +{ + unsigned int low = length & 0xffffffff; + unsigned int high = length >> 32; + return INLINE_SYSCALL (ftruncate64, __ALIGNMENT_COUNT (3, 4), fd, + __ALIGNMENT_ARG __LONG_LONG_PAIR (high, low)); +} +weak_alias (__ftruncate64, ftruncate64) diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/fxstat.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/fxstat.c new file mode 100644 index 0000000000..41850c34bd --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/fxstat.c @@ -0,0 +1,45 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include +#include + +#include +#include + +#include "overflow.h" + +/* Get information about the file FD in BUF. */ +int +__fxstat (int vers, int fd, struct stat *buf) +{ + if (vers == _STAT_VER_KERNEL) + { + int rc = INLINE_SYSCALL (fstat64, 2, fd, buf); + return rc ?: stat_overflow (buf); + } + + errno = EINVAL; + return -1; +} + +hidden_def (__fxstat) +weak_alias (__fxstat, _fxstat); diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/fxstatat.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/fxstatat.c new file mode 100644 index 0000000000..94769b64e4 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/fxstatat.c @@ -0,0 +1,45 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "overflow.h" + +/* Get information about the file NAME in BUF. */ +int +__fxstatat (int vers, int fd, const char *file, struct stat *buf, int flag) +{ + if (vers == _STAT_VER_KERNEL) + { + int rc = INLINE_SYSCALL (fstatat64, 4, fd, file, buf, flag); + return rc ?: stat_overflow (buf); + } + + errno = EINVAL; + return -1; +} +libc_hidden_def (__fxstatat) diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/getdents.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/getdents.c new file mode 100644 index 0000000000..e4b6ee0d17 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/getdents.c @@ -0,0 +1,115 @@ +/* Copyright (C) 1993-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Simplified from sysdeps/unix/sysv/linux/getdents.c. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +/* Pack the dirent64 struct down into 32-bit offset/inode fields, and + ensure that no overflow occurs. */ +ssize_t +__getdents (int fd, char *buf, size_t nbytes) +{ + union + { + struct dirent64 k; /* Kernel structure. */ + struct dirent u; + char b[1]; + } *kbuf = (void *) buf, *outp, *inp; + size_t kbytes = nbytes; + off64_t last_offset = -1; + ssize_t retval; + + const size_t size_diff = (offsetof (struct dirent64, d_name) + - offsetof (struct dirent, d_name)); + if (nbytes <= sizeof (struct dirent)) + { + kbytes = nbytes + offsetof (struct dirent64, d_name) + - offsetof (struct dirent, d_name); + kbuf = __alloca(kbytes); + } + + retval = INLINE_SYSCALL (getdents64, 3, fd, kbuf, kbytes); + if (retval == -1) + return -1; + + /* These two pointers might alias the same memory buffer. + Standard C requires that we always use the same type for them, + so we must use the union type. */ + inp = kbuf; + outp = (void *) buf; + + while (&inp->b < &kbuf->b + retval) + { + const size_t alignment = __alignof__ (struct dirent); + /* Since inp->k.d_reclen is already aligned for the kernel + structure this may compute a value that is bigger + than necessary. */ + size_t old_reclen = inp->k.d_reclen; + size_t new_reclen = ((old_reclen - size_diff + alignment - 1) + & ~(alignment - 1)); + + /* Copy the data out of the old structure into temporary space. + Then copy the name, which may overlap if BUF == KBUF. */ + const uint64_t d_ino = inp->k.d_ino; + const int64_t d_off = inp->k.d_off; + const uint8_t d_type = inp->k.d_type; + + memmove (outp->u.d_name, inp->k.d_name, + old_reclen - offsetof (struct dirent64, d_name)); + + /* Now we have copied the data from INP and access only OUTP. */ + + outp->u.d_ino = d_ino; + outp->u.d_off = d_off; + if ((sizeof (outp->u.d_ino) != sizeof (inp->k.d_ino) + && outp->u.d_ino != d_ino) + || (sizeof (outp->u.d_off) != sizeof (inp->k.d_off) + && outp->u.d_off != d_off)) + { + /* Overflow. If there was at least one entry before this one, + return them without error, otherwise signal overflow. */ + if (last_offset != -1) + { + __lseek64 (fd, last_offset, SEEK_SET); + return outp->b - buf; + } + __set_errno (EOVERFLOW); + return -1; + } + + last_offset = d_off; + outp->u.d_reclen = new_reclen; + outp->u.d_type = d_type; + + inp = (void *) inp + old_reclen; + outp = (void *) outp + new_reclen; + } + + return outp->b - buf; +} diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/llseek.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/llseek.c new file mode 100644 index 0000000000..ce9eb9bd6d --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/llseek.c @@ -0,0 +1,46 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include + +#include +#include + +/* Seek to OFFSET on FD, starting from WHENCE. */ +extern loff_t __llseek (int fd, loff_t offset, int whence); + +loff_t +__llseek (int fd, loff_t offset, int whence) +{ + loff_t retval; + + return (loff_t) (INLINE_SYSCALL (_llseek, 5, fd, (off_t) (offset >> 32), + (off_t) (offset & 0xffffffff), + &retval, whence) ?: retval); +} +weak_alias (__llseek, llseek) +strong_alias (__llseek, __libc_lseek64) +strong_alias (__llseek, __lseek64) +weak_alias (__llseek, lseek64) + +/* llseek doesn't have a prototype. Since the second parameter is a + 64bit type, this results in wrong behaviour if no prototype is + provided. */ +link_warning (llseek, "\ +the `llseek' function may be dangerous; use `lseek64' instead.") diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/lseek.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/lseek.c new file mode 100644 index 0000000000..96d8a35378 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/lseek.c @@ -0,0 +1,38 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include + +#include +#include + +#include "overflow.h" + +off_t +__lseek (int fd, off_t offset, int whence) +{ + loff_t res; + int rc = INLINE_SYSCALL (_llseek, 5, fd, (off_t) (offset >> 31), + (off_t) offset, &res, whence); + return rc ?: lseek_overflow (res); +} +libc_hidden_def (__lseek) +weak_alias (__lseek, lseek) +strong_alias (__lseek, __libc_lseek) diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/lxstat.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/lxstat.c new file mode 100644 index 0000000000..143f727d3f --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/lxstat.c @@ -0,0 +1,43 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include +#include + +#include +#include + +#include "overflow.h" + +/* Get information about the file NAME in BUF. */ +int +__lxstat (int vers, const char *name, struct stat *buf) +{ + if (vers == _STAT_VER_KERNEL) + { + int rc = INLINE_SYSCALL (fstatat64, 4, AT_FDCWD, name, buf, + AT_SYMLINK_NOFOLLOW); + return rc ?: stat_overflow (buf); + } + errno = EINVAL; + return -1; +} +hidden_def (__lxstat) diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/lxstat64.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/lxstat64.c new file mode 100644 index 0000000000..39d385cdb0 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/lxstat64.c @@ -0,0 +1,38 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include +#include + +#include +#include + +/* Get information about the file NAME in BUF. */ +int +__lxstat64 (int vers, const char *name, struct stat64 *buf) +{ + if (vers == _STAT_VER_KERNEL) + return INLINE_SYSCALL (fstatat64, 4, AT_FDCWD, name, buf, + AT_SYMLINK_NOFOLLOW); + errno = EINVAL; + return -1; +} +hidden_def (__lxstat64) diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/mmap.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/mmap.c new file mode 100644 index 0000000000..be8ac7b100 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/mmap.c @@ -0,0 +1,40 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include + +#ifndef MMAP_PAGE_SHIFT +#define MMAP_PAGE_SHIFT 12 +#endif + +__ptr_t +__mmap (__ptr_t addr, size_t len, int prot, int flags, int fd, off_t offset) +{ + if (offset & ((1 << MMAP_PAGE_SHIFT) - 1)) + { + __set_errno (EINVAL); + return MAP_FAILED; + } + return (__ptr_t) INLINE_SYSCALL (mmap2, 6, addr, len, prot, flags, fd, + offset >> MMAP_PAGE_SHIFT); +} + +weak_alias (__mmap, mmap) diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/overflow.h b/sysdeps/unix/sysv/linux/generic/wordsize-32/overflow.h new file mode 100644 index 0000000000..2acc2e5486 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/overflow.h @@ -0,0 +1,60 @@ +/* Overflow tests for stat, statfs, and lseek functions. + Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include + +/* Test for overflows of structures where we ask the kernel to fill them + in with standard 64-bit syscalls but return them through APIs that + only expose the low 32 bits of some fields. */ + +static inline off_t lseek_overflow (loff_t res) +{ + off_t retval = (off_t) res; + if (retval == res) + return retval; + + __set_errno (EOVERFLOW); + return (off_t) -1; +} + +static inline int stat_overflow (struct stat *buf) +{ + if (buf->__st_ino_pad == 0 && buf->__st_size_pad == 0 && + buf->__st_blocks_pad == 0) + return 0; + + __set_errno (EOVERFLOW); + return -1; +} + +/* Note that f_files and f_ffree may validly be a sign-extended -1. */ +static inline int statfs_overflow (struct statfs *buf) +{ + if (buf->__f_blocks_pad == 0 && buf->__f_bfree_pad == 0 && + buf->__f_bavail_pad == 0 && + (buf->__f_files_pad == 0 || + (buf->f_files == -1U && buf->__f_files_pad == -1)) && + (buf->__f_ffree_pad == 0 || + (buf->f_ffree == -1U && buf->__f_ffree_pad == -1))) + return 0; + + __set_errno (EOVERFLOW); + return -1; +} diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/posix_fadvise.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/posix_fadvise.c new file mode 100644 index 0000000000..cc29817a95 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/posix_fadvise.c @@ -0,0 +1,37 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include + +/* Advice the system about the expected behaviour of the application with + respect to the file associated with FD. */ + +int +posix_fadvise (int fd, off_t offset, off_t len, int advise) +{ + INTERNAL_SYSCALL_DECL (err); + int ret = INTERNAL_SYSCALL (fadvise64_64, err, 6, fd, + __LONG_LONG_PAIR (offset >> 31, offset), + __LONG_LONG_PAIR (len >> 31, len), + advise); + if (INTERNAL_SYSCALL_ERROR_P (ret, err)) + return INTERNAL_SYSCALL_ERRNO (ret, err); + return 0; +} diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/pread.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/pread.c new file mode 100644 index 0000000000..2bffd1fbd9 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/pread.c @@ -0,0 +1,58 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + Based on work contributed by Ulrich Drepper , 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include + +#include +#include + +#include + +static ssize_t +do_pread (int fd, void *buf, size_t count, off_t offset) +{ + assert (sizeof (offset) == 4); + return INLINE_SYSCALL (pread64, __ALIGNMENT_COUNT (5, 6), fd, + buf, count, __ALIGNMENT_ARG + __LONG_LONG_PAIR (offset >> 31, offset)); +} + +ssize_t +__libc_pread (fd, buf, count, offset) + int fd; + void *buf; + size_t count; + off_t offset; +{ + if (SINGLE_THREAD_P) + return do_pread (fd, buf, count, offset); + + int oldtype = LIBC_CANCEL_ASYNC (); + + ssize_t result = do_pread (fd, buf, count, offset); + + LIBC_CANCEL_RESET (oldtype); + + return result; +} +strong_alias (__libc_pread, __pread) +weak_alias (__libc_pread, pread) diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/pread64.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/pread64.c new file mode 100644 index 0000000000..093b874814 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/pread64.c @@ -0,0 +1,58 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + Based on work contributed by Ulrich Drepper , 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include + +#include +#include + +#include + +static ssize_t +do_pread64 (int fd, void *buf, size_t count, off64_t offset) +{ + return INLINE_SYSCALL (pread64, __ALIGNMENT_COUNT (5, 6), fd, + buf, count, __ALIGNMENT_ARG + __LONG_LONG_PAIR ((off_t) (offset >> 32), + (off_t) (offset & 0xffffffff))); +} + + +ssize_t +__libc_pread64 (fd, buf, count, offset) + int fd; + void *buf; + size_t count; + off64_t offset; +{ + if (SINGLE_THREAD_P) + return do_pread64 (fd, buf, count, offset); + + int oldtype = LIBC_CANCEL_ASYNC (); + + ssize_t result = do_pread64 (fd, buf, count, offset); + + LIBC_CANCEL_RESET (oldtype); + + return result; +} + +weak_alias (__libc_pread64, __pread64) weak_alias (__libc_pread64, pread64) diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/preadv.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/preadv.c new file mode 100644 index 0000000000..1dae1272d0 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/preadv.c @@ -0,0 +1,55 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + Based on work contributed by Ulrich Drepper , 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include +#include + +#include +#include + +#include + +static ssize_t +do_preadv (int fd, const struct iovec *vector, int count, off_t offset) +{ + assert (sizeof (offset) == 4); + return INLINE_SYSCALL (preadv, __ALIGNMENT_COUNT (5, 6), fd, + vector, count, __ALIGNMENT_ARG + __LONG_LONG_PAIR (offset >> 31, offset)); +} + +ssize_t +__libc_preadv (int fd, const struct iovec *vector, int count, off_t offset) +{ + if (SINGLE_THREAD_P) + return do_preadv (fd, vector, count, offset); + + int oldtype = LIBC_CANCEL_ASYNC (); + + ssize_t result = do_preadv (fd, vector, count, offset); + + LIBC_CANCEL_RESET (oldtype); + + return result; +} +strong_alias (__libc_preadv, __preadv) +weak_alias (__libc_preadv, preadv) diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/preadv64.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/preadv64.c new file mode 100644 index 0000000000..32cc314047 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/preadv64.c @@ -0,0 +1,56 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + Based on work contributed by Ulrich Drepper , 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include + +#include +#include + +#include + +static ssize_t +do_preadv64 (int fd, const struct iovec *vector, int count, off64_t offset) +{ + return INLINE_SYSCALL (preadv, __ALIGNMENT_COUNT (5, 6), fd, + vector, count, __ALIGNMENT_ARG + __LONG_LONG_PAIR ((off_t) (offset >> 32), + (off_t) (offset & 0xffffffff))); +} + + +ssize_t +__libc_preadv64 (int fd, const struct iovec *vector, int count, off64_t offset) +{ + if (SINGLE_THREAD_P) + return do_preadv64 (fd, vector, count, offset); + + int oldtype = LIBC_CANCEL_ASYNC (); + + ssize_t result = do_preadv64 (fd, vector, count, offset); + + LIBC_CANCEL_RESET (oldtype); + + return result; +} + +strong_alias (__libc_preadv64, __preadv64) +weak_alias (__libc_preadv64, preadv64) diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite.c new file mode 100644 index 0000000000..909255bb7e --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite.c @@ -0,0 +1,59 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + Based on work contributed by Ulrich Drepper , 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include + +#include +#include + +#include + +static ssize_t +do_pwrite (int fd, const void *buf, size_t count, off_t offset) +{ + assert (sizeof (offset) == 4); + return INLINE_SYSCALL (pwrite64, __ALIGNMENT_COUNT (5, 6), fd, + buf, count, __ALIGNMENT_ARG + __LONG_LONG_PAIR (offset >> 31, offset)); +} + + +ssize_t +__libc_pwrite (fd, buf, count, offset) + int fd; + const void *buf; + size_t count; + off_t offset; +{ + if (SINGLE_THREAD_P) + return do_pwrite (fd, buf, count, offset); + + int oldtype = LIBC_CANCEL_ASYNC (); + + ssize_t result = do_pwrite (fd, buf, count, offset); + + LIBC_CANCEL_RESET (oldtype); + + return result; +} +strong_alias (__libc_pwrite, __pwrite) +weak_alias (__libc_pwrite, pwrite) diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite64.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite64.c new file mode 100644 index 0000000000..cbdb9e9a4e --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite64.c @@ -0,0 +1,59 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + Based on work contributed by Ulrich Drepper , 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include + +#include +#include + +#include + +static ssize_t +do_pwrite64 (int fd, const void *buf, size_t count, off64_t offset) +{ + return INLINE_SYSCALL (pwrite64, __ALIGNMENT_COUNT (5, 6), fd, + buf, count, __ALIGNMENT_ARG + __LONG_LONG_PAIR ((off_t) (offset >> 32), + (off_t) (offset & 0xffffffff))); +} + + +ssize_t +__libc_pwrite64 (fd, buf, count, offset) + int fd; + const void *buf; + size_t count; + off64_t offset; +{ + if (SINGLE_THREAD_P) + return do_pwrite64 (fd, buf, count, offset); + + int oldtype = LIBC_CANCEL_ASYNC (); + + ssize_t result = do_pwrite64 (fd, buf, count, offset); + + LIBC_CANCEL_RESET (oldtype); + + return result; +} + +weak_alias (__libc_pwrite64, __pwrite64) +libc_hidden_weak (__pwrite64) weak_alias (__libc_pwrite64, pwrite64) diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/pwritev.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/pwritev.c new file mode 100644 index 0000000000..a166e32c3f --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/pwritev.c @@ -0,0 +1,56 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + Based on work contributed by Ulrich Drepper , 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include +#include + +#include +#include + +#include + +static ssize_t +do_pwritev (int fd, const struct iovec *vector, int count, off_t offset) +{ + assert (sizeof (offset) == 4); + return INLINE_SYSCALL (pwritev, __ALIGNMENT_COUNT (5, 6), fd, + vector, count, __ALIGNMENT_ARG + __LONG_LONG_PAIR (offset >> 31, offset)); +} + + +ssize_t +__libc_pwritev (int fd, const struct iovec *vector, int count, off_t offset) +{ + if (SINGLE_THREAD_P) + return do_pwritev (fd, vector, count, offset); + + int oldtype = LIBC_CANCEL_ASYNC (); + + ssize_t result = do_pwritev (fd, vector, count, offset); + + LIBC_CANCEL_RESET (oldtype); + + return result; +} +strong_alias (__libc_pwritev, __pwritev) +weak_alias (__libc_pwritev, pwritev) diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/pwritev64.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/pwritev64.c new file mode 100644 index 0000000000..33f4e80e66 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/pwritev64.c @@ -0,0 +1,57 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + Based on work contributed by Ulrich Drepper , 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include + +#include +#include + +#include + +static ssize_t +do_pwritev64 (int fd, const struct iovec *vector, int count, off64_t offset) +{ + return INLINE_SYSCALL (pwritev, __ALIGNMENT_COUNT (5, 6), fd, + vector, count, __ALIGNMENT_ARG + __LONG_LONG_PAIR ((off_t) (offset >> 32), + (off_t) (offset & 0xffffffff))); +} + + +ssize_t +__libc_pwritev64 (int fd, const struct iovec *vector, int count, + off64_t offset) +{ + if (SINGLE_THREAD_P) + return do_pwritev64 (fd, vector, count, offset); + + int oldtype = LIBC_CANCEL_ASYNC (); + + ssize_t result = do_pwritev64 (fd, vector, count, offset); + + LIBC_CANCEL_RESET (oldtype); + + return result; +} + +strong_alias (__libc_pwritev64, pwritev64) +weak_alias (__libc_pwritev64, __pwritev64) diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/sendfile.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/sendfile.c new file mode 100644 index 0000000000..c35e54a511 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/sendfile.c @@ -0,0 +1,45 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include + +/* Send COUNT bytes from file associated with IN_FD starting at OFFSET to + descriptor OUT_FD. */ +ssize_t +sendfile (int out_fd, int in_fd, off_t *offset, size_t count) +{ + __off64_t off64; + int rc; + + if (offset != NULL) + { + if (*offset < 0 || (off_t) (*offset + count) < 0) + { + __set_errno (EINVAL); + return -1; + } + off64 = *offset; + } + + rc = INLINE_SYSCALL (sendfile64, 4, out_fd, in_fd, + offset ? &off64 : NULL, count); + if (offset) + *offset = off64; + return rc; +} diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/statfs.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/statfs.c new file mode 100644 index 0000000000..7987457e8e --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/statfs.c @@ -0,0 +1,33 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include + +#include "overflow.h" + +/* Return information about the filesystem on which FILE resides. */ +int +__statfs (const char *file, struct statfs *buf) +{ + int rc = INLINE_SYSCALL (statfs64, 3, file, sizeof (*buf), buf); + return rc ?: statfs_overflow (buf); +} +libc_hidden_def (__statfs) +weak_alias (__statfs, statfs) diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/syscalls.list b/sysdeps/unix/sysv/linux/generic/wordsize-32/syscalls.list new file mode 100644 index 0000000000..f055c68519 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/syscalls.list @@ -0,0 +1,7 @@ +# File name Caller Syscall name # args Strong name Weak names + +# rlimit APIs +getrlimit - getrlimit i:ip __getrlimit getrlimit +setrlimit - setrlimit i:ip __setrlimit setrlimit +prlimit64 EXTRA prlimit64 i:iipp prlimit64 +fanotify_mark EXTRA fanotify_mark i:iiiiis fanotify_mark diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/truncate.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/truncate.c new file mode 100644 index 0000000000..fb31d1499c --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/truncate.c @@ -0,0 +1,31 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include + +/* Truncate PATH to LENGTH bytes. */ +int +__truncate (const char *path, off_t length) +{ + return INLINE_SYSCALL (truncate64, __ALIGNMENT_COUNT (3, 4), path, + __ALIGNMENT_ARG + __LONG_LONG_PAIR (length >> 31, length)); +} +weak_alias (__truncate, truncate) diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/truncate64.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/truncate64.c new file mode 100644 index 0000000000..ff19d61559 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/truncate64.c @@ -0,0 +1,31 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include + +/* Truncate the file PATH to LENGTH bytes. */ +int +truncate64 (const char *path, off64_t length) +{ + unsigned int low = length & 0xffffffff; + unsigned int high = length >> 32; + return INLINE_SYSCALL (truncate64, __ALIGNMENT_COUNT (3, 4), path, + __ALIGNMENT_ARG __LONG_LONG_PAIR (high, low)); +} diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/xstat.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/xstat.c new file mode 100644 index 0000000000..e9ca7aed16 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/xstat.c @@ -0,0 +1,43 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include +#include + +#include +#include + +#include "overflow.h" + +/* Get information about the file NAME in BUF. */ +int +__xstat (int vers, const char *name, struct stat *buf) +{ + if (vers == _STAT_VER_KERNEL) + { + int rc = INLINE_SYSCALL (fstatat64, 4, AT_FDCWD, name, buf, 0); + return rc ?: stat_overflow (buf); + } + + errno = EINVAL; + return -1; +} +hidden_def (__xstat) diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/xstat64.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/xstat64.c new file mode 100644 index 0000000000..09862228db --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/xstat64.c @@ -0,0 +1,38 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include +#include + +#include +#include + +/* Get information about the file NAME in BUF. */ +int +__xstat64 (int vers, const char *name, struct stat64 *buf) +{ + if (vers == _STAT_VER_KERNEL) + return INLINE_SYSCALL (fstatat64, 4, AT_FDCWD, name, buf, 0); + + errno = EINVAL; + return -1; +} +hidden_def (__xstat64) diff --git a/sysdeps/unix/sysv/linux/generic/xmknod.c b/sysdeps/unix/sysv/linux/generic/xmknod.c new file mode 100644 index 0000000000..e08bb0ecea --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/xmknod.c @@ -0,0 +1,54 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include +#include + +#include +#include + +/* Create a device file named PATH, with permission and special bits MODE + and device number DEV (which can be constructed from major and minor + device numbers with the `makedev' macro above). */ +int +__xmknod (int vers, const char *path, mode_t mode, dev_t *dev) +{ + unsigned long long int k_dev; + + if (vers != _MKNOD_VER) + { + __set_errno (EINVAL); + return -1; + } + + /* We must convert the value to dev_t type used by the kernel. */ + k_dev = (*dev) & ((1ULL << 32) - 1); + if (k_dev != *dev) + { + __set_errno (EINVAL); + return -1; + } + + return INLINE_SYSCALL (mknodat, 4, AT_FDCWD, path, mode, + (unsigned int) k_dev); +} +weak_alias (__xmknod, _xmknod) +libc_hidden_def (__xmknod) diff --git a/sysdeps/unix/sysv/linux/generic/xstat.c b/sysdeps/unix/sysv/linux/generic/xstat.c new file mode 100644 index 0000000000..7e37e9c6e5 --- /dev/null +++ b/sysdeps/unix/sysv/linux/generic/xstat.c @@ -0,0 +1,48 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +/* Ignore prototype to avoid error if we alias __xstat and __xstat64. */ +#define __xstat64 __xstat64_disable + +#include +#include +#include +#include +#include + +#include +#include + +/* Get information about the file NAME in BUF. */ +int +__xstat (int vers, const char *name, struct stat *buf) +{ + if (vers == _STAT_VER_KERNEL) + return INLINE_SYSCALL (newfstatat, 4, AT_FDCWD, name, buf, 0); + + errno = EINVAL; + return -1; +} + +hidden_def (__xstat) +weak_alias (__xstat, _xstat); +#ifdef XSTAT_IS_XSTAT64 +#undef __xstat64 +strong_alias (__xstat, __xstat64); +hidden_ver (__xstat, __xstat64) +#endif diff --git a/sysdeps/unix/sysv/linux/tile/Makefile b/sysdeps/unix/sysv/linux/tile/Makefile new file mode 100644 index 0000000000..0bcb95f63a --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/Makefile @@ -0,0 +1,25 @@ +ifeq ($(subdir),misc) + +# provides something like x86 compatibility. +# New code should probably use instead. +sysdep_headers += sys/reg.h + +# MIPS-style cacheflush routine +sysdep_headers += sys/cachectl.h +sysdep_routines += cacheflush + +# Control dataplane properties of current thread. +sysdep_headers += sys/dataplane.h +sysdep_routines += set_dataplane + +endif + +ifeq ($(subdir),elf) +sysdep_routines += dl-vdso +ifeq ($(build-shared),yes) +# This is needed for DSO loading from static binaries. +sysdep-dl-routines += dl-static +sysdep_routines += dl-static +sysdep-rtld-routines += dl-static +endif +endif diff --git a/sysdeps/unix/sysv/linux/tile/Versions b/sysdeps/unix/sysv/linux/tile/Versions new file mode 100644 index 0000000000..9b40d2839f --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/Versions @@ -0,0 +1,17 @@ +ld { + GLIBC_PRIVATE { + # used for loading by static libraries + _dl_var_init; + } +} +libc { + GLIBC_2.12 { + _flush_cache; + cacheflush; + fallocate64; + set_dataplane; + } + GLIBC_PRIVATE { + __syscall_error; + } +} diff --git a/sysdeps/unix/sysv/linux/tile/bits/environments.h b/sysdeps/unix/sysv/linux/tile/bits/environments.h new file mode 100644 index 0000000000..d7003aa92e --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/bits/environments.h @@ -0,0 +1,100 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _UNISTD_H +# error "Never include this file directly. Use instead" +#endif + +#include + +/* This header should define the following symbols under the described + situations. A value `1' means that the model is always supported, + `-1' means it is never supported. Undefined means it cannot be + statically decided. + + _POSIX_V7_ILP32_OFF32 32bit int, long, pointers, and off_t type + _POSIX_V7_ILP32_OFFBIG 32bit int, long, and pointers and larger off_t type + + _POSIX_V7_LP64_OFF32 64bit long and pointers and 32bit off_t type + _POSIX_V7_LPBIG_OFFBIG 64bit long and pointers and large off_t type + + The macros _POSIX_V6_ILP32_OFF32, _POSIX_V6_ILP32_OFFBIG, + _POSIX_V6_LP64_OFF32, _POSIX_V6_LPBIG_OFFBIG, _XBS5_ILP32_OFF32, + _XBS5_ILP32_OFFBIG, _XBS5_LP64_OFF32, and _XBS5_LPBIG_OFFBIG were + used in previous versions of the Unix standard and are available + only for compatibility. +*/ + +#if __WORDSIZE == 64 + +/* Environments with 32-bit wide pointers are optionally provided. + Therefore following macros aren't defined: + # undef _POSIX_V7_ILP32_OFF32 + # undef _POSIX_V7_ILP32_OFFBIG + # undef _POSIX_V6_ILP32_OFF32 + # undef _POSIX_V6_ILP32_OFFBIG + # undef _XBS5_ILP32_OFF32 + # undef _XBS5_ILP32_OFFBIG + and users need to check at runtime. */ + +/* We also have no use (for now) for an environment with bigger pointers + and offsets. */ +# define _POSIX_V7_LPBIG_OFFBIG -1 +# define _POSIX_V6_LPBIG_OFFBIG -1 +# define _XBS5_LPBIG_OFFBIG -1 + +/* By default we have 64-bit wide `long int', pointers and `off_t'. */ +# define _POSIX_V7_LP64_OFF64 1 +# define _POSIX_V6_LP64_OFF64 1 +# define _XBS5_LP64_OFF64 1 + +#else /* __WORDSIZE == 32 */ + +/* By default we have 32-bit wide `int', `long int', pointers and `off_t' + and all platforms support LFS. */ +# define _POSIX_V7_ILP32_OFF32 1 +# define _POSIX_V7_ILP32_OFFBIG 1 +# define _POSIX_V6_ILP32_OFF32 1 +# define _POSIX_V6_ILP32_OFFBIG 1 +# define _XBS5_ILP32_OFF32 1 +# define _XBS5_ILP32_OFFBIG 1 + +/* We optionally provide an environment with the above size but an 64-bit + side `off_t'. Therefore we don't define _POSIX_V7_ILP32_OFFBIG. */ + +/* Environments with 64-bit wide pointers can be provided, + so these macros aren't defined: + # undef _POSIX_V7_LP64_OFF64 + # undef _POSIX_V7_LPBIG_OFFBIG + # undef _POSIX_V6_LP64_OFF64 + # undef _POSIX_V6_LPBIG_OFFBIG + # undef _XBS5_LP64_OFF64 + # undef _XBS5_LPBIG_OFFBIG + and sysconf tests for it at runtime. */ + +#endif /* __WORDSIZE == 32 */ + +#ifdef __tilegx__ +/* Only TILE-Gx has the ability to choose 32- or 64-bit. */ +#define __ILP32_OFF32_CFLAGS "-m32" +#define __ILP32_OFFBIG_CFLAGS "-m32 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" +#define __ILP32_OFF32_LDFLAGS "-m32" +#define __ILP32_OFFBIG_LDFLAGS "-m32" +#define __LP64_OFF64_CFLAGS "-m64" +#define __LP64_OFF64_LDFLAGS "-m64" +#endif diff --git a/sysdeps/unix/sysv/linux/tile/bits/libc-vdso.h b/sysdeps/unix/sysv/linux/tile/bits/libc-vdso.h new file mode 100644 index 0000000000..c4aec16d19 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/bits/libc-vdso.h @@ -0,0 +1,30 @@ +/* Resolve function pointers to VDSO functions. + Copyright (C) 2012-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + + +#ifndef _LIBC_VDSO_H +#define _LIBC_VDSO_H + +#ifdef SHARED + +extern long int (*__vdso_gettimeofday) (struct timeval *, void *) + attribute_hidden; + +#endif + +#endif /* _LIBC_VDSO_H */ diff --git a/sysdeps/unix/sysv/linux/tile/bits/local_lim.h b/sysdeps/unix/sysv/linux/tile/bits/local_lim.h new file mode 100644 index 0000000000..4e5605fd52 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/bits/local_lim.h @@ -0,0 +1,100 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +/* The kernel header pollutes the namespace with the NR_OPEN symbol + and defines LINK_MAX although filesystems have different maxima. A + similar thing is true for OPEN_MAX: the limit can be changed at + runtime and therefore the macro must not be defined. Remove this + after including the header if necessary. */ +#ifndef NR_OPEN +# define __undef_NR_OPEN +#endif +#ifndef LINK_MAX +# define __undef_LINK_MAX +#endif +#ifndef OPEN_MAX +# define __undef_OPEN_MAX +#endif +#ifndef ARG_MAX +# define __undef_ARG_MAX +#endif + +/* The kernel sources contain a file with all the needed information. */ +#include + +/* Have to remove NR_OPEN? */ +#ifdef __undef_NR_OPEN +# undef NR_OPEN +# undef __undef_NR_OPEN +#endif +/* Have to remove LINK_MAX? */ +#ifdef __undef_LINK_MAX +# undef LINK_MAX +# undef __undef_LINK_MAX +#endif +/* Have to remove OPEN_MAX? */ +#ifdef __undef_OPEN_MAX +# undef OPEN_MAX +# undef __undef_OPEN_MAX +#endif +/* Have to remove ARG_MAX? */ +#ifdef __undef_ARG_MAX +# undef ARG_MAX +# undef __undef_ARG_MAX +#endif + +/* The number of data keys per process. */ +#define _POSIX_THREAD_KEYS_MAX 128 +/* This is the value this implementation supports. */ +#define PTHREAD_KEYS_MAX 1024 + +/* Controlling the iterations of destructors for thread-specific data. */ +#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4 +/* Number of iterations this implementation does. */ +#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS + +/* The number of threads per process. */ +#define _POSIX_THREAD_THREADS_MAX 64 +/* We have no predefined limit on the number of threads. */ +#undef PTHREAD_THREADS_MAX + +/* Maximum amount by which a process can descrease its asynchronous I/O + priority level. */ +#define AIO_PRIO_DELTA_MAX 20 + +/* Minimum size for a thread. At least two pages for systems with 64k + pages. */ +#define PTHREAD_STACK_MIN 131072 + +/* Maximum number of timer expiration overruns. */ +#define DELAYTIMER_MAX 2147483647 + +/* Maximum tty name length. */ +#define TTY_NAME_MAX 32 + +/* Maximum login name length. This is arbitrary. */ +#define LOGIN_NAME_MAX 256 + +/* Maximum host name length. */ +#define HOST_NAME_MAX 64 + +/* Maximum message queue priority level. */ +#define MQ_PRIO_MAX 32768 + +/* Maximum value the semaphore can have. */ +#define SEM_VALUE_MAX (2147483647) diff --git a/sysdeps/unix/sysv/linux/tile/bits/mman.h b/sysdeps/unix/sysv/linux/tile/bits/mman.h new file mode 100644 index 0000000000..f97f275e85 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/bits/mman.h @@ -0,0 +1,40 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _SYS_MMAN_H +# error "Never use directly; include instead." +#endif + +/* The following definitions basically come from the kernel headers. + But the kernel header is not namespace clean. */ + +#ifdef __USE_MISC +/* These are Linux-specific. */ +# define MAP_NONBLOCK 0x00080 /* Do not block on IO. */ +# define MAP_GROWSDOWN 0x00100 /* Stack-like segment. */ +# define MAP_STACK MAP_GROWSDOWN /* Provide convenience alias. */ +# define MAP_LOCKED 0x00200 /* Lock the mapping. */ +# define MAP_NORESERVE 0x00400 /* Don't check for reservations. */ +# define MAP_DENYWRITE 0x00800 /* ETXTBSY */ +# define MAP_EXECUTABLE 0x01000 /* Mark it as an executable. */ +# define MAP_POPULATE 0x00040 /* Populate (prefault) pagetables. */ +# define MAP_HUGETLB 0x04000 /* Create huge page mapping. */ +#endif + +/* Include generic Linux declarations. */ +#include diff --git a/sysdeps/unix/sysv/linux/tile/bits/sigaction.h b/sysdeps/unix/sysv/linux/tile/bits/sigaction.h new file mode 100644 index 0000000000..76a6aae158 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/bits/sigaction.h @@ -0,0 +1,77 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _SIGNAL_H +# error "Never include directly; use instead." +#endif + +/* Structure describing the action to be taken when a signal arrives. */ +struct sigaction + { + /* Signal handler. */ +#ifdef __USE_POSIX199309 + union + { + /* Used if SA_SIGINFO is not set. */ + __sighandler_t sa_handler; + /* Used if SA_SIGINFO is set. */ + void (*sa_sigaction) (int, siginfo_t *, void *); + } + __sigaction_handler; +# define sa_handler __sigaction_handler.sa_handler +# define sa_sigaction __sigaction_handler.sa_sigaction +#else + __sighandler_t sa_handler; +#endif + + /* Additional set of signals to be blocked. */ + __sigset_t sa_mask; + + /* Special flags. */ + int sa_flags; + + /* Restore handler. */ + void (*sa_restorer) (void); + }; + +/* Bits in `sa_flags'. */ +#define SA_NOCLDSTOP 1 /* Don't send SIGCHLD when children stop. */ +#define SA_NOCLDWAIT 2 /* Don't create zombie on child death. */ +#define SA_SIGINFO 4 /* Invoke signal-catching function with + three arguments instead of one. */ +#if defined __USE_UNIX98 || defined __USE_MISC +# define SA_NOPTRACE 0x02000000 /* Don't ptrace this signal. */ +# define SA_ONSTACK 0x08000000 /* Use signal stack by using `sa_restorer'. */ +# define SA_RESTART 0x10000000 /* Restart syscall on signal return. */ +# define SA_NODEFER 0x40000000 /* Don't automatically block the signal when + its handler is being executed. */ +# define SA_RESETHAND 0x80000000 /* Reset to SIG_DFL on entry to handler. */ +#endif +#ifdef __USE_MISC +# define SA_INTERRUPT 0x20000000 /* Historical no-op. */ + +/* Some aliases for the SA_ constants. */ +# define SA_NOMASK SA_NODEFER +# define SA_ONESHOT SA_RESETHAND +# define SA_STACK SA_ONSTACK +#endif + +/* Values for the HOW argument to `sigprocmask'. */ +#define SIG_BLOCK 0 /* Block signals. */ +#define SIG_UNBLOCK 1 /* Unblock signals. */ +#define SIG_SETMASK 2 /* Set the set of blocked signals. */ diff --git a/sysdeps/unix/sysv/linux/tile/bits/siginfo.h b/sysdeps/unix/sysv/linux/tile/bits/siginfo.h new file mode 100644 index 0000000000..089edb2e86 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/bits/siginfo.h @@ -0,0 +1,341 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#if !defined _SIGNAL_H && !defined __need_siginfo_t \ + && !defined __need_sigevent_t +# error "Never include this file directly. Use instead" +#endif + +#include + +#if (!defined __have_sigval_t \ + && (defined _SIGNAL_H || defined __need_siginfo_t \ + || defined __need_sigevent_t)) +# define __have_sigval_t 1 + +/* Type for data associated with a signal. */ +typedef union sigval + { + int sival_int; + void *sival_ptr; + } sigval_t; +#endif + +#if (!defined __have_siginfo_t \ + && (defined _SIGNAL_H || defined __need_siginfo_t)) +# define __have_siginfo_t 1 + +# define __SI_MAX_SIZE 128 +# if __WORDSIZE == 64 +# define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 4) +# else +# define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 3) +# endif + +typedef struct + { + int si_signo; /* Signal number. */ + int si_errno; /* If non-zero, an errno value associated with + this signal, as defined in . */ + int si_code; /* Signal code. */ + + union + { + int _pad[__SI_PAD_SIZE]; + + /* kill(). */ + struct + { + __pid_t si_pid; /* Sending process ID. */ + __uid_t si_uid; /* Real user ID of sending process. */ + } _kill; + + /* POSIX.1b timers. */ + struct + { + int si_tid; /* Timer ID. */ + int si_overrun; /* Overrun count. */ + sigval_t si_sigval; /* Signal value. */ + } _timer; + + /* POSIX.1b signals. */ + struct + { + __pid_t si_pid; /* Sending process ID. */ + __uid_t si_uid; /* Real user ID of sending process. */ + sigval_t si_sigval; /* Signal value. */ + } _rt; + + /* SIGCHLD. */ + struct + { + __pid_t si_pid; /* Which child. */ + __uid_t si_uid; /* Real user ID of sending process. */ + int si_status; /* Exit value or signal. */ + __clock_t si_utime; + __clock_t si_stime; + } _sigchld; + + /* SIGILL, SIGFPE, SIGSEGV, SIGBUS. */ + struct + { + void *si_addr; /* Faulting insn/memory ref. */ + int si_trapno; /* TRAP # which caused the signal. */ + short int si_addr_lsb; /* Valid LSB of the reported address. */ + } _sigfault; + + /* SIGPOLL. */ + struct + { + long int si_band; /* Band event for SIGPOLL. */ + int si_fd; + } _sigpoll; + + /* SIGSYS. */ + struct + { + void *_call_addr; /* Calling user insn. */ + int _syscall; /* Triggering system call number. */ + unsigned int _arch; /* AUDIT_ARCH_* of syscall. */ + } _sigsys; + } _sifields; + } siginfo_t; + + +/* X/Open requires some more fields with fixed names. */ +# define si_pid _sifields._kill.si_pid +# define si_uid _sifields._kill.si_uid +# define si_timerid _sifields._timer.si_tid +# define si_overrun _sifields._timer.si_overrun +# define si_status _sifields._sigchld.si_status +# define si_utime _sifields._sigchld.si_utime +# define si_stime _sifields._sigchld.si_stime +# define si_value _sifields._rt.si_sigval +# define si_int _sifields._rt.si_sigval.sival_int +# define si_ptr _sifields._rt.si_sigval.sival_ptr +# define si_addr _sifields._sigfault.si_addr +# define si_trapno _sifields._sigfault.si_trapno +# define si_addr_lsb _sifields._sigfault.si_addr_lsb +# define si_band _sifields._sigpoll.si_band +# define si_fd _sifields._sigpoll.si_fd +# define si_call_addr _sifields._sigsys._call_addr +# define si_syscall _sifields._sigsys._syscall +# define si_arch _sifields._sigsys._arch + + +/* Values for `si_code'. Positive values are reserved for kernel-generated + signals. */ +enum +{ + SI_ASYNCNL = -60, /* Sent by asynch name lookup completion. */ +# define SI_ASYNCNL SI_ASYNCNL + SI_TKILL = -6, /* Sent by tkill. */ +# define SI_TKILL SI_TKILL + SI_SIGIO, /* Sent by queued SIGIO. */ +# define SI_SIGIO SI_SIGIO + SI_ASYNCIO, /* Sent by AIO completion. */ +# define SI_ASYNCIO SI_ASYNCIO + SI_MESGQ, /* Sent by real time mesq state change. */ +# define SI_MESGQ SI_MESGQ + SI_TIMER, /* Sent by timer expiration. */ +# define SI_TIMER SI_TIMER + SI_QUEUE, /* Sent by sigqueue. */ +# define SI_QUEUE SI_QUEUE + SI_USER, /* Sent by kill, sigsend, raise. */ +# define SI_USER SI_USER + SI_KERNEL = 0x80 /* Send by kernel. */ +#define SI_KERNEL SI_KERNEL +}; + + +/* `si_code' values for SIGILL signal. */ +enum +{ + ILL_ILLOPC = 1, /* Illegal opcode. */ +# define ILL_ILLOPC ILL_ILLOPC + ILL_ILLOPN, /* Illegal operand. */ +# define ILL_ILLOPN ILL_ILLOPN + ILL_ILLADR, /* Illegal addressing mode. */ +# define ILL_ILLADR ILL_ILLADR + ILL_ILLTRP, /* Illegal trap. */ +# define ILL_ILLTRP ILL_ILLTRP + ILL_PRVOPC, /* Privileged opcode. */ +# define ILL_PRVOPC ILL_PRVOPC + ILL_PRVREG, /* Privileged register. */ +# define ILL_PRVREG ILL_PRVREG + ILL_COPROC, /* Coprocessor error. */ +# define ILL_COPROC ILL_COPROC + ILL_BADSTK, /* Internal stack error. */ +# define ILL_BADSTK ILL_BADSTK + ILL_DBLFLT, /* Double fault. */ +# define ILL_DBLFLT ILL_DBLFLT + ILL_HARDWALL /* User networks hardwall violation. */ +# define ILL_HARDWALL ILL_HARDWALL +}; + +/* `si_code' values for SIGFPE signal. */ +enum +{ + FPE_INTDIV = 1, /* Integer divide by zero. */ +# define FPE_INTDIV FPE_INTDIV + FPE_INTOVF, /* Integer overflow. */ +# define FPE_INTOVF FPE_INTOVF + FPE_FLTDIV, /* Floating point divide by zero. */ +# define FPE_FLTDIV FPE_FLTDIV + FPE_FLTOVF, /* Floating point overflow. */ +# define FPE_FLTOVF FPE_FLTOVF + FPE_FLTUND, /* Floating point underflow. */ +# define FPE_FLTUND FPE_FLTUND + FPE_FLTRES, /* Floating point inexact result. */ +# define FPE_FLTRES FPE_FLTRES + FPE_FLTINV, /* Floating point invalid operation. */ +# define FPE_FLTINV FPE_FLTINV + FPE_FLTSUB /* Subscript out of range. */ +# define FPE_FLTSUB FPE_FLTSUB +}; + +/* `si_code' values for SIGSEGV signal. */ +enum +{ + SEGV_MAPERR = 1, /* Address not mapped to object. */ +# define SEGV_MAPERR SEGV_MAPERR + SEGV_ACCERR /* Invalid permissions for mapped object. */ +# define SEGV_ACCERR SEGV_ACCERR +}; + +/* `si_code' values for SIGBUS signal. */ +enum +{ + BUS_ADRALN = 1, /* Invalid address alignment. */ +# define BUS_ADRALN BUS_ADRALN + BUS_ADRERR, /* Non-existant physical address. */ +# define BUS_ADRERR BUS_ADRERR + BUS_OBJERR, /* Object specific hardware error. */ +# define BUS_OBJERR BUS_OBJERR + BUS_MCEERR_AR, /* Hardware memory error: action required. */ +# define BUS_MCEERR_AR BUS_MCEERR_AR + BUS_MCEERR_AO /* Hardware memory error: action optional. */ +# define BUS_MCEERR_AO BUS_MCEERR_AO +}; + +/* `si_code' values for SIGTRAP signal. */ +enum +{ + TRAP_BRKPT = 1, /* Process breakpoint. */ +# define TRAP_BRKPT TRAP_BRKPT + TRAP_TRACE /* Process trace trap. */ +# define TRAP_TRACE TRAP_TRACE +}; + +/* `si_code' values for SIGCHLD signal. */ +enum +{ + CLD_EXITED = 1, /* Child has exited. */ +# define CLD_EXITED CLD_EXITED + CLD_KILLED, /* Child was killed. */ +# define CLD_KILLED CLD_KILLED + CLD_DUMPED, /* Child terminated abnormally. */ +# define CLD_DUMPED CLD_DUMPED + CLD_TRAPPED, /* Traced child has trapped. */ +# define CLD_TRAPPED CLD_TRAPPED + CLD_STOPPED, /* Child has stopped. */ +# define CLD_STOPPED CLD_STOPPED + CLD_CONTINUED /* Stopped child has continued. */ +# define CLD_CONTINUED CLD_CONTINUED +}; + +/* `si_code' values for SIGPOLL signal. */ +enum +{ + POLL_IN = 1, /* Data input available. */ +# define POLL_IN POLL_IN + POLL_OUT, /* Output buffers available. */ +# define POLL_OUT POLL_OUT + POLL_MSG, /* Input message available. */ +# define POLL_MSG POLL_MSG + POLL_ERR, /* I/O error. */ +# define POLL_ERR POLL_ERR + POLL_PRI, /* High priority input available. */ +# define POLL_PRI POLL_PRI + POLL_HUP /* Device disconnected. */ +# define POLL_HUP POLL_HUP +}; + +# undef __need_siginfo_t +#endif /* !have siginfo_t && (have _SIGNAL_H || need siginfo_t). */ + + +#if (defined _SIGNAL_H || defined __need_sigevent_t) \ + && !defined __have_sigevent_t +# define __have_sigevent_t 1 + +/* Structure to transport application-defined values with signals. */ +# define __SIGEV_MAX_SIZE 64 +# if __WORDSIZE == 64 +# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4) +# else +# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3) +# endif + +/* Forward declaration. */ +# ifndef __have_pthread_attr_t +typedef union pthread_attr_t pthread_attr_t; +# define __have_pthread_attr_t 1 +# endif + +typedef struct sigevent + { + sigval_t sigev_value; + int sigev_signo; + int sigev_notify; + + union + { + int _pad[__SIGEV_PAD_SIZE]; + + /* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the + thread to receive the signal. */ + __pid_t _tid; + + struct + { + void (*_function) (sigval_t); /* Function to start. */ + pthread_attr_t *_attribute; /* Thread attributes. */ + } _sigev_thread; + } _sigev_un; + } sigevent_t; + +/* POSIX names to access some of the members. */ +# define sigev_notify_function _sigev_un._sigev_thread._function +# define sigev_notify_attributes _sigev_un._sigev_thread._attribute + +/* `sigev_notify' values. */ +enum +{ + SIGEV_SIGNAL = 0, /* Notify via signal. */ +# define SIGEV_SIGNAL SIGEV_SIGNAL + SIGEV_NONE, /* Other notification: meaningless. */ +# define SIGEV_NONE SIGEV_NONE + SIGEV_THREAD, /* Deliver via thread creation. */ +# define SIGEV_THREAD SIGEV_THREAD + + SIGEV_THREAD_ID = 4 /* Send signal to specific thread. */ +#define SIGEV_THREAD_ID SIGEV_THREAD_ID +}; + +#endif /* have _SIGNAL_H. */ diff --git a/sysdeps/unix/sysv/linux/tile/cacheflush.c b/sysdeps/unix/sysv/linux/tile/cacheflush.c new file mode 100644 index 0000000000..fcf725cb3d --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/cacheflush.c @@ -0,0 +1,34 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include + +/* Flush cache(s). */ +int +_flush_cache (char *addr, const int nbytes, const int op) +{ +#ifdef __NR_cacheflush + return INLINE_SYSCALL (cacheflush, 3, addr, nbytes, op); +#else + __set_errno (ENOSYS); + return -1; +#endif +} +weak_alias (_flush_cache, cacheflush) diff --git a/sysdeps/unix/sysv/linux/tile/configure b/sysdeps/unix/sysv/linux/tile/configure new file mode 100644 index 0000000000..02f6c8c25d --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/configure @@ -0,0 +1,4 @@ +# This file is generated from configure.ac by Autoconf. DO NOT EDIT! + # Local configure fragment for sysdeps/unix/sysv/linux/tile. + +arch_minimum_kernel=2.6.32 diff --git a/sysdeps/unix/sysv/linux/tile/configure.ac b/sysdeps/unix/sysv/linux/tile/configure.ac new file mode 100644 index 0000000000..b983e28be6 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/configure.ac @@ -0,0 +1,4 @@ +GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. +# Local configure fragment for sysdeps/unix/sysv/linux/tile. + +arch_minimum_kernel=2.6.32 diff --git a/sysdeps/unix/sysv/linux/tile/dl-static.c b/sysdeps/unix/sysv/linux/tile/dl-static.c new file mode 100644 index 0000000000..8a749f23d9 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/dl-static.c @@ -0,0 +1,84 @@ +/* Variable initialization. Tile version. + Copyright (C) 2001-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include + +#ifdef SHARED + +void +_dl_var_init (void *array[]) +{ + /* It has to match "variables" below. */ + enum + { + DL_PAGESIZE = 0 + }; + + GLRO(dl_pagesize) = *((size_t *) array[DL_PAGESIZE]); +} + +#else + +static void *variables[] = +{ + &GLRO(dl_pagesize) +}; + +static void +_dl_unprotect_relro (struct link_map *l) +{ + ElfW(Addr) start = ((l->l_addr + l->l_relro_addr) + & ~(GLRO(dl_pagesize) - 1)); + ElfW(Addr) end = ((l->l_addr + l->l_relro_addr + l->l_relro_size) + & ~(GLRO(dl_pagesize) - 1)); + + if (start != end) + __mprotect ((void *) start, end - start, PROT_READ | PROT_WRITE); +} + +void +_dl_static_init (struct link_map *l) +{ + struct link_map *rtld_map = l; + struct r_scope_elem **scope; + const ElfW(Sym) *ref = NULL; + lookup_t loadbase; + void (*f) (void *[]); + size_t i; + + loadbase = _dl_lookup_symbol_x ("_dl_var_init", l, &ref, l->l_local_scope, + NULL, 0, 1, NULL); + + for (scope = l->l_local_scope; *scope != NULL; scope++) + for (i = 0; i < (*scope)->r_nlist; i++) + if ((*scope)->r_list[i] == loadbase) + { + rtld_map = (*scope)->r_list[i]; + break; + } + + if (ref != NULL) + { + f = (void (*) (void *[])) DL_SYMBOL_ADDRESS (loadbase, ref); + _dl_unprotect_relro (rtld_map); + f (variables); + _dl_protect_relro (rtld_map); + } +} + +#endif diff --git a/sysdeps/unix/sysv/linux/tile/getcontext.S b/sysdeps/unix/sysv/linux/tile/getcontext.S new file mode 100644 index 0000000000..dcfb653bdc --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/getcontext.S @@ -0,0 +1,95 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include + +#include "ucontext_i.h" + +/* int getcontext (ucontext_t *ucp) */ + + .text +ENTRY (__getcontext) + FEEDBACK_ENTER(__getcontext) + + /* Save the callee-saved GPRs. There's no need to save the + caller-saved GPRs since the eventual setcontext() or + swapcontext() will assume those registers are all dead. + Save value "1" to uc_flags to later recognize getcontext(). */ + { movei r11, 1; ADDI_PTR r10, r0, UC_FLAGS_OFFSET } + { ST_PTR r10, r11; addli r10, r0, UC_REG(30) } + { ST r10, r30; ADDI_PTR r10, r10, REGSIZE } + { ST r10, r31; ADDI_PTR r10, r10, REGSIZE } + { ST r10, r32; ADDI_PTR r10, r10, REGSIZE } + { ST r10, r33; ADDI_PTR r10, r10, REGSIZE } + { ST r10, r34; ADDI_PTR r10, r10, REGSIZE } + { ST r10, r35; ADDI_PTR r10, r10, REGSIZE } + { ST r10, r36; ADDI_PTR r10, r10, REGSIZE } + { ST r10, r37; ADDI_PTR r10, r10, REGSIZE } + { ST r10, r38; ADDI_PTR r10, r10, REGSIZE } + { ST r10, r39; ADDI_PTR r10, r10, REGSIZE } + { ST r10, r40; ADDI_PTR r10, r10, REGSIZE } + { ST r10, r41; ADDI_PTR r10, r10, REGSIZE } + { ST r10, r42; ADDI_PTR r10, r10, REGSIZE } + { ST r10, r43; ADDI_PTR r10, r10, REGSIZE } + { ST r10, r44; ADDI_PTR r10, r10, REGSIZE } + { ST r10, r45; ADDI_PTR r10, r10, REGSIZE } + { ST r10, r46; ADDI_PTR r10, r10, REGSIZE } + { ST r10, r47; ADDI_PTR r10, r10, REGSIZE } + { ST r10, r48; ADDI_PTR r10, r10, REGSIZE } + { ST r10, r49; ADDI_PTR r10, r10, REGSIZE } + { ST r10, r50; ADDI_PTR r10, r10, REGSIZE } + { ST r10, r51; ADDI_PTR r10, r10, REGSIZE } + { ST r10, r52; ADDI_PTR r10, r10, REGSIZE } + { ST r10, tp; ADDI_PTR r10, r10, REGSIZE } + { ST r10, sp; ADDI_PTR r10, r10, REGSIZE } + { ST r10, lr; ADDI_PTR r10, r10, REGSIZE } + lnk r11 /* Point PC at the "jrp lr" instruction. */ + addli r11, r11, .Lreturn - . + { ST r10, r11; ADDI_PTR r10, r10, REGSIZE } + mfspr r11, INTERRUPT_CRITICAL_SECTION + { + ST r10, r11 + movei r1, 0 + } + + /* rt_sigprocmask (SIG_BLOCK, NULL, &ucp->uc_sigmask, _NSIG / 8) */ + { + movei r3, _NSIG / 8 + addli r2, r0, UC_SIGMASK_OFFSET + } + { + movei r0, SIG_BLOCK + moveli TREG_SYSCALL_NR_NAME, __NR_rt_sigprocmask + } + swint1 + BNEZ r1, .Lsyscall_error + +.Lreturn: + { + movei r0, 0 + jrp lr + } + +.Lsyscall_error: + j SYSCALL_ERROR_NAME + +END (__getcontext) +.hidden __getcontext + +weak_alias (__getcontext, getcontext) diff --git a/sysdeps/unix/sysv/linux/tile/gettimeofday.c b/sysdeps/unix/sysv/linux/tile/gettimeofday.c new file mode 100644 index 0000000000..6f62ab960c --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/gettimeofday.c @@ -0,0 +1,37 @@ +/* Copyright (C) 2012-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include +#include + +int +__gettimeofday (struct timeval *tv, struct timezone *tz) +{ +#ifdef SHARED + /* If the vDSO is available we use it. */ + if (__vdso_gettimeofday != NULL) + return __vdso_gettimeofday (tv, tz); +#endif + return INLINE_SYSCALL (gettimeofday, 2, tv, tz); +} + +libc_hidden_def (__gettimeofday) +weak_alias (__gettimeofday, gettimeofday) +libc_hidden_weak (gettimeofday) diff --git a/sysdeps/unix/sysv/linux/tile/init-first.c b/sysdeps/unix/sysv/linux/tile/init-first.c new file mode 100644 index 0000000000..9790d223b1 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/init-first.c @@ -0,0 +1,34 @@ +/* Copyright (C) 2012-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifdef SHARED +#include +#include + +long int (*__vdso_gettimeofday) (struct timeval *, void *) attribute_hidden; + +static inline void +_libc_vdso_platform_setup (void) +{ + PREPARE_VERSION (linux26, "LINUX_2.6", 61765110); + __vdso_gettimeofday = _dl_vdso_vsym ("__vdso_gettimeofday", &linux26); +} + +#define VDSO_SETUP _libc_vdso_platform_setup +#endif + +#include diff --git a/sysdeps/unix/sysv/linux/tile/kernel-features.h b/sysdeps/unix/sysv/linux/tile/kernel-features.h new file mode 100644 index 0000000000..5b811288ee --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/kernel-features.h @@ -0,0 +1,35 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + + +/* TILE glibc support starts with 2.6.36, guaranteeing many kernel features. */ +#define __ASSUME_UTIMES 1 +#define __ASSUME_O_CLOEXEC 1 +#define __ASSUME_SOCK_CLOEXEC 1 +#define __ASSUME_IN_NONBLOCK 1 +#define __ASSUME_PIPE2 1 +#define __ASSUME_EVENTFD2 1 +#define __ASSUME_SIGNALFD4 1 +#define __ASSUME_ACCEPT4 1 +#define __ASSUME_DUP3 1 + +#include_next + +/* Define this if your 32-bit syscall API requires 64-bit register + pairs to start with an even-number register. */ +#define __ASSUME_ALIGNED_REGISTER_PAIRS 1 diff --git a/sysdeps/unix/sysv/linux/tile/ldsodefs.h b/sysdeps/unix/sysv/linux/tile/ldsodefs.h new file mode 100644 index 0000000000..77942682c1 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/ldsodefs.h @@ -0,0 +1,32 @@ +/* Run-time dynamic linker data structures for loaded ELF shared objects. Tile. + Copyright (C) 2001-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#ifndef _LDSODEFS_H + +/* Get the real definitions. */ +#include_next + +/* Now define our stuff. */ + +/* We need special support to initialize DSO loaded for statically linked + binaries. */ +extern void _dl_static_init (struct link_map *map); +#undef DL_STATIC_INIT +#define DL_STATIC_INIT(map) _dl_static_init (map) + +#endif /* ldsodefs.h */ diff --git a/sysdeps/unix/sysv/linux/tile/makecontext.c b/sysdeps/unix/sysv/linux/tile/makecontext.c new file mode 100644 index 0000000000..2ed30f48ba --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/makecontext.c @@ -0,0 +1,67 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include +#include +#include + +void +__makecontext (ucontext_t *ucp, void (*func) (void), int argc, ...) +{ + extern void __startcontext (void); + uint_reg_t *sp, *args; + va_list ap; + int i; + + /* Initialize the top of stack. */ + sp = (uint_reg_t *) ((((intptr_t) ucp->uc_stack.ss_sp + + ucp->uc_stack.ss_size) & -16L) - 16); + + /* Allow room for memory-passed arguments if necessary. */ + if (argc > 10) + sp -= 2 + (argc - 10); + + sp[0] = sp[1] = 0; + + /* Set parameters. */ + va_start (ap, argc); + args = &ucp->uc_mcontext.gregs[0]; + for (i = 0; i < argc; i++) + { + if (i == 10) + args = &sp[2]; + *args++ = va_arg (ap, long); + } + va_end (ap); + + /* Pass (*func) to __startcontext in pc. */ + ucp->uc_mcontext.pc = (long) func; + + /* Set stack pointer. */ + ucp->uc_mcontext.sp = (long) sp; + + /* Set the return address to trampoline. */ + ucp->uc_mcontext.lr = (long) __startcontext; + + /* Pass ucp->uc_link to __startcontext in r30. */ + ucp->uc_mcontext.gregs[30] = (long) ucp->uc_link; +} +weak_alias (__makecontext, makecontext) diff --git a/sysdeps/unix/sysv/linux/tile/nptl/Makefile b/sysdeps/unix/sysv/linux/tile/nptl/Makefile new file mode 100644 index 0000000000..e98c9bd866 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/nptl/Makefile @@ -0,0 +1,2 @@ +# pull in __syscall_error routine +libpthread-routines += sysdep diff --git a/sysdeps/unix/sysv/linux/tile/nptl/bits/pthreadtypes.h b/sysdeps/unix/sysv/linux/tile/nptl/bits/pthreadtypes.h new file mode 100644 index 0000000000..f4693527f1 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/nptl/bits/pthreadtypes.h @@ -0,0 +1,223 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Based on work contributed by Ulrich Drepper , 2002. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _BITS_PTHREADTYPES_H +#define _BITS_PTHREADTYPES_H 1 + +#include + +#if __WORDSIZE == 64 +# define __SIZEOF_PTHREAD_ATTR_T 56 +# define __SIZEOF_PTHREAD_MUTEX_T 40 +# define __SIZEOF_PTHREAD_MUTEXATTR_T 4 +# define __SIZEOF_PTHREAD_COND_T 48 +# define __SIZEOF_PTHREAD_CONDATTR_T 4 +# define __SIZEOF_PTHREAD_RWLOCK_T 56 +# define __SIZEOF_PTHREAD_RWLOCKATTR_T 8 +# define __SIZEOF_PTHREAD_BARRIER_T 32 +# define __SIZEOF_PTHREAD_BARRIERATTR_T 4 +#else +# define __SIZEOF_PTHREAD_ATTR_T 36 +# define __SIZEOF_PTHREAD_MUTEX_T 24 +# define __SIZEOF_PTHREAD_MUTEXATTR_T 4 +# define __SIZEOF_PTHREAD_COND_T 48 +# define __SIZEOF_PTHREAD_CONDATTR_T 4 +# define __SIZEOF_PTHREAD_RWLOCK_T 32 +# define __SIZEOF_PTHREAD_RWLOCKATTR_T 8 +# define __SIZEOF_PTHREAD_BARRIER_T 20 +# define __SIZEOF_PTHREAD_BARRIERATTR_T 4 +#endif + + +/* Thread identifiers. The structure of the attribute type is not + exposed on purpose. */ +typedef unsigned long int pthread_t; + + +union pthread_attr_t +{ + char __size[__SIZEOF_PTHREAD_ATTR_T]; + long int __align; +}; +#ifndef __have_pthread_attr_t +typedef union pthread_attr_t pthread_attr_t; +# define __have_pthread_attr_t 1 +#endif + +#if __WORDSIZE == 64 +typedef struct __pthread_internal_list +{ + struct __pthread_internal_list *__prev; + struct __pthread_internal_list *__next; +} __pthread_list_t; +#else +typedef struct __pthread_internal_slist +{ + struct __pthread_internal_slist *__next; +} __pthread_slist_t; +#endif + + +/* Data structures for mutex handling. The structure of the attribute + type is not exposed on purpose. */ +typedef union +{ + struct __pthread_mutex_s + { + int __lock; + unsigned int __count; + int __owner; +#if __WORDSIZE == 64 + unsigned int __nusers; +#endif + /* KIND must stay at this position in the structure to maintain + binary compatibility. */ + int __kind; +#if __WORDSIZE == 64 + int __spins; + __pthread_list_t __list; +# define __PTHREAD_MUTEX_HAVE_PREV 1 +#else + unsigned int __nusers; + __extension__ union + { + int __spins; + __pthread_slist_t __list; + }; +#endif + } __data; + char __size[__SIZEOF_PTHREAD_MUTEX_T]; + long int __align; +} pthread_mutex_t; + +typedef union +{ + char __size[__SIZEOF_PTHREAD_MUTEXATTR_T]; + int __align; +} pthread_mutexattr_t; + + +/* Data structure for conditional variable handling. The structure of + the attribute type is not exposed on purpose. */ +typedef union +{ + struct + { + int __lock; + unsigned int __futex; + __extension__ unsigned long long int __total_seq; + __extension__ unsigned long long int __wakeup_seq; + __extension__ unsigned long long int __woken_seq; + void *__mutex; + unsigned int __nwaiters; + unsigned int __broadcast_seq; + } __data; + char __size[__SIZEOF_PTHREAD_COND_T]; + __extension__ long long int __align; +} pthread_cond_t; + +typedef union +{ + char __size[__SIZEOF_PTHREAD_CONDATTR_T]; + int __align; +} pthread_condattr_t; + + +/* Keys for thread-specific data */ +typedef unsigned int pthread_key_t; + + +/* Once-only execution */ +typedef int pthread_once_t; + + +#if defined __USE_UNIX98 || defined __USE_XOPEN2K +/* Data structure for read-write lock variable handling. The + structure of the attribute type is not exposed on purpose. */ +typedef union +{ +# if __WORDSIZE == 64 + struct + { + int __lock; + unsigned int __nr_readers; + unsigned int __readers_wakeup; + unsigned int __writer_wakeup; + unsigned int __nr_readers_queued; + unsigned int __nr_writers_queued; + int __writer; + int __shared; + unsigned long int __pad1; + unsigned long int __pad2; + /* FLAGS must stay at this position in the structure to maintain + binary compatibility. */ + unsigned int __flags; + } __data; +# else + struct + { + int __lock; + unsigned int __nr_readers; + unsigned int __readers_wakeup; + unsigned int __writer_wakeup; + unsigned int __nr_readers_queued; + unsigned int __nr_writers_queued; + /* FLAGS must stay at this position in the structure to maintain + binary compatibility. */ + unsigned char __flags; + unsigned char __shared; + unsigned char __pad1; + unsigned char __pad2; + int __writer; + } __data; +# endif + char __size[__SIZEOF_PTHREAD_RWLOCK_T]; + long int __align; +} pthread_rwlock_t; + +typedef union +{ + char __size[__SIZEOF_PTHREAD_RWLOCKATTR_T]; + long int __align; +} pthread_rwlockattr_t; +#endif + + +#ifdef __USE_XOPEN2K +/* POSIX spinlock data type. */ +typedef volatile int pthread_spinlock_t; + + +/* POSIX barriers data type. The structure of the type is + deliberately not exposed. */ +typedef union +{ + char __size[__SIZEOF_PTHREAD_BARRIER_T]; + long int __align; +} pthread_barrier_t; + +typedef union +{ + char __size[__SIZEOF_PTHREAD_BARRIERATTR_T]; + int __align; +} pthread_barrierattr_t; +#endif + + +#endif /* bits/pthreadtypes.h */ diff --git a/sysdeps/unix/sysv/linux/tile/nptl/bits/semaphore.h b/sysdeps/unix/sysv/linux/tile/nptl/bits/semaphore.h new file mode 100644 index 0000000000..475617df0f --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/nptl/bits/semaphore.h @@ -0,0 +1,41 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + Based on work contributed by Ulrich Drepper , 2002. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _SEMAPHORE_H +# error "Never use directly; include instead." +#endif + +#include + +#if __WORDSIZE == 64 +# define __SIZEOF_SEM_T 32 +#else +# define __SIZEOF_SEM_T 16 +#endif + + +/* Value returned if `sem_open' failed. */ +#define SEM_FAILED ((sem_t *) 0) + + +typedef union +{ + char __size[__SIZEOF_SEM_T]; + long int __align; +} sem_t; diff --git a/sysdeps/unix/sysv/linux/tile/nptl/clone.S b/sysdeps/unix/sysv/linux/tile/nptl/clone.S new file mode 100644 index 0000000000..f48dba523c --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/nptl/clone.S @@ -0,0 +1,221 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +/* clone() is even more special than fork() as it mucks with stacks + and invokes a function in the right context after it's all over. */ + +#include +#define _ERRNO_H 1 +#include + +#include +#include +#include +#include + +/* What we save where in the stack frame; must include all callee-saves. */ +#define FRAME_NEXT_LR (0 * REGSIZE) /* reserved by ABI; not used here */ +#define FRAME_SP (1 * REGSIZE) +#define FRAME_R30 (2 * REGSIZE) +#define FRAME_R31 (3 * REGSIZE) +#define FRAME_R32 (4 * REGSIZE) +#define FRAME_SIZE (5 * REGSIZE) + +/* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg, + pid_t *ptid, struct user_desc *tls, pid_t *ctid); */ + + .text +ENTRY (__clone) + /* sanity check arguments */ + BEQZ r0, .Linvalid + BEQZ r1, .Linvalid + + /* Create a stack frame so we can pass callee-saves to new task. */ + { + move r10, sp + ST sp, lr + ADDI_PTR sp, sp, -FRAME_SIZE + } + cfi_offset (lr, 0) + cfi_def_cfa_offset (FRAME_SIZE) + ADDI_PTR r11, sp, FRAME_SP + { + ST r11, r10 + ADDI_PTR r11, sp, FRAME_R30 + } + { + ST r11, r30 + ADDI_PTR r11, sp, FRAME_R31 + } + cfi_offset (r30, FRAME_R30 - FRAME_SIZE) + { + ST r11, r31 + ADDI_PTR r11, sp, FRAME_R32 + } + cfi_offset (r31, FRAME_R31 - FRAME_SIZE) + ST r11, r32 + cfi_offset (r32, FRAME_R32 - FRAME_SIZE) + + /* Make sure child stack is properly aligned, and set up the + top frame so that we can call out of it immediately in the + child. Setting it up here means we fault in the parent if + it's bogus, which is probably cleaner than faulting first + thing in the child. */ + ADDI_PTR r1, r1, -C_ABI_SAVE_AREA_SIZE + andi r1, r1, -C_ABI_SAVE_AREA_SIZE + ADDI_PTR r9, r1, REGSIZE /* sp of this frame on entry, i.e. zero */ + ST r9, zero + + /* We need to switch the argument convention around from + libc to kernel: + + libc: + r0 fn + r1 child_stack + r2 flags + r3 arg + r4 ptid + r5 tls + r6 ctid + + kernel: + r0 flags + r1 child_stack [same as libc] + r2 ptid + r3 ctid + r4 tls + + Plus the callee-saves as described at .Lthread_start, below. */ + { + move r32, r0 + move r0, r2 + } + { + move r31, r3 + move r3, r6 + } + { + move r30, r2 + move r2, r4 + } + { + move r4, r5 + moveli TREG_SYSCALL_NR_NAME, __NR_clone + } + swint1 + BEQZ r0, .Lthread_start /* If in child task. */ + + /* Restore the callee-saved registers and return. */ + ADDLI_PTR lr, sp, FRAME_SIZE + { + LD lr, lr + ADDLI_PTR r30, sp, FRAME_R30 + } + { + LD r30, r30 + ADDLI_PTR r31, sp, FRAME_R31 + } + { + LD r31, r31 + ADDLI_PTR r32, sp, FRAME_R32 + } + { + LD r32, r32 + ADDI_PTR sp, sp, FRAME_SIZE + } + cfi_def_cfa_offset (0) + + BNEZ r1, .Lerror + jrp lr + +.Lerror: + j SYSCALL_ERROR_NAME + +.Linvalid: + { + movei r1, EINVAL + j SYSCALL_ERROR_NAME + } + +/* This function expects to receive: + + sp: the top of a valid stack area + r30: clone() flags + r31: the argument to pass to the user function + r32: the user function pointer */ + +.Lthread_start: + cfi_def_cfa_offset (FRAME_SIZE) + cfi_undefined (lr) + /* Check and see if we need to reset the PID, which we do if + CLONE_THREAD isn't set, i.e. we're not staying in the thread group. + If CLONE_VM is set, we're doing some kind of thread-like clone, + so we set the tid/pid to -1 to disable using the cached values + in getpid(). Otherwise (if CLONE_VM isn't set), it's a + fork-like clone, and we go ahead and write the cached values + from the true system pid (retrieved via __NR_getpid syscall). */ +#ifdef __tilegx__ + { + moveli r0, hw1_last(CLONE_VM) + moveli r1, hw1_last(CLONE_THREAD) + } + { + shl16insli r0, r0, hw0(CLONE_VM) + shl16insli r1, r1, hw0(CLONE_THREAD) + } +#else + { + moveli r0, lo16(CLONE_VM) + moveli r1, lo16(CLONE_THREAD) + } + { + auli r0, r0, ha16(CLONE_VM) + auli r1, r1, ha16(CLONE_THREAD) + } +#endif + { + and r0, r30, r0 + and r1, r30, r1 + } + BNEZ r1, .Lno_reset_pid /* CLONE_THREAD is set */ + { + movei r0, -1 + BNEZ r0, .Lgotpid /* CLONE_VM is set */ + } + moveli TREG_SYSCALL_NR_NAME, __NR_getpid + swint1 +.Lgotpid: + ADDLI_PTR r2, tp, PID_OFFSET + { + ST4 r2, r0 + ADDLI_PTR r2, tp, TID_OFFSET + } + ST4 r2, r0 +.Lno_reset_pid: + { + /* Invoke user function with specified argument. */ + move r0, r31 + jalr r32 + } + { + j HIDDEN_JUMPTARGET(_exit) + info INFO_OP_CANNOT_BACKTRACE /* Notify backtracer to stop. */ + } +PSEUDO_END (__clone) + +weak_alias (__clone, clone) diff --git a/sysdeps/unix/sysv/linux/tile/nptl/createthread.c b/sysdeps/unix/sysv/linux/tile/nptl/createthread.c new file mode 100644 index 0000000000..8472ad5f62 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/nptl/createthread.c @@ -0,0 +1,24 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +/* Value passed to 'clone' for initialization of the thread register. */ +#define TLS_VALUE ((void *) (pd) \ + + TLS_TCB_OFFSET + TLS_PRE_TCB_SIZE) + +/* Get the real implementation. */ +#include diff --git a/sysdeps/unix/sysv/linux/tile/nptl/fork.c b/sysdeps/unix/sysv/linux/tile/nptl/fork.c new file mode 100644 index 0000000000..6cd83e9173 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/nptl/fork.c @@ -0,0 +1,31 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + Based on work contributed by Ulrich Drepper , 2002. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include +#include + +#define ARCH_FORK() \ + INLINE_SYSCALL (clone, 4, \ + CLONE_CHILD_SETTID | CLONE_CHILD_CLEARTID | SIGCHLD, \ + 0, NULL, &THREAD_SELF->tid) + +#include diff --git a/sysdeps/unix/sysv/linux/tile/nptl/lowlevellock.h b/sysdeps/unix/sysv/linux/tile/nptl/lowlevellock.h new file mode 100644 index 0000000000..46149f1cd4 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/nptl/lowlevellock.h @@ -0,0 +1,321 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _LOWLEVELLOCK_H +#define _LOWLEVELLOCK_H 1 + +#include +#include +#include +#include +#include +#include + + +#define FUTEX_WAIT 0 +#define FUTEX_WAKE 1 +#define FUTEX_REQUEUE 3 +#define FUTEX_CMP_REQUEUE 4 +#define FUTEX_WAKE_OP 5 +#define FUTEX_OP_CLEAR_WAKE_IF_GT_ONE ((4 << 24) | 1) +#define FUTEX_LOCK_PI 6 +#define FUTEX_UNLOCK_PI 7 +#define FUTEX_TRYLOCK_PI 8 +#define FUTEX_WAIT_BITSET 9 +#define FUTEX_WAKE_BITSET 10 +#define FUTEX_WAIT_REQUEUE_PI 11 +#define FUTEX_CMP_REQUEUE_PI 12 +#define FUTEX_PRIVATE_FLAG 128 +#define FUTEX_CLOCK_REALTIME 256 + +#define FUTEX_BITSET_MATCH_ANY 0xffffffff + +/* Values for 'private' parameter of locking macros. Yes, the + definition seems to be backwards. But it is not. The bit will be + reversed before passing to the system call. */ +#define LLL_PRIVATE 0 +#define LLL_SHARED FUTEX_PRIVATE_FLAG + + +#if !defined NOT_IN_libc || defined IS_IN_rtld +/* In libc.so or ld.so all futexes are private. */ +# ifdef __ASSUME_PRIVATE_FUTEX +# define __lll_private_flag(fl, private) \ + ((fl) | FUTEX_PRIVATE_FLAG) +# else +# define __lll_private_flag(fl, private) \ + ((fl) | THREAD_GETMEM (THREAD_SELF, header.private_futex)) +# endif +#else +# ifdef __ASSUME_PRIVATE_FUTEX +# define __lll_private_flag(fl, private) \ + (((fl) | FUTEX_PRIVATE_FLAG) ^ (private)) +# else +# define __lll_private_flag(fl, private) \ + (__builtin_constant_p (private) \ + ? ((private) == 0 \ + ? ((fl) | THREAD_GETMEM (THREAD_SELF, header.private_futex)) \ + : (fl)) \ + : ((fl) | (((private) ^ FUTEX_PRIVATE_FLAG) \ + & THREAD_GETMEM (THREAD_SELF, header.private_futex)))) +# endif +#endif + + +#define lll_futex_wait(futexp, val, private) \ + lll_futex_timed_wait (futexp, val, NULL, private) + +#define lll_futex_timed_wait(futexp, val, timespec, private) \ + ({ \ + INTERNAL_SYSCALL_DECL (__err); \ + INTERNAL_SYSCALL (futex, __err, 4, (futexp), \ + __lll_private_flag (FUTEX_WAIT, private), \ + (val), (timespec)); \ + }) + +#define lll_futex_timed_wait_bitset(futexp, val, timespec, clockbit, private) \ + ({ \ + INTERNAL_SYSCALL_DECL (__err); \ + long int __ret; \ + int __op = FUTEX_WAIT_BITSET | clockbit; \ + \ + __ret = INTERNAL_SYSCALL (futex, __err, 6, (futexp), \ + __lll_private_flag (__op, private), \ + (val), (timespec), NULL /* Unused. */, \ + FUTEX_BITSET_MATCH_ANY); \ + __ret; \ + }) + +#define lll_futex_wake(futexp, nr, private) \ + ({ \ + INTERNAL_SYSCALL_DECL (__err); \ + INTERNAL_SYSCALL (futex, __err, 4, (futexp), \ + __lll_private_flag (FUTEX_WAKE, private), \ + (nr), 0); \ + }) + +#define lll_robust_dead(futexv, private) \ + do \ + { \ + int *__futexp = &(futexv); \ + atomic_or (__futexp, FUTEX_OWNER_DIED); \ + lll_futex_wake (__futexp, 1, private); \ + } \ + while (0) + +/* Returns non-zero if error happened, zero if success. */ +#define lll_futex_requeue(futexp, nr_wake, nr_move, mutex, val, private) \ + ({ \ + INTERNAL_SYSCALL_DECL (__err); \ + long int __ret; \ + __ret = INTERNAL_SYSCALL (futex, __err, 6, (futexp), \ + __lll_private_flag (FUTEX_CMP_REQUEUE, private),\ + (nr_wake), (nr_move), (mutex), (val)); \ + INTERNAL_SYSCALL_ERROR_P (__ret, __err); \ + }) + +/* Returns non-zero if error happened, zero if success. */ +#define lll_futex_wake_unlock(futexp, nr_wake, nr_wake2, futexp2, private) \ + ({ \ + INTERNAL_SYSCALL_DECL (__err); \ + long int __ret; \ + __ret = INTERNAL_SYSCALL (futex, __err, 6, (futexp), \ + __lll_private_flag (FUTEX_WAKE_OP, private), \ + (nr_wake), (nr_wake2), (futexp2), \ + FUTEX_OP_CLEAR_WAKE_IF_GT_ONE); \ + INTERNAL_SYSCALL_ERROR_P (__ret, __err); \ + }) + +/* Priority Inheritance support. */ +#define lll_futex_wait_requeue_pi(futexp, val, mutex, private) \ + lll_futex_timed_wait_requeue_pi (futexp, val, NULL, 0, mutex, private) + +#define lll_futex_timed_wait_requeue_pi(futexp, val, timespec, clockbit, \ + mutex, private) \ + ({ \ + INTERNAL_SYSCALL_DECL (__err); \ + long int __ret; \ + int __op = FUTEX_WAIT_REQUEUE_PI | clockbit; \ + \ + __ret = INTERNAL_SYSCALL (futex, __err, 5, (futexp), \ + __lll_private_flag (__op, private), \ + (val), (timespec), mutex); \ + INTERNAL_SYSCALL_ERROR_P (__ret, __err); \ + }) + +#define lll_futex_cmp_requeue_pi(futexp, nr_wake, nr_move, mutex, val, priv) \ + ({ \ + INTERNAL_SYSCALL_DECL (__err); \ + long int __ret; \ + \ + __ret = INTERNAL_SYSCALL (futex, __err, 6, (futexp), \ + __lll_private_flag (FUTEX_CMP_REQUEUE_PI, priv),\ + (nr_wake), (nr_move), (mutex), (val)); \ + INTERNAL_SYSCALL_ERROR_P (__ret, __err); \ + }) + + +static inline int __attribute__ ((always_inline)) +__lll_trylock (int *futex) +{ + return atomic_compare_and_exchange_val_acq (futex, 1, 0) != 0; +} +#define lll_trylock(lock) __lll_trylock (&(lock)) + + +static inline int __attribute__ ((always_inline)) +__lll_cond_trylock (int *futex) +{ + return atomic_compare_and_exchange_val_acq (futex, 2, 0) != 0; +} +#define lll_cond_trylock(lock) __lll_cond_trylock (&(lock)) + + +static inline int __attribute__ ((always_inline)) +__lll_robust_trylock (int *futex, int id) +{ + return atomic_compare_and_exchange_val_acq (futex, id, 0) != 0; +} +#define lll_robust_trylock(lock, id) \ + __lll_robust_trylock (&(lock), id) + +extern void __lll_lock_wait_private (int *futex) attribute_hidden; +extern void __lll_lock_wait (int *futex, int private) attribute_hidden; +extern int __lll_robust_lock_wait (int *futex, int private) attribute_hidden; + +static inline void __attribute__ ((always_inline)) +__lll_lock (int *futex, int private) +{ + if (atomic_compare_and_exchange_bool_acq (futex, 1, 0) != 0) + { + if (__builtin_constant_p (private) && private == LLL_PRIVATE) + __lll_lock_wait_private (futex); + else + __lll_lock_wait (futex, private); + } +} +#define lll_lock(futex, private) __lll_lock (&(futex), private) + + +static inline int __attribute__ ((always_inline)) +__lll_robust_lock (int *futex, int id, int private) +{ + int result = 0; + if (atomic_compare_and_exchange_bool_acq (futex, id, 0) != 0) + result = __lll_robust_lock_wait (futex, private); + return result; +} +#define lll_robust_lock(futex, id, private) \ + __lll_robust_lock (&(futex), id, private) + + +static inline void __attribute__ ((always_inline)) +__lll_cond_lock (int *futex, int private) +{ + if (atomic_compare_and_exchange_bool_acq (futex, 2, 0) != 0) + __lll_lock_wait (futex, private); +} +#define lll_cond_lock(futex, private) __lll_cond_lock (&(futex), private) + + +#define lll_robust_cond_lock(futex, id, private) \ + __lll_robust_lock (&(futex), (id) | FUTEX_WAITERS, private) + + +extern int __lll_timedlock_wait (int *futex, const struct timespec *, + int private) attribute_hidden; +extern int __lll_robust_timedlock_wait (int *futex, const struct timespec *, + int private) attribute_hidden; + +static inline int __attribute__ ((always_inline)) +__lll_timedlock (int *futex, const struct timespec *abstime, int private) +{ + int result = 0; + if (atomic_compare_and_exchange_bool_acq (futex, 1, 0) != 0) + result = __lll_timedlock_wait (futex, abstime, private); + return result; +} +#define lll_timedlock(futex, abstime, private) \ + __lll_timedlock (&(futex), abstime, private) + + +static inline int __attribute__ ((always_inline)) +__lll_robust_timedlock (int *futex, const struct timespec *abstime, + int id, int private) +{ + int result = 0; + if (atomic_compare_and_exchange_bool_acq (futex, id, 0) != 0) + result = __lll_robust_timedlock_wait (futex, abstime, private); + return result; +} +#define lll_robust_timedlock(futex, abstime, id, private) \ + __lll_robust_timedlock (&(futex), abstime, id, private) + + +#define __lll_unlock(futex, private) \ + (void) \ + ({ int *__futex = (futex); \ + int __oldval = atomic_exchange_rel (__futex, 0); \ + if (__builtin_expect (__oldval > 1, 0)) \ + lll_futex_wake (__futex, 1, private); \ + }) +#define lll_unlock(futex, private) __lll_unlock(&(futex), private) + + +#define __lll_robust_unlock(futex, private) \ + (void) \ + ({ int *__futex = (futex); \ + int __oldval = atomic_exchange_rel (__futex, 0); \ + if (__builtin_expect (__oldval & FUTEX_WAITERS, 0)) \ + lll_futex_wake (__futex, 1, private); \ + }) +#define lll_robust_unlock(futex, private) \ + __lll_robust_unlock(&(futex), private) + + +#define lll_islocked(futex) \ + (futex != 0) + +/* Initializers for lock. */ +#define LLL_LOCK_INITIALIZER (0) +#define LLL_LOCK_INITIALIZER_LOCKED (1) + + +/* The kernel notifies a process which uses CLONE_CHILD_CLEARTID via futex + wakeup when the clone terminates. The memory location contains the + thread ID while the clone is running and is reset to zero + afterwards. */ +#define lll_wait_tid(tid) \ + do { \ + __typeof (tid) __tid; \ + while ((__tid = (tid)) != 0) \ + lll_futex_wait (&(tid), __tid, LLL_SHARED); \ + } while (0) + +extern int __lll_timedwait_tid (int *, const struct timespec *) + attribute_hidden; + +#define lll_timedwait_tid(tid, abstime) \ + ({ \ + int __res = 0; \ + if ((tid) != 0) \ + __res = __lll_timedwait_tid (&(tid), (abstime)); \ + __res; \ + }) + +#endif /* lowlevellock.h */ diff --git a/sysdeps/unix/sysv/linux/tile/nptl/pt-vfork.S b/sysdeps/unix/sysv/linux/tile/nptl/pt-vfork.S new file mode 100644 index 0000000000..a6ccb1f51f --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/nptl/pt-vfork.S @@ -0,0 +1,2 @@ +#define PT_VFORK 1 /* pid is never zero */ +#include "vfork.S" diff --git a/sysdeps/unix/sysv/linux/tile/nptl/pthread_once.c b/sysdeps/unix/sysv/linux/tile/nptl/pthread_once.c new file mode 100644 index 0000000000..1b38999870 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/nptl/pthread_once.c @@ -0,0 +1,94 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + Based on work contributed by Jakub Jelinek , 2003. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include + + +unsigned long int __fork_generation attribute_hidden; + + +static void +clear_once_control (void *arg) +{ + pthread_once_t *once_control = (pthread_once_t *) arg; + + *once_control = 0; + lll_futex_wake (once_control, INT_MAX, LLL_PRIVATE); +} + + +int +__pthread_once (once_control, init_routine) + pthread_once_t *once_control; + void (*init_routine) (void); +{ + while (1) + { + int oldval, val, newval; + + val = *once_control; + do + { + /* Check if the initialized has already been done. */ + if ((val & 2) != 0) + return 0; + + oldval = val; + newval = (oldval & 3) | __fork_generation | 1; + val = atomic_compare_and_exchange_val_acq (once_control, newval, + oldval); + } + while (__builtin_expect (val != oldval, 0)); + + /* Check if another thread already runs the initializer. */ + if ((oldval & 1) != 0) + { + /* Check whether the initializer execution was interrupted + by a fork. */ + if (((oldval ^ newval) & -4) == 0) + { + /* Same generation, some other thread was faster. Wait. */ + lll_futex_wait (once_control, newval, LLL_PRIVATE); + continue; + } + } + + /* This thread is the first here. Do the initialization. + Register a cleanup handler so that in case the thread gets + interrupted the initialization can be restarted. */ + pthread_cleanup_push (clear_once_control, once_control); + + init_routine (); + + pthread_cleanup_pop (0); + + + /* Add one to *once_control. */ + atomic_increment (once_control); + + /* Wake up all other threads. */ + lll_futex_wake (once_control, INT_MAX, LLL_PRIVATE); + break; + } + + return 0; +} +weak_alias (__pthread_once, pthread_once) +hidden_def (__pthread_once) diff --git a/sysdeps/unix/sysv/linux/tile/nptl/sysdep-cancel.h b/sysdeps/unix/sysv/linux/tile/nptl/sysdep-cancel.h new file mode 100644 index 0000000000..233333844f --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/nptl/sysdep-cancel.h @@ -0,0 +1,154 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#ifndef __ASSEMBLER__ +# include +#endif + +#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt + +/* Allow hacking in some extra code if desired. */ +#ifndef PSEUDO_EXTRA +#define PSEUDO_EXTRA +#endif + +#undef PSEUDO +#define PSEUDO(name, syscall_name, args) \ + ENTRY(__##syscall_name##_nocancel); \ + PSEUDO_EXTRA \ + moveli TREG_SYSCALL_NR_NAME, SYS_ify(syscall_name); \ + swint1; \ + BNEZ r1, 0f; \ + jrp lr; \ + END(__##syscall_name##_nocancel); \ + ENTRY (name) \ + SINGLE_THREAD_P(r11); \ + BEQZ r11, L(pseudo_cancel); \ + PSEUDO_EXTRA \ + moveli TREG_SYSCALL_NR_NAME, SYS_ify(syscall_name); \ + swint1; \ + BNEZ r1, 0f; \ + jrp lr; \ + L(pseudo_cancel): \ + { \ + move r11, sp; \ + ST sp, lr; \ + ADDI_PTR sp, sp, -STKSPACE; \ + }; \ + cfi_offset (lr, 0); \ + cfi_def_cfa_offset (STKSPACE); \ + { \ + ADDI_PTR r12, sp, REGSIZE; \ + ADDI_PTR r13, sp, 2 * REGSIZE; /* set up for PUSHARGS_0 */ \ + }; \ + ST r12, r11; \ + PUSHARGS_##args /* save syscall args */ \ + CENABLE; \ + ADDI_PTR r12, sp, 10 * REGSIZE; \ + { \ + ST r12, r0; /* save mask */ \ + ADDI_PTR r13, sp, 2 * REGSIZE; /* set up for POPARGS_0 */ \ + }; \ + POPARGS_##args /* restore syscall args */ \ + PSEUDO_EXTRA \ + moveli TREG_SYSCALL_NR_NAME, SYS_ify(syscall_name); \ + swint1; \ + ADDI_PTR r12, sp, 12 * REGSIZE; \ + { \ + ST r12, r1; /* save syscall result */ \ + ADDI_PTR r12, sp, 11 * REGSIZE; \ + }; \ + { \ + ST r12, r0; \ + ADDI_PTR r13, sp, 10 * REGSIZE; \ + }; \ + LD r0, r13; /* pass mask as arg1 */ \ + CDISABLE; \ + { \ + ADDI_PTR lr, sp, STKSPACE; \ + ADDI_PTR r0, sp, 11 * REGSIZE; \ + }; \ + { \ + LD r0, r0; \ + ADDI_PTR r1, sp, 12 * REGSIZE; \ + }; \ + LD r1, r1; \ + { \ + LD lr, lr; \ + ADDI_PTR sp, sp, STKSPACE; \ + }; \ + cfi_def_cfa_offset (0); \ + BNEZ r1, 0f + +# define PUSHARGS_0 /* nothing to do */ +# define PUSHARGS_1 PUSHARGS_0 { ADDI_PTR r14, sp, 3 * REGSIZE; ST r13, r0 }; +# define PUSHARGS_2 PUSHARGS_1 { ADDI_PTR r13, sp, 4 * REGSIZE; ST r14, r1 }; +# define PUSHARGS_3 PUSHARGS_2 { ADDI_PTR r14, sp, 5 * REGSIZE; ST r13, r2 }; +# define PUSHARGS_4 PUSHARGS_3 { ADDI_PTR r13, sp, 6 * REGSIZE; ST r14, r3 }; +# define PUSHARGS_5 PUSHARGS_4 { ADDI_PTR r14, sp, 7 * REGSIZE; ST r13, r4 }; +# define PUSHARGS_6 PUSHARGS_5 { ADDI_PTR r13, sp, 8 * REGSIZE; ST r14, r5 }; +# define PUSHARGS_7 PUSHARGS_6 { ADDI_PTR r14, sp, 9 * REGSIZE; ST r13, r6 }; + +# define POPARGS_0 /* nothing to do */ +# define POPARGS_1 POPARGS_0 { ADDI_PTR r14, sp, 3 * REGSIZE; LD r0, r13 }; +# define POPARGS_2 POPARGS_1 { ADDI_PTR r13, sp, 4 * REGSIZE; LD r1, r14 }; +# define POPARGS_3 POPARGS_2 { ADDI_PTR r14, sp, 5 * REGSIZE; LD r2, r13 }; +# define POPARGS_4 POPARGS_3 { ADDI_PTR r13, sp, 6 * REGSIZE; LD r3, r14 }; +# define POPARGS_5 POPARGS_4 { ADDI_PTR r14, sp, 7 * REGSIZE; LD r4, r13 }; +# define POPARGS_6 POPARGS_5 { ADDI_PTR r13, sp, 8 * REGSIZE; LD r5, r14 }; +# define POPARGS_7 POPARGS_6 { ADDI_PTR r14, sp, 9 * REGSIZE; LD r6, r13 }; + +# define STKSPACE (13 * REGSIZE) + +# ifdef IS_IN_libpthread +# define CENABLE jal __pthread_enable_asynccancel +# define CDISABLE jal __pthread_disable_asynccancel +# elif defined IS_IN_librt +# define CENABLE jal __librt_enable_asynccancel +# define CDISABLE jal __librt_disable_asynccancel +# else +# define CENABLE jal __libc_enable_asynccancel +# define CDISABLE jal __libc_disable_asynccancel +# endif + +# ifndef __ASSEMBLER__ +# define SINGLE_THREAD_P \ + __builtin_expect (THREAD_GETMEM (THREAD_SELF, \ + header.multiple_threads) \ + == 0, 1) +# else +# define SINGLE_THREAD_P(reg) \ + ADDLI_PTR reg, tp, MULTIPLE_THREADS_OFFSET; \ + LD reg, reg; \ + CMPEQI reg, reg, 0 +#endif + +#elif !defined __ASSEMBLER__ + +# define SINGLE_THREAD_P 1 +# define NO_CANCELLATION 1 + +#endif + +#ifndef __ASSEMBLER__ +# define RTLD_SINGLE_THREAD_P \ + __builtin_expect (THREAD_GETMEM (THREAD_SELF, \ + header.multiple_threads) == 0, 1) +#endif diff --git a/sysdeps/unix/sysv/linux/tile/nptl/vfork.S b/sysdeps/unix/sysv/linux/tile/nptl/vfork.S new file mode 100644 index 0000000000..014cccf7e2 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/nptl/vfork.S @@ -0,0 +1,80 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#define __ASSEMBLY__ /* for kernel headers */ +#include +#include +#include + +/* Clone the calling process, but without copying the whole address space. + The calling process is suspended until the new process exits or is + replaced by a call to `execve'. Return -1 for errors, 0 to the new process, + and the process ID of the new process to the old process. */ + + .text +ENTRY (__vfork) + { + addli r11, tp, PID_OFFSET /* Point at PID. */ + movei r13, 1 + } + { + LD4U r12, r11 /* Load the saved PID. */ + shli r13, r13, 31 /* Build 0x80000000. */ + } + sub r12, zero, r12 /* Negate it. */ +#ifndef PT_VFORK + CMOVEQZ r12, r12, r13 /* Replace zero pids. */ +#endif + ST4 r11, r12 /* Store the temporary PID. */ + + { + moveli r0, CLONE_VFORK | CLONE_VM | SIGCHLD + move r1, zero + } + { + move r2, zero + move r3, zero + } + moveli TREG_SYSCALL_NR_NAME, __NR_clone + swint1 + + BEQZ r0, 1f /* If we are the parent... */ + { + addli r11, tp, PID_OFFSET /* Point at PID. */ + movei r13, 1 + } + { + LD4U r12, r11 /* Load the saved PID. */ + shli r13, r13, 31 /* Build 0x80000000. */ + } + { + CMPEQ r13, r12, r12 /* Test for that value. */ + sub r12, zero, r12 /* Re-negate it. */ + } +#ifndef PT_VFORK + CMOVNEZ r12, r13, zero /* Replace zero pids. */ +#endif + ST4 r11, r12 /* Restore the PID. */ +1: + BNEZ r1, 0f + jrp lr +PSEUDO_END (__vfork) +libc_hidden_def (__vfork) + +weak_alias (__vfork, vfork) diff --git a/sysdeps/unix/sysv/linux/tile/nptl/waitpid.S b/sysdeps/unix/sysv/linux/tile/nptl/waitpid.S new file mode 100644 index 0000000000..9aa793e12b --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/nptl/waitpid.S @@ -0,0 +1,20 @@ +/* +extern pid_t __waitpid_nocancel (pid_t, int *, int) attribute_hidden; +*/ +#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt + +/* Call __NR_wait4, providing fourth argument (struct rusage *) as NULL. */ +#define PSEUDO_EXTRA move r3, zero; +#include + +PSEUDO (__waitpid, wait4, 3) +ret +PSEUDO_END(__waitpid) + +libc_hidden_def (__waitpid) +weak_alias (__waitpid, waitpid) +libc_hidden_weak (waitpid) +weak_alias (__waitpid, __libc_waitpid) +libc_hidden_weak (__libc_waitpid) + +#endif diff --git a/sysdeps/unix/sysv/linux/tile/profil-counter.h b/sysdeps/unix/sysv/linux/tile/profil-counter.h new file mode 100644 index 0000000000..4ab1666a12 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/profil-counter.h @@ -0,0 +1,26 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include + +static void +profil_counter (int signo, SIGCONTEXT scp) +{ + profil_count ((void *) GET_PC (scp)); +} diff --git a/sysdeps/unix/sysv/linux/tile/set_dataplane.c b/sysdeps/unix/sysv/linux/tile/set_dataplane.c new file mode 100644 index 0000000000..d53ea9fe5a --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/set_dataplane.c @@ -0,0 +1,36 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#ifdef __NR_set_dataplane +#include +#endif + +/* Request dataplane modes from the kernel. */ +int +set_dataplane (int flags) +{ +#ifdef __NR_set_dataplane + return INLINE_SYSCALL (set_dataplane, 1, flags); +#else + __set_errno (ENOSYS); + return -1; +#endif +} diff --git a/sysdeps/unix/sysv/linux/tile/setcontext.S b/sysdeps/unix/sysv/linux/tile/setcontext.S new file mode 100644 index 0000000000..76a797d32c --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/setcontext.S @@ -0,0 +1,204 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include + +#include "ucontext_i.h" + +/* PL to return to via iret in setcontext */ +#define RETURN_PL 0 + +/* int setcontext (const ucontext_t *ucp) */ + + .text +ENTRY (__setcontext) + FEEDBACK_ENTER(__setcontext) + + /* See if this is a true signal context (flags == 0). + If so, restore by invoking rt_sigreturn(). */ +#if UC_FLAGS_OFFSET != 0 +# error "Add offset to r0 prior to load." +#endif + LD_PTR r10, r0 + { + BEQZ r10, .Lsigreturn + addi r10, r10, -1 /* Confirm that it has value "1". */ + } + BNEZ r10, .Lbadcontext + + /* Save lr and r0 briefly on the stack and set the signal mask: + rt_sigprocmask (SIG_SETMASK, &ucp->uc_sigmask, NULL, _NSIG / 8). */ + { + ST sp, lr + ADDI_PTR r11, sp, -(2 * REGSIZE) + move r10, sp + } + ADDI_PTR sp, sp, -(3 * REGSIZE) + cfi_def_cfa_offset (3 * REGSIZE) + cfi_offset (lr, 0) + { + ST r11, r10 + ADDI_PTR r10, sp, (2 * REGSIZE) + } + { + ST r10, r0 + ADDLI_PTR r1, r0, UC_SIGMASK_OFFSET + } + cfi_offset (r0, -REGSIZE) + { + movei r3, _NSIG / 8 + movei r2, 0 + } + { + movei r0, SIG_SETMASK + moveli TREG_SYSCALL_NR_NAME, __NR_rt_sigprocmask + } + swint1 + ADDI_PTR r11, sp, 2 * REGSIZE /* Restore uc_context to r11. */ + { + LD r11, r11 + ADDI_PTR sp, sp, 3 * REGSIZE + } + cfi_def_cfa_offset (0) + LD lr, sp + { + ADDI_PTR r10, r11, UC_REG(0) + BNEZ r1, .Lsyscall_error + } + + /* Restore the argument registers; note they will be random + unless makecontext() has been called. */ + { LD r0, r10; ADDI_PTR r10, r10, REGSIZE } + { LD r1, r10; ADDI_PTR r10, r10, REGSIZE } + { LD r2, r10; ADDI_PTR r10, r10, REGSIZE } + { LD r3, r10; ADDI_PTR r10, r10, REGSIZE } + { LD r4, r10; ADDI_PTR r10, r10, REGSIZE } + { LD r5, r10; ADDI_PTR r10, r10, REGSIZE } + { LD r6, r10; ADDI_PTR r10, r10, REGSIZE } + { LD r7, r10; ADDI_PTR r10, r10, REGSIZE } + { LD r8, r10; ADDI_PTR r10, r10, REGSIZE } + { LD r9, r10; ADDLI_PTR r10, r10, UC_REG(30) - UC_REG(9) } + + /* Restore the callee-saved GPRs. */ + { LD r30, r10; ADDI_PTR r10, r10, REGSIZE } + { LD r31, r10; ADDI_PTR r10, r10, REGSIZE } + { LD r32, r10; ADDI_PTR r10, r10, REGSIZE } + { LD r33, r10; ADDI_PTR r10, r10, REGSIZE } + { LD r34, r10; ADDI_PTR r10, r10, REGSIZE } + { LD r35, r10; ADDI_PTR r10, r10, REGSIZE } + { LD r36, r10; ADDI_PTR r10, r10, REGSIZE } + { LD r37, r10; ADDI_PTR r10, r10, REGSIZE } + { LD r38, r10; ADDI_PTR r10, r10, REGSIZE } + { LD r39, r10; ADDI_PTR r10, r10, REGSIZE } + { LD r40, r10; ADDI_PTR r10, r10, REGSIZE } + { LD r41, r10; ADDI_PTR r10, r10, REGSIZE } + { LD r42, r10; ADDI_PTR r10, r10, REGSIZE } + { LD r43, r10; ADDI_PTR r10, r10, REGSIZE } + { LD r44, r10; ADDI_PTR r10, r10, REGSIZE } + { LD r45, r10; ADDI_PTR r10, r10, REGSIZE } + { LD r46, r10; ADDI_PTR r10, r10, REGSIZE } + { LD r47, r10; ADDI_PTR r10, r10, REGSIZE } + { LD r48, r10; ADDI_PTR r10, r10, REGSIZE } + { LD r49, r10; ADDI_PTR r10, r10, REGSIZE } + { LD r50, r10; ADDI_PTR r10, r10, REGSIZE } + { LD r51, r10; ADDI_PTR r10, r10, REGSIZE } + { LD r52, r10; ADDI_PTR r10, r10, REGSIZE * 2 } + /* Skip tp since it must not change for a given thread. */ + { LD sp, r10; ADDI_PTR r10, r10, REGSIZE } + { LD lr, r10; ADDI_PTR r10, r10, REGSIZE } + { LD r11, r10; ADDI_PTR r10, r10, REGSIZE } + + /* Construct an iret context; we set ICS so we can validly load + EX_CONTEXT for iret without being interrupted halfway through. */ + { + LD r12, r10 + movei r13, 1 + } + { + mtspr INTERRUPT_CRITICAL_SECTION, r13 + shli r12, r12, SPR_EX_CONTEXT_0_1__ICS_SHIFT + } + { + mtspr EX_CONTEXT_0_0, r11 + ori r12, r12, RETURN_PL + } + mtspr EX_CONTEXT_0_1, r12 + iret + jrp lr /* keep the backtracer happy */ + +.Lsigreturn: + /* This is a context obtained from a signal handler. + Perform a full restore by pushing the context + passed onto a simulated signal frame on the stack + and call the signal return syscall as if a signal + handler exited normally. */ + { + ADDLI_PTR sp, sp, -(C_ABI_SAVE_AREA_SIZE + SI_MAX_SIZE + UC_SIZE) + ADDLI_PTR r1, sp, -UC_SIZE + } + cfi_def_cfa_offset (C_ABI_SAVE_AREA_SIZE + SI_MAX_SIZE + UC_SIZE) + moveli r2, UC_SIZE / REGSIZE +0: { + LD r10, r0 + ADDI_PTR r0, r0, REGSIZE + } + { + ST r1, r10 + ADDI_PTR r1, r1, REGSIZE + addi r2, r2, -1 + } + BNEZ r2, 0b + moveli TREG_SYSCALL_NR_NAME, __NR_rt_sigreturn + swint1 + + /* Restore the stack and fall through to the error + path. Successful rt_sigreturn never returns to + its calling place. */ + ADDLI_PTR sp, sp, (C_ABI_SAVE_AREA_SIZE + SI_MAX_SIZE + UC_SIZE) + cfi_def_cfa_offset (0) + +.Lsyscall_error: + j SYSCALL_ERROR_NAME + +.Lbadcontext: + { + movei r1, EINVAL + j SYSCALL_ERROR_NAME + } + +END (__setcontext) + +.hidden __setcontext +weak_alias (__setcontext, setcontext) + +ENTRY (__startcontext) + FEEDBACK_ENTER(__startcontext) + BEQZ r30, 1f + { + move r0, r30 + jal __setcontext + } +1: { + movei r0, 0 + j HIDDEN_JUMPTARGET(exit) + } +END (__startcontext) +.hidden __startcontext diff --git a/sysdeps/unix/sysv/linux/tile/sigcontextinfo.h b/sysdeps/unix/sysv/linux/tile/sigcontextinfo.h new file mode 100644 index 0000000000..3f2680d209 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/sigcontextinfo.h @@ -0,0 +1,27 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include + +#define SIGCONTEXT siginfo_t *_si, struct ucontext * +#define SIGCONTEXT_EXTRA_ARGS _si, +#define GET_PC(ctx) ((void *) (long) ctx->uc_mcontext.pc) +#define GET_FRAME(ctx) ((void *) (long) ctx->uc_mcontext.regs[TREG_FP]) +#define GET_STACK(ctx) ((void *) (long) ctx->uc_mcontext.sp) +#define CALL_SIGHANDLER(handler, signo, ctx) \ + (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx)) diff --git a/sysdeps/unix/sysv/linux/tile/swapcontext.S b/sysdeps/unix/sysv/linux/tile/swapcontext.S new file mode 100644 index 0000000000..ef24e39898 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/swapcontext.S @@ -0,0 +1,89 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include + +#include "ucontext_i.h" + +/* int swapcontext (ucontext_t *oucp, const ucontext_t *ucp) */ + + .text +ENTRY (__swapcontext) + FEEDBACK_ENTER(__swapcontext) + /* Set up a frame and save r0 and r1. */ + { + ST sp, lr + ADDI_PTR r11, sp, -(3 * REGSIZE) + move r10, sp + } + ADDI_PTR sp, sp, -(4 * REGSIZE) + cfi_def_cfa_offset (4 * REGSIZE) + cfi_offset (lr, 0) + { + ST r11, r10 + ADDI_PTR r10, sp, (2 * REGSIZE) + } + { + ST r10, r0 + ADDI_PTR r10, sp, (3 * REGSIZE) + } + ST r10, r1 + + /* Save the current context. */ + jal __getcontext + + /* Tear down the frame and restore r0, r1, and lr. */ + { + BNEZ r0, .Lerror + ADDI_PTR r1, sp, 3 * REGSIZE + } + { + LD r1, r1 + ADDI_PTR r0, sp, 2 * REGSIZE + } + { + LD r0, r0 + ADDI_PTR sp, sp, 4 * REGSIZE + } + cfi_def_cfa_offset (0) + { + LD lr, sp + ADDLI_PTR r10, r0, UC_REG(54) + } + + /* Update the stored sp and lr. */ + { + ST r10, sp + ADDLI_PTR r10, r0, UC_REG(55) + } + ST r10, lr + + /* Tail-call setcontext to finish up. */ + { + move r0, r1 + j __setcontext + } + +.Lerror: + ADDI_PTR sp, sp, 4 * REGSIZE + cfi_def_cfa_offset (0) + LD lr, sp + jrp lr +END (__swapcontext) + +weak_alias (__swapcontext, swapcontext) diff --git a/sysdeps/unix/sysv/linux/tile/sys/cachectl.h b/sysdeps/unix/sysv/linux/tile/sys/cachectl.h new file mode 100644 index 0000000000..540f95e8e1 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/sys/cachectl.h @@ -0,0 +1,36 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _SYS_CACHECTL_H +#define _SYS_CACHECTL_H 1 + +#include + +/* Get the kernel definition for the op bits. */ +#include + +__BEGIN_DECLS + +#ifdef __USE_MISC +extern int cacheflush (void *__addr, const int __nbytes, const int __op) __THROW; +#endif +extern int _flush_cache (char *__addr, const int __nbytes, const int __op) __THROW; + +__END_DECLS + +#endif /* sys/cachectl.h */ diff --git a/sysdeps/unix/sysv/linux/tile/sys/dataplane.h b/sysdeps/unix/sysv/linux/tile/sys/dataplane.h new file mode 100644 index 0000000000..d333ec0fd3 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/sys/dataplane.h @@ -0,0 +1,33 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _SYS_DATAPLANE_H +#define _SYS_DATAPLANE_H 1 + +#include + +/* Get the kernel definition for the flag bits. */ +#include + +__BEGIN_DECLS + +extern int set_dataplane (int flags); + +__END_DECLS + +#endif /* sys/dataplane.h */ diff --git a/sysdeps/unix/sysv/linux/tile/sys/procfs.h b/sysdeps/unix/sysv/linux/tile/sys/procfs.h new file mode 100644 index 0000000000..440ce45ffe --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/sys/procfs.h @@ -0,0 +1,128 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _SYS_PROCFS_H +#define _SYS_PROCFS_H 1 + +/* This is somewhat modelled after the file of the same name on SVR4 + systems. It provides a definition of the core file format for ELF + used on Linux. It doesn't have anything to do with the /proc file + system, even though Linux has one. + + Anyway, the whole purpose of this file is for GDB and GDB only. + Don't read too much into it. Don't use it for anything other than + GDB unless you know what you are doing. */ + +#include +#include +#include + +#define __need_int_reg_t +#include + +__BEGIN_DECLS + +/* Type for a general-purpose register. */ +typedef __uint_reg_t elf_greg_t; + +/* And the whole bunch of them. We could have used `struct pt_regs' + from directly in the typedef, but tradition says that + the register set is an array, which does have some peculiar + semantics, so leave it that way. */ +#define ELF_NGREG 64 +#define ELF_NFPREG 0 +typedef elf_greg_t elf_gregset_t[ELF_NGREG]; +typedef elf_greg_t elf_fpregset_t[ELF_NFPREG]; + +/* Signal info. */ +struct elf_siginfo + { + int si_signo; /* Signal number. */ + int si_code; /* Extra code. */ + int si_errno; /* Errno. */ + }; + + +/* Definitions to generate Intel SVR4-like core files. These mostly + have the same names as the SVR4 types with "elf_" tacked on the + front to prevent clashes with Linux definitions, and the typedef + forms have been avoided. This is mostly like the SVR4 structure, + but more Linuxy, with things that Linux does not support and which + GDB doesn't really use excluded. */ + +struct elf_prstatus + { + struct elf_siginfo pr_info; /* Info associated with signal. */ + short int pr_cursig; /* Current signal. */ + unsigned long int pr_sigpend; /* Set of pending signals. */ + unsigned long int pr_sighold; /* Set of held signals. */ + __pid_t pr_pid; + __pid_t pr_ppid; + __pid_t pr_pgrp; + __pid_t pr_sid; + struct timeval pr_utime; /* User time. */ + struct timeval pr_stime; /* System time. */ + struct timeval pr_cutime; /* Cumulative user time. */ + struct timeval pr_cstime; /* Cumulative system time. */ + elf_gregset_t pr_reg; /* GP registers. */ + int pr_fpvalid; /* True if math copro being used. */ + }; + + +#define ELF_PRARGSZ (80) /* Number of chars for args. */ + +struct elf_prpsinfo + { + char pr_state; /* Numeric process state. */ + char pr_sname; /* Char for pr_state. */ + char pr_zomb; /* Zombie. */ + char pr_nice; /* Nice val. */ + unsigned long int pr_flag; /* Flags. */ + unsigned int pr_uid; + unsigned int pr_gid; + int pr_pid, pr_ppid, pr_pgrp, pr_sid; + /* Lots missing */ + char pr_fname[16]; /* Filename of executable. */ + char pr_psargs[ELF_PRARGSZ]; /* Initial part of arg list. */ + }; + + +/* The rest of this file provides the types for emulation of the + Solaris interfaces that should be implemented by + users of libthread_db. */ + +/* Addresses. */ +typedef void *psaddr_t; + +/* Register sets. Linux has different names. */ +typedef elf_gregset_t prgregset_t; + +/* Provide dummy declaration here; we don't have FP registers. */ +typedef elf_fpregset_t prfpregset_t; + +/* We don't have any differences between processes and threads, + therefore have only one PID type. */ +typedef __pid_t lwpid_t; + +/* Process status and info. In the end we do provide typedefs for them. */ +typedef struct elf_prstatus prstatus_t; +typedef struct elf_prpsinfo prpsinfo_t; + +__END_DECLS + +#endif /* sys/procfs.h */ diff --git a/sysdeps/unix/sysv/linux/tile/sys/ptrace.h b/sysdeps/unix/sysv/linux/tile/sys/ptrace.h new file mode 100644 index 0000000000..be31308dd3 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/sys/ptrace.h @@ -0,0 +1,183 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _SYS_PTRACE_H +#define _SYS_PTRACE_H 1 + +#include +#include + +__BEGIN_DECLS + +/* Type of the REQUEST argument to `ptrace.' */ +enum __ptrace_request +{ + /* Indicate that the process making this request should be traced. + All signals received by this process can be intercepted by its + parent, and its parent can use the other `ptrace' requests. */ + PTRACE_TRACEME = 0, +#define PT_TRACE_ME PTRACE_TRACEME + + /* Return the word in the process's text space at address ADDR. */ + PTRACE_PEEKTEXT = 1, +#define PT_READ_I PTRACE_PEEKTEXT + + /* Return the word in the process's data space at address ADDR. */ + PTRACE_PEEKDATA = 2, +#define PT_READ_D PTRACE_PEEKDATA + + /* Return the word in the process's user area at offset ADDR. */ + PTRACE_PEEKUSER = 3, +#define PT_READ_U PTRACE_PEEKUSER + + /* Write the word DATA into the process's text space at address ADDR. */ + PTRACE_POKETEXT = 4, +#define PT_WRITE_I PTRACE_POKETEXT + + /* Write the word DATA into the process's data space at address ADDR. */ + PTRACE_POKEDATA = 5, +#define PT_WRITE_D PTRACE_POKEDATA + + /* Write the word DATA into the process's user area at offset ADDR. */ + PTRACE_POKEUSER = 6, +#define PT_WRITE_U PTRACE_POKEUSER + + /* Continue the process. */ + PTRACE_CONT = 7, +#define PT_CONTINUE PTRACE_CONT + + /* Kill the process. */ + PTRACE_KILL = 8, +#define PT_KILL PTRACE_KILL + + /* Single step the process. */ + PTRACE_SINGLESTEP = 9, +#define PT_STEP PTRACE_SINGLESTEP + + /* Get all general purpose registers used by a processes. */ + PTRACE_GETREGS = 12, +#define PT_GETREGS PTRACE_GETREGS + + /* Set all general purpose registers used by a processes. */ + PTRACE_SETREGS = 13, +#define PT_SETREGS PTRACE_SETREGS + + /* Attach to a process that is already running. */ + PTRACE_ATTACH = 16, +#define PT_ATTACH PTRACE_ATTACH + + /* Detach from a process attached to with PTRACE_ATTACH. */ + PTRACE_DETACH = 17, +#define PT_DETACH PTRACE_DETACH + + /* Continue and stop at the next (return from) syscall. */ + PTRACE_SYSCALL = 24, +#define PT_SYSCALL PTRACE_SYSCALL + + /* Set ptrace filter options. */ + PTRACE_SETOPTIONS = 0x4200, +#define PT_SETOPTIONS PTRACE_SETOPTIONS + + /* Get last ptrace message. */ + PTRACE_GETEVENTMSG = 0x4201, +#define PT_GETEVENTMSG PTRACE_GETEVENTMSG + + /* Get siginfo for process. */ + PTRACE_GETSIGINFO = 0x4202, +#define PT_GETSIGINFO PTRACE_GETSIGINFO + + /* Set new siginfo for process. */ + PTRACE_SETSIGINFO = 0x4203, +#define PT_SETSIGINFO PTRACE_SETSIGINFO + + /* Set register content. */ + PTRACE_SETREGSET = 0x4205, +#define PTRACE_SETREGSET PTRACE_SETREGSET + + /* Like PTRACE_ATTACH, but do not force tracee to trap and do not affect + signal or group stop state. */ + PTRACE_SEIZE = 0x4206, +#define PTRACE_SEIZE PTRACE_SEIZE + + /* Trap seized tracee. */ + PTRACE_INTERRUPT = 0x4207, +#define PTRACE_INTERRUPT PTRACE_INTERRUPT + + /* Wait for next group event. */ + PTRACE_LISTEN = 0x4208, +#define PTRACE_LISTEN PTRACE_LISTEN + + PTRACE_PEEKSIGINFO = 0x4209 +#define PTRACE_PEEKSIGINFO PTRACE_PEEKSIGINFO +}; + + +/* Options set using PTRACE_SETOPTIONS. */ +enum __ptrace_setoptions +{ + PTRACE_O_TRACESYSGOOD = 0x00000001, + PTRACE_O_TRACEFORK = 0x00000002, + PTRACE_O_TRACEVFORK = 0x00000004, + PTRACE_O_TRACECLONE = 0x00000008, + PTRACE_O_TRACEEXEC = 0x00000010, + PTRACE_O_TRACEVFORKDONE = 0x00000020, + PTRACE_O_TRACEEXIT = 0x00000040, + PTRACE_O_TRACESECCOMP = 0x00000080, + PTRACE_O_MASK = 0x000000ff +}; + +/* Wait extended result codes for the above trace options. */ +enum __ptrace_eventcodes +{ + PTRACE_EVENT_FORK = 1, + PTRACE_EVENT_VFORK = 2, + PTRACE_EVENT_CLONE = 3, + PTRACE_EVENT_EXEC = 4, + PTRACE_EVENT_VFORK_DONE = 5, + PTRACE_EVENT_EXIT = 6, + PTRACE_EVENT_SECCOMP = 7 +}; + +/* Arguments for PTRACE_PEEKSIGINFO. */ +struct __ptrace_peeksiginfo_args +{ + __uint64_t off; /* From which siginfo to start. */ + __uint32_t flags; /* Flags for peeksiginfo. */ + __int32_t nr; /* How many siginfos to take. */ +}; + +enum __ptrace_peeksiginfo_flags +{ + /* Read signals from a shared (process wide) queue. */ + PTRACE_PEEKSIGINFO_SHARED = (1 << 0) +}; + +/* Perform process tracing functions. REQUEST is one of the values + above, and determines the action to be taken. + For all requests except PTRACE_TRACEME, PID specifies the process to be + traced. + + PID and the other arguments described above for the various requests should + appear (those that are used for the particular request) as: + pid_t PID, void *ADDR, int DATA, void *ADDR2 + after REQUEST. */ +extern long int ptrace (enum __ptrace_request __request, ...) __THROW; + +__END_DECLS + +#endif /* _SYS_PTRACE_H */ diff --git a/sysdeps/unix/sysv/linux/tile/sys/reg.h b/sysdeps/unix/sysv/linux/tile/sys/reg.h new file mode 100644 index 0000000000..1ab17ce82a --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/sys/reg.h @@ -0,0 +1,2 @@ +/* The traditional purpose of "sys/reg.h" is satisfied by "arch/abi.h". */ +#include diff --git a/sysdeps/unix/sysv/linux/tile/sys/ucontext.h b/sysdeps/unix/sysv/linux/tile/sys/ucontext.h new file mode 100644 index 0000000000..ac540f4775 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/sys/ucontext.h @@ -0,0 +1,70 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _SYS_UCONTEXT_H +#define _SYS_UCONTEXT_H 1 + +#include +#include + +/* We need the signal context definitions even if they are not used + included in . */ +#include + +/* Get register type and register names. */ +#include + +/* Type for general register. */ +typedef uint_reg_t greg_t; + +/* Number of general registers. Must agree with . */ +#define NGREG 64 + +/* Container for all general registers. */ +typedef greg_t gregset_t[NGREG]; + +#ifdef __USE_GNU +/* Names for interesting registers in the `gregset_t' array. */ +enum +{ + /* ... r0 through r51 are just 0 through 51 ... */ + REG_FP = TREG_FP, +# define REG_FP REG_FP + REG_TP = TREG_TP, +# define REG_TP REG_TP + REG_SP = TREG_SP, +# define REG_SP REG_SP + REG_LR = TREG_LR, +# define REG_LR REG_LR +}; +#endif + +/* A machine context is exactly a sigcontext. */ +typedef struct sigcontext mcontext_t; + +/* Userlevel context. */ +typedef struct ucontext + { + unsigned long int uc_flags; + struct ucontext *uc_link; + stack_t uc_stack; + mcontext_t uc_mcontext; + __sigset_t uc_sigmask; + } ucontext_t; + +#endif /* sys/ucontext.h */ diff --git a/sysdeps/unix/sysv/linux/tile/sys/user.h b/sysdeps/unix/sysv/linux/tile/sys/user.h new file mode 100644 index 0000000000..c871f1a03d --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/sys/user.h @@ -0,0 +1 @@ +/* This file is not needed, but in practice gdb might try to include it. */ diff --git a/sysdeps/unix/sysv/linux/tile/syscall.S b/sysdeps/unix/sysv/linux/tile/syscall.S new file mode 100644 index 0000000000..11463f3808 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/syscall.S @@ -0,0 +1,32 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include + + .text +ENTRY (syscall) + FEEDBACK_ENTER(syscall) + { move TREG_SYSCALL_NR_NAME, r0; move r0, r1 } + { move r1, r2; move r2, r3 } + { move r3, r4; move r4, r5 } + { move r5, r6; move r6, r7 } + swint1 + BNEZ r1, 0f + jrp lr +PSEUDO_END (syscall) diff --git a/sysdeps/unix/sysv/linux/tile/sysdep.c b/sysdeps/unix/sysv/linux/tile/sysdep.c new file mode 100644 index 0000000000..ffd1eef54f --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/sysdep.c @@ -0,0 +1,33 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include + +int __syscall_error (int dummy, int err); +hidden_proto (__syscall_error) + +/* This routine is jumped to by all the syscall handlers, to stash + an error number into errno. */ +int +__syscall_error (int dummy, int err) +{ + __set_errno (err); + return -1; +} +hidden_def (__syscall_error) diff --git a/sysdeps/unix/sysv/linux/tile/sysdep.h b/sysdeps/unix/sysv/linux/tile/sysdep.h new file mode 100644 index 0000000000..f2214f6cff --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/sysdep.h @@ -0,0 +1,223 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include + +#undef SYS_ify +#define SYS_ify(syscall_name) __NR_##syscall_name + + +#ifdef __ASSEMBLER__ + +/* The actual implementation of doing a syscall. */ +#define DO_CALL(syscall_name, args) \ + moveli TREG_SYSCALL_NR_NAME, SYS_ify(syscall_name); \ + swint1 + +/* TILE Linux returns the result in r0 (or a negative errno). + The kernel "owns" the code to decide if a given value is an error, + and puts errno in r1 if so, or otherwise zero. */ +#define PSEUDO(name, syscall_name, args) \ + ENTRY (name); \ + DO_CALL(syscall_name, args); \ + BNEZ r1, 0f + +#define ret jrp lr + +#ifndef PIC +/* For static code, on error jump to __syscall_error directly. */ +# define SYSCALL_ERROR_NAME __syscall_error +#elif !defined NOT_IN_libc || defined IS_IN_libpthread +/* Use the internal name for libc/libpthread shared objects. */ +# define SYSCALL_ERROR_NAME __GI___syscall_error +#else +/* Otherwise, on error do a full PLT jump. */ +# define SYSCALL_ERROR_NAME plt(__syscall_error) +#endif + +#define PSEUDO_END(name) \ +0: \ + j SYSCALL_ERROR_NAME; \ + END (name) + +#define PSEUDO_NOERRNO(name, syscall_name, args) \ + ENTRY (name); \ + DO_CALL(syscall_name, args) + +#define ret_NOERRNO jrp lr + +#define PSEUDO_END_NOERRNO(name) \ + END (name) + +/* Convenience wrappers. */ +#define SYSCALL__(name, args) PSEUDO (__##name, name, args) +#define SYSCALL(name, args) PSEUDO (name, name, args) + +#else /* not __ASSEMBLER__ */ + +#include + +/* Define a macro which expands inline into the wrapper code for a system + call. */ +# undef INLINE_SYSCALL +# define INLINE_SYSCALL(name, nr, args...) \ + ({ \ + INTERNAL_SYSCALL_DECL (err); \ + unsigned long val = INTERNAL_SYSCALL (name, err, nr, args); \ + if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (val, err), 0)) \ + { \ + __set_errno (INTERNAL_SYSCALL_ERRNO (val, err)); \ + val = -1; \ + } \ + (long) val; }) + +#undef INTERNAL_SYSCALL +#define INTERNAL_SYSCALL(name, err, nr, args...) \ + internal_syscall##nr (SYS_ify (name), err, args) + +#undef INTERNAL_SYSCALL_NCS +#define INTERNAL_SYSCALL_NCS(number, err, nr, args...) \ + internal_syscall##nr (number, err, args) + +#undef INTERNAL_SYSCALL_DECL +#define INTERNAL_SYSCALL_DECL(err) int err + +#undef INTERNAL_SYSCALL_ERROR_P +#define INTERNAL_SYSCALL_ERROR_P(val, err) ({ (void) (val); (err) != 0; }) + +#undef INTERNAL_SYSCALL_ERRNO +#define INTERNAL_SYSCALL_ERRNO(val, err) ({ (void) (val); (err); }) + +#define internal_syscall0(num, err, dummy...) \ + ({ \ + long _sys_result, __SYSCALL_CLOBBER_DECLS; \ + __asm__ __volatile__ ( \ + "swint1" \ + : "=R00" (_sys_result), "=R01" (err), __SYSCALL_CLOBBER_OUTPUTS \ + : "R10" (num) \ + : __SYSCALL_CLOBBERS); \ + _sys_result; \ + }) + +#define internal_syscall1(num, err, arg0) \ + ({ \ + long _sys_result, __SYSCALL_CLOBBER_DECLS; \ + __asm__ __volatile__ ( \ + "swint1" \ + : "=R00" (_sys_result), "=R01" (err), __SYSCALL_CLOBBER_OUTPUTS \ + : "R10" (num), "R00" (arg0) \ + : __SYSCALL_CLOBBERS); \ + _sys_result; \ + }) + +#define internal_syscall2(num, err, arg0, arg1) \ + ({ \ + long _sys_result, __SYSCALL_CLOBBER_DECLS; \ + __asm__ __volatile__ ( \ + "swint1" \ + : "=R00" (_sys_result), "=R01" (err), __SYSCALL_CLOBBER_OUTPUTS \ + : "R10" (num), "R00" (arg0), "R01" (arg1) \ + : __SYSCALL_CLOBBERS); \ + _sys_result; \ + }) + +#define internal_syscall3(num, err, arg0, arg1, arg2) \ + ({ \ + long _sys_result, __SYSCALL_CLOBBER_DECLS; \ + __asm__ __volatile__ ( \ + "swint1" \ + : "=R00" (_sys_result), "=R01" (err), __SYSCALL_CLOBBER_OUTPUTS \ + : "R10" (num), "R00" (arg0), "R01" (arg1), "R02" (arg2) \ + : __SYSCALL_CLOBBERS); \ + _sys_result; \ + }) + +#define internal_syscall4(num, err, arg0, arg1, arg2, arg3) \ + ({ \ + long _sys_result, __SYSCALL_CLOBBER_DECLS; \ + __asm__ __volatile__ ( \ + "swint1" \ + : "=R00" (_sys_result), "=R01" (err), __SYSCALL_CLOBBER_OUTPUTS \ + : "R10" (num), "R00" (arg0), "R01" (arg1), "R02" (arg2), \ + "R03" (arg3) \ + : __SYSCALL_CLOBBERS); \ + _sys_result; \ + }) + +#define internal_syscall5(num, err, arg0, arg1, arg2, arg3, arg4) \ + ({ \ + long _sys_result, __SYSCALL_CLOBBER_DECLS; \ + __asm__ __volatile__ ( \ + "swint1" \ + : "=R00" (_sys_result), "=R01" (err), __SYSCALL_CLOBBER_OUTPUTS \ + : "R10" (num), "R00" (arg0), "R01" (arg1), "R02" (arg2), \ + "R03" (arg3), "R04" (arg4) \ + : __SYSCALL_CLOBBERS); \ + _sys_result; \ + }) + +#define internal_syscall6(num, err, arg0, arg1, arg2, arg3, arg4, arg5) \ + ({ \ + long _sys_result, __SYSCALL_CLOBBER_DECLS; \ + __asm__ __volatile__ ( \ + "swint1" \ + : "=R00" (_sys_result), "=R01" (err), __SYSCALL_CLOBBER_OUTPUTS \ + : "R10" (num), "R00" (arg0), "R01" (arg1), "R02" (arg2), \ + "R03" (arg3), "R04" (arg4), "R05" (arg5) \ + : __SYSCALL_CLOBBERS); \ + _sys_result; \ + }) + +#undef __SYSCALL_CLOBBERS +#define __SYSCALL_CLOBBERS \ + "r6", "r7", \ + "r8", "r9", "r11", "r12", "r13", "r14", "r15", \ + "r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23", \ + "r24", "r25", "r26", "r27", "r28", "r29", "memory" + +/* gcc doesn't seem to allow an input operand to be clobbered, so we + fake it with dummy outputs. */ +#define __SYSCALL_CLOBBER_DECLS \ + _clobber_r2, _clobber_r3, _clobber_r4, _clobber_r5, _clobber_r10 + +#define __SYSCALL_CLOBBER_OUTPUTS \ + "=R02" (_clobber_r2), "=R03" (_clobber_r3), "=R04" (_clobber_r4), \ + "=R05" (_clobber_r5), "=R10" (_clobber_r10) + +#endif /* not __ASSEMBLER__ */ + +/* Pointer mangling support. */ +#if defined NOT_IN_libc && defined IS_IN_rtld +/* We cannot use the thread descriptor because in ld.so we use setjmp + earlier than the descriptor is initialized. */ +#else +# ifdef __ASSEMBLER__ +# define PTR_MANGLE(reg, tmpreg) \ + ADDLI_PTR tmpreg, pt, POINTER_GUARD; \ + LD tmpreg, tmpreg; \ + xor reg, tmpreg, reg +# define PTR_DEMANGLE(reg, tmpreg) PTR_MANGLE (reg, tmpreg) +# else +# define PTR_MANGLE(var) \ + (var) = (__typeof (var)) ((uintptr_t) (var) ^ THREAD_GET_POINTER_GUARD ()) +# define PTR_DEMANGLE(var) PTR_MANGLE (var) +# endif +#endif diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/Makefile b/sysdeps/unix/sysv/linux/tile/tilegx/Makefile new file mode 100644 index 0000000000..4f101f334a --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/Makefile @@ -0,0 +1,6 @@ +# Provide biarch definitions. +abi-variants := 64 32 +abi-64-options := -D__LP64__ +abi-64-condition := __WORDSIZE == 64 +abi-32-options := -U__LP64__ +abi-32-condition := __WORDSIZE == 32 diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/configure b/sysdeps/unix/sysv/linux/tile/tilegx/configure new file mode 100644 index 0000000000..0a6a63ff99 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/configure @@ -0,0 +1,4 @@ +# This file is generated from configure.ac by Autoconf. DO NOT EDIT! + # Local configure fragment for sysdeps/unix/sysv/linux/tile/tilegx + +ldd_rewrite_script=$dir/ldd-rewrite.sed diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/configure.ac b/sysdeps/unix/sysv/linux/tile/tilegx/configure.ac new file mode 100644 index 0000000000..87d86bd4c0 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/configure.ac @@ -0,0 +1,4 @@ +GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. +# Local configure fragment for sysdeps/unix/sysv/linux/tile/tilegx + +ldd_rewrite_script=$dir/ldd-rewrite.sed diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/ioctl.S b/sysdeps/unix/sysv/linux/tile/tilegx/ioctl.S new file mode 100644 index 0000000000..c12129958c --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/ioctl.S @@ -0,0 +1,41 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + + +/* TILE-Gx specifies that "unsigned int" is sign extended in the high + 32 bits. But since the userspace API claims to be "unsigned long", + calls into __ioctl() will not be sign extended, but rather pass all + 64 bits of the argument. Therefore, when we pass the "request" + value to the kernel, we must explicitly sign-extend it to match the + kernel's internal use of "unsigned int" as the second argument, + which we do by casting to "unsigned int". */ + +#include + + .text +ENTRY (__ioctl) + FEEDBACK_ENTER(__ioctl) + { + addxi r1, r1, 0 + moveli TREG_SYSCALL_NR_NAME, __NR_ioctl + } + swint1 + BNEZ r1, 0f + jrp lr +PSEUDO_END (__ioctl) +weak_alias (__ioctl, ioctl) diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/ldconfig.h b/sysdeps/unix/sysv/linux/tile/tilegx/ldconfig.h new file mode 100644 index 0000000000..c5eaeb65ab --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/ldconfig.h @@ -0,0 +1,26 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include + +#define SYSDEP_KNOWN_INTERPRETER_NAMES \ + { "/lib/ld.so.1", FLAG_ELF_LIBC6 }, \ + { "/lib32/ld.so.1", FLAG_ELF_LIBC6 }, +#define SYSDEP_KNOWN_LIBRARY_NAMES \ + { "libc.so.6", FLAG_ELF_LIBC6 }, \ + { "libm.so.6", FLAG_ELF_LIBC6 }, diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/ldd-rewrite.sed b/sysdeps/unix/sysv/linux/tile/tilegx/ldd-rewrite.sed new file mode 100644 index 0000000000..8b0bb691cc --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/ldd-rewrite.sed @@ -0,0 +1 @@ +s_^\(RTLDLIST=\)\(.*lib\)\(\|32\)\(/[^/]*\.so\.[0-9.]*\)[ ]*$_\1"\2\4 \232\4"_ diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/register-dump.h b/sysdeps/unix/sysv/linux/tile/tilegx/register-dump.h new file mode 100644 index 0000000000..2c629c5dc3 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/register-dump.h @@ -0,0 +1,123 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include <_itoa.h> + +/* We will print the register dump in this format: + + R0: XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX + R4: XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX + R8: XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX + R12: XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX + R16: XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX + R20: XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX + R24: XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX + R28: XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX + R32: XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX + R36: XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX + R40: XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX + R44: XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX + R48: XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX + R52: XXXXXXXXXXXXXXXX TP: XXXXXXXXXXXXXXXX + SP: XXXXXXXXXXXXXXXX LR: XXXXXXXXXXXXXXXX + + PC: XXXXXXXXXXXXXXXX ICS: X FAULTNUM: XX + + */ + +static void +hexvalue (unsigned long int value, char *buf, size_t len) +{ + char *cp = _itoa_word (value, buf + len, 16, 0); + while (cp > buf) + *--cp = '0'; +} + +static void +register_dump (int fd, mcontext_t *ctx) +{ + char regs[59][16]; + struct iovec iov[132]; + size_t nr = 0; + unsigned int i; + +#define ADD_STRING(str) \ + iov[nr].iov_base = (char *) str; \ + iov[nr].iov_len = strlen (str); \ + ++nr +#define ADD_MEM(str, len) \ + iov[nr].iov_base = str; \ + iov[nr].iov_len = len; \ + ++nr + + /* Generate strings of register contents. */ + for (i = 0; i < 56; ++i) + hexvalue (ctx->gregs[i], regs[i], 16); + hexvalue (ctx->pc, regs[56], 16); + hexvalue (ctx->ics, regs[57], 1); + hexvalue (ctx->faultnum, regs[58], 2); + + /* Generate the output. */ + for (i = 0; i < 56;) + { + const char *prefixes[] = { + "Register dump:\n\n R0: ", + "\n R4: ", + "\n R8: ", + "\n R12: ", + "\n R16: ", + "\n R20: ", + "\n R24: ", + "\n R28: ", + "\n R32: ", + "\n R36: ", + "\n R40: ", + "\n R44: ", + "\n R48: " + }; + ADD_STRING (prefixes[i / 4]); + do + { + ADD_MEM (regs[i], 16); + ADD_STRING (" "); + } + while (++i % 4); + } + ADD_STRING ("\n R52: "); + ADD_MEM (regs[52], 16); + ADD_STRING (" TP: "); + ADD_MEM (regs[53], 16); + ADD_STRING ("\n SP: "); + ADD_MEM (regs[54], 16); + ADD_STRING (" LR: "); + ADD_MEM (regs[55], 16); + ADD_STRING ("\n\n PC: "); + ADD_MEM (regs[56], 16); + ADD_STRING (" ICS: "); + ADD_MEM (regs[57], 1); + ADD_STRING (" FAULTNUM: "); + ADD_MEM (regs[58], 2); + ADD_STRING ("\n"); + + /* Write the stuff out. */ + writev (fd, iov, nr); +} + + +#define REGISTER_DUMP register_dump (fd, &ctx->uc_mcontext) diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/sched_getcpu.c b/sysdeps/unix/sysv/linux/tile/tilegx/sched_getcpu.c new file mode 100644 index 0000000000..beba3f4d05 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/sched_getcpu.c @@ -0,0 +1,87 @@ +/* Copyright (C) 2012-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include +#include +#include +#include + + +/* The count of cores horizontally (X dimension) on the chip. */ +static int chip_width; + +/* Read the chip "width" from the /sys filesystem. */ +static int +initialize_chip_width (void) +{ + int w = 0; + int fd; + + fd = __open ("/sys/devices/system/cpu/chip_width", O_RDONLY); + if (fd >= 0) + { + char buf[64]; + ssize_t n; + int i; + + n = __read (fd, buf, sizeof (buf)); + __close (fd); + + for (i = 0; i < n; ++i) + { + if (buf[i] < '0' || buf[i] > '9') + break; + w = (w * 10) + (buf[i] - '0'); + } + } + + /* Store a negative value so we don't try again. */ + if (w == 0) + w = -1; + + /* Using an atomic idempotent write here makes this thread-safe. */ + chip_width = w; + return w; +} + +int +sched_getcpu (void) +{ + unsigned int coord; + int w = chip_width; + + if (__builtin_expect (w <= 0, 0)) + { + if (w == 0) + w = initialize_chip_width (); + if (w < 0) + { + unsigned int cpu; + int r = INLINE_SYSCALL (getcpu, 3, &cpu, NULL, NULL); + return r == -1 ? r : cpu; + } + } + + /* Assign 64-bit value to a 32-bit variable to ensure 32-bit multiply. */ + coord = __insn_mfspr (SPR_TILE_COORD); + + /* Extract Y coord from bits 7..10 and X coord from bits 18..21. */ + return ((coord >> 7) & 0xf) * w + ((coord >> 18) & 0xf); +} diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/Implies b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/Implies new file mode 100644 index 0000000000..9090d3fb8b --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/Implies @@ -0,0 +1,4 @@ +unix/sysv/linux/tile/tilegx +unix/sysv/linux/tile +unix/sysv/linux/generic/wordsize-32 +unix/sysv/linux/generic diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/Makefile b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/Makefile new file mode 100644 index 0000000000..1e9d29be31 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/Makefile @@ -0,0 +1 @@ +default-abi := 32 diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/c++-types.data b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/c++-types.data new file mode 100644 index 0000000000..1a7bcb38d3 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/c++-types.data @@ -0,0 +1,67 @@ +blkcnt64_t:x +blkcnt_t:l +blksize_t:i +caddr_t:Pc +clockid_t:i +clock_t:l +daddr_t:i +dev_t:y +fd_mask:l +fsblkcnt64_t:y +fsblkcnt_t:m +fsfilcnt64_t:y +fsfilcnt_t:m +fsid_t:8__fsid_t +gid_t:j +id_t:j +ino64_t:y +ino_t:m +int16_t:s +int32_t:i +int64_t:x +int8_t:a +intptr_t:i +key_t:i +loff_t:x +mode_t:j +nlink_t:j +off64_t:x +off_t:l +pid_t:i +pthread_attr_t:14pthread_attr_t +pthread_barrier_t:17pthread_barrier_t +pthread_barrierattr_t:21pthread_barrierattr_t +pthread_cond_t:14pthread_cond_t +pthread_condattr_t:18pthread_condattr_t +pthread_key_t:j +pthread_mutex_t:15pthread_mutex_t +pthread_mutexattr_t:19pthread_mutexattr_t +pthread_once_t:i +pthread_rwlock_t:16pthread_rwlock_t +pthread_rwlockattr_t:20pthread_rwlockattr_t +pthread_spinlock_t:i +pthread_t:m +quad_t:x +register_t:x +rlim64_t:y +rlim_t:m +sigset_t:10__sigset_t +size_t:j +socklen_t:j +ssize_t:i +suseconds_t:l +time_t:l +u_char:h +uid_t:j +uint:j +u_int:j +u_int16_t:t +u_int32_t:j +u_int64_t:y +u_int8_t:h +ulong:m +u_long:m +u_quad_t:y +useconds_t:j +ushort:t +u_short:t diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/ld.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/ld.abilist new file mode 100644 index 0000000000..4367346594 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/ld.abilist @@ -0,0 +1,11 @@ +GLIBC_2.12 + GLIBC_2.12 A + __libc_memalign F + __libc_stack_end D 0x4 + __tls_get_addr F + _dl_mcount F + _r_debug D 0x14 + calloc F + free F + malloc F + realloc F diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libBrokenLocale.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libBrokenLocale.abilist new file mode 100644 index 0000000000..4af9128544 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libBrokenLocale.abilist @@ -0,0 +1,3 @@ +GLIBC_2.12 + GLIBC_2.12 A + __ctype_get_mb_cur_max F diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libanl.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libanl.abilist new file mode 100644 index 0000000000..29e602a75a --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libanl.abilist @@ -0,0 +1,6 @@ +GLIBC_2.12 + GLIBC_2.12 A + gai_cancel F + gai_error F + gai_suspend F + getaddrinfo_a F diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libc.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libc.abilist new file mode 100644 index 0000000000..caf74b89e1 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libc.abilist @@ -0,0 +1,2093 @@ +GLIBC_2.12 + GLIBC_2.12 A + _Exit F + _IO_2_1_stderr_ D 0xa0 + _IO_2_1_stdin_ D 0xa0 + _IO_2_1_stdout_ D 0xa0 + _IO_adjust_column F + _IO_adjust_wcolumn F + _IO_default_doallocate F + _IO_default_finish F + _IO_default_pbackfail F + _IO_default_uflow F + _IO_default_xsgetn F + _IO_default_xsputn F + _IO_do_write F + _IO_doallocbuf F + _IO_fclose F + _IO_fdopen F + _IO_feof F + _IO_ferror F + _IO_fflush F + _IO_fgetpos F + _IO_fgetpos64 F + _IO_fgets F + _IO_file_attach F + _IO_file_close F + _IO_file_close_it F + _IO_file_doallocate F + _IO_file_finish F + _IO_file_fopen F + _IO_file_init F + _IO_file_jumps D 0x54 + _IO_file_open F + _IO_file_overflow F + _IO_file_read F + _IO_file_seek F + _IO_file_seekoff F + _IO_file_setbuf F + _IO_file_stat F + _IO_file_sync F + _IO_file_underflow F + _IO_file_write F + _IO_file_xsputn F + _IO_flockfile F + _IO_flush_all F + _IO_flush_all_linebuffered F + _IO_fopen F + _IO_fprintf F + _IO_fputs F + _IO_fread F + _IO_free_backup_area F + _IO_free_wbackup_area F + _IO_fsetpos F + _IO_fsetpos64 F + _IO_ftell F + _IO_ftrylockfile F + _IO_funlockfile F + _IO_fwrite F + _IO_getc F + _IO_getline F + _IO_getline_info F + _IO_gets F + _IO_init F + _IO_init_marker F + _IO_init_wmarker F + _IO_iter_begin F + _IO_iter_end F + _IO_iter_file F + _IO_iter_next F + _IO_least_wmarker F + _IO_link_in F + _IO_list_all D 0x4 + _IO_list_lock F + _IO_list_resetlock F + _IO_list_unlock F + _IO_marker_delta F + _IO_marker_difference F + _IO_padn F + _IO_peekc_locked F + _IO_popen F + _IO_printf F + _IO_proc_close F + _IO_proc_open F + _IO_putc F + _IO_puts F + _IO_remove_marker F + _IO_seekmark F + _IO_seekoff F + _IO_seekpos F + _IO_seekwmark F + _IO_setb F + _IO_setbuffer F + _IO_setvbuf F + _IO_sgetn F + _IO_sprintf F + _IO_sputbackc F + _IO_sputbackwc F + _IO_sscanf F + _IO_str_init_readonly F + _IO_str_init_static F + _IO_str_overflow F + _IO_str_pbackfail F + _IO_str_seekoff F + _IO_str_underflow F + _IO_sungetc F + _IO_sungetwc F + _IO_switch_to_get_mode F + _IO_switch_to_main_wget_area F + _IO_switch_to_wbackup_area F + _IO_switch_to_wget_mode F + _IO_un_link F + _IO_ungetc F + _IO_unsave_markers F + _IO_unsave_wmarkers F + _IO_vfprintf F + _IO_vfscanf F + _IO_vsprintf F + _IO_wdefault_doallocate F + _IO_wdefault_finish F + _IO_wdefault_pbackfail F + _IO_wdefault_uflow F + _IO_wdefault_xsgetn F + _IO_wdefault_xsputn F + _IO_wdo_write F + _IO_wdoallocbuf F + _IO_wfile_jumps D 0x54 + _IO_wfile_overflow F + _IO_wfile_seekoff F + _IO_wfile_sync F + _IO_wfile_underflow F + _IO_wfile_xsputn F + _IO_wmarker_delta F + _IO_wsetb F + ___brk_addr D 0x4 + __adjtimex F + __after_morecore_hook D 0x4 + __argz_count F + __argz_next F + __argz_stringify F + __asprintf F + __asprintf_chk F + __assert F + __assert_fail F + __assert_perror_fail F + __backtrace F + __backtrace_symbols F + __backtrace_symbols_fd F + __bsd_getpgrp F + __bzero F + __check_rhosts_file D 0x4 + __chk_fail F + __clone F + __close F + __cmsg_nxthdr F + __confstr_chk F + __connect F + __ctype_b_loc F + __ctype_get_mb_cur_max F + __ctype_tolower_loc F + __ctype_toupper_loc F + __curbrk D 0x4 + __cxa_at_quick_exit F + __cxa_atexit F + __cxa_finalize F + __cyg_profile_func_enter F + __cyg_profile_func_exit F + __daylight D 0x4 + __dcgettext F + __default_morecore F + __dgettext F + __dprintf_chk F + __dup2 F + __duplocale F + __endmntent F + __environ D 0x4 + __errno_location F + __fbufsize F + __fcntl F + __ffs F + __fgets_chk F + __fgets_unlocked_chk F + __fgetws_chk F + __fgetws_unlocked_chk F + __finite F + __finitef F + __flbf F + __fork F + __fpending F + __fprintf_chk F + __fpu_control D 0x4 + __fpurge F + __fread_chk F + __fread_unlocked_chk F + __freadable F + __freading F + __free_hook D 0x4 + __freelocale F + __fsetlocking F + __fwprintf_chk F + __fwritable F + __fwriting F + __fxstat F + __fxstat64 F + __fxstatat F + __fxstatat64 F + __getcwd_chk F + __getdelim F + __getdomainname_chk F + __getgroups_chk F + __gethostname_chk F + __getlogin_r_chk F + __getmntent_r F + __getpagesize F + __getpgid F + __getpid F + __gets_chk F + __gettimeofday F + __getwd_chk F + __gmtime_r F + __h_errno_location F + __isalnum_l F + __isalpha_l F + __isascii_l F + __isblank_l F + __iscntrl_l F + __isctype F + __isdigit_l F + __isgraph_l F + __isinf F + __isinff F + __islower_l F + __isnan F + __isnanf F + __isoc99_fscanf F + __isoc99_fwscanf F + __isoc99_scanf F + __isoc99_sscanf F + __isoc99_swscanf F + __isoc99_vfscanf F + __isoc99_vfwscanf F + __isoc99_vscanf F + __isoc99_vsscanf F + __isoc99_vswscanf F + __isoc99_vwscanf F + __isoc99_wscanf F + __isprint_l F + __ispunct_l F + __isspace_l F + __isupper_l F + __iswalnum_l F + __iswalpha_l F + __iswblank_l F + __iswcntrl_l F + __iswctype F + __iswctype_l F + __iswdigit_l F + __iswgraph_l F + __iswlower_l F + __iswprint_l F + __iswpunct_l F + __iswspace_l F + __iswupper_l F + __iswxdigit_l F + __isxdigit_l F + __ivaliduser F + __key_decryptsession_pk_LOCAL D 0x4 + __key_encryptsession_pk_LOCAL D 0x4 + __key_gendes_LOCAL D 0x4 + __libc_allocate_rtsig F + __libc_calloc F + __libc_current_sigrtmax F + __libc_current_sigrtmin F + __libc_free F + __libc_freeres F + __libc_init_first F + __libc_mallinfo F + __libc_malloc F + __libc_mallopt F + __libc_memalign F + __libc_pvalloc F + __libc_realloc F + __libc_sa_len F + __libc_start_main F + __libc_valloc F + __longjmp_chk F + __lseek F + __lxstat F + __lxstat64 F + __malloc_hook D 0x4 + __malloc_initialize_hook D 0x4 + __mbrlen F + __mbrtowc F + __mbsnrtowcs_chk F + __mbsrtowcs_chk F + __mbstowcs_chk F + __mcount F + __memalign_hook D 0x4 + __memcpy_chk F + __memmove_chk F + __mempcpy F + __mempcpy_chk F + __mempcpy_small F + __memset_chk F + __monstartup F + __morecore D 0x4 + __nanosleep F + __newlocale F + __nl_langinfo_l F + __nss_configure_lookup F + __nss_database_lookup F + __nss_group_lookup F + __nss_hostname_digits_dots F + __nss_hosts_lookup F + __nss_next F + __nss_passwd_lookup F + __obstack_printf_chk F + __obstack_vprintf_chk F + __open F + __open64 F + __open64_2 F + __open_2 F + __openat64_2 F + __openat_2 F + __overflow F + __pipe F + __poll F + __posix_getopt F + __pread64 F + __pread64_chk F + __pread_chk F + __printf_chk F + __printf_fp F + __profile_frequency F + __progname D 0x4 + __progname_full D 0x4 + __ptsname_r_chk F + __pwrite64 F + __rawmemchr F + __rcmd_errstr D 0x4 + __read F + __read_chk F + __readlink_chk F + __readlinkat_chk F + __realloc_hook D 0x4 + __realpath_chk F + __recv_chk F + __recvfrom_chk F + __register_atfork F + __res_init F + __res_nclose F + __res_ninit F + __res_randomid F + __res_state F + __rpc_thread_createerr F + __rpc_thread_svc_fdset F + __rpc_thread_svc_max_pollfd F + __rpc_thread_svc_pollfd F + __sbrk F + __sched_cpualloc F + __sched_cpucount F + __sched_cpufree F + __sched_get_priority_max F + __sched_get_priority_min F + __sched_getparam F + __sched_getscheduler F + __sched_setscheduler F + __sched_yield F + __secure_getenv F + __select F + __setmntent F + __setpgid F + __sigaction F + __sigaddset F + __sigdelset F + __sigismember F + __signbit F + __signbitf F + __sigpause F + __sigsetjmp F + __sigsuspend F + __snprintf_chk F + __sprintf_chk F + __stack_chk_fail F + __statfs F + __stpcpy F + __stpcpy_chk F + __stpcpy_small F + __stpncpy F + __stpncpy_chk F + __strcasecmp F + __strcasecmp_l F + __strcasestr F + __strcat_chk F + __strcoll_l F + __strcpy_chk F + __strcpy_small F + __strcspn_c1 F + __strcspn_c2 F + __strcspn_c3 F + __strdup F + __strerror_r F + __strfmon_l F + __strftime_l F + __strncasecmp_l F + __strncat_chk F + __strncpy_chk F + __strndup F + __strpbrk_c2 F + __strpbrk_c3 F + __strsep_1c F + __strsep_2c F + __strsep_3c F + __strsep_g F + __strspn_c1 F + __strspn_c2 F + __strspn_c3 F + __strtod_internal F + __strtod_l F + __strtof_internal F + __strtof_l F + __strtok_r F + __strtok_r_1c F + __strtol_internal F + __strtol_l F + __strtold_internal F + __strtold_l F + __strtoll_internal F + __strtoll_l F + __strtoul_internal F + __strtoul_l F + __strtoull_internal F + __strtoull_l F + __strverscmp F + __strxfrm_l F + __swprintf_chk F + __sysconf F + __syslog_chk F + __sysv_signal F + __timezone D 0x4 + __toascii_l F + __tolower_l F + __toupper_l F + __towctrans F + __towctrans_l F + __towlower_l F + __towupper_l F + __ttyname_r_chk F + __tzname D 0x8 + __uflow F + __underflow F + __uselocale F + __vasprintf_chk F + __vdprintf_chk F + __vfork F + __vfprintf_chk F + __vfscanf F + __vfwprintf_chk F + __vprintf_chk F + __vsnprintf F + __vsnprintf_chk F + __vsprintf_chk F + __vsscanf F + __vswprintf_chk F + __vsyslog_chk F + __vwprintf_chk F + __wait F + __waitpid F + __wcpcpy_chk F + __wcpncpy_chk F + __wcrtomb_chk F + __wcscasecmp_l F + __wcscat_chk F + __wcscoll_l F + __wcscpy_chk F + __wcsftime_l F + __wcsncasecmp_l F + __wcsncat_chk F + __wcsncpy_chk F + __wcsnrtombs_chk F + __wcsrtombs_chk F + __wcstod_internal F + __wcstod_l F + __wcstof_internal F + __wcstof_l F + __wcstol_internal F + __wcstol_l F + __wcstold_internal F + __wcstold_l F + __wcstoll_internal F + __wcstoll_l F + __wcstombs_chk F + __wcstoul_internal F + __wcstoul_l F + __wcstoull_internal F + __wcstoull_l F + __wcsxfrm_l F + __wctomb_chk F + __wctrans_l F + __wctype_l F + __wmemcpy_chk F + __wmemmove_chk F + __wmempcpy_chk F + __wmemset_chk F + __woverflow F + __wprintf_chk F + __write F + __wuflow F + __wunderflow F + __xmknod F + __xmknodat F + __xpg_basename F + __xpg_sigpause F + __xpg_strerror_r F + __xstat F + __xstat64 F + _authenticate F + _dl_mcount_wrapper F + _dl_mcount_wrapper_check F + _environ D 0x4 + _exit F + _flush_cache F + _flushlbf F + _libc_intl_domainname D 0x5 + _longjmp F + _mcleanup F + _mcount F + _nl_default_dirname D 0x12 + _nl_domain_bindings D 0x4 + _nl_msg_cat_cntr D 0x4 + _null_auth D 0xc + _obstack_allocated_p F + _obstack_begin F + _obstack_begin_1 F + _obstack_free F + _obstack_memory_used F + _obstack_newchunk F + _res D 0x200 + _res_hconf D 0x30 + _rpc_dtablesize F + _seterr_reply F + _setjmp F + _sys_errlist D 0x21c + _sys_nerr D 0x4 + _sys_siglist D 0x104 + _tolower F + _toupper F + a64l F + abort F + abs F + accept F + accept4 F + access F + acct F + addmntent F + addseverity F + adjtime F + adjtimex F + advance F + alarm F + alphasort F + alphasort64 F + argp_err_exit_status D 0x4 + argp_error F + argp_failure F + argp_help F + argp_parse F + argp_program_bug_address D 0x4 + argp_program_version D 0x4 + argp_program_version_hook D 0x4 + argp_state_help F + argp_usage F + argz_add F + argz_add_sep F + argz_append F + argz_count F + argz_create F + argz_create_sep F + argz_delete F + argz_extract F + argz_insert F + argz_next F + argz_replace F + argz_stringify F + asctime F + asctime_r F + asprintf F + atof F + atoi F + atol F + atoll F + authdes_create F + authdes_getucred F + authdes_pk_create F + authnone_create F + authunix_create F + authunix_create_default F + backtrace F + backtrace_symbols F + backtrace_symbols_fd F + basename F + bcmp F + bcopy F + bdflush F + bind F + bind_textdomain_codeset F + bindresvport F + bindtextdomain F + brk F + bsd_signal F + bsearch F + btowc F + bzero F + cacheflush F + calloc F + callrpc F + canonicalize_file_name F + capget F + capset F + catclose F + catgets F + catopen F + cbc_crypt F + cfgetispeed F + cfgetospeed F + cfmakeraw F + cfree F + cfsetispeed F + cfsetospeed F + cfsetspeed F + chdir F + chflags F + chmod F + chown F + chroot F + clearenv F + clearerr F + clearerr_unlocked F + clnt_broadcast F + clnt_create F + clnt_pcreateerror F + clnt_perrno F + clnt_perror F + clnt_spcreateerror F + clnt_sperrno F + clnt_sperror F + clntraw_create F + clnttcp_create F + clntudp_bufcreate F + clntudp_create F + clntunix_create F + clock F + clone F + close F + closedir F + closelog F + confstr F + connect F + copysign F + copysignf F + copysignl F + creat F + creat64 F + create_module F + ctermid F + ctime F + ctime_r F + cuserid F + daemon F + daylight D 0x4 + dcgettext F + dcngettext F + delete_module F + des_setparity F + dgettext F + difftime F + dirfd F + dirname F + div F + dl_iterate_phdr F + dngettext F + dprintf F + drand48 F + drand48_r F + dup F + dup2 F + dup3 F + duplocale F + dysize F + eaccess F + ecb_crypt F + ecvt F + ecvt_r F + endaliasent F + endfsent F + endgrent F + endhostent F + endmntent F + endnetent F + endnetgrent F + endprotoent F + endpwent F + endrpcent F + endservent F + endsgent F + endspent F + endttyent F + endusershell F + endutent F + endutxent F + environ D 0x4 + envz_add F + envz_entry F + envz_get F + envz_merge F + envz_remove F + envz_strip F + epoll_create F + epoll_create1 F + epoll_ctl F + epoll_pwait F + epoll_wait F + erand48 F + erand48_r F + err F + error F + error_at_line F + error_message_count D 0x4 + error_one_per_line D 0x4 + error_print_progname D 0x4 + errx F + ether_aton F + ether_aton_r F + ether_hostton F + ether_line F + ether_ntoa F + ether_ntoa_r F + ether_ntohost F + euidaccess F + eventfd F + eventfd_read F + eventfd_write F + execl F + execle F + execlp F + execv F + execve F + execvp F + execvpe F + exit F + faccessat F + fallocate F + fallocate64 F + fattach F + fchdir F + fchflags F + fchmod F + fchmodat F + fchown F + fchownat F + fclose F + fcloseall F + fcntl F + fcvt F + fcvt_r F + fdatasync F + fdetach F + fdopen F + fdopendir F + feof F + feof_unlocked F + ferror F + ferror_unlocked F + fexecve F + fflush F + fflush_unlocked F + ffs F + ffsl F + ffsll F + fgetc F + fgetc_unlocked F + fgetgrent F + fgetgrent_r F + fgetpos F + fgetpos64 F + fgetpwent F + fgetpwent_r F + fgets F + fgets_unlocked F + fgetsgent F + fgetsgent_r F + fgetspent F + fgetspent_r F + fgetwc F + fgetwc_unlocked F + fgetws F + fgetws_unlocked F + fgetxattr F + fileno F + fileno_unlocked F + finite F + finitef F + finitel F + flistxattr F + flock F + flockfile F + fmemopen F + fmtmsg F + fnmatch F + fopen F + fopen64 F + fopencookie F + fork F + fpathconf F + fprintf F + fputc F + fputc_unlocked F + fputs F + fputs_unlocked F + fputwc F + fputwc_unlocked F + fputws F + fputws_unlocked F + fread F + fread_unlocked F + free F + freeaddrinfo F + freeifaddrs F + freelocale F + fremovexattr F + freopen F + freopen64 F + frexp F + frexpf F + frexpl F + fscanf F + fseek F + fseeko F + fseeko64 F + fsetpos F + fsetpos64 F + fsetxattr F + fstatfs F + fstatfs64 F + fstatvfs F + fstatvfs64 F + fsync F + ftell F + ftello F + ftello64 F + ftime F + ftok F + ftruncate F + ftruncate64 F + ftrylockfile F + fts_children F + fts_close F + fts_open F + fts_read F + fts_set F + ftw F + ftw64 F + funlockfile F + futimens F + futimes F + futimesat F + fwide F + fwprintf F + fwrite F + fwrite_unlocked F + fwscanf F + gai_strerror F + gcvt F + get_avphys_pages F + get_current_dir_name F + get_kernel_syms F + get_myaddress F + get_nprocs F + get_nprocs_conf F + get_phys_pages F + getaddrinfo F + getaliasbyname F + getaliasbyname_r F + getaliasent F + getaliasent_r F + getc F + getc_unlocked F + getchar F + getchar_unlocked F + getcontext F + getcwd F + getdate F + getdate_err D 0x4 + getdate_r F + getdelim F + getdirentries F + getdirentries64 F + getdomainname F + getdtablesize F + getegid F + getenv F + geteuid F + getfsent F + getfsfile F + getfsspec F + getgid F + getgrent F + getgrent_r F + getgrgid F + getgrgid_r F + getgrnam F + getgrnam_r F + getgrouplist F + getgroups F + gethostbyaddr F + gethostbyaddr_r F + gethostbyname F + gethostbyname2 F + gethostbyname2_r F + gethostbyname_r F + gethostent F + gethostent_r F + gethostid F + gethostname F + getifaddrs F + getipv4sourcefilter F + getitimer F + getline F + getloadavg F + getlogin F + getlogin_r F + getmntent F + getmntent_r F + getmsg F + getnameinfo F + getnetbyaddr F + getnetbyaddr_r F + getnetbyname F + getnetbyname_r F + getnetent F + getnetent_r F + getnetgrent F + getnetgrent_r F + getnetname F + getopt F + getopt_long F + getopt_long_only F + getpagesize F + getpass F + getpeername F + getpgid F + getpgrp F + getpid F + getpmsg F + getppid F + getpriority F + getprotobyname F + getprotobyname_r F + getprotobynumber F + getprotobynumber_r F + getprotoent F + getprotoent_r F + getpt F + getpublickey F + getpw F + getpwent F + getpwent_r F + getpwnam F + getpwnam_r F + getpwuid F + getpwuid_r F + getresgid F + getresuid F + getrlimit F + getrlimit64 F + getrpcbyname F + getrpcbyname_r F + getrpcbynumber F + getrpcbynumber_r F + getrpcent F + getrpcent_r F + getrpcport F + getrusage F + gets F + getsecretkey F + getservbyname F + getservbyname_r F + getservbyport F + getservbyport_r F + getservent F + getservent_r F + getsgent F + getsgent_r F + getsgnam F + getsgnam_r F + getsid F + getsockname F + getsockopt F + getsourcefilter F + getspent F + getspent_r F + getspnam F + getspnam_r F + getsubopt F + gettext F + gettimeofday F + getttyent F + getttynam F + getuid F + getusershell F + getutent F + getutent_r F + getutid F + getutid_r F + getutline F + getutline_r F + getutmp F + getutmpx F + getutxent F + getutxid F + getutxline F + getw F + getwc F + getwc_unlocked F + getwchar F + getwchar_unlocked F + getwd F + getxattr F + glob F + glob64 F + glob_pattern_p F + globfree F + globfree64 F + gmtime F + gmtime_r F + gnu_dev_major F + gnu_dev_makedev F + gnu_dev_minor F + gnu_get_libc_release F + gnu_get_libc_version F + grantpt F + group_member F + gsignal F + gtty F + h_errlist D 0x14 + h_nerr D 0x4 + hasmntopt F + hcreate F + hcreate_r F + hdestroy F + hdestroy_r F + herror F + host2netname F + hsearch F + hsearch_r F + hstrerror F + htonl F + htons F + iconv F + iconv_close F + iconv_open F + if_freenameindex F + if_indextoname F + if_nameindex F + if_nametoindex F + imaxabs F + imaxdiv F + in6addr_any D 0x10 + in6addr_loopback D 0x10 + index F + inet6_opt_append F + inet6_opt_find F + inet6_opt_finish F + inet6_opt_get_val F + inet6_opt_init F + inet6_opt_next F + inet6_opt_set_val F + inet6_option_alloc F + inet6_option_append F + inet6_option_find F + inet6_option_init F + inet6_option_next F + inet6_option_space F + inet6_rth_add F + inet6_rth_getaddr F + inet6_rth_init F + inet6_rth_reverse F + inet6_rth_segments F + inet6_rth_space F + inet_addr F + inet_aton F + inet_lnaof F + inet_makeaddr F + inet_netof F + inet_network F + inet_nsap_addr F + inet_nsap_ntoa F + inet_ntoa F + inet_ntop F + inet_pton F + init_module F + initgroups F + initstate F + initstate_r F + innetgr F + inotify_add_watch F + inotify_init F + inotify_init1 F + inotify_rm_watch F + insque F + ioctl F + iruserok F + iruserok_af F + isalnum F + isalnum_l F + isalpha F + isalpha_l F + isascii F + isastream F + isatty F + isblank F + isblank_l F + iscntrl F + iscntrl_l F + isctype F + isdigit F + isdigit_l F + isfdtype F + isgraph F + isgraph_l F + isinf F + isinff F + isinfl F + islower F + islower_l F + isnan F + isnanf F + isnanl F + isprint F + isprint_l F + ispunct F + ispunct_l F + isspace F + isspace_l F + isupper F + isupper_l F + iswalnum F + iswalnum_l F + iswalpha F + iswalpha_l F + iswblank F + iswblank_l F + iswcntrl F + iswcntrl_l F + iswctype F + iswctype_l F + iswdigit F + iswdigit_l F + iswgraph F + iswgraph_l F + iswlower F + iswlower_l F + iswprint F + iswprint_l F + iswpunct F + iswpunct_l F + iswspace F + iswspace_l F + iswupper F + iswupper_l F + iswxdigit F + iswxdigit_l F + isxdigit F + isxdigit_l F + jrand48 F + jrand48_r F + key_decryptsession F + key_decryptsession_pk F + key_encryptsession F + key_encryptsession_pk F + key_gendes F + key_get_conv F + key_secretkey_is_set F + key_setnet F + key_setsecret F + kill F + killpg F + klogctl F + l64a F + labs F + lchmod F + lchown F + lckpwdf F + lcong48 F + lcong48_r F + ldexp F + ldexpf F + ldexpl F + ldiv F + lfind F + lgetxattr F + link F + linkat F + listen F + listxattr F + llabs F + lldiv F + llistxattr F + llseek F + loc1 D 0x4 + loc2 D 0x4 + localeconv F + localtime F + localtime_r F + lockf F + lockf64 F + locs D 0x4 + longjmp F + lrand48 F + lrand48_r F + lremovexattr F + lsearch F + lseek F + lseek64 F + lsetxattr F + lutimes F + madvise F + makecontext F + mallinfo F + malloc F + malloc_get_state F + malloc_info F + malloc_set_state F + malloc_stats F + malloc_trim F + malloc_usable_size F + mallopt F + mallwatch D 0x4 + mblen F + mbrlen F + mbrtowc F + mbsinit F + mbsnrtowcs F + mbsrtowcs F + mbstowcs F + mbtowc F + mcheck F + mcheck_check_all F + mcheck_pedantic F + mcount F + memalign F + memccpy F + memchr F + memcmp F + memcpy F + memfrob F + memmem F + memmove F + mempcpy F + memrchr F + memset F + mincore F + mkdir F + mkdirat F + mkdtemp F + mkfifo F + mkfifoat F + mkostemp F + mkostemp64 F + mkostemps F + mkostemps64 F + mkstemp F + mkstemp64 F + mkstemps F + mkstemps64 F + mktemp F + mktime F + mlock F + mlockall F + mmap F + mmap64 F + modf F + modff F + modfl F + moncontrol F + monstartup F + mount F + mprobe F + mprotect F + mrand48 F + mrand48_r F + mremap F + msgctl F + msgget F + msgrcv F + msgsnd F + msync F + mtrace F + munlock F + munlockall F + munmap F + muntrace F + nanosleep F + netname2host F + netname2user F + newlocale F + nfsservctl F + nftw F + nftw64 F + ngettext F + nice F + nl_langinfo F + nl_langinfo_l F + nrand48 F + nrand48_r F + ntohl F + ntohs F + ntp_adjtime F + ntp_gettime F + ntp_gettimex F + obstack_alloc_failed_handler D 0x4 + obstack_exit_failure D 0x4 + obstack_free F + obstack_printf F + obstack_vprintf F + on_exit F + open F + open64 F + open_memstream F + open_wmemstream F + openat F + openat64 F + opendir F + openlog F + optarg D 0x4 + opterr D 0x4 + optind D 0x4 + optopt D 0x4 + parse_printf_format F + passwd2des F + pathconf F + pause F + pclose F + perror F + personality F + pipe F + pipe2 F + pivot_root F + pmap_getmaps F + pmap_getport F + pmap_rmtcall F + pmap_set F + pmap_unset F + poll F + popen F + posix_fadvise F + posix_fadvise64 F + posix_fallocate F + posix_fallocate64 F + posix_madvise F + posix_memalign F + posix_openpt F + posix_spawn F + posix_spawn_file_actions_addclose F + posix_spawn_file_actions_adddup2 F + posix_spawn_file_actions_addopen F + posix_spawn_file_actions_destroy F + posix_spawn_file_actions_init F + posix_spawnattr_destroy F + posix_spawnattr_getflags F + posix_spawnattr_getpgroup F + posix_spawnattr_getschedparam F + posix_spawnattr_getschedpolicy F + posix_spawnattr_getsigdefault F + posix_spawnattr_getsigmask F + posix_spawnattr_init F + posix_spawnattr_setflags F + posix_spawnattr_setpgroup F + posix_spawnattr_setschedparam F + posix_spawnattr_setschedpolicy F + posix_spawnattr_setsigdefault F + posix_spawnattr_setsigmask F + posix_spawnp F + ppoll F + prctl F + pread F + pread64 F + preadv F + preadv64 F + printf F + printf_size F + printf_size_info F + profil F + program_invocation_name D 0x4 + program_invocation_short_name D 0x4 + pselect F + psiginfo F + psignal F + pthread_attr_destroy F + pthread_attr_getdetachstate F + pthread_attr_getinheritsched F + pthread_attr_getschedparam F + pthread_attr_getschedpolicy F + pthread_attr_getscope F + pthread_attr_init F + pthread_attr_setdetachstate F + pthread_attr_setinheritsched F + pthread_attr_setschedparam F + pthread_attr_setschedpolicy F + pthread_attr_setscope F + pthread_cond_broadcast F + pthread_cond_destroy F + pthread_cond_init F + pthread_cond_signal F + pthread_cond_timedwait F + pthread_cond_wait F + pthread_condattr_destroy F + pthread_condattr_init F + pthread_equal F + pthread_exit F + pthread_getschedparam F + pthread_mutex_destroy F + pthread_mutex_init F + pthread_mutex_lock F + pthread_mutex_unlock F + pthread_self F + pthread_setcancelstate F + pthread_setcanceltype F + pthread_setschedparam F + ptrace F + ptsname F + ptsname_r F + putc F + putc_unlocked F + putchar F + putchar_unlocked F + putenv F + putgrent F + putmsg F + putpmsg F + putpwent F + puts F + putsgent F + putspent F + pututline F + pututxline F + putw F + putwc F + putwc_unlocked F + putwchar F + putwchar_unlocked F + pvalloc F + pwrite F + pwrite64 F + pwritev F + pwritev64 F + qecvt F + qecvt_r F + qfcvt F + qfcvt_r F + qgcvt F + qsort F + qsort_r F + query_module F + quick_exit F + quotactl F + raise F + rand F + rand_r F + random F + random_r F + rawmemchr F + rcmd F + rcmd_af F + re_comp F + re_compile_fastmap F + re_compile_pattern F + re_exec F + re_match F + re_match_2 F + re_search F + re_search_2 F + re_set_registers F + re_set_syntax F + re_syntax_options D 0x4 + read F + readahead F + readdir F + readdir64 F + readdir64_r F + readdir_r F + readlink F + readlinkat F + readv F + realloc F + realpath F + reboot F + recv F + recvfrom F + recvmmsg F + recvmsg F + regcomp F + regerror F + regexec F + regfree F + register_printf_function F + register_printf_modifier F + register_printf_specifier F + register_printf_type F + registerrpc F + remap_file_pages F + remove F + removexattr F + remque F + rename F + renameat F + revoke F + rewind F + rewinddir F + rexec F + rexec_af F + rexecoptions D 0x4 + rindex F + rmdir F + rpc_createerr D 0x10 + rpmatch F + rresvport F + rresvport_af F + rtime F + ruserok F + ruserok_af F + ruserpass F + sbrk F + scalbn F + scalbnf F + scalbnl F + scandir F + scandir64 F + scanf F + sched_get_priority_max F + sched_get_priority_min F + sched_getaffinity F + sched_getcpu F + sched_getparam F + sched_getscheduler F + sched_rr_get_interval F + sched_setaffinity F + sched_setparam F + sched_setscheduler F + sched_yield F + seed48 F + seed48_r F + seekdir F + select F + semctl F + semget F + semop F + semtimedop F + send F + sendfile F + sendfile64 F + sendmsg F + sendto F + set_dataplane F + setaliasent F + setbuf F + setbuffer F + setcontext F + setdomainname F + setegid F + setenv F + seteuid F + setfsent F + setfsgid F + setfsuid F + setgid F + setgrent F + setgroups F + sethostent F + sethostid F + sethostname F + setipv4sourcefilter F + setitimer F + setjmp F + setlinebuf F + setlocale F + setlogin F + setlogmask F + setmntent F + setnetent F + setnetgrent F + setpgid F + setpgrp F + setpriority F + setprotoent F + setpwent F + setregid F + setresgid F + setresuid F + setreuid F + setrlimit F + setrlimit64 F + setrpcent F + setservent F + setsgent F + setsid F + setsockopt F + setsourcefilter F + setspent F + setstate F + setstate_r F + settimeofday F + setttyent F + setuid F + setusershell F + setutent F + setutxent F + setvbuf F + setxattr F + sgetsgent F + sgetsgent_r F + sgetspent F + sgetspent_r F + shmat F + shmctl F + shmdt F + shmget F + shutdown F + sigaction F + sigaddset F + sigaltstack F + sigandset F + sigblock F + sigdelset F + sigemptyset F + sigfillset F + siggetmask F + sighold F + sigignore F + siginterrupt F + sigisemptyset F + sigismember F + siglongjmp F + signal F + signalfd F + sigorset F + sigpause F + sigpending F + sigprocmask F + sigqueue F + sigrelse F + sigreturn F + sigset F + sigsetmask F + sigstack F + sigsuspend F + sigtimedwait F + sigvec F + sigwait F + sigwaitinfo F + sleep F + snprintf F + sockatmark F + socket F + socketpair F + splice F + sprintf F + sprofil F + srand F + srand48 F + srand48_r F + srandom F + srandom_r F + sscanf F + ssignal F + sstk F + statfs F + statfs64 F + statvfs F + statvfs64 F + stderr D 0x4 + stdin D 0x4 + stdout D 0x4 + step F + stime F + stpcpy F + stpncpy F + strcasecmp F + strcasecmp_l F + strcasestr F + strcat F + strchr F + strchrnul F + strcmp F + strcoll F + strcoll_l F + strcpy F + strcspn F + strdup F + strerror F + strerror_l F + strerror_r F + strfmon F + strfmon_l F + strfry F + strftime F + strftime_l F + strlen F + strncasecmp F + strncasecmp_l F + strncat F + strncmp F + strncpy F + strndup F + strnlen F + strpbrk F + strptime F + strptime_l F + strrchr F + strsep F + strsignal F + strspn F + strstr F + strtod F + strtod_l F + strtof F + strtof_l F + strtoimax F + strtok F + strtok_r F + strtol F + strtol_l F + strtold F + strtold_l F + strtoll F + strtoll_l F + strtoq F + strtoul F + strtoul_l F + strtoull F + strtoull_l F + strtoumax F + strtouq F + strverscmp F + strxfrm F + strxfrm_l F + stty F + svc_exit F + svc_fdset D 0x80 + svc_getreq F + svc_getreq_common F + svc_getreq_poll F + svc_getreqset F + svc_max_pollfd D 0x4 + svc_pollfd D 0x4 + svc_register F + svc_run F + svc_sendreply F + svc_unregister F + svcauthdes_stats D 0xc + svcerr_auth F + svcerr_decode F + svcerr_noproc F + svcerr_noprog F + svcerr_progvers F + svcerr_systemerr F + svcerr_weakauth F + svcfd_create F + svcraw_create F + svctcp_create F + svcudp_bufcreate F + svcudp_create F + svcudp_enablecache F + svcunix_create F + svcunixfd_create F + swab F + swapcontext F + swapoff F + swapon F + swprintf F + swscanf F + symlink F + symlinkat F + sync F + sync_file_range F + sys_errlist D 0x21c + sys_nerr D 0x4 + sys_sigabbrev D 0x104 + sys_siglist D 0x104 + syscall F + sysconf F + sysctl F + sysinfo F + syslog F + system F + sysv_signal F + tcdrain F + tcflow F + tcflush F + tcgetattr F + tcgetpgrp F + tcgetsid F + tcsendbreak F + tcsetattr F + tcsetpgrp F + tdelete F + tdestroy F + tee F + telldir F + tempnam F + textdomain F + tfind F + time F + timegm F + timelocal F + timerfd_create F + timerfd_gettime F + timerfd_settime F + times F + timezone D 0x4 + tmpfile F + tmpfile64 F + tmpnam F + tmpnam_r F + toascii F + tolower F + tolower_l F + toupper F + toupper_l F + towctrans F + towctrans_l F + towlower F + towlower_l F + towupper F + towupper_l F + tr_break F + truncate F + truncate64 F + tsearch F + ttyname F + ttyname_r F + ttyslot F + twalk F + tzname D 0x8 + tzset F + ualarm F + ulckpwdf F + ulimit F + umask F + umount F + umount2 F + uname F + ungetc F + ungetwc F + unlink F + unlinkat F + unlockpt F + unsetenv F + unshare F + updwtmp F + updwtmpx F + uselib F + uselocale F + user2netname F + usleep F + ustat F + utime F + utimensat F + utimes F + utmpname F + utmpxname F + valloc F + vasprintf F + vdprintf F + verr F + verrx F + versionsort F + versionsort64 F + vfork F + vfprintf F + vfscanf F + vfwprintf F + vfwscanf F + vhangup F + vlimit F + vmsplice F + vprintf F + vscanf F + vsnprintf F + vsprintf F + vsscanf F + vswprintf F + vswscanf F + vsyslog F + vtimes F + vwarn F + vwarnx F + vwprintf F + vwscanf F + wait F + wait3 F + wait4 F + waitid F + waitpid F + warn F + warnx F + wcpcpy F + wcpncpy F + wcrtomb F + wcscasecmp F + wcscasecmp_l F + wcscat F + wcschr F + wcschrnul F + wcscmp F + wcscoll F + wcscoll_l F + wcscpy F + wcscspn F + wcsdup F + wcsftime F + wcsftime_l F + wcslen F + wcsncasecmp F + wcsncasecmp_l F + wcsncat F + wcsncmp F + wcsncpy F + wcsnlen F + wcsnrtombs F + wcspbrk F + wcsrchr F + wcsrtombs F + wcsspn F + wcsstr F + wcstod F + wcstod_l F + wcstof F + wcstof_l F + wcstoimax F + wcstok F + wcstol F + wcstol_l F + wcstold F + wcstold_l F + wcstoll F + wcstoll_l F + wcstombs F + wcstoq F + wcstoul F + wcstoul_l F + wcstoull F + wcstoull_l F + wcstoumax F + wcstouq F + wcswcs F + wcswidth F + wcsxfrm F + wcsxfrm_l F + wctob F + wctomb F + wctrans F + wctrans_l F + wctype F + wctype_l F + wcwidth F + wmemchr F + wmemcmp F + wmemcpy F + wmemmove F + wmempcpy F + wmemset F + wordexp F + wordfree F + wprintf F + write F + writev F + wscanf F + xdecrypt F + xdr_accepted_reply F + xdr_array F + xdr_authdes_cred F + xdr_authdes_verf F + xdr_authunix_parms F + xdr_bool F + xdr_bytes F + xdr_callhdr F + xdr_callmsg F + xdr_char F + xdr_cryptkeyarg F + xdr_cryptkeyarg2 F + xdr_cryptkeyres F + xdr_des_block F + xdr_double F + xdr_enum F + xdr_float F + xdr_free F + xdr_getcredres F + xdr_hyper F + xdr_int F + xdr_int16_t F + xdr_int32_t F + xdr_int64_t F + xdr_int8_t F + xdr_key_netstarg F + xdr_key_netstres F + xdr_keybuf F + xdr_keystatus F + xdr_long F + xdr_longlong_t F + xdr_netnamestr F + xdr_netobj F + xdr_opaque F + xdr_opaque_auth F + xdr_pmap F + xdr_pmaplist F + xdr_pointer F + xdr_quad_t F + xdr_reference F + xdr_rejected_reply F + xdr_replymsg F + xdr_rmtcall_args F + xdr_rmtcallres F + xdr_short F + xdr_sizeof F + xdr_string F + xdr_u_char F + xdr_u_hyper F + xdr_u_int F + xdr_u_long F + xdr_u_longlong_t F + xdr_u_quad_t F + xdr_u_short F + xdr_uint16_t F + xdr_uint32_t F + xdr_uint64_t F + xdr_uint8_t F + xdr_union F + xdr_unixcred F + xdr_vector F + xdr_void F + xdr_wrapstring F + xdrmem_create F + xdrrec_create F + xdrrec_endofrecord F + xdrrec_eof F + xdrrec_skiprecord F + xdrstdio_create F + xencrypt F + xprt_register F + xprt_unregister F +GLIBC_2.15 + GLIBC_2.15 A + __fdelt_chk F + __fdelt_warn F + clock_adjtime F + fanotify_init F + fanotify_mark F + name_to_handle_at F + open_by_handle_at F + posix_spawn F + posix_spawnp F + prlimit F + prlimit64 F + process_vm_readv F + process_vm_writev F + scandirat F + scandirat64 F + sendmmsg F + setns F + syncfs F +GLIBC_2.16 + GLIBC_2.16 A + __getauxval F + __poll_chk F + __ppoll_chk F + aligned_alloc F + c16rtomb F + c32rtomb F + getauxval F + mbrtoc16 F + mbrtoc32 F + timespec_get F +GLIBC_2.17 + GLIBC_2.17 A + clock_getcpuclockid F + clock_getres F + clock_gettime F + clock_nanosleep F + clock_settime F + secure_getenv F +GLIBC_2.18 + GLIBC_2.18 A + __cxa_thread_atexit_impl F diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libcrypt.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libcrypt.abilist new file mode 100644 index 0000000000..608e5df0b1 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libcrypt.abilist @@ -0,0 +1,9 @@ +GLIBC_2.12 + GLIBC_2.12 A + crypt F + crypt_r F + encrypt F + encrypt_r F + fcrypt F + setkey F + setkey_r F diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libdl.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libdl.abilist new file mode 100644 index 0000000000..27a72281b7 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libdl.abilist @@ -0,0 +1,11 @@ +GLIBC_2.12 + GLIBC_2.12 A + dladdr F + dladdr1 F + dlclose F + dlerror F + dlinfo F + dlmopen F + dlopen F + dlsym F + dlvsym F diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libm.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libm.abilist new file mode 100644 index 0000000000..cb0d1a4423 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libm.abilist @@ -0,0 +1,373 @@ +GLIBC_2.12 + GLIBC_2.12 A + _LIB_VERSION D 0x4 + __clog10 F + __clog10f F + __clog10l F + __finite F + __finitef F + __fpclassify F + __fpclassifyf F + __signbit F + __signbitf F + acos F + acosf F + acosh F + acoshf F + acoshl F + acosl F + asin F + asinf F + asinh F + asinhf F + asinhl F + asinl F + atan F + atan2 F + atan2f F + atan2l F + atanf F + atanh F + atanhf F + atanhl F + atanl F + cabs F + cabsf F + cabsl F + cacos F + cacosf F + cacosh F + cacoshf F + cacoshl F + cacosl F + carg F + cargf F + cargl F + casin F + casinf F + casinh F + casinhf F + casinhl F + casinl F + catan F + catanf F + catanh F + catanhf F + catanhl F + catanl F + cbrt F + cbrtf F + cbrtl F + ccos F + ccosf F + ccosh F + ccoshf F + ccoshl F + ccosl F + ceil F + ceilf F + ceill F + cexp F + cexpf F + cexpl F + cimag F + cimagf F + cimagl F + clog F + clog10 F + clog10f F + clog10l F + clogf F + clogl F + conj F + conjf F + conjl F + copysign F + copysignf F + copysignl F + cos F + cosf F + cosh F + coshf F + coshl F + cosl F + cpow F + cpowf F + cpowl F + cproj F + cprojf F + cprojl F + creal F + crealf F + creall F + csin F + csinf F + csinh F + csinhf F + csinhl F + csinl F + csqrt F + csqrtf F + csqrtl F + ctan F + ctanf F + ctanh F + ctanhf F + ctanhl F + ctanl F + drem F + dremf F + dreml F + erf F + erfc F + erfcf F + erfcl F + erff F + erfl F + exp F + exp10 F + exp10f F + exp10l F + exp2 F + exp2f F + exp2l F + expf F + expl F + expm1 F + expm1f F + expm1l F + fabs F + fabsf F + fabsl F + fdim F + fdimf F + fdiml F + feclearexcept F + fedisableexcept F + feenableexcept F + fegetenv F + fegetexcept F + fegetexceptflag F + fegetround F + feholdexcept F + feraiseexcept F + fesetenv F + fesetexceptflag F + fesetround F + fetestexcept F + feupdateenv F + finite F + finitef F + finitel F + floor F + floorf F + floorl F + fma F + fmaf F + fmal F + fmax F + fmaxf F + fmaxl F + fmin F + fminf F + fminl F + fmod F + fmodf F + fmodl F + frexp F + frexpf F + frexpl F + gamma F + gammaf F + gammal F + hypot F + hypotf F + hypotl F + ilogb F + ilogbf F + ilogbl F + j0 F + j0f F + j0l F + j1 F + j1f F + j1l F + jn F + jnf F + jnl F + ldexp F + ldexpf F + ldexpl F + lgamma F + lgamma_r F + lgammaf F + lgammaf_r F + lgammal F + lgammal_r F + llrint F + llrintf F + llrintl F + llround F + llroundf F + llroundl F + log F + log10 F + log10f F + log10l F + log1p F + log1pf F + log1pl F + log2 F + log2f F + log2l F + logb F + logbf F + logbl F + logf F + logl F + lrint F + lrintf F + lrintl F + lround F + lroundf F + lroundl F + matherr F + modf F + modff F + modfl F + nan F + nanf F + nanl F + nearbyint F + nearbyintf F + nearbyintl F + nextafter F + nextafterf F + nextafterl F + nexttoward F + nexttowardf F + nexttowardl F + pow F + pow10 F + pow10f F + pow10l F + powf F + powl F + remainder F + remainderf F + remainderl F + remquo F + remquof F + remquol F + rint F + rintf F + rintl F + round F + roundf F + roundl F + scalb F + scalbf F + scalbl F + scalbln F + scalblnf F + scalblnl F + scalbn F + scalbnf F + scalbnl F + signgam D 0x4 + significand F + significandf F + significandl F + sin F + sincos F + sincosf F + sincosl F + sinf F + sinh F + sinhf F + sinhl F + sinl F + sqrt F + sqrtf F + sqrtl F + tan F + tanf F + tanh F + tanhf F + tanhl F + tanl F + tgamma F + tgammaf F + tgammal F + trunc F + truncf F + truncl F + y0 F + y0f F + y0l F + y1 F + y1f F + y1l F + yn F + ynf F + ynl F +GLIBC_2.15 + GLIBC_2.15 A + __acos_finite F + __acosf_finite F + __acosh_finite F + __acoshf_finite F + __asin_finite F + __asinf_finite F + __atan2_finite F + __atan2f_finite F + __atanh_finite F + __atanhf_finite F + __cosh_finite F + __coshf_finite F + __exp10_finite F + __exp10f_finite F + __exp2_finite F + __exp2f_finite F + __exp_finite F + __expf_finite F + __fmod_finite F + __fmodf_finite F + __gamma_r_finite F + __gammaf_r_finite F + __hypot_finite F + __hypotf_finite F + __j0_finite F + __j0f_finite F + __j1_finite F + __j1f_finite F + __jn_finite F + __jnf_finite F + __lgamma_r_finite F + __lgammaf_r_finite F + __log10_finite F + __log10f_finite F + __log2_finite F + __log2f_finite F + __log_finite F + __logf_finite F + __pow_finite F + __powf_finite F + __remainder_finite F + __remainderf_finite F + __scalb_finite F + __scalbf_finite F + __sinh_finite F + __sinhf_finite F + __sqrt_finite F + __sqrtf_finite F + __y0_finite F + __y0f_finite F + __y1_finite F + __y1f_finite F + __yn_finite F + __ynf_finite F +GLIBC_2.18 + GLIBC_2.18 A + __issignaling F + __issignalingf F diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libnsl.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libnsl.abilist new file mode 100644 index 0000000000..e4217934c8 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libnsl.abilist @@ -0,0 +1,123 @@ +GLIBC_2.12 + GLIBC_2.12 A + __free_fdresult F + __nis_default_access F + __nis_default_group F + __nis_default_owner F + __nis_default_ttl F + __nis_finddirectory F + __nis_hash F + __nisbind_connect F + __nisbind_create F + __nisbind_destroy F + __nisbind_next F + __yp_check F + nis_add F + nis_add_entry F + nis_addmember F + nis_checkpoint F + nis_clone_directory F + nis_clone_object F + nis_clone_result F + nis_creategroup F + nis_destroy_object F + nis_destroygroup F + nis_dir_cmp F + nis_domain_of F + nis_domain_of_r F + nis_first_entry F + nis_free_directory F + nis_free_object F + nis_free_request F + nis_freenames F + nis_freeresult F + nis_freeservlist F + nis_freetags F + nis_getnames F + nis_getservlist F + nis_ismember F + nis_leaf_of F + nis_leaf_of_r F + nis_lerror F + nis_list F + nis_local_directory F + nis_local_group F + nis_local_host F + nis_local_principal F + nis_lookup F + nis_mkdir F + nis_modify F + nis_modify_entry F + nis_name_of F + nis_name_of_r F + nis_next_entry F + nis_perror F + nis_ping F + nis_print_directory F + nis_print_entry F + nis_print_group F + nis_print_group_entry F + nis_print_link F + nis_print_object F + nis_print_result F + nis_print_rights F + nis_print_table F + nis_read_obj F + nis_remove F + nis_remove_entry F + nis_removemember F + nis_rmdir F + nis_servstate F + nis_sperrno F + nis_sperror F + nis_sperror_r F + nis_stats F + nis_verifygroup F + nis_write_obj F + readColdStartFile F + writeColdStartFile F + xdr_cback_data F + xdr_domainname F + xdr_keydat F + xdr_mapname F + xdr_obj_p F + xdr_peername F + xdr_valdat F + xdr_yp_buf F + xdr_ypall F + xdr_ypbind_binding F + xdr_ypbind_resp F + xdr_ypbind_resptype F + xdr_ypbind_setdom F + xdr_ypdelete_args F + xdr_ypmap_parms F + xdr_ypmaplist F + xdr_yppush_status F + xdr_yppushresp_xfr F + xdr_ypreq_key F + xdr_ypreq_nokey F + xdr_ypreq_xfr F + xdr_ypresp_all F + xdr_ypresp_key_val F + xdr_ypresp_maplist F + xdr_ypresp_master F + xdr_ypresp_order F + xdr_ypresp_val F + xdr_ypresp_xfr F + xdr_ypstat F + xdr_ypupdate_args F + xdr_ypxfrstat F + yp_all F + yp_bind F + yp_first F + yp_get_default_domain F + yp_maplist F + yp_master F + yp_match F + yp_next F + yp_order F + yp_unbind F + yp_update F + ypbinderr_string F + yperr_string F + ypprot_err F diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libpthread.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libpthread.abilist new file mode 100644 index 0000000000..f3c260071a --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libpthread.abilist @@ -0,0 +1,228 @@ +GLIBC_2.12 + GLIBC_2.12 A + _IO_flockfile F + _IO_ftrylockfile F + _IO_funlockfile F + __close F + __connect F + __errno_location F + __fcntl F + __fork F + __h_errno_location F + __libc_allocate_rtsig F + __libc_current_sigrtmax F + __libc_current_sigrtmin F + __lseek F + __nanosleep F + __open F + __open64 F + __pread64 F + __pthread_cleanup_routine F + __pthread_getspecific F + __pthread_key_create F + __pthread_mutex_destroy F + __pthread_mutex_init F + __pthread_mutex_lock F + __pthread_mutex_trylock F + __pthread_mutex_unlock F + __pthread_mutexattr_destroy F + __pthread_mutexattr_init F + __pthread_mutexattr_settype F + __pthread_once F + __pthread_register_cancel F + __pthread_register_cancel_defer F + __pthread_rwlock_destroy F + __pthread_rwlock_init F + __pthread_rwlock_rdlock F + __pthread_rwlock_tryrdlock F + __pthread_rwlock_trywrlock F + __pthread_rwlock_unlock F + __pthread_rwlock_wrlock F + __pthread_setspecific F + __pthread_unregister_cancel F + __pthread_unregister_cancel_restore F + __pthread_unwind_next F + __pwrite64 F + __read F + __res_state F + __send F + __sigaction F + __vfork F + __wait F + __write F + _pthread_cleanup_pop F + _pthread_cleanup_pop_restore F + _pthread_cleanup_push F + _pthread_cleanup_push_defer F + accept F + close F + connect F + fcntl F + flockfile F + fork F + fsync F + ftrylockfile F + funlockfile F + longjmp F + lseek F + lseek64 F + msync F + nanosleep F + open F + open64 F + pause F + pread F + pread64 F + pthread_attr_destroy F + pthread_attr_getaffinity_np F + pthread_attr_getdetachstate F + pthread_attr_getguardsize F + pthread_attr_getinheritsched F + pthread_attr_getschedparam F + pthread_attr_getschedpolicy F + pthread_attr_getscope F + pthread_attr_getstack F + pthread_attr_getstackaddr F + pthread_attr_getstacksize F + pthread_attr_init F + pthread_attr_setaffinity_np F + pthread_attr_setdetachstate F + pthread_attr_setguardsize F + pthread_attr_setinheritsched F + pthread_attr_setschedparam F + pthread_attr_setschedpolicy F + pthread_attr_setscope F + pthread_attr_setstack F + pthread_attr_setstackaddr F + pthread_attr_setstacksize F + pthread_barrier_destroy F + pthread_barrier_init F + pthread_barrier_wait F + pthread_barrierattr_destroy F + pthread_barrierattr_getpshared F + pthread_barrierattr_init F + pthread_barrierattr_setpshared F + pthread_cancel F + pthread_cond_broadcast F + pthread_cond_destroy F + pthread_cond_init F + pthread_cond_signal F + pthread_cond_timedwait F + pthread_cond_wait F + pthread_condattr_destroy F + pthread_condattr_getclock F + pthread_condattr_getpshared F + pthread_condattr_init F + pthread_condattr_setclock F + pthread_condattr_setpshared F + pthread_create F + pthread_detach F + pthread_equal F + pthread_exit F + pthread_getaffinity_np F + pthread_getattr_np F + pthread_getconcurrency F + pthread_getcpuclockid F + pthread_getname_np F + pthread_getschedparam F + pthread_getspecific F + pthread_join F + pthread_key_create F + pthread_key_delete F + pthread_kill F + pthread_kill_other_threads_np F + pthread_mutex_consistent F + pthread_mutex_consistent_np F + pthread_mutex_destroy F + pthread_mutex_getprioceiling F + pthread_mutex_init F + pthread_mutex_lock F + pthread_mutex_setprioceiling F + pthread_mutex_timedlock F + pthread_mutex_trylock F + pthread_mutex_unlock F + pthread_mutexattr_destroy F + pthread_mutexattr_getkind_np F + pthread_mutexattr_getprioceiling F + pthread_mutexattr_getprotocol F + pthread_mutexattr_getpshared F + pthread_mutexattr_getrobust F + pthread_mutexattr_getrobust_np F + pthread_mutexattr_gettype F + pthread_mutexattr_init F + pthread_mutexattr_setkind_np F + pthread_mutexattr_setprioceiling F + pthread_mutexattr_setprotocol F + pthread_mutexattr_setpshared F + pthread_mutexattr_setrobust F + pthread_mutexattr_setrobust_np F + pthread_mutexattr_settype F + pthread_once F + pthread_rwlock_destroy F + pthread_rwlock_init F + pthread_rwlock_rdlock F + pthread_rwlock_timedrdlock F + pthread_rwlock_timedwrlock F + pthread_rwlock_tryrdlock F + pthread_rwlock_trywrlock F + pthread_rwlock_unlock F + pthread_rwlock_wrlock F + pthread_rwlockattr_destroy F + pthread_rwlockattr_getkind_np F + pthread_rwlockattr_getpshared F + pthread_rwlockattr_init F + pthread_rwlockattr_setkind_np F + pthread_rwlockattr_setpshared F + pthread_self F + pthread_setaffinity_np F + pthread_setcancelstate F + pthread_setcanceltype F + pthread_setconcurrency F + pthread_setname_np F + pthread_setschedparam F + pthread_setschedprio F + pthread_setspecific F + pthread_sigmask F + pthread_sigqueue F + pthread_spin_destroy F + pthread_spin_init F + pthread_spin_lock F + pthread_spin_trylock F + pthread_spin_unlock F + pthread_testcancel F + pthread_timedjoin_np F + pthread_tryjoin_np F + pthread_yield F + pwrite F + pwrite64 F + raise F + read F + recv F + recvfrom F + recvmsg F + sem_close F + sem_destroy F + sem_getvalue F + sem_init F + sem_open F + sem_post F + sem_timedwait F + sem_trywait F + sem_unlink F + sem_wait F + send F + sendmsg F + sendto F + sigaction F + siglongjmp F + sigwait F + system F + tcdrain F + vfork F + wait F + waitpid F + write F +GLIBC_2.18 + GLIBC_2.18 A + pthread_getattr_default_np F + pthread_setattr_default_np F diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libresolv.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libresolv.abilist new file mode 100644 index 0000000000..64826160a1 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libresolv.abilist @@ -0,0 +1,93 @@ +GLIBC_2.12 + GLIBC_2.12 A + __b64_ntop F + __b64_pton F + __dn_comp F + __dn_count_labels F + __dn_expand F + __dn_skipname F + __fp_nquery F + __fp_query F + __fp_resstat F + __hostalias F + __loc_aton F + __loc_ntoa F + __p_cdname F + __p_cdnname F + __p_class F + __p_class_syms D 0x54 + __p_fqname F + __p_fqnname F + __p_option F + __p_query F + __p_rcode F + __p_secstodate F + __p_time F + __p_type F + __p_type_syms D 0x228 + __putlong F + __putshort F + __res_close F + __res_dnok F + __res_hnok F + __res_hostalias F + __res_isourserver F + __res_mailok F + __res_mkquery F + __res_nameinquery F + __res_nmkquery F + __res_nquery F + __res_nquerydomain F + __res_nsearch F + __res_nsend F + __res_ownok F + __res_queriesmatch F + __res_query F + __res_querydomain F + __res_search F + __res_send F + __sym_ntop F + __sym_ntos F + __sym_ston F + _gethtbyaddr F + _gethtbyname F + _gethtbyname2 F + _gethtent F + _getlong F + _getshort F + _res_opcodes D 0x40 + _sethtent F + inet_net_ntop F + inet_net_pton F + inet_neta F + ns_datetosecs F + ns_format_ttl F + ns_get16 F + ns_get32 F + ns_initparse F + ns_makecanon F + ns_msg_getflag F + ns_name_compress F + ns_name_ntol F + ns_name_ntop F + ns_name_pack F + ns_name_pton F + ns_name_rollback F + ns_name_skip F + ns_name_uncompress F + ns_name_unpack F + ns_parse_ttl F + ns_parserr F + ns_put16 F + ns_put32 F + ns_samedomain F + ns_samename F + ns_skiprr F + ns_sprintrr F + ns_sprintrrf F + ns_subdomain F + res_gethostbyaddr F + res_gethostbyname F + res_gethostbyname2 F + res_send_setqhook F + res_send_setrhook F diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/librt.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/librt.abilist new file mode 100644 index 0000000000..87fec065af --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/librt.abilist @@ -0,0 +1,42 @@ +GLIBC_2.12 + GLIBC_2.12 A + __mq_open_2 F + aio_cancel F + aio_cancel64 F + aio_error F + aio_error64 F + aio_fsync F + aio_fsync64 F + aio_init F + aio_read F + aio_read64 F + aio_return F + aio_return64 F + aio_suspend F + aio_suspend64 F + aio_write F + aio_write64 F + clock_getcpuclockid F + clock_getres F + clock_gettime F + clock_nanosleep F + clock_settime F + lio_listio F + lio_listio64 F + mq_close F + mq_getattr F + mq_notify F + mq_open F + mq_receive F + mq_send F + mq_setattr F + mq_timedreceive F + mq_timedsend F + mq_unlink F + shm_open F + shm_unlink F + timer_create F + timer_delete F + timer_getoverrun F + timer_gettime F + timer_settime F diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libthread_db.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libthread_db.abilist new file mode 100644 index 0000000000..934ce9acd6 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libthread_db.abilist @@ -0,0 +1,42 @@ +GLIBC_2.12 + GLIBC_2.12 A + td_init F + td_log F + td_symbol_list F + td_ta_clear_event F + td_ta_delete F + td_ta_enable_stats F + td_ta_event_addr F + td_ta_event_getmsg F + td_ta_get_nthreads F + td_ta_get_ph F + td_ta_get_stats F + td_ta_map_id2thr F + td_ta_map_lwp2thr F + td_ta_new F + td_ta_reset_stats F + td_ta_set_event F + td_ta_setconcurrency F + td_ta_thr_iter F + td_ta_tsd_iter F + td_thr_clear_event F + td_thr_dbresume F + td_thr_dbsuspend F + td_thr_event_enable F + td_thr_event_getmsg F + td_thr_get_info F + td_thr_getfpregs F + td_thr_getgregs F + td_thr_getxregs F + td_thr_getxregsize F + td_thr_set_event F + td_thr_setfpregs F + td_thr_setgregs F + td_thr_setprio F + td_thr_setsigpending F + td_thr_setxregs F + td_thr_sigsetmask F + td_thr_tls_get_addr F + td_thr_tlsbase F + td_thr_tsd F + td_thr_validate F diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libutil.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libutil.abilist new file mode 100644 index 0000000000..50c312a7c6 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libutil.abilist @@ -0,0 +1,8 @@ +GLIBC_2.12 + GLIBC_2.12 A + forkpty F + login F + login_tty F + logout F + logwtmp F + openpty F diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/Implies b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/Implies new file mode 100644 index 0000000000..e4e0800c0a --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/Implies @@ -0,0 +1,4 @@ +unix/sysv/linux/tile/tilegx +unix/sysv/linux/tile +unix/sysv/linux/generic +unix/sysv/linux/wordsize-64 diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/Makefile b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/Makefile new file mode 100644 index 0000000000..c8991d31e4 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/Makefile @@ -0,0 +1 @@ +default-abi := 64 diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/c++-types.data b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/c++-types.data new file mode 100644 index 0000000000..ac925ccb36 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/c++-types.data @@ -0,0 +1,67 @@ +blkcnt64_t:l +blkcnt_t:l +blksize_t:i +caddr_t:Pc +clockid_t:i +clock_t:l +daddr_t:i +dev_t:m +fd_mask:l +fsblkcnt64_t:m +fsblkcnt_t:m +fsfilcnt64_t:m +fsfilcnt_t:m +fsid_t:8__fsid_t +gid_t:j +id_t:j +ino64_t:m +ino_t:m +int16_t:s +int32_t:i +int64_t:l +int8_t:a +intptr_t:l +key_t:i +loff_t:l +mode_t:j +nlink_t:j +off64_t:l +off_t:l +pid_t:i +pthread_attr_t:14pthread_attr_t +pthread_barrier_t:17pthread_barrier_t +pthread_barrierattr_t:21pthread_barrierattr_t +pthread_cond_t:14pthread_cond_t +pthread_condattr_t:18pthread_condattr_t +pthread_key_t:j +pthread_mutex_t:15pthread_mutex_t +pthread_mutexattr_t:19pthread_mutexattr_t +pthread_once_t:i +pthread_rwlock_t:16pthread_rwlock_t +pthread_rwlockattr_t:20pthread_rwlockattr_t +pthread_spinlock_t:i +pthread_t:m +quad_t:l +register_t:l +rlim64_t:m +rlim_t:m +sigset_t:10__sigset_t +size_t:m +socklen_t:j +ssize_t:l +suseconds_t:l +time_t:l +u_char:h +uid_t:j +uint:j +u_int:j +u_int16_t:t +u_int32_t:j +u_int64_t:m +u_int8_t:h +ulong:m +u_long:m +u_quad_t:m +useconds_t:j +ushort:t +u_short:t diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/ld.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/ld.abilist new file mode 100644 index 0000000000..f914e4b82d --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/ld.abilist @@ -0,0 +1,11 @@ +GLIBC_2.12 + GLIBC_2.12 A + __libc_memalign F + __libc_stack_end D 0x8 + __tls_get_addr F + _dl_mcount F + _r_debug D 0x28 + calloc F + free F + malloc F + realloc F diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libBrokenLocale.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libBrokenLocale.abilist new file mode 100644 index 0000000000..4af9128544 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libBrokenLocale.abilist @@ -0,0 +1,3 @@ +GLIBC_2.12 + GLIBC_2.12 A + __ctype_get_mb_cur_max F diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libanl.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libanl.abilist new file mode 100644 index 0000000000..29e602a75a --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libanl.abilist @@ -0,0 +1,6 @@ +GLIBC_2.12 + GLIBC_2.12 A + gai_cancel F + gai_error F + gai_suspend F + getaddrinfo_a F diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libc.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libc.abilist new file mode 100644 index 0000000000..68d975be55 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libc.abilist @@ -0,0 +1,2093 @@ +GLIBC_2.12 + GLIBC_2.12 A + _Exit F + _IO_2_1_stderr_ D 0xe0 + _IO_2_1_stdin_ D 0xe0 + _IO_2_1_stdout_ D 0xe0 + _IO_adjust_column F + _IO_adjust_wcolumn F + _IO_default_doallocate F + _IO_default_finish F + _IO_default_pbackfail F + _IO_default_uflow F + _IO_default_xsgetn F + _IO_default_xsputn F + _IO_do_write F + _IO_doallocbuf F + _IO_fclose F + _IO_fdopen F + _IO_feof F + _IO_ferror F + _IO_fflush F + _IO_fgetpos F + _IO_fgetpos64 F + _IO_fgets F + _IO_file_attach F + _IO_file_close F + _IO_file_close_it F + _IO_file_doallocate F + _IO_file_finish F + _IO_file_fopen F + _IO_file_init F + _IO_file_jumps D 0xa8 + _IO_file_open F + _IO_file_overflow F + _IO_file_read F + _IO_file_seek F + _IO_file_seekoff F + _IO_file_setbuf F + _IO_file_stat F + _IO_file_sync F + _IO_file_underflow F + _IO_file_write F + _IO_file_xsputn F + _IO_flockfile F + _IO_flush_all F + _IO_flush_all_linebuffered F + _IO_fopen F + _IO_fprintf F + _IO_fputs F + _IO_fread F + _IO_free_backup_area F + _IO_free_wbackup_area F + _IO_fsetpos F + _IO_fsetpos64 F + _IO_ftell F + _IO_ftrylockfile F + _IO_funlockfile F + _IO_fwrite F + _IO_getc F + _IO_getline F + _IO_getline_info F + _IO_gets F + _IO_init F + _IO_init_marker F + _IO_init_wmarker F + _IO_iter_begin F + _IO_iter_end F + _IO_iter_file F + _IO_iter_next F + _IO_least_wmarker F + _IO_link_in F + _IO_list_all D 0x8 + _IO_list_lock F + _IO_list_resetlock F + _IO_list_unlock F + _IO_marker_delta F + _IO_marker_difference F + _IO_padn F + _IO_peekc_locked F + _IO_popen F + _IO_printf F + _IO_proc_close F + _IO_proc_open F + _IO_putc F + _IO_puts F + _IO_remove_marker F + _IO_seekmark F + _IO_seekoff F + _IO_seekpos F + _IO_seekwmark F + _IO_setb F + _IO_setbuffer F + _IO_setvbuf F + _IO_sgetn F + _IO_sprintf F + _IO_sputbackc F + _IO_sputbackwc F + _IO_sscanf F + _IO_str_init_readonly F + _IO_str_init_static F + _IO_str_overflow F + _IO_str_pbackfail F + _IO_str_seekoff F + _IO_str_underflow F + _IO_sungetc F + _IO_sungetwc F + _IO_switch_to_get_mode F + _IO_switch_to_main_wget_area F + _IO_switch_to_wbackup_area F + _IO_switch_to_wget_mode F + _IO_un_link F + _IO_ungetc F + _IO_unsave_markers F + _IO_unsave_wmarkers F + _IO_vfprintf F + _IO_vfscanf F + _IO_vsprintf F + _IO_wdefault_doallocate F + _IO_wdefault_finish F + _IO_wdefault_pbackfail F + _IO_wdefault_uflow F + _IO_wdefault_xsgetn F + _IO_wdefault_xsputn F + _IO_wdo_write F + _IO_wdoallocbuf F + _IO_wfile_jumps D 0xa8 + _IO_wfile_overflow F + _IO_wfile_seekoff F + _IO_wfile_sync F + _IO_wfile_underflow F + _IO_wfile_xsputn F + _IO_wmarker_delta F + _IO_wsetb F + ___brk_addr D 0x8 + __adjtimex F + __after_morecore_hook D 0x8 + __argz_count F + __argz_next F + __argz_stringify F + __asprintf F + __asprintf_chk F + __assert F + __assert_fail F + __assert_perror_fail F + __backtrace F + __backtrace_symbols F + __backtrace_symbols_fd F + __bsd_getpgrp F + __bzero F + __check_rhosts_file D 0x4 + __chk_fail F + __clone F + __close F + __cmsg_nxthdr F + __confstr_chk F + __connect F + __ctype_b_loc F + __ctype_get_mb_cur_max F + __ctype_tolower_loc F + __ctype_toupper_loc F + __curbrk D 0x8 + __cxa_at_quick_exit F + __cxa_atexit F + __cxa_finalize F + __cyg_profile_func_enter F + __cyg_profile_func_exit F + __daylight D 0x4 + __dcgettext F + __default_morecore F + __dgettext F + __dprintf_chk F + __dup2 F + __duplocale F + __endmntent F + __environ D 0x8 + __errno_location F + __fbufsize F + __fcntl F + __ffs F + __fgets_chk F + __fgets_unlocked_chk F + __fgetws_chk F + __fgetws_unlocked_chk F + __finite F + __finitef F + __flbf F + __fork F + __fpending F + __fprintf_chk F + __fpu_control D 0x4 + __fpurge F + __fread_chk F + __fread_unlocked_chk F + __freadable F + __freading F + __free_hook D 0x8 + __freelocale F + __fsetlocking F + __fwprintf_chk F + __fwritable F + __fwriting F + __fxstat F + __fxstat64 F + __fxstatat F + __fxstatat64 F + __getcwd_chk F + __getdelim F + __getdomainname_chk F + __getgroups_chk F + __gethostname_chk F + __getlogin_r_chk F + __getmntent_r F + __getpagesize F + __getpgid F + __getpid F + __gets_chk F + __gettimeofday F + __getwd_chk F + __gmtime_r F + __h_errno_location F + __isalnum_l F + __isalpha_l F + __isascii_l F + __isblank_l F + __iscntrl_l F + __isctype F + __isdigit_l F + __isgraph_l F + __isinf F + __isinff F + __islower_l F + __isnan F + __isnanf F + __isoc99_fscanf F + __isoc99_fwscanf F + __isoc99_scanf F + __isoc99_sscanf F + __isoc99_swscanf F + __isoc99_vfscanf F + __isoc99_vfwscanf F + __isoc99_vscanf F + __isoc99_vsscanf F + __isoc99_vswscanf F + __isoc99_vwscanf F + __isoc99_wscanf F + __isprint_l F + __ispunct_l F + __isspace_l F + __isupper_l F + __iswalnum_l F + __iswalpha_l F + __iswblank_l F + __iswcntrl_l F + __iswctype F + __iswctype_l F + __iswdigit_l F + __iswgraph_l F + __iswlower_l F + __iswprint_l F + __iswpunct_l F + __iswspace_l F + __iswupper_l F + __iswxdigit_l F + __isxdigit_l F + __ivaliduser F + __key_decryptsession_pk_LOCAL D 0x8 + __key_encryptsession_pk_LOCAL D 0x8 + __key_gendes_LOCAL D 0x8 + __libc_allocate_rtsig F + __libc_calloc F + __libc_current_sigrtmax F + __libc_current_sigrtmin F + __libc_free F + __libc_freeres F + __libc_init_first F + __libc_mallinfo F + __libc_malloc F + __libc_mallopt F + __libc_memalign F + __libc_pvalloc F + __libc_realloc F + __libc_sa_len F + __libc_start_main F + __libc_valloc F + __longjmp_chk F + __lseek F + __lxstat F + __lxstat64 F + __malloc_hook D 0x8 + __malloc_initialize_hook D 0x8 + __mbrlen F + __mbrtowc F + __mbsnrtowcs_chk F + __mbsrtowcs_chk F + __mbstowcs_chk F + __mcount F + __memalign_hook D 0x8 + __memcpy_chk F + __memmove_chk F + __mempcpy F + __mempcpy_chk F + __mempcpy_small F + __memset_chk F + __monstartup F + __morecore D 0x8 + __nanosleep F + __newlocale F + __nl_langinfo_l F + __nss_configure_lookup F + __nss_database_lookup F + __nss_group_lookup F + __nss_hostname_digits_dots F + __nss_hosts_lookup F + __nss_next F + __nss_passwd_lookup F + __obstack_printf_chk F + __obstack_vprintf_chk F + __open F + __open64 F + __open64_2 F + __open_2 F + __openat64_2 F + __openat_2 F + __overflow F + __pipe F + __poll F + __posix_getopt F + __pread64 F + __pread64_chk F + __pread_chk F + __printf_chk F + __printf_fp F + __profile_frequency F + __progname D 0x8 + __progname_full D 0x8 + __ptsname_r_chk F + __pwrite64 F + __rawmemchr F + __rcmd_errstr D 0x8 + __read F + __read_chk F + __readlink_chk F + __readlinkat_chk F + __realloc_hook D 0x8 + __realpath_chk F + __recv_chk F + __recvfrom_chk F + __register_atfork F + __res_init F + __res_nclose F + __res_ninit F + __res_randomid F + __res_state F + __rpc_thread_createerr F + __rpc_thread_svc_fdset F + __rpc_thread_svc_max_pollfd F + __rpc_thread_svc_pollfd F + __sbrk F + __sched_cpualloc F + __sched_cpucount F + __sched_cpufree F + __sched_get_priority_max F + __sched_get_priority_min F + __sched_getparam F + __sched_getscheduler F + __sched_setscheduler F + __sched_yield F + __secure_getenv F + __select F + __setmntent F + __setpgid F + __sigaction F + __sigaddset F + __sigdelset F + __sigismember F + __signbit F + __signbitf F + __sigpause F + __sigsetjmp F + __sigsuspend F + __snprintf_chk F + __sprintf_chk F + __stack_chk_fail F + __statfs F + __stpcpy F + __stpcpy_chk F + __stpcpy_small F + __stpncpy F + __stpncpy_chk F + __strcasecmp F + __strcasecmp_l F + __strcasestr F + __strcat_chk F + __strcoll_l F + __strcpy_chk F + __strcpy_small F + __strcspn_c1 F + __strcspn_c2 F + __strcspn_c3 F + __strdup F + __strerror_r F + __strfmon_l F + __strftime_l F + __strncasecmp_l F + __strncat_chk F + __strncpy_chk F + __strndup F + __strpbrk_c2 F + __strpbrk_c3 F + __strsep_1c F + __strsep_2c F + __strsep_3c F + __strsep_g F + __strspn_c1 F + __strspn_c2 F + __strspn_c3 F + __strtod_internal F + __strtod_l F + __strtof_internal F + __strtof_l F + __strtok_r F + __strtok_r_1c F + __strtol_internal F + __strtol_l F + __strtold_internal F + __strtold_l F + __strtoll_internal F + __strtoll_l F + __strtoul_internal F + __strtoul_l F + __strtoull_internal F + __strtoull_l F + __strverscmp F + __strxfrm_l F + __swprintf_chk F + __sysconf F + __syslog_chk F + __sysv_signal F + __timezone D 0x8 + __toascii_l F + __tolower_l F + __toupper_l F + __towctrans F + __towctrans_l F + __towlower_l F + __towupper_l F + __ttyname_r_chk F + __tzname D 0x10 + __uflow F + __underflow F + __uselocale F + __vasprintf_chk F + __vdprintf_chk F + __vfork F + __vfprintf_chk F + __vfscanf F + __vfwprintf_chk F + __vprintf_chk F + __vsnprintf F + __vsnprintf_chk F + __vsprintf_chk F + __vsscanf F + __vswprintf_chk F + __vsyslog_chk F + __vwprintf_chk F + __wait F + __waitpid F + __wcpcpy_chk F + __wcpncpy_chk F + __wcrtomb_chk F + __wcscasecmp_l F + __wcscat_chk F + __wcscoll_l F + __wcscpy_chk F + __wcsftime_l F + __wcsncasecmp_l F + __wcsncat_chk F + __wcsncpy_chk F + __wcsnrtombs_chk F + __wcsrtombs_chk F + __wcstod_internal F + __wcstod_l F + __wcstof_internal F + __wcstof_l F + __wcstol_internal F + __wcstol_l F + __wcstold_internal F + __wcstold_l F + __wcstoll_internal F + __wcstoll_l F + __wcstombs_chk F + __wcstoul_internal F + __wcstoul_l F + __wcstoull_internal F + __wcstoull_l F + __wcsxfrm_l F + __wctomb_chk F + __wctrans_l F + __wctype_l F + __wmemcpy_chk F + __wmemmove_chk F + __wmempcpy_chk F + __wmemset_chk F + __woverflow F + __wprintf_chk F + __write F + __wuflow F + __wunderflow F + __xmknod F + __xmknodat F + __xpg_basename F + __xpg_sigpause F + __xpg_strerror_r F + __xstat F + __xstat64 F + _authenticate F + _dl_mcount_wrapper F + _dl_mcount_wrapper_check F + _environ D 0x8 + _exit F + _flush_cache F + _flushlbf F + _libc_intl_domainname D 0x5 + _longjmp F + _mcleanup F + _mcount F + _nl_default_dirname D 0x12 + _nl_domain_bindings D 0x8 + _nl_msg_cat_cntr D 0x4 + _null_auth D 0x18 + _obstack_allocated_p F + _obstack_begin F + _obstack_begin_1 F + _obstack_free F + _obstack_memory_used F + _obstack_newchunk F + _res D 0x238 + _res_hconf D 0x48 + _rpc_dtablesize F + _seterr_reply F + _setjmp F + _sys_errlist D 0x438 + _sys_nerr D 0x4 + _sys_siglist D 0x208 + _tolower F + _toupper F + a64l F + abort F + abs F + accept F + accept4 F + access F + acct F + addmntent F + addseverity F + adjtime F + adjtimex F + advance F + alarm F + alphasort F + alphasort64 F + argp_err_exit_status D 0x4 + argp_error F + argp_failure F + argp_help F + argp_parse F + argp_program_bug_address D 0x8 + argp_program_version D 0x8 + argp_program_version_hook D 0x8 + argp_state_help F + argp_usage F + argz_add F + argz_add_sep F + argz_append F + argz_count F + argz_create F + argz_create_sep F + argz_delete F + argz_extract F + argz_insert F + argz_next F + argz_replace F + argz_stringify F + asctime F + asctime_r F + asprintf F + atof F + atoi F + atol F + atoll F + authdes_create F + authdes_getucred F + authdes_pk_create F + authnone_create F + authunix_create F + authunix_create_default F + backtrace F + backtrace_symbols F + backtrace_symbols_fd F + basename F + bcmp F + bcopy F + bdflush F + bind F + bind_textdomain_codeset F + bindresvport F + bindtextdomain F + brk F + bsd_signal F + bsearch F + btowc F + bzero F + cacheflush F + calloc F + callrpc F + canonicalize_file_name F + capget F + capset F + catclose F + catgets F + catopen F + cbc_crypt F + cfgetispeed F + cfgetospeed F + cfmakeraw F + cfree F + cfsetispeed F + cfsetospeed F + cfsetspeed F + chdir F + chflags F + chmod F + chown F + chroot F + clearenv F + clearerr F + clearerr_unlocked F + clnt_broadcast F + clnt_create F + clnt_pcreateerror F + clnt_perrno F + clnt_perror F + clnt_spcreateerror F + clnt_sperrno F + clnt_sperror F + clntraw_create F + clnttcp_create F + clntudp_bufcreate F + clntudp_create F + clntunix_create F + clock F + clone F + close F + closedir F + closelog F + confstr F + connect F + copysign F + copysignf F + copysignl F + creat F + creat64 F + create_module F + ctermid F + ctime F + ctime_r F + cuserid F + daemon F + daylight D 0x4 + dcgettext F + dcngettext F + delete_module F + des_setparity F + dgettext F + difftime F + dirfd F + dirname F + div F + dl_iterate_phdr F + dngettext F + dprintf F + drand48 F + drand48_r F + dup F + dup2 F + dup3 F + duplocale F + dysize F + eaccess F + ecb_crypt F + ecvt F + ecvt_r F + endaliasent F + endfsent F + endgrent F + endhostent F + endmntent F + endnetent F + endnetgrent F + endprotoent F + endpwent F + endrpcent F + endservent F + endsgent F + endspent F + endttyent F + endusershell F + endutent F + endutxent F + environ D 0x8 + envz_add F + envz_entry F + envz_get F + envz_merge F + envz_remove F + envz_strip F + epoll_create F + epoll_create1 F + epoll_ctl F + epoll_pwait F + epoll_wait F + erand48 F + erand48_r F + err F + error F + error_at_line F + error_message_count D 0x4 + error_one_per_line D 0x4 + error_print_progname D 0x8 + errx F + ether_aton F + ether_aton_r F + ether_hostton F + ether_line F + ether_ntoa F + ether_ntoa_r F + ether_ntohost F + euidaccess F + eventfd F + eventfd_read F + eventfd_write F + execl F + execle F + execlp F + execv F + execve F + execvp F + execvpe F + exit F + faccessat F + fallocate F + fallocate64 F + fattach F + fchdir F + fchflags F + fchmod F + fchmodat F + fchown F + fchownat F + fclose F + fcloseall F + fcntl F + fcvt F + fcvt_r F + fdatasync F + fdetach F + fdopen F + fdopendir F + feof F + feof_unlocked F + ferror F + ferror_unlocked F + fexecve F + fflush F + fflush_unlocked F + ffs F + ffsl F + ffsll F + fgetc F + fgetc_unlocked F + fgetgrent F + fgetgrent_r F + fgetpos F + fgetpos64 F + fgetpwent F + fgetpwent_r F + fgets F + fgets_unlocked F + fgetsgent F + fgetsgent_r F + fgetspent F + fgetspent_r F + fgetwc F + fgetwc_unlocked F + fgetws F + fgetws_unlocked F + fgetxattr F + fileno F + fileno_unlocked F + finite F + finitef F + finitel F + flistxattr F + flock F + flockfile F + fmemopen F + fmtmsg F + fnmatch F + fopen F + fopen64 F + fopencookie F + fork F + fpathconf F + fprintf F + fputc F + fputc_unlocked F + fputs F + fputs_unlocked F + fputwc F + fputwc_unlocked F + fputws F + fputws_unlocked F + fread F + fread_unlocked F + free F + freeaddrinfo F + freeifaddrs F + freelocale F + fremovexattr F + freopen F + freopen64 F + frexp F + frexpf F + frexpl F + fscanf F + fseek F + fseeko F + fseeko64 F + fsetpos F + fsetpos64 F + fsetxattr F + fstatfs F + fstatfs64 F + fstatvfs F + fstatvfs64 F + fsync F + ftell F + ftello F + ftello64 F + ftime F + ftok F + ftruncate F + ftruncate64 F + ftrylockfile F + fts_children F + fts_close F + fts_open F + fts_read F + fts_set F + ftw F + ftw64 F + funlockfile F + futimens F + futimes F + futimesat F + fwide F + fwprintf F + fwrite F + fwrite_unlocked F + fwscanf F + gai_strerror F + gcvt F + get_avphys_pages F + get_current_dir_name F + get_kernel_syms F + get_myaddress F + get_nprocs F + get_nprocs_conf F + get_phys_pages F + getaddrinfo F + getaliasbyname F + getaliasbyname_r F + getaliasent F + getaliasent_r F + getc F + getc_unlocked F + getchar F + getchar_unlocked F + getcontext F + getcwd F + getdate F + getdate_err D 0x4 + getdate_r F + getdelim F + getdirentries F + getdirentries64 F + getdomainname F + getdtablesize F + getegid F + getenv F + geteuid F + getfsent F + getfsfile F + getfsspec F + getgid F + getgrent F + getgrent_r F + getgrgid F + getgrgid_r F + getgrnam F + getgrnam_r F + getgrouplist F + getgroups F + gethostbyaddr F + gethostbyaddr_r F + gethostbyname F + gethostbyname2 F + gethostbyname2_r F + gethostbyname_r F + gethostent F + gethostent_r F + gethostid F + gethostname F + getifaddrs F + getipv4sourcefilter F + getitimer F + getline F + getloadavg F + getlogin F + getlogin_r F + getmntent F + getmntent_r F + getmsg F + getnameinfo F + getnetbyaddr F + getnetbyaddr_r F + getnetbyname F + getnetbyname_r F + getnetent F + getnetent_r F + getnetgrent F + getnetgrent_r F + getnetname F + getopt F + getopt_long F + getopt_long_only F + getpagesize F + getpass F + getpeername F + getpgid F + getpgrp F + getpid F + getpmsg F + getppid F + getpriority F + getprotobyname F + getprotobyname_r F + getprotobynumber F + getprotobynumber_r F + getprotoent F + getprotoent_r F + getpt F + getpublickey F + getpw F + getpwent F + getpwent_r F + getpwnam F + getpwnam_r F + getpwuid F + getpwuid_r F + getresgid F + getresuid F + getrlimit F + getrlimit64 F + getrpcbyname F + getrpcbyname_r F + getrpcbynumber F + getrpcbynumber_r F + getrpcent F + getrpcent_r F + getrpcport F + getrusage F + gets F + getsecretkey F + getservbyname F + getservbyname_r F + getservbyport F + getservbyport_r F + getservent F + getservent_r F + getsgent F + getsgent_r F + getsgnam F + getsgnam_r F + getsid F + getsockname F + getsockopt F + getsourcefilter F + getspent F + getspent_r F + getspnam F + getspnam_r F + getsubopt F + gettext F + gettimeofday F + getttyent F + getttynam F + getuid F + getusershell F + getutent F + getutent_r F + getutid F + getutid_r F + getutline F + getutline_r F + getutmp F + getutmpx F + getutxent F + getutxid F + getutxline F + getw F + getwc F + getwc_unlocked F + getwchar F + getwchar_unlocked F + getwd F + getxattr F + glob F + glob64 F + glob_pattern_p F + globfree F + globfree64 F + gmtime F + gmtime_r F + gnu_dev_major F + gnu_dev_makedev F + gnu_dev_minor F + gnu_get_libc_release F + gnu_get_libc_version F + grantpt F + group_member F + gsignal F + gtty F + h_errlist D 0x28 + h_nerr D 0x4 + hasmntopt F + hcreate F + hcreate_r F + hdestroy F + hdestroy_r F + herror F + host2netname F + hsearch F + hsearch_r F + hstrerror F + htonl F + htons F + iconv F + iconv_close F + iconv_open F + if_freenameindex F + if_indextoname F + if_nameindex F + if_nametoindex F + imaxabs F + imaxdiv F + in6addr_any D 0x10 + in6addr_loopback D 0x10 + index F + inet6_opt_append F + inet6_opt_find F + inet6_opt_finish F + inet6_opt_get_val F + inet6_opt_init F + inet6_opt_next F + inet6_opt_set_val F + inet6_option_alloc F + inet6_option_append F + inet6_option_find F + inet6_option_init F + inet6_option_next F + inet6_option_space F + inet6_rth_add F + inet6_rth_getaddr F + inet6_rth_init F + inet6_rth_reverse F + inet6_rth_segments F + inet6_rth_space F + inet_addr F + inet_aton F + inet_lnaof F + inet_makeaddr F + inet_netof F + inet_network F + inet_nsap_addr F + inet_nsap_ntoa F + inet_ntoa F + inet_ntop F + inet_pton F + init_module F + initgroups F + initstate F + initstate_r F + innetgr F + inotify_add_watch F + inotify_init F + inotify_init1 F + inotify_rm_watch F + insque F + ioctl F + iruserok F + iruserok_af F + isalnum F + isalnum_l F + isalpha F + isalpha_l F + isascii F + isastream F + isatty F + isblank F + isblank_l F + iscntrl F + iscntrl_l F + isctype F + isdigit F + isdigit_l F + isfdtype F + isgraph F + isgraph_l F + isinf F + isinff F + isinfl F + islower F + islower_l F + isnan F + isnanf F + isnanl F + isprint F + isprint_l F + ispunct F + ispunct_l F + isspace F + isspace_l F + isupper F + isupper_l F + iswalnum F + iswalnum_l F + iswalpha F + iswalpha_l F + iswblank F + iswblank_l F + iswcntrl F + iswcntrl_l F + iswctype F + iswctype_l F + iswdigit F + iswdigit_l F + iswgraph F + iswgraph_l F + iswlower F + iswlower_l F + iswprint F + iswprint_l F + iswpunct F + iswpunct_l F + iswspace F + iswspace_l F + iswupper F + iswupper_l F + iswxdigit F + iswxdigit_l F + isxdigit F + isxdigit_l F + jrand48 F + jrand48_r F + key_decryptsession F + key_decryptsession_pk F + key_encryptsession F + key_encryptsession_pk F + key_gendes F + key_get_conv F + key_secretkey_is_set F + key_setnet F + key_setsecret F + kill F + killpg F + klogctl F + l64a F + labs F + lchmod F + lchown F + lckpwdf F + lcong48 F + lcong48_r F + ldexp F + ldexpf F + ldexpl F + ldiv F + lfind F + lgetxattr F + link F + linkat F + listen F + listxattr F + llabs F + lldiv F + llistxattr F + llseek F + loc1 D 0x8 + loc2 D 0x8 + localeconv F + localtime F + localtime_r F + lockf F + lockf64 F + locs D 0x8 + longjmp F + lrand48 F + lrand48_r F + lremovexattr F + lsearch F + lseek F + lseek64 F + lsetxattr F + lutimes F + madvise F + makecontext F + mallinfo F + malloc F + malloc_get_state F + malloc_info F + malloc_set_state F + malloc_stats F + malloc_trim F + malloc_usable_size F + mallopt F + mallwatch D 0x8 + mblen F + mbrlen F + mbrtowc F + mbsinit F + mbsnrtowcs F + mbsrtowcs F + mbstowcs F + mbtowc F + mcheck F + mcheck_check_all F + mcheck_pedantic F + mcount F + memalign F + memccpy F + memchr F + memcmp F + memcpy F + memfrob F + memmem F + memmove F + mempcpy F + memrchr F + memset F + mincore F + mkdir F + mkdirat F + mkdtemp F + mkfifo F + mkfifoat F + mkostemp F + mkostemp64 F + mkostemps F + mkostemps64 F + mkstemp F + mkstemp64 F + mkstemps F + mkstemps64 F + mktemp F + mktime F + mlock F + mlockall F + mmap F + mmap64 F + modf F + modff F + modfl F + moncontrol F + monstartup F + mount F + mprobe F + mprotect F + mrand48 F + mrand48_r F + mremap F + msgctl F + msgget F + msgrcv F + msgsnd F + msync F + mtrace F + munlock F + munlockall F + munmap F + muntrace F + nanosleep F + netname2host F + netname2user F + newlocale F + nfsservctl F + nftw F + nftw64 F + ngettext F + nice F + nl_langinfo F + nl_langinfo_l F + nrand48 F + nrand48_r F + ntohl F + ntohs F + ntp_adjtime F + ntp_gettime F + ntp_gettimex F + obstack_alloc_failed_handler D 0x8 + obstack_exit_failure D 0x4 + obstack_free F + obstack_printf F + obstack_vprintf F + on_exit F + open F + open64 F + open_memstream F + open_wmemstream F + openat F + openat64 F + opendir F + openlog F + optarg D 0x8 + opterr D 0x4 + optind D 0x4 + optopt D 0x4 + parse_printf_format F + passwd2des F + pathconf F + pause F + pclose F + perror F + personality F + pipe F + pipe2 F + pivot_root F + pmap_getmaps F + pmap_getport F + pmap_rmtcall F + pmap_set F + pmap_unset F + poll F + popen F + posix_fadvise F + posix_fadvise64 F + posix_fallocate F + posix_fallocate64 F + posix_madvise F + posix_memalign F + posix_openpt F + posix_spawn F + posix_spawn_file_actions_addclose F + posix_spawn_file_actions_adddup2 F + posix_spawn_file_actions_addopen F + posix_spawn_file_actions_destroy F + posix_spawn_file_actions_init F + posix_spawnattr_destroy F + posix_spawnattr_getflags F + posix_spawnattr_getpgroup F + posix_spawnattr_getschedparam F + posix_spawnattr_getschedpolicy F + posix_spawnattr_getsigdefault F + posix_spawnattr_getsigmask F + posix_spawnattr_init F + posix_spawnattr_setflags F + posix_spawnattr_setpgroup F + posix_spawnattr_setschedparam F + posix_spawnattr_setschedpolicy F + posix_spawnattr_setsigdefault F + posix_spawnattr_setsigmask F + posix_spawnp F + ppoll F + prctl F + pread F + pread64 F + preadv F + preadv64 F + printf F + printf_size F + printf_size_info F + profil F + program_invocation_name D 0x8 + program_invocation_short_name D 0x8 + pselect F + psiginfo F + psignal F + pthread_attr_destroy F + pthread_attr_getdetachstate F + pthread_attr_getinheritsched F + pthread_attr_getschedparam F + pthread_attr_getschedpolicy F + pthread_attr_getscope F + pthread_attr_init F + pthread_attr_setdetachstate F + pthread_attr_setinheritsched F + pthread_attr_setschedparam F + pthread_attr_setschedpolicy F + pthread_attr_setscope F + pthread_cond_broadcast F + pthread_cond_destroy F + pthread_cond_init F + pthread_cond_signal F + pthread_cond_timedwait F + pthread_cond_wait F + pthread_condattr_destroy F + pthread_condattr_init F + pthread_equal F + pthread_exit F + pthread_getschedparam F + pthread_mutex_destroy F + pthread_mutex_init F + pthread_mutex_lock F + pthread_mutex_unlock F + pthread_self F + pthread_setcancelstate F + pthread_setcanceltype F + pthread_setschedparam F + ptrace F + ptsname F + ptsname_r F + putc F + putc_unlocked F + putchar F + putchar_unlocked F + putenv F + putgrent F + putmsg F + putpmsg F + putpwent F + puts F + putsgent F + putspent F + pututline F + pututxline F + putw F + putwc F + putwc_unlocked F + putwchar F + putwchar_unlocked F + pvalloc F + pwrite F + pwrite64 F + pwritev F + pwritev64 F + qecvt F + qecvt_r F + qfcvt F + qfcvt_r F + qgcvt F + qsort F + qsort_r F + query_module F + quick_exit F + quotactl F + raise F + rand F + rand_r F + random F + random_r F + rawmemchr F + rcmd F + rcmd_af F + re_comp F + re_compile_fastmap F + re_compile_pattern F + re_exec F + re_match F + re_match_2 F + re_search F + re_search_2 F + re_set_registers F + re_set_syntax F + re_syntax_options D 0x8 + read F + readahead F + readdir F + readdir64 F + readdir64_r F + readdir_r F + readlink F + readlinkat F + readv F + realloc F + realpath F + reboot F + recv F + recvfrom F + recvmmsg F + recvmsg F + regcomp F + regerror F + regexec F + regfree F + register_printf_function F + register_printf_modifier F + register_printf_specifier F + register_printf_type F + registerrpc F + remap_file_pages F + remove F + removexattr F + remque F + rename F + renameat F + revoke F + rewind F + rewinddir F + rexec F + rexec_af F + rexecoptions D 0x4 + rindex F + rmdir F + rpc_createerr D 0x20 + rpmatch F + rresvport F + rresvport_af F + rtime F + ruserok F + ruserok_af F + ruserpass F + sbrk F + scalbn F + scalbnf F + scalbnl F + scandir F + scandir64 F + scanf F + sched_get_priority_max F + sched_get_priority_min F + sched_getaffinity F + sched_getcpu F + sched_getparam F + sched_getscheduler F + sched_rr_get_interval F + sched_setaffinity F + sched_setparam F + sched_setscheduler F + sched_yield F + seed48 F + seed48_r F + seekdir F + select F + semctl F + semget F + semop F + semtimedop F + send F + sendfile F + sendfile64 F + sendmsg F + sendto F + set_dataplane F + setaliasent F + setbuf F + setbuffer F + setcontext F + setdomainname F + setegid F + setenv F + seteuid F + setfsent F + setfsgid F + setfsuid F + setgid F + setgrent F + setgroups F + sethostent F + sethostid F + sethostname F + setipv4sourcefilter F + setitimer F + setjmp F + setlinebuf F + setlocale F + setlogin F + setlogmask F + setmntent F + setnetent F + setnetgrent F + setpgid F + setpgrp F + setpriority F + setprotoent F + setpwent F + setregid F + setresgid F + setresuid F + setreuid F + setrlimit F + setrlimit64 F + setrpcent F + setservent F + setsgent F + setsid F + setsockopt F + setsourcefilter F + setspent F + setstate F + setstate_r F + settimeofday F + setttyent F + setuid F + setusershell F + setutent F + setutxent F + setvbuf F + setxattr F + sgetsgent F + sgetsgent_r F + sgetspent F + sgetspent_r F + shmat F + shmctl F + shmdt F + shmget F + shutdown F + sigaction F + sigaddset F + sigaltstack F + sigandset F + sigblock F + sigdelset F + sigemptyset F + sigfillset F + siggetmask F + sighold F + sigignore F + siginterrupt F + sigisemptyset F + sigismember F + siglongjmp F + signal F + signalfd F + sigorset F + sigpause F + sigpending F + sigprocmask F + sigqueue F + sigrelse F + sigreturn F + sigset F + sigsetmask F + sigstack F + sigsuspend F + sigtimedwait F + sigvec F + sigwait F + sigwaitinfo F + sleep F + snprintf F + sockatmark F + socket F + socketpair F + splice F + sprintf F + sprofil F + srand F + srand48 F + srand48_r F + srandom F + srandom_r F + sscanf F + ssignal F + sstk F + statfs F + statfs64 F + statvfs F + statvfs64 F + stderr D 0x8 + stdin D 0x8 + stdout D 0x8 + step F + stime F + stpcpy F + stpncpy F + strcasecmp F + strcasecmp_l F + strcasestr F + strcat F + strchr F + strchrnul F + strcmp F + strcoll F + strcoll_l F + strcpy F + strcspn F + strdup F + strerror F + strerror_l F + strerror_r F + strfmon F + strfmon_l F + strfry F + strftime F + strftime_l F + strlen F + strncasecmp F + strncasecmp_l F + strncat F + strncmp F + strncpy F + strndup F + strnlen F + strpbrk F + strptime F + strptime_l F + strrchr F + strsep F + strsignal F + strspn F + strstr F + strtod F + strtod_l F + strtof F + strtof_l F + strtoimax F + strtok F + strtok_r F + strtol F + strtol_l F + strtold F + strtold_l F + strtoll F + strtoll_l F + strtoq F + strtoul F + strtoul_l F + strtoull F + strtoull_l F + strtoumax F + strtouq F + strverscmp F + strxfrm F + strxfrm_l F + stty F + svc_exit F + svc_fdset D 0x80 + svc_getreq F + svc_getreq_common F + svc_getreq_poll F + svc_getreqset F + svc_max_pollfd D 0x4 + svc_pollfd D 0x8 + svc_register F + svc_run F + svc_sendreply F + svc_unregister F + svcauthdes_stats D 0x18 + svcerr_auth F + svcerr_decode F + svcerr_noproc F + svcerr_noprog F + svcerr_progvers F + svcerr_systemerr F + svcerr_weakauth F + svcfd_create F + svcraw_create F + svctcp_create F + svcudp_bufcreate F + svcudp_create F + svcudp_enablecache F + svcunix_create F + svcunixfd_create F + swab F + swapcontext F + swapoff F + swapon F + swprintf F + swscanf F + symlink F + symlinkat F + sync F + sync_file_range F + sys_errlist D 0x438 + sys_nerr D 0x4 + sys_sigabbrev D 0x208 + sys_siglist D 0x208 + syscall F + sysconf F + sysctl F + sysinfo F + syslog F + system F + sysv_signal F + tcdrain F + tcflow F + tcflush F + tcgetattr F + tcgetpgrp F + tcgetsid F + tcsendbreak F + tcsetattr F + tcsetpgrp F + tdelete F + tdestroy F + tee F + telldir F + tempnam F + textdomain F + tfind F + time F + timegm F + timelocal F + timerfd_create F + timerfd_gettime F + timerfd_settime F + times F + timezone D 0x8 + tmpfile F + tmpfile64 F + tmpnam F + tmpnam_r F + toascii F + tolower F + tolower_l F + toupper F + toupper_l F + towctrans F + towctrans_l F + towlower F + towlower_l F + towupper F + towupper_l F + tr_break F + truncate F + truncate64 F + tsearch F + ttyname F + ttyname_r F + ttyslot F + twalk F + tzname D 0x10 + tzset F + ualarm F + ulckpwdf F + ulimit F + umask F + umount F + umount2 F + uname F + ungetc F + ungetwc F + unlink F + unlinkat F + unlockpt F + unsetenv F + unshare F + updwtmp F + updwtmpx F + uselib F + uselocale F + user2netname F + usleep F + ustat F + utime F + utimensat F + utimes F + utmpname F + utmpxname F + valloc F + vasprintf F + vdprintf F + verr F + verrx F + versionsort F + versionsort64 F + vfork F + vfprintf F + vfscanf F + vfwprintf F + vfwscanf F + vhangup F + vlimit F + vmsplice F + vprintf F + vscanf F + vsnprintf F + vsprintf F + vsscanf F + vswprintf F + vswscanf F + vsyslog F + vtimes F + vwarn F + vwarnx F + vwprintf F + vwscanf F + wait F + wait3 F + wait4 F + waitid F + waitpid F + warn F + warnx F + wcpcpy F + wcpncpy F + wcrtomb F + wcscasecmp F + wcscasecmp_l F + wcscat F + wcschr F + wcschrnul F + wcscmp F + wcscoll F + wcscoll_l F + wcscpy F + wcscspn F + wcsdup F + wcsftime F + wcsftime_l F + wcslen F + wcsncasecmp F + wcsncasecmp_l F + wcsncat F + wcsncmp F + wcsncpy F + wcsnlen F + wcsnrtombs F + wcspbrk F + wcsrchr F + wcsrtombs F + wcsspn F + wcsstr F + wcstod F + wcstod_l F + wcstof F + wcstof_l F + wcstoimax F + wcstok F + wcstol F + wcstol_l F + wcstold F + wcstold_l F + wcstoll F + wcstoll_l F + wcstombs F + wcstoq F + wcstoul F + wcstoul_l F + wcstoull F + wcstoull_l F + wcstoumax F + wcstouq F + wcswcs F + wcswidth F + wcsxfrm F + wcsxfrm_l F + wctob F + wctomb F + wctrans F + wctrans_l F + wctype F + wctype_l F + wcwidth F + wmemchr F + wmemcmp F + wmemcpy F + wmemmove F + wmempcpy F + wmemset F + wordexp F + wordfree F + wprintf F + write F + writev F + wscanf F + xdecrypt F + xdr_accepted_reply F + xdr_array F + xdr_authdes_cred F + xdr_authdes_verf F + xdr_authunix_parms F + xdr_bool F + xdr_bytes F + xdr_callhdr F + xdr_callmsg F + xdr_char F + xdr_cryptkeyarg F + xdr_cryptkeyarg2 F + xdr_cryptkeyres F + xdr_des_block F + xdr_double F + xdr_enum F + xdr_float F + xdr_free F + xdr_getcredres F + xdr_hyper F + xdr_int F + xdr_int16_t F + xdr_int32_t F + xdr_int64_t F + xdr_int8_t F + xdr_key_netstarg F + xdr_key_netstres F + xdr_keybuf F + xdr_keystatus F + xdr_long F + xdr_longlong_t F + xdr_netnamestr F + xdr_netobj F + xdr_opaque F + xdr_opaque_auth F + xdr_pmap F + xdr_pmaplist F + xdr_pointer F + xdr_quad_t F + xdr_reference F + xdr_rejected_reply F + xdr_replymsg F + xdr_rmtcall_args F + xdr_rmtcallres F + xdr_short F + xdr_sizeof F + xdr_string F + xdr_u_char F + xdr_u_hyper F + xdr_u_int F + xdr_u_long F + xdr_u_longlong_t F + xdr_u_quad_t F + xdr_u_short F + xdr_uint16_t F + xdr_uint32_t F + xdr_uint64_t F + xdr_uint8_t F + xdr_union F + xdr_unixcred F + xdr_vector F + xdr_void F + xdr_wrapstring F + xdrmem_create F + xdrrec_create F + xdrrec_endofrecord F + xdrrec_eof F + xdrrec_skiprecord F + xdrstdio_create F + xencrypt F + xprt_register F + xprt_unregister F +GLIBC_2.15 + GLIBC_2.15 A + __fdelt_chk F + __fdelt_warn F + clock_adjtime F + fanotify_init F + fanotify_mark F + name_to_handle_at F + open_by_handle_at F + posix_spawn F + posix_spawnp F + prlimit F + prlimit64 F + process_vm_readv F + process_vm_writev F + scandirat F + scandirat64 F + sendmmsg F + setns F + syncfs F +GLIBC_2.16 + GLIBC_2.16 A + __getauxval F + __poll_chk F + __ppoll_chk F + aligned_alloc F + c16rtomb F + c32rtomb F + getauxval F + mbrtoc16 F + mbrtoc32 F + timespec_get F +GLIBC_2.17 + GLIBC_2.17 A + clock_getcpuclockid F + clock_getres F + clock_gettime F + clock_nanosleep F + clock_settime F + secure_getenv F +GLIBC_2.18 + GLIBC_2.18 A + __cxa_thread_atexit_impl F diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libcrypt.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libcrypt.abilist new file mode 100644 index 0000000000..608e5df0b1 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libcrypt.abilist @@ -0,0 +1,9 @@ +GLIBC_2.12 + GLIBC_2.12 A + crypt F + crypt_r F + encrypt F + encrypt_r F + fcrypt F + setkey F + setkey_r F diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libdl.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libdl.abilist new file mode 100644 index 0000000000..27a72281b7 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libdl.abilist @@ -0,0 +1,11 @@ +GLIBC_2.12 + GLIBC_2.12 A + dladdr F + dladdr1 F + dlclose F + dlerror F + dlinfo F + dlmopen F + dlopen F + dlsym F + dlvsym F diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libm.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libm.abilist new file mode 100644 index 0000000000..cb0d1a4423 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libm.abilist @@ -0,0 +1,373 @@ +GLIBC_2.12 + GLIBC_2.12 A + _LIB_VERSION D 0x4 + __clog10 F + __clog10f F + __clog10l F + __finite F + __finitef F + __fpclassify F + __fpclassifyf F + __signbit F + __signbitf F + acos F + acosf F + acosh F + acoshf F + acoshl F + acosl F + asin F + asinf F + asinh F + asinhf F + asinhl F + asinl F + atan F + atan2 F + atan2f F + atan2l F + atanf F + atanh F + atanhf F + atanhl F + atanl F + cabs F + cabsf F + cabsl F + cacos F + cacosf F + cacosh F + cacoshf F + cacoshl F + cacosl F + carg F + cargf F + cargl F + casin F + casinf F + casinh F + casinhf F + casinhl F + casinl F + catan F + catanf F + catanh F + catanhf F + catanhl F + catanl F + cbrt F + cbrtf F + cbrtl F + ccos F + ccosf F + ccosh F + ccoshf F + ccoshl F + ccosl F + ceil F + ceilf F + ceill F + cexp F + cexpf F + cexpl F + cimag F + cimagf F + cimagl F + clog F + clog10 F + clog10f F + clog10l F + clogf F + clogl F + conj F + conjf F + conjl F + copysign F + copysignf F + copysignl F + cos F + cosf F + cosh F + coshf F + coshl F + cosl F + cpow F + cpowf F + cpowl F + cproj F + cprojf F + cprojl F + creal F + crealf F + creall F + csin F + csinf F + csinh F + csinhf F + csinhl F + csinl F + csqrt F + csqrtf F + csqrtl F + ctan F + ctanf F + ctanh F + ctanhf F + ctanhl F + ctanl F + drem F + dremf F + dreml F + erf F + erfc F + erfcf F + erfcl F + erff F + erfl F + exp F + exp10 F + exp10f F + exp10l F + exp2 F + exp2f F + exp2l F + expf F + expl F + expm1 F + expm1f F + expm1l F + fabs F + fabsf F + fabsl F + fdim F + fdimf F + fdiml F + feclearexcept F + fedisableexcept F + feenableexcept F + fegetenv F + fegetexcept F + fegetexceptflag F + fegetround F + feholdexcept F + feraiseexcept F + fesetenv F + fesetexceptflag F + fesetround F + fetestexcept F + feupdateenv F + finite F + finitef F + finitel F + floor F + floorf F + floorl F + fma F + fmaf F + fmal F + fmax F + fmaxf F + fmaxl F + fmin F + fminf F + fminl F + fmod F + fmodf F + fmodl F + frexp F + frexpf F + frexpl F + gamma F + gammaf F + gammal F + hypot F + hypotf F + hypotl F + ilogb F + ilogbf F + ilogbl F + j0 F + j0f F + j0l F + j1 F + j1f F + j1l F + jn F + jnf F + jnl F + ldexp F + ldexpf F + ldexpl F + lgamma F + lgamma_r F + lgammaf F + lgammaf_r F + lgammal F + lgammal_r F + llrint F + llrintf F + llrintl F + llround F + llroundf F + llroundl F + log F + log10 F + log10f F + log10l F + log1p F + log1pf F + log1pl F + log2 F + log2f F + log2l F + logb F + logbf F + logbl F + logf F + logl F + lrint F + lrintf F + lrintl F + lround F + lroundf F + lroundl F + matherr F + modf F + modff F + modfl F + nan F + nanf F + nanl F + nearbyint F + nearbyintf F + nearbyintl F + nextafter F + nextafterf F + nextafterl F + nexttoward F + nexttowardf F + nexttowardl F + pow F + pow10 F + pow10f F + pow10l F + powf F + powl F + remainder F + remainderf F + remainderl F + remquo F + remquof F + remquol F + rint F + rintf F + rintl F + round F + roundf F + roundl F + scalb F + scalbf F + scalbl F + scalbln F + scalblnf F + scalblnl F + scalbn F + scalbnf F + scalbnl F + signgam D 0x4 + significand F + significandf F + significandl F + sin F + sincos F + sincosf F + sincosl F + sinf F + sinh F + sinhf F + sinhl F + sinl F + sqrt F + sqrtf F + sqrtl F + tan F + tanf F + tanh F + tanhf F + tanhl F + tanl F + tgamma F + tgammaf F + tgammal F + trunc F + truncf F + truncl F + y0 F + y0f F + y0l F + y1 F + y1f F + y1l F + yn F + ynf F + ynl F +GLIBC_2.15 + GLIBC_2.15 A + __acos_finite F + __acosf_finite F + __acosh_finite F + __acoshf_finite F + __asin_finite F + __asinf_finite F + __atan2_finite F + __atan2f_finite F + __atanh_finite F + __atanhf_finite F + __cosh_finite F + __coshf_finite F + __exp10_finite F + __exp10f_finite F + __exp2_finite F + __exp2f_finite F + __exp_finite F + __expf_finite F + __fmod_finite F + __fmodf_finite F + __gamma_r_finite F + __gammaf_r_finite F + __hypot_finite F + __hypotf_finite F + __j0_finite F + __j0f_finite F + __j1_finite F + __j1f_finite F + __jn_finite F + __jnf_finite F + __lgamma_r_finite F + __lgammaf_r_finite F + __log10_finite F + __log10f_finite F + __log2_finite F + __log2f_finite F + __log_finite F + __logf_finite F + __pow_finite F + __powf_finite F + __remainder_finite F + __remainderf_finite F + __scalb_finite F + __scalbf_finite F + __sinh_finite F + __sinhf_finite F + __sqrt_finite F + __sqrtf_finite F + __y0_finite F + __y0f_finite F + __y1_finite F + __y1f_finite F + __yn_finite F + __ynf_finite F +GLIBC_2.18 + GLIBC_2.18 A + __issignaling F + __issignalingf F diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libnsl.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libnsl.abilist new file mode 100644 index 0000000000..e4217934c8 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libnsl.abilist @@ -0,0 +1,123 @@ +GLIBC_2.12 + GLIBC_2.12 A + __free_fdresult F + __nis_default_access F + __nis_default_group F + __nis_default_owner F + __nis_default_ttl F + __nis_finddirectory F + __nis_hash F + __nisbind_connect F + __nisbind_create F + __nisbind_destroy F + __nisbind_next F + __yp_check F + nis_add F + nis_add_entry F + nis_addmember F + nis_checkpoint F + nis_clone_directory F + nis_clone_object F + nis_clone_result F + nis_creategroup F + nis_destroy_object F + nis_destroygroup F + nis_dir_cmp F + nis_domain_of F + nis_domain_of_r F + nis_first_entry F + nis_free_directory F + nis_free_object F + nis_free_request F + nis_freenames F + nis_freeresult F + nis_freeservlist F + nis_freetags F + nis_getnames F + nis_getservlist F + nis_ismember F + nis_leaf_of F + nis_leaf_of_r F + nis_lerror F + nis_list F + nis_local_directory F + nis_local_group F + nis_local_host F + nis_local_principal F + nis_lookup F + nis_mkdir F + nis_modify F + nis_modify_entry F + nis_name_of F + nis_name_of_r F + nis_next_entry F + nis_perror F + nis_ping F + nis_print_directory F + nis_print_entry F + nis_print_group F + nis_print_group_entry F + nis_print_link F + nis_print_object F + nis_print_result F + nis_print_rights F + nis_print_table F + nis_read_obj F + nis_remove F + nis_remove_entry F + nis_removemember F + nis_rmdir F + nis_servstate F + nis_sperrno F + nis_sperror F + nis_sperror_r F + nis_stats F + nis_verifygroup F + nis_write_obj F + readColdStartFile F + writeColdStartFile F + xdr_cback_data F + xdr_domainname F + xdr_keydat F + xdr_mapname F + xdr_obj_p F + xdr_peername F + xdr_valdat F + xdr_yp_buf F + xdr_ypall F + xdr_ypbind_binding F + xdr_ypbind_resp F + xdr_ypbind_resptype F + xdr_ypbind_setdom F + xdr_ypdelete_args F + xdr_ypmap_parms F + xdr_ypmaplist F + xdr_yppush_status F + xdr_yppushresp_xfr F + xdr_ypreq_key F + xdr_ypreq_nokey F + xdr_ypreq_xfr F + xdr_ypresp_all F + xdr_ypresp_key_val F + xdr_ypresp_maplist F + xdr_ypresp_master F + xdr_ypresp_order F + xdr_ypresp_val F + xdr_ypresp_xfr F + xdr_ypstat F + xdr_ypupdate_args F + xdr_ypxfrstat F + yp_all F + yp_bind F + yp_first F + yp_get_default_domain F + yp_maplist F + yp_master F + yp_match F + yp_next F + yp_order F + yp_unbind F + yp_update F + ypbinderr_string F + yperr_string F + ypprot_err F diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libpthread.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libpthread.abilist new file mode 100644 index 0000000000..f3c260071a --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libpthread.abilist @@ -0,0 +1,228 @@ +GLIBC_2.12 + GLIBC_2.12 A + _IO_flockfile F + _IO_ftrylockfile F + _IO_funlockfile F + __close F + __connect F + __errno_location F + __fcntl F + __fork F + __h_errno_location F + __libc_allocate_rtsig F + __libc_current_sigrtmax F + __libc_current_sigrtmin F + __lseek F + __nanosleep F + __open F + __open64 F + __pread64 F + __pthread_cleanup_routine F + __pthread_getspecific F + __pthread_key_create F + __pthread_mutex_destroy F + __pthread_mutex_init F + __pthread_mutex_lock F + __pthread_mutex_trylock F + __pthread_mutex_unlock F + __pthread_mutexattr_destroy F + __pthread_mutexattr_init F + __pthread_mutexattr_settype F + __pthread_once F + __pthread_register_cancel F + __pthread_register_cancel_defer F + __pthread_rwlock_destroy F + __pthread_rwlock_init F + __pthread_rwlock_rdlock F + __pthread_rwlock_tryrdlock F + __pthread_rwlock_trywrlock F + __pthread_rwlock_unlock F + __pthread_rwlock_wrlock F + __pthread_setspecific F + __pthread_unregister_cancel F + __pthread_unregister_cancel_restore F + __pthread_unwind_next F + __pwrite64 F + __read F + __res_state F + __send F + __sigaction F + __vfork F + __wait F + __write F + _pthread_cleanup_pop F + _pthread_cleanup_pop_restore F + _pthread_cleanup_push F + _pthread_cleanup_push_defer F + accept F + close F + connect F + fcntl F + flockfile F + fork F + fsync F + ftrylockfile F + funlockfile F + longjmp F + lseek F + lseek64 F + msync F + nanosleep F + open F + open64 F + pause F + pread F + pread64 F + pthread_attr_destroy F + pthread_attr_getaffinity_np F + pthread_attr_getdetachstate F + pthread_attr_getguardsize F + pthread_attr_getinheritsched F + pthread_attr_getschedparam F + pthread_attr_getschedpolicy F + pthread_attr_getscope F + pthread_attr_getstack F + pthread_attr_getstackaddr F + pthread_attr_getstacksize F + pthread_attr_init F + pthread_attr_setaffinity_np F + pthread_attr_setdetachstate F + pthread_attr_setguardsize F + pthread_attr_setinheritsched F + pthread_attr_setschedparam F + pthread_attr_setschedpolicy F + pthread_attr_setscope F + pthread_attr_setstack F + pthread_attr_setstackaddr F + pthread_attr_setstacksize F + pthread_barrier_destroy F + pthread_barrier_init F + pthread_barrier_wait F + pthread_barrierattr_destroy F + pthread_barrierattr_getpshared F + pthread_barrierattr_init F + pthread_barrierattr_setpshared F + pthread_cancel F + pthread_cond_broadcast F + pthread_cond_destroy F + pthread_cond_init F + pthread_cond_signal F + pthread_cond_timedwait F + pthread_cond_wait F + pthread_condattr_destroy F + pthread_condattr_getclock F + pthread_condattr_getpshared F + pthread_condattr_init F + pthread_condattr_setclock F + pthread_condattr_setpshared F + pthread_create F + pthread_detach F + pthread_equal F + pthread_exit F + pthread_getaffinity_np F + pthread_getattr_np F + pthread_getconcurrency F + pthread_getcpuclockid F + pthread_getname_np F + pthread_getschedparam F + pthread_getspecific F + pthread_join F + pthread_key_create F + pthread_key_delete F + pthread_kill F + pthread_kill_other_threads_np F + pthread_mutex_consistent F + pthread_mutex_consistent_np F + pthread_mutex_destroy F + pthread_mutex_getprioceiling F + pthread_mutex_init F + pthread_mutex_lock F + pthread_mutex_setprioceiling F + pthread_mutex_timedlock F + pthread_mutex_trylock F + pthread_mutex_unlock F + pthread_mutexattr_destroy F + pthread_mutexattr_getkind_np F + pthread_mutexattr_getprioceiling F + pthread_mutexattr_getprotocol F + pthread_mutexattr_getpshared F + pthread_mutexattr_getrobust F + pthread_mutexattr_getrobust_np F + pthread_mutexattr_gettype F + pthread_mutexattr_init F + pthread_mutexattr_setkind_np F + pthread_mutexattr_setprioceiling F + pthread_mutexattr_setprotocol F + pthread_mutexattr_setpshared F + pthread_mutexattr_setrobust F + pthread_mutexattr_setrobust_np F + pthread_mutexattr_settype F + pthread_once F + pthread_rwlock_destroy F + pthread_rwlock_init F + pthread_rwlock_rdlock F + pthread_rwlock_timedrdlock F + pthread_rwlock_timedwrlock F + pthread_rwlock_tryrdlock F + pthread_rwlock_trywrlock F + pthread_rwlock_unlock F + pthread_rwlock_wrlock F + pthread_rwlockattr_destroy F + pthread_rwlockattr_getkind_np F + pthread_rwlockattr_getpshared F + pthread_rwlockattr_init F + pthread_rwlockattr_setkind_np F + pthread_rwlockattr_setpshared F + pthread_self F + pthread_setaffinity_np F + pthread_setcancelstate F + pthread_setcanceltype F + pthread_setconcurrency F + pthread_setname_np F + pthread_setschedparam F + pthread_setschedprio F + pthread_setspecific F + pthread_sigmask F + pthread_sigqueue F + pthread_spin_destroy F + pthread_spin_init F + pthread_spin_lock F + pthread_spin_trylock F + pthread_spin_unlock F + pthread_testcancel F + pthread_timedjoin_np F + pthread_tryjoin_np F + pthread_yield F + pwrite F + pwrite64 F + raise F + read F + recv F + recvfrom F + recvmsg F + sem_close F + sem_destroy F + sem_getvalue F + sem_init F + sem_open F + sem_post F + sem_timedwait F + sem_trywait F + sem_unlink F + sem_wait F + send F + sendmsg F + sendto F + sigaction F + siglongjmp F + sigwait F + system F + tcdrain F + vfork F + wait F + waitpid F + write F +GLIBC_2.18 + GLIBC_2.18 A + pthread_getattr_default_np F + pthread_setattr_default_np F diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libresolv.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libresolv.abilist new file mode 100644 index 0000000000..dcb82acc01 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libresolv.abilist @@ -0,0 +1,93 @@ +GLIBC_2.12 + GLIBC_2.12 A + __b64_ntop F + __b64_pton F + __dn_comp F + __dn_count_labels F + __dn_expand F + __dn_skipname F + __fp_nquery F + __fp_query F + __fp_resstat F + __hostalias F + __loc_aton F + __loc_ntoa F + __p_cdname F + __p_cdnname F + __p_class F + __p_class_syms D 0xa8 + __p_fqname F + __p_fqnname F + __p_option F + __p_query F + __p_rcode F + __p_secstodate F + __p_time F + __p_type F + __p_type_syms D 0x450 + __putlong F + __putshort F + __res_close F + __res_dnok F + __res_hnok F + __res_hostalias F + __res_isourserver F + __res_mailok F + __res_mkquery F + __res_nameinquery F + __res_nmkquery F + __res_nquery F + __res_nquerydomain F + __res_nsearch F + __res_nsend F + __res_ownok F + __res_queriesmatch F + __res_query F + __res_querydomain F + __res_search F + __res_send F + __sym_ntop F + __sym_ntos F + __sym_ston F + _gethtbyaddr F + _gethtbyname F + _gethtbyname2 F + _gethtent F + _getlong F + _getshort F + _res_opcodes D 0x80 + _sethtent F + inet_net_ntop F + inet_net_pton F + inet_neta F + ns_datetosecs F + ns_format_ttl F + ns_get16 F + ns_get32 F + ns_initparse F + ns_makecanon F + ns_msg_getflag F + ns_name_compress F + ns_name_ntol F + ns_name_ntop F + ns_name_pack F + ns_name_pton F + ns_name_rollback F + ns_name_skip F + ns_name_uncompress F + ns_name_unpack F + ns_parse_ttl F + ns_parserr F + ns_put16 F + ns_put32 F + ns_samedomain F + ns_samename F + ns_skiprr F + ns_sprintrr F + ns_sprintrrf F + ns_subdomain F + res_gethostbyaddr F + res_gethostbyname F + res_gethostbyname2 F + res_send_setqhook F + res_send_setrhook F diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/librt.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/librt.abilist new file mode 100644 index 0000000000..87fec065af --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/librt.abilist @@ -0,0 +1,42 @@ +GLIBC_2.12 + GLIBC_2.12 A + __mq_open_2 F + aio_cancel F + aio_cancel64 F + aio_error F + aio_error64 F + aio_fsync F + aio_fsync64 F + aio_init F + aio_read F + aio_read64 F + aio_return F + aio_return64 F + aio_suspend F + aio_suspend64 F + aio_write F + aio_write64 F + clock_getcpuclockid F + clock_getres F + clock_gettime F + clock_nanosleep F + clock_settime F + lio_listio F + lio_listio64 F + mq_close F + mq_getattr F + mq_notify F + mq_open F + mq_receive F + mq_send F + mq_setattr F + mq_timedreceive F + mq_timedsend F + mq_unlink F + shm_open F + shm_unlink F + timer_create F + timer_delete F + timer_getoverrun F + timer_gettime F + timer_settime F diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libthread_db.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libthread_db.abilist new file mode 100644 index 0000000000..934ce9acd6 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libthread_db.abilist @@ -0,0 +1,42 @@ +GLIBC_2.12 + GLIBC_2.12 A + td_init F + td_log F + td_symbol_list F + td_ta_clear_event F + td_ta_delete F + td_ta_enable_stats F + td_ta_event_addr F + td_ta_event_getmsg F + td_ta_get_nthreads F + td_ta_get_ph F + td_ta_get_stats F + td_ta_map_id2thr F + td_ta_map_lwp2thr F + td_ta_new F + td_ta_reset_stats F + td_ta_set_event F + td_ta_setconcurrency F + td_ta_thr_iter F + td_ta_tsd_iter F + td_thr_clear_event F + td_thr_dbresume F + td_thr_dbsuspend F + td_thr_event_enable F + td_thr_event_getmsg F + td_thr_get_info F + td_thr_getfpregs F + td_thr_getgregs F + td_thr_getxregs F + td_thr_getxregsize F + td_thr_set_event F + td_thr_setfpregs F + td_thr_setgregs F + td_thr_setprio F + td_thr_setsigpending F + td_thr_setxregs F + td_thr_sigsetmask F + td_thr_tls_get_addr F + td_thr_tlsbase F + td_thr_tsd F + td_thr_validate F diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libutil.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libutil.abilist new file mode 100644 index 0000000000..50c312a7c6 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libutil.abilist @@ -0,0 +1,8 @@ +GLIBC_2.12 + GLIBC_2.12 A + forkpty F + login F + login_tty F + logout F + logwtmp F + openpty F diff --git a/sysdeps/unix/sysv/linux/tile/tilepro/Implies b/sysdeps/unix/sysv/linux/tile/tilepro/Implies new file mode 100644 index 0000000000..0023bb77aa --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilepro/Implies @@ -0,0 +1,3 @@ +unix/sysv/linux/tile +unix/sysv/linux/generic/wordsize-32 +unix/sysv/linux/generic diff --git a/sysdeps/unix/sysv/linux/tile/tilepro/ldconfig.h b/sysdeps/unix/sysv/linux/tile/tilepro/ldconfig.h new file mode 100644 index 0000000000..86a81d4789 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilepro/ldconfig.h @@ -0,0 +1,25 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include + +#define SYSDEP_KNOWN_INTERPRETER_NAMES \ + { "/lib/ld.so.1", FLAG_ELF_LIBC6 }, +#define SYSDEP_KNOWN_LIBRARY_NAMES \ + { "libc.so.6", FLAG_ELF_LIBC6 }, \ + { "libm.so.6", FLAG_ELF_LIBC6 }, diff --git a/sysdeps/unix/sysv/linux/tile/tilepro/nptl/c++-types.data b/sysdeps/unix/sysv/linux/tile/tilepro/nptl/c++-types.data new file mode 100644 index 0000000000..303f4570c8 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilepro/nptl/c++-types.data @@ -0,0 +1,67 @@ +blkcnt64_t:x +blkcnt_t:l +blksize_t:i +caddr_t:Pc +clockid_t:i +clock_t:l +daddr_t:i +dev_t:y +fd_mask:l +fsblkcnt64_t:y +fsblkcnt_t:m +fsfilcnt64_t:y +fsfilcnt_t:m +fsid_t:8__fsid_t +gid_t:j +id_t:j +ino64_t:y +ino_t:m +int16_t:s +int32_t:i +int64_t:x +int8_t:a +intptr_t:i +key_t:i +loff_t:x +mode_t:j +nlink_t:j +off64_t:x +off_t:l +pid_t:i +pthread_attr_t:14pthread_attr_t +pthread_barrier_t:17pthread_barrier_t +pthread_barrierattr_t:21pthread_barrierattr_t +pthread_cond_t:14pthread_cond_t +pthread_condattr_t:18pthread_condattr_t +pthread_key_t:j +pthread_mutex_t:15pthread_mutex_t +pthread_mutexattr_t:19pthread_mutexattr_t +pthread_once_t:i +pthread_rwlock_t:16pthread_rwlock_t +pthread_rwlockattr_t:20pthread_rwlockattr_t +pthread_spinlock_t:i +pthread_t:m +quad_t:x +register_t:i +rlim64_t:y +rlim_t:m +sigset_t:10__sigset_t +size_t:j +socklen_t:j +ssize_t:i +suseconds_t:l +time_t:l +u_char:h +uid_t:j +uint:j +u_int:j +u_int16_t:t +u_int32_t:j +u_int64_t:y +u_int8_t:h +ulong:m +u_long:m +u_quad_t:y +useconds_t:j +ushort:t +u_short:t diff --git a/sysdeps/unix/sysv/linux/tile/tilepro/nptl/ld.abilist b/sysdeps/unix/sysv/linux/tile/tilepro/nptl/ld.abilist new file mode 100644 index 0000000000..4367346594 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilepro/nptl/ld.abilist @@ -0,0 +1,11 @@ +GLIBC_2.12 + GLIBC_2.12 A + __libc_memalign F + __libc_stack_end D 0x4 + __tls_get_addr F + _dl_mcount F + _r_debug D 0x14 + calloc F + free F + malloc F + realloc F diff --git a/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libBrokenLocale.abilist b/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libBrokenLocale.abilist new file mode 100644 index 0000000000..4af9128544 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libBrokenLocale.abilist @@ -0,0 +1,3 @@ +GLIBC_2.12 + GLIBC_2.12 A + __ctype_get_mb_cur_max F diff --git a/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libanl.abilist b/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libanl.abilist new file mode 100644 index 0000000000..29e602a75a --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libanl.abilist @@ -0,0 +1,6 @@ +GLIBC_2.12 + GLIBC_2.12 A + gai_cancel F + gai_error F + gai_suspend F + getaddrinfo_a F diff --git a/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libc.abilist b/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libc.abilist new file mode 100644 index 0000000000..caf74b89e1 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libc.abilist @@ -0,0 +1,2093 @@ +GLIBC_2.12 + GLIBC_2.12 A + _Exit F + _IO_2_1_stderr_ D 0xa0 + _IO_2_1_stdin_ D 0xa0 + _IO_2_1_stdout_ D 0xa0 + _IO_adjust_column F + _IO_adjust_wcolumn F + _IO_default_doallocate F + _IO_default_finish F + _IO_default_pbackfail F + _IO_default_uflow F + _IO_default_xsgetn F + _IO_default_xsputn F + _IO_do_write F + _IO_doallocbuf F + _IO_fclose F + _IO_fdopen F + _IO_feof F + _IO_ferror F + _IO_fflush F + _IO_fgetpos F + _IO_fgetpos64 F + _IO_fgets F + _IO_file_attach F + _IO_file_close F + _IO_file_close_it F + _IO_file_doallocate F + _IO_file_finish F + _IO_file_fopen F + _IO_file_init F + _IO_file_jumps D 0x54 + _IO_file_open F + _IO_file_overflow F + _IO_file_read F + _IO_file_seek F + _IO_file_seekoff F + _IO_file_setbuf F + _IO_file_stat F + _IO_file_sync F + _IO_file_underflow F + _IO_file_write F + _IO_file_xsputn F + _IO_flockfile F + _IO_flush_all F + _IO_flush_all_linebuffered F + _IO_fopen F + _IO_fprintf F + _IO_fputs F + _IO_fread F + _IO_free_backup_area F + _IO_free_wbackup_area F + _IO_fsetpos F + _IO_fsetpos64 F + _IO_ftell F + _IO_ftrylockfile F + _IO_funlockfile F + _IO_fwrite F + _IO_getc F + _IO_getline F + _IO_getline_info F + _IO_gets F + _IO_init F + _IO_init_marker F + _IO_init_wmarker F + _IO_iter_begin F + _IO_iter_end F + _IO_iter_file F + _IO_iter_next F + _IO_least_wmarker F + _IO_link_in F + _IO_list_all D 0x4 + _IO_list_lock F + _IO_list_resetlock F + _IO_list_unlock F + _IO_marker_delta F + _IO_marker_difference F + _IO_padn F + _IO_peekc_locked F + _IO_popen F + _IO_printf F + _IO_proc_close F + _IO_proc_open F + _IO_putc F + _IO_puts F + _IO_remove_marker F + _IO_seekmark F + _IO_seekoff F + _IO_seekpos F + _IO_seekwmark F + _IO_setb F + _IO_setbuffer F + _IO_setvbuf F + _IO_sgetn F + _IO_sprintf F + _IO_sputbackc F + _IO_sputbackwc F + _IO_sscanf F + _IO_str_init_readonly F + _IO_str_init_static F + _IO_str_overflow F + _IO_str_pbackfail F + _IO_str_seekoff F + _IO_str_underflow F + _IO_sungetc F + _IO_sungetwc F + _IO_switch_to_get_mode F + _IO_switch_to_main_wget_area F + _IO_switch_to_wbackup_area F + _IO_switch_to_wget_mode F + _IO_un_link F + _IO_ungetc F + _IO_unsave_markers F + _IO_unsave_wmarkers F + _IO_vfprintf F + _IO_vfscanf F + _IO_vsprintf F + _IO_wdefault_doallocate F + _IO_wdefault_finish F + _IO_wdefault_pbackfail F + _IO_wdefault_uflow F + _IO_wdefault_xsgetn F + _IO_wdefault_xsputn F + _IO_wdo_write F + _IO_wdoallocbuf F + _IO_wfile_jumps D 0x54 + _IO_wfile_overflow F + _IO_wfile_seekoff F + _IO_wfile_sync F + _IO_wfile_underflow F + _IO_wfile_xsputn F + _IO_wmarker_delta F + _IO_wsetb F + ___brk_addr D 0x4 + __adjtimex F + __after_morecore_hook D 0x4 + __argz_count F + __argz_next F + __argz_stringify F + __asprintf F + __asprintf_chk F + __assert F + __assert_fail F + __assert_perror_fail F + __backtrace F + __backtrace_symbols F + __backtrace_symbols_fd F + __bsd_getpgrp F + __bzero F + __check_rhosts_file D 0x4 + __chk_fail F + __clone F + __close F + __cmsg_nxthdr F + __confstr_chk F + __connect F + __ctype_b_loc F + __ctype_get_mb_cur_max F + __ctype_tolower_loc F + __ctype_toupper_loc F + __curbrk D 0x4 + __cxa_at_quick_exit F + __cxa_atexit F + __cxa_finalize F + __cyg_profile_func_enter F + __cyg_profile_func_exit F + __daylight D 0x4 + __dcgettext F + __default_morecore F + __dgettext F + __dprintf_chk F + __dup2 F + __duplocale F + __endmntent F + __environ D 0x4 + __errno_location F + __fbufsize F + __fcntl F + __ffs F + __fgets_chk F + __fgets_unlocked_chk F + __fgetws_chk F + __fgetws_unlocked_chk F + __finite F + __finitef F + __flbf F + __fork F + __fpending F + __fprintf_chk F + __fpu_control D 0x4 + __fpurge F + __fread_chk F + __fread_unlocked_chk F + __freadable F + __freading F + __free_hook D 0x4 + __freelocale F + __fsetlocking F + __fwprintf_chk F + __fwritable F + __fwriting F + __fxstat F + __fxstat64 F + __fxstatat F + __fxstatat64 F + __getcwd_chk F + __getdelim F + __getdomainname_chk F + __getgroups_chk F + __gethostname_chk F + __getlogin_r_chk F + __getmntent_r F + __getpagesize F + __getpgid F + __getpid F + __gets_chk F + __gettimeofday F + __getwd_chk F + __gmtime_r F + __h_errno_location F + __isalnum_l F + __isalpha_l F + __isascii_l F + __isblank_l F + __iscntrl_l F + __isctype F + __isdigit_l F + __isgraph_l F + __isinf F + __isinff F + __islower_l F + __isnan F + __isnanf F + __isoc99_fscanf F + __isoc99_fwscanf F + __isoc99_scanf F + __isoc99_sscanf F + __isoc99_swscanf F + __isoc99_vfscanf F + __isoc99_vfwscanf F + __isoc99_vscanf F + __isoc99_vsscanf F + __isoc99_vswscanf F + __isoc99_vwscanf F + __isoc99_wscanf F + __isprint_l F + __ispunct_l F + __isspace_l F + __isupper_l F + __iswalnum_l F + __iswalpha_l F + __iswblank_l F + __iswcntrl_l F + __iswctype F + __iswctype_l F + __iswdigit_l F + __iswgraph_l F + __iswlower_l F + __iswprint_l F + __iswpunct_l F + __iswspace_l F + __iswupper_l F + __iswxdigit_l F + __isxdigit_l F + __ivaliduser F + __key_decryptsession_pk_LOCAL D 0x4 + __key_encryptsession_pk_LOCAL D 0x4 + __key_gendes_LOCAL D 0x4 + __libc_allocate_rtsig F + __libc_calloc F + __libc_current_sigrtmax F + __libc_current_sigrtmin F + __libc_free F + __libc_freeres F + __libc_init_first F + __libc_mallinfo F + __libc_malloc F + __libc_mallopt F + __libc_memalign F + __libc_pvalloc F + __libc_realloc F + __libc_sa_len F + __libc_start_main F + __libc_valloc F + __longjmp_chk F + __lseek F + __lxstat F + __lxstat64 F + __malloc_hook D 0x4 + __malloc_initialize_hook D 0x4 + __mbrlen F + __mbrtowc F + __mbsnrtowcs_chk F + __mbsrtowcs_chk F + __mbstowcs_chk F + __mcount F + __memalign_hook D 0x4 + __memcpy_chk F + __memmove_chk F + __mempcpy F + __mempcpy_chk F + __mempcpy_small F + __memset_chk F + __monstartup F + __morecore D 0x4 + __nanosleep F + __newlocale F + __nl_langinfo_l F + __nss_configure_lookup F + __nss_database_lookup F + __nss_group_lookup F + __nss_hostname_digits_dots F + __nss_hosts_lookup F + __nss_next F + __nss_passwd_lookup F + __obstack_printf_chk F + __obstack_vprintf_chk F + __open F + __open64 F + __open64_2 F + __open_2 F + __openat64_2 F + __openat_2 F + __overflow F + __pipe F + __poll F + __posix_getopt F + __pread64 F + __pread64_chk F + __pread_chk F + __printf_chk F + __printf_fp F + __profile_frequency F + __progname D 0x4 + __progname_full D 0x4 + __ptsname_r_chk F + __pwrite64 F + __rawmemchr F + __rcmd_errstr D 0x4 + __read F + __read_chk F + __readlink_chk F + __readlinkat_chk F + __realloc_hook D 0x4 + __realpath_chk F + __recv_chk F + __recvfrom_chk F + __register_atfork F + __res_init F + __res_nclose F + __res_ninit F + __res_randomid F + __res_state F + __rpc_thread_createerr F + __rpc_thread_svc_fdset F + __rpc_thread_svc_max_pollfd F + __rpc_thread_svc_pollfd F + __sbrk F + __sched_cpualloc F + __sched_cpucount F + __sched_cpufree F + __sched_get_priority_max F + __sched_get_priority_min F + __sched_getparam F + __sched_getscheduler F + __sched_setscheduler F + __sched_yield F + __secure_getenv F + __select F + __setmntent F + __setpgid F + __sigaction F + __sigaddset F + __sigdelset F + __sigismember F + __signbit F + __signbitf F + __sigpause F + __sigsetjmp F + __sigsuspend F + __snprintf_chk F + __sprintf_chk F + __stack_chk_fail F + __statfs F + __stpcpy F + __stpcpy_chk F + __stpcpy_small F + __stpncpy F + __stpncpy_chk F + __strcasecmp F + __strcasecmp_l F + __strcasestr F + __strcat_chk F + __strcoll_l F + __strcpy_chk F + __strcpy_small F + __strcspn_c1 F + __strcspn_c2 F + __strcspn_c3 F + __strdup F + __strerror_r F + __strfmon_l F + __strftime_l F + __strncasecmp_l F + __strncat_chk F + __strncpy_chk F + __strndup F + __strpbrk_c2 F + __strpbrk_c3 F + __strsep_1c F + __strsep_2c F + __strsep_3c F + __strsep_g F + __strspn_c1 F + __strspn_c2 F + __strspn_c3 F + __strtod_internal F + __strtod_l F + __strtof_internal F + __strtof_l F + __strtok_r F + __strtok_r_1c F + __strtol_internal F + __strtol_l F + __strtold_internal F + __strtold_l F + __strtoll_internal F + __strtoll_l F + __strtoul_internal F + __strtoul_l F + __strtoull_internal F + __strtoull_l F + __strverscmp F + __strxfrm_l F + __swprintf_chk F + __sysconf F + __syslog_chk F + __sysv_signal F + __timezone D 0x4 + __toascii_l F + __tolower_l F + __toupper_l F + __towctrans F + __towctrans_l F + __towlower_l F + __towupper_l F + __ttyname_r_chk F + __tzname D 0x8 + __uflow F + __underflow F + __uselocale F + __vasprintf_chk F + __vdprintf_chk F + __vfork F + __vfprintf_chk F + __vfscanf F + __vfwprintf_chk F + __vprintf_chk F + __vsnprintf F + __vsnprintf_chk F + __vsprintf_chk F + __vsscanf F + __vswprintf_chk F + __vsyslog_chk F + __vwprintf_chk F + __wait F + __waitpid F + __wcpcpy_chk F + __wcpncpy_chk F + __wcrtomb_chk F + __wcscasecmp_l F + __wcscat_chk F + __wcscoll_l F + __wcscpy_chk F + __wcsftime_l F + __wcsncasecmp_l F + __wcsncat_chk F + __wcsncpy_chk F + __wcsnrtombs_chk F + __wcsrtombs_chk F + __wcstod_internal F + __wcstod_l F + __wcstof_internal F + __wcstof_l F + __wcstol_internal F + __wcstol_l F + __wcstold_internal F + __wcstold_l F + __wcstoll_internal F + __wcstoll_l F + __wcstombs_chk F + __wcstoul_internal F + __wcstoul_l F + __wcstoull_internal F + __wcstoull_l F + __wcsxfrm_l F + __wctomb_chk F + __wctrans_l F + __wctype_l F + __wmemcpy_chk F + __wmemmove_chk F + __wmempcpy_chk F + __wmemset_chk F + __woverflow F + __wprintf_chk F + __write F + __wuflow F + __wunderflow F + __xmknod F + __xmknodat F + __xpg_basename F + __xpg_sigpause F + __xpg_strerror_r F + __xstat F + __xstat64 F + _authenticate F + _dl_mcount_wrapper F + _dl_mcount_wrapper_check F + _environ D 0x4 + _exit F + _flush_cache F + _flushlbf F + _libc_intl_domainname D 0x5 + _longjmp F + _mcleanup F + _mcount F + _nl_default_dirname D 0x12 + _nl_domain_bindings D 0x4 + _nl_msg_cat_cntr D 0x4 + _null_auth D 0xc + _obstack_allocated_p F + _obstack_begin F + _obstack_begin_1 F + _obstack_free F + _obstack_memory_used F + _obstack_newchunk F + _res D 0x200 + _res_hconf D 0x30 + _rpc_dtablesize F + _seterr_reply F + _setjmp F + _sys_errlist D 0x21c + _sys_nerr D 0x4 + _sys_siglist D 0x104 + _tolower F + _toupper F + a64l F + abort F + abs F + accept F + accept4 F + access F + acct F + addmntent F + addseverity F + adjtime F + adjtimex F + advance F + alarm F + alphasort F + alphasort64 F + argp_err_exit_status D 0x4 + argp_error F + argp_failure F + argp_help F + argp_parse F + argp_program_bug_address D 0x4 + argp_program_version D 0x4 + argp_program_version_hook D 0x4 + argp_state_help F + argp_usage F + argz_add F + argz_add_sep F + argz_append F + argz_count F + argz_create F + argz_create_sep F + argz_delete F + argz_extract F + argz_insert F + argz_next F + argz_replace F + argz_stringify F + asctime F + asctime_r F + asprintf F + atof F + atoi F + atol F + atoll F + authdes_create F + authdes_getucred F + authdes_pk_create F + authnone_create F + authunix_create F + authunix_create_default F + backtrace F + backtrace_symbols F + backtrace_symbols_fd F + basename F + bcmp F + bcopy F + bdflush F + bind F + bind_textdomain_codeset F + bindresvport F + bindtextdomain F + brk F + bsd_signal F + bsearch F + btowc F + bzero F + cacheflush F + calloc F + callrpc F + canonicalize_file_name F + capget F + capset F + catclose F + catgets F + catopen F + cbc_crypt F + cfgetispeed F + cfgetospeed F + cfmakeraw F + cfree F + cfsetispeed F + cfsetospeed F + cfsetspeed F + chdir F + chflags F + chmod F + chown F + chroot F + clearenv F + clearerr F + clearerr_unlocked F + clnt_broadcast F + clnt_create F + clnt_pcreateerror F + clnt_perrno F + clnt_perror F + clnt_spcreateerror F + clnt_sperrno F + clnt_sperror F + clntraw_create F + clnttcp_create F + clntudp_bufcreate F + clntudp_create F + clntunix_create F + clock F + clone F + close F + closedir F + closelog F + confstr F + connect F + copysign F + copysignf F + copysignl F + creat F + creat64 F + create_module F + ctermid F + ctime F + ctime_r F + cuserid F + daemon F + daylight D 0x4 + dcgettext F + dcngettext F + delete_module F + des_setparity F + dgettext F + difftime F + dirfd F + dirname F + div F + dl_iterate_phdr F + dngettext F + dprintf F + drand48 F + drand48_r F + dup F + dup2 F + dup3 F + duplocale F + dysize F + eaccess F + ecb_crypt F + ecvt F + ecvt_r F + endaliasent F + endfsent F + endgrent F + endhostent F + endmntent F + endnetent F + endnetgrent F + endprotoent F + endpwent F + endrpcent F + endservent F + endsgent F + endspent F + endttyent F + endusershell F + endutent F + endutxent F + environ D 0x4 + envz_add F + envz_entry F + envz_get F + envz_merge F + envz_remove F + envz_strip F + epoll_create F + epoll_create1 F + epoll_ctl F + epoll_pwait F + epoll_wait F + erand48 F + erand48_r F + err F + error F + error_at_line F + error_message_count D 0x4 + error_one_per_line D 0x4 + error_print_progname D 0x4 + errx F + ether_aton F + ether_aton_r F + ether_hostton F + ether_line F + ether_ntoa F + ether_ntoa_r F + ether_ntohost F + euidaccess F + eventfd F + eventfd_read F + eventfd_write F + execl F + execle F + execlp F + execv F + execve F + execvp F + execvpe F + exit F + faccessat F + fallocate F + fallocate64 F + fattach F + fchdir F + fchflags F + fchmod F + fchmodat F + fchown F + fchownat F + fclose F + fcloseall F + fcntl F + fcvt F + fcvt_r F + fdatasync F + fdetach F + fdopen F + fdopendir F + feof F + feof_unlocked F + ferror F + ferror_unlocked F + fexecve F + fflush F + fflush_unlocked F + ffs F + ffsl F + ffsll F + fgetc F + fgetc_unlocked F + fgetgrent F + fgetgrent_r F + fgetpos F + fgetpos64 F + fgetpwent F + fgetpwent_r F + fgets F + fgets_unlocked F + fgetsgent F + fgetsgent_r F + fgetspent F + fgetspent_r F + fgetwc F + fgetwc_unlocked F + fgetws F + fgetws_unlocked F + fgetxattr F + fileno F + fileno_unlocked F + finite F + finitef F + finitel F + flistxattr F + flock F + flockfile F + fmemopen F + fmtmsg F + fnmatch F + fopen F + fopen64 F + fopencookie F + fork F + fpathconf F + fprintf F + fputc F + fputc_unlocked F + fputs F + fputs_unlocked F + fputwc F + fputwc_unlocked F + fputws F + fputws_unlocked F + fread F + fread_unlocked F + free F + freeaddrinfo F + freeifaddrs F + freelocale F + fremovexattr F + freopen F + freopen64 F + frexp F + frexpf F + frexpl F + fscanf F + fseek F + fseeko F + fseeko64 F + fsetpos F + fsetpos64 F + fsetxattr F + fstatfs F + fstatfs64 F + fstatvfs F + fstatvfs64 F + fsync F + ftell F + ftello F + ftello64 F + ftime F + ftok F + ftruncate F + ftruncate64 F + ftrylockfile F + fts_children F + fts_close F + fts_open F + fts_read F + fts_set F + ftw F + ftw64 F + funlockfile F + futimens F + futimes F + futimesat F + fwide F + fwprintf F + fwrite F + fwrite_unlocked F + fwscanf F + gai_strerror F + gcvt F + get_avphys_pages F + get_current_dir_name F + get_kernel_syms F + get_myaddress F + get_nprocs F + get_nprocs_conf F + get_phys_pages F + getaddrinfo F + getaliasbyname F + getaliasbyname_r F + getaliasent F + getaliasent_r F + getc F + getc_unlocked F + getchar F + getchar_unlocked F + getcontext F + getcwd F + getdate F + getdate_err D 0x4 + getdate_r F + getdelim F + getdirentries F + getdirentries64 F + getdomainname F + getdtablesize F + getegid F + getenv F + geteuid F + getfsent F + getfsfile F + getfsspec F + getgid F + getgrent F + getgrent_r F + getgrgid F + getgrgid_r F + getgrnam F + getgrnam_r F + getgrouplist F + getgroups F + gethostbyaddr F + gethostbyaddr_r F + gethostbyname F + gethostbyname2 F + gethostbyname2_r F + gethostbyname_r F + gethostent F + gethostent_r F + gethostid F + gethostname F + getifaddrs F + getipv4sourcefilter F + getitimer F + getline F + getloadavg F + getlogin F + getlogin_r F + getmntent F + getmntent_r F + getmsg F + getnameinfo F + getnetbyaddr F + getnetbyaddr_r F + getnetbyname F + getnetbyname_r F + getnetent F + getnetent_r F + getnetgrent F + getnetgrent_r F + getnetname F + getopt F + getopt_long F + getopt_long_only F + getpagesize F + getpass F + getpeername F + getpgid F + getpgrp F + getpid F + getpmsg F + getppid F + getpriority F + getprotobyname F + getprotobyname_r F + getprotobynumber F + getprotobynumber_r F + getprotoent F + getprotoent_r F + getpt F + getpublickey F + getpw F + getpwent F + getpwent_r F + getpwnam F + getpwnam_r F + getpwuid F + getpwuid_r F + getresgid F + getresuid F + getrlimit F + getrlimit64 F + getrpcbyname F + getrpcbyname_r F + getrpcbynumber F + getrpcbynumber_r F + getrpcent F + getrpcent_r F + getrpcport F + getrusage F + gets F + getsecretkey F + getservbyname F + getservbyname_r F + getservbyport F + getservbyport_r F + getservent F + getservent_r F + getsgent F + getsgent_r F + getsgnam F + getsgnam_r F + getsid F + getsockname F + getsockopt F + getsourcefilter F + getspent F + getspent_r F + getspnam F + getspnam_r F + getsubopt F + gettext F + gettimeofday F + getttyent F + getttynam F + getuid F + getusershell F + getutent F + getutent_r F + getutid F + getutid_r F + getutline F + getutline_r F + getutmp F + getutmpx F + getutxent F + getutxid F + getutxline F + getw F + getwc F + getwc_unlocked F + getwchar F + getwchar_unlocked F + getwd F + getxattr F + glob F + glob64 F + glob_pattern_p F + globfree F + globfree64 F + gmtime F + gmtime_r F + gnu_dev_major F + gnu_dev_makedev F + gnu_dev_minor F + gnu_get_libc_release F + gnu_get_libc_version F + grantpt F + group_member F + gsignal F + gtty F + h_errlist D 0x14 + h_nerr D 0x4 + hasmntopt F + hcreate F + hcreate_r F + hdestroy F + hdestroy_r F + herror F + host2netname F + hsearch F + hsearch_r F + hstrerror F + htonl F + htons F + iconv F + iconv_close F + iconv_open F + if_freenameindex F + if_indextoname F + if_nameindex F + if_nametoindex F + imaxabs F + imaxdiv F + in6addr_any D 0x10 + in6addr_loopback D 0x10 + index F + inet6_opt_append F + inet6_opt_find F + inet6_opt_finish F + inet6_opt_get_val F + inet6_opt_init F + inet6_opt_next F + inet6_opt_set_val F + inet6_option_alloc F + inet6_option_append F + inet6_option_find F + inet6_option_init F + inet6_option_next F + inet6_option_space F + inet6_rth_add F + inet6_rth_getaddr F + inet6_rth_init F + inet6_rth_reverse F + inet6_rth_segments F + inet6_rth_space F + inet_addr F + inet_aton F + inet_lnaof F + inet_makeaddr F + inet_netof F + inet_network F + inet_nsap_addr F + inet_nsap_ntoa F + inet_ntoa F + inet_ntop F + inet_pton F + init_module F + initgroups F + initstate F + initstate_r F + innetgr F + inotify_add_watch F + inotify_init F + inotify_init1 F + inotify_rm_watch F + insque F + ioctl F + iruserok F + iruserok_af F + isalnum F + isalnum_l F + isalpha F + isalpha_l F + isascii F + isastream F + isatty F + isblank F + isblank_l F + iscntrl F + iscntrl_l F + isctype F + isdigit F + isdigit_l F + isfdtype F + isgraph F + isgraph_l F + isinf F + isinff F + isinfl F + islower F + islower_l F + isnan F + isnanf F + isnanl F + isprint F + isprint_l F + ispunct F + ispunct_l F + isspace F + isspace_l F + isupper F + isupper_l F + iswalnum F + iswalnum_l F + iswalpha F + iswalpha_l F + iswblank F + iswblank_l F + iswcntrl F + iswcntrl_l F + iswctype F + iswctype_l F + iswdigit F + iswdigit_l F + iswgraph F + iswgraph_l F + iswlower F + iswlower_l F + iswprint F + iswprint_l F + iswpunct F + iswpunct_l F + iswspace F + iswspace_l F + iswupper F + iswupper_l F + iswxdigit F + iswxdigit_l F + isxdigit F + isxdigit_l F + jrand48 F + jrand48_r F + key_decryptsession F + key_decryptsession_pk F + key_encryptsession F + key_encryptsession_pk F + key_gendes F + key_get_conv F + key_secretkey_is_set F + key_setnet F + key_setsecret F + kill F + killpg F + klogctl F + l64a F + labs F + lchmod F + lchown F + lckpwdf F + lcong48 F + lcong48_r F + ldexp F + ldexpf F + ldexpl F + ldiv F + lfind F + lgetxattr F + link F + linkat F + listen F + listxattr F + llabs F + lldiv F + llistxattr F + llseek F + loc1 D 0x4 + loc2 D 0x4 + localeconv F + localtime F + localtime_r F + lockf F + lockf64 F + locs D 0x4 + longjmp F + lrand48 F + lrand48_r F + lremovexattr F + lsearch F + lseek F + lseek64 F + lsetxattr F + lutimes F + madvise F + makecontext F + mallinfo F + malloc F + malloc_get_state F + malloc_info F + malloc_set_state F + malloc_stats F + malloc_trim F + malloc_usable_size F + mallopt F + mallwatch D 0x4 + mblen F + mbrlen F + mbrtowc F + mbsinit F + mbsnrtowcs F + mbsrtowcs F + mbstowcs F + mbtowc F + mcheck F + mcheck_check_all F + mcheck_pedantic F + mcount F + memalign F + memccpy F + memchr F + memcmp F + memcpy F + memfrob F + memmem F + memmove F + mempcpy F + memrchr F + memset F + mincore F + mkdir F + mkdirat F + mkdtemp F + mkfifo F + mkfifoat F + mkostemp F + mkostemp64 F + mkostemps F + mkostemps64 F + mkstemp F + mkstemp64 F + mkstemps F + mkstemps64 F + mktemp F + mktime F + mlock F + mlockall F + mmap F + mmap64 F + modf F + modff F + modfl F + moncontrol F + monstartup F + mount F + mprobe F + mprotect F + mrand48 F + mrand48_r F + mremap F + msgctl F + msgget F + msgrcv F + msgsnd F + msync F + mtrace F + munlock F + munlockall F + munmap F + muntrace F + nanosleep F + netname2host F + netname2user F + newlocale F + nfsservctl F + nftw F + nftw64 F + ngettext F + nice F + nl_langinfo F + nl_langinfo_l F + nrand48 F + nrand48_r F + ntohl F + ntohs F + ntp_adjtime F + ntp_gettime F + ntp_gettimex F + obstack_alloc_failed_handler D 0x4 + obstack_exit_failure D 0x4 + obstack_free F + obstack_printf F + obstack_vprintf F + on_exit F + open F + open64 F + open_memstream F + open_wmemstream F + openat F + openat64 F + opendir F + openlog F + optarg D 0x4 + opterr D 0x4 + optind D 0x4 + optopt D 0x4 + parse_printf_format F + passwd2des F + pathconf F + pause F + pclose F + perror F + personality F + pipe F + pipe2 F + pivot_root F + pmap_getmaps F + pmap_getport F + pmap_rmtcall F + pmap_set F + pmap_unset F + poll F + popen F + posix_fadvise F + posix_fadvise64 F + posix_fallocate F + posix_fallocate64 F + posix_madvise F + posix_memalign F + posix_openpt F + posix_spawn F + posix_spawn_file_actions_addclose F + posix_spawn_file_actions_adddup2 F + posix_spawn_file_actions_addopen F + posix_spawn_file_actions_destroy F + posix_spawn_file_actions_init F + posix_spawnattr_destroy F + posix_spawnattr_getflags F + posix_spawnattr_getpgroup F + posix_spawnattr_getschedparam F + posix_spawnattr_getschedpolicy F + posix_spawnattr_getsigdefault F + posix_spawnattr_getsigmask F + posix_spawnattr_init F + posix_spawnattr_setflags F + posix_spawnattr_setpgroup F + posix_spawnattr_setschedparam F + posix_spawnattr_setschedpolicy F + posix_spawnattr_setsigdefault F + posix_spawnattr_setsigmask F + posix_spawnp F + ppoll F + prctl F + pread F + pread64 F + preadv F + preadv64 F + printf F + printf_size F + printf_size_info F + profil F + program_invocation_name D 0x4 + program_invocation_short_name D 0x4 + pselect F + psiginfo F + psignal F + pthread_attr_destroy F + pthread_attr_getdetachstate F + pthread_attr_getinheritsched F + pthread_attr_getschedparam F + pthread_attr_getschedpolicy F + pthread_attr_getscope F + pthread_attr_init F + pthread_attr_setdetachstate F + pthread_attr_setinheritsched F + pthread_attr_setschedparam F + pthread_attr_setschedpolicy F + pthread_attr_setscope F + pthread_cond_broadcast F + pthread_cond_destroy F + pthread_cond_init F + pthread_cond_signal F + pthread_cond_timedwait F + pthread_cond_wait F + pthread_condattr_destroy F + pthread_condattr_init F + pthread_equal F + pthread_exit F + pthread_getschedparam F + pthread_mutex_destroy F + pthread_mutex_init F + pthread_mutex_lock F + pthread_mutex_unlock F + pthread_self F + pthread_setcancelstate F + pthread_setcanceltype F + pthread_setschedparam F + ptrace F + ptsname F + ptsname_r F + putc F + putc_unlocked F + putchar F + putchar_unlocked F + putenv F + putgrent F + putmsg F + putpmsg F + putpwent F + puts F + putsgent F + putspent F + pututline F + pututxline F + putw F + putwc F + putwc_unlocked F + putwchar F + putwchar_unlocked F + pvalloc F + pwrite F + pwrite64 F + pwritev F + pwritev64 F + qecvt F + qecvt_r F + qfcvt F + qfcvt_r F + qgcvt F + qsort F + qsort_r F + query_module F + quick_exit F + quotactl F + raise F + rand F + rand_r F + random F + random_r F + rawmemchr F + rcmd F + rcmd_af F + re_comp F + re_compile_fastmap F + re_compile_pattern F + re_exec F + re_match F + re_match_2 F + re_search F + re_search_2 F + re_set_registers F + re_set_syntax F + re_syntax_options D 0x4 + read F + readahead F + readdir F + readdir64 F + readdir64_r F + readdir_r F + readlink F + readlinkat F + readv F + realloc F + realpath F + reboot F + recv F + recvfrom F + recvmmsg F + recvmsg F + regcomp F + regerror F + regexec F + regfree F + register_printf_function F + register_printf_modifier F + register_printf_specifier F + register_printf_type F + registerrpc F + remap_file_pages F + remove F + removexattr F + remque F + rename F + renameat F + revoke F + rewind F + rewinddir F + rexec F + rexec_af F + rexecoptions D 0x4 + rindex F + rmdir F + rpc_createerr D 0x10 + rpmatch F + rresvport F + rresvport_af F + rtime F + ruserok F + ruserok_af F + ruserpass F + sbrk F + scalbn F + scalbnf F + scalbnl F + scandir F + scandir64 F + scanf F + sched_get_priority_max F + sched_get_priority_min F + sched_getaffinity F + sched_getcpu F + sched_getparam F + sched_getscheduler F + sched_rr_get_interval F + sched_setaffinity F + sched_setparam F + sched_setscheduler F + sched_yield F + seed48 F + seed48_r F + seekdir F + select F + semctl F + semget F + semop F + semtimedop F + send F + sendfile F + sendfile64 F + sendmsg F + sendto F + set_dataplane F + setaliasent F + setbuf F + setbuffer F + setcontext F + setdomainname F + setegid F + setenv F + seteuid F + setfsent F + setfsgid F + setfsuid F + setgid F + setgrent F + setgroups F + sethostent F + sethostid F + sethostname F + setipv4sourcefilter F + setitimer F + setjmp F + setlinebuf F + setlocale F + setlogin F + setlogmask F + setmntent F + setnetent F + setnetgrent F + setpgid F + setpgrp F + setpriority F + setprotoent F + setpwent F + setregid F + setresgid F + setresuid F + setreuid F + setrlimit F + setrlimit64 F + setrpcent F + setservent F + setsgent F + setsid F + setsockopt F + setsourcefilter F + setspent F + setstate F + setstate_r F + settimeofday F + setttyent F + setuid F + setusershell F + setutent F + setutxent F + setvbuf F + setxattr F + sgetsgent F + sgetsgent_r F + sgetspent F + sgetspent_r F + shmat F + shmctl F + shmdt F + shmget F + shutdown F + sigaction F + sigaddset F + sigaltstack F + sigandset F + sigblock F + sigdelset F + sigemptyset F + sigfillset F + siggetmask F + sighold F + sigignore F + siginterrupt F + sigisemptyset F + sigismember F + siglongjmp F + signal F + signalfd F + sigorset F + sigpause F + sigpending F + sigprocmask F + sigqueue F + sigrelse F + sigreturn F + sigset F + sigsetmask F + sigstack F + sigsuspend F + sigtimedwait F + sigvec F + sigwait F + sigwaitinfo F + sleep F + snprintf F + sockatmark F + socket F + socketpair F + splice F + sprintf F + sprofil F + srand F + srand48 F + srand48_r F + srandom F + srandom_r F + sscanf F + ssignal F + sstk F + statfs F + statfs64 F + statvfs F + statvfs64 F + stderr D 0x4 + stdin D 0x4 + stdout D 0x4 + step F + stime F + stpcpy F + stpncpy F + strcasecmp F + strcasecmp_l F + strcasestr F + strcat F + strchr F + strchrnul F + strcmp F + strcoll F + strcoll_l F + strcpy F + strcspn F + strdup F + strerror F + strerror_l F + strerror_r F + strfmon F + strfmon_l F + strfry F + strftime F + strftime_l F + strlen F + strncasecmp F + strncasecmp_l F + strncat F + strncmp F + strncpy F + strndup F + strnlen F + strpbrk F + strptime F + strptime_l F + strrchr F + strsep F + strsignal F + strspn F + strstr F + strtod F + strtod_l F + strtof F + strtof_l F + strtoimax F + strtok F + strtok_r F + strtol F + strtol_l F + strtold F + strtold_l F + strtoll F + strtoll_l F + strtoq F + strtoul F + strtoul_l F + strtoull F + strtoull_l F + strtoumax F + strtouq F + strverscmp F + strxfrm F + strxfrm_l F + stty F + svc_exit F + svc_fdset D 0x80 + svc_getreq F + svc_getreq_common F + svc_getreq_poll F + svc_getreqset F + svc_max_pollfd D 0x4 + svc_pollfd D 0x4 + svc_register F + svc_run F + svc_sendreply F + svc_unregister F + svcauthdes_stats D 0xc + svcerr_auth F + svcerr_decode F + svcerr_noproc F + svcerr_noprog F + svcerr_progvers F + svcerr_systemerr F + svcerr_weakauth F + svcfd_create F + svcraw_create F + svctcp_create F + svcudp_bufcreate F + svcudp_create F + svcudp_enablecache F + svcunix_create F + svcunixfd_create F + swab F + swapcontext F + swapoff F + swapon F + swprintf F + swscanf F + symlink F + symlinkat F + sync F + sync_file_range F + sys_errlist D 0x21c + sys_nerr D 0x4 + sys_sigabbrev D 0x104 + sys_siglist D 0x104 + syscall F + sysconf F + sysctl F + sysinfo F + syslog F + system F + sysv_signal F + tcdrain F + tcflow F + tcflush F + tcgetattr F + tcgetpgrp F + tcgetsid F + tcsendbreak F + tcsetattr F + tcsetpgrp F + tdelete F + tdestroy F + tee F + telldir F + tempnam F + textdomain F + tfind F + time F + timegm F + timelocal F + timerfd_create F + timerfd_gettime F + timerfd_settime F + times F + timezone D 0x4 + tmpfile F + tmpfile64 F + tmpnam F + tmpnam_r F + toascii F + tolower F + tolower_l F + toupper F + toupper_l F + towctrans F + towctrans_l F + towlower F + towlower_l F + towupper F + towupper_l F + tr_break F + truncate F + truncate64 F + tsearch F + ttyname F + ttyname_r F + ttyslot F + twalk F + tzname D 0x8 + tzset F + ualarm F + ulckpwdf F + ulimit F + umask F + umount F + umount2 F + uname F + ungetc F + ungetwc F + unlink F + unlinkat F + unlockpt F + unsetenv F + unshare F + updwtmp F + updwtmpx F + uselib F + uselocale F + user2netname F + usleep F + ustat F + utime F + utimensat F + utimes F + utmpname F + utmpxname F + valloc F + vasprintf F + vdprintf F + verr F + verrx F + versionsort F + versionsort64 F + vfork F + vfprintf F + vfscanf F + vfwprintf F + vfwscanf F + vhangup F + vlimit F + vmsplice F + vprintf F + vscanf F + vsnprintf F + vsprintf F + vsscanf F + vswprintf F + vswscanf F + vsyslog F + vtimes F + vwarn F + vwarnx F + vwprintf F + vwscanf F + wait F + wait3 F + wait4 F + waitid F + waitpid F + warn F + warnx F + wcpcpy F + wcpncpy F + wcrtomb F + wcscasecmp F + wcscasecmp_l F + wcscat F + wcschr F + wcschrnul F + wcscmp F + wcscoll F + wcscoll_l F + wcscpy F + wcscspn F + wcsdup F + wcsftime F + wcsftime_l F + wcslen F + wcsncasecmp F + wcsncasecmp_l F + wcsncat F + wcsncmp F + wcsncpy F + wcsnlen F + wcsnrtombs F + wcspbrk F + wcsrchr F + wcsrtombs F + wcsspn F + wcsstr F + wcstod F + wcstod_l F + wcstof F + wcstof_l F + wcstoimax F + wcstok F + wcstol F + wcstol_l F + wcstold F + wcstold_l F + wcstoll F + wcstoll_l F + wcstombs F + wcstoq F + wcstoul F + wcstoul_l F + wcstoull F + wcstoull_l F + wcstoumax F + wcstouq F + wcswcs F + wcswidth F + wcsxfrm F + wcsxfrm_l F + wctob F + wctomb F + wctrans F + wctrans_l F + wctype F + wctype_l F + wcwidth F + wmemchr F + wmemcmp F + wmemcpy F + wmemmove F + wmempcpy F + wmemset F + wordexp F + wordfree F + wprintf F + write F + writev F + wscanf F + xdecrypt F + xdr_accepted_reply F + xdr_array F + xdr_authdes_cred F + xdr_authdes_verf F + xdr_authunix_parms F + xdr_bool F + xdr_bytes F + xdr_callhdr F + xdr_callmsg F + xdr_char F + xdr_cryptkeyarg F + xdr_cryptkeyarg2 F + xdr_cryptkeyres F + xdr_des_block F + xdr_double F + xdr_enum F + xdr_float F + xdr_free F + xdr_getcredres F + xdr_hyper F + xdr_int F + xdr_int16_t F + xdr_int32_t F + xdr_int64_t F + xdr_int8_t F + xdr_key_netstarg F + xdr_key_netstres F + xdr_keybuf F + xdr_keystatus F + xdr_long F + xdr_longlong_t F + xdr_netnamestr F + xdr_netobj F + xdr_opaque F + xdr_opaque_auth F + xdr_pmap F + xdr_pmaplist F + xdr_pointer F + xdr_quad_t F + xdr_reference F + xdr_rejected_reply F + xdr_replymsg F + xdr_rmtcall_args F + xdr_rmtcallres F + xdr_short F + xdr_sizeof F + xdr_string F + xdr_u_char F + xdr_u_hyper F + xdr_u_int F + xdr_u_long F + xdr_u_longlong_t F + xdr_u_quad_t F + xdr_u_short F + xdr_uint16_t F + xdr_uint32_t F + xdr_uint64_t F + xdr_uint8_t F + xdr_union F + xdr_unixcred F + xdr_vector F + xdr_void F + xdr_wrapstring F + xdrmem_create F + xdrrec_create F + xdrrec_endofrecord F + xdrrec_eof F + xdrrec_skiprecord F + xdrstdio_create F + xencrypt F + xprt_register F + xprt_unregister F +GLIBC_2.15 + GLIBC_2.15 A + __fdelt_chk F + __fdelt_warn F + clock_adjtime F + fanotify_init F + fanotify_mark F + name_to_handle_at F + open_by_handle_at F + posix_spawn F + posix_spawnp F + prlimit F + prlimit64 F + process_vm_readv F + process_vm_writev F + scandirat F + scandirat64 F + sendmmsg F + setns F + syncfs F +GLIBC_2.16 + GLIBC_2.16 A + __getauxval F + __poll_chk F + __ppoll_chk F + aligned_alloc F + c16rtomb F + c32rtomb F + getauxval F + mbrtoc16 F + mbrtoc32 F + timespec_get F +GLIBC_2.17 + GLIBC_2.17 A + clock_getcpuclockid F + clock_getres F + clock_gettime F + clock_nanosleep F + clock_settime F + secure_getenv F +GLIBC_2.18 + GLIBC_2.18 A + __cxa_thread_atexit_impl F diff --git a/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libcrypt.abilist b/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libcrypt.abilist new file mode 100644 index 0000000000..608e5df0b1 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libcrypt.abilist @@ -0,0 +1,9 @@ +GLIBC_2.12 + GLIBC_2.12 A + crypt F + crypt_r F + encrypt F + encrypt_r F + fcrypt F + setkey F + setkey_r F diff --git a/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libdl.abilist b/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libdl.abilist new file mode 100644 index 0000000000..27a72281b7 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libdl.abilist @@ -0,0 +1,11 @@ +GLIBC_2.12 + GLIBC_2.12 A + dladdr F + dladdr1 F + dlclose F + dlerror F + dlinfo F + dlmopen F + dlopen F + dlsym F + dlvsym F diff --git a/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libm.abilist b/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libm.abilist new file mode 100644 index 0000000000..cb0d1a4423 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libm.abilist @@ -0,0 +1,373 @@ +GLIBC_2.12 + GLIBC_2.12 A + _LIB_VERSION D 0x4 + __clog10 F + __clog10f F + __clog10l F + __finite F + __finitef F + __fpclassify F + __fpclassifyf F + __signbit F + __signbitf F + acos F + acosf F + acosh F + acoshf F + acoshl F + acosl F + asin F + asinf F + asinh F + asinhf F + asinhl F + asinl F + atan F + atan2 F + atan2f F + atan2l F + atanf F + atanh F + atanhf F + atanhl F + atanl F + cabs F + cabsf F + cabsl F + cacos F + cacosf F + cacosh F + cacoshf F + cacoshl F + cacosl F + carg F + cargf F + cargl F + casin F + casinf F + casinh F + casinhf F + casinhl F + casinl F + catan F + catanf F + catanh F + catanhf F + catanhl F + catanl F + cbrt F + cbrtf F + cbrtl F + ccos F + ccosf F + ccosh F + ccoshf F + ccoshl F + ccosl F + ceil F + ceilf F + ceill F + cexp F + cexpf F + cexpl F + cimag F + cimagf F + cimagl F + clog F + clog10 F + clog10f F + clog10l F + clogf F + clogl F + conj F + conjf F + conjl F + copysign F + copysignf F + copysignl F + cos F + cosf F + cosh F + coshf F + coshl F + cosl F + cpow F + cpowf F + cpowl F + cproj F + cprojf F + cprojl F + creal F + crealf F + creall F + csin F + csinf F + csinh F + csinhf F + csinhl F + csinl F + csqrt F + csqrtf F + csqrtl F + ctan F + ctanf F + ctanh F + ctanhf F + ctanhl F + ctanl F + drem F + dremf F + dreml F + erf F + erfc F + erfcf F + erfcl F + erff F + erfl F + exp F + exp10 F + exp10f F + exp10l F + exp2 F + exp2f F + exp2l F + expf F + expl F + expm1 F + expm1f F + expm1l F + fabs F + fabsf F + fabsl F + fdim F + fdimf F + fdiml F + feclearexcept F + fedisableexcept F + feenableexcept F + fegetenv F + fegetexcept F + fegetexceptflag F + fegetround F + feholdexcept F + feraiseexcept F + fesetenv F + fesetexceptflag F + fesetround F + fetestexcept F + feupdateenv F + finite F + finitef F + finitel F + floor F + floorf F + floorl F + fma F + fmaf F + fmal F + fmax F + fmaxf F + fmaxl F + fmin F + fminf F + fminl F + fmod F + fmodf F + fmodl F + frexp F + frexpf F + frexpl F + gamma F + gammaf F + gammal F + hypot F + hypotf F + hypotl F + ilogb F + ilogbf F + ilogbl F + j0 F + j0f F + j0l F + j1 F + j1f F + j1l F + jn F + jnf F + jnl F + ldexp F + ldexpf F + ldexpl F + lgamma F + lgamma_r F + lgammaf F + lgammaf_r F + lgammal F + lgammal_r F + llrint F + llrintf F + llrintl F + llround F + llroundf F + llroundl F + log F + log10 F + log10f F + log10l F + log1p F + log1pf F + log1pl F + log2 F + log2f F + log2l F + logb F + logbf F + logbl F + logf F + logl F + lrint F + lrintf F + lrintl F + lround F + lroundf F + lroundl F + matherr F + modf F + modff F + modfl F + nan F + nanf F + nanl F + nearbyint F + nearbyintf F + nearbyintl F + nextafter F + nextafterf F + nextafterl F + nexttoward F + nexttowardf F + nexttowardl F + pow F + pow10 F + pow10f F + pow10l F + powf F + powl F + remainder F + remainderf F + remainderl F + remquo F + remquof F + remquol F + rint F + rintf F + rintl F + round F + roundf F + roundl F + scalb F + scalbf F + scalbl F + scalbln F + scalblnf F + scalblnl F + scalbn F + scalbnf F + scalbnl F + signgam D 0x4 + significand F + significandf F + significandl F + sin F + sincos F + sincosf F + sincosl F + sinf F + sinh F + sinhf F + sinhl F + sinl F + sqrt F + sqrtf F + sqrtl F + tan F + tanf F + tanh F + tanhf F + tanhl F + tanl F + tgamma F + tgammaf F + tgammal F + trunc F + truncf F + truncl F + y0 F + y0f F + y0l F + y1 F + y1f F + y1l F + yn F + ynf F + ynl F +GLIBC_2.15 + GLIBC_2.15 A + __acos_finite F + __acosf_finite F + __acosh_finite F + __acoshf_finite F + __asin_finite F + __asinf_finite F + __atan2_finite F + __atan2f_finite F + __atanh_finite F + __atanhf_finite F + __cosh_finite F + __coshf_finite F + __exp10_finite F + __exp10f_finite F + __exp2_finite F + __exp2f_finite F + __exp_finite F + __expf_finite F + __fmod_finite F + __fmodf_finite F + __gamma_r_finite F + __gammaf_r_finite F + __hypot_finite F + __hypotf_finite F + __j0_finite F + __j0f_finite F + __j1_finite F + __j1f_finite F + __jn_finite F + __jnf_finite F + __lgamma_r_finite F + __lgammaf_r_finite F + __log10_finite F + __log10f_finite F + __log2_finite F + __log2f_finite F + __log_finite F + __logf_finite F + __pow_finite F + __powf_finite F + __remainder_finite F + __remainderf_finite F + __scalb_finite F + __scalbf_finite F + __sinh_finite F + __sinhf_finite F + __sqrt_finite F + __sqrtf_finite F + __y0_finite F + __y0f_finite F + __y1_finite F + __y1f_finite F + __yn_finite F + __ynf_finite F +GLIBC_2.18 + GLIBC_2.18 A + __issignaling F + __issignalingf F diff --git a/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libnsl.abilist b/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libnsl.abilist new file mode 100644 index 0000000000..e4217934c8 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libnsl.abilist @@ -0,0 +1,123 @@ +GLIBC_2.12 + GLIBC_2.12 A + __free_fdresult F + __nis_default_access F + __nis_default_group F + __nis_default_owner F + __nis_default_ttl F + __nis_finddirectory F + __nis_hash F + __nisbind_connect F + __nisbind_create F + __nisbind_destroy F + __nisbind_next F + __yp_check F + nis_add F + nis_add_entry F + nis_addmember F + nis_checkpoint F + nis_clone_directory F + nis_clone_object F + nis_clone_result F + nis_creategroup F + nis_destroy_object F + nis_destroygroup F + nis_dir_cmp F + nis_domain_of F + nis_domain_of_r F + nis_first_entry F + nis_free_directory F + nis_free_object F + nis_free_request F + nis_freenames F + nis_freeresult F + nis_freeservlist F + nis_freetags F + nis_getnames F + nis_getservlist F + nis_ismember F + nis_leaf_of F + nis_leaf_of_r F + nis_lerror F + nis_list F + nis_local_directory F + nis_local_group F + nis_local_host F + nis_local_principal F + nis_lookup F + nis_mkdir F + nis_modify F + nis_modify_entry F + nis_name_of F + nis_name_of_r F + nis_next_entry F + nis_perror F + nis_ping F + nis_print_directory F + nis_print_entry F + nis_print_group F + nis_print_group_entry F + nis_print_link F + nis_print_object F + nis_print_result F + nis_print_rights F + nis_print_table F + nis_read_obj F + nis_remove F + nis_remove_entry F + nis_removemember F + nis_rmdir F + nis_servstate F + nis_sperrno F + nis_sperror F + nis_sperror_r F + nis_stats F + nis_verifygroup F + nis_write_obj F + readColdStartFile F + writeColdStartFile F + xdr_cback_data F + xdr_domainname F + xdr_keydat F + xdr_mapname F + xdr_obj_p F + xdr_peername F + xdr_valdat F + xdr_yp_buf F + xdr_ypall F + xdr_ypbind_binding F + xdr_ypbind_resp F + xdr_ypbind_resptype F + xdr_ypbind_setdom F + xdr_ypdelete_args F + xdr_ypmap_parms F + xdr_ypmaplist F + xdr_yppush_status F + xdr_yppushresp_xfr F + xdr_ypreq_key F + xdr_ypreq_nokey F + xdr_ypreq_xfr F + xdr_ypresp_all F + xdr_ypresp_key_val F + xdr_ypresp_maplist F + xdr_ypresp_master F + xdr_ypresp_order F + xdr_ypresp_val F + xdr_ypresp_xfr F + xdr_ypstat F + xdr_ypupdate_args F + xdr_ypxfrstat F + yp_all F + yp_bind F + yp_first F + yp_get_default_domain F + yp_maplist F + yp_master F + yp_match F + yp_next F + yp_order F + yp_unbind F + yp_update F + ypbinderr_string F + yperr_string F + ypprot_err F diff --git a/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libpthread.abilist b/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libpthread.abilist new file mode 100644 index 0000000000..f3c260071a --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libpthread.abilist @@ -0,0 +1,228 @@ +GLIBC_2.12 + GLIBC_2.12 A + _IO_flockfile F + _IO_ftrylockfile F + _IO_funlockfile F + __close F + __connect F + __errno_location F + __fcntl F + __fork F + __h_errno_location F + __libc_allocate_rtsig F + __libc_current_sigrtmax F + __libc_current_sigrtmin F + __lseek F + __nanosleep F + __open F + __open64 F + __pread64 F + __pthread_cleanup_routine F + __pthread_getspecific F + __pthread_key_create F + __pthread_mutex_destroy F + __pthread_mutex_init F + __pthread_mutex_lock F + __pthread_mutex_trylock F + __pthread_mutex_unlock F + __pthread_mutexattr_destroy F + __pthread_mutexattr_init F + __pthread_mutexattr_settype F + __pthread_once F + __pthread_register_cancel F + __pthread_register_cancel_defer F + __pthread_rwlock_destroy F + __pthread_rwlock_init F + __pthread_rwlock_rdlock F + __pthread_rwlock_tryrdlock F + __pthread_rwlock_trywrlock F + __pthread_rwlock_unlock F + __pthread_rwlock_wrlock F + __pthread_setspecific F + __pthread_unregister_cancel F + __pthread_unregister_cancel_restore F + __pthread_unwind_next F + __pwrite64 F + __read F + __res_state F + __send F + __sigaction F + __vfork F + __wait F + __write F + _pthread_cleanup_pop F + _pthread_cleanup_pop_restore F + _pthread_cleanup_push F + _pthread_cleanup_push_defer F + accept F + close F + connect F + fcntl F + flockfile F + fork F + fsync F + ftrylockfile F + funlockfile F + longjmp F + lseek F + lseek64 F + msync F + nanosleep F + open F + open64 F + pause F + pread F + pread64 F + pthread_attr_destroy F + pthread_attr_getaffinity_np F + pthread_attr_getdetachstate F + pthread_attr_getguardsize F + pthread_attr_getinheritsched F + pthread_attr_getschedparam F + pthread_attr_getschedpolicy F + pthread_attr_getscope F + pthread_attr_getstack F + pthread_attr_getstackaddr F + pthread_attr_getstacksize F + pthread_attr_init F + pthread_attr_setaffinity_np F + pthread_attr_setdetachstate F + pthread_attr_setguardsize F + pthread_attr_setinheritsched F + pthread_attr_setschedparam F + pthread_attr_setschedpolicy F + pthread_attr_setscope F + pthread_attr_setstack F + pthread_attr_setstackaddr F + pthread_attr_setstacksize F + pthread_barrier_destroy F + pthread_barrier_init F + pthread_barrier_wait F + pthread_barrierattr_destroy F + pthread_barrierattr_getpshared F + pthread_barrierattr_init F + pthread_barrierattr_setpshared F + pthread_cancel F + pthread_cond_broadcast F + pthread_cond_destroy F + pthread_cond_init F + pthread_cond_signal F + pthread_cond_timedwait F + pthread_cond_wait F + pthread_condattr_destroy F + pthread_condattr_getclock F + pthread_condattr_getpshared F + pthread_condattr_init F + pthread_condattr_setclock F + pthread_condattr_setpshared F + pthread_create F + pthread_detach F + pthread_equal F + pthread_exit F + pthread_getaffinity_np F + pthread_getattr_np F + pthread_getconcurrency F + pthread_getcpuclockid F + pthread_getname_np F + pthread_getschedparam F + pthread_getspecific F + pthread_join F + pthread_key_create F + pthread_key_delete F + pthread_kill F + pthread_kill_other_threads_np F + pthread_mutex_consistent F + pthread_mutex_consistent_np F + pthread_mutex_destroy F + pthread_mutex_getprioceiling F + pthread_mutex_init F + pthread_mutex_lock F + pthread_mutex_setprioceiling F + pthread_mutex_timedlock F + pthread_mutex_trylock F + pthread_mutex_unlock F + pthread_mutexattr_destroy F + pthread_mutexattr_getkind_np F + pthread_mutexattr_getprioceiling F + pthread_mutexattr_getprotocol F + pthread_mutexattr_getpshared F + pthread_mutexattr_getrobust F + pthread_mutexattr_getrobust_np F + pthread_mutexattr_gettype F + pthread_mutexattr_init F + pthread_mutexattr_setkind_np F + pthread_mutexattr_setprioceiling F + pthread_mutexattr_setprotocol F + pthread_mutexattr_setpshared F + pthread_mutexattr_setrobust F + pthread_mutexattr_setrobust_np F + pthread_mutexattr_settype F + pthread_once F + pthread_rwlock_destroy F + pthread_rwlock_init F + pthread_rwlock_rdlock F + pthread_rwlock_timedrdlock F + pthread_rwlock_timedwrlock F + pthread_rwlock_tryrdlock F + pthread_rwlock_trywrlock F + pthread_rwlock_unlock F + pthread_rwlock_wrlock F + pthread_rwlockattr_destroy F + pthread_rwlockattr_getkind_np F + pthread_rwlockattr_getpshared F + pthread_rwlockattr_init F + pthread_rwlockattr_setkind_np F + pthread_rwlockattr_setpshared F + pthread_self F + pthread_setaffinity_np F + pthread_setcancelstate F + pthread_setcanceltype F + pthread_setconcurrency F + pthread_setname_np F + pthread_setschedparam F + pthread_setschedprio F + pthread_setspecific F + pthread_sigmask F + pthread_sigqueue F + pthread_spin_destroy F + pthread_spin_init F + pthread_spin_lock F + pthread_spin_trylock F + pthread_spin_unlock F + pthread_testcancel F + pthread_timedjoin_np F + pthread_tryjoin_np F + pthread_yield F + pwrite F + pwrite64 F + raise F + read F + recv F + recvfrom F + recvmsg F + sem_close F + sem_destroy F + sem_getvalue F + sem_init F + sem_open F + sem_post F + sem_timedwait F + sem_trywait F + sem_unlink F + sem_wait F + send F + sendmsg F + sendto F + sigaction F + siglongjmp F + sigwait F + system F + tcdrain F + vfork F + wait F + waitpid F + write F +GLIBC_2.18 + GLIBC_2.18 A + pthread_getattr_default_np F + pthread_setattr_default_np F diff --git a/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libresolv.abilist b/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libresolv.abilist new file mode 100644 index 0000000000..64826160a1 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libresolv.abilist @@ -0,0 +1,93 @@ +GLIBC_2.12 + GLIBC_2.12 A + __b64_ntop F + __b64_pton F + __dn_comp F + __dn_count_labels F + __dn_expand F + __dn_skipname F + __fp_nquery F + __fp_query F + __fp_resstat F + __hostalias F + __loc_aton F + __loc_ntoa F + __p_cdname F + __p_cdnname F + __p_class F + __p_class_syms D 0x54 + __p_fqname F + __p_fqnname F + __p_option F + __p_query F + __p_rcode F + __p_secstodate F + __p_time F + __p_type F + __p_type_syms D 0x228 + __putlong F + __putshort F + __res_close F + __res_dnok F + __res_hnok F + __res_hostalias F + __res_isourserver F + __res_mailok F + __res_mkquery F + __res_nameinquery F + __res_nmkquery F + __res_nquery F + __res_nquerydomain F + __res_nsearch F + __res_nsend F + __res_ownok F + __res_queriesmatch F + __res_query F + __res_querydomain F + __res_search F + __res_send F + __sym_ntop F + __sym_ntos F + __sym_ston F + _gethtbyaddr F + _gethtbyname F + _gethtbyname2 F + _gethtent F + _getlong F + _getshort F + _res_opcodes D 0x40 + _sethtent F + inet_net_ntop F + inet_net_pton F + inet_neta F + ns_datetosecs F + ns_format_ttl F + ns_get16 F + ns_get32 F + ns_initparse F + ns_makecanon F + ns_msg_getflag F + ns_name_compress F + ns_name_ntol F + ns_name_ntop F + ns_name_pack F + ns_name_pton F + ns_name_rollback F + ns_name_skip F + ns_name_uncompress F + ns_name_unpack F + ns_parse_ttl F + ns_parserr F + ns_put16 F + ns_put32 F + ns_samedomain F + ns_samename F + ns_skiprr F + ns_sprintrr F + ns_sprintrrf F + ns_subdomain F + res_gethostbyaddr F + res_gethostbyname F + res_gethostbyname2 F + res_send_setqhook F + res_send_setrhook F diff --git a/sysdeps/unix/sysv/linux/tile/tilepro/nptl/librt.abilist b/sysdeps/unix/sysv/linux/tile/tilepro/nptl/librt.abilist new file mode 100644 index 0000000000..87fec065af --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilepro/nptl/librt.abilist @@ -0,0 +1,42 @@ +GLIBC_2.12 + GLIBC_2.12 A + __mq_open_2 F + aio_cancel F + aio_cancel64 F + aio_error F + aio_error64 F + aio_fsync F + aio_fsync64 F + aio_init F + aio_read F + aio_read64 F + aio_return F + aio_return64 F + aio_suspend F + aio_suspend64 F + aio_write F + aio_write64 F + clock_getcpuclockid F + clock_getres F + clock_gettime F + clock_nanosleep F + clock_settime F + lio_listio F + lio_listio64 F + mq_close F + mq_getattr F + mq_notify F + mq_open F + mq_receive F + mq_send F + mq_setattr F + mq_timedreceive F + mq_timedsend F + mq_unlink F + shm_open F + shm_unlink F + timer_create F + timer_delete F + timer_getoverrun F + timer_gettime F + timer_settime F diff --git a/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libthread_db.abilist b/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libthread_db.abilist new file mode 100644 index 0000000000..934ce9acd6 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libthread_db.abilist @@ -0,0 +1,42 @@ +GLIBC_2.12 + GLIBC_2.12 A + td_init F + td_log F + td_symbol_list F + td_ta_clear_event F + td_ta_delete F + td_ta_enable_stats F + td_ta_event_addr F + td_ta_event_getmsg F + td_ta_get_nthreads F + td_ta_get_ph F + td_ta_get_stats F + td_ta_map_id2thr F + td_ta_map_lwp2thr F + td_ta_new F + td_ta_reset_stats F + td_ta_set_event F + td_ta_setconcurrency F + td_ta_thr_iter F + td_ta_tsd_iter F + td_thr_clear_event F + td_thr_dbresume F + td_thr_dbsuspend F + td_thr_event_enable F + td_thr_event_getmsg F + td_thr_get_info F + td_thr_getfpregs F + td_thr_getgregs F + td_thr_getxregs F + td_thr_getxregsize F + td_thr_set_event F + td_thr_setfpregs F + td_thr_setgregs F + td_thr_setprio F + td_thr_setsigpending F + td_thr_setxregs F + td_thr_sigsetmask F + td_thr_tls_get_addr F + td_thr_tlsbase F + td_thr_tsd F + td_thr_validate F diff --git a/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libutil.abilist b/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libutil.abilist new file mode 100644 index 0000000000..50c312a7c6 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libutil.abilist @@ -0,0 +1,8 @@ +GLIBC_2.12 + GLIBC_2.12 A + forkpty F + login F + login_tty F + logout F + logwtmp F + openpty F diff --git a/sysdeps/unix/sysv/linux/tile/tilepro/register-dump.h b/sysdeps/unix/sysv/linux/tile/tilepro/register-dump.h new file mode 100644 index 0000000000..45298ec7c2 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/tilepro/register-dump.h @@ -0,0 +1,111 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + Based on work contributed by Ulrich Drepper , 1998. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include <_itoa.h> + +/* We will print the register dump in this format: + + R0: XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX + R8: XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX + R16: XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX + R24: XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX + R32: XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX + R40: XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX + R48: XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX + R52: XXXXXXXX TP: XXXXXXXX SP: XXXXXXXX LR: XXXXXXXX + + PC: XXXXXXXX ICS: X FAULTNUM: XX + + */ + +static void +hexvalue (unsigned long int value, char *buf, size_t len) +{ + char *cp = _itoa_word (value, buf + len, 16, 0); + while (cp > buf) + *--cp = '0'; +} + +static void +register_dump (int fd, mcontext_t *ctx) +{ + char regs[59][8]; + struct iovec iov[143]; + size_t nr = 0; + unsigned int i; + +#define ADD_STRING(str) \ + iov[nr].iov_base = (char *) str; \ + iov[nr].iov_len = strlen (str); \ + ++nr +#define ADD_MEM(str, len) \ + iov[nr].iov_base = str; \ + iov[nr].iov_len = len; \ + ++nr + + /* Generate strings of register contents. */ + for (i = 0; i < 56; ++i) + hexvalue (ctx->gregs[i], regs[i], 8); + hexvalue (ctx->pc, regs[56], 8); + hexvalue (ctx->ics, regs[57], 1); + hexvalue (ctx->faultnum, regs[58], 2); + + /* Generate the output. */ + for (i = 0; i < 52;) + { + const char *prefixes[] = { + "Register dump:\n\n R0: ", + "\n R8: ", + "\n R16: ", + "\n R24: ", + "\n R32: ", + "\n R40: ", + "\n R48: " + }; + ADD_STRING (prefixes[i / 8]); + do + { + ADD_MEM (regs[i], 8); + ADD_STRING (" "); + } + while (++i % 8 && i < 52); + } + ADD_STRING ("\n R52: "); + ADD_MEM (regs[52], 8); + ADD_STRING (" TP: "); + ADD_MEM (regs[53], 8); + ADD_STRING (" SP: "); + ADD_MEM (regs[54], 8); + ADD_STRING (" LR: "); + ADD_MEM (regs[55], 8); + ADD_STRING ("\n\n PC: "); + ADD_MEM (regs[56], 8); + ADD_STRING (" ICS: "); + ADD_MEM (regs[57], 1); + ADD_STRING (" FAULTNUM: "); + ADD_MEM (regs[58], 2); + ADD_STRING ("\n"); + + /* Write the stuff out. */ + writev (fd, iov, nr); +} + + +#define REGISTER_DUMP register_dump (fd, &ctx->uc_mcontext) diff --git a/sysdeps/unix/sysv/linux/tile/ucontext_i.h b/sysdeps/unix/sysv/linux/tile/ucontext_i.h new file mode 100644 index 0000000000..fe329cdbd6 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tile/ucontext_i.h @@ -0,0 +1,42 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +/* Definitions of offsets within the ucontext_t structure. Note + that for convenience we use __SIZEOF_POINTER__ for "long" and + "ssize_t" fields (and their unsigned counterparts) as well. */ + +#define UC_FLAGS_OFFSET 0 +#define UC_LINK_OFFSET (UC_FLAGS_OFFSET + __SIZEOF_POINTER__) +#define UC_STACK_SP_OFFSET (UC_LINK_OFFSET + __SIZEOF_POINTER__) +#define UC_STACK_FLAGS_OFFSET (UC_STACK_SP_OFFSET + __SIZEOF_POINTER__) +#define UC_STACK_SIZE_OFFSET (UC_STACK_FLAGS_OFFSET + __SIZEOF_POINTER__) +#define UC_STACK_MCONTEXT_OFFSET \ + ((UC_STACK_SIZE_OFFSET + __SIZEOF_POINTER__ + REGSIZE - 1) & -REGSIZE) +#define UC_REG(i) (UC_STACK_MCONTEXT_OFFSET + ((i) * REGSIZE)) +#define UC_NREGS 64 +#define UC_SIGMASK_OFFSET UC_REG(UC_NREGS) +#define UC_SIZE (UC_SIGMASK_OFFSET + (_NSIG / 8)) + +/* From */ +#define SI_MAX_SIZE 128 + +/* From */ +#define _NSIG 64 +#define SIG_BLOCK 0 /* for blocking signals */ +#define SIG_UNBLOCK 1 /* for unblocking signals */ +#define SIG_SETMASK 2 /* for setting the signal mask */ -- cgit 1.4.1