diff options
author | Ulrich Drepper <drepper@redhat.com> | 1997-08-14 01:54:13 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1997-08-14 01:54:13 +0000 |
commit | ca34d7a7c77fa8dc823fd05439870e5a96610c5a (patch) | |
tree | 4b4057b8b919007f42caa4e1558bb9c5487976ae /sysdeps/unix/sysv/linux | |
parent | 0413b54c02d31cae62e8d13b3ee7ac109ceeff0e (diff) | |
download | glibc-ca34d7a7c77fa8dc823fd05439870e5a96610c5a.tar.gz glibc-ca34d7a7c77fa8dc823fd05439870e5a96610c5a.tar.xz glibc-ca34d7a7c77fa8dc823fd05439870e5a96610c5a.zip |
Update. cvs/libc-ud-970813
1997-08-14 03:14 Ulrich Drepper <drepper@cygnus.com> * elf/dl-minimal.c: Don't use relative #include paths. (malloc): Don't try to initialize _dl_pagesize, it already is. (__sigjmp_save, longjmp): Reformat. * sysdeps/generic/dl-sysdep.c: Implement _dl_show_auxv function to show content of auxiliary array. (_dl_sysdep_start): Remember start of auxiliary vector. * sysdeps/mach/hurd/dl-sysdep.c: (_dl_show_auxv): New dummy function. * elf/link.h: Add prototype for _dl_show_auxv. * elf/rtld.c (dl_main): Call _dl_show_auxv if LD_SHOW_AUXV envvar is present. * libio/iofdopen.c: Better prepare for use in libstdc++. * libio/iofflush.c: Likewise. * libio/iofgetpos.c: Likewise. * libio/iofgets.c: Likewise. * libio/iofopen.c: Likewise. * libio/iofputs.c: Likewise. * libio/iofread.c: Likewise. * libio/iofsetpos.c: Likewise. * libio/ioftell.c: Likewise. * libio/iofwrite.c: Likewise. * libio/iogetdelim.c: Likewise. * libio/iogets.c: Likewise. * libio/iopopen.c: Likewise. * libio/ioputs.c: Likewise. * libio/iosetbuffer.c: Likewise. * libio/iosetvbuf.c: Likewise. * libio/ioungetc.c: Likewise. * libio/iovsprintf.c: Likewise. * libio/iovsscanf.c: Likewise. * manual/creature.texi: Mention _XOPEN_SOURCE_EXTENDED in correct place. * manual/math.texi: Add comment to sincos decsription to say it's a GNU extension. Fix description of random function. * posix/fnmatch.h: Recognize Windog by _WINDOWS32 not WIN32. * posix/glob.c: Likewise. Handle stupid system headers on SunOS. Add casts for all __alloca calls. * posix/glob.h: Recognize Windog by _WINDOWS32 not WIN32. Declare additional GLOB_* constants also if _GNU_SOURCE is defined. Patches by Paul D. Smith <psmith@BayNetworks.COM>. * stdio-common/_itoa.c: Don't use relateive #include paths. * sysdeps/i386/fpu/bits/mathinline.h: Enable optimizations even for gcc 2.7. (atan): Loading 1.0 from memory does not pay off. (asinh): Fix typo. 1997-08-13 09:44 Philip Blundell <Philip.Blundell@pobox.com> * sysdeps/stub/accept.c: Use socklen_t where necessary. * sysdeps/stub/bind.c: Likewise. * sysdeps/stub/connect.c: Likewise. * sysdeps/stub/getsockname.c: Likewise. * sysdeps/stub/getsockopt.c: Likewise. * sysdeps/stub/recvfrom.c: Likewise. * sysdeps/stub/sendto.c: Likewise. * sysdeps/stub/setsockopt.c: Likewise. 1997-08-11 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * io/ftw.c (object_compare): Avoid memcmp when comparing scalar types. 1997-08-12 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * math/libm-test.c (cbrt_test): Add epsilon for long double to `cbrt (-0.001)'. 1997-08-11 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/stub/bits/string.h: Fix comment. 1997-08-01 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * elf/Makefile (routines): Remove dl-version. (dl-routines): Add it here instead. This removes dead code from libc.so. 1997-08-12 17:17 Wolfram Gloger <wmglo@dent.med.uni-muenchen.de> * malloc/thread-m.h (thread_atfork, thread_atfork_static): New macros to encapsulate pthread_atfork's functionality. * malloc/malloc.c (ptmalloc_lock_all, ptmalloc_unlock_all): New functions, registered via thread_atfork in the initialization routine or via thread_atfork_static in global scope. This ensures a consistent state of all locks across fork(). 1997-08-11 23:00:32 1997 Mark Kettenis <kettenis@phys.uva.nl> * login/programs/xtmp.c (compare_entry): Partially undo patch made by Klaus Espenlaub. There was no xtmp/utmp typo. Added comment to cclarify this. * login/programs/xtmp.h: Likewise. * posix/getopt.c: Recognize Windog by _WINDOWS32 not WIN32. Patch by Paul D. Smith <psmith@BayNetworks.COM>. 1997-08-12 13:51 Ulrich Drepper <drepper@cygnus.com> * login/getutid.c: Rename to __getutid and make getutid and getutxid weak aliases. Patch by ir. Mark M._Kettenis <kettenis@phys.uva.nl>. 1997-08-11 23:55 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/Makefile [subdir=misc] (sysdep_headers): Add bits/mman.h. 1997-08-11 08:51:21 1997 H.J. Lu <hjl@gnu.ai.mit.edu> * stdlib/fmtmsg.c (fmtmsg): Add static to __libc_once_define macro. * libc.map (__progname_full, __progname): Added. 1997-08-04 08:31 H.J. Lu <hjl@gnu.ai.mit.edu> * sysdeps/unix/sysv/linux/if_index.c (if_nametoindex): Return 0 if SIOGIFINDEX is not defined. (if_indextoname): Initialize "result" to NULL. (if_nametoindex, if_nameindex): Fix ENOSYS setting. 1997-08-11 11:58 Richard Henderson <rth@cygnus.com> Sparc ISO C 9x exception handling: * sysdeps/sparc/fpu/bits/mathdef.h: New file. * sysdeps/sparc/fpu/fclrexcpt.c: New file. * sysdeps/sparc/fpu/fegetenv.c: New file. * sysdeps/sparc/fpu/fegetround.c: New file. * sysdeps/sparc/fpu/feholdexcpt.c: New file. * sysdeps/sparc/fpu/fesetenv.c: New file. * sysdeps/sparc/fpu/fesetround.c: New file. * sysdeps/sparc/fpu/feupdateenv.c: New file. * sysdeps/sparc/fpu/fgetexcptflg.c: New file. * sysdeps/sparc/fpu/fraiseexcpt.c: New file. * sysdeps/sparc/fpu/fsetexcptflg.c: New file. * sysdeps/sparc/fpu/ftestexcept.c: New file. * sysdeps/sparc/sparc32/fpu/bits/fenv.h: New file. * sysdeps/sparc/sparc64/fpu/bits/fenv.h: New file. 1997-08-11 11:58 Richard Henderson <rth@cygnus.com> Sparc64 merge: * configure.in: Change up subdirectories, rename sparc8->sparcv8. * csu/Makefile: Nuke need-nopic-initfini bits. The problem was that sparc64 ld did not recognize pic relocs at all. * elf/dl-deps.c: Include <string.h>. * elf/do-rel.h (elf_dynamic_do_rel): Take reloc address and size directly instead of the DT names to get them from. * elf/dynamic-link.h (_ELF_DYNAMIC_DO_RELOC): New macro distilled from ELF_DYNAMIC_DO_REL{,A}. Define a second version that accounts for the possibility that DT_RELA and DT_JMPPLT overlap, as such is the case on the Sparc. * elf/elf.h: Stub out Elf64_Ver*, and make them the same as the Elf32_Ver* bits. The linker does not even know to differentiate between the word sizes. Someone should examine this and figure out what the proper sizes of things should be for 64-bit hosts before the sparc64 libraries are distributed. * shlib-versions: Rename sparc64 ld.so to not conflict with sparc32 on the same machine. Move old sysdeps/sparc contents to sysdeps/sparc/sparc32, rename sparc8 subdir to sparcv8, move sysdeps/sparc64 content to sysdeps/sparc/sparc64. Same for sysdeps/unix/sysv/linux/sparc. * sysdeps/sparc/Implies: Do ieee754 here. * sysdeps/sparc/configure.in: Move from sparc32/. * sysdeps/sparc/sparc32/Implies: Do wordsize here. * sysdeps/sparc/sparc64/Implies: Likewise. * sysdeps/sparc/sparc32/dl-machine.h (elf_machine_load_address): Use uninitialized .got to find load address instead of AT_BASE, as the later does not exist when running ld.so directly. * sysdeps/sparc/sparc32/fpu/fpu_control.h: Move from ../. * sysdeps/sparc/sparc64/fpu/fpu_control.h: Likewise. * sysdeps/sparc/sparc32/udiv_qrnnd.S: Clean up PIC support. * sysdeps/sparc/sparc64/Makefile (sysdep_routines): Add s_finitel and s_signbitl for stdio. * sysdeps/sparc/sparc64/configure.in: Remove, we no longer need nopic_initfini. * sysdeps/sparc/sparc64/bsd-_setjmp.S: Remove. * sysdeps/sparc/sparc64/bsd-setjmp.S: Remove. * sysdeps/unix/sysv/linux/sparc/sparc64/bsd-_setjmp.S: New empty file. * sysdeps/unix/sysv/linux/sparc/sparc64/bsd-setjmp.S: New empty file. * sysdeps/unix/sysv/linux/sparc/sparc64/longjmp.S: Add __longjmp alias. * sysdeps/unix/sysv/linux/sparc/sparc64/setjmp.S: Add weak _setjmp and setjmp entry points. * sysdeps/sparc/sparc64/dl-machine.h: Finish real implementation. * sysdeps/sparc/sparc64/elf/crtbegin.S: Add copyright, fix PIC. * sysdeps/sparc/sparc64/elf/crtend.S: Likewise. * sysdeps/unix/sysv/linux/sparc/bits/sigaction.h (struct sigaction): Fix sa_flags size for sparc64; add sa_restorer for kernel. * sysdeps/unix/sysv/linux/sparc/sparc64/brk.S: Fix PIC. * sysdeps/unix/sysv/linux/sparc/sparc64/clone.S: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/init-first.h: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/syscall.S: New file. 1997-08-10 18:29:08 1997 Mark Kettenis <kettenis@phys.uva.nl> * login/login.c (login): Check for correct return value of utmpname. 1997-08-11 16:49 Ulrich Drepper <drepper@cygnus.com> * time/tzset.c (__tzset_internal): Correctly handle TZ strings following incorrect old POSIX specs. Patch by Paul Eggert <eggert@twinsun.com>. * sysdeps/generic/bits/sigaction.h: Correct comment for SA_RESTART. * sysdeps/unix/bsd/osf/bits/sigaction.h: Likewise. * sysdeps/unix/sysv/linux/alpha/bits/sigaction.h: Likewise. * sysdeps/unix/sysv/linux/bits/sigaction.h: Likewise. * sysdeps/unix/sysv/linux/mips/bits/sigaction.h: Likewise. * sysdeps/unix/sysv/linux/sparc/bits/sigaction.h: Likewise. * sysdeps/unix/sysv/minix/bits/sigaction.h: Likewise. * sysdeps/unix/sysv/sysv4/bits/sigaction.h: Likewise. Reported by NIIBE Yutaka <gniibe@mri.co.jp>. 1997-08-09 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * manual/math.texi: Define the macros @mul and @infinity and use them to format the multiplication and infinity signs. (FP Comparison Functions): Use @code, not @math, for C code examples. * elf/dl-profile.c: Add descriptions and implement reading of
Diffstat (limited to 'sysdeps/unix/sysv/linux')
-rw-r--r-- | sysdeps/unix/sysv/linux/Makefile | 2 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/bits/sigaction.h | 24 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/bits/sigaction.h | 26 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/if_index.c | 17 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/m68k/bits/mman.h | 75 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/mips/bits/sigaction.h | 28 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/bits/sigaction.h | 29 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc32/Dist (renamed from sysdeps/unix/sysv/linux/sparc/Dist) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc32/Makefile (renamed from sysdeps/unix/sysv/linux/sparc/Makefile) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc32/__sigtrampoline.S (renamed from sysdeps/unix/sysv/linux/sparc/__sigtrampoline.S) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc32/bits/mman.h (renamed from sysdeps/unix/sysv/linux/sparc/bits/mman.h) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc32/brk.c (renamed from sysdeps/unix/sysv/linux/sparc/brk.c) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc32/clone.S (renamed from sysdeps/unix/sysv/linux/sparc/clone.S) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc32/fork.S (renamed from sysdeps/unix/sysv/linux/sparc/fork.S) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc32/init-first.h (renamed from sysdeps/unix/sysv/linux/sparc/init-first.h) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc32/kernel_stat.h (renamed from sysdeps/unix/sysv/linux/sparc/kernel_stat.h) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc32/pipe.S (renamed from sysdeps/unix/sysv/linux/sparc/pipe.S) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc32/profil-counter.h (renamed from sysdeps/unix/sysv/linux/sparc/profil-counter.h) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c (renamed from sysdeps/unix/sysv/linux/sparc/sigaction.c) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc32/socket.S (renamed from sysdeps/unix/sysv/linux/sparc/socket.S) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc32/syscall.S (renamed from sysdeps/unix/sysv/linux/sparc/syscall.S) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list (renamed from sysdeps/unix/sysv/linux/sparc/syscalls.list) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.S (renamed from sysdeps/unix/sysv/linux/sparc/sysdep.S) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h (renamed from sysdeps/unix/sysv/linux/sparc/sysdep.h) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc64/Dist (renamed from sysdeps/unix/sysv/linux/sparc64/Dist) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc64/Makefile (renamed from sysdeps/unix/sysv/linux/sparc64/Makefile) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc64/__longjmp.S (renamed from sysdeps/unix/sysv/linux/sparc64/__longjmp.S) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc64/bits/mman.h (renamed from sysdeps/unix/sysv/linux/sparc64/bits/mman.h) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc64/bits/setjmp.h (renamed from sysdeps/unix/sysv/linux/sparc64/bits/setjmp.h) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc64/bits/types.h (renamed from sysdeps/unix/sysv/linux/sparc64/bits/types.h) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc64/brk.S (renamed from sysdeps/unix/sysv/linux/sparc64/brk.S) | 6 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc64/bsd-_setjmp.S | 1 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc64/bsd-setjmp.S | 1 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc64/clone.S (renamed from sysdeps/unix/sysv/linux/sparc64/clone.S) | 10 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc64/fork.S (renamed from sysdeps/unix/sysv/linux/sparc64/fork.S) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc64/getcontext.S (renamed from sysdeps/unix/sysv/linux/sparc64/getcontext.S) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc64/init-first.h (renamed from sysdeps/unix/sysv/linux/sparc64/init-first.h) | 50 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc64/kernel_stat.h (renamed from sysdeps/unix/sysv/linux/sparc64/kernel_stat.h) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc64/longjmp.S (renamed from sysdeps/unix/sysv/linux/sparc64/longjmp.S) | 2 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc64/pipe.S (renamed from sysdeps/unix/sysv/linux/sparc64/pipe.S) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc64/profil-counter.h (renamed from sysdeps/unix/sysv/linux/sparc64/profil-counter.h) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc64/setcontext.S (renamed from sysdeps/unix/sysv/linux/sparc64/setcontext.S) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc64/setjmp.S (renamed from sysdeps/unix/sysv/linux/sparc64/setjmp.S) | 19 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc64/sigjmp.S (renamed from sysdeps/unix/sysv/linux/sparc64/sigjmp.S) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc64/syscall.S | 39 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list (renamed from sysdeps/unix/sysv/linux/sparc64/syscalls.list) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.S (renamed from sysdeps/unix/sysv/linux/sparc64/sysdep.S) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h (renamed from sysdeps/unix/sysv/linux/sparc64/sysdep.h) | 68 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc64/ucontext.h (renamed from sysdeps/unix/sysv/linux/sparc64/ucontext.h) | 0 |
49 files changed, 280 insertions, 117 deletions
diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile index ed9ae873fd..ea1ab49fd4 100644 --- a/sysdeps/unix/sysv/linux/Makefile +++ b/sysdeps/unix/sysv/linux/Makefile @@ -11,7 +11,7 @@ sysdep_headers += sys/mount.h sys/acct.h sys/sysctl.h sys/mtio.h \ sys/module.h sys/io.h sys/klog.h sys/kdaemon.h \ sys/user.h sys/sysmacros.h sys/procfs.h \ sys/debugreg.h sys/kd.h sys/soundcard.h sys/vt.h \ - sys/quota.h sys/fsuid.h + sys/quota.h sys/fsuid.h bits/mman.h install-others += $(inst_includedir)/bits/syscall.h diff --git a/sysdeps/unix/sysv/linux/alpha/bits/sigaction.h b/sysdeps/unix/sysv/linux/alpha/bits/sigaction.h index e2e97bd70c..f28b6f256c 100644 --- a/sysdeps/unix/sysv/linux/alpha/bits/sigaction.h +++ b/sysdeps/unix/sysv/linux/alpha/bits/sigaction.h @@ -31,21 +31,21 @@ struct sigaction }; /* Bits in `sa_flags'. */ -#define SA_NOCLDSTOP 0x00000004 /* Don't send SIGCHLD when children stop. */ +#define SA_NOCLDSTOP 0x00000004 /* Don't send SIGCHLD when children stop. */ #ifdef __USE_MISC -#define SA_STACK 0x00000001 /* Use signal stack by using `sa_restorer'. */ -#define SA_RESTART 0x00000002 /* Don't restart syscall on signal return. */ -#define SA_INTERRUPT 0x20000000 /* Historical no-op. */ -#define SA_NOMASK 0x00000008 /* Don't automatically block the signal when - its handler is being executed. */ -#define SA_ONESHOT 0x00000010 /* Reset to SIG_DFL on entry to handler. */ +# define SA_STACK 0x00000001 /* Use signal stack by using `sa_restorer'. */ +# define SA_RESTART 0x00000002 /* Restart syscall on signal return. */ +# define SA_INTERRUPT 0x20000000 /* Historical no-op. */ +# define SA_NOMASK 0x00000008 /* Don't automatically block the signal + when its handler is being executed. */ +# define SA_ONESHOT 0x00000010 /* Reset to SIG_DFL on entry to handler. */ /* Some aliases for the SA_ constants. */ -#define SA_NODEFER SA_NOMASK -#define SA_RESETHAND SA_ONESHOT +# define SA_NODEFER SA_NOMASK +# define SA_RESETHAND SA_ONESHOT #endif /* Values for the HOW argument to `sigprocmask'. */ -#define SIG_BLOCK 1 /* Block signals. */ -#define SIG_UNBLOCK 2 /* Unblock signals. */ -#define SIG_SETMASK 3 /* Set the set of blocked signals. */ +#define SIG_BLOCK 1 /* Block signals. */ +#define SIG_UNBLOCK 2 /* Unblock signals. */ +#define SIG_SETMASK 3 /* Set the set of blocked signals. */ diff --git a/sysdeps/unix/sysv/linux/bits/sigaction.h b/sysdeps/unix/sysv/linux/bits/sigaction.h index 13a6a03248..247b53499e 100644 --- a/sysdeps/unix/sysv/linux/bits/sigaction.h +++ b/sysdeps/unix/sysv/linux/bits/sigaction.h @@ -1,5 +1,5 @@ /* The proper definitions for Linux's sigaction. - Copyright (C) 1993, 1994, 1995, 1996 Free Software Foundation, Inc. + Copyright (C) 1993, 1994, 1995, 1996, 1997 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 @@ -34,21 +34,21 @@ struct sigaction }; /* Bits in `sa_flags'. */ -#define SA_NOCLDSTOP 1 /* Don't send SIGCHLD when children stop. */ +#define SA_NOCLDSTOP 1 /* Don't send SIGCHLD when children stop. */ #ifdef __USE_MISC -#define SA_STACK 0x08000000 /* Use signal stack by using `sa_restorer'. */ -#define SA_RESTART 0x10000000 /* Don't restart syscall on signal return. */ -#define SA_INTERRUPT 0x20000000 /* Historical no-op. */ -#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. */ +# define SA_STACK 0x08000000 /* Use signal stack by using `sa_restorer'. */ +# define SA_RESTART 0x10000000 /* Restart syscall on signal return. */ +# define SA_INTERRUPT 0x20000000 /* Historical no-op. */ +# 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. */ /* Some aliases for the SA_ constants. */ -#define SA_NOMASK SA_NODEFER -#define SA_ONESHOT SA_RESETHAND +# define SA_NOMASK SA_NODEFER +# define SA_ONESHOT SA_RESETHAND #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. */ +#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/if_index.c b/sysdeps/unix/sysv/linux/if_index.c index f64fe1e1ca..615a81d14a 100644 --- a/sysdeps/unix/sysv/linux/if_index.c +++ b/sysdeps/unix/sysv/linux/if_index.c @@ -68,20 +68,21 @@ if_nametoindex (const char *ifname) { #ifndef SIOGIFINDEX __set_errno (ENOSYS); + return 0; #else struct ifreq ifr; - int rc; int fd = opensock (); if (fd < 0) return 0; strncpy (ifr.ifr_name, ifname, sizeof (ifr.ifr_name)); - rc = ioctl (fd, SIOGIFINDEX, &ifr); - if (rc < 0) + if (ioctl (fd, SIOGIFINDEX, &ifr) < 0) { + int saved_errno = errno; close (fd); - __set_errno (rc == -EINVAL ? ENOSYS : -rc); + if (saved_errno == EINVAL) + __set_errno (ENOSYS); return 0; } close (fd); @@ -109,7 +110,6 @@ if_nameindex (void) __set_errno (ENOSYS); return NULL; #else - int rc; int fd = opensock (); struct ifconf ifc; unsigned int rq_ifs = 4, nifs, i; @@ -153,12 +153,13 @@ if_nameindex (void) goto jump; } strcpy (idx[i].if_name, ifr->ifr_name); - rc = ioctl (fd, SIOGIFINDEX, ifr); - if (rc < 0) + if (ioctl (fd, SIOGIFINDEX, ifr) < 0) { + int saved_errno = errno; free (idx); idx = NULL; - __set_errno (rc == -EINVAL ? ENOSYS : -rc); + if (saved_errno == EINVAL) + __set_errno (ENOSYS); goto jump; } idx[i].if_index = ifr->ifr_ifindex; diff --git a/sysdeps/unix/sysv/linux/m68k/bits/mman.h b/sysdeps/unix/sysv/linux/m68k/bits/mman.h new file mode 100644 index 0000000000..d6c29d2176 --- /dev/null +++ b/sysdeps/unix/sysv/linux/m68k/bits/mman.h @@ -0,0 +1,75 @@ +/* Definitions for POSIX memory map inerface. Linux/m68k version. + Copyright (C) 1997 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 Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef _SYS_MMAN_H +# error "Never include this file directly. Use <sys/mman.h> instead" +#endif + +/* The following definitions basically come from the kernel headers. + But the kernel header is not namespace clean. */ + + +/* Protections are chosen from these bits, OR'd together. The + implementation does not necessarily support PROT_EXEC or PROT_WRITE + without PROT_READ. The only guarantees are that no writing will be + allowed without PROT_WRITE and no access will be allowed for PROT_NONE. */ + +#define PROT_READ 0x1 /* Page can be read. */ +#define PROT_WRITE 0x2 /* Page can be written. */ +#define PROT_EXEC 0x4 /* Page can be executed. */ +#define PROT_NONE 0x0 /* Page can not be accessed. */ + +/* Sharing types (must choose one and only one of these). */ +#define MAP_SHARED 0x01 /* Share changes. */ +#define MAP_PRIVATE 0x02 /* Changes are private. */ +#ifdef __USE_MISC +# define MAP_TYPE 0x0f /* Mask for type of mapping. */ +#endif + +/* Other flags. */ +#define MAP_FIXED 0x10 /* Interpret addr exactly. */ +#ifdef __USE_MISC +# define MAP_FILE 0 +# define MAP_ANONYMOUS 0x20 /* Don't use a file. */ +# define MAP_ANON MAP_ANONYMOUS +#endif + +/* These are Linux-specific. */ +#ifdef __USE_MISC +# define MAP_GROWSDOWN 0x0100 /* Stack-like segment. */ +# define MAP_DENYWRITE 0x0800 /* ETXTBSY */ +# define MAP_EXECUTABLE 0x1000 /* Mark it as an executable. */ +# define MAP_LOCKED 0x2000 /* Lock the mapping. */ +# define MAP_NORESERVE 0x4000 /* Don't check for reservations. */ +#endif + +/* Flags to `msync'. */ +#define MS_ASYNC 1 /* Sync memory asynchronously. */ +#define MS_SYNC 4 /* Synchronous memory sync. */ +#define MS_INVALIDATE 2 /* Invalidate the caches. */ + +/* Flags for `mlockall'. */ +#define MCL_CURRENT 1 /* Lock all currently mapped pages. */ +#define MCL_FUTURE 2 /* Lock all additions to address + space. */ + +/* Flags for `mremap'. */ +#ifdef __USE_GNU +# define MREMAP_MAYMOVE 1 +#endif diff --git a/sysdeps/unix/sysv/linux/mips/bits/sigaction.h b/sysdeps/unix/sysv/linux/mips/bits/sigaction.h index 66c58cc540..d6f70f2a2e 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/sigaction.h +++ b/sysdeps/unix/sysv/linux/mips/bits/sigaction.h @@ -39,24 +39,24 @@ struct sigaction }; /* Bits in `sa_flags'. */ -#define SA_NOCLDSTOP 1 /* Don't send SIGCHLD when children stop. */ +#define SA_NOCLDSTOP 1 /* Don't send SIGCHLD when children stop. */ #ifdef __USE_MISC -#define SA_STACK 0x08000000 /* Use signal stack by using `sa_restorer'. */ -#define SA_RESTART 0x10000000 /* Don't restart syscall on signal return. */ -#define SA_INTERRUPT 0x20000000 /* Historical no-op. */ -#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. */ +# define SA_STACK 0x08000000 /* Use signal stack by using `sa_restorer'. */ +# define SA_RESTART 0x10000000 /* Restart syscall on signal return. */ +# define SA_INTERRUPT 0x20000000 /* Historical no-op. */ +# 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. */ /* Some aliases for the SA_ constants. */ -#define SA_NOMASK SA_NODEFER -#define SA_ONESHOT SA_RESETHAND +# define SA_NOMASK SA_NODEFER +# define SA_ONESHOT SA_RESETHAND #endif /* Values for the HOW argument to `sigprocmask'. */ -#define SIG_NOP 0 /* 0 is unused to catch errors */ -#define SIG_BLOCK 1 /* Block signals. */ -#define SIG_UNBLOCK 2 /* Unblock signals. */ -#define SIG_SETMASK 3 /* Set the set of blocked signals. */ -#define SIG_SETMASK32 256 /* Goodie from SGI for BSD compatibility: +#define SIG_NOP 0 /* 0 is unused to catch errors */ +#define SIG_BLOCK 1 /* Block signals. */ +#define SIG_UNBLOCK 2 /* Unblock signals. */ +#define SIG_SETMASK 3 /* Set the set of blocked signals. */ +#define SIG_SETMASK32 256 /* Goodie from SGI for BSD compatibility: set only the low 32 bit of the sigset. */ diff --git a/sysdeps/unix/sysv/linux/sparc/bits/sigaction.h b/sysdeps/unix/sysv/linux/sparc/bits/sigaction.h index 19aa7e39cb..13471995b9 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/sigaction.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/sigaction.h @@ -27,26 +27,29 @@ struct sigaction __sigset_t sa_mask; /* Special flags. */ - unsigned int sa_flags; + unsigned long sa_flags; + + /* Not used by Linux/Sparc yet. */ + void (*sa_restorer)(void); }; /* Bits in `sa_flags'. */ -#define SA_NOCLDSTOP 0x00000008 /* Don't send SIGCHLD when children stop. */ +#define SA_NOCLDSTOP 0x00000008 /* Don't send SIGCHLD when children stop. */ #ifdef __USE_MISC -#define SA_STACK 0x00000001 /* Use signal stack by using `sa_restorer'. */ -#define SA_RESTART 0x00000002 /* Don't restart syscall on signal return. */ -#define SA_INTERRUPT 0x00000010 /* Historical no-op. */ -#define SA_NOMASK 0x00000020 /* Don't automatically block the signal when - its handler is being executed. */ -#define SA_ONESHOT 0x00000004 /* Reset to SIG_DFL on entry to handler. */ +# define SA_STACK 0x00000001 /* Use signal stack by using `sa_restorer'. */ +# define SA_RESTART 0x00000002 /* Restart syscall on signal return. */ +# define SA_INTERRUPT 0x00000010 /* Historical no-op. */ +# define SA_NOMASK 0x00000020 /* Don't automatically block the signal when + its handler is being executed. */ +# define SA_ONESHOT 0x00000004 /* Reset to SIG_DFL on entry to handler. */ /* Some aliases for the SA_ constants. */ -#define SA_NODEFER SA_NOMASK -#define SA_RESETHAND SA_ONESHOT +# define SA_NODEFER SA_NOMASK +# define SA_RESETHAND SA_ONESHOT #endif /* Values for the HOW argument to `sigprocmask'. */ -#define SIG_BLOCK 1 /* Block signals. */ -#define SIG_UNBLOCK 2 /* Unblock signals. */ -#define SIG_SETMASK 4 /* Set the set of blocked signals. */ +#define SIG_BLOCK 1 /* Block signals. */ +#define SIG_UNBLOCK 2 /* Unblock signals. */ +#define SIG_SETMASK 4 /* Set the set of blocked signals. */ diff --git a/sysdeps/unix/sysv/linux/sparc/Dist b/sysdeps/unix/sysv/linux/sparc/sparc32/Dist index 9729f0709b..9729f0709b 100644 --- a/sysdeps/unix/sysv/linux/sparc/Dist +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/Dist diff --git a/sysdeps/unix/sysv/linux/sparc/Makefile b/sysdeps/unix/sysv/linux/sparc/sparc32/Makefile index 4cbd3bd004..4cbd3bd004 100644 --- a/sysdeps/unix/sysv/linux/sparc/Makefile +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/Makefile diff --git a/sysdeps/unix/sysv/linux/sparc/__sigtrampoline.S b/sysdeps/unix/sysv/linux/sparc/sparc32/__sigtrampoline.S index a639511f3e..a639511f3e 100644 --- a/sysdeps/unix/sysv/linux/sparc/__sigtrampoline.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/__sigtrampoline.S diff --git a/sysdeps/unix/sysv/linux/sparc/bits/mman.h b/sysdeps/unix/sysv/linux/sparc/sparc32/bits/mman.h index 3e7f2900fa..3e7f2900fa 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/mman.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/bits/mman.h diff --git a/sysdeps/unix/sysv/linux/sparc/brk.c b/sysdeps/unix/sysv/linux/sparc/sparc32/brk.c index 8f079bf444..8f079bf444 100644 --- a/sysdeps/unix/sysv/linux/sparc/brk.c +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/brk.c diff --git a/sysdeps/unix/sysv/linux/sparc/clone.S b/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S index 64735e9dbc..64735e9dbc 100644 --- a/sysdeps/unix/sysv/linux/sparc/clone.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S diff --git a/sysdeps/unix/sysv/linux/sparc/fork.S b/sysdeps/unix/sysv/linux/sparc/sparc32/fork.S index 951ab4981b..951ab4981b 100644 --- a/sysdeps/unix/sysv/linux/sparc/fork.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/fork.S diff --git a/sysdeps/unix/sysv/linux/sparc/init-first.h b/sysdeps/unix/sysv/linux/sparc/sparc32/init-first.h index 39822fc595..39822fc595 100644 --- a/sysdeps/unix/sysv/linux/sparc/init-first.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/init-first.h diff --git a/sysdeps/unix/sysv/linux/sparc/kernel_stat.h b/sysdeps/unix/sysv/linux/sparc/sparc32/kernel_stat.h index 91f02f4e20..91f02f4e20 100644 --- a/sysdeps/unix/sysv/linux/sparc/kernel_stat.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/kernel_stat.h diff --git a/sysdeps/unix/sysv/linux/sparc/pipe.S b/sysdeps/unix/sysv/linux/sparc/sparc32/pipe.S index 4c50656d6c..4c50656d6c 100644 --- a/sysdeps/unix/sysv/linux/sparc/pipe.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/pipe.S diff --git a/sysdeps/unix/sysv/linux/sparc/profil-counter.h b/sysdeps/unix/sysv/linux/sparc/sparc32/profil-counter.h index 1bd06482c9..1bd06482c9 100644 --- a/sysdeps/unix/sysv/linux/sparc/profil-counter.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/profil-counter.h diff --git a/sysdeps/unix/sysv/linux/sparc/sigaction.c b/sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c index d39eb7cc76..d39eb7cc76 100644 --- a/sysdeps/unix/sysv/linux/sparc/sigaction.c +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c diff --git a/sysdeps/unix/sysv/linux/sparc/socket.S b/sysdeps/unix/sysv/linux/sparc/sparc32/socket.S index bdfc2fcc6d..bdfc2fcc6d 100644 --- a/sysdeps/unix/sysv/linux/sparc/socket.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/socket.S diff --git a/sysdeps/unix/sysv/linux/sparc/syscall.S b/sysdeps/unix/sysv/linux/sparc/sparc32/syscall.S index 3921ca52dc..3921ca52dc 100644 --- a/sysdeps/unix/sysv/linux/sparc/syscall.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/syscall.S diff --git a/sysdeps/unix/sysv/linux/sparc/syscalls.list b/sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list index 7883d70719..7883d70719 100644 --- a/sysdeps/unix/sysv/linux/sparc/syscalls.list +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list diff --git a/sysdeps/unix/sysv/linux/sparc/sysdep.S b/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.S index 7e9023901b..7e9023901b 100644 --- a/sysdeps/unix/sysv/linux/sparc/sysdep.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.S diff --git a/sysdeps/unix/sysv/linux/sparc/sysdep.h b/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h index 0e5a8cd218..0e5a8cd218 100644 --- a/sysdeps/unix/sysv/linux/sparc/sysdep.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h diff --git a/sysdeps/unix/sysv/linux/sparc64/Dist b/sysdeps/unix/sysv/linux/sparc/sparc64/Dist index e770e20eb9..e770e20eb9 100644 --- a/sysdeps/unix/sysv/linux/sparc64/Dist +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/Dist diff --git a/sysdeps/unix/sysv/linux/sparc64/Makefile b/sysdeps/unix/sysv/linux/sparc/sparc64/Makefile index c4d83226a2..c4d83226a2 100644 --- a/sysdeps/unix/sysv/linux/sparc64/Makefile +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/Makefile diff --git a/sysdeps/unix/sysv/linux/sparc64/__longjmp.S b/sysdeps/unix/sysv/linux/sparc/sparc64/__longjmp.S index 3107179fdc..3107179fdc 100644 --- a/sysdeps/unix/sysv/linux/sparc64/__longjmp.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/__longjmp.S diff --git a/sysdeps/unix/sysv/linux/sparc64/bits/mman.h b/sysdeps/unix/sysv/linux/sparc/sparc64/bits/mman.h index 3e7f2900fa..3e7f2900fa 100644 --- a/sysdeps/unix/sysv/linux/sparc64/bits/mman.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/bits/mman.h diff --git a/sysdeps/unix/sysv/linux/sparc64/bits/setjmp.h b/sysdeps/unix/sysv/linux/sparc/sparc64/bits/setjmp.h index ab850e5301..ab850e5301 100644 --- a/sysdeps/unix/sysv/linux/sparc64/bits/setjmp.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/bits/setjmp.h diff --git a/sysdeps/unix/sysv/linux/sparc64/bits/types.h b/sysdeps/unix/sysv/linux/sparc/sparc64/bits/types.h index 222967881f..222967881f 100644 --- a/sysdeps/unix/sysv/linux/sparc64/bits/types.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/bits/types.h diff --git a/sysdeps/unix/sysv/linux/sparc64/brk.S b/sysdeps/unix/sysv/linux/sparc/sparc64/brk.S index 87412e095a..abdd7e6604 100644 --- a/sysdeps/unix/sysv/linux/sparc64/brk.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/brk.S @@ -40,10 +40,10 @@ __curbrk: .skip 8 ENTRY(__brk) save %sp, -160, %sp #ifdef PIC -1: rd %pc, %g1 +1: call 2f sethi %hi(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7 - or %l7, %lo(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7 - add %l7, %g1, %l7 +2: or %l7, %lo(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7 + add %l7, %o7, %l7 #endif LOADSYSCALL(brk) diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/bsd-_setjmp.S b/sysdeps/unix/sysv/linux/sparc/sparc64/bsd-_setjmp.S new file mode 100644 index 0000000000..4e6a2da560 --- /dev/null +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/bsd-_setjmp.S @@ -0,0 +1 @@ +/* _setjmp is in setjmp.S */ diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/bsd-setjmp.S b/sysdeps/unix/sysv/linux/sparc/sparc64/bsd-setjmp.S new file mode 100644 index 0000000000..1da848d2f1 --- /dev/null +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/bsd-setjmp.S @@ -0,0 +1 @@ +/* setjmp is in setjmp.S */ diff --git a/sysdeps/unix/sysv/linux/sparc64/clone.S b/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S index fe38bf4ab7..a5cb1a4c4a 100644 --- a/sysdeps/unix/sysv/linux/sparc64/clone.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S @@ -54,10 +54,10 @@ __libc_clone: restore 99: #ifdef PIC - rd %pc, %g1 + call 1f sethi %hi(_GLOBAL_OFFSET_TABLE_-(99b-.)), %l7 - or %l7, %lo(_GLOBAL_OFFSET_TABLE_-(99b-.)), %l7 - add %l7, %g1, %l7 +1: or %l7, %lo(_GLOBAL_OFFSET_TABLE_-(99b-.)), %l7 + add %l7, %o7, %l7 set EINVAL, %i0 sethi %hi(errno), %g2 or %g2, %lo(errno), %g2 @@ -76,7 +76,7 @@ __libc_clone: mov -1,%i0 ret restore - .size __libc_clone,.-__libc_clone + .size __libc_clone, .-__libc_clone .type __thread_start,@function __thread_start: @@ -86,4 +86,4 @@ __thread_start: mov %l3,%o0 call _exit,0 nop - .size __thread_start,.-__thread_start + .size __thread_start, .-__thread_start diff --git a/sysdeps/unix/sysv/linux/sparc64/fork.S b/sysdeps/unix/sysv/linux/sparc/sparc64/fork.S index c735da5a44..c735da5a44 100644 --- a/sysdeps/unix/sysv/linux/sparc64/fork.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/fork.S diff --git a/sysdeps/unix/sysv/linux/sparc64/getcontext.S b/sysdeps/unix/sysv/linux/sparc/sparc64/getcontext.S index 05b06269e4..05b06269e4 100644 --- a/sysdeps/unix/sysv/linux/sparc64/getcontext.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/getcontext.S diff --git a/sysdeps/unix/sysv/linux/sparc64/init-first.h b/sysdeps/unix/sysv/linux/sparc/sparc64/init-first.h index f7fad7f87f..3e27c6dcf7 100644 --- a/sysdeps/unix/sysv/linux/sparc64/init-first.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/init-first.h @@ -33,33 +33,33 @@ .global " #NAME " .type " #NAME ",@function " #NAME ": - save %sp, -64, %sp -1: rd %pc, %g1 + save %sp, -128, %sp +1: call 11f sethi %hi(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7 - or %l7, %lo(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7 +11: or %l7, %lo(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7 add %l7, %o7, %l7 /* Are we a dynamic libc being loaded into a static program? */ - sethi %hi(_dl_starting_up), %g2 - or %g2, %lo(_dl_starting_up), %g2 - ld [%l7+%g2], %g2 - brz,pn %g2, 3f - sethi %hi(__libc_multiple_libcs), %g3 - ld [%g2], %g2 - subcc %g0, %g2, %g0 - subc %g0, -1, %g2 -3: or %g3, %lo(__libc_multiple_libcs), %g3 - ld [%l7+%g3], %g3 - st %g2, [%g3] + sethi %hi(_dl_starting_up), %l2 + or %l2, %lo(_dl_starting_up), %l2 + ldx [%l7+%l2], %l2 + brz,pn %l2, 3f + sethi %hi(__libc_multiple_libcs), %l3 + ld [%l2], %l4 + mov %g0, %l2 + movrz %l4, 1, %l2 +3: or %l3, %lo(__libc_multiple_libcs), %l3 + ldx [%l7+%l3], %l3 + st %l2, [%l3] /* If so, argc et al are in %o0-%o2 already. Otherwise, load them. */ - brnz,pn %g2, " #INIT " + brnz,pn %l2, " #INIT " restore - ld [%sp+" __S(STACK_BIAS) "+22*8], %o0 + ldx [%sp+" __S(STACK_BIAS) "+22*8], %o0 add %sp, " __S(STACK_BIAS) "+23*8, %o1 sll %o0, 3, %o2 add %o2, %o1, %o2 - add %o2, 8, %o2 - ba,a " #INIT " - .size "#NAME " .-" #NAME); + ba " #INIT " + add %o2, 8, %o2 + .size "#NAME ", .-" #NAME); #else @@ -73,15 +73,15 @@ or %g2, %lo(_dl_starting_up), %g2 brz,pt %g2, 3f sethi %hi(__libc_multiple_libcs), %g3 - ld [%g4+%g2], %g2 - subcc %g0, %g2, %g0 - subc %g0, -1, %g2 -3: add %g3, %g4, %g3 - st %g2, [%g3+%lo(__libc_multiple_libcs)] + ld [%g4+%g2], %g1 + mov %g0, %g2 + movrz %g1, 1, %g2 +3: or %g3, %lo(__libc_multiple_libcs), %g3 + st %g2, [%g3+%g4] /* If so, argc et al are in %o0-%o2 already. Otherwise, load them. */ brnz,pn %g2, " #INIT " nop - ld [%sp+" __S(STACK_BIAS) "+22*8], %o0 + ldx [%sp+" __S(STACK_BIAS) "+22*8], %o0 add %sp, " __S(STACK_BIAS) "+23*8, %o1 sll %o0, 3, %o2 add %o2, %o1, %o2 diff --git a/sysdeps/unix/sysv/linux/sparc64/kernel_stat.h b/sysdeps/unix/sysv/linux/sparc/sparc64/kernel_stat.h index fcb752e3ec..fcb752e3ec 100644 --- a/sysdeps/unix/sysv/linux/sparc64/kernel_stat.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/kernel_stat.h diff --git a/sysdeps/unix/sysv/linux/sparc64/longjmp.S b/sysdeps/unix/sysv/linux/sparc/sparc64/longjmp.S index c81b10495e..c4563776b6 100644 --- a/sysdeps/unix/sysv/linux/sparc64/longjmp.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/longjmp.S @@ -42,3 +42,5 @@ ENTRY(longjmp) ta 0x6f END(longjmp) + +strong_alias(longjmp, __longjmp) diff --git a/sysdeps/unix/sysv/linux/sparc64/pipe.S b/sysdeps/unix/sysv/linux/sparc/sparc64/pipe.S index 82ff4eae3c..82ff4eae3c 100644 --- a/sysdeps/unix/sysv/linux/sparc64/pipe.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/pipe.S diff --git a/sysdeps/unix/sysv/linux/sparc64/profil-counter.h b/sysdeps/unix/sysv/linux/sparc/sparc64/profil-counter.h index 6a3f0a291a..6a3f0a291a 100644 --- a/sysdeps/unix/sysv/linux/sparc64/profil-counter.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/profil-counter.h diff --git a/sysdeps/unix/sysv/linux/sparc64/setcontext.S b/sysdeps/unix/sysv/linux/sparc/sparc64/setcontext.S index 2968b65633..2968b65633 100644 --- a/sysdeps/unix/sysv/linux/sparc64/setcontext.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/setcontext.S diff --git a/sysdeps/unix/sysv/linux/sparc64/setjmp.S b/sysdeps/unix/sysv/linux/sparc/sparc64/setjmp.S index 8b88b49ac4..fcc5cb5a48 100644 --- a/sysdeps/unix/sysv/linux/sparc64/setjmp.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/setjmp.S @@ -27,10 +27,29 @@ #define O_gregs 32 #define O_g1 (O_gregs + 4*8) +/* int _setjmp(jmp_buf) */ + +.weak _setjmp +ENTRY(_setjmp) + + ba __sigsetjmp_local + set 0, %o1 + +END(setjmp) + +/* int setjmp(jmp_buf) */ + +.weak setjmp +ENTRY(setjmp) + + set 1, %o1 + +END(setjmp) /* int __sigsetjmp(jmp_buf, savemask) */ ENTRY(__sigsetjmp) +__sigsetjmp_local: /* Record whether the user is intending to save the sigmask. */ st %o1, [%o0 + O_mask_was_saved] diff --git a/sysdeps/unix/sysv/linux/sparc64/sigjmp.S b/sysdeps/unix/sysv/linux/sparc/sparc64/sigjmp.S index 940ccbcf68..940ccbcf68 100644 --- a/sysdeps/unix/sysv/linux/sparc64/sigjmp.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/sigjmp.S diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/syscall.S b/sysdeps/unix/sysv/linux/sparc/sparc64/syscall.S new file mode 100644 index 0000000000..30dace5903 --- /dev/null +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/syscall.S @@ -0,0 +1,39 @@ +/* Copyright (C) 1997 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 Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <sysdep.h> + .text + +ENTRY (syscall) + + mov %o0,%g1 + mov %o1,%o0 + mov %o2,%o1 + mov %o3,%o2 + mov %o4,%o3 + mov %o5,%o4 + + ta 0x11 + + bcc,pt %xcc,1f + nop + SYSCALL_ERROR_HANDLER + +1: retl + +PSEUDO_END (syscall) diff --git a/sysdeps/unix/sysv/linux/sparc64/syscalls.list b/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list index 66ba470994..66ba470994 100644 --- a/sysdeps/unix/sysv/linux/sparc64/syscalls.list +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list diff --git a/sysdeps/unix/sysv/linux/sparc64/sysdep.S b/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.S index 736578083c..736578083c 100644 --- a/sysdeps/unix/sysv/linux/sparc64/sysdep.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.S diff --git a/sysdeps/unix/sysv/linux/sparc64/sysdep.h b/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h index f01c1f43cd..c880e4a2dc 100644 --- a/sysdeps/unix/sysv/linux/sparc64/sysdep.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h @@ -44,43 +44,65 @@ .type name,@function; #ifdef PIC -#define SYSCALL_ERROR_HANDLER1(R) \ +# ifdef _LIBC_REENTRANT +# define SYSCALL_ERROR_HANDLER \ .global C_SYMBOL_NAME(errno); \ .type C_SYMBOL_NAME(errno),@object; \ -0: rd %pc,%g1; \ - sethi %hi(_GLOBAL_OFFSET_TABLE_-(0b-.)),%g2; \ - add %g2,%lo(_GLOBAL_OFFSET_TABLE_-(0b-.)),%g2; \ - add %g2,%g1,%g1; \ - sethi %hi(errno),%g2; \ - add %g2,%lo(errno),%g2; \ - ldx [%g1+%g2],%g2; \ - st R,[%g2] + save %sp,-160,%sp; \ + 101: call 102f; \ + sethi %hi(_GLOBAL_OFFSET_TABLE_-(101b-.)),%g2; \ + 102: or %g2,%lo(_GLOBAL_OFFSET_TABLE_-(101b-.)),%g2; \ + sethi %hi(errno),%i1; \ + add %g2,%o7,%l7; \ + or %i1,%lo(errno),%i1; \ + ldx [%l7+%i1],%g2; \ + st %i0,[%g2]; \ + call __errno_location; \ + nop; \ + st %i0,[%o0]; \ + sub %g0,1,%i0; \ + jmpl %i7+8, %g0; \ + restore +# else +# define SYSCALL_ERROR_HANDLER \ + .global C_SYMBOL_NAME(errno); \ + .type C_SYMBOL_NAME(errno),@object; \ + mov %o7,%g3; \ + 101: call 102f; \ + sethi %hi(_GLOBAL_OFFSET_TABLE_-(101b-.)),%g2; \ + 102: or %g2,%lo(_GLOBAL_OFFSET_TABLE_-(101b-.)),%g2; \ + sethi %hi(errno),%o1; \ + add %g2,%o7,%l7; \ + or %o1,%lo(errno),%o1; \ + mov %g3,%o7; \ + ldx [%l7+%o1],%g2; \ + st %o0,[%g2] +# endif #else -#define SYSCALL_ERROR_HANDLER1(R) \ +# ifdef _LIBC_REENTRANT +# define SYSCALL_ERROR_HANDLER \ .global C_SYMBOL_NAME(errno); \ .type C_SYMBOL_NAME(errno),@object; \ + save %sp,-160,%sp; \ sethi %hi(errno),%g1; \ - add %g1,%g4,%g1; \ - st R,[%g1+%lo(errno)] -#endif - -#ifdef _LIBC_REENTRANT -#define SYSCALL_ERROR_HANDLER \ - .global C_SYMBOL_NAME(__errno_location); \ - .type C_SYMBOL_NAME(__errno_location),@function; \ - save %sp,-128,%sp; \ - SYSCALL_ERROR_HANDLER1(%i0); \ + or %g1,%lo(errno),%g1; \ + st %i0,[%g1+%g4]; \ call __errno_location; \ nop; \ st %i0,[%o0]; \ sub %g0,1,%i0; \ jmpl %i7+8, %g0; \ restore -#else -#define SYSCALL_ERROR_HANDLER \ - SYSCALL_ERROR_HANDLER1(%o0); \ +# else +# define SYSCALL_ERROR_HANDLER \ + .global C_SYMBOL_NAME(errno); \ + .type C_SYMBOL_NAME(errno),@object; \ + sethi %hi(errno),%g1; \ + or %g1,%lo(errno),%g1; \ + st %i0,[%g1+%g4]; \ retl; \ sub %g0,1,%i0 +# endif #endif #define PSEUDO(name, syscall_name, args) \ diff --git a/sysdeps/unix/sysv/linux/sparc64/ucontext.h b/sysdeps/unix/sysv/linux/sparc/sparc64/ucontext.h index 160e2fc43a..160e2fc43a 100644 --- a/sysdeps/unix/sysv/linux/sparc64/ucontext.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/ucontext.h |