https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63832

--- Comment #5 from Uroš Bizjak <ubizjak at gmail dot com> ---
I'm testing following patch:

--cut here--
Index: crtstuff.c
===================================================================
--- crtstuff.c  (revision 218733)
+++ crtstuff.c  (working copy)
@@ -393,13 +393,11 @@ __do_global_dtors_aux (void)
     extern func_ptr __DTOR_END__[] __attribute__((visibility ("hidden")));
     static size_t dtor_idx;
     const size_t max_idx = __DTOR_END__ - __DTOR_LIST__ - 1;
-    func_ptr f;
+    func_ptr *dtor_list;

+    __asm ("" : "=g" (dtor_list) : "0" (__DTOR_LIST__));
     while (dtor_idx < max_idx)
-      {
-       f = __DTOR_LIST__[++dtor_idx];
-       f ();
-      }
+      dtor_list[++dtor_idx] ();
   }
 #else /* !defined (FINI_ARRAY_SECTION_ASM_OP) */
   {
--cut here--

Reply via email to