Add --warn-align-waste option to ca65, ld65, cl65
This commit is contained in:
@@ -55,6 +55,7 @@ unsigned long StartAddr = 0x200; /* Start address */
|
||||
unsigned char VerboseMap = 0; /* Verbose map file */
|
||||
unsigned char AllowMultDef = 0; /* Allow multiple definitions */
|
||||
unsigned char LargeAlignment = 0; /* Don't warn about large alignments */
|
||||
unsigned char WarnAlignWaste = 0; /* Warn about "wasted" bytes when aligning */
|
||||
unsigned char WarningsAsErrors = 0; /* Error if any warnings */
|
||||
|
||||
const char* MapFileName = 0; /* Name of the map file */
|
||||
|
||||
@@ -55,6 +55,7 @@ extern unsigned long StartAddr; /* Start address */
|
||||
extern unsigned char VerboseMap; /* Verbose map file */
|
||||
extern unsigned char AllowMultDef; /* Allow multiple definitions */
|
||||
extern unsigned char LargeAlignment; /* Don't warn about large alignments */
|
||||
extern unsigned char WarnAlignWaste; /* Warn about "wasted" bytes when aligning */
|
||||
extern unsigned char WarningsAsErrors; /* Error if any warnings */
|
||||
|
||||
extern const char* MapFileName; /* Name of the map file */
|
||||
|
||||
@@ -179,7 +179,9 @@ static void Usage (void)
|
||||
" --start-addr addr\t\tSet the default start address\n"
|
||||
" --start-group\t\t\tStart a library group\n"
|
||||
" --target sys\t\t\tSet the target system\n"
|
||||
" --version\t\t\tPrint the linker version\n",
|
||||
" --version\t\t\tPrint the linker version\n"
|
||||
" --warn-align-waste\t\tPrint bytes \"wasted\" for alignment\n"
|
||||
" --warnings-as-errors\t\tTreat warnings as errors\n",
|
||||
ProgName);
|
||||
}
|
||||
|
||||
@@ -608,6 +610,15 @@ static void OptVersion (const char* Opt attribute ((unused)),
|
||||
|
||||
|
||||
|
||||
static void OptWarnAlignWaste (const char* Opt attribute ((unused)),
|
||||
const char* Arg attribute ((unused)))
|
||||
/* Warn about bytes "wasted" for alignment */
|
||||
{
|
||||
WarnAlignWaste = 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void OptWarningsAsErrors (const char* Opt attribute ((unused)),
|
||||
const char* Arg attribute ((unused)))
|
||||
/* Generate an error if any warnings occur */
|
||||
@@ -691,6 +702,7 @@ static void ParseCommandLine (void)
|
||||
{ "--start-group", 0, CmdlOptStartGroup },
|
||||
{ "--target", 1, CmdlOptTarget },
|
||||
{ "--version", 0, OptVersion },
|
||||
{ "--warn-align-waste", 0, OptWarnAlignWaste },
|
||||
{ "--warnings-as-errors", 0, OptWarningsAsErrors },
|
||||
};
|
||||
|
||||
|
||||
@@ -236,8 +236,9 @@ Section* ReadSection (FILE* F, ObjData* O)
|
||||
GetString (Name), Alignment, GetObjFileName (O));
|
||||
}
|
||||
S->Alignment = Alignment;
|
||||
if (Sec->Fill != 0) {
|
||||
Warning("Wasting %lu bytes for alignment from %s", Sec->Fill, GetObjFileName (O));
|
||||
if (WarnAlignWaste && Sec->Fill != 0) {
|
||||
Warning("%s: Wasting %lu bytes for `%s' alignment",
|
||||
GetObjFileName (O), Sec->Fill, GetString (Name));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user