From c47c47a4afb3aea920a8006cd44ced5874664288 Mon Sep 17 00:00:00 2001 From: Colin Watson Date: Tue, 9 Apr 2013 00:02:27 +0100 Subject: [PATCH] Handle sign bit when generating veneer for ARM Thumb branch relocation --- rts/Linker.c | 1 + 1 file changed, 1 insertion(+) diff --git a/rts/Linker.c b/rts/Linker.c index a00268102f77..2bcc5222186c 100644 --- a/rts/Linker.c +++ b/rts/Linker.c @@ -4957,6 +4957,7 @@ do_Elf_Rel_relocations ( ObjectCode* oc, char* ehdrC, // Generate veneer SymbolExtra *extra = makeArmSymbolExtra(oc, ELF_R_SYM(info), S+imm+4, 1, is_target_thm); offset = (StgWord32) &extra->jumpIsland - P - 4; + sign = offset >> 31; to_thm = 1; } else if (!is_target_thm && ELF_R_TYPE(info) == R_ARM_THM_CALL) { offset &= ~0x3;