shithub: rgbds

Download patch

ref: 947d767c6487bbb131fa038ecc287ceb4c620fc5
parent: 82cf3eb48f72e94c4dc346a5ee8f4a1b01ad8e56
parent: a75c15ec46180802582a78e13b7c3a6a11721fec
author: AntonioND <[email protected]>
date: Sun Mar 12 13:06:54 EDT 2017

Merge pull request #135 from Ben10do/improve-assign-error-messages

Improve assignment error messages

--- a/src/link/assign.c
+++ b/src/link/assign.c
@@ -243,8 +243,13 @@
 			pSection->oAssigned = 1;
 			DOMAXBANK(pSection->Type, pSection->nBank);
 		} else {
-			errx(1, "Unable to load fixed %s section into bank $%02lX",
-				SECT_ATTRIBUTES[pSection->Type].name, pSection->nBank);
+			if (pSection->nAlign <= 1) {
+				errx(1, "Unable to place '%s' (%s section) in bank $%02lX",
+					pSection->pzName, SECT_ATTRIBUTES[pSection->Type].name, pSection->nBank);
+			} else {
+				errx(1, "Unable to place '%s' (%s section) in bank $%02lX (with $%lX-byte alignment)",
+					pSection->pzName, SECT_ATTRIBUTES[pSection->Type].name, pSection->nBank, pSection->nAlign);
+			}
 		}
 	}
 }
@@ -265,8 +270,18 @@
 			pSection->oAssigned = 1;
 			DOMAXBANK(pSection->Type, pSection->nBank);
 		} else {
-			errx(1, "Unable to place %s section anywhere",
-				 SECT_ATTRIBUTES[type].name);
+			const char *locality = "anywhere";
+			if (SECT_ATTRIBUTES[pSection->Type].bankCount > 1) {
+				locality = "in any bank";
+			}
+			
+			if (pSection->nAlign <= 1) {
+				errx(1, "Unable to place '%s' (%s section) %s",
+					 pSection->pzName, SECT_ATTRIBUTES[type].name, locality);
+			} else {
+				errx(1, "Unable to place '%s' (%s section) %s (with $%lX-byte alignment)",
+					 pSection->pzName, SECT_ATTRIBUTES[type].name, locality, pSection->nAlign);
+			}
 		}
 	}	
 }
@@ -363,9 +378,8 @@
 				pSection->nBank = SECT_ATTRIBUTES[pSection->Type].bank;
 				if (area_AllocAbs(&BankFree[pSection->nBank], pSection->nOrg,
 					 pSection->nByteSize) == -1) {
-					errx(1, "Unable to load fixed %s section at $%lX",
-						 SECT_ATTRIBUTES[pSection->Type].name,
-						 pSection->nOrg);
+					errx(1, "Unable to place '%s' (%s section) at $%lX",
+						 pSection->pzName, SECT_ATTRIBUTES[pSection->Type].name, pSection->nOrg);
 				}
 				pSection->oAssigned = 1;
 				break;
@@ -380,8 +394,8 @@
 						DOMAXBANK(pSection->Type, pSection->nBank);
 						pSection->oAssigned = 1;
 					} else {
-						errx(1,
-							 "Unable to load fixed %s section at $%lX in bank $%02lX", SECT_ATTRIBUTES[pSection->Type].name, pSection->nOrg, pSection->nBank);
+						errx(1, "Unable to place '%s' (%s section) at $%lX in bank $%02lX",
+							pSection->pzName, SECT_ATTRIBUTES[pSection->Type].name, pSection->nOrg, pSection->nBank);
 					}
 				}
 				break;
@@ -415,8 +429,8 @@
 				if ((pSection->nBank =
 					area_AllocAbsAnyBank(pSection->nOrg, pSection->nByteSize,
 						pSection->Type)) == -1) {
-					errx(1, "Unable to load fixed %s section at $%lX into any bank",
-						 SECT_ATTRIBUTES[pSection->Type].name, pSection->nOrg);
+					errx(1, "Unable to place '%s' (%s section) at $%lX in any bank",
+						 pSection->pzName, SECT_ATTRIBUTES[pSection->Type].name, pSection->nOrg);
 				}
 				pSection->oAssigned = 1;
 				DOMAXBANK(pSection->Type, pSection->nBank);