diff src/unexfreebsd.c @ 2:ac2d302a0011 r19-15b2

Import from CVS: tag r19-15b2
author cvs
date Mon, 13 Aug 2007 08:46:35 +0200
parents 376386a54a3c
children 850242ba4a81
line wrap: on
line diff
--- a/src/unexfreebsd.c	Mon Aug 13 08:45:53 2007 +0200
+++ b/src/unexfreebsd.c	Mon Aug 13 08:46:35 2007 +0200
@@ -289,8 +289,15 @@
   /* We can get relocation sites in the bss region, for objects whose
      contents are copied from a shared library.  We don't need or want
      to restore these at present. */
+#ifndef sparc
   if (ri->r_copy)
     return;
+#else
+  /* Struct relocation_info_sparc doesn't have member r_copy.
+     Instead, we use the address to check if this is run-time-copied. */
+  if (ri->r_address >= ts->bssaddr && ri->r_address < ts->endaddr)
+    return;
+#endif
 
   offset = unexec_addr_to_offset (ri->r_address, ts);
   if (offset == -1)
@@ -351,6 +358,7 @@
         source++;
         *target = *source;
       }
+      break;
     default:
       unexec_error ("unknown reloc type %d seen during unexec()",
 		    0, ri->r_type);