This is an automated email from the ASF dual-hosted git repository.

ardovm pushed a commit to branch AOO41X
in repository https://gitbox.apache.org/repos/asf/openoffice.git

commit 666d80c10772b7ea9071c20e3535a9da6c8e1710
Author: Arrigo Marchiori <[email protected]>
AuthorDate: Sat Sep 12 22:01:40 2026 +0200

    Enable compilation with address sanitizer
    
    Added configure parameter --enable-sanitizer
    Not supported under Windows
    
    (cherry picked from commit 5ac3b07b32a54a84f38c287095891b7ce8fd2c92)
---
 main/configure.ac                       | 20 ++++++++++++++++++++
 main/set_soenv.in                       |  1 +
 main/solenv/gbuild/platform/freebsd.mk  |  6 ++++++
 main/solenv/gbuild/platform/linux.mk    |  6 ++++++
 main/solenv/gbuild/platform/macosx.mk   |  6 ++++++
 main/solenv/gbuild/platform/os2.mk      |  6 ++++++
 main/solenv/gbuild/platform/windows.mk  |  4 ++++
 main/solenv/gbuild/platform/winmingw.mk |  6 ++++++
 main/solenv/inc/unxbsdi2.mk             |  5 +++++
 main/solenv/inc/unxfbsd.mk              | 10 ++++++++++
 main/solenv/inc/unxlng.mk               | 10 ++++++++++
 main/solenv/inc/unxmacc.mk              | 11 +++++++++++
 12 files changed, 91 insertions(+)

diff --git a/main/configure.ac b/main/configure.ac
index 109cb3e9db..b1d8ab367f 100644
--- a/main/configure.ac
+++ b/main/configure.ac
@@ -235,6 +235,13 @@ AC_ARG_ENABLE(symbols,
                           Enabling symbols disables the stripping of the solver
                           (--disable-strip-solver).
 ],,)
+AC_ARG_ENABLE(sanitizer,
+[  --enable-sanitizer       Enables -fsanitize=address compiler flag.
+                          Works with GCC and Clang.
+                          
+                          It is suggested to add --enable-symbols so that the
+                          address sanitizer can give more detailed information.
+],,)
 AC_ARG_ENABLE(strip-solver,
 [  --disable-strip-solver  Disable the stripping of the solver.
                           By default the solver is stripped unless a build with
@@ -1355,6 +1362,19 @@ else
 fi
 AC_SUBST(ENABLE_SYMBOLS)
 
+dnl ===================================================================
+dnl Set the ENABLE_SANITIZER variable. (Activate --enable-sanitizer)
+dnl ===================================================================
+AC_MSG_CHECKING([whether to enable address sanitizer])
+if test -n "$enable_sanitizer" && test "$enable_sanitizer" != "no"; then
+   ENABLE_SANITIZER="TRUE"
+   AC_MSG_RESULT([yes])
+else
+   ENABLE_SANITIZER="FALSE"
+   AC_MSG_RESULT([no])
+fi
+AC_SUBST(ENABLE_SANITIZER)
+
 dnl ===================================================================
 dnl Determine if the solver is to be stripped or not.
 dnl ===================================================================
diff --git a/main/set_soenv.in b/main/set_soenv.in
index 320c5beca4..5e602a41c0 100644
--- a/main/set_soenv.in
+++ b/main/set_soenv.in
@@ -1843,6 +1843,7 @@ ToFile( "MINGWSTRIP",        "@MINGWSTRIP@",     "e" );
 ToFile( "USE_SYSTEM_STL",    "@USE_SYSTEM_STL@", "e" );
 ToFile( "ALLOC",             "@ALLOC@",          "e" );
 ToFile( "ENABLE_SYMBOLS",    "@ENABLE_SYMBOLS@",    "e" );
+ToFile( "ENABLE_SANITIZER",  "@ENABLE_SANITIZER@",    "e" );
 ToFile( "DISABLE_STRIP",     "@DISABLE_STRIP@",     "e" );
 ToFile( "LFS_CFLAGS",        "@LFS_CFLAGS@",     "e" );
 ToFile( "ENABLE_CRASHDUMP",  "@ENABLE_CRASHDUMP@",  "e" );
diff --git a/main/solenv/gbuild/platform/freebsd.mk 
b/main/solenv/gbuild/platform/freebsd.mk
index cddce7b48c..dad5ba9e3d 100644
--- a/main/solenv/gbuild/platform/freebsd.mk
+++ b/main/solenv/gbuild/platform/freebsd.mk
@@ -251,6 +251,12 @@ gb_LinkTarget_CFLAGS += -ggdb3 -finline-limit=0 
-fno-inline -fno-default-inline
 
 endif
 
+ifeq ($(ENABLE_SANITIZER),TRUE)
+gb_CFLAGS += -fsanitize=address
+gb_CXXFLAGS += -fsanitize=address
+gb_LinkTarget_LDFLAGS += -fsanitize=address
+endif
+
 gb_LinkTarget_INCLUDE := $(filter-out %/stl, $(subst -I. , ,$(SOLARINC)))
 gb_LinkTarget_INCLUDE_STL := $(filter %/stl, $(subst -I. , ,$(SOLARINC)))
 
diff --git a/main/solenv/gbuild/platform/linux.mk 
b/main/solenv/gbuild/platform/linux.mk
index 6ab0b336de..b0cecdd3a7 100644
--- a/main/solenv/gbuild/platform/linux.mk
+++ b/main/solenv/gbuild/platform/linux.mk
@@ -138,6 +138,12 @@ gb_LinkTarget_LDFLAGS += \
 
 endif
 
+ifeq ($(ENABLE_SANITIZER),TRUE)
+gb_CFLAGS += -fsanitize=address
+gb_CXXFLAGS += -fsanitize=address
+gb_LinkTarget_LDFLAGS += -fsanitize=address
+endif
+
 ifeq ($(gb_DEBUGLEVEL),2)
 gb_COMPILEROPTFLAGS := -O0
 else
diff --git a/main/solenv/gbuild/platform/macosx.mk 
b/main/solenv/gbuild/platform/macosx.mk
index 3eea512976..06ede863e8 100644
--- a/main/solenv/gbuild/platform/macosx.mk
+++ b/main/solenv/gbuild/platform/macosx.mk
@@ -143,6 +143,12 @@ gb_LinkTarget_LDFLAGS := \
        $(subst -L../lib , ,$(SOLARLIB)) \
 #man ld says: obsolete -Wl,-multiply_defined,suppress \
 
+ifeq ($(ENABLE_SANITIZER),TRUE)
+gb_CFLAGS += -fsanitize=address
+gb_CXXFLAGS += -fsanitize=address
+gb_LinkTarget_LDFLAGS += -fsanitize=address
+endif
+
 ifeq ($(gb_DEBUGLEVEL),2)
 gb_COMPILEROPTFLAGS := -O0
 else
diff --git a/main/solenv/gbuild/platform/os2.mk 
b/main/solenv/gbuild/platform/os2.mk
index 692f98a446..976012ceb5 100644
--- a/main/solenv/gbuild/platform/os2.mk
+++ b/main/solenv/gbuild/platform/os2.mk
@@ -290,6 +290,12 @@ gb_LinkTarget_CXXFLAGS += -g
 gb_LinkTarget_OBJCXXFLAGS += -g
 endif
 
+ifeq ($(ENABLE_SANITIZER),TRUE)
+gb_CFLAGS += -fsanitize=address
+gb_CXXFLAGS += -fsanitize=address
+gb_LinkTarget_LDFLAGS += -fsanitize=address
+endif
+
 gb_LinkTarget_INCLUDE :=\
        $(filter-out %/stl, $(subst -I. , ,$(SOLARINC))) \
        $(foreach inc,$(subst ;, ,$(JDKINC)),-I$(inc)) \
diff --git a/main/solenv/gbuild/platform/windows.mk 
b/main/solenv/gbuild/platform/windows.mk
index b9dd25f3ec..725eb0edf9 100644
--- a/main/solenv/gbuild/platform/windows.mk
+++ b/main/solenv/gbuild/platform/windows.mk
@@ -193,6 +193,10 @@ gb_LinkTarget_LDFLAGS := \
        -SUBSYSTEM:CONSOLE \
        $(patsubst %,-LIBPATH:%,$(filter-out .,$(subst ;, ,$(subst 
\,/,$(ILIB))))) \
 
+ifeq ($(ENABLE_SANITIZER),TRUE)
+$(eval $(call gb_Output_error,Sanitizer unsupported under OS $(OS)))
+endif
+
 ifneq ($(ENABLE_CRASHDUMP),)
 gb_LinkTarget_LDFLAGS += -DEBUG
 gb_CFLAGS+=-Zi
diff --git a/main/solenv/gbuild/platform/winmingw.mk 
b/main/solenv/gbuild/platform/winmingw.mk
index 0dd65bb415..4502131c39 100644
--- a/main/solenv/gbuild/platform/winmingw.mk
+++ b/main/solenv/gbuild/platform/winmingw.mk
@@ -164,6 +164,12 @@ ifeq ($(MINGW_GCCLIB_EH),YES)
 gb_LinkTarget_LDFLAGS += -shared-libgcc
 endif
 
+ifeq ($(ENABLE_SANITIZER),TRUE)
+gb_CFLAGS += -fsanitize=address
+gb_CXXFLAGS += -fsanitize=address
+gb_LinkTarget_LDFLAGS += -fsanitize=address
+endif
+
 ifeq ($(gb_DEBUGLEVEL),2)
 gb_COMPILEROPTFLAGS := -O0
 else
diff --git a/main/solenv/inc/unxbsdi2.mk b/main/solenv/inc/unxbsdi2.mk
index 835016ad96..841b453606 100644
--- a/main/solenv/inc/unxbsdi2.mk
+++ b/main/solenv/inc/unxbsdi2.mk
@@ -73,6 +73,11 @@ CFLAGS_NO_EXCEPTIONS=-fno-exceptions
 CFLAGSCXX= -pipe -frtti $(ARCH_FLAGS)
 PICSWITCH:=-fpic
 
+.IF "$(ENABLE_SANITIZER)"=="TRUE"
+CFLAGSCC += -fsanitize=address
+CFLAGSCXX += -fsanitize=address
+.ENDIF
+
 # Compiler flags for compiling static object in multi threaded environment 
with graphical user interface
 CFLAGSOBJGUIMT=
 # Compiler flags for compiling static object in multi threaded environment 
with character user interface
diff --git a/main/solenv/inc/unxfbsd.mk b/main/solenv/inc/unxfbsd.mk
index 006b8157a1..11868ba5c9 100644
--- a/main/solenv/inc/unxfbsd.mk
+++ b/main/solenv/inc/unxfbsd.mk
@@ -118,6 +118,11 @@ CFLAGSCC += -fstack-protector
 CFLAGSCXX += -fstack-protector
 .ENDIF
 
+.IF "$(ENABLE_SANITIZER)"=="TRUE"
+CFLAGSCC += -fsanitize=address
+CFLAGSCXX += -fsanitize=address
+.ENDIF
+
 # Compiler flags for compiling static object in multi threaded environment 
with graphical user interface
 CFLAGSOBJGUIMT=
 # Compiler flags for compiling static object in multi threaded environment 
with character user interface
@@ -193,6 +198,11 @@ LINKFLAGSPROF=
 LINKFLAGSDEBUG=-g
 LINKFLAGSOPT=
 
+# Flag for enabling address sanitizer
+.IF "$(ENABLE_SANITIZER)"=="TRUE"
+LINKFLAGS += -fsanitize=address
+.ENDIF
+
 # linker flags for optimization (symbol hashtable)
 # for now, applied to symbol scoped libraries, only
 LINKFLAGSOPTIMIZE*=-Wl,-O1
diff --git a/main/solenv/inc/unxlng.mk b/main/solenv/inc/unxlng.mk
index f757ef14fb..dbd8959beb 100644
--- a/main/solenv/inc/unxlng.mk
+++ b/main/solenv/inc/unxlng.mk
@@ -89,6 +89,11 @@ CFLAGSCXX= -pipe $(ARCH_FLAGS) -std=gnu++98
 CFLAGSCXX += -fvisibility-inlines-hidden
 .ENDIF # "$(HAVE_GCC_VISIBILITY_FEATURE)" == "TRUE"
 
+.IF "$(ENABLE_SANITIZER)"=="TRUE"
+CFLAGSCC += -fsanitize=address
+CFLAGSCXX += -fsanitize=address
+.ENDIF
+
 CFLAGS_CREATE_PCH=-x c++-header -I$(INCPCH) -DPRECOMPILED_HEADERS
 CFLAGS_USE_PCH=-I$(SLO)$/pch -DPRECOMPILED_HEADERS -Winvalid-pch
 CFLAGS_USE_EXCEPTIONS_PCH=-I$(SLO)$/pch_ex -DPRECOMPILED_HEADERS -Winvalid-pch
@@ -178,6 +183,11 @@ LINKFLAGSPROF=
 LINKFLAGSDEBUG=-g
 LINKFLAGSOPT=
 
+# Flag for enabling address sanitizer
+.IF "$(ENABLE_SANITIZER)"=="TRUE"
+LINKFLAGS += -fsanitize=address
+.ENDIF
+
 # linker flags for optimization (symbol hashtable)
 # for now, applied to symbol scoped libraries, only
 LINKFLAGSOPTIMIZE*=-Wl,-O1
diff --git a/main/solenv/inc/unxmacc.mk b/main/solenv/inc/unxmacc.mk
index 11c0e78039..90b7760e0c 100644
--- a/main/solenv/inc/unxmacc.mk
+++ b/main/solenv/inc/unxmacc.mk
@@ -120,6 +120,12 @@ CFLAGSPROF=
 CFLAGSDEBUG=-g
 CFLAGSDBGUTIL=
 
+# Flags for enabling address sanitizer
+.IF "$(ENABLE_SANITIZER)"=="TRUE"
+CFLAGSCC += -fsanitize=address
+CFLAGSCXX += -fsanitize=address
+.ENDIF
+
 # Flag to specify output file to compiler/linker
 CFLAGSOUTOBJ=-o
 
@@ -199,6 +205,11 @@ LINKFLAGSPROF=
 LINKFLAGSDEBUG=-g
 LINKFLAGSOPT=
 
+# Flag for enabling address sanitizer
+.IF "$(ENABLE_SANITIZER)"=="TRUE"
+LINKFLAGS += -fsanitize=address
+.ENDIF
+
 # ---------------------------------
 #  MacOS X shared library specifics
 # ---------------------------------

Reply via email to