From cb1e5463b5298b064e9b6c86ad6fe3505fec9298 Mon Sep 17 00:00:00 2001 From: Kairui Song Date: Fri, 2 Aug 2019 11:23:15 +0800 Subject: [PATCH] x86: Fix broken multiboot2 buliding for i386 When building for i386, an error occured: kexec/arch/i386/kexec-x86.c:39:22: error: 'multiboot2_x86_probe' undeclared here (not in a function); did you mean 'multiboot_x86_probe'? 39 | { "multiboot2-x86", multiboot2_x86_probe, multiboot2_x86_load, | ^~~~~~~~~~~~~~~~~~~~ | multiboot_x86_probe kexec/arch/i386/kexec-x86.c:39:44: error: 'multiboot2_x86_load' undeclared here (not in a function); did you mean 'multiboot_x86_load'? 39 | { "multiboot2-x86", multiboot2_x86_probe, multiboot2_x86_load, | ^~~~~~~~~~~~~~~~~~~ | multiboot_x86_load kexec/arch/i386/kexec-x86.c:40:4: error: 'multiboot2_x86_usage' undeclared here (not in a function); did you mean 'multiboot_x86_usage'? 40 | multiboot2_x86_usage }, | ^~~~~~~~~~~~~~~~~~~~ | multiboot_x86_usage Fix this issue by putting the definition in the right header, also tidy up Makefile. Signed-off-by: Kairui Song --- ...-broken-multiboot2-buliding-for-i386.patch | 88 +++++++++++++++++++ kexec-tools.spec | 5 +- 2 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 kexec-tools-2.0.20-fix-broken-multiboot2-buliding-for-i386.patch diff --git a/kexec-tools-2.0.20-fix-broken-multiboot2-buliding-for-i386.patch b/kexec-tools-2.0.20-fix-broken-multiboot2-buliding-for-i386.patch new file mode 100644 index 0000000..3f0fb33 --- /dev/null +++ b/kexec-tools-2.0.20-fix-broken-multiboot2-buliding-for-i386.patch @@ -0,0 +1,88 @@ +From 940c3a1e1a304fbecc850c593a272215b0f52eab Mon Sep 17 00:00:00 2001 +From: Kairui Song +Date: Wed, 31 Jul 2019 16:30:47 +0800 +Subject: [PATCH] x86: Fix broken multiboot2 buliding for i386 + +When building for i386, an error occured: + +kexec/arch/i386/kexec-x86.c:39:22: error: 'multiboot2_x86_probe' +undeclared here (not in a function); did you mean 'multiboot_x86_probe'? +39 | { "multiboot2-x86", multiboot2_x86_probe, multiboot2_x86_load, + | ^~~~~~~~~~~~~~~~~~~~ + | multiboot_x86_probe + +kexec/arch/i386/kexec-x86.c:39:44: error: 'multiboot2_x86_load' +undeclared here (not in a function); did you mean 'multiboot_x86_load'? +39 | { "multiboot2-x86", multiboot2_x86_probe, multiboot2_x86_load, + | ^~~~~~~~~~~~~~~~~~~ + | multiboot_x86_load +kexec/arch/i386/kexec-x86.c:40:4: error: 'multiboot2_x86_usage' + undeclared here (not in a function); did you mean 'multiboot_x86_usage'? +40 | multiboot2_x86_usage }, + | ^~~~~~~~~~~~~~~~~~~~ + | multiboot_x86_usage + +Fix this issue by putting the definition in the right header, also tidy +up Makefile. + +Fixes: 22a2ed55132e ("x86: Support multiboot2 images") +Signed-off-by: Kairui Song +--- + kexec/arch/i386/Makefile | 2 +- + kexec/arch/i386/kexec-x86.h | 5 +++++ + kexec/arch/x86_64/kexec-x86_64.h | 5 ----- + 3 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/kexec/arch/i386/Makefile b/kexec/arch/i386/Makefile +index 105cefd..f486103 100644 +--- a/kexec/arch/i386/Makefile ++++ b/kexec/arch/i386/Makefile +@@ -7,6 +7,7 @@ i386_KEXEC_SRCS += kexec/arch/i386/kexec-elf-x86.c + i386_KEXEC_SRCS += kexec/arch/i386/kexec-elf-rel-x86.c + i386_KEXEC_SRCS += kexec/arch/i386/kexec-bzImage.c + i386_KEXEC_SRCS += kexec/arch/i386/kexec-multiboot-x86.c ++i386_KEXEC_SRCS += kexec/arch/i386/kexec-mb2-x86.c + i386_KEXEC_SRCS += kexec/arch/i386/kexec-beoboot-x86.c + i386_KEXEC_SRCS += kexec/arch/i386/kexec-nbi.c + i386_KEXEC_SRCS += kexec/arch/i386/x86-linux-setup.c +@@ -14,7 +15,6 @@ i386_KEXEC_SRCS += kexec/arch/i386/crashdump-x86.c + + dist += kexec/arch/i386/Makefile $(i386_KEXEC_SRCS) \ + kexec/arch/i386/crashdump-x86.h \ +- kexec/arch/i386/kexec-mb2-x86.c \ + kexec/arch/i386/kexec-x86.h \ + kexec/arch/i386/x86-linux-setup.h \ + kexec/arch/i386/include/arch/options.h +diff --git a/kexec/arch/i386/kexec-x86.h b/kexec/arch/i386/kexec-x86.h +index 1b58c3b..16d0f6c 100644 +--- a/kexec/arch/i386/kexec-x86.h ++++ b/kexec/arch/i386/kexec-x86.h +@@ -60,6 +60,11 @@ int multiboot_x86_load(int argc, char **argv, const char *buf, off_t len, + struct kexec_info *info); + void multiboot_x86_usage(void); + ++int multiboot2_x86_load(int argc, char **argv, const char *buf, off_t len, ++ struct kexec_info *info); ++void multiboot2_x86_usage(void); ++int multiboot2_x86_probe(const char *buf, off_t buf_len); ++ + int elf_x86_probe(const char *buf, off_t len); + int elf_x86_load(int argc, char **argv, const char *buf, off_t len, + struct kexec_info *info); +diff --git a/kexec/arch/x86_64/kexec-x86_64.h b/kexec/arch/x86_64/kexec-x86_64.h +index 21c3a73..4cdeffb 100644 +--- a/kexec/arch/x86_64/kexec-x86_64.h ++++ b/kexec/arch/x86_64/kexec-x86_64.h +@@ -33,9 +33,4 @@ int bzImage64_load(int argc, char **argv, const char *buf, off_t len, + struct kexec_info *info); + void bzImage64_usage(void); + +-int multiboot2_x86_load(int argc, char **argv, const char *buf, off_t len, +- struct kexec_info *info); +-void multiboot2_x86_usage(void); +-int multiboot2_x86_probe(const char *buf, off_t buf_len); +- + #endif /* KEXEC_X86_64_H */ +-- +2.21.0 + diff --git a/kexec-tools.spec b/kexec-tools.spec index 56fede7..4000cf5 100644 --- a/kexec-tools.spec +++ b/kexec-tools.spec @@ -72,6 +72,7 @@ Obsoletes: diskdumputils netdump kexec-tools-eppic # # Patches 0 through 100 are meant for x86 kexec-tools enablement # +Patch0: kexec-tools-2.0.20-fix-broken-multiboot2-buliding-for-i386.patch # # Patches 101 through 200 are meant for x86_64 kexec-tools enablement @@ -100,12 +101,14 @@ binary and ancillary utilities that together form the userspace component of the kernel's kexec feature. %prep -%setup -q +%setup -q mkdir -p -m755 kcp tar -z -x -v -f %{SOURCE9} tar -z -x -v -f %{SOURCE19} +%patch0 -p1 + %ifarch ppc %define archdef ARCH=ppc %endif