Possible fix for bug #92.
authorShamus Hammons <jlhamm@acm.org>
Fri, 21 Apr 2017 19:31:10 +0000 (14:31 -0500)
committerShamus Hammons <jlhamm@acm.org>
Fri, 21 Apr 2017 19:31:10 +0000 (14:31 -0500)
mark.c

diff --git a/mark.c b/mark.c
index 6c40c304292586e6b0c2f620aef5c071a9597f77..6c065b52e83928cfdd9589d970a2f79a5958c138 100644 (file)
--- a/mark.c
+++ b/mark.c
@@ -368,7 +368,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,9 +527,20 @@ 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
+#ifdef DEBUG_IMAGE_MARKING
+if (symbol)
+{
+       printf("CreateELFReloc: symbol-svalue = $%08X\n", symbol->svalue);
+}
+
+printf("CreateELFReloc: deposited value = $%08X\n", GETBE32(secBuf + r_offset, 0));
+
+#endif
+//Turns out this is pretty much bollocks. So now we punt all the time :-)
+//N.B.: Once this is proved out, this will go for good.
+//                             if (symbol != NULL)
+//                                     r_addend = symbol->svalue;    // Mark offset into section
+//                             else
                                        r_addend = GETBE32(secBuf + r_offset, 0);
 
                                // Deposit the relocation record