File 0364-erts-Strip-O-from-CXXFLAGS-when-compiling-debug.patch of Package erlang

From 0e636d0797e8515af0bc38007172b6ac3c118efd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lukas=20Backstr=C3=B6m?= <lukas@erlang.org>
Date: Mon, 14 Oct 2024 10:36:03 +0200
Subject: [PATCH] erts: Strip -O from CXXFLAGS when compiling debug

---
 erts/configure            | 15 ++++++++++-----
 erts/configure.ac         | 26 +++++++++++++++-----------
 erts/emulator/Makefile.in | 25 ++++++++++++++++++-------
 3 files changed, 43 insertions(+), 23 deletions(-)

diff --git a/erts/configure b/erts/configure
index d99cc51920..9cea09ff81 100755
--- a/erts/configure
+++ b/erts/configure
@@ -643,6 +643,7 @@ ac_func_c_list=
 ac_func_c_list=
 ac_subst_vars='LTLIBOBJS
 LIBOBJS
+DEBUG_CXXFLAGS
 DEBUG_CFLAGS
 ERL_DETERMINISTIC
 CFLAGS32
@@ -26834,11 +26835,6 @@ fi
 
 
 
-printf "%s\n" "#define ERTS_EMU_CMDLINE_FLAGS \"$STATIC_CFLAGS $CFLAGS $DEBUG_CFLAGS $EMU_THR_DEFS $DEFS $WERRORFLAGS $WFLAGS\"" >>confdefs.h
-
-
-
-
 
 
 
@@ -26912,6 +26908,15 @@ printf "%s\n" "yes" >&6; }
 DEBUG_CFLAGS="-g -O0 $no_opt_CFLAGS"
 
 
+no_opt_CXXFLAGS=$(echo " $CXXFLAGS" | sed 's/ -O[^ ]*/ /g')
+DEBUG_CXXFLAGS="-g -O0 $no_opt_CXXFLAGS"
+
+
+
+
+printf "%s\n" "#define ERTS_EMU_CMDLINE_FLAGS \"$STATIC_CFLAGS $CFLAGS $CXXFLAGS $DEBUG_CFLAGS $DEBUG_CXXFLAGS $EMU_THR_DEFS $DEFS $WERRORFLAGS $WFLAGS\"" >>confdefs.h
+
+
 
 ac_config_files="$ac_config_files emulator/$host/Makefile:emulator/Makefile.in epmd/src/$host/Makefile:epmd/src/Makefile.in etc/common/$host/Makefile:etc/common/Makefile.in include/internal/$host/ethread.mk:include/internal/ethread.mk.in include/internal/$host/erts_internal.mk:include/internal/erts_internal.mk.in lib_src/$host/Makefile:lib_src/Makefile.in ../make/$host/otp.mk:../make/otp.mk.in"
 
diff --git a/erts/configure.ac b/erts/configure.ac
index ce8a7da678..e79def7c42 100644
--- a/erts/configure.ac
+++ b/erts/configure.ac
@@ -3556,17 +3556,6 @@ fi
 AC_SUBST(CC32)
 AC_SUBST(CFLAGS32)
 
-dnl
-dnl ERTS_EMU_CMDLINE_FLAGS will force modification of config.h when
-dnl the emulator command line flags are modified by configure, which
-dnl in turn will make 'make' detect that files depending on config.h
-dnl needs to be rebuilt.
-dnl
-
-AC_DEFINE_UNQUOTED(ERTS_EMU_CMDLINE_FLAGS,
-"$STATIC_CFLAGS $CFLAGS $DEBUG_CFLAGS $EMU_THR_DEFS $DEFS $WERRORFLAGS $WFLAGS",
-[The only reason ERTS_EMU_CMDLINE_FLAGS exists is to force modification of config.h when the emulator command line flags are modified by configure])
-
 AC_SUBST(STATIC_CFLAGS)
 
 dnl ---------------------------------------------------------------------
@@ -3667,6 +3656,21 @@ AC_MSG_RESULT([yes])
 DEBUG_CFLAGS="-g -O0 $no_opt_CFLAGS"
 AC_SUBST(DEBUG_CFLAGS)
 
+no_opt_CXXFLAGS=$(echo " $CXXFLAGS" | sed 's/ -O[[^ ]]*/ /g')
+DEBUG_CXXFLAGS="-g -O0 $no_opt_CXXFLAGS"
+AC_SUBST(DEBUG_CXXFLAGS)
+
+dnl
+dnl ERTS_EMU_CMDLINE_FLAGS will force modification of config.h when
+dnl the emulator command line flags are modified by configure, which
+dnl in turn will make 'make' detect that files depending on config.h
+dnl needs to be rebuilt.
+dnl
+
+AC_DEFINE_UNQUOTED(ERTS_EMU_CMDLINE_FLAGS,
+"$STATIC_CFLAGS $CFLAGS $CXXFLAGS $DEBUG_CFLAGS $DEBUG_CXXFLAGS $EMU_THR_DEFS $DEFS $WERRORFLAGS $WFLAGS",
+[The only reason ERTS_EMU_CMDLINE_FLAGS exists is to force modification of config.h when the emulator command line flags are modified by configure])
+
 dnl ----------------------------------------------------------------------
 dnl Output the result.
 dnl ----------------------------------------------------------------------
diff --git a/erts/emulator/Makefile.in b/erts/emulator/Makefile.in
index 788784d04b..2183ec84dd 100644
--- a/erts/emulator/Makefile.in
+++ b/erts/emulator/Makefile.in
@@ -80,9 +80,11 @@ OPCODE_TABLES += \
     beam/emu/trace_instrs.tab
 endif
 
-
-DEBUG_CFLAGS = @DEBUG_CFLAGS@
+## These are here for ease of debugging purposes, they are not used anywher
 CONFIGURE_CFLAGS = @CFLAGS@
+CONFIGURE_CXXFLAGS = @CXXFLAGS@
+DEBUG_CFLAGS = @DEBUG_CFLAGS@
+DEBUG_CXXFLAGS = @DEBUG_CXXFLAGS@
 
 #
 # Run this make file with TYPE set to the type of emulator you want.
@@ -124,7 +126,8 @@ DIRTY_SCHEDULER_TEST=@DIRTY_SCHEDULER_TEST@
 
 ifeq ($(TYPE),debug)
 TYPEMARKER = .debug
-TYPE_FLAGS = $(DEBUG_CFLAGS) -DDEBUG
+TYPE_FLAGS = @DEBUG_CFLAGS@ -DDEBUG
+TYPE_CXXFLAGS = @DEBUG_CXXFLAGS@
 ENABLE_ALLOC_TYPE_VARS += debug
 ifeq ($(TARGET),win32)
 TYPE_FLAGS += -DNO_JUMP_TABLE
@@ -134,7 +137,8 @@ else
 
 ifeq ($(TYPE),gcov)
 TYPEMARKER = .gcov
-TYPE_FLAGS = $(DEBUG_CFLAGS) -DERTS_GCOV -DNO_JUMP_TABLE -fprofile-arcs -ftest-coverage -O0 -DERTS_CAN_INLINE=0 -DERTS_INLINE=
+TYPE_FLAGS = @DEBUG_CFLAGS@ -DERTS_GCOV -DNO_JUMP_TABLE -fprofile-arcs -ftest-coverage -O0 -DERTS_CAN_INLINE=0 -DERTS_INLINE=
+TYPE_CXXFLAGS = @DEBUG_CXXFLAGS@
 ifneq ($(findstring solaris,$(TARGET)),solaris)
 TYPE_LIBS = -lgcov
 endif
@@ -143,14 +147,16 @@ else
 
 ifeq ($(TYPE),valgrind)
 TYPEMARKER = .valgrind
-TYPE_FLAGS = $(DEBUG_CFLAGS) -DVALGRIND -DNO_JUMP_TABLE
+TYPE_FLAGS = @DEBUG_CFLAGS@ -DVALGRIND -DNO_JUMP_TABLE
+TYPE_CXXFLAGS = @DEBUG_CXXFLAGS@
 ENABLE_ALLOC_TYPE_VARS += valgrind
 else
 
 ifeq ($(TYPE),asan)
 PURIFY =
 TYPEMARKER = .asan
-TYPE_FLAGS = $(DEBUG_CFLAGS) -fsanitize=address -fsanitize-recover=address -fno-omit-frame-pointer -DADDRESS_SANITIZER
+TYPE_FLAGS = @DEBUG_CFLAGS@ -fsanitize=address -fsanitize-recover=address -fno-omit-frame-pointer -DADDRESS_SANITIZER
+TYPE_CXXFLAGS = @DEBUG_CXXFLAGS@
 LDFLAGS += -fsanitize=address
 ENABLE_ALLOC_TYPE_VARS += asan
 else
@@ -158,6 +164,7 @@ else
 ifeq ($(TYPE),gprof)
 TYPEMARKER = .gprof
 TYPE_FLAGS = @CFLAGS@ -DGPROF -pg -DERTS_CAN_INLINE=0 -DERTS_INLINE=
+TYPE_CXXFLAGS = @CXXFLAGS@
 LDFLAGS += -pg
 ENABLE_ALLOC_TYPE_VARS += gprof
 NO_INLINE_FUNCTIONS=true
@@ -167,23 +174,27 @@ ifeq ($(TYPE),lcnt)
 TYPEMARKER = .lcnt
 TYPE_FLAGS = @CFLAGS@ -DERTS_ENABLE_LOCK_COUNT
 ENABLE_ALLOC_TYPE_VARS += lcnt
+TYPE_CXXFLAGS = @CXXFLAGS@
 else
 
 ifeq ($(TYPE),frmptr)
 OMIT_OMIT_FP=yes
 TYPEMARKER = .frmptr
 TYPE_FLAGS = @CFLAGS@ -DERTS_FRMPTR
+TYPE_CXXFLAGS = @CXXFLAGS@
 else
 
 ifeq ($(TYPE),icount)
 TYPEMARKER = .icount
 TYPE_FLAGS = @CFLAGS@ -DERTS_OPCODE_COUNTER_SUPPORT
+TYPE_CXXFLAGS = @CXXFLAGS@
 else
 
 # If type isn't one of the above, it *is* opt type...
 override TYPE=opt
 TYPEMARKER =
 TYPE_FLAGS = @CFLAGS@
+TYPE_CXXFLAGS = @CXXFLAGS@
 endif
 endif
 endif
@@ -276,7 +287,7 @@ ifeq ($(FLAVOR),jit)
 CFLAGS  += -DBEAMASM=1
 ENABLE_ALLOC_TYPE_VARS += beamasm
 endif
-CXXFLAGS = $(filter-out -Werror=implicit -Wstrict-prototypes -Wmissing-prototypes -Wdeclaration-after-statement,$(CFLAGS)) @CXXFLAGS@
+CXXFLAGS = $(filter-out -Werror=implicit -Wstrict-prototypes -Wmissing-prototypes -Wdeclaration-after-statement,$(CFLAGS)) $(TYPE_CXXFLAGS)
 HCC     = @HCC@
 LD      = @LD@
 DEXPORT = @DEXPORT@
-- 
2.43.0

openSUSE Build Service is sponsored by