aboutsummaryrefslogtreecommitdiffstats
path: root/meta-initramfs
diff options
context:
space:
mode:
Diffstat (limited to 'meta-initramfs')
-rw-r--r--meta-initramfs/README.md (renamed from meta-initramfs/README)8
-rw-r--r--meta-initramfs/classes/klibc.bbclass12
-rwxr-xr-xmeta-initramfs/conf/include/non-repro-meta-initramfs.inc23
-rw-r--r--meta-initramfs/conf/layer.conf4
-rw-r--r--meta-initramfs/recipes-bsp/kexecboot/files/0001-kexecboot-Use-new-reboot-API-with-klibc.patch42
-rw-r--r--meta-initramfs/recipes-bsp/kexecboot/files/0001-make-Add-compiler-includes-in-cflags.patch33
-rw-r--r--meta-initramfs/recipes-bsp/kexecboot/kexecboot-cfg_0.2.bb10
-rw-r--r--meta-initramfs/recipes-bsp/kexecboot/kexecboot_git.bb56
-rw-r--r--meta-initramfs/recipes-core/images/initramfs-debug-image.bb (renamed from meta-initramfs/recipes-bsp/images/initramfs-debug-image.bb)7
-rw-r--r--meta-initramfs/recipes-core/images/initramfs-kexecboot-image.bb (renamed from meta-initramfs/recipes-bsp/images/initramfs-kexecboot-image.bb)10
-rw-r--r--meta-initramfs/recipes-core/images/initramfs-kexecboot-klibc-image.bb (renamed from meta-initramfs/recipes-bsp/images/initramfs-kexecboot-klibc-image.bb)2
-rw-r--r--meta-initramfs/recipes-core/images/meta-initramfs-image.bb6
-rw-r--r--meta-initramfs/recipes-core/initrdscripts/files/init-debug.sh (renamed from meta-initramfs/recipes-bsp/initrdscripts/files/init-debug.sh)0
-rw-r--r--meta-initramfs/recipes-core/initrdscripts/initramfs-debug_1.0.bb (renamed from meta-initramfs/recipes-bsp/initrdscripts/initramfs-debug_1.0.bb)2
-rw-r--r--meta-initramfs/recipes-core/packagegroups/packagegroup-meta-initramfs.bb18
-rw-r--r--meta-initramfs/recipes-devtools/dracut/dracut/0001-Guard-against-__GLIBC_PREREQ-for-musl-libc.patch35
-rw-r--r--meta-initramfs/recipes-devtools/dracut/dracut/0001-install-Do-not-undef-_FILE_OFFSET_BITS.patch32
-rw-r--r--meta-initramfs/recipes-devtools/dracut/dracut/0001-util.h-include-sys-reg.h-when-libc-glibc.patch16
-rw-r--r--meta-initramfs/recipes-devtools/dracut/dracut_056.bb (renamed from meta-initramfs/recipes-devtools/dracut/dracut_git.bb)28
-rw-r--r--meta-initramfs/recipes-devtools/grubby/grubby/0001-Add-another-variable-LIBS-to-provides-libraries-from.patch26
-rw-r--r--meta-initramfs/recipes-devtools/grubby/grubby/0001-rename-grub2-editenv-to-grub-editenv.patch (renamed from meta-initramfs/recipes-devtools/grubby/grubby/grubby-rename-grub2-editenv-to-grub-editenv.patch)59
-rw-r--r--meta-initramfs/recipes-devtools/grubby/grubby/0002-Add-another-variable-LIBS-to-provides-libraries-from.patch38
-rw-r--r--meta-initramfs/recipes-devtools/grubby/grubby/0003-include-paths.h-for-_PATH_MOUNTED.patch (renamed from meta-initramfs/recipes-devtools/grubby/grubby/0002-include-paths.h-for-_PATH_MOUNTED.patch)10
-rw-r--r--meta-initramfs/recipes-devtools/grubby/grubby/0004-rpm-sort-include-string.h-for-strverscmp.patch33
-rw-r--r--meta-initramfs/recipes-devtools/grubby/grubby_8.40.bb42
-rw-r--r--meta-initramfs/recipes-devtools/grubby/grubby_git.bb46
-rw-r--r--meta-initramfs/recipes-devtools/klibc/files/0001-Define-in_-structs-for-non-glibc-system-libs.patch (renamed from meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/0001-Define-in_-structs-for-non-glibc-system-libs.patch)60
-rw-r--r--meta-initramfs/recipes-devtools/klibc/files/0001-always-use-bfd-linker.patch (renamed from meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/0001-always-use-bfd-linker.patch)10
-rw-r--r--meta-initramfs/recipes-devtools/klibc/files/0001-arm-Do-not-set-a-fallback-march-and-mtune.patch (renamed from meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/0001-arm-Do-not-set-a-fallback-march-and-mtune.patch)8
-rw-r--r--meta-initramfs/recipes-devtools/klibc/files/0001-include-linux-sysinfo.h-directly.patch (renamed from meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/0001-include-linux-sysinfo.h-directly.patch)14
-rw-r--r--meta-initramfs/recipes-devtools/klibc/files/0001-klibc-Kbuild-Accept-EXTRA_KLIBCAFLAGS.patch26
-rw-r--r--meta-initramfs/recipes-devtools/klibc/files/0001-klibc-add-getrandom-syscall.patch24
-rw-r--r--meta-initramfs/recipes-devtools/klibc/files/0001-klibc_2.0.4-add-kexec_file_load-syscall.patch24
-rw-r--r--meta-initramfs/recipes-devtools/klibc/files/0001-mkfifo-Implement-mkfifo.patch (renamed from meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/0001-mkfifo-Implement-mkfifo.patch)10
-rw-r--r--meta-initramfs/recipes-devtools/klibc/files/0001-workaround-for-overlapping-sections-in-binary.patch47
-rw-r--r--meta-initramfs/recipes-devtools/klibc/files/armv4-fix-v4bx.patch26
-rw-r--r--meta-initramfs/recipes-devtools/klibc/files/cross-clang.patch26
-rw-r--r--meta-initramfs/recipes-devtools/klibc/files/klcc-consider-sysroot.patch (renamed from meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/klcc-consider-sysroot.patch)10
-rw-r--r--meta-initramfs/recipes-devtools/klibc/files/klcc-cross-accept-clang-options.patch38
-rw-r--r--meta-initramfs/recipes-devtools/klibc/files/use-env-for-perl.patch (renamed from meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/use-env-for-perl.patch)4
-rw-r--r--meta-initramfs/recipes-devtools/klibc/klcc-cross_2.0.13.bb (renamed from meta-initramfs/recipes-devtools/klibc/klcc-cross_2.0.4.bb)6
-rw-r--r--meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/0001-Kbuild.klibc-Add-path-to-compiler-headers-via-isyste.patch30
-rw-r--r--meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/0001-Kbuild.klibc-Use-print-libgcc-file-name-instead-of-p.patch30
-rw-r--r--meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/0001-dash-Specify-format-string-in-fmtstr.patch31
-rw-r--r--meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/armv4-fix-v4bx.patch15
-rw-r--r--meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/klibc-config-eabi.patch14
-rw-r--r--meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/klibc-linux-libc-dev.patch22
-rw-r--r--meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/staging.patch144
-rw-r--r--meta-initramfs/recipes-devtools/klibc/klibc-static-utils_2.0.13.bb (renamed from meta-initramfs/recipes-devtools/klibc/klibc-static-utils_2.0.4.bb)2
-rw-r--r--meta-initramfs/recipes-devtools/klibc/klibc-utils.inc20
-rw-r--r--meta-initramfs/recipes-devtools/klibc/klibc-utils_2.0.13.bb (renamed from meta-initramfs/recipes-devtools/klibc/klibc-utils_2.0.4.bb)2
-rw-r--r--meta-initramfs/recipes-devtools/klibc/klibc.inc54
-rw-r--r--meta-initramfs/recipes-devtools/klibc/klibc_2.0.13.bb (renamed from meta-initramfs/recipes-devtools/klibc/klibc_2.0.4.bb)8
-rw-r--r--meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.0.2/0001-libmissing.h-fix-klibc-build-when-using-glibc-toolch.patch40
-rw-r--r--meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.0.2/0001-make-Add-compiler-includes-in-cflags.patch32
-rw-r--r--meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.0.2/0002-Instead-of-doing-preprocessor-magic-just-output-off_.patch326
-rw-r--r--meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.0.2/0003-Makefile.am-only-build-ubi-utils.patch34
-rw-r--r--meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.0.2/0004-mtd-utils-common.h-no-features.h-for-klibc-builds.patch38
-rw-r--r--meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.0.2/0005-common.h-replace-getline-with-fgets.patch56
-rw-r--r--meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0001-Makefile-only-build-ubi-utils.patch84
-rw-r--r--meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0002-common.mk-for-klibc-CC-is-klcc.patch27
-rw-r--r--meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0003-libubi.c-add-klibc-specific-fixes.patch76
-rw-r--r--meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0004-common.h-klibc-fixes-1.patch84
-rw-r--r--meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0005-common.h-klibc-fixes-2.patch49
-rw-r--r--meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0006-libiniparser-remove-unused-function-needing-float.patch85
-rw-r--r--meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc_1.5.2.bb48
-rw-r--r--meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc_2.0.2.bb54
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/arm_crashdump.patch12
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/cflags_static.patch11
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/fix-out-of-tree-build.patch54
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/ifdown_errno.patch11
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/kexec-elf-rel.patch61
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/kexec-syscall.patch44
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/ppc__lshrdi3.patch18
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/purgatory_flags.patch21
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/purgatory_string.patch9
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/sha256.patch13
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/sysconf_nrprocessors.patch13
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/x86_basename.patch14
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/x86_kexec_test.patch13
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/x86_sys_io.patch21
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/x86_vfscanf.patch27
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0001-force-static-build.patch25
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0002-Adjust-the-order-of-headers-to-fix-build-for-musl.patch (renamed from meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/0001-Adjust-the-order-of-headers-to-fix-build-for-musl.patch)17
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0003-kexec-elf-rel-use-our-elf.h.patch92
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0004-kexec-elf-exec.c-replace-with-our-err.h.patch30
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0005-crashdump-elf.c-work-around-for-sysconf-_SC_NPROCESS.patch134
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0006-kexec-syscall.h-work-around-missing-syscall-wrapper.patch68
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0007-kexec.c-add-guard-around-ENOTSUP.patch37
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0008-kexec.c-replace-mising-BLKGETSIZE64.patch32
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0009-vmcore-dmesg.c-work-around-missing-imaxdiv.patch57
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0010-fs2dt.c-work-around-missing-getline.patch47
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0011-purgatory-Makefile-adapt-to-klcc.patch34
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0012-purgatory-string.c-avoid-inclusion-of-string.h.patch28
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0013-sha256.h-avoid-inclusion-of-sys-types.h.patch33
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0014-add-if_nameindex-from-musl.patch152
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0015-vmcore-dmesg-fix-warning.patch29
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/140-mips_disable_devicetree_support.patch158
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/Fix-building-on-x86_64-with-binutils-2.41.patch95
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/arm64-crashdump-arm64.c-fix-warning.patch34
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/arm64_kexec-arm64.c-workaround-for-getrandom-syscall.patch58
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/arm64_kexec-image-header.h-add-missing-le64toh.patch37
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/arm_crashdump-fix-buffer-align.patch44
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/arm_crashdump.patch31
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/include_next.patch24
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/kexec-x32.patch94
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/klibc-reboot.patch23
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/powerpc-purgatory-Makefile-remove-unknown-flags.patch31
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/powerpc_change-the-memory-size-limit.patch36
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/x86_basename.patch30
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/x86_kexec_test.patch30
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/x86_sys_io.patch36
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/x86_vfscanf.patch43
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc_2.0.2.bb41
-rw-r--r--meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc_git.bb95
115 files changed, 3020 insertions, 1413 deletions
diff --git a/meta-initramfs/README b/meta-initramfs/README.md
index e24acf993c..119293a741 100644
--- a/meta-initramfs/README
+++ b/meta-initramfs/README.md
@@ -11,9 +11,8 @@ Dependencies
This layer depends on:
-URI: git://github.com/openembedded/oe-core.git
+URI: git://git.openembedded.org/meta-openembedded
branch: master
-revision: HEAD
Maintenance
@@ -23,10 +22,9 @@ Send patches / pull requests to openembedded-devel@lists.openembedded.org
with '[meta-initramfs]' in the subject.
When sending single patches, please using something like:
-'git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix=meta-initramfs][PATCH'
+git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix='meta-initramfs][PATCH'
-Layer maintainers: Andrea Adami <andrea.adami@gmail.com>
- Paul Eggleton <paul.eggleton@linux.intel.com>
+Interm layer maintainer: Khem Raj <raj.khem@gmail.com>
License
diff --git a/meta-initramfs/classes/klibc.bbclass b/meta-initramfs/classes/klibc.bbclass
index b7b72b728b..202d132d94 100644
--- a/meta-initramfs/classes/klibc.bbclass
+++ b/meta-initramfs/classes/klibc.bbclass
@@ -3,14 +3,14 @@ DEPENDS =+ "klcc-cross"
# Default for klcc is to build static binaries.
# Set CC = "${TARGET_PREFIX}klcc -shared" to build the dynamic version.
-CC_forcevariable = "${TARGET_PREFIX}klcc ${TOOLCHAIN_OPTIONS}"
-CC_forcevariable_armv4_linux-gnueabi = "${TARGET_PREFIX}klcc ${TOOLCHAIN_OPTIONS} -march=armv4 -mthumb-interwork"
-CC_append_armv7ve = " ${@' -mfloat-abi=${TUNE_CCARGS_MFLOAT}' if (d.getVar('TUNE_CCARGS_MFLOAT') != '') else ''}"
-CC_append_armv7a = " ${@' -mfloat-abi=${TUNE_CCARGS_MFLOAT}' if (d.getVar('TUNE_CCARGS_MFLOAT') != '') else ''}"
-
-CPP_forcevariable = "${CC} -E"
+CC:forcevariable = "${TARGET_PREFIX}klcc ${TOOLCHAIN_OPTIONS}"
+CC:forcevariable:armv4:linux-gnueabi = "${TARGET_PREFIX}klcc ${TOOLCHAIN_OPTIONS} -march=armv4 -mthumb-interwork"
+CC:append:armv7ve = " ${@' -mfloat-abi=${TUNE_CCARGS_MFLOAT}' if (d.getVar('TUNE_CCARGS_MFLOAT') != '') else ''}"
+CC:append:armv7a = " ${@' -mfloat-abi=${TUNE_CCARGS_MFLOAT}' if (d.getVar('TUNE_CCARGS_MFLOAT') != '') else ''}"
# klcc uses own optimizations by default. See klcc(1) man file.
export CFLAGS="${TUNE_CCARGS}"
export CPPFLAGS="${TUNE_CCARGS}"
export LDFLAGS="${TUNE_CCARGS}"
+
+OVERRIDES =. "libc-klibc:"
diff --git a/meta-initramfs/conf/include/non-repro-meta-initramfs.inc b/meta-initramfs/conf/include/non-repro-meta-initramfs.inc
new file mode 100755
index 0000000000..8f01f5624b
--- /dev/null
+++ b/meta-initramfs/conf/include/non-repro-meta-initramfs.inc
@@ -0,0 +1,23 @@
+# List of known non-reproducible package of the meta-initramfs layer
+# Please keep this list sorted
+KNOWN_NON_REPRO_META_INITRAMFS = " \
+ kexecboot-klibc \
+ kexecboot-klibc-dbg \
+ kexec-klibc \
+ kexec-tools-klibc-dbg \
+ mtdinfo-klibc \
+ ubiattach-klibc \
+ ubiblock-klibc \
+ ubicrc32-klibc \
+ ubidetach-klibc \
+ ubiformat-klibc \
+ ubimkvol-klibc \
+ ubinfo-klibc \
+ ubinize-klibc \
+ ubirename-klibc \
+ ubirmvol-klibc \
+ ubirsvol-klibc \
+ ubiupdatevol-klibc \
+ ubi-utils-klibc-dbg \
+ vmcore-dmesg-klibc \
+"
diff --git a/meta-initramfs/conf/layer.conf b/meta-initramfs/conf/layer.conf
index d9b7c4cfb3..93ae527d42 100644
--- a/meta-initramfs/conf/layer.conf
+++ b/meta-initramfs/conf/layer.conf
@@ -13,9 +13,11 @@ BBFILE_PATTERN_meta-initramfs := "^${LAYERDIR}/"
# choosing carefully how this layer interacts with all of the
# other layers.
-BBFILE_PRIORITY_meta-initramfs = "8"
+BBFILE_PRIORITY_meta-initramfs = "5"
LAYERDEPENDS_meta-initramfs = "core"
+LAYERSERIES_COMPAT_meta-initramfs = "scarthgap styhead"
+
SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += " \
dracut->virtual/kernel \
"
diff --git a/meta-initramfs/recipes-bsp/kexecboot/files/0001-kexecboot-Use-new-reboot-API-with-klibc.patch b/meta-initramfs/recipes-bsp/kexecboot/files/0001-kexecboot-Use-new-reboot-API-with-klibc.patch
new file mode 100644
index 0000000000..52d622a2f8
--- /dev/null
+++ b/meta-initramfs/recipes-bsp/kexecboot/files/0001-kexecboot-Use-new-reboot-API-with-klibc.patch
@@ -0,0 +1,42 @@
+From a6d1678379df6142a68cc9bb76dae540a31b8fdb Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 14 Mar 2019 23:47:50 -0700
+Subject: [PATCH] kexecboot: Use new reboot() API with klibc
+
+Klibc has changed this API in
+https://git.kernel.org/pub/scm/libs/klibc/klibc.git/commit/?id=6b621b8705ce5901dcf49607c8a3523c9e521901
+
+therefore adopt the code
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/kexecboot.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/kexecboot.c b/src/kexecboot.c
+index cf49b40..c785fce 100644
+--- a/src/kexecboot.c
++++ b/src/kexecboot.c
+@@ -857,7 +857,7 @@ int process_ctx_menu(struct params_t *params, int action) {
+ #else
+ sync();
+ /* if ( -1 == reboot(LINUX_REBOOT_CMD_RESTART) ) { */
+- if ( -1 == reboot(RB_AUTOBOOT) ) {
++ if ( -1 == reboot(RB_AUTOBOOT, NULL) ) {
+ log_msg(lg, "Can't initiate reboot: %s", ERRMSG);
+ }
+ #endif
+@@ -874,7 +874,7 @@ int process_ctx_menu(struct params_t *params, int action) {
+ #else
+ sync();
+ /* if ( -1 == reboot(LINUX_REBOOT_CMD_POWER_OFF) ) { */
+- if ( -1 == reboot(RB_POWER_OFF) ) {
++ if ( -1 == reboot(RB_POWER_OFF, NULL) ) {
+ log_msg(lg, "Can't initiate shutdown: %s", ERRMSG);
+ }
+ #endif
+--
+2.21.0
+
diff --git a/meta-initramfs/recipes-bsp/kexecboot/files/0001-make-Add-compiler-includes-in-cflags.patch b/meta-initramfs/recipes-bsp/kexecboot/files/0001-make-Add-compiler-includes-in-cflags.patch
new file mode 100644
index 0000000000..abfd8b77ee
--- /dev/null
+++ b/meta-initramfs/recipes-bsp/kexecboot/files/0001-make-Add-compiler-includes-in-cflags.patch
@@ -0,0 +1,33 @@
+From 528a64d17488295299dad9fbfe3d7140bc1cfdfa Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 6 Feb 2021 11:06:48 -0800
+Subject: [PATCH] make: Add compiler includes in cflags
+
+Fixes
+| In file included from /mnt/b/yoe/master/build/tmp/work/raspberrypi4_64-yoe-linux/kexecboot-klibc/0.6+gitAUTOINC+5a5e04be20-r0/recipe-sysroot/usr/lib/klibc/include/stdio.h:11:
+| /mnt/b/yoe/master/build/tmp/work/raspberrypi4_64-yoe-linux/kexecboot-klibc/0.6+gitAUTOINC+5a5e04be20-r0/recipe-sysroot/usr/lib/klibc/include/stdarg.h:9:15: fatal error: 'stdarg.h' file not found
+| #include_next <stdarg.h>
+| ^~~~~~~~~~
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ src/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/Makefile.am b/src/Makefile.am
+index c75df23..d2adf38 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -1,6 +1,6 @@
+ bin_PROGRAMS=kexecboot
+
+-kexecboot_CFLAGS = -I$(top_srcdir) $(AM_CFLAGS)
++kexecboot_CFLAGS = -I$(top_srcdir) $(AM_CFLAGS) -I$(shell $(CC) -print-file-name=include)
+
+ kexecboot_SOURCES = \
+ util.c \
+--
+2.30.0
+
diff --git a/meta-initramfs/recipes-bsp/kexecboot/kexecboot-cfg_0.2.bb b/meta-initramfs/recipes-bsp/kexecboot/kexecboot-cfg_0.2.bb
index 804ec32350..2dce19c6be 100644
--- a/meta-initramfs/recipes-bsp/kexecboot/kexecboot-cfg_0.2.bb
+++ b/meta-initramfs/recipes-bsp/kexecboot/kexecboot-cfg_0.2.bb
@@ -8,7 +8,7 @@ SRC_URI = "file://icon.xpm"
S = "${WORKDIR}"
-do_install_prepend () {
+do_install:prepend () {
echo '# /boot/boot.cfg - KEXECBOOT configuration file.
#
# First kernel stanza.
@@ -19,9 +19,15 @@ LABEL=${KEXECBOOT_LABEL}
# Specify full kernel path on target.
KERNEL=/boot/${KERNEL_IMAGETYPE}
#
+# Specify which device tree blob to use
+# DTB=/boot/my-own-dtb
+#
# Append this tags to the kernel cmdline.
APPEND=${CMDLINE} ${CMDLINE_DEBUG}
#
+# Overwrite kernel command line instead of appending to it
+# CMDLINE=console=/dev/tty0 root=/dev/sdb1
+#
# Specify optional initrd/initramfs.
# INITRD=/boot/initramfs.cpio.gz
#
@@ -49,7 +55,7 @@ do_install () {
PACKAGE_ARCH = "${MACHINE_ARCH}"
-FILES_${PN} += "/boot/*"
+FILES:${PN} += "/boot/*"
CMDLINE ?= ""
CMDLINE_DEBUG ?= "quiet"
diff --git a/meta-initramfs/recipes-bsp/kexecboot/kexecboot_git.bb b/meta-initramfs/recipes-bsp/kexecboot/kexecboot_git.bb
index 9f5dad7c64..a92c0e8966 100644
--- a/meta-initramfs/recipes-bsp/kexecboot/kexecboot_git.bb
+++ b/meta-initramfs/recipes-bsp/kexecboot/kexecboot_git.bb
@@ -1,52 +1,24 @@
-###########################
-# Configure options:
-#
-# --enable-static-linking compile kexecboot as static executable [default=no]
-# --enable-fbui support framebuffer menu [default=yes]
-# --enable-fbui-width limit FB UI width to specified value [default=no]
-# --enable-fbui-height limit FB UI height to specified value [default=no]
-# --enable-textui support console text user interface [default=no]
-# --enable-cfgfiles support config files [default=yes]
-# --enable-icons support custom icons (depends on fbui) [default=yes]
-# --enable-zaurus compile Sharp Zaurus specific code [default=no]
-# --enable-zimage compile with zImage support [default=yes]
-# --enable-uimage compile with uImage support [default=no]
-# --enable-machine-kernel look for machine-specific zImage kernel [default=no]
-# --enable-devices-recreating
-# enable devices re-creating [default=yes]
-# --enable-debug enable debug output [default=no]
-# --enable-host-debug allow for non-destructive executing of kexecboot on
-# host system [default=no]
-# --enable-numkeys enable menu item selection by keys [0-9] [default=yes]
-# --enable-bg-buffer enable buffer for pre-drawed FB GUI background
-#
-# --enable-timeout allow to boot 1st kernel after timeout in seconds
-# [default=no]
-# --enable-delay specify delay before device scanning, allowing
-# initialization of old CF/SD cards [default=1]
-# --enable-bpp enable support of specified bpp modes
-# (all,32,24,18,16,4,2,1) [default=all]
-# --enable-evdev-rate change evdev (keyboard/mouse) repeat rate
-# in milliseconds e.g. "1000,250" [default=no]
-# --with-kexec-binary look for kexec binary at path
-# [default="/usr/sbin/kexec"]
-##########################
SUMMARY = "kexecboot linux-as-bootloader"
DESCRIPTION = "kexecboot is a graphical linux-as-bootloader implementation based on kexec."
-HOMEPAGE = "http://kexecboot.org"
-LICENSE = "GPLv2"
+HOMEPAGE = "https://github.com/kexecboot/kexecboot/wiki"
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
-PV = "0.6+git${SRCPV}"
+PV = "0.6+git"
S = "${WORKDIR}/git"
-SRC_URI = "git://github.com/kexecboot/kexecboot.git"
-SRCREV = "4c4f127e79ac5b8d6b6e2fbb938ccbf12b04c531"
+SRC_URI = "git://github.com/kexecboot/kexecboot.git;branch=master;protocol=https"
+SRC_URI:append:libc-klibc = "\
+ file://0001-kexecboot-Use-new-reboot-API-with-klibc.patch \
+ file://0001-make-Add-compiler-includes-in-cflags.patch \
+"
+SRCREV = "5a5e04be206140059f42ac786d424da1afaa04b6"
inherit autotools
EXTRA_OECONF = "--enable-textui --enable-delay=2 --enable-evdev-rate=1000,250"
+CFLAGS += "-fcommon"
+
do_install () {
- install -d ${D}${bindir}
- install -m 0755 kexecboot ${D}${bindir}
+ install -D -m 0755 ${B}/src/kexecboot ${D}${bindir}/kexecboot
install -d ${D}/proc
install -d ${D}/mnt
install -d ${D}/dev
@@ -55,9 +27,9 @@ do_install () {
PACKAGE_ARCH = "${MACHINE_ARCH}"
-FILES_${PN} += " ${bindir}/kexecboot /init /proc /mnt /dev /sys"
+FILES:${PN} += " ${bindir}/kexecboot /init /proc /mnt /dev /sys"
-pkg_postinst_${PN} () {
+pkg_postinst:${PN} () {
ln -sf ${bindir}/kexecboot $D/init
}
diff --git a/meta-initramfs/recipes-bsp/images/initramfs-debug-image.bb b/meta-initramfs/recipes-core/images/initramfs-debug-image.bb
index be7350ade2..fc9e81e5de 100644
--- a/meta-initramfs/recipes-bsp/images/initramfs-debug-image.bb
+++ b/meta-initramfs/recipes-core/images/initramfs-debug-image.bb
@@ -11,9 +11,12 @@ IMAGE_FEATURES = ""
export IMAGE_BASENAME = "initramfs-debug-image"
IMAGE_LINGUAS = ""
-LICENSE = "MIT"
+# Some BSPs use IMAGE_FSTYPES:<machine override> which would override
+# an assignment to IMAGE_FSTYPES so we need anon python
+python () {
+ d.setVar("IMAGE_FSTYPES", d.getVar("INITRAMFS_FSTYPES"))
+}
-IMAGE_FSTYPES = "${INITRAMFS_FSTYPES}"
inherit core-image
IMAGE_ROOTFS_SIZE = "8192"
diff --git a/meta-initramfs/recipes-bsp/images/initramfs-kexecboot-image.bb b/meta-initramfs/recipes-core/images/initramfs-kexecboot-image.bb
index 2573eb4818..7e6e03d8e7 100644
--- a/meta-initramfs/recipes-bsp/images/initramfs-kexecboot-image.bb
+++ b/meta-initramfs/recipes-core/images/initramfs-kexecboot-image.bb
@@ -1,11 +1,13 @@
SUMMARY = "Initramfs image for kexecboot kernel"
DESCRIPTION = "This image provides kexecboot (linux as bootloader) and helpers."
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
-inherit image
+# Some BSPs use IMAGE_FSTYPES:<machine override> which would override
+# an assignment to IMAGE_FSTYPES so we need anon python
+python () {
+ d.setVar("IMAGE_FSTYPES", d.getVar("INITRAMFS_FSTYPES"))
+}
-IMAGE_FSTYPES = "${INITRAMFS_FSTYPES}"
+inherit image
# avoid circular dependencies
EXTRA_IMAGEDEPENDS = ""
diff --git a/meta-initramfs/recipes-bsp/images/initramfs-kexecboot-klibc-image.bb b/meta-initramfs/recipes-core/images/initramfs-kexecboot-klibc-image.bb
index 6b845bd9d3..3a8d9f7438 100644
--- a/meta-initramfs/recipes-bsp/images/initramfs-kexecboot-klibc-image.bb
+++ b/meta-initramfs/recipes-core/images/initramfs-kexecboot-klibc-image.bb
@@ -8,5 +8,5 @@ IMAGE_INSTALL = "kexecboot-klibc kexec-klibc ubiattach-klibc"
python () {
if d.getVar('TARGET_ARCH') == "nios2":
- raise bb.parse.SkipPackage("'nios2' not supported arch")
+ raise bb.parse.SkipRecipe("'nios2' not supported arch")
}
diff --git a/meta-initramfs/recipes-core/images/meta-initramfs-image.bb b/meta-initramfs/recipes-core/images/meta-initramfs-image.bb
new file mode 100644
index 0000000000..4c041eb5fc
--- /dev/null
+++ b/meta-initramfs/recipes-core/images/meta-initramfs-image.bb
@@ -0,0 +1,6 @@
+SUMMARY = "meta-initramfs build test image"
+
+IMAGE_INSTALL = "packagegroup-core-boot \
+ packagegroup-meta-initramfs"
+
+inherit core-image
diff --git a/meta-initramfs/recipes-bsp/initrdscripts/files/init-debug.sh b/meta-initramfs/recipes-core/initrdscripts/files/init-debug.sh
index 7edbd70cb0..7edbd70cb0 100644
--- a/meta-initramfs/recipes-bsp/initrdscripts/files/init-debug.sh
+++ b/meta-initramfs/recipes-core/initrdscripts/files/init-debug.sh
diff --git a/meta-initramfs/recipes-bsp/initrdscripts/initramfs-debug_1.0.bb b/meta-initramfs/recipes-core/initrdscripts/initramfs-debug_1.0.bb
index 667690f888..4c06346570 100644
--- a/meta-initramfs/recipes-bsp/initrdscripts/initramfs-debug_1.0.bb
+++ b/meta-initramfs/recipes-core/initrdscripts/initramfs-debug_1.0.bb
@@ -11,4 +11,4 @@ do_install() {
inherit allarch
-FILES_${PN} += " /init "
+FILES:${PN} += " /init "
diff --git a/meta-initramfs/recipes-core/packagegroups/packagegroup-meta-initramfs.bb b/meta-initramfs/recipes-core/packagegroups/packagegroup-meta-initramfs.bb
new file mode 100644
index 0000000000..4b76246a03
--- /dev/null
+++ b/meta-initramfs/recipes-core/packagegroups/packagegroup-meta-initramfs.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Meta-initramfs packagegroups"
+
+inherit packagegroup
+
+PROVIDES = "${PACKAGES}"
+PACKAGES = ' \
+ packagegroup-meta-initramfs \
+ packagegroup-meta-initramfs-devtools \
+'
+
+RDEPENDS:packagegroup-meta-initramfs = "\
+ packagegroup-meta-initramfs-devtools \
+"
+
+RDEPENDS:packagegroup-meta-initramfs-devtools = "\
+ dracut \
+ ${@bb.utils.contains_any("TRANSLATED_TARGET_ARCH", "i586 x86-64", "grubby", "", d)} \
+ "
diff --git a/meta-initramfs/recipes-devtools/dracut/dracut/0001-Guard-against-__GLIBC_PREREQ-for-musl-libc.patch b/meta-initramfs/recipes-devtools/dracut/dracut/0001-Guard-against-__GLIBC_PREREQ-for-musl-libc.patch
new file mode 100644
index 0000000000..bd768d00d2
--- /dev/null
+++ b/meta-initramfs/recipes-devtools/dracut/dracut/0001-Guard-against-__GLIBC_PREREQ-for-musl-libc.patch
@@ -0,0 +1,35 @@
+From ff5e1a662ba93ba79e2aeaaaec48a2a8ec4b4701 Mon Sep 17 00:00:00 2001
+From: Yi Zhao <yi.zhao@windriver.com>
+Date: Thu, 31 Mar 2022 22:22:44 +0800
+Subject: [PATCH] Guard against __GLIBC_PREREQ for musl libc
+
+Upstream-Status: Pending
+
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+---
+ src/install/util.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/install/util.c b/src/install/util.c
+index 5721de89..784aec48 100644
+--- a/src/install/util.c
++++ b/src/install/util.c
+@@ -27,6 +27,7 @@
+
+ #include "util.h"
+
++#if defined(__GLIBC__)
+ #if __GLIBC_PREREQ(2, 30) == 0
+ #include <sys/syscall.h>
+ #ifndef SYS_gettid
+@@ -35,6 +36,7 @@
+
+ #define gettid() ((pid_t) syscall(SYS_gettid))
+ #endif /*__GLIBC_PREREQ */
++#endif /*__GLIBC__*/
+
+ size_t page_size(void)
+ {
+--
+2.25.1
+
diff --git a/meta-initramfs/recipes-devtools/dracut/dracut/0001-install-Do-not-undef-_FILE_OFFSET_BITS.patch b/meta-initramfs/recipes-devtools/dracut/dracut/0001-install-Do-not-undef-_FILE_OFFSET_BITS.patch
new file mode 100644
index 0000000000..170df7119f
--- /dev/null
+++ b/meta-initramfs/recipes-devtools/dracut/dracut/0001-install-Do-not-undef-_FILE_OFFSET_BITS.patch
@@ -0,0 +1,32 @@
+From 7f8ef553b7c433af153d48c6a16b2943780abf67 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 31 Dec 2022 14:41:52 -0800
+Subject: [PATCH] install: Do not undef _FILE_OFFSET_BITS
+
+_FILE_OFFSET_BITS is a feature test macro to determine largefile
+support. Usually its set to 64 on systems supporting LFS. Its also
+needed to be set to 64 for supporting 64bit time_t on glibc on 32bit
+systems. If its undefined explicitly, then 64bit time_t can not be
+enabled.
+
+Upstream-Status: Submitted [https://github.com/dracutdevs/dracut/pull/2157]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/install/dracut-install.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/src/install/dracut-install.c b/src/install/dracut-install.c
+index dda0caca..05a67a03 100644
+--- a/src/install/dracut-install.c
++++ b/src/install/dracut-install.c
+@@ -22,7 +22,6 @@
+ #ifndef _GNU_SOURCE
+ #define _GNU_SOURCE
+ #endif
+-#undef _FILE_OFFSET_BITS
+ #include <ctype.h>
+ #include <errno.h>
+ #include <fcntl.h>
+--
+2.39.0
+
diff --git a/meta-initramfs/recipes-devtools/dracut/dracut/0001-util.h-include-sys-reg.h-when-libc-glibc.patch b/meta-initramfs/recipes-devtools/dracut/dracut/0001-util.h-include-sys-reg.h-when-libc-glibc.patch
index 32714038b9..68ec2b8fdb 100644
--- a/meta-initramfs/recipes-devtools/dracut/dracut/0001-util.h-include-sys-reg.h-when-libc-glibc.patch
+++ b/meta-initramfs/recipes-devtools/dracut/dracut/0001-util.h-include-sys-reg.h-when-libc-glibc.patch
@@ -1,4 +1,4 @@
-From 06011ce55b1e892e863568a73d64eebc6389544f Mon Sep 17 00:00:00 2001
+From 9f7740c4c2fda64029c23674e9858ce8bd4367df Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Thu, 13 Jul 2017 17:14:05 -0700
Subject: [PATCH] util.h: include <sys/reg.h> when libc != glibc
@@ -11,13 +11,15 @@ https://github.com/voidlinux/void-packages/blob/master/srcpkgs/dracut/patches/mu
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
- install/util.h | 3 +++
+Upstream-Status: Pending
+
+ src/install/util.h | 3 +++
1 file changed, 3 insertions(+)
-diff --git a/install/util.h b/install/util.h
-index 2ad3254d..062626ec 100644
---- a/install/util.h
-+++ b/install/util.h
+diff --git a/src/install/util.h b/src/install/util.h
+index a6f9a184..82732913 100644
+--- a/src/install/util.h
++++ b/src/install/util.h
@@ -36,6 +36,9 @@
#include <sys/stat.h>
#include <dirent.h>
@@ -29,5 +31,5 @@ index 2ad3254d..062626ec 100644
#include "macro.h"
--
-2.13.2
+2.17.1
diff --git a/meta-initramfs/recipes-devtools/dracut/dracut_git.bb b/meta-initramfs/recipes-devtools/dracut/dracut_056.bb
index e18409d11a..db08fffe9a 100644
--- a/meta-initramfs/recipes-devtools/dracut/dracut_git.bb
+++ b/meta-initramfs/recipes-devtools/dracut/dracut_056.bb
@@ -2,20 +2,20 @@ SUMMARY = "Initramfs generator using udev"
HOMEPAGE = "https://dracut.wiki.kernel.org/index.php/Main_Page"
DESCRIPTION = "Dracut is an event driven initramfs infrastructure. dracut (the tool) is used to create an initramfs image by copying tools and files from an installed system and combining it with the dracut framework, usually found in /usr/lib/dracut/modules.d."
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
PE = "1"
-PV = "045+git${SRCREV}"
-# v045 tag
-SRCREV = "39c9b67f86145953aa30def9d77c68597a4ccfe8"
-SRC_URI = "git://git.kernel.org/pub/scm/boot/dracut/dracut.git;protocol=http \
+SRCREV = "631d5f72a223288aa1f48bb8e8d0313e75947400"
+SRC_URI = "git://git.kernel.org/pub/scm/boot/dracut/dracut.git;protocol=http;branch=master \
file://0001-util.h-include-sys-reg.h-when-libc-glibc.patch \
+ file://0001-Guard-against-__GLIBC_PREREQ-for-musl-libc.patch \
+ file://0001-install-Do-not-undef-_FILE_OFFSET_BITS.patch \
"
DEPENDS += "kmod"
-DEPENDS_append_libc-musl = " fts"
+DEPENDS:append:libc-musl = " fts"
inherit bash-completion pkgconfig
@@ -38,7 +38,8 @@ PACKAGECONFIG[systemd] = "--with-systemdsystemunitdir=${systemd_unitdir}/system/
EXTRA_OEMAKE += 'libdir=${prefix}/lib LDLIBS="${LDLIBS}"'
-LDLIBS_append_libc-musl = " -lfts"
+CFLAGS:append = " -fPIC"
+LDLIBS:append:libc-musl = " -lfts"
do_configure() {
./configure ${EXTRA_OECONF}
@@ -51,19 +52,20 @@ do_install() {
chown -R root:root ${D}/${prefix}/lib/dracut/modules.d
}
-FILES_${PN} += "${prefix}/lib/kernel \
+FILES:${PN} += "${prefix}/lib/kernel \
${prefix}/lib/dracut \
${systemd_unitdir} \
"
-FILES_${PN}-dbg += "${prefix}/lib/dracut/.debug"
+FILES:${PN}-dbg += "${prefix}/lib/dracut/.debug"
-CONFFILES_${PN} += "${sysconfdir}/dracut.conf"
+CONFFILES:${PN} += "${sysconfdir}/dracut.conf"
-RDEPENDS_${PN} = "findutils cpio util-linux-blkid util-linux-getopt util-linux bash ldd"
+RDEPENDS:${PN} = "findutils cpio util-linux-blkid util-linux-getopt util-linux bash ldd"
# This could be optimized a bit, but let's avoid non-booting systems :)
-RRECOMMENDS_${PN} = " \
+RRECOMMENDS:${PN} = " \
kernel-modules \
- busybox \
coreutils \
"
+
+CVE_STATUS[CVE-2010-4176] = "not-applicable-platform: Applies only to Fedora"
diff --git a/meta-initramfs/recipes-devtools/grubby/grubby/0001-Add-another-variable-LIBS-to-provides-libraries-from.patch b/meta-initramfs/recipes-devtools/grubby/grubby/0001-Add-another-variable-LIBS-to-provides-libraries-from.patch
deleted file mode 100644
index 1b1a993a03..0000000000
--- a/meta-initramfs/recipes-devtools/grubby/grubby/0001-Add-another-variable-LIBS-to-provides-libraries-from.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 22afaa21b4b258082be591e54c99e1ba6fbd7748 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 15 Jul 2017 10:19:22 -0700
-Subject: [PATCH 1/2] Add another variable LIBS to provides libraries from env
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index ac14404..92a8e73 100644
---- a/Makefile
-+++ b/Makefile
-@@ -27,7 +27,7 @@ RPM_OPT_FLAGS ?= -O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector
- CFLAGS += $(RPM_OPT_FLAGS) -std=gnu99 -Wall -Werror -Wno-error=unused-function -Wno-unused-function -ggdb
- LDFLAGS :=
-
--grubby_LIBS = -lblkid -lpopt
-+grubby_LIBS = -lblkid -lpopt ${LIBS}
-
- all: grubby
-
---
-2.13.3
-
diff --git a/meta-initramfs/recipes-devtools/grubby/grubby/grubby-rename-grub2-editenv-to-grub-editenv.patch b/meta-initramfs/recipes-devtools/grubby/grubby/0001-rename-grub2-editenv-to-grub-editenv.patch
index d936249be8..7e1615c5b5 100644
--- a/meta-initramfs/recipes-devtools/grubby/grubby/grubby-rename-grub2-editenv-to-grub-editenv.patch
+++ b/meta-initramfs/recipes-devtools/grubby/grubby/0001-rename-grub2-editenv-to-grub-editenv.patch
@@ -1,45 +1,54 @@
-From 0841706a5b5280e501c8e392c70c466c5fbcf0aa Mon Sep 17 00:00:00 2001
+From 7a72139d2e3cc80f64090a823afe7bcea76e4792 Mon Sep 17 00:00:00 2001
From: Jackie Huang <jackie.huang@windriver.com>
Date: Tue, 4 Aug 2015 23:54:41 -0700
Subject: [PATCH] rename grub2-editenv to grub-editenv
We don't use the name grub2-editenv for grub2.
-Upstream-Status: Inappropriate
+Upstream-Status: Inactive-Upstream [lastcommit: 2022 lastrelease: 2016]
Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
---
grubby.c | 4 ++--
- test.sh | 6 +++---
- 2 files changed, 5 insertions(+), 5 deletions(-)
+ test.sh | 8 ++++----
+ 2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/grubby.c b/grubby.c
-index d4ebb86..47a1a15 100644
+index 98c1516..be832f6 100644
--- a/grubby.c
+++ b/grubby.c
-@@ -290,7 +290,7 @@ static char *grub2GetEnv(struct configFileInfo *info, char *name)
- char *s = NULL;
- char *ret = NULL;
- char *envFile = info->envFile ? info->envFile : "/boot/grub2/grubenv";
-- int rc = asprintf(&s, "grub2-editenv %s list | grep '^%s='", envFile, name);
-+ int rc = asprintf(&s, "grub-editenv %s list | grep '^%s='", envFile, name);
+@@ -301,7 +301,7 @@ static char *grub2GetEnv(struct configFileInfo *info, char *name)
+ char *ret = NULL;
+ char *envFile = info->envFile ? info->envFile : "/boot/grub2/grubenv";
+ int rc =
+- asprintf(&s, "grub2-editenv %s list | grep '^%s='", envFile, name);
++ asprintf(&s, "grub-editenv %s list | grep '^%s='", envFile, name);
- if (rc < 0)
- return NULL;
-@@ -361,7 +361,7 @@ static int grub2SetEnv(struct configFileInfo *info, char *name, char *value)
- if (!value)
- return -1;
+ if (rc < 0)
+ return NULL;
+@@ -373,7 +373,7 @@ static int grub2SetEnv(struct configFileInfo *info, char *name, char *value)
+ if (!value)
+ return -1;
-- rc = asprintf(&s, "grub2-editenv %s set '%s=%s'", envFile, name, value);
-+ rc = asprintf(&s, "grub-editenv %s set '%s=%s'", envFile, name, value);
- free(value);
- if (rc <0)
- return -1;
+- rc = asprintf(&s, "grub2-editenv %s set '%s=%s'", envFile, name, value);
++ rc = asprintf(&s, "grub-editenv %s set '%s=%s'", envFile, name, value);
+ free(value);
+ if (rc < 0)
+ return -1;
diff --git a/test.sh b/test.sh
-index 6379698..f738388 100755
+index 33d24cf..009479c 100755
--- a/test.sh
+++ b/test.sh
-@@ -574,7 +574,7 @@ if [ "$testgrub2" == "y" ]; then
+@@ -573,7 +573,7 @@ if [ "$testgrub2" == "y" ]; then
+ --remove-kernel=/boot/vmlinuz-2.6.38.2-9.fc15.x86_64 \
+ --boot-filesystem=/boot/
+ commandTest "saved_default output" \
+- "grub2-editenv test/grub2-support_files/env_temp list" \
++ "grub-editenv test/grub2-support_files/env_temp list" \
+ "saved_entry=Linux, with Fedora 2.6.38.8-32.fc15.x86_64"
+
+ # copy a stanza and add arguments as well, while using --set-index=
+@@ -627,7 +627,7 @@ if [ "$testgrub2" == "y" ]; then
--title='title' --initrd=/boot/new-initrd --boot-filesystem=/boot/ \
--copy-default
commandTest "saved_default output" \
@@ -48,7 +57,7 @@ index 6379698..f738388 100755
"saved_entry=Linux, with Fedora 2.6.38.8-32.fc15.x86_64"
testing="GRUB2 add kernel with default=saved_entry and a terrible title"
-@@ -587,13 +587,13 @@ if [ "$testgrub2" == "y" ]; then
+@@ -640,13 +640,13 @@ if [ "$testgrub2" == "y" ]; then
testing="GRUB2 set default with default=saved_entry and a terrible name"
grub2Test grub2.9 add/g2-1.9 --env grubenv.1 --set-default-index=0
commandTest "saved_default output" \
@@ -65,5 +74,5 @@ index 6379698..f738388 100755
testing="GRUB2 --default-index with default=saved_entry"
--
-2.3.5
+2.25.1
diff --git a/meta-initramfs/recipes-devtools/grubby/grubby/0002-Add-another-variable-LIBS-to-provides-libraries-from.patch b/meta-initramfs/recipes-devtools/grubby/grubby/0002-Add-another-variable-LIBS-to-provides-libraries-from.patch
new file mode 100644
index 0000000000..967a4c94fb
--- /dev/null
+++ b/meta-initramfs/recipes-devtools/grubby/grubby/0002-Add-another-variable-LIBS-to-provides-libraries-from.patch
@@ -0,0 +1,38 @@
+From c02d1bf46174656cdb6f7c08fa3e8fa520edcd8e Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 15 Jul 2017 10:19:22 -0700
+Subject: [PATCH] Add another variable LIBS to provides libraries from env
+
+Upstream-Status: Inactive-Upstream [lastcommit: 2022 lastrelease: 2016]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ Makefile | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 968c276..75abe44 100644
+--- a/Makefile
++++ b/Makefile
+@@ -31,7 +31,8 @@ ifneq ($(VERBOSE_TEST),)
+ VERBOSE_TEST="--verbose"
+ endif
+
+-grubby_LIBS = -lblkid -lpopt
++grubby_LIBS = -lblkid -lpopt ${LIBS}
++rpm-sort_LIBS = ${LIBS}
+
+ all: grubby rpm-sort
+
+@@ -63,7 +64,7 @@ grubby:: $(OBJECTS)
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(grubby_LIBS)
+
+ rpm-sort::rpm-sort.o
+- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ -lrpmio
++ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ -lrpmio $(rpm-sort_LIBS)
+
+ clean:
+ rm -f *.o grubby rpm-sort *~
+--
+2.25.1
+
diff --git a/meta-initramfs/recipes-devtools/grubby/grubby/0002-include-paths.h-for-_PATH_MOUNTED.patch b/meta-initramfs/recipes-devtools/grubby/grubby/0003-include-paths.h-for-_PATH_MOUNTED.patch
index de8133a3a4..86ae01021f 100644
--- a/meta-initramfs/recipes-devtools/grubby/grubby/0002-include-paths.h-for-_PATH_MOUNTED.patch
+++ b/meta-initramfs/recipes-devtools/grubby/grubby/0003-include-paths.h-for-_PATH_MOUNTED.patch
@@ -1,7 +1,9 @@
-From 8f844ac7f44b8dc428d06cd6958c5f32d383d01c Mon Sep 17 00:00:00 2001
+From 7e68976eb6edd766471c11382f5bf57940ba9315 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 15 Jul 2017 10:19:50 -0700
-Subject: [PATCH 2/2] include paths.h for _PATH_MOUNTED
+Subject: [PATCH] include paths.h for _PATH_MOUNTED
+
+Upstream-Status: Inactive-Upstream [lastcommit: 2022 lastrelease: 2016]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
@@ -9,7 +11,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 1 insertion(+)
diff --git a/grubby.c b/grubby.c
-index 47a1a15..59f74a9 100644
+index be832f6..4825797 100644
--- a/grubby.c
+++ b/grubby.c
@@ -34,6 +34,7 @@
@@ -21,5 +23,5 @@ index 47a1a15..59f74a9 100644
#include "log.h"
--
-2.13.3
+2.25.1
diff --git a/meta-initramfs/recipes-devtools/grubby/grubby/0004-rpm-sort-include-string.h-for-strverscmp.patch b/meta-initramfs/recipes-devtools/grubby/grubby/0004-rpm-sort-include-string.h-for-strverscmp.patch
new file mode 100644
index 0000000000..c68b492ebe
--- /dev/null
+++ b/meta-initramfs/recipes-devtools/grubby/grubby/0004-rpm-sort-include-string.h-for-strverscmp.patch
@@ -0,0 +1,33 @@
+From 45bc228090b3adfc0a5058b9cd019d91831e110a Mon Sep 17 00:00:00 2001
+From: Yi Zhao <yi.zhao@windriver.com>
+Date: Tue, 3 Jan 2023 13:59:48 +0800
+Subject: [PATCH] rpm-sort: include string.h for strverscmp
+
+Include string.h to fix build error:
+rpm-sort.c: In function 'package_version_compare':
+rpm-sort.c:156:13: error: 'strverscmp' undeclared (first use in this function)
+ 156 | cmp = strverscmp;
+ | ^~~~~~~~~~
+
+Upstream-Status: Inactive-Upstream [lastcommit: 2022 lastrelease: 2016]
+
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+---
+ rpm-sort.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/rpm-sort.c b/rpm-sort.c
+index f196356..2eb91ce 100644
+--- a/rpm-sort.c
++++ b/rpm-sort.c
+@@ -8,6 +8,7 @@
+ #include <argp.h>
+ #include <rpm/rpmlib.h>
+ #include <err.h>
++#include <string.h>
+
+ typedef enum {
+ RPMNVRCMP,
+--
+2.25.1
+
diff --git a/meta-initramfs/recipes-devtools/grubby/grubby_8.40.bb b/meta-initramfs/recipes-devtools/grubby/grubby_8.40.bb
deleted file mode 100644
index 5a998248c8..0000000000
--- a/meta-initramfs/recipes-devtools/grubby/grubby_8.40.bb
+++ /dev/null
@@ -1,42 +0,0 @@
-SUMMARY = "A command line tool for updating and displaying info about boot loaders"
-DESCRIPTION = "grubby is a command line tool for updating and displaying information \
-about the configuration files for the grub, lilo, elilo (ia64), yaboot (powerpc) and \
-zipl (s390) boot loaders. It is primarily designed to be used from scripts which install \
-new kernels and need to find information about the current boot environment. \
-"
-LICENSE = "GPLv2+"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=892f569a555ba9c07a568a7c0c4fa63a"
-
-DEPENDS = "popt util-linux"
-DEPENDS_append_libc-musl = " libexecinfo"
-
-SRC_URI = "https://github.com/rhinstaller/${BPN}/archive/${PV}-1.tar.gz;downloadfilename=${BPN}-${PV}-1.tar.gz \
- file://grubby-rename-grub2-editenv-to-grub-editenv.patch \
- file://run-ptest \
- file://0001-Add-another-variable-LIBS-to-provides-libraries-from.patch \
- file://0002-include-paths.h-for-_PATH_MOUNTED.patch \
- "
-
-SRC_URI[md5sum] = "1005907b275d6d93368d045274537d86"
-SRC_URI[sha256sum] = "85f1c678484f74c8978e8643451594967defce463a86c35cb1ee56d12767a9df"
-
-S = "${WORKDIR}/${BPN}-${PV}-1"
-
-RDEPENDS_${PN} += "dracut"
-
-inherit autotools-brokensep ptest
-
-EXTRA_OEMAKE = "-e 'CC=${CC}' 'LDFLAGS=${LDFLAGS}' LIBS='${LIBS}'"
-
-LIBS_libc-musl = "-lexecinfo"
-LIBS ?= ""
-do_install_ptest() {
- install -d ${D}${PTEST_PATH}
- cp -r ${S}/test ${S}/test.sh ${D}${PTEST_PATH}
- sed -i 's|./grubby|grubby|' ${D}${PTEST_PATH}/test.sh
-}
-
-RDEPENDS_${PN}-ptest = "util-linux-getopt bash"
-
-COMPATIBLE_HOST = '(x86_64.*|i.86.*)-(linux|freebsd.*)'
diff --git a/meta-initramfs/recipes-devtools/grubby/grubby_git.bb b/meta-initramfs/recipes-devtools/grubby/grubby_git.bb
new file mode 100644
index 0000000000..ff673e21bb
--- /dev/null
+++ b/meta-initramfs/recipes-devtools/grubby/grubby_git.bb
@@ -0,0 +1,46 @@
+SUMMARY = "A command line tool for updating and displaying info about boot loaders"
+DESCRIPTION = "grubby is a command line tool for updating and displaying information \
+about the configuration files for the grub, lilo, elilo (ia64), yaboot (powerpc) and \
+zipl (s390) boot loaders. It is primarily designed to be used from scripts which install \
+new kernels and need to find information about the current boot environment. \
+"
+HOMEPAGE = "https://github.com/rhboot/grubby"
+LICENSE = "GPL-2.0-or-later"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=892f569a555ba9c07a568a7c0c4fa63a"
+
+DEPENDS = "popt util-linux rpm"
+DEPENDS:append:libc-musl = " libexecinfo argp-standalone"
+
+S = "${WORKDIR}/git"
+SRCREV = "c01b0d5bb182bde35b464d14996acf354a3ada2e"
+SRC_URI = "git://github.com/rhboot/grubby.git;protocol=https;;branch=main \
+ file://0001-rename-grub2-editenv-to-grub-editenv.patch \
+ file://0002-Add-another-variable-LIBS-to-provides-libraries-from.patch \
+ file://0003-include-paths.h-for-_PATH_MOUNTED.patch \
+ file://0004-rpm-sort-include-string.h-for-strverscmp.patch \
+ file://run-ptest \
+ "
+
+RDEPENDS:${PN} += "dracut"
+
+inherit autotools-brokensep ptest
+
+EXTRA_OEMAKE = "-e 'CC=${CC}' 'LDFLAGS=${LDFLAGS}' 'LIBS=${LIBS}'"
+
+LIBS:libc-musl = "-lexecinfo -largp"
+LIBS ?= ""
+do_install_ptest() {
+ install -d ${D}${PTEST_PATH}
+ cp -r ${S}/test ${S}/test.sh ${D}${PTEST_PATH}
+ sed -i 's|./grubby|grubby|' ${D}${PTEST_PATH}/test.sh
+}
+
+RDEPENDS:${PN} += "bash"
+RDEPENDS:${PN}-ptest = "util-linux-getopt bash"
+
+inherit update-alternatives
+ALTERNATIVE:${PN} = "installkernel"
+ALTERNATIVE_LINK_NAME[installkernel] = "${sbindir}/installkernel"
+
+COMPATIBLE_HOST = '(x86_64.*|i.86.*)-(linux|freebsd.*)'
diff --git a/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/0001-Define-in_-structs-for-non-glibc-system-libs.patch b/meta-initramfs/recipes-devtools/klibc/files/0001-Define-in_-structs-for-non-glibc-system-libs.patch
index 8d1ec69ae9..c782cf03c8 100644
--- a/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/0001-Define-in_-structs-for-non-glibc-system-libs.patch
+++ b/meta-initramfs/recipes-devtools/klibc/files/0001-Define-in_-structs-for-non-glibc-system-libs.patch
@@ -1,4 +1,4 @@
-From f414dea1316a48aba3e8e293201ebd51652d3ef4 Mon Sep 17 00:00:00 2001
+From 57e3a60b23891905733bfea7a1cb78c2377cc524 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sun, 9 Jul 2017 15:17:29 -0700
Subject: [PATCH] Define in_* structs for non-glibc system libs
@@ -10,14 +10,36 @@ glibc in mind, and does not provide adequate guards for musl
to infer that these structs should be defined in linux/in.h
Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
---
- usr/include/netinet/in.h | 33 +++++++++++++++++++++++++++++++++
- 1 file changed, 33 insertions(+)
+Upstream-Status: Pending
+
+ usr/include/net/if.h | 11 +++++++++++
+ usr/include/netinet/in.h | 36 ++++++++++++++++++++++++++++++++++++
+ 2 files changed, 47 insertions(+)
-Index: git/usr/include/netinet/in.h
-===================================================================
---- git.orig/usr/include/netinet/in.h
-+++ git/usr/include/netinet/in.h
+--- a/usr/include/net/if.h
++++ b/usr/include/net/if.h
+@@ -1,6 +1,17 @@
+ #ifndef _NET_IF_H
+ #define _NET_IF_H
+
++#ifndef __GLIBC__
++#include <linux/libc-compat.h>
++#undef __UAPI_DEF_IF_IFREQ
++#define __UAPI_DEF_IF_IFREQ 1
++#undef __UAPI_DEF_IF_IFNAMSIZ
++#define __UAPI_DEF_IF_IFNAMSIZ 1
++#undef __UAPI_DEF_IF_IFMAP
++#define __UAPI_DEF_IF_IFMAP 1
++#undef __UAPI_DEF_IF_NET_DEVICE_FLAGS
++#define __UAPI_DEF_IF_NET_DEVICE_FLAGS 1
++#endif
+ #include <sys/socket.h>
+ #include <sys/types.h>
+ #include <linux/if.h>
+--- a/usr/include/netinet/in.h
++++ b/usr/include/netinet/in.h
@@ -5,6 +5,42 @@
#ifndef _NETINET_IN_H
#define _NETINET_IN_H
@@ -58,28 +80,6 @@ Index: git/usr/include/netinet/in.h
+#define __UAPI_DEF_IF_IFREQ 1
+#endif
+
+ #include <sys/types.h>
#include <klibc/extern.h>
#include <stdint.h>
- #include <endian.h> /* Must be included *before* <linux/in.h> */
-Index: git/usr/include/net/if.h
-===================================================================
---- git.orig/usr/include/net/if.h
-+++ git/usr/include/net/if.h
-@@ -1,6 +1,17 @@
- #ifndef _NET_IF_H
- #define _NET_IF_H
-
-+#ifndef __GLIBC__
-+#include <linux/libc-compat.h>
-+#undef __UAPI_DEF_IF_IFREQ
-+#define __UAPI_DEF_IF_IFREQ 1
-+#undef __UAPI_DEF_IF_IFNAMSIZ
-+#define __UAPI_DEF_IF_IFNAMSIZ 1
-+#undef __UAPI_DEF_IF_IFMAP
-+#define __UAPI_DEF_IF_IFMAP 1
-+#undef __UAPI_DEF_IF_NET_DEVICE_FLAGS
-+#define __UAPI_DEF_IF_NET_DEVICE_FLAGS 1
-+#endif
- #include <sys/socket.h>
- #include <sys/types.h>
- #include <linux/if.h>
diff --git a/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/0001-always-use-bfd-linker.patch b/meta-initramfs/recipes-devtools/klibc/files/0001-always-use-bfd-linker.patch
index 41a6b9e130..895254889c 100644
--- a/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/0001-always-use-bfd-linker.patch
+++ b/meta-initramfs/recipes-devtools/klibc/files/0001-always-use-bfd-linker.patch
@@ -1,4 +1,4 @@
-From 9ea19bd9636806a73bcf29cfcee40a268f91eb4c Mon Sep 17 00:00:00 2001
+From 63ab5102d6ef362a597941e62470bf19e6f1652b Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Tue, 11 Jul 2017 08:09:52 -0700
Subject: [PATCH] always use bfd linker
@@ -8,12 +8,15 @@ therefore explicitly asking for bfd linker would fix the
linking issues on such distros
Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
---
+Upstream-Status: Pending
+
Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
-index dc10fc5d..40647be4 100644
+index dc10fc5..40647be 100644
--- a/Makefile
+++ b/Makefile
@@ -20,7 +20,7 @@ include $(srctree)/scripts/Kbuild.include
@@ -25,6 +28,3 @@ index dc10fc5d..40647be4 100644
export AR := $(KLIBCROSS)ar
export RANLIB := $(KLIBCROSS)ranlib
export STRIP := $(KLIBCROSS)strip
---
-2.13.2
-
diff --git a/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/0001-arm-Do-not-set-a-fallback-march-and-mtune.patch b/meta-initramfs/recipes-devtools/klibc/files/0001-arm-Do-not-set-a-fallback-march-and-mtune.patch
index 9c0ea63974..5ac0d4596a 100644
--- a/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/0001-arm-Do-not-set-a-fallback-march-and-mtune.patch
+++ b/meta-initramfs/recipes-devtools/klibc/files/0001-arm-Do-not-set-a-fallback-march-and-mtune.patch
@@ -1,4 +1,4 @@
-From a46a144ac883898d9cedf7a0b13aec6d10116125 Mon Sep 17 00:00:00 2001
+From ebd2b0e414c98467156b961abb470b5d07f37ea8 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 29 Sep 2017 23:11:53 -0700
Subject: [PATCH] arm: Do not set a fallback march and mtune
@@ -9,14 +9,13 @@ need to compute values for CPU_ARCH and CPU_TUNE
which is a bit harder in OE
Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
---
Upstream-Status: Pending
usr/klibc/arch/arm/MCONFIG | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/usr/klibc/arch/arm/MCONFIG b/usr/klibc/arch/arm/MCONFIG
-index 53bc1dc3..857e2f2d 100644
--- a/usr/klibc/arch/arm/MCONFIG
+++ b/usr/klibc/arch/arm/MCONFIG
@@ -10,7 +10,7 @@
@@ -28,6 +27,3 @@ index 53bc1dc3..857e2f2d 100644
KLIBCBITSIZE = 32
KLIBCREQFLAGS += -fno-exceptions
KLIBCSTRIPFLAGS += -R .ARM.exidx
---
-2.14.2
-
diff --git a/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/0001-include-linux-sysinfo.h-directly.patch b/meta-initramfs/recipes-devtools/klibc/files/0001-include-linux-sysinfo.h-directly.patch
index 1b033acc42..d49dfc1924 100644
--- a/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/0001-include-linux-sysinfo.h-directly.patch
+++ b/meta-initramfs/recipes-devtools/klibc/files/0001-include-linux-sysinfo.h-directly.patch
@@ -1,4 +1,4 @@
-From ab060a57b41f989665ade20e813bbcb67f91f1f2 Mon Sep 17 00:00:00 2001
+From d966d52d1e569cbc2293d841285e2b8941f28c61 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sun, 9 Jul 2017 15:56:28 -0700
Subject: [PATCH] include linux/sysinfo.h directly
@@ -10,23 +10,21 @@ but until its done in right place, change the local header
override to avoid this assumption
Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
---
+Upstream-Status: Pending
+
usr/include/sys/sysinfo.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/usr/include/sys/sysinfo.h b/usr/include/sys/sysinfo.h
-index dba68dc6..d145c0b1 100644
--- a/usr/include/sys/sysinfo.h
+++ b/usr/include/sys/sysinfo.h
-@@ -5,7 +5,7 @@
- #ifndef _SYS_SYSINFO_H
+@@ -6,7 +6,7 @@
#define _SYS_SYSINFO_H
+ #include <sys/types.h>
-#include <linux/kernel.h>
+#include <linux/sysinfo.h>
extern int sysinfo(struct sysinfo *info);
---
-2.13.2
-
diff --git a/meta-initramfs/recipes-devtools/klibc/files/0001-klibc-Kbuild-Accept-EXTRA_KLIBCAFLAGS.patch b/meta-initramfs/recipes-devtools/klibc/files/0001-klibc-Kbuild-Accept-EXTRA_KLIBCAFLAGS.patch
new file mode 100644
index 0000000000..e4ae3728a4
--- /dev/null
+++ b/meta-initramfs/recipes-devtools/klibc/files/0001-klibc-Kbuild-Accept-EXTRA_KLIBCAFLAGS.patch
@@ -0,0 +1,26 @@
+From cdc6edc2cfcd0ce88d6e66654d605dad303b1a75 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 11 Sep 2018 17:03:36 -0700
+Subject: [PATCH] klibc/Kbuild: Accept EXTRA_KLIBCAFLAGS
+
+For passing additional assembler flags
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ usr/klibc/Kbuild | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/usr/klibc/Kbuild
++++ b/usr/klibc/Kbuild
+@@ -190,7 +190,8 @@ $(SOHASH): $(SOLIB) $(SOLIB).hash
+ targets += shared-stub.o
+
+ quiet_cmd_interp = BUILD $@
+- cmd_interp = $(KLIBCCC) $(klibccflags) -D__ASSEMBLY__ \
++ cmd_interp = $(KLIBCCC) $(klibccflags) $(EXTRA_KLIBCAFLAGS) \
++ -D__ASSEMBLY__ \
+ -DLIBDIR=\"$(SHLIBDIR)\" \
+ -DSOHASH=\"$(SOLIBHASH)\" \
+ -c -o $@ $<
diff --git a/meta-initramfs/recipes-devtools/klibc/files/0001-klibc-add-getrandom-syscall.patch b/meta-initramfs/recipes-devtools/klibc/files/0001-klibc-add-getrandom-syscall.patch
new file mode 100644
index 0000000000..80e6c6b11c
--- /dev/null
+++ b/meta-initramfs/recipes-devtools/klibc/files/0001-klibc-add-getrandom-syscall.patch
@@ -0,0 +1,24 @@
+From e4d5d5224609d7d5c824dd231f5baec868befdfa Mon Sep 17 00:00:00 2001
+From: Andrea Adami <andrea.adami@gmail.com>
+Date: Tue, 4 Sep 2018 23:56:00 +0200
+Subject: [PATCH 1/1] klibc: add getrandom() syscall
+
+needed by latest kexec-tools for qemuarm64 (kashan)
+
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+---
+Upstream-Status: Pending
+
+ usr/klibc/SYSCALLS.def | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/usr/klibc/SYSCALLS.def
++++ b/usr/klibc/SYSCALLS.def
+@@ -275,6 +275,7 @@ int syslog::klogctl(int, char *, int);
+ int sysinfo(struct sysinfo *);
+ long kexec_load(void *, unsigned long, struct kexec_segment *, unsigned long);
+ <x86_64,ppc64,s390x> long kexec_file_load(int, int, unsigned long, const char *, unsigned long);
++ssize_t getrandom(void *, size_t, unsigned int);
+
+ /*
+ * Low-level I/O (generally architecture-specific);
diff --git a/meta-initramfs/recipes-devtools/klibc/files/0001-klibc_2.0.4-add-kexec_file_load-syscall.patch b/meta-initramfs/recipes-devtools/klibc/files/0001-klibc_2.0.4-add-kexec_file_load-syscall.patch
new file mode 100644
index 0000000000..16885488e4
--- /dev/null
+++ b/meta-initramfs/recipes-devtools/klibc/files/0001-klibc_2.0.4-add-kexec_file_load-syscall.patch
@@ -0,0 +1,24 @@
+From 90683d5eaabfa684a71411d6e3262153ac191ad8 Mon Sep 17 00:00:00 2001
+From: Andrea Adami <andrea.adami@gmail.com>
+Date: Tue, 4 Sep 2018 23:44:30 +0200
+Subject: [PATCH 1/1] klibc_2.0.4: add kexec_file_load syscall
+
+for supported archs only (matched in kexec-tools)
+
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+---
+Upstream-Status: Pending
+
+ usr/klibc/SYSCALLS.def | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/usr/klibc/SYSCALLS.def
++++ b/usr/klibc/SYSCALLS.def
+@@ -274,6 +274,7 @@ int reboot::__reboot(int, int, int, void
+ int syslog::klogctl(int, char *, int);
+ int sysinfo(struct sysinfo *);
+ long kexec_load(void *, unsigned long, struct kexec_segment *, unsigned long);
++<x86_64,ppc64,s390x> long kexec_file_load(int, int, unsigned long, const char *, unsigned long);
+
+ /*
+ * Low-level I/O (generally architecture-specific);
diff --git a/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/0001-mkfifo-Implement-mkfifo.patch b/meta-initramfs/recipes-devtools/klibc/files/0001-mkfifo-Implement-mkfifo.patch
index 9791412e48..4378ca5610 100644
--- a/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/0001-mkfifo-Implement-mkfifo.patch
+++ b/meta-initramfs/recipes-devtools/klibc/files/0001-mkfifo-Implement-mkfifo.patch
@@ -1,15 +1,18 @@
-From b4e120f5edf06e6df138b1804a8b5180584cea6b Mon Sep 17 00:00:00 2001
+From cf97079009ba48d10e52052b2eab7461ea4dd09b Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 10 Jul 2017 20:42:50 -0700
Subject: [PATCH] mkfifo: Implement mkfifo
Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
---
+Upstream-Status: Pending
+
usr/utils/mkfifo.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/usr/utils/mkfifo.c b/usr/utils/mkfifo.c
-index 5a758b2a..f1f577e6 100644
+index 5a758b2..f1f577e 100644
--- a/usr/utils/mkfifo.c
+++ b/usr/utils/mkfifo.c
@@ -26,6 +26,11 @@ static int make_fifo(char *dir)
@@ -24,6 +27,3 @@ index 5a758b2a..f1f577e6 100644
int main(int argc, char *argv[])
{
int c, ret = 0;
---
-2.13.2
-
diff --git a/meta-initramfs/recipes-devtools/klibc/files/0001-workaround-for-overlapping-sections-in-binary.patch b/meta-initramfs/recipes-devtools/klibc/files/0001-workaround-for-overlapping-sections-in-binary.patch
new file mode 100644
index 0000000000..2f203ef0a4
--- /dev/null
+++ b/meta-initramfs/recipes-devtools/klibc/files/0001-workaround-for-overlapping-sections-in-binary.patch
@@ -0,0 +1,47 @@
+From 911130ce429cbf6a92d0fbd17f0ff638ec941df2 Mon Sep 17 00:00:00 2001
+From: Petr Ovtchenkov <ptr@void-ptr.info>
+Date: Sun, 7 Feb 2021 00:04:36 -0800
+Subject: [PATCH] workaround for overlapping sections in binary
+
+Problem: binary (typesize.bin) created from object file (typesize.o)
+with 'objcopy -O binary ... '. But typesize.o has relocatable objects that all
+copied with offset 0. This will lead to overlapping sections in binary.
+By fortunate syscalls.pl check magic bytes and ring the bell.
+
+This is naive workaround: skip .note.gnu.property section that overlap
+.rodata section.
+
+This not a bug of objcopy, https://sourceware.org/bugzilla/show_bug.cgi?id=27314
+
+Related commit:
+
+ commit de6f630e6be90d6d32d8bf2fed3f856b0c32f7ba
+ Author: H. Peter Anvin <hpa at zytor.com>
+ Date: Sat Jun 10 11:15:19 2006 -0700
+
+ [klibc] Detect the sizes of various types, and make available to sysstub.ph.
+
+ This additional code effectively queries the C compiler for the sizes of
+ various types, and makes an associative array %typesize available to
+ sysstub.ph. This is currently not used, but it's expected that some
+ architectures, e.g. s390, will need this to determine which registers
+ go where, and how many registers are needed.
+
+Upstream-Status: Submitted [https://lists.zytor.com/archives/klibc/2021-February/004583.html]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ usr/klibc/syscalls/Kbuild | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/usr/klibc/syscalls/Kbuild
++++ b/usr/klibc/syscalls/Kbuild
+@@ -71,7 +71,7 @@ $(obj)/typesize.c: $(srctree)/$(KLIBCSRC
+
+ # Convert typesize.o to typesize.bin
+ quiet_cmd_mkbin = OBJCOPY $@
+- cmd_mkbin = $(KLIBCOBJCOPY) -O binary --only-section .rodata $< $@
++ cmd_mkbin = $(KLIBCOBJCOPY) -O binary --remove-section .note.gnu.property $< $@
+
+ $(obj)/typesize.bin: $(obj)/typesize.o FORCE
+ $(call if_changed,mkbin)
diff --git a/meta-initramfs/recipes-devtools/klibc/files/armv4-fix-v4bx.patch b/meta-initramfs/recipes-devtools/klibc/files/armv4-fix-v4bx.patch
new file mode 100644
index 0000000000..7b29eaf200
--- /dev/null
+++ b/meta-initramfs/recipes-devtools/klibc/files/armv4-fix-v4bx.patch
@@ -0,0 +1,26 @@
+From d2fb484d995221277cce7abddcd7dfa0e8bceec3 Mon Sep 17 00:00:00 2001
+From: Andrea Adami <andrea.adami@gmail.com>
+Date: Fri, 11 Jan 2013 17:26:40 +0000
+Subject: [PATCH] klibc_2.0.2: apply FIX_V4BX patch for armv4 targets only
+
+Status: not applicable upstream, in OE/Yocto we use $(FIX_V4BX)
+which is "" in case of armv5 or thumbs.
+
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+
+---
+Upstream-Status: Pending
+
+ usr/klibc/arch/arm/MCONFIG | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/usr/klibc/arch/arm/MCONFIG
++++ b/usr/klibc/arch/arm/MCONFIG
+@@ -23,6 +23,7 @@ else
+ # Extra linkflags when building the shared version of the library
+ ifeq ($(CONFIG_AEABI),y)
+ KLIBCREQFLAGS += -mabi=aapcs-linux -mno-thumb-interwork
++KLIBCLDFLAGS += $(FIX_ARMV4_EABI_BX)
+ else
+ KLIBCREQFLAGS += -mabi=apcs-gnu -mno-thumb-interwork
+ endif
diff --git a/meta-initramfs/recipes-devtools/klibc/files/cross-clang.patch b/meta-initramfs/recipes-devtools/klibc/files/cross-clang.patch
new file mode 100644
index 0000000000..f39701a65e
--- /dev/null
+++ b/meta-initramfs/recipes-devtools/klibc/files/cross-clang.patch
@@ -0,0 +1,26 @@
+Upstream-Status: Pending
+
+--- a/scripts/Kbuild.klibc
++++ b/scripts/Kbuild.klibc
+@@ -113,10 +113,8 @@ KLIBCCPPFLAGS := -nostdinc -iwithpref
+ -I$(KLIBCINC)/arch/$(KLIBCARCHDIR) \
+ -I$(KLIBCINC)/bits$(KLIBCBITSIZE) \
+ -I$(KLIBCOBJ)/../include \
+- -I$(KLIBCINC)
+-ifeq ($(cc-name),clang)
+-KLIBCCPPFLAGS += -isystem $(shell $(KLIBCCC) $(KLIBCCFLAGS) --print-file-name=include)
+-endif
++ -I$(KLIBCINC) \
++ -I$(shell $(KLIBCCC) $(KLIBCCFLAGS) --print-file-name=include)
+
+ # kernel include paths
+ KLIBCKERNELSRC ?= $(srctree)
+@@ -137,7 +135,7 @@ KLIBCCFLAGS += $(KLIBCCPPFLAGS) $(K
+ KLIBCAFLAGS += -D__ASSEMBLY__ $(KLIBCCFLAGS)
+ KLIBCSTRIPFLAGS += --strip-all -R .comment -R .note
+
+-KLIBCLIBGCC_DEF := $(shell $(KLIBCCC) $(KLIBCCFLAGS) $(if $(filter gcc,$(cc-name)),--print-libgcc,--print-libgcc-file-name))
++KLIBCLIBGCC_DEF := $(shell $(KLIBCCC) $(KLIBCCFLAGS) --print-libgcc-file-name)
+ KLIBCLIBGCC ?= $(KLIBCLIBGCC_DEF)
+ KLIBCCRT0 := $(KLIBCOBJ)/arch/$(KLIBCARCHDIR)/crt0.o
+ KLIBCLIBC := $(KLIBCOBJ)/libc.a
diff --git a/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/klcc-consider-sysroot.patch b/meta-initramfs/recipes-devtools/klibc/files/klcc-consider-sysroot.patch
index 9bc4835dcd..af76564901 100644
--- a/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/klcc-consider-sysroot.patch
+++ b/meta-initramfs/recipes-devtools/klibc/files/klcc-consider-sysroot.patch
@@ -1,3 +1,13 @@
+From 0cb26cf2d25d36c1fdcc4f1635e4329436ed866a Mon Sep 17 00:00:00 2001
+From: Andrea Adami <andrea.adami@gmail.com>
+Date: Fri, 19 Sep 2014 23:09:29 +0200
+
+---
+Upstream-Status: Pending
+
+ klcc/klcc.in | 3 +++
+ 1 file changed, 3 insertions(+)
+
diff --git a/klcc/klcc.in b/klcc/klcc.in
index 43d0984..61e9385 100644
--- a/klcc/klcc.in
diff --git a/meta-initramfs/recipes-devtools/klibc/files/klcc-cross-accept-clang-options.patch b/meta-initramfs/recipes-devtools/klibc/files/klcc-cross-accept-clang-options.patch
new file mode 100644
index 0000000000..a3a0695637
--- /dev/null
+++ b/meta-initramfs/recipes-devtools/klibc/files/klcc-cross-accept-clang-options.patch
@@ -0,0 +1,38 @@
+meta-clang passes this option to compiler defaults
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+--- a/klcc/klcc.in
++++ b/klcc/klcc.in
+@@ -207,6 +207,30 @@ while ( defined($a = shift(@ARGV)) ) {
+ } elsif ( $a =~ /^--([sysroot=])(.*)$/ ) {
+ # Override gcc encoded sysroot
+ push(@ccopt, $a);
++ } elsif ( $a eq '-nostartfiles' ) {
++ # Allow clang options
++ push(@ccopt, $a);
++ } elsif ( $a eq '-nostdlib' ) {
++ # Allow clang options
++ push(@ccopt, $a);
++ } elsif ( $a eq '-nodefaultlibs' ) {
++ # Allow clang options
++ push(@ccopt, $a);
++ } elsif ( $a eq '-no-pie' ) {
++ # Allow clang options
++ push(@ccopt, $a);
++ } elsif ( $a eq '-no-integrated-as' ) {
++ # Allow clang options
++ push(@ccopt, $a);
++ } elsif ( $a =~ '--unwindlib=.*' ) {
++ # Allow clang options
++ push(@ccopt, $a);
++ } elsif ( $a =~ '-rtlib=.*' ) {
++ # Allow clang options
++ push(@ccopt, $a);
++ } elsif ( $a =~ '--dyld-prefix=.*' ) {
++ # Allow clang options
++ push(@ccopt, $a);
+ } else {
+ die "$0: unknown option: $a\n";
+ }
diff --git a/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/use-env-for-perl.patch b/meta-initramfs/recipes-devtools/klibc/files/use-env-for-perl.patch
index eac128cc09..d2a19909f0 100644
--- a/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/use-env-for-perl.patch
+++ b/meta-initramfs/recipes-devtools/klibc/files/use-env-for-perl.patch
@@ -1,3 +1,5 @@
+Upstream-Status: Pending
+
Patch was imported from the OpenEmbedded git server
(git://git.openembedded.org/openembedded)
as of commit id 676cbb54d42c89a4832871064cfcb7ee2ad372ee
@@ -10,8 +12,6 @@ that /usr/bin/env perl will always return ours (if it has been built).
Signed-off-by: Tom Rini <tom_rini@mentor.com>
-Index: klibc-1.5.20/klcc/makeklcc.pl
-===================================================================
--- a/klcc/makeklcc.pl
+++ b/klcc/makeklcc.pl
@@ -26,7 +26,7 @@ sub pathsearch($) {
diff --git a/meta-initramfs/recipes-devtools/klibc/klcc-cross_2.0.4.bb b/meta-initramfs/recipes-devtools/klibc/klcc-cross_2.0.13.bb
index b285b2e8be..4011aa231e 100644
--- a/meta-initramfs/recipes-devtools/klibc/klcc-cross_2.0.4.bb
+++ b/meta-initramfs/recipes-devtools/klibc/klcc-cross_2.0.13.bb
@@ -7,8 +7,6 @@ DEPENDS = "klibc"
PACKAGES = ""
inherit nopackages
-FILESPATH =. "${FILE_DIRNAME}/klibc-${PV}:"
-
SRC_URI += "file://use-env-for-perl.patch"
# disable task already run in klibc recipe
@@ -25,8 +23,8 @@ do_install() {
# magic by removing all the crazy escaping.
sed -i -e "2i \$TARGETSYSROOT = '${STAGING_DIR_TARGET}';" \
-e "2i \$NATIVESYSROOT = '${STAGING_DIR_NATIVE}';" \
- -e 's#${@d.getVar("STAGING_DIR_NATIVE", True).replace("/", "\\\\/").replace("-", "\\\\-").replace(".", "\\\\.")}#${NATIVESYSROOT}#g;' \
- -e 's#${@d.getVar("STAGING_DIR_TARGET", True).replace("/", "\\\\/").replace("-", "\\\\-").replace(".", "\\\\.")}#${TARGETSYSROOT}#g' \
+ -e 's#${@d.getVar("STAGING_DIR_NATIVE").replace("/", "\\\\/").replace("-", "\\\\-").replace(".", "\\\\.")}#${NATIVESYSROOT}#g;' \
+ -e 's#${@d.getVar("STAGING_DIR_TARGET").replace("/", "\\\\/").replace("-", "\\\\-").replace(".", "\\\\.")}#${TARGETSYSROOT}#g' \
${D}${bindir_crossscripts}/${TARGET_PREFIX}klcc
}
diff --git a/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/0001-Kbuild.klibc-Add-path-to-compiler-headers-via-isyste.patch b/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/0001-Kbuild.klibc-Add-path-to-compiler-headers-via-isyste.patch
deleted file mode 100644
index 7cd4c0e49c..0000000000
--- a/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/0001-Kbuild.klibc-Add-path-to-compiler-headers-via-isyste.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 10fb440795a7796140bd657ee028847ec7c34447 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 8 Sep 2017 23:10:54 -0700
-Subject: [PATCH] Kbuild.klibc: Add path to compiler headers via -isystem
-
-We need to include this path so it can find compiler headers e.g.
-stdarg.h which is called from wrapper stdarg.h using include_next
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- scripts/Kbuild.klibc | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/scripts/Kbuild.klibc b/scripts/Kbuild.klibc
-index f500d535..1d5cdc43 100644
---- a/scripts/Kbuild.klibc
-+++ b/scripts/Kbuild.klibc
-@@ -105,7 +105,8 @@ KLIBCOBJCOPY := $(OBJCOPY)
- KLIBCOBJDUMP := $(OBJDUMP)
-
- # klibc include paths
--KLIBCCPPFLAGS := -nostdinc -iwithprefix include \
-+KLIBCCPPFLAGS := -nostdinc -iwithprefix include \
-+ -isystem $(shell $(CC) -print-file-name=include) \
- -I$(KLIBCINC)/arch/$(KLIBCARCHDIR) \
- -I$(KLIBCINC)/bits$(KLIBCBITSIZE) \
- -I$(KLIBCOBJ)/../include \
---
-2.14.1
-
diff --git a/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/0001-Kbuild.klibc-Use-print-libgcc-file-name-instead-of-p.patch b/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/0001-Kbuild.klibc-Use-print-libgcc-file-name-instead-of-p.patch
deleted file mode 100644
index 41cc14275e..0000000000
--- a/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/0001-Kbuild.klibc-Use-print-libgcc-file-name-instead-of-p.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From f66edde8a704131d98e8783ea8d4c848e8119b20 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 26 Jul 2017 16:13:16 -0700
-Subject: [PATCH 1/3] Kbuild.klibc: Use -print-libgcc-file-name instead of
- --print-libgcc
-
--print-libgcc-file-name works with clang and gcc unlike --print-libgcc
-which is gcc specific
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- scripts/Kbuild.klibc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/scripts/Kbuild.klibc b/scripts/Kbuild.klibc
-index f500d535..101f86f5 100644
---- a/scripts/Kbuild.klibc
-+++ b/scripts/Kbuild.klibc
-@@ -128,7 +128,7 @@ KLIBCCFLAGS += $(KLIBCCPPFLAGS) $(KLIBCREQFLAGS) $(KLIBCARCHREQFLAGS) \
- KLIBCAFLAGS += -D__ASSEMBLY__ $(KLIBCCFLAGS)
- KLIBCSTRIPFLAGS += --strip-all -R .comment -R .note
-
--KLIBCLIBGCC_DEF := $(shell $(KLIBCCC) $(KLIBCCFLAGS) --print-libgcc)
-+KLIBCLIBGCC_DEF := $(shell $(KLIBCCC) $(KLIBCCFLAGS) -print-libgcc-file-name)
- KLIBCLIBGCC ?= $(KLIBCLIBGCC_DEF)
- KLIBCCRT0 := $(KLIBCOBJ)/arch/$(KLIBCARCHDIR)/crt0.o
- KLIBCLIBC := $(KLIBCOBJ)/libc.a
---
-2.13.3
-
diff --git a/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/0001-dash-Specify-format-string-in-fmtstr.patch b/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/0001-dash-Specify-format-string-in-fmtstr.patch
deleted file mode 100644
index ae8c1f11a0..0000000000
--- a/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/0001-dash-Specify-format-string-in-fmtstr.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 2fff607fd0b5550e5072a6fffcbb01c29d5207d2 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 9 Jul 2017 13:51:25 -0700
-Subject: [PATCH] dash: Specify format string in fmtstr()
-
-Fixes build with hardening flags
-
-usr/dash/jobs.c:429:3: error: format not a string literal and no format arguments [-Werror=format-security]
- col = fmtstr(s, 32, strsignal(st));
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- usr/dash/jobs.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/usr/dash/jobs.c b/usr/dash/jobs.c
-index 009bbfee..299bcacc 100644
---- a/usr/dash/jobs.c
-+++ b/usr/dash/jobs.c
-@@ -426,7 +426,7 @@ sprint_status(char *s, int status, int sigonly)
- goto out;
- #endif
- }
-- col = fmtstr(s, 32, strsignal(st));
-+ col = fmtstr(s, 32, "%s", strsignal(st));
- #ifdef WCOREDUMP
- if (WCOREDUMP(status)) {
- col += fmtstr(s + col, 16, " (core dumped)");
---
-2.13.2
-
diff --git a/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/armv4-fix-v4bx.patch b/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/armv4-fix-v4bx.patch
deleted file mode 100644
index 6bb384bb0b..0000000000
--- a/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/armv4-fix-v4bx.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Status: not applicable upstream, in OE/Yocto we use $(FIX_V4BX)
-which is "" in case of armv5 or thumbs.
-
-Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
-
---- a/usr/klibc/arch/arm/MCONFIG 2013-01-09 01:12:02.000000000 +0100
-+++ b/usr/klibc/arch/arm/MCONFIG 2013-01-08 23:45:59.000000000 +0100
-@@ -29,6 +29,7 @@
- KLIBCSHAREDFLAGS = -Ttext 0x01800200
- ifeq ($(CONFIG_AEABI),y)
- KLIBCREQFLAGS += -mabi=aapcs-linux -mno-thumb-interwork
-+KLIBCLDFLAGS += $(FIX_ARMV4_EABI_BX)
- else
- KLIBCREQFLAGS += -mabi=apcs-gnu -mno-thumb-interwork
- endif
diff --git a/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/klibc-config-eabi.patch b/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/klibc-config-eabi.patch
deleted file mode 100644
index 316c80a926..0000000000
--- a/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/klibc-config-eabi.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-Patch was imported from the OpenEmbedded git server
-(git://git.openembedded.org/openembedded)
-as of commit id b6764cf32ec93547531130dca364fb95e1c495f4
-Signed-off-by: Thomas Kunze <thommycheck@gmx.de>
-
-diff -Nur klibc-1.5/defconfig klibc-1.5p/defconfig
---- klibc-1.5/defconfig 2007-03-04 02:52:10.000000000 +0100
-+++ klibc-1.5p/defconfig 2008-02-08 19:24:22.337127756 +0100
-@@ -5,4 +5,4 @@
- CONFIG_REGPARM=y
- # ARM options
- # CONFIG_KLIBC_THUMB is not set
--# CONFIG_AEABI is not set
-+CONFIG_AEABI=y
diff --git a/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/klibc-linux-libc-dev.patch b/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/klibc-linux-libc-dev.patch
deleted file mode 100644
index 204306475f..0000000000
--- a/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/klibc-linux-libc-dev.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-commit 43adf69062254fb4f8d4d11fb5fe36a60ae25d5a
-Author: Ben Hutchings <ben@decadent.org.uk>
-Date: Sun Mar 14 18:41:56 2010 +0000
-
- Taken from debian "Fix klibc Debian specific build trouble"
- Adapted for klibc_2.0.2
-
-Index: klibc-2.0~rc2/scripts/Kbuild.install
-===================================================================
---- klibc-2.0~rc2.orig/scripts/Kbuild.install 2012-02-11 18:50:21.000000000 +0000
-+++ klibc-2.0~rc2/scripts/Kbuild.install 2012-02-11 19:04:52.000000000 +0000
-@@ -95,7 +95,9 @@
- $(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include
- $(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)lib
- $(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)bin
-- $(Q)$(MAKE) -C $(KLIBCKERNELSRC) ARCH=$(KLIBCARCH) INSTALL_HDR_PATH=$(INSTALLROOT)$(INSTALLDIR)/$(KCROSS) headers_install
-+ $(Q)for x in ../../../include/asm ../../../include/asm-generic ../../../include/linux ../../../include/mtd; do \
-+ ln -sf $${x} $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include/ || exit; \
-+ done
- $(Q)cp -rf usr/include/. $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include/.
- $(Q)chmod -R a+rX $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include
- $(Q)$(install-data) $(srctree)/klcc/klcc.1 $(INSTALLROOT)$(mandir)/man1/$(KCROSS)klcc.1
diff --git a/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/staging.patch b/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/staging.patch
deleted file mode 100644
index c01c712a12..0000000000
--- a/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/staging.patch
+++ /dev/null
@@ -1,144 +0,0 @@
-Patch was imported from the OpenEmbedded git server
-(git://git.openembedded.org/openembedded)
-as of commit id eefb99a313bbcc8f34c8b32bf0c5aa2dd2580735
-Signed-off-by: Thomas Kunze <thommycheck@gmx.de>
-
-Minor edits following upstream changes
-Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
-
-Index: klibc-1.5.24/scripts/Kbuild.install
-===================================================================
---- a/scripts/Kbuild.install 2011-07-27 15:50:53.000000000 +0200
-+++ b/scripts/Kbuild.install 2011-08-01 00:03:03.000000000 +0200
-@@ -88,13 +88,10 @@
- header:
- $(Q)echo " INSTALL headers + man pages to $(INSTALLROOT)$(INSTALLDIR)"
- $(Q)mkdir -p $(INSTALLROOT)$(bindir)
-- $(Q)mkdir -p $(INSTALLROOT)$(mandir)/man1
-- $(Q)mkdir -p $(INSTALLROOT)$(SHLIBDIR)
- $(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)
- $(Q)-rm -rf $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include
- $(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include
- $(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)lib
-- $(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)bin
- $(Q)for x in ../../../include/asm ../../../include/asm-generic ../../../include/linux ../../../include/mtd; do \
- ln -sf $${x} $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include/ || exit; \
- done
-@@ -103,7 +100,6 @@
- done
- $(Q)cp -rf usr/include/. $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include/.
- $(Q)chmod -R a+rX,go-w $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include
-- $(Q)$(install-data) $(srctree)/klcc/klcc.1 $(INSTALLROOT)$(mandir)/man1/$(KCROSS)klcc.1
- $(Q)$(install-bin) $(objtree)/klcc/$(KCROSS)klcc $(INSTALLROOT)$(bindir)
-
- footer: header
-
-Index: klibc-1.5.24/usr/dash/Kbuild
-===================================================================
---- a/usr/dash/Kbuild 2011-07-27 15:50:53.000000000 +0200
-+++ b/usr/dash/Kbuild 2011-08-01 00:07:56.000000000 +0200
-@@ -92,5 +92,3 @@
- $(obj)/syntax.h: $(obj)/syntax.c
- $(Q):
-
--# Targets to install
--install-y := sh.shared
-
-Index: klibc-1.5.24/usr/gzip/Kbuild
-===================================================================
---- a/usr/gzip/Kbuild 2011-07-27 15:50:53.000000000 +0200
-+++ b/usr/gzip/Kbuild 2011-08-01 00:06:39.000000000 +0200
-@@ -21,5 +21,3 @@
- # Cleaning
- targets := gzip gzip.g gunzip zcat
-
--# Targets to install
--install-y := gzip gunzip zcat
-
-Index: klibc-1.5.24/usr/kinit/fstype/Kbuild
-===================================================================
---- a/usr/kinit/fstype/Kbuild 2011-07-27 15:50:53.000000000 +0200
-+++ b/usr/kinit/fstype/Kbuild 2011-08-01 00:09:12.000000000 +0200
-@@ -21,5 +21,3 @@
- # Cleaning
- clean-dirs := static shared
-
--# install binary
--install-y := $(shared-y)
-
-Index: klibc-1.5.24/usr/kinit/ipconfig/Kbuild
-===================================================================
---- a/usr/kinit/ipconfig/Kbuild 2011-07-27 15:50:53.000000000 +0200
-+++ b/usr/kinit/ipconfig/Kbuild 2011-08-01 00:10:52.000000000 +0200
-@@ -27,5 +27,3 @@
- # Cleaning
- clean-dirs := static shared
-
--# install binary
--install-y := $(shared-y)
-
-Index: klibc-1.5.24/usr/kinit/Kbuild
-===================================================================
---- a/usr/kinit/Kbuild 2011-07-27 15:50:53.000000000 +0200
-+++ b/usr/kinit/Kbuild 2011-08-01 00:20:18.000000000 +0200
-@@ -33,5 +33,3 @@
- subdir- := fstype ipconfig nfsmount resume run-init
-
-
--# install binary
--install-y := kinit kinit.shared
-
-Index: klibc-1.5.24/usr/kinit/nfsmount/Kbuild
-===================================================================
---- a/usr/kinit/nfsmount/Kbuild 2011-07-27 15:50:53.000000000 +0200
-+++ b/usr/kinit/nfsmount/Kbuild 2011-08-01 00:12:52.000000000 +0200
-@@ -23,5 +23,3 @@
-
- clean-dirs := static shared
-
--# Install binary
--install-y := $(shared-y)
-
-Index: klibc-1.5.24/usr/kinit/resume/Kbuild
-===================================================================
---- a/usr/kinit/resume/Kbuild 2011-07-27 15:50:53.000000000 +0200
-+++ b/usr/kinit/resume/Kbuild 2011-08-01 00:13:51.000000000 +0200
-@@ -26,5 +26,3 @@
- # Cleaning
- clean-dirs := static shared
-
--# install binary
--install-y := $(shared-y)
-
-Index: klibc-1.5.24/usr/kinit/run-init/Kbuild
-===================================================================
---- a/usr/kinit/run-init/Kbuild 2011-07-27 15:50:53.000000000 +0200
-+++ b/usr/kinit/run-init/Kbuild 2011-08-01 00:14:41.000000000 +0200
-@@ -25,5 +25,3 @@
- # Cleaning
- clean-dirs := static shared
-
--# install binary
--install-y := $(shared-y)
-
-Index: klibc-1.5.24/usr/klibc/Kbuild
-===================================================================
---- a/usr/klibc/Kbuild 2011-07-27 15:50:53.000000000 +0200
-+++ b/usr/klibc/Kbuild 2011-08-01 00:18:11.000000000 +0200
-@@ -177,5 +177,3 @@
- $(INSTALLROOT)$(INSTALLDIR)/$(KLIBCCROSS)lib))
- $(Q)$(install-lib) $(obj)/klibc-$(SOLIBHASH).so \
- $(INSTALLROOT)$(INSTALLDIR)/$(KLIBCCROSS)lib
-- $(Q)$(install-lib) $(obj)/klibc-$(SOLIBHASH).so \
-- $(INSTALLROOT)$(SHLIBDIR)
-
-Index: klibc-1.5.24/usr/utils/Kbuild
-===================================================================
---- a/usr/utils/Kbuild 2011-07-27 15:50:53.000000000 +0200
-+++ b/usr/utils/Kbuild 2011-08-01 00:19:13.000000000 +0200
-@@ -72,5 +72,3 @@
- # Clean deletes the static and shared dir
- clean-dirs := static shared
-
--# install only install the shared binaries
--install-y := $(shared-y) shared/reboot shared/poweroff
diff --git a/meta-initramfs/recipes-devtools/klibc/klibc-static-utils_2.0.4.bb b/meta-initramfs/recipes-devtools/klibc/klibc-static-utils_2.0.13.bb
index c835fd647a..0de580781b 100644
--- a/meta-initramfs/recipes-devtools/klibc/klibc-static-utils_2.0.4.bb
+++ b/meta-initramfs/recipes-devtools/klibc/klibc-static-utils_2.0.13.bb
@@ -3,7 +3,7 @@ SUMMARY = "klibc utils for initramfs statically compiled"
FILESPATH =. "${FILE_DIRNAME}/klibc-${PV}:"
PACKAGES = "${PN}"
-FILES_${PN} = ""
+FILES:${PN} = ""
KLIBC_UTILS_VARIANT = "static"
KLIBC_UTILS_PKGNAME = "klibc-static-utils"
diff --git a/meta-initramfs/recipes-devtools/klibc/klibc-utils.inc b/meta-initramfs/recipes-devtools/klibc/klibc-utils.inc
index 9014f5267f..4e9fea88d1 100644
--- a/meta-initramfs/recipes-devtools/klibc/klibc-utils.inc
+++ b/meta-initramfs/recipes-devtools/klibc/klibc-utils.inc
@@ -1,16 +1,16 @@
do_install() {
install -d ${D}${base_bindir}
install -d ${D}${base_sbindir}
- # debian packages kinit + kinit.shared but only sh.shared
if [ "${KLIBC_UTILS_VARIANT}" = "shared" ]; then
- install -m 755 usr/kinit/kinit ${D}${base_bindir}/kinit
- install -m 755 usr/kinit/kinit.shared ${D}${base_bindir}/kinit.shared
- install -m 755 usr/dash/sh.shared ${D}${base_bindir}/sh.shared
+ install -m 755 usr/kinit/shared/kinit ${D}${base_bindir}/kinit.shared
+ install -m 755 usr/dash/shared/sh ${D}${base_bindir}/sh.shared
else
- install -m 755 usr/dash/sh ${D}${base_bindir}/sh
- install -m 755 usr/kinit/kinit ${D}${base_bindir}/kinit
+ install -m 755 usr/dash/static/sh ${D}${base_bindir}/sh
+ install -m 755 usr/kinit/static/kinit ${D}${base_bindir}/kinit
+ install -m 755 usr/gzip/gzip ${D}${base_bindir}
+ ln -s gzip ${D}${base_bindir}/gunzip
+ ln -s gzip ${D}${base_bindir}/zcat
fi
- install -m 755 usr/gzip/gzip ${D}${base_bindir}
install -m 755 usr/kinit/fstype/${KLIBC_UTILS_VARIANT}/fstype ${D}${base_bindir}
install -m 755 usr/kinit/ipconfig/${KLIBC_UTILS_VARIANT}/ipconfig ${D}${base_bindir}
install -m 755 usr/kinit/nfsmount/${KLIBC_UTILS_VARIANT}/nfsmount ${D}${base_bindir}
@@ -44,15 +44,13 @@ do_install() {
install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/true ${D}${base_bindir}
install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/umount ${D}${base_bindir}
install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/uname ${D}${base_bindir}
- ln -s gzip ${D}${base_bindir}/gunzip
- ln -s gzip ${D}${base_bindir}/zcat
}
-EXTRA_KLIBC_DEPS = "${@base_conditional('KLIBC_UTILS_VARIANT', 'shared', '${THIS_LIBKLIBC}', '', d)}"
+EXTRA_KLIBC_DEPS = "${@oe.utils.conditional('KLIBC_UTILS_VARIANT', 'shared', '${THIS_LIBKLIBC}', '', d)}"
PACKAGES_DYNAMIC += "^${KLIBC_UTILS_PKGNAME}-.*"
-python populate_packages_prepend () {
+python populate_packages:prepend () {
base_bin_dir = d.expand('${base_bindir}')
do_split_packages(d, base_bin_dir, '(.*)', '${KLIBC_UTILS_PKGNAME}-%s', 'Klibc util for %s', extra_depends='${EXTRA_KLIBC_DEPS}', allow_links=True, allow_dirs=True)
base_sbin_dir = d.expand('${base_sbindir}')
diff --git a/meta-initramfs/recipes-devtools/klibc/klibc-utils_2.0.4.bb b/meta-initramfs/recipes-devtools/klibc/klibc-utils_2.0.13.bb
index 06e71cb7b8..2f26093cbe 100644
--- a/meta-initramfs/recipes-devtools/klibc/klibc-utils_2.0.4.bb
+++ b/meta-initramfs/recipes-devtools/klibc/klibc-utils_2.0.13.bb
@@ -3,7 +3,7 @@ SUMMARY = "klibc utils for initramfs"
FILESPATH =. "${FILE_DIRNAME}/klibc-${PV}:"
PACKAGES = "${PN}"
-FILES_${PN} = ""
+FILES:${PN} = ""
KLIBC_UTILS_VARIANT = "shared"
KLIBC_UTILS_PKGNAME = "klibc-utils"
diff --git a/meta-initramfs/recipes-devtools/klibc/klibc.inc b/meta-initramfs/recipes-devtools/klibc/klibc.inc
index 30294b19a8..6093e19b7c 100644
--- a/meta-initramfs/recipes-devtools/klibc/klibc.inc
+++ b/meta-initramfs/recipes-devtools/klibc/klibc.inc
@@ -2,34 +2,39 @@ DESCRIPTION = "klibc is intended to be a minimalistic libc subset for \
use with initramfs. It is deliberately written for small size, \
minimal entaglement, and portability, not speed."
SECTION = "libs"
-LICENSE = "BSD-3-Clause & GPL-2.0 & MIT & Zlib"
+LICENSE = "BSD-3-Clause & GPL-2.0-only & MIT & Zlib"
LIC_FILES_CHKSUM = "file://usr/klibc/LICENSE;md5=d75181f10e998c21eb147f6d2e43ce8b"
DEPENDS = "linux-libc-headers perl-native"
-SRCREV = "4d19974d7020488f63651244e1f9f51727c3f66c"
-SRC_URI = "git://git.kernel.org/pub/scm/libs/klibc/klibc.git \
+SRC_URI = "${KERNELORG_MIRROR}/linux/libs/klibc/2.0/klibc-${PV}.tar.xz \
${ARMPATCHES} \
- file://klibc-linux-libc-dev.patch \
- file://staging.patch \
file://klcc-consider-sysroot.patch \
- file://0001-dash-Specify-format-string-in-fmtstr.patch \
+ file://klcc-cross-accept-clang-options.patch \
file://0001-Define-in_-structs-for-non-glibc-system-libs.patch \
file://0001-include-linux-sysinfo.h-directly.patch \
file://0001-mkfifo-Implement-mkfifo.patch \
file://0001-always-use-bfd-linker.patch \
- file://0001-Kbuild.klibc-Use-print-libgcc-file-name-instead-of-p.patch \
- file://0001-Kbuild.klibc-Add-path-to-compiler-headers-via-isyste.patch \
file://0001-arm-Do-not-set-a-fallback-march-and-mtune.patch \
-"
+ file://0001-klibc_2.0.4-add-kexec_file_load-syscall.patch \
+ file://0001-klibc-add-getrandom-syscall.patch \
+ file://0001-klibc-Kbuild-Accept-EXTRA_KLIBCAFLAGS.patch \
+ file://cross-clang.patch \
+ file://0001-workaround-for-overlapping-sections-in-binary.patch \
+ "
ARMPATCHES ?= ""
-ARMPATCHES_arm = "file://klibc-config-eabi.patch \
+ARMPATCHES:arm = " \
file://armv4-fix-v4bx.patch \
"
+SRC_URI[sha256sum] = "d673a294f742d59368222ff5c38462d81098c55063799de6fb8a7ba3d4af0436"
+S = "${WORKDIR}/klibc-${PV}"
-S = "${WORKDIR}/git"
+OPTFLAGS = "${TUNE_CCARGS} -Os -fcommon"
+OPTFLAGS:append = " ${DEBUG_PREFIX_MAP}"
+OPTFLAGS:append:toolchain-clang = " -fno-builtin-bcmp"
+OPTFLAGS:append:toolchain-clang:mipsarch = " -no-integrated-as"
PARALLEL_MAKE = ""
EXTRA_OEMAKE = "'KLIBCARCH=${KLIBC_ARCH}' \
@@ -41,7 +46,7 @@ EXTRA_OEMAKE = "'KLIBCARCH=${KLIBC_ARCH}' \
'INSTALLDIR=${libdir}/klibc' \
'SHLIBDIR=${libdir}' \
'${KLIBCTHUMB}' \
- 'KLIBCOPTFLAGS=${TUNE_CCARGS} -Os' \
+ 'KLIBCOPTFLAGS=${OPTFLAGS}' \
V=1 \
"
@@ -52,23 +57,22 @@ do_configure () {
ln -sf "${STAGING_DIR_TARGET}${exec_prefix}" linux
}
-do_compile_prepend_toolchain-clang() {
+do_compile:prepend:toolchain-clang() {
sed -i -e 's#$(KLIBCROSS)gcc#$(KLIBCROSS)clang#g' ${S}/Makefile
}
INHIBIT_PACKAGE_STRIP = "1"
INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
-INSANE_SKIP_${PN} = "already-stripped"
-INSANE_SKIP_libklibc-dev = "dev-elf"
+INSANE_SKIP:${PN} = "already-stripped"
+INSANE_SKIP:libklibc-dev = "dev-elf"
KLIBC_ARCH = "${TARGET_ARCH}"
-KLIBC_ARCH_aarch64 = "arm64"
-KLIBC_ARCH_armeb = "arm"
-KLIBC_ARCH_mipsel = "mips"
-KLIBC_ARCH_x86 = "i386"
-KLIBC_ARCH_x86-64 = "x86_64"
-KLIBC_ARCH_powerpc = "ppc"
-KLIBC_ARCH_powerpc64 = "ppc64"
+KLIBC_ARCH:aarch64 = "arm64"
+KLIBC_ARCH:armeb = "arm"
+KLIBC_ARCH:mipsel = "mips"
+KLIBC_ARCH:mips64el = "mips64"
+KLIBC_ARCH:x86 = "i386"
+KLIBC_ARCH:x86-64 = "x86_64"
+KLIBC_ARCH:powerpc = "ppc"
+KLIBC_ARCH:powerpc64 = "ppc64"
+KLIBC_ARCH:powerpc64le = "ppc64"
THIS_LIBKLIBC = "libklibc (= ${PV}-${PR})"
-
-SECURITY_CFLAGS = "-fno-PIE -no-pie"
-SECURITY_LDFLAGS = "-no-pie"
diff --git a/meta-initramfs/recipes-devtools/klibc/klibc_2.0.4.bb b/meta-initramfs/recipes-devtools/klibc/klibc_2.0.13.bb
index bc80f382fe..8dda9a8cdc 100644
--- a/meta-initramfs/recipes-devtools/klibc/klibc_2.0.4.bb
+++ b/meta-initramfs/recipes-devtools/klibc/klibc_2.0.13.bb
@@ -10,13 +10,15 @@ do_install() {
install -d ${D}${libdir}
install -m 755 usr/klibc/klibc-*.so ${D}${libdir}
(cd ${D}${libdir}; ln -s klibc-*.so klibc.so)
+ rm -rf ${D}${exec_prefix}/man
+ rm -rf ${D}${libdir}/klibc/bin
}
PACKAGES = "libklibc libklibc-staticdev libklibc-dev"
-FILES_libklibc = "${libdir}/klibc-*.so"
-FILES_libklibc-staticdev = "${libdir}/klibc/lib/libc.a"
-FILES_libklibc-dev = "${libdir}/klibc.so \
+FILES:libklibc = "${libdir}/klibc-*.so"
+FILES:libklibc-staticdev = "${libdir}/klibc/lib/libc.a"
+FILES:libklibc-dev = "${libdir}/klibc.so \
${libdir}/klibc/lib/* \
${libdir}/klibc/include/* \
"
diff --git a/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.0.2/0001-libmissing.h-fix-klibc-build-when-using-glibc-toolch.patch b/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.0.2/0001-libmissing.h-fix-klibc-build-when-using-glibc-toolch.patch
new file mode 100644
index 0000000000..4ee9bd9a18
--- /dev/null
+++ b/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.0.2/0001-libmissing.h-fix-klibc-build-when-using-glibc-toolch.patch
@@ -0,0 +1,40 @@
+From e596ae99059c28fa9bb3461e03e7ecaacbf41727 Mon Sep 17 00:00:00 2001
+From: Andrea Adami <andrea.adami@gmail.com>
+Date: Wed, 23 May 2018 15:34:59 +0200
+Subject: [PATCH] libmissing.h: fix klibc build when using glibc toolchain
+
+klibc lacks execinfo.h so adda guard around it.
+Note: build with musl toolchain is ok even without this patch.
+
+Fix build error:
+
+| In file included from ../git/lib/execinfo.c:1:0:
+| ../git/include/libmissing.h:7:10: fatal error: execinfo.h:
+ No such file or directory
+
+Upstream-Status: Inappropriate [klibc specific]
+
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+---
+ include/libmissing.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/include/libmissing.h b/include/libmissing.h
+index 0196033..832c372 100644
+--- a/include/libmissing.h
++++ b/include/libmissing.h
+@@ -3,9 +3,11 @@
+
+ #include "config.h"
+
++#ifndef __KLIBC__
+ #ifdef HAVE_EXECINFO_H
+ #include <execinfo.h>
+ #endif
++#endif
+
+ #ifndef HAVE_EXECINFO_H
+ int backtrace(void **buffer, int size);
+--
+2.7.4
+
diff --git a/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.0.2/0001-make-Add-compiler-includes-in-cflags.patch b/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.0.2/0001-make-Add-compiler-includes-in-cflags.patch
new file mode 100644
index 0000000000..778d830128
--- /dev/null
+++ b/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.0.2/0001-make-Add-compiler-includes-in-cflags.patch
@@ -0,0 +1,32 @@
+From 884ec4c654f1d07a387fdc1dae5640606369f254 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 6 Feb 2021 10:56:36 -0800
+Subject: [PATCH] make: Add compiler includes in cflags
+
+Fixes
+ In file included from ../git/ubi-utils/ubiformat.c:47:
+| ../git/include/common.h:22:10: fatal error: 'stdbool.h' file not found
+| #include <stdbool.h>
+| ^~~~~~~~~~~
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ Makefile.am | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/Makefile.am b/Makefile.am
+index 5a6e77c..f0003d5 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -9,6 +9,7 @@ endif
+ if WITHOUT_LZO
+ AM_CPPFLAGS += -DWITHOUT_LZO
+ endif
++AM_CPPFLAGS += -I$(shell $(CC) -print-file-name=include)
+
+ sbin_PROGRAMS =
+ sbin_SCRIPTS =
+--
+2.30.0
+
diff --git a/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.0.2/0002-Instead-of-doing-preprocessor-magic-just-output-off_.patch b/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.0.2/0002-Instead-of-doing-preprocessor-magic-just-output-off_.patch
new file mode 100644
index 0000000000..5c6e097493
--- /dev/null
+++ b/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.0.2/0002-Instead-of-doing-preprocessor-magic-just-output-off_.patch
@@ -0,0 +1,326 @@
+From 01c98d5d5d044d9a125abcdbb2f3d771966365b0 Mon Sep 17 00:00:00 2001
+From: mirabilos <m@mirbsd.org>
+Date: Thu, 1 Feb 2018 15:34:07 +0100
+Subject: [PATCH] Instead of doing preprocessor magic, just output off_t as
+ long long
+
+Fix warnings abot PRIdoff_t in libmtd.c, in mtd_read (and mtd_write):
+
+In file included from ../git/lib/libmtd.c:40:0:
+../git/lib/libmtd.c: In function 'mtd_read':
+../git/include/common.h:110:18: warning: format '%ld' expects argument of
+ type 'long int', but argument 5 has type 'off_t {aka long long int}'
+ [-Wformat=]
+
+../git/include/common.h:120:2: note: in expansion of macro 'errmsg'
+ errmsg(fmt, ##__VA_ARGS__); \
+ ^~~~~~
+../git/lib/libmtd.c:1082:10: note: in expansion of macro 'sys_errmsg'
+ return sys_errmsg("cannot seek mtd%d to offset %"PRIdoff_t,
+ ^~~~~~~~~~
+
+/usr/lib/klibc/include/inttypes.h:28:17: note: format string is defined here
+ #define PRId32 "d"
+
+Upstream-Status: Submitted
+
+Signed-off-by: Thorsten Glaser <tg@mirbsd.org>
+---
+ include/common.h | 18 ------------------
+ jffsX-utils/mkfs.jffs2.c | 20 ++++++++++----------
+ lib/libmtd.c | 8 ++++----
+ misc-utils/flash_erase.c | 6 +++---
+ misc-utils/flash_otp_write.c | 2 +-
+ misc-utils/ftl_check.c | 2 +-
+ misc-utils/mtd_debug.c | 4 ++--
+ misc-utils/serve_image.c | 4 ++--
+ tests/fs-tests/integrity/integck.c | 4 ++--
+ tests/mtd-tests/nandpagetest.c | 4 ++--
+ tests/ubi-tests/integ.c | 6 +++---
+ ubifs-utils/mkfs.ubifs/mkfs.ubifs.c | 6 +++---
+ 12 files changed, 33 insertions(+), 51 deletions(-)
+
+diff --git a/include/common.h b/include/common.h
+index f8f72ea..642c212 100644
+--- a/include/common.h
++++ b/include/common.h
+@@ -70,24 +70,6 @@ extern "C" {
+ #define O_CLOEXEC 0
+ #endif
+
+-/* define a print format specifier for off_t */
+-#if (SIZEOF_OFF_T >= 8)
+-#define PRIxoff_t PRIx64
+-#define PRIdoff_t PRId64
+-#else
+-#define PRIxoff_t "l"PRIx32
+-#define PRIdoff_t "l"PRId32
+-#endif
+-
+-/* define a print format specifier for loff_t */
+-#if (SIZEOF_LOFF_T >= 8)
+-#define PRIxloff_t PRIx64
+-#define PRIdloff_t PRId64
+-#else
+-#define PRIxloff_t "l"PRIx32
+-#define PRIdloff_t "l"PRId32
+-#endif
+-
+ /* Verbose messages */
+ #define bareverbose(verbose, fmt, ...) do { \
+ if (verbose) \
+diff --git a/jffsX-utils/mkfs.jffs2.c b/jffsX-utils/mkfs.jffs2.c
+index 9aa6c39..0661786 100644
+--- a/jffsX-utils/mkfs.jffs2.c
++++ b/jffsX-utils/mkfs.jffs2.c
+@@ -1237,8 +1237,8 @@ static void recursive_populate_directory(struct filesystem_entry *dir)
+ } else switch (e->sb.st_mode & S_IFMT) {
+ case S_IFDIR:
+ if (verbose) {
+- printf("\td %04o %9" PRIdoff_t " %5d:%-3d %s\n",
+- e->sb.st_mode & ~S_IFMT, e->sb.st_size,
++ printf("\td %04o %9lld %5d:%-3d %s\n",
++ e->sb.st_mode & ~S_IFMT, (long long)e->sb.st_size,
+ (int) (e->sb.st_uid), (int) (e->sb.st_gid),
+ e->name);
+ }
+@@ -1247,8 +1247,8 @@ static void recursive_populate_directory(struct filesystem_entry *dir)
+ break;
+ case S_IFSOCK:
+ if (verbose) {
+- printf("\ts %04o %9" PRIdoff_t " %5d:%-3d %s\n",
+- e->sb.st_mode & ~S_IFMT, e->sb.st_size,
++ printf("\ts %04o %9lld %5d:%-3d %s\n",
++ e->sb.st_mode & ~S_IFMT, (long long)e->sb.st_size,
+ (int) e->sb.st_uid, (int) e->sb.st_gid, e->name);
+ }
+ write_pipe(e);
+@@ -1256,8 +1256,8 @@ static void recursive_populate_directory(struct filesystem_entry *dir)
+ break;
+ case S_IFIFO:
+ if (verbose) {
+- printf("\tp %04o %9" PRIdoff_t " %5d:%-3d %s\n",
+- e->sb.st_mode & ~S_IFMT, e->sb.st_size,
++ printf("\tp %04o %9lld %5d:%-3d %s\n",
++ e->sb.st_mode & ~S_IFMT, (long long)e->sb.st_size,
+ (int) e->sb.st_uid, (int) e->sb.st_gid, e->name);
+ }
+ write_pipe(e);
+@@ -1285,8 +1285,8 @@ static void recursive_populate_directory(struct filesystem_entry *dir)
+ break;
+ case S_IFLNK:
+ if (verbose) {
+- printf("\tl %04o %9" PRIdoff_t " %5d:%-3d %s -> %s\n",
+- e->sb.st_mode & ~S_IFMT, e->sb.st_size,
++ printf("\tl %04o %9lld %5d:%-3d %s -> %s\n",
++ e->sb.st_mode & ~S_IFMT, (long long)e->sb.st_size,
+ (int) e->sb.st_uid, (int) e->sb.st_gid, e->name,
+ e->link);
+ }
+@@ -1297,8 +1297,8 @@ static void recursive_populate_directory(struct filesystem_entry *dir)
+ wrote = write_regular_file(e);
+ write_xattr_entry(e);
+ if (verbose) {
+- printf("\tf %04o %9" PRIdoff_t " (%9u) %5d:%-3d %s\n",
+- e->sb.st_mode & ~S_IFMT, e->sb.st_size, wrote,
++ printf("\tf %04o %9lld (%9u) %5d:%-3d %s\n",
++ e->sb.st_mode & ~S_IFMT, (long long)e->sb.st_size, wrote,
+ (int) e->sb.st_uid, (int) e->sb.st_gid, e->name);
+ }
+ break;
+diff --git a/lib/libmtd.c b/lib/libmtd.c
+index 86c89ae..f375381 100644
+--- a/lib/libmtd.c
++++ b/lib/libmtd.c
+@@ -1079,8 +1079,8 @@ int mtd_read(const struct mtd_dev_info *mtd, int fd, int eb, int offs,
+ /* Seek to the beginning of the eraseblock */
+ seek = (off_t)eb * mtd->eb_size + offs;
+ if (lseek(fd, seek, SEEK_SET) != seek)
+- return sys_errmsg("cannot seek mtd%d to offset %"PRIdoff_t,
+- mtd->mtd_num, seek);
++ return sys_errmsg("cannot seek mtd%d to offset %lld",
++ mtd->mtd_num, (long long)seek);
+
+ while (rd < len) {
+ ret = read(fd, buf + rd, len - rd);
+@@ -1188,8 +1188,8 @@ int mtd_write(libmtd_t desc, const struct mtd_dev_info *mtd, int fd, int eb,
+ if (data) {
+ /* Seek to the beginning of the eraseblock */
+ if (lseek(fd, seek, SEEK_SET) != seek)
+- return sys_errmsg("cannot seek mtd%d to offset %"PRIdoff_t,
+- mtd->mtd_num, seek);
++ return sys_errmsg("cannot seek mtd%d to offset %lld",
++ mtd->mtd_num, (long long)seek);
+ ret = write(fd, data, len);
+ if (ret != len)
+ return sys_errmsg("cannot write %d bytes to mtd%d "
+diff --git a/misc-utils/flash_erase.c b/misc-utils/flash_erase.c
+index 0c9449f..ec4b2e1 100644
+--- a/misc-utils/flash_erase.c
++++ b/misc-utils/flash_erase.c
+@@ -53,8 +53,8 @@ int target_endian = __BYTE_ORDER;
+ static void show_progress(struct mtd_dev_info *mtd, off_t start, int eb,
+ int eb_start, int eb_cnt)
+ {
+- bareverbose(!quiet, "\rErasing %d Kibyte @ %"PRIxoff_t" -- %2i %% complete ",
+- mtd->eb_size / 1024, start, ((eb - eb_start) * 100) / eb_cnt);
++ bareverbose(!quiet, "\rErasing %d Kibyte @ %llx -- %2i %% complete ",
++ mtd->eb_size / 1024, (unsigned long long)start, ((eb - eb_start) * 100) / eb_cnt);
+ fflush(stdout);
+ }
+
+@@ -210,7 +210,7 @@ int main(int argc, char *argv[])
+ if (!noskipbad) {
+ int ret = mtd_is_bad(&mtd, fd, eb);
+ if (ret > 0) {
+- verbose(!quiet, "Skipping bad block at %08"PRIxoff_t, offset);
++ verbose(!quiet, "Skipping bad block at %08llx", (unsigned long long)offset);
+ continue;
+ } else if (ret < 0) {
+ if (errno == EOPNOTSUPP) {
+diff --git a/misc-utils/flash_otp_write.c b/misc-utils/flash_otp_write.c
+index b02d0b0..04c96c6 100644
+--- a/misc-utils/flash_otp_write.c
++++ b/misc-utils/flash_otp_write.c
+@@ -76,7 +76,7 @@ int main(int argc,char *argv[])
+ return errno;
+ }
+
+- printf("Writing OTP user data on %s at offset 0x%"PRIxoff_t"\n", argv[2], offset);
++ printf("Writing OTP user data on %s at offset 0x%llx\n", argv[2], (unsigned long long)offset);
+
+ if (mtd_type_is_nand_user(&mtdInfo))
+ len = mtdInfo.writesize;
+diff --git a/misc-utils/ftl_check.c b/misc-utils/ftl_check.c
+index a853cf4..e854922 100644
+--- a/misc-utils/ftl_check.c
++++ b/misc-utils/ftl_check.c
+@@ -131,7 +131,7 @@ static void check_partition(int fd)
+ perror("read failed");
+ break;
+ }
+- printf("\nErase unit %"PRIdoff_t":\n", i);
++ printf("\nErase unit %lld:\n", (long long)i);
+ if ((hdr2.FormattedSize != hdr.FormattedSize) ||
+ (hdr2.NumEraseUnits != hdr.NumEraseUnits) ||
+ (hdr2.SerialNumber != hdr.SerialNumber))
+diff --git a/misc-utils/mtd_debug.c b/misc-utils/mtd_debug.c
+index ac37e23..d65ad36 100644
+--- a/misc-utils/mtd_debug.c
++++ b/misc-utils/mtd_debug.c
+@@ -160,7 +160,7 @@ retry:
+ if (buf != NULL)
+ free(buf);
+ close(outfd);
+- printf("Copied %zu bytes from address 0x%.8"PRIxoff_t" in flash to %s\n", len, offset, filename);
++ printf("Copied %zu bytes from address 0x%.8llx in flash to %s\n", len, (unsigned long long)offset, filename);
+ return 0;
+
+ err2:
+@@ -225,7 +225,7 @@ retry:
+ if (buf != NULL)
+ free(buf);
+ fclose(fp);
+- printf("Copied %d bytes from %s to address 0x%.8"PRIxoff_t" in flash\n", len, filename, offset);
++ printf("Copied %d bytes from %s to address 0x%.8llx in flash\n", len, filename, (unsigned long long)offset);
+ return 0;
+ }
+
+diff --git a/misc-utils/serve_image.c b/misc-utils/serve_image.c
+index f2475d6..6c8c8fb 100644
+--- a/misc-utils/serve_image.c
++++ b/misc-utils/serve_image.c
+@@ -129,8 +129,8 @@ int main(int argc, char **argv)
+ }
+
+ if (st.st_size % erasesize) {
+- fprintf(stderr, "Image size %" PRIdoff_t " bytes is not a multiple of erasesize %d bytes\n",
+- st.st_size, erasesize);
++ fprintf(stderr, "Image size %lld bytes is not a multiple of erasesize %d bytes\n",
++ (long long)st.st_size, erasesize);
+ exit(1);
+ }
+ image = mmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, rfd, 0);
+diff --git a/tests/fs-tests/integrity/integck.c b/tests/fs-tests/integrity/integck.c
+index 84753d6..0a7f142 100644
+--- a/tests/fs-tests/integrity/integck.c
++++ b/tests/fs-tests/integrity/integck.c
+@@ -897,8 +897,8 @@ static ssize_t file_write_data(struct file_info *file, int fd, off_t offset,
+ remains = size;
+ actual = 0;
+ written = IO_BUFFER_SIZE;
+- v("write %zd bytes, offset %"PRIdoff_t", file %s",
+- size, offset, get_file_name(file));
++ v("write %zd bytes, offset %lld, file %s",
++ size, (long long)offset, get_file_name(file));
+ while (remains) {
+ /* Fill up buffer with random data */
+ if (written < IO_BUFFER_SIZE) {
+diff --git a/tests/mtd-tests/nandpagetest.c b/tests/mtd-tests/nandpagetest.c
+index c6812df..465e548 100644
+--- a/tests/mtd-tests/nandpagetest.c
++++ b/tests/mtd-tests/nandpagetest.c
+@@ -232,8 +232,8 @@ static int verify_eraseblock(int ebnum)
+ return err;
+
+ if (lseek(fd, addr, SEEK_SET) != addr) {
+- fprintf(stderr, "cannot seek mtd%d to offset %"PRIdloff_t,
+- mtd.mtd_num, addr);
++ fprintf(stderr, "cannot seek mtd%d to offset %lld",
++ mtd.mtd_num, (long long)addr);
+ return -1;
+ }
+
+diff --git a/tests/ubi-tests/integ.c b/tests/ubi-tests/integ.c
+index 26c2ce5..1cd0649 100644
+--- a/tests/ubi-tests/integ.c
++++ b/tests/ubi-tests/integ.c
+@@ -243,7 +243,7 @@ static void check_erase_block(struct erase_block_info *erase_block, int fd)
+ while (size)
+ if (read_buffer[--size] != 0xff) {
+ fprintf(stderr, "block no. = %d\n" , erase_block->block_number);
+- fprintf(stderr, "offset = %"PRIdoff_t"\n" , gap_start);
++ fprintf(stderr, "offset = %lld\n" , (long long)gap_start);
+ fprintf(stderr, "size = %ld\n" , (long) bytes_read);
+ error_exit("verify 0xff failed");
+ }
+@@ -254,7 +254,7 @@ static void check_erase_block(struct erase_block_info *erase_block, int fd)
+ errno = 0;
+ bytes_read = read(fd, read_buffer, w->size);
+ if (bytes_read != w->size) {
+- fprintf(stderr, "offset = %"PRIdoff_t"\n" , w->offset);
++ fprintf(stderr, "offset = %lld\n" , (long long)w->offset);
+ fprintf(stderr, "size = %ld\n" , (long) w->size);
+ fprintf(stderr, "bytes_read = %ld\n" , (long) bytes_read);
+ error_exit("read failed");
+@@ -279,7 +279,7 @@ static void check_erase_block(struct erase_block_info *erase_block, int fd)
+ while (size)
+ if (read_buffer[--size] != 0xff) {
+ fprintf(stderr, "block no. = %d\n" , erase_block->block_number);
+- fprintf(stderr, "offset = %"PRIdoff_t"\n" , gap_start);
++ fprintf(stderr, "offset = %lld\n" , (long long)gap_start);
+ fprintf(stderr, "size = %ld\n" , (long) bytes_read);
+ error_exit("verify 0xff failed!");
+ }
+diff --git a/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c b/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c
+index c916f48..f0237ab 100644
+--- a/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c
++++ b/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c
+@@ -772,11 +772,11 @@ int write_leb(int lnum, int len, void *buf)
+ return sys_err_msg("ubi_leb_change_start failed");
+
+ if (lseek(out_fd, pos, SEEK_SET) != pos)
+- return sys_err_msg("lseek failed seeking %"PRIdoff_t, pos);
++ return sys_err_msg("lseek failed seeking %lld", (long long)pos);
+
+ if (write(out_fd, buf, c->leb_size) != c->leb_size)
+- return sys_err_msg("write failed writing %d bytes at pos %"PRIdoff_t,
+- c->leb_size, pos);
++ return sys_err_msg("write failed writing %d bytes at pos %lld",
++ c->leb_size, (long long)pos);
+
+ return 0;
+ }
+--
+2.7.4
+
diff --git a/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.0.2/0003-Makefile.am-only-build-ubi-utils.patch b/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.0.2/0003-Makefile.am-only-build-ubi-utils.patch
new file mode 100644
index 0000000000..38ab7a91cb
--- /dev/null
+++ b/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.0.2/0003-Makefile.am-only-build-ubi-utils.patch
@@ -0,0 +1,34 @@
+From 139d93bc405272a3261d57be26da842e737fe4d0 Mon Sep 17 00:00:00 2001
+From: Andrea Adami <andrea.adami@gmail.com>
+Date: Sun, 28 Jan 2018 23:10:34 +0100
+Subject: [PATCH] Makefile.am: only build ubi-utils
+
+We only target the ubi-utils, static, small.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+---
+ Makefile.am | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 5a6e77c..98715dd 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -34,9 +34,9 @@ EXTRA_DIST += $(GLOBAL_HEADER) $(GLOBAL_EXTRA)
+
+ include lib/Makemodule.am
+ include ubi-utils/Makemodule.am
+-include misc-utils/Makemodule.am
+-include nand-utils/Makemodule.am
+-include nor-utils/Makemodule.am
++#include misc-utils/Makemodule.am
++#include nand-utils/Makemodule.am
++#include nor-utils/Makemodule.am
+
+ if BUILD_UBIFS
+ include ubifs-utils/Makemodule.am
+--
+2.7.4
+
diff --git a/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.0.2/0004-mtd-utils-common.h-no-features.h-for-klibc-builds.patch b/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.0.2/0004-mtd-utils-common.h-no-features.h-for-klibc-builds.patch
new file mode 100644
index 0000000000..2844a5020c
--- /dev/null
+++ b/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.0.2/0004-mtd-utils-common.h-no-features.h-for-klibc-builds.patch
@@ -0,0 +1,38 @@
+From ae1cf6d0eb1833e46549328a4473222c259723d7 Mon Sep 17 00:00:00 2001
+From: Andrea Adami <andrea.adami@gmail.com>
+Date: Thu, 1 Feb 2018 00:25:00 +0100
+Subject: [PATCH] mtd-utils: common.h: no features.h for klibc builds
+
+Add guard around features.h to fix missing include (here first error):
+
+ ../git/include/common.h:29:10:
+ fatal error: features.h: No such file or directory
+ #include <features.h>
+ ^~~~~~~~~~~~
+ compilation terminated
+
+Upstream-Status: Submitted
+
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+---
+ include/common.h | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/include/common.h b/include/common.h
+index 642c212..f7c71fe 100644
+--- a/include/common.h
++++ b/include/common.h
+@@ -26,7 +26,10 @@
+ #include <string.h>
+ #include <fcntl.h>
+ #include <errno.h>
++#if defined(__KLIBC__)
++#else
+ #include <features.h>
++#endif
+ #include <inttypes.h>
+ #include <unistd.h>
+ #include <sys/sysmacros.h>
+--
+2.7.4
+
diff --git a/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.0.2/0005-common.h-replace-getline-with-fgets.patch b/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.0.2/0005-common.h-replace-getline-with-fgets.patch
new file mode 100644
index 0000000000..a556ed3d87
--- /dev/null
+++ b/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.0.2/0005-common.h-replace-getline-with-fgets.patch
@@ -0,0 +1,56 @@
+From 2137eb1a6cd0326510bd3b9faf8037d9bf34ca3d Mon Sep 17 00:00:00 2001
+From: Andrea Adami <andrea.adami@gmail.com>
+Date: Wed, 23 May 2018 15:52:34 +0200
+Subject: [PATCH] common.h: replace getline() with fgets
+
+There is an unofficial upstream patch adding a simple getline()
+to libmissing.h. Unfortunately the patch creates issues if the
+toolchain is using glibc (autotools cache?) so for the moment
+keep the old hack and wait for commits upstream.
+
+Fix:
+
+| ubi-utils/ubiformat.o: In function `prompt.constprop.4':
+| ubiformat.c:(.text+0x70): undefined reference to `getline'
+
+Upstream-Status: Inappropriate [klibc specific]
+
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+---
+ include/common.h | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+diff --git a/include/common.h b/include/common.h
+index a1d59d0..96b0bdb 100644
+--- a/include/common.h
++++ b/include/common.h
+@@ -126,15 +126,26 @@ extern "C" {
+ */
+ static inline bool prompt(const char *msg, bool def)
+ {
++
++#ifndef __KLIBC__
+ char *line = NULL;
+ size_t len;
++#else
++ char *line;
++ const int sizeof_line = 2;
++ line = malloc(sizeof_line);
++#endif
+ bool ret = def;
+
+ do {
+ normsg_cont("%s (%c/%c) ", msg, def ? 'Y' : 'y', def ? 'n' : 'N');
+ fflush(stdout);
+
++#ifndef __KLIBC__
+ while (getline(&line, &len, stdin) == -1) {
++#else
++ while (fgets(line, sizeof_line, stdin) == NULL) {
++#endif
+ printf("failed to read prompt; assuming '%s'\n",
+ def ? "yes" : "no");
+ break;
+--
+2.7.4
+
diff --git a/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0001-Makefile-only-build-ubi-utils.patch b/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0001-Makefile-only-build-ubi-utils.patch
deleted file mode 100644
index 6e1b9ff100..0000000000
--- a/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0001-Makefile-only-build-ubi-utils.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From c4e6bd9378645d577e9d9f85da85f1438afe7c50 Mon Sep 17 00:00:00 2001
-From: Andrea Adami <andrea.adami@gmail.com>
-Date: Sun, 29 Jun 2014 00:32:29 +0200
-Subject: [PATCH 1/6] Makefile: build ubi-utils only
-
-We build all the static ubi-utils but actually only ubiattach is needed in
-a minimalistic initramfs for the mount of ubi volumes.
-
-More fixes are needed in order to build the full mtd-utils.
-The first issue is:
-
-| mkfs.jffs2.c:64:20: fatal error: libgen.h: No such file or directory
-| #include <libgen.h>
-
-Removing the include then the second error is:
-
-| mkfs.jffs2.c:1570:22: error: '_SC_PAGESIZE' undeclared
-| (first use in this function)
-| page_size = sysconf(_SC_PAGESIZE);
-
-Upstream-Status: Inappropriate [embedded specific]
-
-Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
----
- Makefile | 24 ++----------------------
- 1 file changed, 2 insertions(+), 22 deletions(-)
-
-Index: git/Makefile
-===================================================================
---- git.orig/Makefile
-+++ git/Makefile
-@@ -16,28 +16,11 @@ endif
-
- TESTS = tests
-
--MTD_BINS = \
-- ftl_format flash_erase nanddump doc_loadbios \
-- ftl_check mkfs.jffs2 flash_lock flash_unlock \
-- flash_otp_info flash_otp_dump flash_otp_lock flash_otp_write \
-- mtd_debug flashcp nandwrite nandtest mtdpart \
-- jffs2dump \
-- nftldump nftl_format docfdisk \
-- rfddump rfdformat \
-- serve_image recv_image \
-- sumtool jffs2reader
- UBI_BINS = \
- ubiupdatevol ubimkvol ubirmvol ubicrc32 ubinfo ubiattach \
- ubidetach ubinize ubiformat ubirename mtdinfo ubirsvol ubiblock
-
--BINS = $(MTD_BINS)
--BINS += mkfs.ubifs/mkfs.ubifs
--BINS += $(addprefix ubi-utils/,$(UBI_BINS))
--SCRIPTS = flash_eraseall
--
--TARGETS = $(BINS)
--TARGETS += lib/libmtd.a
--TARGETS += ubi-utils/libubi.a
-+BINS = $(addprefix ubi-utils/,$(UBI_BINS))
-
- OBJDEPS = $(BUILDDIR)/include/version.h
-
-@@ -61,12 +44,9 @@ endif
- rm -f $(BUILDDIR)/include/version.h
- $(MAKE) -C $(TESTS) clean
-
--install:: $(addprefix $(BUILDDIR)/,${BINS}) ${SCRIPTS}
-+install:: $(addprefix $(BUILDDIR)/,${BINS})
- mkdir -p ${DESTDIR}/${SBINDIR}
- install -m 0755 $^ ${DESTDIR}/${SBINDIR}/
-- mkdir -p ${DESTDIR}/${MANDIR}/man1
-- install -m 0644 mkfs.jffs2.1 ${DESTDIR}/${MANDIR}/man1/
-- -gzip -9f ${DESTDIR}/${MANDIR}/man1/*.1
-
- tests::
- $(MAKE) -C $(TESTS)
-@@ -91,8 +71,6 @@ LDLIBS_mkfs.jffs2 = -lz $(LZOLDLIBS)
- LDFLAGS_jffs2reader = $(ZLIBLDFLAGS) $(LZOLDFLAGS)
- LDLIBS_jffs2reader = -lz $(LZOLDLIBS)
-
--$(foreach v,$(MTD_BINS),$(eval $(call mkdep,,$(v))))
--
- #
- # Common libmtd
- #
diff --git a/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0002-common.mk-for-klibc-CC-is-klcc.patch b/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0002-common.mk-for-klibc-CC-is-klcc.patch
deleted file mode 100644
index f46824b5cd..0000000000
--- a/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0002-common.mk-for-klibc-CC-is-klcc.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From f3609c7c0450b4c31e1d4603fcf2cfb1ba46f994 Mon Sep 17 00:00:00 2001
-From: Andrea Adami <andrea.adami@gmail.com>
-Date: Sun, 29 Jun 2014 00:37:28 +0200
-Subject: [PATCH 2/6] common.mk: for klibc $(CC) is klcc
-
-Do not hardcode: assign the value to the variable if it is not already defined.
-
-Upstream-Status: Pending
-
-Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
----
- common.mk | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/common.mk b/common.mk
-index ba87377..59c56df 100644
---- a/common.mk
-+++ b/common.mk
-@@ -1,4 +1,4 @@
--CC := $(CROSS)gcc
-+CC ?= $(CROSS)gcc
- AR := $(CROSS)ar
- RANLIB := $(CROSS)ranlib
-
---
-1.9.1
-
diff --git a/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0003-libubi.c-add-klibc-specific-fixes.patch b/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0003-libubi.c-add-klibc-specific-fixes.patch
deleted file mode 100644
index 962b3685f3..0000000000
--- a/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0003-libubi.c-add-klibc-specific-fixes.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-From 72a39bb3290a79e76b0dbf59eef83ea2d9b577a1 Mon Sep 17 00:00:00 2001
-From: Andrea Adami <andrea.adami@gmail.com>
-Date: Sun, 29 Jun 2014 00:40:15 +0200
-Subject: [PATCH 3/6] libubi.c: add klibc specific fixes for ioctl
-
-First issue is that ioctl() in klibc doesn't expect a constant as arg3.
-Second issue is that arg3 in klibc ioctl() implementation is not optional.
-
-Fixes:
-
-| ubi-utils/libubi.c: In function 'do_attach':
-| ubi-utils/libubi.c:698:8: warning: passing argument 3 of 'ioctl' discards
-| 'const' qualifier from pointer target type
-| ret = ioctl(fd, UBI_IOCATT, r);
-| ^
-| In file included from ubi-utils/libubi.c:32:0:
-| .../lib/klibc/include/sys/ioctl.h:15:14: note: expected 'void *' but argument
-| is of type 'const struct ubi_attach_req *'
-| __extern int ioctl(int, int, void *);
-| ^
-
-| ubi-utils/libubi.c: In function 'ubi_vol_block_create':
-| ubi-utils/libubi.c:1118:9: error: too few arguments to function 'ioctl'
-| return ioctl(fd, UBI_IOCVOLCRBLK);
-| ^
-| In file included from ubi-utils/libubi.c:32:0:
-| .../lib/klibc/include/sys/ioctl.h:15:14: note: declared here
-| __extern int ioctl(int, int, void *);
-| ^
-| ubi-utils/libubi.c: In function 'ubi_vol_block_remove':
-| ubi-utils/libubi.c:1123:9: error: too few arguments to function 'ioctl'
-| return ioctl(fd, UBI_IOCVOLRMBLK);
-| ^
-| In file included from ubi-utils/libubi.c:32:0:
-| .../usr/lib/klibc/include/sys/ioctl.h:15:14: note: declared here
-| __extern int ioctl(int, int, void *);
-| ^
-
-Upstream-Status: Inappropriate [klibc specific]
-
-Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
----
- ubi-utils/libubi.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/ubi-utils/libubi.c b/ubi-utils/libubi.c
-index 1e08b7d..491e525 100644
---- a/ubi-utils/libubi.c
-+++ b/ubi-utils/libubi.c
-@@ -687,7 +687,7 @@ void libubi_close(libubi_t desc)
- * success and %-1 in case of failure. @r->ubi_num contains newly created UBI
- * device number.
- */
--static int do_attach(const char *node, const struct ubi_attach_req *r)
-+static int do_attach(const char *node, struct ubi_attach_req *r)
- {
- int fd, ret;
-
-@@ -1115,12 +1115,12 @@ int ubi_rsvol(libubi_t desc, const char *node, int vol_id, long long bytes)
-
- int ubi_vol_block_create(int fd)
- {
-- return ioctl(fd, UBI_IOCVOLCRBLK);
-+ return ioctl(fd, UBI_IOCVOLCRBLK, NULL);
- }
-
- int ubi_vol_block_remove(int fd)
- {
-- return ioctl(fd, UBI_IOCVOLRMBLK);
-+ return ioctl(fd, UBI_IOCVOLRMBLK, NULL);
- }
-
- int ubi_update_start(libubi_t desc, int fd, long long bytes)
---
-1.9.1
-
diff --git a/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0004-common.h-klibc-fixes-1.patch b/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0004-common.h-klibc-fixes-1.patch
deleted file mode 100644
index fee1cbcf90..0000000000
--- a/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0004-common.h-klibc-fixes-1.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From e56767b9caa02e7c41803499c77dc939d5a7f64a Mon Sep 17 00:00:00 2001
-From: Thorsten Glaser <tg@mirbsd.org>
-Date: Fri, 20 Jun 2014 10:56:27 +0000
-Subject: [PATCH 4/6] Restore compatibility to dietlibc, klibc, musl libc after commit 4f1b108
-
-Each C library has their own way to define off_t, and the <features.h>
-header is nonstandard and specific to the GNU libc and those that clone
-it (uClibc). Fefe’s dietlibc uses different flags, and klibc always uses
-a 64-bit off_t (like the BSDs); musl libc cannot be recognised using cpp
-instructions, so we assume 64 bit there (and on unknown C libraries) and
-leave it to the user to submit a follow-up fix if we guess wrong. I also
-added a static assertion to verify the 64 bit guess is correct.
-
-It would be really better using a configure script for this instead.
-
-Fixes:
-| CC lib/libmtd.o
-| In file included from ubi-utils/ubiutils-common.c:35:0:
-| ./include/common.h:29:22: fatal error: features.h: No such file or directory
-| #include <features.h>
-| ^
-| compilation terminated.
-
-Upstream-Status: Pending
-
-Signed-off-by: Thorsten Glaser <tg@mirbsd.org>
-Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
----
- include/common.h | 24 ++++++++++++++++++++++++
- 1 file changed, 24 insertions(+)
-
-diff --git a/include/common.h b/include/common.h
-index 6895e5c..77f3f7d 100644
---- a/include/common.h
-+++ b/include/common.h
-@@ -26,7 +26,9 @@
- #include <string.h>
- #include <fcntl.h>
- #include <errno.h>
-+#if defined(__GLIBC__) || defined(__UCLIBC__)
- #include <features.h>
-+#endif
- #include <inttypes.h>
- #include "version.h"
-
-@@ -52,6 +54,21 @@ extern "C" {
- #endif
-
- /* define a print format specifier for off_t */
-+#if defined(__KLIBC__)
-+/* always 64 bit on klibc */
-+#define PRIxoff_t PRIx64
-+#define PRIdoff_t PRId64
-+#elif defined(__dietlibc__)
-+/* depends on compiler flags on dietlibc */
-+#if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
-+#define PRIxoff_t PRIx64
-+#define PRIdoff_t PRId64
-+#else
-+#define PRIxoff_t "l"PRIx32
-+#define PRIdoff_t "l"PRId32
-+#endif
-+#elif defined(__GLIBC__) || defined(__UCLIBC__)
-+/* depends on compiler flags on glibc and uClibc */
- #ifdef __USE_FILE_OFFSET64
- #define PRIxoff_t PRIx64
- #define PRIdoff_t PRId64
-@@ -59,6 +76,13 @@ extern "C" {
- #define PRIxoff_t "l"PRIx32
- #define PRIdoff_t "l"PRId32
- #endif
-+#else
-+/* unknown libc or musl */
-+#define PRIxoff_t PRIx64
-+#define PRIdoff_t PRId64
-+/* verify our guess of 64 bit is correct */
-+static char __PRIxoff_t_static_assert[sizeof(off_t) == 8 ? 1 : -1];
-+#endif
-
- /* Verbose messages */
- #define bareverbose(verbose, fmt, ...) do { \
---
-1.9.1
-
diff --git a/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0005-common.h-klibc-fixes-2.patch b/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0005-common.h-klibc-fixes-2.patch
deleted file mode 100644
index 6b09c14d6c..0000000000
--- a/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0005-common.h-klibc-fixes-2.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 8318852ef4f768bed31072aa7b57e11adc1f639c Mon Sep 17 00:00:00 2001
-From: Andrea Adami <andrea.adami@gmail.com>
-Date: Sun, 29 Jun 2014 00:44:03 +0200
-Subject: [PATCH 5/6] common.h: more workarounds for klibc compatibility
-
-Patch is addressing two issues:
-* First, Klibc doesn't have rpmatch().
-* Second, Klibc lacks getline()
-
-Fixes:
-| LD ubi-utils/ubiformat
-| .../git/ubi-utils/ubiformat.o: In function `prompt':
-| .../git/./include/common.h:157: undefined reference to `getline'
-| .../git/./include/common.h:164: undefined reference to `rpmatch'
-| .../git/./include/common.h:157: undefined reference to `getline'
-| .../git/./include/common.h:164: undefined reference to `rpmatch'
-
-Upstream-Status: Pending
-
-Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
----
- include/common.h | 10 ++++++----
- 1 file changed, 6 insertions(+), 4 deletions(-)
-
-Index: git/include/common.h
-===================================================================
---- git.orig/include/common.h
-+++ git/include/common.h
-@@ -161,15 +161,17 @@ static inline int __rpmatch(const char *
- */
- static inline bool prompt(const char *msg, bool def)
- {
-- char *line = NULL;
-- size_t len;
-+ char *line;
- bool ret = def;
-
-+ const int sizeof_line = 2;
-+ line = malloc(sizeof_line);
-+
- do {
- normsg_cont("%s (%c/%c) ", msg, def ? 'Y' : 'y', def ? 'n' : 'N');
- fflush(stdout);
-
-- while (getline(&line, &len, stdin) == -1) {
-+ while (fgets(line, sizeof_line, stdin) == NULL) {
- printf("failed to read prompt; assuming '%s'\n",
- def ? "yes" : "no");
- break;
diff --git a/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0006-libiniparser-remove-unused-function-needing-float.patch b/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0006-libiniparser-remove-unused-function-needing-float.patch
deleted file mode 100644
index 043a89d67e..0000000000
--- a/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0006-libiniparser-remove-unused-function-needing-float.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-From 72a04a9b9ed33c889d2e2b86f306c5be9f6cde35 Mon Sep 17 00:00:00 2001
-From: Andrea Adami <andrea.adami@gmail.com>
-Date: Sun, 29 Jun 2014 00:44:57 +0200
-Subject: [PATCH 6/6] libiniparser: remove unused function needing float
-
-Fixes:
-| LD ubi-utils/ubiformat
-| .../git/ubi-utils/libiniparser.a(libiniparser.o): In function
-| ` LD ubi-utils/ubirename
-| iniparser_getdouble':
-| .../git/ubi-utils/libiniparser.c:336: undefined reference to `atof'
-
-Grep doesn't reveal any occurrence of iniparser_getdouble(), using atof() so
-remove it: floating-point is not supported in klibc
-
-Upstream-Status: Pending
-
-Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
----
- ubi-utils/include/libiniparser.h | 15 ---------------
- ubi-utils/libiniparser.c | 22 ----------------------
- 2 files changed, 37 deletions(-)
-
-diff --git a/ubi-utils/include/libiniparser.h b/ubi-utils/include/libiniparser.h
-index be3c667..abd77aa 100644
---- a/ubi-utils/include/libiniparser.h
-+++ b/ubi-utils/include/libiniparser.h
-@@ -158,21 +158,6 @@ int iniparser_getint(dictionary * d, const char * key, int notfound);
-
- /*-------------------------------------------------------------------------*/
- /**
-- @brief Get the string associated to a key, convert to a double
-- @param d Dictionary to search
-- @param key Key string to look for
-- @param notfound Value to return in case of error
-- @return double
--
-- This function queries a dictionary for a key. A key as read from an
-- ini file is given as "section:key". If the key cannot be found,
-- the notfound value is returned.
-- */
--/*--------------------------------------------------------------------------*/
--double iniparser_getdouble(dictionary * d, char * key, double notfound);
--
--/*-------------------------------------------------------------------------*/
--/**
- @brief Get the string associated to a key, convert to a boolean
- @param d Dictionary to search
- @param key Key string to look for
-diff --git a/ubi-utils/libiniparser.c b/ubi-utils/libiniparser.c
-index 898f57f..ba70c08 100644
---- a/ubi-utils/libiniparser.c
-+++ b/ubi-utils/libiniparser.c
-@@ -316,28 +316,6 @@ int iniparser_getint(dictionary * d, const char * key, int notfound)
-
- /*-------------------------------------------------------------------------*/
- /**
-- @brief Get the string associated to a key, convert to a double
-- @param d Dictionary to search
-- @param key Key string to look for
-- @param notfound Value to return in case of error
-- @return double
--
-- This function queries a dictionary for a key. A key as read from an
-- ini file is given as "section:key". If the key cannot be found,
-- the notfound value is returned.
-- */
--/*--------------------------------------------------------------------------*/
--double iniparser_getdouble(dictionary * d, char * key, double notfound)
--{
-- char * str ;
--
-- str = iniparser_getstring(d, key, INI_INVALID_KEY);
-- if (str==INI_INVALID_KEY) return notfound ;
-- return atof(str);
--}
--
--/*-------------------------------------------------------------------------*/
--/**
- @brief Get the string associated to a key, convert to a boolean
- @param d Dictionary to search
- @param key Key string to look for
---
-1.9.1
-
diff --git a/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc_1.5.2.bb b/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc_1.5.2.bb
deleted file mode 100644
index 518c02fc00..0000000000
--- a/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc_1.5.2.bb
+++ /dev/null
@@ -1,48 +0,0 @@
-SUMMARY = "UBI utils statically compiled against klibc"
-DESCRIPTION = "Small sized tools from mtd-utils for use with initramfs."
-SECTION = "base"
-DEPENDS = "zlib lzo e2fsprogs util-linux"
-HOMEPAGE = "http://www.linux-mtd.infradead.org/"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \
- file://include/common.h;beginline=1;endline=17;md5=ba05b07912a44ea2bf81ce409380049c"
-
-inherit klibc
-
-SRCREV = "aea36417067dade75192bafa03af70b6eb2677b1"
-SRC_URI = "git://git.infradead.org/mtd-utils.git \
- file://0001-Makefile-only-build-ubi-utils.patch \
- file://0002-common.mk-for-klibc-CC-is-klcc.patch \
- file://0003-libubi.c-add-klibc-specific-fixes.patch \
- file://0004-common.h-klibc-fixes-1.patch \
- file://0005-common.h-klibc-fixes-2.patch \
- file://0006-libiniparser-remove-unused-function-needing-float.patch \
- "
-
-S = "${WORKDIR}/git/"
-
-EXTRA_OEMAKE = "'CC=${CC}' 'RANLIB=${RANLIB}' 'AR=${AR}' 'CFLAGS=${CFLAGS} -I${S}include -DWITHOUT_XATTR' 'BUILDDIR=${S}'"
-
-do_install () {
- oe_runmake install DESTDIR=${D} SBINDIR=${sbindir} MANDIR=${mandir} INCLUDEDIR=${includedir}
-}
-
-PACKAGES = "ubi-utils-klibc-dbg"
-
-PACKAGES =+ "mtdinfo-klibc ubiattach-klibc ubiblock-klibc ubicrc32-klibc ubidetach-klibc \
- ubiformat-klibc ubimkvol-klibc ubinfo-klibc ubinize-klibc ubirename-klibc \
- ubirmvol-klibc ubirsvol-klibc ubiupdatevol-klibc"
-
-FILES_mtdinfo-klibc = "${sbindir}/mtdinfo"
-FILES_ubiattach-klibc = "${sbindir}/ubiattach"
-FILES_ubiblock-klibc = "${sbindir}/ubiblock"
-FILES_ubicrc32-klibc = "${sbindir}/ubicrc32"
-FILES_ubidetach-klibc = "${sbindir}/ubidetach"
-FILES_ubiformat-klibc = "${sbindir}/ubiformat"
-FILES_ubimkvol-klibc = "${sbindir}/ubimkvol"
-FILES_ubinfo-klibc = "${sbindir}/ubinfo"
-FILES_ubinize-klibc = "${sbindir}/ubinize"
-FILES_ubirename-klibc = "${sbindir}/ubirename"
-FILES_ubirmvol-klibc = "${sbindir}/ubirmvol"
-FILES_ubirsvol-klibc = "${sbindir}/ubirsvol"
-FILES_ubiupdatevol-klibc = "${sbindir}/ubiupdatevol"
diff --git a/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc_2.0.2.bb b/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc_2.0.2.bb
new file mode 100644
index 0000000000..43ddb82a00
--- /dev/null
+++ b/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc_2.0.2.bb
@@ -0,0 +1,54 @@
+SUMMARY = "UBI utils statically compiled against klibc"
+DESCRIPTION = "Small sized tools from mtd-utils for use with initramfs."
+SECTION = "base"
+DEPENDS = "zlib e2fsprogs util-linux"
+HOMEPAGE = "http://www.linux-mtd.infradead.org/"
+LICENSE = "GPL-2.0-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \
+ file://include/common.h;beginline=1;endline=17;md5=ba05b07912a44ea2bf81ce409380049c"
+
+inherit autotools pkgconfig klibc
+
+SRCREV = "64f61a9dc71b158c7084006cbce4ea23886f0b47"
+SRC_URI = "git://git.infradead.org/mtd-utils.git;branch=master \
+ file://0001-libmissing.h-fix-klibc-build-when-using-glibc-toolch.patch \
+ file://0002-Instead-of-doing-preprocessor-magic-just-output-off_.patch \
+ file://0003-Makefile.am-only-build-ubi-utils.patch \
+ file://0004-mtd-utils-common.h-no-features.h-for-klibc-builds.patch \
+ file://0005-common.h-replace-getline-with-fgets.patch \
+ file://0001-make-Add-compiler-includes-in-cflags.patch \
+ "
+
+S = "${WORKDIR}/git"
+
+EXTRA_OECONF += "--disable-tests --without-jffs --without-ubifs"
+
+PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'xattr', d)}"
+PACKAGECONFIG[xattr] = ",,acl,"
+PACKAGECONFIG[lzo] = "--with-lzo,--without-lzo,lzo"
+
+EXTRA_OEMAKE = "'CC=${CC}' 'RANLIB=${RANLIB}' 'AR=${AR}' 'CFLAGS=${CFLAGS} ${@bb.utils.contains('PACKAGECONFIG', 'xattr', '', '-DWITHOUT_XATTR', d)} -I${S}/include' 'BUILDDIR=${S}'"
+
+do_install () {
+ oe_runmake install DESTDIR=${D} SBINDIR=${sbindir} MANDIR=${mandir} INCLUDEDIR=${includedir}
+}
+
+PACKAGES = "ubi-utils-klibc-dbg ubi-utils-klibc-doc"
+
+PACKAGES =+ "mtdinfo-klibc ubiattach-klibc ubiblock-klibc ubicrc32-klibc ubidetach-klibc \
+ ubiformat-klibc ubimkvol-klibc ubinfo-klibc ubinize-klibc ubirename-klibc \
+ ubirmvol-klibc ubirsvol-klibc ubiupdatevol-klibc"
+
+FILES:mtdinfo-klibc = "${sbindir}/mtdinfo"
+FILES:ubiattach-klibc = "${sbindir}/ubiattach"
+FILES:ubiblock-klibc = "${sbindir}/ubiblock"
+FILES:ubicrc32-klibc = "${sbindir}/ubicrc32"
+FILES:ubidetach-klibc = "${sbindir}/ubidetach"
+FILES:ubiformat-klibc = "${sbindir}/ubiformat"
+FILES:ubimkvol-klibc = "${sbindir}/ubimkvol"
+FILES:ubinfo-klibc = "${sbindir}/ubinfo"
+FILES:ubinize-klibc = "${sbindir}/ubinize"
+FILES:ubirename-klibc = "${sbindir}/ubirename"
+FILES:ubirmvol-klibc = "${sbindir}/ubirmvol"
+FILES:ubirsvol-klibc = "${sbindir}/ubirsvol"
+FILES:ubiupdatevol-klibc = "${sbindir}/ubiupdatevol"
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/arm_crashdump.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/arm_crashdump.patch
deleted file mode 100644
index 0ff61e543e..0000000000
--- a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/arm_crashdump.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- a/kexec/arch/arm/crashdump-arm.c
-+++ b/kexec/arch/arm/crashdump-arm.c
-@@ -20,7 +20,7 @@
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
--#include <elf.h>
-+#include "../../../include/elf.h"
- #include <errno.h>
- #include <stdio.h>
- #include <stdlib.h>
-
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/cflags_static.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/cflags_static.patch
deleted file mode 100644
index 35100a3b49..0000000000
--- a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/cflags_static.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -46,7 +46,7 @@
- # where necessary.
- CPPFLAGS = @CPPFLAGS@ -I$(srcdir)/include -I$(srcdir)/util_lib/include \
- -Iinclude/
--CFLAGS = @CFLAGS@ -fno-strict-aliasing -Wall -Wstrict-prototypes
-+CFLAGS = @CFLAGS@ -static -fno-strict-aliasing -Wall -Wstrict-prototypes
- PURGATORY_EXTRA_CFLAGS = @PURGATORY_EXTRA_CFLAGS@
- ASFLAGS = @ASFLAGS@
- LDFLAGS = @LDFLAGS@
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/fix-out-of-tree-build.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/fix-out-of-tree-build.patch
deleted file mode 100644
index ccbb24d0db..0000000000
--- a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/fix-out-of-tree-build.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 37737527725e465833be649101c4a6f8352c5d5e Mon Sep 17 00:00:00 2001
-From: Tyler Hall <tylerwhall@gmail.com>
-Date: Tue, 7 Feb 2012 18:50:05 -0500
-Subject: Fix out-of-tree build
-
-Use automatic variables for prerequisites when copying man pages and
-include a makefile relative to $(srcdir).
-
-Backported to 2.0.2-klibc
-
-Signed-off-by: Tyler Hall <tylerwhall@gmail.com>
-Signed-off-by: Simon Horman <horms@verge.net.au>
-
-diff --git a/kdump/Makefile b/kdump/Makefile
-index 1e2b72c..5dfa928 100644
---- a/kdump/Makefile
-+++ b/kdump/Makefile
-@@ -22,7 +22,7 @@ $(KDUMP): $(KDUMP_OBJS)
-
- $(KDUMP_MANPAGE): kdump/kdump.8
- $(MKDIR) -p $(MANDIR)/man8
-- cp kdump/kdump.8 $(KDUMP_MANPAGE)
-+ cp $^ $(KDUMP_MANPAGE)
- echo::
- @echo "KDUMP_SRCS $(KDUMP_SRCS)"
- @echo "KDUMP_DEPS $(KDUMP_DEPS)"
-diff --git a/kexec/Makefile b/kexec/Makefile
-index 2137cab..8c815b5 100644
---- a/kexec/Makefile
-+++ b/kexec/Makefile
-@@ -82,7 +82,7 @@ $(KEXEC): CPPFLAGS+=-I$(srcdir)/kexec/arch/$(ARCH)/include
-
- $(KEXEC_MANPAGE): kexec/kexec.8
- @$(MKDIR) -p $(MANDIR)/man8
-- cp kexec/kexec.8 $(KEXEC_MANPAGE)
-+ cp $^ $(KEXEC_MANPAGE)
- echo::
- @echo "KEXEC_SRCS $(KEXEC_SRCS)"
- @echo "KEXEC_DEPS $(KEXEC_DEPS)"
-diff --git a/kexec/arch/ppc/Makefile b/kexec/arch/ppc/Makefile
-index 3dba7cf..41242a5 100644
---- a/kexec/arch/ppc/Makefile
-+++ b/kexec/arch/ppc/Makefile
-@@ -1,7 +1,7 @@
- #
- # kexec ppc (linux booting linux)
- #
--include kexec/arch/ppc/libfdt/Makefile.libfdt
-+include $(srcdir)/kexec/arch/ppc/libfdt/Makefile.libfdt
-
- ppc_KEXEC_SRCS = kexec/arch/ppc/kexec-ppc.c
- ppc_KEXEC_SRCS += kexec/arch/ppc/kexec-elf-ppc.c
-
-
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/ifdown_errno.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/ifdown_errno.patch
deleted file mode 100644
index 7f8cddd354..0000000000
--- a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/ifdown_errno.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/kexec/ifdown.c
-+++ b/kexec/ifdown.c
-@@ -14,7 +14,7 @@
- #include <sys/ioctl.h>
- #include <sys/socket.h>
- #include <sys/time.h>
--#include <sys/errno.h>
-+#include <errno.h>
-
- #include <net/if.h>
- #include <netinet/in.h>
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/kexec-elf-rel.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/kexec-elf-rel.patch
deleted file mode 100644
index c666afcac6..0000000000
--- a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/kexec-elf-rel.patch
+++ /dev/null
@@ -1,61 +0,0 @@
---- a/kexec/kexec-elf-rel.c
-+++ b/kexec/kexec-elf-rel.c
-@@ -4,7 +4,7 @@
- #include <stdio.h>
- #include <errno.h>
- #include <stdlib.h>
--#include "elf.h"
-+#include "../include/elf.h"
- #include <boot/elf_boot.h>
- #include "kexec.h"
- #include "kexec-elf.h"
-
---- a/kexec/arch/arm/kexec-elf-rel-arm.c
-+++ b/kexec/arch/arm/kexec-elf-rel-arm.c
-@@ -1,5 +1,5 @@
- #include <stdio.h>
--#include <elf.h>
-+#include "../../../include/elf.h"
- #include "../../kexec.h"
- #include "../../kexec-elf.h"
-
-
---- a/kexec/arch/i386/kexec-elf-rel-x86.c
-+++ b/kexec/arch/i386/kexec-elf-rel-x86.c
-@@ -1,5 +1,5 @@
- #include <stdio.h>
--#include <elf.h>
-+#include "../../../include/elf.h"
- #include "../../kexec.h"
- #include "../../kexec-elf.h"
-
-
---- a/kexec/arch/ppc/kexec-elf-rel-ppc.c
-+++ b/kexec/arch/ppc/kexec-elf-rel-ppc.c
-@@ -1,5 +1,5 @@
- #include <stdio.h>
--#include <elf.h>
-+#include "../../../include/elf.h"
- #include "../../kexec.h"
- #include "../../kexec-elf.h"
-
-
---- a/kexec/arch/ppc64/kexec-elf-rel-ppc64.c
-+++ b/kexec/arch/ppc64/kexec-elf-rel-ppc64.c
-@@ -1,5 +1,5 @@
- #include <stdio.h>
--#include <elf.h>
-+#include "../../../include/elf.h"
- #include <string.h>
- #include "../../kexec.h"
- #include "../../kexec-elf.h"
-
---- a/kexec/arch/x86_64/kexec-elf-rel-x86_64.c
-+++ b/kexec/arch/x86_64/kexec-elf-rel-x86_64.c
-@@ -1,5 +1,5 @@
- #include <stdio.h>
--#include <elf.h>
-+#include "../../../include/elf.h"
- #include "../../kexec.h"
- #include "../../kexec-elf.h"
-
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/kexec-syscall.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/kexec-syscall.patch
deleted file mode 100644
index 081de1bb51..0000000000
--- a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/kexec-syscall.patch
+++ /dev/null
@@ -1,44 +0,0 @@
---- a/kexec/kexec-syscall.h
-+++ b/kexec/kexec-syscall.h
-@@ -2,7 +2,7 @@
- #define KEXEC_SYSCALL_H
-
- #define __LIBRARY__
--#include <syscall.h>
-+/*#include <syscall.h>*/
- #include <sys/syscall.h>
- #include <unistd.h>
-
-@@ -23,6 +23,7 @@
- #define LINUX_REBOOT_CMD_KEXEC 0x45584543
-
- #ifndef __NR_kexec_load
-+/*
- #ifdef __i386__
- #define __NR_kexec_load 283
- #endif
-@@ -61,19 +62,21 @@
- #ifndef __NR_kexec_load
- #error Unknown processor architecture. Needs a kexec_load syscall number.
- #endif
-+*/
- #endif /*ifndef __NR_kexec_load*/
-
- struct kexec_segment;
--
-+/*
- static inline long kexec_load(void *entry, unsigned long nr_segments,
- struct kexec_segment *segments, unsigned long flags)
- {
- return (long) syscall(__NR_kexec_load, entry, nr_segments, segments, flags);
- }
--
-+*/
- static inline long kexec_reboot(void)
- {
-- return (long) syscall(__NR_reboot, LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, LINUX_REBOOT_CMD_KEXEC, 0);
-+ //return (long) syscall(__NR_reboot, LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, LINUX_REBOOT_CMD_KEXEC, 0);
-+ return __reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, LINUX_REBOOT_CMD_KEXEC, 0);
- }
-
-
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/ppc__lshrdi3.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/ppc__lshrdi3.patch
deleted file mode 100644
index 56cdfb08d8..0000000000
--- a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/ppc__lshrdi3.patch
+++ /dev/null
@@ -1,18 +0,0 @@
---- a/purgatory/arch/ppc/crt.S
-+++ b/purgatory/arch/ppc/crt.S
-@@ -249,6 +249,7 @@
- *
- */
-
-+/* already defined in misc.S
- _GLOBAL(__lshrdi3)
- subfic 6,5,32
- srw 4,4,5 # LSW = count > 31 ? 0 : LSW >> count
-@@ -259,5 +260,7 @@
- srw 3,3,5 # MSW = MSW >> count
- or 4,4,7 # LSW |= t2
- blr
-+*/
-+
- #endif
- #endif
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/purgatory_flags.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/purgatory_flags.patch
deleted file mode 100644
index 41fc1168fb..0000000000
--- a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/purgatory_flags.patch
+++ /dev/null
@@ -1,21 +0,0 @@
---- a/purgatory/Makefile
-+++ b/purgatory/Makefile
-@@ -47,7 +47,7 @@
- $(PURGATORY): CC=$(TARGET_CC)
- $(PURGATORY): CFLAGS+=$(PURGATORY_EXTRA_CFLAGS) \
- $($(ARCH)_PURGATORY_EXTRA_CFLAGS) \
-- -Os -fno-builtin -ffreestanding
-+ -Os -fno-builtin -ffreestanding -nostdinc
-
- $(PURGATORY): CPPFLAGS=$($(ARCH)_PURGATORY_EXTRA_CFLAGS) \
- -I$(srcdir)/purgatory/include \
-@@ -61,7 +61,8 @@
-
- $(PURGATORY): $(PURGATORY_OBJS)
- $(MKDIR) -p $(@D)
-- $(CC) $(LDFLAGS) -o $@ $^
-+# $(CC) $(LDFLAGS) -o $@ $^
-+ $(LD) $(LDFLAGS) -o $@ $^
-
- # $(LD) $(LDFLAGS) $(EXTRA_LDFLAGS) --no-undefined -e purgatory_start -r -o $@ $(PURGATORY_OBJS) $(UTIL_LIB)
-
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/purgatory_string.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/purgatory_string.patch
deleted file mode 100644
index 5710561b16..0000000000
--- a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/purgatory_string.patch
+++ /dev/null
@@ -1,9 +0,0 @@
---- a/purgatory/string.c
-+++ b/purgatory/string.c
-@@ -1,5 +1,5 @@
- #include <stddef.h>
--#include <string.h>
-+/* #include <string.h> */
-
- size_t strnlen(const char *s, size_t max)
- {
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/sha256.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/sha256.patch
deleted file mode 100644
index 85bf7aa4f4..0000000000
--- a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/sha256.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- a/util_lib/include/sha256.h
-+++ b/util_lib/include/sha256.h
-@@ -1,7 +1,8 @@
- #ifndef SHA256_H
- #define SHA256_H
-
--#include <sys/types.h>
-+//#include <sys/types.h>
-+#include <stddef.h>
- #include <stdint.h>
-
- typedef struct
-
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/sysconf_nrprocessors.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/sysconf_nrprocessors.patch
deleted file mode 100644
index 04a97e6bc8..0000000000
--- a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/sysconf_nrprocessors.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- a/kexec/crashdump-elf.c
-+++ b/kexec/crashdump-elf.c
-@@ -47,7 +47,8 @@
- if (xen_present())
- nr_cpus = xen_get_nr_phys_cpus();
- else
-- nr_cpus = sysconf(_SC_NPROCESSORS_CONF);
-+ /*nr_cpus = sysconf(_SC_NPROCESSORS_CONF);*/
-+ nr_cpus = 1;
-
- if (nr_cpus < 0) {
- return -1;
-
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/x86_basename.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/x86_basename.patch
deleted file mode 100644
index 77a1c01a1c..0000000000
--- a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/x86_basename.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- a/kexec/arch/i386/x86-linux-setup.c
-+++ b/kexec/arch/i386/x86-linux-setup.c
-@@ -280,9 +280,9 @@ static int add_edd_entry(struct x86_linu
- memset(edd_info, 0, sizeof(struct edd_info));
-
- /* extract the device number */
-- if (sscanf(basename(sysfs_name), "int13_dev%hhx", &devnum) != 1) {
-+ if (sscanf(strrchr(sysfs_name,'/') + 1, "int13_dev%hhx", &devnum) != 1) {
- fprintf(stderr, "Invalid format of int13_dev dir "
-- "entry: %s\n", basename(sysfs_name));
-+ "entry: %s\n", strrchr(sysfs_name,'/') + 1);
- return -1;
- }
-
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/x86_kexec_test.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/x86_kexec_test.patch
deleted file mode 100644
index 9500bd6048..0000000000
--- a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/x86_kexec_test.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -106,8 +106,8 @@
-
- MAN_PAGES:= kexec/kexec.8
- MAN_PAGES+= kdump/kdump.8
--BINARIES_i386:= $(SBINDIR)/kexec $(PKGLIBDIR)/kexec_test
--BINARIES_x86_64:=$(SBINDIR)/kexec $(PKGLIBDIR)/kexec_test
-+BINARIES_i386:= $(SBINDIR)/kexec
-+BINARIES_x86_64:=$(SBINDIR)/kexec
- BINARIES:=$(SBINDIR)/kexec $(SBINDIR)/kdump $(BINARIES_$(ARCH))
-
- TARGETS:=$(BINARIES) $(MAN_PAGES)
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/x86_sys_io.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/x86_sys_io.patch
deleted file mode 100644
index a497c9a63d..0000000000
--- a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/x86_sys_io.patch
+++ /dev/null
@@ -1,21 +0,0 @@
---- a/purgatory/arch/i386/pic.c
-+++ b/purgatory/arch/i386/pic.c
-@@ -16,7 +16,7 @@
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
--#include <sys/io.h>
-+#include "include/arch/io.h"
- #include <purgatory.h>
- #include "purgatory-x86.h"
-
-
---- a/purgatory/arch/i386/vga.c
-+++ b/purgatory/arch/i386/vga.c
-@@ -1,4 +1,4 @@
--#include <sys/io.h>
-+#include "include/arch/io.h"
- #include <purgatory.h>
- #include "purgatory-x86.h"
-
-
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/x86_vfscanf.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/x86_vfscanf.patch
deleted file mode 100644
index cad6951547..0000000000
--- a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/x86_vfscanf.patch
+++ /dev/null
@@ -1,27 +0,0 @@
---- a/kexec/arch/i386/x86-linux-setup.c
-+++ b/kexec/arch/i386/x86-linux-setup.c
-@@ -176,6 +176,8 @@ static int file_scanf(const char *dir, c
- FILE *fp;
- int retno;
- char filename[PATH_MAX];
-+ long line_size = MAX_LINE;
-+ char *line;
-
- snprintf(filename, PATH_MAX, "%s/%s", dir, file);
- filename[PATH_MAX-1] = 0;
-@@ -186,7 +188,14 @@ static int file_scanf(const char *dir, c
- }
-
- va_start(argptr, scanf_line);
-- retno = vfscanf(fp, scanf_line, argptr);
-+
-+ line = xmalloc(sizeof(line) * line_size);
-+ while(fgets(line, sizeof(line), fp) != NULL ) {
-+ line_size += MAX_LINE;
-+ line = xrealloc(line,line_size);
-+ }
-+ retno = vsscanf(line, scanf_line, argptr);
-+
- va_end(argptr);
-
- fclose(fp);
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0001-force-static-build.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0001-force-static-build.patch
new file mode 100644
index 0000000000..34826baed9
--- /dev/null
+++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0001-force-static-build.patch
@@ -0,0 +1,25 @@
+From 2a62d7623e3d4c0eaa44434ab678274fe3a9edb1 Mon Sep 17 00:00:00 2001
+From: OpenEmbedded <oe.patch@oe>
+Date: Wed, 11 Apr 2018 22:51:00 +0200
+Subject: [PATCH] force static build
+
+Upstream-Status: Inappropriate [embedded specific]
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+
+---
+ Makefile.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index fb01134..dbf1fb6 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -47,7 +47,7 @@ TARGET_CFLAGS = @TARGET_CFLAGS@
+ # where necessary.
+ CPPFLAGS = @CPPFLAGS@ -I$(srcdir)/include -I$(srcdir)/util_lib/include \
+ -Iinclude/ $($(ARCH)_CPPFLAGS)
+-CFLAGS = @CFLAGS@ -fno-strict-aliasing -Wall -Wstrict-prototypes
++CFLAGS = @CFLAGS@ -static -fno-strict-aliasing -Wall -Wstrict-prototypes
+ PURGATORY_EXTRA_CFLAGS = @PURGATORY_EXTRA_CFLAGS@
+ ASFLAGS = @ASFLAGS@ $($(ARCH)_ASFLAGS)
+ LDFLAGS = @LDFLAGS@
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/0001-Adjust-the-order-of-headers-to-fix-build-for-musl.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0002-Adjust-the-order-of-headers-to-fix-build-for-musl.patch
index a7600b3010..ec456f382b 100644
--- a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/0001-Adjust-the-order-of-headers-to-fix-build-for-musl.patch
+++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0002-Adjust-the-order-of-headers-to-fix-build-for-musl.patch
@@ -1,30 +1,29 @@
-From 86b962e7c0de43b20b6210d059e4855ce87078bc Mon Sep 17 00:00:00 2001
+From 6843cefb1d1d0017a714a2752bb008efd844f3e4 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Thu, 13 Jul 2017 16:20:08 -0700
Subject: [PATCH] Adjust the order of headers to fix build for musl
Fixes
-kexec/ifdown.c:33:16: error: storage size of 'ifc' isn't known
+ kexec/ifdown.c:33:16: error: storage size of 'ifc' isn't known
+Upstream-Status: Inappropriate [embedded specific]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
---
kexec/ifdown.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kexec/ifdown.c b/kexec/ifdown.c
-index 2215798..e13f777 100644
+index 9679ad7..82c6141 100644
--- a/kexec/ifdown.c
+++ b/kexec/ifdown.c
@@ -16,8 +16,8 @@ char *v_ifdown = "@(#)ifdown.c 1.11 02-Jun-1998 miquels@cistron.nl";
+ #include <sys/socket.h>
#include <sys/time.h>
- #include <errno.h>
-#include <net/if.h>
#include <netinet/in.h>
+#include <net/if.h>
- #define MAX_IFS 64
-
---
-2.13.2
-
+ /*
+ * First, we find all shaper devices and down them. Then we
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0003-kexec-elf-rel-use-our-elf.h.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0003-kexec-elf-rel-use-our-elf.h.patch
new file mode 100644
index 0000000000..32035ca128
--- /dev/null
+++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0003-kexec-elf-rel-use-our-elf.h.patch
@@ -0,0 +1,92 @@
+From 7e202ea55e8dd803278d9d1eac7ffd355344d6be Mon Sep 17 00:00:00 2001
+From: OpenEmbedded <oe.patch@oe>
+Date: Wed, 11 Apr 2018 22:51:00 +0200
+Subject: [PATCH] kexec-elf-rel: use our elf.h
+
+Fix:
+
+ kexec-elf-rel.c: In function 'elf_rel_load':
+ kexec-elf-rel.c:386:39: error: 'STT_NOTYPE' undeclared
+
+and similar.
+
+Upstream-Status: Inappropriate [klibc specific]
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+
+---
+ kexec/arch/arm/kexec-elf-rel-arm.c | 2 +-
+ kexec/arch/i386/kexec-elf-rel-x86.c | 2 +-
+ kexec/arch/ppc/kexec-elf-rel-ppc.c | 2 +-
+ kexec/arch/ppc64/kexec-elf-rel-ppc64.c | 2 +-
+ kexec/arch/x86_64/kexec-elf-rel-x86_64.c | 2 +-
+ kexec/kexec-elf-rel.c | 2 +-
+ 6 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/kexec/arch/arm/kexec-elf-rel-arm.c b/kexec/arch/arm/kexec-elf-rel-arm.c
+index a939cf4..2551dc0 100644
+--- a/kexec/arch/arm/kexec-elf-rel-arm.c
++++ b/kexec/arch/arm/kexec-elf-rel-arm.c
+@@ -1,5 +1,5 @@
+ #include <stdio.h>
+-#include <elf.h>
++#include "../../../include/elf.h"
+ #include "../../kexec.h"
+ #include "../../kexec-elf.h"
+
+diff --git a/kexec/arch/i386/kexec-elf-rel-x86.c b/kexec/arch/i386/kexec-elf-rel-x86.c
+index 55a214e..e7583d1 100644
+--- a/kexec/arch/i386/kexec-elf-rel-x86.c
++++ b/kexec/arch/i386/kexec-elf-rel-x86.c
+@@ -1,5 +1,5 @@
+ #include <stdio.h>
+-#include <elf.h>
++#include "../../../include/elf.h"
+ #include "../../kexec.h"
+ #include "../../kexec-elf.h"
+
+diff --git a/kexec/arch/ppc/kexec-elf-rel-ppc.c b/kexec/arch/ppc/kexec-elf-rel-ppc.c
+index 1acbd86..a60c66c 100644
+--- a/kexec/arch/ppc/kexec-elf-rel-ppc.c
++++ b/kexec/arch/ppc/kexec-elf-rel-ppc.c
+@@ -1,5 +1,5 @@
+ #include <stdio.h>
+-#include <elf.h>
++#include "../../../include/elf.h"
+ #include "../../kexec.h"
+ #include "../../kexec-elf.h"
+
+diff --git a/kexec/arch/ppc64/kexec-elf-rel-ppc64.c b/kexec/arch/ppc64/kexec-elf-rel-ppc64.c
+index 51b1354..c85f421 100644
+--- a/kexec/arch/ppc64/kexec-elf-rel-ppc64.c
++++ b/kexec/arch/ppc64/kexec-elf-rel-ppc64.c
+@@ -1,5 +1,5 @@
+ #include <stdio.h>
+-#include <elf.h>
++#include "../../../include/elf.h"
+ #include <string.h>
+ #include "../../kexec.h"
+ #include "../../kexec-elf.h"
+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 db85b44..761a4ed 100644
+--- a/kexec/arch/x86_64/kexec-elf-rel-x86_64.c
++++ b/kexec/arch/x86_64/kexec-elf-rel-x86_64.c
+@@ -1,5 +1,5 @@
+ #include <stdio.h>
+-#include <elf.h>
++#include "../../../include/elf.h"
+ #include "../../kexec.h"
+ #include "../../kexec-elf.h"
+
+diff --git a/kexec/kexec-elf-rel.c b/kexec/kexec-elf-rel.c
+index 9a6e63d..a856636 100644
+--- a/kexec/kexec-elf-rel.c
++++ b/kexec/kexec-elf-rel.c
+@@ -4,7 +4,7 @@
+ #include <stdio.h>
+ #include <errno.h>
+ #include <stdlib.h>
+-#include "elf.h"
++#include "../include/elf.h"
+ #include <boot/elf_boot.h>
+ #include "kexec.h"
+ #include "kexec-elf.h"
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0004-kexec-elf-exec.c-replace-with-our-err.h.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0004-kexec-elf-exec.c-replace-with-our-err.h.patch
new file mode 100644
index 0000000000..27a1cc7a56
--- /dev/null
+++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0004-kexec-elf-exec.c-replace-with-our-err.h.patch
@@ -0,0 +1,30 @@
+From 720e24029fca7dcd8e1cd0b556f37aa1dc2b8fe8 Mon Sep 17 00:00:00 2001
+From: Andrea Adami <andrea.adami@gmail.com>
+Date: Tue, 17 Apr 2018 10:57:23 +0200
+Subject: [PATCH] kexec-elf-exec.c: replace with our elf.h
+
+Fix
+
+ kexec-elf-exec.c: In function 'elf_exec_load':
+ error: 'EM_AARCH64' undeclared
+
+Upstream-Status: Inappropriate [klibc specific]
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+
+---
+ kexec/kexec-elf-exec.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/kexec/kexec-elf-exec.c b/kexec/kexec-elf-exec.c
+index a9329ac..0dd0700 100644
+--- a/kexec/kexec-elf-exec.c
++++ b/kexec/kexec-elf-exec.c
+@@ -4,7 +4,7 @@
+ #include <stdio.h>
+ #include <errno.h>
+ #include <stdlib.h>
+-#include "elf.h"
++#include "../include/elf.h"
+ #include <boot/elf_boot.h>
+ #include "kexec.h"
+ #include "kexec-elf.h"
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0005-crashdump-elf.c-work-around-for-sysconf-_SC_NPROCESS.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0005-crashdump-elf.c-work-around-for-sysconf-_SC_NPROCESS.patch
new file mode 100644
index 0000000000..4604c2a5b7
--- /dev/null
+++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0005-crashdump-elf.c-work-around-for-sysconf-_SC_NPROCESS.patch
@@ -0,0 +1,134 @@
+From 43fb9cec1749b337bfa252fc2c1b0288847e8fa7 Mon Sep 17 00:00:00 2001
+From: Andrea Adami <andrea.adami@gmail.com>
+Date: Wed, 18 Apr 2018 02:21:30 +0200
+Subject: [PATCH] crashdump-elf.c: work around for _SC_NPROCESSORS_CONF
+
+klibc sysconf lacks this so the implementation
+of Linus Torvalds was taken (simplified):
+
+https://sourceware.org/ml/libc-alpha/2011-06/msg00079.html
+
+Have fun reding the thread!
+
+Fix
+
+ crashdump-elf.c:117:21: error: '_SC_NPROCESSORS_CONF' undeclared
+
+Upstream-Status: Inappropriate [klibc specific]
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+
+---
+ kexec/crashdump-elf.c | 92 +++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 92 insertions(+)
+
+diff --git a/kexec/crashdump-elf.c b/kexec/crashdump-elf.c
+index b8bb686..7e6767c 100644
+--- a/kexec/crashdump-elf.c
++++ b/kexec/crashdump-elf.c
+@@ -25,6 +25,94 @@ do { \
+ } while(0)
+ #endif
+
++#ifdef __KLIBC__
++#ifndef KLIBC_SYSFS_CPU_H
++#define KLIBC_SYSFS_CPU_H
++
++
++static int __get_sysfs_cpus(const char *path);
++int __get_nprocs (void);
++int __get_nprocs_conf (void);
++
++
++
++static int __get_sysfs_cpus(const char *path)
++{
++ FILE *file;
++ int nr_cpus = 0;
++ int prev = -1;
++ char *p;
++ char line[10];
++
++
++ file = fopen(path, "r");
++ if (!file)
++ return -1;
++ for (;;) {
++ char sep;
++ int cpu;
++ int n;
++
++ /* int n = fscanf(file, "%u%c", &cpu, &sep); */
++ p = fgets(line, sizeof(line), file);
++ if (p == NULL)
++ return -1;
++ else
++ n = sscanf(line, "%u%c", &cpu, &sep);
++
++ if (n <= 0)
++ break;
++
++ /* EOF == EOLN */
++ if (n == 1)
++ sep = '\n';
++
++ /* Was the previous CPU a range? */
++ if (prev >= 0) {
++ nr_cpus += cpu - prev + 1;
++ prev = -1;
++ } else if (sep == '-')
++ prev = cpu;
++ else
++ nr_cpus++;
++
++ if (sep == '\n')
++ break;
++ }
++ fclose(file);
++ return nr_cpus;
++}
++
++int __get_nprocs ()
++{
++ long ret;
++ static int cached = -1;
++
++ ret = cached;
++ if (ret < 0)
++ {
++ ret = __get_sysfs_cpus("/sys/devices/system/cpu/online");
++ cached = ret;
++ }
++ return ret;
++}
++
++int __get_nprocs_conf ()
++{
++ long ret;
++ static int cached = -1;
++
++ ret = cached;
++ if (ret < 0)
++ {
++ ret = __get_sysfs_cpus("/sys/devices/system/cpu/possible");
++ cached = ret;
++ }
++ return ret;
++}
++#endif
++#endif
++
+ /* Prepares the crash memory headers and stores in supplied buffer. */
+ int FUNC(struct kexec_info *info,
+ struct crash_elf_info *elf_info,
+@@ -46,7 +134,11 @@ int FUNC(struct kexec_info *info,
+ if (xen_present())
+ nr_cpus = xen_get_nr_phys_cpus();
+ else
++#ifndef __KLIBC__
+ nr_cpus = sysconf(_SC_NPROCESSORS_CONF);
++#else
++ nr_cpus = __get_nprocs_conf();
++#endif
+
+ if (nr_cpus < 0) {
+ return -1;
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0006-kexec-syscall.h-work-around-missing-syscall-wrapper.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0006-kexec-syscall.h-work-around-missing-syscall-wrapper.patch
new file mode 100644
index 0000000000..a607ce777e
--- /dev/null
+++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0006-kexec-syscall.h-work-around-missing-syscall-wrapper.patch
@@ -0,0 +1,68 @@
+From ab24f236cbc0aa8a3eadde5d71d9d7ea1d979a51 Mon Sep 17 00:00:00 2001
+From: Andrea Adami <andrea.adami@gmail.com>
+Date: Fri, 31 Aug 2018 11:33:51 +0200
+Subject: [PATCH] kexec-syscall.h: work around missing syscall() wrapper
+
+Fix
+
+ kexec-syscall.h: In function 'kexec_load':
+ kexec-syscall.h:80:16: warning: implicit declaration of function 'syscall'
+
+Upstream-Status: Inappropriate [klibc specific]
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+
+---
+ kexec/kexec-syscall.h | 21 +++++++++++++++++++++
+ 1 file changed, 21 insertions(+)
+
+diff --git a/kexec/kexec-syscall.h b/kexec/kexec-syscall.h
+index b96e02a..2a3794d 100644
+--- a/kexec/kexec-syscall.h
++++ b/kexec/kexec-syscall.h
+@@ -77,11 +77,16 @@
+
+ struct kexec_segment;
+
++#ifndef __KLIBC__
+ static inline long kexec_load(void *entry, unsigned long nr_segments,
+ struct kexec_segment *segments, unsigned long flags)
+ {
+ return (long) syscall(__NR_kexec_load, entry, nr_segments, segments, flags);
+ }
++#else
++extern long kexec_load(void *entry, unsigned long nr_segments,
++ struct kexec_segment *segments, unsigned long flags);
++#endif
+
+ static inline int is_kexec_file_load_implemented(void) {
+ if (__NR_kexec_file_load != 0xffffffff)
+@@ -89,6 +94,21 @@ static inline int is_kexec_file_load_implemented(void) {
+ return 0;
+ }
+
++#ifdef __KLIBC__
++/* Stub provided by klibc only for the following archs */
++#if defined (__x86_64__) || defined (__powerpc_64__) || defined (__s390x__)
++extern long kexec_file_load(int kernel_fd, int initrd_fd,
++ unsigned long cmdline_len, const char *cmdline_ptr,
++ unsigned long flags);
++#else
++static inline long kexec_file_load(int kernel_fd, int initrd_fd,
++ unsigned long cmdline_len, const char *cmdline_ptr,
++ unsigned long flags)
++{
++ return -1;
++}
++#endif
++#else
+ static inline long kexec_file_load(int kernel_fd, int initrd_fd,
+ unsigned long cmdline_len, const char *cmdline_ptr,
+ unsigned long flags)
+@@ -96,6 +116,7 @@ static inline long kexec_file_load(int kernel_fd, int initrd_fd,
+ return (long) syscall(__NR_kexec_file_load, kernel_fd, initrd_fd,
+ cmdline_len, cmdline_ptr, flags);
+ }
++#endif
+
+ #define KEXEC_ON_CRASH 0x00000001
+ #define KEXEC_PRESERVE_CONTEXT 0x00000002
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0007-kexec.c-add-guard-around-ENOTSUP.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0007-kexec.c-add-guard-around-ENOTSUP.patch
new file mode 100644
index 0000000000..0ae90016d0
--- /dev/null
+++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0007-kexec.c-add-guard-around-ENOTSUP.patch
@@ -0,0 +1,37 @@
+From 17e9da8d3c3c69f84e11c0457bd9fb8c4ee4274b Mon Sep 17 00:00:00 2001
+From: Andrea Adami <andrea.adami@gmail.com>
+Date: Tue, 17 Apr 2018 11:35:14 +0200
+Subject: [PATCH] kexec.c: add guard around ENOTSUP
+
+Fix
+
+ kexec.c: In function 'main':
+ kexec.c:1515:11: error: 'ENOTSUP' undeclared
+
+Upstream-Status: Inappropriate [klibc specific]
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+
+---
+ kexec/kexec.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/kexec/kexec.c b/kexec/kexec.c
+index 32ae56c..0764e85 100644
+--- a/kexec/kexec.c
++++ b/kexec/kexec.c
+@@ -1517,6 +1517,7 @@ int main(int argc, char *argv[])
+ */
+ case -EINVAL:
+ case -ENOEXEC:
++#ifndef __KLIBC__
+ /*
+ * ENOTSUP can be unsupported image
+ * type or unsupported PE signature
+@@ -1529,6 +1530,7 @@ int main(int argc, char *argv[])
+ * kernel bug
+ */
+ case -ENOTSUP:
++#endif
+ do_kexec_file_syscall = 0;
+ break;
+ }
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0008-kexec.c-replace-mising-BLKGETSIZE64.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0008-kexec.c-replace-mising-BLKGETSIZE64.patch
new file mode 100644
index 0000000000..0ab7a1d71e
--- /dev/null
+++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0008-kexec.c-replace-mising-BLKGETSIZE64.patch
@@ -0,0 +1,32 @@
+From 30b61da180286643bea68b09b092744346011801 Mon Sep 17 00:00:00 2001
+From: Andrea Adami <andrea.adami@gmail.com>
+Date: Tue, 17 Apr 2018 11:38:42 +0200
+Subject: [PATCH] kexec.c: replace missing BLKGETSIZE64
+
+Fix
+
+ kexec.c: In function 'slurp_file_generic':
+ kexec.c:564:19: error: 'BLKGETSIZE64' undeclared
+
+Upstream-Status: Inappropriate [klibc specific]
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+
+---
+ kexec/kexec.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/kexec/kexec.c b/kexec/kexec.c
+index 0764e85..157c577 100644
+--- a/kexec/kexec.c
++++ b/kexec/kexec.c
+@@ -55,6 +55,10 @@
+ #define KEXEC_LOADED_PATH "/sys/kernel/kexec_loaded"
+ #define KEXEC_CRASH_LOADED_PATH "/sys/kernel/kexec_crash_loaded"
+
++#ifndef BLKGETSIZE64
++#define BLKGETSIZE64 _IOR(0x12,114,size_t)
++#endif
++
+ unsigned long long mem_min = 0;
+ unsigned long long mem_max = ULONG_MAX;
+ static unsigned long kexec_flags = 0;
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0009-vmcore-dmesg.c-work-around-missing-imaxdiv.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0009-vmcore-dmesg.c-work-around-missing-imaxdiv.patch
new file mode 100644
index 0000000000..8bc473cb00
--- /dev/null
+++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0009-vmcore-dmesg.c-work-around-missing-imaxdiv.patch
@@ -0,0 +1,57 @@
+From 20e2c61fc04a291250acee649c2523d2546cedea Mon Sep 17 00:00:00 2001
+From: Andrea Adami <andrea.adami@gmail.com>
+Date: Tue, 17 Apr 2018 13:14:12 +0200
+Subject: [PATCH] vmcore-dmesg.c: work around missing imaxdiv()
+
+Convert to integer arithmetic for klibc.
+
+Fix
+
+ vmcore-dmesg.c: In function 'dump_dmesg_structured':
+ vmcore-dmesg.c:578:2: error: unknown type name 'imaxdiv_t'
+
+Upstream-Status: Inappropriate [klibc specific]
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+
+---
+ vmcore-dmesg/vmcore-dmesg.c | 13 ++++++++++++-
+ 1 file changed, 12 insertions(+), 1 deletion(-)
+
+diff --git a/vmcore-dmesg/vmcore-dmesg.c b/vmcore-dmesg/vmcore-dmesg.c
+index 7972788..c63ac4f 100644
+--- a/vmcore-dmesg/vmcore-dmesg.c
++++ b/vmcore-dmesg/vmcore-dmesg.c
+@@ -575,8 +575,11 @@ static void dump_dmesg_structured(int fd)
+ ssize_t ret;
+ char *msg;
+ uint16_t text_len;
++#ifndef __KLIBC__
+ imaxdiv_t imaxdiv_sec, imaxdiv_usec;
+-
++#else
++ int64_t imaxdiv_sec, imaxdiv_usec;
++#endif
+ if (!log_buf_vaddr) {
+ fprintf(stderr, "Missing the log_buf symbol\n");
+ exit(60);
+@@ -645,12 +648,20 @@ static void dump_dmesg_structured(int fd)
+ exit(65);
+ }
+ ts_nsec = struct_val_u64(buf, log_offset_ts_nsec);
++#ifndef __KLIBC__
+ imaxdiv_sec = imaxdiv(ts_nsec, 1000000000);
+ imaxdiv_usec = imaxdiv(imaxdiv_sec.rem, 1000);
+
+ len += sprintf(out_buf + len, "[%5llu.%06llu] ",
+ (long long unsigned int)imaxdiv_sec.quot,
+ (long long unsigned int)imaxdiv_usec.quot);
++#else
++ imaxdiv_sec = ts_nsec / 1000000000;
++ imaxdiv_usec = (ts_nsec % 1000000000) / 1000;
++ len += sprintf(out_buf + len, "[%5llu.%06llu] ",
++ (long long unsigned int)imaxdiv_sec,
++ (long long unsigned int)imaxdiv_usec);
++#endif
+
+ /* escape non-printable characters */
+ text_len = struct_val_u16(buf, log_offset_text_len);
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0010-fs2dt.c-work-around-missing-getline.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0010-fs2dt.c-work-around-missing-getline.patch
new file mode 100644
index 0000000000..4652f10a6e
--- /dev/null
+++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0010-fs2dt.c-work-around-missing-getline.patch
@@ -0,0 +1,47 @@
+From 14d4dbd293c75bc81a0dde6e678f9bbefb40b6f1 Mon Sep 17 00:00:00 2001
+From: Andrea Adami <andrea.adami@gmail.com>
+Date: Tue, 17 Apr 2018 13:48:25 +0200
+Subject: [PATCH] fs2dt.c: work around missing getline()
+
+This simple case can be rewrtten with fgets()
+
+Fix
+
+ fs2dt.c: In function 'dt_copy_old_root_param':
+ fs2dt.c:541:6: warning: implicit declaration of function 'getline'
+
+Upstream-Status: Inappropriate [klibc specific]
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+
+---
+ kexec/fs2dt.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/kexec/fs2dt.c b/kexec/fs2dt.c
+index 07a5e2f..d635636 100644
+--- a/kexec/fs2dt.c
++++ b/kexec/fs2dt.c
+@@ -531,6 +531,9 @@ static void dt_copy_old_root_param(void)
+ char *last_cmdline = NULL;
+ char *p, *old_param;
+ size_t len = 0;
++#ifdef __KLIBC__
++ char buf[512];
++#endif
+
+ strcpy(filename, pathname);
+ strcat(filename, "bootargs");
+@@ -538,8 +541,13 @@ static void dt_copy_old_root_param(void)
+ if (!fp)
+ return;
+
++#ifndef __KLIBC__
+ if (getline(&last_cmdline, &len, fp) == -1)
+ die("unable to read %s\n", filename);
++#else
++ last_cmdline = fgets(buf, 200, fp);
++ last_cmdline[strlen(last_cmdline) - 1] = '\0';
++#endif
+
+ p = strstr(last_cmdline, "root=");
+ if (p) {
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0011-purgatory-Makefile-adapt-to-klcc.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0011-purgatory-Makefile-adapt-to-klcc.patch
new file mode 100644
index 0000000000..07fa841ccc
--- /dev/null
+++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0011-purgatory-Makefile-adapt-to-klcc.patch
@@ -0,0 +1,34 @@
+From b6ebe05dc389b9457e3707401411fd075230b10e Mon Sep 17 00:00:00 2001
+From: Andrea Adami <andrea.adami@gmail.com>
+Date: Tue, 21 Aug 2018 16:31:44 +0200
+Subject: [PATCH] purgatory Makefile: adapt to klcc
+
+Upstream-Status: Inappropriate [klibc specific]
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+
+---
+ purgatory/Makefile | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+--- a/purgatory/Makefile
++++ b/purgatory/Makefile
+@@ -47,7 +47,7 @@ purgatory/sha256.o: $(srcdir)/util_lib/s
+ $(PURGATORY): CC=$(TARGET_CC)
+ $(PURGATORY): CFLAGS+=$(PURGATORY_EXTRA_CFLAGS) \
+ $($(ARCH)_PURGATORY_EXTRA_CFLAGS) \
+- -Os -fno-builtin -ffreestanding \
++ -Os -fno-builtin -ffreestanding -nostdinc \
+ -fno-zero-initialized-in-bss \
+ -fno-PIC -fno-PIE -fno-stack-protector
+
+@@ -59,8 +59,8 @@ $(PURGATORY): CPPFLAGS=$($(ARCH)_PURGATO
+ -Iinclude \
+ -I$(shell $(CC) -print-file-name=include)
+ $(PURGATORY): LDFLAGS=$($(ARCH)_PURGATORY_EXTRA_CFLAGS)\
+- -Wl,--no-undefined -nostartfiles -nostdlib \
+- -nodefaultlibs -e purgatory_start -r \
++ -Wl,--no-undefined -no-pie -nostartfiles -nostdlib \
++ -nodefaultlibs -Wl,--entry=purgatory_start -Wl,-r \
+ -Wl,-Map=$(PURGATORY_MAP)
+
+ $(PURGATORY): $(PURGATORY_OBJS)
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0012-purgatory-string.c-avoid-inclusion-of-string.h.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0012-purgatory-string.c-avoid-inclusion-of-string.h.patch
new file mode 100644
index 0000000000..db0d763178
--- /dev/null
+++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0012-purgatory-string.c-avoid-inclusion-of-string.h.patch
@@ -0,0 +1,28 @@
+From 9bb386018257e1e18ffe0e925201946515b31080 Mon Sep 17 00:00:00 2001
+From: Andrea Adami <andrea.adami@gmail.com>
+Date: Thu, 19 Apr 2018 00:28:14 +0200
+Subject: [PATCH] purgatory/string.c: avoid inclusion of string.h
+
+Fix
+
+ purgatory/string.c:39:5: error: conflicting types for 'memcmp'
+
+Upstream-Status: Inappropriate [klibc specific]
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+
+---
+ purgatory/string.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/purgatory/string.c b/purgatory/string.c
+index f06c460..c5e978a 100644
+--- a/purgatory/string.c
++++ b/purgatory/string.c
+@@ -1,5 +1,7 @@
+ #include <stddef.h>
++#ifndef __KLIBC__
+ #include <string.h>
++#endif
+
+ size_t strnlen(const char *s, size_t max)
+ {
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0013-sha256.h-avoid-inclusion-of-sys-types.h.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0013-sha256.h-avoid-inclusion-of-sys-types.h.patch
new file mode 100644
index 0000000000..777cbcf94f
--- /dev/null
+++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0013-sha256.h-avoid-inclusion-of-sys-types.h.patch
@@ -0,0 +1,33 @@
+From 60098810e1c04be677794bff6a3935011af98934 Mon Sep 17 00:00:00 2001
+From: Andrea Adami <andrea.adami@gmail.com>
+Date: Thu, 19 Apr 2018 23:26:43 +0200
+Subject: [PATCH] sha256.h: avoid inclusion of sys/types.h
+
+Fix
+
+ purgatory/printf.c:2:10: fatal error: limits.h:
+ No such file or directory
+
+Upstream-Status: Inappropriate [klibc specific]
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+
+---
+ util_lib/include/sha256.h | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/util_lib/include/sha256.h b/util_lib/include/sha256.h
+index 467fb22..40fd3ed 100644
+--- a/util_lib/include/sha256.h
++++ b/util_lib/include/sha256.h
+@@ -1,7 +1,11 @@
+ #ifndef SHA256_H
+ #define SHA256_H
+
++#ifndef __KLIBC__
+ #include <sys/types.h>
++#else
++#include <stddef.h>
++#endif
+ #include <stdint.h>
+
+ typedef struct
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0014-add-if_nameindex-from-musl.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0014-add-if_nameindex-from-musl.patch
new file mode 100644
index 0000000000..eca01b956c
--- /dev/null
+++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0014-add-if_nameindex-from-musl.patch
@@ -0,0 +1,152 @@
+From 04eec97b390621f2b3794b0d774b77429eb88cfd Mon Sep 17 00:00:00 2001
+From: Andrea Adami <andrea.adami@gmail.com>
+Date: Wed, 2 May 2018 23:14:19 +0200
+Subject: [PATCH] add if_nameindex from musl
+
+Taken from musl, minimal changes.
+klibc lacks struct and func
+
+Fix
+
+ ifdown.o: In function `ifdown':
+ ifdown.c (.text+0x30): undefined reference to `if_nameindex'
+
+While there add klibc-specific guard and include sys/types.h
+to fix :
+
+ /kexec/if_nameindex.c:2:
+ /usr/lib/klibc/include/linux/types.h:22:0:
+ warning: "__bitwise" redefined
+ #define __bitwise __bitwise__
+
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+
+---
+Upstream-Status: Pending
+
+ kexec/Makefile | 2 +-
+ kexec/if_nameindex.c | 64 ++++++++++++++++++++++++++++++++++++++++++++
+ kexec/if_nameindex.h | 15 +++++++++++
+ kexec/ifdown.c | 3 +++
+ 4 files changed, 83 insertions(+), 1 deletion(-)
+ create mode 100644 kexec/if_nameindex.c
+ create mode 100644 kexec/if_nameindex.h
+
+diff --git a/kexec/Makefile b/kexec/Makefile
+index 4db84d8..fb7520b 100644
+--- a/kexec/Makefile
++++ b/kexec/Makefile
+@@ -11,7 +11,7 @@ KEXEC_SRCS = $(KEXEC_SRCS_base)
+ KEXEC_GENERATED_SRCS =
+
+ KEXEC_SRCS_base += kexec/kexec.c
+-KEXEC_SRCS_base += kexec/ifdown.c
++KEXEC_SRCS_base += kexec/if_nameindex kexec/ifdown.c
+ KEXEC_SRCS_base += kexec/kexec-elf.c
+ KEXEC_SRCS_base += kexec/kexec-elf-exec.c
+ KEXEC_SRCS_base += kexec/kexec-elf-core.c
+diff --git a/kexec/if_nameindex.c b/kexec/if_nameindex.c
+new file mode 100644
+index 0000000..e586e41
+--- /dev/null
++++ b/kexec/if_nameindex.c
+@@ -0,0 +1,64 @@
++#define _GNU_SOURCE
++#ifdef __KLIBC__
++#include <sys/types.h>
++#endif
++#include <netinet/in.h>
++#include <net/if.h>
++#include <stdlib.h>
++#include <sys/socket.h>
++#include <sys/ioctl.h>
++#include <errno.h>
++#include <sys/syscall.h>
++#include <stdio.h>
++#ifdef __KLIBC__
++#include "if_nameindex.h"
++#endif
++
++static void *do_nameindex(int s, size_t n)
++{
++ size_t i, len, k;
++ struct ifconf conf;
++ struct if_nameindex *idx;
++
++ idx = malloc(n * (sizeof(struct if_nameindex)+sizeof(struct ifreq)));
++ if (!idx) return 0;
++
++ conf.ifc_buf = (void *)&idx[n];
++ conf.ifc_len = len = n * sizeof(struct ifreq);
++ if (ioctl(s, SIOCGIFCONF, &conf) < 0) {
++ free(idx);
++ return 0;
++ }
++ if (conf.ifc_len == len) {
++ free(idx);
++ return (void *)-1;
++ }
++
++ n = conf.ifc_len / sizeof(struct ifreq);
++ for (i=k=0; i<n; i++) {
++ if (ioctl(s, SIOCGIFINDEX, &conf.ifc_req[i]) < 0) {
++ k++;
++ continue;
++ }
++ idx[i-k].if_index = conf.ifc_req[i].ifr_ifindex;
++ idx[i-k].if_name = conf.ifc_req[i].ifr_name;
++ }
++ idx[i-k].if_name = 0;
++ idx[i-k].if_index = 0;
++
++ return idx;
++}
++
++struct if_nameindex *if_nameindex()
++{
++ size_t n;
++ void *p = 0;
++ int s = socket(AF_UNIX, SOCK_DGRAM, 0);
++ if (s>=0) {
++ for (n=0; (p=do_nameindex(s, n)) == (void *)-1; n++);
++/* __syscall(SYS_close, s); */
++ close(s);
++ }
++ errno = ENOBUFS;
++ return p;
++}
+diff --git a/kexec/if_nameindex.h b/kexec/if_nameindex.h
+new file mode 100644
+index 0000000..cf1c061
+--- /dev/null
++++ b/kexec/if_nameindex.h
+@@ -0,0 +1,15 @@
++#ifndef _NET_IF__NAMEINDEX_H
++#define _NET_IF_NAMEINDEX_H
++
++struct if_nameindex
++{
++ unsigned int if_index;
++ char *if_name;
++};
++
++unsigned int if_nametoindex (const char *);
++char *if_indextoname (unsigned int, char *);
++struct if_nameindex *if_nameindex (void);
++void if_freenameindex (struct if_nameindex *);
++
++#endif
+diff --git a/kexec/ifdown.c b/kexec/ifdown.c
+index 82c6141..cc3ca9f 100644
+--- a/kexec/ifdown.c
++++ b/kexec/ifdown.c
+@@ -18,6 +18,9 @@ char *v_ifdown = "@(#)ifdown.c 1.11 02-Jun-1998 miquels@cistron.nl";
+
+ #include <netinet/in.h>
+ #include <net/if.h>
++#ifdef __KLIBC__
++#include "if_nameindex.h"
++#endif
+
+ /*
+ * First, we find all shaper devices and down them. Then we
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0015-vmcore-dmesg-fix-warning.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0015-vmcore-dmesg-fix-warning.patch
new file mode 100644
index 0000000000..044a70d93b
--- /dev/null
+++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/0015-vmcore-dmesg-fix-warning.patch
@@ -0,0 +1,29 @@
+From a2679731a56748de58a4cf0a46b7a15d75543a88 Mon Sep 17 00:00:00 2001
+From: Andrea Adami <andrea.adami@gmail.com>
+Date: Sun, 29 Apr 2018 00:52:31 +0200
+Subject: [PATCH] vmcore-dmesg: fix warning
+
+ # define __bitwise
+
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+
+---
+Upstream-Status: Pending
+
+ vmcore-dmesg/vmcore-dmesg.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/vmcore-dmesg/vmcore-dmesg.c b/vmcore-dmesg/vmcore-dmesg.c
+index c63ac4f..a4e3014 100644
+--- a/vmcore-dmesg/vmcore-dmesg.c
++++ b/vmcore-dmesg/vmcore-dmesg.c
+@@ -2,6 +2,9 @@
+ #define _GNU_SOURCE
+ #define _LARGEFILE_SOURCE 1
+ #define _FILE_OFFSET_BITS 64
++#ifdef __KLIBC__
++#include <sys/types.h>
++#endif
+ #include <endian.h>
+ #include <byteswap.h>
+ #include <stdio.h>
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/140-mips_disable_devicetree_support.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/140-mips_disable_devicetree_support.patch
new file mode 100644
index 0000000000..031efb6275
--- /dev/null
+++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/140-mips_disable_devicetree_support.patch
@@ -0,0 +1,158 @@
+From 7bd94a64cd5424e74ad49dbda65a15e83670268f Mon Sep 17 00:00:00 2001
+From: Andrea Adami <andrea.adami@gmail.com>
+Date: Mon, 17 Dec 2018 11:25:20 +0100
+Subject: [PATCH] kexec-tools: fix non-device tree devices on mips
+
+Add additional argument '--no-dtb' which disables device tree
+search in currently loaded kernel.
+
+Taken from LEDE-DEV:
+https://patchwork.ozlabs.org/patch/852961/
+
+Rebased for kexec-tools 2.0.18
+Removed ppc change (unwanted ?)
+
+Signed-off-by: Konstantin Kuzov <master.nosferatu@gmail.com>
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+
+---
+Upstream-Status: Pending
+
+ kexec/arch/mips/include/arch/options.h | 4 +-
+ kexec/arch/mips/kexec-elf-mips.c | 58 ++++++++++++++------------
+ kexec/arch/mips/kexec-mips.c | 4 ++
+ kexec/arch/mips/kexec-mips.h | 1 +
+ 4 files changed, 39 insertions(+), 28 deletions(-)
+
+--- a/kexec/arch/mips/include/arch/options.h
++++ b/kexec/arch/mips/include/arch/options.h
+@@ -5,6 +5,7 @@
+ #define OPT_APPEND (OPT_ARCH_MAX+0)
+ #define OPT_DTB (OPT_ARCH_MAX+1)
+ #define OPT_RAMDISK (OPT_ARCH_MAX+2)
++#define OPT_NO_DTB (OPT_ARCH_MAX+3)
+
+ /* Options relevant to the architecture (excluding loader-specific ones),
+ * in this case none:
+@@ -14,7 +15,8 @@
+ {"command-line", 1, 0, OPT_APPEND}, \
+ {"append", 1, 0, OPT_APPEND}, \
+ {"dtb", 1, 0, OPT_DTB }, \
+- {"initrd", 1, 0, OPT_RAMDISK },
++ {"initrd", 1, 0, OPT_RAMDISK }, \
++ {"no-dtb", 0, 0, OPT_NO_DTB },
+
+
+ #define KEXEC_ARCH_OPT_STR KEXEC_OPT_STR ""
+--- a/kexec/arch/mips/kexec-elf-mips.c
++++ b/kexec/arch/mips/kexec-elf-mips.c
+@@ -141,45 +141,49 @@ int elf_mips_load(int argc, char **argv,
+ else
+ cmdline_addr = 0;
+
+- /* MIPS systems that have been converted to use device tree
+- * passed through UHI will use commandline in the DTB and
+- * the DTB passed as a separate buffer. Note that
+- * CMDLINE_PREFIX is skipped here intentionally, as it is
+- * used only in the legacy method */
+-
+- if (arch_options.dtb_file) {
+- dtb_buf = slurp_file(arch_options.dtb_file, &dtb_length);
+- } else {
+- create_flatten_tree(&dtb_buf, &dtb_length, cmdline_buf + strlen(CMDLINE_PREFIX));
+- }
+-
+- if (arch_options.initrd_file) {
+- initrd_buf = slurp_file(arch_options.initrd_file, &initrd_size);
+
+- /* Create initrd entries in dtb - although at this time
+- * they would not point to the correct location */
+- dtb_set_initrd(&dtb_buf, &dtb_length, initrd_buf, initrd_buf + initrd_size);
+-
+- initrd_base = add_buffer(info, initrd_buf, initrd_size,
+- initrd_size, sizeof(void *),
+- _ALIGN_UP(kernel_addr + kernel_size + dtb_length,
+- pagesize), 0x0fffffff, 1);
+-
+- /* Now that the buffer for initrd is prepared, update the dtb
+- * with an appropriate location */
+- dtb_set_initrd(&dtb_buf, &dtb_length, initrd_base, initrd_base + initrd_size);
++ if (!arch_options.no_dtb) {
++ /* MIPS systems that have been converted to use device tree
++ * passed through UHI will use commandline in the DTB and
++ * the DTB passed as a separate buffer. Note that
++ * CMDLINE_PREFIX is skipped here intentionally, as it is
++ * used only in the legacy method */
++
++ if (arch_options.dtb_file) {
++ dtb_buf = slurp_file(arch_options.dtb_file, &dtb_length);
++ } else {
++ create_flatten_tree(&dtb_buf, &dtb_length, cmdline_buf + strlen(CMDLINE_PREFIX));
++ }
++
++ if (arch_options.initrd_file) {
++ initrd_buf = slurp_file(arch_options.initrd_file, &initrd_size);
++
++ /* Create initrd entries in dtb - although at this time
++ * they would not point to the correct location */
++ dtb_set_initrd(&dtb_buf, &dtb_length, (off_t)initrd_buf, (off_t)initrd_buf + initrd_size);
++
++ initrd_base = add_buffer(info, initrd_buf, initrd_size,
++ initrd_size, sizeof(void *),
++ _ALIGN_UP(kernel_addr + kernel_size + dtb_length,
++ pagesize), 0x0fffffff, 1);
++
++ /* Now that the buffer for initrd is prepared, update the dtb
++ * with an appropriate location */
++ dtb_set_initrd(&dtb_buf, &dtb_length, initrd_base, initrd_base + initrd_size);
++ }
+ }
+
+-
+ /* This is a legacy method for commandline passing used
+ * currently by Octeon CPUs only */
+ add_buffer(info, cmdline_buf, sizeof(cmdline_buf),
+ sizeof(cmdline_buf), sizeof(void *),
+ cmdline_addr, 0x0fffffff, 1);
+
+- add_buffer(info, dtb_buf, dtb_length, dtb_length, 0,
+- _ALIGN_UP(kernel_addr + kernel_size, pagesize),
+- 0x0fffffff, 1);
++ if (!arch_options.no_dtb) {
++ add_buffer(info, dtb_buf, dtb_length, dtb_length, 0,
++ _ALIGN_UP(kernel_addr + kernel_size, pagesize),
++ 0x0fffffff, 1);
++ }
+
+ return 0;
+ }
+--- a/kexec/arch/mips/kexec-mips.c
++++ b/kexec/arch/mips/kexec-mips.c
+@@ -89,6 +89,7 @@ void arch_usage(void)
+ " --append=STRING Set the kernel command line to STRING.\n"
+ " --dtb=FILE Use FILE as the device tree blob.\n"
+ " --initrd=FILE Use FILE as initial ramdisk.\n"
++ " --no-dtb Don't try to find device tree\n"
+ );
+ }
+
+@@ -121,6 +122,9 @@ int arch_process_options(int argc, char
+ case OPT_RAMDISK:
+ arch_options.initrd_file = optarg;
+ break;
++ case OPT_NO_DTB:
++ arch_options.no_dtb = 1;
++ break;
+ default:
+ break;
+ }
+--- a/kexec/arch/mips/kexec-mips.h
++++ b/kexec/arch/mips/kexec-mips.h
+@@ -22,6 +22,7 @@ struct arch_options_t {
+ char *dtb_file;
+ char *initrd_file;
+ int core_header_type;
++ int no_dtb;
+ };
+
+ extern struct memory_ranges usablemem_rgns;
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/Fix-building-on-x86_64-with-binutils-2.41.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/Fix-building-on-x86_64-with-binutils-2.41.patch
new file mode 100644
index 0000000000..4894f044fc
--- /dev/null
+++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/Fix-building-on-x86_64-with-binutils-2.41.patch
@@ -0,0 +1,95 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Michel Lind <salimma@fedoraproject.org>
+Date: Tue, 30 Jan 2024 04:14:31 -0600
+Subject: [PATCH] Fix building on x86_64 with binutils 2.41
+
+Newer versions of the GNU assembler (observed with binutils 2.41) will
+complain about the ".arch i386" in files assembled with "as --64",
+with the message "Error: 64bit mode not supported on 'i386'".
+
+Fix by moving ".arch i386" below the relevant ".code32" directive, so
+that the assembler is no longer expecting 64-bit instructions to be used
+by the time that the ".arch i386" directive is encountered.
+
+Based on similar iPXE fix:
+https://github.com/ipxe/ipxe/commit/6ca597eee
+
+Signed-off-by: Michel Lind <michel@michel-slm.name>
+Signed-off-by: Simon Horman <horms@kernel.org>
+
+Upstream-Status: Backport [https://git.kernel.org/pub/scm/utils/kernel/kexec/kexec-tools.git/commit/?h=main&id=328de8e00e298f00d7ba6b25dc3950147e9642e6]
+Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
+---
+ purgatory/arch/i386/entry32-16-debug.S | 2 +-
+ purgatory/arch/i386/entry32-16.S | 2 +-
+ purgatory/arch/i386/entry32.S | 2 +-
+ purgatory/arch/i386/setup-x86.S | 2 +-
+ 4 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/purgatory/arch/i386/entry32-16-debug.S b/purgatory/arch/i386/entry32-16-debug.S
+index 5167944..12e1164 100644
+--- a/purgatory/arch/i386/entry32-16-debug.S
++++ b/purgatory/arch/i386/entry32-16-debug.S
+@@ -25,10 +25,10 @@
+ .globl entry16_debug_pre32
+ .globl entry16_debug_first32
+ .globl entry16_debug_old_first32
+- .arch i386
+ .balign 16
+ entry16_debug:
+ .code32
++ .arch i386
+ /* Compute where I am running at (assumes esp valid) */
+ call 1f
+ 1: popl %ebx
+diff --git a/purgatory/arch/i386/entry32-16.S b/purgatory/arch/i386/entry32-16.S
+index c051aab..eace095 100644
+--- a/purgatory/arch/i386/entry32-16.S
++++ b/purgatory/arch/i386/entry32-16.S
+@@ -20,10 +20,10 @@
+ #undef i386
+ .text
+ .globl entry16, entry16_regs
+- .arch i386
+ .balign 16
+ entry16:
+ .code32
++ .arch i386
+ /* Compute where I am running at (assumes esp valid) */
+ call 1f
+ 1: popl %ebx
+diff --git a/purgatory/arch/i386/entry32.S b/purgatory/arch/i386/entry32.S
+index f7a494f..8ce9e31 100644
+--- a/purgatory/arch/i386/entry32.S
++++ b/purgatory/arch/i386/entry32.S
+@@ -20,10 +20,10 @@
+ #undef i386
+
+ .text
+- .arch i386
+ .globl entry32, entry32_regs
+ entry32:
+ .code32
++ .arch i386
+
+ /* Setup a gdt that should that is generally usefully */
+ lgdt %cs:gdt
+diff --git a/purgatory/arch/i386/setup-x86.S b/purgatory/arch/i386/setup-x86.S
+index 201bb2c..a212eed 100644
+--- a/purgatory/arch/i386/setup-x86.S
++++ b/purgatory/arch/i386/setup-x86.S
+@@ -21,10 +21,10 @@
+ #undef i386
+
+ .text
+- .arch i386
+ .globl purgatory_start
+ purgatory_start:
+ .code32
++ .arch i386
+
+ /* Load a gdt so I know what the segment registers are */
+ lgdt %cs:gdt
+--
+2.39.2
+
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/arm64-crashdump-arm64.c-fix-warning.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/arm64-crashdump-arm64.c-fix-warning.patch
new file mode 100644
index 0000000000..a3b7789eba
--- /dev/null
+++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/arm64-crashdump-arm64.c-fix-warning.patch
@@ -0,0 +1,34 @@
+From 3fd4db2ce1710f45eb297ae6b2c10726b33204f3 Mon Sep 17 00:00:00 2001
+From: Andrea Adami <andrea.adami@gmail.com>
+Date: Sun, 29 Apr 2018 00:46:16 +0200
+Subject: [PATCH] arm64: crashdump-arm64.c: fix warning
+
+ from ../git/kexec/kexec.h:6,
+ from ../git/kexec/arch/arm64/crashdump-arm64.c:18:
+/tmp/build/tmp-musl/work/aarch64-oe-linux-musl/kexec-tools-klibc/0.6+gitAUTOINC+
+0481e9ed61-r0/recipe-sysroot/usr/lib/klibc/include/klibc/compiler.h:144:0: warni
+ng: "__bitwise" redefined
+ # define __bitwise
+
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+
+---
+Upstream-Status: Pending
+
+ kexec/arch/arm64/crashdump-arm64.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/kexec/arch/arm64/crashdump-arm64.c b/kexec/arch/arm64/crashdump-arm64.c
+index 4fd7aa8..890d88f 100644
+--- a/kexec/arch/arm64/crashdump-arm64.c
++++ b/kexec/arch/arm64/crashdump-arm64.c
+@@ -13,6 +13,9 @@
+ #define _GNU_SOURCE
+
+ #include <errno.h>
++#ifdef __KLIBC__
++#include <sys/types.h>
++#endif
+ #include <linux/elf.h>
+
+ #include "kexec.h"
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/arm64_kexec-arm64.c-workaround-for-getrandom-syscall.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/arm64_kexec-arm64.c-workaround-for-getrandom-syscall.patch
new file mode 100644
index 0000000000..df7b0a7782
--- /dev/null
+++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/arm64_kexec-arm64.c-workaround-for-getrandom-syscall.patch
@@ -0,0 +1,58 @@
+From a99fc685214452aedabf9ac105bb99357006aa26 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 b143e86..88d4168 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) {
+ fprintf(stderr, "%s: Reading random bytes failed.\n",
+ __func__);
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/arm64_kexec-image-header.h-add-missing-le64toh.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/arm64_kexec-image-header.h-add-missing-le64toh.patch
new file mode 100644
index 0000000000..cdcecdf41e
--- /dev/null
+++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/arm64_kexec-image-header.h-add-missing-le64toh.patch
@@ -0,0 +1,37 @@
+From c5e7928217ee73640d25c6471c4619601cb1ba19 Mon Sep 17 00:00:00 2001
+From: Andrea Adami <andrea.adami@gmail.com>
+Date: Thu, 19 Apr 2018 10:47:17 +0200
+Subject: [PATCH] kexec/arm64: image-header.h: add macro for le64toh
+
+Fix
+
+ kexec-arm64.c:(.text+0x370): undefined reference to `le64toh'
+ kexec-arm64.c:(.text+0x380): undefined reference to `le64toh'
+
+Upstream-Status: Inappropriate [klibc specific]
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+
+---
+ kexec/arch/arm64/image-header.h | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/kexec/arch/arm64/image-header.h b/kexec/arch/arm64/image-header.h
+index 158d411..10ed2d6 100644
+--- a/kexec/arch/arm64/image-header.h
++++ b/kexec/arch/arm64/image-header.h
+@@ -8,6 +8,15 @@
+ #include <endian.h>
+ #include <stdint.h>
+
++#ifdef __KLIBC__
++#if __BYTE_ORDER == __LITTLE_ENDIAN
++#define le64toh(x) (x)
++#endif
++#if __BYTE_ORDER == __BIG_ENDIAN
++#define le64toh(x) __bswap_64(x)
++#endif
++#endif
++
+ /**
+ * struct arm64_image_header - arm64 kernel image header.
+ *
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/arm_crashdump-fix-buffer-align.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/arm_crashdump-fix-buffer-align.patch
new file mode 100644
index 0000000000..89a5d34c83
--- /dev/null
+++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/arm_crashdump-fix-buffer-align.patch
@@ -0,0 +1,44 @@
+From edf186f45d543e318400195cc25175387ff3f5c4 Mon Sep 17 00:00:00 2001
+From: Andrea Adami <andrea.adami@gmail.com>
+Date: Sun, 26 Aug 2018 21:40:06 +0200
+Subject: [PATCH] arm- backport from oe-core
+
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+
+---
+Upstream-Status: Pending
+
+ kexec/arch/arm/crashdump-arm.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/kexec/arch/arm/crashdump-arm.c b/kexec/arch/arm/crashdump-arm.c
+index daa4788..3f72b38 100644
+--- a/kexec/arch/arm/crashdump-arm.c
++++ b/kexec/arch/arm/crashdump-arm.c
+@@ -240,6 +240,7 @@ int load_crashdump_segments(struct kexec_info *info, char *mod_cmdline)
+ void *buf;
+ int err;
+ int last_ranges;
++ unsigned short align_bit_shift = 20;
+
+ /*
+ * First fetch all the memory (RAM) ranges that we are going to pass to
+@@ -281,6 +282,7 @@ int load_crashdump_segments(struct kexec_info *info, char *mod_cmdline)
+
+ /* for support LPAE enabled kernel*/
+ elf_info.class = ELFCLASS64;
++ align_bit_shift = 21;
+
+ err = crash_create_elf64_headers(info, &elf_info,
+ usablemem_rgns.ranges,
+@@ -302,8 +304,9 @@ int load_crashdump_segments(struct kexec_info *info, char *mod_cmdline)
+ * 1MB) so that available memory passed in kernel command line will be
+ * aligned to 1MB. This is because kernel create_mapping() wants memory
+ * regions to be aligned to SECTION_SIZE.
++ * The SECTION_SIZE of LPAE kernel is '1UL << 21' defined in pgtable-3level.h
+ */
+- elfcorehdr = add_buffer_phys_virt(info, buf, bufsz, bufsz, 1 << 20,
++ elfcorehdr = add_buffer_phys_virt(info, buf, bufsz, bufsz, 1 << align_bit_shift,
+ crash_kernel_mem.start,
+ crash_kernel_mem.end, -1, 0);
+
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/arm_crashdump.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/arm_crashdump.patch
new file mode 100644
index 0000000000..2d1d64db1c
--- /dev/null
+++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/arm_crashdump.patch
@@ -0,0 +1,31 @@
+From 8ee92bc915d650e188caaa3df0a798ac2002f64e Mon Sep 17 00:00:00 2001
+From: OpenEmbedded <oe.patch@oe>
+Date: Wed, 11 Apr 2018 22:51:00 +0200
+Subject: [PATCH] use our elf.h header
+
+Fix
+
+ kexec/arch/arm/crashdump-arm.c:70:13: error: 'EM_ARM' undeclared here
+ (not in a function); did you mean 'EM_860'?
+ .machine = EM_ARM,
+
+Upstream-Status: Inappropriate [klibc specific]
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+
+---
+ kexec/arch/arm/crashdump-arm.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/kexec/arch/arm/crashdump-arm.c b/kexec/arch/arm/crashdump-arm.c
+index 3f72b38..af2600d 100644
+--- a/kexec/arch/arm/crashdump-arm.c
++++ b/kexec/arch/arm/crashdump-arm.c
+@@ -21,7 +21,7 @@
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+ #include <limits.h>
+-#include <elf.h>
++#include "../../../include/elf.h"
+ #include <errno.h>
+ #include <stdio.h>
+ #include <stdlib.h>
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/include_next.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/include_next.patch
new file mode 100644
index 0000000000..29ea1d9f18
--- /dev/null
+++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/include_next.patch
@@ -0,0 +1,24 @@
+Upstream-Status: Pending
+
+--- a/kexec/Makefile
++++ b/kexec/Makefile
+@@ -110,7 +110,7 @@ $(KEXEC): $(KEXEC_OBJS) $(UTIL_LIB)
+ @$(MKDIR) -p $(@D)
+ $(LINK.o) -o $@ $^ $(CFLAGS) $(LIBS)
+
+-$(KEXEC): CPPFLAGS+=-I$(srcdir)/kexec/arch/$(ARCH)/include
++$(KEXEC): CPPFLAGS+=-I$(srcdir)/kexec/arch/$(ARCH)/include -I$(shell $(CC) -print-file-name=include)
+
+ kexec/fs2dt.o: CPPFLAGS+=$($(ARCH)_FS2DT_INCLUDE)
+
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -46,7 +46,7 @@ TARGET_CFLAGS = @TARGET_CFLAGS@
+ # Base compiler flags. These are extended by the subcomponent-Makefiles
+ # where necessary.
+ CPPFLAGS = @CPPFLAGS@ -I$(srcdir)/include -I$(srcdir)/util_lib/include \
+- -Iinclude/ $($(ARCH)_CPPFLAGS)
++ -Iinclude/ $($(ARCH)_CPPFLAGS) -I$(shell $(CC) -print-file-name=include)
+ CFLAGS = @CFLAGS@ -static -fno-strict-aliasing -Wall -Wstrict-prototypes
+ PURGATORY_EXTRA_CFLAGS = @PURGATORY_EXTRA_CFLAGS@
+ ASFLAGS = @ASFLAGS@ $($(ARCH)_ASFLAGS)
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/kexec-x32.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/kexec-x32.patch
new file mode 100644
index 0000000000..3c2594a5d0
--- /dev/null
+++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/kexec-x32.patch
@@ -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
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/klibc-reboot.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/klibc-reboot.patch
new file mode 100644
index 0000000000..1c58e92b35
--- /dev/null
+++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/klibc-reboot.patch
@@ -0,0 +1,23 @@
+From 9c99b0748dd0ea1aaf3836378ee75fa5af099a19 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 15 Mar 2019 00:22:40 -0700
+
+---
+Upstream-Status: Pending
+
+ kexec/kexec.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/kexec/kexec.c b/kexec/kexec.c
+index 157c577..5da0d67 100644
+--- a/kexec/kexec.c
++++ b/kexec/kexec.c
+@@ -901,7 +901,7 @@ static int my_exec(void)
+ if (xen_present())
+ xen_kexec_exec();
+ else
+- reboot(LINUX_REBOOT_CMD_KEXEC);
++ reboot(LINUX_REBOOT_CMD_KEXEC, NULL);
+ /* I have failed if I make it here */
+ fprintf(stderr, "kexec failed: %s\n",
+ strerror(errno));
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/powerpc-purgatory-Makefile-remove-unknown-flags.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/powerpc-purgatory-Makefile-remove-unknown-flags.patch
new file mode 100644
index 0000000000..8fb9f443aa
--- /dev/null
+++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/powerpc-purgatory-Makefile-remove-unknown-flags.patch
@@ -0,0 +1,31 @@
+From 3683b3f3e318fa711f6018f154d950c51d5b597a Mon Sep 17 00:00:00 2001
+From: Andrea Adami <andrea.adami@gmail.com>
+Date: Thu, 19 Apr 2018 19:26:53 +0200
+Subject: [PATCH] powerpc/purgatory: Makefile: remove unknown flags for powerpc
+
+Fix
+
+ powerpc-oe-linux-musl-ld: unrecognised emulation mode: soft-float
+ Supported emulations: elf32ppclinux elf32ppc elf32ppcsim elf32lppclinux
+ elf32lppc elf32lppcsim elf64ppc elf64lppc
+
+Upstream-Status: Inappropriate [klibc specific]
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+
+---
+ purgatory/arch/ppc/Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/purgatory/arch/ppc/Makefile b/purgatory/arch/ppc/Makefile
+index c85c58a..cd44a16 100644
+--- a/purgatory/arch/ppc/Makefile
++++ b/purgatory/arch/ppc/Makefile
+@@ -7,7 +7,7 @@ ppc_PURGATORY_SRCS += purgatory/arch/ppc/misc.S
+ ppc_PURGATORY_SRCS += purgatory/arch/ppc/purgatory-ppc.c
+ ppc_PURGATORY_SRCS += purgatory/arch/ppc/console-ppc.c
+
+-ppc_PURGATORY_EXTRA_CFLAGS += -msoft-float
++#ppc_PURGATORY_EXTRA_CFLAGS += -msoft-float
+
+ dist += purgatory/arch/ppc/Makefile $(ppc_PURGATORY_SRCS) \
+ purgatory/arch/ppc/purgatory-ppc.h purgatory/arch/ppc/ppc_asm.h
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/powerpc_change-the-memory-size-limit.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/powerpc_change-the-memory-size-limit.patch
new file mode 100644
index 0000000000..67a3cac1fa
--- /dev/null
+++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/powerpc_change-the-memory-size-limit.patch
@@ -0,0 +1,36 @@
+From 6fec72bd7264478c214169b0f30f649304bd39ea Mon Sep 17 00:00:00 2001
+From: Quanyang Wang <quanyang.wang@windriver.com>
+Date: Tue, 16 Jun 2015 12:59:57 +0800
+Subject: [PATCH] powerpc: change the memory size limit
+
+When run "kexec" in powerpc board, the kexec has a limit that
+the kernel text and bss size must be less than 24M. But now
+some kernel size exceed the limit. So we need to change the limit,
+else will get the error log as below:
+
+my_load:669: do
+Could not find a free area of memory of 0x12400 bytes...
+Could not find a free area of memory of 0x13000 bytes...
+locate_hole failed
+
+Upstream-Status: Pending
+
+Signed-off-by: Quanyang Wang <quanyang.wang@windriver.com>
+
+---
+ kexec/arch/ppc/kexec-ppc.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/kexec/arch/ppc/kexec-ppc.h b/kexec/arch/ppc/kexec-ppc.h
+index 04e728e..6bae9ec 100644
+--- a/kexec/arch/ppc/kexec-ppc.h
++++ b/kexec/arch/ppc/kexec-ppc.h
+@@ -44,7 +44,7 @@ void dol_ppc_usage(void);
+ * During inital setup the kernel does not map the whole memory but a part of
+ * it. On Book-E that is 64MiB, 601 24MiB or 256MiB (if possible).
+ */
+-#define KERNEL_ACCESS_TOP (24 * 1024 * 1024)
++#define KERNEL_ACCESS_TOP (36 * 1024 * 1024)
+
+ /* boot block version 17 as defined by the linux kernel */
+ struct bootblock {
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/x86_basename.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/x86_basename.patch
new file mode 100644
index 0000000000..568f19758a
--- /dev/null
+++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/x86_basename.patch
@@ -0,0 +1,30 @@
+From 7823956149c78e1996c567d1965803456df090f8 Mon Sep 17 00:00:00 2001
+From: OpenEmbedded <oe.patch@oe>
+Date: Wed, 11 Apr 2018 22:51:05 +0200
+Subject: [PATCH] replace basename() with sscanf()
+
+klibc lacks basename()
+
+Upstream-Status: Inappropriate [klibc specific]
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+
+---
+ kexec/arch/i386/x86-linux-setup.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/kexec/arch/i386/x86-linux-setup.c b/kexec/arch/i386/x86-linux-setup.c
+index 6cda12c..5514c1c 100644
+--- a/kexec/arch/i386/x86-linux-setup.c
++++ b/kexec/arch/i386/x86-linux-setup.c
+@@ -304,9 +304,9 @@ static int add_edd_entry(struct x86_linux_param_header *real_mode,
+ memset(edd_info, 0, sizeof(struct edd_info));
+
+ /* extract the device number */
+- if (sscanf(basename(sysfs_name), "int13_dev%hhx", &devnum) != 1) {
++ if (sscanf(strrchr(sysfs_name,'/') + 1, "int13_dev%hhx", &devnum) != 1) {
+ fprintf(stderr, "Invalid format of int13_dev dir "
+- "entry: %s\n", basename(sysfs_name));
++ "entry: %s\n", strrchr(sysfs_name,'/') + 1);
+ return -1;
+ }
+
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/x86_kexec_test.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/x86_kexec_test.patch
new file mode 100644
index 0000000000..ecb0d85e26
--- /dev/null
+++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/x86_kexec_test.patch
@@ -0,0 +1,30 @@
+From e26fe77b0ac9acc2c8086586d267aa7160969d2d Mon Sep 17 00:00:00 2001
+From: OpenEmbedded <oe.patch@oe>
+Date: Wed, 11 Apr 2018 22:51:05 +0200
+Subject: [PATCH] do not build test
+
+The purpose of this recipe is to build the smallest
+binaries. kexek klibc-static for armv5 is around 86 KiB
+
+Upstream-Status: Inappropriate [embedded specific]
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+
+---
+ Makefile.in | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index dbf1fb6..440730d 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -173,8 +173,8 @@ PSRCS:=$(foreach s, $(SRCS), $(PACKAGE_NAME)-$(PACKAGE_VERSION)/$(s))
+ PGSRCS:=$(foreach s, $(GENERATED_SRCS), $(PACKAGE_NAME)-$(PACKAGE_VERSION)/$(s))
+
+ MAN_PAGES:=$(KEXEC_MANPAGE) $(VMCORE_DMESG_MANPAGE)
+-BINARIES_i386:=$(KEXEC_TEST)
+-BINARIES_x86_64:=$(KEXEC_TEST)
++#BINARIES_i386:=$(KEXEC_TEST)
++#BINARIES_x86_64:=$(KEXEC_TEST)
+ BINARIES:=$(KEXEC) $(VMCORE_DMESG) $(BINARIES_$(ARCH))
+
+ UNINSTALL_KDUMP = $(sbindir)/kdump
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/x86_sys_io.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/x86_sys_io.patch
new file mode 100644
index 0000000000..ef9a411b5c
--- /dev/null
+++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/x86_sys_io.patch
@@ -0,0 +1,36 @@
+From 444160260a11022ecd84cd605fe8c22b316e6546 Mon Sep 17 00:00:00 2001
+From: OpenEmbedded <oe.patch@oe>
+Date: Wed, 11 Apr 2018 22:51:04 +0200
+Subject: [PATCH] i386: replace with our io.h
+
+Upstream-Status: Inappropriate [klibc specific]
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+
+---
+ purgatory/arch/i386/pic.c | 2 +-
+ purgatory/arch/i386/vga.c | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/purgatory/arch/i386/pic.c b/purgatory/arch/i386/pic.c
+index c23c459..c5f7046 100644
+--- a/purgatory/arch/i386/pic.c
++++ b/purgatory/arch/i386/pic.c
+@@ -16,7 +16,7 @@
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+-#include <sys/io.h>
++#include "include/arch/io.h"
+ #include <purgatory.h>
+ #include "purgatory-x86.h"
+
+diff --git a/purgatory/arch/i386/vga.c b/purgatory/arch/i386/vga.c
+index e65976c..d079d96 100644
+--- a/purgatory/arch/i386/vga.c
++++ b/purgatory/arch/i386/vga.c
+@@ -1,4 +1,4 @@
+-#include <sys/io.h>
++#include "include/arch/io.h"
+ #include <purgatory.h>
+ #include "purgatory-x86.h"
+
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/x86_vfscanf.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/x86_vfscanf.patch
new file mode 100644
index 0000000000..af8467a239
--- /dev/null
+++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/x86_vfscanf.patch
@@ -0,0 +1,43 @@
+From c6934455ec2337e6da7ea9fbc3486ce9beeb5d82 Mon Sep 17 00:00:00 2001
+From: OpenEmbedded <oe.patch@oe>
+Date: Wed, 11 Apr 2018 22:51:05 +0200
+Subject: [PATCH] x86-linux-setup.c: replace vfscanf() with vsscanf()
+
+klibc lacks vfscanf()
+
+Upstream-Status: Inappropriate [klibc specific]
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+
+---
+ kexec/arch/i386/x86-linux-setup.c | 11 ++++++++++-
+ 1 file changed, 10 insertions(+), 1 deletion(-)
+
+diff --git a/kexec/arch/i386/x86-linux-setup.c b/kexec/arch/i386/x86-linux-setup.c
+index 5514c1c..bdb28c6 100644
+--- a/kexec/arch/i386/x86-linux-setup.c
++++ b/kexec/arch/i386/x86-linux-setup.c
+@@ -200,6 +200,8 @@ static int file_scanf(const char *dir, const char *file, const char *scanf_line,
+ FILE *fp;
+ int retno;
+ char filename[PATH_MAX];
++ long line_size = MAX_LINE;
++ char *line;
+
+ snprintf(filename, PATH_MAX, "%s/%s", dir, file);
+ filename[PATH_MAX-1] = 0;
+@@ -210,7 +212,14 @@ static int file_scanf(const char *dir, const char *file, const char *scanf_line,
+ }
+
+ va_start(argptr, scanf_line);
+- retno = vfscanf(fp, scanf_line, argptr);
++
++ line = xmalloc(sizeof(line) * line_size);
++ while(fgets(line, sizeof(line), fp) != NULL ) {
++ line_size += MAX_LINE;
++ line = xrealloc(line,line_size);
++ }
++ retno = vsscanf(line, scanf_line, argptr);
++
+ va_end(argptr);
+
+ fclose(fp);
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc_2.0.2.bb b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc_2.0.2.bb
deleted file mode 100644
index 49c53a3ea4..0000000000
--- a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc_2.0.2.bb
+++ /dev/null
@@ -1,41 +0,0 @@
-# the binaries are statically linked against klibc
-require recipes-kernel/kexec/kexec-tools.inc
-SUMMARY = "Kexec tools, statically compiled against klibc"
-SRC_URI[md5sum] = "92eff93b097475b7767f8c98df84408a"
-SRC_URI[sha256sum] = "09e180ff36dee087182cdc939ba6c6917b6adbb5fc12d589f31fd3659b6471f2"
-
-inherit klibc
-
-FILESPATH =. "${FILE_DIRNAME}/kexec-tools-${PV}:"
-
-SRC_URI = "${KERNELORG_MIRROR}/linux/utils/kernel/kexec/kexec-tools-${PV}.tar.gz"
-
-SRC_URI += " \
- file://kexec-elf-rel.patch \
- file://kexec-syscall.patch \
- file://cflags_static.patch \
- file://ifdown_errno.patch \
- file://purgatory_flags.patch \
- file://purgatory_string.patch \
- file://sha256.patch \
- file://sysconf_nrprocessors.patch \
- file://fix-out-of-tree-build.patch \
- file://0001-Adjust-the-order-of-headers-to-fix-build-for-musl.patch \
- "
-
-SRC_URI_append_arm = " file://arm_crashdump.patch"
-SRC_URI_append_powerpc = " file://ppc__lshrdi3.patch"
-SRC_URI_append_x86 = " file://x86_sys_io.patch file://x86_basename.patch file://x86_vfscanf.patch file://x86_kexec_test.patch"
-SRC_URI_append_x86-64 = " file://x86_sys_io.patch file://x86_basename.patch file://x86_vfscanf.patch file://x86_kexec_test.patch"
-
-S = "${WORKDIR}/kexec-tools-${PV}"
-
-EXTRA_OECONF += "--without-zlib --without-lzma --without-xen"
-
-CFLAGS += "-I${STAGING_DIR_HOST}${libdir}/klibc/include -I${STAGING_DIR_HOST}${libdir}/klibc/include/bits32"
-CFLAGS_x86-64 += "-I${STAGING_DIR_HOST}${libdir}/klibc/include -I${STAGING_DIR_HOST}${libdir}/klibc/include/bits64"
-
-PACKAGES =+ "kexec-klibc kdump-klibc"
-
-FILES_kexec-klibc = "${sbindir}/kexec"
-FILES_kdump-klibc = "${sbindir}/kdump"
diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc_git.bb b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc_git.bb
new file mode 100644
index 0000000000..363cdb9adf
--- /dev/null
+++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc_git.bb
@@ -0,0 +1,95 @@
+# the binaries are statically linked against klibc
+SUMMARY = "Kexec tools, statically compiled against klibc"
+HOMEPAGE = "http://kernel.org/pub/linux/utils/kernel/kexec/"
+SECTION = "kernel/userland"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ea5bed2f60d357618ca161ad539f7c0a \
+ file://kexec/kexec.c;beginline=1;endline=20;md5=af10f6ae4a8715965e648aa687ad3e09"
+PV = "2.0.18+git"
+
+DEPENDS = "zlib xz"
+
+inherit klibc autotools siteinfo
+
+SRC_URI = "git://git.kernel.org/pub/scm/utils/kernel/kexec/kexec-tools.git;branch=master"
+SRCREV = "5750980cdbbc33ef75bfba6660295b932376ce15"
+
+BUILD_PATCHES = "file://0001-force-static-build.patch \
+ file://0002-Adjust-the-order-of-headers-to-fix-build-for-musl.patch \
+ file://Fix-building-on-x86_64-with-binutils-2.41.patch \
+ "
+
+KLIBC_PATCHES += " \
+ file://0003-kexec-elf-rel-use-our-elf.h.patch \
+ file://0004-kexec-elf-exec.c-replace-with-our-err.h.patch \
+ file://0005-crashdump-elf.c-work-around-for-sysconf-_SC_NPROCESS.patch \
+ file://0006-kexec-syscall.h-work-around-missing-syscall-wrapper.patch \
+ file://0007-kexec.c-add-guard-around-ENOTSUP.patch \
+ file://0008-kexec.c-replace-mising-BLKGETSIZE64.patch \
+ file://0009-vmcore-dmesg.c-work-around-missing-imaxdiv.patch \
+ file://0010-fs2dt.c-work-around-missing-getline.patch \
+ file://0011-purgatory-Makefile-adapt-to-klcc.patch \
+ file://0012-purgatory-string.c-avoid-inclusion-of-string.h.patch \
+ file://0013-sha256.h-avoid-inclusion-of-sys-types.h.patch \
+ file://0014-add-if_nameindex-from-musl.patch \
+ file://0015-vmcore-dmesg-fix-warning.patch \
+ file://klibc-reboot.patch \
+ file://include_next.patch \
+ "
+
+WARNING_FIXES = ""
+FROM_OE_CORE = "file://arm_crashdump-fix-buffer-align.patch \
+ file://powerpc_change-the-memory-size-limit.patch \
+ file://kexec-x32.patch"
+
+SRC_URI += "${BUILD_PATCHES} ${KLIBC_PATCHES} ${WARNING_FIXES} ${FROM_OE_CORE}"
+
+SRC_URI:append:arm = " file://arm_crashdump.patch"
+
+SRC_URI:append:mips = " file://140-mips_disable_devicetree_support.patch"
+SRC_URI:append:mipsel = " file://140-mips_disable_devicetree_support.patch"
+
+SRC_URI:append:x86 = " file://x86_sys_io.patch file://x86_basename.patch \
+ file://x86_vfscanf.patch file://x86_kexec_test.patch"
+
+SRC_URI:append:x86-64 = " file://x86_sys_io.patch file://x86_basename.patch \
+ file://x86_vfscanf.patch file://x86_kexec_test.patch"
+
+SRC_URI:append:aarch64 = " file://arm64_kexec-image-header.h-add-missing-le64toh.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"
+
+S = "${WORKDIR}/git"
+
+EXTRA_OECONF += "--without-zlib --without-lzma --without-xen"
+
+# fix purgatory/printf.c:2:10: fatal error: limits.h: No such file or directory
+# fix include/limits.h:42:10: fatal error: bitsize/limits.h: No such file or directory
+CFLAGS += "-O2 -I${STAGING_DIR_HOST}${libdir}/klibc/include -I${S}/purgatory/include \
+ -I${STAGING_DIR_HOST}${libdir}/klibc/include/bits${SITEINFO_BITS}"
+
+do_compile:prepend() {
+ # Remove the prepackaged config.h from the source tree as it overrides
+ # the same file generated by configure and placed in the build tree
+ rm -f ${S}/include/config.h
+
+ # Remove the '*.d' file to make sure the recompile is OK
+ for dep in `find ${B} -type f -name '*.d'`; do
+ dep_no_d="`echo $dep | sed 's#.d$##'`"
+ # Remove file.d when there is a file.o
+ if [ -f "$dep_no_d.o" ]; then
+ rm -f $dep
+ fi
+ done
+}
+
+PACKAGES =+ "kexec-klibc vmcore-dmesg-klibc"
+
+FILES:kexec-klibc = "${sbindir}/kexec"
+FILES:vmcore-dmesg-klibc = "${sbindir}/vmcore-dmesg"
+
+INSANE_SKIP:${PN} = "arch"
+
+COMPATIBLE_HOST = '(x86_64.*|i.86.*|arm.*|aarch64.*|powerpc.*|mips.*)-(linux|freebsd.*)'