cygming-crtbegin.c (deregister_frame_fn): Newly public.
authorDJ Delorie <dj@redhat.com>
Thu, 24 Jul 2014 16:41:01 +0000 (12:41 -0400)
committerDJ Delorie <dj@gcc.gnu.org>
Thu, 24 Jul 2014 16:41:01 +0000 (12:41 -0400)
* config/i386/cygming-crtbegin.c (deregister_frame_fn): Newly public.
(__gcc_deregister_frame): Move logic to detect deregister function to...
(__gcc_register_frame): here, so it's consistent with the register logic.

From-SVN: r213009

libgcc/ChangeLog
libgcc/config/i386/cygming-crtbegin.c

index c00e6f9..f74aeb4 100644 (file)
@@ -1,3 +1,9 @@
+2014-07-24  DJ Delorie  <dj@redhat.com>
+
+       * config/i386/cygming-crtbegin.c (deregister_frame_fn): Newly public.
+       (__gcc_deregister_frame): Move logic to detect deregister function to...
+       (__gcc_register_frame): here, so it's consistent with the register logic.
+
 2014-07-23  Nathan Sidwell  <nathan@acm.org>
 
        * libgcov-driver.c (set_gcov_list): Remove.
index 195b463..b27cd0c 100644 (file)
@@ -102,6 +102,7 @@ static struct object obj;
 
 /* Handle of libgcc's DLL reference.  */
 HANDLE hmod_libgcc;
+static void *  (*deregister_frame_fn) (const void *) == NULL;
 #endif
 
 #if TARGET_USE_JCR_SECTION
@@ -133,9 +134,14 @@ __gcc_register_frame (void)
       hmod_libgcc = LoadLibrary (LIBGCC_SONAME);
       register_frame_fn = (void (*) (const void *, struct object *))
                          GetProcAddress (h, "__register_frame_info");
+      deregister_frame_fn = (void* (*) (const void *))
+                           GetProcAddress (h, "__deregister_frame_info");
+    }
+  else
+    {
+      register_frame_fn = __register_frame_info;
+      deregister_frame_fn = __deregister_frame_info;
     }
-  else 
-    register_frame_fn = __register_frame_info;
   if (register_frame_fn)
      register_frame_fn (__EH_FRAME_BEGIN__, &obj);
 #endif
@@ -161,13 +167,6 @@ void
 __gcc_deregister_frame (void)
 {
 #if DWARF2_UNWIND_INFO
-  void *  (*deregister_frame_fn) (const void *);
-  HANDLE h = GetModuleHandle (LIBGCC_SONAME);
-  if (h)
-    deregister_frame_fn = (void* (*) (const void *))
-                         GetProcAddress (h, "__deregister_frame_info");
-  else 
-    deregister_frame_fn = __deregister_frame_info;
   if (deregister_frame_fn)
      deregister_frame_fn (__EH_FRAME_BEGIN__);
   if (hmod_libgcc)