]> sourceware.org Git - glibc.git/commitdiff
Update.
authorUlrich Drepper <drepper@redhat.com>
Tue, 6 Jul 2004 04:26:42 +0000 (04:26 +0000)
committerUlrich Drepper <drepper@redhat.com>
Tue, 6 Jul 2004 04:26:42 +0000 (04:26 +0000)
2004-07-05  Ulrich Drepper  <drepper@redhat.com>

* elf/dl-init.c: Don't define and use _dl_starting_up if
HAVE_INLINED_SYSCALLS is defined and the variable is not used.
* elf/dl-support.c: Likewise.
* elf/rtld.c: Likewise.
* elf/dl-misc.c (_dl_debug_vdprintf): Use writev syscall directly
if HAVE_INLINED_SYSCALLS is defined.
* sysdeps/powerpc/powerpc64/dl-machine.h: Don't rest _dl_starting_up
here.
* sysdeps/powerpc/powerpc32/dl-start.S: Likewise.
* sysdeps/unix/sysv/linux/configure.in: Define HAVE_INLINED_SYSCALLS.
* config.h.in: Add entry for HAVE_INLINED_SYSCALLS.

* sysdeps/posix/profil.c: If compiled for ld.so, omit code which
is needed to stop profiling.
* elf/dl-open.c (dl_open_worker): If a newly opened object is to be
profile make sure it cannot be unloaded.

* sysdeps/unix/sysv/linux/dl-origin.c: Inline readlink syscall.

* sysdeps/unix/sysv/linux/fcntl.c: If compiled without cancellation
support, make sure the helper function is inlined.
* sysdeps/unix/sysv/linux/pread.c: Likewise.
* sysdeps/unix/sysv/linux/pwrite.c: Likewise.
* sysdeps/unix/sysv/linux/i386/fcntl.c: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/fcntl.c: Likewise.

34 files changed:
ChangeLog
config.h.in
elf/dl-init.c
elf/dl-misc.c
elf/dl-open.c
elf/dl-profile.c
elf/dl-support.c
elf/rtld.c
nptl/ChangeLog
nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
nptl/sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h
nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
nptl/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
nptl/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
nptl/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h
nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h
nptl/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h
nptl/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h
sysdeps/generic/configure
sysdeps/posix/profil.c
sysdeps/powerpc/powerpc32/dl-start.S
sysdeps/powerpc/powerpc64/dl-machine.h
sysdeps/unix/common/configure
sysdeps/unix/configure
sysdeps/unix/sysv/linux/configure
sysdeps/unix/sysv/linux/configure.in
sysdeps/unix/sysv/linux/dl-origin.c
sysdeps/unix/sysv/linux/fcntl.c
sysdeps/unix/sysv/linux/i386/fcntl.c
sysdeps/unix/sysv/linux/powerpc/powerpc64/fcntl.c
sysdeps/unix/sysv/linux/pread.c
sysdeps/unix/sysv/linux/pwrite.c

index 44484f0f857702777b6fb15e0f9c417fa2d45060..95218d92522d8f6a3d1bebcf33d8177d113a4a92 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,31 @@
+2004-07-05  Ulrich Drepper  <drepper@redhat.com>
+
+       * elf/dl-init.c: Don't define and use _dl_starting_up if
+       HAVE_INLINED_SYSCALLS is defined and the variable is not used.
+       * elf/dl-support.c: Likewise.
+       * elf/rtld.c: Likewise.
+       * elf/dl-misc.c (_dl_debug_vdprintf): Use writev syscall directly
+       if HAVE_INLINED_SYSCALLS is defined.
+       * sysdeps/powerpc/powerpc64/dl-machine.h: Don't rest _dl_starting_up
+       here.
+       * sysdeps/powerpc/powerpc32/dl-start.S: Likewise.
+       * sysdeps/unix/sysv/linux/configure.in: Define HAVE_INLINED_SYSCALLS.
+       * config.h.in: Add entry for HAVE_INLINED_SYSCALLS.
+
+       * sysdeps/posix/profil.c: If compiled for ld.so, omit code which
+       is needed to stop profiling.
+       * elf/dl-open.c (dl_open_worker): If a newly opened object is to be
+       profile make sure it cannot be unloaded.
+
+       * sysdeps/unix/sysv/linux/dl-origin.c: Inline readlink syscall.
+
+       * sysdeps/unix/sysv/linux/fcntl.c: If compiled without cancellation
+       support, make sure the helper function is inlined.
+       * sysdeps/unix/sysv/linux/pread.c: Likewise.
+       * sysdeps/unix/sysv/linux/pwrite.c: Likewise.
+       * sysdeps/unix/sysv/linux/i386/fcntl.c: Likewise.
+       * sysdeps/unix/sysv/linux/powerpc/powerpc64/fcntl.c: Likewise.
+
 2004-07-05  Jakub Jelinek  <jakub@redhat.com>
 
        * include/string.h (ffs): Add libc_hidden_builtin_proto.
index 86b1e39a7e27afbeeafa5f39d5b0450b8c056eac..c02d691883f50babc897bbed721ad597cfa9ac5c 100644 (file)
 /* Defined of libidn is available.  */
 #undef HAVE_LIBIDN
 
+/* Define if inlined system calls are available.  */
+#undef HAVE_INLINED_SYSCALLS
+
 /*
 \f */
 
index c06c71bbeb4f251b54ef9cac4dae85ac3eb16ed3..e700dffb3a5f254f32eebfeb00cdb6a80606d3cc 100644 (file)
 /* Type of the initializer.  */
 typedef void (*init_t) (int, char **, char **);
 
+#ifndef HAVE_INLINED_SYSCALLS
 /* Flag, nonzero during startup phase.  */
 extern int _dl_starting_up;
 extern int _dl_starting_up_internal attribute_hidden;
+#endif
 
 
 static void
@@ -143,7 +145,9 @@ _dl_init (struct link_map *main_map, int argc, char **argv, char **env)
   r->r_state = RT_CONSISTENT;
   _dl_debug_state ();
 
+#ifndef HAVE_INLINED_SYSCALLS
   /* Finished starting up.  */
   INTUSE(_dl_starting_up) = 0;
+#endif
 }
 INTDEF (_dl_init)
index 41ef26131d03b879004caf4e4f75576ceb26334c..08d64956b8e203163acc1eb0f1bd1fad838bc339 100644 (file)
@@ -247,7 +247,7 @@ _dl_debug_vdprintf (int fd, int tag_p, const char *fmt, va_list arg)
     }
 
   /* Finally write the result.  */
-#ifdef INTERNAL_SYSCALL
+#ifdef HAVE_INLINED_SYSCALLS
   INTERNAL_SYSCALL_DECL (err);
   INTERNAL_SYSCALL (writev, err, 3, fd, &iov, niov);
 #elif RTLD_PRIVATE_ERRNO
index 70f2fb20bcf8116a8f7593ef2ff598c0c4695370..450024948ae3262cd59be375805a7fd6bd2ace8c 100644 (file)
@@ -297,8 +297,13 @@ dl_open_worker (void *a)
              GLRO(dl_relocate_object) (l, l->l_scope, 1, 1);
 
              if (old_profile_map == NULL && GL(dl_profile_map) != NULL)
-               /* We must prepare the profiling.  */
-               GLRO(dl_start_profile) ();
+               {
+                 /* We must prepare the profiling.  */
+                 GLRO(dl_start_profile) ();
+
+                 /* Prevent unloading the object.  */
+                 GL(dl_profile_map)->l_flags_1 |= DF_1_NODELETE;
+               }
            }
          else
 #endif
index 8afa8350c23b45fe9c4a27e1d4e13eada031515e..0a4aba1be53b957de4b045630500b2e61fc62b44 100644 (file)
@@ -358,7 +358,7 @@ _dl_start_profile (void)
       return;
     }
 
-  /* We don't need the file desriptor anymore.  */
+  /* We don't need the file descriptor anymore.  */
   __close (fd);
 
   /* Pointer to data after the header.  */
index 0b2d0243ded86d0d5aa1a5f1d6ed1076575a6aff..2b53770605b2b5a7f9ec03eef121d05624b6f880 100644 (file)
@@ -86,8 +86,10 @@ struct r_scope_elem *_dl_global_scope[2] = { &_dl_initial_searchlist, NULL };
    to be the global scope.  */
 struct r_scope_elem *_dl_main_searchlist = &_dl_initial_searchlist;
 
+#ifndef HAVE_INLINED_SYSCALLS
 /* Nonzero during startup.  */
 int _dl_starting_up = 1;
+#endif
 
 /* Get architecture specific initializer.  */
 #include <dl-procinfo.c>
index 2e7a9b6867a43c1068e5edd2ef502f3593ad03f5..3def0306e241d8722f507f913121408d60121467 100644 (file)
@@ -79,6 +79,7 @@ INTDEF(_dl_argv)
 /* Nonzero if we were run directly.  */
 unsigned int _dl_skip_args attribute_relro attribute_hidden;
 
+#ifndef HAVE_INLINED_SYSCALLS
 /* Set nonzero during loading and initialization of executable and
    libraries, cleared before the executable's entry point runs.  This
    must not be initialized to nonzero, because the unused dynamic
@@ -88,6 +89,7 @@ unsigned int _dl_skip_args attribute_relro attribute_hidden;
    never be called.  */
 int _dl_starting_up = 0;
 INTVARDEF(_dl_starting_up)
+#endif
 
 /* This is the structure which defines all variables global to ld.so
    (except those which cannot be added for some reason).  */
@@ -720,8 +722,10 @@ dl_main (const ElfW(Phdr) *phdr,
   /* Process the environment variable which control the behaviour.  */
   process_envvars (&mode);
 
+#ifndef HAVE_INLINED_SYSCALLS
   /* Set up a flag which tells we are just starting.  */
   INTUSE(_dl_starting_up) = 1;
+#endif
 
   if (*user_entry == (ElfW(Addr)) ENTRY_POINT)
     {
index ca178dffc5163847a3da9146905929027d00651c..f96550a97983881b5ca032d4af566766cd036022 100644 (file)
@@ -1,3 +1,20 @@
+2004-07-05  Ulrich Drepper  <drepper@redhat.com>
+
+       * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Define NO_CANCELLATION
+       if no cancellation support is needed.
+       * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h: Likewise.
+       * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h: Likewise.
+       * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h: Likewise.
+       * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h: Likewise.
+       * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h: Likewise.
+       * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h: Likewise.
+       * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h: Likewise.
+       * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h: Likewise.
+       * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h: Likewise.
+
+       * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Define __NR_futex
+       only if not already defined.
+
 2004-07-05  Jakub Jelinek  <jakub@redhat.com>
 
        * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h (lll_unlock): Use
index 0dead61c6a581ffa86ad8514a4ee0412986513e5..8142455781089fe9c52f45b3a057f22e113447fa 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Jakub Jelinek <jakub@redhat.com>, 2002.
 
   L(ENDFDE):                                                                 \
   .previous
 
-#ifdef SHARED
+# ifdef SHARED
 /* NUL-terminated augmentation string.  Note "z" means there is an
    augmentation value later on.  */
-# define AUGMENTATION_STRING .string "zR"
-# define AUGMENTATION_PARAM \
+#  define AUGMENTATION_STRING .string "zR"
+#  define AUGMENTATION_PARAM \
     /* Augmentation value length.  */                                        \
     .uleb128 1;                                                                      \
     /* Encoding: DW_EH_PE_pcrel + DW_EH_PE_sdata4.  */                       \
     .byte 0x1b;
-# define AUGMENTATION_PARAM_FDE \
+#  define AUGMENTATION_PARAM_FDE \
     /* No augmentation data.  */                                             \
     .uleb128 0;
-# define START_SYMBOL_REF(name) \
+#  define START_SYMBOL_REF(name) \
     /* PC-relative start address of the code.  */                            \
     .long L(name##START)-.
-#else
+# else
 /* No augmentation.  */
-# define AUGMENTATION_STRING .ascii "\0"
-# define AUGMENTATION_PARAM /* nothing */
-# define AUGMENTATION_PARAM_FDE /* nothing */
-# define START_SYMBOL_REF(name) \
+#  define AUGMENTATION_STRING .ascii "\0"
+#  define AUGMENTATION_PARAM /* nothing */
+#  define AUGMENTATION_PARAM_FDE /* nothing */
+#  define START_SYMBOL_REF(name) \
     /* Absolute start address of the code.  */                               \
     .long L(name##START)
-#endif
+# endif
 
 /* Callframe description for syscalls without parameters.  This is very
    simple.  The only place the stack pointer is changed is when the old
 
 #elif !defined __ASSEMBLER__
 
-/* This code should never be used but we define it anyhow.  */
 # define SINGLE_THREAD_P (1)
+# define NO_CANCELLATION 1
 
 #endif
index 619f28c4aabc278343a4a9c027507924e86db85a..63aaa96eb045dce1f5bfa02de2e0bb5752579f54 100644 (file)
@@ -216,7 +216,7 @@ __GC_##name:                                                                      \
 
 #elif !defined __ASSEMBLER__
 
-/* This code should never be used but we define it anyhow.  */
 # define SINGLE_THREAD_P (1)
+# define NO_CANCELLATION 1
 
 #endif
index ead89ba9314b5bc45dca7b7d9fdf50d84d4916e7..2bee000730397cbd0b096beea400979182c682d0 100644 (file)
@@ -26,7 +26,9 @@
 #include <atomic.h>
 
 
-#define __NR_futex             221
+#ifndef __NR_futex
+# define __NR_futex            221
+#endif
 #define FUTEX_WAIT             0
 #define FUTEX_WAKE             1
 #define FUTEX_REQUEUE          3
index 41e6af47495b7c91c463ed6d8896da6ad1585161..7f5ba4aeef954979ed3cb7daac5fbc741666c878 100644 (file)
@@ -1,5 +1,5 @@
 /* Cancellable system call stubs.  Linux/PowerPC version.
-   Copyright (C) 2003 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Franz Sirl <Franz.Sirl-kernel@lauterbach.com>, 2003.
 
 
 #elif !defined __ASSEMBLER__
 
-/* This code should never be used but we define it anyhow.  */
 # define SINGLE_THREAD_P (1)
+# define NO_CANCELLATION 1
 
 #endif
index c7fe41dea90b4ef1ee9ec78dbdb05dc536490514..aa993b9a586e959a91c43843009d59beafab5d76 100644 (file)
@@ -1,5 +1,5 @@
 /* Cancellable system call stubs.  Linux/PowerPC64 version.
-   Copyright (C) 2003 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Franz Sirl <Franz.Sirl-kernel@lauterbach.com>, 2003.
 
 
 #elif !defined __ASSEMBLER__
 
-/* This code should never be used but we define it anyhow.  */
 # define SINGLE_THREAD_P (1)
+# define NO_CANCELLATION 1
 
 #endif
index bbbd30b71fe39a886512a5c2aae037bfc6b7d82b..09dac2c90b2df0785c32d5b5bdd553a71885d5d0 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2003, 2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
 
@@ -109,7 +109,7 @@ L(pseudo_end):
 
 #elif !defined __ASSEMBLER__
 
-/* This code should never be used but we define it anyhow.  */
 # define SINGLE_THREAD_P (1)
+# define NO_CANCELLATION 1
 
 #endif
index 2daf5944e42e8feac5cf79ac29dfcebdda459fee..f8eb6a9ebcdab39d0d1fc47f5af1888b3963c79e 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2003, 2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
 
@@ -122,7 +122,7 @@ extern int __local_multiple_threads attribute_hidden;
 
 #elif !defined __ASSEMBLER__
 
-/* This code should never be used but we define it anyhow.  */
 # define SINGLE_THREAD_P (1)
+# define NO_CANCELLATION 1
 
 #endif
index 581046c007a516506c8343de1a5ae7aa75a439ce..fc3c2340b6055d6320205d9427363906ebffa082 100644 (file)
 
 #elif !defined __ASSEMBLER__
 
-/* This code should never be used but we define it anyhow.  */
 # define SINGLE_THREAD_P (1)
+# define NO_CANCELLATION 1
 
 #endif
index 193f21013c8028c04f381162c0d596e51955b8a8..5edf4b3772f11773c612ba93f48745570884adc3 100644 (file)
@@ -107,7 +107,7 @@ SYSCALL_ERROR_HANDLER_ENTRY(__syscall_error_handler2)                             \
 
 #elif !defined __ASSEMBLER__
 
-/* This code should never be used but we define it anyhow.  */
 # define SINGLE_THREAD_P (1)
+# define NO_CANCELLATION 1
 
 #endif
index cc2c2e95ebea55bf9abeb7926bc709e8f970a5f5..d8c65aeffdc9d93545145b7bbabf225f47bdd812 100644 (file)
@@ -101,7 +101,7 @@ SYSCALL_ERROR_HANDLER_ENTRY(__syscall_error_handler2)                             \
 
 #elif !defined __ASSEMBLER__
 
-/* This code should never be used but we define it anyhow.  */
 # define SINGLE_THREAD_P (1)
+# define NO_CANCELLATION 1
 
 #endif
index f8d726ddd8c48c7a11ea0a4b99b302310d6f10dd..d47c1b80dcd296d57f77445d286a5a2d2ef79c3e 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Jakub Jelinek <jakub@redhat.com>, 2002.
 
@@ -132,7 +132,7 @@ extern int __local_multiple_threads attribute_hidden;
 
 #elif !defined __ASSEMBLER__
 
-/* This code should never be used but we define it anyhow.  */
 # define SINGLE_THREAD_P (1)
+# define NO_CANCELLATION 1
 
 #endif
index a01e019ec4577d100e846f2a36ce9dacd0288dbd..47f9ec0d5e734279127f0c3b1cdce36d49992d2a 100755 (executable)
@@ -13,15 +13,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
 /* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.  */
-#include <assert.h>
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
 extern "C"
@@ -45,18 +58,28 @@ char (*f) () = $ac_func;
 int
 main ()
 {
-
+return f != $ac_func;
   ;
   return 0;
 }
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -69,7 +92,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 eval "$as_ac_var=no"
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
index d789c121cd16e4324264e2bd21ec7f56a3ee08f5..3c2e1dfa07f91ecab2631cb06be9b28a139db46a 100644 (file)
@@ -1,5 +1,5 @@
 /* Low-level statistical profiling support function.  Mostly POSIX.1 version.
-   Copyright (C) 1996,97,98,2002 Free Software Foundation, Inc.
+   Copyright (C) 1996,97,98,2002, 2004 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
@@ -62,10 +62,13 @@ profil_count (void *pc)
 int
 __profil (u_short *sample_buffer, size_t size, size_t offset, u_int scale)
 {
-  static struct sigaction oact;
-  static struct itimerval otimer;
   struct sigaction act;
   struct itimerval timer;
+#ifndef IS_IN_rtld
+  static struct sigaction oact;
+  static struct itimerval otimer;
+# define oact_ptr &oact
+# define otimer_ptr &otimer
 
   if (sample_buffer == NULL)
     {
@@ -88,6 +91,12 @@ __profil (u_short *sample_buffer, size_t size, size_t offset, u_int scale)
          || __sigaction (SIGPROF, &oact, NULL) < 0)
        return -1;
     }
+#else
+ /* In ld.so profiling should never be disabled once it runs.  */
+ //assert (sample_buffer != NULL);
+# define oact_ptr NULL
+# define otimer_ptr NULL
+#endif
 
   samples = sample_buffer;
   nsamples = size / sizeof *samples;
@@ -97,13 +106,13 @@ __profil (u_short *sample_buffer, size_t size, size_t offset, u_int scale)
   act.sa_handler = (sighandler_t) &profil_counter;
   act.sa_flags = SA_RESTART;
   __sigfillset (&act.sa_mask);
-  if (__sigaction (SIGPROF, &act, &oact) < 0)
+  if (__sigaction (SIGPROF, &act, oact_ptr) < 0)
     return -1;
 
   timer.it_value.tv_sec = 0;
   timer.it_value.tv_usec = 1;
   timer.it_interval = timer.it_value;
-  return __setitimer (ITIMER_PROF, &timer, &otimer);
+  return __setitimer (ITIMER_PROF, &timer, otimer_ptr);
 }
 weak_alias (__profil, profil)
 
index 527982bfdfde4d3cf4d7ace538966d3bb21018d9..d72202d4a4c62ad1b687807054ed013a210492e3 100644 (file)
@@ -1,5 +1,5 @@
 /* Machine-dependent ELF startup code.  PowerPC version.
-   Copyright (C) 1995-2000, 2002 Free Software Foundation, Inc.
+   Copyright (C) 1995-2000, 2002, 2004 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
@@ -83,7 +83,6 @@ ENTRY(_dl_start_user)
        lwz     r7,_dl_fini@got(r31)
 /* Now, call the start function in r30... */
        mtctr   r30
-       lwz     r26,_dl_starting_up@got(r31)
 /* Pass the stack pointer in r1 (so far so good), pointing to a NULL value.
    (This lets our startup code distinguish between a program linked statically,
    which linux will call with argc on top of the stack which will hopefully
@@ -98,8 +97,6 @@ ENTRY(_dl_start_user)
        stw     r31,4(r1)
        stw     r31,8(r1)
        stw     r31,12(r1)
-/* Clear _dl_starting_up.  */
-       stw     r31,0(r26)
 /* Go do it!  */
        bctr
 END(_start)
index 3edbadf6a49103120afc8ec118f68de86d062ad0..2a090ec96e23679eb8f6de65533dd4d1de120aca 100644 (file)
@@ -194,6 +194,15 @@ elf_machine_dynamic (void)
   strong_alias (_dl_runtime_resolve, _dl_profile_resolve);
 #endif
 
+#ifdef HAVE_INLINED_SYSCALLS
+/* We do not need _dl_starting_up.  */
+# define DL_STARTING_UP_DEF
+#else
+# define DL_STARTING_UP_DEF \
+".LC__dl_starting_up:\n"  \
+"      .tc _dl_starting_up_internal[TC],_dl_starting_up_internal\n"
+#endif
+
 
 /* Initial entry point code for the dynamic linker.  The C function
    `_dl_start' is the real entry point; its return value is the user
@@ -239,17 +248,16 @@ elf_machine_dynamic (void)
 "_dl_start_user:\n"                                                    \
 "      .quad   ._dl_start_user, .TOC.@tocbase, 0\n"                    \
 "      .previous\n"                                                    \
-"      .section        \".toc\",\"aw\"\n"  \
-".LC__dl_starting_up:\n"  \
-"      .tc _dl_starting_up_internal[TC],_dl_starting_up_internal\n"  \
-".LC__rtld_global:\n"  \
-"      .tc _rtld_global[TC],_rtld_global\n"  \
-".LC__dl_argc:\n"  \
-"      .tc _dl_argc[TC],_dl_argc\n"  \
-".LC__dl_argv:\n"  \
-"      .tc _dl_argv_internal[TC],_dl_argv_internal\n"  \
-".LC__dl_fini:\n"  \
-"      .tc _dl_fini[TC],_dl_fini\n"  \
+"      .section        \".toc\",\"aw\"\n"                              \
+DL_STARTING_UP_DEF                                                     \
+".LC__rtld_global:\n"                                                  \
+"      .tc _rtld_global[TC],_rtld_global\n"                            \
+".LC__dl_argc:\n"                                                      \
+"      .tc _dl_argc[TC],_dl_argc\n"                                    \
+".LC__dl_argv:\n"                                                      \
+"      .tc _dl_argv_internal[TC],_dl_argv_internal\n"                  \
+".LC__dl_fini:\n"                                                      \
+"      .tc _dl_fini[TC],_dl_fini\n"                                    \
 "      .previous\n"                                                    \
 "      .globl  ._dl_start_user\n"                                      \
 "      .type   ._dl_start_user,@function\n"                            \
@@ -291,8 +299,7 @@ elf_machine_dynamic (void)
 "      addi    6,6,8\n"                                                \
 /* Pass a termination function pointer (in this case _dl_fini) in      \
    r7.  */                                                             \
-"      ld      7,.LC__dl_fini@toc(2)\n"                                        \
-"      ld      26,.LC__dl_starting_up@toc(2)\n"                                \
+"      ld      7,.LC__dl_fini@toc(2)\n"                                \
 /* Pass the stack pointer in r1 (so far so good), pointing to a NULL   \
    value.  This lets our startup code distinguish between a program    \
    linked statically, which linux will call with argc on top of the    \
@@ -307,8 +314,6 @@ elf_machine_dynamic (void)
 "      std     31,8(1)\n"                                              \
 "      std     31,16(1)\n"                                             \
 "      std     31,24(1)\n"                                             \
-/* Clear _dl_starting_up.  */                                          \
-"      stw     31,0(26)\n"                                             \
 /* Now, call the start function descriptor at r30...  */               \
 "      .globl  ._dl_main_dispatch\n"  \
 "._dl_main_dispatch:\n"  \
index 9112edee3344bd731d6e28436803a5460af52046..7bbc9cb2e520d499632e453f038be4fafcf3c751 100755 (executable)
@@ -10,15 +10,12 @@ if test "${ac_cv_check_symbol_sys_siglist+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
-#include "confdefs.h"
-
-#ifdef F77_DUMMY_MAIN
-#  ifdef __cplusplus
-     extern "C"
-#  endif
-   int F77_DUMMY_MAIN() { return 1; }
-#endif
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
 int
 main ()
 {
@@ -29,11 +26,21 @@ extern char *sys_siglist[]; puts(*sys_siglist);
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -42,10 +49,12 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
            ac_cv_check_symbol_sys_siglist=yes
 else
   echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
 ac_cv_check_symbol_sys_siglist=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 fi
 
 if test "$ac_cv_check_symbol_sys_siglist" = yes; then
@@ -63,15 +72,12 @@ if test "${ac_cv_check_symbol__sys_siglist+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
-#include "confdefs.h"
-
-#ifdef F77_DUMMY_MAIN
-#  ifdef __cplusplus
-     extern "C"
-#  endif
-   int F77_DUMMY_MAIN() { return 1; }
-#endif
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
 int
 main ()
 {
@@ -82,11 +88,21 @@ extern char *_sys_siglist[]; puts(*_sys_siglist);
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -95,10 +111,12 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
            ac_cv_check_symbol__sys_siglist=yes
 else
   echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
 ac_cv_check_symbol__sys_siglist=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 fi
 
 if test "$ac_cv_check_symbol__sys_siglist" = yes; then
@@ -120,15 +138,12 @@ if test "${libc_cv_ctype_glue+set}" = set; then
 else
   for ctype in _ctype_ __ctype_ __ctype _ctype__ _ctype _locp; do
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
-#include "confdefs.h"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
 #include <ctype.h>
-#ifdef F77_DUMMY_MAIN
-#  ifdef __cplusplus
-     extern "C"
-#  endif
-   int F77_DUMMY_MAIN() { return 1; }
-#endif
 int
 main ()
 {
@@ -139,11 +154,21 @@ $ctype[13];
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -152,9 +177,11 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   libc_cv_ctype_glue="$ctype"; break
 else
   echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 done
 fi
 
index 75dc5896a0322023a100391bc98354390d325742..b910353cd941f18453040ee62e425e07c5ee708a 100755 (executable)
@@ -14,15 +14,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
 /* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.  */
-#include <assert.h>
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
 extern "C"
@@ -46,18 +59,28 @@ char (*f) () = $ac_func;
 int
 main ()
 {
-
+return f != $ac_func;
   ;
   return 0;
 }
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -70,7 +93,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 eval "$as_ac_var=no"
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
index 89484200ce610aa0f54a3c0881e1f24668b6d06b..d0591433962fb8c54d194ec540715e8ff605be33 100644 (file)
@@ -43,7 +43,6 @@ if test "${libc_cv_linux2010+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -172,7 +171,6 @@ echo $ECHO_N "checking for kernel header at least $minimum_kernel... $ECHO_C" >&
   decnum=`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/(\1 * 65536 + \2 * 256 + \3)/'`;
   abinum=`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1,\2,\3/'`;
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -379,3 +377,9 @@ ${ac_prefix}/include directory out of the way." >&2;}
 echo "${ECHO_T}ok" >&6
   fi
 fi
+
+# We have inlined syscalls.
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_INLINED_SYSCALLS 1
+_ACEOF
+
index f0a7fb123133485c84aa88f1745915ea1a178481..e3fccb4c9bd33f28a57f640199d172186fc67fc1 100644 (file)
@@ -305,3 +305,6 @@ ${ac_prefix}/include directory out of the way.])
     AC_MSG_RESULT(ok)
   fi
 fi
+
+# We have inlined syscalls.
+AC_DEFINE(HAVE_INLINED_SYSCALLS)
index f7512340a13b19eef9e7fb875e5caa97ad5bbc7f..a7fa53ea1d88230d89c00b42fe6e14b1e14244a1 100644 (file)
@@ -24,6 +24,7 @@
 #include <unistd.h>
 #include <sys/param.h>
 #include <ldsodefs.h>
+#include <sysdep.h>
 
 #include <dl-dst.h>
 
@@ -37,9 +38,11 @@ _dl_get_origin (void)
   char linkval[PATH_MAX];
   char *result;
   int len;
+  INTERNAL_SYSCALL_DECL (err);
 
-  if ((len = __readlink ("/proc/self/exe", linkval, sizeof (linkval))) > 0
-      && linkval[0] != '[')
+  len = INTERNAL_SYSCALL (readlink, err, 3, "/proc/self/exe", linkval,
+                         sizeof (linkval));
+  if (! INTERNAL_SYSCALL_ERROR_P (len, err) && len > 0 && linkval[0] != '[')
     {
       /* We can use this value.  */
       assert (linkval[0] == '/');
index a6793bc526b76286c6832fd85bcfc70a04b5300f..ab8d9cfb9cd0f17540ac7bff510aaa9f779367d2 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2002, 2003, 2004 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
@@ -26,6 +26,9 @@
 
 
 int
+#ifdef NO_CANCELLATION
+static inline __attribute ((always_inline))
+#endif
 __fcntl_nocancel (int fd, int cmd, ...)
 {
   va_list ap;
index f47d98e6bfc13763f3df610365833568e4149cc7..2b3db38e53471bb2a5515c430878870366852625 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2002, 2003, 2004 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
@@ -32,6 +32,9 @@ int __have_no_fcntl64;
 
 
 int
+#ifdef NO_CANCELLATION
+static inline __attribute ((always_inline))
+#endif
 __fcntl_nocancel (int fd, int cmd, ...)
 {
   va_list ap;
@@ -65,16 +68,15 @@ __fcntl_nocancel (int fd, int cmd, ...)
        /* Check if we can represent the values with the smaller type.  */
        if ((off64_t) fl.l_start != fl64->l_start)
          {
+         eoverflow:
            __set_errno (EOVERFLOW);
            return -1;
          }
        fl.l_len = (off_t) fl64->l_len;
        /* Check if we can represent the values with the smaller type.  */
        if ((off64_t) fl.l_len != fl64->l_len)
-         {
-           __set_errno (EOVERFLOW);
-           return -1;
-         }
+         goto eoverflow:
+
        fl.l_type = fl64->l_type;
        fl.l_whence = fl64->l_whence;
        fl.l_pid = fl64->l_pid;
@@ -101,10 +103,8 @@ __fcntl_nocancel (int fd, int cmd, ...)
        fl.l_start = (off_t) fl64->l_start;
        /* Check if we can represent the values with the smaller type.  */
        if ((off64_t) fl.l_start != fl64->l_start)
-         {
-           __set_errno (EOVERFLOW);
-           return -1;
-         }
+         goto eoverflow:
+
        fl.l_len = (off_t)fl64->l_len;
        /* Check if we can represent the values with the smaller type.  */
        if ((off64_t) fl.l_len != fl64->l_len)
index f629a35fb4cf50b5cd931aec5776e6f34054b311..4b60a163cefbe8b66d3a41b0ae3e21f0ffa81ecb 100644 (file)
@@ -26,6 +26,9 @@
 
 
 int
+#ifdef NO_CANCELLATION
+static inline __attribute ((always_inline))
+#endif
 __fcntl_nocancel (int fd, int cmd, ...)
 {
   va_list ap;
index 9e17f1f91681bc1c5e0f68da7bcc8e25cc41e5da..90057f3f40ff3034540571f350b4301f71c6c6bc 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997,1998,1999,2000,2002,2003 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2000,2002,2003,2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
@@ -44,6 +44,9 @@ static ssize_t __emulate_pread (int fd, void *buf, size_t count,
 
 
 static ssize_t
+#ifdef NO_CANCELLATION
+inline __attribute ((always_inline))
+#endif
 do_pread (int fd, void *buf, size_t count, off_t offset)
 {
   ssize_t result;
index 35b62317084ae3177bbc6b6ba5ff45d68e8acc14..f4eb2f55442170782773ca845732201e1a7911f5 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997,1998,1999,2000,2002,2003 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2000,2002,2003,2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
@@ -44,6 +44,9 @@ static ssize_t __emulate_pwrite (int fd, const void *buf, size_t count,
 
 
 static ssize_t
+#ifdef NO_CANCELLATION
+inline __attribute ((always_inline))
+#endif
 do_pwrite (int fd, const void *buf, size_t count, off_t offset)
 {
   ssize_t result;
This page took 0.092831 seconds and 5 git commands to generate.