Fix setting the snuck in env vars when using lldb

When using the CPPUNITTRACE make variable, the makefiles try to sneak in
some arguments to the debugger to set the library path and some other
things. It also set some arguments for malloc debugging which are
hardcoded to be in gdb format for Unix platforms and lldb format for OSX
platforms. That means that it won’t work if you use
CPPUNITTRACE="lldb --" on Linux. This patch tries to fix that by instead
making the malloc variables just be a debugger-neutral list of
variables. That is then mapped to the right command for the chosen
debugger using the $(foreach) function.

Change-Id: Iebe131365c57e987deafaa7878f2f6dfebd4b6d0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194893
Reviewed-by: Neil Roberts <bpeeluk@yahoo.co.uk>
Tested-by: Jenkins
This commit is contained in:
Neil Roberts
2025-12-06 08:58:42 +01:00
parent c0d3205c46
commit ffec6130f2
3 changed files with 17 additions and 6 deletions
+15 -4
View File
@@ -32,17 +32,28 @@ gb_CppunitTest_coredumpctl_run := $(SYSTEMD_RUN) --scope --user --unit="$$LIBO_T
endif
ifneq ($(strip $(CPPUNITTRACE)),)
# sneak (a) setting the LD_LIBRARY_PATH, and (b) setting malloc debug flags, into the debugger command line
gb_CppunitTest_CommonEnvVars := \
$(if $(PYTHONWARNINGS),PYTHONWARNINGS=$(PYTHONWARNINGS)) \
$(gb_CppunitTest_malloc_check)
gb_CppunitTest_EnvVars := $(gb_CppunitTest_CPPTESTPRECOMMAND) \
$(gb_CppunitTest_CommonEnvVars)
gb_PythonTest_EnvVars := $(gb_PythonTest_PRECOMMAND) \
$(gb_CppunitTest_CommonEnvVars)
ifneq ($(filter gdb,$(CPPUNITTRACE)),)
# sneak (a) setting the LD_LIBRARY_PATH, and (b) setting malloc debug flags, into the "gdb --args" command line
gb_CppunitTest_GDBTRACE := $(subst gdb,\
gdb -return-child-result -ex "add-auto-load-safe-path $(INSTDIR)" -ex "set environment $(subst =, ,$(gb_CppunitTest_CPPTESTPRECOMMAND))" $(if $(PYTHONWARNINGS),-ex 'set environment PYTHONWARNINGS $(PYTHONWARNINGS)') $(gb_CppunitTest_malloc_check) $(gb_CppunitTest_DEBUGCPPUNIT),\
gdb -return-child-result -ex "add-auto-load-safe-path $(INSTDIR)" \
$(foreach var,$(gb_CppunitTest_EnvVars),-ex "set environment $(subst =, ,$(var))") \
$(gb_CppunitTest_DEBUGCPPUNIT),\
$(CPPUNITTRACE))
gb_PythonTest_GDBTRACE := $(subst gdb,\
gdb -return-child-result -ex "add-auto-load-safe-path $(INSTDIR)" -ex "set environment $(subst =, ,$(gb_PythonTest_PRECOMMAND))" $(if $(PYTHONWARNINGS),-ex 'set environment PYTHONWARNINGS $(PYTHONWARNINGS)') $(gb_CppunitTest_malloc_check) $(gb_CppunitTest_DEBUGCPPUNIT),\
gdb -return-child-result -ex "add-auto-load-safe-path $(INSTDIR)" \
$(foreach var,$(gb_PythonTest_EnvVars),-ex "set environment $(subst =, ,$(var))") \
$(gb_CppunitTest_DEBUGCPPUNIT),\
$(CPPUNITTRACE))
else ifneq ($(filter lldb,$(CPPUNITTRACE)),)
gb_CppunitTest_GDBTRACE := $(subst lldb,\
lldb -o "env $(gb_CppunitTest_CPPTESTPRECOMMAND)" $(gb_CppunitTest_malloc_check),\
lldb $(foreach var,$(gb_CppunitTest_EnvVars),-o "env $(var)"),\
$(CPPUNITTRACE))
gb_PythonTest_GDBTRACE := $(gb_CppunitTest_GDBTRACE)
else
+1 -1
View File
@@ -268,7 +268,7 @@ gb_CppunitTest_CPPTESTPRECOMMAND := \
$(call gb_Helper_extend_ld_path,$(gb_Library_DLLDIR):$(WORKDIR)/UnpackedTarball/cppunit/src/cppunit/.libs)
gb_CppunitTest_get_filename = libtest_$(1).dylib
gb_CppunitTest_get_ilibfilename = $(gb_CppunitTest_get_filename)
gb_CppunitTest_malloc_check := -o "env MallocScribble=1" -o "env MallocPreScribble=1"
gb_CppunitTest_malloc_check := MallocScribble=1 MallocPreScribble=1
define gb_CppunitTest_CppunitTest_platform
$(call gb_LinkTarget_get_target,$(2)) : RPATH :=
+1 -1
View File
@@ -343,7 +343,7 @@ gb_CppunitTest_CPPTESTPRECOMMAND := \
$(call gb_Helper_extend_ld_path,$(WORKDIR)/UnpackedTarball/cppunit/src/cppunit/.libs)
gb_CppunitTest_get_filename = libtest_$(1).so
gb_CppunitTest_get_ilibfilename = $(gb_CppunitTest_get_filename)
gb_CppunitTest_malloc_check := -ex 'set environment MALLOC_CHECK_=2; set environment MALLOC_PERTURB_=153'
gb_CppunitTest_malloc_check := MALLOC_CHECK_=2 MALLOC_PERTURB_=153
define gb_CppunitTest_CppunitTest_platform
$(call gb_LinkTarget_get_target,$(2)) : RPATH := $(call gb_Library__get_rpath,$(call gb_LinkTarget__get_rpath_for_layer,NONE))