From fdb52bcdc698ed0f03e04f34658ea2a3b9c6f9b5 Mon Sep 17 00:00:00 2001 From: drmortalwombat <90205530+drmortalwombat@users.noreply.github.com> Date: Sat, 27 Jan 2024 17:43:08 +0100 Subject: [PATCH] Limit JSR->JMP forwarding --- oscar64/Linker.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/oscar64/Linker.cpp b/oscar64/Linker.cpp index 3163bc7..a5fb477 100644 --- a/oscar64/Linker.cpp +++ b/oscar64/Linker.cpp @@ -400,7 +400,9 @@ void Linker::InlineSimpleJumps(void) for (int j = 0; j < cobj->mReferences.Size(); j++) { LinkerReference* cref = cobj->mReferences[j]; - if (cref->mOffset > 0 && cref->mOffset < cobj->mSize + 2 && (cref->mFlags & (LREF_HIGHBYTE | LREF_LOWBYTE)) == (LREF_HIGHBYTE | LREF_LOWBYTE)) + if (cref->mOffset > 0 && cref->mOffset < cobj->mSize + 2 && + cobj->mData[cref->mOffset - 1] == 0x20 && + (cref->mFlags & (LREF_HIGHBYTE | LREF_LOWBYTE)) == (LREF_HIGHBYTE | LREF_LOWBYTE)) { if (cref->mRefObject->mType == LOT_NATIVE_CODE && cref->mRefObject->mSize == 3 && cobj->mSection == cref->mRefObject->mSection && cref->mRefOffset == 0 &&