]> Shamusworld >> Repos - rmac/blobdiff - mark.c
Multiple fixes for 020+ mode, including:
[rmac] / mark.c
diff --git a/mark.c b/mark.c
index 6c40c304292586e6b0c2f620aef5c071a9597f77..664e318f5790e53eddd7103597a774eebcba4750 100644 (file)
--- a/mark.c
+++ b/mark.c
@@ -1,7 +1,7 @@
 //
-// RMAC - Reboot's Macro Assembler for the Atari Jaguar Console System
+// RMAC - Reboot's Macro Assembler for all Atari computers
 // MARK.C - A record of things that are defined relative to any of the sections
-// Copyright (C) 199x Landon Dyer, 2011-2012 Reboot and Friends
+// Copyright (C) 199x Landon Dyer, 2011-2017 Reboot and Friends
 // RMAC derived from MADMAC v1.07 Written by Landon Dyer, 1986
 // Source utilised with the kind permission of Landon Dyer
 //
@@ -90,16 +90,13 @@ if (symbol)
 
        //
        // Complain about some things are not allowed in '-p' (PRG) mode:
-       //  o Marks that aren't to LONGs
-       //  o External references
+       //  o  Marks that aren't to LONGs
+       //  o  External references
        //
        if (prg_flag)
        {
-               if ((flags & MLONG) == 0)
-                       error("illegal word relocatable (in .PRG mode)");
-
                if (symbol != NULL)
-                       errors("illegal external reference (in .PRG mode) to '%s'",
+                       error("illegal external reference (in .PRG mode) to '%s'",
                                symbol->sname);
        }
 
@@ -368,7 +365,7 @@ printf("MarkBSDImage():\n");
                                continue;
 
 #ifdef DEBUG_IMAGE_MARKING
-printf(" validsegment: raddr = $%08X\n", raddr);
+printf(" validsegment: raddr = $%08X\n", loc);
 #endif
                        uint32_t rflag = 0x00000040;    // Absolute relocation
 
@@ -527,10 +524,7 @@ uint32_t CreateELFRelocationRecord(uint8_t * buf, uint8_t * secBuf, uint16_t sec
                                else
                                        r_type = 1;  // R_68K_32
 
-                               if (symbol != NULL)
-                                       r_addend = symbol->svalue;    // Mark offset into section
-                               else
-                                       r_addend = GETBE32(secBuf + r_offset, 0);
+                               r_addend = GETBE32(secBuf + r_offset, 0);
 
                                // Deposit the relocation record
                                D_long(r_offset);