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

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

commit 154a3aae990876d55868f83176d521f797ae1802
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
---
 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 227feb2c89..9f50c236fd 100644
--- a/main/configure.ac
+++ b/main/configure.ac
@@ -240,6 +240,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
@@ -1530,6 +1537,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 a12b61ce37..875d741428 100644
--- a/main/set_soenv.in
+++ b/main/set_soenv.in
@@ -1998,6 +1998,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 e449708dfb..e7b8cf6558 100644
--- a/main/solenv/gbuild/platform/freebsd.mk
+++ b/main/solenv/gbuild/platform/freebsd.mk
@@ -292,6 +292,12 @@ gb_DEBUG_CFLAGS := -ggdb3
 endif
 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 a4c57e51ca..83bfbdae27 100644
--- a/main/solenv/gbuild/platform/linux.mk
+++ b/main/solenv/gbuild/platform/linux.mk
@@ -159,6 +159,12 @@ gb_DEBUG_CFLAGS := -ggdb3 -finline-limit=0 -fno-inline 
-fno-default-inline
 endif
 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
 gb_COMPILEROPT1FLAGS := -O0
diff --git a/main/solenv/gbuild/platform/macosx.mk 
b/main/solenv/gbuild/platform/macosx.mk
index a2fa3183a7..b8bd0f8eb1 100644
--- a/main/solenv/gbuild/platform/macosx.mk
+++ b/main/solenv/gbuild/platform/macosx.mk
@@ -145,6 +145,12 @@ else
 gb_DEBUG_CFLAGS := -g3
 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
 gb_COMPILEROPT1FLAGS := -O0
diff --git a/main/solenv/gbuild/platform/os2.mk 
b/main/solenv/gbuild/platform/os2.mk
index 4eac1e2a57..2fd75d6a87 100644
--- a/main/solenv/gbuild/platform/os2.mk
+++ b/main/solenv/gbuild/platform/os2.mk
@@ -312,6 +312,12 @@ else
 gb_DEBUG_CFLAGS := -g3
 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 4ad02c3231..49390ea8f6 100644
--- a/main/solenv/gbuild/platform/windows.mk
+++ b/main/solenv/gbuild/platform/windows.mk
@@ -287,6 +287,10 @@ ifeq ($(gb_DEBUGGING),TRUE)
 gb_LinkTarget_LDFLAGS += -DEBUG
 endif
 
+ifeq ($(ENABLE_SANITIZER),TRUE)
+$(eval $(call gb_Output_error,Sanitizer unsupported under OS $(OS)))
+endif
+
 # this does not use CFLAGS so it is not overridable
 ifneq ($(ENABLE_CRASHDUMP),)
 gb_CFLAGS+=-Zi
diff --git a/main/solenv/gbuild/platform/winmingw.mk 
b/main/solenv/gbuild/platform/winmingw.mk
index e6c4713fbc..758b0bad9c 100644
--- a/main/solenv/gbuild/platform/winmingw.mk
+++ b/main/solenv/gbuild/platform/winmingw.mk
@@ -164,6 +164,12 @@ else
 gb_DEBUG_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
+
 ifeq ($(gb_DEBUGLEVEL),2)
 gb_COMPILEROPTFLAGS := -O0
 else
diff --git a/main/solenv/inc/unxbsdi2.mk b/main/solenv/inc/unxbsdi2.mk
index 9b581cfa87..ed5d0326b3 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 4ab61ba8d9..e6461138db 100644
--- a/main/solenv/inc/unxfbsd.mk
+++ b/main/solenv/inc/unxfbsd.mk
@@ -119,6 +119,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
@@ -201,6 +206,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 abe9832f19..d10b997144 100644
--- a/main/solenv/inc/unxlng.mk
+++ b/main/solenv/inc/unxlng.mk
@@ -98,6 +98,11 @@ CFLAGSCXX= -pipe $(ARCH_FLAGS) -std=gnu++11
 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
@@ -189,6 +194,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 9cb1c134e4..2d4bfc30b0 100644
--- a/main/solenv/inc/unxmacc.mk
+++ b/main/solenv/inc/unxmacc.mk
@@ -132,6 +132,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
 
@@ -210,6 +216,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