This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.26.9000-912-g478593e


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  478593e6374f3818da39332260dc453cb19cfa1e (commit)
      from  7863a7118112fe502e8020a0db0fa74fef281f29 (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://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=478593e6374f3818da39332260dc453cb19cfa1e

commit 478593e6374f3818da39332260dc453cb19cfa1e
Author: Stefan Liebler <stli@linux.vnet.ibm.com>
Date:   Mon Dec 4 16:40:13 2017 +0100

    S390: Fix backtrace in vdso functions.
    
    On s390, GDB fails to show the complete backtrace from within vdso functions.
    The macro INTERNAL_VSYSCALL_CALL saves the return address in r14 to r10
    before branching to the vdso function. The branch-instruction updates r14
    in order to let the vdso function return. Then the original address in r14 is
    restored from r10. Unfortunately, there are no cfi-rules and GDB fails.
    
    Furthermore the call of the vdso function does not comply with the s390 ABI
    as no stack-frame for the vdso-function is generated.
    
    This patch removes the s390 specific macro INTERNAL_VSYSCALL_CALL
    and the common implementation in sysdeps/unix/sysv/linux/sysdep-vdso.h is used.
    Then the vdso function is called via function-pointer and GCC generates a
    new stack-frame and emits all needed cfi-rules.
    
    The defines CLOBBER_[0-6] are removed as they  were only used in macro
    INTERNAL_VSYSCALL_CALL.
    
    The macro INTERNAL_VSYSCALL_NO_SYSCALL_FALLBACK is not used on s390.
    The only user is power. Thus it is removed from s390 sysdep.h.
    
    ChangeLog:
    
    	* sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h
    	(INTERNAL_VSYSCALL_CALL, CLOBBER_0, CLOBBER_1, CLOBBER_2,
    	 CLOBBER_3, CLOBBER_4, CLOBBER_5, CLOBBER_6,
    	INTERNAL_VSYSCALL_NO_SYSCALL_FALLBACK): Remove.
    	* sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: Likewise.

diff --git a/ChangeLog b/ChangeLog
index 5983c12..a847985 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2017-12-04  Stefan Liebler  <stli@linux.vnet.ibm.com>
+
+	* sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h
+	(INTERNAL_VSYSCALL_CALL, CLOBBER_0, CLOBBER_1, CLOBBER_2,
+	 CLOBBER_3, CLOBBER_4, CLOBBER_5, CLOBBER_6,
+	INTERNAL_VSYSCALL_NO_SYSCALL_FALLBACK): Remove.
+	* sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: Likewise.
+
 2017-12-04  Rajalakshmi Srinivasaraghavan  <raji@linux.vnet.ibm.com>
 
 	[BZ #5997]
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h b/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h
index e56fc32..644b83c 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h
@@ -271,48 +271,12 @@
 #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
 #define HAVE_GETTIMEOFDAY_VSYSCALL	1
 #define HAVE_GETCPU_VSYSCALL		1
 
-/* 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;						      \
-									      \
-    __typeof (__vdso_##name) vdsop = __vdso_##name;			      \
-    PTR_DEMANGLE (vdsop);						      \
-    if (vdsop != NULL)							      \
-      _ret = INTERNAL_VSYSCALL_CALL (vdsop, err, nr, ##args);		      \
-    else								      \
-      err = 1 << 28;							      \
-    _ret;								      \
-  })
-
-#define INTERNAL_VSYSCALL_CALL(fn, err, nr, args...)			      \
-  ({									      \
-    DECLARGS_##nr(args)							      \
-    register long _ret __asm__("2");					      \
-    __asm__ __volatile__ (						      \
-			  "lr 10,14\n\t"				      \
-			  "basr 14,%1\n\t"				      \
-			  "lr 14,10\n\t"				      \
-			  : "=d" (_ret)					      \
-			  : "d" (fn) ASMFMT_##nr			      \
-			  : "cc", "memory", "0", "1", "10" CLOBBER_##nr);     \
-    _ret; })
-
 /* Pointer mangling support.  */
 #if IS_IN (rtld)
 /* We cannot use the thread descriptor because in ld.so we use setjmp
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h b/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h
index 622991d..18ed339 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h
@@ -277,14 +277,6 @@
 #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
@@ -293,34 +285,6 @@
 
 #define SINGLE_THREAD_BY_GLOBAL		1
 
-/* 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;						      \
-									      \
-    __typeof (__vdso_##name) vdsop = __vdso_##name;			      \
-    PTR_DEMANGLE (vdsop);						      \
-    if (vdsop != NULL)							      \
-      _ret = INTERNAL_VSYSCALL_CALL (vdsop, err, nr, ##args);		      \
-    else								      \
-      err = 1 << 28;							      \
-    _ret;								      \
-  })
-
-#define INTERNAL_VSYSCALL_CALL(fn, err, nr, args...)			      \
-  ({									      \
-    DECLARGS_##nr(args)							      \
-    register long _ret __asm__("2");					      \
-    __asm__ __volatile__ (						      \
-			  "lgr 10,14\n\t"				      \
-			  "basr 14,%1\n\t"				      \
-			  "lgr 14,10\n\t"				      \
-			  : "=d" (_ret)					      \
-			  : "a" (fn) ASMFMT_##nr			      \
-			  : "cc", "memory", "0", "1", "10" CLOBBER_##nr);     \
-    _ret; })
-
 /* Pointer mangling support.  */
 #if IS_IN (rtld)
 /* We cannot use the thread descriptor because in ld.so we use setjmp

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                                     |    8 +++++
 sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h |   36 -------------------------
 sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h |   36 -------------------------
 3 files changed, 8 insertions(+), 72 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]