char moduleBuf[PATH_MAX];
int mcs51_like;
- dbuf_init(&vBuf, 4096);
- dbuf_init(&ovrBuf, 4096);
+ dbuf_init (&vBuf, 4096);
+ dbuf_init (&ovrBuf, 4096);
- if(port->general.glue_up_main &&
- (TARGET_IS_MCS51 || TARGET_IS_DS390 || TARGET_IS_XA51 || TARGET_IS_DS400))
- {
- mcs51_like=1; /*So it has bits, sfr, sbits, data, idata, etc...*/
- }
- else
- {
- mcs51_like=0;
- }
+ mcs51_like = (port->general.glue_up_main &&
+ (TARGET_IS_MCS51 || TARGET_IS_DS390 || TARGET_IS_XA51 || TARGET_IS_DS400));
/* print the global struct definitions */
if (options.debug)
/* do the overlay segments */
emitOverlay (&ovrBuf);
- outputDebugSymbols();
+ outputDebugSymbols ();
/* now put it all together into the assembler file */
/* create the assembler file name */
if (!(asmFile = fopen (scratchFileName, "w")))
{
werror (E_FILE_OPEN_ERR, scratchFileName);
- exit (1);
+ exit (EXIT_FAILURE);
}
/* initial comments */
initialComments (asmFile);
/* print module name */
- tfprintf (asmFile, "\t!module\n",
- spacesToUnderscores (moduleBuf, moduleName, sizeof moduleBuf));
- if(mcs51_like)
+ tfprintf (asmFile, "\t!module\n", moduleName);
+ if (mcs51_like)
{
fprintf (asmFile, "\t.optsdcc -m%s", port->target);
switch(options.model)
- {
+ {
case MODEL_SMALL: fprintf (asmFile, " --model-small"); break;
case MODEL_COMPACT: fprintf (asmFile, " --model-compact"); break;
case MODEL_MEDIUM: fprintf (asmFile, " --model-medium"); break;
case MODEL_FLAT24: fprintf (asmFile, " --model-flat24"); break;
case MODEL_PAGE0: fprintf (asmFile, " --model-page0"); break;
default: break;
- }
+ }
/*if(options.stackAuto) fprintf (asmFile, " --stack-auto");*/
if(options.useXstack) fprintf (asmFile, " --xstack");
/*if(options.intlong_rent) fprintf (asmFile, " --int-long-rent");*/
if(options.parms_in_bank1) fprintf (asmFile, " --parms-in-bank1");
fprintf (asmFile, "\n");
}
- else if(TARGET_Z80_LIKE || TARGET_IS_HC08)
+ else if (TARGET_Z80_LIKE || TARGET_IS_HC08)
{
fprintf (asmFile, "\t.optsdcc -m%s\n", port->target);
}
if (port->assembler.externGlobal)
printExterns (asmFile);
- if(( mcs51_like )
+ if (( mcs51_like )
||( TARGET_IS_Z80 )) /*.p.t.20030924 need to output SFR table for Z80 as well */
{
/* copy the sfr segment */
dbuf_write_and_destroy (&sfr->oBuf, asmFile);
}
- if(mcs51_like)
+ if (mcs51_like)
{
/* copy the sbit segment */
fprintf (asmFile, "%s", iComments2);
dbuf_write_and_destroy (&sfrbit->oBuf, asmFile);
/*JCF: Create the areas for the register banks*/
- if(RegBankUsed[0]||RegBankUsed[1]||RegBankUsed[2]||RegBankUsed[3])
+ if (RegBankUsed[0] || RegBankUsed[1] || RegBankUsed[2] || RegBankUsed[3])
{
fprintf (asmFile, "%s", iComments2);
fprintf (asmFile, "; overlayable register banks\n");
fprintf (asmFile, "%s", iComments2);
- if(RegBankUsed[0])
+ if (RegBankUsed[0])
fprintf (asmFile, "\t.area REG_BANK_0\t(REL,OVR,DATA)\n\t.ds 8\n");
- if(RegBankUsed[1]||options.parms_in_bank1)
+ if (RegBankUsed[1] || options.parms_in_bank1)
fprintf (asmFile, "\t.area REG_BANK_1\t(REL,OVR,DATA)\n\t.ds 8\n");
- if(RegBankUsed[2])
+ if (RegBankUsed[2])
fprintf (asmFile, "\t.area REG_BANK_2\t(REL,OVR,DATA)\n\t.ds 8\n");
- if(RegBankUsed[3])
+ if (RegBankUsed[3])
fprintf (asmFile, "\t.area REG_BANK_3\t(REL,OVR,DATA)\n\t.ds 8\n");
}
- if(BitBankUsed)
+ if (BitBankUsed)
{
fprintf (asmFile, "%s", iComments2);
fprintf (asmFile, "; overlayable bit register bank\n");
}
/* create the stack segment MOF */
- if (mainf && IFFUNC_HASBODY(mainf->type))
+ if (mainf && IFFUNC_HASBODY (mainf->type))
{
fprintf (asmFile, "%s", iComments2);
fprintf (asmFile, "; Stack segment in internal ram \n");
}
/* create the idata segment */
- if ( (idata) && (mcs51_like) )
+ if ((idata) && (mcs51_like))
{
fprintf (asmFile, "%s", iComments2);
fprintf (asmFile, "; indirectly addressable internal ram data\n");
}
/* create the absolute idata/data segment */
- if ( (i_abs) && (mcs51_like) )
+ if ((i_abs) && (mcs51_like))
{
fprintf (asmFile, "%s", iComments2);
fprintf (asmFile, "; absolute internal ram data\n");
}
/* if external stack then reserve space for it */
- if (mainf && IFFUNC_HASBODY(mainf->type) && options.useXstack)
+ if (mainf && IFFUNC_HASBODY (mainf->type) && options.useXstack)
{
fprintf (asmFile, "%s", iComments2);
fprintf (asmFile, "; external stack \n");
}
/* copy the interrupt vector table */
- if (mainf && IFFUNC_HASBODY(mainf->type))
+ if (mainf && IFFUNC_HASBODY (mainf->type))
{
fprintf (asmFile, "%s", iComments2);
fprintf (asmFile, "; interrupt vector \n");
tfprintf (asmFile, "\t!area\n", port->mem.post_static_name);
tfprintf (asmFile, "\t!area\n", port->mem.static_name);
- if (mainf && IFFUNC_HASBODY(mainf->type))
+ if (mainf && IFFUNC_HASBODY (mainf->type))
{
if (port->genInitStartup)
{
- port->genInitStartup(asmFile);
+ port->genInitStartup (asmFile);
}
else
{
// if the port can copy the XINIT segment to XISEG
if (port->genXINIT)
{
- port->genXINIT(asmFile);
+ port->genXINIT (asmFile);
}
}
}
dbuf_write_and_destroy (&statsg->oBuf, asmFile);
- if (port->general.glue_up_main && mainf && IFFUNC_HASBODY(mainf->type))
+ if (port->general.glue_up_main && mainf && IFFUNC_HASBODY (mainf->type))
{
/* This code is generated in the post-static area.
* This area is guaranteed to follow the static area
tfprintf (asmFile, "\t!areahome\n", HOME_NAME);
dbuf_write_and_destroy (&home->oBuf, asmFile);
- if (mainf && IFFUNC_HASBODY(mainf->type))
+ if (mainf && IFFUNC_HASBODY (mainf->type))
{
/* entry point @ start of HOME */
fprintf (asmFile, "__sdcc_program_startup:\n");
if (port->genAssemblerEnd)
{
- port->genAssemblerEnd(asmFile);
+ port->genAssemblerEnd (asmFile);
}
fclose (asmFile);
}
werror (E_NEED_OPT_O_IN_C1);
exit (EXIT_FAILURE);
}
+ else
+ {
+ char *p;
+
+ moduleName = Safe_strdup(dstFileName);
+ for (p = moduleName; *p; ++p)
+ if (!isalnum ((unsigned char)*p))
+ *p = '_';
+ }
}
/* if no dstFileName given with -o, we've to find one: */
if (!dstFileName)
/* Set bin paths */
static void
-setBinPaths(const char *argv0)
+setBinPaths (const char *argv0)
{
const char *p;
char buf[PATH_MAX];
/* do it in reverse mode, so that addSetHead() can be used
instead of slower addSet() */
- if ((p = getBinPath(argv0)) != NULL)
- addSetHead(&binPathSet, (void *)p);
+ if ((p = getBinPath (argv0)) != NULL)
+ addSetHead (&binPathSet, (void *)p);
- if ((p = getenv(SDCC_DIR_NAME)) != NULL) {
- SNPRINTF(buf, sizeof buf, "%s" PREFIX2BIN_DIR, p);
- addSetHead(&binPathSet, Safe_strdup(buf));
+ if ((p = getenv (SDCC_DIR_NAME)) != NULL) {
+ SNPRINTF (buf, sizeof buf, "%s" PREFIX2BIN_DIR, p);
+ addSetHead (&binPathSet, Safe_strdup (buf));
}
}
/* Set system include path */
static void
-setIncludePath(void)
+setIncludePath (void)
{
char *p;
- char *p2=NULL;
- set *tempSet=NULL;
+ char *p2 = NULL;
+ set *tempSet = NULL;
/*
* Search logic:
if (options.nostdinc)
return;
- tempSet = appendStrSet(dataDirsSet, NULL, INCLUDE_DIR_SUFFIX);
- includeDirsSet = appendStrSet(tempSet, NULL, DIR_SEPARATOR_STRING);
- includeDirsSet = appendStrSet(includeDirsSet, NULL, port->target);
- mergeSets(&includeDirsSet, tempSet);
+ tempSet = appendStrSet (dataDirsSet, NULL, INCLUDE_DIR_SUFFIX);
+ includeDirsSet = appendStrSet (tempSet, NULL, DIR_SEPARATOR_STRING);
+ includeDirsSet = appendStrSet (includeDirsSet, NULL, port->target);
+ mergeSets (&includeDirsSet, tempSet);
- if ((p = getenv(SDCC_INCLUDE_NAME)) != NULL)
- {
- addSetHead(&includeDirsSet, p);
- p2=Safe_alloc(strlen(p)+strlen(DIR_SEPARATOR_STRING)+strlen(port->target)+1);
- if(p2!=NULL)
+ if ((p = getenv (SDCC_INCLUDE_NAME)) != NULL)
{
- strcpy(p2, p);
- strcat(p2, DIR_SEPARATOR_STRING);
- strcat(p2, port->target);
- addSetHead(&includeDirsSet, p2);
+ addSetHead(&includeDirsSet, p);
+ p2=Safe_alloc(strlen(p)+strlen(DIR_SEPARATOR_STRING)+strlen(port->target)+1);
+ if (p2 != NULL)
+ {
+ strcpy (p2, p);
+ strcat (p2, DIR_SEPARATOR_STRING);
+ strcat (p2, port->target);
+ addSetHead (&includeDirsSet, p2);
+ }
}
- }
}
/* Set system lib path */
static void
-setLibPath(void)
+setLibPath (void)
{
char *p;
if (options.nostdlib)
return;
- libDirsSet = appendStrSet(dataDirsSet, NULL, LIB_DIR_SUFFIX);
+ libDirsSet = appendStrSet (dataDirsSet, NULL, LIB_DIR_SUFFIX);
- if ((p = getenv(SDCC_LIB_NAME)) != NULL)
- addSetHead(&libDirsSet, p);
+ if ((p = getenv (SDCC_LIB_NAME)) != NULL)
+ addSetHead (&libDirsSet, p);
}
/* Set data path */
static void
-setDataPaths(const char *argv0)
+setDataPaths (const char *argv0)
{
const char *p;
char buf[PATH_MAX];
* 3. - DATADIR (only on *nix)
*/
- if ((p = getenv(SDCC_DIR_NAME)) != NULL) {
- SNPRINTF(buf, sizeof buf, "%s" PREFIX2DATA_DIR, p);
- addSet(&dataDirsSet, Safe_strdup(buf));
+ if ((p = getenv (SDCC_DIR_NAME)) != NULL) {
+ SNPRINTF (buf, sizeof buf, "%s" PREFIX2DATA_DIR, p);
+ addSet (&dataDirsSet, Safe_strdup (buf));
}
- if ((p = getBinPath(argv0)) != NULL) {
- SNPRINTF(buf, sizeof buf, "%s" BIN2DATA_DIR, p);
- free((void *)p);
- addSet(&dataDirsSet, Safe_strdup(buf));
+ if ((p = getBinPath (argv0)) != NULL) {
+ SNPRINTF (buf, sizeof buf, "%s" BIN2DATA_DIR, p);
+ Safe_free ((void *)p);
+ addSet (&dataDirsSet, Safe_strdup(buf));
}
#ifdef _WIN32
- if (peekSet(dataDirsSet) == NULL) {
+ if (peekSet (dataDirsSet) == NULL) {
/* this should never happen... */
- wassertl(0, "Can't get binary path");
+ wassertl (0, "Can't get binary path");
}
#else
- addSet(&dataDirsSet, Safe_strdup(DATADIR));
+ addSet (&dataDirsSet, Safe_strdup (DATADIR));
#endif
- setIncludePath();
- setLibPath();
+ setIncludePath ();
+ setLibPath ();
}
static void
/* install signal handler;
it's only purpose is to call exit() to remove temp files */
- if (!getenv("SDCC_LEAVE_SIGNALS"))
+ if (!getenv ("SDCC_LEAVE_SIGNALS"))
{
signal (SIGABRT, sig_handler);
signal (SIGTERM, sig_handler);
_findPort (argc, argv);
#ifdef JAMIN_DS390
- if (strcmp(port->target, "mcs51") == 0) {
- printf("DS390 jammed in A\n");
+ if (strcmp (port->target, "mcs51") == 0) {
+ printf ("DS390 jammed in A\n");
_setPort ("ds390");
ds390_jammed = 1;
}
initValues ();
- setBinPaths(argv[0]);
- setDataPaths(argv[0]);
+ setBinPaths (argv[0]);
+ setDataPaths (argv[0]);
if (port->initPaths)
port->initPaths();
yyparse ();
- if (pclose(yyin))
- fatalError = 1;
+ if (!options.c1mode)
+ if (pclose(yyin))
+ fatalError = 1;
- if (fatalError) {
+ if (fatalError)
exit (EXIT_FAILURE);
- }
if (port->general.do_glue != NULL)
(*port->general.do_glue) ();
glue ();
}
- if (fatalError) {
+ if (fatalError)
exit (EXIT_FAILURE);
- }
if (!options.c1mode && !noAssemble)
{
closeDumpFiles();
if (options.debug && debugFile)
- debugFile->closeFile();
+ debugFile->closeFile ();
if (!options.cc_only &&
!fatalError &&
!noAssemble &&
!options.c1mode &&
- (fullSrcFileName || peekSet(relFilesSet) != NULL))
+ (fullSrcFileName || peekSet (relFilesSet) != NULL))
{
if (options.verbose)
printf ("sdcc: Calling linker...\n");