Author: aurel32
Date: 2015-10-18 22:16:32 +0000 (Sun, 18 Oct 2015)
New Revision: 6649

Added:
   
glibc-package/branches/glibc-2.21/debian/patches/any/cvs-mangle-tls_dtor_list.diff
Modified:
   glibc-package/branches/glibc-2.21/debian/changelog
   glibc-package/branches/glibc-2.21/debian/patches/series
Log:
patches/any/cvs-mangle-tls_dtor_list.diff: new patch from upstream to
mangle function pointers in tls_dtor_list.  Closes: #802256.

Modified: glibc-package/branches/glibc-2.21/debian/changelog
===================================================================
--- glibc-package/branches/glibc-2.21/debian/changelog  2015-10-18 21:08:35 UTC 
(rev 6648)
+++ glibc-package/branches/glibc-2.21/debian/changelog  2015-10-18 22:16:32 UTC 
(rev 6649)
@@ -68,6 +68,8 @@
     kernels.  Closes: #800846.
   * patches/any/cvs-ld_pointer_guard.diff: new patch from upstream to
     unconditionally disable LD_POINTER_GUARD.  Closes: #798316, #801691.
+  * patches/any/cvs-mangle-tls_dtor_list.diff: new patch from upstream to
+    mangle function pointers in tls_dtor_list.  Closes: #802256.
 
   [ Steven Chamberlain ]
   * sysdeps/kfreebsd.mk: find kfreebsd-kernel-headers in multiarch path.

Added: 
glibc-package/branches/glibc-2.21/debian/patches/any/cvs-mangle-tls_dtor_list.diff
===================================================================
--- 
glibc-package/branches/glibc-2.21/debian/patches/any/cvs-mangle-tls_dtor_list.diff
                          (rev 0)
+++ 
glibc-package/branches/glibc-2.21/debian/patches/any/cvs-mangle-tls_dtor_list.diff
  2015-10-18 22:16:32 UTC (rev 6649)
@@ -0,0 +1,35 @@
+2015-10-06  Florian Weimer  <[email protected]>
+
+       [BZ #19018]
+       * stdlib/cxa_thread_atexit_impl.c (__cxa_thread_atexit_impl):
+       Mangle function pointer before storing it.
+       (__call_tls_dtors): Demangle function pointer before calling it.
+
+--- a/stdlib/cxa_thread_atexit_impl.c
++++ b/stdlib/cxa_thread_atexit_impl.c
+@@ -42,6 +42,10 @@
+ int
+ __cxa_thread_atexit_impl (dtor_func func, void *obj, void *dso_symbol)
+ {
++#ifdef PTR_MANGLE
++  PTR_MANGLE (func);
++#endif
++
+   /* Prepend.  */
+   struct dtor_list *new = calloc (1, sizeof (struct dtor_list));
+   new->func = func;
+@@ -83,9 +87,13 @@
+   while (tls_dtor_list)
+     {
+       struct dtor_list *cur = tls_dtor_list;
++      dtor_func func = cur->func;
++#ifdef PTR_DEMANGLE
++      PTR_DEMANGLE (func);
++#endif
+       tls_dtor_list = tls_dtor_list->next;
+ 
+-      cur->func (cur->obj);
++      func (cur->obj);
+ 
+       __rtld_lock_lock_recursive (GL(dl_load_lock));
+ 

Modified: glibc-package/branches/glibc-2.21/debian/patches/series
===================================================================
--- glibc-package/branches/glibc-2.21/debian/patches/series     2015-10-18 
21:08:35 UTC (rev 6648)
+++ glibc-package/branches/glibc-2.21/debian/patches/series     2015-10-18 
22:16:32 UTC (rev 6649)
@@ -268,3 +268,4 @@
 any/cvs-logbl-accuracy.diff
 any/local-math-logb.diff
 any/cvs-ld_pointer_guard.diff
+any/cvs-mangle-tls_dtor_list.diff

Reply via email to