Update.
authorUlrich Drepper <drepper@redhat.com>
Tue, 13 Jun 2000 07:33:12 +0000 (07:33 +0000)
committerUlrich Drepper <drepper@redhat.com>
Tue, 13 Jun 2000 07:33:12 +0000 (07:33 +0000)
2000-06-13  Ulrich Drepper  <drepper@redhat.com>

* misc/sys/cdefs.h: Define __bounded and __unbounded if
__BOUNDED_POINTERS__ is not defined.

2000-06-07  Greg McGary  <greg@mcgary.org>

* sysdeps/generic/bp-sym.h: New file.
* sysdeps/generic/bp-start.h: New file.
* sysdeps/i386/elf/start.S: Designate BP symbols.
* sysdeps/generic/libc-start.c: Wrap bounds around
argv & envp and each of their string members.

2000-06-07  Greg McGary  <greg@mcgary.org>

* sysdeps/unix/make-syscalls.sh: Add comments to
output that aid debugging & comprehension.
Map simple syscall signatures to number of args.
Generate BP syscall thunk definitions.
* sysdeps/generic/bp-thunks.h: New file.
* sysdeps/unix/syscalls.list: Replace arg-count with
simple return+arg signature.
* sysdeps/unix/common/syscalls.list: Likewise.
* sysdeps/unix/inet/syscalls.list: Likewise.
* sysdeps/unix/mman/syscalls.list: Likewise.
* sysdeps/unix/sysv/syscalls.list: Likewise.
* sysdeps/unix/sysv/linux/syscalls.list: Likewise.
* sysdeps/unix/sysv/linux/i386/syscalls.list: Likewise.

2000-06-07  Greg McGary  <greg@mcgary.org>

* Makeconfig (CPPFLAGS-.ob): pass -fbounded-pointers for all files
*.[cS].
(CFLAGS-.ob): Don't optimize sibling calls.
(bppfx): New variable.
* Makerules (elide-bp-thunks): New variable.
(elide-routines.*): Elide BP-* files for all but *.ob.
(sources): Include bp-thunks.

* iconv/gconv_simple.c: Remove unnecessary prototype.

* iconv/gconv_trans.c: Pretty print.

19 files changed:
ChangeLog
Makeconfig
Makerules
iconv/gconv_simple.c
iconv/gconv_trans.c
misc/sys/cdefs.h
sysdeps/generic/bp-start.h [new file with mode: 0644]
sysdeps/generic/bp-sym.h [new file with mode: 0644]
sysdeps/generic/bp-thunks.h [new file with mode: 0644]
sysdeps/generic/libc-start.c
sysdeps/i386/elf/start.S
sysdeps/unix/common/syscalls.list
sysdeps/unix/inet/syscalls.list
sysdeps/unix/make-syscalls.sh
sysdeps/unix/mman/syscalls.list
sysdeps/unix/syscalls.list
sysdeps/unix/sysv/linux/i386/syscalls.list
sysdeps/unix/sysv/linux/syscalls.list
sysdeps/unix/sysv/syscalls.list

index 18d80d3..c27dff1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,48 @@
+2000-06-13  Ulrich Drepper  <drepper@redhat.com>
+
+       * misc/sys/cdefs.h: Define __bounded and __unbounded if
+       __BOUNDED_POINTERS__ is not defined.
+
+2000-06-07  Greg McGary  <greg@mcgary.org>
+
+       * sysdeps/generic/bp-sym.h: New file.
+       * sysdeps/generic/bp-start.h: New file.
+       * sysdeps/i386/elf/start.S: Designate BP symbols.
+       * sysdeps/generic/libc-start.c: Wrap bounds around
+       argv & envp and each of their string members.
+
+2000-06-07  Greg McGary  <greg@mcgary.org>
+
+       * sysdeps/unix/make-syscalls.sh: Add comments to
+       output that aid debugging & comprehension.
+       Map simple syscall signatures to number of args.
+       Generate BP syscall thunk definitions.
+       * sysdeps/generic/bp-thunks.h: New file.
+       * sysdeps/unix/syscalls.list: Replace arg-count with
+       simple return+arg signature.
+       * sysdeps/unix/common/syscalls.list: Likewise.
+       * sysdeps/unix/inet/syscalls.list: Likewise.
+       * sysdeps/unix/mman/syscalls.list: Likewise.
+       * sysdeps/unix/sysv/syscalls.list: Likewise.
+       * sysdeps/unix/sysv/linux/syscalls.list: Likewise.
+       * sysdeps/unix/sysv/linux/i386/syscalls.list: Likewise.
+
+2000-06-07  Greg McGary  <greg@mcgary.org>
+
+       * Makeconfig (CPPFLAGS-.ob): pass -fbounded-pointers for all files
+       *.[cS].
+       (CFLAGS-.ob): Don't optimize sibling calls.
+       (bppfx): New variable.
+       * Makerules (elide-bp-thunks): New variable.
+       (elide-routines.*): Elide BP-* files for all but *.ob.
+       (sources): Include bp-thunks.
+
 2000-06-12  Ulrich Drepper  <drepper@redhat.com>
 
+       * iconv/gconv_simple.c: Remove unnecessary prototype.
+
+       * iconv/gconv_trans.c: Pretty print.
+
        * elf/elf.h (R_SH_NUM): Got accidently dropped.
 
        * sysdeps/unix/sysv/linux/configure.in: Improve handling of
index 441ee06..f087137 100644 (file)
@@ -619,7 +619,7 @@ CFLAGS-.op = -pg
 libtype.op = lib%_p.a
 endif
 ifeq (yes,$(build-omitfp))
-# Under --enable-omitfp, we build an the library optimized without
+# Under --enable-omitfp, we build the library optimized without
 # debugging information using -fomit-frame-pointer, and build an extra
 # library with debugging information.  The debuggable objects are named foo.og.
 object-suffixes += .og
@@ -629,12 +629,14 @@ CFLAGS-.o = $(filter %frame-pointer,$(+cflags)) -g0 -O99 -fomit-frame-pointer -D
 CFLAGS-.os += -g0 -O99 -fomit-frame-pointer -D__USE_STRING_INLINES
 libtype.og = lib%_g.a
 endif
+
+bppfx = BP-
 ifeq (yes,$(build-bounded))
 # Under --enable-bounded, we build the library with `-fbounded-pointers -g'
 # to runtime bounds checking.  The bounded-pointer objects are named foo.ob.
 object-suffixes += .ob
-CPPFLAGS-.ob = -DBOUNDED_POINTERS $(pic-default)
-CFLAGS-.ob = -g -fbounded-pointers
+CPPFLAGS-.ob = -fbounded-pointers $(pic-default)
+CFLAGS-.ob = -g -O2 -fno-optimize-sibling-calls
 libtype.ob = lib%_b.a
 endif
 
index baeb9b6..f334c8c 100644 (file)
--- a/Makerules
+++ b/Makerules
@@ -418,15 +418,19 @@ ifndef libc.so-version
 static-only-routines =
 endif
 
+# Bounded pointer thunks are only built for *.ob
+elide-bp-thunks = $(addprefix $(bppfx),$(bp-thunks))
+
 elide-routines.oS += $(filter-out $(static-only-routines),\
-                                 $(routines) $(aux) $(sysdep_routines))
-elide-routines.os += $(static-only-routines)
+                                 $(routines) $(aux) $(sysdep_routines)) \
+                    $(elide-bp-thunks)
+elide-routines.os += $(static-only-routines) $(elide-bp-thunks)
 
 # If we have versioned code we don't need the old versions in any of the
 # static libraries.
-elide-routines.o  += $(shared-only-routines)
-elide-routines.op += $(shared-only-routines)
-elide-routines.og += $(shared-only-routines)
+elide-routines.o  += $(shared-only-routines) $(elide-bp-thunks)
+elide-routines.op += $(shared-only-routines) $(elide-bp-thunks)
+elide-routines.og += $(shared-only-routines) $(elide-bp-thunks)
 elide-routines.ob += $(shared-only-routines)
 
 # Don't try to use -lc when making libc.so itself.
@@ -466,9 +470,13 @@ endif
 \f
 # Figure out the source filenames in this directory.
 
-override sources       := $(addsuffix .c,$(filter-out $(elided-routines),\
-                                                      $(routines) $(aux) \
-                                                      $(sysdep_routines)))
+override sources := $(addsuffix .c,\
+                       $(filter-out $(elided-routines),\
+                           $(routines) $(aux) \
+                           $(sysdep_routines)) \
+                           $(addprefix $(bppfx),\
+                               $(filter $(routines) $(sysdep_routines),\
+                                   $(bp-thunks))))
 sysdep_routines := $(sysdep_routines)
 
 headers := $(headers) $(sysdep_headers)
index 188fc04..5033f3e 100644 (file)
@@ -789,13 +789,6 @@ ucs4le_internal_loop_single (struct __gconv_step *step,
 #define FUNCTION_NAME          __gconv_transform_internal_ascii
 #define ONE_DIRECTION          1
 
-extern int FUNCTION_NAME (struct __gconv_step *step,
-                         struct __gconv_step_data *data,
-                         const unsigned char **inptrp,
-                         const unsigned char *inend,
-                         unsigned char *outbufstart, size_t *irreversible,
-                         int do_flush, int consume_incomplete);
-
 #define MIN_NEEDED_INPUT       MIN_NEEDED_FROM
 #define MIN_NEEDED_OUTPUT      MIN_NEEDED_TO
 #define LOOPFCT                        FROM_LOOP
index 11c542e..56c3ff6 100644 (file)
@@ -27,9 +27,9 @@
 int
 gconv_transliterate (struct __gconv_step *step,
                     struct __gconv_step_data *step_data,
-                    __const unsigned char *inbufstart,
-                    __const unsigned char **inbufp,
-                    __const unsigned char *inbufend,
+                    const unsigned char *inbufstart,
+                    const unsigned char **inbufp,
+                    const unsigned char *inbufend,
                     unsigned char *outbufstart,
                     unsigned char **outbufp, unsigned char *outbufend,
                     size_t *irreversible)
index 4d2f8a0..aaba8a4 100644 (file)
 # define __END_DECLS
 #endif
 
+
+/* Support for bounded pointers.  */
+#ifndef __BOUNDED_POINTERS__
+# define __bounded     /* nothing */
+# define __unbounded   /* nothing */
+#endif
+
+
 /* __asm__ ("xyz") is used throughout the headers to rename functions
    at the assembly language level.  This is wrapped by the __REDIRECT
    macro, in order to support compilers that can do this some other
diff --git a/sysdeps/generic/bp-start.h b/sysdeps/generic/bp-start.h
new file mode 100644 (file)
index 0000000..3c440fd
--- /dev/null
@@ -0,0 +1,70 @@
+/* Copyright (C) 2000 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.  */
+
+
+#if __BOUNDED_POINTERS__
+
+  /* The command-line arg vector and environment vector come to us from
+     the OS as an unbounded pointer to an array of unbounded strings.
+     The user's main expects argv and __environ to be bounded pointers
+     to arrays of bounded strings.  */
+# define INIT_ARGV_and_ENVIRON \
+  do {                                                                       \
+    int envc;                                                                \
+    for (envc = 0; *ubp_ev; ubp_ev++, envc++)                                \
+      ;                                                                              \
+    ubp_ev -= envc;                                                          \
+                                                                             \
+    /* GKM FIXME: we could save some space by allocating only enough for      \
+       the additional low & high words, and destructively rewriting          \
+       argv in place.  */                                                    \
+    __ptrvalue (argv) = __ptrlow (argv)                                              \
+      = alloca ((argc + envc + 2) * sizeof (*argv));                         \
+    __ptrhigh (argv) = __ptrvalue (argv) + argc + 1;                         \
+    __ptrvalue (__environ) = __ptrlow (__environ) = __ptrhigh (argv);        \
+    __ptrhigh (__environ) = __ptrvalue (__environ) + envc + 1;               \
+    boundify_vector (__environ, ubp_ev);                                     \
+    boundify_vector (argv, ubp_av);                                          \
+  } while (0)
+
+
+/* Copy an unbounded vector of unbounded strings into a bounded
+   counterpart.  */
+
+static void
+boundify_vector (char **dest, char *__unbounded *__unbounded src)
+{
+  char *__unbounded s;
+  for (; *src; src++, dest++)
+    {
+      __ptrvalue (*dest) = __ptrlow (*dest) = *src;
+      __ptrhigh (*dest) = src[1];
+    }
+  *dest = 0;
+  /* The OS lays out strings contiguously in vector order,
+     so  */
+  for (s = __ptrvalue (dest[-1]); *s; s++)
+    ;
+  __ptrhigh (dest[-1]) = ++s;
+}
+
+#else
+
+# define INIT_ARGV_and_ENVIRON __environ = ubp_ev
+
+#endif
diff --git a/sysdeps/generic/bp-sym.h b/sysdeps/generic/bp-sym.h
new file mode 100644 (file)
index 0000000..d2b3bd0
--- /dev/null
@@ -0,0 +1,28 @@
+/* Bounded-pointer symbol modifier.
+   Copyright (C) 2000 Free Software Foundation, Inc.
+   Contributed by Greg McGary <greg@mcgary.org>
+
+   This file is part of the GNU C Library.  Its master source is NOT part of
+   the C library, however.  The master source lives in the GNU MP 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.  */
+
+#define BP_SYM(name) _BP_SYM (name)
+#if __BOUNDED_POINTERS__
+# define _BP_SYM(name) __BP_##name
+#else
+# define _BP_SYM(name) name
+#endif
diff --git a/sysdeps/generic/bp-thunks.h b/sysdeps/generic/bp-thunks.h
new file mode 100644 (file)
index 0000000..eb0a47b
--- /dev/null
@@ -0,0 +1,225 @@
+/* Bounded-pointer thunk definitions.
+   Copyright (C) 2000 Free Software Foundation, Inc.
+   Contributed by Greg McGary <greg@mcgary.org>
+
+   This file is part of the GNU C Library.  Its master source is NOT part of
+   the C library, however.  The master source lives in the GNU MP 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 _bpthunks_h_
+#define _bpthunks_h_
+
+#include <libc-symbols.h>
+
+#define BP_ALIAS(STRONG, ALIAS) weak_alias (__BP_##STRONG, __BP_##ALIAS)
+
+#define PV(P) __ptrvalue (P)
+#define SV(S) __ptrvalue (S)
+#define PB(P) __ptrlow (P)
+#define PE(P) __ptrhigh (P)
+#define voidp void *__bounded
+#define charp char *__bounded
+
+/* GKM FIXME: Add code to check bounds.  Right now, they only strip bounds, */
+
+#define BP_THUNK_i_iiip(NAME) __unbounded { \
+  extern int NAME (int, int, int, void *); \
+  int __BP_##NAME (int i0, int i1, int i2, voidp p3) \
+    { return NAME (i0, i1, i2, PV (p3)); } }
+
+#define BP_THUNK_i_iiipi(NAME) __unbounded { \
+  extern int NAME (int, int, int, void *, int); \
+  int __BP_##NAME (int i0, int i1, int i2, voidp p3, int i4) \
+    { return NAME (i0, i1, i2, PV (p3), i4); } }
+
+#define BP_THUNK_i_iiipp(NAME) __unbounded { \
+  extern int NAME (int, int, int, void *, void *); \
+  int __BP_##NAME (int i0, int i1, int i2, voidp p3, voidp p4) \
+    { return NAME (i0, i1, i2, PV (p3), PV (p4)); } }
+
+#define BP_THUNK_i_iip(NAME) __unbounded { \
+  extern int NAME (int, int, void *); \
+  int __BP_##NAME (int i0, int i1, voidp p2) \
+    { return NAME (i0, i1, PV (p2)); } }
+
+#define BP_THUNK_i_iipi(NAME) __unbounded { \
+  extern int NAME (int, int, void *, int); \
+  int __BP_##NAME (int i0, int i1, voidp p2, int i3) \
+    { return NAME (i0, i1, PV (p2), i3); } }
+
+#define BP_THUNK_i_iipp(NAME) __unbounded { \
+  extern int NAME (int, int, void *, void *); \
+  int __BP_##NAME (int i0, int i1, voidp p2, voidp p3) \
+    { return NAME (i0, i1, PV (p2), PV (p3)); } }
+
+#define BP_THUNK_i_ip(NAME) __unbounded { \
+  extern int NAME (int, void *); \
+  int __BP_##NAME (int i0, voidp p1) \
+    { return NAME (i0, PV (p1)); } }
+
+#define BP_THUNK_i_ipi(NAME) __unbounded { \
+  extern int NAME (int, void *, int); \
+  int __BP_##NAME (int i0, voidp p1, int i2) \
+    { return NAME (i0, PV (p1), i2); } }
+
+#define BP_THUNK_i_ipii(NAME) __unbounded { \
+  extern int NAME (int, void *, int, int); \
+  int __BP_##NAME (int i0, voidp p1, int i2, int i3) \
+    { return NAME (i0, PV (p1), i2, i3); } }
+
+#define BP_THUNK_i_ipiii(NAME) __unbounded { \
+  extern int NAME (int, void *, int, int, int); \
+  int __BP_##NAME (int i0, voidp p1, int i2, int i3, int i4) \
+    { return NAME (i0, PV (p1), i2, i3, i4); } }
+
+#define BP_THUNK_i_ipiipi(NAME) __unbounded { \
+  extern int NAME (int, void *, int, int, void *, int); \
+  int __BP_##NAME (int i0, voidp p1, int i2, int i3, voidp p4, int i5) \
+    { return NAME (i0, PV (p1), i2, i3, PV (p4), i5); } }
+
+#define BP_THUNK_i_ipiipp(NAME) __unbounded { \
+  extern int NAME (int, void *, int, int, void *, void *); \
+  int __BP_##NAME (int i0, voidp p1, int i2, int i3, voidp p4, voidp p5) \
+    { return NAME (i0, PV (p1), i2, i3, PV (p4), PV (p5)); } }
+
+#define BP_THUNK_i_ipip(NAME) __unbounded { \
+  extern int NAME (int, void *, int, void *); \
+  int __BP_##NAME (int i0, voidp p1, int i2, voidp p3) \
+    { return NAME (i0, PV (p1), i2, PV (p3)); } }
+
+#define BP_THUNK_i_ipp(NAME) __unbounded { \
+  extern int NAME (int, void *, void *); \
+  int __BP_##NAME (int i0, voidp p1, voidp p2) \
+    { return NAME (i0, PV (p1), PV (p2)); } }
+
+#define BP_THUNK_i_ippi(NAME) __unbounded { \
+  extern int NAME (int, void *, void *, int); \
+  int __BP_##NAME (int i0, voidp p1, voidp p2, int i3) \
+    { return NAME (i0, PV (p1), PV (p2), i3); } }
+
+#define BP_THUNK_i_ipppp(NAME) __unbounded { \
+  extern int NAME (int, void *, void *, void *, void *); \
+  int __BP_##NAME (int i0, voidp p1, voidp p2, voidp p3, voidp p4) \
+    { return NAME (i0, PV (p1), PV (p2), PV (p3), PV (p4)); } }
+
+#define BP_THUNK_i_isi(NAME) __unbounded { \
+  extern int NAME (int, char *, int); \
+  int __BP_##NAME (int i0, charp s1, int i2) \
+    { return NAME (i0, SV (s1), i2); } }
+
+#define BP_THUNK_i_isip(NAME) __unbounded { \
+  extern int NAME (int, char *, int, void *); \
+  int __BP_##NAME (int i0, charp s1, int i2, voidp p3) \
+    { return NAME (i0, SV (s1), i2, PV (p3)); } }
+
+#define BP_THUNK_i_p(NAME) __unbounded { \
+  extern int NAME (void *); \
+  int __BP_##NAME (voidp p0) \
+    { return NAME (PV (p0)); } }
+
+#define BP_THUNK_i_pi(NAME) __unbounded { \
+  extern int NAME (void *, int); \
+  int __BP_##NAME (voidp p0, int i1) \
+    { return NAME (PV (p0), i1); } }
+
+#define BP_THUNK_i_pii(NAME) __unbounded { \
+  extern int NAME (void *, int, int); \
+  int __BP_##NAME (voidp p0, int i1, int i2) \
+    { return NAME (PV (p0), i1, i2); } }
+
+#define BP_THUNK_i_piii(NAME) __unbounded { \
+  extern int NAME (void *, int, int, int); \
+  int __BP_##NAME (voidp p0, int i1, int i2, int i3) \
+    { return NAME (PV (p0), i1, i2, i3); } }
+
+#define BP_THUNK_i_pp(NAME) __unbounded { \
+  extern int NAME (void *, void *); \
+  int __BP_##NAME (voidp p0, voidp p1) \
+    { return NAME (PV (p0), PV (p1)); } }
+
+#define BP_THUNK_i_pppi(NAME) __unbounded { \
+  extern int NAME (void *, void *, void *, int); \
+  int __BP_##NAME (voidp p0, voidp p1, voidp p2, int i3) \
+    { return NAME (PV (p0), PV (p1), PV (p2), i3); } }
+
+#define BP_THUNK_i_s(NAME) __unbounded { \
+  extern int NAME (char *); \
+  int __BP_##NAME (charp s0) \
+    { return NAME (SV (s0)); } }
+
+#define BP_THUNK_i_si(NAME) __unbounded { \
+  extern int NAME (char *, int); \
+  int __BP_##NAME (charp s0, int i1) \
+    { return NAME (SV (s0), i1); } }
+
+#define BP_THUNK_i_sii(NAME) __unbounded { \
+  extern int NAME (char *, int, int); \
+  int __BP_##NAME (charp s0, int i1, int i2) \
+    { return NAME (SV (s0), i1, i2); } }
+
+#define BP_THUNK_i_sipip(NAME) __unbounded { \
+  extern int NAME (char *, int, void *, int, void *); \
+  int __BP_##NAME (charp s0, int i1, voidp p2, int i3, voidp p4) \
+    { return NAME (SV (s0), i1, PV (p2), i3, PV (p4)); } }
+
+#define BP_THUNK_i_sp(NAME) __unbounded { \
+  extern int NAME (char *, void *); \
+  int __BP_##NAME (charp s0, voidp p1) \
+    { return NAME (SV (s0), PV (p1)); } }
+
+#define BP_THUNK_i_spi(NAME) __unbounded { \
+  extern int NAME (char *, void *, int); \
+  int __BP_##NAME (charp s0, voidp p1, int i2) \
+    { return NAME (SV (s0), PV (p1), i2); } }
+
+#define BP_THUNK_i_spp(NAME) __unbounded { \
+  extern int NAME (char *, void *, void *); \
+  int __BP_##NAME (charp s0, voidp p1, voidp p2) \
+    { return NAME (SV (s0), PV (p1), PV (p2)); } }
+
+#define BP_THUNK_i_ss(NAME) __unbounded { \
+  extern int NAME (char *, char *); \
+  int __BP_##NAME (charp s0, charp s1) \
+    { return NAME (SV (s0), s1); } }
+
+#define BP_THUNK_i_sssip(NAME) __unbounded { \
+  extern int NAME (char *, char *, char *, int, void *); \
+  int __BP_##NAME (charp s0, charp s1, charp s2, int i3, voidp p4) \
+    { return NAME (SV (s0), SV (s1), SV (s2), i3, PV (p4)); } }
+
+/* sstk */
+#define BP_THUNK_p_i(NAME) __unbounded { \
+  extern void *NAME (int); \
+  voidp __BP_##NAME (int i0) \
+    { charp m; PV (m) = PB (m) = NAME (i0); \
+      PE (m) = PV (m) + i0; return m; } }
+
+/* mremap */
+#define BP_THUNK_p_piii(NAME) __unbounded { \
+  extern void *NAME (void *, int, int, int); \
+  voidp __BP_##NAME (voidp p0, int i1, int i2, int i3) \
+    { charp m; PV (m) = PB (m) = NAME (PV (p0), i1, i2, i3); \
+      PE (m) = PV (m) + i2; return m; } }
+
+/* mmap */
+#define BP_THUNK_p_piiiii(NAME) __unbounded { \
+  extern void *NAME (void *, int, int, int, int, int); \
+  voidp __BP_##NAME (voidp p0, int i1, int i2, int i3, int i4, int i5) \
+    { charp m; PV (m) = PB (m) = NAME (PV (p0), i1, i2, i3, i4, i5); \
+      PE (m) = PV (m) + i1; return m; } }
+
+#endif /* _bpthunks_h_ */
index f5486f9..a9517c3 100644 (file)
 #include <stdlib.h>
 #include <unistd.h>
 #include <ldsodefs.h>
+#include <bp-start.h>
+#include <bp-sym.h>
 
 extern void __libc_init_first (int argc, char **argv, char **envp);
 
 extern int _dl_starting_up;
 weak_extern (_dl_starting_up)
 extern int __libc_multiple_libcs;
-extern void *__libc_stack_end;
+extern void *__unbounded __libc_stack_end;
 
 /* Prototype for local function.  */
 extern void __libc_check_standard_fds (void);
 
 int
-__libc_start_main (int (*main) (int, char **, char **), int argc,
-                  char **argv, void (*init) (void), void (*fini) (void),
-                  void (*rtld_fini) (void), void *stack_end)
+/* GKM FIXME: GCC: this should get __BP_ prefix by virtue of the
+   BPs in the arglist of startup_info.main and startup_info.init. */
+BP_SYM (__libc_start_main) (int (*main) (int, char **, char **),
+                  int argc, char *__unbounded *__unbounded ubp_av,
+                  void (*init) (void), void (*fini) (void),
+                  void (*rtld_fini) (void), void *__unbounded stack_end)
 {
+  char *__unbounded *__unbounded ubp_ev = &ubp_av[argc + 1];
+#if __BOUNDED_POINTERS__
+  char **argv;
+#else
+# define argv ubp_av
+#endif
+
 #ifndef SHARED
   /* The next variable is only here to work around a bug in gcc <= 2.7.2.2.
      If the address would be taken inside the expression the optimizer
@@ -44,12 +56,11 @@ __libc_start_main (int (*main) (int, char **, char **), int argc,
   __libc_multiple_libcs = dummy_addr && !_dl_starting_up;
 #endif
 
+  INIT_ARGV_and_ENVIRON;
+
   /* Store the lowest stack address.  */
   __libc_stack_end = stack_end;
 
-  /* Set the global _environ variable correctly.  */
-  __environ = &argv[argc + 1];
-
 #ifndef SHARED
   /* Some security at this point.  Prevent starting a SUID binary where
      the standard file descriptors are not opened.  We have to do this
index b5b5f01..868323b 100644 (file)
@@ -1,5 +1,5 @@
 /* Startup code compliant to the ELF i386 ABI.
-   Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+   Copyright (C) 1995, 1996, 1997, 1998, 2000 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
@@ -36,6 +36,8 @@
                                        NULL
 */
 
+#include "bp-sym.h"
+
        .text
        .globl _start
 _start:
@@ -70,11 +72,11 @@ _start:
        pushl %ecx              /* Push second argument: argv.  */
        pushl %esi              /* Push first argument: argc.  */
 
-       pushl $main
+       pushl $BP_SYM (main)
 
        /* Call the user's main function, and exit with its value.
           But let the libc call main.    */
-       call __libc_start_main
+       call BP_SYM (__libc_start_main)
 
        hlt                     /* Crash if somehow `exit' does return.  */
 
index 328b395..899d3b9 100644 (file)
@@ -1,17 +1,17 @@
 # File name    Caller  Syscall name    # args  Strong name     Weak names
 
-adjtime                -       adjtime         2       __adjtime       adjtime
-fchmod         -       fchmod          2       __fchmod        fchmod
-fchown         -       fchown          3       __fchown        fchown
-ftruncate      -       ftruncate       2       __ftruncate     ftruncate
-getpgid                -       getpgrp         1       __getpgid       getpgid
-getrusage      -       getrusage       2       __getrusage     getrusage
-gettimeofday   -       gettimeofday    2       __gettimeofday  gettimeofday
-settimeofday   -       settimeofday    2       __settimeofday  settimeofday
-setpgid                -       setpgrp         2       __setpgid       setpgid
-setregid       -       setregid        2       __setregid      setregid
-setreuid       -       setreuid        2       __setreuid      setreuid
-sigaction      -       sigaction       3       __sigaction     sigaction
-sys_lstat      lxstat  lstat           2       __syscall_lstat
-truncate       -       truncate        2       truncate
-vhangup                -       vhangup         1       vhangup
+adjtime                -       adjtime         i:pp    __adjtime       adjtime
+fchmod         -       fchmod          i:ii    __fchmod        fchmod
+fchown         -       fchown          i:iii   __fchown        fchown
+ftruncate      -       ftruncate       i:ii    __ftruncate     ftruncate
+getpgid                -       getpgrp         i:i     __getpgid       getpgid
+getrusage      -       getrusage       i:ip    __getrusage     getrusage
+gettimeofday   -       gettimeofday    i:pp    __gettimeofday  gettimeofday
+settimeofday   -       settimeofday    i:pp    __settimeofday  settimeofday
+setpgid                -       setpgrp         i:ii    __setpgid       setpgid
+setregid       -       setregid        i:ii    __setregid      setregid
+setreuid       -       setreuid        i:ii    __setreuid      setreuid
+sigaction      -       sigaction       i:ipp   __sigaction     sigaction
+sys_lstat      lxstat  lstat           i:sp    __syscall_lstat
+truncate       -       truncate        i:si    truncate
+vhangup                -       vhangup         i:i     vhangup
index 772d239..93ca33a 100644 (file)
@@ -1,23 +1,23 @@
 # File name    Caller  Syscall name    # args  Strong name     Weak names
 
-accept         -       accept          3       __libc_accept   accept
-bind           -       bind            3       bind
-connect                -       connect         3       __libc_connect  __connect connect
-gethostid      -       gethostid             gethostid
-gethostname    -       gethostname     2       __gethostname   gethostname
-getpeername    -       getpeername     3       getpeername
-getsockname    -       getsockname     3       getsockname
-getsockopt     -       getsockopt      5       getsockopt
-listen         -       listen          2       listen
-recv           -       recv            4       __libc_recv     recv
-recvfrom       -       recvfrom        6       __libc_recvfrom recvfrom
-recvmsg                -       recvmsg         3       __libc_recvmsg  recvmsg
-send           -       send            4       __libc_send     __send send
-sendmsg                -       sendmsg         3       __libc_sendmsg  sendmsg
-sendto         -       sendto          6       __libc_sendto   sendto
-sethostid      -       sethostid       1       sethostid
-sethostname    -       sethostname     2       sethostname
-setsockopt     -       setsockopt      5       setsockopt
-shutdown       -       shutdown        2       shutdown
-socket         -       socket          3       socket
-socketpair     -       socketpair      4       socketpair
+accept         -       accept          i:ipi   __libc_accept   accept
+bind           -       bind            i:ipi   bind
+connect                -       connect         i:ipi   __libc_connect  __connect connect
+gethostid      -       gethostid       i:      gethostid
+gethostname    -       gethostname     i:si    __gethostname   gethostname
+getpeername    -       getpeername     i:ipi   getpeername
+getsockname    -       getsockname     i:ipi   getsockname
+getsockopt     -       getsockopt      i:iiipp getsockopt
+listen         -       listen          i:ii    listen
+recv           -       recv            i:ipii  __libc_recv     recv
+recvfrom       -       recvfrom        i:ipiipp        __libc_recvfrom recvfrom
+recvmsg                -       recvmsg         i:ipi   __libc_recvmsg  recvmsg
+send           -       send            i:ipii  __libc_send     __send send
+sendmsg                -       sendmsg         i:ipi   __libc_sendmsg  sendmsg
+sendto         -       sendto          i:ipiipi        __libc_sendto   sendto
+sethostid      -       sethostid       i:i     sethostid
+sethostname    -       sethostname     i:pi    sethostname
+setsockopt     -       setsockopt      i:iiipi setsockopt
+shutdown       -       shutdown        i:ii    shutdown
+socket         -       socket          i:iii   socket
+socketpair     -       socketpair      i:iiip  socketpair
index 7aa4b3e..387df67 100644 (file)
@@ -5,47 +5,68 @@
 
 thisdir=$1; shift
 
-# Get the list of system calls for this directory.
-calls=`sed 's/#.*$//
-/^[    ]*$/d' $thisdir/syscalls.list`
-
+echo ''
+echo \#### DIRECTORY = $thisdir
 # Check each sysdep dir with higher priority than this one,
 # and remove from $calls all the functions found in other dirs.
-for dir in $sysdirs; do
+# Punt when we reach the directory defining these syscalls.
+sysdirs=`for dir in $sysdirs; do
+        test $dir = $thisdir && break; echo $dir; done`
+echo \#### SYSDIRS = $sysdirs
 
-  # Punt when we reach the directory defining these syscalls.
-  test $dir = $thisdir && break
+# Get the list of system calls for this directory.
+calls=`sed 's/#.*$//
+/^[    ]*$/d' $thisdir/syscalls.list`
 
+calls=`echo "$calls" |
+while read file caller rest; do
   # Remove each syscall that is implemented by a file in $dir.
   # If a syscall specified a "caller", then only compile that syscall
   # if the caller function is also implemented in this directory.
-  calls=`echo "$calls" | while read file caller rest; do
-          test -f $dir/$file.c && continue
-          test -f $dir/$file.S && continue
-          test -f $dir/$file.s && continue
-          if test x$caller != x-; then
-            test -f $dir/$caller.c && continue
-            test -f $dir/$caller.S && continue
-            test -f $dir/$caller.s && continue
-          fi
-          echo $file $caller $rest
-         done`
-
-done
+  srcfile=-;
+  for dir in $sysdirs; do
+     { test -f $dir/$file.c && srcfile=$dir/$file.c; } ||
+     { test -f $dir/$file.S && srcfile=$dir/$file.S; } ||
+     { test -f $dir/$file.s && srcfile=$dir/$file.s; } ||
+     { test x$caller != x- &&
+       { { test -f $dir/$caller.c && srcfile=$dir/$caller.c; } ||
+         { test -f $dir/$caller.S && srcfile=$dir/$caller.S; } ||
+         { test -f $dir/$caller.s && srcfile=$dir/$caller.s; }; }; } && break;
+  done;
+  echo $file $srcfile $caller $rest;
+done`
 
 # Any calls left?
 test -n "$calls" || exit 0
 
-files=
-
 # Emit rules to compile the syscalls remaining in $calls.
-echo "$calls" | while read file caller syscall nargs strong weak; do
+echo "$calls" | while read file srcfile caller syscall args strong weak; do
+
+# Figure out if $syscall is defined with a number in syscall.h.
+callnum=-
+eval `{ echo "#include <sysdep.h>";
+       echo "callnum=SYS_ify ($syscall)"; } |
+         $asm_CPP - |grep "^callnum=" |grep -v $syscall`
+
+  # Derive the number of arguments from the argument signature
+  case $args in
+  [0-9]) nargs=$args;;
+  ?:) nargs=0;;
+  ?:?) nargs=1;;
+  ?:??) nargs=2;;
+  ?:???) nargs=3;;
+  ?:????) nargs=4;;
+  ?:?????) nargs=5;;
+  ?:??????) nargs=6;;
+  esac
 
-  # Figure out if $syscall is defined with a number in syscall.h.
-  $asm_CPP - << EOF | grep "^@@@ .*$syscall" >/dev/null && continue
-#include <sysdep.h>
-@@@ SYS_ify ($syscall)
-EOF
+  # Make sure only the first syscall rule is used, if multiple dirs
+  # define the same syscall.
+ echo "#### CALL=$file NUMBER=$callnum ARGS=$args SOURCE=$srcfile"
+ case x$srcfile$callnum in
+ x*-) ;; ### Do nothing for undefined callnum
+ x-*)
+  echo "ifeq (,\$(filter $file,\$(unix-syscalls)))"
 
   case $weak in
   *@*)
@@ -53,11 +74,6 @@ EOF
     echo "ifneq (,\$(filter .os,\$(object-suffixes)))"
     ;;
   esac
-
-  # Make sure only the first syscall rule is used, if multiple dirs
-  # define the same syscall.
-  echo "ifeq (,\$(filter $file,\$(unix-syscalls)))"
-
   # Accumulate the list of syscall files for this directory.
   echo "unix-syscalls += $file"
   test x$caller = x- || echo "unix-extra-syscalls += $file"
@@ -75,7 +91,7 @@ shared-only-routines += $file
 \$(foreach o,\$(object-suffixes),\$(objpfx)$file\$o): \\"
     ;;
   esac
-  echo "\$(common-objpfx)s-proto.d
+  echo "               \$(common-objpfx)s-proto.d
        (echo '#include <sysdep.h>'; \\
         echo 'PSEUDO ($strong, $syscall, $nargs)'; \\
         echo ' ret'; \\
@@ -124,8 +140,6 @@ shared-only-routines += $file
   # And finally, pipe this all into the compiler.
   echo '       ) | $(COMPILE.S) -x assembler-with-cpp -o $@ -'
 
-  echo endif
-
   case $weak in
   *@*)
     # The versioned symbols are only in the shared library.
@@ -133,4 +147,29 @@ shared-only-routines += $file
     ;;
   esac
 
+  echo endif
+ ;;
+ esac
+
+  case x$callnum,$srcfile,$args in
+  x[0-9]*,-,*[sp]* | x*,*.[sS],*[sp]*)
+    echo "ifeq (,\$(filter $file,\$(bp-thunks)))"
+    echo "bp-thunks += $file";
+    echo "\
+\$(objpfx)\$(bppfx)$file.ob: \$(common-objpfx)s-proto.d
+       (echo '#include <bp-thunks.h>'; \\
+        echo 'BP_THUNK_`echo $args |tr : _` ($strong)'; \\"
+
+    for name in $weak; do
+      case $name in
+       *@*) ;;
+       *) echo "        echo 'BP_ALIAS ($strong, $name)'; \\" ;;
+      esac
+    done
+
+    echo '     ) | $(COMPILE.c) -x c -o $@ -'
+    echo endif
+    ;;
+  esac
+
 done
index 1d3173e..67aa948 100644 (file)
@@ -4,8 +4,8 @@
 
 # File name    Caller  Syscall name    # args  Strong name     Weak names
 
-madvise                -       madvise         3       madvise
-mmap           -       mmap            6       __mmap          mmap
-mprotect       -       mprotect        3       __mprotect      mprotect
-msync          -       msync           3       __libc_msync    msync
-munmap         -       munmap          2       __munmap        munmap
+madvise                -       madvise         i:pii   madvise
+mmap           -       mmap            p:piiiii        __mmap          mmap
+mprotect       -       mprotect        i:pii   __mprotect      mprotect
+msync          -       msync           i:pii   __libc_msync    msync
+munmap         -       munmap          i:pi    __munmap        munmap
index 9a39b65..9e7c43e 100644 (file)
@@ -1,65 +1,65 @@
-# File name    Caller  Syscall name    # args  Strong name     Weak names
+# File name    Caller  Syscall name    Args    Strong name     Weak names
 
-access         -       access          2       __access        access
-acct           -       acct            1       acct
-chdir          -       chdir           1       __chdir         chdir
-chmod          -       chmod           2       __chmod         chmod
-chown          -       chown           3       __chown         chown
-chroot         -       chroot          1       chroot
-close          -       close           1       __libc_close    __close close
-dup            -       dup             1       __dup           dup
-dup2           -       dup2            2       __dup2          dup2
-fchdir         -       fchdir          1       __fchdir        fchdir
-fcntl          -       fcntl           3       __libc_fcntl    __fcntl fcntl
-fstatfs                -       fstatfs         2       __fstatfs       fstatfs
-fsync          -       fsync           1       __libc_fsync    fsync
-getdomain      -       getdomainname   2       getdomainname
-getgid         -       getgid                __getgid        getgid
-getgroups      -       getgroups       2       __getgroups     getgroups
-getitimer      -       getitimer       2       __getitimer     getitimer
-getpid         -       getpid                __getpid        getpid
-getpriority    -       getpriority     2       getpriority
-getrlimit      -       getrlimit       2       __getrlimit     getrlimit
-getuid         -       getuid                __getuid        getuid
-ioctl          -       ioctl           3       __ioctl         ioctl
-kill           -       kill            2       __kill          kill
-link           -       link            2       __link          link
-lseek          -       lseek           3       __libc_lseek    __lseek lseek
-mkdir          -       mkdir           2       __mkdir         mkdir
-open           -       open            3       __libc_open     __open open
-profil         -       profil          4       profil
-ptrace         -       ptrace          4       ptrace
-read           -       read            3       __libc_read     __read read
-readlink       -       readlink        3       __readlink      readlink
-readv          -       readv           3       __readv         readv
-reboot         -       reboot          1       reboot
-rename         -       rename          2       rename
-rmdir          -       rmdir           1       __rmdir         rmdir
-select         -       select          5       __select        select
-setdomain      -       setdomainname   2       setdomainname
-setegid                -       setegid         1       __setegid       setegid
-seteuid                -       seteuid         1       __seteuid       seteuid
-setgid         -       setgid          1       __setgid        setgid
-setgroups      -       setgroups       2       setgroups
-setitimer      -       setitimer       3       __setitimer     setitimer
-setpriority    -       setpriority     3       setpriority
-setrlimit      -       setrlimit       2       setrlimit
-setsid         -       setsid                __setsid        setsid
-settimeofday   -       settimeofday    2       __settimeofday  settimeofday
-setuid         -       setuid          1       __setuid        setuid
-sigsuspend     -       sigsuspend      1       sigsuspend
-sstk           -       sstk            1       sstk
-statfs         -       statfs          2       __statfs        statfs
-swapoff                -       swapoff         1       swapoff
-swapon         -       swapon          1       swapon
-symlink                -       symlink         2       __symlink       symlink
-sync           -       sync                  sync
-sys_fstat      fxstat  fstat           2       __syscall_fstat
-sys_mknod      xmknod  mknod           3       __syscall_mknod
-sys_stat       xstat   stat            2       __syscall_stat
-umask          -       umask           1       __umask         umask
-uname          -       uname           1       uname
-unlink         -       unlink          1       __unlink        unlink
-utimes         -       utimes          2       __utimes        utimes
-write          -       write           3       __libc_write    __write write
-writev         -       writev          3       __writev        writev
+access         -       access          i:si    __access        access
+acct           -       acct            i:s     acct
+chdir          -       chdir           i:s     __chdir         chdir
+chmod          -       chmod           i:si    __chmod         chmod
+chown          -       chown           i:sii   __chown         chown
+chroot         -       chroot          i:s     chroot
+close          -       close           i:i     __libc_close    __close close
+dup            -       dup             i:i     __dup           dup
+dup2           -       dup2            i:ii    __dup2          dup2
+fchdir         -       fchdir          i:i     __fchdir        fchdir
+fcntl          -       fcntl           i:iip   __libc_fcntl    __fcntl fcntl
+fstatfs                -       fstatfs         i:ip    __fstatfs       fstatfs
+fsync          -       fsync           i:i     __libc_fsync    fsync
+getdomain      -       getdomainname   i:si    getdomainname
+getgid         -       getgid          i:      __getgid        getgid
+getgroups      -       getgroups       i:ip    __getgroups     getgroups
+getitimer      -       getitimer       i:ip    __getitimer     getitimer
+getpid         -       getpid          i:      __getpid        getpid
+getpriority    -       getpriority     i:ii    getpriority
+getrlimit      -       getrlimit       i:ip    __getrlimit     getrlimit
+getuid         -       getuid          i:      __getuid        getuid
+ioctl          -       ioctl           i:iip   __ioctl         ioctl
+kill           -       kill            i:ii    __kill          kill
+link           -       link            i:ss    __link          link
+lseek          -       lseek           i:iii   __libc_lseek    __lseek lseek
+mkdir          -       mkdir           i:si    __mkdir         mkdir
+open           -       open            i:sii   __libc_open     __open open
+profil         -       profil          i:piii  profil
+ptrace         -       ptrace          i:iiii  ptrace
+read           -       read            i:ipi   __libc_read     __read read
+readlink       -       readlink        i:spi   __readlink      readlink
+readv          -       readv           i:ipi   __readv         readv
+reboot         -       reboot          i:i     reboot
+rename         -       rename          i:ss    rename
+rmdir          -       rmdir           i:s     __rmdir         rmdir
+select         -       select          i:ipppp __select        select
+setdomain      -       setdomainname   i:si    setdomainname
+setegid                -       setegid         i:i     __setegid       setegid
+seteuid                -       seteuid         i:i     __seteuid       seteuid
+setgid         -       setgid          i:i     __setgid        setgid
+setgroups      -       setgroups       i:ip    setgroups
+setitimer      -       setitimer       i:ipp   __setitimer     setitimer
+setpriority    -       setpriority     i:iii   setpriority
+setrlimit      -       setrlimit       i:ip    setrlimit
+setsid         -       setsid          i:      __setsid        setsid
+settimeofday   -       settimeofday    i:pp    __settimeofday  settimeofday
+setuid         -       setuid          i:i     __setuid        setuid
+sigsuspend     -       sigsuspend      i:p     sigsuspend
+sstk           -       sstk            p:i     sstk
+statfs         -       statfs          i:sp    __statfs        statfs
+swapoff                -       swapoff         i:s     swapoff
+swapon         -       swapon          i:s     swapon
+symlink                -       symlink         i:ss    __symlink       symlink
+sync           -       sync            i:      sync
+sys_fstat      fxstat  fstat           i:ip    __syscall_fstat
+sys_mknod      xmknod  mknod           i:pii   __syscall_mknod
+sys_stat       xstat   stat            i:sp    __syscall_stat
+umask          -       umask           i:i     __umask         umask
+uname          -       uname           i:p     uname
+unlink         -       unlink          i:s     __unlink        unlink
+utimes         -       utimes          i:sp    __utimes        utimes
+write          -       write           i:ipi   __libc_write    __write write
+writev         -       writev          i:ipi   __writev        writev
index 3cf0d30..f87c4f7 100644 (file)
@@ -1,6 +1,6 @@
-# File name    Caller  Syscall name    # args  Strong name     Weak names
+# File name    Caller  Syscall name    Args    Strong name     Weak names
 
-modify_ldt     EXTRA   modify_ldt      3       __modify_ldt    modify_ldt
-vm86           -       vm86            1       __vm86          vm86
-oldgetrlimit   EXTRA   getrlimit       2       __old_getrlimit getrlimit@GLIBC_2.0
-oldsetrlimit   EXTRA   setrlimit       2       __old_setrlimit setrlimit@GLIBC_2.0
+modify_ldt     EXTRA   modify_ldt      i:ipi   __modify_ldt    modify_ldt
+vm86           -       vm86            i:p     __vm86          vm86
+oldgetrlimit   EXTRA   getrlimit       i:ip    __old_getrlimit getrlimit@GLIBC_2.0
+oldsetrlimit   EXTRA   setrlimit       i:ip    __old_setrlimit setrlimit@GLIBC_2.0
index a0709d8..db05d87 100644 (file)
@@ -1,7 +1,7 @@
-# File name    Caller  Syscall name    # args  Strong name     Weak names
+# File name    Caller  Syscall name    Args    Strong name     Weak names
 
-adjtimex       adjtime adjtimex        1       __adjtimex      adjtimex ntp_adjtime
-bdflush                EXTRA   bdflush         2       bdflush
+adjtimex       adjtime adjtimex        i:p     __adjtimex      adjtimex ntp_adjtime
+bdflush                EXTRA   bdflush         i:ii    bdflush
 capget         EXTRA   capget          2       capget
 capset         EXTRA   capset          2       capset
 clock_getres   -       clock_getres    2       clock_getres
@@ -9,61 +9,61 @@ clock_gettime -       clock_gettime   2       clock_gettime
 clock_settime  -       clock_settime   2       clock_settime
 create_module  EXTRA   create_module   3       create_module
 delete_module  EXTRA   delete_module   3       delete_module
-fdatasync      -       fdatasync       1       fdatasync
-flock          -       flock           2       __flock         flock
-fork           -       fork                  __libc_fork     __fork fork
-get_kernel_syms        EXTRA   get_kernel_syms 1       get_kernel_syms
-getegid                -       getegid               __getegid       getegid
-geteuid                -       geteuid               __geteuid       geteuid
-getpgid                -       getpgid         1       __getpgid       getpgid
-getpgrp                -       getpgrp               getpgrp
-getppid                -       getppid               __getppid       getppid
-getsid         -       getsid          1       getsid
+fdatasync      -       fdatasync       i:i     fdatasync
+flock          -       flock           i:ii    __flock         flock
+fork           -       fork            i:      __libc_fork     __fork fork
+get_kernel_syms        EXTRA   get_kernel_syms i:p     get_kernel_syms
+getegid                -       getegid         i:      __getegid       getegid
+geteuid                -       geteuid         i:      __geteuid       geteuid
+getpgid                -       getpgid         i:i     __getpgid       getpgid
+getpgrp                -       getpgrp         i:      getpgrp
+getppid                -       getppid         i:      __getppid       getppid
+getsid         -       getsid          i:i     getsid
 init_module    EXTRA   init_module     5       init_module
-ioperm         -       ioperm          3       ioperm
-iopl           -       iopl            1       iopl
-klogctl                EXTRA   syslog          3       klogctl
-lchown         -       lchown          3       __lchown        lchown
-madvise                -       madvise         3       posix_madvise   madvise
+ioperm         -       ioperm          i:iii   ioperm
+iopl           -       iopl            i:i     iopl
+klogctl                EXTRA   syslog          i:isi   klogctl
+lchown         -       lchown          i:sii   __lchown        lchown
+madvise                -       madvise         i:pii   posix_madvise   madvise
 mincore                -       mincore         3       mincore
-mlock          EXTRA   mlock           2       __mlock mlock
-mlockall       EXTRA   mlockall        1       __mlockall      mlockall
-mmap           -       mmap            6       __mmap          mmap
-mount          EXTRA   mount           5       __mount mount
-mremap         EXTRA   mremap          4       __mremap        mremap
-munlock                EXTRA   munlock         2       __munlock       munlock
-munlockall     EXTRA   munlockall            __munlockall    munlockall
-nanosleep      -       nanosleep       2       __libc_nanosleep        __nanosleep nanosleep
-nfsservctl     EXTRA   nfsservctl      3       nfsservctl
-pause          -       pause                 __libc_pause    pause
-personality    init-first personality  1       __personality   personality
-pipe           -       pipe            1       __pipe          pipe
-prctl          EXTRA   prctl           5       prctl
-query_module   EXTRA   query_module    5       query_module
-quotactl       EXTRA   quotactl        4       quotactl
-sched_getp     -       sched_getparam  2       __sched_getparam        sched_getparam
-sched_gets     -       sched_getscheduler      1       __sched_getscheduler    sched_getscheduler
-sched_primax   -       sched_get_priority_max  1       __sched_get_priority_max        sched_get_priority_max
-sched_primin   -       sched_get_priority_min  1       __sched_get_priority_min        sched_get_priority_min
-sched_rr_gi    -       sched_rr_get_interval   2       __sched_rr_get_interval sched_rr_get_interval
-sched_setp     -       sched_setparam  2       __sched_setparam        sched_setparam
-sched_sets     -       sched_setscheduler      3       __sched_setscheduler    sched_setscheduler
-sched_yield    -       sched_yield           __sched_yield   sched_yield
-select         -       _newselect      5       __select        select
-sendfile       EXTRA   sendfile        4       sendfile
-setfsgid       EXTRA   setfsgid        1       setfsgid
-setfsuid       EXTRA   setfsuid        1       setfsuid
-setpgid                -       setpgid         2       __setpgid       setpgid
-setresuid      EXTRA   setresuid       3       __setresuid     setresuid
-setresgid      EXTRA   setresgid       3       __setresgid     setresgid
-sigaltstack    -       sigaltstack     2       __sigaltstack   sigaltstack
-sysinfo                EXTRA   sysinfo         1       sysinfo
-swapon         -       swapon          2       __swapon        swapon
-swapoff                -       swapoff         1       __swapoff       swapoff
+mlock          EXTRA   mlock           i:pi    __mlock mlock
+mlockall       EXTRA   mlockall        i:i     __mlockall      mlockall
+mmap           -       mmap            p:piiiii        __mmap          mmap
+mount          EXTRA   mount           i:sssip __mount mount
+mremap         EXTRA   mremap          p:piii  __mremap        mremap
+munlock                EXTRA   munlock         i:pi    __munlock       munlock
+munlockall     EXTRA   munlockall      i:      __munlockall    munlockall
+nanosleep      -       nanosleep       i:pp    __libc_nanosleep        __nanosleep nanosleep
+nfsservctl     EXTRA   nfsservctl      i:ipp   nfsservctl
+pause          -       pause           i:      __libc_pause    pause
+personality    init-first personality  i:i     __personality   personality
+pipe           -       pipe            i:p     __pipe          pipe
+prctl          EXTRA   prctl           i:iiiii prctl
+query_module   EXTRA   query_module    i:sipip query_module
+quotactl       EXTRA   quotactl        i:isip  quotactl
+sched_getp     -       sched_getparam  i:ip    __sched_getparam        sched_getparam
+sched_gets     -       sched_getscheduler      i:i     __sched_getscheduler    sched_getscheduler
+sched_primax   -       sched_get_priority_max  i:i     __sched_get_priority_max        sched_get_priority_max
+sched_primin   -       sched_get_priority_min  i:i     __sched_get_priority_min        sched_get_priority_min
+sched_rr_gi    -       sched_rr_get_interval   i:ip    __sched_rr_get_interval sched_rr_get_interval
+sched_setp     -       sched_setparam  i:ip    __sched_setparam        sched_setparam
+sched_sets     -       sched_setscheduler      i:iip   __sched_setscheduler    sched_setscheduler
+sched_yield    -       sched_yield     i:      __sched_yield   sched_yield
+select         -       _newselect      i:ipppp __select        select
+sendfile       EXTRA   sendfile        i:iipi  sendfile
+setfsgid       EXTRA   setfsgid        i:i     setfsgid
+setfsuid       EXTRA   setfsuid        i:i     setfsuid
+setpgid                -       setpgid         i:ii    __setpgid       setpgid
+setresuid      EXTRA   setresuid       i:iii   __setresuid     setresuid
+setresgid      EXTRA   setresgid       i:iii   __setresgid     setresgid
+sigaltstack    -       sigaltstack     i:pp    __sigaltstack   sigaltstack
+sysinfo                EXTRA   sysinfo         i:p     sysinfo
+swapon         -       swapon          i:si    __swapon        swapon
+swapoff                -       swapoff         i:s     __swapoff       swapoff
 timer_create   -       timer_create    3       timer_create
 timer_delete   -       timer_delete    1       timer_delete
 timer_getoverr -       timer_getoverrun        1       timer_getoverrun
 timer_gettime  -       timer_gettime   2       timer_gettime
 timer_settime  -       timer_settime   4       timer_settime
-uselib         EXTRA   uselib          1       uselib
-wait4          -       wait4           4       __wait4         wait4
+uselib         EXTRA   uselib          i:s     uselib
+wait4          -       wait4           i:ipip  __wait4         wait4
index 4ed3685..209d017 100644 (file)
@@ -1,16 +1,16 @@
 # File name    Caller  Syscall name    # args  Strong name     Weak names
 
-alarm          -       alarm           1       alarm
-ftime          -       ftime           1       ftime
-nice           -       nice            1       nice
-pause          -       pause                 pause
-poll           -       poll            3       poll
-s_getdents     getdents getdents       3       __getdents
-setrlimit      -       setrlimit       2       setrlimit
-settimeofday   -       settimeofday    2       __settimeofday  settimeofday
-signal         -       signal          2       signal
-stime          -       stime           1       stime
-time           -       time            1       time
-times          -       times           1       __times times
-ulimit         -       ulimit          2       ulimit
-utime          -       utime           2       utime
+alarm          -       alarm           i:i     alarm
+ftime          -       ftime           i:p     ftime
+nice           -       nice            i:i     nice
+pause          -       pause           i:      pause
+poll           -       poll            i:pii   poll
+s_getdents     getdents getdents       i:ipi   __getdents
+setrlimit      -       setrlimit       i:ip    setrlimit
+settimeofday   -       settimeofday    i:pp    __settimeofday  settimeofday
+signal         -       signal          i:ii    signal
+stime          -       stime           i:p     stime
+time           -       time            i:p     time
+times          -       times           i:p     __times times
+ulimit         -       ulimit          i:ii    ulimit
+utime          -       utime           i:pp    utime