Back-merged from trunk
Back-merged from trunk * config/i386/cygming-crtbegin.c (__gcc_register_frame): Increment load-count on use of LIBGCC_SONAME DLL. (hmod_libgcc): New static variable to hold handle of LIBGCC_SONAME DLL. (__gcc_deregister_frame): Decrement load-count of LIBGCC_SONAME DLL. From-SVN: r204637
This commit is contained in:
parent
202eba5c96
commit
f063c8cc2c
|
@ -1,3 +1,13 @@
|
|||
2013-11-10 Kai Tietz <ktietz@redhat.com>
|
||||
|
||||
Back-merged from trunk
|
||||
* config/i386/cygming-crtbegin.c (__gcc_register_frame):
|
||||
Increment load-count on use of LIBGCC_SONAME DLL.
|
||||
(hmod_libgcc): New static variable to hold handle of
|
||||
LIBGCC_SONAME DLL.
|
||||
(__gcc_deregister_frame): Decrement load-count of
|
||||
LIBGCC_SONAME DLL.
|
||||
|
||||
2013-11-07 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
* config/i386/32/sfp-machine.c (FP_HANDLE_EXCEPTIONS): Handle
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* crtbegin object for windows32 targets.
|
||||
Copyright (C) 2007, 2009, 2010, 2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2007, 2009-2011, 2013 Free Software Foundation, Inc.
|
||||
|
||||
Contributed by Danny Smith <dannysmith@users.sourceforge.net>
|
||||
|
||||
|
@ -69,6 +69,9 @@ static EH_FRAME_SECTION_CONST char __EH_FRAME_BEGIN__[]
|
|||
= { };
|
||||
|
||||
static struct object obj;
|
||||
|
||||
/* Handle of libgcc's DLL reference. */
|
||||
HANDLE hmod_libgcc;
|
||||
#endif
|
||||
|
||||
#if TARGET_USE_JCR_SECTION
|
||||
|
@ -93,9 +96,14 @@ __gcc_register_frame (void)
|
|||
|
||||
void (*register_frame_fn) (const void *, struct object *);
|
||||
HANDLE h = GetModuleHandle (LIBGCC_SONAME);
|
||||
|
||||
if (h)
|
||||
register_frame_fn = (void (*) (const void *, struct object *))
|
||||
GetProcAddress (h, "__register_frame_info");
|
||||
{
|
||||
/* Increasing the load-count of LIBGCC_SONAME DLL. */
|
||||
hmod_libgcc = LoadLibrary (LIBGCC_SONAME);
|
||||
register_frame_fn = (void (*) (const void *, struct object *))
|
||||
GetProcAddress (h, "__register_frame_info");
|
||||
}
|
||||
else
|
||||
register_frame_fn = __register_frame_info;
|
||||
if (register_frame_fn)
|
||||
|
@ -132,5 +140,7 @@ __gcc_deregister_frame (void)
|
|||
deregister_frame_fn = __deregister_frame_info;
|
||||
if (deregister_frame_fn)
|
||||
deregister_frame_fn (__EH_FRAME_BEGIN__);
|
||||
if (hmod_libgcc)
|
||||
FreeLibrary (hmod_libgcc);
|
||||
#endif
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue