From 7ba565258d28441358ba21b7696986534f020c45 Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Fri, 17 Mar 2017 08:29:28 +0100 Subject: [PATCH] koch: better valgrind support --- koch.nim | 24 +++++++++++++++++++----- tools/nimgrind.supp | 7 +++++++ 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/koch.nim b/koch.nim index 7c8401c57..f5e4d3ee3 100644 --- a/koch.nim +++ b/koch.nim @@ -513,12 +513,26 @@ proc pushCsources() = setCurrentDir(cwd) proc valgrind(cmd: string) = - exec("nim c " & cmd) - var i = cmd.len-1 - while i >= 0 and cmd[i] != ' ': dec i - let file = if i >= 0: substr(cmd, i+1) else: cmd + # somewhat hacky: '=' sign means "pass to valgrind" else "pass to Nim" + let args = parseCmdLine(cmd) + var nimcmd = "" + var valcmd = "" + for i, a in args: + if i == args.len-1: + # last element is the filename: + valcmd.add ' ' + valcmd.add changeFileExt(a, ExeExt) + nimcmd.add ' ' + nimcmd.add a + elif '=' in a: + valcmd.add ' ' + valcmd.add a + else: + nimcmd.add ' ' + nimcmd.add a + exec("nim c" & nimcmd) let supp = getAppDir() / "tools" / "nimgrind.supp" - exec("valgrind --suppressions=" & supp & " " & changeFileExt(file, "")) + exec("valgrind --suppressions=" & supp & valcmd) proc showHelp() = quit(HelpText % [VersionAsString & spaces(44-len(VersionAsString)), diff --git a/tools/nimgrind.supp b/tools/nimgrind.supp index 44499ebc7..0dffdc37f 100644 --- a/tools/nimgrind.supp +++ b/tools/nimgrind.supp @@ -12,3 +12,10 @@ fun:markStackAndRegisters* ... } +{ + unmarkStackAndRegisters_Value8 + Memcheck:Value8 + ... + fun:unmarkStackAndRegisters_zoTIuavlrCHyw3B8MBaLJA_6 + ... +}