This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
GNU C Library master sources branch, master, updated. glibc-2.15-1043-gc148749
- From: roland at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 24 May 2012 20:14:15 -0000
- Subject: GNU C Library master sources branch, master, updated. glibc-2.15-1043-gc148749
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".
The branch, master has been updated
via c14874927b499ddfdbb03745bb32bfc778b8595f (commit)
via d6c33fda03457ca8ca87a562fa2681af16ca4ea5 (commit)
from b5a2bbe6cceeaa558a5cb174417ab083b2dc549c (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=c14874927b499ddfdbb03745bb32bfc778b8595f
commit c14874927b499ddfdbb03745bb32bfc778b8595f
Author: Roland McGrath <roland@hack.frob.com>
Date: Tue May 22 16:00:50 2012 -0700
syscalls.list support for vDSO IFUNCs, use it for x32 gettimeofday and time.
diff --git a/ChangeLog b/ChangeLog
index 7c94fce..983ffe6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,18 @@
2012-05-24 Roland McGrath <roland@hack.frob.com>
+ * sysdeps/unix/sysv/linux/x86_64/x32/syscalls.list: New file.
+
+ * sysdeps/unix/make-syscalls.sh: Support "syscall:vdso_name@VDSOVER"
+ in the third column, to generate for the shared library an IFUNC
+ that uses _dl_vdso_vsym.
+ * Makerules (COMPILE.c, compile-stdin.c): New variables.
+ * Makeconfig (object-suffixes-noshared): New variable.
+
+ * sysdeps/unix/sysv/linux/dl-vdso.h (PREPARE_VERSION_KNOWN): New macro.
+ (VDSO_NAME_LINUX_2_6, VDSO_HASH_LINUX_2_6): New macros.
+ (VDSO_NAME_LINUX_2_6_15, VDSO_HASH_LINUX_2_6_15): New macros.
+ (VDSO_NAME_LINUX_2_6_29, VDSO_HASH_LINUX_2_6_29): New macros.
+
[BZ #14132]
* include/sys/time.h (__gettimeofday): Remove macro.
(__gettimeofday, gettimeofday): Add libc_hidden_proto.
diff --git a/Makeconfig b/Makeconfig
index 3a09764..b4b2963 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -720,6 +720,10 @@ CFLAGS-.op = -pg
libtype.op = lib%_p.a
endif
+# Convenience variable for when we want to treat shared-library cases
+# differently from the rest.
+object-suffixes-noshared := $(filter-out .os,$(object-suffixes))
+
bppfx = BP-
ifeq (yes,$(build-bounded))
# Under --enable-bounded, we build the library with `-fbounded-pointers -g'
diff --git a/Makerules b/Makerules
index 0fd1b5b..685b1b8 100644
--- a/Makerules
+++ b/Makerules
@@ -366,6 +366,7 @@ compile.c = $(CC) $< -c $(CFLAGS) $(CPPFLAGS)
compile.cc = $(CXX) $< -c $(CXXFLAGS) $(CPPFLAGS)
compile.S = $(CC) $< -c $(CPPFLAGS) $(S-CPPFLAGS) \
$(ASFLAGS) $(ASFLAGS-$(suffix $@))
+COMPILE.c = $(CC) -c $(CFLAGS) $(CPPFLAGS)
COMPILE.S = $(CC) -c $(CPPFLAGS) $(S-CPPFLAGS) \
$(ASFLAGS) $(ASFLAGS-$(suffix $@))
@@ -374,6 +375,9 @@ COMPILE.S = $(CC) -c $(CPPFLAGS) $(S-CPPFLAGS) \
# together. You can't compile the C library with such a compiler.
OUTPUT_OPTION = -o $@
+# This is the end of the pipeline for compiling generated C code.
+compile-stdin.c = $(COMPILE.c) -o $@ -x c - $(compile-mkdep-flags)
+
# We need the $(CFLAGS) to be in there to have the right predefines during
# the dependency run for C sources. But having it for assembly sources can
# get the wrong predefines.
diff --git a/sysdeps/unix/make-syscalls.sh b/sysdeps/unix/make-syscalls.sh
index 48aab62..cedce31 100644
--- a/sysdeps/unix/make-syscalls.sh
+++ b/sysdeps/unix/make-syscalls.sh
@@ -64,10 +64,67 @@ done`
# Any calls left?
test -n "$calls" || exit 0
+# This uses variables $weak and $strong.
+emit_weak_aliases()
+{
+ # A shortcoming in the current gas is that it will only allow one
+ # version-alias per symbol. So we create new strong aliases as needed.
+ vcount=""
+
+ for name in $weak; do
+ case $name in
+ *@@*)
+ base=`echo $name | sed 's/@@.*//'`
+ ver=`echo $name | sed 's/.*@@//'`
+ if test -z "$vcount" ; then
+ source=$strong
+ vcount=1
+ else
+ source="${strong}_${vcount}"
+ vcount=`expr $vcount + 1`
+ echo " echo 'strong_alias ($strong, $source)'; \\"
+ fi
+ echo " echo 'default_symbol_version($source, $base, $ver)'; \\"
+ ;;
+ *@*)
+ base=`echo $name | sed 's/@.*//'`
+ ver=`echo $name | sed 's/.*@//'`
+ if test -z "$vcount" ; then
+ source=$strong
+ vcount=1
+ else
+ source="${strong}_${vcount}"
+ vcount=`expr $vcount + 1`
+ echo " echo 'strong_alias ($strong, $source)'; \\"
+ fi
+ echo " echo 'symbol_version ($source, $base, $ver)'; \\"
+ ;;
+ !*)
+ name=`echo $name | sed 's/.//'`
+ echo " echo 'strong_alias ($strong, $name)'; \\"
+ echo " echo 'libc_hidden_def ($name)'; \\"
+ ;;
+ *)
+ echo " echo 'weak_alias ($strong, $name)'; \\"
+ echo " echo 'libc_hidden_weak ($name)'; \\"
+ ;;
+ esac
+ done
+}
+
+
# Emit rules to compile the syscalls remaining in $calls.
echo "$calls" |
while read file srcfile caller syscall args strong weak; do
+ vdso_syscall=
+ case x"$syscall" in
+ *:*@*)
+ vdso_syscall="${syscall#*:}"
+ syscall="${syscall%:*}"
+ ;;
+ esac
+
case x"$syscall" in
x-) callnum=_ ;;
*)
@@ -144,13 +201,14 @@ while read file srcfile caller syscall args strong weak; do
# Emit a compilation rule for this syscall.
if test $shared_only = t; then
# The versioned symbols are only in the shared library.
- echo "\
-shared-only-routines += $file
-\$(objpfx)${file}.os: \\"
+ echo "shared-only-routines += $file"
+ test -n "$vdso_syscall" || echo "\$(objpfx)${file}.os: \\"
else
+ object_suffixes='$(object-suffixes)'
+ test -z "$vdso_syscall" || object_suffixes='$(object-suffixes-noshared)'
echo "\
\$(foreach p,\$(sysd-rules-targets),\
-\$(foreach o,\$(object-suffixes),\$(objpfx)\$(patsubst %,\$p,$file)\$o)): \\"
+\$(foreach o,${object_suffixes},\$(objpfx)\$(patsubst %,\$p,$file)\$o)): \\"
fi
echo " \$(..)sysdeps/unix/make-syscalls.sh"
@@ -178,55 +236,43 @@ shared-only-routines += $file
esac
# Append any weak aliases or versions defined for this syscall function.
-
- # A shortcoming in the current gas is that it will only allow one
- # version-alias per symbol. So we create new strong aliases as needed.
- vcount=""
-
- for name in $weak; do
- case $name in
- *@@*)
- base=`echo $name | sed 's/@@.*//'`
- ver=`echo $name | sed 's/.*@@//'`
- if test -z "$vcount" ; then
- source=$strong
- vcount=1
- else
- source="${strong}_${vcount}"
- vcount=`expr $vcount + 1`
- echo " echo 'strong_alias ($strong, $source)'; \\"
- fi
- echo " echo 'default_symbol_version($source, $base, $ver)'; \\"
- ;;
- *@*)
- base=`echo $name | sed 's/@.*//'`
- ver=`echo $name | sed 's/.*@//'`
- if test -z "$vcount" ; then
- source=$strong
- vcount=1
- else
- source="${strong}_${vcount}"
- vcount=`expr $vcount + 1`
- echo " echo 'strong_alias ($strong, $source)'; \\"
- fi
- echo " echo 'symbol_version ($source, $base, $ver)'; \\"
- ;;
- !*)
- name=`echo $name | sed 's/.//'`
- echo " echo 'strong_alias ($strong, $name)'; \\"
- echo " echo 'libc_hidden_def ($name)'; \\"
- ;;
- *)
- echo " echo 'weak_alias ($strong, $name)'; \\"
- echo " echo 'libc_hidden_weak ($name)'; \\"
- ;;
- esac
- done
+ emit_weak_aliases
# And finally, pipe this all into the compiler.
echo ' ) | $(compile-syscall) '"\
\$(foreach p,\$(patsubst %$file,%,\$(basename \$(@F))),\$(\$(p)CPPFLAGS))"
+ if test -n "$vdso_syscall"; then
+ # In the shared library, we're going to emit an IFUNC using a vDSO function.
+ # $vdso_syscall looks like "name@KERNEL_X.Y" where "name" is the symbol
+ # name in the vDSO and KERNEL_X.Y is its symbol version.
+ vdso_symbol="${vdso_syscall%@*}"
+ vdso_symver="${vdso_syscall#*@}"
+ vdso_symver="${vdso_symver//./_}"
+ echo "\
+\$(foreach p,\$(sysd-rules-targets),\$(objpfx)\$(patsubst %,\$p,$file).os): \\
+ \$(..)sysdeps/unix/make-syscalls.sh\
+ \$(make-target-directory)
+ (echo '#include <dl-vdso.h>'; \\
+ echo 'extern void *${strong}_ifunc (void) __asm (\"${strong}\");'; \\
+ echo 'void *'; \\
+ echo '${strong}_ifunc (void)'; \\
+ echo '{'; \\
+ echo ' PREPARE_VERSION_KNOWN (symver, ${vdso_symver});'; \\
+ echo ' return _dl_vdso_vsym (\"${vdso_symbol}\", &symver);'; \\
+ echo '}'; \\
+ echo 'asm (\".type ${strong}, %gnu_indirect_function\");'; \\"
+ # This is doing "libc_hidden_def (${strong})", but the compiler
+ # doesn't know that we've defined ${strong} in the same file, so
+ # we can't do it the normal way.
+ echo "\
+ echo 'asm (\".globl __GI_${strong}\\n\"'; \\
+ echo ' \"__GI_${strong} = ${strong}\");'; \\"
+ emit_weak_aliases
+ echo ' ) | $(compile-stdin.c) '"\
+\$(foreach p,\$(patsubst %$file,%,\$(basename \$(@F))),\$(\$(p)CPPFLAGS))"
+ fi
+
if test $shared_only = t; then
# The versioned symbols are only in the shared library.
echo endif
diff --git a/sysdeps/unix/sysv/linux/dl-vdso.h b/sysdeps/unix/sysv/linux/dl-vdso.h
index c30671d..4149bac 100644
--- a/sysdeps/unix/sysv/linux/dl-vdso.h
+++ b/sysdeps/unix/sysv/linux/dl-vdso.h
@@ -33,6 +33,17 @@
/* We don't have a specific file where the symbol can be found. */ \
var.filename = NULL
+/* Use this for the known version sets defined below, where we
+ record their precomputed hash values only once, in this file. */
+#define PREPARE_VERSION_KNOWN(var, vname) \
+ PREPARE_VERSION (var, VDSO_NAME_##vname, VDSO_HASH_##vname)
+
+#define VDSO_NAME_LINUX_2_6 "LINUX_2.6"
+#define VDSO_HASH_LINUX_2_6 61765110
+#define VDSO_NAME_LINUX_2_6_15 "LINUX_2.6.15"
+#define VDSO_HASH_LINUX_2_6_15 123718565
+#define VDSO_NAME_LINUX_2_6_29 "LINUX_2.6.29"
+#define VDSO_HASH_LINUX_2_6_29 123718585
/* Functions for resolving symbols in the VDSO link map. */
extern void *_dl_vdso_vsym (const char *name,
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/syscalls.list b/sysdeps/unix/sysv/linux/x86_64/x32/syscalls.list
index 7edb6fd..2cc58af 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/syscalls.list
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/syscalls.list
@@ -1,6 +1,8 @@
# File name Caller Syscall name # args Strong name Weak names
fallocate - fallocate Ci:iiii fallocate fallocate64
+gettimeofday - gettimeofday:__vdso_gettimeofday@LINUX_2.6 i:pP __gettimeofday gettimeofday
posix_fadvise - fadvise64 Vi:iiii posix_fadvise posix_fadvise64
preadv - preadv Ci:ipii preadv preadv64
pwritev - pwritev Ci:ipii pwritev pwritev64
+time - time:__vdso_time@LINUX_2.6 Ei:P time
http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=d6c33fda03457ca8ca87a562fa2681af16ca4ea5
commit d6c33fda03457ca8ca87a562fa2681af16ca4ea5
Author: Roland McGrath <roland@hack.frob.com>
Date: Thu May 24 11:37:30 2012 -0700
Switch gettimeofday from INTUSE to libc_hidden_proto.
diff --git a/ChangeLog b/ChangeLog
index e81684e..7c94fce 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,23 @@
+2012-05-24 Roland McGrath <roland@hack.frob.com>
+
+ [BZ #14132]
+ * include/sys/time.h (__gettimeofday): Remove macro.
+ (__gettimeofday, gettimeofday): Add libc_hidden_proto.
+ * time/gettimeofday.c (__gettimeofday): Remove #undef.
+ Remove INTDEF.
+ (__gettimeofday): Add libc_hidden_def.
+ (gettimeofday): Add libc_hidden_weak.
+ * sysdeps/mach/gettimeofday.c: Likewise.
+ * sysdeps/posix/gettimeofday.c: Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/gettimeofday.c: Likewise.
+ * sysdeps/unix/sysv/linux/s390/gettimeofday.c: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/gettimeofday.c
+ (__gettimeofday_internal): Remove strong_alias.
+ (__gettimeofday): Add libc_hidden_def.
+ (gettimeofday): Add libc_hidden_weak.
+ * sysdeps/unix/syscalls.list (gettimeofday):
+ Remove __gettimeofday_internal alias.
+
2012-05-24 Daniel Jacobowitz <drow@false.org>
H.J. Lu <hongjiu.lu@intel.com>
@@ -535,7 +555,7 @@
* manual/install.texi (Configuring and compiling): Update
description about files modified in the source directory.
- * INSTALL: Regenerated.
+ * INSTALL: Regenerated.
2012-05-18 H.J. Lu <hongjiu.lu@intel.com>
diff --git a/include/sys/time.h b/include/sys/time.h
index d5de942..599e189 100644
--- a/include/sys/time.h
+++ b/include/sys/time.h
@@ -5,9 +5,8 @@
/* Now document the internal interfaces. */
extern int __gettimeofday (struct timeval *__tv,
struct timezone *__tz);
-extern int __gettimeofday_internal (struct timeval *__tv,
- struct timezone *__tz)
- attribute_hidden;
+libc_hidden_proto (__gettimeofday)
+libc_hidden_proto (gettimeofday)
extern int __settimeofday (const struct timeval *__tv,
const struct timezone *__tz)
attribute_hidden;
@@ -23,9 +22,5 @@ extern int __utimes (const char *__file, const struct timeval __tvp[2])
attribute_hidden;
extern int __futimes (int fd, const struct timeval tvp[2]) attribute_hidden;
-#ifndef NOT_IN_libc
-# define __gettimeofday(tv, tz) INTUSE(__gettimeofday) (tv, tz)
-#endif
-
#endif
#endif
diff --git a/sysdeps/mach/gettimeofday.c b/sysdeps/mach/gettimeofday.c
index 88dca8e..293a775 100644
--- a/sysdeps/mach/gettimeofday.c
+++ b/sysdeps/mach/gettimeofday.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,1992,1995-1997,2001,2002 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2012 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
@@ -20,8 +20,6 @@
#include <sys/time.h>
#include <mach.h>
-#undef __gettimeofday
-
/* Get the current time of day and timezone information,
putting it into *TV and *TZ. If TZ is NULL, *TZ is not filled.
Returns 0 on success, -1 on errors. */
@@ -42,6 +40,6 @@ __gettimeofday (tv, tz)
}
return 0;
}
-
-INTDEF(__gettimeofday)
+libc_hidden_def (__gettimeofday)
weak_alias (__gettimeofday, gettimeofday)
+libc_hidden_weak (gettimeofday)
diff --git a/sysdeps/posix/gettimeofday.c b/sysdeps/posix/gettimeofday.c
index 31b3dd3..1108ff0 100644
--- a/sysdeps/posix/gettimeofday.c
+++ b/sysdeps/posix/gettimeofday.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,1992,1994-1997,2002,2005 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2012 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
@@ -19,8 +19,6 @@
#include <time.h>
#include <sys/time.h>
-#undef __gettimeofday
-
/* Get the current time of day and timezone information,
putting it into *TV and *TZ. If TZ is NULL, *TZ is not filled.
Returns 0 on success, -1 on errors. */
@@ -66,6 +64,6 @@ __gettimeofday (tv, tz)
return 0;
}
-
-INTDEF(__gettimeofday)
+libc_hidden_def (__gettimeofday)
weak_alias (__gettimeofday, gettimeofday)
+libc_hidden_weak (gettimeofday)
diff --git a/sysdeps/unix/syscalls.list b/sysdeps/unix/syscalls.list
index 39c40ed..bd780f5 100644
--- a/sysdeps/unix/syscalls.list
+++ b/sysdeps/unix/syscalls.list
@@ -26,7 +26,7 @@ getpid - getpid Ei: __getpid getpid
getpriority - getpriority i:ii getpriority
getrlimit - getrlimit i:ip __getrlimit getrlimit
getrusage - getrusage i:ip __getrusage getrusage
-gettimeofday - gettimeofday i:PP __gettimeofday gettimeofday __gettimeofday_internal
+gettimeofday - gettimeofday i:pP __gettimeofday gettimeofday
getuid - getuid Ei: __getuid getuid
ioctl - ioctl i:iiI __ioctl ioctl
kill - kill i:ii __kill kill
diff --git a/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c b/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c
index b2ef2da..7376135 100644
--- a/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c
+++ b/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005 Free Software Foundation, Inc.
+/* Copyright (C) 2005-2012 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
@@ -22,7 +22,6 @@
#include <time.h>
#include <hp-timing.h>
-#undef __gettimeofday
#include <bits/libc-vdso.h>
/* Get the current time of day and timezone information,
@@ -36,6 +35,6 @@ __gettimeofday (tv, tz)
{
return INLINE_VSYSCALL (gettimeofday, 2, CHECK_1 (tv), CHECK_1 (tz));
}
-
-INTDEF (__gettimeofday)
+libc_hidden_def (__gettimeofday)
weak_alias (__gettimeofday, gettimeofday)
+libc_hidden_weak (gettimeofday)
diff --git a/sysdeps/unix/sysv/linux/s390/gettimeofday.c b/sysdeps/unix/sysv/linux/s390/gettimeofday.c
index 63faef8..efbf1e8 100644
--- a/sysdeps/unix/sysv/linux/s390/gettimeofday.c
+++ b/sysdeps/unix/sysv/linux/s390/gettimeofday.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008 Free Software Foundation, Inc.
+/* Copyright (C) 2008-2012 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
@@ -22,7 +22,6 @@
#include <time.h>
#include <hp-timing.h>
-#undef __gettimeofday
#include <bits/libc-vdso.h>
/* Get the current time of day and timezone information,
@@ -36,6 +35,6 @@ __gettimeofday (tv, tz)
{
return INLINE_VSYSCALL (gettimeofday, 2, CHECK_1 (tv), CHECK_1 (tz));
}
-
-INTDEF (__gettimeofday)
+libc_hidden_def (__gettimeofday)
weak_alias (__gettimeofday, gettimeofday)
+libc_hidden_weak (gettimeofday)
diff --git a/sysdeps/unix/sysv/linux/x86_64/gettimeofday.c b/sysdeps/unix/sysv/linux/x86_64/gettimeofday.c
index e41fddb..d52f938 100644
--- a/sysdeps/unix/sysv/linux/x86_64/gettimeofday.c
+++ b/sysdeps/unix/sysv/linux/x86_64/gettimeofday.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2007, 2011 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2012 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
@@ -15,13 +15,14 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#include <dl-vdso.h>
+#include <sys/time.h>
+#ifdef SHARED
-#define VSYSCALL_ADDR_vgettimeofday 0xffffffffff600000ul
+# include <dl-vdso.h>
+# define VSYSCALL_ADDR_vgettimeofday 0xffffffffff600000ul
-#ifdef SHARED
void *gettimeofday_ifunc (void) __asm__ ("__gettimeofday");
void *
@@ -33,9 +34,16 @@ gettimeofday_ifunc (void)
return (_dl_vdso_vsym ("__vdso_gettimeofday", &linux26)
?: (void *) VSYSCALL_ADDR_vgettimeofday);
}
-__asm (".type __gettimeofday, %gnu_indirect_function");
+asm (".type __gettimeofday, %gnu_indirect_function");
+
+/* This is doing "libc_hidden_def (__gettimeofday)" but the compiler won't
+ let us do it in C because it doesn't know we're defining __gettimeofday
+ here in this file. */
+asm (".globl __GI___gettimeofday\n"
+ "__GI___gettimeofday = __gettimeofday");
+
#else
-# include <sys/time.h>
+
# include <sysdep.h>
# include <errno.h>
@@ -44,7 +52,8 @@ __gettimeofday (struct timeval *tv, struct timezone *tz)
{
return INLINE_SYSCALL (gettimeofday, 2, tv, tz);
}
-#endif
+libc_hidden_def (__gettimeofday)
+#endif
weak_alias (__gettimeofday, gettimeofday)
-strong_alias (__gettimeofday, __gettimeofday_internal)
+libc_hidden_weak (gettimeofday)
diff --git a/time/gettimeofday.c b/time/gettimeofday.c
index cfe6549..7eb770c 100644
--- a/time/gettimeofday.c
+++ b/time/gettimeofday.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1995, 1996, 1997, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2012 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
@@ -18,8 +18,6 @@
#include <errno.h>
#include <sys/time.h>
-#undef __gettimeofday
-
/* Get the current time of day and timezone information,
putting it into *TV and *TZ. If TZ is NULL, *TZ is not filled.
Returns 0 on success, -1 on errors. */
@@ -31,8 +29,9 @@ __gettimeofday (tv, tz)
__set_errno (ENOSYS);
return -1;
}
-stub_warning (gettimeofday)
-
-INTDEF(__gettimeofday)
+libc_hidden_def (__gettimeofday)
weak_alias (__gettimeofday, gettimeofday)
+libc_hidden_weak (gettimeofday)
+
+stub_warning (gettimeofday)
#include <stub-tag.h>
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 35 +++++-
Makeconfig | 4 +
Makerules | 4 +
include/sys/time.h | 9 +-
sysdeps/mach/gettimeofday.c | 8 +-
sysdeps/posix/gettimeofday.c | 8 +-
sysdeps/unix/make-syscalls.sh | 142 ++++++++++++++--------
sysdeps/unix/syscalls.list | 2 +-
sysdeps/unix/sysv/linux/dl-vdso.h | 11 ++
sysdeps/unix/sysv/linux/powerpc/gettimeofday.c | 7 +-
sysdeps/unix/sysv/linux/s390/gettimeofday.c | 7 +-
sysdeps/unix/sysv/linux/x86_64/gettimeofday.c | 25 +++--
sysdeps/unix/sysv/linux/x86_64/x32/syscalls.list | 2 +
time/gettimeofday.c | 11 +-
14 files changed, 186 insertions(+), 89 deletions(-)
hooks/post-receive
--
GNU C Library master sources