[PATCH 06/11] cxx.cc: Fix dynamic initialization for static local variables
Corinna Vinschen
corinna-cygwin@cygwin.com
Mon Jan 18 11:33:00 GMT 2021
On Jan 15 14:45, Ben Wijen wrote:
> The old implementation for __cxa_guard_acquire did not return 1,
> therefore dynamic initialization was never performed.
>
> If concurrent-safe dynamic initialisation is ever needed, CXX ABI
> must be followed when re-implementing __cxa_guard_acquire (et al.)
> ---
> winsup/cygwin/Makefile.in | 2 +-
> winsup/cygwin/cxx.cc | 10 ----------
> 2 files changed, 1 insertion(+), 11 deletions(-)
>
> diff --git a/winsup/cygwin/Makefile.in b/winsup/cygwin/Makefile.in
> index a840f2b83..73d9b37fd 100644
> --- a/winsup/cygwin/Makefile.in
> +++ b/winsup/cygwin/Makefile.in
> @@ -69,7 +69,7 @@ COMMON_CFLAGS=-MMD ${$(*F)_CFLAGS} -Wimplicit-fallthrough=5 -Werror -fmerge-cons
> ifeq ($(target_cpu),x86_64)
> COMMON_CFLAGS+=-mcmodel=small
> endif
> -COMPILE.cc+=${COMMON_CFLAGS} # -std=gnu++14
> +COMPILE.cc+=${COMMON_CFLAGS} -fno-threadsafe-statics # -std=gnu++14
> COMPILE.c+=${COMMON_CFLAGS}
>
> AR:=@AR@
> diff --git a/winsup/cygwin/cxx.cc b/winsup/cygwin/cxx.cc
> index be3268549..b69524aca 100644
> --- a/winsup/cygwin/cxx.cc
> +++ b/winsup/cygwin/cxx.cc
> @@ -83,16 +83,6 @@ __cxa_pure_virtual (void)
> api_fatal ("pure virtual method called");
> }
>
> -extern "C" void
> -__cxa_guard_acquire ()
> -{
> -}
> -
> -extern "C" void
> -__cxa_guard_release ()
> -{
> -}
> -
> /* These routines are made available as last-resort fallbacks
> for the application. Should not be used in practice; the
> entries in this struct get overwritten by each DLL as it
> --
> 2.29.2
Pushed.
Thanks,
Corinna
More information about the Cygwin-patches
mailing list