X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?p=rmac;a=blobdiff_plain;f=sect.c;fp=sect.c;h=59f7977160b11dee3d3057e050f166f426bc74ea;hp=5d7fb4ad22b31b87efa3784c897533f63a17519d;hb=b93a2e2f8ade36a09709b4a72b10f3e8228bed2b;hpb=261f8d9198c4235bcdced4403ba391553e6bd0d1 diff --git a/sect.c b/sect.c index 5d7fb4a..59f7977 100644 --- a/sect.c +++ b/sect.c @@ -701,16 +701,8 @@ int ResolveFixups(int sno) SETBE32(locp, 0, eval); break; - // Fixup QUAD forward references - // Need to add flags for OP uses... [DONE] + // Fixup QUAD forward references (mainly used by the OP assembler) case FU_QUAD: - // If the symbol is undefined, make sure to pass the symbol in - // to the MarkRelocatable() function. -/* if (!(eattr & DEFINED)) - MarkRelocatable(sno, loc, 0, MQUAD, esym); - else if (tdb) - MarkRelocatable(sno, loc, tdb, MQUAD, NULL);//*/ - if (w & FU_OBJLINK) { uint64_t quad = GETBE64(locp, 0); @@ -719,13 +711,16 @@ int ResolveFixups(int sno) if (fup->orgaddr) addr = fup->orgaddr; -//printf("sect.c: FU_OBJLINK quad=%016lX, addr=%016lX ", quad, addr); eval = (quad & 0xFFFFFC0000FFFFFFLL) | ((addr & 0x3FFFF8) << 21); -//printf("(%016lX)\n", eval); } else if (w & FU_OBJDATA) { + // If it's in a TEXT or DATA section, be sure to mark for a + // fixup later + if (tdb) + MarkRelocatable(sno, loc, tdb, MQUAD, NULL); + uint64_t quad = GETBE64(locp, 0); uint64_t addr = eval; @@ -736,7 +731,6 @@ int ResolveFixups(int sno) } SETBE64(locp, 0, eval); -//printf("(%016lX)\n", eval); break; // Fixup a 3-bit "QUICK" reference in bits 9..1