Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 580461 Details for
Bug 795896
[RFE] [RHEL 5.9 FEAT] Kernel VDSO support - glibc part
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
glibc-s390-vdso.patch
glibc-s390-vdso.patch (text/plain), 21.00 KB, created by
IBM Bug Proxy
on 2012-04-26 12:40:58 UTC
(
hide
)
Description:
glibc-s390-vdso.patch
Filename:
MIME Type:
Creator:
IBM Bug Proxy
Created:
2012-04-26 12:40:58 UTC
Size:
21.00 KB
patch
obsolete
>diff -urpN glibc-2.5-20061008T1257/sysdeps/unix/sysv/linux/init-first.c glibc-2.5-20061008T1257-vdso/sysdeps/unix/sysv/linux/init-first.c >--- glibc-2.5-20061008T1257/sysdeps/unix/sysv/linux/init-first.c 2005-01-07 20:21:52.000000000 +0100 >+++ glibc-2.5-20061008T1257-vdso/sysdeps/unix/sysv/linux/init-first.c 2011-12-21 18:46:26.000000000 +0100 >@@ -82,6 +82,10 @@ _init (int argc, char **argv, char **env > _dl_non_dynamic_init (); > #endif > >+#ifdef VDSO_SETUP >+ VDSO_SETUP (); >+#endif >+ > __init_misc (argc, argv, envp); > > #ifdef USE_NONOPTION_FLAGS >diff -urpN glibc-2.5-20061008T1257/sysdeps/unix/sysv/linux/s390/bits/libc-vdso.h glibc-2.5-20061008T1257-vdso/sysdeps/unix/sysv/linux/s390/bits/libc-vdso.h >--- glibc-2.5-20061008T1257/sysdeps/unix/sysv/linux/s390/bits/libc-vdso.h 1970-01-01 01:00:00.000000000 +0100 >+++ glibc-2.5-20061008T1257-vdso/sysdeps/unix/sysv/linux/s390/bits/libc-vdso.h 2011-12-21 18:46:26.000000000 +0100 >@@ -0,0 +1,35 @@ >+/* Resolve function pointers to VDSO functions. >+ Copyright (C) 2008 Free Software Foundation, Inc. >+ This file is part of the GNU C Library. >+ >+ The GNU C Library is free software; you can redistribute it and/or >+ modify it under the terms of the GNU Lesser General Public >+ License as published by the Free Software Foundation; either >+ version 2.1 of the License, or (at your option) any later version. >+ >+ The GNU C Library is distributed in the hope that it will be useful, >+ but WITHOUT ANY WARRANTY; without even the implied warranty of >+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ Lesser General Public License for more details. >+ >+ You should have received a copy of the GNU Lesser General Public >+ License along with the GNU C Library; if not, write to the Free >+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA >+ 02111-1307 USA. */ >+ >+ >+#ifndef _LIBC_VDSO_H >+#define _LIBC_VDSO_H >+ >+#ifdef SHARED >+ >+extern long int (*__vdso_gettimeofday) (struct timeval *, void *) >+ attribute_hidden; >+ >+extern long int (*__vdso_clock_gettime) (clockid_t, struct timespec *); >+ >+extern long int (*__vdso_clock_getres) (clockid_t, struct timespec *); >+ >+#endif >+ >+#endif /* _LIBC_VDSO_H */ >diff -urpN glibc-2.5-20061008T1257/sysdeps/unix/sysv/linux/s390/dl-vdso.c glibc-2.5-20061008T1257-vdso/sysdeps/unix/sysv/linux/s390/dl-vdso.c >--- glibc-2.5-20061008T1257/sysdeps/unix/sysv/linux/s390/dl-vdso.c 1970-01-01 01:00:00.000000000 +0100 >+++ glibc-2.5-20061008T1257-vdso/sysdeps/unix/sysv/linux/s390/dl-vdso.c 2011-12-21 18:46:26.000000000 +0100 >@@ -0,0 +1,50 @@ >+/* ELF symbol resolve functions for VDSO objects. >+ Copyright (C) 2005, 2007 Free Software Foundation, Inc. >+ This file is part of the GNU C Library. >+ >+ The GNU C Library is free software; you can redistribute it and/or >+ modify it under the terms of the GNU Lesser General Public >+ License as published by the Free Software Foundation; either >+ version 2.1 of the License, or (at your option) any later version. >+ >+ The GNU C Library is distributed in the hope that it will be useful, >+ but WITHOUT ANY WARRANTY; without even the implied warranty of >+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ Lesser General Public License for more details. >+ >+ You should have received a copy of the GNU Lesser General Public >+ License along with the GNU C Library; if not, write to the Free >+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA >+ 02111-1307 USA. */ >+ >+#include "config.h" >+#include <ldsodefs.h> >+ >+ >+void * >+internal_function >+_dl_vdso_vsym (const char *name, const struct r_found_version *vers) >+{ >+ struct link_map *map = GLRO (dl_sysinfo_map); >+ void *value = NULL; >+ >+ >+ if (map != NULL) >+ { >+ /* Use a WEAK REF so we don't error out if the symbol is not found. */ >+ ElfW (Sym) wsym; >+ memset (&wsym, 0, sizeof (ElfW (Sym))); >+ wsym.st_info = (unsigned char) ELFW (ST_INFO (STB_WEAK, STT_NOTYPE)); >+ >+ /* Search the scope of the vdso map. */ >+ const ElfW (Sym) *ref = &wsym; >+ lookup_t result = GLRO (dl_lookup_symbol_x) (name, map, &ref, >+ map->l_local_scope, >+ vers, 0, 0, NULL); >+ >+ if (ref != NULL) >+ value = DL_SYMBOL_ADDRESS (result, ref); >+ } >+ >+ return value; >+} >diff -urpN glibc-2.5-20061008T1257/sysdeps/unix/sysv/linux/s390/dl-vdso.h glibc-2.5-20061008T1257-vdso/sysdeps/unix/sysv/linux/s390/dl-vdso.h >--- glibc-2.5-20061008T1257/sysdeps/unix/sysv/linux/s390/dl-vdso.h 1970-01-01 01:00:00.000000000 +0100 >+++ glibc-2.5-20061008T1257-vdso/sysdeps/unix/sysv/linux/s390/dl-vdso.h 2011-12-21 18:46:26.000000000 +0100 >@@ -0,0 +1,49 @@ >+/* ELF symbol resolve functions for VDSO objects. >+ Copyright (C) 2005, 2007 Free Software Foundation, Inc. >+ This file is part of the GNU C Library. >+ >+ The GNU C Library is free software; you can redistribute it and/or >+ modify it under the terms of the GNU Lesser General Public >+ License as published by the Free Software Foundation; either >+ version 2.1 of the License, or (at your option) any later version. >+ >+ The GNU C Library is distributed in the hope that it will be useful, >+ but WITHOUT ANY WARRANTY; without even the implied warranty of >+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ Lesser General Public License for more details. >+ >+ You should have received a copy of the GNU Lesser General Public >+ License along with the GNU C Library; if not, write to the Free >+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA >+ 02111-1307 USA. */ >+ >+#ifndef _DL_VDSO_H >+#define _DL_VDSO_H 1 >+ >+#include <assert.h> >+#include <ldsodefs.h> >+ >+#ifdef NDEBUG >+# define CHECK_HASH(var) do {} while (0) >+#else >+# include <dl-hash.h> >+# define CHECK_HASH(var) assert (var.hash == _dl_elf_hash (var.name)) >+#endif >+ >+/* Create version number record for lookup. */ >+#define PREPARE_VERSION(var, vname, vhash) \ >+ struct r_found_version var; \ >+ var.name = vname; \ >+ var.hidden = 1; \ >+ var.hash = vhash; \ >+ CHECK_HASH (var); \ >+ /* We don't have a specific file where the symbol can be found. */ \ >+ var.filename = NULL >+ >+ >+/* Functions for resolving symbols in the VDSO link map. */ >+extern void *_dl_vdso_vsym (const char *name, >+ const struct r_found_version *version) >+ internal_function attribute_hidden; >+ >+#endif /* dl-vdso.h */ >diff -urpN glibc-2.5-20061008T1257/sysdeps/unix/sysv/linux/s390/gettimeofday.c glibc-2.5-20061008T1257-vdso/sysdeps/unix/sysv/linux/s390/gettimeofday.c >--- glibc-2.5-20061008T1257/sysdeps/unix/sysv/linux/s390/gettimeofday.c 1970-01-01 01:00:00.000000000 +0100 >+++ glibc-2.5-20061008T1257-vdso/sysdeps/unix/sysv/linux/s390/gettimeofday.c 2011-12-21 18:46:26.000000000 +0100 >@@ -0,0 +1,42 @@ >+/* Copyright (C) 2008 Free Software Foundation, Inc. >+ This file is part of the GNU C Library. >+ >+ The GNU C Library is free software; you can redistribute it and/or >+ modify it under the terms of the GNU Lesser General Public >+ License as published by the Free Software Foundation; either >+ version 2.1 of the License, or (at your option) any later version. >+ >+ The GNU C Library is distributed in the hope that it will be useful, >+ but WITHOUT ANY WARRANTY; without even the implied warranty of >+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ Lesser General Public License for more details. >+ >+ You should have received a copy of the GNU Lesser General Public >+ License along with the GNU C Library; if not, write to the Free >+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA >+ 02111-1307 USA. */ >+ >+#include <sysdep.h> >+#include <bp-checks.h> >+#include <stddef.h> >+#include <sys/time.h> >+#include <time.h> >+#include <hp-timing.h> >+ >+#undef __gettimeofday >+#include <bits/libc-vdso.h> >+ >+/* 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. */ >+ >+int >+__gettimeofday (tv, tz) >+ struct timeval *tv; >+ struct timezone *tz; >+{ >+ return INLINE_VSYSCALL (gettimeofday, 2, CHECK_1 (tv), CHECK_1 (tz)); >+} >+ >+INTDEF (__gettimeofday) >+weak_alias (__gettimeofday, gettimeofday) >diff -urpN glibc-2.5-20061008T1257/sysdeps/unix/sysv/linux/s390/init-first.c glibc-2.5-20061008T1257-vdso/sysdeps/unix/sysv/linux/s390/init-first.c >--- glibc-2.5-20061008T1257/sysdeps/unix/sysv/linux/s390/init-first.c 1970-01-01 01:00:00.000000000 +0100 >+++ glibc-2.5-20061008T1257-vdso/sysdeps/unix/sysv/linux/s390/init-first.c 2011-12-21 18:46:26.000000000 +0100 >@@ -0,0 +1,50 @@ >+/* Copyright (C) 2008 Free Software Foundation, Inc. >+ This file is part of the GNU C Library. >+ >+ The GNU C Library is free software; you can redistribute it and/or >+ modify it under the terms of the GNU Lesser General Public >+ License as published by the Free Software Foundation; either >+ version 2.1 of the License, or (at your option) any later version. >+ >+ The GNU C Library is distributed in the hope that it will be useful, >+ but WITHOUT ANY WARRANTY; without even the implied warranty of >+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ Lesser General Public License for more details. >+ >+ You should have received a copy of the GNU Lesser General Public >+ License along with the GNU C Library; if not, write to the Free >+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA >+ 02111-1307 USA. */ >+ >+#ifdef SHARED >+# include <dl-vdso.h> >+# undef __gettimeofday >+# undef __clock_gettime >+# undef __clock_getres >+# include <bits/libc-vdso.h> >+ >+long int (*__vdso_gettimeofday) (struct timeval *, void *) attribute_hidden; >+ >+long int (*__vdso_clock_gettime) (clockid_t, struct timespec *) >+ __attribute__ ((nocommon)); >+strong_alias (__vdso_clock_gettime, __GI___vdso_clock_gettime attribute_hidden) >+ >+long int (*__vdso_clock_getres) (clockid_t, struct timespec *) >+ __attribute__ ((nocommon)); >+strong_alias (__vdso_clock_getres, __GI___vdso_clock_getres attribute_hidden) >+ >+ >+static inline void >+_libc_vdso_platform_setup (void) >+{ >+ PREPARE_VERSION (linux2629, "LINUX_2.6.29", 123718585); >+ >+ __vdso_gettimeofday = _dl_vdso_vsym ("__kernel_gettimeofday", &linux2629); >+ __vdso_clock_gettime = _dl_vdso_vsym ("__kernel_clock_gettime", &linux2629); >+ __vdso_clock_getres = _dl_vdso_vsym ("__kernel_clock_getres", &linux2629); >+} >+ >+# define VDSO_SETUP _libc_vdso_platform_setup >+#endif >+ >+#include "../init-first.c" >diff -urpN glibc-2.5-20061008T1257/sysdeps/unix/sysv/linux/s390/Makefile glibc-2.5-20061008T1257-vdso/sysdeps/unix/sysv/linux/s390/Makefile >--- glibc-2.5-20061008T1257/sysdeps/unix/sysv/linux/s390/Makefile 2005-12-22 05:57:37.000000000 +0100 >+++ glibc-2.5-20061008T1257-vdso/sysdeps/unix/sysv/linux/s390/Makefile 2011-12-21 18:46:26.000000000 +0100 >@@ -6,3 +6,7 @@ endif > ifeq ($(subdir),stdlib) > gen-as-const-headers += ucontext_i.sym > endif >+ >+ifeq ($(subdir),elf) >+sysdep_routines += dl-vdso >+endif >diff -urpN glibc-2.5-20061008T1257/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h glibc-2.5-20061008T1257-vdso/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h >--- glibc-2.5-20061008T1257/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h 2006-02-28 10:34:34.000000000 +0100 >+++ glibc-2.5-20061008T1257-vdso/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h 2011-12-21 18:46:26.000000000 +0100 >@@ -1,4 +1,4 @@ >-/* Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006 >+/* Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2008 > Free Software Foundation, Inc. > Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). > This file is part of the GNU C Library. >@@ -26,6 +26,11 @@ > #include <dl-sysdep.h> /* For RTLD_PRIVATE_ERRNO. */ > #include <tls.h> > >+/* Define __set_errno() for INLINE_SYSCALL macro below. */ >+#ifndef __ASSEMBLER__ >+#include <errno.h> >+#endif >+ > /* For Linux we can use the system call table in the header file > /usr/include/asm/unistd.h > of the kernel. But these symbols do not follow the SYS_* syntax >@@ -276,6 +281,100 @@ > #define ASMFMT_5 , "0" (gpr2), "d" (gpr3), "d" (gpr4), "d" (gpr5), "d" (gpr6) > #define ASMFMT_6 , "0" (gpr2), "d" (gpr3), "d" (gpr4), "d" (gpr5), "d" (gpr6), "d" (gpr7) > >+#define CLOBBER_0 , "3", "4", "5" >+#define CLOBBER_1 , "3", "4", "5" >+#define CLOBBER_2 , "4", "5" >+#define CLOBBER_3 , "5" >+#define CLOBBER_4 >+#define CLOBBER_5 >+#define CLOBBER_6 >+ >+/* List of system calls which are supported as vsyscalls. */ >+#define HAVE_CLOCK_GETRES_VSYSCALL 1 >+#define HAVE_CLOCK_GETTIME_VSYSCALL 1 >+ >+/* This version is for kernels that implement system calls that >+ behave like function calls as far as register saving. >+ It falls back to the syscall in the case that the vDSO doesn't >+ exist or fails for ENOSYS */ >+#ifdef SHARED >+# define INLINE_VSYSCALL(name, nr, args...) \ >+ ({ \ >+ __label__ out; \ >+ __label__ iserr; \ >+ long int _ret; \ >+ \ >+ if (__vdso_##name != NULL) \ >+ { \ >+ _ret = INTERNAL_VSYSCALL_NCS (__vdso_##name, , nr, ##args); \ >+ if (!INTERNAL_SYSCALL_ERROR_P (_ret, )) \ >+ goto out; \ >+ if (INTERNAL_SYSCALL_ERRNO (_ret, ) != ENOSYS) \ >+ goto iserr; \ >+ } \ >+ \ >+ _ret = INTERNAL_SYSCALL (name, , nr, ##args); \ >+ if (INTERNAL_SYSCALL_ERROR_P (_ret, )) \ >+ { \ >+ iserr: \ >+ __set_errno (INTERNAL_SYSCALL_ERRNO (_ret, )); \ >+ _ret = -1L; \ >+ } \ >+ out: \ >+ (int) _ret; \ >+ }) >+#else >+# define INLINE_VSYSCALL(name, nr, args...) \ >+ INLINE_SYSCALL (name, nr, ##args) >+#endif >+ >+#ifdef SHARED >+# define INTERNAL_VSYSCALL(name, err, nr, args...) \ >+ ({ \ >+ __label__ out; \ >+ long int _ret; \ >+ \ >+ if (__vdso_##name != NULL) \ >+ { \ >+ _ret = INTERNAL_VSYSCALL_NCS (__vdso_##name, err, nr, ##args); \ >+ if (!INTERNAL_SYSCALL_ERROR_P (_ret, err) \ >+ || INTERNAL_SYSCALL_ERRNO (_ret, err) != ENOSYS) \ >+ goto out; \ >+ } \ >+ _ret = INTERNAL_SYSCALL (name, err, nr, ##args); \ >+ out: \ >+ _ret; \ >+ }) >+#else >+# define INTERNAL_VSYSCALL(name, err, nr, args...) \ >+ INTERNAL_SYSCALL (name, err, nr, ##args) >+#endif >+ >+/* This version is for internal uses when there is no desire >+ to set errno */ >+#define INTERNAL_VSYSCALL_NO_SYSCALL_FALLBACK(name, err, nr, args...) \ >+ ({ \ >+ long int _ret = ENOSYS; \ >+ \ >+ if (__vdso_##name != NULL) \ >+ _ret = INTERNAL_VSYSCALL_NCS (__vdso_##name, err, nr, ##args); \ >+ else \ >+ err = 1 << 28; \ >+ _ret; \ >+ }) >+ >+#define INTERNAL_VSYSCALL_NCS(fn, err, nr, args...) \ >+ ({ \ >+ DECLARGS_##nr(args) \ >+ register long _ret asm("2"); \ >+ asm volatile ( \ >+ "lr 11,14\n\t" \ >+ "basr 14,%1\n\t" \ >+ "lr 14,11\n\t" \ >+ : "=d" (_ret) \ >+ : "d" (fn) ASMFMT_##nr \ >+ : "cc", "memory", "0", "1", "11" CLOBBER_##nr); \ >+ _ret; }) > > /* Pointer mangling support. */ > #if defined NOT_IN_libc && defined IS_IN_rtld >diff -urpN glibc-2.5-20061008T1257/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h glibc-2.5-20061008T1257-vdso/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h >--- glibc-2.5-20061008T1257/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h 2006-03-01 21:03:17.000000000 +0100 >+++ glibc-2.5-20061008T1257-vdso/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h 2011-12-21 18:46:26.000000000 +0100 >@@ -1,5 +1,5 @@ > /* Assembler macros for 64 bit S/390. >- Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 >+ Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2008 > Free Software Foundation, Inc. > Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). > This file is part of the GNU C Library. >@@ -27,6 +27,11 @@ > #include <dl-sysdep.h> /* For RTLD_PRIVATE_ERRNO. */ > #include <tls.h> > >+/* Define __set_errno() for INLINE_SYSCALL macro below. */ >+#ifndef __ASSEMBLER__ >+#include <errno.h> >+#endif >+ > /* For Linux we can use the system call table in the header file > /usr/include/asm/unistd.h > of the kernel. But these symbols do not follow the SYS_* syntax >@@ -278,6 +283,101 @@ > #define ASMFMT_5 , "0" (gpr2), "d" (gpr3), "d" (gpr4), "d" (gpr5), "d" (gpr6) > #define ASMFMT_6 , "0" (gpr2), "d" (gpr3), "d" (gpr4), "d" (gpr5), "d" (gpr6), "d" (gpr7) > >+#define CLOBBER_0 , "3", "4", "5" >+#define CLOBBER_1 , "3", "4", "5" >+#define CLOBBER_2 , "4", "5" >+#define CLOBBER_3 , "5" >+#define CLOBBER_4 >+#define CLOBBER_5 >+#define CLOBBER_6 >+ >+/* List of system calls which are supported as vsyscalls. */ >+#define HAVE_CLOCK_GETRES_VSYSCALL 1 >+#define HAVE_CLOCK_GETTIME_VSYSCALL 1 >+ >+/* This version is for kernels that implement system calls that >+ behave like function calls as far as register saving. >+ It falls back to the syscall in the case that the vDSO doesn't >+ exist or fails for ENOSYS */ >+#ifdef SHARED >+# define INLINE_VSYSCALL(name, nr, args...) \ >+ ({ \ >+ __label__ out; \ >+ __label__ iserr; \ >+ long int _ret; \ >+ \ >+ if (__vdso_##name != NULL) \ >+ { \ >+ _ret = INTERNAL_VSYSCALL_NCS (__vdso_##name, , nr, ##args); \ >+ if (!INTERNAL_SYSCALL_ERROR_P (_ret, )) \ >+ goto out; \ >+ if (INTERNAL_SYSCALL_ERRNO (_ret, ) != ENOSYS) \ >+ goto iserr; \ >+ } \ >+ \ >+ _ret = INTERNAL_SYSCALL (name, , nr, ##args); \ >+ if (INTERNAL_SYSCALL_ERROR_P (_ret, )) \ >+ { \ >+ iserr: \ >+ __set_errno (INTERNAL_SYSCALL_ERRNO (_ret, )); \ >+ _ret = -1L; \ >+ } \ >+ out: \ >+ (int) _ret; \ >+ }) >+#else >+# define INLINE_VSYSCALL(name, nr, args...) \ >+ INLINE_SYSCALL (name, nr, ##args) >+#endif >+ >+#ifdef SHARED >+# define INTERNAL_VSYSCALL(name, err, nr, args...) \ >+ ({ \ >+ __label__ out; \ >+ long int _ret; \ >+ \ >+ if (__vdso_##name != NULL) \ >+ { \ >+ _ret = INTERNAL_VSYSCALL_NCS (__vdso_##name, err, nr, ##args); \ >+ if (!INTERNAL_SYSCALL_ERROR_P (_ret, err) \ >+ || INTERNAL_SYSCALL_ERRNO (_ret, err) != ENOSYS) \ >+ goto out; \ >+ } \ >+ _ret = INTERNAL_SYSCALL (name, err, nr, ##args); \ >+ out: \ >+ _ret; \ >+ }) >+#else >+# define INTERNAL_VSYSCALL(name, err, nr, args...) \ >+ INTERNAL_SYSCALL (name, err, nr, ##args) >+#endif >+ >+/* This version is for internal uses when there is no desire >+ to set errno */ >+#define INTERNAL_VSYSCALL_NO_SYSCALL_FALLBACK(name, err, nr, args...) \ >+ ({ \ >+ long int _ret = ENOSYS; \ >+ \ >+ if (__vdso_##name != NULL) \ >+ _ret = INTERNAL_VSYSCALL_NCS (__vdso_##name, err, nr, ##args); \ >+ else \ >+ err = 1 << 28; \ >+ _ret; \ >+ }) >+ >+#define INTERNAL_VSYSCALL_NCS(fn, err, nr, args...) \ >+ ({ \ >+ DECLARGS_##nr(args) \ >+ register long _ret asm("2"); \ >+ asm volatile ( \ >+ "lgr 11,14\n\t" \ >+ "basr 14,%1\n\t" \ >+ "lgr 14,11\n\t" \ >+ : "=d" (_ret) \ >+ : "a" (fn) ASMFMT_##nr \ >+ : "cc", "memory", "0", "1", "11" CLOBBER_##nr); \ >+ _ret; }) >+ > /* Pointer mangling support. */ > #if defined NOT_IN_libc && defined IS_IN_rtld > /* We cannot use the thread descriptor because in ld.so we use setjmp >diff -urpN glibc-2.5-20061008T1257/sysdeps/unix/sysv/linux/s390/Versions glibc-2.5-20061008T1257-vdso/sysdeps/unix/sysv/linux/s390/Versions >--- glibc-2.5-20061008T1257/sysdeps/unix/sysv/linux/s390/Versions 1970-01-01 01:00:00.000000000 +0100 >+++ glibc-2.5-20061008T1257-vdso/sysdeps/unix/sysv/linux/s390/Versions 2011-12-21 18:46:26.000000000 +0100 >@@ -0,0 +1,6 @@ >+libc { >+ GLIBC_PRIVATE { >+ __vdso_clock_gettime; >+ __vdso_clock_getres; >+ } >+} >diff -urpN glibc-2.5-20061008T1257/sysdeps/unix/sysv/linux/syscalls.list glibc-2.5-20061008T1257-vdso/sysdeps/unix/sysv/linux/syscalls.list >--- glibc-2.5-20061008T1257/sysdeps/unix/sysv/linux/syscalls.list 2011-12-21 18:46:00.000000000 +0100 >+++ glibc-2.5-20061008T1257-vdso/sysdeps/unix/sysv/linux/syscalls.list 2011-12-21 18:47:08.000000000 +0100 >@@ -43,7 +43,7 @@ munlockall - munlockall i: munlockall > nanosleep - nanosleep Ci:pp __libc_nanosleep __nanosleep nanosleep > nfsservctl EXTRA nfsservctl i:ipp nfsservctl > pause - pause Ci: __libc_pause pause >-personality init-first personality i:i __personality personality >+personality EXTRA personality i:i __personality personality > pipe - pipe i:f __pipe pipe > pivot_root EXTRA pivot_root i:ss pivot_root > prctl EXTRA prctl i:iiiii __prctl prctl
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 795896
: 580461