aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDJ Delorie <dj@redhat.com>2014-07-24 12:41:01 -0400
committerDJ Delorie <dj@gcc.gnu.org>2014-07-24 12:41:01 -0400
commitfabf71ba2cdb1f682b370a1c7e74b1e330faa7d3 (patch)
treefb7a6fc0a705116ca7acd65510e9fe8c9deec343
parent037e55737efb95c6068fbcc740fc8f16a0cf7939 (diff)
downloadgcc-fabf71ba2cdb1f682b370a1c7e74b1e330faa7d3.zip
gcc-fabf71ba2cdb1f682b370a1c7e74b1e330faa7d3.tar.gz
gcc-fabf71ba2cdb1f682b370a1c7e74b1e330faa7d3.tar.bz2
cygming-crtbegin.c (deregister_frame_fn): Newly public.
* 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
-rw-r--r--libgcc/ChangeLog6
-rw-r--r--libgcc/config/i386/cygming-crtbegin.c17
2 files changed, 14 insertions, 9 deletions
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index c00e6f9..f74aeb4 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -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.
diff --git a/libgcc/config/i386/cygming-crtbegin.c b/libgcc/config/i386/cygming-crtbegin.c
index 195b4637..b27cd0c 100644
--- a/libgcc/config/i386/cygming-crtbegin.c
+++ b/libgcc/config/i386/cygming-crtbegin.c
@@ -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)