1
0
mirror of https://github.com/cc65/cc65.git synced 2024-07-07 19:29:18 +00:00

Merge pull request #280 from greg-king5/misaligned

Show a warning message about misaligned segments, for all badly-aligned segments.
This commit is contained in:
Oliver Schmidt 2016-03-29 12:19:24 +02:00
commit 1fee359056
2 changed files with 16 additions and 14 deletions

View File

@ -169,18 +169,6 @@ static void BinWriteMem (BinDesc* D, MemoryArea* M)
PrintNumVal ("Address", Addr);
PrintNumVal ("FileOffs", (unsigned long) ftell (D->F));
/* Check if the alignment for the segment from the linker config is
** a multiple for that of the segment.
*/
if ((S->RunAlignment % S->Seg->Alignment) != 0) {
/* Segment requires another alignment than configured
** in the linker.
*/
Warning ("Segment `%s' is not aligned properly. Resulting "
"executable may not be functional.",
GetString (S->Name));
}
/* If this is the run memory area, we must apply run alignment. If
** this is not the run memory area but the load memory area (which
** means that both are different), we must apply load alignment.

View File

@ -1855,6 +1855,20 @@ unsigned CfgProcess (void)
/* This is the run (and maybe load) memory area. Handle
** alignment and explict start address and offset.
*/
/* Check if the alignment for the segment from the linker
** config. is a multiple for that of the segment.
*/
if ((S->RunAlignment % S->Seg->Alignment) != 0) {
/* Segment requires another alignment than configured
** in the linker.
*/
CfgWarning (GetSourcePos (S->LI),
"Segment `%s' isn't aligned properly; the"
" resulting executable might not be functional.",
GetString (S->Name));
}
if (S->Flags & SF_ALIGN) {
/* Align the address */
unsigned long NewAddr = AlignAddr (Addr, S->RunAlignment);
@ -1865,8 +1879,8 @@ unsigned CfgProcess (void)
*/
if (M->FillLevel == 0 && NewAddr > Addr) {
CfgWarning (GetSourcePos (S->LI),
"First segment in memory area `%s' does "
"already need fill bytes for alignment",
"The first segment in memory area `%s' "
"needs fill bytes for alignment.",
GetString (M->Name));
}