← cproj

add also logic for relaese and debug , can be either or for now

e13f86eea991454e204f6e4322a107f7fb60952e · Ovidiu · Aug 30, 2020 20:17

+121 −200 · 6 files changed

  • .gitignore +4 −0
  • Tuprules.tup +13 −5
  • obj/Tupfile +6 −1
  • test/program_debug.txt +97 −97
  • test/program_release.txt +0 −97
  • tup.config +1 −0
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..d52bf8a
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+**/.tup
+*.a
+*.o
+**/bin/program*
diff --git a/Tuprules.tup b/Tuprules.tup
index 6e38d3e..92f6208 100644
--- a/Tuprules.tup
+++ b/Tuprules.tup
@@ -19,13 +19,21 @@ VALGRND  += --track-origins=yes
 VALGRND  += --verbose
 VALGRND  += --log-file=
 
-# Do the object files
-!ccodbg = |> clang $(CDEBUG) -I&(libdir) -c %f -o &(objdir)/%o |> %B_debug.o
+ifeq (@(DO_RELEASE),y)
+  # Do the object files
 !ccorel = |> clang $(CRELEASE) -I&(libdir) -c %f -o &(objdir)/%o |> %B_release.o
-# macro for the archive command
+  # macro for the archive command
 !ar = |> ar crs %o %f |>
-# Do binaries, debug and release 
-!ccbdbg = |> clang $(CDEBUG) %f -o &(bindir)/%o |> %B
+  # Do binaries, debug and release 
 !ccbrel = |> clang $(CRELEASE) %f -o &(bindir)/%o |> %B
+else
+  # Do the object files
+!ccodbg = |> clang $(CDEBUG) -I&(libdir) -c %f -o &(objdir)/%o |> %B_debug.o
+  # macro for the archive command
+!ar = |> ar crs %o %f |>
+  # Do binaries, debug and release 
+!ccbdbg = |> clang $(CDEBUG) %f -o &(bindir)/%o |> %B
+endif
+
 # Valgrind the binaries
 !valgrnd = |> valgrind $(VALGRND)%o %f |> %B.txt
diff --git a/obj/Tupfile b/obj/Tupfile
index 79223b5..b523a0c 100644
--- a/obj/Tupfile
+++ b/obj/Tupfile
@@ -4,5 +4,10 @@
 # and call the !cc macro to build
 
 include_rules
-: foreach ../src/*.c |> !ccodbg |>
+
+
+ifeq (@(DO_RELEASE),y)
 : foreach ../src/*.c |> !ccorel |>
+else
+: foreach ../src/*.c |> !ccodbg |>
+endif
diff --git a/test/program_debug.txt b/test/program_debug.txt
index 086c6b3..58aa9b4 100644
--- a/test/program_debug.txt
+++ b/test/program_debug.txt
@@ -1,97 +1,97 @@
-==79198== Memcheck, a memory error detector
-==79198== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
-==79198== Using Valgrind-3.16.1-36d6727e1d-20200622X and LibVEX; rerun with -h for copyright info
-==79198== Command: ../bin/program_debug
-==79198== Parent PID: 79188
-==79198== 
---79198-- 
---79198-- Valgrind options:
---79198--    --leak-check=full
---79198--    --show-leak-kinds=all
---79198--    --track-origins=yes
---79198--    --verbose
---79198--    --log-file=program_debug.txt
---79198-- Contents of /proc/version:
---79198--   Linux version 5.8.5-arch1-1 (linux@archlinux) (gcc (GCC) 10.2.0, GNU ld (GNU Binutils) 2.35) #1 SMP PREEMPT Thu, 27 Aug 2020 18:53:02 +0000
---79198-- 
---79198-- Arch and hwcaps: AMD64, LittleEndian, amd64-cx16-lzcnt-rdtscp-sse3-ssse3-avx-avx2-bmi-f16c-rdrand
---79198-- Page sizes: currently 4096, max supported 4096
---79198-- Valgrind library directory: /usr/lib/valgrind
---79198-- Reading syms from /home/kiro/proj/cproj/strings1/bin/program_debug
---79198-- Reading syms from /usr/lib/ld-2.32.so
---79198-- Reading syms from /usr/lib/valgrind/memcheck-amd64-linux
---79198--    object doesn't have a dynamic symbol table
---79198-- Scheduler: using generic scheduler lock implementation.
---79198-- Reading suppressions file: /usr/lib/valgrind/default.supp
-==79198== embedded gdbserver: reading from /tmp/vgdb-pipe-from-vgdb-to-79198-by-???-on-???
-==79198== embedded gdbserver: writing to   /tmp/vgdb-pipe-to-vgdb-from-79198-by-???-on-???
-==79198== embedded gdbserver: shared mem   /tmp/vgdb-pipe-shared-mem-vgdb-79198-by-???-on-???
-==79198== 
-==79198== TO CONTROL THIS PROCESS USING vgdb (which you probably
-==79198== don't want to do, unless you know exactly what you're doing,
-==79198== or are doing some strange experiment):
-==79198==   /usr/lib/valgrind/../../bin/vgdb --pid=79198 ...command...
-==79198== 
-==79198== TO DEBUG THIS PROCESS USING GDB: start GDB like this
-==79198==   /path/to/gdb ../bin/program_debug
-==79198== and then give GDB the following command
-==79198==   target remote | /usr/lib/valgrind/../../bin/vgdb --pid=79198
-==79198== --pid is optional if only one valgrind process is running
-==79198== 
---79198-- REDIR: 0x4021ee0 (ld-linux-x86-64.so.2:strlen) redirected to 0x580b9662 (vgPlain_amd64_linux_REDIR_FOR_strlen)
---79198-- REDIR: 0x4021cb0 (ld-linux-x86-64.so.2:index) redirected to 0x580b967c (vgPlain_amd64_linux_REDIR_FOR_index)
---79198-- Reading syms from /usr/lib/valgrind/vgpreload_core-amd64-linux.so
---79198-- Reading syms from /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so
-==79198== WARNING: new redirection conflicts with existing -- ignoring it
---79198--     old: 0x04021ee0 (strlen              ) R-> (0000.0) 0x580b9662 vgPlain_amd64_linux_REDIR_FOR_strlen
---79198--     new: 0x04021ee0 (strlen              ) R-> (2007.0) 0x0483dd90 strlen
---79198-- REDIR: 0x401e6c0 (ld-linux-x86-64.so.2:strcmp) redirected to 0x483ec60 (strcmp)
---79198-- REDIR: 0x4022440 (ld-linux-x86-64.so.2:mempcpy) redirected to 0x4842450 (mempcpy)
---79198-- Reading syms from /usr/lib/libc-2.32.so
---79198-- REDIR: 0x492a8c0 (libc.so.6:memmove) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79198-- REDIR: 0x4929db0 (libc.so.6:strncpy) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79198-- REDIR: 0x492ac00 (libc.so.6:strcasecmp) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79198-- REDIR: 0x4929850 (libc.so.6:strcat) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79198-- REDIR: 0x4929e10 (libc.so.6:rindex) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79198-- REDIR: 0x492bfb0 (libc.so.6:rawmemchr) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79198-- REDIR: 0x4944500 (libc.so.6:wmemchr) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79198-- REDIR: 0x4944040 (libc.so.6:wcscmp) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79198-- REDIR: 0x492aa20 (libc.so.6:mempcpy) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79198-- REDIR: 0x492a850 (libc.so.6:bcmp) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79198-- REDIR: 0x4929d40 (libc.so.6:strncmp) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79198-- REDIR: 0x4929900 (libc.so.6:strcmp) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79198-- REDIR: 0x492a990 (libc.so.6:memset) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79198-- REDIR: 0x4944000 (libc.so.6:wcschr) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79198-- REDIR: 0x4929ca0 (libc.so.6:strnlen) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79198-- REDIR: 0x49299e0 (libc.so.6:strcspn) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79198-- REDIR: 0x492ac50 (libc.so.6:strncasecmp) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79198-- REDIR: 0x4929980 (libc.so.6:strcpy) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79198-- REDIR: 0x492ada0 (libc.so.6:memcpy@@GLIBC_2.14) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79198-- REDIR: 0x4945750 (libc.so.6:wcsnlen) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79198-- REDIR: 0x4944080 (libc.so.6:wcscpy) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79198-- REDIR: 0x4929e50 (libc.so.6:strpbrk) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79198-- REDIR: 0x49298b0 (libc.so.6:index) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79198-- REDIR: 0x4929c60 (libc.so.6:strlen) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79198-- REDIR: 0x49303a0 (libc.so.6:memrchr) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79198-- REDIR: 0x492aca0 (libc.so.6:strcasecmp_l) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79198-- REDIR: 0x492a810 (libc.so.6:memchr) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79198-- REDIR: 0x4944150 (libc.so.6:wcslen) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79198-- REDIR: 0x4929f80 (libc.so.6:strspn) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79198-- REDIR: 0x492aba0 (libc.so.6:stpncpy) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79198-- REDIR: 0x492ab40 (libc.so.6:stpcpy) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79198-- REDIR: 0x492bff0 (libc.so.6:strchrnul) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79198-- REDIR: 0x492acf0 (libc.so.6:strncasecmp_l) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79198-- REDIR: 0x49fc8a0 (libc.so.6:__strrchr_avx2) redirected to 0x483d7d0 (rindex)
---79198-- REDIR: 0x49fc6b0 (libc.so.6:__strchrnul_avx2) redirected to 0x4841f40 (strchrnul)
---79198-- REDIR: 0x4925c90 (libc.so.6:malloc) redirected to 0x483a710 (malloc)
---79198-- REDIR: 0x49ffa60 (libc.so.6:__mempcpy_avx_unaligned_erms) redirected to 0x4842050 (mempcpy)
---79198-- REDIR: 0x49fca70 (libc.so.6:__strlen_avx2) redirected to 0x483dc70 (strlen)
---79198-- REDIR: 0x49262f0 (libc.so.6:free) redirected to 0x483b940 (free)
-==79198== 
-==79198== HEAP SUMMARY:
-==79198==     in use at exit: 0 bytes in 0 blocks
-==79198==   total heap usage: 1 allocs, 1 frees, 4,096 bytes allocated
-==79198== 
-==79198== All heap blocks were freed -- no leaks are possible
-==79198== 
-==79198== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
+==81182== Memcheck, a memory error detector
+==81182== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
+==81182== Using Valgrind-3.16.1-36d6727e1d-20200622X and LibVEX; rerun with -h for copyright info
+==81182== Command: ../bin/program_debug
+==81182== Parent PID: 81167
+==81182== 
+--81182-- 
+--81182-- Valgrind options:
+--81182--    --leak-check=full
+--81182--    --show-leak-kinds=all
+--81182--    --track-origins=yes
+--81182--    --verbose
+--81182--    --log-file=program_debug.txt
+--81182-- Contents of /proc/version:
+--81182--   Linux version 5.8.5-arch1-1 (linux@archlinux) (gcc (GCC) 10.2.0, GNU ld (GNU Binutils) 2.35) #1 SMP PREEMPT Thu, 27 Aug 2020 18:53:02 +0000
+--81182-- 
+--81182-- Arch and hwcaps: AMD64, LittleEndian, amd64-cx16-lzcnt-rdtscp-sse3-ssse3-avx-avx2-bmi-f16c-rdrand
+--81182-- Page sizes: currently 4096, max supported 4096
+--81182-- Valgrind library directory: /usr/lib/valgrind
+--81182-- Reading syms from /home/kiro/proj/cproj/strings1/bin/program_debug
+--81182-- Reading syms from /usr/lib/ld-2.32.so
+--81182-- Reading syms from /usr/lib/valgrind/memcheck-amd64-linux
+--81182--    object doesn't have a dynamic symbol table
+--81182-- Scheduler: using generic scheduler lock implementation.
+--81182-- Reading suppressions file: /usr/lib/valgrind/default.supp
+==81182== embedded gdbserver: reading from /tmp/vgdb-pipe-from-vgdb-to-81182-by-???-on-???
+==81182== embedded gdbserver: writing to   /tmp/vgdb-pipe-to-vgdb-from-81182-by-???-on-???
+==81182== embedded gdbserver: shared mem   /tmp/vgdb-pipe-shared-mem-vgdb-81182-by-???-on-???
+==81182== 
+==81182== TO CONTROL THIS PROCESS USING vgdb (which you probably
+==81182== don't want to do, unless you know exactly what you're doing,
+==81182== or are doing some strange experiment):
+==81182==   /usr/lib/valgrind/../../bin/vgdb --pid=81182 ...command...
+==81182== 
+==81182== TO DEBUG THIS PROCESS USING GDB: start GDB like this
+==81182==   /path/to/gdb ../bin/program_debug
+==81182== and then give GDB the following command
+==81182==   target remote | /usr/lib/valgrind/../../bin/vgdb --pid=81182
+==81182== --pid is optional if only one valgrind process is running
+==81182== 
+--81182-- REDIR: 0x4021ee0 (ld-linux-x86-64.so.2:strlen) redirected to 0x580b9662 (vgPlain_amd64_linux_REDIR_FOR_strlen)
+--81182-- REDIR: 0x4021cb0 (ld-linux-x86-64.so.2:index) redirected to 0x580b967c (vgPlain_amd64_linux_REDIR_FOR_index)
+--81182-- Reading syms from /usr/lib/valgrind/vgpreload_core-amd64-linux.so
+--81182-- Reading syms from /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so
+==81182== WARNING: new redirection conflicts with existing -- ignoring it
+--81182--     old: 0x04021ee0 (strlen              ) R-> (0000.0) 0x580b9662 vgPlain_amd64_linux_REDIR_FOR_strlen
+--81182--     new: 0x04021ee0 (strlen              ) R-> (2007.0) 0x0483dd90 strlen
+--81182-- REDIR: 0x401e6c0 (ld-linux-x86-64.so.2:strcmp) redirected to 0x483ec60 (strcmp)
+--81182-- REDIR: 0x4022440 (ld-linux-x86-64.so.2:mempcpy) redirected to 0x4842450 (mempcpy)
+--81182-- Reading syms from /usr/lib/libc-2.32.so
+--81182-- REDIR: 0x492a8c0 (libc.so.6:memmove) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
+--81182-- REDIR: 0x4929db0 (libc.so.6:strncpy) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
+--81182-- REDIR: 0x492ac00 (libc.so.6:strcasecmp) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
+--81182-- REDIR: 0x4929850 (libc.so.6:strcat) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
+--81182-- REDIR: 0x4929e10 (libc.so.6:rindex) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
+--81182-- REDIR: 0x492bfb0 (libc.so.6:rawmemchr) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
+--81182-- REDIR: 0x4944500 (libc.so.6:wmemchr) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
+--81182-- REDIR: 0x4944040 (libc.so.6:wcscmp) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
+--81182-- REDIR: 0x492aa20 (libc.so.6:mempcpy) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
+--81182-- REDIR: 0x492a850 (libc.so.6:bcmp) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
+--81182-- REDIR: 0x4929d40 (libc.so.6:strncmp) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
+--81182-- REDIR: 0x4929900 (libc.so.6:strcmp) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
+--81182-- REDIR: 0x492a990 (libc.so.6:memset) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
+--81182-- REDIR: 0x4944000 (libc.so.6:wcschr) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
+--81182-- REDIR: 0x4929ca0 (libc.so.6:strnlen) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
+--81182-- REDIR: 0x49299e0 (libc.so.6:strcspn) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
+--81182-- REDIR: 0x492ac50 (libc.so.6:strncasecmp) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
+--81182-- REDIR: 0x4929980 (libc.so.6:strcpy) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
+--81182-- REDIR: 0x492ada0 (libc.so.6:memcpy@@GLIBC_2.14) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
+--81182-- REDIR: 0x4945750 (libc.so.6:wcsnlen) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
+--81182-- REDIR: 0x4944080 (libc.so.6:wcscpy) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
+--81182-- REDIR: 0x4929e50 (libc.so.6:strpbrk) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
+--81182-- REDIR: 0x49298b0 (libc.so.6:index) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
+--81182-- REDIR: 0x4929c60 (libc.so.6:strlen) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
+--81182-- REDIR: 0x49303a0 (libc.so.6:memrchr) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
+--81182-- REDIR: 0x492aca0 (libc.so.6:strcasecmp_l) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
+--81182-- REDIR: 0x492a810 (libc.so.6:memchr) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
+--81182-- REDIR: 0x4944150 (libc.so.6:wcslen) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
+--81182-- REDIR: 0x4929f80 (libc.so.6:strspn) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
+--81182-- REDIR: 0x492aba0 (libc.so.6:stpncpy) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
+--81182-- REDIR: 0x492ab40 (libc.so.6:stpcpy) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
+--81182-- REDIR: 0x492bff0 (libc.so.6:strchrnul) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
+--81182-- REDIR: 0x492acf0 (libc.so.6:strncasecmp_l) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
+--81182-- REDIR: 0x49fc8a0 (libc.so.6:__strrchr_avx2) redirected to 0x483d7d0 (rindex)
+--81182-- REDIR: 0x49fc6b0 (libc.so.6:__strchrnul_avx2) redirected to 0x4841f40 (strchrnul)
+--81182-- REDIR: 0x4925c90 (libc.so.6:malloc) redirected to 0x483a710 (malloc)
+--81182-- REDIR: 0x49ffa60 (libc.so.6:__mempcpy_avx_unaligned_erms) redirected to 0x4842050 (mempcpy)
+--81182-- REDIR: 0x49fca70 (libc.so.6:__strlen_avx2) redirected to 0x483dc70 (strlen)
+--81182-- REDIR: 0x49262f0 (libc.so.6:free) redirected to 0x483b940 (free)
+==81182== 
+==81182== HEAP SUMMARY:
+==81182==     in use at exit: 0 bytes in 0 blocks
+==81182==   total heap usage: 1 allocs, 1 frees, 4,096 bytes allocated
+==81182== 
+==81182== All heap blocks were freed -- no leaks are possible
+==81182== 
+==81182== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
diff --git a/test/program_release.txt b/test/program_release.txt
deleted file mode 100644
index 278c2db..0000000
--- a/test/program_release.txt
+++ /dev/null
@@ -1,97 +0,0 @@
-==79197== Memcheck, a memory error detector
-==79197== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
-==79197== Using Valgrind-3.16.1-36d6727e1d-20200622X and LibVEX; rerun with -h for copyright info
-==79197== Command: ../bin/program_release
-==79197== Parent PID: 79188
-==79197== 
---79197-- 
---79197-- Valgrind options:
---79197--    --leak-check=full
---79197--    --show-leak-kinds=all
---79197--    --track-origins=yes
---79197--    --verbose
---79197--    --log-file=program_release.txt
---79197-- Contents of /proc/version:
---79197--   Linux version 5.8.5-arch1-1 (linux@archlinux) (gcc (GCC) 10.2.0, GNU ld (GNU Binutils) 2.35) #1 SMP PREEMPT Thu, 27 Aug 2020 18:53:02 +0000
---79197-- 
---79197-- Arch and hwcaps: AMD64, LittleEndian, amd64-cx16-lzcnt-rdtscp-sse3-ssse3-avx-avx2-bmi-f16c-rdrand
---79197-- Page sizes: currently 4096, max supported 4096
---79197-- Valgrind library directory: /usr/lib/valgrind
---79197-- Reading syms from /home/kiro/proj/cproj/strings1/bin/program_release
---79197-- Reading syms from /usr/lib/ld-2.32.so
---79197-- Reading syms from /usr/lib/valgrind/memcheck-amd64-linux
---79197--    object doesn't have a dynamic symbol table
---79197-- Scheduler: using generic scheduler lock implementation.
---79197-- Reading suppressions file: /usr/lib/valgrind/default.supp
-==79197== embedded gdbserver: reading from /tmp/vgdb-pipe-from-vgdb-to-79197-by-???-on-???
-==79197== embedded gdbserver: writing to   /tmp/vgdb-pipe-to-vgdb-from-79197-by-???-on-???
-==79197== embedded gdbserver: shared mem   /tmp/vgdb-pipe-shared-mem-vgdb-79197-by-???-on-???
-==79197== 
-==79197== TO CONTROL THIS PROCESS USING vgdb (which you probably
-==79197== don't want to do, unless you know exactly what you're doing,
-==79197== or are doing some strange experiment):
-==79197==   /usr/lib/valgrind/../../bin/vgdb --pid=79197 ...command...
-==79197== 
-==79197== TO DEBUG THIS PROCESS USING GDB: start GDB like this
-==79197==   /path/to/gdb ../bin/program_release
-==79197== and then give GDB the following command
-==79197==   target remote | /usr/lib/valgrind/../../bin/vgdb --pid=79197
-==79197== --pid is optional if only one valgrind process is running
-==79197== 
---79197-- REDIR: 0x4021ee0 (ld-linux-x86-64.so.2:strlen) redirected to 0x580b9662 (vgPlain_amd64_linux_REDIR_FOR_strlen)
---79197-- REDIR: 0x4021cb0 (ld-linux-x86-64.so.2:index) redirected to 0x580b967c (vgPlain_amd64_linux_REDIR_FOR_index)
---79197-- Reading syms from /usr/lib/valgrind/vgpreload_core-amd64-linux.so
---79197-- Reading syms from /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so
-==79197== WARNING: new redirection conflicts with existing -- ignoring it
---79197--     old: 0x04021ee0 (strlen              ) R-> (0000.0) 0x580b9662 vgPlain_amd64_linux_REDIR_FOR_strlen
---79197--     new: 0x04021ee0 (strlen              ) R-> (2007.0) 0x0483dd90 strlen
---79197-- REDIR: 0x401e6c0 (ld-linux-x86-64.so.2:strcmp) redirected to 0x483ec60 (strcmp)
---79197-- REDIR: 0x4022440 (ld-linux-x86-64.so.2:mempcpy) redirected to 0x4842450 (mempcpy)
---79197-- Reading syms from /usr/lib/libc-2.32.so
---79197-- REDIR: 0x492a8c0 (libc.so.6:memmove) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79197-- REDIR: 0x4929db0 (libc.so.6:strncpy) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79197-- REDIR: 0x492ac00 (libc.so.6:strcasecmp) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79197-- REDIR: 0x4929850 (libc.so.6:strcat) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79197-- REDIR: 0x4929e10 (libc.so.6:rindex) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79197-- REDIR: 0x492bfb0 (libc.so.6:rawmemchr) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79197-- REDIR: 0x4944500 (libc.so.6:wmemchr) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79197-- REDIR: 0x4944040 (libc.so.6:wcscmp) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79197-- REDIR: 0x492aa20 (libc.so.6:mempcpy) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79197-- REDIR: 0x492a850 (libc.so.6:bcmp) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79197-- REDIR: 0x4929d40 (libc.so.6:strncmp) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79197-- REDIR: 0x4929900 (libc.so.6:strcmp) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79197-- REDIR: 0x492a990 (libc.so.6:memset) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79197-- REDIR: 0x4944000 (libc.so.6:wcschr) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79197-- REDIR: 0x4929ca0 (libc.so.6:strnlen) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79197-- REDIR: 0x49299e0 (libc.so.6:strcspn) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79197-- REDIR: 0x492ac50 (libc.so.6:strncasecmp) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79197-- REDIR: 0x4929980 (libc.so.6:strcpy) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79197-- REDIR: 0x492ada0 (libc.so.6:memcpy@@GLIBC_2.14) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79197-- REDIR: 0x4945750 (libc.so.6:wcsnlen) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79197-- REDIR: 0x4944080 (libc.so.6:wcscpy) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79197-- REDIR: 0x4929e50 (libc.so.6:strpbrk) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79197-- REDIR: 0x49298b0 (libc.so.6:index) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79197-- REDIR: 0x4929c60 (libc.so.6:strlen) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79197-- REDIR: 0x49303a0 (libc.so.6:memrchr) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79197-- REDIR: 0x492aca0 (libc.so.6:strcasecmp_l) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79197-- REDIR: 0x492a810 (libc.so.6:memchr) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79197-- REDIR: 0x4944150 (libc.so.6:wcslen) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79197-- REDIR: 0x4929f80 (libc.so.6:strspn) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79197-- REDIR: 0x492aba0 (libc.so.6:stpncpy) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79197-- REDIR: 0x492ab40 (libc.so.6:stpcpy) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79197-- REDIR: 0x492bff0 (libc.so.6:strchrnul) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79197-- REDIR: 0x492acf0 (libc.so.6:strncasecmp_l) redirected to 0x48301c0 (_vgnU_ifunc_wrapper)
---79197-- REDIR: 0x49fc8a0 (libc.so.6:__strrchr_avx2) redirected to 0x483d7d0 (rindex)
---79197-- REDIR: 0x49fc6b0 (libc.so.6:__strchrnul_avx2) redirected to 0x4841f40 (strchrnul)
---79197-- REDIR: 0x49ffa60 (libc.so.6:__mempcpy_avx_unaligned_erms) redirected to 0x4842050 (mempcpy)
---79197-- REDIR: 0x4925c90 (libc.so.6:malloc) redirected to 0x483a710 (malloc)
---79197-- REDIR: 0x49fca70 (libc.so.6:__strlen_avx2) redirected to 0x483dc70 (strlen)
---79197-- REDIR: 0x49262f0 (libc.so.6:free) redirected to 0x483b940 (free)
-==79197== 
-==79197== HEAP SUMMARY:
-==79197==     in use at exit: 0 bytes in 0 blocks
-==79197==   total heap usage: 1 allocs, 1 frees, 4,096 bytes allocated
-==79197== 
-==79197== All heap blocks were freed -- no leaks are possible
-==79197== 
-==79197== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
diff --git a/tup.config b/tup.config
new file mode 100644
index 0000000..30dc56e
--- /dev/null
+++ b/tup.config
@@ -0,0 +1 @@
+CONFIG_DO_RELEASE=n