shithub: rgbds

Download patch

ref: 54ed050ecf9a164ecb9cf368bbdedd524f23560a
parent: f262d3b34bb60c71390dd2dc1ee70d99140083e8
author: ISSOtm <[email protected]>
date: Sun Sep 8 18:28:28 EDT 2019

Make `BANK(@)` known at assembling time when possible
If the current section's bank is fixed, this means this value is
known prior to linking.

--- a/src/asm/rpn.c
+++ b/src/asm/rpn.c
@@ -19,6 +19,7 @@
 #include "asm/main.h"
 #include "asm/rpn.h"
 #include "asm/symbol.h"
+#include "asm/output.h"
 #include "asm/warning.h"
 
 #include "linkdefs.h"
@@ -160,11 +161,14 @@
 {
 	rpn_Init(expr);
 
-	/*
-	 * This symbol is not really relocatable, but this makes the assembler
-	 * write this expression as a RPN patch to the object file.
-	 */
-	expr->isReloc = 1;
+	if (pCurrentSection->nBank == -1)
+		/*
+		 * This is not really relocatable, but this makes the assembler
+		 * write this expression as a RPN patch to the object file.
+		 */
+		expr->isReloc = 1;
+	else
+		expr->nVal = pCurrentSection->nBank;
 
 	pushbyte(expr, RPN_BANK_SELF);
 	expr->nRPNPatchSize++;