--- oldlibc/eglibc-2.13/sysdeps/x86_64/dl-machine.h	2010-03-13 10:20:12.000000000 -0800
+++ eglibc-2.13/sysdeps/x86_64/dl-machine.h	2012-03-27 14:43:58.000000000 -0700
@@ -281,6 +281,7 @@
 #   endif
       if (map != &GL(dl_rtld_map)) /* Already done in rtld itself.  */
 #  endif
+          if (map->l_addr + reloc->r_addend != *reloc_addr)
 	*reloc_addr = map->l_addr + reloc->r_addend;
     }
   else
@@ -464,7 +465,9 @@
 {
   Elf64_Addr *const reloc_addr = reloc_addr_arg;
   assert (ELF64_R_TYPE (reloc->r_info) == R_X86_64_RELATIVE);
-  *reloc_addr = l_addr + reloc->r_addend;
+  if (l_addr + reloc->r_addend != *reloc_addr) {
+    *reloc_addr = l_addr + reloc->r_addend;
+  }
 }
 
 auto inline void

