Module Name:    src
Committed By:   martin
Date:           Mon Jul 24 08:08:34 UTC 2017

Modified Files:
        src/libexec/ld.elf_so/arch/sparc64: mdreloc.c

Log Message:
Fix thinko in previous: even if the address is an unsigned value and we
have verified the range before, we still need to mask the bit pattern
to the target instruction field.


To generate a diff of this commit:
cvs rdiff -u -r1.62 -r1.63 src/libexec/ld.elf_so/arch/sparc64/mdreloc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/libexec/ld.elf_so/arch/sparc64/mdreloc.c
diff -u src/libexec/ld.elf_so/arch/sparc64/mdreloc.c:1.62 src/libexec/ld.elf_so/arch/sparc64/mdreloc.c:1.63
--- src/libexec/ld.elf_so/arch/sparc64/mdreloc.c:1.62	Sun Jul 23 14:37:51 2017
+++ src/libexec/ld.elf_so/arch/sparc64/mdreloc.c	Mon Jul 24 08:08:34 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: mdreloc.c,v 1.62 2017/07/23 14:37:51 martin Exp $	*/
+/*	$NetBSD: mdreloc.c,v 1.63 2017/07/24 08:08:34 martin Exp $	*/
 
 /*-
  * Copyright (c) 2000 Eduardo Horvath.
@@ -32,7 +32,7 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: mdreloc.c,v 1.62 2017/07/23 14:37:51 martin Exp $");
+__RCSID("$NetBSD: mdreloc.c,v 1.63 2017/07/24 08:08:34 martin Exp $");
 #endif /* not lint */
 
 #include <errno.h>
@@ -651,7 +651,7 @@ _rtld_relocate_plt_object(const Obj_Entr
 		 *	nop
 		 *
 		 */
-		where[1] = BAA | (offBAA >> 2);
+		where[1] = BAA | ((offBAA >> 2) & 0x7ffff);
 		__asm volatile("iflush %0+4" : : "r" (where));
 	} else if (value < (1L<<32)) {
 		/* 

Reply via email to