added my Recipes
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
From fd40eee42273220fb0050fe10744b10067adc0a7 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?An=C3=ADbal=20Lim=C3=B3n?= <anibal.limon@linux.intel.com>
|
||||
Date: Fri, 31 Aug 2018 17:31:50 +0200
|
||||
Subject: [PATCH] x86_64: Add support to build kexec-tools with x32 ABI
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Summary of changes,
|
||||
|
||||
configure.ac: Add test for detect x32 ABI.
|
||||
purgatory/arch/x86_64/Makefile: Not use mcmodel large when
|
||||
x32 ABI is set.
|
||||
kexec/arch/x86_64/kexec-elf-rel-x86_64.c: When x32 ABI is set
|
||||
use ELFCLASS32 instead of ELFCLASS64.
|
||||
kexec/kexec-syscall.h: Add correct syscall number for x32 ABI.
|
||||
|
||||
Upstream-Status: Submitted
|
||||
|
||||
Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
|
||||
Signed-off-by: Mariano Lopez <mariano.lopez@linux.intel.com>
|
||||
|
||||
---
|
||||
configure.ac | 9 +++++++++
|
||||
kexec/arch/x86_64/kexec-elf-rel-x86_64.c | 4 ++++
|
||||
kexec/kexec-syscall.h | 4 ++++
|
||||
purgatory/arch/x86_64/Makefile | 4 +++-
|
||||
4 files changed, 20 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index e05d601..c428146 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -54,6 +54,15 @@ case $target_cpu in
|
||||
;;
|
||||
ia64|x86_64|alpha|m68k )
|
||||
ARCH="$target_cpu"
|
||||
+
|
||||
+ dnl ---Test for x32 ABI in x86_64
|
||||
+ if test "x$ARCH" = "xx86_64" ; then
|
||||
+ AC_EGREP_CPP(x32_test,
|
||||
+ [#if defined(__x86_64__) && defined (__ILP32__)
|
||||
+ x32_test
|
||||
+ #endif
|
||||
+ ], SUBARCH='x32', SUBARCH='64')
|
||||
+ fi
|
||||
;;
|
||||
* )
|
||||
AC_MSG_ERROR([unsupported architecture $target_cpu])
|
||||
diff --git a/kexec/arch/x86_64/kexec-elf-rel-x86_64.c b/kexec/arch/x86_64/kexec-elf-rel-x86_64.c
|
||||
index 761a4ed..1c0e3f8 100644
|
||||
--- a/kexec/arch/x86_64/kexec-elf-rel-x86_64.c
|
||||
+++ b/kexec/arch/x86_64/kexec-elf-rel-x86_64.c
|
||||
@@ -8,7 +8,11 @@ int machine_verify_elf_rel(struct mem_ehdr *ehdr)
|
||||
if (ehdr->ei_data != ELFDATA2LSB) {
|
||||
return 0;
|
||||
}
|
||||
+#ifdef __ILP32__
|
||||
+ if (ehdr->ei_class != ELFCLASS32) {
|
||||
+#else
|
||||
if (ehdr->ei_class != ELFCLASS64) {
|
||||
+#endif
|
||||
return 0;
|
||||
}
|
||||
if (ehdr->e_machine != EM_X86_64) {
|
||||
diff --git a/kexec/kexec-syscall.h b/kexec/kexec-syscall.h
|
||||
index 2a3794d..3e67078 100644
|
||||
--- a/kexec/kexec-syscall.h
|
||||
+++ b/kexec/kexec-syscall.h
|
||||
@@ -31,8 +31,12 @@
|
||||
#define __NR_kexec_load 268
|
||||
#endif
|
||||
#ifdef __x86_64__
|
||||
+#ifdef __ILP32__
|
||||
+#define __NR_kexec_load 528
|
||||
+#else
|
||||
#define __NR_kexec_load 246
|
||||
#endif
|
||||
+#endif
|
||||
#ifdef __s390x__
|
||||
#define __NR_kexec_load 277
|
||||
#endif
|
||||
diff --git a/purgatory/arch/x86_64/Makefile b/purgatory/arch/x86_64/Makefile
|
||||
index 7300937..4af11e4 100644
|
||||
--- a/purgatory/arch/x86_64/Makefile
|
||||
+++ b/purgatory/arch/x86_64/Makefile
|
||||
@@ -23,4 +23,6 @@ x86_64_PURGATORY_SRCS += purgatory/arch/i386/console-x86.c
|
||||
x86_64_PURGATORY_SRCS += purgatory/arch/i386/vga.c
|
||||
x86_64_PURGATORY_SRCS += purgatory/arch/i386/pic.c
|
||||
|
||||
-x86_64_PURGATORY_EXTRA_CFLAGS = -mcmodel=large
|
||||
+ifeq ($(SUBARCH),64)
|
||||
+ x86_64_PURGATORY_EXTRA_CFLAGS = -mcmodel=large
|
||||
+endif
|
||||
Reference in New Issue
Block a user