kexec-tools-klibc: fix build for qemuarm64

Since c3f043241a86 upstream the getrandom() syscall is used.
Last recipe bump overlooked that.

The syscall has been added to OE's klibc so we can fix this.

Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
Andrea Adami 2018-09-05 17:45:26 +02:00 committed by Khem Raj
parent 98e284846c
commit d1efc0181d
2 changed files with 63 additions and 1 deletions

View File

@ -0,0 +1,61 @@
From 10afeecd10499fbd64b2c68d3b076c6906df441f Mon Sep 17 00:00:00 2001
From: Andrea Adami <andrea.adami@gmail.com>
Date: Wed, 5 Sep 2018 17:07:48 +0200
Subject: [PATCH] kexec-arm64.c: workaround for getrandom() syscall
The syscall was added to OE's klibc.
Fix
| ../git/kexec/arch/arm64/kexec-arm64.c:19:10: fatal error: syscall.h: No such file or directory
| #include <syscall.h>
and
| ../git/kexec/arch/arm64/kexec-arm64.c: In function 'setup_2nd_dtb':
| ../git/kexec/arch/arm64/kexec-arm64.c:499:12: warning: implicit declaration of function 'getrandom'; did you mean 'srandom'? [-Wimplicit-function-declaration]
| result = getrandom(&fdt_val64,
Upstream-Status: Inappropriate [klibc specific]
Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
---
kexec/arch/arm64/kexec-arm64.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/kexec/arch/arm64/kexec-arm64.c b/kexec/arch/arm64/kexec-arm64.c
index 7a12479..8a7f5c5 100644
--- a/kexec/arch/arm64/kexec-arm64.c
+++ b/kexec/arch/arm64/kexec-arm64.c
@@ -16,7 +16,11 @@
#include <elf.h>
#include <unistd.h>
+
+#ifndef __KLIBC__
#include <syscall.h>
+#endif
+
#include <errno.h>
#include <linux/random.h>
@@ -487,10 +491,16 @@ static int setup_2nd_dtb(struct dtb *dtb, char *command_line, int on_crash)
* have a valid random seed to pass to the
* secondary kernel.
*/
+#ifndef __KLIBC__
result = syscall(SYS_getrandom, &fdt_val64,
sizeof(fdt_val64),
GRND_NONBLOCK);
-
+#else
+ extern ssize_t getrandom(void *, size_t, unsigned int);
+ result = getrandom(&fdt_val64,
+ sizeof(fdt_val64),
+ GRND_NONBLOCK);
+#endif
if(result == -1) {
dbgprintf("%s: Reading random bytes failed.\n",
__func__);
--
2.7.4

View File

@ -51,7 +51,8 @@ SRC_URI_append_x86-64 = " file://x86_sys_io.patch file://x86_basename.patch \
SRC_URI_append_aarch64 = " file://arm64_purgatory-Makefile-remove-unknown-flags.patch \
file://arm64_kexec-image-header.h-add-missing-le64toh.patch \
file://arm64-crashdump-arm64.c-fix-warning.patch"
file://arm64-crashdump-arm64.c-fix-warning.patch \
file://arm64_kexec-arm64.c-workaround-for-getrandom-syscall.patch"
SRC_URI_append_powerpc = " file://powerpc-purgatory-Makefile-remove-unknown-flags.patch"