mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-28 00:21:52 +03:00
Update.
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
This commit is contained in:
@ -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. */
|
||||
|
7
sysdeps/unix/sysv/linux/sparc/sparc64/Dist
Normal file
7
sysdeps/unix/sysv/linux/sparc/sparc64/Dist
Normal file
@ -0,0 +1,7 @@
|
||||
bits/mman.h
|
||||
clone.S
|
||||
kernel_stat.h
|
||||
getcontext.S
|
||||
setcontext.S
|
||||
ucontext.h
|
||||
init-first.h
|
4
sysdeps/unix/sysv/linux/sparc/sparc64/Makefile
Normal file
4
sysdeps/unix/sysv/linux/sparc/sparc64/Makefile
Normal file
@ -0,0 +1,4 @@
|
||||
ifeq ($(subdir),misc)
|
||||
sysdep_headers += ucontext.h
|
||||
sysdep_routines += getcontext setcontext
|
||||
endif
|
1
sysdeps/unix/sysv/linux/sparc/sparc64/__longjmp.S
Normal file
1
sysdeps/unix/sysv/linux/sparc/sparc64/__longjmp.S
Normal file
@ -0,0 +1 @@
|
||||
/* There is no need for __longjmp what with setcontext. */
|
77
sysdeps/unix/sysv/linux/sparc/sparc64/bits/mman.h
Normal file
77
sysdeps/unix/sysv/linux/sparc/sparc64/bits/mman.h
Normal file
@ -0,0 +1,77 @@
|
||||
/* Definitions for POSIX memory map inerface. Linux/SPARC 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 0x00
|
||||
# define MAP_ANONYMOUS 0x20 /* Don't use a file. */
|
||||
# define MAP_ANON MAP_ANONYMOUS
|
||||
# define MAP_RENAME 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 0x0100 /* Lock the mapping. */
|
||||
# define MAP_NORESERVE 0x0040 /* Don't check for reservations. */
|
||||
# define _MAP_NEW 0x80000000 /* Binary compatibility with SunOS. */
|
||||
#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 0x2000 /* Lock all currently mapped pages. */
|
||||
#define MCL_FUTURE 0x4000 /* Lock all additions to address
|
||||
space. */
|
||||
|
||||
/* Flags for `mremap'. */
|
||||
#ifdef __USE_GNU
|
||||
# define MREMAP_MAYMOVE 1
|
||||
#endif
|
26
sysdeps/unix/sysv/linux/sparc/sparc64/bits/setjmp.h
Normal file
26
sysdeps/unix/sysv/linux/sparc/sparc64/bits/setjmp.h
Normal file
@ -0,0 +1,26 @@
|
||||
/* 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 _JMP_BUF_H
|
||||
#define _JMP_BUF_H 1
|
||||
|
||||
#include <ucontext.h>
|
||||
|
||||
typedef ucontext_t __jmp_buf[1];
|
||||
|
||||
#endif /* jmp_buf.h */
|
95
sysdeps/unix/sysv/linux/sparc/sparc64/bits/types.h
Normal file
95
sysdeps/unix/sysv/linux/sparc/sparc64/bits/types.h
Normal file
@ -0,0 +1,95 @@
|
||||
/* Copyright (C) 1991, 92, 94, 95, 96, 97 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. */
|
||||
|
||||
/*
|
||||
* Never include this file directly; use <sys/types.h> instead.
|
||||
*/
|
||||
|
||||
#ifndef _BITS_TYPES_H
|
||||
#define _BITS_TYPES_H 1
|
||||
|
||||
#include <features.h>
|
||||
|
||||
/* Convenience types. */
|
||||
typedef unsigned char __u_char;
|
||||
typedef unsigned short __u_short;
|
||||
typedef unsigned int __u_int;
|
||||
typedef unsigned long __u_long;
|
||||
typedef unsigned long int __u_quad_t;
|
||||
typedef long int __quad_t;
|
||||
typedef signed char __int8_t;
|
||||
typedef unsigned char __uint8_t;
|
||||
typedef signed short int __int16_t;
|
||||
typedef unsigned short int __uint16_t;
|
||||
typedef signed int __int32_t;
|
||||
typedef unsigned int __uint32_t;
|
||||
typedef signed long int __int64_t;
|
||||
typedef unsigned long int __uint64_t;
|
||||
typedef __quad_t *__qaddr_t;
|
||||
|
||||
typedef __u_int __dev_t; /* Type of device numbers. */
|
||||
typedef __u_int __uid_t; /* Type of user identifications. */
|
||||
typedef __u_int __gid_t; /* Type of group identifications. */
|
||||
typedef __u_int __ino_t; /* Type of file serial numbers. */
|
||||
typedef __u_int __mode_t; /* Type of file attribute bitmasks. */
|
||||
typedef __u_int __nlink_t; /* Type of file link counts. */
|
||||
typedef long int __off_t; /* Type of file sizes and offsets. */
|
||||
typedef __quad_t __loff_t; /* Type of file sizes and offsets. */
|
||||
typedef int __pid_t; /* Type of process identifications. */
|
||||
typedef long int __ssize_t; /* Type of a byte count, or error. */
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int __val[2];
|
||||
} __fsid_t; /* Type of file system IDs. */
|
||||
|
||||
/* Everythin' else. */
|
||||
typedef int __daddr_t; /* The type of a disk address. */
|
||||
typedef char *__caddr_t;
|
||||
typedef long int __time_t;
|
||||
typedef long int __swblk_t; /* Type of a swap block maybe? */
|
||||
|
||||
typedef long int __clock_t;
|
||||
|
||||
/* One element in the file descriptor mask array. */
|
||||
typedef unsigned long int __fd_mask;
|
||||
|
||||
/* Due to incaution, we may have gotten these from a kernel header file. */
|
||||
#undef __FD_SETSIZE
|
||||
#undef __NFDBITS
|
||||
#undef __FDMASK
|
||||
|
||||
/* Number of descriptors that can fit in an `fd_set'. */
|
||||
#define __FD_SETSIZE 1024
|
||||
|
||||
/* It's easier to assume 8-bit bytes than to get CHAR_BIT. */
|
||||
#define __NFDBITS (8 * sizeof (__fd_mask))
|
||||
#define __FDELT(d) ((d) / __NFDBITS)
|
||||
#define __FDMASK(d) (1 << ((d) % __NFDBITS))
|
||||
|
||||
/* fd_set for select and pselect. */
|
||||
typedef struct
|
||||
{
|
||||
/* XPG4.2 requires this member name. */
|
||||
__fd_mask fds_bits[__FD_SETSIZE / __NFDBITS];
|
||||
} __fd_set;
|
||||
|
||||
|
||||
typedef int __key_t;
|
||||
|
||||
#endif /* bits/types.h */
|
97
sysdeps/unix/sysv/linux/sparc/sparc64/brk.S
Normal file
97
sysdeps/unix/sysv/linux/sparc/sparc64/brk.S
Normal file
@ -0,0 +1,97 @@
|
||||
/* Copyright (C) 1997 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Richard Henderson <richard@gnu.ai.mit.edu>, 1997.
|
||||
|
||||
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. */
|
||||
|
||||
/* __brk is a special syscall under Linux since it never returns an
|
||||
error. Instead, the error condition is indicated by returning the old
|
||||
break value (instead of the new, requested one). */
|
||||
|
||||
#include <sysdep.h>
|
||||
#define _ERRNO_H
|
||||
#include <bits/errno.h>
|
||||
|
||||
#ifdef PIC
|
||||
.section .bss
|
||||
.align 8
|
||||
.globl __curbrk
|
||||
__curbrk: .skip 8
|
||||
.type __curbrk,@object
|
||||
.size __curbrk,8
|
||||
#else
|
||||
.common __curbrk, 8, 8
|
||||
#endif
|
||||
|
||||
.text
|
||||
ENTRY(__brk)
|
||||
save %sp, -160, %sp
|
||||
#ifdef PIC
|
||||
1: call 2f
|
||||
sethi %hi(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7
|
||||
2: or %l7, %lo(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7
|
||||
add %l7, %o7, %l7
|
||||
#endif
|
||||
|
||||
LOADSYSCALL(brk)
|
||||
mov %i0, %o0
|
||||
|
||||
ta 0x11
|
||||
|
||||
/* All the ways we can fail... */
|
||||
bcs,pn %xcc, .Lerr1
|
||||
nop
|
||||
brz %i0, .Lok
|
||||
subcc %i0, %o0, %g0
|
||||
bne,pn %xcc, .Lerr0
|
||||
|
||||
/* Update __curbrk and return cleanly. */
|
||||
.Lok: sethi %hi(__curbrk), %g1
|
||||
or %g1, %lo(__curbrk), %g1
|
||||
#ifdef PIC
|
||||
ldx [%l7+%g1], %g1
|
||||
stx %o0, [%g1]
|
||||
#else
|
||||
stx %o0, [%g4+%g1]
|
||||
#endif
|
||||
mov %g0, %i0
|
||||
|
||||
/* Don't use "ret" cause the preprocessor will eat it. */
|
||||
jmpl %i7+8, %g0
|
||||
restore
|
||||
|
||||
/* What a horrible way to die. */
|
||||
.Lerr0: set ENOMEM, %o0
|
||||
.Lerr1: sethi %hi(errno), %g1
|
||||
or %g1, %lo(errno), %g1
|
||||
#ifdef PIC
|
||||
ldx [%l7+%g1], %g1
|
||||
st %o0, [%g1]
|
||||
#else
|
||||
st %o0, [%g4+%g1]
|
||||
#endif
|
||||
#ifdef _LIBC_REENTRANT
|
||||
call __errno_location
|
||||
mov %o0,%l1
|
||||
st %l1, [%o0]
|
||||
#endif
|
||||
sub %g0, 1, %i0
|
||||
jmpl %i7+8, %g0
|
||||
restore
|
||||
|
||||
.size __brk, .-__brk
|
||||
|
||||
weak_alias (__brk, brk)
|
1
sysdeps/unix/sysv/linux/sparc/sparc64/bsd-_setjmp.S
Normal file
1
sysdeps/unix/sysv/linux/sparc/sparc64/bsd-_setjmp.S
Normal file
@ -0,0 +1 @@
|
||||
/* _setjmp is in setjmp.S */
|
1
sysdeps/unix/sysv/linux/sparc/sparc64/bsd-setjmp.S
Normal file
1
sysdeps/unix/sysv/linux/sparc/sparc64/bsd-setjmp.S
Normal file
@ -0,0 +1 @@
|
||||
/* setjmp is in setjmp.S */
|
89
sysdeps/unix/sysv/linux/sparc/sparc64/clone.S
Normal file
89
sysdeps/unix/sysv/linux/sparc/sparc64/clone.S
Normal file
@ -0,0 +1,89 @@
|
||||
/* Copyright (C) 1997 Free Software Foundation, Inc.
|
||||
Contributed by Richard Henderson (rth@tamu.edu).
|
||||
|
||||
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. */
|
||||
|
||||
/* clone() is even more special than fork() as it mucks with stacks
|
||||
and invokes a function in the right context after its all over. */
|
||||
|
||||
#include <asm/errno.h>
|
||||
#include <asm/unistd.h>
|
||||
|
||||
/* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg); */
|
||||
|
||||
.text
|
||||
.align 4
|
||||
.globl __libc_clone
|
||||
.type __libc_clone,@function
|
||||
.weak clone
|
||||
__clone = __libc_clone
|
||||
clone = __libc_clone
|
||||
|
||||
__libc_clone:
|
||||
save %sp,-160,%sp
|
||||
|
||||
/* sanity check arguments */
|
||||
brz,pn %i0, 99f
|
||||
mov %i0, %l0 /* save fn */
|
||||
brz,pn %i1, 99f
|
||||
mov %i3, %l3 /* save arg */
|
||||
|
||||
/* Do the system call */
|
||||
mov %i1, %o1
|
||||
mov %i2, %o0
|
||||
set __NR_clone, %g1
|
||||
ta 0x11
|
||||
bcs,pn %xcc, 99f
|
||||
nop
|
||||
brnz %o0, __thread_start
|
||||
mov %o0, %i0
|
||||
ret
|
||||
restore
|
||||
99:
|
||||
#ifdef PIC
|
||||
call 1f
|
||||
sethi %hi(_GLOBAL_OFFSET_TABLE_-(99b-.)), %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
|
||||
st %i0, [%l7+%g2]
|
||||
#else
|
||||
sethi %hi(errno), %g2
|
||||
add %g2, %g4, %g2
|
||||
set EINVAL, %i0
|
||||
st %i0, [%g2+%lo(errno)]
|
||||
#endif
|
||||
#ifdef _LIBC_REENTRANT
|
||||
call __errno_location
|
||||
nop
|
||||
st %i0, [%o0]
|
||||
#endif
|
||||
mov -1,%i0
|
||||
ret
|
||||
restore
|
||||
.size __libc_clone, .-__libc_clone
|
||||
|
||||
.type __thread_start,@function
|
||||
__thread_start:
|
||||
mov %g0, %fp /* terminate backtrace */
|
||||
sub %sp, 6*8, %sp /* provide arg storage */
|
||||
call %l0
|
||||
mov %l3,%o0
|
||||
call _exit,0
|
||||
nop
|
||||
.size __thread_start, .-__thread_start
|
33
sysdeps/unix/sysv/linux/sparc/sparc64/fork.S
Normal file
33
sysdeps/unix/sysv/linux/sparc/sparc64/fork.S
Normal file
@ -0,0 +1,33 @@
|
||||
/* Copyright (C) 1997 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Miguel de Icaza <miguel@gnu.ai.mit.edu>, 1997.
|
||||
|
||||
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>
|
||||
|
||||
PSEUDO (__libc_fork, fork, 0)
|
||||
tst %o1
|
||||
be %xcc, 1f
|
||||
nop
|
||||
/* child: return 0 */
|
||||
clr %o0
|
||||
1: ret
|
||||
|
||||
PSEUDO_END (__libc_fork)
|
||||
|
||||
weak_alias (__libc_fork, __fork)
|
||||
weak_alias (__libc_fork, fork)
|
30
sysdeps/unix/sysv/linux/sparc/sparc64/getcontext.S
Normal file
30
sysdeps/unix/sysv/linux/sparc/sparc64/getcontext.S
Normal file
@ -0,0 +1,30 @@
|
||||
/* Copyright (C) 1997 Free Software Foundation, Inc.
|
||||
Contributed by Richard Henderson (rth@tamu.edu).
|
||||
|
||||
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>
|
||||
|
||||
/* void getcontext(ucontext_t *); */
|
||||
|
||||
ENTRY(__getcontext)
|
||||
|
||||
ta 0x6e
|
||||
ret
|
||||
|
||||
END(__getcontext)
|
||||
|
||||
weak_alias(__getcontext, getcontext)
|
92
sysdeps/unix/sysv/linux/sparc/sparc64/init-first.h
Normal file
92
sysdeps/unix/sysv/linux/sparc/sparc64/init-first.h
Normal file
@ -0,0 +1,92 @@
|
||||
/* Prepare arguments for library initialization function.
|
||||
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. */
|
||||
|
||||
/* The job of this fragment it to find argc and friends for INIT.
|
||||
This is done in one of two ways: either in the stack context
|
||||
of program start, or having dlopen pass them in. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
#define __S1(x) #x
|
||||
#define __S(x) __S1(x)
|
||||
|
||||
#ifdef PIC
|
||||
|
||||
#define SYSDEP_CALL_INIT(NAME, INIT) asm("\
|
||||
.weak _dl_starting_up
|
||||
.global " #NAME "
|
||||
.type " #NAME ",@function
|
||||
" #NAME ":
|
||||
save %sp, -128, %sp
|
||||
1: call 11f
|
||||
sethi %hi(_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), %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 %l2, " #INIT "
|
||||
restore
|
||||
ldx [%sp+" __S(STACK_BIAS) "+22*8], %o0
|
||||
add %sp, " __S(STACK_BIAS) "+23*8, %o1
|
||||
sll %o0, 3, %o2
|
||||
add %o2, %o1, %o2
|
||||
ba " #INIT "
|
||||
add %o2, 8, %o2
|
||||
.size "#NAME ", .-" #NAME);
|
||||
|
||||
#else
|
||||
|
||||
#define SYSDEP_CALL_INIT(NAME, INIT) asm("\
|
||||
.weak _dl_starting_up
|
||||
.global " #NAME "
|
||||
.type " #NAME ",@function
|
||||
" #NAME ":
|
||||
/* Are we a dynamic libc being loaded into a static program? */
|
||||
sethi %hi(_dl_starting_up), %g2
|
||||
or %g2, %lo(_dl_starting_up), %g2
|
||||
brz,pt %g2, 3f
|
||||
sethi %hi(__libc_multiple_libcs), %g3
|
||||
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
|
||||
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);
|
||||
|
||||
#endif
|
22
sysdeps/unix/sysv/linux/sparc/sparc64/kernel_stat.h
Normal file
22
sysdeps/unix/sysv/linux/sparc/sparc64/kernel_stat.h
Normal file
@ -0,0 +1,22 @@
|
||||
/* Definition of `struct stat' used in the kernel */
|
||||
struct kernel_stat
|
||||
{
|
||||
unsigned int st_dev;
|
||||
unsigned int st_ino;
|
||||
unsigned int st_mode;
|
||||
short int st_nlink;
|
||||
unsigned int st_uid;
|
||||
unsigned int st_gid;
|
||||
unsigned int st_rdev;
|
||||
long int st_size;
|
||||
long int st_atime;
|
||||
long int st_mtime;
|
||||
long int st_ctime;
|
||||
long int st_blksize;
|
||||
long int st_blocks;
|
||||
unsigned long int __unused1;
|
||||
unsigned long int __unused2;
|
||||
};
|
||||
|
||||
#define _HAVE___UNUSED1
|
||||
#define _HAVE___UNUSED2
|
46
sysdeps/unix/sysv/linux/sparc/sparc64/longjmp.S
Normal file
46
sysdeps/unix/sysv/linux/sparc/sparc64/longjmp.S
Normal file
@ -0,0 +1,46 @@
|
||||
/* Copyright (C) 1997 Free Software Foundation, Inc.
|
||||
Contributed by Richard Henderson (rth@tamu.edu).
|
||||
|
||||
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. */
|
||||
|
||||
/* longjmp is implemented in terms of the setcontext trap on Linux/Sparc64. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
/* Offsets into the jmp_buf structure. */
|
||||
|
||||
#define O_mask_was_saved 512
|
||||
#define O_gregs 32
|
||||
#define O_g1 (O_gregs + 4*8)
|
||||
|
||||
|
||||
/* void longjmp (sigjmp_buf env, int val) */
|
||||
|
||||
ENTRY(longjmp)
|
||||
|
||||
/* Modify the context with the value we want to return. */
|
||||
movre %o1, 1, %o1
|
||||
stx %o1, [%o0 + O_g1]
|
||||
|
||||
/* Let setcontext know if we want to modify the current sigmask. */
|
||||
ld [%o0 + O_mask_was_saved], %o1
|
||||
|
||||
/* And bamf back to where we belong! */
|
||||
ta 0x6f
|
||||
|
||||
END(longjmp)
|
||||
|
||||
strong_alias(longjmp, __longjmp)
|
37
sysdeps/unix/sysv/linux/sparc/sparc64/pipe.S
Normal file
37
sysdeps/unix/sysv/linux/sparc/sparc64/pipe.S
Normal file
@ -0,0 +1,37 @@
|
||||
/* Copyright (C) 1997 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Miguel de Icaza <miguel@gnu.ai.mit.edu>, 1997.
|
||||
|
||||
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>
|
||||
|
||||
ENTRY (__libc_pipe)
|
||||
mov %o0, %o2 /* Save PIPEDES. */
|
||||
LOADSYSCALL(pipe)
|
||||
ta 0x11
|
||||
bcc,pn %xcc, 2f
|
||||
nop
|
||||
SYSCALL_ERROR_HANDLER
|
||||
|
||||
2: st %o0, [%o2] /* PIPEDES[0] = %o0; */
|
||||
st %o1, [%o2 + 4] /* PIPEDES[1] = %o1; */
|
||||
retl
|
||||
clr %o0
|
||||
PSEUDO_END (__libc_pipe)
|
||||
|
||||
weak_alias (__libc_pipe, __pipe)
|
||||
weak_alias (__libc_pipe, pipe)
|
26
sysdeps/unix/sysv/linux/sparc/sparc64/profil-counter.h
Normal file
26
sysdeps/unix/sysv/linux/sparc/sparc64/profil-counter.h
Normal file
@ -0,0 +1,26 @@
|
||||
/* Low-level statistical profiling support function. Linux/Sparc64 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. */
|
||||
|
||||
#include <signal.h>
|
||||
|
||||
void
|
||||
profil_counter (int signo, __siginfo_t *si)
|
||||
{
|
||||
profil_count ((void *) si->si_regs.tpc);
|
||||
}
|
33
sysdeps/unix/sysv/linux/sparc/sparc64/setcontext.S
Normal file
33
sysdeps/unix/sysv/linux/sparc/sparc64/setcontext.S
Normal file
@ -0,0 +1,33 @@
|
||||
/* Copyright (C) 1997 Free Software Foundation, Inc.
|
||||
Contributed by Richard Henderson (rth@tamu.edu).
|
||||
|
||||
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>
|
||||
|
||||
|
||||
/* void setcontext(ucontext_t *ctx); */
|
||||
.weak setcontext
|
||||
ENTRY(setcontext)
|
||||
|
||||
mov 1, %o1
|
||||
|
||||
/* void __setcontext(ucontext_t *ctx, int restoremask); */
|
||||
ENTRY(__setcontext)
|
||||
|
||||
ta 0x6f
|
||||
|
||||
END(__setcontext)
|
67
sysdeps/unix/sysv/linux/sparc/sparc64/setjmp.S
Normal file
67
sysdeps/unix/sysv/linux/sparc/sparc64/setjmp.S
Normal file
@ -0,0 +1,67 @@
|
||||
/* Copyright (C) 1997 Free Software Foundation, Inc.
|
||||
Contributed by Richard Henderson (rth@tamu.edu).
|
||||
|
||||
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. */
|
||||
|
||||
/* __sigsetjmp is implemented in terms of the getcontext trap on
|
||||
Linux/Sparc64. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
/* Offsets into the jmp_buf structure. */
|
||||
|
||||
#define O_mask_was_saved 512
|
||||
#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]
|
||||
|
||||
/* Load up our return value, as longjmp is going to override
|
||||
the jmp_buf on its way back. */
|
||||
mov %g0, %g1
|
||||
|
||||
/* And call getcontext! */
|
||||
ta 0x6e
|
||||
|
||||
retl
|
||||
mov %g1, %o0
|
||||
|
||||
END(__sigsetjmp)
|
1
sysdeps/unix/sysv/linux/sparc/sparc64/sigjmp.S
Normal file
1
sysdeps/unix/sysv/linux/sparc/sparc64/sigjmp.S
Normal file
@ -0,0 +1 @@
|
||||
/* There is no need for __sigjmp_save what with getcontext. */
|
39
sysdeps/unix/sysv/linux/sparc/sparc64/syscall.S
Normal file
39
sysdeps/unix/sysv/linux/sparc/sparc64/syscall.S
Normal file
@ -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)
|
26
sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list
Normal file
26
sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list
Normal file
@ -0,0 +1,26 @@
|
||||
# File name Caller Syscall name # args Strong name Weak names
|
||||
|
||||
# Whee! 64-bit systems naturally implement llseek.
|
||||
llseek EXTRA lseek 3 llseek
|
||||
|
||||
# Override select.S in parent directory:
|
||||
select - select 5 __select select
|
||||
accept - accept 3 __accept accept
|
||||
bind - bind 3 __bind bind
|
||||
connect - connect 3 __connect connect
|
||||
getpeername - getpeername 3 __getpeername getpeername
|
||||
getsockname - getsockname 3 __getsockname getsockname
|
||||
getsockopt - getsockopt 5 __getsockopt getsockopt
|
||||
listen - listen 2 __listen listen
|
||||
recv - recv 4 __recv recv
|
||||
recvfrom - recvfrom 6 __recvfrom recvfrom
|
||||
recvmsg - recvmsg 3 __recvmsg recvmsg
|
||||
send - send 4 __send send
|
||||
sendmsg - sendmsg 3 __sendmsg sendmsg
|
||||
sendto - sendto 6 __sendto sendto
|
||||
setsockopt - setsockopt 5 __setsockopt setsockopt
|
||||
shutdown - shutdown 2 __shutdown shutdown
|
||||
socketpair - socketpair 4 __socketpair socketpair
|
||||
|
||||
# Another broken Linux/i386 idea layed to rest
|
||||
ptrace - ptrace 4 __ptrace ptrace
|
31
sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.S
Normal file
31
sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.S
Normal file
@ -0,0 +1,31 @@
|
||||
/* Copyright (C) 1997 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Richard Henderson <richard@gnu.ai.mit.edu>, 1997.
|
||||
|
||||
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. */
|
||||
|
||||
|
||||
/* Define errno */
|
||||
|
||||
.section .bss
|
||||
.globl errno
|
||||
.align 2
|
||||
errno: .space 4
|
||||
.type errno, @object
|
||||
.size errno, 4
|
||||
|
||||
.globl __errno
|
||||
__errno = errno
|
138
sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h
Normal file
138
sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h
Normal file
@ -0,0 +1,138 @@
|
||||
/* Copyright (C) 1997 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Richard Henderson <richard@gnu.ai.mit.edu>, 1997.
|
||||
|
||||
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 _LINUX_SPARC64_SYSDEP_H
|
||||
#define _LINUX_SPARC64_SYSDEP_H 1
|
||||
|
||||
#include <sysdeps/unix/sysdep.h>
|
||||
|
||||
#undef SYS_ify
|
||||
#define SYS_ify(syscall_name) __NR_##syscall_name
|
||||
|
||||
#ifdef ASSEMBLER
|
||||
|
||||
#ifdef DONT_LOAD_G1
|
||||
# define LOADSYSCALL(x)
|
||||
#else
|
||||
# define LOADSYSCALL(x) mov __NR_##x, %g1
|
||||
#endif
|
||||
|
||||
/* Linux/SPARC uses a different trap number */
|
||||
#undef PSEUDO
|
||||
#undef ENTRY
|
||||
|
||||
#define ENTRY(name) \
|
||||
.global C_SYMBOL_NAME(name); \
|
||||
.align 2; \
|
||||
C_LABEL(name); \
|
||||
.type name,@function;
|
||||
|
||||
#ifdef PIC
|
||||
# ifdef _LIBC_REENTRANT
|
||||
# define SYSCALL_ERROR_HANDLER \
|
||||
.global C_SYMBOL_NAME(errno); \
|
||||
.type C_SYMBOL_NAME(errno),@object; \
|
||||
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
|
||||
# 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; \
|
||||
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 \
|
||||
.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) \
|
||||
.text; \
|
||||
ENTRY(name); \
|
||||
LOADSYSCALL(syscall_name); \
|
||||
ta 0x11; \
|
||||
bcc,pt %xcc,1f; \
|
||||
nop; \
|
||||
SYSCALL_ERROR_HANDLER; \
|
||||
1:
|
||||
|
||||
#undef PSEUDO_END
|
||||
#define PSEUDO_END(name) \
|
||||
.size name,.-name
|
||||
|
||||
#undef END
|
||||
#define END(name) \
|
||||
.size name,.-name
|
||||
|
||||
/* Careful here! This "ret" define can interfere; use jmpl if unsure. */
|
||||
#define ret retl; nop
|
||||
#define r0 %o0
|
||||
#define r1 %o1
|
||||
#define MOVE(x,y) mov x, y
|
||||
|
||||
#endif /* ASSEMBLER */
|
||||
|
||||
/* This is the offset from the %sp to the backing store above the
|
||||
register windows. So if you poke stack memory directly you add this. */
|
||||
#define STACK_BIAS 2047
|
||||
|
||||
#endif /* linux/sparc64/sysdep.h */
|
67
sysdeps/unix/sysv/linux/sparc/sparc64/ucontext.h
Normal file
67
sysdeps/unix/sysv/linux/sparc/sparc64/ucontext.h
Normal file
@ -0,0 +1,67 @@
|
||||
#ifndef _UCONTEXT_H
|
||||
#define _UCONTEXT_H
|
||||
|
||||
#include <signal.h>
|
||||
|
||||
#define MC_TSTATE 0
|
||||
#define MC_PC 1
|
||||
#define MC_NPC 2
|
||||
#define MC_Y 3
|
||||
#define MC_G1 4
|
||||
#define MC_G2 5
|
||||
#define MC_G3 6
|
||||
#define MC_G4 7
|
||||
#define MC_G5 8
|
||||
#define MC_G6 9
|
||||
#define MC_G7 10
|
||||
#define MC_O0 11
|
||||
#define MC_O1 12
|
||||
#define MC_O2 13
|
||||
#define MC_O3 14
|
||||
#define MC_O4 15
|
||||
#define MC_O5 16
|
||||
#define MC_O6 17
|
||||
#define MC_O7 18
|
||||
#define MC_NGREG 19
|
||||
|
||||
typedef unsigned long mc_greg_t;
|
||||
typedef mc_greg_t mc_gregset_t[MC_NGREG];
|
||||
|
||||
#define MC_MAXFPQ 16
|
||||
struct mc_fq {
|
||||
unsigned long *mcfq_addr;
|
||||
unsigned int mcfq_insn;
|
||||
};
|
||||
|
||||
struct mc_fpu {
|
||||
union {
|
||||
unsigned int sregs[32];
|
||||
unsigned long dregs[32];
|
||||
long double qregs[16];
|
||||
} mcfpu_fregs;
|
||||
unsigned long mcfpu_fsr;
|
||||
unsigned long mcfpu_fprs;
|
||||
unsigned long mcfpu_gsr;
|
||||
struct mc_fq *mcfpu_fq;
|
||||
unsigned char mcfpu_qcnt;
|
||||
unsigned char mcfpu_qentsz;
|
||||
unsigned char mcfpu_enab;
|
||||
};
|
||||
typedef struct mc_fpu mc_fpu_t;
|
||||
|
||||
typedef struct {
|
||||
mc_gregset_t mc_gregs;
|
||||
mc_greg_t mc_fp;
|
||||
mc_greg_t mc_i7;
|
||||
mc_fpu_t mc_fpregs;
|
||||
} mcontext_t;
|
||||
|
||||
struct ucontext {
|
||||
struct ucontext *uc_link;
|
||||
unsigned long uc_flags;
|
||||
unsigned long uc_sigmask;
|
||||
mcontext_t uc_mcontext;
|
||||
};
|
||||
typedef struct ucontext ucontext_t;
|
||||
|
||||
#endif /* ucontext.h */
|
Reference in New Issue
Block a user