#include <stdio.h>
#include <string.h>
-//#if !defined(_MSC_VER)
-//#include <alloc.h>
-//#endif
#include "aslink.h"
/*)Module lkrloc.c
*/
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
* 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)
{