aboutsummaryrefslogtreecommitdiffstats
path: root/testing/openocd-git/fix-dynamic-linking.patch
diff options
context:
space:
mode:
Diffstat (limited to 'testing/openocd-git/fix-dynamic-linking.patch')
-rw-r--r--testing/openocd-git/fix-dynamic-linking.patch25
1 files changed, 25 insertions, 0 deletions
diff --git a/testing/openocd-git/fix-dynamic-linking.patch b/testing/openocd-git/fix-dynamic-linking.patch
new file mode 100644
index 0000000000..44cec60630
--- /dev/null
+++ b/testing/openocd-git/fix-dynamic-linking.patch
@@ -0,0 +1,25 @@
+Without this patch, linking against libjim dynamically will cause an
+infinite loop. We just fix the memory leak, for which this thingy is
+supposed to be a workaround, directly in the jimtcl package instead.
+
+See: https://gitlab.alpinelinux.org/alpine/aports/-/issues/13046#note_182639
+
+diff -upr a/src/helper/command.c b/src/helper/command.c
+--- a/src/helper/command.c 2021-10-02 11:47:43.452995606 +0200
++++ b/src/helper/command.c 2021-10-02 11:51:10.803049538 +0200
+@@ -148,9 +148,14 @@ static void command_log_capture_finish(s
+ * If jimtcl is linked-in from a precompiled library, either static or dynamic,
+ * the symbol Jim_CreateCommandObj is not exported and the build will use the
+ * bugged API.
++ *
++ * This workaround creates an infinite loop when OpenOCD is linked
++ * dynamically against jimtcl on Alpine and thus only enabled if the internal
++ * version of jimtcl is used.
++ *
+ * To be removed when OpenOCD will switch to jimtcl 0.81
+ */
+-#if JIM_VERSION == 80 && defined __linux__
++#if JIM_VERSION == 80 && defined __linux__ && defined INTERNAL_JIMTCL
+ static int workaround_createcommand(Jim_Interp *interp, const char *cmdName,
+ Jim_CmdProc *cmdProc, void *privData, Jim_DelCmdProc *delProc);
+ int Jim_CreateCommandObj(Jim_Interp *interp, Jim_Obj *cmdNameObj,