]> git.gag.com Git - fw/openocd/commitdiff
jimtcl: restrict memory leak workaround on Linux only
authorAntonio Borneo <borneo.antonio@gmail.com>
Thu, 13 May 2021 14:03:22 +0000 (16:03 +0200)
committerAntonio Borneo <borneo.antonio@gmail.com>
Sat, 15 May 2021 19:59:36 +0000 (20:59 +0100)
The workaround for jimtcl 0.80 in commit 36ae487ed04b ("jimtcl:
add temporary workaround for memory leak in jimtcl 0.80") issues a
compile time error on macOS:
../src/helper/command.c:157:22: error: aliases are not
supported on darwin
__attribute__((weak, alias("workaround_createcommand")));
The OS is x86_64-apple-darwin19.6.0 and the compiler used is
x86_64-apple-darwin13.4.0-clang.

Restrict the workaround on Linux host only. The fix for 'expr'
syntax change is already merged and the workaround will be dropped
soon.

Change-Id: I925109a9c57c05f8c95b70bc7d6604eb1172cd79
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reported-by: Adam JeliƄski <ajelinski@users.sourceforge.net>
Fixes: 36ae487ed04b ("jimtcl: add temporary workaround for memory leak in jimtcl 0.80")
Fixes: https://sourceforge.net/p/openocd/tickets/304/
Reviewed-on: http://openocd.zylin.com/6241
Tested-by: jenkins
src/helper/command.c

index 0c6e785f2356219d74061fa5d68bc9ab94bc4cd5..3a931b5a746a183764303980506010547883c3c1 100644 (file)
@@ -144,12 +144,13 @@ static void command_log_capture_finish(struct log_capture_state *state)
  * Use the internal jimtcl API Jim_CreateCommandObj, not exported by jim.h,
  * and override the bugged API through preprocessor's macro.
  * This workaround works only when jimtcl is compiled as OpenOCD submodule.
  * Use the internal jimtcl API Jim_CreateCommandObj, not exported by jim.h,
  * and override the bugged API through preprocessor's macro.
  * This workaround works only when jimtcl is compiled as OpenOCD submodule.
+ * It's broken on macOS, so it's currently restricted on Linux only.
  * 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.
  * To be removed when OpenOCD will switch to jimtcl 0.81
  */
  * 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.
  * To be removed when OpenOCD will switch to jimtcl 0.81
  */
-#if JIM_VERSION == 80
+#if JIM_VERSION == 80 && defined __linux__
 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,
 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,
@@ -168,7 +169,7 @@ static int workaround_createcommand(Jim_Interp *interp, const char *cmdName,
        return retval;
 }
 #define Jim_CreateCommand workaround_createcommand
        return retval;
 }
 #define Jim_CreateCommand workaround_createcommand
-#endif /* JIM_VERSION == 80 */
+#endif /* JIM_VERSION == 80 && defined __linux__*/
 /* FIXME: end of workaround for memory leak in jimtcl 0.80 */
 
 static int command_retval_set(Jim_Interp *interp, int retval)
 /* FIXME: end of workaround for memory leak in jimtcl 0.80 */
 
 static int command_retval_set(Jim_Interp *interp, int retval)