#endif
// Globally accessible scratch buffer for file names.
-char scratchFileName[FILENAME_MAX];
-char buffer[FILENAME_MAX];
+char scratchFileName[PATH_MAX];
+char buffer[PATH_MAX];
// In MSC VC6 default search path for exe's to path for this
{ 0, "--verbose", &options.verbose, "Trace calls to the preprocessor, assembler, and linker" },
{ 0, OPTION_LESS_PEDANTIC, NULL, "Disable some of the more pedantic warnings" },
{ 0, OPTION_SHORT_IS_8BITS, NULL, "Make short 8bits (for old times sake)" },
- { 0, "--profile", &options.profile, "On supported ports, generate extra profiling information" }
+ { 0, "--profile", &options.profile, "On supported ports, generate extra profiling information" },
+ { 0, "--fommit-frame-pointer", &options.ommitFramePtr, "Leave out the frame pointer." }
};
/** Table of all unsupported options and help text to display when one
/* get rid of the "." */
strtok (buffer, ".");
- srcFileName = Safe_calloc (1, strlen (buffer) + 1);
+ srcFileName = Safe_alloc ( strlen (buffer) + 1);
strcpy (srcFileName, buffer);
/* get rid of any path information
*(fext - 1) != '/' &&
*(fext - 1) != ':')
fext--;
- moduleName = Safe_calloc (1, strlen (fext) + 1);
+ moduleName = Safe_alloc ( strlen (fext) + 1);
strcpy (moduleName, fext);
return;
werror (W_TOO_MANY_SRC, s);
return;
}
- options.out_name = strdup (s);
+ options.out_name = Safe_strdup (s);
}
else
{
fprintf (lnkfile, "-z\n");
#define WRITE_SEG_LOC(N, L) \
- segName = strdup(N); \
+ segName = Safe_strdup(N); \
c = strtok(segName, " \t"); \
fprintf (lnkfile,"-b %s = 0x%04x\n", c, L); \
- if (segName) { free(segName); }
+ if (segName) { Safe_free(segName); }
/* code segment start */
WRITE_SEG_LOC (CODE_NAME, options.code_loc);
if (port->linker.cmd)
{
- buildCmdLine (buffer, port->linker.cmd, srcFileName, NULL, NULL, NULL);
+ char buffer2[PATH_MAX];
+ buildCmdLine (buffer2, port->linker.cmd, srcFileName, NULL, NULL, NULL);
+ buildCmdLine2 (buffer, buffer2);
}
else
{
if (strcmp (srcFileName, "temp") == 0)
{
/* rename "temp.cdb" to "firstRelFile.cdb" */
- char *f = strtok (strdup (relFiles[0]), ".");
+ char *f = strtok (Safe_strdup (relFiles[0]), ".");
f = strcat (f, ".cdb");
rename ("temp.cdb", f);
srcFileName = NULL;
if (options.stack10bit)
addToList (preArgv, "-DSDCC_STACK_TENBIT");
+ /* set the macro for no overlay */
+ if (options.noOverlay)
+ addToList (preArgv, "-DSDCC_NOOVERLAY");
+
/* set the macro for large model */
switch (options.model)
{
setMainValue ("cppextraopts", join(preArgv));
if (!preProcOnly)
- preOutName = strdup (tempfilename ());
+ preOutName = Safe_strdup (tempfilename ());
/* Have to set cppoutfilename to something, even if just pre-processing. */
setMainValue ("cppoutfilename", preOutName ? preOutName : "");
if (preOutName)
{
unlink (preOutName);
- free (preOutName);
+ Safe_free (preOutName);
}
// EndFix
exit (1);
strcpy (scratchFileName, argv0);
*strrchr (scratchFileName, DIR_SEPARATOR_CHAR) = '\0';
setMainValue ("bindir", scratchFileName);
- ExePathList[0] = gc_strdup (scratchFileName);
+ ExePathList[0] = Safe_strdup (scratchFileName);
}
else if (getenv (SDCCDIR_NAME) != NULL)
{
strcpy (scratchFileName, getenv (SDCCDIR_NAME));
strcat (scratchFileName, buffer);
setMainValue ("bindir", scratchFileName);
- ExePathList[0] = gc_strdup (scratchFileName);
+ ExePathList[0] = Safe_strdup (scratchFileName);
}
else
{
{
populateMainValues (_baseValues);
setMainValue ("port", port->target);
- setMainValue ("fullsrcfilename", fullSrcFileName);
- setMainValue ("srcfilename", srcFileName);
setMainValue ("objext", port->linker.rel_ext);
setMainValue ("asmext", port->assembler.file_ext);
+
+ setMainValue ("fullsrcfilename", fullSrcFileName ? fullSrcFileName : "fullsrcfilename");
+ setMainValue ("srcfilename", srcFileName ? srcFileName : "srcfilename");
}
/*
exit (0);
}
+ initValues ();
+ _discoverPaths (argv[0]);
+
if (srcFileName)
{
- initValues ();
- _discoverPaths (argv[0]);
-
preProcess (envp);
initMem ();
if (yyin && yyin != stdin)
fclose (yyin);
unlink (preOutName);
- free (preOutName);
+ Safe_free (preOutName);
}
// EndFix
return 1;
if (yyin && yyin != stdin)
fclose (yyin);
unlink (preOutName);
- free (preOutName);
+ Safe_free (preOutName);
}
// EndFix
#if defined (__MINGW32__) || defined (__CYGWIN__) || defined (_MSC_VER)
if (preOutName && !options.c1mode)
{
unlink (preOutName);
- free (preOutName);
+ Safe_free (preOutName);
}
if (!options.cc_only &&