From 7e7e6148fdb4adbda936f80b5d4ac3d738908d95 Mon Sep 17 00:00:00 2001 From: seyko Date: Fri, 10 Apr 2015 07:37:31 +0300 Subject: fix installation amd bcheck for Windows * define targetos=Windows when --enable-tcc32-mingw, --enable-cygwin, ... * use TARGETOS insteed HOST_OS when selecting PROGS * use "$(tccdir)" insteed $(tccdir) on install (spaces in path) * install tcc.exe too * produce bcheck.o when cross-compiling too (lib/Makefile) * force bcheck.o linking by compiling inside tcc_set_output_type() a dummy program with local array. Otherwise bcheck.o may be not linked. * replace %xz format specifier with %p in bcheck (don't supported on Windows) * call a __bound_init when __bound_ptr_add, __bound_ptr_indir, __bound_new_region, __bound_delete_region called. This is because a __bound_init inside ".init" section is not called on Windows for unknown reason. * print on stderr a message when an illegal pointer is returned: there is no segmentation violation on Windows for a program compiled with "tcc -b" * remove "C:" subdir on clean if $HOST_OS = "Linux" * default CFLAGS="-Wall -g -O0" insteed CFLAGS="-Wall -g -O2" to speed up compilation and more precise debugging. --- libtcc.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'libtcc.c') diff --git a/libtcc.c b/libtcc.c index d5bf555..4cea4a8 100644 --- a/libtcc.c +++ b/libtcc.c @@ -1390,6 +1390,17 @@ LIBTCCAPI int tcc_set_output_type(TCCState *s, int output_type) tcc_add_crt(s, "crti.o"); } #endif + +#ifdef CONFIG_TCC_BCHECK + if (s->do_bounds_check && (output_type == TCC_OUTPUT_EXE)) + { + /* XXX force a bcheck.o linking by compiling a function with a local array. + Otherwise bcheck.o may be not linked. */ + + if (tcc_compile_string(s, "static void __bound_check_dummy_func(){int v[1];}") == -1) + tcc_warning("compiling __bound_check_dummy_func failed"); + } +#endif return 0; } -- cgit v1.3.1