svn commit: r328125 - stable/11/sys/boot/common

Konstantin Belousov kib at FreeBSD.org
Thu Jan 18 12:14:25 UTC 2018


Author: kib
Date: Thu Jan 18 12:14:24 2018
New Revision: 328125
URL: https://svnweb.freebsd.org/changeset/base/328125

Log:
  MFC r327822:
  Skip IRELATIVE relocations when loader processes ELF files.

Modified:
  stable/11/sys/boot/common/reloc_elf.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/boot/common/reloc_elf.c
==============================================================================
--- stable/11/sys/boot/common/reloc_elf.c	Thu Jan 18 12:08:52 2018	(r328124)
+++ stable/11/sys/boot/common/reloc_elf.c	Thu Jan 18 12:14:24 2018	(r328125)
@@ -115,6 +115,7 @@ __elfN(reloc)(struct elf_file *ef, symaddr_fn *symaddr
 /* XXX, definitions not available on i386. */
 #define	R_X86_64_64		1
 #define	R_X86_64_RELATIVE	8
+#define	R_X86_64_IRELATIVE	37
 
 	switch (rtype) {
 	case R_X86_64_64:		/* S + A */
@@ -129,6 +130,9 @@ __elfN(reloc)(struct elf_file *ef, symaddr_fn *symaddr
 		val = addr;
 		*where = val;
 		break;
+	case R_X86_64_IRELATIVE:
+		/* leave it to kernel */
+		break;
 	default:
 		printf("\nunhandled relocation type %u\n", (u_int)rtype);
 		return (EFTYPE);
@@ -173,6 +177,7 @@ __elfN(reloc)(struct elf_file *ef, symaddr_fn *symaddr
 #define R_386_32	1	/* Add symbol value. */
 #define R_386_GLOB_DAT	6	/* Set GOT entry to data address. */
 #define R_386_RELATIVE	8	/* Add load address of shared object. */
+#define	R_386_IRELATIVE	42
 
 	switch (rtype) {
 	case R_386_RELATIVE:
@@ -185,6 +190,9 @@ __elfN(reloc)(struct elf_file *ef, symaddr_fn *symaddr
 			return (ESRCH);
 		val = addr + addend;
 		*where = val;
+		break;
+	case R_386_IRELATIVE:
+		/* leave it to kernel */
 		break;
 	default:
 		printf("\nunhandled relocation type %u\n", (u_int)rtype);


More information about the svn-src-all mailing list