kexec-tools-klibc: add kexec-x32.patch from oe-core

This is the last patch borrowed from the actual oe-core recipe.

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-08-31 17:31:50 +02:00 committed by Khem Raj
parent c56b2fc960
commit 28d225b581
2 changed files with 90 additions and 1 deletions

View File

@ -0,0 +1,88 @@
x86_64: Add support to build kexec-tools with x32 ABI
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(-)
Index: kexec-tools-2.0.10/configure.ac
===================================================================
--- kexec-tools-2.0.10.orig/configure.ac
+++ kexec-tools-2.0.10/configure.ac
@@ -56,6 +56,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])
Index: kexec-tools-2.0.10/kexec/arch/x86_64/kexec-elf-rel-x86_64.c
===================================================================
--- kexec-tools-2.0.10.orig/kexec/arch/x86_64/kexec-elf-rel-x86_64.c
+++ kexec-tools-2.0.10/kexec/arch/x86_64/kexec-elf-rel-x86_64.c
@@ -8,7 +8,11 @@ int machine_verify_elf_rel(struct mem_eh
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) {
Index: kexec-tools-2.0.10/kexec/kexec-syscall.h
===================================================================
--- kexec-tools-2.0.10.orig/kexec/kexec-syscall.h
+++ kexec-tools-2.0.10/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
Index: kexec-tools-2.0.10/purgatory/arch/x86_64/Makefile
===================================================================
--- kexec-tools-2.0.10.orig/purgatory/arch/x86_64/Makefile
+++ kexec-tools-2.0.10/purgatory/arch/x86_64/Makefile
@@ -23,4 +23,6 @@ x86_64_PURGATORY_SRCS += purgatory/arch/
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

View File

@ -35,7 +35,8 @@ KLIBC_PATCHES += " \
WARNING_FIXES = ""
FROM_OE_CORE = "file://arm_crashdump-fix-buffer-align.patch \
file://powerpc_change-the-memory-size-limit.patch"
file://powerpc_change-the-memory-size-limit.patch \
file://kexec-x32.patch"
SRC_URI += "${BUILD_PATCHES} ${KLIBC_PATCHES} ${WARNING_FIXES} ${FROM_OE_CORE}"