From fac246c799aee0bc0efebc8656cfeb1122177902 Mon Sep 17 00:00:00 2001 From: Greg King Date: Tue, 29 Mar 2016 05:40:12 -0400 Subject: [PATCH] Moved a warning message, about misaligned segments, to a configuration function. It used to be shown only if the segment was written into a binary file. Now, it's shown for all badly-aligned segments. --- src/ld65/bin.c | 12 ------------ src/ld65/config.c | 18 ++++++++++++++++-- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/ld65/bin.c b/src/ld65/bin.c index ada4f1e3c..c3efd9cd1 100644 --- a/src/ld65/bin.c +++ b/src/ld65/bin.c @@ -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. diff --git a/src/ld65/config.c b/src/ld65/config.c index 8e7a049c7..5959067b2 100644 --- a/src/ld65/config.c +++ b/src/ld65/config.c @@ -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)); }