[Midnightbsd-cvs] src [8128] trunk/sys/boot/common/reloc_elf.c: sync with freebsd to minimize diffs here

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Fri Sep 16 17:46:04 EDT 2016


Revision: 8128
          http://svnweb.midnightbsd.org/src/?rev=8128
Author:   laffer1
Date:     2016-09-16 17:46:04 -0400 (Fri, 16 Sep 2016)
Log Message:
-----------
sync with freebsd to minimize diffs here

Modified Paths:
--------------
    trunk/sys/boot/common/reloc_elf.c

Modified: trunk/sys/boot/common/reloc_elf.c
===================================================================
--- trunk/sys/boot/common/reloc_elf.c	2016-09-16 21:44:19 UTC (rev 8127)
+++ trunk/sys/boot/common/reloc_elf.c	2016-09-16 21:46:04 UTC (rev 8128)
@@ -193,6 +193,31 @@
 	}
 
 	return (0);
+#elif defined(__powerpc__)
+	Elf_Size w;
+	const Elf_Rela *rela;
+
+	switch (reltype) {
+	case ELF_RELOC_RELA:
+		rela = reldata;
+		if (relbase + rela->r_offset >= dataaddr &&
+		    relbase + rela->r_offset < dataaddr + len) {
+			switch (ELF_R_TYPE(rela->r_info)) {
+			case R_PPC_RELATIVE:
+				w = relbase + rela->r_addend;
+				bcopy(&w, (u_char *)data + (relbase +
+				      rela->r_offset - dataaddr), sizeof(w));
+				break;
+			default:
+				printf("\nunhandled relocation type %u\n",
+				       (u_int)ELF_R_TYPE(rela->r_info));
+				return (EFTYPE);
+			}
+		}
+		break;
+	}
+
+	return (0);
 #else
 	return (EOPNOTSUPP);
 #endif



More information about the Midnightbsd-cvs mailing list