From: bernhardheld Date: Tue, 14 Jan 2003 22:32:12 +0000 (+0000) Subject: * as/mcs51/lkmem.c: rflag is for DS390 X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=14ff0763cec40a80c8fbb7519533bca1d7d44589;p=fw%2Fsdcc * as/mcs51/lkmem.c: rflag is for DS390 * src/SDCCglobl.h: removed out_name and options stackOnData, genericPtr * src/SDCCmain.c (optionsTable, setDefaultOptions): removed --stack-after-data and --generic (linkEdit): move mem- and map-files the same way as ihx-files * src/z80/main.c (_setDefaultOptions): removed --generic * src/SDCCmain.c (_processC1Arg, parseCmdLine, main): --c1mode works again * src/SDCCglue.c (createInterruptVect, glue): --c1mode works again * src/pic/glue.c (picglue): --c1mode works again * src/pic16/glue.c (pic16glue): --c1mode works again * src/asm.c (printCLine): fix #660034 git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@2154 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- diff --git a/ChangeLog b/ChangeLog index 15c7152b..e0188175 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2003-01-14 Bernhard Held + + * as/mcs51/lkmem.c: rflag is for DS390 + * src/SDCCglobl.h: removed out_name and options stackOnData, genericPtr + * src/SDCCmain.c (optionsTable, setDefaultOptions): removed --stack-after-data and --generic + (linkEdit): move mem- and map-files the same way as ihx-files + * src/z80/main.c (_setDefaultOptions): removed --generic + * src/SDCCmain.c (_processC1Arg, parseCmdLine, main): --c1mode works again + * src/SDCCglue.c (createInterruptVect, glue): --c1mode works again + * src/pic/glue.c (picglue): --c1mode works again + * src/pic16/glue.c (pic16glue): --c1mode works again + * src/asm.c (printCLine): fix #660034 + 2003-01-13 Bernhard Held * src/ds390/peeph.def: fix #123; add 14 rules by Fiorenzo D. Ramaglia , 1 by Frieder diff --git a/as/mcs51/lkmem.c b/as/mcs51/lkmem.c index 9ff0c161..661f6111 100644 --- a/as/mcs51/lkmem.c +++ b/as/mcs51/lkmem.c @@ -251,9 +251,8 @@ int summary(struct area * areap) } /*Report the position of the begining of the stack*/ - /* TODO find flag for DS390 */ fprintf(of, "\n%stack starts at: 0x%02lx (sp set to 0x%02lx)", - 0 ? "16 bit mode initial s" : "S", Stack.Start, Stack.Start-1); + rflag ? "16 bit mode initial s" : "S", Stack.Start, Stack.Start-1); /*Check that the stack pointer is landing in a safe place:*/ if( (dram[Stack.Start] & 0x8000) == 0x8000 ) diff --git a/src/SDCCglobl.h b/src/SDCCglobl.h index b705b5d7..f9dd2453 100644 --- a/src/SDCCglobl.h +++ b/src/SDCCglobl.h @@ -204,7 +204,6 @@ struct options int stackAuto; /* Stack Automatic */ int useXstack; /* use Xternal Stack */ int stack10bit; /* use 10 bit stack (flat24 model only) */ - int genericPtr; /* use generic pointers */ int dump_raw; /* dump after intermediate code generation */ int dump_gcse; /* dump after gcse */ int dump_loop; /* dump after loop optimizations */ @@ -224,10 +223,8 @@ struct options int nopeep; /* no peep hole optimization */ int asmpeep; /* pass inline assembler thru peep hole */ int debug; /* generate extra debug info */ - int stackOnData; /* stack after data segment */ int c1mode; /* Act like c1 - no pre-proc, asm or link */ char *peep_file; /* additional rules for peep hole */ - char *out_name; /* Asm output name for c1 mode */ int nostdlib; /* Don't use standard lib files */ int nostdinc; /* Don't use standard include files */ int noRegParams; /* Disable passing some parameters in registers */ diff --git a/src/SDCCglue.c b/src/SDCCglue.c index 99a4f959..b1b6577f 100644 --- a/src/SDCCglue.c +++ b/src/SDCCglue.c @@ -1229,7 +1229,7 @@ createInterruptVect (FILE * vFile) /* only if the main function exists */ if (!(mainf = findSymWithLevel (SymbolTab, mainf))) { - if (!options.cc_only && !noAssemble) + if (!options.cc_only && !noAssemble && !options.c1mode) werror (E_NO_MAIN); return; } @@ -1458,22 +1458,15 @@ glue (void) /* now put it all together into the assembler file */ /* create the assembler file name */ - if (!options.c1mode) + /* -o option overrides default name? */ + if ((noAssemble || options.c1mode) && fullDstFileName) { - /* -o option overrides default name? */ - if (noAssemble && fullDstFileName) - { - strcpy (scratchFileName, fullDstFileName); - } - else - { - strcpy (scratchFileName, dstFileName); - strcat (scratchFileName, port->assembler.file_ext); - } + strcpy (scratchFileName, fullDstFileName); } else { - strcpy (scratchFileName, options.out_name); + strcpy (scratchFileName, dstFileName); + strcat (scratchFileName, port->assembler.file_ext); } if (!(asmFile = fopen (scratchFileName, "w"))) diff --git a/src/SDCCmain.c b/src/SDCCmain.c index 417dae3a..8cd269b1 100644 --- a/src/SDCCmain.c +++ b/src/SDCCmain.c @@ -149,7 +149,6 @@ optionsTable[] = { { 0, OPTION_STACK_8BIT, NULL, "use the 8bit stack for the ds390 (not supported yet)" }, { 0, "--stack-10bit", &options.stack10bit, "use the 10bit stack for ds390 (default)" }, { 0, "--xstack", &options.useXstack, "Use external stack" }, - { 0, "--generic", &options.genericPtr, "All unqualified ptrs converted to '_generic'" }, { 0, OPTION_NO_GCSE, NULL, "Disable the GCSE optimisation" }, { 0, OPTION_NO_LOOP_INV, NULL, "Disable optimisation of invariants" }, { 0, OPTION_NO_LOOP_IND, NULL, NULL }, @@ -188,7 +187,6 @@ optionsTable[] = { { 0, "--peep-asm", &options.asmpeep, NULL }, { 0, "--debug", &options.debug, "Enable debugging symbol output" }, { 'v', OPTION_VERSION, NULL, "Display sdcc's version" }, - { 0, "--stack-after-data", &options.stackOnData, "initialize the stackpointer with the last byte use in DSEG" }, { 'E', "--preprocessonly", &preProcOnly, "Preprocess only, do not compile" }, { 0, "--c1mode", &options.c1mode, "Act in c1 mode. The input is preprocessed code, the output is assembly code." }, { 0, "--help", NULL, "Display this help" }, @@ -226,8 +224,6 @@ typedef struct { static const UNSUPPORTEDOPT unsupportedOptTable[] = { - { 'a', NULL, "use --stack-auto instead." }, - { 'g', NULL, "use --generic instead" }, { 'X', NULL, "use --xstack-loc instead" }, { 'x', NULL, "use --xstack instead" }, { 'i', NULL, "use --idata-loc instead" }, @@ -492,7 +488,6 @@ setDefaultOptions () options.data_loc = 0; /* JCF: By default let the linker locate data */ options.xdata_loc = 0; options.idata_loc = 0x80; - options.genericPtr = 1; /* default on */ options.nopeep = 0; options.model = port->general.default_model; options.nostdlib = 0; @@ -549,7 +544,8 @@ processFile (char *s) } /* the only source file */ - if (!(srcFile = fopen ((fullSrcFileName = s), "r"))) + fullSrcFileName = s; + if (!(srcFile = fopen (fullSrcFileName, "r"))) { werror (E_FILE_OPEN_ERR, s); exit (1); @@ -614,24 +610,6 @@ processFile (char *s) } -static void -_processC1Arg (char *s) -{ - if (fullSrcFileName) - { - if (options.out_name) - { - werror (W_TOO_MANY_SRC, s); - return; - } - options.out_name = Safe_strdup (s); - } - else - { - processFile (s); - } -} - static void _setModel (int model, const char *sz) { @@ -1118,13 +1096,13 @@ parseCmdLine (int argc, char **argv) if (argv[i][2] == ' ' || argv[i][2] == '\0') { i++; - if (i >= argc) + if (i >= argc) { /* No argument. */ werror(E_ARGUMENT_MISSING, argv[i-1]); break; } - else + else { rest = argv[i]; } @@ -1150,10 +1128,7 @@ parseCmdLine (int argc, char **argv) if (!port->parseOption (&argc, argv, &i)) { /* no option must be a filename */ - if (options.c1mode) - _processC1Arg (argv[i]); - else - processFile (argv[i]); + processFile (argv[i]); } } @@ -1383,18 +1358,38 @@ linkEdit (char **envp) /* -o option overrides default name? */ if (fullDstFileName) { + char *p, *q; /* the linked file gets the name of the first modul */ if (fullSrcFileName) - { + { strcpy (scratchFileName, dstFileName); + p = strlen (scratchFileName) + scratchFileName; } else { strcpy (scratchFileName, relFiles[0]); - /* strip ".rel" extension */ - *strrchr (scratchFileName, '.') = '\0'; + /* strip "rel" extension */ + p = strrchr (scratchFileName, '.') + 1; } - strcat (scratchFileName, options.out_fmt ? ".S19" : ".ihx"); + strcpy (p, options.out_fmt ? "S19" : "ihx"); + rename (scratchFileName, fullDstFileName); + + q = strrchr (fullDstFileName, '.'); + if (q) + { + /* point after the '.' of the extension */ + q++; + } + else + { + /* no extension: append new extensions */ + q = strlen (fullDstFileName) + fullDstFileName; + } + strcpy (p, "map"); + strcpy (q, "map"); + rename (scratchFileName, fullDstFileName); + strcpy (p, "mem"); + strcpy (q, "mem"); rename (scratchFileName, fullDstFileName); } } @@ -1504,7 +1499,7 @@ preProcess (char **envp) } setMainValue ("cppextraopts", join(preArgv)); - + if (preProcOnly) { if (fullDstFileName) @@ -1771,7 +1766,7 @@ main (int argc, char **argv, char **envp) /* if no input then printUsage & exit */ if ((!options.c1mode && !fullSrcFileName && !nrelFiles) || - (options.c1mode && !fullSrcFileName && !options.out_name)) + (options.c1mode && !fullSrcFileName)) { printUsage (); exit (0); diff --git a/src/asm.c b/src/asm.c index 8b9f7798..9722ced0 100644 --- a/src/asm.c +++ b/src/asm.c @@ -209,16 +209,25 @@ asm_addTree (const ASM_MAPPINGS * pMappings) static FILE *inFile=NULL; static char inLineString[1024]; static int inLineNo=0; +static char lastSrcFile[PATH_MAX]; int rewinds=0; char *printCLine (char *srcFile, int lineno) { char *ilsP=inLineString; + + if (inFile) { + if (strcmp (lastSrcFile, srcFile) != 0) { + fclose (inFile); + inFile = NULL; + } + } if (!inFile) { inFile=fopen(srcFile, "r"); if (!inFile) { perror ("printCLine"); exit (1); } + strcpy (lastSrcFile, srcFile); } if (lineno