From 927de41c62d31add91b68444d76a4a1a83fa9f02 Mon Sep 17 00:00:00 2001 From: Nicolas Pixel Noble Date: Thu, 25 Jan 2024 22:51:04 -0800 Subject: [PATCH] Properly adjusting hi16's addend relocation. --- tools/psyq-obj-parser/psyq-obj-parser.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tools/psyq-obj-parser/psyq-obj-parser.cc b/tools/psyq-obj-parser/psyq-obj-parser.cc index 418012b10..869b7613f 100644 --- a/tools/psyq-obj-parser/psyq-obj-parser.cc +++ b/tools/psyq-obj-parser/psyq-obj-parser.cc @@ -1338,6 +1338,10 @@ bool PsyqLnkFile::Relocation::generateElf(ElfRelocationPass pass, const std::str uint8_t* sectionData = (uint8_t*)malloc(size); memcpy(sectionData, section->section->get_data(), size); fmt::print(" :: Altering bytestream to account for HI symbol+addend relocation\n"); + if (addend < 0) { + fmt::print(" :: Adjusting for negative addend\n"); + addend += 0x10000; + } addend >>= 16; sectionData[offset + 0] = addend & 0xff; addend >>= 8;