From 431c5d3282c801a94058c022073ca9d261fbeb7e Mon Sep 17 00:00:00 2001 From: drmortalwombat <90205530+drmortalwombat@users.noreply.github.com> Date: Mon, 12 Feb 2024 18:06:30 +0100 Subject: [PATCH] Add info message, if object cannot be placed by linker --- oscar64/Errors.h | 1 + oscar64/Linker.cpp | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/oscar64/Errors.h b/oscar64/Errors.h index 3441380..747bffb 100644 --- a/oscar64/Errors.h +++ b/oscar64/Errors.h @@ -21,6 +21,7 @@ enum ErrorID EINFO_EXPANDED = 1001, EINFO_ORIGINAL_DEFINITION = 1002, EINFO_CALLED_FROM = 1003, + EINFO_SIZE = 1004, EWARN_GENERIC = 2000, EWARN_CONSTANT_TRUNCATED, diff --git a/oscar64/Linker.cpp b/oscar64/Linker.cpp index 8ba675f..ed0e33b 100644 --- a/oscar64/Linker.cpp +++ b/oscar64/Linker.cpp @@ -802,7 +802,22 @@ void Linker::CopyObjects(bool inlays) else { if (!obj->mRegion) + { mErrors->Error(obj->mLocation, ERRR_INSUFFICIENT_MEMORY, "Could not place object", obj->mIdent); + + int avail = 0; + for (int i = 0; i < mRegions.Size(); i++) + { + if (mRegions[i]->mSections.Contains(obj->mSection)) + { + if (mRegions[i]->mEnd - mRegions[i]->mStart - mRegions[i]->mUsed > avail) + avail = mRegions[i]->mEnd - mRegions[i]->mStart - mRegions[i]->mUsed; + } + } + char buffer[200]; + sprintf_s(buffer, "Size %d Available %d in section", obj->mSize, avail); + mErrors->Error(obj->mLocation, EINFO_SIZE, buffer, obj->mSection->mIdent); + } else if (obj->mRegion->mInlayObject) ; else if (obj->mRegion && obj->mRegion->mCartridgeBanks != 0)