cleaned up the mess I left behind
[fw/sdcc] / as / mcs51 / lkrloc.c
index fecf9f8f6b143e1277b7358496df72330a3111c3..baa056496fe455baa649ef505d3340fa5d790c1e 100644 (file)
  */
 int    lastExtendedAddress=-1;
 
+/* Static variable which holds the index of last processed area.
+ * Useful only for iHex mode.
+ */
+static int lastAreaIndex = -1;
+
 /*)Function    VOID    reloc(c)
  *
  *                     char c          process code
@@ -528,17 +533,21 @@ relr()
                 * This is another reason why we can't have areas greater
                 * than 64K yet, even in flat24 mode.
                 */
-               extendedAddress += ((a[aindex]->a_size) >> 16 & 0xffff);
+       //      extendedAddress += ((a[aindex]->a_size) >> 16 & 0xffff);
+       //      commented out by jr 
+               
+               if (lastAreaIndex != aindex) {
+                       lastAreaIndex = aindex;
+                       newArea();
+               }
                
                if (extendedAddress != lastExtendedAddress)
                {
                
-#if 1 // jwk
-                 if (lastExtendedAddress!=-1) {
-                   printf("output extended linear address record 0x%x 0x%x\n",
-                          extendedAddress, lastExtendedAddress);
-                 }
-#endif
+                   if (lastExtendedAddress!=-1) {
+                     printf("output extended linear address record 0x%x 0x%x\n",
+                            extendedAddress, lastExtendedAddress);
+                   }
                    
                    if (rflag)
                    {