summaryrefslogtreecommitdiff
path: root/sys/boot
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2018-01-18 12:14:24 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2018-01-18 12:14:24 +0000
commitc47e2fc9af3893d8e7d396c652a97e9422a25b0c (patch)
treeae031b542bf024fc4f58bc316f2afc50a37b788b /sys/boot
parentd98f8521f6827bbc2a474f10a7374f66c59659bf (diff)
Notes
Diffstat (limited to 'sys/boot')
-rw-r--r--sys/boot/common/reloc_elf.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/sys/boot/common/reloc_elf.c b/sys/boot/common/reloc_elf.c
index 6d4a00ff8f68..aa3b0f7fc297 100644
--- a/sys/boot/common/reloc_elf.c
+++ b/sys/boot/common/reloc_elf.c
@@ -115,6 +115,7 @@ __elfN(reloc)(struct elf_file *ef, symaddr_fn *symaddr, const void *reldata,
/* 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, const void *reldata,
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, const void *reldata,
#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:
@@ -186,6 +191,9 @@ __elfN(reloc)(struct elf_file *ef, symaddr_fn *symaddr, const void *reldata,
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);
return (EFTYPE);