From 005275defacb4b5d2f511bf7357ac7720f807761 Mon Sep 17 00:00:00 2001 From: Shamus Hammons Date: Fri, 21 Apr 2017 14:31:10 -0500 Subject: [PATCH 1/1] Possible fix for bug #92. --- mark.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/mark.c b/mark.c index 6c40c30..6c065b5 100644 --- 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 -- 2.37.2