about summary refs log tree commit diff
path: root/fedora/glibc-rh234946.patch
diff options
context:
space:
mode:
Diffstat (limited to 'fedora/glibc-rh234946.patch')
-rw-r--r--fedora/glibc-rh234946.patch32
1 files changed, 32 insertions, 0 deletions
diff --git a/fedora/glibc-rh234946.patch b/fedora/glibc-rh234946.patch
new file mode 100644
index 0000000000..add3f8023f
--- /dev/null
+++ b/fedora/glibc-rh234946.patch
@@ -0,0 +1,32 @@
+2006-12-25  Sripathi Kodi  <sripathik@in.ibm.com>
+
+	* include/link.h: Declare new flag l_fini_called in struct link_map.
+	* elf/dl-fini.c: In _dl_fini, set l_fini_called to 1 instead of 
+	l_init_called to 0.
+
+--- libc/elf/dl-fini.c	2006-12-22 01:54:22.000000000 -0600
++++ libc/elf/dl-fini.c	2006-12-24 22:51:52.000000000 -0600
+@@ -215,10 +215,10 @@ _dl_fini (void)
+ 	{
+ 	  l = maps[i];
+ 
+-	  if (l->l_init_called)
++	  if (l->l_init_called && !l->l_fini_called)
+ 	    {
+ 	      /* Make sure nothing happens if we are called twice.  */
+-	      l->l_init_called = 0;
++	      l->l_fini_called = 1;
+ 
+ 	      /* Is there a destructor function?  */
+ 	      if (l->l_info[DT_FINI_ARRAY] != NULL
+--- libc/include/link.h	2006-12-22 01:54:22.000000000 -0600
++++ libc/include/link.h	2006-12-24 22:53:29.000000000 -0600
+@@ -185,6 +185,8 @@ struct link_map
+     unsigned int l_contiguous:1; /* Nonzero if inter-segment holes are
+ 				    mprotected or if no holes are present at
+ 				    all.  */
++    unsigned int l_fini_called:1; /* Nonzero if _dl_fini has processed
++				     this object */
+ 
+     /* Array with version names.  */
+     unsigned int l_nversions;