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.25-599-g83653f8


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  83653f804dca6e8e9606e20e708be45b8422d96c (commit)
      from  39bd76df3d61c6d83c5aa8bab06c7c1dbe7159ac (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=83653f804dca6e8e9606e20e708be45b8422d96c

commit 83653f804dca6e8e9606e20e708be45b8422d96c
Author: Stefan Liebler <stli@linux.vnet.ibm.com>
Date:   Tue Jun 27 15:23:43 2017 +0200

    S390: Save and restore r12 in TLS_IE macro.
    
    The testcases elf/tst-tls1-static and elf/tst-tls2-static
    are failing on s390 if gcc is configured with --enable-default-pie.
    
    According to binutils, there are only four valid cases for IE -> LE transition:
    lg %rx,(0,%ry)    -> sllg %rx,%ry,0
    lg %rx,(%ry,0)    -> sllg %rx,%ry,0
    lg %rx,(%ry,%r12) -> sllg %rx,%ry,0
    lg %rx,(%r12,%ry) -> sllg %rx,%ry,0
    
    Thus I've adjusted the TLS_IE macro in s390 tls-macros.h files in PIC case
    in order to use r12 for the address of global offset table.
    The adjusted macro definition is not used if gcc is not configured with
    --enable-default-pie.
    
    ChangeLog:
    
    	* sysdeps/s390/s390-32/tls-macros.h (TLS_IE): Use r12 for GOT address.
    	* sysdeps/s390/s390-64/tls-macros.h (TLS_IE): Likewise.

diff --git a/ChangeLog b/ChangeLog
index f885eb4..48821c0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2017-06-27  Stefan Liebler  <stli@linux.vnet.ibm.com>
+
+	* sysdeps/s390/s390-32/tls-macros.h (TLS_IE): Use r12 for GOT address.
+	* sysdeps/s390/s390-64/tls-macros.h (TLS_IE): Likewise.
+
 2017-06-27  Florian Weimer  <fweimer@redhat.com>
 
 	Work around test timeouts with ICMP rate limiting on localhost.
diff --git a/sysdeps/s390/s390-32/tls-macros.h b/sysdeps/s390/s390-32/tls-macros.h
index a4c5fff..153523a 100644
--- a/sysdeps/s390/s390-32/tls-macros.h
+++ b/sysdeps/s390/s390-32/tls-macros.h
@@ -8,15 +8,17 @@
 
 #ifdef PIC
 # define TLS_IE(x) \
-  ({ unsigned long __offset, __got;					      \
+  ({ unsigned long __offset, __save12;					      \
      __asm__ ("bras %0,1f\n"						      \
 	      "0:\t.long _GLOBAL_OFFSET_TABLE_-0b\n\t"			      \
 	      ".long " #x "@gotntpoff\n"				      \
-	      "1:\tl %1,0(%0)\n\t"					      \
-	      "la %1,0(%1,%0)\n\t"					      \
+	      "1:\tlr %1,%%r12\n\t"					      \
+	      "l %%r12,0(%0)\n\t"					      \
+	      "la %%r12,0(%0,%%r12)\n\t"				      \
 	      "l %0,4(%0)\n\t"						      \
-	      "l %0,0(%0,%1):tls_load:" #x "\n"				      \
-	      : "=&a" (__offset), "=&a" (__got) : : "cc" );		      \
+	      "l %0,0(%0,%%r12):tls_load:" #x "\n\t"			      \
+	      "lr %%r12,%1\n"						      \
+	      : "=&a" (__offset), "=&a" (__save12) : : "cc" );		      \
      (int *) (__builtin_thread_pointer() + __offset); })
 #else
 # define TLS_IE(x) \
diff --git a/sysdeps/s390/s390-64/tls-macros.h b/sysdeps/s390/s390-64/tls-macros.h
index d70ea6c..449a843 100644
--- a/sysdeps/s390/s390-64/tls-macros.h
+++ b/sysdeps/s390/s390-64/tls-macros.h
@@ -8,13 +8,15 @@
 
 #ifdef PIC
 # define TLS_IE(x) \
-  ({ unsigned long __offset, __got;					      \
+  ({ unsigned long __offset, __save12;					      \
      __asm__ ("bras %0,0f\n\t"						      \
 	      ".quad " #x "@gotntpoff\n"				      \
-	      "0:\tlarl %1,_GLOBAL_OFFSET_TABLE_\n\t"			      \
+	      "0:\tlgr %1,%%r12\n\t"					      \
+	      "larl %%r12,_GLOBAL_OFFSET_TABLE_\n\t"			      \
 	      "lg %0,0(%0)\n\t"						      \
-	      "lg %0,0(%0,%1):tls_load:" #x	"\n"			      \
-	      : "=&a" (__offset), "=&a" (__got) : : "cc" );		      \
+	      "lg %0,0(%0,%%r12):tls_load:" #x	"\n\t"			      \
+	      "lgr %%r12,%1\n"						      \
+	      : "=&a" (__offset), "=&a" (__save12) : : "cc" );		      \
      (int *) (__builtin_thread_pointer() + __offset); })
 #else
 # define TLS_IE(x) \

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

Summary of changes:
 ChangeLog                         |    5 +++++
 sysdeps/s390/s390-32/tls-macros.h |   12 +++++++-----
 sysdeps/s390/s390-64/tls-macros.h |   10 ++++++----
 3 files changed, 18 insertions(+), 9 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]