From 899b7ef93b40fc82a19b59e3f7885b7d8689aea4 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Wed, 8 Dec 1999 07:35:52 +0000 Subject: [PATCH] (elf_machine_rel): Fixup R_ARM_PC24 relocs if possible. --- sysdeps/arm/dl-machine.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/sysdeps/arm/dl-machine.h b/sysdeps/arm/dl-machine.h index eea2f4ced0e..ed95700453d 100644 --- a/sysdeps/arm/dl-machine.h +++ b/sysdeps/arm/dl-machine.h @@ -446,6 +446,23 @@ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc, *reloc_addr += value; break; } + case R_ARM_PC24: + { + signed int addend; + + addend = *reloc_addr & 0x00ffffff; + if (addend & 0x00800000) addend |= 0xff000000; + + value = value - (unsigned int)reloc_addr + (addend << 2); + if (value & 0xfc000003) + _dl_signal_error (0, map->l_name, + "R_ARM_PC24 relocation out of range"); + + value = value >> 2; + value = (*reloc_addr & 0xff000000) | (value & 0x00ffffff); + *reloc_addr = value; + } + break; default: assert (! "unexpected dynamic reloc type"); break; -- 2.47.2