mirror of
git://sourceware.org/git/glibc.git
synced 2025-01-18 12:16:13 +08:00
Update.
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.
This commit is contained in:
parent
2dd18ce2b2
commit
ce6e047fbb
28
ChangeLog
28
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.
|
||||
|
@ -208,6 +208,9 @@
|
||||
/* Defined of libidn is available. */
|
||||
#undef HAVE_LIBIDN
|
||||
|
||||
/* Define if inlined system calls are available. */
|
||||
#undef HAVE_INLINED_SYSCALLS
|
||||
|
||||
/*
|
||||
*/
|
||||
|
||||
|
@ -24,9 +24,11 @@
|
||||
/* 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)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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. */
|
||||
|
@ -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>
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
||||
@ -99,30 +99,30 @@
|
||||
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
|
||||
@ -373,7 +373,7 @@
|
||||
|
||||
#elif !defined __ASSEMBLER__
|
||||
|
||||
/* This code should never be used but we define it anyhow. */
|
||||
# define SINGLE_THREAD_P (1)
|
||||
# define NO_CANCELLATION 1
|
||||
|
||||
#endif
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
||||
@ -109,7 +109,7 @@
|
||||
|
||||
#elif !defined __ASSEMBLER__
|
||||
|
||||
/* This code should never be used but we define it anyhow. */
|
||||
# define SINGLE_THREAD_P (1)
|
||||
# define NO_CANCELLATION 1
|
||||
|
||||
#endif
|
||||
|
@ -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.
|
||||
|
||||
@ -109,7 +109,7 @@
|
||||
|
||||
#elif !defined __ASSEMBLER__
|
||||
|
||||
/* This code should never be used but we define it anyhow. */
|
||||
# define SINGLE_THREAD_P (1)
|
||||
# define NO_CANCELLATION 1
|
||||
|
||||
#endif
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -241,7 +241,7 @@
|
||||
|
||||
#elif !defined __ASSEMBLER__
|
||||
|
||||
/* This code should never be used but we define it anyhow. */
|
||||
# define SINGLE_THREAD_P (1)
|
||||
# define NO_CANCELLATION 1
|
||||
|
||||
#endif
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
38
sysdeps/generic/configure
vendored
38
sysdeps/generic/configure
vendored
@ -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
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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" \
|
||||
|
99
sysdeps/unix/common/configure
vendored
99
sysdeps/unix/common/configure
vendored
@ -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"
|
||||
/* confdefs.h. */
|
||||
_ACEOF
|
||||
cat confdefs.h >>conftest.$ac_ext
|
||||
cat >>conftest.$ac_ext <<_ACEOF
|
||||
/* end confdefs.h. */
|
||||
|
||||
#ifdef F77_DUMMY_MAIN
|
||||
# ifdef __cplusplus
|
||||
extern "C"
|
||||
# endif
|
||||
int F77_DUMMY_MAIN() { return 1; }
|
||||
#endif
|
||||
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"
|
||||
/* confdefs.h. */
|
||||
_ACEOF
|
||||
cat confdefs.h >>conftest.$ac_ext
|
||||
cat >>conftest.$ac_ext <<_ACEOF
|
||||
/* end confdefs.h. */
|
||||
|
||||
#ifdef F77_DUMMY_MAIN
|
||||
# ifdef __cplusplus
|
||||
extern "C"
|
||||
# endif
|
||||
int F77_DUMMY_MAIN() { return 1; }
|
||||
#endif
|
||||
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
|
||||
|
||||
|
38
sysdeps/unix/configure
vendored
38
sysdeps/unix/configure
vendored
@ -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
|
||||
|
8
sysdeps/unix/sysv/linux/configure
vendored
8
sysdeps/unix/sysv/linux/configure
vendored
@ -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
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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] == '/');
|
||||
|
@ -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;
|
||||
|
@ -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)
|
||||
|
@ -26,6 +26,9 @@
|
||||
|
||||
|
||||
int
|
||||
#ifdef NO_CANCELLATION
|
||||
static inline __attribute ((always_inline))
|
||||
#endif
|
||||
__fcntl_nocancel (int fd, int cmd, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user