From d2332396e43914ae8239cbc53ae7b0f1f3bb614c Mon Sep 17 00:00:00 2001 From: grischka Date: Sun, 18 Dec 2016 22:57:03 +0100 Subject: libtcc.c: -m option cleanup handle mms-bitfields as sub-options of -m. (-mfloat-abi is still special because it requires arguments) tcc.c: help(): - list -mms-bitfields under 'Target specific options' libtcc.c/MEM_DEBUG - add check for past buffer writes --- tcc.c | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) (limited to 'tcc.c') diff --git a/tcc.c b/tcc.c index cbef5d3..2ffbde7 100644 --- a/tcc.c +++ b/tcc.c @@ -97,16 +97,11 @@ static void help(void) " -o outfile set output filename\n" " -run run compiled source\n" " -fflag set or reset (with 'no-' prefix) 'flag' (see man page)\n" - " -mms-bitfields use bitfield alignment consistent with MSVC\n" " -Wwarning set or reset (with 'no-' prefix) 'warning' (see man page)\n" " -w disable all warnings\n" " -v show version\n" " -vv show included files (as sole argument: show search paths)\n" - " -dumpversion\n" " -bench show compilation statistics\n" - " -xc -xa specify type of the next infile\n" - " - use stdin pipe as infile\n" - " @listfile read arguments from listfile\n" "Preprocessor options:\n" " -Idir add include path 'dir'\n" " -Dsym[=val] define 'sym' with value 'val'\n" @@ -117,12 +112,12 @@ static void help(void) "Linker options:\n" " -Ldir add library path 'dir'\n" " -llib link with dynamic or static library 'lib'\n" - " -pthread link with -lpthread and -D_REENTRANT (POSIX Linux)\n" " -r generate (relocatable) object file\n" - " -rdynamic export all global symbols to dynamic linker\n" " -shared generate a shared library\n" + " -rdynamic export all global symbols to dynamic linker\n" " -soname set name for shared library to be used at runtime\n" " -static static linking\n" + " -pthread link with -lpthread and -D_REENTRANT (POSIX Linux)\n" " -Wl,-opt[=val] set linker option (see manual)\n" "Debugger options:\n" " -g generate runtime debug info\n" @@ -133,11 +128,24 @@ static void help(void) " -bt N show N callers in stack traces\n" #endif "Misc options:\n" + " -x[c|a|n] specify type of the next infile\n" " -nostdinc do not use standard system include paths\n" " -nostdlib do not link with standard crt and libraries\n" - " -Bdir use 'dir' as tcc internal library and include path\n" + " -Bdir use 'dir' as tcc's private library/include path\n" " -MD generate target dependencies for make\n" " -MF depfile put generated dependencies here\n" + " -dumpversion print version\n" + " - use stdin pipe as infile\n" + " @listfile read arguments from listfile\n" + "Target specific options:\n" + " -m32/64 execute i386/x86-64 cross compiler\n" + " -mms-bitfields use MSVC bitfield layout\n" +#ifdef TCC_TARGET_ARM + " -mfloat-abi hard/softfp on arm\n" +#endif +#ifdef TCC_TARGET_X86_64 + " -mno-sse disable floats on x86-64\n" +#endif ); } @@ -155,10 +163,10 @@ static int execvp_win32(const char *prog, char **argv) } #define execvp execvp_win32 #endif -static void exec_other_tcc(TCCState *s, char **argv, const char *optarg) +static void exec_other_tcc(TCCState *s, char **argv, int option) { char child_path[4096], *child_name; const char *target; - switch (atoi(optarg)) { + switch (option) { #ifdef TCC_TARGET_I386 case 32: break; case 64: target = "x86_64"; @@ -179,14 +187,10 @@ static void exec_other_tcc(TCCState *s, char **argv, const char *optarg) execvp(argv[0] = child_path, argv); } tcc_error("'%s' not found", child_name); - case 0: /* ignore -march etc. */ - break; - default: - tcc_warning("unsupported option \"-m%s\"", optarg); } } #else -#define exec_other_tcc(s, argv, optarg) +#define exec_other_tcc(s, argv, option) #endif static void gen_makedeps(TCCState *s, const char *target, const char *filename) @@ -274,8 +278,8 @@ int main(int argc, char **argv) return 1; } - if (s->option_m) - exec_other_tcc(s, argv, s->option_m); + if (s->cross_target) + exec_other_tcc(s, argv, s->cross_target); if (s->verbose) display_info(s, 0); -- cgit v1.3.1