Initial commit
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
SUMMARY = "A daemon for delivering ACPI events"
|
||||
DESCRIPTION = "ACPID is a completely flexible, totally extensible daemon for \
|
||||
delivering ACPI events. It listens on netlink interface (or on the \
|
||||
deprecated file /proc/acpi/event), and when an event occurs, executes programs \
|
||||
to handle the event. The programs it executes are configured through a set of \
|
||||
configuration files, which can be dropped into place by packages or by the \
|
||||
admin."
|
||||
HOMEPAGE = "http://sourceforge.net/projects/acpid2"
|
||||
BUGTRACKER = "http://sourceforge.net/p/acpid2/tickets/?source=navbar"
|
||||
SECTION = "base"
|
||||
LICENSE = "GPL-2.0-or-later"
|
||||
|
||||
SRC_URI = "${SOURCEFORGE_MIRROR}/acpid2/acpid-${PV}.tar.xz \
|
||||
file://init \
|
||||
file://acpid.service \
|
||||
file://0001-Replace-stat64-with-stat.patch \
|
||||
"
|
||||
|
||||
CVE_PRODUCT = "acpid2"
|
||||
|
||||
inherit autotools update-rc.d systemd
|
||||
|
||||
INITSCRIPT_NAME = "acpid"
|
||||
INITSCRIPT_PARAMS = "defaults"
|
||||
|
||||
SYSTEMD_SERVICE:${PN} = "acpid.service"
|
||||
|
||||
do_install:append () {
|
||||
install -d ${D}${sysconfdir}/init.d
|
||||
sed -e 's,/usr/sbin,${sbindir},g' ${WORKDIR}/init > ${D}${sysconfdir}/init.d/acpid
|
||||
chmod 755 ${D}${sysconfdir}/init.d/acpid
|
||||
|
||||
install -d ${D}${sysconfdir}/acpi
|
||||
install -d ${D}${sysconfdir}/acpi/events
|
||||
|
||||
install -d ${D}${systemd_system_unitdir}
|
||||
install -m 0644 ${WORKDIR}/acpid.service ${D}${systemd_system_unitdir}
|
||||
sed -i -e 's,@SBINDIR@,${sbindir},g' ${D}${systemd_system_unitdir}/acpid.service
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
From 4b729235a9e96f120feee7e3746818aad0f3b924 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Wed, 14 Dec 2022 15:04:30 -0800
|
||||
Subject: [PATCH] Replace stat64 with stat
|
||||
|
||||
It already checks for largefile support in configure.ac via
|
||||
AC_SYS_LARGEFILE macro, which will ensure that 64bit elements
|
||||
are correctly setup for stat APIs on platforms needing large
|
||||
file support.
|
||||
|
||||
Upstream-Status: Submitted [https://sourceforge.net/p/acpid2/code/merge-requests/5/]
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
sock.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/sock.c b/sock.c
|
||||
index 9e04501..3121fb7 100644
|
||||
--- a/sock.c
|
||||
+++ b/sock.c
|
||||
@@ -54,8 +54,8 @@ int non_root_clients;
|
||||
static int
|
||||
isfdtype(int fd, int fdtype)
|
||||
{
|
||||
- struct stat64 st;
|
||||
- if (fstat64(fd, &st) != 0)
|
||||
+ struct stat st;
|
||||
+ if (fstat(fd, &st) != 0)
|
||||
return -1;
|
||||
return ((st.st_mode & S_IFMT) == (mode_t)fdtype);
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
[Unit]
|
||||
Description=ACPI Event Daemon
|
||||
After=syslog.target
|
||||
|
||||
[Service]
|
||||
Type=forking
|
||||
ExecStart=@SBINDIR@/acpid
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
Executable
+31
@@ -0,0 +1,31 @@
|
||||
#! /bin/sh -e
|
||||
|
||||
test -x /usr/sbin/acpid || exit 0
|
||||
test -d /proc/acpi || exit 0
|
||||
mkdir -p /etc/acpi/events
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
echo -n "Starting Advanced Configuration and Power Interface daemon: "
|
||||
if [ ! -d /etc/acpi/events ]; then
|
||||
echo "There is not any rule configuration file."
|
||||
else
|
||||
start-stop-daemon -o -S -x /usr/sbin/acpid -- -c /etc/acpi/events
|
||||
echo "acpid."
|
||||
fi
|
||||
;;
|
||||
stop)
|
||||
echo -n "Stopping Advanced Configuration and Power Interface daemon: "
|
||||
start-stop-daemon -o -K -x /usr/sbin/acpid
|
||||
echo "acpid."
|
||||
;;
|
||||
restart|force-reload)
|
||||
$0 stop
|
||||
$0 start
|
||||
;;
|
||||
*)
|
||||
echo "Usage: /etc/init.d/acpid {start|stop|restart|force-reload}"
|
||||
exit 1
|
||||
esac
|
||||
|
||||
exit 0
|
||||
@@ -0,0 +1,6 @@
|
||||
require acpid.inc
|
||||
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b \
|
||||
file://acpid.h;endline=24;md5=324a9cf225ae69ddaad1bf9d942115b5"
|
||||
|
||||
SRC_URI[sha256sum] = "2d095c8cfcbc847caec746d62cdc8d0bff1ec1bc72ef7c674c721e04da6ab333"
|
||||
@@ -0,0 +1,71 @@
|
||||
# Copyright Matthias Hentges <devel@hentges.net> (c) 2007
|
||||
# License: MIT (see http://www.opensource.org/licenses/mit-license.php
|
||||
# for a copy of the license)
|
||||
#
|
||||
# Filename: alsa-state.bb
|
||||
|
||||
SUMMARY = "Alsa scenario files to enable alsa state restoration"
|
||||
HOMEPAGE = "http://www.alsa-project.org/"
|
||||
DESCRIPTION = "Alsa Scenario Files - an init script and state files to restore \
|
||||
sound state at system boot and save it at system shut down."
|
||||
LICENSE = "MIT & GPL-2.0-or-later"
|
||||
LIC_FILES_CHKSUM = " \
|
||||
file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420 \
|
||||
file://alsa-state-init;beginline=3;endline=4;md5=3ff7ecbf534d7d503941abe8e268ef50 \
|
||||
"
|
||||
PV = "0.2.0"
|
||||
PR = "r5"
|
||||
|
||||
SRC_URI = "\
|
||||
file://asound.conf \
|
||||
file://asound.state \
|
||||
file://alsa-state-init \
|
||||
"
|
||||
|
||||
S = "${WORKDIR}"
|
||||
|
||||
# As the recipe doesn't inherit systemd.bbclass, we need to set this variable
|
||||
# manually to avoid unnecessary postinst/preinst generated.
|
||||
python __anonymous() {
|
||||
if not bb.utils.contains('DISTRO_FEATURES', 'sysvinit', True, False, d):
|
||||
d.setVar("INHIBIT_UPDATERCD_BBCLASS", "1")
|
||||
}
|
||||
|
||||
inherit update-rc.d
|
||||
|
||||
INITSCRIPT_NAME = "alsa-state"
|
||||
INITSCRIPT_PARAMS = "start 39 S . stop 31 0 6 ."
|
||||
|
||||
do_install() {
|
||||
# Only install the init script when 'sysvinit' is in DISTRO_FEATURES.
|
||||
if ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','true','false',d)}; then
|
||||
sed -i -e "s:#STATEDIR#:${localstatedir}/lib/alsa:g" ${WORKDIR}/alsa-state-init
|
||||
install -d ${D}${sysconfdir}/init.d
|
||||
install -m 0755 ${WORKDIR}/alsa-state-init ${D}${sysconfdir}/init.d/alsa-state
|
||||
fi
|
||||
|
||||
install -d ${D}/${localstatedir}/lib/alsa
|
||||
install -d ${D}${sysconfdir}
|
||||
install -m 0644 ${WORKDIR}/asound.conf ${D}${sysconfdir}
|
||||
install -m 0644 ${WORKDIR}/*.state ${D}${localstatedir}/lib/alsa
|
||||
}
|
||||
|
||||
PACKAGES += "alsa-states"
|
||||
|
||||
RRECOMMENDS:alsa-state = "alsa-states"
|
||||
|
||||
RDEPENDS:${PN} = "alsa-utils-alsactl"
|
||||
FILES:${PN} = "${sysconfdir}/init.d ${sysconfdir}/asound.conf"
|
||||
CONFFILES:${PN} = "${sysconfdir}/asound.conf"
|
||||
|
||||
FILES:alsa-states = "${localstatedir}/lib/alsa/*.state"
|
||||
|
||||
pkg_postinst:${PN}() {
|
||||
if test -z "$D"
|
||||
then
|
||||
if test -x ${sbindir}/alsactl
|
||||
then
|
||||
${sbindir}/alsactl -g -f ${localstatedir}/lib/alsa/asound.state restore
|
||||
fi
|
||||
fi
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
#! /bin/sh
|
||||
#
|
||||
# Copyright Matthias Hentges <devel@hentges.net> (c) 2007
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#
|
||||
# Filename: alsa-state
|
||||
|
||||
# source function library
|
||||
. /etc/init.d/functions
|
||||
|
||||
asound_restore(){
|
||||
echo "ALSA: Restoring mixer settings..."
|
||||
if test -x /usr/sbin/alsactl -a -e #STATEDIR#/asound.state
|
||||
then
|
||||
/usr/sbin/alsactl -f #STATEDIR#/asound.state restore &
|
||||
fi
|
||||
}
|
||||
|
||||
asound_store(){
|
||||
echo "ALSA: Storing mixer settings..."
|
||||
if test -x /usr/sbin/alsactl
|
||||
then
|
||||
/usr/sbin/alsactl -f #STATEDIR#/asound.state store
|
||||
fi
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
start) asound_restore ;;
|
||||
stop) asound_store ;;
|
||||
status)
|
||||
status /usr/sbin/alsactl;
|
||||
exit $?
|
||||
;;
|
||||
*)
|
||||
echo "Usage: /etc/init.d/alsa-state {start|stop|status}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
@@ -0,0 +1 @@
|
||||
# Global alsa-lib configuration
|
||||
@@ -0,0 +1 @@
|
||||
# Dummy file, do not delete
|
||||
@@ -0,0 +1,32 @@
|
||||
DESCRIPTION = "Linux user-space application to modify the EFI Boot Manager."
|
||||
SUMMARY = "EFI Boot Manager"
|
||||
HOMEPAGE = "https://github.com/rhboot/efibootmgr"
|
||||
SECTION = "base"
|
||||
|
||||
LICENSE = "GPL-2.0-or-later"
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
|
||||
|
||||
DEPENDS = "efivar popt"
|
||||
|
||||
COMPATIBLE_HOST = "(i.86|x86_64|arm|aarch64).*-linux"
|
||||
|
||||
SRC_URI = "git://github.com/rhinstaller/efibootmgr.git;protocol=https;branch=main"
|
||||
SRCREV = "c3f9f0534e32158f62c43564036878b93b9e0fd6"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
inherit pkgconfig
|
||||
|
||||
# The directory under the ESP that the default bootloader is found in. When
|
||||
# wic uses a subdirectory, this should use the same one too.
|
||||
EFIDIR ?= "/"
|
||||
|
||||
EXTRA_OEMAKE += "'EFIDIR=${EFIDIR}'"
|
||||
|
||||
CFLAGS += " -Wno-error"
|
||||
|
||||
do_install () {
|
||||
oe_runmake install DESTDIR="${D}"
|
||||
}
|
||||
|
||||
CLEANBROKEN = "1"
|
||||
@@ -0,0 +1,26 @@
|
||||
From f39a1481a9e465387901d52b07ae56dedcc3838b Mon Sep 17 00:00:00 2001
|
||||
From: Alexander Kanavin <alex@linutronix.de>
|
||||
Date: Sun, 16 Jan 2022 18:25:33 +0100
|
||||
Subject: [PATCH] docs: do not build efisecdb manpage
|
||||
|
||||
It requires mandoc, which oe-core does not have.
|
||||
|
||||
Upstream-Status: Inappropriate [oe-core specific]
|
||||
Signed-off-by: Alexander Kanavin <alex@linutronix.de>
|
||||
---
|
||||
docs/Makefile | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/docs/Makefile b/docs/Makefile
|
||||
index c9bf585..91a6078 100644
|
||||
--- a/docs/Makefile
|
||||
+++ b/docs/Makefile
|
||||
@@ -5,7 +5,7 @@ include $(TOPDIR)/src/include/version.mk
|
||||
include $(TOPDIR)/src/include/rules.mk
|
||||
include $(TOPDIR)/src/include/defaults.mk
|
||||
|
||||
-MAN1TARGETS = efisecdb.1 \
|
||||
+MAN1TARGETS = \
|
||||
efivar.1
|
||||
|
||||
MAN3TARGETS = efi_append_variable.3 \
|
||||
@@ -0,0 +1,38 @@
|
||||
SUMMARY = "Tools to manipulate UEFI variables"
|
||||
DESCRIPTION = "efivar provides a simple command line interface to the UEFI variable facility"
|
||||
HOMEPAGE = "https://github.com/rhboot/efivar"
|
||||
|
||||
LICENSE = "LGPL-2.1-or-later"
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=6626bb1e20189cfa95f2c508ba286393"
|
||||
|
||||
COMPATIBLE_HOST = "(i.86|x86_64|arm|aarch64).*-linux"
|
||||
|
||||
SRC_URI = "git://github.com/rhinstaller/efivar.git;branch=main;protocol=https \
|
||||
file://0001-docs-do-not-build-efisecdb-manpage.patch \
|
||||
"
|
||||
SRCREV = "90e88b221e8bc60dc50f3246051369b8f580c0d0"
|
||||
PV .= "+39+git${SRCPV}"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
inherit pkgconfig
|
||||
|
||||
export CCLD_FOR_BUILD = "${BUILD_CCLD}"
|
||||
|
||||
# Upstream uses --add-needed in gcc.specs which gold doesn't support, so
|
||||
# enforce BFD.
|
||||
LDFLAGS += "-fuse-ld=bfd"
|
||||
|
||||
do_compile() {
|
||||
oe_runmake ERRORS= HOST_CFLAGS="${BUILD_CFLAGS}" HOST_LDFLAGS="${BUILD_LDFLAGS}"
|
||||
}
|
||||
|
||||
do_install() {
|
||||
oe_runmake install DESTDIR=${D}
|
||||
}
|
||||
|
||||
BBCLASSEXTEND = "native"
|
||||
|
||||
RRECOMMENDS:${PN}:class-target = "kernel-module-efivarfs"
|
||||
|
||||
CLEANBROKEN = "1"
|
||||
+50
@@ -0,0 +1,50 @@
|
||||
#!/bin/sh
|
||||
|
||||
if [ -e /etc/formfactor/machconfig ]; then
|
||||
. /etc/formfactor/machconfig
|
||||
fi
|
||||
|
||||
if [ -z "$HAVE_TOUCHSCREEN" ]; then
|
||||
HAVE_TOUCHSCREEN=0
|
||||
fi
|
||||
|
||||
if [ -z "$HAVE_KEYBOARD" ]; then
|
||||
HAVE_KEYBOARD=1
|
||||
fi
|
||||
|
||||
if [ -z "$HAVE_KEYBOARD_PORTRAIT" ]; then
|
||||
HAVE_KEYBOARD_PORTRAIT=0
|
||||
fi
|
||||
|
||||
if [ -z "$HAVE_KEYBOARD_LANDSCAPE" ]; then
|
||||
HAVE_KEYBOARD_LANDSCAPE=0
|
||||
fi
|
||||
|
||||
if [ -z "$DISPLAY_CAN_ROTATE" ]; then
|
||||
DISPLAY_CAN_ROTATE=0
|
||||
fi
|
||||
|
||||
if [ -z "$DISPLAY_ORIENTATION" ]; then
|
||||
DISPLAY_ORIENTATION=0
|
||||
fi
|
||||
|
||||
if [ -e "/dev/fb" ]; then
|
||||
if [ -z "$DISPLAY_WIDTH_PIXELS" ]; then
|
||||
DISPLAY_WIDTH_PIXELS=`/usr/sbin/fbset | grep geometry | awk '{ print $2 }'`
|
||||
fi
|
||||
|
||||
if [ -z "$DISPLAY_HEIGHT_PIXELS" ]; then
|
||||
DISPLAY_HEIGHT_PIXELS=`/usr/sbin/fbset | grep geometry | awk '{ print $3 }'`
|
||||
fi
|
||||
|
||||
if [ -z "$DISPLAY_BPP" ]; then
|
||||
DISPLAY_BPP=`/usr/sbin/fbset | grep geometry | awk '{ print $6 }'`
|
||||
fi
|
||||
fi
|
||||
|
||||
#
|
||||
# No way to guess these or have any defaults
|
||||
#
|
||||
#DISPLAY_WIDTH_MM
|
||||
#DISPLAY_HEIGHT_MM
|
||||
#DISPLAY_SUBPIXEL_ORDER=
|
||||
@@ -0,0 +1,10 @@
|
||||
HAVE_TOUCHSCREEN=1
|
||||
HAVE_KEYBOARD=1
|
||||
|
||||
DISPLAY_CAN_ROTATE=0
|
||||
DISPLAY_ORIENTATION=0
|
||||
#DISPLAY_WIDTH_PIXELS=640
|
||||
#DISPLAY_HEIGHT_PIXELS=480
|
||||
#DISPLAY_BPP=16
|
||||
DISPLAY_DPI=150
|
||||
DISPLAY_SUBPIXEL_ORDER=vrgb
|
||||
@@ -0,0 +1,10 @@
|
||||
HAVE_TOUCHSCREEN=1
|
||||
HAVE_KEYBOARD=1
|
||||
|
||||
DISPLAY_CAN_ROTATE=0
|
||||
DISPLAY_ORIENTATION=0
|
||||
#DISPLAY_WIDTH_PIXELS=640
|
||||
#DISPLAY_HEIGHT_PIXELS=480
|
||||
#DISPLAY_BPP=16
|
||||
DISPLAY_DPI=150
|
||||
DISPLAY_SUBPIXEL_ORDER=vrgb
|
||||
@@ -0,0 +1,10 @@
|
||||
HAVE_TOUCHSCREEN=1
|
||||
HAVE_KEYBOARD=1
|
||||
|
||||
DISPLAY_CAN_ROTATE=0
|
||||
DISPLAY_ORIENTATION=0
|
||||
#DISPLAY_WIDTH_PIXELS=640
|
||||
#DISPLAY_HEIGHT_PIXELS=480
|
||||
#DISPLAY_BPP=16
|
||||
DISPLAY_DPI=150
|
||||
DISPLAY_SUBPIXEL_ORDER=vrgb
|
||||
@@ -0,0 +1,10 @@
|
||||
HAVE_TOUCHSCREEN=1
|
||||
HAVE_KEYBOARD=1
|
||||
|
||||
DISPLAY_CAN_ROTATE=0
|
||||
DISPLAY_ORIENTATION=0
|
||||
DISPLAY_WIDTH_PIXELS=640
|
||||
DISPLAY_HEIGHT_PIXELS=480
|
||||
DISPLAY_BPP=16
|
||||
DISPLAY_DPI=150
|
||||
#DISPLAY_SUBPIXEL_ORDER=vrgb
|
||||
@@ -0,0 +1,10 @@
|
||||
HAVE_TOUCHSCREEN=1
|
||||
HAVE_KEYBOARD=1
|
||||
|
||||
DISPLAY_CAN_ROTATE=0
|
||||
DISPLAY_ORIENTATION=0
|
||||
DISPLAY_WIDTH_PIXELS=640
|
||||
DISPLAY_HEIGHT_PIXELS=480
|
||||
DISPLAY_BPP=16
|
||||
DISPLAY_DPI=150
|
||||
#DISPLAY_SUBPIXEL_ORDER=vrgb
|
||||
@@ -0,0 +1,10 @@
|
||||
HAVE_TOUCHSCREEN=1
|
||||
HAVE_KEYBOARD=1
|
||||
|
||||
DISPLAY_CAN_ROTATE=0
|
||||
DISPLAY_ORIENTATION=0
|
||||
DISPLAY_WIDTH_PIXELS=800
|
||||
DISPLAY_HEIGHT_PIXELS=600
|
||||
DISPLAY_BPP=16
|
||||
DISPLAY_DPI=150
|
||||
DISPLAY_SUBPIXEL_ORDER=vrgb
|
||||
@@ -0,0 +1,10 @@
|
||||
HAVE_TOUCHSCREEN=0
|
||||
HAVE_KEYBOARD=0
|
||||
|
||||
DISPLAY_CAN_ROTATE=0
|
||||
DISPLAY_ORIENTATION=0
|
||||
#DISPLAY_WIDTH_PIXELS=640
|
||||
#DISPLAY_HEIGHT_PIXELS=480
|
||||
#DISPLAY_BPP=16
|
||||
DISPLAY_DPI=150
|
||||
DISPLAY_SUBPIXEL_ORDER=vrgb
|
||||
@@ -0,0 +1,10 @@
|
||||
HAVE_TOUCHSCREEN=1
|
||||
HAVE_KEYBOARD=1
|
||||
|
||||
DISPLAY_CAN_ROTATE=0
|
||||
DISPLAY_ORIENTATION=0
|
||||
#DISPLAY_WIDTH_PIXELS=640
|
||||
#DISPLAY_HEIGHT_PIXELS=480
|
||||
#DISPLAY_BPP=16
|
||||
DISPLAY_DPI=150
|
||||
DISPLAY_SUBPIXEL_ORDER=vrgb
|
||||
@@ -0,0 +1,10 @@
|
||||
HAVE_TOUCHSCREEN=1
|
||||
HAVE_KEYBOARD=1
|
||||
|
||||
DISPLAY_CAN_ROTATE=0
|
||||
DISPLAY_ORIENTATION=0
|
||||
#DISPLAY_WIDTH_PIXELS=640
|
||||
#DISPLAY_HEIGHT_PIXELS=480
|
||||
#DISPLAY_BPP=16
|
||||
DISPLAY_DPI=150
|
||||
DISPLAY_SUBPIXEL_ORDER=vrgb
|
||||
@@ -0,0 +1,23 @@
|
||||
SUMMARY = "Device formfactor information"
|
||||
DESCRIPTION = "A formfactor configuration file provides information about the \
|
||||
target hardware for which the image is being built and information that the \
|
||||
build system cannot obtain from other sources such as the kernel."
|
||||
SECTION = "base"
|
||||
LICENSE = "MIT"
|
||||
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
|
||||
PR = "r45"
|
||||
|
||||
SRC_URI = "file://config file://machconfig"
|
||||
S = "${WORKDIR}"
|
||||
|
||||
PACKAGE_ARCH = "${MACHINE_ARCH}"
|
||||
INHIBIT_DEFAULT_DEPS = "1"
|
||||
|
||||
do_install() {
|
||||
# Install file only if it has contents
|
||||
install -d ${D}${sysconfdir}/formfactor/
|
||||
install -m 0644 ${S}/config ${D}${sysconfdir}/formfactor/
|
||||
if [ -s "${S}/machconfig" ]; then
|
||||
install -m 0644 ${S}/machconfig ${D}${sysconfdir}/formfactor/
|
||||
fi
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
Fix building with CLANG-9.0.0
|
||||
|
||||
Fixes
|
||||
clang-9: error: unknown argument: '-maccumulate-outgoing-args'
|
||||
|
||||
Upstream-Status: Submitted [https://sourceforge.net/p/gnu-efi/patches/70/]
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
|
||||
--- a/Make.defaults
|
||||
+++ b/Make.defaults
|
||||
@@ -110,10 +110,10 @@
|
||||
|| ( [ $(GCCVERSION) -eq "4" ] \
|
||||
&& [ $(GCCMINOR) -ge "7" ] ) ) \
|
||||
&& echo 1)
|
||||
- ifeq ($(GCCNEWENOUGH),1)
|
||||
- CPPFLAGS += -DGNU_EFI_USE_MS_ABI -maccumulate-outgoing-args --std=c11
|
||||
- else ifeq ($(USING_CLANG),clang)
|
||||
+ ifeq ($(USING_CLANG),clang)
|
||||
CPPFLAGS += -DGNU_EFI_USE_MS_ABI --std=c11
|
||||
+ else ifeq ($(GCCNEWENOUGH),1)
|
||||
+ CPPFLAGS += -DGNU_EFI_USE_MS_ABI -maccumulate-outgoing-args --std=c11
|
||||
endif
|
||||
|
||||
CFLAGS += -mno-red-zone
|
||||
@@ -0,0 +1,39 @@
|
||||
From f56ddb00a656af2e84f839738fad19909ac65047 Mon Sep 17 00:00:00 2001
|
||||
From: Saul Wold <sgw@linux.intel.com>
|
||||
Date: Sun, 9 Mar 2014 15:22:15 +0200
|
||||
Subject: [PATCH] Fix parallel make failure for archives
|
||||
|
||||
Upstream-Status: Pending
|
||||
|
||||
The lib and gnuefi makefiles were using the lib.a() form which compiles
|
||||
and ar's as a pair instead of compiling all and then ar'ing which can
|
||||
parallelize better. This was resulting in build failures on larger values
|
||||
of -j.
|
||||
|
||||
See http://www.chemie.fu-berlin.de/chemnet/use/info/make/make_toc.html#TOC105
|
||||
for details.
|
||||
|
||||
Signed-off-by: Saul Wold <sgw@linux.intel.com>
|
||||
Signed-off-by: Darren Hart <dvhart@linux.intel.com>
|
||||
[Rebased for 3.0.6]
|
||||
Signed-off-by: California Sullivan <california.l.sullivan@intel.com>
|
||||
[Rebased for 3.0.8]
|
||||
Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
|
||||
|
||||
---
|
||||
lib/Makefile | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/lib/Makefile b/lib/Makefile
|
||||
index 1fc6a47..54b0ca7 100644
|
||||
--- a/lib/Makefile
|
||||
+++ b/lib/Makefile
|
||||
@@ -77,7 +77,7 @@ libsubdirs:
|
||||
$(OBJS): libsubdirs
|
||||
|
||||
libefi.a: $(OBJS)
|
||||
- $(AR) $(ARFLAGS) $@ $^
|
||||
+ $(AR) $(ARFLAGS) $@ $(OBJS)
|
||||
|
||||
clean:
|
||||
rm -f libefi.a *~ $(OBJS) */*.o
|
||||
@@ -0,0 +1,69 @@
|
||||
SUMMARY = "Libraries for producing EFI binaries"
|
||||
HOMEPAGE = "http://sourceforge.net/projects/gnu-efi/"
|
||||
DESCRIPTION = "GNU-EFI aims to Develop EFI applications for ARM-64, ARM-32, x86_64, IA-64 (IPF), IA-32 (x86), and MIPS platforms using the GNU toolchain and the EFI development environment."
|
||||
SECTION = "devel"
|
||||
LICENSE = "GPL-2.0-or-later | BSD-2-Clause"
|
||||
LIC_FILES_CHKSUM = "file://gnuefi/crt0-efi-arm.S;beginline=4;endline=16;md5=e582764a4776e60c95bf9ab617343d36 \
|
||||
file://gnuefi/crt0-efi-aarch64.S;beginline=4;endline=16;md5=e582764a4776e60c95bf9ab617343d36 \
|
||||
file://inc/efishellintf.h;beginline=13;endline=20;md5=202766b79d708eff3cc70fce15fb80c7 \
|
||||
file://lib/arm/math.c;beginline=2;endline=15;md5=8ed772501da77b2b3345aa6df8744c9e \
|
||||
file://lib/arm/initplat.c;beginline=2;endline=15;md5=8ed772501da77b2b3345aa6df8744c9e \
|
||||
file://lib/aarch64/math.c;beginline=2;endline=15;md5=8ed772501da77b2b3345aa6df8744c9e \
|
||||
file://lib/aarch64/initplat.c;beginline=2;endline=15;md5=8ed772501da77b2b3345aa6df8744c9e \
|
||||
"
|
||||
|
||||
SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/files/${BP}.tar.bz2 \
|
||||
file://parallel-make-archives.patch \
|
||||
file://gnu-efi-3.0.9-fix-clang-build.patch \
|
||||
"
|
||||
|
||||
SRC_URI[sha256sum] = "931a257b9c5c1ba65ff519f18373c438a26825f2db7866b163e96d1b168f20ea"
|
||||
|
||||
COMPATIBLE_HOST = "(x86_64.*|i.86.*|aarch64.*|arm.*|riscv64.*)-linux"
|
||||
COMPATIBLE_HOST:armv4 = 'null'
|
||||
|
||||
do_configure:linux-gnux32:prepend() {
|
||||
cp ${STAGING_INCDIR}/gnu/stubs-x32.h ${STAGING_INCDIR}/gnu/stubs-64.h
|
||||
cp ${STAGING_INCDIR}/bits/long-double-32.h ${STAGING_INCDIR}/bits/long-double-64.h
|
||||
}
|
||||
|
||||
def gnu_efi_arch(d):
|
||||
import re
|
||||
tarch = d.getVar("TARGET_ARCH")
|
||||
if re.match("i[3456789]86", tarch):
|
||||
return "ia32"
|
||||
return tarch
|
||||
|
||||
EXTRA_OEMAKE = "'ARCH=${@gnu_efi_arch(d)}' 'CC=${CC}' 'AS=${AS}' 'LD=${LD}' 'AR=${AR}' \
|
||||
'RANLIB=${RANLIB}' 'OBJCOPY=${OBJCOPY}' 'PREFIX=${prefix}' 'LIBDIR=${libdir}' \
|
||||
"
|
||||
|
||||
# gnu-efi's Makefile treats prefix as toolchain prefix, so don't
|
||||
# export it.
|
||||
prefix[unexport] = "1"
|
||||
|
||||
do_install() {
|
||||
oe_runmake install INSTALLROOT="${D}"
|
||||
}
|
||||
|
||||
FILES:${PN} += "${libdir}/*.lds"
|
||||
|
||||
# 64-bit binaries are expected for EFI when targeting X32
|
||||
INSANE_SKIP:${PN}-dev:append:linux-gnux32 = " arch"
|
||||
INSANE_SKIP:${PN}-dev:append:linux-muslx32 = " arch"
|
||||
|
||||
BBCLASSEXTEND = "native"
|
||||
|
||||
# It doesn't support sse, its make.defaults sets:
|
||||
# CFLAGS += -mno-mmx -mno-sse
|
||||
# So also remove -mfpmath=sse from TUNE_CCARGS
|
||||
TUNE_CCARGS:remove = "-mfpmath=sse"
|
||||
|
||||
python () {
|
||||
ccargs = d.getVar('TUNE_CCARGS').split()
|
||||
if '-mx32' in ccargs:
|
||||
# use x86_64 EFI ABI
|
||||
ccargs.remove('-mx32')
|
||||
ccargs.append('-m64')
|
||||
d.setVar('TUNE_CCARGS', ' '.join(ccargs))
|
||||
}
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
From 96d9aa55d29b24e2490d5647a9efc66940fc400f Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Wed, 13 Jan 2016 19:17:31 +0000
|
||||
Subject: [PATCH] Disable -mfpmath=sse as well when SSE is disabled
|
||||
|
||||
Fixes
|
||||
|
||||
configure:20574: i586-poky-linux-gcc -m32 -march=core2 -msse3
|
||||
-mtune=generic -mfpmath=sse
|
||||
--sysroot=/usr/local/dev/yocto/grubtest2/build/tmp/sysroots/emenlow -o
|
||||
conftest -O2 -pipe -g -feliminate-unused-debug-types -Wall -W -Wshadow
|
||||
-Wpointer-arith -Wmissing-prototypes -Wundef -Wstrict-prototypes -g
|
||||
-falign-jumps=1 -falign-loops=1 -falign-functions=1 -mno-mmx -mno-sse
|
||||
-mno-sse2 -mno-3dnow -fno-dwarf2-cfi-asm -m32 -fno-stack-protector
|
||||
-mno-stack-arg-probe -Werror -nostdlib -Wl,--defsym,___main=0x8100
|
||||
-Wall -W -I$(top_srcdir)/include -I$(top_builddir)/include
|
||||
-DGRUB_MACHINE_PCBIOS=1 -DGRUB_MACHINE=I386_PC -Wl,-O1
|
||||
-Wl,--hash-style=gnu -Wl,--as-needed conftest.c >&5
|
||||
conftest.c:1:0: error: SSE instruction set disabled, using 387
|
||||
arithmetics [-Werror]
|
||||
cc1: all warnings being treated as errors
|
||||
|
||||
Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
|
||||
Upstream-Status: Pending
|
||||
---
|
||||
configure.ac | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 7656f24..0868ea9 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -824,7 +824,7 @@ fi
|
||||
if ( test "x$target_cpu" = xi386 || test "x$target_cpu" = xx86_64 ) && test "x$platform" != xemu; then
|
||||
# Some toolchains enable these features by default, but they need
|
||||
# registers that aren't set up properly in GRUB.
|
||||
- TARGET_CFLAGS="$TARGET_CFLAGS -mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-3dnow"
|
||||
+ TARGET_CFLAGS="$TARGET_CFLAGS -mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-3dnow -mfpmath=387"
|
||||
fi
|
||||
|
||||
# GRUB doesn't use float or doubles at all. Yet some toolchains may decide
|
||||
@@ -0,0 +1,39 @@
|
||||
From e4c41db74b8972285cbdfe614c95c1ffd97d70e1 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 26 Mar 2021 11:59:43 -0700
|
||||
Subject: [PATCH] RISC-V: Restore the typcast to 64bit type
|
||||
|
||||
this makes the type promotions clear and explicit
|
||||
It was already typecasted to long but was accidentally dropped in [1]
|
||||
which stated to cause failures on riscv32 as reported in [2]
|
||||
|
||||
[1] https://git.savannah.gnu.org/cgit/grub.git/commit/?id=2bf40e9e5be9808b17852e688eead87acff14420
|
||||
[2] https://savannah.gnu.org/bugs/index.php?60283
|
||||
|
||||
Upstream-Status: Submitted
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
Cc: Andreas Schwab <schwab@suse.de>
|
||||
Cc: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
Cc: Chester Lin <clin@suse.com>
|
||||
Cc: Nikita Ermakov <arei@altlinux.org>
|
||||
Cc: Alistair Francis <alistair.francis@wdc.com>
|
||||
---
|
||||
util/grub-mkimagexx.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/util/grub-mkimagexx.c b/util/grub-mkimagexx.c
|
||||
index 00f49ccaa..ac677d03d 100644
|
||||
--- a/util/grub-mkimagexx.c
|
||||
+++ b/util/grub-mkimagexx.c
|
||||
@@ -1242,7 +1242,7 @@ SUFFIX (relocate_addrs) (Elf_Ehdr *e, struct section_metadata *smd,
|
||||
*/
|
||||
|
||||
sym_addr += addend;
|
||||
- off = sym_addr - target_section_addr - offset - image_target->vaddr_offset;
|
||||
+ off = (grub_int64_t)sym_addr - target_section_addr - offset - image_target->vaddr_offset;
|
||||
|
||||
switch (ELF_R_TYPE (info))
|
||||
{
|
||||
--
|
||||
2.31.1
|
||||
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
From eb486898dac8cbc29b2cc39f911b657c3417ae34 Mon Sep 17 00:00:00 2001
|
||||
From: Fangrui Song via Grub-devel <grub-devel@gnu.org>
|
||||
Date: Thu, 26 Aug 2021 09:02:31 -0700
|
||||
Subject: [PATCH 1/2] configure: Remove obsoleted -malign-{jumps, loops,
|
||||
functions}
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
The GCC warns "cc1: warning: ‘-malign-loops’ is obsolete, use ‘-falign-loops’".
|
||||
The Clang silently ignores -malign-{jumps,loops,functions}.
|
||||
|
||||
The preferred -falign-* forms have been supported since GCC 3.2. So, just
|
||||
remove -malign-{jumps,loops,functions}.
|
||||
|
||||
Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/grub.git/commit/?id=eb486898dac8cbc29b2cc39f911b657c3417ae34]
|
||||
Signed-off-by: Fangrui Song <maskray@google.com>
|
||||
Acked-by: Paul Menzel <pmenzel@molgen.mpg.de>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
configure.ac | 9 ---------
|
||||
1 file changed, 9 deletions(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index bee28dbeb..9a12151bd 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -805,17 +805,8 @@ if test "x$target_cpu" = xi386; then
|
||||
[grub_cv_cc_falign_loop=no])
|
||||
])
|
||||
|
||||
- AC_CACHE_CHECK([whether -malign-loops works], [grub_cv_cc_malign_loop], [
|
||||
- CFLAGS="$TARGET_CFLAGS -malign-loops=1 -Werror"
|
||||
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
|
||||
- [grub_cv_cc_malign_loop=yes],
|
||||
- [grub_cv_cc_malign_loop=no])
|
||||
- ])
|
||||
-
|
||||
if test "x$grub_cv_cc_falign_loop" = xyes; then
|
||||
TARGET_CFLAGS="$TARGET_CFLAGS -falign-jumps=1 -falign-loops=1 -falign-functions=1"
|
||||
- elif test "x$grub_cv_cc_malign_loop" = xyes; then
|
||||
- TARGET_CFLAGS="$TARGET_CFLAGS -malign-jumps=1 -malign-loops=1 -malign-functions=1"
|
||||
fi
|
||||
fi
|
||||
|
||||
--
|
||||
2.37.3
|
||||
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
From f1217c803cec90813eb834dde7829f4961b2a2e4 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Thu, 17 Feb 2022 15:07:02 -0800
|
||||
Subject: [PATCH] configure.ac: Use _zicsr_zifencei extentions on riscv
|
||||
|
||||
From version 2.38, binutils defaults to ISA spec version 20191213. This
|
||||
means that the csr read/write (csrr*/csrw*) instructions and fence.i
|
||||
instruction has separated from the `I` extension, become two standalone
|
||||
extensions: Zicsr and Zifencei.
|
||||
|
||||
The fix is to specify those extensions explicitely in -march. Since we
|
||||
are now using binutils 2.38+ in OE this is ok, a more upstreamable fix for
|
||||
grub will be to detect these extentions, however thats not easy to
|
||||
implement
|
||||
|
||||
Upstream-Status: Inappropriate [OE specific]
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
configure.ac | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index c7fc55a..072f2c9 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -849,14 +849,14 @@ if test x"$platform" != xemu ; then
|
||||
[grub_cv_target_cc_soft_float="-mgeneral-regs-only"], [])
|
||||
fi
|
||||
if test "x$target_cpu" = xriscv32; then
|
||||
- CFLAGS="$TARGET_CFLAGS -march=rv32imac -mabi=ilp32 -Werror"
|
||||
+ CFLAGS="$TARGET_CFLAGS -march=rv32imac_zicsr_zifencei -mabi=ilp32 -Werror"
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
|
||||
- [grub_cv_target_cc_soft_float="-march=rv32imac -mabi=ilp32"], [])
|
||||
+ [grub_cv_target_cc_soft_float="-march=rv32imac_zicsr_zifencei -mabi=ilp32"], [])
|
||||
fi
|
||||
if test "x$target_cpu" = xriscv64; then
|
||||
- CFLAGS="$TARGET_CFLAGS -march=rv64imac -mabi=lp64 -Werror"
|
||||
+ CFLAGS="$TARGET_CFLAGS -march=rv64imac_zicsr_zifencei -mabi=lp64 -Werror"
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
|
||||
- [grub_cv_target_cc_soft_float="-march=rv64imac -mabi=lp64"], [])
|
||||
+ [grub_cv_target_cc_soft_float="-march=rv64imac_zicsr_zifencei -mabi=lp64"], [])
|
||||
fi
|
||||
if test "x$target_cpu" = xia64; then
|
||||
CFLAGS="$TARGET_CFLAGS -mno-inline-float-divide -mno-inline-sqrt -Werror"
|
||||
--
|
||||
2.35.1
|
||||
|
||||
+115
@@ -0,0 +1,115 @@
|
||||
From 1f511ae054fe42dce7aedfbfe0f234fa1e0a7a3e Mon Sep 17 00:00:00 2001
|
||||
From: Zhang Boyang <zhangboyang.id@gmail.com>
|
||||
Date: Fri, 5 Aug 2022 00:51:20 +0800
|
||||
Subject: [PATCH] font: Fix size overflow in grub_font_get_glyph_internal()
|
||||
|
||||
The length of memory allocation and file read may overflow. This patch
|
||||
fixes the problem by using safemath macros.
|
||||
|
||||
There is a lot of code repetition like "(x * y + 7) / 8". It is unsafe
|
||||
if overflow happens. This patch introduces grub_video_bitmap_calc_1bpp_bufsz().
|
||||
It is safe replacement for such code. It has safemath-like prototype.
|
||||
|
||||
This patch also introduces grub_cast(value, pointer), it casts value to
|
||||
typeof(*pointer) then store the value to *pointer. It returns true when
|
||||
overflow occurs or false if there is no overflow. The semantics of arguments
|
||||
and return value are designed to be consistent with other safemath macros.
|
||||
|
||||
Signed-off-by: Zhang Boyang <zhangboyang.id@gmail.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
|
||||
Upstream-Status: Backport from
|
||||
[https://git.savannah.gnu.org/cgit/grub.git/commit/?id=9c76ec09ae08155df27cd237eaea150b4f02f532]
|
||||
|
||||
Signed-off-by: Xiangyu Chen <xiangyu.chen@windriver.com>
|
||||
|
||||
---
|
||||
grub-core/font/font.c | 17 +++++++++++++----
|
||||
include/grub/bitmap.h | 18 ++++++++++++++++++
|
||||
include/grub/safemath.h | 2 ++
|
||||
3 files changed, 33 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/grub-core/font/font.c b/grub-core/font/font.c
|
||||
index d09bb38..876b5b6 100644
|
||||
--- a/grub-core/font/font.c
|
||||
+++ b/grub-core/font/font.c
|
||||
@@ -739,7 +739,8 @@ grub_font_get_glyph_internal (grub_font_t font, grub_uint32_t code)
|
||||
grub_int16_t xoff;
|
||||
grub_int16_t yoff;
|
||||
grub_int16_t dwidth;
|
||||
- int len;
|
||||
+ grub_ssize_t len;
|
||||
+ grub_size_t sz;
|
||||
|
||||
if (index_entry->glyph)
|
||||
/* Return cached glyph. */
|
||||
@@ -766,9 +767,17 @@ grub_font_get_glyph_internal (grub_font_t font, grub_uint32_t code)
|
||||
return 0;
|
||||
}
|
||||
|
||||
- len = (width * height + 7) / 8;
|
||||
- glyph = grub_malloc (sizeof (struct grub_font_glyph) + len);
|
||||
- if (!glyph)
|
||||
+ /* Calculate real struct size of current glyph. */
|
||||
+ if (grub_video_bitmap_calc_1bpp_bufsz (width, height, &len) ||
|
||||
+ grub_add (sizeof (struct grub_font_glyph), len, &sz))
|
||||
+ {
|
||||
+ remove_font (font);
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ /* Allocate and initialize the glyph struct. */
|
||||
+ glyph = grub_malloc (sz);
|
||||
+ if (glyph == NULL)
|
||||
{
|
||||
remove_font (font);
|
||||
return 0;
|
||||
diff --git a/include/grub/bitmap.h b/include/grub/bitmap.h
|
||||
index 5728f8c..0d9603f 100644
|
||||
--- a/include/grub/bitmap.h
|
||||
+++ b/include/grub/bitmap.h
|
||||
@@ -23,6 +23,7 @@
|
||||
#include <grub/symbol.h>
|
||||
#include <grub/types.h>
|
||||
#include <grub/video.h>
|
||||
+#include <grub/safemath.h>
|
||||
|
||||
struct grub_video_bitmap
|
||||
{
|
||||
@@ -79,6 +80,23 @@ grub_video_bitmap_get_height (struct grub_video_bitmap *bitmap)
|
||||
return bitmap->mode_info.height;
|
||||
}
|
||||
|
||||
+/*
|
||||
+ * Calculate and store the size of data buffer of 1bit bitmap in result.
|
||||
+ * Equivalent to "*result = (width * height + 7) / 8" if no overflow occurs.
|
||||
+ * Return true when overflow occurs or false if there is no overflow.
|
||||
+ * This function is intentionally implemented as a macro instead of
|
||||
+ * an inline function. Although a bit awkward, it preserves data types for
|
||||
+ * safemath macros and reduces macro side effects as much as possible.
|
||||
+ *
|
||||
+ * XXX: Will report false overflow if width * height > UINT64_MAX.
|
||||
+ */
|
||||
+#define grub_video_bitmap_calc_1bpp_bufsz(width, height, result) \
|
||||
+({ \
|
||||
+ grub_uint64_t _bitmap_pixels; \
|
||||
+ grub_mul ((width), (height), &_bitmap_pixels) ? 1 : \
|
||||
+ grub_cast (_bitmap_pixels / GRUB_CHAR_BIT + !!(_bitmap_pixels % GRUB_CHAR_BIT), (result)); \
|
||||
+})
|
||||
+
|
||||
void EXPORT_FUNC (grub_video_bitmap_get_mode_info) (struct grub_video_bitmap *bitmap,
|
||||
struct grub_video_mode_info *mode_info);
|
||||
|
||||
diff --git a/include/grub/safemath.h b/include/grub/safemath.h
|
||||
index c17b89b..bb0f826 100644
|
||||
--- a/include/grub/safemath.h
|
||||
+++ b/include/grub/safemath.h
|
||||
@@ -30,6 +30,8 @@
|
||||
#define grub_sub(a, b, res) __builtin_sub_overflow(a, b, res)
|
||||
#define grub_mul(a, b, res) __builtin_mul_overflow(a, b, res)
|
||||
|
||||
+#define grub_cast(a, res) grub_add ((a), 0, (res))
|
||||
+
|
||||
#else
|
||||
#error gcc 5.1 or newer or clang 3.8 or newer is required
|
||||
#endif
|
||||
+66
@@ -0,0 +1,66 @@
|
||||
It enable the metadata_csum_seed feature by default in e2fsprogs 1.47.0 and
|
||||
causes grub doesn't work. Backport patch to make grub support this feature.
|
||||
|
||||
Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/grub.git/commit/?id=7fd5fef]
|
||||
|
||||
Signed-off-by: Kai Kang <kai.kang@windriver.com>
|
||||
|
||||
From 7fd5feff97c4b1f446f8fcf6d37aca0c64e7c763 Mon Sep 17 00:00:00 2001
|
||||
From: Javier Martinez Canillas <javierm@redhat.com>
|
||||
Date: Fri, 11 Jun 2021 21:36:16 +0200
|
||||
Subject: [PATCH] fs/ext2: Ignore checksum seed incompat feature
|
||||
|
||||
This incompat feature is used to denote that the filesystem stored its
|
||||
metadata checksum seed in the superblock. This is used to allow tune2fs
|
||||
changing the UUID on a mounted metdata_csum filesystem without having
|
||||
to rewrite all the disk metadata. However, the GRUB doesn't use the
|
||||
metadata checksum at all. So, it can just ignore this feature if it
|
||||
is enabled. This is consistent with the GRUB filesystem code in general
|
||||
which just does a best effort to access the filesystem's data.
|
||||
|
||||
The checksum seed incompat feature has to be removed from the ignore
|
||||
list if the support for metadata checksum verification is added to the
|
||||
GRUB ext2 driver later.
|
||||
|
||||
Suggested-by: Eric Sandeen <esandeen@redhat.com>
|
||||
Suggested-by: Lukas Czerner <lczerner@redhat.com>
|
||||
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
|
||||
Reviewed-by: Lukas Czerner <lczerner@redhat.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/fs/ext2.c | 10 ++++++++--
|
||||
1 file changed, 8 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/grub-core/fs/ext2.c b/grub-core/fs/ext2.c
|
||||
index e7dd78e66..4953a1591 100644
|
||||
--- a/grub-core/fs/ext2.c
|
||||
+++ b/grub-core/fs/ext2.c
|
||||
@@ -103,6 +103,7 @@ GRUB_MOD_LICENSE ("GPLv3+");
|
||||
#define EXT4_FEATURE_INCOMPAT_64BIT 0x0080
|
||||
#define EXT4_FEATURE_INCOMPAT_MMP 0x0100
|
||||
#define EXT4_FEATURE_INCOMPAT_FLEX_BG 0x0200
|
||||
+#define EXT4_FEATURE_INCOMPAT_CSUM_SEED 0x2000
|
||||
#define EXT4_FEATURE_INCOMPAT_ENCRYPT 0x10000
|
||||
|
||||
/* The set of back-incompatible features this driver DOES support. Add (OR)
|
||||
@@ -123,10 +124,15 @@ GRUB_MOD_LICENSE ("GPLv3+");
|
||||
* mmp: Not really back-incompatible - was added as such to
|
||||
* avoid multiple read-write mounts. Safe to ignore for this
|
||||
* RO driver.
|
||||
+ * checksum seed: Not really back-incompatible - was added to allow tools
|
||||
+ * such as tune2fs to change the UUID on a mounted metadata
|
||||
+ * checksummed filesystem. Safe to ignore for now since the
|
||||
+ * driver doesn't support checksum verification. However, it
|
||||
+ * has to be removed from this list if the support is added later.
|
||||
*/
|
||||
#define EXT2_DRIVER_IGNORED_INCOMPAT ( EXT3_FEATURE_INCOMPAT_RECOVER \
|
||||
- | EXT4_FEATURE_INCOMPAT_MMP)
|
||||
-
|
||||
+ | EXT4_FEATURE_INCOMPAT_MMP \
|
||||
+ | EXT4_FEATURE_INCOMPAT_CSUM_SEED)
|
||||
|
||||
#define EXT3_JOURNAL_MAGIC_NUMBER 0xc03b3998U
|
||||
|
||||
--
|
||||
2.34.1
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
From 8f47ed4aaefba087b6ca76e59c9f832b6a0702bc Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Wed, 13 Jan 2016 19:28:00 +0000
|
||||
Subject: [PATCH] grub.d/10_linux.in: add oe's kernel name
|
||||
|
||||
Our kernel's name is bzImage, we need add it to grub.d/10_linux.in so
|
||||
that the grub-mkconfig and grub-install can work correctly.
|
||||
|
||||
We only need add the bzImage to util/grub.d/10_linux.in, but also add it
|
||||
to util/grub.d/20_linux_xen.in to keep compatibility.
|
||||
|
||||
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
|
||||
Upstream-Status: Inappropriate [OE specific]
|
||||
|
||||
---
|
||||
util/grub.d/10_linux.in | 6 +++---
|
||||
util/grub.d/20_linux_xen.in | 2 +-
|
||||
2 files changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
|
||||
index 4532266..cba2617 100644
|
||||
--- a/util/grub.d/10_linux.in
|
||||
+++ b/util/grub.d/10_linux.in
|
||||
@@ -164,12 +164,12 @@ machine=`uname -m`
|
||||
case "x$machine" in
|
||||
xi?86 | xx86_64)
|
||||
list=
|
||||
- for i in /boot/vmlinuz-* /vmlinuz-* /boot/kernel-* ; do
|
||||
+ for i in /boot/bzImage-* /bzImage-* /boot/vmlinuz-* /vmlinuz-* /boot/kernel-* ; do
|
||||
if grub_file_is_not_garbage "$i" ; then list="$list $i" ; fi
|
||||
done ;;
|
||||
- *)
|
||||
+ *)
|
||||
list=
|
||||
- for i in /boot/vmlinuz-* /boot/vmlinux-* /vmlinuz-* /vmlinux-* /boot/kernel-* ; do
|
||||
+ for i in /boot/bzImage-* /boot/vmlinuz-* /boot/vmlinux-* /bzImage-* /vmlinuz-* /vmlinux-* /boot/kernel-* ; do
|
||||
if grub_file_is_not_garbage "$i" ; then list="$list $i" ; fi
|
||||
done ;;
|
||||
esac
|
||||
diff --git a/util/grub.d/20_linux_xen.in b/util/grub.d/20_linux_xen.in
|
||||
index 96179ea..98d16ae 100644
|
||||
--- a/util/grub.d/20_linux_xen.in
|
||||
+++ b/util/grub.d/20_linux_xen.in
|
||||
@@ -154,7 +154,7 @@ EOF
|
||||
}
|
||||
|
||||
linux_list=
|
||||
-for i in /boot/vmlinu[xz]-* /vmlinu[xz]-* /boot/kernel-*; do
|
||||
+for i in /boot/bzImage[xz]-* /bzImage[xz]-* /boot/vmlinu[xz]-* /vmlinu[xz]-* /boot/kernel-*; do
|
||||
if grub_file_is_not_garbage "$i"; then
|
||||
basename=$(basename $i)
|
||||
version=$(echo $basename | sed -e "s,^[^0-9]*-,,g")
|
||||
@@ -0,0 +1,48 @@
|
||||
From 64be669638e198bc0c7c1a344547265dfacd2470 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Mon, 23 Jan 2023 15:29:02 -0800
|
||||
Subject: [PATCH] risc-v: Handle R_RISCV_CALL_PLT reloc
|
||||
|
||||
GNU assembler starting 2.40 release always generates R_RISCV_CALL_PLT
|
||||
reloc for call in assembler [1], similarly llvm does not make
|
||||
distinction between R_RISCV_CALL_PLT and R_RISCV_CALL [2]
|
||||
|
||||
Upstream-Status: Submitted [https://lists.gnu.org/archive/html/grub-devel/2023-02/msg00143.html]
|
||||
|
||||
[1] https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=70f35d72ef04cd23771875c1661c9975044a749c
|
||||
[2] https://reviews.llvm.org/D132530
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
grub-core/kern/riscv/dl.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
--- a/grub-core/kern/riscv/dl.c
|
||||
+++ b/grub-core/kern/riscv/dl.c
|
||||
@@ -188,6 +188,7 @@ grub_arch_dl_relocate_symbols (grub_dl_t
|
||||
break;
|
||||
|
||||
case R_RISCV_CALL:
|
||||
+ case R_RISCV_CALL_PLT:
|
||||
{
|
||||
grub_uint32_t *abs_place = place;
|
||||
grub_ssize_t off = sym_addr - (grub_addr_t) place;
|
||||
--- a/util/grub-mkimagexx.c
|
||||
+++ b/util/grub-mkimagexx.c
|
||||
@@ -1294,6 +1294,7 @@ SUFFIX (relocate_addrs) (Elf_Ehdr *e, st
|
||||
}
|
||||
break;
|
||||
case R_RISCV_CALL:
|
||||
+ case R_RISCV_CALL_PLT:
|
||||
{
|
||||
grub_uint32_t hi20, lo12;
|
||||
|
||||
@@ -1725,6 +1726,7 @@ translate_relocation_pe (struct translat
|
||||
case R_RISCV_BRANCH:
|
||||
case R_RISCV_JAL:
|
||||
case R_RISCV_CALL:
|
||||
+ case R_RISCV_CALL_PLT:
|
||||
case R_RISCV_PCREL_HI20:
|
||||
case R_RISCV_PCREL_LO12_I:
|
||||
case R_RISCV_PCREL_LO12_S:
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
From e372dcb0d4541ee9b9682cde088ec87a7b238ca2 Mon Sep 17 00:00:00 2001
|
||||
From: Fangrui Song via Grub-devel <grub-devel@gnu.org>
|
||||
Date: Thu, 26 Aug 2021 09:02:32 -0700
|
||||
Subject: [PATCH 2/2] configure: Check for -falign-jumps=1 beside
|
||||
-falign-loops=1
|
||||
|
||||
The Clang does not support -falign-jumps and only recently gained support
|
||||
for -falign-loops. The -falign-jumps=1 should be tested beside
|
||||
-fliang-loops=1 to avoid passing unrecognized options to the Clang:
|
||||
|
||||
clang-14: error: optimization flag '-falign-jumps=1' is not supported [-Werror,-Wignored-optimization-argument]
|
||||
|
||||
The -falign-functions=1 is supported by GCC 5.1.0/Clang 3.8.0. So, just
|
||||
add the option unconditionally.
|
||||
|
||||
Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/grub.git/commit/?id=e372dcb0d4541ee9b9682cde088ec87a7b238ca2]
|
||||
Signed-off-by: Fangrui Song <maskray@google.com>
|
||||
Acked-by: Paul Menzel <pmenzel@molgen.mpg.de>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
configure.ac | 15 ++++++++++++++-
|
||||
1 file changed, 14 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 9a12151bd..eeb5d2211 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -798,6 +798,8 @@ fi
|
||||
|
||||
# Force no alignment to save space on i386.
|
||||
if test "x$target_cpu" = xi386; then
|
||||
+ TARGET_CFLAGS="$TARGET_CFLAGS -falign-functions=1"
|
||||
+
|
||||
AC_CACHE_CHECK([whether -falign-loops works], [grub_cv_cc_falign_loop], [
|
||||
CFLAGS="$TARGET_CFLAGS -falign-loops=1 -Werror"
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
|
||||
@@ -806,7 +808,18 @@ if test "x$target_cpu" = xi386; then
|
||||
])
|
||||
|
||||
if test "x$grub_cv_cc_falign_loop" = xyes; then
|
||||
- TARGET_CFLAGS="$TARGET_CFLAGS -falign-jumps=1 -falign-loops=1 -falign-functions=1"
|
||||
+ TARGET_CFLAGS="$TARGET_CFLAGS -falign-loops=1"
|
||||
+ fi
|
||||
+
|
||||
+ AC_CACHE_CHECK([whether -falign-jumps works], [grub_cv_cc_falign_jumps], [
|
||||
+ CFLAGS="$TARGET_CFLAGS -falign-jumps=1 -Werror"
|
||||
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
|
||||
+ [grub_cv_cc_falign_jumps=yes],
|
||||
+ [grub_cv_cc_falign_jumps=no])
|
||||
+ ])
|
||||
+
|
||||
+ if test "x$grub_cv_cc_falign_jumps" = xyes; then
|
||||
+ TARGET_CFLAGS="$TARGET_CFLAGS -falign-jumps=1"
|
||||
fi
|
||||
fi
|
||||
|
||||
--
|
||||
2.37.3
|
||||
|
||||
+179
@@ -0,0 +1,179 @@
|
||||
From e623866d9286410156e8b9d2c82d6253a1b22d08 Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Axtens <dja@axtens.net>
|
||||
Date: Tue, 6 Jul 2021 18:51:35 +1000
|
||||
Subject: [PATCH] video/readers/png: Drop greyscale support to fix heap
|
||||
out-of-bounds write
|
||||
|
||||
A 16-bit greyscale PNG without alpha is processed in the following loop:
|
||||
|
||||
for (i = 0; i < (data->image_width * data->image_height);
|
||||
i++, d1 += 4, d2 += 2)
|
||||
{
|
||||
d1[R3] = d2[1];
|
||||
d1[G3] = d2[1];
|
||||
d1[B3] = d2[1];
|
||||
}
|
||||
|
||||
The increment of d1 is wrong. d1 is incremented by 4 bytes per iteration,
|
||||
but there are only 3 bytes allocated for storage. This means that image
|
||||
data will overwrite somewhat-attacker-controlled parts of memory - 3 bytes
|
||||
out of every 4 following the end of the image.
|
||||
|
||||
This has existed since greyscale support was added in 2013 in commit
|
||||
3ccf16dff98f (grub-core/video/readers/png.c: Support grayscale).
|
||||
|
||||
Saving starfield.png as a 16-bit greyscale image without alpha in the gimp
|
||||
and attempting to load it causes grub-emu to crash - I don't think this code
|
||||
has ever worked.
|
||||
|
||||
Delete all PNG greyscale support.
|
||||
|
||||
Fixes: CVE-2021-3695
|
||||
|
||||
Signed-off-by: Daniel Axtens <dja@axtens.net>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
|
||||
Upstream-Status: Backport
|
||||
CVE: CVE-2021-3695
|
||||
|
||||
Reference to upstream patch:
|
||||
https://git.savannah.gnu.org/cgit/grub.git/commit/?id=e623866d9286410156e8b9d2c82d6253a1b22d08
|
||||
|
||||
Signed-off-by: Yongxin Liu <yongxin.liu@windriver.com>
|
||||
---
|
||||
grub-core/video/readers/png.c | 87 +++--------------------------------
|
||||
1 file changed, 7 insertions(+), 80 deletions(-)
|
||||
|
||||
diff --git a/grub-core/video/readers/png.c b/grub-core/video/readers/png.c
|
||||
index 35ae553c8..a3161e25b 100644
|
||||
--- a/grub-core/video/readers/png.c
|
||||
+++ b/grub-core/video/readers/png.c
|
||||
@@ -100,7 +100,7 @@ struct grub_png_data
|
||||
|
||||
unsigned image_width, image_height;
|
||||
int bpp, is_16bit;
|
||||
- int raw_bytes, is_gray, is_alpha, is_palette;
|
||||
+ int raw_bytes, is_alpha, is_palette;
|
||||
int row_bytes, color_bits;
|
||||
grub_uint8_t *image_data;
|
||||
|
||||
@@ -296,13 +296,13 @@ grub_png_decode_image_header (struct grub_png_data *data)
|
||||
data->bpp = 3;
|
||||
else
|
||||
{
|
||||
- data->is_gray = 1;
|
||||
- data->bpp = 1;
|
||||
+ return grub_error (GRUB_ERR_BAD_FILE_TYPE,
|
||||
+ "png: color type not supported");
|
||||
}
|
||||
|
||||
if ((color_bits != 8) && (color_bits != 16)
|
||||
&& (color_bits != 4
|
||||
- || !(data->is_gray || data->is_palette)))
|
||||
+ || !data->is_palette))
|
||||
return grub_error (GRUB_ERR_BAD_FILE_TYPE,
|
||||
"png: bit depth must be 8 or 16");
|
||||
|
||||
@@ -331,7 +331,7 @@ grub_png_decode_image_header (struct grub_png_data *data)
|
||||
}
|
||||
|
||||
#ifndef GRUB_CPU_WORDS_BIGENDIAN
|
||||
- if (data->is_16bit || data->is_gray || data->is_palette)
|
||||
+ if (data->is_16bit || data->is_palette)
|
||||
#endif
|
||||
{
|
||||
data->image_data = grub_calloc (data->image_height, data->row_bytes);
|
||||
@@ -899,27 +899,8 @@ grub_png_convert_image (struct grub_png_data *data)
|
||||
int shift;
|
||||
int mask = (1 << data->color_bits) - 1;
|
||||
unsigned j;
|
||||
- if (data->is_gray)
|
||||
- {
|
||||
- /* Generic formula is
|
||||
- (0xff * i) / ((1U << data->color_bits) - 1)
|
||||
- but for allowed bit depth of 1, 2 and for it's
|
||||
- equivalent to
|
||||
- (0xff / ((1U << data->color_bits) - 1)) * i
|
||||
- Precompute the multipliers to avoid division.
|
||||
- */
|
||||
-
|
||||
- const grub_uint8_t multipliers[5] = { 0xff, 0xff, 0x55, 0x24, 0x11 };
|
||||
- for (i = 0; i < (1U << data->color_bits); i++)
|
||||
- {
|
||||
- grub_uint8_t col = multipliers[data->color_bits] * i;
|
||||
- palette[i][0] = col;
|
||||
- palette[i][1] = col;
|
||||
- palette[i][2] = col;
|
||||
- }
|
||||
- }
|
||||
- else
|
||||
- grub_memcpy (palette, data->palette, 3 << data->color_bits);
|
||||
+
|
||||
+ grub_memcpy (palette, data->palette, 3 << data->color_bits);
|
||||
d1c = d1;
|
||||
d2c = d2;
|
||||
for (j = 0; j < data->image_height; j++, d1c += data->image_width * 3,
|
||||
@@ -957,60 +938,6 @@ grub_png_convert_image (struct grub_png_data *data)
|
||||
return;
|
||||
}
|
||||
|
||||
- if (data->is_gray)
|
||||
- {
|
||||
- switch (data->bpp)
|
||||
- {
|
||||
- case 4:
|
||||
- /* 16-bit gray with alpha. */
|
||||
- for (i = 0; i < (data->image_width * data->image_height);
|
||||
- i++, d1 += 4, d2 += 4)
|
||||
- {
|
||||
- d1[R4] = d2[3];
|
||||
- d1[G4] = d2[3];
|
||||
- d1[B4] = d2[3];
|
||||
- d1[A4] = d2[1];
|
||||
- }
|
||||
- break;
|
||||
- case 2:
|
||||
- if (data->is_16bit)
|
||||
- /* 16-bit gray without alpha. */
|
||||
- {
|
||||
- for (i = 0; i < (data->image_width * data->image_height);
|
||||
- i++, d1 += 4, d2 += 2)
|
||||
- {
|
||||
- d1[R3] = d2[1];
|
||||
- d1[G3] = d2[1];
|
||||
- d1[B3] = d2[1];
|
||||
- }
|
||||
- }
|
||||
- else
|
||||
- /* 8-bit gray with alpha. */
|
||||
- {
|
||||
- for (i = 0; i < (data->image_width * data->image_height);
|
||||
- i++, d1 += 4, d2 += 2)
|
||||
- {
|
||||
- d1[R4] = d2[1];
|
||||
- d1[G4] = d2[1];
|
||||
- d1[B4] = d2[1];
|
||||
- d1[A4] = d2[0];
|
||||
- }
|
||||
- }
|
||||
- break;
|
||||
- /* 8-bit gray without alpha. */
|
||||
- case 1:
|
||||
- for (i = 0; i < (data->image_width * data->image_height);
|
||||
- i++, d1 += 3, d2++)
|
||||
- {
|
||||
- d1[R3] = d2[0];
|
||||
- d1[G3] = d2[0];
|
||||
- d1[B3] = d2[0];
|
||||
- }
|
||||
- break;
|
||||
- }
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
{
|
||||
/* Only copy the upper 8 bit. */
|
||||
#ifndef GRUB_CPU_WORDS_BIGENDIAN
|
||||
--
|
||||
2.34.1
|
||||
|
||||
+50
@@ -0,0 +1,50 @@
|
||||
From 210245129c932dc9e1c2748d9d35524fb95b5042 Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Axtens <dja@axtens.net>
|
||||
Date: Tue, 6 Jul 2021 23:25:07 +1000
|
||||
Subject: [PATCH] video/readers/png: Avoid heap OOB R/W inserting huff table
|
||||
items
|
||||
|
||||
In fuzzing we observed crashes where a code would attempt to be inserted
|
||||
into a huffman table before the start, leading to a set of heap OOB reads
|
||||
and writes as table entries with negative indices were shifted around and
|
||||
the new code written in.
|
||||
|
||||
Catch the case where we would underflow the array and bail.
|
||||
|
||||
Fixes: CVE-2021-3696
|
||||
|
||||
Signed-off-by: Daniel Axtens <dja@axtens.net>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
|
||||
Upstream-Status: Backport
|
||||
CVE: CVE-2021-3696
|
||||
|
||||
Reference to upstream patch:
|
||||
https://git.savannah.gnu.org/cgit/grub.git/commit/?id=210245129c932dc9e1c2748d9d35524fb95b5042
|
||||
|
||||
Signed-off-by: Yongxin Liu <yongxin.liu@windriver.com>
|
||||
---
|
||||
grub-core/video/readers/png.c | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/grub-core/video/readers/png.c b/grub-core/video/readers/png.c
|
||||
index a3161e25b..d7ed5aa6c 100644
|
||||
--- a/grub-core/video/readers/png.c
|
||||
+++ b/grub-core/video/readers/png.c
|
||||
@@ -438,6 +438,13 @@ grub_png_insert_huff_item (struct huff_table *ht, int code, int len)
|
||||
for (i = len; i < ht->max_length; i++)
|
||||
n += ht->maxval[i];
|
||||
|
||||
+ if (n > ht->num_values)
|
||||
+ {
|
||||
+ grub_error (GRUB_ERR_BAD_FILE_TYPE,
|
||||
+ "png: out of range inserting huffman table item");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
for (i = 0; i < n; i++)
|
||||
ht->values[ht->num_values - i] = ht->values[ht->num_values - i - 1];
|
||||
|
||||
--
|
||||
2.34.1
|
||||
|
||||
+84
@@ -0,0 +1,84 @@
|
||||
From 22a3f97d39f6a10b08ad7fd1cc47c4dcd10413f6 Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Axtens <dja@axtens.net>
|
||||
Date: Wed, 7 Jul 2021 15:38:19 +1000
|
||||
Subject: [PATCH] video/readers/jpeg: Block int underflow -> wild pointer write
|
||||
|
||||
Certain 1 px wide images caused a wild pointer write in
|
||||
grub_jpeg_ycrcb_to_rgb(). This was caused because in grub_jpeg_decode_data(),
|
||||
we have the following loop:
|
||||
|
||||
for (; data->r1 < nr1 && (!data->dri || rst);
|
||||
data->r1++, data->bitmap_ptr += (vb * data->image_width - hb * nc1) * 3)
|
||||
|
||||
We did not check if vb * width >= hb * nc1.
|
||||
|
||||
On a 64-bit platform, if that turns out to be negative, it will underflow,
|
||||
be interpreted as unsigned 64-bit, then be added to the 64-bit pointer, so
|
||||
we see data->bitmap_ptr jump, e.g.:
|
||||
|
||||
0x6180_0000_0480 to
|
||||
0x6181_0000_0498
|
||||
^
|
||||
~--- carry has occurred and this pointer is now far away from
|
||||
any object.
|
||||
|
||||
On a 32-bit platform, it will decrement the pointer, creating a pointer
|
||||
that won't crash but will overwrite random data.
|
||||
|
||||
Catch the underflow and error out.
|
||||
|
||||
Fixes: CVE-2021-3697
|
||||
|
||||
Signed-off-by: Daniel Axtens <dja@axtens.net>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
|
||||
Upstream-Status: Backport
|
||||
CVE: CVE-2021-3697
|
||||
|
||||
Reference to upstream patch:
|
||||
https://git.savannah.gnu.org/cgit/grub.git/commit/?id=22a3f97d39f6a10b08ad7fd1cc47c4dcd10413f6
|
||||
|
||||
Signed-off-by: Yongxin Liu <yongxin.liu@windriver.com>
|
||||
---
|
||||
grub-core/video/readers/jpeg.c | 10 +++++++++-
|
||||
1 file changed, 9 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/grub-core/video/readers/jpeg.c b/grub-core/video/readers/jpeg.c
|
||||
index 579bbe8a4..09596fbf5 100644
|
||||
--- a/grub-core/video/readers/jpeg.c
|
||||
+++ b/grub-core/video/readers/jpeg.c
|
||||
@@ -23,6 +23,7 @@
|
||||
#include <grub/mm.h>
|
||||
#include <grub/misc.h>
|
||||
#include <grub/bufio.h>
|
||||
+#include <grub/safemath.h>
|
||||
|
||||
GRUB_MOD_LICENSE ("GPLv3+");
|
||||
|
||||
@@ -699,6 +700,7 @@ static grub_err_t
|
||||
grub_jpeg_decode_data (struct grub_jpeg_data *data)
|
||||
{
|
||||
unsigned c1, vb, hb, nr1, nc1;
|
||||
+ unsigned stride_a, stride_b, stride;
|
||||
int rst = data->dri;
|
||||
grub_err_t err = GRUB_ERR_NONE;
|
||||
|
||||
@@ -711,8 +713,14 @@ grub_jpeg_decode_data (struct grub_jpeg_data *data)
|
||||
return grub_error (GRUB_ERR_BAD_FILE_TYPE,
|
||||
"jpeg: attempted to decode data before start of stream");
|
||||
|
||||
+ if (grub_mul(vb, data->image_width, &stride_a) ||
|
||||
+ grub_mul(hb, nc1, &stride_b) ||
|
||||
+ grub_sub(stride_a, stride_b, &stride))
|
||||
+ return grub_error (GRUB_ERR_BAD_FILE_TYPE,
|
||||
+ "jpeg: cannot decode image with these dimensions");
|
||||
+
|
||||
for (; data->r1 < nr1 && (!data->dri || rst);
|
||||
- data->r1++, data->bitmap_ptr += (vb * data->image_width - hb * nc1) * 3)
|
||||
+ data->r1++, data->bitmap_ptr += stride * 3)
|
||||
for (c1 = 0; c1 < nc1 && (!data->dri || rst);
|
||||
c1++, rst--, data->bitmap_ptr += hb * 3)
|
||||
{
|
||||
--
|
||||
2.34.1
|
||||
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
From 0adec29674561034771c13e446069b41ef41e4d4 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Chang <mchang@suse.com>
|
||||
Date: Fri, 3 Dec 2021 16:13:28 +0800
|
||||
Subject: [PATCH] grub-mkconfig: Restore umask for the grub.cfg
|
||||
|
||||
The commit ab2e53c8a (grub-mkconfig: Honor a symlink when generating
|
||||
configuration by grub-mkconfig) has inadvertently discarded umask for
|
||||
creating grub.cfg in the process of running grub-mkconfig. The resulting
|
||||
wrong permission (0644) would allow unprivileged users to read GRUB
|
||||
configuration file content. This presents a low confidentiality risk
|
||||
as grub.cfg may contain non-secured plain-text passwords.
|
||||
|
||||
This patch restores the missing umask and sets the creation file mode
|
||||
to 0600 preventing unprivileged access.
|
||||
|
||||
Fixes: CVE-2021-3981
|
||||
|
||||
Signed-off-by: Michael Chang <mchang@suse.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
|
||||
Upstream-Status: Backport
|
||||
CVE: CVE-2021-3981
|
||||
|
||||
Reference to upstream patch:
|
||||
https://git.savannah.gnu.org/cgit/grub.git/commit/?id=0adec29674561034771c13e446069b41ef41e4d4
|
||||
|
||||
Signed-off-by: Yongxin Liu <yongxin.liu@windriver.com>
|
||||
---
|
||||
util/grub-mkconfig.in | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in
|
||||
index c3ea7612e..62335d027 100644
|
||||
--- a/util/grub-mkconfig.in
|
||||
+++ b/util/grub-mkconfig.in
|
||||
@@ -301,7 +301,10 @@ and /etc/grub.d/* files or please file a bug report with
|
||||
exit 1
|
||||
else
|
||||
# none of the children aborted with error, install the new grub.cfg
|
||||
+ oldumask=$(umask)
|
||||
+ umask 077
|
||||
cat ${grub_cfg}.new > ${grub_cfg}
|
||||
+ umask $oldumask
|
||||
rm -f ${grub_cfg}.new
|
||||
fi
|
||||
fi
|
||||
--
|
||||
2.31.1
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
From e8060722acf0bcca037982d7fb29472363ccdfd4 Mon Sep 17 00:00:00 2001
|
||||
From: Zhang Boyang <zhangboyang.id@gmail.com>
|
||||
Date: Fri, 5 Aug 2022 01:58:27 +0800
|
||||
Subject: [PATCH] font: Fix several integer overflows in
|
||||
grub_font_construct_glyph()
|
||||
|
||||
This patch fixes several integer overflows in grub_font_construct_glyph().
|
||||
Glyphs of invalid size, zero or leading to an overflow, are rejected.
|
||||
The inconsistency between "glyph" and "max_glyph_size" when grub_malloc()
|
||||
returns NULL is fixed too.
|
||||
|
||||
Fixes: CVE-2022-2601
|
||||
|
||||
Reported-by: Zhang Boyang <zhangboyang.id@gmail.com>
|
||||
Signed-off-by: Zhang Boyang <zhangboyang.id@gmail.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
|
||||
Upstream-Status: Backport from
|
||||
[https://git.savannah.gnu.org/cgit/grub.git/commit/?id=768e1ef2fc159f6e14e7246e4be09363708ac39e]
|
||||
CVE: CVE-2022-2601
|
||||
|
||||
Signed-off-by: Xiangyu Chen <xiangyu.chen@windriver.com>
|
||||
|
||||
---
|
||||
grub-core/font/font.c | 29 +++++++++++++++++------------
|
||||
1 file changed, 17 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/grub-core/font/font.c b/grub-core/font/font.c
|
||||
index 876b5b6..0ff5525 100644
|
||||
--- a/grub-core/font/font.c
|
||||
+++ b/grub-core/font/font.c
|
||||
@@ -1515,6 +1515,7 @@ grub_font_construct_glyph (grub_font_t hinted_font,
|
||||
struct grub_video_signed_rect bounds;
|
||||
static struct grub_font_glyph *glyph = 0;
|
||||
static grub_size_t max_glyph_size = 0;
|
||||
+ grub_size_t cur_glyph_size;
|
||||
|
||||
ensure_comb_space (glyph_id);
|
||||
|
||||
@@ -1531,29 +1532,33 @@ grub_font_construct_glyph (grub_font_t hinted_font,
|
||||
if (!glyph_id->ncomb && !glyph_id->attributes)
|
||||
return main_glyph;
|
||||
|
||||
- if (max_glyph_size < sizeof (*glyph) + (bounds.width * bounds.height + GRUB_CHAR_BIT - 1) / GRUB_CHAR_BIT)
|
||||
+ if (grub_video_bitmap_calc_1bpp_bufsz (bounds.width, bounds.height, &cur_glyph_size) ||
|
||||
+ grub_add (sizeof (*glyph), cur_glyph_size, &cur_glyph_size))
|
||||
+ return main_glyph;
|
||||
+
|
||||
+ if (max_glyph_size < cur_glyph_size)
|
||||
{
|
||||
grub_free (glyph);
|
||||
- max_glyph_size = (sizeof (*glyph) + (bounds.width * bounds.height + GRUB_CHAR_BIT - 1) / GRUB_CHAR_BIT) * 2;
|
||||
- if (max_glyph_size < 8)
|
||||
- max_glyph_size = 8;
|
||||
- glyph = grub_malloc (max_glyph_size);
|
||||
+ if (grub_mul (cur_glyph_size, 2, &max_glyph_size))
|
||||
+ max_glyph_size = 0;
|
||||
+ glyph = max_glyph_size > 0 ? grub_malloc (max_glyph_size) : NULL;
|
||||
}
|
||||
if (!glyph)
|
||||
{
|
||||
+ max_glyph_size = 0;
|
||||
grub_errno = GRUB_ERR_NONE;
|
||||
return main_glyph;
|
||||
}
|
||||
|
||||
- grub_memset (glyph, 0, sizeof (*glyph)
|
||||
- + (bounds.width * bounds.height
|
||||
- + GRUB_CHAR_BIT - 1) / GRUB_CHAR_BIT);
|
||||
+ grub_memset (glyph, 0, cur_glyph_size);
|
||||
|
||||
glyph->font = main_glyph->font;
|
||||
- glyph->width = bounds.width;
|
||||
- glyph->height = bounds.height;
|
||||
- glyph->offset_x = bounds.x;
|
||||
- glyph->offset_y = bounds.y;
|
||||
+ if (bounds.width == 0 || bounds.height == 0 ||
|
||||
+ grub_cast (bounds.width, &glyph->width) ||
|
||||
+ grub_cast (bounds.height, &glyph->height) ||
|
||||
+ grub_cast (bounds.x, &glyph->offset_x) ||
|
||||
+ grub_cast (bounds.y, &glyph->offset_y))
|
||||
+ return main_glyph;
|
||||
|
||||
if (glyph_id->attributes & GRUB_UNICODE_GLYPH_ATTRIBUTE_MIRROR)
|
||||
grub_font_blit_glyph_mirror (glyph, main_glyph,
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
From 3e4817538de828319ba6d59ced2fbb9b5ca13287 Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Axtens <dja@axtens.net>
|
||||
Date: Mon, 20 Dec 2021 19:41:21 +1100
|
||||
Subject: [PATCH] net/ip: Do IP fragment maths safely
|
||||
|
||||
We can receive packets with invalid IP fragmentation information. This
|
||||
can lead to rsm->total_len underflowing and becoming very large.
|
||||
|
||||
Then, in grub_netbuff_alloc(), we add to this very large number, which can
|
||||
cause it to overflow and wrap back around to a small positive number.
|
||||
The allocation then succeeds, but the resulting buffer is too small and
|
||||
subsequent operations can write past the end of the buffer.
|
||||
|
||||
Catch the underflow here.
|
||||
|
||||
Fixes: CVE-2022-28733
|
||||
|
||||
Signed-off-by: Daniel Axtens <dja@axtens.net>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
|
||||
Upstream-Status: Backport
|
||||
CVE: CVE-2022-28733
|
||||
|
||||
Reference to upstream patch:
|
||||
https://git.savannah.gnu.org/cgit/grub.git/commit/?id=3e4817538de828319ba6d59ced2fbb9b5ca13287
|
||||
|
||||
Signed-off-by: Yongxin Liu <yongxin.liu@windriver.com>
|
||||
|
||||
---
|
||||
grub-core/net/ip.c | 10 +++++++++-
|
||||
1 file changed, 9 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/grub-core/net/ip.c b/grub-core/net/ip.c
|
||||
index e3d62e97f..3c3d0be0e 100644
|
||||
--- a/grub-core/net/ip.c
|
||||
+++ b/grub-core/net/ip.c
|
||||
@@ -25,6 +25,7 @@
|
||||
#include <grub/net/netbuff.h>
|
||||
#include <grub/mm.h>
|
||||
#include <grub/priority_queue.h>
|
||||
+#include <grub/safemath.h>
|
||||
#include <grub/time.h>
|
||||
|
||||
struct iphdr {
|
||||
@@ -512,7 +513,14 @@ grub_net_recv_ip4_packets (struct grub_net_buff *nb,
|
||||
{
|
||||
rsm->total_len = (8 * (grub_be_to_cpu16 (iph->frags) & OFFSET_MASK)
|
||||
+ (nb->tail - nb->data));
|
||||
- rsm->total_len -= ((iph->verhdrlen & 0xf) * sizeof (grub_uint32_t));
|
||||
+
|
||||
+ if (grub_sub (rsm->total_len, (iph->verhdrlen & 0xf) * sizeof (grub_uint32_t),
|
||||
+ &rsm->total_len))
|
||||
+ {
|
||||
+ grub_dprintf ("net", "IP reassembly size underflow\n");
|
||||
+ return GRUB_ERR_NONE;
|
||||
+ }
|
||||
+
|
||||
rsm->asm_netbuff = grub_netbuff_alloc (rsm->total_len);
|
||||
if (!rsm->asm_netbuff)
|
||||
{
|
||||
--
|
||||
2.34.1
|
||||
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
From b26b4c08e7119281ff30d0fb4a6169bd2afa8fe4 Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Axtens <dja@axtens.net>
|
||||
Date: Tue, 8 Mar 2022 19:04:40 +1100
|
||||
Subject: [PATCH] net/http: Error out on headers with LF without CR
|
||||
|
||||
In a similar vein to the previous patch, parse_line() would write
|
||||
a NUL byte past the end of the buffer if there was an HTTP header
|
||||
with a LF rather than a CRLF.
|
||||
|
||||
RFC-2616 says:
|
||||
|
||||
Many HTTP/1.1 header field values consist of words separated by LWS
|
||||
or special characters. These special characters MUST be in a quoted
|
||||
string to be used within a parameter value (as defined in section 3.6).
|
||||
|
||||
We don't support quoted sections or continuation lines, etc.
|
||||
|
||||
If we see an LF that's not part of a CRLF, bail out.
|
||||
|
||||
Fixes: CVE-2022-28734
|
||||
|
||||
Signed-off-by: Daniel Axtens <dja@axtens.net>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
|
||||
Upstream-Status: Backport
|
||||
CVE: CVE-2022-28734
|
||||
|
||||
Reference to upstream patch:
|
||||
https://git.savannah.gnu.org/cgit/grub.git/commit/?id=b26b4c08e7119281ff30d0fb4a6169bd2afa8fe4
|
||||
|
||||
Signed-off-by: Yongxin Liu <yongxin.liu@windriver.com>
|
||||
---
|
||||
grub-core/net/http.c | 8 ++++++++
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
diff --git a/grub-core/net/http.c b/grub-core/net/http.c
|
||||
index 33a0a28c4..9291a13e2 100644
|
||||
--- a/grub-core/net/http.c
|
||||
+++ b/grub-core/net/http.c
|
||||
@@ -68,7 +68,15 @@ parse_line (grub_file_t file, http_data_t data, char *ptr, grub_size_t len)
|
||||
char *end = ptr + len;
|
||||
while (end > ptr && *(end - 1) == '\r')
|
||||
end--;
|
||||
+
|
||||
+ /* LF without CR. */
|
||||
+ if (end == ptr + len)
|
||||
+ {
|
||||
+ data->errmsg = grub_strdup (_("invalid HTTP header - LF without CR"));
|
||||
+ return GRUB_ERR_NONE;
|
||||
+ }
|
||||
*end = 0;
|
||||
+
|
||||
/* Trailing CRLF. */
|
||||
if (data->in_chunk_len == 1)
|
||||
{
|
||||
--
|
||||
2.34.1
|
||||
|
||||
+56
@@ -0,0 +1,56 @@
|
||||
From ec6bfd3237394c1c7dbf2fd73417173318d22f4b Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Axtens <dja@axtens.net>
|
||||
Date: Tue, 8 Mar 2022 18:17:03 +1100
|
||||
Subject: [PATCH] net/http: Fix OOB write for split http headers
|
||||
|
||||
GRUB has special code for handling an http header that is split
|
||||
across two packets.
|
||||
|
||||
The code tracks the end of line by looking for a "\n" byte. The
|
||||
code for split headers has always advanced the pointer just past the
|
||||
end of the line, whereas the code that handles unsplit headers does
|
||||
not advance the pointer. This extra advance causes the length to be
|
||||
one greater, which breaks an assumption in parse_line(), leading to
|
||||
it writing a NUL byte one byte past the end of the buffer where we
|
||||
reconstruct the line from the two packets.
|
||||
|
||||
It's conceivable that an attacker controlled set of packets could
|
||||
cause this to zero out the first byte of the "next" pointer of the
|
||||
grub_mm_region structure following the current_line buffer.
|
||||
|
||||
Do not advance the pointer in the split header case.
|
||||
|
||||
Fixes: CVE-2022-28734
|
||||
|
||||
Signed-off-by: Daniel Axtens <dja@axtens.net>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
|
||||
Upstream-Status: Backport
|
||||
CVE: CVE-2022-28734
|
||||
|
||||
Reference to upstream patch:
|
||||
https://git.savannah.gnu.org/cgit/grub.git/commit/?id=ec6bfd3237394c1c7dbf2fd73417173318d22f4b
|
||||
|
||||
Signed-off-by: Yongxin Liu <yongxin.liu@windriver.com>
|
||||
---
|
||||
grub-core/net/http.c | 4 +---
|
||||
1 file changed, 1 insertion(+), 3 deletions(-)
|
||||
|
||||
diff --git a/grub-core/net/http.c b/grub-core/net/http.c
|
||||
index f8d7bf0cd..33a0a28c4 100644
|
||||
--- a/grub-core/net/http.c
|
||||
+++ b/grub-core/net/http.c
|
||||
@@ -190,9 +190,7 @@ http_receive (grub_net_tcp_socket_t sock __attribute__ ((unused)),
|
||||
int have_line = 1;
|
||||
char *t;
|
||||
ptr = grub_memchr (nb->data, '\n', nb->tail - nb->data);
|
||||
- if (ptr)
|
||||
- ptr++;
|
||||
- else
|
||||
+ if (ptr == NULL)
|
||||
{
|
||||
have_line = 0;
|
||||
ptr = (char *) nb->tail;
|
||||
--
|
||||
2.34.1
|
||||
|
||||
+111
@@ -0,0 +1,111 @@
|
||||
From 6fe755c5c07bb386fda58306bfd19e4a1c974c53 Mon Sep 17 00:00:00 2001
|
||||
From: Julian Andres Klode <julian.klode@canonical.com>
|
||||
Date: Thu, 2 Dec 2021 15:03:53 +0100
|
||||
Subject: [PATCH] kern/efi/sb: Reject non-kernel files in the shim_lock
|
||||
verifier
|
||||
|
||||
We must not allow other verifiers to pass things like the GRUB modules.
|
||||
Instead of maintaining a blocklist, maintain an allowlist of things
|
||||
that we do not care about.
|
||||
|
||||
This allowlist really should be made reusable, and shared by the
|
||||
lockdown verifier, but this is the minimal patch addressing
|
||||
security concerns where the TPM verifier was able to mark modules
|
||||
as verified (or the OpenPGP verifier for that matter), when it
|
||||
should not do so on shim-powered secure boot systems.
|
||||
|
||||
Fixes: CVE-2022-28735
|
||||
|
||||
Signed-off-by: Julian Andres Klode <julian.klode@canonical.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
|
||||
Upstream-Status: Backport
|
||||
CVE:CVE-2022-28735
|
||||
|
||||
Reference to upstream patch:
|
||||
https://git.savannah.gnu.org/cgit/grub.git/commit/?id=6fe755c5c07bb386fda58306bfd19e4a1c974c53
|
||||
|
||||
Signed-off-by: Yongxin Liu <yongxin.liu@windriver.com>
|
||||
---
|
||||
grub-core/kern/efi/sb.c | 39 ++++++++++++++++++++++++++++++++++++---
|
||||
include/grub/verify.h | 1 +
|
||||
2 files changed, 37 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/grub-core/kern/efi/sb.c b/grub-core/kern/efi/sb.c
|
||||
index c52ec6226..89c4bb3fd 100644
|
||||
--- a/grub-core/kern/efi/sb.c
|
||||
+++ b/grub-core/kern/efi/sb.c
|
||||
@@ -119,10 +119,11 @@ shim_lock_verifier_init (grub_file_t io __attribute__ ((unused)),
|
||||
void **context __attribute__ ((unused)),
|
||||
enum grub_verify_flags *flags)
|
||||
{
|
||||
- *flags = GRUB_VERIFY_FLAGS_SKIP_VERIFICATION;
|
||||
+ *flags = GRUB_VERIFY_FLAGS_NONE;
|
||||
|
||||
switch (type & GRUB_FILE_TYPE_MASK)
|
||||
{
|
||||
+ /* Files we check. */
|
||||
case GRUB_FILE_TYPE_LINUX_KERNEL:
|
||||
case GRUB_FILE_TYPE_MULTIBOOT_KERNEL:
|
||||
case GRUB_FILE_TYPE_BSD_KERNEL:
|
||||
@@ -130,11 +131,43 @@ shim_lock_verifier_init (grub_file_t io __attribute__ ((unused)),
|
||||
case GRUB_FILE_TYPE_PLAN9_KERNEL:
|
||||
case GRUB_FILE_TYPE_EFI_CHAINLOADED_IMAGE:
|
||||
*flags = GRUB_VERIFY_FLAGS_SINGLE_CHUNK;
|
||||
+ return GRUB_ERR_NONE;
|
||||
|
||||
- /* Fall through. */
|
||||
+ /* Files that do not affect secureboot state. */
|
||||
+ case GRUB_FILE_TYPE_NONE:
|
||||
+ case GRUB_FILE_TYPE_LOOPBACK:
|
||||
+ case GRUB_FILE_TYPE_LINUX_INITRD:
|
||||
+ case GRUB_FILE_TYPE_OPENBSD_RAMDISK:
|
||||
+ case GRUB_FILE_TYPE_XNU_RAMDISK:
|
||||
+ case GRUB_FILE_TYPE_SIGNATURE:
|
||||
+ case GRUB_FILE_TYPE_PUBLIC_KEY:
|
||||
+ case GRUB_FILE_TYPE_PUBLIC_KEY_TRUST:
|
||||
+ case GRUB_FILE_TYPE_PRINT_BLOCKLIST:
|
||||
+ case GRUB_FILE_TYPE_TESTLOAD:
|
||||
+ case GRUB_FILE_TYPE_GET_SIZE:
|
||||
+ case GRUB_FILE_TYPE_FONT:
|
||||
+ case GRUB_FILE_TYPE_ZFS_ENCRYPTION_KEY:
|
||||
+ case GRUB_FILE_TYPE_CAT:
|
||||
+ case GRUB_FILE_TYPE_HEXCAT:
|
||||
+ case GRUB_FILE_TYPE_CMP:
|
||||
+ case GRUB_FILE_TYPE_HASHLIST:
|
||||
+ case GRUB_FILE_TYPE_TO_HASH:
|
||||
+ case GRUB_FILE_TYPE_KEYBOARD_LAYOUT:
|
||||
+ case GRUB_FILE_TYPE_PIXMAP:
|
||||
+ case GRUB_FILE_TYPE_GRUB_MODULE_LIST:
|
||||
+ case GRUB_FILE_TYPE_CONFIG:
|
||||
+ case GRUB_FILE_TYPE_THEME:
|
||||
+ case GRUB_FILE_TYPE_GETTEXT_CATALOG:
|
||||
+ case GRUB_FILE_TYPE_FS_SEARCH:
|
||||
+ case GRUB_FILE_TYPE_LOADENV:
|
||||
+ case GRUB_FILE_TYPE_SAVEENV:
|
||||
+ case GRUB_FILE_TYPE_VERIFY_SIGNATURE:
|
||||
+ *flags = GRUB_VERIFY_FLAGS_SKIP_VERIFICATION;
|
||||
+ return GRUB_ERR_NONE;
|
||||
|
||||
+ /* Other files. */
|
||||
default:
|
||||
- return GRUB_ERR_NONE;
|
||||
+ return grub_error (GRUB_ERR_ACCESS_DENIED, N_("prohibited by secure boot policy"));
|
||||
}
|
||||
}
|
||||
|
||||
diff --git a/include/grub/verify.h b/include/grub/verify.h
|
||||
index cd129c398..672ae1692 100644
|
||||
--- a/include/grub/verify.h
|
||||
+++ b/include/grub/verify.h
|
||||
@@ -24,6 +24,7 @@
|
||||
|
||||
enum grub_verify_flags
|
||||
{
|
||||
+ GRUB_VERIFY_FLAGS_NONE = 0,
|
||||
GRUB_VERIFY_FLAGS_SKIP_VERIFICATION = 1,
|
||||
GRUB_VERIFY_FLAGS_SINGLE_CHUNK = 2,
|
||||
/* Defer verification to another authority. */
|
||||
--
|
||||
2.34.1
|
||||
|
||||
+86
@@ -0,0 +1,86 @@
|
||||
From 04c86e0bb7b58fc2f913f798cdb18934933e532d Mon Sep 17 00:00:00 2001
|
||||
From: Chris Coulson <chris.coulson@canonical.com>
|
||||
Date: Tue, 5 Apr 2022 11:48:58 +0100
|
||||
Subject: [PATCH] loader/efi/chainloader: Use grub_loader_set_ex()
|
||||
|
||||
This ports the EFI chainloader to use grub_loader_set_ex() in order to fix
|
||||
a use-after-free bug that occurs when grub_cmd_chainloader() is executed
|
||||
more than once before a boot attempt is performed.
|
||||
|
||||
Fixes: CVE-2022-28736
|
||||
|
||||
Signed-off-by: Chris Coulson <chris.coulson@canonical.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
|
||||
Upstream-Status: Backport
|
||||
CVE: CVE-2022-28736
|
||||
|
||||
Reference to upstream patch:
|
||||
https://git.savannah.gnu.org/cgit/grub.git/commit/?id=04c86e0bb7b58fc2f913f798cdb18934933e532d
|
||||
|
||||
Signed-off-by: Xiangyu Chen <xiangyu.chen@windriver.com>
|
||||
---
|
||||
grub-core/loader/efi/chainloader.c | 16 +++++++---------
|
||||
1 file changed, 7 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/grub-core/loader/efi/chainloader.c b/grub-core/loader/efi/chainloader.c
|
||||
index d1602c89b..7557eb269 100644
|
||||
--- a/grub-core/loader/efi/chainloader.c
|
||||
+++ b/grub-core/loader/efi/chainloader.c
|
||||
@@ -44,11 +44,10 @@ GRUB_MOD_LICENSE ("GPLv3+");
|
||||
|
||||
static grub_dl_t my_mod;
|
||||
|
||||
-static grub_efi_handle_t image_handle;
|
||||
-
|
||||
static grub_err_t
|
||||
-grub_chainloader_unload (void)
|
||||
+grub_chainloader_unload (void *context)
|
||||
{
|
||||
+ grub_efi_handle_t image_handle = (grub_efi_handle_t) context;
|
||||
grub_efi_loaded_image_t *loaded_image;
|
||||
grub_efi_boot_services_t *b;
|
||||
|
||||
@@ -64,8 +63,9 @@ grub_chainloader_unload (void)
|
||||
}
|
||||
|
||||
static grub_err_t
|
||||
-grub_chainloader_boot (void)
|
||||
+grub_chainloader_boot (void *context)
|
||||
{
|
||||
+ grub_efi_handle_t image_handle = (grub_efi_handle_t) context;
|
||||
grub_efi_boot_services_t *b;
|
||||
grub_efi_status_t status;
|
||||
grub_efi_uintn_t exit_data_size;
|
||||
@@ -225,6 +225,7 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)),
|
||||
grub_efi_physical_address_t address = 0;
|
||||
grub_efi_uintn_t pages = 0;
|
||||
grub_efi_char16_t *cmdline = NULL;
|
||||
+ grub_efi_handle_t image_handle = NULL;
|
||||
|
||||
if (argc == 0)
|
||||
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
|
||||
@@ -405,7 +406,7 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)),
|
||||
efi_call_2 (b->free_pages, address, pages);
|
||||
grub_free (file_path);
|
||||
|
||||
- grub_loader_set (grub_chainloader_boot, grub_chainloader_unload, 0);
|
||||
+ grub_loader_set_ex (grub_chainloader_boot, grub_chainloader_unload, image_handle, 0);
|
||||
return 0;
|
||||
|
||||
fail:
|
||||
@@ -423,10 +424,7 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)),
|
||||
efi_call_2 (b->free_pages, address, pages);
|
||||
|
||||
if (image_handle != NULL)
|
||||
- {
|
||||
- efi_call_1 (b->unload_image, image_handle);
|
||||
- image_handle = NULL;
|
||||
- }
|
||||
+ efi_call_1 (b->unload_image, image_handle);
|
||||
|
||||
grub_dl_unref (my_mod);
|
||||
|
||||
--
|
||||
2.34.1
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
From fdbe7209152ad6f09a1166f64f162017f2145ba3 Mon Sep 17 00:00:00 2001
|
||||
From: Zhang Boyang <zhangboyang.id@gmail.com>
|
||||
Date: Mon, 24 Oct 2022 08:05:35 +0800
|
||||
Subject: [PATCH] font: Fix an integer underflow in blit_comb()
|
||||
|
||||
The expression (ctx.bounds.height - combining_glyphs[i]->height) / 2 may
|
||||
evaluate to a very big invalid value even if both ctx.bounds.height and
|
||||
combining_glyphs[i]->height are small integers. For example, if
|
||||
ctx.bounds.height is 10 and combining_glyphs[i]->height is 12, this
|
||||
expression evaluates to 2147483647 (expected -1). This is because
|
||||
coordinates are allowed to be negative but ctx.bounds.height is an
|
||||
unsigned int. So, the subtraction operates on unsigned ints and
|
||||
underflows to a very big value. The division makes things even worse.
|
||||
The quotient is still an invalid value even if converted back to int.
|
||||
|
||||
This patch fixes the problem by casting ctx.bounds.height to int. As
|
||||
a result the subtraction will operate on int and grub_uint16_t which
|
||||
will be promoted to an int. So, the underflow will no longer happen. Other
|
||||
uses of ctx.bounds.height (and ctx.bounds.width) are also casted to int,
|
||||
to ensure coordinates are always calculated on signed integers.
|
||||
|
||||
Fixes: CVE-2022-3775
|
||||
|
||||
Reported-by: Daniel Axtens <dja@axtens.net>
|
||||
Signed-off-by: Zhang Boyang <zhangboyang.id@gmail.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
|
||||
Upstream-Status: Backport from
|
||||
[https://git.savannah.gnu.org/cgit/grub.git/commit/?id=992c06191babc1e109caf40d6a07ec6fdef427af]
|
||||
CVE: CVE-2022-3775
|
||||
|
||||
Signed-off-by: Xiangyu Chen <xiangyu.chen@windriver.com>
|
||||
|
||||
---
|
||||
grub-core/font/font.c | 16 ++++++++--------
|
||||
1 file changed, 8 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/grub-core/font/font.c b/grub-core/font/font.c
|
||||
index 0ff5525..7b1cbde 100644
|
||||
--- a/grub-core/font/font.c
|
||||
+++ b/grub-core/font/font.c
|
||||
@@ -1206,12 +1206,12 @@ blit_comb (const struct grub_unicode_glyph *glyph_id,
|
||||
ctx.bounds.height = main_glyph->height;
|
||||
|
||||
above_rightx = main_glyph->offset_x + main_glyph->width;
|
||||
- above_righty = ctx.bounds.y + ctx.bounds.height;
|
||||
+ above_righty = ctx.bounds.y + (int) ctx.bounds.height;
|
||||
|
||||
above_leftx = main_glyph->offset_x;
|
||||
- above_lefty = ctx.bounds.y + ctx.bounds.height;
|
||||
+ above_lefty = ctx.bounds.y + (int) ctx.bounds.height;
|
||||
|
||||
- below_rightx = ctx.bounds.x + ctx.bounds.width;
|
||||
+ below_rightx = ctx.bounds.x + (int) ctx.bounds.width;
|
||||
below_righty = ctx.bounds.y;
|
||||
|
||||
comb = grub_unicode_get_comb (glyph_id);
|
||||
@@ -1224,7 +1224,7 @@ blit_comb (const struct grub_unicode_glyph *glyph_id,
|
||||
|
||||
if (!combining_glyphs[i])
|
||||
continue;
|
||||
- targetx = (ctx.bounds.width - combining_glyphs[i]->width) / 2 + ctx.bounds.x;
|
||||
+ targetx = ((int) ctx.bounds.width - combining_glyphs[i]->width) / 2 + ctx.bounds.x;
|
||||
/* CGJ is to avoid diacritics reordering. */
|
||||
if (comb[i].code
|
||||
== GRUB_UNICODE_COMBINING_GRAPHEME_JOINER)
|
||||
@@ -1234,8 +1234,8 @@ blit_comb (const struct grub_unicode_glyph *glyph_id,
|
||||
case GRUB_UNICODE_COMB_OVERLAY:
|
||||
do_blit (combining_glyphs[i],
|
||||
targetx,
|
||||
- (ctx.bounds.height - combining_glyphs[i]->height) / 2
|
||||
- - (ctx.bounds.height + ctx.bounds.y), &ctx);
|
||||
+ ((int) ctx.bounds.height - combining_glyphs[i]->height) / 2
|
||||
+ - ((int) ctx.bounds.height + ctx.bounds.y), &ctx);
|
||||
if (min_devwidth < combining_glyphs[i]->width)
|
||||
min_devwidth = combining_glyphs[i]->width;
|
||||
break;
|
||||
@@ -1308,7 +1308,7 @@ blit_comb (const struct grub_unicode_glyph *glyph_id,
|
||||
/* Fallthrough. */
|
||||
case GRUB_UNICODE_STACK_ATTACHED_ABOVE:
|
||||
do_blit (combining_glyphs[i], targetx,
|
||||
- -(ctx.bounds.height + ctx.bounds.y + space
|
||||
+ -((int) ctx.bounds.height + ctx.bounds.y + space
|
||||
+ combining_glyphs[i]->height), &ctx);
|
||||
if (min_devwidth < combining_glyphs[i]->width)
|
||||
min_devwidth = combining_glyphs[i]->width;
|
||||
@@ -1316,7 +1316,7 @@ blit_comb (const struct grub_unicode_glyph *glyph_id,
|
||||
|
||||
case GRUB_UNICODE_COMB_HEBREW_DAGESH:
|
||||
do_blit (combining_glyphs[i], targetx,
|
||||
- -(ctx.bounds.height / 2 + ctx.bounds.y
|
||||
+ -((int) ctx.bounds.height / 2 + ctx.bounds.y
|
||||
+ combining_glyphs[i]->height / 2), &ctx);
|
||||
if (min_devwidth < combining_glyphs[i]->width)
|
||||
min_devwidth = combining_glyphs[i]->width;
|
||||
@@ -0,0 +1,36 @@
|
||||
From 8790aa8bea736f52341a0430ff3e317d3be0f99b Mon Sep 17 00:00:00 2001
|
||||
From: Naveen Saini <naveen.kumar.saini@intel.com>
|
||||
Date: Mon, 15 Mar 2021 14:44:15 +0800
|
||||
Subject: [PATCH] autogen.sh: exclude .pc from po/POTFILES.in
|
||||
|
||||
Exclude the .pc from po/POTFILES.in since quilt uses "patch --backup",
|
||||
which will create the backup file under .pc, this may cause unexpected
|
||||
errors, for example, on CentOS 5.x, if the backup file is null
|
||||
(newfile), it's mode will be 000, then we will get errors when xgettext
|
||||
try to read it.
|
||||
|
||||
Upstream-Status: Inappropriate [OE specific]
|
||||
|
||||
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
|
||||
Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
|
||||
Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
|
||||
---
|
||||
autogen.sh | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/autogen.sh b/autogen.sh
|
||||
index 31b0ced7e..c63ae766c 100755
|
||||
--- a/autogen.sh
|
||||
+++ b/autogen.sh
|
||||
@@ -13,7 +13,7 @@ fi
|
||||
export LC_COLLATE=C
|
||||
unset LC_ALL
|
||||
|
||||
-find . -iname '*.[ch]' ! -ipath './grub-core/lib/libgcrypt-grub/*' ! -ipath './build-aux/*' ! -ipath './grub-core/lib/libgcrypt/src/misc.c' ! -ipath './grub-core/lib/libgcrypt/src/global.c' ! -ipath './grub-core/lib/libgcrypt/src/secmem.c' ! -ipath './util/grub-gen-widthspec.c' ! -ipath './util/grub-gen-asciih.c' ! -ipath './gnulib/*' ! -ipath './grub-core/lib/gnulib/*' |sort > po/POTFILES.in
|
||||
+find . -iname '*.[ch]' ! -ipath './grub-core/lib/libgcrypt-grub/*' ! -ipath './build-aux/*' ! -ipath './grub-core/lib/libgcrypt/src/misc.c' ! -ipath './grub-core/lib/libgcrypt/src/global.c' ! -ipath './grub-core/lib/libgcrypt/src/secmem.c' ! -ipath './util/grub-gen-widthspec.c' ! -ipath './util/grub-gen-asciih.c' ! -ipath './gnulib/*' ! -ipath './grub-core/lib/gnulib/*' ! -path './.pc/*' |sort > po/POTFILES.in
|
||||
find util -iname '*.in' ! -name Makefile.in |sort > po/POTFILES-shell.in
|
||||
|
||||
echo "Importing unicode..."
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
search.file ($cmdpath)/EFI/BOOT/grub.cfg root
|
||||
set prefix=($root)/EFI/BOOT
|
||||
+168
@@ -0,0 +1,168 @@
|
||||
From 14ceb3b3ff6db664649138442b6562c114dcf56e Mon Sep 17 00:00:00 2001
|
||||
From: Chris Coulson <chris.coulson@canonical.com>
|
||||
Date: Tue, 5 Apr 2022 10:58:28 +0100
|
||||
Subject: [PATCH] commands/boot: Add API to pass context to loader
|
||||
|
||||
Loaders rely on global variables for saving context which is consumed
|
||||
in the boot hook and freed in the unload hook. In the case where a loader
|
||||
command is executed twice, calling grub_loader_set() a second time executes
|
||||
the unload hook, but in some cases this runs when the loader's global
|
||||
context has already been updated, resulting in the updated context being
|
||||
freed and potential use-after-free bugs when the boot hook is subsequently
|
||||
called.
|
||||
|
||||
This adds a new API, grub_loader_set_ex(), which allows a loader to specify
|
||||
context that is passed to its boot and unload hooks. This is an alternative
|
||||
to requiring that loaders call grub_loader_unset() before mutating their
|
||||
global context.
|
||||
|
||||
Signed-off-by: Chris Coulson <chris.coulson@canonical.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
|
||||
Upstream-Status: Backport
|
||||
|
||||
Reference to upstream patch:
|
||||
https://git.savannah.gnu.org/cgit/grub.git/commit/?id=14ceb3b3ff6db664649138442b6562c114dcf56e
|
||||
|
||||
Signed-off-by: Xiangyu Chen <xiangyu.chen@windriver.com>
|
||||
---
|
||||
grub-core/commands/boot.c | 66 ++++++++++++++++++++++++++++++++++-----
|
||||
include/grub/loader.h | 5 +++
|
||||
2 files changed, 63 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/grub-core/commands/boot.c b/grub-core/commands/boot.c
|
||||
index bbca81e94..61514788e 100644
|
||||
--- a/grub-core/commands/boot.c
|
||||
+++ b/grub-core/commands/boot.c
|
||||
@@ -27,10 +27,20 @@
|
||||
|
||||
GRUB_MOD_LICENSE ("GPLv3+");
|
||||
|
||||
-static grub_err_t (*grub_loader_boot_func) (void);
|
||||
-static grub_err_t (*grub_loader_unload_func) (void);
|
||||
+static grub_err_t (*grub_loader_boot_func) (void *context);
|
||||
+static grub_err_t (*grub_loader_unload_func) (void *context);
|
||||
+static void *grub_loader_context;
|
||||
static int grub_loader_flags;
|
||||
|
||||
+struct grub_simple_loader_hooks
|
||||
+{
|
||||
+ grub_err_t (*boot) (void);
|
||||
+ grub_err_t (*unload) (void);
|
||||
+};
|
||||
+
|
||||
+/* Don't heap allocate this to avoid making grub_loader_set() fallible. */
|
||||
+static struct grub_simple_loader_hooks simple_loader_hooks;
|
||||
+
|
||||
struct grub_preboot
|
||||
{
|
||||
grub_err_t (*preboot_func) (int);
|
||||
@@ -44,6 +54,29 @@ static int grub_loader_loaded;
|
||||
static struct grub_preboot *preboots_head = 0,
|
||||
*preboots_tail = 0;
|
||||
|
||||
+static grub_err_t
|
||||
+grub_simple_boot_hook (void *context)
|
||||
+{
|
||||
+ struct grub_simple_loader_hooks *hooks;
|
||||
+
|
||||
+ hooks = (struct grub_simple_loader_hooks *) context;
|
||||
+ return hooks->boot ();
|
||||
+}
|
||||
+
|
||||
+static grub_err_t
|
||||
+grub_simple_unload_hook (void *context)
|
||||
+{
|
||||
+ struct grub_simple_loader_hooks *hooks;
|
||||
+ grub_err_t ret;
|
||||
+
|
||||
+ hooks = (struct grub_simple_loader_hooks *) context;
|
||||
+
|
||||
+ ret = hooks->unload ();
|
||||
+ grub_memset (hooks, 0, sizeof (*hooks));
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
int
|
||||
grub_loader_is_loaded (void)
|
||||
{
|
||||
@@ -110,28 +143,45 @@ grub_loader_unregister_preboot_hook (struct grub_preboot *hnd)
|
||||
}
|
||||
|
||||
void
|
||||
-grub_loader_set (grub_err_t (*boot) (void),
|
||||
- grub_err_t (*unload) (void),
|
||||
- int flags)
|
||||
+grub_loader_set_ex (grub_err_t (*boot) (void *context),
|
||||
+ grub_err_t (*unload) (void *context),
|
||||
+ void *context,
|
||||
+ int flags)
|
||||
{
|
||||
if (grub_loader_loaded && grub_loader_unload_func)
|
||||
- grub_loader_unload_func ();
|
||||
+ grub_loader_unload_func (grub_loader_context);
|
||||
|
||||
grub_loader_boot_func = boot;
|
||||
grub_loader_unload_func = unload;
|
||||
+ grub_loader_context = context;
|
||||
grub_loader_flags = flags;
|
||||
|
||||
grub_loader_loaded = 1;
|
||||
}
|
||||
|
||||
+void
|
||||
+grub_loader_set (grub_err_t (*boot) (void),
|
||||
+ grub_err_t (*unload) (void),
|
||||
+ int flags)
|
||||
+{
|
||||
+ grub_loader_set_ex (grub_simple_boot_hook,
|
||||
+ grub_simple_unload_hook,
|
||||
+ &simple_loader_hooks,
|
||||
+ flags);
|
||||
+
|
||||
+ simple_loader_hooks.boot = boot;
|
||||
+ simple_loader_hooks.unload = unload;
|
||||
+}
|
||||
+
|
||||
void
|
||||
grub_loader_unset(void)
|
||||
{
|
||||
if (grub_loader_loaded && grub_loader_unload_func)
|
||||
- grub_loader_unload_func ();
|
||||
+ grub_loader_unload_func (grub_loader_context);
|
||||
|
||||
grub_loader_boot_func = 0;
|
||||
grub_loader_unload_func = 0;
|
||||
+ grub_loader_context = 0;
|
||||
|
||||
grub_loader_loaded = 0;
|
||||
}
|
||||
@@ -158,7 +208,7 @@ grub_loader_boot (void)
|
||||
return err;
|
||||
}
|
||||
}
|
||||
- err = (grub_loader_boot_func) ();
|
||||
+ err = (grub_loader_boot_func) (grub_loader_context);
|
||||
|
||||
for (cur = preboots_tail; cur; cur = cur->prev)
|
||||
if (! err)
|
||||
diff --git a/include/grub/loader.h b/include/grub/loader.h
|
||||
index b20864282..97f231054 100644
|
||||
--- a/include/grub/loader.h
|
||||
+++ b/include/grub/loader.h
|
||||
@@ -40,6 +40,11 @@ void EXPORT_FUNC (grub_loader_set) (grub_err_t (*boot) (void),
|
||||
grub_err_t (*unload) (void),
|
||||
int flags);
|
||||
|
||||
+void EXPORT_FUNC (grub_loader_set_ex) (grub_err_t (*boot) (void *context),
|
||||
+ grub_err_t (*unload) (void *context),
|
||||
+ void *context,
|
||||
+ int flags);
|
||||
+
|
||||
/* Unset current loader, if any. */
|
||||
void EXPORT_FUNC (grub_loader_unset) (void);
|
||||
|
||||
--
|
||||
2.34.1
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
From b6f9b3f6fa782807c4a7ec16ee8ef868cdfbf468 Mon Sep 17 00:00:00 2001
|
||||
From: Naveen Saini <naveen.kumar.saini@intel.com>
|
||||
Date: Mon, 15 Mar 2021 14:56:18 +0800
|
||||
Subject: [PATCH] The output in moddep.lst generated from syminfo.lst using
|
||||
genmoddep.awk is not deterministic since the order of the dependencies on
|
||||
each line can vary depending on how awk sorts the values in the array.
|
||||
|
||||
Be deterministic in the output by sorting the dependencies on each line.
|
||||
|
||||
Also, the output of the SOURCES lines in grub-core/Makefile.core.am, generated
|
||||
from grub-core/Makefile.core.def with gentpl.py is not deterministic due to
|
||||
missing sorting of the list used to generate it. Add such a sort.
|
||||
|
||||
Also ensure the generated unidata.c file is deterministic by sorting the
|
||||
keys of the dict.
|
||||
|
||||
Upstream-Status: Submitted [https://lists.gnu.org/archive/html/grub-devel/2023-06/index.html]
|
||||
Richard Purdie <richard.purdie@linuxfoundation.org>
|
||||
Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
|
||||
---
|
||||
gentpl.py | 1 +
|
||||
grub-core/genmoddep.awk | 4 +++-
|
||||
util/import_unicode.py | 2 +-
|
||||
3 files changed, 5 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/gentpl.py b/gentpl.py
|
||||
index c86550d4f..589285192 100644
|
||||
--- a/gentpl.py
|
||||
+++ b/gentpl.py
|
||||
@@ -568,6 +568,7 @@ def foreach_platform_value(defn, platform, suffix, closure):
|
||||
for group in RMAP[platform]:
|
||||
for value in defn.find_all(group + suffix):
|
||||
r.append(closure(value))
|
||||
+ r.sort()
|
||||
return ''.join(r)
|
||||
|
||||
def platform_conditional(platform, closure):
|
||||
diff --git a/grub-core/genmoddep.awk b/grub-core/genmoddep.awk
|
||||
index 04c2863e5..247436392 100644
|
||||
--- a/grub-core/genmoddep.awk
|
||||
+++ b/grub-core/genmoddep.awk
|
||||
@@ -59,7 +59,9 @@ END {
|
||||
}
|
||||
modlist = ""
|
||||
depcount[mod] = 0
|
||||
- for (depmod in uniqmods) {
|
||||
+ n = asorti(uniqmods, w)
|
||||
+ for (i = 1; i <= n; i++) {
|
||||
+ depmod = w[i]
|
||||
modlist = modlist " " depmod;
|
||||
inverse_dependencies[depmod] = inverse_dependencies[depmod] " " mod
|
||||
depcount[mod]++
|
||||
diff --git a/util/import_unicode.py b/util/import_unicode.py
|
||||
index 08f80591e..1f434a069 100644
|
||||
--- a/util/import_unicode.py
|
||||
+++ b/util/import_unicode.py
|
||||
@@ -174,7 +174,7 @@ infile.close ()
|
||||
|
||||
outfile.write ("struct grub_unicode_arabic_shape grub_unicode_arabic_shapes[] = {\n ")
|
||||
|
||||
-for x in arabicsubst:
|
||||
+for x in sorted(arabicsubst):
|
||||
try:
|
||||
if arabicsubst[x]['join'] == "DUAL":
|
||||
outfile.write ("{0x%x, 0x%x, 0x%x, 0x%x, 0x%x},\n " % (arabicsubst[x][0], arabicsubst[x][1], arabicsubst[x][2], arabicsubst[x][3], arabicsubst[x][4]))
|
||||
--
|
||||
2.17.1
|
||||
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
From 917133acc701dbc4636165d3b08d15dc5829a06f Mon Sep 17 00:00:00 2001
|
||||
From: Hongxu Jia <hongxu.jia@windriver.com>
|
||||
Date: Wed, 17 Aug 2016 04:06:34 -0400
|
||||
Subject: [PATCH] grub module explicitly keeps symbole .module_license
|
||||
|
||||
While using oe-core toolchain to strip grub module 'all_video.mod',
|
||||
it stripped symbol table:
|
||||
|
||||
---------------
|
||||
root@localhost:~# objdump -t all_video.mod
|
||||
|
||||
all_video.mod: file format elf64-x86-64
|
||||
|
||||
SYMBOL TABLE:
|
||||
no symbols
|
||||
--------------
|
||||
|
||||
It caused grub to load module all_video failed.
|
||||
--------------
|
||||
grub> insmod all_video
|
||||
error: no symbol table.
|
||||
--------------
|
||||
|
||||
Tweak strip option to keep symbol .module_license could workaround
|
||||
the issue.
|
||||
--------------
|
||||
root@localhost:~# objdump -t all_video.mod
|
||||
|
||||
all_video.mod: file format elf64-x86-64
|
||||
|
||||
SYMBOL TABLE:
|
||||
0000000000000000 l d .text 0000000000000000 .text
|
||||
0000000000000000 l d .data 0000000000000000 .data
|
||||
0000000000000000 l d .module_license 0000000000000000 .module_license
|
||||
0000000000000000 l d .bss 0000000000000000 .bss
|
||||
0000000000000000 l d .moddeps 0000000000000000 .moddeps
|
||||
0000000000000000 l d .modname 0000000000000000 .modname
|
||||
--------------
|
||||
|
||||
Upstream-Status: Pending
|
||||
|
||||
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
|
||||
---
|
||||
grub-core/genmod.sh.in | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/grub-core/genmod.sh.in b/grub-core/genmod.sh.in
|
||||
index 1250589..dd14308 100644
|
||||
--- a/grub-core/genmod.sh.in
|
||||
+++ b/grub-core/genmod.sh.in
|
||||
@@ -56,7 +56,7 @@ if test x@TARGET_APPLE_LINKER@ != x1; then
|
||||
if test x@platform@ != xemu; then
|
||||
@TARGET_STRIP@ --strip-unneeded \
|
||||
-K grub_mod_init -K grub_mod_fini \
|
||||
- -K _grub_mod_init -K _grub_mod_fini \
|
||||
+ -K _grub_mod_init -K _grub_mod_fini -K .module_license \
|
||||
-R .note.gnu.gold-version -R .note.GNU-stack \
|
||||
-R .gnu.build.attributes \
|
||||
-R .rel.gnu.build.attributes \
|
||||
+129
@@ -0,0 +1,129 @@
|
||||
From 1469983ebb9674753ad333d37087fb8cb20e1dce Mon Sep 17 00:00:00 2001
|
||||
From: Chris Coulson <chris.coulson@canonical.com>
|
||||
Date: Tue, 5 Apr 2022 10:02:04 +0100
|
||||
Subject: [PATCH] loader/efi/chainloader: Simplify the loader state
|
||||
|
||||
The chainloader command retains the source buffer and device path passed
|
||||
to LoadImage(), requiring the unload hook passed to grub_loader_set() to
|
||||
free them. It isn't required to retain this state though - they aren't
|
||||
required by StartImage() or anything else in the boot hook, so clean them
|
||||
up before grub_cmd_chainloader() finishes.
|
||||
|
||||
Signed-off-by: Chris Coulson <chris.coulson@canonical.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
|
||||
Upstream-Status: Backport
|
||||
|
||||
Reference to upstream patch:
|
||||
https://git.savannah.gnu.org/cgit/grub.git/commit/?id=1469983ebb9674753ad333d37087fb8cb20e1dce
|
||||
|
||||
Signed-off-by: Xiangyu Chen <xiangyu.chen@windriver.com>
|
||||
---
|
||||
grub-core/loader/efi/chainloader.c | 38 +++++++++++++++++-------------
|
||||
1 file changed, 21 insertions(+), 17 deletions(-)
|
||||
|
||||
diff --git a/grub-core/loader/efi/chainloader.c b/grub-core/loader/efi/chainloader.c
|
||||
index 2bd80f4db..d1602c89b 100644
|
||||
--- a/grub-core/loader/efi/chainloader.c
|
||||
+++ b/grub-core/loader/efi/chainloader.c
|
||||
@@ -44,25 +44,20 @@ GRUB_MOD_LICENSE ("GPLv3+");
|
||||
|
||||
static grub_dl_t my_mod;
|
||||
|
||||
-static grub_efi_physical_address_t address;
|
||||
-static grub_efi_uintn_t pages;
|
||||
-static grub_efi_device_path_t *file_path;
|
||||
static grub_efi_handle_t image_handle;
|
||||
-static grub_efi_char16_t *cmdline;
|
||||
|
||||
static grub_err_t
|
||||
grub_chainloader_unload (void)
|
||||
{
|
||||
+ grub_efi_loaded_image_t *loaded_image;
|
||||
grub_efi_boot_services_t *b;
|
||||
|
||||
+ loaded_image = grub_efi_get_loaded_image (image_handle);
|
||||
+ if (loaded_image != NULL)
|
||||
+ grub_free (loaded_image->load_options);
|
||||
+
|
||||
b = grub_efi_system_table->boot_services;
|
||||
efi_call_1 (b->unload_image, image_handle);
|
||||
- efi_call_2 (b->free_pages, address, pages);
|
||||
-
|
||||
- grub_free (file_path);
|
||||
- grub_free (cmdline);
|
||||
- cmdline = 0;
|
||||
- file_path = 0;
|
||||
|
||||
grub_dl_unref (my_mod);
|
||||
return GRUB_ERR_NONE;
|
||||
@@ -140,7 +135,7 @@ make_file_path (grub_efi_device_path_t *dp, const char *filename)
|
||||
char *dir_start;
|
||||
char *dir_end;
|
||||
grub_size_t size;
|
||||
- grub_efi_device_path_t *d;
|
||||
+ grub_efi_device_path_t *d, *file_path;
|
||||
|
||||
dir_start = grub_strchr (filename, ')');
|
||||
if (! dir_start)
|
||||
@@ -222,11 +217,14 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)),
|
||||
grub_efi_status_t status;
|
||||
grub_efi_boot_services_t *b;
|
||||
grub_device_t dev = 0;
|
||||
- grub_efi_device_path_t *dp = 0;
|
||||
+ grub_efi_device_path_t *dp = NULL, *file_path = NULL;
|
||||
grub_efi_loaded_image_t *loaded_image;
|
||||
char *filename;
|
||||
void *boot_image = 0;
|
||||
grub_efi_handle_t dev_handle = 0;
|
||||
+ grub_efi_physical_address_t address = 0;
|
||||
+ grub_efi_uintn_t pages = 0;
|
||||
+ grub_efi_char16_t *cmdline = NULL;
|
||||
|
||||
if (argc == 0)
|
||||
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
|
||||
@@ -234,11 +232,6 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)),
|
||||
|
||||
grub_dl_ref (my_mod);
|
||||
|
||||
- /* Initialize some global variables. */
|
||||
- address = 0;
|
||||
- image_handle = 0;
|
||||
- file_path = 0;
|
||||
-
|
||||
b = grub_efi_system_table->boot_services;
|
||||
|
||||
file = grub_file_open (filename, GRUB_FILE_TYPE_EFI_CHAINLOADED_IMAGE);
|
||||
@@ -408,6 +401,10 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)),
|
||||
grub_file_close (file);
|
||||
grub_device_close (dev);
|
||||
|
||||
+ /* We're finished with the source image buffer and file path now. */
|
||||
+ efi_call_2 (b->free_pages, address, pages);
|
||||
+ grub_free (file_path);
|
||||
+
|
||||
grub_loader_set (grub_chainloader_boot, grub_chainloader_unload, 0);
|
||||
return 0;
|
||||
|
||||
@@ -419,11 +416,18 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)),
|
||||
if (file)
|
||||
grub_file_close (file);
|
||||
|
||||
+ grub_free (cmdline);
|
||||
grub_free (file_path);
|
||||
|
||||
if (address)
|
||||
efi_call_2 (b->free_pages, address, pages);
|
||||
|
||||
+ if (image_handle != NULL)
|
||||
+ {
|
||||
+ efi_call_1 (b->unload_image, image_handle);
|
||||
+ image_handle = NULL;
|
||||
+ }
|
||||
+
|
||||
grub_dl_unref (my_mod);
|
||||
|
||||
return grub_errno;
|
||||
--
|
||||
2.34.1
|
||||
|
||||
@@ -0,0 +1,693 @@
|
||||
From 1f48917d8ddb490dcdc70176e0f58136b7f7811a Mon Sep 17 00:00:00 2001
|
||||
From: Elyes Haouas <ehaouas@noos.fr>
|
||||
Date: Fri, 4 Mar 2022 07:42:13 +0100
|
||||
Subject: [PATCH] video: Remove trailing whitespaces
|
||||
|
||||
Signed-off-by: Elyes Haouas <ehaouas@noos.fr>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
|
||||
Upstream-Status: Backport
|
||||
|
||||
Reference to upstream patch:
|
||||
https://git.savannah.gnu.org/cgit/grub.git/commit/?id=1f48917d8ddb490dcdc70176e0f58136b7f7811a
|
||||
|
||||
Signed-off-by: Yongxin Liu <yongxin.liu@windriver.com>
|
||||
---
|
||||
grub-core/video/bochs.c | 2 +-
|
||||
grub-core/video/capture.c | 2 +-
|
||||
grub-core/video/cirrus.c | 4 ++--
|
||||
grub-core/video/coreboot/cbfb.c | 2 +-
|
||||
grub-core/video/efi_gop.c | 22 +++++++++----------
|
||||
grub-core/video/fb/fbblit.c | 8 +++----
|
||||
grub-core/video/fb/video_fb.c | 10 ++++-----
|
||||
grub-core/video/i386/pc/vbe.c | 34 ++++++++++++++---------------
|
||||
grub-core/video/i386/pc/vga.c | 6 ++---
|
||||
grub-core/video/ieee1275.c | 4 ++--
|
||||
grub-core/video/radeon_fuloong2e.c | 6 ++---
|
||||
grub-core/video/radeon_yeeloong3a.c | 6 ++---
|
||||
grub-core/video/readers/png.c | 2 +-
|
||||
grub-core/video/readers/tga.c | 2 +-
|
||||
grub-core/video/sis315_init.c | 2 +-
|
||||
grub-core/video/sis315pro.c | 8 +++----
|
||||
grub-core/video/sm712.c | 10 ++++-----
|
||||
grub-core/video/video.c | 8 +++----
|
||||
18 files changed, 69 insertions(+), 69 deletions(-)
|
||||
|
||||
diff --git a/grub-core/video/bochs.c b/grub-core/video/bochs.c
|
||||
index 30ea1bd82..edc651697 100644
|
||||
--- a/grub-core/video/bochs.c
|
||||
+++ b/grub-core/video/bochs.c
|
||||
@@ -212,7 +212,7 @@ find_card (grub_pci_device_t dev, grub_pci_id_t pciid, void *data)
|
||||
|
||||
if (((class >> 16) & 0xffff) != 0x0300 || pciid != 0x11111234)
|
||||
return 0;
|
||||
-
|
||||
+
|
||||
addr = grub_pci_make_address (dev, GRUB_PCI_REG_ADDRESS_REG0);
|
||||
framebuffer.base = grub_pci_read (addr) & GRUB_PCI_ADDR_MEM_MASK;
|
||||
if (!framebuffer.base)
|
||||
diff --git a/grub-core/video/capture.c b/grub-core/video/capture.c
|
||||
index 4d3195e01..c653d89f9 100644
|
||||
--- a/grub-core/video/capture.c
|
||||
+++ b/grub-core/video/capture.c
|
||||
@@ -92,7 +92,7 @@ grub_video_capture_start (const struct grub_video_mode_info *mode_info,
|
||||
framebuffer.ptr = grub_calloc (framebuffer.mode_info.height, framebuffer.mode_info.pitch);
|
||||
if (!framebuffer.ptr)
|
||||
return grub_errno;
|
||||
-
|
||||
+
|
||||
err = grub_video_fb_create_render_target_from_pointer (&framebuffer.render_target,
|
||||
&framebuffer.mode_info,
|
||||
framebuffer.ptr);
|
||||
diff --git a/grub-core/video/cirrus.c b/grub-core/video/cirrus.c
|
||||
index e2149e8ce..f5542ccdc 100644
|
||||
--- a/grub-core/video/cirrus.c
|
||||
+++ b/grub-core/video/cirrus.c
|
||||
@@ -354,11 +354,11 @@ grub_video_cirrus_setup (unsigned int width, unsigned int height,
|
||||
grub_uint8_t sr_ext = 0, hidden_dac = 0;
|
||||
|
||||
grub_vga_set_geometry (&config, grub_vga_cr_write);
|
||||
-
|
||||
+
|
||||
grub_vga_gr_write (GRUB_VGA_GR_MODE_256_COLOR | GRUB_VGA_GR_MODE_READ_MODE1,
|
||||
GRUB_VGA_GR_MODE);
|
||||
grub_vga_gr_write (GRUB_VGA_GR_GR6_GRAPHICS_MODE, GRUB_VGA_GR_GR6);
|
||||
-
|
||||
+
|
||||
grub_vga_sr_write (GRUB_VGA_SR_MEMORY_MODE_NORMAL, GRUB_VGA_SR_MEMORY_MODE);
|
||||
|
||||
grub_vga_cr_write ((config.pitch >> CIRRUS_CR_EXTENDED_DISPLAY_PITCH_SHIFT)
|
||||
diff --git a/grub-core/video/coreboot/cbfb.c b/grub-core/video/coreboot/cbfb.c
|
||||
index 9af81fa5b..986003c51 100644
|
||||
--- a/grub-core/video/coreboot/cbfb.c
|
||||
+++ b/grub-core/video/coreboot/cbfb.c
|
||||
@@ -106,7 +106,7 @@ grub_video_cbfb_setup (unsigned int width, unsigned int height,
|
||||
|
||||
grub_video_fb_set_palette (0, GRUB_VIDEO_FBSTD_NUMCOLORS,
|
||||
grub_video_fbstd_colors);
|
||||
-
|
||||
+
|
||||
return err;
|
||||
}
|
||||
|
||||
diff --git a/grub-core/video/efi_gop.c b/grub-core/video/efi_gop.c
|
||||
index b7590dc6c..7a5054631 100644
|
||||
--- a/grub-core/video/efi_gop.c
|
||||
+++ b/grub-core/video/efi_gop.c
|
||||
@@ -273,7 +273,7 @@ grub_video_gop_iterate (int (*hook) (const struct grub_video_mode_info *info, vo
|
||||
grub_efi_status_t status;
|
||||
struct grub_efi_gop_mode_info *info = NULL;
|
||||
struct grub_video_mode_info mode_info;
|
||||
-
|
||||
+
|
||||
status = efi_call_4 (gop->query_mode, gop, mode, &size, &info);
|
||||
|
||||
if (status)
|
||||
@@ -390,7 +390,7 @@ grub_video_gop_setup (unsigned int width, unsigned int height,
|
||||
found = 1;
|
||||
}
|
||||
}
|
||||
-
|
||||
+
|
||||
if (!found)
|
||||
{
|
||||
unsigned mode;
|
||||
@@ -399,7 +399,7 @@ grub_video_gop_setup (unsigned int width, unsigned int height,
|
||||
{
|
||||
grub_efi_uintn_t size;
|
||||
grub_efi_status_t status;
|
||||
-
|
||||
+
|
||||
status = efi_call_4 (gop->query_mode, gop, mode, &size, &info);
|
||||
if (status)
|
||||
{
|
||||
@@ -472,11 +472,11 @@ grub_video_gop_setup (unsigned int width, unsigned int height,
|
||||
framebuffer.ptr = (void *) (grub_addr_t) gop->mode->fb_base;
|
||||
framebuffer.offscreen
|
||||
= grub_malloc (framebuffer.mode_info.height
|
||||
- * framebuffer.mode_info.width
|
||||
+ * framebuffer.mode_info.width
|
||||
* sizeof (struct grub_efi_gop_blt_pixel));
|
||||
|
||||
buffer = framebuffer.offscreen;
|
||||
-
|
||||
+
|
||||
if (!buffer)
|
||||
{
|
||||
grub_dprintf ("video", "GOP: couldn't allocate shadow\n");
|
||||
@@ -485,11 +485,11 @@ grub_video_gop_setup (unsigned int width, unsigned int height,
|
||||
&framebuffer.mode_info);
|
||||
buffer = framebuffer.ptr;
|
||||
}
|
||||
-
|
||||
+
|
||||
grub_dprintf ("video", "GOP: initialising FB @ %p %dx%dx%d\n",
|
||||
framebuffer.ptr, framebuffer.mode_info.width,
|
||||
framebuffer.mode_info.height, framebuffer.mode_info.bpp);
|
||||
-
|
||||
+
|
||||
err = grub_video_fb_create_render_target_from_pointer
|
||||
(&framebuffer.render_target, &framebuffer.mode_info, buffer);
|
||||
|
||||
@@ -498,15 +498,15 @@ grub_video_gop_setup (unsigned int width, unsigned int height,
|
||||
grub_dprintf ("video", "GOP: Couldn't create FB target\n");
|
||||
return err;
|
||||
}
|
||||
-
|
||||
+
|
||||
err = grub_video_fb_set_active_render_target (framebuffer.render_target);
|
||||
-
|
||||
+
|
||||
if (err)
|
||||
{
|
||||
grub_dprintf ("video", "GOP: Couldn't set FB target\n");
|
||||
return err;
|
||||
}
|
||||
-
|
||||
+
|
||||
err = grub_video_fb_set_palette (0, GRUB_VIDEO_FBSTD_NUMCOLORS,
|
||||
grub_video_fbstd_colors);
|
||||
|
||||
@@ -514,7 +514,7 @@ grub_video_gop_setup (unsigned int width, unsigned int height,
|
||||
grub_dprintf ("video", "GOP: Couldn't set palette\n");
|
||||
else
|
||||
grub_dprintf ("video", "GOP: Success\n");
|
||||
-
|
||||
+
|
||||
return err;
|
||||
}
|
||||
|
||||
diff --git a/grub-core/video/fb/fbblit.c b/grub-core/video/fb/fbblit.c
|
||||
index d55924837..1010ef393 100644
|
||||
--- a/grub-core/video/fb/fbblit.c
|
||||
+++ b/grub-core/video/fb/fbblit.c
|
||||
@@ -466,7 +466,7 @@ grub_video_fbblit_replace_24bit_indexa (struct grub_video_fbblit_info *dst,
|
||||
for (i = 0; i < width; i++)
|
||||
{
|
||||
register grub_uint32_t col;
|
||||
- if (*srcptr == 0xf0)
|
||||
+ if (*srcptr == 0xf0)
|
||||
col = palette[16];
|
||||
else
|
||||
col = palette[*srcptr & 0xf];
|
||||
@@ -478,7 +478,7 @@ grub_video_fbblit_replace_24bit_indexa (struct grub_video_fbblit_info *dst,
|
||||
*dstptr++ = col >> 0;
|
||||
*dstptr++ = col >> 8;
|
||||
*dstptr++ = col >> 16;
|
||||
-#endif
|
||||
+#endif
|
||||
srcptr++;
|
||||
}
|
||||
|
||||
@@ -651,7 +651,7 @@ grub_video_fbblit_blend_24bit_indexa (struct grub_video_fbblit_info *dst,
|
||||
for (i = 0; i < width; i++)
|
||||
{
|
||||
register grub_uint32_t col;
|
||||
- if (*srcptr != 0xf0)
|
||||
+ if (*srcptr != 0xf0)
|
||||
{
|
||||
col = palette[*srcptr & 0xf];
|
||||
#ifdef GRUB_CPU_WORDS_BIGENDIAN
|
||||
@@ -662,7 +662,7 @@ grub_video_fbblit_blend_24bit_indexa (struct grub_video_fbblit_info *dst,
|
||||
*dstptr++ = col >> 0;
|
||||
*dstptr++ = col >> 8;
|
||||
*dstptr++ = col >> 16;
|
||||
-#endif
|
||||
+#endif
|
||||
}
|
||||
else
|
||||
dstptr += 3;
|
||||
diff --git a/grub-core/video/fb/video_fb.c b/grub-core/video/fb/video_fb.c
|
||||
index ae6b89f9a..fa4ebde26 100644
|
||||
--- a/grub-core/video/fb/video_fb.c
|
||||
+++ b/grub-core/video/fb/video_fb.c
|
||||
@@ -754,7 +754,7 @@ grub_video_fb_unmap_color_int (struct grub_video_fbblit_info * source,
|
||||
*alpha = 0;
|
||||
return;
|
||||
}
|
||||
-
|
||||
+
|
||||
/* If we have an out-of-bounds color, return transparent black. */
|
||||
if (color > 255)
|
||||
{
|
||||
@@ -1141,7 +1141,7 @@ grub_video_fb_scroll (grub_video_color_t color, int dx, int dy)
|
||||
/* If everything is aligned on 32-bit use 32-bit copy. */
|
||||
if ((grub_addr_t) grub_video_fb_get_video_ptr (&target, src_x, src_y)
|
||||
% sizeof (grub_uint32_t) == 0
|
||||
- && (grub_addr_t) grub_video_fb_get_video_ptr (&target, dst_x, dst_y)
|
||||
+ && (grub_addr_t) grub_video_fb_get_video_ptr (&target, dst_x, dst_y)
|
||||
% sizeof (grub_uint32_t) == 0
|
||||
&& linelen % sizeof (grub_uint32_t) == 0
|
||||
&& linedelta % sizeof (grub_uint32_t) == 0)
|
||||
@@ -1155,7 +1155,7 @@ grub_video_fb_scroll (grub_video_color_t color, int dx, int dy)
|
||||
else if ((grub_addr_t) grub_video_fb_get_video_ptr (&target, src_x, src_y)
|
||||
% sizeof (grub_uint16_t) == 0
|
||||
&& (grub_addr_t) grub_video_fb_get_video_ptr (&target,
|
||||
- dst_x, dst_y)
|
||||
+ dst_x, dst_y)
|
||||
% sizeof (grub_uint16_t) == 0
|
||||
&& linelen % sizeof (grub_uint16_t) == 0
|
||||
&& linedelta % sizeof (grub_uint16_t) == 0)
|
||||
@@ -1170,7 +1170,7 @@ grub_video_fb_scroll (grub_video_color_t color, int dx, int dy)
|
||||
{
|
||||
grub_uint8_t *src, *dst;
|
||||
DO_SCROLL
|
||||
- }
|
||||
+ }
|
||||
}
|
||||
|
||||
/* 4. Fill empty space with specified color. In this implementation
|
||||
@@ -1615,7 +1615,7 @@ grub_video_fb_setup (unsigned int mode_type, unsigned int mode_mask,
|
||||
framebuffer.render_target = framebuffer.back_target;
|
||||
return GRUB_ERR_NONE;
|
||||
}
|
||||
-
|
||||
+
|
||||
mode_info->mode_type &= ~(GRUB_VIDEO_MODE_TYPE_DOUBLE_BUFFERED
|
||||
| GRUB_VIDEO_MODE_TYPE_UPDATING_SWAP);
|
||||
|
||||
diff --git a/grub-core/video/i386/pc/vbe.c b/grub-core/video/i386/pc/vbe.c
|
||||
index b7f911926..0e65b5206 100644
|
||||
--- a/grub-core/video/i386/pc/vbe.c
|
||||
+++ b/grub-core/video/i386/pc/vbe.c
|
||||
@@ -219,7 +219,7 @@ grub_vbe_disable_mtrr (int mtrr)
|
||||
}
|
||||
|
||||
/* Call VESA BIOS 0x4f09 to set palette data, return status. */
|
||||
-static grub_vbe_status_t
|
||||
+static grub_vbe_status_t
|
||||
grub_vbe_bios_set_palette_data (grub_uint32_t color_count,
|
||||
grub_uint32_t start_index,
|
||||
struct grub_vbe_palette_data *palette_data)
|
||||
@@ -237,7 +237,7 @@ grub_vbe_bios_set_palette_data (grub_uint32_t color_count,
|
||||
}
|
||||
|
||||
/* Call VESA BIOS 0x4f00 to get VBE Controller Information, return status. */
|
||||
-grub_vbe_status_t
|
||||
+grub_vbe_status_t
|
||||
grub_vbe_bios_get_controller_info (struct grub_vbe_info_block *ci)
|
||||
{
|
||||
struct grub_bios_int_registers regs;
|
||||
@@ -251,7 +251,7 @@ grub_vbe_bios_get_controller_info (struct grub_vbe_info_block *ci)
|
||||
}
|
||||
|
||||
/* Call VESA BIOS 0x4f01 to get VBE Mode Information, return status. */
|
||||
-grub_vbe_status_t
|
||||
+grub_vbe_status_t
|
||||
grub_vbe_bios_get_mode_info (grub_uint32_t mode,
|
||||
struct grub_vbe_mode_info_block *mode_info)
|
||||
{
|
||||
@@ -285,7 +285,7 @@ grub_vbe_bios_set_mode (grub_uint32_t mode,
|
||||
}
|
||||
|
||||
/* Call VESA BIOS 0x4f03 to return current VBE Mode, return status. */
|
||||
-grub_vbe_status_t
|
||||
+grub_vbe_status_t
|
||||
grub_vbe_bios_get_mode (grub_uint32_t *mode)
|
||||
{
|
||||
struct grub_bios_int_registers regs;
|
||||
@@ -298,7 +298,7 @@ grub_vbe_bios_get_mode (grub_uint32_t *mode)
|
||||
return regs.eax & 0xffff;
|
||||
}
|
||||
|
||||
-grub_vbe_status_t
|
||||
+grub_vbe_status_t
|
||||
grub_vbe_bios_getset_dac_palette_width (int set, int *dac_mask_size)
|
||||
{
|
||||
struct grub_bios_int_registers regs;
|
||||
@@ -346,7 +346,7 @@ grub_vbe_bios_get_memory_window (grub_uint32_t window,
|
||||
}
|
||||
|
||||
/* Call VESA BIOS 0x4f06 to set scanline length (in bytes), return status. */
|
||||
-grub_vbe_status_t
|
||||
+grub_vbe_status_t
|
||||
grub_vbe_bios_set_scanline_length (grub_uint32_t length)
|
||||
{
|
||||
struct grub_bios_int_registers regs;
|
||||
@@ -354,14 +354,14 @@ grub_vbe_bios_set_scanline_length (grub_uint32_t length)
|
||||
regs.ecx = length;
|
||||
regs.eax = 0x4f06;
|
||||
/* BL = 2, Set Scan Line in Bytes. */
|
||||
- regs.ebx = 0x0002;
|
||||
+ regs.ebx = 0x0002;
|
||||
regs.flags = GRUB_CPU_INT_FLAGS_DEFAULT;
|
||||
grub_bios_interrupt (0x10, ®s);
|
||||
return regs.eax & 0xffff;
|
||||
}
|
||||
|
||||
/* Call VESA BIOS 0x4f06 to return scanline length (in bytes), return status. */
|
||||
-grub_vbe_status_t
|
||||
+grub_vbe_status_t
|
||||
grub_vbe_bios_get_scanline_length (grub_uint32_t *length)
|
||||
{
|
||||
struct grub_bios_int_registers regs;
|
||||
@@ -377,7 +377,7 @@ grub_vbe_bios_get_scanline_length (grub_uint32_t *length)
|
||||
}
|
||||
|
||||
/* Call VESA BIOS 0x4f07 to set display start, return status. */
|
||||
-static grub_vbe_status_t
|
||||
+static grub_vbe_status_t
|
||||
grub_vbe_bios_set_display_start (grub_uint32_t x, grub_uint32_t y)
|
||||
{
|
||||
struct grub_bios_int_registers regs;
|
||||
@@ -390,7 +390,7 @@ grub_vbe_bios_set_display_start (grub_uint32_t x, grub_uint32_t y)
|
||||
regs.edx = y;
|
||||
regs.eax = 0x4f07;
|
||||
/* BL = 80h, Set Display Start during Vertical Retrace. */
|
||||
- regs.ebx = 0x0080;
|
||||
+ regs.ebx = 0x0080;
|
||||
regs.flags = GRUB_CPU_INT_FLAGS_DEFAULT;
|
||||
grub_bios_interrupt (0x10, ®s);
|
||||
|
||||
@@ -401,7 +401,7 @@ grub_vbe_bios_set_display_start (grub_uint32_t x, grub_uint32_t y)
|
||||
}
|
||||
|
||||
/* Call VESA BIOS 0x4f07 to get display start, return status. */
|
||||
-grub_vbe_status_t
|
||||
+grub_vbe_status_t
|
||||
grub_vbe_bios_get_display_start (grub_uint32_t *x,
|
||||
grub_uint32_t *y)
|
||||
{
|
||||
@@ -419,7 +419,7 @@ grub_vbe_bios_get_display_start (grub_uint32_t *x,
|
||||
}
|
||||
|
||||
/* Call VESA BIOS 0x4f0a. */
|
||||
-grub_vbe_status_t
|
||||
+grub_vbe_status_t
|
||||
grub_vbe_bios_get_pm_interface (grub_uint16_t *segment, grub_uint16_t *offset,
|
||||
grub_uint16_t *length)
|
||||
{
|
||||
@@ -896,7 +896,7 @@ vbe2videoinfo (grub_uint32_t mode,
|
||||
case GRUB_VBE_MEMORY_MODEL_YUV:
|
||||
mode_info->mode_type |= GRUB_VIDEO_MODE_TYPE_YUV;
|
||||
break;
|
||||
-
|
||||
+
|
||||
case GRUB_VBE_MEMORY_MODEL_DIRECT_COLOR:
|
||||
mode_info->mode_type |= GRUB_VIDEO_MODE_TYPE_RGB;
|
||||
break;
|
||||
@@ -923,10 +923,10 @@ vbe2videoinfo (grub_uint32_t mode,
|
||||
break;
|
||||
case 8:
|
||||
mode_info->bytes_per_pixel = 1;
|
||||
- break;
|
||||
+ break;
|
||||
case 4:
|
||||
mode_info->bytes_per_pixel = 0;
|
||||
- break;
|
||||
+ break;
|
||||
}
|
||||
|
||||
if (controller_info.version >= 0x300)
|
||||
@@ -976,7 +976,7 @@ grub_video_vbe_iterate (int (*hook) (const struct grub_video_mode_info *info, vo
|
||||
|
||||
static grub_err_t
|
||||
grub_video_vbe_setup (unsigned int width, unsigned int height,
|
||||
- grub_video_mode_type_t mode_type,
|
||||
+ grub_video_mode_type_t mode_type,
|
||||
grub_video_mode_type_t mode_mask)
|
||||
{
|
||||
grub_uint16_t *p;
|
||||
@@ -1193,7 +1193,7 @@ grub_video_vbe_print_adapter_specific_info (void)
|
||||
controller_info.version & 0xFF,
|
||||
controller_info.oem_software_rev >> 8,
|
||||
controller_info.oem_software_rev & 0xFF);
|
||||
-
|
||||
+
|
||||
/* The total_memory field is in 64 KiB units. */
|
||||
grub_printf_ (N_(" total memory: %d KiB\n"),
|
||||
(controller_info.total_memory << 6));
|
||||
diff --git a/grub-core/video/i386/pc/vga.c b/grub-core/video/i386/pc/vga.c
|
||||
index b2f776c99..50d0b5e02 100644
|
||||
--- a/grub-core/video/i386/pc/vga.c
|
||||
+++ b/grub-core/video/i386/pc/vga.c
|
||||
@@ -48,7 +48,7 @@ static struct
|
||||
int back_page;
|
||||
} framebuffer;
|
||||
|
||||
-static unsigned char
|
||||
+static unsigned char
|
||||
grub_vga_set_mode (unsigned char mode)
|
||||
{
|
||||
struct grub_bios_int_registers regs;
|
||||
@@ -182,10 +182,10 @@ grub_video_vga_setup (unsigned int width, unsigned int height,
|
||||
|
||||
is_target = 1;
|
||||
err = grub_video_fb_set_active_render_target (framebuffer.render_target);
|
||||
-
|
||||
+
|
||||
if (err)
|
||||
return err;
|
||||
-
|
||||
+
|
||||
err = grub_video_fb_set_palette (0, GRUB_VIDEO_FBSTD_NUMCOLORS,
|
||||
grub_video_fbstd_colors);
|
||||
|
||||
diff --git a/grub-core/video/ieee1275.c b/grub-core/video/ieee1275.c
|
||||
index f437fb0df..ca3d3c3b2 100644
|
||||
--- a/grub-core/video/ieee1275.c
|
||||
+++ b/grub-core/video/ieee1275.c
|
||||
@@ -233,7 +233,7 @@ grub_video_ieee1275_setup (unsigned int width, unsigned int height,
|
||||
/* TODO. */
|
||||
return grub_error (GRUB_ERR_IO, "can't set mode %dx%d", width, height);
|
||||
}
|
||||
-
|
||||
+
|
||||
err = grub_video_ieee1275_fill_mode_info (dev, &framebuffer.mode_info);
|
||||
if (err)
|
||||
{
|
||||
@@ -260,7 +260,7 @@ grub_video_ieee1275_setup (unsigned int width, unsigned int height,
|
||||
|
||||
grub_video_ieee1275_set_palette (0, framebuffer.mode_info.number_of_colors,
|
||||
grub_video_fbstd_colors);
|
||||
-
|
||||
+
|
||||
return err;
|
||||
}
|
||||
|
||||
diff --git a/grub-core/video/radeon_fuloong2e.c b/grub-core/video/radeon_fuloong2e.c
|
||||
index b4da34b5e..40917acb7 100644
|
||||
--- a/grub-core/video/radeon_fuloong2e.c
|
||||
+++ b/grub-core/video/radeon_fuloong2e.c
|
||||
@@ -75,7 +75,7 @@ find_card (grub_pci_device_t dev, grub_pci_id_t pciid, void *data)
|
||||
if (((class >> 16) & 0xffff) != GRUB_PCI_CLASS_SUBCLASS_VGA
|
||||
|| pciid != 0x515a1002)
|
||||
return 0;
|
||||
-
|
||||
+
|
||||
*found = 1;
|
||||
|
||||
addr = grub_pci_make_address (dev, GRUB_PCI_REG_ADDRESS_REG0);
|
||||
@@ -139,7 +139,7 @@ grub_video_radeon_fuloong2e_setup (unsigned int width, unsigned int height,
|
||||
framebuffer.mapped = 1;
|
||||
|
||||
/* Prevent garbage from appearing on the screen. */
|
||||
- grub_memset (framebuffer.ptr, 0x55,
|
||||
+ grub_memset (framebuffer.ptr, 0x55,
|
||||
framebuffer.mode_info.height * framebuffer.mode_info.pitch);
|
||||
|
||||
#ifndef TEST
|
||||
@@ -152,7 +152,7 @@ grub_video_radeon_fuloong2e_setup (unsigned int width, unsigned int height,
|
||||
return err;
|
||||
|
||||
err = grub_video_fb_set_active_render_target (framebuffer.render_target);
|
||||
-
|
||||
+
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
diff --git a/grub-core/video/radeon_yeeloong3a.c b/grub-core/video/radeon_yeeloong3a.c
|
||||
index 52614feb6..48631c181 100644
|
||||
--- a/grub-core/video/radeon_yeeloong3a.c
|
||||
+++ b/grub-core/video/radeon_yeeloong3a.c
|
||||
@@ -74,7 +74,7 @@ find_card (grub_pci_device_t dev, grub_pci_id_t pciid, void *data)
|
||||
if (((class >> 16) & 0xffff) != GRUB_PCI_CLASS_SUBCLASS_VGA
|
||||
|| pciid != 0x96151002)
|
||||
return 0;
|
||||
-
|
||||
+
|
||||
*found = 1;
|
||||
|
||||
addr = grub_pci_make_address (dev, GRUB_PCI_REG_ADDRESS_REG0);
|
||||
@@ -137,7 +137,7 @@ grub_video_radeon_yeeloong3a_setup (unsigned int width, unsigned int height,
|
||||
#endif
|
||||
|
||||
/* Prevent garbage from appearing on the screen. */
|
||||
- grub_memset (framebuffer.ptr, 0,
|
||||
+ grub_memset (framebuffer.ptr, 0,
|
||||
framebuffer.mode_info.height * framebuffer.mode_info.pitch);
|
||||
|
||||
#ifndef TEST
|
||||
@@ -150,7 +150,7 @@ grub_video_radeon_yeeloong3a_setup (unsigned int width, unsigned int height,
|
||||
return err;
|
||||
|
||||
err = grub_video_fb_set_active_render_target (framebuffer.render_target);
|
||||
-
|
||||
+
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
diff --git a/grub-core/video/readers/png.c b/grub-core/video/readers/png.c
|
||||
index 0157ff742..54dfedf43 100644
|
||||
--- a/grub-core/video/readers/png.c
|
||||
+++ b/grub-core/video/readers/png.c
|
||||
@@ -916,7 +916,7 @@ grub_png_convert_image (struct grub_png_data *data)
|
||||
}
|
||||
return;
|
||||
}
|
||||
-
|
||||
+
|
||||
if (data->is_gray)
|
||||
{
|
||||
switch (data->bpp)
|
||||
diff --git a/grub-core/video/readers/tga.c b/grub-core/video/readers/tga.c
|
||||
index 7cb9d1d2a..a9ec3a1b6 100644
|
||||
--- a/grub-core/video/readers/tga.c
|
||||
+++ b/grub-core/video/readers/tga.c
|
||||
@@ -127,7 +127,7 @@ tga_load_palette (struct tga_data *data)
|
||||
|
||||
if (len > sizeof (data->palette))
|
||||
len = sizeof (data->palette);
|
||||
-
|
||||
+
|
||||
if (grub_file_read (data->file, &data->palette, len)
|
||||
!= (grub_ssize_t) len)
|
||||
return grub_errno;
|
||||
diff --git a/grub-core/video/sis315_init.c b/grub-core/video/sis315_init.c
|
||||
index ae5c1419c..09c3c7bbe 100644
|
||||
--- a/grub-core/video/sis315_init.c
|
||||
+++ b/grub-core/video/sis315_init.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-static const struct { grub_uint8_t reg; grub_uint8_t val; } sr_dump [] =
|
||||
+static const struct { grub_uint8_t reg; grub_uint8_t val; } sr_dump [] =
|
||||
{
|
||||
{ 0x28, 0x81 },
|
||||
{ 0x2a, 0x00 },
|
||||
diff --git a/grub-core/video/sis315pro.c b/grub-core/video/sis315pro.c
|
||||
index 22a0c85a6..4d2f9999a 100644
|
||||
--- a/grub-core/video/sis315pro.c
|
||||
+++ b/grub-core/video/sis315pro.c
|
||||
@@ -103,7 +103,7 @@ find_card (grub_pci_device_t dev, grub_pci_id_t pciid, void *data)
|
||||
if (((class >> 16) & 0xffff) != GRUB_PCI_CLASS_SUBCLASS_VGA
|
||||
|| pciid != GRUB_SIS315PRO_PCIID)
|
||||
return 0;
|
||||
-
|
||||
+
|
||||
*found = 1;
|
||||
|
||||
addr = grub_pci_make_address (dev, GRUB_PCI_REG_ADDRESS_REG0);
|
||||
@@ -218,7 +218,7 @@ grub_video_sis315pro_setup (unsigned int width, unsigned int height,
|
||||
|
||||
#ifndef TEST
|
||||
/* Prevent garbage from appearing on the screen. */
|
||||
- grub_memset (framebuffer.ptr, 0,
|
||||
+ grub_memset (framebuffer.ptr, 0,
|
||||
framebuffer.mode_info.height * framebuffer.mode_info.pitch);
|
||||
grub_arch_sync_dma_caches (framebuffer.ptr,
|
||||
framebuffer.mode_info.height
|
||||
@@ -231,7 +231,7 @@ grub_video_sis315pro_setup (unsigned int width, unsigned int height,
|
||||
| GRUB_VGA_IO_MISC_EXTERNAL_CLOCK_0
|
||||
| GRUB_VGA_IO_MISC_28MHZ
|
||||
| GRUB_VGA_IO_MISC_ENABLE_VRAM_ACCESS
|
||||
- | GRUB_VGA_IO_MISC_COLOR,
|
||||
+ | GRUB_VGA_IO_MISC_COLOR,
|
||||
GRUB_VGA_IO_MISC_WRITE + GRUB_MACHINE_PCI_IO_BASE);
|
||||
|
||||
grub_vga_sr_write (0x86, 5);
|
||||
@@ -335,7 +335,7 @@ grub_video_sis315pro_setup (unsigned int width, unsigned int height,
|
||||
{
|
||||
if (read_sis_cmd (0x5) != 0xa1)
|
||||
write_sis_cmd (0x86, 0x5);
|
||||
-
|
||||
+
|
||||
write_sis_cmd (read_sis_cmd (0x20) | 0xa1, 0x20);
|
||||
write_sis_cmd (read_sis_cmd (0x1e) | 0xda, 0x1e);
|
||||
|
||||
diff --git a/grub-core/video/sm712.c b/grub-core/video/sm712.c
|
||||
index 10c46eb65..65f59f84b 100644
|
||||
--- a/grub-core/video/sm712.c
|
||||
+++ b/grub-core/video/sm712.c
|
||||
@@ -167,7 +167,7 @@ enum
|
||||
GRUB_SM712_CR_SHADOW_VGA_VBLANK_START = 0x46,
|
||||
GRUB_SM712_CR_SHADOW_VGA_VBLANK_END = 0x47,
|
||||
GRUB_SM712_CR_SHADOW_VGA_VRETRACE_START = 0x48,
|
||||
- GRUB_SM712_CR_SHADOW_VGA_VRETRACE_END = 0x49,
|
||||
+ GRUB_SM712_CR_SHADOW_VGA_VRETRACE_END = 0x49,
|
||||
GRUB_SM712_CR_SHADOW_VGA_OVERFLOW = 0x4a,
|
||||
GRUB_SM712_CR_SHADOW_VGA_CELL_HEIGHT = 0x4b,
|
||||
GRUB_SM712_CR_SHADOW_VGA_HDISPLAY_END = 0x4c,
|
||||
@@ -375,7 +375,7 @@ find_card (grub_pci_device_t dev, grub_pci_id_t pciid, void *data)
|
||||
if (((class >> 16) & 0xffff) != GRUB_PCI_CLASS_SUBCLASS_VGA
|
||||
|| pciid != GRUB_SM712_PCIID)
|
||||
return 0;
|
||||
-
|
||||
+
|
||||
*found = 1;
|
||||
|
||||
addr = grub_pci_make_address (dev, GRUB_PCI_REG_ADDRESS_REG0);
|
||||
@@ -471,7 +471,7 @@ grub_video_sm712_setup (unsigned int width, unsigned int height,
|
||||
|
||||
#if !defined (TEST) && !defined(GENINIT)
|
||||
/* Prevent garbage from appearing on the screen. */
|
||||
- grub_memset ((void *) framebuffer.cached_ptr, 0,
|
||||
+ grub_memset ((void *) framebuffer.cached_ptr, 0,
|
||||
framebuffer.mode_info.height * framebuffer.mode_info.pitch);
|
||||
#endif
|
||||
|
||||
@@ -482,7 +482,7 @@ grub_video_sm712_setup (unsigned int width, unsigned int height,
|
||||
grub_sm712_sr_write (0x2, 0x6b);
|
||||
grub_sm712_write_reg (0, GRUB_VGA_IO_PIXEL_MASK);
|
||||
grub_sm712_sr_write (GRUB_VGA_SR_RESET_ASYNC, GRUB_VGA_SR_RESET);
|
||||
- grub_sm712_write_reg (GRUB_VGA_IO_MISC_NEGATIVE_VERT_POLARITY
|
||||
+ grub_sm712_write_reg (GRUB_VGA_IO_MISC_NEGATIVE_VERT_POLARITY
|
||||
| GRUB_VGA_IO_MISC_NEGATIVE_HORIZ_POLARITY
|
||||
| GRUB_VGA_IO_MISC_UPPER_64K
|
||||
| GRUB_VGA_IO_MISC_EXTERNAL_CLOCK_0
|
||||
@@ -694,7 +694,7 @@ grub_video_sm712_setup (unsigned int width, unsigned int height,
|
||||
for (i = 0; i < ARRAY_SIZE (dda_lookups); i++)
|
||||
grub_sm712_write_dda_lookup (i, dda_lookups[i].compare, dda_lookups[i].dda,
|
||||
dda_lookups[i].vcentering);
|
||||
-
|
||||
+
|
||||
/* Undocumented */
|
||||
grub_sm712_cr_write (0, 0x9c);
|
||||
grub_sm712_cr_write (0, 0x9d);
|
||||
diff --git a/grub-core/video/video.c b/grub-core/video/video.c
|
||||
index 983424107..8937da745 100644
|
||||
--- a/grub-core/video/video.c
|
||||
+++ b/grub-core/video/video.c
|
||||
@@ -491,13 +491,13 @@ parse_modespec (const char *current_mode, int *width, int *height, int *depth)
|
||||
current_mode);
|
||||
|
||||
param++;
|
||||
-
|
||||
+
|
||||
*width = grub_strtoul (value, 0, 0);
|
||||
if (grub_errno != GRUB_ERR_NONE)
|
||||
return grub_error (GRUB_ERR_BAD_ARGUMENT,
|
||||
N_("invalid video mode specification `%s'"),
|
||||
current_mode);
|
||||
-
|
||||
+
|
||||
/* Find height value. */
|
||||
value = param;
|
||||
param = grub_strchr(param, 'x');
|
||||
@@ -513,13 +513,13 @@ parse_modespec (const char *current_mode, int *width, int *height, int *depth)
|
||||
{
|
||||
/* We have optional color depth value. */
|
||||
param++;
|
||||
-
|
||||
+
|
||||
*height = grub_strtoul (value, 0, 0);
|
||||
if (grub_errno != GRUB_ERR_NONE)
|
||||
return grub_error (GRUB_ERR_BAD_ARGUMENT,
|
||||
N_("invalid video mode specification `%s'"),
|
||||
current_mode);
|
||||
-
|
||||
+
|
||||
/* Convert color depth value. */
|
||||
value = param;
|
||||
*depth = grub_strtoul (value, 0, 0);
|
||||
--
|
||||
2.34.1
|
||||
|
||||
+264
@@ -0,0 +1,264 @@
|
||||
From d5caac8ab79d068ad9a41030c772d03a4d4fbd7b Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Axtens <dja@axtens.net>
|
||||
Date: Mon, 28 Jun 2021 14:16:14 +1000
|
||||
Subject: [PATCH] video/readers/jpeg: Abort sooner if a read operation fails
|
||||
|
||||
Fuzzing revealed some inputs that were taking a long time, potentially
|
||||
forever, because they did not bail quickly upon encountering an I/O error.
|
||||
|
||||
Try to catch I/O errors sooner and bail out.
|
||||
|
||||
Signed-off-by: Daniel Axtens <dja@axtens.net>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
|
||||
Upstream-Status: Backport
|
||||
|
||||
Reference to upstream patch:
|
||||
https://git.savannah.gnu.org/cgit/grub.git/commit/?id=d5caac8ab79d068ad9a41030c772d03a4d4fbd7b
|
||||
|
||||
Signed-off-by: Yongxin Liu <yongxin.liu@windriver.com>
|
||||
---
|
||||
grub-core/video/readers/jpeg.c | 86 +++++++++++++++++++++++++++-------
|
||||
1 file changed, 70 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/grub-core/video/readers/jpeg.c b/grub-core/video/readers/jpeg.c
|
||||
index c47ffd651..806c56c78 100644
|
||||
--- a/grub-core/video/readers/jpeg.c
|
||||
+++ b/grub-core/video/readers/jpeg.c
|
||||
@@ -109,9 +109,17 @@ static grub_uint8_t
|
||||
grub_jpeg_get_byte (struct grub_jpeg_data *data)
|
||||
{
|
||||
grub_uint8_t r;
|
||||
+ grub_ssize_t bytes_read;
|
||||
|
||||
r = 0;
|
||||
- grub_file_read (data->file, &r, 1);
|
||||
+ bytes_read = grub_file_read (data->file, &r, 1);
|
||||
+
|
||||
+ if (bytes_read != 1)
|
||||
+ {
|
||||
+ grub_error (GRUB_ERR_BAD_FILE_TYPE,
|
||||
+ "jpeg: unexpected end of data");
|
||||
+ return 0;
|
||||
+ }
|
||||
|
||||
return r;
|
||||
}
|
||||
@@ -120,9 +128,17 @@ static grub_uint16_t
|
||||
grub_jpeg_get_word (struct grub_jpeg_data *data)
|
||||
{
|
||||
grub_uint16_t r;
|
||||
+ grub_ssize_t bytes_read;
|
||||
|
||||
r = 0;
|
||||
- grub_file_read (data->file, &r, sizeof (grub_uint16_t));
|
||||
+ bytes_read = grub_file_read (data->file, &r, sizeof (grub_uint16_t));
|
||||
+
|
||||
+ if (bytes_read != sizeof (grub_uint16_t))
|
||||
+ {
|
||||
+ grub_error (GRUB_ERR_BAD_FILE_TYPE,
|
||||
+ "jpeg: unexpected end of data");
|
||||
+ return 0;
|
||||
+ }
|
||||
|
||||
return grub_be_to_cpu16 (r);
|
||||
}
|
||||
@@ -135,6 +151,11 @@ grub_jpeg_get_bit (struct grub_jpeg_data *data)
|
||||
if (data->bit_mask == 0)
|
||||
{
|
||||
data->bit_save = grub_jpeg_get_byte (data);
|
||||
+ if (grub_errno != GRUB_ERR_NONE) {
|
||||
+ grub_error (GRUB_ERR_BAD_FILE_TYPE,
|
||||
+ "jpeg: file read error");
|
||||
+ return 0;
|
||||
+ }
|
||||
if (data->bit_save == JPEG_ESC_CHAR)
|
||||
{
|
||||
if (grub_jpeg_get_byte (data) != 0)
|
||||
@@ -143,6 +164,11 @@ grub_jpeg_get_bit (struct grub_jpeg_data *data)
|
||||
"jpeg: invalid 0xFF in data stream");
|
||||
return 0;
|
||||
}
|
||||
+ if (grub_errno != GRUB_ERR_NONE)
|
||||
+ {
|
||||
+ grub_error (GRUB_ERR_BAD_FILE_TYPE, "jpeg: file read error");
|
||||
+ return 0;
|
||||
+ }
|
||||
}
|
||||
data->bit_mask = 0x80;
|
||||
}
|
||||
@@ -161,7 +187,7 @@ grub_jpeg_get_number (struct grub_jpeg_data *data, int num)
|
||||
return 0;
|
||||
|
||||
msb = value = grub_jpeg_get_bit (data);
|
||||
- for (i = 1; i < num; i++)
|
||||
+ for (i = 1; i < num && grub_errno == GRUB_ERR_NONE; i++)
|
||||
value = (value << 1) + (grub_jpeg_get_bit (data) != 0);
|
||||
if (!msb)
|
||||
value += 1 - (1 << num);
|
||||
@@ -208,6 +234,8 @@ grub_jpeg_decode_huff_table (struct grub_jpeg_data *data)
|
||||
while (data->file->offset + sizeof (count) + 1 <= next_marker)
|
||||
{
|
||||
id = grub_jpeg_get_byte (data);
|
||||
+ if (grub_errno != GRUB_ERR_NONE)
|
||||
+ return grub_errno;
|
||||
ac = (id >> 4) & 1;
|
||||
id &= 0xF;
|
||||
if (id > 1)
|
||||
@@ -258,6 +286,8 @@ grub_jpeg_decode_quan_table (struct grub_jpeg_data *data)
|
||||
|
||||
next_marker = data->file->offset;
|
||||
next_marker += grub_jpeg_get_word (data);
|
||||
+ if (grub_errno != GRUB_ERR_NONE)
|
||||
+ return grub_errno;
|
||||
|
||||
if (next_marker > data->file->size)
|
||||
{
|
||||
@@ -269,6 +299,8 @@ grub_jpeg_decode_quan_table (struct grub_jpeg_data *data)
|
||||
<= next_marker)
|
||||
{
|
||||
id = grub_jpeg_get_byte (data);
|
||||
+ if (grub_errno != GRUB_ERR_NONE)
|
||||
+ return grub_errno;
|
||||
if (id >= 0x10) /* Upper 4-bit is precision. */
|
||||
return grub_error (GRUB_ERR_BAD_FILE_TYPE,
|
||||
"jpeg: only 8-bit precision is supported");
|
||||
@@ -300,6 +332,9 @@ grub_jpeg_decode_sof (struct grub_jpeg_data *data)
|
||||
next_marker = data->file->offset;
|
||||
next_marker += grub_jpeg_get_word (data);
|
||||
|
||||
+ if (grub_errno != GRUB_ERR_NONE)
|
||||
+ return grub_errno;
|
||||
+
|
||||
if (grub_jpeg_get_byte (data) != 8)
|
||||
return grub_error (GRUB_ERR_BAD_FILE_TYPE,
|
||||
"jpeg: only 8-bit precision is supported");
|
||||
@@ -325,6 +360,8 @@ grub_jpeg_decode_sof (struct grub_jpeg_data *data)
|
||||
return grub_error (GRUB_ERR_BAD_FILE_TYPE, "jpeg: invalid index");
|
||||
|
||||
ss = grub_jpeg_get_byte (data); /* Sampling factor. */
|
||||
+ if (grub_errno != GRUB_ERR_NONE)
|
||||
+ return grub_errno;
|
||||
if (!id)
|
||||
{
|
||||
grub_uint8_t vs, hs;
|
||||
@@ -504,7 +541,7 @@ grub_jpeg_idct_transform (jpeg_data_unit_t du)
|
||||
}
|
||||
}
|
||||
|
||||
-static void
|
||||
+static grub_err_t
|
||||
grub_jpeg_decode_du (struct grub_jpeg_data *data, int id, jpeg_data_unit_t du)
|
||||
{
|
||||
int h1, h2, qt;
|
||||
@@ -519,6 +556,9 @@ grub_jpeg_decode_du (struct grub_jpeg_data *data, int id, jpeg_data_unit_t du)
|
||||
data->dc_value[id] +=
|
||||
grub_jpeg_get_number (data, grub_jpeg_get_huff_code (data, h1));
|
||||
|
||||
+ if (grub_errno != GRUB_ERR_NONE)
|
||||
+ return grub_errno;
|
||||
+
|
||||
du[0] = data->dc_value[id] * (int) data->quan_table[qt][0];
|
||||
pos = 1;
|
||||
while (pos < ARRAY_SIZE (data->quan_table[qt]))
|
||||
@@ -533,11 +573,13 @@ grub_jpeg_decode_du (struct grub_jpeg_data *data, int id, jpeg_data_unit_t du)
|
||||
num >>= 4;
|
||||
pos += num;
|
||||
|
||||
+ if (grub_errno != GRUB_ERR_NONE)
|
||||
+ return grub_errno;
|
||||
+
|
||||
if (pos >= ARRAY_SIZE (jpeg_zigzag_order))
|
||||
{
|
||||
- grub_error (GRUB_ERR_BAD_FILE_TYPE,
|
||||
- "jpeg: invalid position in zigzag order!?");
|
||||
- return;
|
||||
+ return grub_error (GRUB_ERR_BAD_FILE_TYPE,
|
||||
+ "jpeg: invalid position in zigzag order!?");
|
||||
}
|
||||
|
||||
du[jpeg_zigzag_order[pos]] = val * (int) data->quan_table[qt][pos];
|
||||
@@ -545,6 +587,7 @@ grub_jpeg_decode_du (struct grub_jpeg_data *data, int id, jpeg_data_unit_t du)
|
||||
}
|
||||
|
||||
grub_jpeg_idct_transform (du);
|
||||
+ return GRUB_ERR_NONE;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -603,7 +646,8 @@ grub_jpeg_decode_sos (struct grub_jpeg_data *data)
|
||||
data_offset += grub_jpeg_get_word (data);
|
||||
|
||||
cc = grub_jpeg_get_byte (data);
|
||||
-
|
||||
+ if (grub_errno != GRUB_ERR_NONE)
|
||||
+ return grub_errno;
|
||||
if (cc != 3 && cc != 1)
|
||||
return grub_error (GRUB_ERR_BAD_FILE_TYPE,
|
||||
"jpeg: component count must be 1 or 3");
|
||||
@@ -616,7 +660,8 @@ grub_jpeg_decode_sos (struct grub_jpeg_data *data)
|
||||
id = grub_jpeg_get_byte (data) - 1;
|
||||
if ((id < 0) || (id >= 3))
|
||||
return grub_error (GRUB_ERR_BAD_FILE_TYPE, "jpeg: invalid index");
|
||||
-
|
||||
+ if (grub_errno != GRUB_ERR_NONE)
|
||||
+ return grub_errno;
|
||||
ht = grub_jpeg_get_byte (data);
|
||||
data->comp_index[id][1] = (ht >> 4);
|
||||
data->comp_index[id][2] = (ht & 0xF) + 2;
|
||||
@@ -624,11 +669,14 @@ grub_jpeg_decode_sos (struct grub_jpeg_data *data)
|
||||
if ((data->comp_index[id][1] < 0) || (data->comp_index[id][1] > 3) ||
|
||||
(data->comp_index[id][2] < 0) || (data->comp_index[id][2] > 3))
|
||||
return grub_error (GRUB_ERR_BAD_FILE_TYPE, "jpeg: invalid hufftable index");
|
||||
+ if (grub_errno != GRUB_ERR_NONE)
|
||||
+ return grub_errno;
|
||||
}
|
||||
|
||||
grub_jpeg_get_byte (data); /* Skip 3 unused bytes. */
|
||||
grub_jpeg_get_word (data);
|
||||
-
|
||||
+ if (grub_errno != GRUB_ERR_NONE)
|
||||
+ return grub_errno;
|
||||
if (data->file->offset != data_offset)
|
||||
return grub_error (GRUB_ERR_BAD_FILE_TYPE, "jpeg: extra byte in sos");
|
||||
|
||||
@@ -646,6 +694,7 @@ grub_jpeg_decode_data (struct grub_jpeg_data *data)
|
||||
{
|
||||
unsigned c1, vb, hb, nr1, nc1;
|
||||
int rst = data->dri;
|
||||
+ grub_err_t err = GRUB_ERR_NONE;
|
||||
|
||||
vb = 8 << data->log_vs;
|
||||
hb = 8 << data->log_hs;
|
||||
@@ -666,17 +715,22 @@ grub_jpeg_decode_data (struct grub_jpeg_data *data)
|
||||
|
||||
for (r2 = 0; r2 < (1U << data->log_vs); r2++)
|
||||
for (c2 = 0; c2 < (1U << data->log_hs); c2++)
|
||||
- grub_jpeg_decode_du (data, 0, data->ydu[r2 * 2 + c2]);
|
||||
+ {
|
||||
+ err = grub_jpeg_decode_du (data, 0, data->ydu[r2 * 2 + c2]);
|
||||
+ if (err != GRUB_ERR_NONE)
|
||||
+ return err;
|
||||
+ }
|
||||
|
||||
if (data->color_components >= 3)
|
||||
{
|
||||
- grub_jpeg_decode_du (data, 1, data->cbdu);
|
||||
- grub_jpeg_decode_du (data, 2, data->crdu);
|
||||
+ err = grub_jpeg_decode_du (data, 1, data->cbdu);
|
||||
+ if (err != GRUB_ERR_NONE)
|
||||
+ return err;
|
||||
+ err = grub_jpeg_decode_du (data, 2, data->crdu);
|
||||
+ if (err != GRUB_ERR_NONE)
|
||||
+ return err;
|
||||
}
|
||||
|
||||
- if (grub_errno)
|
||||
- return grub_errno;
|
||||
-
|
||||
nr2 = (data->r1 == nr1 - 1) ? (data->image_height - data->r1 * vb) : vb;
|
||||
nc2 = (c1 == nc1 - 1) ? (data->image_width - c1 * hb) : hb;
|
||||
|
||||
--
|
||||
2.34.1
|
||||
|
||||
+53
@@ -0,0 +1,53 @@
|
||||
From 166a4d61448f74745afe1dac2f2cfb85d04909bf Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Axtens <dja@axtens.net>
|
||||
Date: Mon, 28 Jun 2021 14:25:17 +1000
|
||||
Subject: [PATCH] video/readers/jpeg: Refuse to handle multiple start of
|
||||
streams
|
||||
|
||||
An invalid file could contain multiple start of stream blocks, which
|
||||
would cause us to reallocate and leak our bitmap. Refuse to handle
|
||||
multiple start of streams.
|
||||
|
||||
Additionally, fix a grub_error() call formatting.
|
||||
|
||||
Signed-off-by: Daniel Axtens <dja@axtens.net>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
|
||||
Upstream-Status: Backport
|
||||
|
||||
Reference to upstream patch:
|
||||
https://git.savannah.gnu.org/cgit/grub.git/commit/?id=166a4d61448f74745afe1dac2f2cfb85d04909bf
|
||||
|
||||
Signed-off-by: Yongxin Liu <yongxin.liu@windriver.com>
|
||||
---
|
||||
grub-core/video/readers/jpeg.c | 7 +++++--
|
||||
1 file changed, 5 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/grub-core/video/readers/jpeg.c b/grub-core/video/readers/jpeg.c
|
||||
index 2284a6c06..579bbe8a4 100644
|
||||
--- a/grub-core/video/readers/jpeg.c
|
||||
+++ b/grub-core/video/readers/jpeg.c
|
||||
@@ -683,6 +683,9 @@ grub_jpeg_decode_sos (struct grub_jpeg_data *data)
|
||||
if (data->file->offset != data_offset)
|
||||
return grub_error (GRUB_ERR_BAD_FILE_TYPE, "jpeg: extra byte in sos");
|
||||
|
||||
+ if (*data->bitmap)
|
||||
+ return grub_error (GRUB_ERR_BAD_FILE_TYPE, "jpeg: too many start of scan blocks");
|
||||
+
|
||||
if (grub_video_bitmap_create (data->bitmap, data->image_width,
|
||||
data->image_height,
|
||||
GRUB_VIDEO_BLIT_FORMAT_RGB_888))
|
||||
@@ -705,8 +708,8 @@ grub_jpeg_decode_data (struct grub_jpeg_data *data)
|
||||
nc1 = (data->image_width + hb - 1) >> (3 + data->log_hs);
|
||||
|
||||
if (data->bitmap_ptr == NULL)
|
||||
- return grub_error(GRUB_ERR_BAD_FILE_TYPE,
|
||||
- "jpeg: attempted to decode data before start of stream");
|
||||
+ return grub_error (GRUB_ERR_BAD_FILE_TYPE,
|
||||
+ "jpeg: attempted to decode data before start of stream");
|
||||
|
||||
for (; data->r1 < nr1 && (!data->dri || rst);
|
||||
data->r1++, data->bitmap_ptr += (vb * data->image_width - hb * nc1) * 3)
|
||||
--
|
||||
2.34.1
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
LICENSE = "MIT"
|
||||
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
|
||||
SUMMARY = "Basic grub.cfg for use in EFI systems"
|
||||
DESCRIPTION = "Grub might require different configuration file for \
|
||||
different machines."
|
||||
HOMEPAGE = "https://www.gnu.org/software/grub/manual/grub/grub.html#Configuration"
|
||||
|
||||
RPROVIDES:${PN} += "virtual-grub-bootconf"
|
||||
|
||||
inherit grub-efi-cfg
|
||||
|
||||
require conf/image-uefi.conf
|
||||
|
||||
S = "${WORKDIR}"
|
||||
|
||||
GRUB_CFG = "${S}/grub-bootconf"
|
||||
LABELS = "boot"
|
||||
|
||||
ROOT ?= "root=/dev/sda2"
|
||||
|
||||
python do_configure() {
|
||||
bb.build.exec_func('build_efi_cfg', d)
|
||||
}
|
||||
|
||||
do_configure[vardeps] += "APPEND ROOT"
|
||||
|
||||
do_install() {
|
||||
install -d ${D}${EFI_FILES_PATH}
|
||||
install grub-bootconf ${D}${EFI_FILES_PATH}/grub.cfg
|
||||
}
|
||||
|
||||
FILES:${PN} = "${EFI_FILES_PATH}/grub.cfg"
|
||||
@@ -0,0 +1,105 @@
|
||||
require grub2.inc
|
||||
|
||||
require conf/image-uefi.conf
|
||||
|
||||
GRUBPLATFORM = "efi"
|
||||
|
||||
DEPENDS:append = " grub-native"
|
||||
RDEPENDS:${PN} = "grub-common virtual-grub-bootconf"
|
||||
|
||||
SRC_URI += " \
|
||||
file://cfg \
|
||||
"
|
||||
|
||||
S = "${WORKDIR}/grub-${PV}"
|
||||
|
||||
# Determine the target arch for the grub modules
|
||||
python __anonymous () {
|
||||
import re
|
||||
target = d.getVar('TARGET_ARCH')
|
||||
prefix = "" if d.getVar('EFI_PROVIDER') == "grub-efi" else "grub-efi-"
|
||||
if target == "x86_64":
|
||||
grubtarget = 'x86_64'
|
||||
elif re.match('i.86', target):
|
||||
grubtarget = 'i386'
|
||||
elif re.match('aarch64', target):
|
||||
grubtarget = 'arm64'
|
||||
elif re.match('arm', target):
|
||||
grubtarget = 'arm'
|
||||
elif re.match('riscv64', target):
|
||||
grubtarget = 'riscv64'
|
||||
elif re.match('riscv32', target):
|
||||
grubtarget = 'riscv32'
|
||||
else:
|
||||
raise bb.parse.SkipRecipe("grub-efi is incompatible with target %s" % target)
|
||||
grubimage = prefix + d.getVar("EFI_BOOT_IMAGE")
|
||||
d.setVar("GRUB_TARGET", grubtarget)
|
||||
d.setVar("GRUB_IMAGE", grubimage)
|
||||
prefix = "grub-efi-" if prefix == "" else ""
|
||||
d.setVar("GRUB_IMAGE_PREFIX", prefix)
|
||||
}
|
||||
|
||||
inherit deploy
|
||||
|
||||
CACHED_CONFIGUREVARS += "ac_cv_path_HELP2MAN="
|
||||
EXTRA_OECONF += "--enable-efiemu=no"
|
||||
|
||||
do_mkimage() {
|
||||
cd ${B}
|
||||
|
||||
GRUB_MKIMAGE_MODULES="${GRUB_BUILDIN}"
|
||||
|
||||
# If 'all' is included in GRUB_BUILDIN we will include all available grub2 modules
|
||||
if [ "${@ bb.utils.contains('GRUB_BUILDIN', 'all', 'True', 'False', d)}" = "True" ]; then
|
||||
bbdebug 1 "Including all available modules"
|
||||
# Get the list of all .mod files in grub-core build directory
|
||||
GRUB_MKIMAGE_MODULES=$(find ${B}/grub-core/ -type f -name "*.mod" -exec basename {} .mod \;)
|
||||
fi
|
||||
|
||||
# Search for the grub.cfg on the local boot media by using the
|
||||
# built in cfg file provided via this recipe
|
||||
grub-mkimage -v -c ../cfg -p ${EFIDIR} -d ./grub-core/ \
|
||||
-O ${GRUB_TARGET}-efi -o ./${GRUB_IMAGE_PREFIX}${GRUB_IMAGE} \
|
||||
${GRUB_MKIMAGE_MODULES}
|
||||
}
|
||||
|
||||
addtask mkimage before do_install after do_compile
|
||||
|
||||
do_install() {
|
||||
oe_runmake 'DESTDIR=${D}' -C grub-core install
|
||||
|
||||
# Remove build host references...
|
||||
find "${D}" -name modinfo.sh -type f -exec \
|
||||
sed -i \
|
||||
-e 's,--sysroot=${STAGING_DIR_TARGET},,g' \
|
||||
-e 's|${DEBUG_PREFIX_MAP}||g' \
|
||||
-e 's:${RECIPE_SYSROOT_NATIVE}::g' \
|
||||
{} +
|
||||
|
||||
install -d ${D}${EFI_FILES_PATH}
|
||||
install -m 644 ${B}/${GRUB_IMAGE_PREFIX}${GRUB_IMAGE} ${D}${EFI_FILES_PATH}/${GRUB_IMAGE}
|
||||
}
|
||||
|
||||
# To include all available modules, add 'all' to GRUB_BUILDIN
|
||||
GRUB_BUILDIN ?= "boot linux ext2 fat serial part_msdos part_gpt normal \
|
||||
efi_gop iso9660 configfile search loadenv test"
|
||||
|
||||
# 'xen_boot' is a module valid only for aarch64
|
||||
GRUB_BUILDIN:append:aarch64 = "${@bb.utils.contains('DISTRO_FEATURES', 'xen', ' xen_boot', '', d)}"
|
||||
|
||||
do_deploy() {
|
||||
install -m 644 ${B}/${GRUB_IMAGE_PREFIX}${GRUB_IMAGE} ${DEPLOYDIR}
|
||||
}
|
||||
|
||||
addtask deploy after do_install before do_build
|
||||
|
||||
FILES:${PN} = "${libdir}/grub/${GRUB_TARGET}-efi \
|
||||
${datadir}/grub \
|
||||
${EFI_FILES_PATH}/${GRUB_IMAGE} \
|
||||
"
|
||||
|
||||
# 64-bit binaries are expected for the bootloader with an x32 userland
|
||||
INSANE_SKIP:${PN}:append:linux-gnux32 = " arch"
|
||||
INSANE_SKIP:${PN}-dbg:append:linux-gnux32 = " arch"
|
||||
INSANE_SKIP:${PN}:append:linux-muslx32 = " arch"
|
||||
INSANE_SKIP:${PN}-dbg:append:linux-muslx32 = " arch"
|
||||
@@ -0,0 +1,103 @@
|
||||
SUMMARY = "GRUB2 is the next-generation GRand Unified Bootloader"
|
||||
|
||||
DESCRIPTION = "GRUB2 is the next generaion of a GPLed bootloader \
|
||||
intended to unify bootloading across x86 operating systems. In \
|
||||
addition to loading the Linux kernel, it implements the Multiboot \
|
||||
standard, which allows for flexible loading of multiple boot images."
|
||||
|
||||
HOMEPAGE = "http://www.gnu.org/software/grub/"
|
||||
SECTION = "bootloaders"
|
||||
|
||||
LICENSE = "GPL-3.0-only"
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
|
||||
|
||||
CVE_PRODUCT = "grub2"
|
||||
|
||||
SRC_URI = "${GNU_MIRROR}/grub/grub-${PV}.tar.gz \
|
||||
file://0001-Disable-mfpmath-sse-as-well-when-SSE-is-disabled.patch \
|
||||
file://autogen.sh-exclude-pc.patch \
|
||||
file://grub-module-explicitly-keeps-symbole-.module_license.patch \
|
||||
file://0001-grub.d-10_linux.in-add-oe-s-kernel-name.patch \
|
||||
file://determinism.patch \
|
||||
file://0001-RISC-V-Restore-the-typcast-to-long.patch \
|
||||
file://CVE-2021-3981-grub-mkconfig-Restore-umask-for-the-grub.cfg.patch \
|
||||
file://0001-configure.ac-Use-_zicsr_zifencei-extentions-on-riscv.patch \
|
||||
file://video-Remove-trailing-whitespaces.patch \
|
||||
file://CVE-2021-3695-video-readers-png-Drop-greyscale-support-to-fix-heap.patch \
|
||||
file://CVE-2021-3696-video-readers-png-Avoid-heap-OOB-R-W-inserting-huff.patch \
|
||||
file://video-readers-jpeg-Abort-sooner-if-a-read-operation-.patch \
|
||||
file://video-readers-jpeg-Refuse-to-handle-multiple-start-o.patch \
|
||||
file://CVE-2021-3697-video-readers-jpeg-Block-int-underflow-wild-pointer.patch \
|
||||
file://CVE-2022-28733-net-ip-Do-IP-fragment-maths-safely.patch \
|
||||
file://CVE-2022-28734-net-http-Fix-OOB-write-for-split-http-headers.patch \
|
||||
file://CVE-2022-28734-net-http-Error-out-on-headers-with-LF-without-CR.patch \
|
||||
file://CVE-2022-28735-kern-efi-sb-Reject-non-kernel-files-in-the-shim_lock.patch \
|
||||
file://0001-configure-Remove-obsoleted-malign-jumps-loops-functi.patch \
|
||||
file://0002-configure-Check-for-falign-jumps-1-beside-falign-loo.patch \
|
||||
file://loader-efi-chainloader-Simplify-the-loader-state.patch \
|
||||
file://commands-boot-Add-API-to-pass-context-to-loader.patch \
|
||||
file://CVE-2022-28736-loader-efi-chainloader-Use-grub_loader_set_ex.patch\
|
||||
file://0001-font-Fix-size-overflow-in-grub_font_get_glyph_intern.patch \
|
||||
file://CVE-2022-2601.patch \
|
||||
file://CVE-2022-3775.patch \
|
||||
file://0001-risc-v-Handle-R_RISCV_CALL_PLT-reloc.patch \
|
||||
file://0001-fs-ext2-Ignore-checksum-seed-incompat-feature.patch \
|
||||
"
|
||||
|
||||
SRC_URI[sha256sum] = "23b64b4c741569f9426ed2e3d0e6780796fca081bee4c99f62aa3f53ae803f5f"
|
||||
|
||||
CVE_STATUS[CVE-2019-14865] = "not-applicable-platform: applies only to RHEL"
|
||||
CVE_STATUS[CVE-2021-46705] = "not-applicable-platform: Applies only to SUSE"
|
||||
|
||||
DEPENDS = "flex-native bison-native gettext-native"
|
||||
|
||||
GRUB_COMPATIBLE_HOST = '(x86_64.*|i.86.*|arm.*|aarch64.*|riscv.*)-(linux.*|freebsd.*)'
|
||||
COMPATIBLE_HOST = "${GRUB_COMPATIBLE_HOST}"
|
||||
# Grub doesn't support hard float toolchain and won't be able to forcefully
|
||||
# disable it on some of the target CPUs. See 'configure.ac' for
|
||||
# supported/unsupported CPUs in hardfp.
|
||||
COMPATIBLE_HOST:armv7a = "${@'null' if bb.utils.contains('TUNE_CCARGS_MFLOAT', 'hard', True, False, d) else d.getVar('GRUB_COMPATIBLE_HOST')}"
|
||||
COMPATIBLE_HOST:armv7ve = "${@'null' if bb.utils.contains('TUNE_CCARGS_MFLOAT', 'hard', True, False, d) else d.getVar('GRUB_COMPATIBLE_HOST')}"
|
||||
|
||||
# configure.ac has code to set this automagically from the target tuple
|
||||
# but the OE freeform one (core2-foo-bar-linux) don't work with that.
|
||||
|
||||
GRUBPLATFORM:arm = "efi"
|
||||
GRUBPLATFORM:aarch64 = "efi"
|
||||
GRUBPLATFORM:riscv32 = "efi"
|
||||
GRUBPLATFORM:riscv64 = "efi"
|
||||
GRUBPLATFORM ??= "pc"
|
||||
|
||||
inherit autotools gettext texinfo pkgconfig
|
||||
|
||||
CFLAGS:remove = "-O2"
|
||||
|
||||
EXTRA_OECONF = "--with-platform=${GRUBPLATFORM} \
|
||||
--disable-grub-mkfont \
|
||||
--program-prefix="" \
|
||||
--enable-liblzma=no \
|
||||
--enable-libzfs=no \
|
||||
--enable-largefile \
|
||||
--disable-werror \
|
||||
"
|
||||
|
||||
PACKAGECONFIG ??= ""
|
||||
PACKAGECONFIG[grub-mount] = "--enable-grub-mount,--disable-grub-mount,fuse"
|
||||
PACKAGECONFIG[device-mapper] = "--enable-device-mapper,--disable-device-mapper,libdevmapper"
|
||||
|
||||
# grub2 creates its own set of -nostdinc / -isystem / -ffreestanding CFLAGS and
|
||||
# OE's default BUILD_CFLAGS (assigned to CFLAGS for native builds) etc, conflict
|
||||
# with that. Note that since BUILD_CFLAGS etc are not used by grub2 target
|
||||
# builds, it's safe to clear them unconditionally for both target and native.
|
||||
BUILD_CPPFLAGS = ""
|
||||
BUILD_CFLAGS = ""
|
||||
BUILD_CXXFLAGS = ""
|
||||
BUILD_LDFLAGS = ""
|
||||
|
||||
export PYTHON = "python3"
|
||||
|
||||
do_configure:prepend() {
|
||||
cd ${S}
|
||||
FROM_BOOTSTRAP=1 ${S}/autogen.sh
|
||||
cd ${B}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
require grub2.inc
|
||||
|
||||
RDEPENDS:${PN}-common += "${PN}-editenv"
|
||||
RDEPENDS:${PN} += "${PN}-common"
|
||||
RDEPENDS:${PN}:class-native = ""
|
||||
|
||||
RPROVIDES:${PN}-editenv += "${PN}-efi-editenv"
|
||||
|
||||
PROVIDES:append:class-native = " grub-efi-native"
|
||||
|
||||
PACKAGES =+ "${PN}-editenv ${PN}-common"
|
||||
FILES:${PN}-editenv = "${bindir}/grub-editenv"
|
||||
FILES:${PN}-common = " \
|
||||
${bindir} \
|
||||
${sysconfdir} \
|
||||
${sbindir} \
|
||||
${datadir}/grub \
|
||||
"
|
||||
ALLOW_EMPTY:${PN} = "1"
|
||||
|
||||
do_install:append () {
|
||||
# Avoid conflicts with the EFI package for systems such as arm64 where we
|
||||
# need to build grub and grub-efi but only EFI is supported by removing EFI
|
||||
# from this package.
|
||||
rm -rf ${D}${libdir}/grub/*-efi/
|
||||
rmdir --ignore-fail-on-non-empty ${D}${libdir}/grub ${D}${libdir}
|
||||
|
||||
install -d ${D}${sysconfdir}/grub.d
|
||||
# Remove build host references...
|
||||
find "${D}" -name modinfo.sh -type f -exec \
|
||||
sed -i \
|
||||
-e 's,--sysroot=${STAGING_DIR_TARGET},,g' \
|
||||
-e 's|${DEBUG_PREFIX_MAP}||g' \
|
||||
-e 's:${RECIPE_SYSROOT_NATIVE}::g' \
|
||||
{} +
|
||||
}
|
||||
|
||||
INSANE_SKIP:${PN} = "arch"
|
||||
INSANE_SKIP:${PN}-dbg = "arch"
|
||||
|
||||
BBCLASSEXTEND = "native nativesdk"
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# load keymap, if existing
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
#
|
||||
|
||||
KERNEL_MAJMIN=`uname -r | cut -d '.' -f 1,2`
|
||||
if [ -e /etc/keymap-$KERNEL_MAJMIN.map ]; then
|
||||
loadkeys /etc/keymap-$KERNEL_MAJMIN.map
|
||||
fi
|
||||
|
||||
if ( ls "/etc" | grep -q "keymap-extension-${KERNEL_MAJMIN}" )
|
||||
then
|
||||
for extension in `ls -1 /etc/keymap-extension-$KERNEL_MAJMIN*`
|
||||
do
|
||||
loadkeys "$extension"
|
||||
done
|
||||
fi
|
||||
@@ -0,0 +1,49 @@
|
||||
SUMMARY = "Keyboard maps"
|
||||
DESCRIPTION = "Keymaps and initscript to set the keymap on bootup."
|
||||
SECTION = "base"
|
||||
|
||||
RDEPENDS:${PN} = "kbd"
|
||||
|
||||
LICENSE = "GPL-2.0-only"
|
||||
LIC_FILES_CHKSUM = "file://keymap.sh;beginline=5;endline=5;md5=829e563511c9a1d6d41f17a7a4989d6a"
|
||||
PACKAGE_ARCH = "${MACHINE_ARCH}"
|
||||
PR = "r31"
|
||||
|
||||
INHIBIT_DEFAULT_DEPS = "1"
|
||||
|
||||
# As the recipe doesn't inherit systemd.bbclass, we need to set this variable
|
||||
# manually to avoid unnecessary postinst/preinst generated.
|
||||
python __anonymous() {
|
||||
if not bb.utils.contains('DISTRO_FEATURES', 'sysvinit', True, False, d):
|
||||
d.setVar("INHIBIT_UPDATERCD_BBCLASS", "1")
|
||||
}
|
||||
|
||||
inherit update-rc.d
|
||||
|
||||
SRC_URI = "file://keymap.sh"
|
||||
|
||||
INITSCRIPT_NAME = "keymap.sh"
|
||||
INITSCRIPT_PARAMS = "start 01 S ."
|
||||
|
||||
S = "${WORKDIR}"
|
||||
|
||||
do_install () {
|
||||
# Only install the script if 'sysvinit' is in DISTRO_FEATURES
|
||||
# THe ulitity this script provides could be achieved by systemd-vconsole-setup.service
|
||||
if ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','true','false',d)}; then
|
||||
install -d ${D}${sysconfdir}/init.d/
|
||||
install -m 0755 ${WORKDIR}/keymap.sh ${D}${sysconfdir}/init.d/
|
||||
fi
|
||||
}
|
||||
|
||||
PACKAGE_WRITE_DEPS:append = " ${@bb.utils.contains('DISTRO_FEATURES','systemd sysvinit','systemd-systemctl-native','',d)}"
|
||||
pkg_postinst:${PN} () {
|
||||
if ${@bb.utils.contains('DISTRO_FEATURES','systemd sysvinit','true','false',d)}; then
|
||||
if [ -n "$D" ]; then
|
||||
OPTS="--root=$D"
|
||||
fi
|
||||
systemctl $OPTS mask keymap.service
|
||||
fi
|
||||
}
|
||||
|
||||
ALLOW_EMPTY:${PN} = "1"
|
||||
@@ -0,0 +1,68 @@
|
||||
From 9839c169f513e65fc711646257b3e8588cce623c Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Wed, 5 Aug 2020 12:06:01 -0700
|
||||
Subject: [PATCH] libacpi: Fix build witth -fno-commom
|
||||
|
||||
Upstream-Status: Pending
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
libacpi.c | 16 ++++++++++++++++
|
||||
libacpi.h | 6 +++---
|
||||
2 files changed, 19 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/libacpi.c b/libacpi.c
|
||||
index 4e34725..9344ea4 100644
|
||||
--- a/libacpi.c
|
||||
+++ b/libacpi.c
|
||||
@@ -14,6 +14,22 @@
|
||||
#include "libacpi.h"
|
||||
#include "list.h"
|
||||
|
||||
+/**
|
||||
+ * Array for existing batteries, loop until
|
||||
+ * globals->battery_count
|
||||
+ */
|
||||
+battery_t batteries[MAX_ITEMS];
|
||||
+/**
|
||||
+ * Array for existing thermal zones, loop until
|
||||
+ * globals->thermal_count
|
||||
+ */
|
||||
+thermal_t thermals[MAX_ITEMS];
|
||||
+/**
|
||||
+ * Array for existing fans, loop until
|
||||
+ * globals->fan_count
|
||||
+ */
|
||||
+fan_t fans[MAX_ITEMS];
|
||||
+
|
||||
static int read_acpi_battinfo(const int num);
|
||||
static int read_acpi_battalarm(const int num);
|
||||
static int read_acpi_battstate(const int num);
|
||||
diff --git a/libacpi.h b/libacpi.h
|
||||
index 9334b79..5242d3d 100644
|
||||
--- a/libacpi.h
|
||||
+++ b/libacpi.h
|
||||
@@ -183,17 +183,17 @@ typedef struct {
|
||||
* Array for existing batteries, loop until
|
||||
* globals->battery_count
|
||||
*/
|
||||
-battery_t batteries[MAX_ITEMS];
|
||||
+extern battery_t batteries[MAX_ITEMS];
|
||||
/**
|
||||
* Array for existing thermal zones, loop until
|
||||
* globals->thermal_count
|
||||
*/
|
||||
-thermal_t thermals[MAX_ITEMS];
|
||||
+extern thermal_t thermals[MAX_ITEMS];
|
||||
/**
|
||||
* Array for existing fans, loop until
|
||||
* globals->fan_count
|
||||
*/
|
||||
-fan_t fans[MAX_ITEMS];
|
||||
+extern fan_t fans[MAX_ITEMS];
|
||||
/**
|
||||
* Finds existing batteries and fills the
|
||||
* corresponding batteries structures with the paths
|
||||
--
|
||||
2.28.0
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
libacpi: Remove QA warning: No GNU_HASH in the elf binary
|
||||
|
||||
Upstream-Status: Inappropriate [other]
|
||||
Useful within bitbake environment only.
|
||||
|
||||
Signed-off-by: Muhammad Shakeel <muhammad_shakeel@mentor.com>
|
||||
|
||||
---
|
||||
Makefile | 3 ++-
|
||||
config.mk | 1 +
|
||||
2 files changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
--- libacpi-0.2.orig/Makefile
|
||||
+++ libacpi-0.2/Makefile
|
||||
@@ -19,6 +19,7 @@ options:
|
||||
@echo "CFLAGS = ${CFLAGS}"
|
||||
@echo "CC = ${CC}"
|
||||
@echo "SOFLAGS = ${SOFLAGS}"
|
||||
+ @echo "LDFLAGS = ${LDFLAGS}"
|
||||
@echo "LD = ${LD}"
|
||||
|
||||
.c.o:
|
||||
@@ -34,7 +35,7 @@ libacpi.a: ${OBJ}
|
||||
|
||||
libacpi.so: ${OBJ}
|
||||
@echo LD $@
|
||||
- @${CC} ${SOFLAGS} -o $@.${SOVERSION} ${OBJ}
|
||||
+ @${CC} ${SOFLAGS} ${LDFLAGS} -o $@.${SOVERSION} ${OBJ}
|
||||
|
||||
test-libacpi: ${OBJ_test}
|
||||
@echo LD $@
|
||||
--- libacpi-0.2.orig/config.mk
|
||||
+++ libacpi-0.2/config.mk
|
||||
@@ -10,6 +10,7 @@ MANPREFIX = ${PREFIX}/share/man
|
||||
SOFLAGS = -shared -Wl,-soname,${SONAME}
|
||||
CFLAGS += -fPIC -g --pedantic -Wall -Wextra
|
||||
ARFLAGS = cr
|
||||
+LDFLAGS =
|
||||
|
||||
# Compiler and linker
|
||||
CC = cc
|
||||
@@ -0,0 +1,37 @@
|
||||
Upstream-Status: Pending
|
||||
|
||||
Fix libacpi for x32
|
||||
|
||||
libacpi doesn't use base_libdir for install. This patch adds
|
||||
libdir support so that x32 libraries are installed properly.
|
||||
|
||||
Patch Received from: H.J. Lu <hjl.tools@gmail.com>
|
||||
Updated by: Ricardo Salveti <ricardo@opensourcefoundries.com> 2018/02/03
|
||||
|
||||
Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com> 2011/12/05
|
||||
|
||||
Index: libacpi-0.2/Makefile
|
||||
===================================================================
|
||||
--- libacpi-0.2.orig/Makefile
|
||||
+++ libacpi-0.2/Makefile
|
||||
@@ -42,13 +42,13 @@ install: all
|
||||
@mkdir -p ${DESTDIR}${PREFIX}/include
|
||||
@cp -f libacpi.h ${DESTDIR}${PREFIX}/include
|
||||
@chmod 644 ${DESTDIR}${PREFIX}/include/libacpi.h
|
||||
- @echo installing library to ${DESTDIR}${PREFIX}/lib
|
||||
- @mkdir -p ${DESTDIR}${PREFIX}/lib
|
||||
- @cp -f libacpi.a ${DESTDIR}${PREFIX}/lib
|
||||
- @chmod 644 ${DESTDIR}${PREFIX}/lib/libacpi.a
|
||||
- @cp -f ${SONAME} ${DESTDIR}${PREFIX}/lib/
|
||||
- @chmod 644 ${DESTDIR}${PREFIX}/lib/${SONAME}
|
||||
- @ln -s ${SONAME} ${DESTDIR}${PREFIX}/lib/libacpi.so
|
||||
+ @echo installing library to ${DESTDIR}${LIBDIR}
|
||||
+ @mkdir -p ${DESTDIR}${LIBDIR}
|
||||
+ @cp -f libacpi.a ${DESTDIR}${LIBDIR}
|
||||
+ @chmod 644 ${DESTDIR}${LIBDIR}/libacpi.a
|
||||
+ @cp -f ${SONAME} ${DESTDIR}${LIBDIR}/
|
||||
+ @chmod 644 ${DESTDIR}${LIBDIR}/${SONAME}
|
||||
+ @ln -s ${SONAME} ${DESTDIR}${LIBDIR}/libacpi.so
|
||||
@echo installing test-libacpi to ${DESTDIR}${PREFIX}/bin
|
||||
@mkdir -p ${DESTDIR}${PREFIX}/bin
|
||||
@cp -f test-libacpi ${DESTDIR}${PREFIX}/bin
|
||||
@@ -0,0 +1,47 @@
|
||||
Upstream-Status: Pending
|
||||
|
||||
---
|
||||
Makefile | 6 +++---
|
||||
config.mk | 3 ++-
|
||||
2 files changed, 5 insertions(+), 4 deletions(-)
|
||||
|
||||
Index: libacpi-0.2/Makefile
|
||||
===================================================================
|
||||
--- libacpi-0.2.orig/Makefile 2007-07-29 14:09:34.000000000 +0200
|
||||
+++ libacpi-0.2/Makefile 2008-09-26 10:34:53.000000000 +0200
|
||||
@@ -25,16 +25,16 @@ ${OBJ}: config.mk libacpi.h
|
||||
|
||||
libacpi.a: ${OBJ}
|
||||
@echo AR $@
|
||||
- @${AR} $@ ${OBJ}
|
||||
+ ${AR} ${ARFLAGS} $@ ${OBJ}
|
||||
@${RANLIB} $@
|
||||
|
||||
libacpi.so: ${OBJ}
|
||||
@echo LD $@
|
||||
- @${LD} ${SOFLAGS} -o $@.${SOVERSION} ${OBJ}
|
||||
+ @${CC} ${SOFLAGS} -o $@.${SOVERSION} ${OBJ}
|
||||
|
||||
test-libacpi: ${OBJ_test}
|
||||
@echo LD $@
|
||||
- @${LD} -o $@ ${OBJ_test} ${LDFLAGS}
|
||||
+ @${CC} -o $@ ${OBJ_test} ${LDFLAGS}
|
||||
@strip $@
|
||||
|
||||
install: all
|
||||
Index: libacpi-0.2/config.mk
|
||||
===================================================================
|
||||
--- libacpi-0.2.orig/config.mk 2007-07-29 14:09:34.000000000 +0200
|
||||
+++ libacpi-0.2/config.mk 2008-09-26 10:34:33.000000000 +0200
|
||||
@@ -9,9 +9,10 @@ MANPREFIX = ${PREFIX}/share/man
|
||||
# flags
|
||||
SOFLAGS = -shared -Wl,-soname,${SONAME}
|
||||
CFLAGS += -fPIC -g --pedantic -Wall -Wextra
|
||||
+ARFLAGS = cr
|
||||
|
||||
# Compiler and linker
|
||||
CC = cc
|
||||
LD = ${CC}
|
||||
-AR = ar cr
|
||||
+AR = ar
|
||||
RANLIB = ranlib
|
||||
@@ -0,0 +1,23 @@
|
||||
Upstream-Status: Pending
|
||||
|
||||
Used the cross strip instead of host strip to avoid this build error:
|
||||
|
||||
| strip: Unable to recognise the format of the input file `test-libacpi'
|
||||
| make: *** [test-libacpi] Error 1
|
||||
| ERROR: oe_runmake failed
|
||||
|
||||
Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com> 2011/12/07
|
||||
|
||||
Index: libacpi-0.2/Makefile
|
||||
===================================================================
|
||||
--- libacpi-0.2.orig/Makefile
|
||||
+++ libacpi-0.2/Makefile
|
||||
@@ -39,7 +39,7 @@ libacpi.so: ${OBJ}
|
||||
test-libacpi: ${OBJ_test}
|
||||
@echo LD $@
|
||||
@${CC} -o $@ ${OBJ_test} ${LDFLAGS}
|
||||
- @strip $@
|
||||
+ @${STRIP} $@
|
||||
|
||||
install: all
|
||||
@echo installing header to ${DESTDIR}${PREFIX}/include
|
||||
@@ -0,0 +1,34 @@
|
||||
SUMMARY = "ACPI data gathering library"
|
||||
DESCRIPTION = "General purpose shared library for programs gathering ACPI data on Linux. \
|
||||
Thermal zones, battery infomration, fan information and AC states are implemented."
|
||||
SECTION = "base"
|
||||
HOMEPAGE = "http://www.ngolde.de/libacpi.html"
|
||||
LICENSE = "MIT"
|
||||
LIC_FILES_CHKSUM = "file://LICENSE;md5=fec17f82f16630adf2dfb7d2a46f21c5"
|
||||
PR = "r6"
|
||||
|
||||
SRC_URI = "http://www.ngolde.de/download/libacpi-${PV}.tar.gz \
|
||||
file://makefile-fix.patch \
|
||||
file://libacpi_fix_for_x32.patch \
|
||||
file://use_correct_strip_in_cross_environment.patch \
|
||||
file://ldflags.patch \
|
||||
file://0001-libacpi-Fix-build-witth-fno-commom.patch \
|
||||
"
|
||||
|
||||
SRC_URI[md5sum] = "05b53dd7bead66dda35fec502b91066c"
|
||||
SRC_URI[sha256sum] = "13086e31d428b9c125954d48ac497b754bbbce2ef34ea29ecd903e82e25bad29"
|
||||
|
||||
UPSTREAM_CHECK_URI = "http://www.ngolde.de/libacpi.html"
|
||||
|
||||
inherit lib_package
|
||||
|
||||
COMPATIBLE_HOST = '(x86_64|i.86|aarch64).*-(linux|freebsd.*)'
|
||||
|
||||
CFLAGS += "-fPIC"
|
||||
EXTRA_OEMAKE = '-e MAKEFLAGS= STRIP="echo"'
|
||||
|
||||
TARGET_CC_ARCH += "${LDFLAGS}"
|
||||
|
||||
do_install() {
|
||||
oe_runmake install DESTDIR=${D} PREFIX=${exec_prefix} LIBDIR=${libdir}
|
||||
}
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
From ecdcf0df6c28c65ca6d1e5638726e13e373c76c5 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Wed, 11 Nov 2020 22:58:55 -0800
|
||||
Subject: [PATCH] Fix cross compilation using autoconf detected AR
|
||||
|
||||
currently its using 'ar' program from build host, which is not expected,
|
||||
we need to respect AR passed in environment
|
||||
|
||||
Upstream-Status: Inappropriate [upstream hasn't been active since 1998]
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
configure.in | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/configure.in b/configure.in
|
||||
index 4ddbe8b..b7c3c31 100644
|
||||
--- a/configure.in
|
||||
+++ b/configure.in
|
||||
@@ -84,6 +84,13 @@ AC_ARG_ENABLE(syslog,
|
||||
])
|
||||
|
||||
dnl Checks for programs.
|
||||
+m4_ifndef([AC_PROG_AR],[dnl
|
||||
+ AN_MAKEVAR([AR], [AC_PROG_AR])
|
||||
+ AN_PROGRAM([ar], [AC_PROG_AR])
|
||||
+ AC_DEFUN([AC_PROG_AR],
|
||||
+ [AC_CHECK_TOOL(AR, ar, :)])
|
||||
+])
|
||||
+AC_PROG_AR
|
||||
AC_PROG_CC
|
||||
AC_PROG_GCC_TRADITIONAL
|
||||
dnl AC_PROG_INSTALL included in AM_INIT_AUTOMAKE
|
||||
--
|
||||
2.29.2
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,39 @@
|
||||
Upstream-Status: Inappropriate [configuration]
|
||||
|
||||
--- lrzsz-0.12.20/acinclude.m4~autotools 1998-12-27 17:08:59.000000000 -0500
|
||||
+++ lrzsz-0.12.20/acinclude.m4 2004-05-09 22:26:19.000000000 -0400
|
||||
@@ -1,12 +1,11 @@
|
||||
dnl AC_REPLACE_GNU_GETOPT
|
||||
-AC_DEFUN(AC_REPLACE_GNU_GETOPT,
|
||||
-[AC_CHECK_FUNC(getopt_long, , [LIBOBJS="$LIBOBJS getopt1.o getopt.o"])
|
||||
-AC_SUBST(LIBOBJS)dnl
|
||||
-])
|
||||
+AC_DEFUN([AC_REPLACE_GNU_GETOPT],
|
||||
+[AC_CHECK_FUNC(getopt_long, , [AC_LIBOBJ([getopt1])
|
||||
+AC_LIBOBJ([getopt])dnl])])
|
||||
|
||||
dnl
|
||||
dnl taken from taylor uucp
|
||||
-AC_DEFUN(LRZSZ_ERRNO_DECL,[
|
||||
+AC_DEFUN([LRZSZ_ERRNO_DECL],[
|
||||
AC_MSG_CHECKING(for errno declaration)
|
||||
AC_CACHE_VAL(lrzsz_cv_decl_errno,
|
||||
[AC_TRY_COMPILE([#include <errno.h>], [int i = errno; errno = 1;],
|
||||
@@ -23,7 +21,7 @@
|
||||
])
|
||||
|
||||
dnl LRZSZ_TYPE_SPEED_T
|
||||
-AC_DEFUN(LRZSZ_TYPE_SPEED_T,[
|
||||
+AC_DEFUN([LRZSZ_TYPE_SPEED_T],[
|
||||
AC_REQUIRE([AC_HEADER_STDC])dnl
|
||||
AC_REQUIRE([LRZSZ_HEADERS_TERM_IO])dnl
|
||||
AC_MSG_CHECKING(for speed_t)
|
||||
@@ -61,7 +59,7 @@
|
||||
fi
|
||||
])
|
||||
|
||||
-AC_DEFUN(lrzsz_HEADER_SYS_SELECT,
|
||||
+AC_DEFUN([lrzsz_HEADER_SYS_SELECT],
|
||||
[AC_CACHE_CHECK([whether sys/time.h and sys/select.h may both be included],
|
||||
lrzsz_cv_header_sys_select,
|
||||
[AC_TRY_COMPILE([#include <sys/types.h>
|
||||
@@ -0,0 +1,28 @@
|
||||
Integer overflow in src/zm.c:zsdata() causes crash in sz and can leak information to receiver.
|
||||
|
||||
Patch taken from Fedora.
|
||||
|
||||
CVE: CVE-2018-10195
|
||||
Upstream-Status: Inappropriate (dead upstream)
|
||||
Signed-off-by: Ross Burton <ross.burton@intel.com>
|
||||
|
||||
diff -urN lrzsz-0.12.20/src/zm.c lrzsz-0.12.20.new/src/zm.c
|
||||
--- lrzsz-0.12.20/src/zm.c Tue Dec 29 09:48:38 1998
|
||||
+++ lrzsz-0.12.20.new/src/zm.c Tue Oct 8 12:46:58 2002
|
||||
@@ -431,10 +431,12 @@
|
||||
VPRINTF(3,("zsdata: %lu %s", (unsigned long) length,
|
||||
Zendnames[(frameend-ZCRCE)&3]));
|
||||
crc = 0;
|
||||
- do {
|
||||
- zsendline(*buf); crc = updcrc((0377 & *buf), crc);
|
||||
- buf++;
|
||||
- } while (--length>0);
|
||||
+
|
||||
+ for( ; length; length--) {
|
||||
+ zsendline(*buf); crc = updcrc((0377 & *buf), crc);
|
||||
+ buf++;
|
||||
+ }
|
||||
+
|
||||
xsendline(ZDLE); xsendline(frameend);
|
||||
crc = updcrc(frameend, crc);
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
Implicit declaration compile warning fixes from Debian
|
||||
|
||||
Signed-off-by: Adrian Bunk <bunk@stusta.de>
|
||||
Upstream-Status: Inappropriate [upstream is dead]
|
||||
|
||||
--- lrzsz-0.12.21.orig/lib/long-options.c
|
||||
+++ lrzsz-0.12.21/lib/long-options.c
|
||||
@@ -22,6 +22,7 @@
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
+#include <stdlib.h>
|
||||
#include <getopt.h>
|
||||
#include "long-options.h"
|
||||
|
||||
--- lrzsz-0.12.21.orig/src/lsyslog.c
|
||||
+++ lrzsz-0.12.21/src/lsyslog.c
|
||||
@@ -22,6 +22,7 @@
|
||||
#ifdef ENABLE_SYSLOG
|
||||
#include "zglobal.h"
|
||||
#include <pwd.h>
|
||||
+#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#endif
|
||||
@@ -0,0 +1,32 @@
|
||||
From 28b473c3c96682a820e292cc1be006e19aee11bc Mon Sep 17 00:00:00 2001
|
||||
From: Jackie Huang <jackie.huang@windriver.com>
|
||||
Date: Fri, 24 May 2013 01:07:24 -0400
|
||||
Subject: [PATCH] lrzsz check locale.h
|
||||
|
||||
fix the build failure when using -O0 in a debug build:
|
||||
lrz.c:284:13: error: 'LC_ALL' undeclared (first use in this function)
|
||||
|
||||
Upstream-Status: Submitted [uwe@ohse.de]
|
||||
|
||||
Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
|
||||
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
|
||||
---
|
||||
configure.in | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/configure.in b/configure.in
|
||||
index 6e2064c..c10460c 100644
|
||||
--- a/configure.in
|
||||
+++ b/configure.in
|
||||
@@ -130,7 +130,7 @@ AC_CHECK_HEADERS(fcntl.h limits.h sys/ioctl.h sys/time.h unistd.h sys/times.h)
|
||||
LRZSZ_HEADERS_TERM_IO
|
||||
AC_CHECK_HEADERS(termios.h sys/termios.h termio.h sys/termio.h sgtty.h)
|
||||
AC_CHECK_HEADERS(sys/mman.h utime.h syslog.h sys/syslog.h sys/param.h)
|
||||
-AC_CHECK_HEADERS(sys/select.h strings.h arpa/inet.h)
|
||||
+AC_CHECK_HEADERS(sys/select.h strings.h locale.h arpa/inet.h)
|
||||
|
||||
dnl Checks for typedefs, structures, and compiler characteristics.
|
||||
AC_TYPE_SIZE_T
|
||||
--
|
||||
1.7.9.5
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
Upstream-Status: Inappropriate [configuration]
|
||||
|
||||
diff -ruN lrzsz-0.12.20_org/src/Makefile.in lrzsz-0.12.20_patch/src/Makefile.in
|
||||
--- lrzsz-0.12.20_org/src/Makefile.in 1998-12-30 17:31:46.000000000 +0100
|
||||
+++ lrzsz-0.12.20_patch/src/Makefile.in 2004-04-29 13:57:33.434909656 +0200
|
||||
@@ -372,13 +372,13 @@
|
||||
rm -f $(DESTDIR)/$(bindir)/`echo lsb | sed -e '$(transform)'`
|
||||
ln $(DESTDIR)/$(bindir)/`echo lsz |sed -e '$(transform)'` \
|
||||
$(DESTDIR)/$(bindir)/`echo lsb |sed -e '$(transform)'`
|
||||
- rm -f $(bindir)/`echo lsx | sed -e '$(transform)'`
|
||||
+ rm -f $(DESTDIR)/$(bindir)/`echo lsx | sed -e '$(transform)'`
|
||||
ln $(DESTDIR)/$(bindir)/`echo lsz |sed -e '$(transform)'` \
|
||||
$(DESTDIR)/$(bindir)/`echo lsx |sed -e '$(transform)'`
|
||||
- rm -f $(bindir)/`echo lrb | sed -e '$(transform)'`
|
||||
+ rm -f $(DESTDIR)/$(bindir)/`echo lrb | sed -e '$(transform)'`
|
||||
ln $(DESTDIR)/$(bindir)/`echo lrz |sed -e '$(transform)'` \
|
||||
$(DESTDIR)/$(bindir)/`echo lrb |sed -e '$(transform)'`
|
||||
- rm -f $(bindir)/`echo lrx | sed -e '$(transform)'`
|
||||
+ rm -f $(DESTDIR)/$(bindir)/`echo lrx | sed -e '$(transform)'`
|
||||
ln $(DESTDIR)/$(bindir)/`echo lrz |sed -e '$(transform)'` \
|
||||
$(DESTDIR)/$(bindir)/`echo lrx |sed -e '$(transform)'`
|
||||
# rm -f $(bindir)/`echo lrzszbug | sed -e '$(transform)'`
|
||||
@@ -0,0 +1,49 @@
|
||||
SUMMARY = "Tools for zmodem/xmodem/ymodem file transfer"
|
||||
DESCRIPTION = "Lrzsz is a cosmetically modified zmodem/ymodem/xmodem package built from \
|
||||
the public-domain version of Chuck Forsberg's rzsz package. \
|
||||
These programs use error correcting protocols ({z,x,y}modem) to send (sz, sx, sb) and \
|
||||
receive (rz, rx, rb) files over a dial-in serial port from a variety of programs \
|
||||
running under various operating systems. "
|
||||
HOMEPAGE = "http://www.ohse.de/uwe/software/lrzsz.html"
|
||||
LICENSE = "GPL-2.0-or-later"
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \
|
||||
file://src/lrz.c;beginline=1;endline=10;md5=5276956373ff7d8758837f6399a1045f"
|
||||
SECTION = "console/network"
|
||||
DEPENDS = ""
|
||||
PR = "r6"
|
||||
|
||||
SRC_URI = "http://www.ohse.de/uwe/releases/lrzsz-${PV}.tar.gz \
|
||||
file://autotools-update.patch \
|
||||
file://autotools.patch \
|
||||
file://makefile.patch \
|
||||
file://lrzsz-check-locale.h.patch \
|
||||
file://cve-2018-10195.patch \
|
||||
file://include.patch \
|
||||
file://0001-Fix-cross-compilation-using-autoconf-detected-AR.patch \
|
||||
"
|
||||
|
||||
SRC_URI[md5sum] = "b5ce6a74abc9b9eb2af94dffdfd372a4"
|
||||
SRC_URI[sha256sum] = "c28b36b14bddb014d9e9c97c52459852f97bd405f89113f30bee45ed92728ff1"
|
||||
|
||||
UPSTREAM_CHECK_URI = "http://ohse.de/uwe/software/lrzsz.html"
|
||||
|
||||
inherit autotools gettext
|
||||
|
||||
do_install() {
|
||||
install -d ${D}${bindir}/
|
||||
install -m 0755 src/lrz src/lsz ${D}${bindir}/
|
||||
}
|
||||
|
||||
inherit update-alternatives
|
||||
|
||||
ALTERNATIVE_PRIORITY = "100"
|
||||
|
||||
ALTERNATIVE:${PN} = "rz rx rb sz sx sb"
|
||||
|
||||
ALTERNATIVE_TARGET[rz] = "${bindir}/lrz"
|
||||
ALTERNATIVE_TARGET[rx] = "${bindir}/lrz"
|
||||
ALTERNATIVE_TARGET[rb] = "${bindir}/lrz"
|
||||
|
||||
ALTERNATIVE_TARGET[sz] = "${bindir}/lsz"
|
||||
ALTERNATIVE_TARGET[sx] = "${bindir}/lsz"
|
||||
ALTERNATIVE_TARGET[sb] = "${bindir}/lsz"
|
||||
@@ -0,0 +1,38 @@
|
||||
def riscv_get_extra_oemake_image(d):
|
||||
sbi_payload = d.getVar('RISCV_SBI_PAYLOAD')
|
||||
if sbi_payload is None:
|
||||
return ""
|
||||
|
||||
deploy_dir = d.getVar('DEPLOY_DIR_IMAGE')
|
||||
|
||||
return "FW_PAYLOAD_PATH=" + deploy_dir + "/" + sbi_payload
|
||||
|
||||
def riscv_get_extra_oemake_fdt(d):
|
||||
if d.getVar('RISCV_SBI_PAYLOAD') is None:
|
||||
return ""
|
||||
sbi_fdt = d.getVar('RISCV_SBI_FDT')
|
||||
deploy_dir = d.getVar('DEPLOY_DIR_IMAGE')
|
||||
|
||||
if sbi_fdt is None:
|
||||
return ""
|
||||
|
||||
return "FW_FDT_PATH=" + deploy_dir + "/" + sbi_fdt
|
||||
|
||||
def riscv_get_do_compile_depends(d):
|
||||
sbi_payload = d.getVar('RISCV_SBI_PAYLOAD') or ""
|
||||
if sbi_payload == "":
|
||||
return ""
|
||||
|
||||
sbi_fdt = d.getVar('RISCV_SBI_FDT') or ""
|
||||
|
||||
if sbi_fdt != "" and 'u-boot.bin' in sbi_payload:
|
||||
return "virtual/kernel:do_deploy virtual/bootloader:do_deploy"
|
||||
|
||||
if 'linux' in sbi_payload or 'Image' in sbi_payload:
|
||||
return "virtual/kernel:do_deploy"
|
||||
if 'u-boot.bin' in sbi_payload:
|
||||
return "virtual/bootloader:do_deploy"
|
||||
if sbi_fdt != "":
|
||||
return "virtual/kernel:do_deploy"
|
||||
|
||||
return ""
|
||||
@@ -0,0 +1,47 @@
|
||||
SUMMARY = "RISC-V Open Source Supervisor Binary Interface (OpenSBI)"
|
||||
DESCRIPTION = "OpenSBI aims to provide an open-source and extensible implementation of the RISC-V SBI specification for a platform specific firmware (M-mode) and a general purpose OS, hypervisor or bootloader (S-mode or HS-mode). OpenSBI implementation can be easily extended by RISC-V platform or System-on-Chip vendors to fit a particular hadware configuration."
|
||||
HOMEPAGE = "https://github.com/riscv/opensbi"
|
||||
LICENSE = "BSD-2-Clause"
|
||||
LIC_FILES_CHKSUM = "file://COPYING.BSD;md5=42dd9555eb177f35150cf9aa240b61e5"
|
||||
|
||||
require opensbi-payloads.inc
|
||||
|
||||
inherit autotools-brokensep deploy
|
||||
|
||||
SRCREV = "6b5188ca14e59ce7bf71afe4e7d3d557c3d31bf8"
|
||||
SRC_URI = "git://github.com/riscv/opensbi.git;branch=master;protocol=https"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
EXTRA_OEMAKE += "PLATFORM=${RISCV_SBI_PLAT} I=${D} FW_PIC=n CLANG_TARGET= "
|
||||
# If RISCV_SBI_PAYLOAD is set then include it as a payload
|
||||
EXTRA_OEMAKE:append = " ${@riscv_get_extra_oemake_image(d)}"
|
||||
EXTRA_OEMAKE:append = " ${@riscv_get_extra_oemake_fdt(d)}"
|
||||
|
||||
# Required if specifying a custom payload
|
||||
do_compile[depends] += "${@riscv_get_do_compile_depends(d)}"
|
||||
|
||||
do_install:append() {
|
||||
# In the future these might be required as a dependency for other packages.
|
||||
# At the moment just delete them to avoid warnings
|
||||
rm -r ${D}/include
|
||||
rm -r ${D}/lib*
|
||||
rm -r ${D}/share/opensbi/*/${RISCV_SBI_PLAT}/firmware/payloads
|
||||
}
|
||||
|
||||
do_deploy () {
|
||||
install -m 755 ${D}/share/opensbi/*/${RISCV_SBI_PLAT}/firmware/fw_payload.* ${DEPLOYDIR}/
|
||||
install -m 755 ${D}/share/opensbi/*/${RISCV_SBI_PLAT}/firmware/fw_jump.* ${DEPLOYDIR}/
|
||||
install -m 755 ${D}/share/opensbi/*/${RISCV_SBI_PLAT}/firmware/fw_dynamic.* ${DEPLOYDIR}/
|
||||
}
|
||||
|
||||
addtask deploy before do_build after do_install
|
||||
|
||||
FILES:${PN} += "/share/opensbi/*/${RISCV_SBI_PLAT}/firmware/fw_jump.*"
|
||||
FILES:${PN} += "/share/opensbi/*/${RISCV_SBI_PLAT}/firmware/fw_payload.*"
|
||||
FILES:${PN} += "/share/opensbi/*/${RISCV_SBI_PLAT}/firmware/fw_dynamic.*"
|
||||
|
||||
COMPATIBLE_HOST = "(riscv64|riscv32).*"
|
||||
INHIBIT_PACKAGE_STRIP = "1"
|
||||
|
||||
SECURITY_CFLAGS = ""
|
||||
@@ -0,0 +1,91 @@
|
||||
From 42e7d5f5f1d84a56b125aa05de33d31e28ad1124 Mon Sep 17 00:00:00 2001
|
||||
From: Richard Purdie <rpurdie@linux.intel.com>
|
||||
Date: Wed, 31 Dec 2008 17:20:38 +0000
|
||||
Subject: [PATCH] pciutils: Upgarde 2.2.4 -> 3.0.3
|
||||
|
||||
This patch:
|
||||
* ensures we link correctly
|
||||
* allows us to optionally pass target information to configure rather than using uname
|
||||
* select linux as the platform in most cases we care about
|
||||
|
||||
This is a merge of various tweaks to allow us to build pciutils including
|
||||
work from:
|
||||
|
||||
7/30/2010 - Qing He <qing.he@intel.com>
|
||||
1/22/2012 - Shane Wang <shane.wang@intel.com>
|
||||
Ionut Radu <ionutx.radu@intel.com>
|
||||
2017/6/15 - RP - Cleanups and merging patches
|
||||
|
||||
Upstream-Status: Inappropriate [embedded specific]
|
||||
|
||||
---
|
||||
Makefile | 2 +-
|
||||
lib/configure | 14 ++++++++++----
|
||||
2 files changed, 11 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/Makefile b/Makefile
|
||||
index 3df076d..9b247d3 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -110,7 +110,7 @@ example$(EXEEXT): example.o lib/$(PCIIMPLIB)
|
||||
example.o: example.c $(PCIINC)
|
||||
|
||||
%$(EXEEXT): %.o
|
||||
- $(CC) $(LDFLAGS) $(TARGET_ARCH) $^ $(LDLIBS) -o $@
|
||||
+ $(CC) $(LDFLAGS) $(TARGET_ARCH) $^ $(LIB_LDLIBS) $(LDLIBS) -o $@
|
||||
|
||||
ifdef PCI_OS_WINDOWS
|
||||
comma := ,
|
||||
diff --git a/lib/configure b/lib/configure
|
||||
index 57b064b..b269332 100755
|
||||
--- a/lib/configure
|
||||
+++ b/lib/configure
|
||||
@@ -9,6 +9,10 @@ echo_n() {
|
||||
printf '%s' "$*"
|
||||
}
|
||||
|
||||
+VERSION=$1
|
||||
+IDSDIR=$2
|
||||
+DNS=yes
|
||||
+
|
||||
if [ -z "$VERSION" ] ; then
|
||||
echo >&2 "Please run the configure script from the top-level Makefile"
|
||||
exit 1
|
||||
@@ -16,8 +20,8 @@ fi
|
||||
|
||||
echo_n "Configuring libpci for your system..."
|
||||
if [ -z "$HOST" ] ; then
|
||||
- sys=`uname -s`
|
||||
- rel=`uname -r`
|
||||
+ sys=${3:-`uname -s`}
|
||||
+ rel=
|
||||
realsys="$sys"
|
||||
if [ "$sys" = "AIX" -a -x /usr/bin/oslevel -a -x /usr/sbin/lsattr ]
|
||||
then
|
||||
@@ -25,7 +29,7 @@ if [ -z "$HOST" ] ; then
|
||||
proc=`/usr/sbin/lsdev -C -c processor -S available -F name | head -1`
|
||||
cpu=`/usr/sbin/lsattr -F value -l $proc -a type | sed 's/_.*//'`
|
||||
else
|
||||
- cpu=`uname -m | sed 's/^i.86-AT386/i386/;s/^i.86$/i386/;s/^sun4u$/sparc64/;s/^i86pc$/i386/;s/^BePC$/i386/;s/^BeMac$/powerpc/;s/^BeBox$/powerpc/'`
|
||||
+ cpu=${4:-`uname -m | sed 's/^i.86-AT386/i386/;s/^i.86$/i386/;s/^sun4u$/sparc64/;s/^i86pc$/i386/;s/^BePC$/i386/;s/^BeMac$/powerpc/;s/^BeBox$/powerpc/'`}
|
||||
fi
|
||||
if [ "$sys" = "DragonFly" ]
|
||||
then
|
||||
@@ -43,7 +47,7 @@ if [ -z "$HOST" ] ; then
|
||||
then
|
||||
sys=cygwin
|
||||
fi
|
||||
- HOST=${3:-$cpu-$sys}
|
||||
+ HOST=$cpu-$sys
|
||||
fi
|
||||
[ -n "$RELEASE" ] && rel="${RELEASE}"
|
||||
# CAVEAT: tr on Solaris is a bit weird and the extra [] is otherwise harmless.
|
||||
@@ -52,6 +56,8 @@ cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
|
||||
sys=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
|
||||
echo " $host $rel $cpu $sys"
|
||||
|
||||
+{ echo "$host" | grep linux; } && sys=linux
|
||||
+
|
||||
c=config.h
|
||||
m=config.mk
|
||||
echo >$c '#define PCI_CONFIG_H'
|
||||
@@ -0,0 +1,64 @@
|
||||
SUMMARY = "PCI utilities"
|
||||
DESCRIPTION = 'The PCI Utilities package contains a library for portable access \
|
||||
to PCI bus configuration space and several utilities based on this library.'
|
||||
HOMEPAGE = "http://atrey.karlin.mff.cuni.cz/~mj/pciutils.shtml"
|
||||
SECTION = "console/utils"
|
||||
|
||||
LICENSE = "GPL-2.0-or-later"
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
|
||||
# Can drop make-native when all systems have make 4.3
|
||||
# https://git.savannah.gnu.org/cgit/make.git/commit/?id=b90fabc8d6f34fb37d428dc0fb1b8b1951a9fbed
|
||||
# causes space issues in lib/libpci.pc
|
||||
DEPENDS = "zlib kmod make-native"
|
||||
|
||||
SRC_URI = "${KERNELORG_MIRROR}/software/utils/pciutils/pciutils-${PV}.tar.xz \
|
||||
file://configure.patch"
|
||||
|
||||
SRC_URI[sha256sum] = "238a2e27166730e53a17fe07bfad229e07fa39b618117e5944b6d7eda9fbb0e9"
|
||||
|
||||
inherit multilib_header pkgconfig update-alternatives
|
||||
|
||||
PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'hwdb', '', d)}"
|
||||
PACKAGECONFIG[hwdb] = "HWDB=yes,HWDB=no,udev"
|
||||
|
||||
PCI_CONF_FLAG = "ZLIB=yes DNS=yes SHARED=yes STRIP= LIBDIR=${libdir}"
|
||||
|
||||
# see configure.patch
|
||||
do_configure () {
|
||||
(
|
||||
cd lib && \
|
||||
# PACKAGECONFIG_CONFARGS for this recipe could only possibly contain 'HWDB=yes/no',
|
||||
# so we put it before ./configure
|
||||
${PCI_CONF_FLAG} ${PACKAGECONFIG_CONFARGS} ./configure ${PV} ${datadir} ${TARGET_OS} ${TARGET_ARCH}
|
||||
)
|
||||
}
|
||||
|
||||
export PREFIX = "${prefix}"
|
||||
export SBINDIR = "${sbindir}"
|
||||
export SHAREDIR = "${datadir}"
|
||||
export MANDIR = "${mandir}"
|
||||
|
||||
EXTRA_OEMAKE = "-e MAKEFLAGS= ${PCI_CONF_FLAG}"
|
||||
|
||||
ASNEEDED = ""
|
||||
|
||||
# The configure script breaks if the HOST variable is set
|
||||
HOST[unexport] = "1"
|
||||
|
||||
do_install () {
|
||||
oe_runmake DESTDIR=${D} install install-lib
|
||||
|
||||
install -d ${D}${bindir}
|
||||
|
||||
oe_multilib_header pci/config.h
|
||||
}
|
||||
|
||||
PACKAGES =+ "${PN}-ids libpci"
|
||||
FILES:${PN}-ids = "${datadir}/pci.ids*"
|
||||
FILES:libpci = "${libdir}/libpci.so.*"
|
||||
SUMMARY:${PN}-ids = "PCI utilities - device ID database"
|
||||
DESCRIPTION:${PN}-ids = "Package providing the PCI device ID database for pciutils."
|
||||
RDEPENDS:${PN} += "${PN}-ids"
|
||||
|
||||
ALTERNATIVE:${PN} = "lspci"
|
||||
ALTERNATIVE_PRIORITY = "100"
|
||||
@@ -0,0 +1,30 @@
|
||||
SECTION = "base"
|
||||
SUMMARY = "Utilities and scripts for power management"
|
||||
DESCRIPTION = "Simple shell command line tools to suspend and hibernate."
|
||||
HOMEPAGE = "http://pm-utils.freedesktop.org/wiki/"
|
||||
LICENSE = "GPL-2.0-only"
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
|
||||
file://src/pm-pmu.c;beginline=1;endline=22;md5=3c1ddbc54e735fb4a0386e14c78a3147"
|
||||
|
||||
PR = "r1"
|
||||
|
||||
SRC_URI = "http://pm-utils.freedesktop.org/releases/pm-utils-${PV}.tar.gz"
|
||||
|
||||
SRC_URI[md5sum] = "1742a556089c36c3a89eb1b957da5a60"
|
||||
SRC_URI[sha256sum] = "8ed899032866d88b2933a1d34cc75e8ae42dcde20e1cc21836baaae3d4370c0b"
|
||||
|
||||
inherit pkgconfig autotools manpages
|
||||
|
||||
PACKAGECONFIG[manpages] = "--enable-doc, --disable-doc, libxslt-native xmlto-native"
|
||||
|
||||
RDEPENDS:${PN} = "grep bash"
|
||||
|
||||
EXTRA_OECONF = "--libdir=${nonarch_libdir}"
|
||||
|
||||
do_configure:prepend () {
|
||||
( cd ${S}; autoreconf -f -i -s )
|
||||
}
|
||||
|
||||
FILES:${PN} += "${nonarch_libdir}/${BPN}/*"
|
||||
FILES:${PN}-dbg += "${datadir}/doc/pm-utils/README.debugging"
|
||||
FILES:${PN}-dev += "${nonarch_libdir}/pkgconfig/pm-utils.pc"
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
From 9bbb342f5d9ad5dc75486fd35ada8e287ba19299 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Mon, 15 Aug 2022 13:03:17 -0700
|
||||
Subject: [PATCH] setserial.c: Add needed system headers for ioctl() and
|
||||
close() calls
|
||||
|
||||
Add int return type for main() function
|
||||
|
||||
Fixes
|
||||
error: type specifier missing, defaults to 'int'; ISO C99 and later do not support implicit int [-Wimplicit-int]
|
||||
error: call to undeclared function 'close'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declarat
|
||||
ion]
|
||||
|
||||
Upstream-Status: Submitted [https://sourceforge.net/p/setserial/discussion/7060/thread/95d874c12c/]
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
setserial.c | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/setserial.c b/setserial.c
|
||||
index bfda8fd..6a95513 100644
|
||||
--- a/setserial.c
|
||||
+++ b/setserial.c
|
||||
@@ -16,6 +16,8 @@
|
||||
#include <termios.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
+#include <unistd.h>
|
||||
+#include <sys/ioctl.h>
|
||||
|
||||
#ifdef HAVE_ASM_IOCTLS_H
|
||||
#include <asm/ioctls.h>
|
||||
@@ -715,7 +717,7 @@ fprintf(stderr, "\t* port\t\tset the I/O port\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
-main(int argc, char **argv)
|
||||
+int main(int argc, char **argv)
|
||||
{
|
||||
int get_flag = 0, wild_intr_flag = 0;
|
||||
int c;
|
||||
@@ -0,0 +1,18 @@
|
||||
# This patch addes stdlib.h to fix compiler warnings due to the exit
|
||||
# built-in not being defined and getting an incorrect implicit definition
|
||||
|
||||
Upstream-Status: Pending
|
||||
|
||||
Created-by: Saul Wold <saul.wold@intel.com>
|
||||
|
||||
--- setserial-2.17/setserial.c 2010-09-02 14:11:27.569763088 -0700
|
||||
+++ setserial-2.17_fixed/setserial.c 2010-09-02 14:11:08.546264139 -0700
|
||||
@@ -11,6 +11,7 @@
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
+#include <stdlib.h>
|
||||
#include <fcntl.h>
|
||||
#include <termios.h>
|
||||
#include <string.h>
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
Obey LDFLAGS
|
||||
|
||||
Signed-off-by: Christopher Larson <chris_larson@mentor.com>
|
||||
Upstream-Status: Pending
|
||||
|
||||
--- setserial-2.17.orig/Makefile.in
|
||||
+++ setserial-2.17/Makefile.in
|
||||
@@ -13,6 +13,7 @@ STRIP = @STRIP@
|
||||
CC = @CC@
|
||||
RM = rm -f
|
||||
CFLAGS = @CFLAGS@
|
||||
+LDFLAGS = @LDFLAGS@
|
||||
DEFS = @DEFS@
|
||||
INCS = -I.
|
||||
TAR = tar
|
||||
@@ -20,7 +21,7 @@ TAR = tar
|
||||
all: setserial setserial.cat
|
||||
|
||||
setserial: setserial.c
|
||||
- $(CC) $(CFLAGS) $(DEFS) $(INCS) setserial.c -o setserial
|
||||
+ $(CC) $(CFLAGS) $(LDFLAGS) $(DEFS) $(INCS) setserial.c -o setserial
|
||||
|
||||
setserial.cat: setserial.8
|
||||
nroff -man setserial.8 > setserial.cat
|
||||
@@ -0,0 +1,30 @@
|
||||
SUMMARY = "Controls the configuration of serial ports"
|
||||
DESCRIPTION = "setserial is a program designed to set and/or report the configuration information associated with a serial port"
|
||||
HOMEPAGE = "http://setserial.sourceforge.net"
|
||||
AUTHOR = "Theodore Ts'o <tytso@mit.edu>"
|
||||
SECTION = "console/utils"
|
||||
|
||||
LICENSE = "GPL-2.0-only"
|
||||
LIC_FILES_CHKSUM = "file://version.h;beginline=1;endline=6;md5=2e7c59cb9e57e356ae81f50f4e4dfd99"
|
||||
PR = "r3"
|
||||
|
||||
DEPENDS += "groff-native"
|
||||
|
||||
inherit autotools-brokensep
|
||||
|
||||
SRC_URI = "${SOURCEFORGE_MIRROR}/setserial/${BPN}-${PV}.tar.gz \
|
||||
file://add_stdlib.patch \
|
||||
file://ldflags.patch \
|
||||
file://0001-setserial.c-Add-needed-system-headers-for-ioctl-and-.patch \
|
||||
"
|
||||
|
||||
SRC_URI[md5sum] = "c4867d72c41564318e0107745eb7a0f2"
|
||||
SRC_URI[sha256sum] = "7e4487d320ac31558563424189435d396ddf77953bb23111a17a3d1487b5794a"
|
||||
|
||||
do_install() {
|
||||
install -d ${D}${bindir}
|
||||
install -d ${D}${mandir}/man8
|
||||
|
||||
install -m 0755 ${S}/setserial ${D}${bindir}
|
||||
install -m 0644 ${S}/setserial.8 ${D}${mandir}/man8
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
SUMMARY = "U-Boot libraries and tools to access environment"
|
||||
|
||||
DESCRIPTION = "This package contains tools and libraries to read \
|
||||
and modify U-Boot environment. \
|
||||
It provides a hardware-independent replacement for fw_printenv/setenv utilities \
|
||||
provided by U-Boot"
|
||||
|
||||
HOMEPAGE = "https://github.com/sbabic/libubootenv"
|
||||
LICENSE = "LGPL-2.1-or-later"
|
||||
LIC_FILES_CHKSUM = "file://LICENSES/LGPL-2.1-or-later.txt;md5=4fbd65380cdd255951079008b364516c"
|
||||
SECTION = "libs"
|
||||
|
||||
SRC_URI = "git://github.com/sbabic/libubootenv;protocol=https;branch=master"
|
||||
SRCREV = "4dfb5254fc0540a36e87914bc14644c047ea7678"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
inherit cmake lib_package
|
||||
|
||||
EXTRA_OECMAKE = "-DCMAKE_BUILD_TYPE=Release"
|
||||
|
||||
DEPENDS = "zlib libyaml"
|
||||
PROVIDES += "u-boot-fw-utils"
|
||||
RPROVIDES:${PN}-bin += "u-boot-fw-utils"
|
||||
|
||||
BBCLASSEXTEND = "native"
|
||||
@@ -0,0 +1,24 @@
|
||||
HOMEPAGE = "http://www.denx.de/wiki/U-Boot/WebHome"
|
||||
DESCRIPTION = "U-Boot, a boot loader for Embedded boards based on PowerPC, \
|
||||
ARM, MIPS and several other processors, which can be installed in a boot \
|
||||
ROM and used to initialize and test the hardware or to download and run \
|
||||
application code."
|
||||
SECTION = "bootloaders"
|
||||
DEPENDS += "flex-native bison-native python3-setuptools-native"
|
||||
|
||||
LICENSE = "GPL-2.0-or-later"
|
||||
LIC_FILES_CHKSUM = "file://Licenses/README;md5=2ca5f2c35c8cc335f0a19756634782f1"
|
||||
PE = "1"
|
||||
|
||||
# We use the revision in order to avoid having to fetch it from the
|
||||
# repo during parse
|
||||
SRCREV = "83cdab8b2c6ea0fc0860f8444d083353b47f1d5c"
|
||||
|
||||
SRC_URI = "git://source.denx.de/u-boot/u-boot.git;protocol=https;branch=u-boot-2023.07.y"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
B = "${WORKDIR}/build"
|
||||
|
||||
inherit pkgconfig
|
||||
|
||||
do_configure[cleandirs] = "${B}"
|
||||
@@ -0,0 +1,38 @@
|
||||
# This provides the logic for creating the desired u-boot config,
|
||||
# accounting for any *.cfg files added to SRC_URI. It's separated
|
||||
# from u-boot.inc for use by recipes that need u-boot properly
|
||||
# configured but aren't doing a full build of u-boot itself (such as
|
||||
# its companion tools).
|
||||
|
||||
inherit uboot-config cml1
|
||||
|
||||
DEPENDS += "kern-tools-native"
|
||||
|
||||
do_configure () {
|
||||
if [ -n "${UBOOT_CONFIG}" ]; then
|
||||
unset i j
|
||||
for config in ${UBOOT_MACHINE}; do
|
||||
i=$(expr $i + 1);
|
||||
for type in ${UBOOT_CONFIG}; do
|
||||
j=$(expr $j + 1);
|
||||
if [ $j -eq $i ]; then
|
||||
oe_runmake -C ${S} O=${B}/${config} ${config}
|
||||
if [ -n "${@' '.join(find_cfgs(d))}" ]; then
|
||||
merge_config.sh -m -O ${B}/${config} ${B}/${config}/.config ${@" ".join(find_cfgs(d))}
|
||||
oe_runmake -C ${S} O=${B}/${config} oldconfig
|
||||
fi
|
||||
fi
|
||||
done
|
||||
unset j
|
||||
done
|
||||
unset i
|
||||
else
|
||||
if [ -n "${UBOOT_MACHINE}" ]; then
|
||||
oe_runmake -C ${S} O=${B} ${UBOOT_MACHINE}
|
||||
else
|
||||
oe_runmake -C ${S} O=${B} oldconfig
|
||||
fi
|
||||
merge_config.sh -m .config ${@" ".join(find_cfgs(d))}
|
||||
cml1_do_configure
|
||||
fi
|
||||
}
|
||||
@@ -0,0 +1,85 @@
|
||||
SUMMARY = "U-Boot bootloader tools"
|
||||
DEPENDS += "gnutls openssl util-linux swig-native"
|
||||
|
||||
inherit python3native
|
||||
export STAGING_INCDIR="${STAGING_INCDIR_NATIVE}"
|
||||
|
||||
PROVIDES = "${MLPREFIX}u-boot-mkimage ${MLPREFIX}u-boot-mkenvimage"
|
||||
PROVIDES:class-native = "u-boot-mkimage-native u-boot-mkenvimage-native"
|
||||
|
||||
PACKAGES += "${PN}-mkimage ${PN}-mkenvimage"
|
||||
|
||||
# Required for backward compatibility with "u-boot-mkimage-xxx.bb"
|
||||
RPROVIDES:${PN}-mkimage = "u-boot-mkimage"
|
||||
RREPLACES:${PN}-mkimage = "u-boot-mkimage"
|
||||
RCONFLICTS:${PN}-mkimage = "u-boot-mkimage"
|
||||
|
||||
EXTRA_OEMAKE:class-target = 'CROSS_COMPILE="${TARGET_PREFIX}" CC="${CC} ${CFLAGS} ${LDFLAGS}" HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" STRIP=true V=1'
|
||||
EXTRA_OEMAKE:class-native = 'CC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" STRIP=true V=1'
|
||||
EXTRA_OEMAKE:class-nativesdk = 'CROSS_COMPILE="${HOST_PREFIX}" CC="${CC} ${CFLAGS} ${LDFLAGS}" HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" STRIP=true V=1'
|
||||
|
||||
SED_CONFIG_EFI = '-e "s/CONFIG_EFI_LOADER=.*/# CONFIG_EFI_LOADER is not set/"'
|
||||
SED_CONFIG_EFI:x86 = ''
|
||||
SED_CONFIG_EFI:x86-64 = ''
|
||||
SED_CONFIG_EFI:arm = ''
|
||||
SED_CONFIG_EFI:armeb = ''
|
||||
SED_CONFIG_EFI:aarch64 = ''
|
||||
SED_CONFIG_EFI:loongarch64 = ''
|
||||
|
||||
do_compile () {
|
||||
# Yes, this is crazy. If you build on a system with git < 2.14 from scratch, the tree will
|
||||
# be marked as "dirty" and the version will include "-dirty", leading to a reproducibility problem.
|
||||
# The issue is the inode count for Licnses/README changing due to do_populate_lic hardlinking a
|
||||
# copy of the file. We avoid this by ensuring the index is updated with a "git diff" before the
|
||||
# u-boot machinery tries to determine the version.
|
||||
#
|
||||
# build$ ../git/scripts/setlocalversion ../git
|
||||
# ""
|
||||
# build$ ln ../git/
|
||||
# build$ ln ../git/README ../foo
|
||||
# build$ ../git/scripts/setlocalversion ../git
|
||||
# ""-dirty
|
||||
# (i.e. creating a hardlink dirties the index)
|
||||
cd ${S}; git diff; cd ${B}
|
||||
|
||||
oe_runmake -C ${S} tools-only_defconfig O=${B}
|
||||
|
||||
# Disable CONFIG_CMD_LICENSE, license.h is not used by tools and
|
||||
# generating it requires bin2header tool, which for target build
|
||||
# is built with target tools and thus cannot be executed on host.
|
||||
sed -i -e "s/CONFIG_CMD_LICENSE=.*/# CONFIG_CMD_LICENSE is not set/" ${SED_CONFIG_EFI} ${B}/.config
|
||||
|
||||
oe_runmake -C ${S} cross_tools NO_SDL=1 O=${B}
|
||||
}
|
||||
|
||||
do_install () {
|
||||
install -d ${D}${bindir}
|
||||
|
||||
# mkimage
|
||||
install -m 0755 tools/mkimage ${D}${bindir}/uboot-mkimage
|
||||
ln -sf uboot-mkimage ${D}${bindir}/mkimage
|
||||
|
||||
# mkenvimage
|
||||
install -m 0755 tools/mkenvimage ${D}${bindir}/uboot-mkenvimage
|
||||
ln -sf uboot-mkenvimage ${D}${bindir}/mkenvimage
|
||||
|
||||
# dumpimage
|
||||
install -m 0755 tools/dumpimage ${D}${bindir}/uboot-dumpimage
|
||||
ln -sf uboot-dumpimage ${D}${bindir}/dumpimage
|
||||
|
||||
# fit_check_sign
|
||||
install -m 0755 tools/fit_check_sign ${D}${bindir}/uboot-fit_check_sign
|
||||
ln -sf uboot-fit_check_sign ${D}${bindir}/fit_check_sign
|
||||
}
|
||||
|
||||
ALLOW_EMPTY:${PN} = "1"
|
||||
FILES:${PN} = ""
|
||||
FILES:${PN}-mkimage = "${bindir}/uboot-mkimage ${bindir}/mkimage ${bindir}/uboot-dumpimage ${bindir}/dumpimage ${bindir}/uboot-fit_check_sign ${bindir}/fit_check_sign"
|
||||
FILES:${PN}-mkenvimage = "${bindir}/uboot-mkenvimage ${bindir}/mkenvimage"
|
||||
|
||||
RDEPENDS:${PN}-mkimage += "dtc"
|
||||
RDEPENDS:${PN} += "${PN}-mkimage ${PN}-mkenvimage"
|
||||
RDEPENDS:${PN}:class-native = ""
|
||||
|
||||
BBCLASSEXTEND = "native nativesdk"
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
require u-boot-common.inc
|
||||
require u-boot-tools.inc
|
||||
@@ -0,0 +1,341 @@
|
||||
SUMMARY = "Universal Boot Loader for embedded devices"
|
||||
PROVIDES = "virtual/bootloader"
|
||||
|
||||
PACKAGE_ARCH = "${MACHINE_ARCH}"
|
||||
|
||||
DEPENDS += "${@bb.utils.contains('UBOOT_ENV_SUFFIX', 'scr', 'u-boot-mkimage-native', '', d)}"
|
||||
|
||||
inherit uboot-config uboot-extlinux-config uboot-sign deploy python3native kernel-arch
|
||||
|
||||
DEPENDS += "swig-native"
|
||||
|
||||
EXTRA_OEMAKE = 'CROSS_COMPILE=${TARGET_PREFIX} CC="${TARGET_PREFIX}gcc ${TOOLCHAIN_OPTIONS}" V=1'
|
||||
EXTRA_OEMAKE += 'HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}"'
|
||||
EXTRA_OEMAKE += 'STAGING_INCDIR=${STAGING_INCDIR_NATIVE} STAGING_LIBDIR=${STAGING_LIBDIR_NATIVE}'
|
||||
|
||||
PACKAGECONFIG ??= "openssl"
|
||||
# u-boot will compile its own tools during the build, with specific
|
||||
# configurations (aka when CONFIG_FIT_SIGNATURE is enabled) openssl is needed as
|
||||
# a host build dependency.
|
||||
PACKAGECONFIG[openssl] = ",,openssl-native"
|
||||
|
||||
# Allow setting an additional version string that will be picked up by the
|
||||
# u-boot build system and appended to the u-boot version. If the .scmversion
|
||||
# file already exists it will not be overwritten.
|
||||
UBOOT_LOCALVERSION ?= ""
|
||||
|
||||
require u-boot-configure.inc
|
||||
|
||||
do_savedefconfig() {
|
||||
bbplain "Saving defconfig to:\n${B}/defconfig"
|
||||
oe_runmake -C ${B} savedefconfig
|
||||
}
|
||||
do_savedefconfig[nostamp] = "1"
|
||||
addtask savedefconfig after do_configure
|
||||
UBOOT_ARCH_DIR = "${@'arm' if d.getVar('UBOOT_ARCH').startswith('arm') else d.getVar('UBOOT_ARCH')}"
|
||||
do_compile () {
|
||||
if [ "${@bb.utils.filter('DISTRO_FEATURES', 'ld-is-gold', d)}" ]; then
|
||||
sed -i 's/$(CROSS_COMPILE)ld$/$(CROSS_COMPILE)ld.bfd/g' ${S}/config.mk
|
||||
fi
|
||||
|
||||
unset LDFLAGS
|
||||
unset CFLAGS
|
||||
unset CPPFLAGS
|
||||
|
||||
if [ ! -e ${B}/.scmversion -a ! -e ${S}/.scmversion ]
|
||||
then
|
||||
echo ${UBOOT_LOCALVERSION} > ${B}/.scmversion
|
||||
echo ${UBOOT_LOCALVERSION} > ${S}/.scmversion
|
||||
fi
|
||||
|
||||
if [ -n "${UBOOT_CONFIG}" -o -n "${UBOOT_DELTA_CONFIG}" ]
|
||||
then
|
||||
unset i j k
|
||||
for config in ${UBOOT_MACHINE}; do
|
||||
i=$(expr $i + 1);
|
||||
for type in ${UBOOT_CONFIG}; do
|
||||
j=$(expr $j + 1);
|
||||
if [ $j -eq $i ]
|
||||
then
|
||||
oe_runmake -C ${S} O=${B}/${config} ${UBOOT_MAKE_TARGET}
|
||||
for binary in ${UBOOT_BINARIES}; do
|
||||
k=$(expr $k + 1);
|
||||
if [ $k -eq $i ]; then
|
||||
cp ${B}/${config}/${binary} ${B}/${config}/${UBOOT_BINARYNAME}-${type}.${UBOOT_SUFFIX}
|
||||
fi
|
||||
done
|
||||
|
||||
# Generate the uboot-initial-env
|
||||
if [ -n "${UBOOT_INITIAL_ENV}" ]; then
|
||||
oe_runmake -C ${S} O=${B}/${config} u-boot-initial-env
|
||||
cp ${B}/${config}/u-boot-initial-env ${B}/${config}/u-boot-initial-env-${type}
|
||||
fi
|
||||
|
||||
unset k
|
||||
fi
|
||||
done
|
||||
unset j
|
||||
done
|
||||
unset i
|
||||
else
|
||||
oe_runmake -C ${S} O=${B} ${UBOOT_MAKE_TARGET}
|
||||
|
||||
# Generate the uboot-initial-env
|
||||
if [ -n "${UBOOT_INITIAL_ENV}" ]; then
|
||||
oe_runmake -C ${S} O=${B} u-boot-initial-env
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -n "${UBOOT_ENV}" ] && [ "${UBOOT_ENV_SUFFIX}" = "scr" ]
|
||||
then
|
||||
${UBOOT_MKIMAGE} -C none -A ${UBOOT_ARCH} -T script -d ${WORKDIR}/${UBOOT_ENV_SRC} ${WORKDIR}/${UBOOT_ENV_BINARY}
|
||||
fi
|
||||
}
|
||||
|
||||
do_install () {
|
||||
if [ -n "${UBOOT_CONFIG}" ]
|
||||
then
|
||||
for config in ${UBOOT_MACHINE}; do
|
||||
i=$(expr $i + 1);
|
||||
for type in ${UBOOT_CONFIG}; do
|
||||
j=$(expr $j + 1);
|
||||
if [ $j -eq $i ]
|
||||
then
|
||||
install -D -m 644 ${B}/${config}/${UBOOT_BINARYNAME}-${type}.${UBOOT_SUFFIX} ${D}/boot/${UBOOT_BINARYNAME}-${type}-${PV}-${PR}.${UBOOT_SUFFIX}
|
||||
ln -sf ${UBOOT_BINARYNAME}-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${D}/boot/${UBOOT_BINARY}-${type}
|
||||
ln -sf ${UBOOT_BINARYNAME}-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${D}/boot/${UBOOT_BINARY}
|
||||
|
||||
# Install the uboot-initial-env
|
||||
if [ -n "${UBOOT_INITIAL_ENV}" ]; then
|
||||
install -D -m 644 ${B}/${config}/u-boot-initial-env-${type} ${D}/${sysconfdir}/${UBOOT_INITIAL_ENV}-${MACHINE}-${type}-${PV}-${PR}
|
||||
ln -sf ${UBOOT_INITIAL_ENV}-${MACHINE}-${type}-${PV}-${PR} ${D}/${sysconfdir}/${UBOOT_INITIAL_ENV}-${MACHINE}-${type}
|
||||
ln -sf ${UBOOT_INITIAL_ENV}-${MACHINE}-${type}-${PV}-${PR} ${D}/${sysconfdir}/${UBOOT_INITIAL_ENV}-${type}
|
||||
ln -sf ${UBOOT_INITIAL_ENV}-${MACHINE}-${type}-${PV}-${PR} ${D}/${sysconfdir}/${UBOOT_INITIAL_ENV}
|
||||
fi
|
||||
fi
|
||||
done
|
||||
unset j
|
||||
done
|
||||
unset i
|
||||
else
|
||||
install -D -m 644 ${B}/${UBOOT_BINARY} ${D}/boot/${UBOOT_IMAGE}
|
||||
ln -sf ${UBOOT_IMAGE} ${D}/boot/${UBOOT_BINARY}
|
||||
|
||||
# Install the uboot-initial-env
|
||||
if [ -n "${UBOOT_INITIAL_ENV}" ]; then
|
||||
install -D -m 644 ${B}/u-boot-initial-env ${D}/${sysconfdir}/${UBOOT_INITIAL_ENV}-${MACHINE}-${PV}-${PR}
|
||||
ln -sf ${UBOOT_INITIAL_ENV}-${MACHINE}-${PV}-${PR} ${D}/${sysconfdir}/${UBOOT_INITIAL_ENV}-${MACHINE}
|
||||
ln -sf ${UBOOT_INITIAL_ENV}-${MACHINE}-${PV}-${PR} ${D}/${sysconfdir}/${UBOOT_INITIAL_ENV}
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -n "${UBOOT_ELF}" ]
|
||||
then
|
||||
if [ -n "${UBOOT_CONFIG}" ]
|
||||
then
|
||||
for config in ${UBOOT_MACHINE}; do
|
||||
i=$(expr $i + 1);
|
||||
for type in ${UBOOT_CONFIG}; do
|
||||
j=$(expr $j + 1);
|
||||
if [ $j -eq $i ]
|
||||
then
|
||||
install -m 644 ${B}/${config}/${UBOOT_ELF} ${D}/boot/u-boot-${type}-${PV}-${PR}.${UBOOT_ELF_SUFFIX}
|
||||
ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_ELF_SUFFIX} ${D}/boot/${UBOOT_BINARY}-${type}
|
||||
ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_ELF_SUFFIX} ${D}/boot/${UBOOT_BINARY}
|
||||
fi
|
||||
done
|
||||
unset j
|
||||
done
|
||||
unset i
|
||||
else
|
||||
install -m 644 ${B}/${UBOOT_ELF} ${D}/boot/${UBOOT_ELF_IMAGE}
|
||||
ln -sf ${UBOOT_ELF_IMAGE} ${D}/boot/${UBOOT_ELF_BINARY}
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -e ${WORKDIR}/fw_env.config ] ; then
|
||||
install -d ${D}${sysconfdir}
|
||||
install -m 644 ${WORKDIR}/fw_env.config ${D}${sysconfdir}/fw_env.config
|
||||
fi
|
||||
|
||||
if [ -n "${SPL_BINARY}" ]
|
||||
then
|
||||
if [ -n "${UBOOT_CONFIG}" ]
|
||||
then
|
||||
for config in ${UBOOT_MACHINE}; do
|
||||
i=$(expr $i + 1);
|
||||
for type in ${UBOOT_CONFIG}; do
|
||||
j=$(expr $j + 1);
|
||||
if [ $j -eq $i ]
|
||||
then
|
||||
install -m 644 ${B}/${config}/${SPL_BINARY} ${D}/boot/${SPL_BINARYNAME}-${type}-${PV}-${PR}${SPL_DELIMITER}${SPL_SUFFIX}
|
||||
ln -sf ${SPL_BINARYNAME}-${type}-${PV}-${PR}${SPL_DELIMITER}${SPL_SUFFIX} ${D}/boot/${SPL_BINARYFILE}-${type}
|
||||
ln -sf ${SPL_BINARYNAME}-${type}-${PV}-${PR}${SPL_DELIMITER}${SPL_SUFFIX} ${D}/boot/${SPL_BINARYFILE}
|
||||
fi
|
||||
done
|
||||
unset j
|
||||
done
|
||||
unset i
|
||||
else
|
||||
install -m 644 ${B}/${SPL_BINARY} ${D}/boot/${SPL_IMAGE}
|
||||
ln -sf ${SPL_IMAGE} ${D}/boot/${SPL_BINARYFILE}
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -n "${UBOOT_ENV}" ]
|
||||
then
|
||||
install -m 644 ${WORKDIR}/${UBOOT_ENV_BINARY} ${D}/boot/${UBOOT_ENV_IMAGE}
|
||||
ln -sf ${UBOOT_ENV_IMAGE} ${D}/boot/${UBOOT_ENV_BINARY}
|
||||
fi
|
||||
|
||||
if [ "${UBOOT_EXTLINUX}" = "1" ]
|
||||
then
|
||||
install -Dm 0644 ${UBOOT_EXTLINUX_CONFIG} ${D}/${UBOOT_EXTLINUX_INSTALL_DIR}/${UBOOT_EXTLINUX_CONF_NAME}
|
||||
fi
|
||||
}
|
||||
|
||||
PACKAGE_BEFORE_PN += "${PN}-env ${PN}-extlinux"
|
||||
|
||||
RPROVIDES:${PN}-env += "u-boot-default-env"
|
||||
ALLOW_EMPTY:${PN}-env = "1"
|
||||
FILES:${PN}-env = " \
|
||||
${@ '${sysconfdir}/${UBOOT_INITIAL_ENV}*' if d.getVar('UBOOT_INITIAL_ENV') else ''} \
|
||||
${sysconfdir}/fw_env.config \
|
||||
"
|
||||
|
||||
FILES:${PN}-extlinux = "${UBOOT_EXTLINUX_INSTALL_DIR}/${UBOOT_EXTLINUX_CONF_NAME}"
|
||||
RDEPENDS:${PN} += "${@bb.utils.contains('UBOOT_EXTLINUX', '1', '${PN}-extlinux', '', d)}"
|
||||
|
||||
SYSROOT_DIRS += "/boot"
|
||||
FILES:${PN} = "/boot ${datadir}"
|
||||
RDEPENDS:${PN} += "${PN}-env"
|
||||
|
||||
do_deploy () {
|
||||
if [ -n "${UBOOT_CONFIG}" ]
|
||||
then
|
||||
for config in ${UBOOT_MACHINE}; do
|
||||
i=$(expr $i + 1);
|
||||
for type in ${UBOOT_CONFIG}; do
|
||||
j=$(expr $j + 1);
|
||||
if [ $j -eq $i ]
|
||||
then
|
||||
install -D -m 644 ${B}/${config}/${UBOOT_BINARYNAME}-${type}.${UBOOT_SUFFIX} ${DEPLOYDIR}/${UBOOT_BINARYNAME}-${type}-${PV}-${PR}.${UBOOT_SUFFIX}
|
||||
cd ${DEPLOYDIR}
|
||||
ln -sf ${UBOOT_BINARYNAME}-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${UBOOT_SYMLINK}-${type}
|
||||
ln -sf ${UBOOT_BINARYNAME}-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${UBOOT_SYMLINK}
|
||||
ln -sf ${UBOOT_BINARYNAME}-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${UBOOT_BINARY}-${type}
|
||||
ln -sf ${UBOOT_BINARYNAME}-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${UBOOT_BINARY}
|
||||
|
||||
# Deploy the uboot-initial-env
|
||||
if [ -n "${UBOOT_INITIAL_ENV}" ]; then
|
||||
install -D -m 644 ${B}/${config}/u-boot-initial-env-${type} ${DEPLOYDIR}/${UBOOT_INITIAL_ENV}-${MACHINE}-${type}-${PV}-${PR}
|
||||
cd ${DEPLOYDIR}
|
||||
ln -sf ${UBOOT_INITIAL_ENV}-${MACHINE}-${type}-${PV}-${PR} ${UBOOT_INITIAL_ENV}-${MACHINE}-${type}
|
||||
ln -sf ${UBOOT_INITIAL_ENV}-${MACHINE}-${type}-${PV}-${PR} ${UBOOT_INITIAL_ENV}-${type}
|
||||
fi
|
||||
fi
|
||||
done
|
||||
unset j
|
||||
done
|
||||
unset i
|
||||
else
|
||||
install -D -m 644 ${B}/${UBOOT_BINARY} ${DEPLOYDIR}/${UBOOT_IMAGE}
|
||||
|
||||
cd ${DEPLOYDIR}
|
||||
rm -f ${UBOOT_BINARY} ${UBOOT_SYMLINK}
|
||||
ln -sf ${UBOOT_IMAGE} ${UBOOT_SYMLINK}
|
||||
ln -sf ${UBOOT_IMAGE} ${UBOOT_BINARY}
|
||||
|
||||
# Deploy the uboot-initial-env
|
||||
if [ -n "${UBOOT_INITIAL_ENV}" ]; then
|
||||
install -D -m 644 ${B}/u-boot-initial-env ${DEPLOYDIR}/${UBOOT_INITIAL_ENV}-${MACHINE}-${PV}-${PR}
|
||||
cd ${DEPLOYDIR}
|
||||
ln -sf ${UBOOT_INITIAL_ENV}-${MACHINE}-${PV}-${PR} ${UBOOT_INITIAL_ENV}-${MACHINE}
|
||||
ln -sf ${UBOOT_INITIAL_ENV}-${MACHINE}-${PV}-${PR} ${UBOOT_INITIAL_ENV}
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -e ${WORKDIR}/fw_env.config ] ; then
|
||||
install -D -m 644 ${WORKDIR}/fw_env.config ${DEPLOYDIR}/fw_env.config-${MACHINE}-${PV}-${PR}
|
||||
cd ${DEPLOYDIR}
|
||||
ln -sf fw_env.config-${MACHINE}-${PV}-${PR} fw_env.config-${MACHINE}
|
||||
ln -sf fw_env.config-${MACHINE}-${PV}-${PR} fw_env.config
|
||||
fi
|
||||
|
||||
if [ -n "${UBOOT_ELF}" ]
|
||||
then
|
||||
if [ -n "${UBOOT_CONFIG}" ]
|
||||
then
|
||||
for config in ${UBOOT_MACHINE}; do
|
||||
i=$(expr $i + 1);
|
||||
for type in ${UBOOT_CONFIG}; do
|
||||
j=$(expr $j + 1);
|
||||
if [ $j -eq $i ]
|
||||
then
|
||||
install -m 644 ${B}/${config}/${UBOOT_ELF} ${DEPLOYDIR}/u-boot-${type}-${PV}-${PR}.${UBOOT_ELF_SUFFIX}
|
||||
ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_ELF_SUFFIX} ${DEPLOYDIR}/${UBOOT_ELF_BINARY}-${type}
|
||||
ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_ELF_SUFFIX} ${DEPLOYDIR}/${UBOOT_ELF_BINARY}
|
||||
ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_ELF_SUFFIX} ${DEPLOYDIR}/${UBOOT_ELF_SYMLINK}-${type}
|
||||
ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_ELF_SUFFIX} ${DEPLOYDIR}/${UBOOT_ELF_SYMLINK}
|
||||
fi
|
||||
done
|
||||
unset j
|
||||
done
|
||||
unset i
|
||||
else
|
||||
install -m 644 ${B}/${UBOOT_ELF} ${DEPLOYDIR}/${UBOOT_ELF_IMAGE}
|
||||
ln -sf ${UBOOT_ELF_IMAGE} ${DEPLOYDIR}/${UBOOT_ELF_BINARY}
|
||||
ln -sf ${UBOOT_ELF_IMAGE} ${DEPLOYDIR}/${UBOOT_ELF_SYMLINK}
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
if [ -n "${SPL_BINARY}" ]
|
||||
then
|
||||
if [ -n "${UBOOT_CONFIG}" ]
|
||||
then
|
||||
for config in ${UBOOT_MACHINE}; do
|
||||
i=$(expr $i + 1);
|
||||
for type in ${UBOOT_CONFIG}; do
|
||||
j=$(expr $j + 1);
|
||||
if [ $j -eq $i ]
|
||||
then
|
||||
install -m 644 ${B}/${config}/${SPL_BINARY} ${DEPLOYDIR}/${SPL_BINARYNAME}-${type}-${PV}-${PR}${SPL_DELIMITER}${SPL_SUFFIX}
|
||||
rm -f ${DEPLOYDIR}/${SPL_BINARYFILE} ${DEPLOYDIR}/${SPL_SYMLINK}
|
||||
ln -sf ${SPL_BINARYNAME}-${type}-${PV}-${PR}${SPL_DELIMITER}${SPL_SUFFIX} ${DEPLOYDIR}/${SPL_BINARYFILE}-${type}
|
||||
ln -sf ${SPL_BINARYNAME}-${type}-${PV}-${PR}${SPL_DELIMITER}${SPL_SUFFIX} ${DEPLOYDIR}/${SPL_BINARYFILE}
|
||||
ln -sf ${SPL_BINARYNAME}-${type}-${PV}-${PR}${SPL_DELIMITER}${SPL_SUFFIX} ${DEPLOYDIR}/${SPL_SYMLINK}-${type}
|
||||
ln -sf ${SPL_BINARYNAME}-${type}-${PV}-${PR}${SPL_DELIMITER}${SPL_SUFFIX} ${DEPLOYDIR}/${SPL_SYMLINK}
|
||||
fi
|
||||
done
|
||||
unset j
|
||||
done
|
||||
unset i
|
||||
else
|
||||
install -m 644 ${B}/${SPL_BINARY} ${DEPLOYDIR}/${SPL_IMAGE}
|
||||
ln -sf ${SPL_IMAGE} ${DEPLOYDIR}/${SPL_BINARYNAME}
|
||||
ln -sf ${SPL_IMAGE} ${DEPLOYDIR}/${SPL_SYMLINK}
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -n "${UBOOT_ENV}" ]
|
||||
then
|
||||
install -m 644 ${WORKDIR}/${UBOOT_ENV_BINARY} ${DEPLOYDIR}/${UBOOT_ENV_IMAGE}
|
||||
ln -sf ${UBOOT_ENV_IMAGE} ${DEPLOYDIR}/${UBOOT_ENV_BINARY}
|
||||
ln -sf ${UBOOT_ENV_IMAGE} ${DEPLOYDIR}/${UBOOT_ENV_SYMLINK}
|
||||
fi
|
||||
|
||||
if [ "${UBOOT_EXTLINUX}" = "1" ]
|
||||
then
|
||||
install -m 644 ${UBOOT_EXTLINUX_CONFIG} ${DEPLOYDIR}/${UBOOT_EXTLINUX_SYMLINK}
|
||||
ln -sf ${UBOOT_EXTLINUX_SYMLINK} ${DEPLOYDIR}/${UBOOT_EXTLINUX_CONF_NAME}-${MACHINE}
|
||||
ln -sf ${UBOOT_EXTLINUX_SYMLINK} ${DEPLOYDIR}/${UBOOT_EXTLINUX_CONF_NAME}
|
||||
fi
|
||||
|
||||
if [ -n "${UBOOT_DTB}" ]
|
||||
then
|
||||
install -m 644 ${B}/arch/${UBOOT_ARCH_DIR}/dts/${UBOOT_DTB_BINARY} ${DEPLOYDIR}/
|
||||
fi
|
||||
}
|
||||
|
||||
addtask deploy before do_build after do_compile
|
||||
@@ -0,0 +1,5 @@
|
||||
require u-boot-common.inc
|
||||
require u-boot.inc
|
||||
|
||||
DEPENDS += "bc-native dtc-native"
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
SUMMARY = "Initscript for enabling USB gadget Ethernet"
|
||||
DESCRIPTION = "This module allows ethernet emulation over USB, allowing for \
|
||||
all sorts of nifty things like SSH and NFS in one go plus charging over the \
|
||||
same wire, at higher speeds than most Wifi connections."
|
||||
HOMEPAGE = "http://linux-sunxi.org/USB_Gadget/Ethernet"
|
||||
|
||||
LICENSE = "GPL-2.0-only"
|
||||
LIC_FILES_CHKSUM = "file://${WORKDIR}/COPYING.GPL;md5=751419260aa954499f7abaabaa882bbe"
|
||||
|
||||
PR = "r3"
|
||||
|
||||
SRC_URI = "file://usb-gether \
|
||||
file://COPYING.GPL"
|
||||
S = "${WORKDIR}"
|
||||
|
||||
do_install() {
|
||||
install -d ${D}${sysconfdir}
|
||||
install -d ${D}${sysconfdir}/init.d
|
||||
install usb-gether ${D}${sysconfdir}/init.d
|
||||
}
|
||||
|
||||
inherit update-rc.d allarch
|
||||
|
||||
INITSCRIPT_NAME = "usb-gether"
|
||||
INITSCRIPT_PARAMS = "start 99 5 2 . stop 20 0 1 6 ."
|
||||
@@ -0,0 +1,339 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Lesser General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License.
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
#! /bin/sh
|
||||
#
|
||||
# usb-ether Start up the gadget usb ethernet interface.
|
||||
#
|
||||
|
||||
case "$1" in
|
||||
start|"")
|
||||
test "$VERBOSE" != no && echo "Initializing g_ether gadget..."
|
||||
modprobe g_ether
|
||||
ifup usb0
|
||||
;;
|
||||
stop)
|
||||
test "$VERBOSE" != no && echo "Disabling g_ether..."
|
||||
ifdown usb0
|
||||
rmmod g_ether
|
||||
;;
|
||||
*)
|
||||
echo "Usage: usb-ether {start|stop}" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
@@ -0,0 +1,32 @@
|
||||
SUMMARY = "Host side USB console utilities"
|
||||
DESCRIPTION = "Contains the lsusb utility for inspecting the devices connected to the USB bus."
|
||||
HOMEPAGE = "http://www.linux-usb.org"
|
||||
SECTION = "base"
|
||||
|
||||
LICENSE = "GPL-2.0-or-later & (GPL-2.0-only | GPL-3.0-only)"
|
||||
# License files went missing in 010, when 011 is released add LICENSES/* back
|
||||
LIC_FILES_CHKSUM = "file://lsusb.c;endline=1;md5=7226e442a172bcf25807246d7ef1eba1 \
|
||||
file://lsusb.py.in;beginline=2;endline=2;md5=c443ada211d701156e42ea36d41625b3 \
|
||||
"
|
||||
|
||||
DEPENDS = "libusb1 virtual/libiconv udev"
|
||||
|
||||
SRC_URI = "${KERNELORG_MIRROR}/linux/utils/usb/usbutils/usbutils-${PV}.tar.gz \
|
||||
"
|
||||
SRC_URI[sha256sum] = "2b8140664578f39c3f6f0166a1b950f8655304e63e3d7f89899acb99bc5cb8e7"
|
||||
|
||||
inherit autotools pkgconfig update-alternatives
|
||||
|
||||
ALTERNATIVE:${PN} = "lsusb"
|
||||
ALTERNATIVE_PRIORITY = "100"
|
||||
|
||||
# The binaries are mostly GPL-2.0-or-later apart from lsusb.py which is
|
||||
# GPL-2.0-only or GPL-3.0-only.
|
||||
LICENSE:${PN} = "GPL-2.0-or-later"
|
||||
LICENSE:${PN}-python = "GPL-2.0-only | GPL-3.0-only"
|
||||
|
||||
RRECOMMENDS:${PN} = "udev-hwdb"
|
||||
|
||||
PACKAGE_BEFORE_PN =+ "${PN}-python"
|
||||
FILES:${PN}-python += "${bindir}/lsusb.py"
|
||||
RDEPENDS:${PN}-python = "python3-core"
|
||||
@@ -0,0 +1,34 @@
|
||||
From 8eda59654fd31416164c78f6068715b01767ed4e Mon Sep 17 00:00:00 2001
|
||||
From: Serhey Popovych <serhe.popovych@gmail.com>
|
||||
Date: Wed, 31 Oct 2018 07:31:47 -0400
|
||||
Subject: v86d: Support for cross compilation
|
||||
|
||||
It is common to build on one system for another (e.g. on IBM Power
|
||||
machine for Intel x86) where HOST_ARCH (uname -m) != TARGET_ARCH.
|
||||
|
||||
Take TARGET_ARCH from environment if it is given, otherwise fall back
|
||||
to `uname -m`.
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Serhey Popovych <serhe.popovych@gmail.com>
|
||||
---
|
||||
configure | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index cbbd6b3..046aa99 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -23,7 +23,8 @@ copt_x86emu_type="bool"
|
||||
copt_x86emu_def=auto
|
||||
copt_x86emu_test()
|
||||
{
|
||||
- local m=`uname -m`
|
||||
+ local m="${TARGET_ARCH:-$(uname -m)}"
|
||||
+
|
||||
if [ "$m" = "i686" -o "$m" = "i586" -o "$m" = "i486" -o "$m" = "i386" ]; then
|
||||
echo "n";
|
||||
elif [ "$m" = "x86_64" ]; then
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,33 @@
|
||||
Fix cross link using host-cross ar
|
||||
|
||||
If building on 32bit host and creating 64bit libraries, the target
|
||||
package builds should not invoke the 32bit hosts's ar. Specifically
|
||||
you will get an error message like:
|
||||
|
||||
x86_64-linux-gcc -m64 --sysroot=/opt/qemux86-64/tmp/sysroots/qemux86-64 -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -Llibs/x86emu v86_x86emu.o v86_mem.o v86_common.o v86.o -lx86emu -o v86d
|
||||
libs/x86emu/libx86emu.a: could not read symbols: Archive has no index; run ranlib to add one
|
||||
collect2: error: ld returned 1 exit status
|
||||
|
||||
Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
|
||||
|
||||
Upstream-Status: Pending
|
||||
|
||||
---
|
||||
libs/x86emu/Makefile | 6 +++++-
|
||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/libs/x86emu/Makefile
|
||||
+++ b/libs/x86emu/Makefile
|
||||
@@ -1,7 +1,11 @@
|
||||
OBJS = decode.o fpu.o ops.o ops2.o prim_ops.o sys.o
|
||||
|
||||
+ifeq ($(AR),)
|
||||
+ AR = ar
|
||||
+endif
|
||||
+
|
||||
libx86emu.a: $(OBJS)
|
||||
- ar rv $@ $+
|
||||
+ $(AR) rv $@ $+
|
||||
|
||||
%.o: %.c
|
||||
$(CC) -c $(CFLAGS) -o $@ $<
|
||||
@@ -0,0 +1,35 @@
|
||||
SUMMARY = "User support binary for the uvesafb kernel module"
|
||||
HOMEPAGE = "https://tracker.debian.org/pkg/v86d"
|
||||
DESCRIPTION = "v86d provides a backend for kernel drivers that need to execute x86 BIOS code. The code is executed in a controlled environment and the results are passed back to the kernel via the netlink interface."
|
||||
|
||||
# the copyright info is at the bottom of README, expect break
|
||||
LICENSE = "GPL-2.0-only"
|
||||
LIC_FILES_CHKSUM = "file://README;md5=94ac1971e4f2309dc322d598e7b1f7dd"
|
||||
|
||||
RRECOMMENDS:${PN} = "kernel-module-uvesafb"
|
||||
PR = "r2"
|
||||
|
||||
SRC_URI = "http://snapshot.debian.org/archive/debian/20110427T035506Z/pool/main/v/${BPN}/${BPN}_${PV}.orig.tar.gz \
|
||||
file://Update-x86emu-from-X.org.patch \
|
||||
file://ar-from-env.patch \
|
||||
file://Support-for-cross-compilation.patch \
|
||||
"
|
||||
|
||||
SRC_URI[md5sum] = "889686ec8424468fe0d205742e77a4c2"
|
||||
SRC_URI[sha256sum] = "93575c82e4307d8c4c370ec6b767f5cf87e527b2378146d652a6d8e25d5bdbc5"
|
||||
|
||||
PACKAGE_ARCH = "${MACHINE_ARCH}"
|
||||
COMPATIBLE_HOST = '(i.86|x86_64).*-linux'
|
||||
|
||||
do_configure () {
|
||||
TARGET_ARCH="${TARGET_ARCH}" ./configure --with-x86emu
|
||||
}
|
||||
|
||||
do_compile () {
|
||||
KDIR="${STAGING_DIR_HOST}/usr" make
|
||||
}
|
||||
|
||||
do_install () {
|
||||
install -d ${D}${base_sbindir}
|
||||
install v86d ${D}${base_sbindir}/
|
||||
}
|
||||
Reference in New Issue
Block a user