Add info message, if object cannot be placed by linker

This commit is contained in:
drmortalwombat 2024-02-12 18:06:30 +01:00
parent ce5be92225
commit 431c5d3282
2 changed files with 16 additions and 0 deletions

View File

@ -21,6 +21,7 @@ enum ErrorID
EINFO_EXPANDED = 1001, EINFO_EXPANDED = 1001,
EINFO_ORIGINAL_DEFINITION = 1002, EINFO_ORIGINAL_DEFINITION = 1002,
EINFO_CALLED_FROM = 1003, EINFO_CALLED_FROM = 1003,
EINFO_SIZE = 1004,
EWARN_GENERIC = 2000, EWARN_GENERIC = 2000,
EWARN_CONSTANT_TRUNCATED, EWARN_CONSTANT_TRUNCATED,

View File

@ -802,7 +802,22 @@ void Linker::CopyObjects(bool inlays)
else else
{ {
if (!obj->mRegion) if (!obj->mRegion)
{
mErrors->Error(obj->mLocation, ERRR_INSUFFICIENT_MEMORY, "Could not place object", obj->mIdent); 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->mInlayObject)
; ;
else if (obj->mRegion && obj->mRegion->mCartridgeBanks != 0) else if (obj->mRegion && obj->mRegion->mCartridgeBanks != 0)