Skip to content

Commit

Permalink
Also validate alignment when floating
Browse files Browse the repository at this point in the history
  • Loading branch information
Rangi42 committed Dec 18, 2023
1 parent 9a4c721 commit 058b966
Showing 1 changed file with 12 additions and 3 deletions.
15 changes: 12 additions & 3 deletions src/link/script.y
Original file line number Diff line number Diff line change
Expand Up @@ -416,8 +416,17 @@ static void alignTo(uint32_t alignment, uint32_t alignOfs) {
if (alignment >= 16) {
setAddr(alignOffset);
} else {
alignMask = UINT16_C(1) << alignment;
alignOffset = alignOfs % alignMask; // TODO: maybe warn if truncating?
uint32_t alignSize = 1u << alignment;

if (alignOfs >= alignSize) {
scriptError(context, "Cannot align: The alignment offset (%" PRIu32
") must be less than alignment size (%" PRIu32 ")\n",
alignOfs, alignSize);
return;
}

alignMask = alignSize;
alignOffset = alignOfs % alignMask;
}
return;
}
Expand All @@ -440,7 +449,7 @@ static void alignTo(uint32_t alignment, uint32_t alignOfs) {
if (alignOfs >= alignSize) {
scriptError(context, "Cannot align: The alignment offset (%" PRIu32
") must be less than alignment size (%" PRIu32 ")\n",
alignOfs, 1 << alignment);
alignOfs, alignSize);
return;
}

Expand Down

0 comments on commit 058b966

Please sign in to comment.