# HG changeset patch # User William Astle # Date 1571978464 21600 # Node ID 16bd8effb2f61b0451799cd4f9dff3654fffbc03 # Parent 17fa03d69df36658b537b4a013ca013c5f2e5882 Update lwcc driver to actually do something useful sometimes Make lwcc driver actually find the correct filenames for the preprocessor and compiler. Construct the preprocessor argument list correctly instead of assigning all arguments to argv[0], including the trailing NULL argument. Instruct lwasm to use the object file format. Correct state setting for -S and -c options so they stop after the correct phases of compilation. diff -r 17fa03d69df3 -r 16bd8effb2f6 lwcc/driver-main.c --- a/lwcc/driver-main.c Thu Sep 26 21:37:49 2019 -0600 +++ b/lwcc/driver-main.c Thu Oct 24 22:41:04 2019 -0600 @@ -52,9 +52,9 @@ /* these are the names of various programs the compiler calls */ const char *linker_program_name = "lwlink"; -const char *compiler_program_name = "lwcc1"; +const char *compiler_program_name = "lwcc-cc"; const char *assembler_program_name = "lwasm"; -const char *preprocessor_program_name = "lwcpp"; +const char *preprocessor_program_name = "lwcc-cpp"; /* this will be set to the directory where temporary files get created */ const char *temp_directory = NULL; @@ -250,7 +250,7 @@ lw_stringlist_reset(args); for (result = 0, s = lw_stringlist_current(args); s; s = lw_stringlist_next(args)) { - argv[result] = s; + argv[result++] = s; } argv[result] = NULL; @@ -463,6 +463,9 @@ lw_stringlist_addstring(args, s); lw_free(s); + /* add some necessary args */ + lw_stringlist_addstring(args, "--format=obj"); + /* add asm_args to argv */ lw_stringlist_reset(asm_args); for (s = lw_stringlist_current(asm_args); s; s = lw_stringlist_next(asm_args)) @@ -986,7 +989,7 @@ { "--sysroot=", OPT_ARG_INC, 0, 0, &sysroot, cmdline_set_string }, { "-B", OPT_ARG_INC, 0, 0, &basedir, cmdline_set_string }, { "-C", OPT_ARG_OPT, 1, 0, &preproc_args, cmdline_arglist }, - { "-c", OPT_ARG_OPT, 1, PHASE_COMPILE, &stop_after, cmdline_set_intifzero }, + { "-c", OPT_ARG_OPT, 1, PHASE_ASSEMBLE, &stop_after, cmdline_set_intifzero }, { "-D", OPT_ARG_INC, 0, 0, &preproc_args, cmdline_arglist }, { "-E", OPT_ARG_OPT, 1, PHASE_PREPROCESS, &stop_after, cmdline_set_intifzero }, { "-fPIC", OPT_ARG_OPT, 1, 2, &pic_mode, cmdline_set_int }, @@ -1002,7 +1005,7 @@ { "-nostdlib", OPT_ARG_OPT, 1, 1, &nostdlib, cmdline_set_int }, { "-O", OPT_ARG_OPT, 0, CMD_MISC_OPTIMIZE, NULL, cmdline_misc }, { "-o", OPT_ARG_SEP, 0, 2, &output_file, cmdline_set_stringifnull }, - { "-S", OPT_ARG_OPT, 1, PHASE_ASSEMBLE, &stop_after, cmdline_set_intifzero }, + { "-S", OPT_ARG_OPT, 1, PHASE_COMPILE, &stop_after, cmdline_set_intifzero }, { "-save-temps", OPT_ARG_OPT, 1, 1, &save_temps, cmdline_set_int }, { "-trigraphs", OPT_ARG_OPT, 1, 0, &preproc_args, cmdline_arglist }, { "-U", OPT_ARG_INC, 0, 0, &preproc_args, cmdline_arglist },