diff options
author | Ulrich Drepper <drepper@redhat.com> | 1999-12-08 07:38:14 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1999-12-08 07:38:14 +0000 |
commit | 841ea81647a7b5ea852d039fa367bf687e59ace6 (patch) | |
tree | ab6badaf37f9d8bdd9266f96d10fceb1ec1b6149 /sysdeps/arm/dl-machine.h | |
parent | 3b187ccb86c5ad5fe969f788d8a635e9f7bbdc5f (diff) | |
download | glibc-841ea81647a7b5ea852d039fa367bf687e59ace6.tar.gz glibc-841ea81647a7b5ea852d039fa367bf687e59ace6.tar.xz glibc-841ea81647a7b5ea852d039fa367bf687e59ace6.zip |
Update.
1999-12-07 Scott Bambrough <scottb@netwinder.org> * sysdeps/arm/dl-machine.h (elf_machine_rel): Fixup R_ARM_PC24 relocs if possible. 1999-12-06 Andreas Schwab <schwab@suse.de> * sysdeps/unix/sysv/linux/setrlimit.c: First find out wether the ugetrlimit syscall exists. * sysdeps/unix/sysv/linux/getrlimit.c: Only put versions on exported symbols. * sysdeps/unix/sysv/linux/setrlimit.c: Likewise.
Diffstat (limited to 'sysdeps/arm/dl-machine.h')
-rw-r--r-- | sysdeps/arm/dl-machine.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/sysdeps/arm/dl-machine.h b/sysdeps/arm/dl-machine.h index 25e2f06321..2e6faf5d51 100644 --- a/sysdeps/arm/dl-machine.h +++ b/sysdeps/arm/dl-machine.h @@ -443,6 +443,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: _dl_reloc_bad_type (map, ELF32_R_TYPE (reloc->r_info), 0); break; |