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)