summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2020-06-03 08:55:32 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2020-06-03 14:08:37 +0200
commit756c027198adc5212d46d72e0628c90698652af5 (patch)
tree53b6f4d0f42ef2c453f6c537f861adef395b8b29
parent03f872a80a3a7477c206454095f629cb0e8e91dd (diff)
enable backtraces for unit tests on macos
Change-Id: I4f07e1e7b35bccc217d78662a45ac5eaf5865ee7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/95394 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
-rwxr-xr-xsolenv/bin/lldb-core-bt.sh50
-rw-r--r--solenv/gbuild/platform/macosx.mk3
2 files changed, 53 insertions, 0 deletions
diff --git a/solenv/bin/lldb-core-bt.sh b/solenv/bin/lldb-core-bt.sh
new file mode 100755
index 000000000000..2bd982ec21e9
--- /dev/null
+++ b/solenv/bin/lldb-core-bt.sh
@@ -0,0 +1,50 @@
+#!/bin/sh
+#
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+#
+
+EXECUTABLE=${1}
+COREDIR=${2}
+EXITCODE=${3}
+
+if test -n "$(which lldb)"
+then
+ found=
+ for COREFILE in "$COREDIR"/core*
+ do
+ if [ -f "$COREFILE" ]
+ then
+ printf '\nIt looks like %s generated %s\nBacktraces:\n' \
+ "$EXECUTABLE" "$COREFILE"
+ $LLDBCOMMANDFILE=$(mktemp)
+ guess=$(file "$COREFILE")
+ guess=${guess#* execfn: \'}
+ guess=${guess%%\'*}
+ if [ ! -x "$guess" ]; then guess=$EXECUTABLE; fi
+ printf "target create -c $COREFILE $guess\nthread backtrace all\nquit\n" >"$LLDBCOMMANDFILE"
+ lldb -s "$LLDBCOMMANDFILE" --batch \
+ && found=x
+ rm "$LLDBCOMMANDFILE"
+ echo
+ fi
+ done
+ if [ -z "$found" -a "$EXITCODE" -ge 128 ]; then
+ echo
+ echo "No core file identified in directory ${COREDIR}"
+ echo "To show backtraces for crashes during test execution,"
+ echo "enable core files with:"
+ echo
+ echo " ulimit -c unlimited"
+ echo
+ exit 1
+ fi
+else
+ echo "You need lldb in your path to show backtraces"
+ exit 1
+fi
diff --git a/solenv/gbuild/platform/macosx.mk b/solenv/gbuild/platform/macosx.mk
index c743511207ce..f9a805b6b62e 100644
--- a/solenv/gbuild/platform/macosx.mk
+++ b/solenv/gbuild/platform/macosx.mk
@@ -266,7 +266,10 @@ gb_CppunitTest_malloc_check := MallocScribble=1 MallocPreScribble=1
define gb_CppunitTest_CppunitTest_platform
$(call gb_LinkTarget_get_target,$(2)) : RPATH :=
$(call gb_LinkTarget_get_target,$(2)) : LAYER := NONE
+endef
+define gb_CppunitTest_postprocess
+$(SRCDIR)/solenv/bin/lldb-core-bt.sh $(1) $(2) $(3)
endef
# JunitTest class