about summary refs log tree commit diff
path: root/sysdeps/arm/dl-machine.h
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1999-12-08 07:38:14 +0000
committerUlrich Drepper <drepper@redhat.com>1999-12-08 07:38:14 +0000
commit841ea81647a7b5ea852d039fa367bf687e59ace6 (patch)
treeab6badaf37f9d8bdd9266f96d10fceb1ec1b6149 /sysdeps/arm/dl-machine.h
parent3b187ccb86c5ad5fe969f788d8a635e9f7bbdc5f (diff)
downloadglibc-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.h17
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;