From 9e88e840c2062ee1492e303da5fc696eec849328 Mon Sep 17 00:00:00 2001 From: Ben Wijen Date: Fri, 15 Jan 2021 14:45:29 +0100 Subject: [PATCH] cxx.cc: Fix dynamic initialization for static local variables 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