Merge pull request #46 from dm0-/sync
Merge with the upstream 2.02 release branch
This commit is contained in:
commit
6782f6d431
63 changed files with 884 additions and 310 deletions
7
INSTALL
7
INSTALL
|
@ -15,15 +15,14 @@ configuring the GRUB.
|
||||||
Note: older versions may work but support is limited
|
Note: older versions may work but support is limited
|
||||||
|
|
||||||
Experimental support for clang 3.3 or later (results in much bigger binaries)
|
Experimental support for clang 3.3 or later (results in much bigger binaries)
|
||||||
for i386, x86_64, arm (except thumb), arm64, mips(el), powerpc, sparc64
|
for i386, x86_64, arm (including thumb), arm64, mips(el), powerpc, sparc64
|
||||||
Note: clang 3.2 or later works for i386 and x86_64 targets but results in
|
Note: clang 3.2 or later works for i386 and x86_64 targets but results in
|
||||||
much bigger binaries.
|
much bigger binaries.
|
||||||
earlier versions not tested
|
earlier versions not tested
|
||||||
Note: clang 3.2 or later works for arm
|
Note: clang 3.2 or later works for arm
|
||||||
None of tested clang versions generated usable thumb code
|
|
||||||
earlier versions not tested
|
earlier versions not tested
|
||||||
Note: clang 3.3 or later works for arm64
|
Note: clang on arm64 is not supported due to
|
||||||
earlier versions have no arm64 support
|
https://llvm.org/bugs/show_bug.cgi?id=26030
|
||||||
Note: clang 3.3 or later works for mips(el)
|
Note: clang 3.3 or later works for mips(el)
|
||||||
earlier versions fail to generate .reginfo and hence gprel relocations
|
earlier versions fail to generate .reginfo and hence gprel relocations
|
||||||
fail.
|
fail.
|
||||||
|
|
65
Makefile.am
65
Makefile.am
|
@ -145,109 +145,116 @@ if COND_real_platform
|
||||||
|
|
||||||
if COND_i386_coreboot
|
if COND_i386_coreboot
|
||||||
QEMU32=qemu-system-i386
|
QEMU32=qemu-system-i386
|
||||||
|
MINIMUM_CPU_LINUX=pentium2
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if COND_i386_multiboot
|
if COND_i386_multiboot
|
||||||
QEMU32=qemu-system-i386
|
QEMU32=qemu-system-i386
|
||||||
|
MINIMUM_CPU_LINUX=pentium2
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if COND_i386_ieee1275
|
if COND_i386_ieee1275
|
||||||
QEMU32=qemu-system-i386
|
QEMU32=qemu-system-i386
|
||||||
|
MINIMUM_CPU_LINUX=pentium2
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if COND_i386_qemu
|
if COND_i386_qemu
|
||||||
QEMU32=qemu-system-i386
|
QEMU32=qemu-system-i386
|
||||||
|
MINIMUM_CPU_LINUX=pentium2
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if COND_i386_pc
|
if COND_i386_pc
|
||||||
QEMU32=qemu-system-i386
|
QEMU32=qemu-system-i386
|
||||||
|
MINIMUM_CPU_LINUX=pentium2
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if COND_i386_efi
|
if COND_i386_efi
|
||||||
QEMU32=qemu-system-i386
|
QEMU32=qemu-system-i386
|
||||||
|
MINIMUM_CPU_LINUX=pentium2
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if COND_x86_64_efi
|
if COND_x86_64_efi
|
||||||
QEMU32=qemu-system-x86_64
|
QEMU32=qemu-system-x86_64
|
||||||
|
MINIMUM_CPU_LINUX=core2duo
|
||||||
endif
|
endif
|
||||||
|
|
||||||
linux.init.x86_64: $(srcdir)/grub-core/tests/boot/linux.init-x86_64.S $(srcdir)/grub-core/tests/boot/qemu-shutdown-x86.S
|
linux.init.x86_64: $(srcdir)/grub-core/tests/boot/linux.init-x86_64.S $(srcdir)/grub-core/tests/boot/qemu-shutdown-x86.S
|
||||||
$(TARGET_CC) -o $@ $< -m64 -nostdlib -nostdinc -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\"
|
$(TARGET_CC) -o $@ $< -static -m64 -nostdlib -nostdinc -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\"
|
||||||
|
|
||||||
linux.init.i386: $(srcdir)/grub-core/tests/boot/linux.init-i386.S $(srcdir)/grub-core/tests/boot/qemu-shutdown-x86.S
|
linux.init.i386: $(srcdir)/grub-core/tests/boot/linux.init-i386.S $(srcdir)/grub-core/tests/boot/qemu-shutdown-x86.S
|
||||||
$(TARGET_CC) -o $@ $< -m32 -nostdlib -nostdinc -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\"
|
$(TARGET_CC) -o $@ $< -static -m32 -nostdlib -nostdinc -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\"
|
||||||
|
|
||||||
linux.init.mips: $(srcdir)/grub-core/tests/boot/linux.init-mips.S
|
linux.init.mips: $(srcdir)/grub-core/tests/boot/linux.init-mips.S
|
||||||
$(TARGET_CC) -o $@ $< -nostdlib -nostdinc -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\"
|
$(TARGET_CC) -o $@ $< -static -nostdlib -nostdinc -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\"
|
||||||
|
|
||||||
linux.init.ppc: $(srcdir)/grub-core/tests/boot/linux.init-ppc.S
|
linux.init.ppc: $(srcdir)/grub-core/tests/boot/linux.init-ppc.S
|
||||||
$(TARGET_CC) -o $@ $< -nostdlib -nostdinc -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\"
|
$(TARGET_CC) -o $@ $< -static -nostdlib -nostdinc -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\"
|
||||||
|
|
||||||
linux.init.mipsel: $(srcdir)/grub-core/tests/boot/linux.init-mips.S
|
linux.init.mipsel: $(srcdir)/grub-core/tests/boot/linux.init-mips.S
|
||||||
$(TARGET_CC) -o $@ $< -nostdlib -nostdinc -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\"
|
$(TARGET_CC) -o $@ $< -static -nostdlib -nostdinc -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\"
|
||||||
|
|
||||||
linux.init.loongson: $(srcdir)/grub-core/tests/boot/linux.init-mips.S
|
linux.init.loongson: $(srcdir)/grub-core/tests/boot/linux.init-mips.S
|
||||||
$(TARGET_CC) -o $@ $< -nostdlib -nostdinc -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\" -DREBOOT=1
|
$(TARGET_CC) -o $@ $< -static -nostdlib -nostdinc -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\" -DREBOOT=1
|
||||||
|
|
||||||
multiboot.elf: $(srcdir)/grub-core/tests/boot/kernel-i386.S $(srcdir)/grub-core/tests/boot/qemu-shutdown-x86.S
|
multiboot.elf: $(srcdir)/grub-core/tests/boot/kernel-i386.S $(srcdir)/grub-core/tests/boot/qemu-shutdown-x86.S
|
||||||
$(TARGET_CC) -o $@ $< -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\" -ffreestanding -nostdlib -nostdinc -DTARGET_MULTIBOOT=1 -Wl,--build-id=none -Wl,-N -Wl,-Ttext,0x100000 -m32 -I$(srcdir)/include
|
$(TARGET_CC) -o $@ $< -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\" -static -ffreestanding -nostdlib -nostdinc -DTARGET_MULTIBOOT=1 -Wl,--build-id=none -Wl,-N -Wl,-Ttext,0x100000 -m32 -I$(srcdir)/include
|
||||||
|
|
||||||
kfreebsd.elf: $(srcdir)/grub-core/tests/boot/kernel-i386.S $(srcdir)/grub-core/tests/boot/qemu-shutdown-x86.S
|
kfreebsd.elf: $(srcdir)/grub-core/tests/boot/kernel-i386.S $(srcdir)/grub-core/tests/boot/qemu-shutdown-x86.S
|
||||||
$(TARGET_CC) -o $@ $< -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\" -ffreestanding -nostdlib -nostdinc -Wl,--build-id=none -Wl,-N -Wl,-Ttext,0x100000 -m32 -I$(srcdir)/include
|
$(TARGET_CC) -o $@ $< -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\" -static -ffreestanding -nostdlib -nostdinc -Wl,--build-id=none -Wl,-N -Wl,-Ttext,0x100000 -m32 -I$(srcdir)/include
|
||||||
|
|
||||||
kfreebsd.aout: kfreebsd.elf
|
kfreebsd.aout: kfreebsd.elf
|
||||||
$(TARGET_OBJCOPY) -O a.out-i386-linux $< $@ -R .note.gnu.build-id -R .note.gnu.gold-version
|
$(TARGET_OBJCOPY) -O a.out-i386-linux $< $@ -j .text
|
||||||
|
|
||||||
pc-chainloader.elf: $(srcdir)/grub-core/tests/boot/kernel-8086.S $(srcdir)/grub-core/tests/boot/qemu-shutdown-x86.S
|
pc-chainloader.elf: $(srcdir)/grub-core/tests/boot/kernel-8086.S $(srcdir)/grub-core/tests/boot/qemu-shutdown-x86.S
|
||||||
$(TARGET_CC) -o $@ $< -DTARGET_CHAINLOADER=1 -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\" -ffreestanding -nostdlib -nostdinc -Wl,--build-id=none -Wl,-N -Wl,-Ttext,0x7c00 -m32
|
$(TARGET_CC) -o $@ $< -static -DTARGET_CHAINLOADER=1 -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\" -ffreestanding -nostdlib -nostdinc -Wl,--build-id=none -Wl,-N -Wl,-Ttext,0x7c00 -m32
|
||||||
|
|
||||||
pc-chainloader.bin: pc-chainloader.elf
|
pc-chainloader.bin: pc-chainloader.elf
|
||||||
$(TARGET_OBJCOPY) -O binary --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .reginfo -R .rel.dyn -R .note.gnu.gold-version $< $@;
|
$(TARGET_OBJCOPY) -O binary --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .reginfo -R .rel.dyn -R .note.gnu.gold-version $< $@;
|
||||||
|
|
||||||
ntldr.elf: $(srcdir)/grub-core/tests/boot/kernel-8086.S $(srcdir)/grub-core/tests/boot/qemu-shutdown-x86.S
|
ntldr.elf: $(srcdir)/grub-core/tests/boot/kernel-8086.S $(srcdir)/grub-core/tests/boot/qemu-shutdown-x86.S
|
||||||
$(TARGET_CC) -o $@ $< -DTARGET_NTLDR=1 -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\" -ffreestanding -nostdlib -nostdinc -Wl,--build-id=none -Wl,-N -Wl,-Ttext,0 -m32
|
$(TARGET_CC) -o $@ $< -DTARGET_NTLDR=1 -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\" -static -ffreestanding -nostdlib -nostdinc -Wl,--build-id=none -Wl,-N -Wl,-Ttext,0 -m32
|
||||||
|
|
||||||
ntldr.bin: ntldr.elf
|
ntldr.bin: ntldr.elf
|
||||||
$(TARGET_OBJCOPY) -O binary --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .reginfo -R .rel.dyn -R .note.gnu.gold-version $< $@;
|
$(TARGET_OBJCOPY) -O binary --strip-unneeded -j .text $< $@;
|
||||||
|
|
||||||
multiboot2.elf: $(srcdir)/grub-core/tests/boot/kernel-i386.S $(srcdir)/grub-core/tests/boot/qemu-shutdown-x86.S
|
multiboot2.elf: $(srcdir)/grub-core/tests/boot/kernel-i386.S $(srcdir)/grub-core/tests/boot/qemu-shutdown-x86.S
|
||||||
$(TARGET_CC) -o $@ $< -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\" -ffreestanding -nostdlib -nostdinc -Wl,--build-id=none -Wl,-N -Wl,-Ttext,0x100000 -m32 -I$(srcdir)/include -DTARGET_MULTIBOOT2=1
|
$(TARGET_CC) -static -o $@ $< -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\" -ffreestanding -nostdlib -nostdinc -Wl,--build-id=none -Wl,-N -Wl,-Ttext,0x100000 -m32 -I$(srcdir)/include -DTARGET_MULTIBOOT2=1
|
||||||
|
|
||||||
kfreebsd.init.x86_64: $(srcdir)/grub-core/tests/boot/kfreebsd.init-x86_64.S $(srcdir)/grub-core/tests/boot/qemu-shutdown-x86.S
|
kfreebsd.init.x86_64: $(srcdir)/grub-core/tests/boot/kfreebsd.init-x86_64.S $(srcdir)/grub-core/tests/boot/qemu-shutdown-x86.S
|
||||||
$(TARGET_CC) -o $@ $< -m64 -nostdlib -nostdinc -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\" && freebsd-brandelf -t FreeBSD $@
|
$(TARGET_CC) -o $@ $< -m64 -static -nostdlib -nostdinc -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\" && freebsd-brandelf -t FreeBSD $@
|
||||||
|
|
||||||
kfreebsd.init.i386: $(srcdir)/grub-core/tests/boot/kfreebsd.init-i386.S $(srcdir)/grub-core/tests/boot/qemu-shutdown-x86.S
|
kfreebsd.init.i386: $(srcdir)/grub-core/tests/boot/kfreebsd.init-i386.S $(srcdir)/grub-core/tests/boot/qemu-shutdown-x86.S
|
||||||
$(TARGET_CC) -o $@ $< -m32 -nostdlib -nostdinc -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\" && freebsd-brandelf -t FreeBSD $@
|
$(TARGET_CC) -o $@ $< -m32 -static -nostdlib -nostdinc -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\" && freebsd-brandelf -t FreeBSD $@
|
||||||
|
|
||||||
knetbsd.init.i386: $(srcdir)/grub-core/tests/boot/kbsd.init-i386.S $(srcdir)/grub-core/tests/boot/qemu-shutdown-x86.S
|
knetbsd.init.i386: $(srcdir)/grub-core/tests/boot/kbsd.init-i386.S $(srcdir)/grub-core/tests/boot/qemu-shutdown-x86.S
|
||||||
$(TARGET_CC) -o $@ $< -m32 -nostdlib -nostdinc -DTARGET_NETBSD=1 -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\"
|
$(TARGET_CC) -o $@ $< -m32 -static -nostdlib -nostdinc -DTARGET_NETBSD=1 -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\"
|
||||||
|
|
||||||
kopenbsd.init.i386: $(srcdir)/grub-core/tests/boot/kbsd.init-i386.S $(srcdir)/grub-core/tests/boot/qemu-shutdown-x86.S
|
kopenbsd.init.i386: $(srcdir)/grub-core/tests/boot/kbsd.init-i386.S $(srcdir)/grub-core/tests/boot/qemu-shutdown-x86.S
|
||||||
$(TARGET_CC) -o $@ $< -m32 -nostdlib -nostdinc -DTARGET_OPENBSD=1 -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\"
|
$(TARGET_CC) -o $@ $< -m32 -static -nostdlib -nostdinc -DTARGET_OPENBSD=1 -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\"
|
||||||
|
|
||||||
knetbsd.init.x86_64: $(srcdir)/grub-core/tests/boot/kbsd.init-x86_64.S $(srcdir)/grub-core/tests/boot/qemu-shutdown-x86.S
|
knetbsd.init.x86_64: $(srcdir)/grub-core/tests/boot/kbsd.init-x86_64.S $(srcdir)/grub-core/tests/boot/qemu-shutdown-x86.S
|
||||||
$(TARGET_CC) -o $@ $< -m64 -DTARGET_NETBSD=1 -nostdlib -nostdinc -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\"
|
$(TARGET_CC) -o $@ $< -m64 -DTARGET_NETBSD=1 -static -nostdlib -nostdinc -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\"
|
||||||
|
|
||||||
kopenbsd.init.x86_64: $(srcdir)/grub-core/tests/boot/kbsd.init-x86_64.S $(srcdir)/grub-core/tests/boot/qemu-shutdown-x86.S
|
kopenbsd.init.x86_64: $(srcdir)/grub-core/tests/boot/kbsd.init-x86_64.S $(srcdir)/grub-core/tests/boot/qemu-shutdown-x86.S
|
||||||
$(TARGET_CC) -o $@ $< -m64 -DTARGET_OPENBSD=1 -nostdlib -nostdinc -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\"
|
$(TARGET_CC) -o $@ $< -m64 -DTARGET_OPENBSD=1 -static -nostdlib -nostdinc -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\"
|
||||||
|
|
||||||
linux-initramfs.mips: linux.init.mips Makefile
|
linux-initramfs.mips: linux.init.mips Makefile
|
||||||
TDIR=`mktemp -d "$${TMPDIR:-/tmp}/tmp.XXXXXXXXXX"` && cp $< $$TDIR/init && (cd $$TDIR && echo ./init | cpio --quiet --dereference -o -H newc) | gzip > $@ && rm -rf $$TDIR
|
TDIR=`mktemp -d "$${TMPDIR:-/tmp}/tmp.XXXXXXXXXX"` && cp $< $$TDIR/init && (cd $$TDIR && echo ./init | cpio -R 0:0 --quiet --dereference -o -H newc) | gzip > $@ && rm -rf $$TDIR
|
||||||
|
|
||||||
linux-initramfs.ppc: linux.init.ppc Makefile
|
linux-initramfs.ppc: linux.init.ppc Makefile
|
||||||
TDIR=`mktemp -d "$${TMPDIR:-/tmp}/tmp.XXXXXXXXXX"` && cp $< $$TDIR/init && (cd $$TDIR && echo ./init | cpio --quiet --dereference -o -H newc) | gzip > $@ && rm -rf $$TDIR
|
TDIR=`mktemp -d "$${TMPDIR:-/tmp}/tmp.XXXXXXXXXX"` && cp $< $$TDIR/init && (cd $$TDIR && echo ./init | cpio -R 0:0 --quiet --dereference -o -H newc) | gzip > $@ && rm -rf $$TDIR
|
||||||
|
|
||||||
linux-initramfs.mipsel: linux.init.mipsel Makefile
|
linux-initramfs.mipsel: linux.init.mipsel Makefile
|
||||||
TDIR=`mktemp -d "$${TMPDIR:-/tmp}/tmp.XXXXXXXXXX"` && cp $< $$TDIR/init && (cd $$TDIR && echo ./init | cpio --quiet --dereference -o -H newc) | gzip > $@ && rm -rf $$TDIR
|
TDIR=`mktemp -d "$${TMPDIR:-/tmp}/tmp.XXXXXXXXXX"` && cp $< $$TDIR/init && (cd $$TDIR && echo ./init | cpio -R 0:0 --quiet --dereference -o -H newc) | gzip > $@ && rm -rf $$TDIR
|
||||||
|
|
||||||
linux-initramfs.loongson: linux.init.loongson Makefile
|
linux-initramfs.loongson: linux.init.loongson Makefile
|
||||||
TDIR=`mktemp -d "$${TMPDIR:-/tmp}/tmp.XXXXXXXXXX"` && cp $< $$TDIR/init && (cd $$TDIR && echo ./init | cpio --quiet --dereference -o -H newc) | gzip > $@ && rm -rf $$TDIR
|
TDIR=`mktemp -d "$${TMPDIR:-/tmp}/tmp.XXXXXXXXXX"` && cp $< $$TDIR/init && (cd $$TDIR && echo ./init | cpio -R 0:0 --quiet --dereference -o -H newc) | gzip > $@ && rm -rf $$TDIR
|
||||||
|
|
||||||
linux-initramfs.i386: linux.init.i386 Makefile
|
linux-initramfs.i386: linux.init.i386 Makefile
|
||||||
TDIR=`mktemp -d "$${TMPDIR:-/tmp}/tmp.XXXXXXXXXX"` && cp $< $$TDIR/init && (cd $$TDIR && echo ./init | cpio --quiet --dereference -o -H newc) | gzip > $@ && rm -rf $$TDIR
|
TDIR=`mktemp -d "$${TMPDIR:-/tmp}/tmp.XXXXXXXXXX"` && cp $< $$TDIR/init && (cd $$TDIR && echo ./init | cpio -R 0:0 --quiet --dereference -o -H newc) | gzip > $@ && rm -rf $$TDIR
|
||||||
|
|
||||||
linux-initramfs.x86_64: linux.init.x86_64 Makefile
|
linux-initramfs.x86_64: linux.init.x86_64 Makefile
|
||||||
TDIR=`mktemp -d "$${TMPDIR:-/tmp}/tmp.XXXXXXXXXX"` && cp $< $$TDIR/init && (cd $$TDIR && echo ./init | cpio --quiet --dereference -o -H newc) | gzip > $@ && rm -rf $$TDIR
|
TDIR=`mktemp -d "$${TMPDIR:-/tmp}/tmp.XXXXXXXXXX"` && cp $< $$TDIR/init && (cd $$TDIR && echo ./init | cpio -R 0:0 --quiet --dereference -o -H newc) | gzip > $@ && rm -rf $$TDIR
|
||||||
|
|
||||||
kfreebsd-mfsroot.i386.img: kfreebsd.init.i386 Makefile
|
kfreebsd-mfsroot.i386.img: kfreebsd.init.i386 Makefile
|
||||||
TDIR=`mktemp -d "$${TMPDIR:-/tmp}/tmp.XXXXXXXXXX"` && mkdir $$TDIR/dev && mkdir $$TDIR/sbin && cp $< $$TDIR/sbin/init && makefs -t ffs -s 30m -f 1000 -o minfree=0,version=1 $@ $$TDIR && rm -rf $$TDIR
|
TDIR=`mktemp -d "$${TMPDIR:-/tmp}/tmp.XXXXXXXXXX"` && mkdir $$TDIR/dev && mkdir $$TDIR/sbin && cp $< $$TDIR/sbin/init && makefs -t ffs -s 30m -f 1000 -o minfree=0,version=1 $@ $$TDIR && rm -rf $$TDIR
|
||||||
|
@ -306,7 +313,7 @@ bootcheck-knetbsd-x86_64: knetbsd.miniroot-image.x86_64.gz $(GRUB_PAYLOADS_DIR)/
|
||||||
./grub-shell --timeout=$(BOOTCHECK_TIMEOUT) --qemu=qemu-system-x86_64 --files=/miniroot.gz=knetbsd.miniroot-image.x86_64.gz --files=/knetbsd=$(GRUB_PAYLOADS_DIR)/knetbsd.x86_64 $(srcdir)/grub-core/tests/boot/knetbsd.cfg | grep $(SUCCESSFUL_BOOT_STRING) > /dev/null
|
./grub-shell --timeout=$(BOOTCHECK_TIMEOUT) --qemu=qemu-system-x86_64 --files=/miniroot.gz=knetbsd.miniroot-image.x86_64.gz --files=/knetbsd=$(GRUB_PAYLOADS_DIR)/knetbsd.x86_64 $(srcdir)/grub-core/tests/boot/knetbsd.cfg | grep $(SUCCESSFUL_BOOT_STRING) > /dev/null
|
||||||
|
|
||||||
bootcheck-linux-i386: linux-initramfs.i386 $(GRUB_PAYLOADS_DIR)/linux.i386 $(srcdir)/grub-core/tests/boot/linux.cfg grub-shell
|
bootcheck-linux-i386: linux-initramfs.i386 $(GRUB_PAYLOADS_DIR)/linux.i386 $(srcdir)/grub-core/tests/boot/linux.cfg grub-shell
|
||||||
./grub-shell --timeout=$(BOOTCHECK_TIMEOUT) --qemu=$(QEMU32) --files=/initrd=linux-initramfs.i386 --files=/linux=$(GRUB_PAYLOADS_DIR)/linux.i386 $(srcdir)/grub-core/tests/boot/linux.cfg | grep $(SUCCESSFUL_BOOT_STRING) > /dev/null
|
./grub-shell --timeout=$(BOOTCHECK_TIMEOUT) --qemu=$(QEMU32) --files=/initrd=linux-initramfs.i386 --files=/linux=$(GRUB_PAYLOADS_DIR)/linux.i386 $(srcdir)/grub-core/tests/boot/linux.cfg --qemu-opts="-cpu $(MINIMUM_CPU_LINUX)" | grep $(SUCCESSFUL_BOOT_STRING) > /dev/null
|
||||||
|
|
||||||
bootcheck-linux-x86_64: linux-initramfs.x86_64 $(GRUB_PAYLOADS_DIR)/linux.x86_64 $(srcdir)/grub-core/tests/boot/linux.cfg grub-shell
|
bootcheck-linux-x86_64: linux-initramfs.x86_64 $(GRUB_PAYLOADS_DIR)/linux.x86_64 $(srcdir)/grub-core/tests/boot/linux.cfg grub-shell
|
||||||
./grub-shell --timeout=$(BOOTCHECK_TIMEOUT) --qemu=qemu-system-x86_64 --files=/initrd=linux-initramfs.x86_64 --files=/linux=$(GRUB_PAYLOADS_DIR)/linux.x86_64 $(srcdir)/grub-core/tests/boot/linux.cfg | grep $(SUCCESSFUL_BOOT_STRING) > /dev/null
|
./grub-shell --timeout=$(BOOTCHECK_TIMEOUT) --qemu=qemu-system-x86_64 --files=/initrd=linux-initramfs.x86_64 --files=/linux=$(GRUB_PAYLOADS_DIR)/linux.x86_64 $(srcdir)/grub-core/tests/boot/linux.cfg | grep $(SUCCESSFUL_BOOT_STRING) > /dev/null
|
||||||
|
@ -369,6 +376,12 @@ if COND_i386_coreboot
|
||||||
BOOTCHECKS = bootcheck-kfreebsd-aout bootcheck-kopenbsd-i386 bootcheck-kopenbsd-x86_64 bootcheck-multiboot bootcheck-multiboot2 bootcheck-linux-i386 bootcheck-linux-x86_64 bootcheck-knetbsd-x86_64 bootcheck-kfreebsd-x86_64 bootcheck-kfreebsd-i386
|
BOOTCHECKS = bootcheck-kfreebsd-aout bootcheck-kopenbsd-i386 bootcheck-kopenbsd-x86_64 bootcheck-multiboot bootcheck-multiboot2 bootcheck-linux-i386 bootcheck-linux-x86_64 bootcheck-knetbsd-x86_64 bootcheck-kfreebsd-x86_64 bootcheck-kfreebsd-i386
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if COND_i386_ieee1275
|
||||||
|
# *BSD requires ACPI
|
||||||
|
#legacy protocol (linux16) makes early BIOS calls.
|
||||||
|
BOOTCHECKS = bootcheck-kfreebsd-aout bootcheck-multiboot bootcheck-multiboot2 bootcheck-linux-i386 bootcheck-linux-x86_64
|
||||||
|
endif
|
||||||
|
|
||||||
if COND_i386_pc
|
if COND_i386_pc
|
||||||
#pc chainloader by definition is only for i386-pc
|
#pc chainloader by definition is only for i386-pc
|
||||||
#ntldr and bootmgr require BIOS.
|
#ntldr and bootmgr require BIOS.
|
||||||
|
|
36
acinclude.m4
36
acinclude.m4
|
@ -390,12 +390,29 @@ else
|
||||||
[fi]
|
[fi]
|
||||||
])
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([grub_CHECK_LINK_PIE],[
|
||||||
|
[# Position independent executable.
|
||||||
|
link_nopie_needed=no]
|
||||||
|
AC_MSG_CHECKING([whether linker needs disabling of PIE to work])
|
||||||
|
AC_LANG_CONFTEST([AC_LANG_SOURCE([[]])])
|
||||||
|
|
||||||
|
[if eval "$ac_compile -Wl,-r,-d -nostdlib -Werror -o conftest.o" 2> /dev/null; then]
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
[# Should we clear up other files as well, having called `AC_LANG_CONFTEST'?
|
||||||
|
rm -f conftest.o
|
||||||
|
else
|
||||||
|
link_nopie_needed=yes]
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
[fi]
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
dnl Check if the Linker supports `-no-pie'.
|
dnl Check if the Linker supports `-no-pie'.
|
||||||
AC_DEFUN([grub_CHECK_NO_PIE],
|
AC_DEFUN([grub_CHECK_NO_PIE],
|
||||||
[AC_MSG_CHECKING([whether linker accepts -no-pie])
|
[AC_MSG_CHECKING([whether linker accepts -no-pie])
|
||||||
AC_CACHE_VAL(grub_cv_cc_ld_no_pie,
|
AC_CACHE_VAL(grub_cv_cc_ld_no_pie,
|
||||||
[save_LDFLAGS="$LDFLAGS"
|
[save_LDFLAGS="$LDFLAGS"
|
||||||
LDFLAGS="$LDFLAGS -no-pie"
|
LDFLAGS="$LDFLAGS -no-pie -nostdlib -Werror"
|
||||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
|
||||||
[grub_cv_cc_ld_no_pie=yes],
|
[grub_cv_cc_ld_no_pie=yes],
|
||||||
[grub_cv_cc_ld_no_pie=no])
|
[grub_cv_cc_ld_no_pie=no])
|
||||||
|
@ -408,6 +425,23 @@ if test "x$grub_cv_cc_ld_no_pie" = xyes ; then
|
||||||
fi
|
fi
|
||||||
])
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([grub_CHECK_NO_PIE_ONEWORD],
|
||||||
|
[AC_MSG_CHECKING([whether linker accepts -nopie])
|
||||||
|
AC_CACHE_VAL(grub_cv_cc_ld_no_pie_oneword,
|
||||||
|
[save_LDFLAGS="$LDFLAGS"
|
||||||
|
LDFLAGS="$LDFLAGS -nopie -nostdlib -Werror"
|
||||||
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
|
||||||
|
[grub_cv_cc_ld_no_pie_oneword=yes],
|
||||||
|
[grub_cv_cc_ld_no_pie_oneword=no])
|
||||||
|
LDFLAGS="$save_LDFLAGS"
|
||||||
|
])
|
||||||
|
AC_MSG_RESULT([$grub_cv_cc_ld_no_pie_oneword])
|
||||||
|
nopie_oneword_possible=no
|
||||||
|
if test "x$grub_cv_cc_ld_no_pie_oneword" = xyes ; then
|
||||||
|
nopie_oneword_possible=yes
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
dnl Check if the C compiler supports `-fPIC'.
|
dnl Check if the C compiler supports `-fPIC'.
|
||||||
AC_DEFUN([grub_CHECK_PIC],[
|
AC_DEFUN([grub_CHECK_PIC],[
|
||||||
[# Position independent executable.
|
[# Position independent executable.
|
||||||
|
|
42
configure.ac
42
configure.ac
|
@ -31,7 +31,7 @@ dnl (such as BUILD_CC, BUILD_CFLAGS, etc.) for the build type and variables
|
||||||
dnl with the prefix "TARGET_" (such as TARGET_CC, TARGET_CFLAGS, etc.) are
|
dnl with the prefix "TARGET_" (such as TARGET_CC, TARGET_CFLAGS, etc.) are
|
||||||
dnl used for the target type. See INSTALL for full list of variables.
|
dnl used for the target type. See INSTALL for full list of variables.
|
||||||
|
|
||||||
AC_INIT([GRUB],[2.02~beta3],[bug-grub@gnu.org])
|
AC_INIT([GRUB],[2.02],[bug-grub@gnu.org])
|
||||||
|
|
||||||
AC_CONFIG_AUX_DIR([build-aux])
|
AC_CONFIG_AUX_DIR([build-aux])
|
||||||
|
|
||||||
|
@ -1152,14 +1152,23 @@ if test "$target_cpu"-"$platform" = x86_64-efi; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "x$target_cpu" = xarm; then
|
if test "x$target_cpu" = xarm; then
|
||||||
AC_CACHE_CHECK([whether option -mlong-calls works], grub_cv_cc_mlong_calls, [
|
AC_CACHE_CHECK([for options to disable movt and movw], grub_cv_target_cc_mno_movt, [
|
||||||
CFLAGS="$TARGET_CFLAGS -mlong-calls -Werror"
|
grub_cv_target_cc_mno_movt=no
|
||||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
|
for cand in "-mno-movt" \
|
||||||
[grub_cv_cc_mlong_calls=yes],
|
"-mllvm -arm-use-movt=0"; do
|
||||||
[grub_cv_cc_mlong_calls=no])
|
if test x"$grub_cv_target_cc_mno_movt" != xno ; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
CFLAGS="$TARGET_CFLAGS $cand -Werror"
|
||||||
|
CPPFLAGS="$TARGET_CPPFLAGS"
|
||||||
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
|
||||||
|
[grub_cv_target_cc_mno_movt="$cand"], [])
|
||||||
|
done
|
||||||
])
|
])
|
||||||
if test "x$grub_cv_cc_mlong_calls" = xyes; then
|
|
||||||
TARGET_CFLAGS="$TARGET_CFLAGS -mlong-calls"
|
if test x"$grub_cv_target_cc_mno_movt" != xno ; then
|
||||||
|
# A trick so that clang doesn't see it on link stage
|
||||||
|
TARGET_CPPFLAGS="$TARGET_CPPFLAGS $grub_cv_target_cc_mno_movt"
|
||||||
fi
|
fi
|
||||||
AC_CACHE_CHECK([whether option -mthumb-interwork works], grub_cv_cc_mthumb_interwork, [
|
AC_CACHE_CHECK([whether option -mthumb-interwork works], grub_cv_cc_mthumb_interwork, [
|
||||||
CFLAGS="$TARGET_CFLAGS -mthumb-interwork -Werror"
|
CFLAGS="$TARGET_CFLAGS -mthumb-interwork -Werror"
|
||||||
|
@ -1193,13 +1202,21 @@ CFLAGS="$TARGET_CFLAGS"
|
||||||
# Position independent executable.
|
# Position independent executable.
|
||||||
grub_CHECK_PIE
|
grub_CHECK_PIE
|
||||||
grub_CHECK_NO_PIE
|
grub_CHECK_NO_PIE
|
||||||
|
grub_CHECK_NO_PIE_ONEWORD
|
||||||
|
grub_CHECK_LINK_PIE
|
||||||
[# Need that, because some distributions ship compilers that include
|
[# Need that, because some distributions ship compilers that include
|
||||||
# `-fPIE' or '-fpie' and '-pie' in the default specs.
|
# `-fPIE' or '-fpie' and '-pie' in the default specs.
|
||||||
if [ x"$pie_possible" = xyes ]; then
|
if [ x"$pie_possible" = xyes ]; then
|
||||||
TARGET_CFLAGS="$TARGET_CFLAGS -fno-PIE -fno-pie"
|
TARGET_CFLAGS="$TARGET_CFLAGS -fno-PIE -fno-pie"
|
||||||
fi
|
fi
|
||||||
if [ x"$nopie_possible" = xyes ] && [ x"$pie_possible" = xyes ]; then
|
|
||||||
TARGET_LDFLAGS="$TARGET_LDFLAGS -no-pie"
|
if [ x"$link_nopie_needed" = xyes ] || [ x"$pie_possible" = xyes ]; then
|
||||||
|
if [ x"$nopie_possible" = xyes ]; then
|
||||||
|
TARGET_LDFLAGS="$TARGET_LDFLAGS -no-pie"
|
||||||
|
fi
|
||||||
|
if [ x"$nopie_oneword_possible" = xyes ]; then
|
||||||
|
TARGET_LDFLAGS="$TARGET_LDFLAGS -nopie"
|
||||||
|
fi
|
||||||
fi]
|
fi]
|
||||||
|
|
||||||
CFLAGS="$TARGET_CFLAGS"
|
CFLAGS="$TARGET_CFLAGS"
|
||||||
|
@ -1212,9 +1229,12 @@ grub_CHECK_PIC
|
||||||
# and reload $gp in every function.
|
# and reload $gp in every function.
|
||||||
# GCC implements it using symbol __gnu_local_gp in non-PIC as well.
|
# GCC implements it using symbol __gnu_local_gp in non-PIC as well.
|
||||||
# However with clang we need PIC for this reloading to happen.
|
# However with clang we need PIC for this reloading to happen.
|
||||||
|
# With arm64 we need relocations that are in some way representable in
|
||||||
|
# PE as we need to support arm64-efi. Without -fPIC clang generates
|
||||||
|
# movk's which aren't representable.
|
||||||
# Since default varies across dictributions use either -fPIC or -fno-PIC
|
# Since default varies across dictributions use either -fPIC or -fno-PIC
|
||||||
# explicitly.
|
# explicitly.
|
||||||
if ( test x$target_cpu = xmips || test x$target_cpu = xmipsel ) && test "x$grub_cv_cc_target_clang" = xyes ; then
|
if ( test x$target_cpu = xmips || test x$target_cpu = xmipsel || test x$target_cpu = xarm64 ) && test "x$grub_cv_cc_target_clang" = xyes ; then
|
||||||
TARGET_CFLAGS="$TARGET_CFLAGS -fPIC"
|
TARGET_CFLAGS="$TARGET_CFLAGS -fPIC"
|
||||||
elif [ x"$pic_possible" = xyes ]; then
|
elif [ x"$pic_possible" = xyes ]; then
|
||||||
TARGET_CFLAGS="$TARGET_CFLAGS -fno-PIC"
|
TARGET_CFLAGS="$TARGET_CFLAGS -fno-PIC"
|
||||||
|
|
|
@ -3218,9 +3218,10 @@ source for more details.
|
||||||
@node default
|
@node default
|
||||||
@subsection default
|
@subsection default
|
||||||
|
|
||||||
If this variable is set, it identifies a menu entry that should be selected
|
If this variable is set, it identifies a menu entry that should be
|
||||||
by default, possibly after a timeout (@pxref{timeout}). The entry may be
|
selected by default, possibly after a timeout (@pxref{timeout}). The
|
||||||
identified by number or by id.
|
entry may be identified by number (starting from 0 at each level of
|
||||||
|
the hierarchy), by title, or by id.
|
||||||
|
|
||||||
For example, if you have:
|
For example, if you have:
|
||||||
|
|
||||||
|
@ -3236,24 +3237,26 @@ then you can make this the default using:
|
||||||
default=example-gnu-linux
|
default=example-gnu-linux
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
If the entry is in a submenu, then it must be identified using the titles of
|
If the entry is in a submenu, then it must be identified using the
|
||||||
each of the submenus starting from the top level followed by the number or
|
number, title, or id of each of the submenus starting from the top
|
||||||
title of the menu entry itself, separated by @samp{>}. For example, take
|
level, followed by the number, title, or id of the menu entry itself,
|
||||||
the following menu structure:
|
with each element separated by @samp{>}. For example, take the
|
||||||
|
following menu structure:
|
||||||
|
|
||||||
@example
|
@example
|
||||||
Submenu 1
|
GNU/Hurd --id gnu-hurd
|
||||||
Menu Entry 1
|
Standard Boot --id=gnu-hurd-std
|
||||||
Menu Entry 2
|
Rescue shell --id=gnu-hurd-rescue
|
||||||
Submenu 2
|
Other platforms --id=other
|
||||||
Submenu 3
|
Minix --id=minix
|
||||||
Menu Entry 3
|
Version 3.4.0 --id=minix-3.4.0
|
||||||
Menu Entry 4
|
Version 3.3.0 --id=minix-3.3.0
|
||||||
Menu Entry 5
|
GRUB Invaders --id=grub-invaders
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
``Menu Entry 3'' would then be identified as
|
The more recent release of Minix would then be identified as
|
||||||
@samp{Submenu 2>Submenu 3>Menu Entry 3}.
|
@samp{Other platforms>Minix>Version 3.4.0}, or as @samp{1>0>0}, or as
|
||||||
|
@samp{other>minix>minix-3.4.0}.
|
||||||
|
|
||||||
This variable is often set by @samp{GRUB_DEFAULT} (@pxref{Simple
|
This variable is often set by @samp{GRUB_DEFAULT} (@pxref{Simple
|
||||||
configuration}), @command{grub-set-default}, or @command{grub-reboot}.
|
configuration}), @command{grub-set-default}, or @command{grub-reboot}.
|
||||||
|
|
|
@ -761,10 +761,10 @@ grub_cmd_acpi (struct grub_extcmd_context *ctxt, int argc, char **args)
|
||||||
struct grub_efi_guid acpi = GRUB_EFI_ACPI_TABLE_GUID;
|
struct grub_efi_guid acpi = GRUB_EFI_ACPI_TABLE_GUID;
|
||||||
struct grub_efi_guid acpi20 = GRUB_EFI_ACPI_20_TABLE_GUID;
|
struct grub_efi_guid acpi20 = GRUB_EFI_ACPI_20_TABLE_GUID;
|
||||||
|
|
||||||
grub_efi_system_table->boot_services->install_configuration_table
|
efi_call_2 (grub_efi_system_table->boot_services->install_configuration_table,
|
||||||
(&acpi20, grub_acpi_get_rsdpv2 ());
|
&acpi20, grub_acpi_get_rsdpv2 ());
|
||||||
grub_efi_system_table->boot_services->install_configuration_table
|
efi_call_2 (grub_efi_system_table->boot_services->install_configuration_table,
|
||||||
(&acpi, grub_acpi_get_rsdpv1 ());
|
&acpi, grub_acpi_get_rsdpv1 ());
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -328,6 +328,7 @@ grub_cmd_hdparm (grub_extcmd_context_t ctxt, int argc, char **args)
|
||||||
ata = ((struct grub_scsi *) disk->data)->data;
|
ata = ((struct grub_scsi *) disk->data)->data;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
/* FALLTHROUGH */
|
||||||
default:
|
default:
|
||||||
grub_disk_close (disk);
|
grub_disk_close (disk);
|
||||||
return grub_error (GRUB_ERR_IO, "not an ATA device");
|
return grub_error (GRUB_ERR_IO, "not an ATA device");
|
||||||
|
|
|
@ -517,7 +517,7 @@ grub_cmd_legacy_initrd (struct grub_command *mycmd __attribute__ ((unused)),
|
||||||
#endif
|
#endif
|
||||||
);
|
);
|
||||||
|
|
||||||
return cmd->func (cmd, argc, args);
|
return cmd->func (cmd, argc ? 1 : 0, args);
|
||||||
}
|
}
|
||||||
if (kernel_type == MULTIBOOT)
|
if (kernel_type == MULTIBOOT)
|
||||||
{
|
{
|
||||||
|
|
|
@ -79,6 +79,7 @@ get_uuid (const char *name, char **uuid, int getnative)
|
||||||
case GRUB_DISK_DEVICE_XEN:
|
case GRUB_DISK_DEVICE_XEN:
|
||||||
if (getnative)
|
if (getnative)
|
||||||
break;
|
break;
|
||||||
|
/* FALLTHROUGH */
|
||||||
|
|
||||||
/* Virtual disks. */
|
/* Virtual disks. */
|
||||||
/* GRUB dynamically generated files. */
|
/* GRUB dynamically generated files. */
|
||||||
|
|
|
@ -282,6 +282,7 @@ grub_cryptodisk_endecrypt (struct grub_cryptodisk *dev,
|
||||||
break;
|
break;
|
||||||
case GRUB_CRYPTODISK_MODE_IV_PLAIN64:
|
case GRUB_CRYPTODISK_MODE_IV_PLAIN64:
|
||||||
iv[1] = grub_cpu_to_le32 (sector >> 32);
|
iv[1] = grub_cpu_to_le32 (sector >> 32);
|
||||||
|
/* FALLTHROUGH */
|
||||||
case GRUB_CRYPTODISK_MODE_IV_PLAIN:
|
case GRUB_CRYPTODISK_MODE_IV_PLAIN:
|
||||||
iv[0] = grub_cpu_to_le32 (sector & 0xFFFFFFFF);
|
iv[0] = grub_cpu_to_le32 (sector & 0xFFFFFFFF);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -80,6 +80,15 @@ make_devices (void)
|
||||||
/* This should not happen... Why? */
|
/* This should not happen... Why? */
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
/* iPXE adds stub Block IO protocol to loaded image device handle. It is
|
||||||
|
completely non-functional and simply returns an error for every method.
|
||||||
|
So attempt to detect and skip it. Magic number is literal "iPXE" and
|
||||||
|
check block size as well */
|
||||||
|
/* FIXME: shoud we close it? We do not do it elsewhere */
|
||||||
|
if (bio->media && bio->media->media_id == 0x69505845U &&
|
||||||
|
bio->media->block_size == 1)
|
||||||
|
continue;
|
||||||
|
|
||||||
d = grub_malloc (sizeof (*d));
|
d = grub_malloc (sizeof (*d));
|
||||||
if (! d)
|
if (! d)
|
||||||
{
|
{
|
||||||
|
@ -215,7 +224,7 @@ name_devices (struct grub_efidisk_data *devices)
|
||||||
{
|
{
|
||||||
case GRUB_EFI_HARD_DRIVE_DEVICE_PATH_SUBTYPE:
|
case GRUB_EFI_HARD_DRIVE_DEVICE_PATH_SUBTYPE:
|
||||||
is_hard_drive = 1;
|
is_hard_drive = 1;
|
||||||
/* Fall through by intention. */
|
/* Intentionally fall through. */
|
||||||
case GRUB_EFI_CDROM_DEVICE_PATH_SUBTYPE:
|
case GRUB_EFI_CDROM_DEVICE_PATH_SUBTYPE:
|
||||||
{
|
{
|
||||||
struct grub_efidisk_data *parent, *parent2;
|
struct grub_efidisk_data *parent, *parent2;
|
||||||
|
|
|
@ -417,6 +417,7 @@ fill_hook (grub_uint64_t addr, grub_uint64_t size, grub_memory_type_t type,
|
||||||
default:
|
default:
|
||||||
grub_dprintf ("efiemu",
|
grub_dprintf ("efiemu",
|
||||||
"Unknown memory type %d. Assuming unusable\n", type);
|
"Unknown memory type %d. Assuming unusable\n", type);
|
||||||
|
/* FALLTHROUGH */
|
||||||
case GRUB_MEMORY_RESERVED:
|
case GRUB_MEMORY_RESERVED:
|
||||||
return grub_efiemu_add_to_mmap (addr, size,
|
return grub_efiemu_add_to_mmap (addr, size,
|
||||||
GRUB_EFI_UNUSABLE_MEMORY);
|
GRUB_EFI_UNUSABLE_MEMORY);
|
||||||
|
|
|
@ -227,11 +227,11 @@ grub_btrfs_read_logical (struct grub_btrfs_data *data,
|
||||||
static grub_err_t
|
static grub_err_t
|
||||||
read_sblock (grub_disk_t disk, struct grub_btrfs_superblock *sb)
|
read_sblock (grub_disk_t disk, struct grub_btrfs_superblock *sb)
|
||||||
{
|
{
|
||||||
|
struct grub_btrfs_superblock sblock;
|
||||||
unsigned i;
|
unsigned i;
|
||||||
grub_err_t err = GRUB_ERR_NONE;
|
grub_err_t err = GRUB_ERR_NONE;
|
||||||
for (i = 0; i < ARRAY_SIZE (superblock_sectors); i++)
|
for (i = 0; i < ARRAY_SIZE (superblock_sectors); i++)
|
||||||
{
|
{
|
||||||
struct grub_btrfs_superblock sblock;
|
|
||||||
/* Don't try additional superblocks beyond device size. */
|
/* Don't try additional superblocks beyond device size. */
|
||||||
if (i && (grub_le_to_cpu64 (sblock.this_device.size)
|
if (i && (grub_le_to_cpu64 (sblock.this_device.size)
|
||||||
>> GRUB_DISK_SECTOR_BITS) <= superblock_sectors[i])
|
>> GRUB_DISK_SECTOR_BITS) <= superblock_sectors[i])
|
||||||
|
|
|
@ -189,7 +189,11 @@ struct grub_fshelp_node {
|
||||||
struct grub_fat_data *data;
|
struct grub_fat_data *data;
|
||||||
|
|
||||||
grub_uint8_t attr;
|
grub_uint8_t attr;
|
||||||
grub_ssize_t file_size;
|
#ifndef MODE_EXFAT
|
||||||
|
grub_uint32_t file_size;
|
||||||
|
#else
|
||||||
|
grub_uint64_t file_size;
|
||||||
|
#endif
|
||||||
grub_uint32_t file_cluster;
|
grub_uint32_t file_cluster;
|
||||||
grub_uint32_t cur_cluster_num;
|
grub_uint32_t cur_cluster_num;
|
||||||
grub_uint32_t cur_cluster;
|
grub_uint32_t cur_cluster;
|
||||||
|
|
|
@ -823,7 +823,12 @@ direct_read (struct grub_squash_data *data,
|
||||||
curread = data->blksz - boff;
|
curread = data->blksz - boff;
|
||||||
if (curread > len)
|
if (curread > len)
|
||||||
curread = len;
|
curread = len;
|
||||||
if (!(ino->block_sizes[i]
|
if (!ino->block_sizes[i])
|
||||||
|
{
|
||||||
|
/* Sparse block */
|
||||||
|
grub_memset (buf, '\0', curread);
|
||||||
|
}
|
||||||
|
else if (!(ino->block_sizes[i]
|
||||||
& grub_cpu_to_le32_compile_time (SQUASH_BLOCK_UNCOMPRESSED)))
|
& grub_cpu_to_le32_compile_time (SQUASH_BLOCK_UNCOMPRESSED)))
|
||||||
{
|
{
|
||||||
char *block;
|
char *block;
|
||||||
|
@ -873,36 +878,57 @@ direct_read (struct grub_squash_data *data,
|
||||||
|
|
||||||
|
|
||||||
static grub_ssize_t
|
static grub_ssize_t
|
||||||
grub_squash_read_data (struct grub_squash_data *data,
|
grub_squash_read (grub_file_t file, char *buf, grub_size_t len)
|
||||||
struct grub_squash_cache_inode *ino,
|
|
||||||
grub_off_t off, char *buf, grub_size_t len)
|
|
||||||
{
|
{
|
||||||
|
struct grub_squash_data *data = file->data;
|
||||||
|
struct grub_squash_cache_inode *ino = &data->ino;
|
||||||
|
grub_off_t off = file->offset;
|
||||||
grub_err_t err;
|
grub_err_t err;
|
||||||
grub_uint64_t a = 0, b;
|
grub_uint64_t a, b;
|
||||||
grub_uint32_t fragment = 0;
|
grub_uint32_t fragment = 0;
|
||||||
int compressed = 0;
|
int compressed = 0;
|
||||||
struct grub_squash_frag_desc frag;
|
struct grub_squash_frag_desc frag;
|
||||||
|
grub_off_t direct_len;
|
||||||
|
grub_uint64_t mask = grub_le_to_cpu32 (data->sb.block_size) - 1;
|
||||||
|
grub_size_t orig_len = len;
|
||||||
|
|
||||||
switch (ino->ino.type)
|
switch (ino->ino.type)
|
||||||
{
|
{
|
||||||
case grub_cpu_to_le16_compile_time (SQUASH_TYPE_LONG_REGULAR):
|
case grub_cpu_to_le16_compile_time (SQUASH_TYPE_LONG_REGULAR):
|
||||||
a = grub_le_to_cpu64 (ino->ino.long_file.chunk);
|
|
||||||
fragment = grub_le_to_cpu32 (ino->ino.long_file.fragment);
|
fragment = grub_le_to_cpu32 (ino->ino.long_file.fragment);
|
||||||
break;
|
break;
|
||||||
case grub_cpu_to_le16_compile_time (SQUASH_TYPE_REGULAR):
|
case grub_cpu_to_le16_compile_time (SQUASH_TYPE_REGULAR):
|
||||||
a = grub_le_to_cpu32 (ino->ino.file.chunk);
|
|
||||||
fragment = grub_le_to_cpu32 (ino->ino.file.fragment);
|
fragment = grub_le_to_cpu32 (ino->ino.file.fragment);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fragment == 0xffffffff)
|
/* Squash may pack file tail as fragment. So read initial part directly and
|
||||||
return direct_read (data, ino, off, buf, len);
|
get tail from fragments */
|
||||||
|
direct_len = fragment == 0xffffffff ? file->size : file->size & ~mask;
|
||||||
|
if (off < direct_len)
|
||||||
|
{
|
||||||
|
grub_size_t read_len = direct_len - off;
|
||||||
|
grub_ssize_t res;
|
||||||
|
|
||||||
|
if (read_len > len)
|
||||||
|
read_len = len;
|
||||||
|
res = direct_read (data, ino, off, buf, read_len);
|
||||||
|
if ((grub_size_t) res != read_len)
|
||||||
|
return -1; /* FIXME: is short read possible here? */
|
||||||
|
len -= read_len;
|
||||||
|
if (!len)
|
||||||
|
return read_len;
|
||||||
|
buf += read_len;
|
||||||
|
off = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
off -= direct_len;
|
||||||
|
|
||||||
err = read_chunk (data, &frag, sizeof (frag),
|
err = read_chunk (data, &frag, sizeof (frag),
|
||||||
data->fragments, sizeof (frag) * fragment);
|
data->fragments, sizeof (frag) * fragment);
|
||||||
if (err)
|
if (err)
|
||||||
return -1;
|
return -1;
|
||||||
a += grub_le_to_cpu64 (frag.offset);
|
a = grub_le_to_cpu64 (frag.offset);
|
||||||
compressed = !(frag.size & grub_cpu_to_le32_compile_time (SQUASH_BLOCK_UNCOMPRESSED));
|
compressed = !(frag.size & grub_cpu_to_le32_compile_time (SQUASH_BLOCK_UNCOMPRESSED));
|
||||||
if (ino->ino.type == grub_cpu_to_le16_compile_time (SQUASH_TYPE_LONG_REGULAR))
|
if (ino->ino.type == grub_cpu_to_le16_compile_time (SQUASH_TYPE_LONG_REGULAR))
|
||||||
b = grub_le_to_cpu32 (ino->ino.long_file.offset) + off;
|
b = grub_le_to_cpu32 (ino->ino.long_file.offset) + off;
|
||||||
|
@ -943,16 +969,7 @@ grub_squash_read_data (struct grub_squash_data *data,
|
||||||
if (err)
|
if (err)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
return len;
|
return orig_len;
|
||||||
}
|
|
||||||
|
|
||||||
static grub_ssize_t
|
|
||||||
grub_squash_read (grub_file_t file, char *buf, grub_size_t len)
|
|
||||||
{
|
|
||||||
struct grub_squash_data *data = file->data;
|
|
||||||
|
|
||||||
return grub_squash_read_data (data, &data->ino,
|
|
||||||
file->offset, buf, len);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static grub_err_t
|
static grub_err_t
|
||||||
|
|
|
@ -336,6 +336,7 @@ grub_gdb_trap (int trap_no)
|
||||||
/* sAA..AA: Step one instruction from AA..AA(optional). */
|
/* sAA..AA: Step one instruction from AA..AA(optional). */
|
||||||
case 's':
|
case 's':
|
||||||
stepping = 1;
|
stepping = 1;
|
||||||
|
/* FALLTHROUGH */
|
||||||
|
|
||||||
/* cAA..AA: Continue at address AA..AA(optional). */
|
/* cAA..AA: Continue at address AA..AA(optional). */
|
||||||
case 'c':
|
case 'c':
|
||||||
|
|
|
@ -94,6 +94,6 @@ else
|
||||||
rm -f $tmpfile.bin
|
rm -f $tmpfile.bin
|
||||||
fi
|
fi
|
||||||
if test x@platform@ != xemu; then
|
if test x@platform@ != xemu; then
|
||||||
./build-grub-module-verifier@BUILD_EXEEXT@ $tmpfile @target_cpu@
|
./build-grub-module-verifier@BUILD_EXEEXT@ $tmpfile @target_cpu@ @platform@
|
||||||
fi
|
fi
|
||||||
mv $tmpfile $outfile
|
mv $tmpfile $outfile
|
||||||
|
|
14
grub-core/gnulib-fix-gcc7-fallthrough.diff
Normal file
14
grub-core/gnulib-fix-gcc7-fallthrough.diff
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
diff --git grub-core/gnulib/regexec.c grub-core/gnulib/regexec.c
|
||||||
|
index f632cd4..a7776f0 100644
|
||||||
|
--- grub-core/gnulib/regexec.c
|
||||||
|
+++ grub-core/gnulib/regexec.c
|
||||||
|
@@ -4099,6 +4099,9 @@ check_node_accept (const re_match_context_t *mctx, const re_token_t *node,
|
||||||
|
case OP_UTF8_PERIOD:
|
||||||
|
if (ch >= ASCII_CHARS)
|
||||||
|
return false;
|
||||||
|
+#if defined __GNUC__ && __GNUC__ >= 7
|
||||||
|
+ __attribute__ ((fallthrough));
|
||||||
|
+#endif
|
||||||
|
/* FALLTHROUGH */
|
||||||
|
#endif
|
||||||
|
case OP_PERIOD:
|
|
@ -4099,6 +4099,9 @@ check_node_accept (const re_match_context_t *mctx, const re_token_t *node,
|
||||||
case OP_UTF8_PERIOD:
|
case OP_UTF8_PERIOD:
|
||||||
if (ch >= ASCII_CHARS)
|
if (ch >= ASCII_CHARS)
|
||||||
return false;
|
return false;
|
||||||
|
#if defined __GNUC__ && __GNUC__ >= 7
|
||||||
|
__attribute__ ((fallthrough));
|
||||||
|
#endif
|
||||||
/* FALLTHROUGH */
|
/* FALLTHROUGH */
|
||||||
#endif
|
#endif
|
||||||
case OP_PERIOD:
|
case OP_PERIOD:
|
||||||
|
|
|
@ -173,6 +173,8 @@ grub_arch_dl_relocate_symbols (grub_dl_t mod, void *ehdr,
|
||||||
sym_addr += grub_arm_thm_call_get_offset ((grub_uint16_t *) target);
|
sym_addr += grub_arm_thm_call_get_offset ((grub_uint16_t *) target);
|
||||||
|
|
||||||
grub_dprintf ("dl", " sym_addr = 0x%08x\n", sym_addr);
|
grub_dprintf ("dl", " sym_addr = 0x%08x\n", sym_addr);
|
||||||
|
if (ELF_ST_TYPE (sym->st_info) != STT_FUNC)
|
||||||
|
sym_addr |= 1;
|
||||||
|
|
||||||
offset = sym_addr - (grub_uint32_t) target;
|
offset = sym_addr - (grub_uint32_t) target;
|
||||||
|
|
||||||
|
@ -227,13 +229,16 @@ grub_arch_dl_relocate_symbols (grub_dl_t mod, void *ehdr,
|
||||||
|
|
||||||
sym_addr += grub_arm_thm_jump19_get_offset ((grub_uint16_t *) target);
|
sym_addr += grub_arm_thm_jump19_get_offset ((grub_uint16_t *) target);
|
||||||
|
|
||||||
|
if (ELF_ST_TYPE (sym->st_info) != STT_FUNC)
|
||||||
|
sym_addr |= 1;
|
||||||
|
|
||||||
offset = sym_addr - (grub_uint32_t) target;
|
offset = sym_addr - (grub_uint32_t) target;
|
||||||
|
|
||||||
if (!grub_arm_thm_jump19_check_offset (offset)
|
if (!grub_arm_thm_jump19_check_offset (offset)
|
||||||
|| !(sym_addr & 1))
|
|| !(sym_addr & 1))
|
||||||
{
|
{
|
||||||
struct trampoline_thumb *tp = mod->gotptr;
|
struct trampoline_thumb *tp = mod->trampptr;
|
||||||
mod->gotptr = tp + 1;
|
mod->trampptr = tp + 1;
|
||||||
grub_memcpy (tp->template, thumb_template, sizeof (tp->template));
|
grub_memcpy (tp->template, thumb_template, sizeof (tp->template));
|
||||||
tp->neg_addr = -sym_addr - 4;
|
tp->neg_addr = -sym_addr - 4;
|
||||||
offset = ((grub_uint8_t *) tp - (grub_uint8_t *) target - 4) | 1;
|
offset = ((grub_uint8_t *) tp - (grub_uint8_t *) target - 4) | 1;
|
||||||
|
|
|
@ -25,14 +25,9 @@
|
||||||
#include <grub/i18n.h>
|
#include <grub/i18n.h>
|
||||||
#include <grub/cpu/reloc.h>
|
#include <grub/cpu/reloc.h>
|
||||||
|
|
||||||
struct trampoline
|
|
||||||
{
|
|
||||||
#define LDR 0x58000050
|
#define LDR 0x58000050
|
||||||
#define BR 0xd61f0200
|
#define BR 0xd61f0200
|
||||||
grub_uint32_t ldr; /* ldr x16, 8 */
|
|
||||||
grub_uint32_t br; /* br x16 */
|
|
||||||
grub_uint64_t addr;
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Check if EHDR is a valid ELF header.
|
* Check if EHDR is a valid ELF header.
|
||||||
|
@ -53,42 +48,6 @@ grub_arch_dl_check_header (void *ehdr)
|
||||||
|
|
||||||
#pragma GCC diagnostic ignored "-Wcast-align"
|
#pragma GCC diagnostic ignored "-Wcast-align"
|
||||||
|
|
||||||
grub_err_t
|
|
||||||
grub_arch_dl_get_tramp_got_size (const void *ehdr, grub_size_t *tramp,
|
|
||||||
grub_size_t *got)
|
|
||||||
{
|
|
||||||
const Elf_Ehdr *e = ehdr;
|
|
||||||
const Elf_Shdr *s;
|
|
||||||
unsigned i;
|
|
||||||
|
|
||||||
*tramp = 0;
|
|
||||||
*got = 0;
|
|
||||||
|
|
||||||
for (i = 0, s = (const Elf_Shdr *) ((grub_addr_t) e + e->e_shoff);
|
|
||||||
i < e->e_shnum;
|
|
||||||
i++, s = (const Elf_Shdr *) ((grub_addr_t) s + e->e_shentsize))
|
|
||||||
if (s->sh_type == SHT_REL || s->sh_type == SHT_RELA)
|
|
||||||
{
|
|
||||||
const Elf_Rel *rel, *max;
|
|
||||||
|
|
||||||
for (rel = (const Elf_Rel *) ((grub_addr_t) e + s->sh_offset),
|
|
||||||
max = rel + s->sh_size / s->sh_entsize;
|
|
||||||
rel < max;
|
|
||||||
rel = (const Elf_Rel *) ((grub_addr_t) rel + s->sh_entsize))
|
|
||||||
switch (ELF_R_TYPE (rel->r_info))
|
|
||||||
{
|
|
||||||
case R_AARCH64_CALL26:
|
|
||||||
case R_AARCH64_JUMP26:
|
|
||||||
{
|
|
||||||
*tramp += sizeof (struct trampoline);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return GRUB_ERR_NONE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Unified function for both REL and RELA
|
* Unified function for both REL and RELA
|
||||||
*/
|
*/
|
||||||
|
@ -97,6 +56,7 @@ grub_arch_dl_relocate_symbols (grub_dl_t mod, void *ehdr,
|
||||||
Elf_Shdr *s, grub_dl_segment_t seg)
|
Elf_Shdr *s, grub_dl_segment_t seg)
|
||||||
{
|
{
|
||||||
Elf_Rel *rel, *max;
|
Elf_Rel *rel, *max;
|
||||||
|
unsigned unmatched_adr_got_page = 0;
|
||||||
|
|
||||||
for (rel = (Elf_Rel *) ((char *) ehdr + s->sh_offset),
|
for (rel = (Elf_Rel *) ((char *) ehdr + s->sh_offset),
|
||||||
max = (Elf_Rel *) ((char *) rel + s->sh_size);
|
max = (Elf_Rel *) ((char *) rel + s->sh_size);
|
||||||
|
@ -145,7 +105,7 @@ grub_arch_dl_relocate_symbols (grub_dl_t mod, void *ehdr,
|
||||||
|
|
||||||
if (!grub_arm_64_check_xxxx26_offset (offset))
|
if (!grub_arm_64_check_xxxx26_offset (offset))
|
||||||
{
|
{
|
||||||
struct trampoline *tp = mod->trampptr;
|
struct grub_arm64_trampoline *tp = mod->trampptr;
|
||||||
mod->trampptr = tp + 1;
|
mod->trampptr = tp + 1;
|
||||||
tp->ldr = LDR;
|
tp->ldr = LDR;
|
||||||
tp->br = BR;
|
tp->br = BR;
|
||||||
|
@ -160,6 +120,56 @@ grub_arch_dl_relocate_symbols (grub_dl_t mod, void *ehdr,
|
||||||
grub_arm64_set_xxxx26_offset (place, offset);
|
grub_arm64_set_xxxx26_offset (place, offset);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case R_AARCH64_PREL32:
|
||||||
|
{
|
||||||
|
grub_int64_t value;
|
||||||
|
Elf64_Word *addr32 = place;
|
||||||
|
value = ((grub_int32_t) *addr32) + sym_addr -
|
||||||
|
(Elf64_Xword) (grub_addr_t) seg->addr - rel->r_offset;
|
||||||
|
if (value != (grub_int32_t) value)
|
||||||
|
return grub_error (GRUB_ERR_BAD_MODULE, "relocation out of range");
|
||||||
|
grub_dprintf("dl", " reloc_prel32 %p => 0x%016llx\n",
|
||||||
|
place, (unsigned long long) sym_addr);
|
||||||
|
*addr32 = value;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case R_AARCH64_ADR_GOT_PAGE:
|
||||||
|
{
|
||||||
|
grub_uint64_t *gp = mod->gotptr;
|
||||||
|
Elf_Rela *rel2;
|
||||||
|
grub_int64_t gpoffset = ((grub_uint64_t) gp & ~0xfffULL) - (((grub_uint64_t) place) & ~0xfffULL);
|
||||||
|
*gp = (grub_uint64_t) sym_addr;
|
||||||
|
mod->gotptr = gp + 1;
|
||||||
|
unmatched_adr_got_page++;
|
||||||
|
grub_dprintf("dl", " reloc_got %p => 0x%016llx (0x%016llx)\n",
|
||||||
|
place, (unsigned long long) sym_addr, (unsigned long long) gp);
|
||||||
|
if (!grub_arm64_check_hi21_signed (gpoffset))
|
||||||
|
return grub_error (GRUB_ERR_BAD_MODULE,
|
||||||
|
"HI21 out of range");
|
||||||
|
grub_arm64_set_hi21(place, gpoffset);
|
||||||
|
for (rel2 = (Elf_Rela *) ((char *) rel + s->sh_entsize);
|
||||||
|
rel2 < (Elf_Rela *) max;
|
||||||
|
rel2 = (Elf_Rela *) ((char *) rel2 + s->sh_entsize))
|
||||||
|
if (ELF_R_SYM (rel2->r_info)
|
||||||
|
== ELF_R_SYM (rel->r_info)
|
||||||
|
&& ((Elf_Rela *) rel)->r_addend == rel2->r_addend
|
||||||
|
&& ELF_R_TYPE (rel2->r_info) == R_AARCH64_LD64_GOT_LO12_NC)
|
||||||
|
{
|
||||||
|
grub_arm64_set_abs_lo12_ldst64 ((void *) ((grub_addr_t) seg->addr + rel2->r_offset),
|
||||||
|
(grub_uint64_t)gp);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (rel2 >= (Elf_Rela *) max)
|
||||||
|
return grub_error (GRUB_ERR_BAD_MODULE,
|
||||||
|
"ADR_GOT_PAGE without matching LD64_GOT_LO12_NC");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case R_AARCH64_LD64_GOT_LO12_NC:
|
||||||
|
if (unmatched_adr_got_page == 0)
|
||||||
|
return grub_error (GRUB_ERR_BAD_MODULE,
|
||||||
|
"LD64_GOT_LO12_NC without matching ADR_GOT_PAGE");
|
||||||
|
unmatched_adr_got_page--;
|
||||||
|
break;
|
||||||
case R_AARCH64_ADR_PREL_PG_HI21:
|
case R_AARCH64_ADR_PREL_PG_HI21:
|
||||||
{
|
{
|
||||||
grub_int64_t offset = (sym_addr & ~0xfffULL) - (((grub_uint64_t) place) & ~0xfffULL);
|
grub_int64_t offset = (sym_addr & ~0xfffULL) - (((grub_uint64_t) place) & ~0xfffULL);
|
||||||
|
|
|
@ -93,3 +93,42 @@ grub_arm64_set_abs_lo12_ldst64 (grub_uint32_t *place, grub_int64_t target)
|
||||||
*place &= insmask;
|
*place &= insmask;
|
||||||
*place |= grub_cpu_to_le32 (target << 7) & ~insmask;
|
*place |= grub_cpu_to_le32 (target << 7) & ~insmask;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#pragma GCC diagnostic ignored "-Wcast-align"
|
||||||
|
|
||||||
|
grub_err_t
|
||||||
|
grub_arm64_dl_get_tramp_got_size (const void *ehdr, grub_size_t *tramp,
|
||||||
|
grub_size_t *got)
|
||||||
|
{
|
||||||
|
const Elf64_Ehdr *e = ehdr;
|
||||||
|
const Elf64_Shdr *s;
|
||||||
|
unsigned i;
|
||||||
|
|
||||||
|
*tramp = 0;
|
||||||
|
*got = 0;
|
||||||
|
|
||||||
|
for (i = 0, s = (Elf64_Shdr *) ((char *) e + grub_le_to_cpu64 (e->e_shoff));
|
||||||
|
i < grub_le_to_cpu16 (e->e_shnum);
|
||||||
|
i++, s = (Elf64_Shdr *) ((char *) s + grub_le_to_cpu16 (e->e_shentsize)))
|
||||||
|
if (s->sh_type == grub_cpu_to_le32_compile_time (SHT_REL)
|
||||||
|
|| s->sh_type == grub_cpu_to_le32_compile_time (SHT_RELA))
|
||||||
|
{
|
||||||
|
const Elf64_Rela *rel, *max;
|
||||||
|
|
||||||
|
for (rel = (Elf64_Rela *) ((char *) e + grub_le_to_cpu64 (s->sh_offset)),
|
||||||
|
max = (const Elf64_Rela *) ((char *) rel + grub_le_to_cpu64 (s->sh_size));
|
||||||
|
rel < max; rel = (const Elf64_Rela *) ((char *) rel + grub_le_to_cpu64 (s->sh_entsize)))
|
||||||
|
switch (ELF64_R_TYPE (rel->r_info))
|
||||||
|
{
|
||||||
|
case R_AARCH64_CALL26:
|
||||||
|
case R_AARCH64_JUMP26:
|
||||||
|
*tramp += sizeof (struct grub_arm64_trampoline);
|
||||||
|
break;
|
||||||
|
case R_AARCH64_ADR_GOT_PAGE:
|
||||||
|
*got += 8;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return GRUB_ERR_NONE;
|
||||||
|
}
|
||||||
|
|
|
@ -394,6 +394,9 @@ grub_efi_get_filename (grub_efi_device_path_t *dp0)
|
||||||
len = ((GRUB_EFI_DEVICE_PATH_LENGTH (dp) - 4)
|
len = ((GRUB_EFI_DEVICE_PATH_LENGTH (dp) - 4)
|
||||||
/ sizeof (grub_efi_char16_t));
|
/ sizeof (grub_efi_char16_t));
|
||||||
fp = (grub_efi_file_path_device_path_t *) dp;
|
fp = (grub_efi_file_path_device_path_t *) dp;
|
||||||
|
/* According to EFI spec Path Name is NULL terminated */
|
||||||
|
while (len > 0 && fp->path_name[len - 1] == 0)
|
||||||
|
len--;
|
||||||
|
|
||||||
p = (char *) grub_utf16_to_utf8 ((unsigned char *) p, fp->path_name, len);
|
p = (char *) grub_utf16_to_utf8 ((unsigned char *) p, fp->path_name, len);
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,6 +63,7 @@ void
|
||||||
grub_reboot (void)
|
grub_reboot (void)
|
||||||
{
|
{
|
||||||
longjmp (main_env, 1);
|
longjmp (main_env, 1);
|
||||||
|
grub_fatal ("longjmp failed");
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -104,6 +104,9 @@ grub_arch_dl_relocate_symbols (grub_dl_t mod, void *ehdr,
|
||||||
case R_IA64_PCREL64LSB:
|
case R_IA64_PCREL64LSB:
|
||||||
*(grub_uint64_t *) addr += value - addr;
|
*(grub_uint64_t *) addr += value - addr;
|
||||||
break;
|
break;
|
||||||
|
case R_IA64_GPREL64I:
|
||||||
|
grub_ia64_set_immu64 (addr, value - (grub_addr_t) mod->base);
|
||||||
|
break;
|
||||||
case R_IA64_GPREL22:
|
case R_IA64_GPREL22:
|
||||||
if ((value - (grub_addr_t) mod->base) & ~MASK20)
|
if ((value - (grub_addr_t) mod->base) & ~MASK20)
|
||||||
return grub_error (GRUB_ERR_BAD_MODULE,
|
return grub_error (GRUB_ERR_BAD_MODULE,
|
||||||
|
@ -116,6 +119,7 @@ grub_arch_dl_relocate_symbols (grub_dl_t mod, void *ehdr,
|
||||||
case R_IA64_LTOFF22:
|
case R_IA64_LTOFF22:
|
||||||
if (ELF_ST_TYPE (sym->st_info) == STT_FUNC)
|
if (ELF_ST_TYPE (sym->st_info) == STT_FUNC)
|
||||||
value = *(grub_uint64_t *) sym->st_value + rel->r_addend;
|
value = *(grub_uint64_t *) sym->st_value + rel->r_addend;
|
||||||
|
/* Fallthrough. */
|
||||||
case R_IA64_LTOFF_FPTR22:
|
case R_IA64_LTOFF_FPTR22:
|
||||||
{
|
{
|
||||||
grub_uint64_t *gpptr = mod->gotptr;
|
grub_uint64_t *gpptr = mod->gotptr;
|
||||||
|
|
|
@ -30,6 +30,40 @@
|
||||||
#define MASK20 ((1 << 20) - 1)
|
#define MASK20 ((1 << 20) - 1)
|
||||||
#define MASK3 (~(grub_addr_t) 3)
|
#define MASK3 (~(grub_addr_t) 3)
|
||||||
|
|
||||||
|
void
|
||||||
|
grub_ia64_set_immu64 (grub_addr_t addr, grub_uint64_t val)
|
||||||
|
{
|
||||||
|
/* Copied from binutils. */
|
||||||
|
grub_uint64_t *ptr = ((grub_uint64_t *) (addr & MASK3));
|
||||||
|
grub_uint64_t t0, t1;
|
||||||
|
|
||||||
|
t0 = grub_le_to_cpu64 (ptr[0]);
|
||||||
|
t1 = grub_le_to_cpu64 (ptr[1]);
|
||||||
|
|
||||||
|
/* tmpl/s: bits 0.. 5 in t0
|
||||||
|
slot 0: bits 5..45 in t0
|
||||||
|
slot 1: bits 46..63 in t0, bits 0..22 in t1
|
||||||
|
slot 2: bits 23..63 in t1 */
|
||||||
|
|
||||||
|
/* First, clear the bits that form the 64 bit constant. */
|
||||||
|
t0 &= ~(0x3ffffLL << 46);
|
||||||
|
t1 &= ~(0x7fffffLL
|
||||||
|
| (( (0x07fLL << 13) | (0x1ffLL << 27)
|
||||||
|
| (0x01fLL << 22) | (0x001LL << 21)
|
||||||
|
| (0x001LL << 36)) << 23));
|
||||||
|
|
||||||
|
t0 |= ((val >> 22) & 0x03ffffLL) << 46; /* 18 lsbs of imm41 */
|
||||||
|
t1 |= ((val >> 40) & 0x7fffffLL) << 0; /* 23 msbs of imm41 */
|
||||||
|
t1 |= ( (((val >> 0) & 0x07f) << 13) /* imm7b */
|
||||||
|
| (((val >> 7) & 0x1ff) << 27) /* imm9d */
|
||||||
|
| (((val >> 16) & 0x01f) << 22) /* imm5c */
|
||||||
|
| (((val >> 21) & 0x001) << 21) /* ic */
|
||||||
|
| (((val >> 63) & 0x001) << 36)) << 23; /* i */
|
||||||
|
|
||||||
|
ptr[0] = t0;
|
||||||
|
ptr[1] = t1;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
grub_ia64_add_value_to_slot_20b (grub_addr_t addr, grub_uint32_t value)
|
grub_ia64_add_value_to_slot_20b (grub_addr_t addr, grub_uint32_t value)
|
||||||
{
|
{
|
||||||
|
@ -182,11 +216,11 @@ grub_ia64_dl_get_tramp_got_size (const void *ehdr, grub_size_t *tramp,
|
||||||
i++, s = (Elf64_Shdr *) ((char *) s + grub_le_to_cpu16 (e->e_shentsize)))
|
i++, s = (Elf64_Shdr *) ((char *) s + grub_le_to_cpu16 (e->e_shentsize)))
|
||||||
if (s->sh_type == grub_cpu_to_le32_compile_time (SHT_RELA))
|
if (s->sh_type == grub_cpu_to_le32_compile_time (SHT_RELA))
|
||||||
{
|
{
|
||||||
Elf64_Rela *rel, *max;
|
const Elf64_Rela *rel, *max;
|
||||||
|
|
||||||
for (rel = (Elf64_Rela *) ((char *) e + grub_le_to_cpu64 (s->sh_offset)),
|
for (rel = (Elf64_Rela *) ((char *) e + grub_le_to_cpu64 (s->sh_offset)),
|
||||||
max = rel + grub_le_to_cpu64 (s->sh_size) / grub_le_to_cpu64 (s->sh_entsize);
|
max = (const Elf64_Rela *) ((char *) rel + grub_le_to_cpu64 (s->sh_size));
|
||||||
rel < max; rel++)
|
rel < max; rel = (const Elf64_Rela *) ((char *) rel + grub_le_to_cpu64 (s->sh_entsize)))
|
||||||
switch (ELF64_R_TYPE (grub_le_to_cpu64 (rel->r_info)))
|
switch (ELF64_R_TYPE (grub_le_to_cpu64 (rel->r_info)))
|
||||||
{
|
{
|
||||||
case R_IA64_PCREL21B:
|
case R_IA64_PCREL21B:
|
||||||
|
|
|
@ -236,6 +236,7 @@ grub_arch_dl_relocate_symbols (grub_dl_t mod, void *ehdr,
|
||||||
sym_value &= 0xffff0000;
|
sym_value &= 0xffff0000;
|
||||||
*(grub_uint16_t *) addr = 0;
|
*(grub_uint16_t *) addr = 0;
|
||||||
}
|
}
|
||||||
|
/* Fallthrough. */
|
||||||
case R_MIPS_CALL16:
|
case R_MIPS_CALL16:
|
||||||
{
|
{
|
||||||
grub_uint32_t *gpptr = mod->gotptr;
|
grub_uint32_t *gpptr = mod->gotptr;
|
||||||
|
|
|
@ -159,6 +159,7 @@ grub_arch_dl_relocate_symbols (grub_dl_t mod, void *ehdr,
|
||||||
if (value >> 32)
|
if (value >> 32)
|
||||||
return grub_error (GRUB_ERR_BAD_MODULE,
|
return grub_error (GRUB_ERR_BAD_MODULE,
|
||||||
"address out of 32 bits range");
|
"address out of 32 bits range");
|
||||||
|
/* Fallthrough. */
|
||||||
case R_SPARC_LM22:
|
case R_SPARC_LM22:
|
||||||
*addr = (*addr & 0xFFC00000) | ((value >> 10) & 0x3FFFFF);
|
*addr = (*addr & 0xFFC00000) | ((value >> 10) & 0x3FFFFF);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -73,14 +73,22 @@ VARIABLE(grub_relocator64_rsp)
|
||||||
|
|
||||||
movq %rax, %rsp
|
movq %rax, %rsp
|
||||||
|
|
||||||
|
#ifdef GRUB_MACHINE_EFI
|
||||||
|
jmp LOCAL(skip_efi_stack_align)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Here is grub_relocator64_efi_start() entry point.
|
* Here is grub_relocator64_efi_start() entry point. Most of the
|
||||||
* Following code is shared between grub_relocator64_efi_start()
|
* code below is shared between grub_relocator64_efi_start()
|
||||||
* and grub_relocator64_start().
|
* and grub_relocator64_start().
|
||||||
*
|
*
|
||||||
* Think twice before changing anything below!!!
|
* Think twice before changing anything there!!!
|
||||||
*/
|
*/
|
||||||
VARIABLE(grub_relocator64_efi_start)
|
VARIABLE(grub_relocator64_efi_start)
|
||||||
|
/* Align the stack as UEFI spec requires. */
|
||||||
|
andq $~15, %rsp
|
||||||
|
|
||||||
|
LOCAL(skip_efi_stack_align):
|
||||||
|
#endif
|
||||||
/* mov imm64, %rax */
|
/* mov imm64, %rax */
|
||||||
.byte 0x48
|
.byte 0x48
|
||||||
.byte 0xb8
|
.byte 0xb8
|
||||||
|
@ -128,8 +136,10 @@ LOCAL(jump_addr):
|
||||||
VARIABLE(grub_relocator64_rip)
|
VARIABLE(grub_relocator64_rip)
|
||||||
.quad 0
|
.quad 0
|
||||||
|
|
||||||
|
#ifdef GRUB_MACHINE_EFI
|
||||||
/* Here grub_relocator64_efi_start() ends. Ufff... */
|
/* Here grub_relocator64_efi_start() ends. Ufff... */
|
||||||
VARIABLE(grub_relocator64_efi_end)
|
VARIABLE(grub_relocator64_efi_end)
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef __x86_64__
|
#ifndef __x86_64__
|
||||||
.p2align 4
|
.p2align 4
|
||||||
|
|
|
@ -128,7 +128,7 @@ VARIABLE(grub_relocator_xen_start)
|
||||||
VARIABLE(grub_relocator_xen_remapper_virt2)
|
VARIABLE(grub_relocator_xen_remapper_virt2)
|
||||||
.long 0
|
.long 0
|
||||||
|
|
||||||
movl %eax, %edi
|
movl %eax, %ebx
|
||||||
|
|
||||||
xorl %ecx, %ecx /* Invalid pte */
|
xorl %ecx, %ecx /* Invalid pte */
|
||||||
xorl %edx, %edx
|
xorl %edx, %edx
|
||||||
|
|
|
@ -1044,6 +1044,8 @@ enum xz_ret xz_dec_lzma2_run(
|
||||||
|
|
||||||
s->lzma2.sequence = SEQ_LZMA_PREPARE;
|
s->lzma2.sequence = SEQ_LZMA_PREPARE;
|
||||||
|
|
||||||
|
/* Fall through */
|
||||||
|
|
||||||
case SEQ_LZMA_PREPARE:
|
case SEQ_LZMA_PREPARE:
|
||||||
if (s->lzma2.compressed < RC_INIT_BYTES)
|
if (s->lzma2.compressed < RC_INIT_BYTES)
|
||||||
return XZ_DATA_ERROR;
|
return XZ_DATA_ERROR;
|
||||||
|
@ -1054,6 +1056,8 @@ enum xz_ret xz_dec_lzma2_run(
|
||||||
s->lzma2.compressed -= RC_INIT_BYTES;
|
s->lzma2.compressed -= RC_INIT_BYTES;
|
||||||
s->lzma2.sequence = SEQ_LZMA_RUN;
|
s->lzma2.sequence = SEQ_LZMA_RUN;
|
||||||
|
|
||||||
|
/* Fall through */
|
||||||
|
|
||||||
case SEQ_LZMA_RUN:
|
case SEQ_LZMA_RUN:
|
||||||
/*
|
/*
|
||||||
* Set dictionary limit to indicate how much we want
|
* Set dictionary limit to indicate how much we want
|
||||||
|
|
|
@ -750,6 +750,7 @@ static enum xz_ret dec_main(struct xz_dec *s, struct xz_buf *b)
|
||||||
|
|
||||||
s->sequence = SEQ_BLOCK_START;
|
s->sequence = SEQ_BLOCK_START;
|
||||||
|
|
||||||
|
/* FALLTHROUGH */
|
||||||
case SEQ_BLOCK_START:
|
case SEQ_BLOCK_START:
|
||||||
/* We need one byte of input to continue. */
|
/* We need one byte of input to continue. */
|
||||||
if (b->in_pos == b->in_size)
|
if (b->in_pos == b->in_size)
|
||||||
|
@ -773,6 +774,7 @@ static enum xz_ret dec_main(struct xz_dec *s, struct xz_buf *b)
|
||||||
s->temp.pos = 0;
|
s->temp.pos = 0;
|
||||||
s->sequence = SEQ_BLOCK_HEADER;
|
s->sequence = SEQ_BLOCK_HEADER;
|
||||||
|
|
||||||
|
/* FALLTHROUGH */
|
||||||
case SEQ_BLOCK_HEADER:
|
case SEQ_BLOCK_HEADER:
|
||||||
if (!fill_temp(s, b))
|
if (!fill_temp(s, b))
|
||||||
return XZ_OK;
|
return XZ_OK;
|
||||||
|
@ -783,6 +785,7 @@ static enum xz_ret dec_main(struct xz_dec *s, struct xz_buf *b)
|
||||||
|
|
||||||
s->sequence = SEQ_BLOCK_UNCOMPRESS;
|
s->sequence = SEQ_BLOCK_UNCOMPRESS;
|
||||||
|
|
||||||
|
/* FALLTHROUGH */
|
||||||
case SEQ_BLOCK_UNCOMPRESS:
|
case SEQ_BLOCK_UNCOMPRESS:
|
||||||
ret = dec_block(s, b);
|
ret = dec_block(s, b);
|
||||||
if (ret != XZ_STREAM_END)
|
if (ret != XZ_STREAM_END)
|
||||||
|
@ -810,6 +813,7 @@ static enum xz_ret dec_main(struct xz_dec *s, struct xz_buf *b)
|
||||||
|
|
||||||
s->sequence = SEQ_BLOCK_CHECK;
|
s->sequence = SEQ_BLOCK_CHECK;
|
||||||
|
|
||||||
|
/* FALLTHROUGH */
|
||||||
case SEQ_BLOCK_CHECK:
|
case SEQ_BLOCK_CHECK:
|
||||||
ret = hash_validate(s, b, 0);
|
ret = hash_validate(s, b, 0);
|
||||||
if (ret != XZ_STREAM_END)
|
if (ret != XZ_STREAM_END)
|
||||||
|
@ -858,6 +862,7 @@ static enum xz_ret dec_main(struct xz_dec *s, struct xz_buf *b)
|
||||||
|
|
||||||
s->sequence = SEQ_INDEX_CRC32;
|
s->sequence = SEQ_INDEX_CRC32;
|
||||||
|
|
||||||
|
/* FALLTHROUGH */
|
||||||
case SEQ_INDEX_CRC32:
|
case SEQ_INDEX_CRC32:
|
||||||
ret = hash_validate(s, b, 1);
|
ret = hash_validate(s, b, 1);
|
||||||
if (ret != XZ_STREAM_END)
|
if (ret != XZ_STREAM_END)
|
||||||
|
@ -866,6 +871,7 @@ static enum xz_ret dec_main(struct xz_dec *s, struct xz_buf *b)
|
||||||
s->temp.size = STREAM_HEADER_SIZE;
|
s->temp.size = STREAM_HEADER_SIZE;
|
||||||
s->sequence = SEQ_STREAM_FOOTER;
|
s->sequence = SEQ_STREAM_FOOTER;
|
||||||
|
|
||||||
|
/* FALLTHROUGH */
|
||||||
case SEQ_STREAM_FOOTER:
|
case SEQ_STREAM_FOOTER:
|
||||||
if (!fill_temp(s, b))
|
if (!fill_temp(s, b))
|
||||||
return XZ_OK;
|
return XZ_OK;
|
||||||
|
|
|
@ -384,6 +384,7 @@ load_chewed (grub_file_t file, const char *filename)
|
||||||
segment.len = 0;
|
segment.len = 0;
|
||||||
segment.offset = 0;
|
segment.offset = 0;
|
||||||
segment.len = 0;
|
segment.len = 0;
|
||||||
|
/* Fallthrough. */
|
||||||
case PAYLOAD_SEGMENT_CODE:
|
case PAYLOAD_SEGMENT_CODE:
|
||||||
case PAYLOAD_SEGMENT_DATA:
|
case PAYLOAD_SEGMENT_DATA:
|
||||||
{
|
{
|
||||||
|
|
|
@ -999,10 +999,13 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||||
{
|
{
|
||||||
case 'g':
|
case 'g':
|
||||||
shift += 10;
|
shift += 10;
|
||||||
|
/* FALLTHROUGH */
|
||||||
case 'm':
|
case 'm':
|
||||||
shift += 10;
|
shift += 10;
|
||||||
|
/* FALLTHROUGH */
|
||||||
case 'k':
|
case 'k':
|
||||||
shift += 10;
|
shift += 10;
|
||||||
|
/* FALLTHROUGH */
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -419,8 +419,6 @@ grub_xen_pt_alloc (void)
|
||||||
try_virt_end = ALIGN_UP (xen_state.xen_inf.virt_base +
|
try_virt_end = ALIGN_UP (xen_state.xen_inf.virt_base +
|
||||||
page2offset (nr_need_pages) +
|
page2offset (nr_need_pages) +
|
||||||
ADDITIONAL_SIZE + STACK_SIZE, ALIGN_SIZE);
|
ADDITIONAL_SIZE + STACK_SIZE, ALIGN_SIZE);
|
||||||
if (!xen_state.xen_inf.virt_base)
|
|
||||||
try_virt_end += PAGE_SIZE;
|
|
||||||
|
|
||||||
err = get_pgtable_size (xen_state.xen_inf.virt_base, try_virt_end,
|
err = get_pgtable_size (xen_state.xen_inf.virt_base, try_virt_end,
|
||||||
nr_info_pages);
|
nr_info_pages);
|
||||||
|
@ -433,7 +431,7 @@ grub_xen_pt_alloc (void)
|
||||||
if (xen_state.xen_inf.virt_base)
|
if (xen_state.xen_inf.virt_base)
|
||||||
err = get_pgtable_size (0, PAGE_SIZE, nr_need_pages);
|
err = get_pgtable_size (0, PAGE_SIZE, nr_need_pages);
|
||||||
else
|
else
|
||||||
err = get_pgtable_size (try_virt_end - PAGE_SIZE, try_virt_end,
|
err = get_pgtable_size (try_virt_end, try_virt_end + PAGE_SIZE,
|
||||||
nr_need_pages);
|
nr_need_pages);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
|
@ -19,9 +19,10 @@
|
||||||
#include <grub/xen_file.h>
|
#include <grub/xen_file.h>
|
||||||
#include <grub/i386/linux.h>
|
#include <grub/i386/linux.h>
|
||||||
#include <grub/misc.h>
|
#include <grub/misc.h>
|
||||||
|
|
||||||
#include <grub/verity-hash.h>
|
#include <grub/verity-hash.h>
|
||||||
|
|
||||||
|
#define XZ_MAGIC "\3757zXZ\0"
|
||||||
|
|
||||||
grub_elf_t
|
grub_elf_t
|
||||||
grub_xen_file (grub_file_t file)
|
grub_xen_file (grub_file_t file)
|
||||||
{
|
{
|
||||||
|
@ -36,6 +37,8 @@ grub_xen_file_and_cmdline (grub_file_t file,
|
||||||
grub_elf_t elf;
|
grub_elf_t elf;
|
||||||
struct linux_kernel_header lh;
|
struct linux_kernel_header lh;
|
||||||
grub_file_t off_file;
|
grub_file_t off_file;
|
||||||
|
grub_uint32_t payload_offset, payload_length;
|
||||||
|
grub_uint8_t magic[6];
|
||||||
|
|
||||||
elf = grub_elf_file (file, file->name);
|
elf = grub_elf_file (file, file->name);
|
||||||
if (elf)
|
if (elf)
|
||||||
|
@ -56,23 +59,39 @@ grub_xen_file_and_cmdline (grub_file_t file,
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lh.payload_length < 4)
|
payload_length = lh.payload_length;
|
||||||
|
payload_offset = (lh.setup_sects + 1) * 512
|
||||||
|
+ lh.payload_offset;
|
||||||
|
|
||||||
|
if (payload_length < sizeof (magic))
|
||||||
{
|
{
|
||||||
grub_error (GRUB_ERR_BAD_OS, "payload too short");
|
grub_error (GRUB_ERR_BAD_OS, "payload too short");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
grub_dprintf ("xen", "found bzimage payload 0x%llx-0x%llx\n",
|
grub_dprintf ("xen", "found bzimage payload 0x%llx-0x%llx\n",
|
||||||
(unsigned long long) (lh.setup_sects + 1) * 512
|
(unsigned long long) payload_offset,
|
||||||
+ lh.payload_offset,
|
|
||||||
(unsigned long long) lh.payload_length);
|
(unsigned long long) lh.payload_length);
|
||||||
|
|
||||||
if (cmdline)
|
if (cmdline)
|
||||||
grub_pass_verity_hash (&lh, cmdline, cmdline_max_len);
|
grub_pass_verity_hash (&lh, cmdline, cmdline_max_len);
|
||||||
|
|
||||||
off_file = grub_file_offset_open (file, (lh.setup_sects + 1) * 512
|
grub_file_seek (file, payload_offset);
|
||||||
+ lh.payload_offset,
|
|
||||||
lh.payload_length);
|
if (grub_file_read (file, &magic, sizeof (magic)) != sizeof (magic))
|
||||||
|
{
|
||||||
|
if (!grub_errno)
|
||||||
|
grub_error (GRUB_ERR_BAD_OS, N_("premature end of file %s"),
|
||||||
|
file->name);
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Kernel suffixes xz payload with their uncompressed size.
|
||||||
|
Trim it. */
|
||||||
|
if (grub_memcmp (magic, XZ_MAGIC, sizeof (XZ_MAGIC) - 1) == 0)
|
||||||
|
payload_length -= 4;
|
||||||
|
off_file = grub_file_offset_open (file, payload_offset,
|
||||||
|
payload_length);
|
||||||
if (!off_file)
|
if (!off_file)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
|
|
|
@ -1144,6 +1144,16 @@ grub_bidi_line_logical_to_visual (const grub_uint32_t *logical,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
is_visible (const struct grub_unicode_glyph *gl)
|
||||||
|
{
|
||||||
|
if (gl->ncomb)
|
||||||
|
return 1;
|
||||||
|
if (gl->base == GRUB_UNICODE_LRM || gl->base == GRUB_UNICODE_RLM)
|
||||||
|
return 0;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
grub_ssize_t
|
grub_ssize_t
|
||||||
grub_bidi_logical_to_visual (const grub_uint32_t *logical,
|
grub_bidi_logical_to_visual (const grub_uint32_t *logical,
|
||||||
grub_size_t logical_len,
|
grub_size_t logical_len,
|
||||||
|
@ -1164,6 +1174,7 @@ grub_bidi_logical_to_visual (const grub_uint32_t *logical,
|
||||||
if (ptr == logical + logical_len || *ptr == '\n')
|
if (ptr == logical + logical_len || *ptr == '\n')
|
||||||
{
|
{
|
||||||
grub_ssize_t ret;
|
grub_ssize_t ret;
|
||||||
|
grub_ssize_t i, j;
|
||||||
ret = grub_bidi_line_logical_to_visual (line_start,
|
ret = grub_bidi_line_logical_to_visual (line_start,
|
||||||
ptr - line_start,
|
ptr - line_start,
|
||||||
visual_ptr,
|
visual_ptr,
|
||||||
|
@ -1182,7 +1193,10 @@ grub_bidi_logical_to_visual (const grub_uint32_t *logical,
|
||||||
grub_free (*visual_out);
|
grub_free (*visual_out);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
visual_ptr += ret;
|
for (i = 0, j = 0; i < ret; i++)
|
||||||
|
if (is_visible(&visual_ptr[i]))
|
||||||
|
visual_ptr[j++] = visual_ptr[i];
|
||||||
|
visual_ptr += j;
|
||||||
line_start = ptr;
|
line_start = ptr;
|
||||||
if (ptr != logical + logical_len)
|
if (ptr != logical + logical_len)
|
||||||
{
|
{
|
||||||
|
|
|
@ -380,24 +380,30 @@ get_btrfs_fs_prefix (const char *mount_path)
|
||||||
char **
|
char **
|
||||||
grub_find_root_devices_from_mountinfo (const char *dir, char **relroot)
|
grub_find_root_devices_from_mountinfo (const char *dir, char **relroot)
|
||||||
{
|
{
|
||||||
FILE *fp;
|
FILE *fp = NULL;
|
||||||
char *buf = NULL;
|
char *buf = NULL;
|
||||||
size_t len = 0;
|
size_t len = 0;
|
||||||
grub_size_t entry_len = 0, entry_max = 4;
|
grub_size_t entry_len, entry_max = 4;
|
||||||
struct mountinfo_entry *entries;
|
struct mountinfo_entry *entries;
|
||||||
struct mountinfo_entry parent_entry = { 0, 0, 0, "", "", "", "" };
|
struct mountinfo_entry parent_entry = { 0, 0, 0, "", "", "", "" };
|
||||||
int i;
|
int i;
|
||||||
|
int retry = 0;
|
||||||
|
int dir_fd = -1;
|
||||||
|
char **ret = NULL;
|
||||||
|
|
||||||
if (! *dir)
|
if (! *dir)
|
||||||
dir = "/";
|
dir = "/";
|
||||||
if (relroot)
|
if (relroot)
|
||||||
*relroot = NULL;
|
*relroot = NULL;
|
||||||
|
|
||||||
|
entries = xmalloc (entry_max * sizeof (*entries));
|
||||||
|
|
||||||
|
again:
|
||||||
fp = grub_util_fopen ("/proc/self/mountinfo", "r");
|
fp = grub_util_fopen ("/proc/self/mountinfo", "r");
|
||||||
if (! fp)
|
if (! fp)
|
||||||
return NULL; /* fall through to other methods */
|
goto out; /* fall through to other methods */
|
||||||
|
|
||||||
entries = xmalloc (entry_max * sizeof (*entries));
|
entry_len = 0;
|
||||||
|
|
||||||
/* First, build a list of relevant visible mounts. */
|
/* First, build a list of relevant visible mounts. */
|
||||||
while (getline (&buf, &len, fp) > 0)
|
while (getline (&buf, &len, fp) > 0)
|
||||||
|
@ -484,7 +490,6 @@ grub_find_root_devices_from_mountinfo (const char *dir, char **relroot)
|
||||||
/* Now scan visible mounts for the ones we're interested in. */
|
/* Now scan visible mounts for the ones we're interested in. */
|
||||||
for (i = entry_len - 1; i >= 0; i--)
|
for (i = entry_len - 1; i >= 0; i--)
|
||||||
{
|
{
|
||||||
char **ret = NULL;
|
|
||||||
char *fs_prefix = NULL;
|
char *fs_prefix = NULL;
|
||||||
if (!*entries[i].device)
|
if (!*entries[i].device)
|
||||||
continue;
|
continue;
|
||||||
|
@ -515,6 +520,23 @@ grub_find_root_devices_from_mountinfo (const char *dir, char **relroot)
|
||||||
ret = grub_find_root_devices_from_btrfs (dir);
|
ret = grub_find_root_devices_from_btrfs (dir);
|
||||||
fs_prefix = get_btrfs_fs_prefix (entries[i].enc_path);
|
fs_prefix = get_btrfs_fs_prefix (entries[i].enc_path);
|
||||||
}
|
}
|
||||||
|
else if (!retry && grub_strcmp (entries[i].fstype, "autofs") == 0)
|
||||||
|
{
|
||||||
|
/* If the best match is automounted, try to trigger mount. We cannot
|
||||||
|
simply return here because stat() on automounted directory does not
|
||||||
|
trigger mount and returns bogus (pseudo)device number instead.
|
||||||
|
We keep mountpoint open until end of scan to prevent timeout. */
|
||||||
|
|
||||||
|
int flags = O_RDONLY|O_DIRECTORY;
|
||||||
|
|
||||||
|
fclose (fp);
|
||||||
|
#ifdef O_LARGEFILE
|
||||||
|
flags |= O_LARGEFILE;
|
||||||
|
#endif
|
||||||
|
dir_fd = open (entries[i].enc_path, flags);
|
||||||
|
retry = 1;
|
||||||
|
goto again;
|
||||||
|
}
|
||||||
if (!ret)
|
if (!ret)
|
||||||
{
|
{
|
||||||
ret = xmalloc (2 * sizeof (ret[0]));
|
ret = xmalloc (2 * sizeof (ret[0]));
|
||||||
|
@ -544,16 +566,17 @@ grub_find_root_devices_from_mountinfo (const char *dir, char **relroot)
|
||||||
}
|
}
|
||||||
if (fs_prefix != entries[i].enc_root)
|
if (fs_prefix != entries[i].enc_root)
|
||||||
free (fs_prefix);
|
free (fs_prefix);
|
||||||
free (buf);
|
break;
|
||||||
free (entries);
|
|
||||||
fclose (fp);
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
out:
|
||||||
free (buf);
|
free (buf);
|
||||||
free (entries);
|
free (entries);
|
||||||
fclose (fp);
|
if (fp)
|
||||||
return NULL;
|
fclose (fp);
|
||||||
|
if (dir_fd != -1)
|
||||||
|
close (dir_fd);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
|
|
|
@ -251,7 +251,6 @@ grub_script_lexer_init (struct grub_parser_param *parser, char *script,
|
||||||
{
|
{
|
||||||
parser->lexerstate = 0;
|
parser->lexerstate = 0;
|
||||||
yylex_destroy (lexerstate->yyscanner);
|
yylex_destroy (lexerstate->yyscanner);
|
||||||
grub_free (lexerstate->yyscanner);
|
|
||||||
grub_free (lexerstate->text);
|
grub_free (lexerstate->text);
|
||||||
grub_free (lexerstate);
|
grub_free (lexerstate);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -668,6 +668,7 @@ draw_cursor (int show)
|
||||||
unsigned int y;
|
unsigned int y;
|
||||||
unsigned int width;
|
unsigned int width;
|
||||||
unsigned int height;
|
unsigned int height;
|
||||||
|
unsigned int ascent;
|
||||||
grub_video_color_t color;
|
grub_video_color_t color;
|
||||||
|
|
||||||
write_char ();
|
write_char ();
|
||||||
|
@ -679,13 +680,18 @@ draw_cursor (int show)
|
||||||
>= virtual_screen.rows)
|
>= virtual_screen.rows)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
/* Ensure that cursor doesn't go outside of character box. */
|
||||||
|
ascent = grub_font_get_ascent(virtual_screen.font);
|
||||||
|
if (ascent > virtual_screen.normal_char_height - 2)
|
||||||
|
ascent = virtual_screen.normal_char_height - 2;
|
||||||
|
|
||||||
/* Determine cursor properties and position on text layer. */
|
/* Determine cursor properties and position on text layer. */
|
||||||
x = virtual_screen.cursor_x * virtual_screen.normal_char_width;
|
x = virtual_screen.cursor_x * virtual_screen.normal_char_width;
|
||||||
width = virtual_screen.normal_char_width;
|
width = virtual_screen.normal_char_width;
|
||||||
color = virtual_screen.fg_color;
|
color = virtual_screen.fg_color;
|
||||||
y = ((virtual_screen.cursor_y + virtual_screen.total_scroll)
|
y = ((virtual_screen.cursor_y + virtual_screen.total_scroll)
|
||||||
* virtual_screen.normal_char_height
|
* virtual_screen.normal_char_height
|
||||||
+ grub_font_get_ascent (virtual_screen.font));
|
+ ascent);
|
||||||
height = 2;
|
height = 2;
|
||||||
|
|
||||||
/* Render cursor to text layer. */
|
/* Render cursor to text layer. */
|
||||||
|
|
|
@ -1,101 +1,101 @@
|
||||||
{ "cmdline_cat", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0x24285504, 0x24285504, 0x3cc7ae1, 0x3cc7ae1, 0x20e2971b, 0x20e2971b, 0xc295b4fc, 0xc295b4fc, 0x1fbe0d4, 0x1fbe0d4, 0x82930744, 0x82930744, 0xf4b66805, 0xf4b66805, 0x3e16a8c5, 0x3e16a8c5, 0x1165d7dc, 0x1165d7dc, 0xfa78cf7f, 0xfa78cf7f, 0xc105a544, 0xc105a544, 0x430cee22, 0x430cee22, 0xbcf938a0, 0xbcf938a0, 0x7b800045, 0x7b800045, 0x2cc85143, 0x2cc85143, 0x80e0a4b4, 0x80e0a4b4, 0x212e8415, 0x212e8415, 0x151d5163, 0x151d5163, 0x24dcfa9e, 0x24dcfa9e, 0xb1df21b2, 0xb1df21b2, 0x2990a5cf, 0x8c1740a5, 0xd29f2d17, 0xd29f2d17, }, 45 },
|
{ "cmdline_cat", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0xcd5fc34e, 0xcd5fc34e, 0xeabbecab, 0xeabbecab, 0xc9950151, 0xc9950151, 0x2be222b6, 0x2be222b6, 0xe88c769e, 0xe88c769e, 0x6be4910e, 0x6be4910e, 0x1dc1fe4f, 0x1dc1fe4f, 0xd7613e8f, 0xd7613e8f, 0xf8124196, 0xf8124196, 0x130f5935, 0x130f5935, 0x2872330e, 0x2872330e, 0xaa7b7868, 0xaa7b7868, 0x558eaeea, 0x558eaeea, 0x92f7960f, 0x92f7960f, 0xc5bfc709, 0xc5bfc709, 0x699732fe, 0x699732fe, 0xc859125f, 0xc859125f, 0xfc6ac729, 0xfc6ac729, 0xcdab6cd4, 0xcdab6cd4, 0x58a8b7f8, 0x58a8b7f8, 0xc0e73385, 0x6560d6ef, 0x3be8bb5d, 0x3be8bb5d, }, 45 },
|
||||||
{ "cmdline_cat", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x2b224886, 0x2b224886, 0x4fa52ab9, 0x4fa52ab9, 0xad8716fa, 0xad8716fa, 0x97a64f1, 0x97a64f1, 0x5fa72700, 0x5fa72700, 0x41913bce, 0x41913bce, 0xe3e6af02, 0xe3e6af02, 0x978a4f3c, 0x978a4f3c, 0xfdedd645, 0xfdedd645, 0x4700a76, 0x4700a76, 0x28761dd2, 0x28761dd2, 0x255a96e8, 0x255a96e8, 0x6eb066fa, 0x6eb066fa, 0x5948e6c4, 0x5948e6c4, 0xc2d83034, 0xc2d83034, 0xe9cc8934, 0xe9cc8934, 0x406490d, 0x406490d, 0x2287423f, 0x2287423f, 0x565ef88b, 0x565ef88b, 0x31af9b10, 0x31af9b10, 0xfbd17ce0, 0xdb686c61, 0xd2731a72, 0xd2731a72, }, 45 },
|
{ "cmdline_cat", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x13029f94, 0x13029f94, 0x7785fdab, 0x7785fdab, 0x95a7c1e8, 0x95a7c1e8, 0x315ab3e3, 0x315ab3e3, 0x6787f012, 0x6787f012, 0x79b1ecdc, 0x79b1ecdc, 0xdbc67810, 0xdbc67810, 0xafaa982e, 0xafaa982e, 0xc5cd0157, 0xc5cd0157, 0x3c50dd64, 0x3c50dd64, 0x1056cac0, 0x1056cac0, 0x1d7a41fa, 0x1d7a41fa, 0x5690b1e8, 0x5690b1e8, 0x616831d6, 0x616831d6, 0xfaf8e726, 0xfaf8e726, 0xd1ec5e26, 0xd1ec5e26, 0x3c269e1f, 0x3c269e1f, 0x1aa7952d, 0x1aa7952d, 0x6e7e2f99, 0x6e7e2f99, 0x98f4c02, 0x98f4c02, 0xc3f1abf2, 0xe348bb73, 0xea53cd60, 0xea53cd60, }, 45 },
|
||||||
{ "cmdline_cat", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0x999febcd, 0x999febcd, 0x4be4a5e6, 0x4be4a5e6, 0xaa36e979, 0xaa36e979, 0x27ebab0f, 0x27ebab0f, 0x6fa8606c, 0x6fa8606c, 0xd3f60410, 0xd3f60410, 0xa3aea110, 0xa3aea110, 0x5b352e4b, 0x5b352e4b, 0xad22636f, 0xad22636f, 0x54333936, 0x54333936, 0x73d67c9f, 0x73d67c9f, 0xb4462f4a, 0xb4462f4a, 0x1dffdbca, 0x1dffdbca, 0x7095a788, 0x7095a788, 0xc71aa28, 0xc71aa28, 0x215e8dfc, 0x215e8dfc, 0x388d3494, 0x388d3494, 0x5804733d, 0x5804733d, 0x98ef7a83, 0x98ef7a83, 0xc986bddb, 0xc986bddb, 0x183599ab, 0xf4204ada, 0x6562dd40, 0x6562dd40, }, 45 },
|
{ "cmdline_cat", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0x8fbb4f4c, 0x8fbb4f4c, 0x5dc00167, 0x5dc00167, 0xbc124df8, 0xbc124df8, 0x31cf0f8e, 0x31cf0f8e, 0x798cc4ed, 0x798cc4ed, 0xc5d2a091, 0xc5d2a091, 0xb58a0591, 0xb58a0591, 0x4d118aca, 0x4d118aca, 0xbb06c7ee, 0xbb06c7ee, 0x42179db7, 0x42179db7, 0x65f2d81e, 0x65f2d81e, 0xa2628bcb, 0xa2628bcb, 0xbdb7f4b, 0xbdb7f4b, 0x66b10309, 0x66b10309, 0x1a550ea9, 0x1a550ea9, 0x377a297d, 0x377a297d, 0x2ea99015, 0x2ea99015, 0x4e20d7bc, 0x4e20d7bc, 0x8ecbde02, 0x8ecbde02, 0xdfa2195a, 0xdfa2195a, 0xe113d2a, 0xe204ee5b, 0x734679c1, 0x734679c1, }, 45 },
|
||||||
{ "cmdline_cat", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0xea25e7f1, 0xea25e7f1, 0xf959b605, 0xf959b605, 0x5650ee99, 0x5650ee99, 0xbf3bec3c, 0xbf3bec3c, 0x8d04d782, 0x8d04d782, 0xddbcf5be, 0xddbcf5be, 0x7ee1adaf, 0x7ee1adaf, 0x2fbaff58, 0x2fbaff58, 0x42b24add, 0x42b24add, 0x47483eb4, 0x47483eb4, 0x78962528, 0x78962528, 0x847ee9b7, 0x847ee9b7, 0xc826c0f, 0xc826c0f, 0x82b1bf51, 0x82b1bf51, 0x13ccc821, 0x13ccc821, 0x7d783b1e, 0x7d783b1e, 0xdd2c0bbc, 0xdd2c0bbc, 0x7b71ebd7, 0x7b71ebd7, 0x7381f4c5, 0x7381f4c5, 0xfe20bc9c, 0xfe20bc9c, 0x85dee923, 0x85611b00, 0x723c0ec4, 0x723c0ec4, }, 45 },
|
{ "cmdline_cat", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0xe2f6bfe1, 0xe2f6bfe1, 0xf18aee15, 0xf18aee15, 0x5e83b689, 0x5e83b689, 0xb7e8b42c, 0xb7e8b42c, 0x85d78f92, 0x85d78f92, 0xd56fadae, 0xd56fadae, 0x7632f5bf, 0x7632f5bf, 0x2769a748, 0x2769a748, 0x4a6112cd, 0x4a6112cd, 0x4f9b66a4, 0x4f9b66a4, 0x70457d38, 0x70457d38, 0x8cadb1a7, 0x8cadb1a7, 0x451341f, 0x451341f, 0x8a62e741, 0x8a62e741, 0x1b1f9031, 0x1b1f9031, 0x75ab630e, 0x75ab630e, 0xd5ff53ac, 0xd5ff53ac, 0x73a2b3c7, 0x73a2b3c7, 0x7b52acd5, 0x7b52acd5, 0xf6f3e48c, 0xf6f3e48c, 0x8d0db133, 0x8db24310, 0x7aef56d4, 0x7aef56d4, }, 45 },
|
||||||
{ "cmdline_cat", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0xbc52dc5f, 0xbc52dc5f, 0x4c895989, 0x4c895989, 0x59d180a4, 0x59d180a4, 0x50eb81b9, 0x50eb81b9, 0xae85d6c6, 0xae85d6c6, 0xf8354df6, 0xf8354df6, 0x83562153, 0x83562153, 0xd4caece2, 0xd4caece2, 0xb0b5612d, 0xb0b5612d, 0x123d360a, 0x123d360a, 0x70f62e8e, 0x70f62e8e, 0x6a82788f, 0x6a82788f, 0xb0a3ee68, 0xb0a3ee68, 0x604dd5b0, 0x604dd5b0, 0x20f7ea1, 0x20f7ea1, 0x3f6db6bf, 0x3f6db6bf, 0x4a762b9d, 0x4a762b9d, 0xea026ad4, 0xea026ad4, 0x8ba3d148, 0x8ba3d148, 0x434f2359, 0x434f2359, 0x4db299a1, 0x73536949, 0xf022eb4b, 0xf022eb4b, }, 45 },
|
{ "cmdline_cat", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0x838a3f40, 0x838a3f40, 0x7351ba96, 0x7351ba96, 0x660963bb, 0x660963bb, 0x6f3362a6, 0x6f3362a6, 0x915d35d9, 0x915d35d9, 0xc7edaee9, 0xc7edaee9, 0xbc8ec24c, 0xbc8ec24c, 0xeb120ffd, 0xeb120ffd, 0x8f6d8232, 0x8f6d8232, 0x2de5d515, 0x2de5d515, 0x4f2ecd91, 0x4f2ecd91, 0x555a9b90, 0x555a9b90, 0x8f7b0d77, 0x8f7b0d77, 0x5f9536af, 0x5f9536af, 0x3dd79dbe, 0x3dd79dbe, 0xb555a0, 0xb555a0, 0x75aec882, 0x75aec882, 0xd5da89cb, 0xd5da89cb, 0xb47b3257, 0xb47b3257, 0x7c97c046, 0x7c97c046, 0x726a7abe, 0x4c8b8a56, 0xcffa0854, 0xcffa0854, }, 45 },
|
||||||
{ "cmdline_cat", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0x7cfd676, 0x7cfd676, 0xaf7bcdc6, 0xaf7bcdc6, 0x7dc1f958, 0x7dc1f958, 0xc902ad3e, 0xc902ad3e, 0x5529ad04, 0x5529ad04, 0xa0a133b1, 0xa0a133b1, 0x72f927da, 0x72f927da, 0x28de6d8e, 0x28de6d8e, 0xa5eb10fc, 0xa5eb10fc, 0x2d7ba4f5, 0x2d7ba4f5, 0xd832b228, 0xd832b228, 0x56f0351, 0x56f0351, 0xc6556c2e, 0xc6556c2e, 0x2ceecfa4, 0x2ceecfa4, 0x3d765fbd, 0x3d765fbd, 0x8da7887e, 0x8da7887e, 0xfc8209ea, 0xfc8209ea, 0x6e822767, 0x6e822767, 0xba5c0adf, 0xba5c0adf, 0x8e2af81a, 0x8e2af81a, 0x62c25eb4, 0x2ba315e0, 0x349b7b7d, 0x349b7b7d, }, 45 },
|
{ "cmdline_cat", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0x7bf761e, 0x7bf761e, 0xaf0b6dae, 0xaf0b6dae, 0x7db15930, 0x7db15930, 0xc9720d56, 0xc9720d56, 0x55590d6c, 0x55590d6c, 0xa0d193d9, 0xa0d193d9, 0x728987b2, 0x728987b2, 0x28aecde6, 0x28aecde6, 0xa59bb094, 0xa59bb094, 0x2d0b049d, 0x2d0b049d, 0xd8421240, 0xd8421240, 0x51fa339, 0x51fa339, 0xc625cc46, 0xc625cc46, 0x2c9e6fcc, 0x2c9e6fcc, 0x3d06ffd5, 0x3d06ffd5, 0x8dd72816, 0x8dd72816, 0xfcf2a982, 0xfcf2a982, 0x6ef2870f, 0x6ef2870f, 0xba2caab7, 0xba2caab7, 0x8e5a5872, 0x8e5a5872, 0x62b2fedc, 0x2bd3b588, 0x34ebdb15, 0x34ebdb15, }, 45 },
|
||||||
{ "cmdline_cat", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0x361fdea5, 0x361fdea5, 0x89a3b488, 0x89a3b488, 0x37302fbe, 0x37302fbe, 0x4b9f20b8, 0x4b9f20b8, 0xc60cf5fe, 0xc60cf5fe, 0xf7b755aa, 0xf7b755aa, 0xcaba5d52, 0xcaba5d52, 0x4f793adf, 0x4f793adf, 0x4cd60722, 0x4cd60722, 0x13adbeec, 0x13adbeec, 0xdc2c109f, 0xdc2c109f, 0x444e465a, 0x444e465a, 0x7baac5fa, 0x7baac5fa, 0x8e746e7f, 0x8e746e7f, 0x7fea6e68, 0x7fea6e68, 0x1f6edf48, 0x1f6edf48, 0x23322506, 0x23322506, 0xbccd38ef, 0xbccd38ef, 0x1b1f1dd3, 0x1b1f1dd3, 0x9c901775, 0x9c901775, 0x78b8e355, 0x95034aa2, 0x4f00ee83, 0x4f00ee83, }, 45 },
|
{ "cmdline_cat", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0xa133280a, 0xa133280a, 0x1e8f4227, 0x1e8f4227, 0xa01cd911, 0xa01cd911, 0xdcb3d617, 0xdcb3d617, 0x51200351, 0x51200351, 0x609ba305, 0x609ba305, 0x5d96abfd, 0x5d96abfd, 0xd855cc70, 0xd855cc70, 0xdbfaf18d, 0xdbfaf18d, 0x84814843, 0x84814843, 0x4b00e630, 0x4b00e630, 0xd362b0f5, 0xd362b0f5, 0xec863355, 0xec863355, 0x195898d0, 0x195898d0, 0xe8c698c7, 0xe8c698c7, 0x884229e7, 0x884229e7, 0xb41ed3a9, 0xb41ed3a9, 0x2be1ce40, 0x2be1ce40, 0x8c33eb7c, 0x8c33eb7c, 0xbbce1da, 0xbbce1da, 0xef9415fa, 0x22fbc0d, 0xd82c182c, 0xd82c182c, }, 45 },
|
||||||
{ "gfxterm_menu", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0xdf032925, 0xb9ccc5a6, 0xdf032925, 0x9cf5e462, 0x59c36f00, 0x59c36f00, 0xd3a0a4df, 0xd3a0a4df, 0xd3a0a4df, 0xad20c9b9, 0xad20c9b9, 0xad20c9b9, 0xcfd6dc6b, 0xcfd6dc6b, 0xcfd6dc6b, 0x59c36f00, 0x9cf5e462, 0x9cf5e462, 0x59c36f00, }, 20 },
|
{ "gfxterm_menu", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0xbe029c, 0x6671ee1f, 0xbe029c, 0x4348cfdb, 0x59c36f00, 0x59c36f00, 0x3ad73295, 0x3ad73295, 0x3ad73295, 0x44575ff3, 0x44575ff3, 0x44575ff3, 0x26a14a21, 0x26a14a21, 0x26a14a21, 0x59c36f00, 0x4348cfdb, 0x4348cfdb, 0x59c36f00, }, 20 },
|
||||||
{ "gfxterm_menu", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0xa24e444d, 0x664c3f5, 0xa24e444d, 0x8c4bc132, 0xaa4593fe, 0xaa4593fe, 0x86e14b09, 0x86e14b09, 0x86e14b09, 0x2014466e, 0x2014466e, 0x2014466e, 0xd2ced16, 0xd2ced16, 0xd2ced16, 0xaa4593fe, 0x8c4bc132, 0x8c4bc132, 0xaa4593fe, }, 20 },
|
{ "gfxterm_menu", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x14e228ef, 0xb0c8af57, 0x14e228ef, 0x3ae7ad90, 0xaa4593fe, 0xaa4593fe, 0xbec19c1b, 0xbec19c1b, 0xbec19c1b, 0x1834917c, 0x1834917c, 0x1834917c, 0x350c3a04, 0x350c3a04, 0x350c3a04, 0xaa4593fe, 0x3ae7ad90, 0x3ae7ad90, 0xaa4593fe, }, 20 },
|
||||||
{ "gfxterm_menu", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0x6fa41086, 0xd5284f5e, 0x6fa41086, 0x32b37d02, 0xc9cbf769, 0xc9cbf769, 0xf2a2bdc8, 0xf2a2bdc8, 0xf2a2bdc8, 0xc7a7c04, 0xc7a7c04, 0xc7a7c04, 0xe530c30c, 0xe530c30c, 0xe530c30c, 0xc9cbf769, 0x32b37d02, 0x32b37d02, 0xc9cbf769, }, 20 },
|
{ "gfxterm_menu", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0x651fb144, 0xdf93ee9c, 0x651fb144, 0x3808dcc0, 0xc9cbf769, 0xc9cbf769, 0xe4861949, 0xe4861949, 0xe4861949, 0x1a5ed885, 0x1a5ed885, 0x1a5ed885, 0xf314678d, 0xf314678d, 0xf314678d, 0xc9cbf769, 0x3808dcc0, 0x3808dcc0, 0xc9cbf769, }, 20 },
|
||||||
{ "gfxterm_menu", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0xd084e37c, 0x6324ea4b, 0xd084e37c, 0x7ed2aaa4, 0x9813a416, 0x9813a416, 0xbd3bd80c, 0xbd3bd80c, 0xbd3bd80c, 0x2ce05e3f, 0x2ce05e3f, 0x2ce05e3f, 0x355a63ef, 0x355a63ef, 0x355a63ef, 0x9813a416, 0x7ed2aaa4, 0x7ed2aaa4, 0x9813a416, }, 20 },
|
{ "gfxterm_menu", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0xdfd0119e, 0x6c7018a9, 0xdfd0119e, 0x71865846, 0x9813a416, 0x9813a416, 0xb5e8801c, 0xb5e8801c, 0xb5e8801c, 0x2433062f, 0x2433062f, 0x2433062f, 0x3d893bff, 0x3d893bff, 0x3d893bff, 0x9813a416, 0x71865846, 0x71865846, 0x9813a416, }, 20 },
|
||||||
{ "gfxterm_menu", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0x451273fe, 0x55e4689f, 0x451273fe, 0x33b4464d, 0x5fcf013d, 0x5fcf013d, 0xbe43bf51, 0xbe43bf51, 0xbe43bf51, 0x6c53a727, 0x6c53a727, 0x6c53a727, 0x7a2098b8, 0x7a2098b8, 0x7a2098b8, 0x5fcf013d, 0x33b4464d, 0x33b4464d, 0x5fcf013d, }, 20 },
|
{ "gfxterm_menu", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0x4e4844e0, 0x5ebe5f81, 0x4e4844e0, 0x38ee7153, 0x5fcf013d, 0x5fcf013d, 0x819b5c4e, 0x819b5c4e, 0x819b5c4e, 0x538b4438, 0x538b4438, 0x538b4438, 0x45f87ba7, 0x45f87ba7, 0x45f87ba7, 0x5fcf013d, 0x38ee7153, 0x38ee7153, 0x5fcf013d, }, 20 },
|
||||||
{ "gfxterm_menu", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0x93132338, 0xc76b87e6, 0x93132338, 0x8816f93f, 0xdd28f52b, 0xdd28f52b, 0xcdf3c404, 0xcdf3c404, 0xcdf3c404, 0xeccf3de0, 0xeccf3de0, 0xeccf3de0, 0x9177f66c, 0x9177f66c, 0x9177f66c, 0xdd28f52b, 0x8816f93f, 0x8816f93f, 0xdd28f52b, }, 20 },
|
{ "gfxterm_menu", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0x701427d4, 0x246c830a, 0x701427d4, 0x6b11fdd3, 0xdd28f52b, 0xdd28f52b, 0xcd83646c, 0xcd83646c, 0xcd83646c, 0xecbf9d88, 0xecbf9d88, 0xecbf9d88, 0x91075604, 0x91075604, 0x91075604, 0xdd28f52b, 0x6b11fdd3, 0x6b11fdd3, 0xdd28f52b, }, 20 },
|
||||||
{ "gfxterm_menu", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0xae6a4ef5, 0x5fb9948, 0xae6a4ef5, 0x51d55575, 0x43d1f34, 0x43d1f34, 0x252c3625, 0x252c3625, 0x252c3625, 0x5a269f8d, 0x5a269f8d, 0x5a269f8d, 0xc3779a0b, 0xc3779a0b, 0xc3779a0b, 0x43d1f34, 0x51d55575, 0x51d55575, 0x43d1f34, }, 20 },
|
{ "gfxterm_menu", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0x7b5bd4c, 0xac246af1, 0x7b5bd4c, 0xf80aa6cc, 0x43d1f34, 0x43d1f34, 0xb200c08a, 0xb200c08a, 0xb200c08a, 0xcd0a6922, 0xcd0a6922, 0xcd0a6922, 0x545b6ca4, 0x545b6ca4, 0x545b6ca4, 0x43d1f34, 0xf80aa6cc, 0xf80aa6cc, 0x43d1f34, }, 20 },
|
||||||
{ "gfxmenu", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0x60e56714, 0x14275a99, 0x60e56714, 0x35080c92, 0x9a2e0d26, 0xc53fe194, 0xc53fe194, 0xc53fe194, 0x99e71754, 0x99e71754, 0x99e71754, 0xb07fd9c6, 0xb07fd9c6, 0xb07fd9c6, 0x59c36f00, 0x35080c92, 0x35080c92, }, 18 },
|
{ "gfxmenu", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0x1027210c, 0x64e51c81, 0x1027210c, 0x45ca4a8a, 0x9a2e0d26, 0x12fd0f21, 0x12fd0f21, 0x12fd0f21, 0x4e25f9e1, 0x4e25f9e1, 0x4e25f9e1, 0x67bd3773, 0x67bd3773, 0x67bd3773, 0x59c36f00, 0x45ca4a8a, 0x45ca4a8a, }, 18 },
|
||||||
{ "gfxmenu", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x33d94a8c, 0x7b789e53, 0x33d94a8c, 0xe8b9b6bf, 0xa9d58ccd, 0x8cf0d333, 0x8cf0d333, 0x8cf0d333, 0xd9af7939, 0xd9af7939, 0xd9af7939, 0xb09cb170, 0xb09cb170, 0xb09cb170, 0xaa4593fe, 0xe8b9b6bf, 0xe8b9b6bf, }, 18 },
|
{ "gfxmenu", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x8d12f697, 0xc5b32248, 0x8d12f697, 0x56720aa4, 0xa9d58ccd, 0xf766a14d, 0xf766a14d, 0xf766a14d, 0xa2390b47, 0xa2390b47, 0xa2390b47, 0xcb0ac30e, 0xcb0ac30e, 0xcb0ac30e, 0xaa4593fe, 0x56720aa4, 0x56720aa4, }, 18 },
|
||||||
{ "gfxmenu", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0xe4669404, 0x9afa8e99, 0xe4669404, 0xdd25167e, 0x5411be8b, 0x3589841c, 0x3589841c, 0x3589841c, 0x4a372288, 0x4a372288, 0x4a372288, 0x84342f0, 0x84342f0, 0x84342f0, 0xc9cbf769, 0xdd25167e, 0xdd25167e, }, 18 },
|
{ "gfxmenu", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0xa5ec9f45, 0xdb7085d8, 0xa5ec9f45, 0x9caf1d3f, 0x5411be8b, 0xedc0ad83, 0xedc0ad83, 0xedc0ad83, 0x927e0b17, 0x927e0b17, 0x927e0b17, 0xd00a6b6f, 0xd00a6b6f, 0xd00a6b6f, 0xc9cbf769, 0x9caf1d3f, 0x9caf1d3f, }, 18 },
|
||||||
{ "gfxmenu", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x1c3742c9, 0x37ed1568, 0x12f55eef, 0x37ed1568, 0x8aa8ad16, 0x740d78cf, 0x1a9dc2bc, 0x1a9dc2bc, 0x1a9dc2bc, 0xf13828c0, 0xf13828c0, 0xf13828c0, 0xf7732830, 0xf7732830, 0xf7732830, 0x1c3742c9, 0x8aa8ad16, 0x8aa8ad16, }, 18 },
|
{ "gfxmenu", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x1c3742c9, 0xce8e83bf, 0xeb96c838, 0xce8e83bf, 0x73cb3bc1, 0x740d78cf, 0xb35c7e64, 0xb35c7e64, 0xb35c7e64, 0x58f99418, 0x58f99418, 0x58f99418, 0x5eb294e8, 0x5eb294e8, 0x5eb294e8, 0x1c3742c9, 0x73cb3bc1, 0x73cb3bc1, }, 18 },
|
||||||
{ "gfxmenu", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0xcc5a7bed, 0xc5315ac9, 0x7dece9d3, 0xc5315ac9, 0xc84ef08b, 0xbcda144c, 0x321e548b, 0x321e548b, 0x321e548b, 0x5d57889a, 0x5d57889a, 0x5d57889a, 0x50a11699, 0x50a11699, 0x50a11699, 0xcc5a7bed, 0xc84ef08b, 0xc84ef08b, }, 18 },
|
{ "gfxmenu", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0xcc5a7bed, 0x56a03e51, 0xee7d8d4b, 0x56a03e51, 0x5bdf9413, 0xbcda144c, 0x220f7a5e, 0x220f7a5e, 0x220f7a5e, 0x4d46a64f, 0x4d46a64f, 0x4d46a64f, 0x40b0384c, 0x40b0384c, 0x40b0384c, 0xcc5a7bed, 0x5bdf9413, 0x5bdf9413, }, 18 },
|
||||||
{ "gfxmenu", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xef4a3312, 0x40a72ecd, 0x2304571f, 0x40a72ecd, 0xd2de6d81, 0x5d55a141, 0x8ccafa03, 0x8ccafa03, 0x8ccafa03, 0x4a78be1d, 0x4a78be1d, 0x4a78be1d, 0x5e1d6ea2, 0x5e1d6ea2, 0x5e1d6ea2, 0xef4a3312, 0xd2de6d81, 0xd2de6d81, }, 18 },
|
{ "gfxmenu", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xef4a3312, 0xea8a9cf0, 0x8929e522, 0xea8a9cf0, 0x78f3dfbc, 0x5d55a141, 0x377f1aeb, 0x377f1aeb, 0x377f1aeb, 0xf1cd5ef5, 0xf1cd5ef5, 0xf1cd5ef5, 0xe5a88e4a, 0xe5a88e4a, 0xe5a88e4a, 0xef4a3312, 0x78f3dfbc, 0x78f3dfbc, }, 18 },
|
||||||
{ "gfxmenu", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x54e48d80, 0xe6143ead, 0x19816f75, 0xe6143ead, 0xe2db78c2, 0xa992f629, 0x5fefa0d1, 0x5fefa0d1, 0x5fefa0d1, 0xde1c5600, 0xde1c5600, 0xde1c5600, 0x48b8ef6f, 0x48b8ef6f, 0x48b8ef6f, 0x54e48d80, 0xe2db78c2, 0xe2db78c2, }, 18 },
|
{ "gfxmenu", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x54e48d80, 0x6dcf1d57, 0x925a4c8f, 0x6dcf1d57, 0x69005b38, 0x6d6bb4bc, 0x756a36b9, 0x756a36b9, 0x756a36b9, 0xf499c068, 0xf499c068, 0xf499c068, 0x623d7907, 0x623d7907, 0x623d7907, 0x54e48d80, 0x69005b38, 0x69005b38, }, 18 },
|
||||||
{ "gfxterm_ar", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0x25ba43d4, 0x43fe620d, 0x25ba43d4, 0x664c8e93, 0x59c36f00, 0x59c36f00, 0xb2921a37, 0xb2921a37, 0xb2921a37, 0xcc127751, 0xcc127751, 0xcc127751, 0xaee46283, 0xaee46283, 0xaee46283, 0x59c36f00, 0x664c8e93, 0x664c8e93, 0x59c36f00, }, 20 },
|
{ "gfxterm_ar", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0xa49d26b0, 0xaa7d9b28, 0xa49d26b0, 0xe76bebf7, 0x59c36f00, 0x59c36f00, 0xea6ab252, 0xea6ab252, 0xea6ab252, 0x94eadf34, 0x94eadf34, 0x94eadf34, 0xf61ccae6, 0xf61ccae6, 0xf61ccae6, 0x59c36f00, 0xe76bebf7, 0xe76bebf7, 0x59c36f00, }, 20 },
|
||||||
{ "gfxterm_ar", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x2aa2a72b, 0x6d6df6e1, 0x2aa2a72b, 0x4a72254, 0xaa4593fe, 0xaa4593fe, 0xa3be9127, 0xa3be9127, 0xa3be9127, 0x54b9c40, 0x54b9c40, 0x54b9c40, 0x28733738, 0x28733738, 0x28733738, 0xaa4593fe, 0x4a72254, 0x4a72254, 0xaa4593fe, }, 20 },
|
{ "gfxterm_ar", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x7a277db, 0xf3bf80f7, 0x7a277db, 0x29a7f2a4, 0xaa4593fe, 0xaa4593fe, 0xf1cd57e3, 0xf1cd57e3, 0xf1cd57e3, 0x57385a84, 0x57385a84, 0x57385a84, 0x7a00f1fc, 0x7a00f1fc, 0x7a00f1fc, 0xaa4593fe, 0x29a7f2a4, 0x29a7f2a4, 0xaa4593fe, }, 20 },
|
||||||
{ "gfxterm_ar", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0x9e799f98, 0xe21ad041, 0x9e799f98, 0xc36ef21c, 0xc9cbf769, 0xc9cbf769, 0x93d6c07d, 0x93d6c07d, 0x93d6c07d, 0x6d0e01b1, 0x6d0e01b1, 0x6d0e01b1, 0x8444beb9, 0x8444beb9, 0x8444beb9, 0xc9cbf769, 0xc36ef21c, 0xc36ef21c, 0xc9cbf769, }, 20 },
|
{ "gfxterm_ar", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0x631edf85, 0x71926408, 0x631edf85, 0x3e09b201, 0xc9cbf769, 0xc9cbf769, 0xf224ab3, 0xf224ab3, 0xf224ab3, 0xf1fa8b7f, 0xf1fa8b7f, 0xf1fa8b7f, 0x18b03477, 0x18b03477, 0x18b03477, 0xc9cbf769, 0x3e09b201, 0x3e09b201, 0xc9cbf769, }, 20 },
|
||||||
{ "gfxterm_ar", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0x7ffc43fd, 0x64505961, 0x7ffc43fd, 0xd1aa0a25, 0x9813a416, 0x9813a416, 0x5b5f9bd5, 0x5b5f9bd5, 0x5b5f9bd5, 0xca841de6, 0xca841de6, 0xca841de6, 0xd33e2036, 0xd33e2036, 0xd33e2036, 0x9813a416, 0xd1aa0a25, 0xd1aa0a25, 0x9813a416, }, 20 },
|
{ "gfxterm_ar", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0xfbaf4635, 0xe69ef474, 0xfbaf4635, 0x55f90fed, 0x9813a416, 0x9813a416, 0x3aad8f41, 0x3aad8f41, 0x3aad8f41, 0xab760972, 0xab760972, 0xab760972, 0xb2cc34a2, 0xb2cc34a2, 0xb2cc34a2, 0x9813a416, 0x55f90fed, 0x55f90fed, 0x9813a416, }, 20 },
|
||||||
{ "gfxterm_ar", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0x570ca3fc, 0x4f1cee0f, 0x570ca3fc, 0x21aa964f, 0x5fcf013d, 0x5fcf013d, 0xf2bc017e, 0xf2bc017e, 0xf2bc017e, 0x20ac1908, 0x20ac1908, 0x20ac1908, 0x36df2697, 0x36df2697, 0x36df2697, 0x5fcf013d, 0x21aa964f, 0x21aa964f, 0x5fcf013d, }, 20 },
|
{ "gfxterm_ar", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0xdce50745, 0x1d8009e4, 0xdce50745, 0xaa4332f6, 0x5fcf013d, 0x5fcf013d, 0x354e5749, 0x354e5749, 0x354e5749, 0xe75e4f3f, 0xe75e4f3f, 0xe75e4f3f, 0xf12d70a0, 0xf12d70a0, 0xf12d70a0, 0x5fcf013d, 0xaa4332f6, 0xaa4332f6, 0x5fcf013d, }, 20 },
|
||||||
{ "gfxterm_ar", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0xcf9798d3, 0x5d39a7fa, 0xcf9798d3, 0xd49242d4, 0xdd28f52b, 0xdd28f52b, 0xe15747f0, 0xe15747f0, 0xe15747f0, 0xc06bbe14, 0xc06bbe14, 0xc06bbe14, 0xbdd37598, 0xbdd37598, 0xbdd37598, 0xdd28f52b, 0xd49242d4, 0xd49242d4, 0xdd28f52b, }, 20 },
|
{ "gfxterm_ar", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0x3efebeff, 0xf101dfe2, 0x3efebeff, 0x25fb64f8, 0xdd28f52b, 0xdd28f52b, 0x70c69ebd, 0x70c69ebd, 0x70c69ebd, 0x51fa6759, 0x51fa6759, 0x51fa6759, 0x2c42acd5, 0x2c42acd5, 0x2c42acd5, 0xdd28f52b, 0x25fb64f8, 0x25fb64f8, 0xdd28f52b, }, 20 },
|
||||||
{ "gfxterm_ar", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0xae6154e8, 0x59e627f7, 0xae6154e8, 0x51de4f68, 0x43d1f34, 0x43d1f34, 0x59a8eb9f, 0x59a8eb9f, 0x59a8eb9f, 0x26a24237, 0x26a24237, 0x26a24237, 0xbff347b1, 0xbff347b1, 0xbff347b1, 0x43d1f34, 0x51de4f68, 0x51de4f68, 0x43d1f34, }, 20 },
|
{ "gfxterm_ar", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0x59a34c64, 0x281cca78, 0x59a34c64, 0xa61c57e4, 0x43d1f34, 0x43d1f34, 0x95131d4, 0x95131d4, 0x95131d4, 0x765b987c, 0x765b987c, 0x765b987c, 0xef0a9dfa, 0xef0a9dfa, 0xef0a9dfa, 0x43d1f34, 0xa61c57e4, 0xa61c57e4, 0x43d1f34, }, 20 },
|
||||||
{ "gfxterm_cyr", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0xb2b04aa3, 0xca81b845, 0xb2b04aa3, 0xf14687e4, 0x59c36f00, 0x59c36f00, 0xc01ee8bb, 0xc01ee8bb, 0xc01ee8bb, 0xbe9e85dd, 0xbe9e85dd, 0xbe9e85dd, 0xdc68900f, 0xdc68900f, 0xdc68900f, 0x59c36f00, 0xf14687e4, 0xf14687e4, 0x59c36f00, }, 20 },
|
{ "gfxterm_cyr", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0xa37c165, 0x72063383, 0xa37c165, 0x49c10c22, 0x59c36f00, 0x59c36f00, 0x4e53de8e, 0x4e53de8e, 0x4e53de8e, 0x30d3b3e8, 0x30d3b3e8, 0x30d3b3e8, 0x5225a63a, 0x5225a63a, 0x5225a63a, 0x59c36f00, 0x49c10c22, 0x49c10c22, 0x59c36f00, }, 20 },
|
||||||
{ "gfxterm_cyr", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x19a66482, 0xba12148e, 0x19a66482, 0x37a3e1fd, 0xaa4593fe, 0xaa4593fe, 0xfa4f54c9, 0xfa4f54c9, 0xfa4f54c9, 0x5cba59ae, 0x5cba59ae, 0x5cba59ae, 0x7182f2d6, 0x7182f2d6, 0x7182f2d6, 0xaa4593fe, 0x37a3e1fd, 0x37a3e1fd, 0xaa4593fe, }, 20 },
|
{ "gfxterm_cyr", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x45bba0ba, 0xe60fd0b6, 0x45bba0ba, 0x6bbe25c5, 0xaa4593fe, 0xaa4593fe, 0x28de2b41, 0x28de2b41, 0x28de2b41, 0x8e2b2626, 0x8e2b2626, 0x8e2b2626, 0xa3138d5e, 0xa3138d5e, 0xa3138d5e, 0xaa4593fe, 0x6bbe25c5, 0x6bbe25c5, 0xaa4593fe, }, 20 },
|
||||||
{ "gfxterm_cyr", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0x6a5ddfe7, 0xc898195a, 0x6a5ddfe7, 0x374ab263, 0xc9cbf769, 0xc9cbf769, 0x7a6a0afe, 0x7a6a0afe, 0x7a6a0afe, 0x84b2cb32, 0x84b2cb32, 0x84b2cb32, 0x6df8743a, 0x6df8743a, 0x6df8743a, 0xc9cbf769, 0x374ab263, 0x374ab263, 0xc9cbf769, }, 20 },
|
{ "gfxterm_cyr", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0xb43d4e9d, 0x16f88820, 0xb43d4e9d, 0xe92a2319, 0xc9cbf769, 0xc9cbf769, 0xb8959ec7, 0xb8959ec7, 0xb8959ec7, 0x464d5f0b, 0x464d5f0b, 0x464d5f0b, 0xaf07e003, 0xaf07e003, 0xaf07e003, 0xc9cbf769, 0xe92a2319, 0xe92a2319, 0xc9cbf769, }, 20 },
|
||||||
{ "gfxterm_cyr", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0xb6ca222a, 0x98e6c241, 0xb6ca222a, 0x189c6bf2, 0x9813a416, 0x9813a416, 0x7fad8eb7, 0x7fad8eb7, 0x7fad8eb7, 0xee760884, 0xee760884, 0xee760884, 0xf7cc3554, 0xf7cc3554, 0xf7cc3554, 0x9813a416, 0x189c6bf2, 0x189c6bf2, 0x9813a416, }, 20 },
|
{ "gfxterm_cyr", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0x46760365, 0x685ae30e, 0x46760365, 0xe8204abd, 0x9813a416, 0x9813a416, 0x8896050a, 0x8896050a, 0x8896050a, 0x194d8339, 0x194d8339, 0x194d8339, 0xf7bee9, 0xf7bee9, 0xf7bee9, 0x9813a416, 0xe8204abd, 0xe8204abd, 0x9813a416, }, 20 },
|
||||||
{ "gfxterm_cyr", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0x726d82d0, 0xe9c535bd, 0x726d82d0, 0x4cbb763, 0x5fcf013d, 0x5fcf013d, 0xf99de8d5, 0xf99de8d5, 0xf99de8d5, 0x2b8df0a3, 0x2b8df0a3, 0x2b8df0a3, 0x3dfecf3c, 0x3dfecf3c, 0x3dfecf3c, 0x5fcf013d, 0x4cbb763, 0x4cbb763, 0x5fcf013d, }, 20 },
|
{ "gfxterm_cyr", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0x6859aa86, 0xf3f11deb, 0x6859aa86, 0x1eff9f35, 0x5fcf013d, 0x5fcf013d, 0xd72b1482, 0xd72b1482, 0xd72b1482, 0x53b0cf4, 0x53b0cf4, 0x53b0cf4, 0x1348336b, 0x1348336b, 0x1348336b, 0x5fcf013d, 0x1eff9f35, 0x1eff9f35, 0x5fcf013d, }, 20 },
|
||||||
{ "gfxterm_cyr", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0xfe26fef7, 0x6031c462, 0xfe26fef7, 0xe52324f0, 0xdd28f52b, 0xdd28f52b, 0x84ff6e38, 0x84ff6e38, 0x84ff6e38, 0xa5c397dc, 0xa5c397dc, 0xa5c397dc, 0xd87b5c50, 0xd87b5c50, 0xd87b5c50, 0xdd28f52b, 0xe52324f0, 0xe52324f0, 0xdd28f52b, }, 20 },
|
{ "gfxterm_cyr", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0x688451e7, 0xf6936b72, 0x688451e7, 0x73818be0, 0xdd28f52b, 0xdd28f52b, 0xf12a65ac, 0xf12a65ac, 0xf12a65ac, 0xd0169c48, 0xd0169c48, 0xd0169c48, 0xadae57c4, 0xadae57c4, 0xadae57c4, 0xdd28f52b, 0x73818be0, 0x73818be0, 0xdd28f52b, }, 20 },
|
||||||
{ "gfxterm_cyr", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0x25e34f8a, 0x67935e5e, 0x25e34f8a, 0xda5c540a, 0x43d1f34, 0x43d1f34, 0x7ebdd748, 0x7ebdd748, 0x7ebdd748, 0x1b77ee0, 0x1b77ee0, 0x1b77ee0, 0x98e67b66, 0x98e67b66, 0x98e67b66, 0x43d1f34, 0xda5c540a, 0xda5c540a, 0x43d1f34, }, 20 },
|
{ "gfxterm_cyr", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0x9616af94, 0xd466be40, 0x9616af94, 0x69a9b414, 0x43d1f34, 0x43d1f34, 0xf3bb3240, 0xf3bb3240, 0xf3bb3240, 0x8cb19be8, 0x8cb19be8, 0x8cb19be8, 0x15e09e6e, 0x15e09e6e, 0x15e09e6e, 0x43d1f34, 0x69a9b414, 0x69a9b414, 0x43d1f34, }, 20 },
|
||||||
{ "gfxterm_heb", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0x67038f5e, 0x65d6007f, 0x67038f5e, 0x24f54219, 0x59c36f00, 0x59c36f00, 0xac294ffd, 0xac294ffd, 0xac294ffd, 0xd2a9229b, 0xd2a9229b, 0xd2a9229b, 0xb05f3749, 0xb05f3749, 0xb05f3749, 0x59c36f00, 0x24f54219, 0x24f54219, 0x59c36f00, }, 20 },
|
{ "gfxterm_heb", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0x8708d1bd, 0x85dd5e9c, 0x8708d1bd, 0xc4fe1cfa, 0x59c36f00, 0x59c36f00, 0x7ae8aced, 0x7ae8aced, 0x7ae8aced, 0x468c18b, 0x468c18b, 0x468c18b, 0x669ed459, 0x669ed459, 0x669ed459, 0x59c36f00, 0xc4fe1cfa, 0xc4fe1cfa, 0x59c36f00, }, 20 },
|
||||||
{ "gfxterm_heb", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x944464c7, 0x27123864, 0x944464c7, 0xba41e1b8, 0xaa4593fe, 0xaa4593fe, 0xa521274, 0xa521274, 0xa521274, 0xaca71f13, 0xaca71f13, 0xaca71f13, 0x819fb46b, 0x819fb46b, 0x819fb46b, 0xaa4593fe, 0xba41e1b8, 0xba41e1b8, 0xaa4593fe, }, 20 },
|
{ "gfxterm_heb", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0xa72b1043, 0x147d4ce0, 0xa72b1043, 0x892e953c, 0xaa4593fe, 0xaa4593fe, 0xb7b1dd40, 0xb7b1dd40, 0xb7b1dd40, 0x1144d027, 0x1144d027, 0x1144d027, 0x3c7c7b5f, 0x3c7c7b5f, 0x3c7c7b5f, 0xaa4593fe, 0x892e953c, 0x892e953c, 0xaa4593fe, }, 20 },
|
||||||
{ "gfxterm_heb", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0xfe97adaf, 0x4f3307d4, 0xfe97adaf, 0xa380c02b, 0xc9cbf769, 0xc9cbf769, 0xd202ced6, 0xd202ced6, 0xd202ced6, 0x2cda0f1a, 0x2cda0f1a, 0x2cda0f1a, 0xc590b012, 0xc590b012, 0xc590b012, 0xc9cbf769, 0xa380c02b, 0xa380c02b, 0xc9cbf769, }, 20 },
|
{ "gfxterm_heb", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0xc5fb1817, 0x745fb26c, 0xc5fb1817, 0x98ec7593, 0xc9cbf769, 0xc9cbf769, 0xf5f17e2d, 0xf5f17e2d, 0xf5f17e2d, 0xb29bfe1, 0xb29bfe1, 0xb29bfe1, 0xe26300e9, 0xe26300e9, 0xe26300e9, 0xc9cbf769, 0x98ec7593, 0x98ec7593, 0xc9cbf769, }, 20 },
|
||||||
{ "gfxterm_heb", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0x5b32a9ba, 0xaf93fd91, 0x5b32a9ba, 0xf564e062, 0x9813a416, 0x9813a416, 0xcfdbc809, 0xcfdbc809, 0xcfdbc809, 0x5e004e3a, 0x5e004e3a, 0x5e004e3a, 0x47ba73ea, 0x47ba73ea, 0x47ba73ea, 0x9813a416, 0xf564e062, 0xf564e062, 0x9813a416, }, 20 },
|
{ "gfxterm_heb", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0x4be837e1, 0xbf4963ca, 0x4be837e1, 0xe5be7e39, 0x9813a416, 0x9813a416, 0xd886fca0, 0xd886fca0, 0xd886fca0, 0x495d7a93, 0x495d7a93, 0x495d7a93, 0x50e74743, 0x50e74743, 0x50e74743, 0x9813a416, 0xe5be7e39, 0xe5be7e39, 0x9813a416, }, 20 },
|
||||||
{ "gfxterm_heb", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0x5e0e1ce8, 0x7ed1c9ee, 0x5e0e1ce8, 0x28a8295b, 0x5fcf013d, 0x5fcf013d, 0x615f5762, 0x615f5762, 0x615f5762, 0xb34f4f14, 0xb34f4f14, 0xb34f4f14, 0xa53c708b, 0xa53c708b, 0xa53c708b, 0x5fcf013d, 0x28a8295b, 0x28a8295b, 0x5fcf013d, }, 20 },
|
{ "gfxterm_heb", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0x21a8ccb8, 0x17719be, 0x21a8ccb8, 0x570ef90b, 0x5fcf013d, 0x5fcf013d, 0x2a7b5333, 0x2a7b5333, 0x2a7b5333, 0xf86b4b45, 0xf86b4b45, 0xf86b4b45, 0xee1874da, 0xee1874da, 0xee1874da, 0x5fcf013d, 0x570ef90b, 0x570ef90b, 0x5fcf013d, }, 20 },
|
||||||
{ "gfxterm_heb", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0xa473184a, 0x93eaf325, 0xa473184a, 0xbf76c24d, 0xdd28f52b, 0xdd28f52b, 0x714dd1f7, 0x714dd1f7, 0x714dd1f7, 0x50712813, 0x50712813, 0x50712813, 0x2dc9e39f, 0x2dc9e39f, 0x2dc9e39f, 0xdd28f52b, 0xbf76c24d, 0xbf76c24d, 0xdd28f52b, }, 20 },
|
{ "gfxterm_heb", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0x7001fe50, 0x4798153f, 0x7001fe50, 0x6b042457, 0xdd28f52b, 0xdd28f52b, 0x46489369, 0x46489369, 0x46489369, 0x67746a8d, 0x67746a8d, 0x67746a8d, 0x1acca101, 0x1acca101, 0x1acca101, 0xdd28f52b, 0x6b042457, 0x6b042457, 0xdd28f52b, }, 20 },
|
||||||
{ "gfxterm_heb", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0xa725578b, 0x81889cf9, 0xa725578b, 0x589a4c0b, 0x43d1f34, 0x43d1f34, 0xf25ab3a8, 0xf25ab3a8, 0xf25ab3a8, 0x8d501a00, 0x8d501a00, 0x8d501a00, 0x14011f86, 0x14011f86, 0x14011f86, 0x43d1f34, 0x589a4c0b, 0x589a4c0b, 0x43d1f34, }, 20 },
|
{ "gfxterm_heb", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0x6e10591c, 0x48bd926e, 0x6e10591c, 0x91af429c, 0x43d1f34, 0x43d1f34, 0x59cb829, 0x59cb829, 0x59cb829, 0x7a961181, 0x7a961181, 0x7a961181, 0xe3c71407, 0xe3c71407, 0xe3c71407, 0x43d1f34, 0x91af429c, 0x91af429c, 0x43d1f34, }, 20 },
|
||||||
{ "gfxterm_gre", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0xd69cdcbf, 0x6ad9ce85, 0xd69cdcbf, 0x956a11f8, 0x59c36f00, 0x59c36f00, 0xc4c10e6a, 0xc4c10e6a, 0xc4c10e6a, 0xba41630c, 0xba41630c, 0xba41630c, 0xd8b776de, 0xd8b776de, 0xd8b776de, 0x59c36f00, 0x956a11f8, 0x956a11f8, 0x59c36f00, }, 20 },
|
{ "gfxterm_gre", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0x67627ed5, 0xdb276cef, 0x67627ed5, 0x2494b392, 0x59c36f00, 0x59c36f00, 0x43f511f3, 0x43f511f3, 0x43f511f3, 0x3d757c95, 0x3d757c95, 0x3d757c95, 0x5f836947, 0x5f836947, 0x5f836947, 0x59c36f00, 0x2494b392, 0x2494b392, 0x59c36f00, }, 20 },
|
||||||
{ "gfxterm_gre", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x1acffa1b, 0xecff2136, 0x1acffa1b, 0x34ca7f64, 0xaa4593fe, 0xaa4593fe, 0xb57c29cc, 0xb57c29cc, 0xb57c29cc, 0x138924ab, 0x138924ab, 0x138924ab, 0x3eb18fd3, 0x3eb18fd3, 0x3eb18fd3, 0xaa4593fe, 0x34ca7f64, 0x34ca7f64, 0xaa4593fe, }, 20 },
|
{ "gfxterm_gre", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x987cbf71, 0x6e4c645c, 0x987cbf71, 0xb6793a0e, 0xaa4593fe, 0xaa4593fe, 0xb943d716, 0xb943d716, 0xb943d716, 0x1fb6da71, 0x1fb6da71, 0x1fb6da71, 0x328e7109, 0x328e7109, 0x328e7109, 0xaa4593fe, 0xb6793a0e, 0xb6793a0e, 0xaa4593fe, }, 20 },
|
||||||
{ "gfxterm_gre", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0x1cf8992, 0xb2c51b4c, 0x1cf8992, 0x5cd8e416, 0xc9cbf769, 0xc9cbf769, 0xba7b2d22, 0xba7b2d22, 0xba7b2d22, 0x44a3ecee, 0x44a3ecee, 0x44a3ecee, 0xade953e6, 0xade953e6, 0xade953e6, 0xc9cbf769, 0x5cd8e416, 0x5cd8e416, 0xc9cbf769, }, 20 },
|
{ "gfxterm_gre", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0xf9987c07, 0x4a92eed9, 0xf9987c07, 0xa48f1183, 0xc9cbf769, 0xc9cbf769, 0x5eb3ddf4, 0x5eb3ddf4, 0x5eb3ddf4, 0xa06b1c38, 0xa06b1c38, 0xa06b1c38, 0x4921a330, 0x4921a330, 0x4921a330, 0xc9cbf769, 0xa48f1183, 0xa48f1183, 0xc9cbf769, }, 20 },
|
||||||
{ "gfxterm_gre", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0x1f39da0b, 0x6a7f5378, 0x1f39da0b, 0xb16f93d3, 0x9813a416, 0x9813a416, 0x8e8a2ed7, 0x8e8a2ed7, 0x8e8a2ed7, 0x1f51a8e4, 0x1f51a8e4, 0x1f51a8e4, 0x6eb9534, 0x6eb9534, 0x6eb9534, 0x9813a416, 0xb16f93d3, 0xb16f93d3, 0x9813a416, }, 20 },
|
{ "gfxterm_gre", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0xccd804e2, 0xb99e8d91, 0xccd804e2, 0x628e4d3a, 0x9813a416, 0x9813a416, 0x5aec5acc, 0x5aec5acc, 0x5aec5acc, 0xcb37dcff, 0xcb37dcff, 0xcb37dcff, 0xd28de12f, 0xd28de12f, 0xd28de12f, 0x9813a416, 0x628e4d3a, 0x628e4d3a, 0x9813a416, }, 20 },
|
||||||
{ "gfxterm_gre", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0x27394d6b, 0x459337bf, 0x27394d6b, 0x519f78d8, 0x5fcf013d, 0x5fcf013d, 0x66ed4571, 0x66ed4571, 0x66ed4571, 0xb4fd5d07, 0xb4fd5d07, 0xb4fd5d07, 0xa28e6298, 0xa28e6298, 0xa28e6298, 0x5fcf013d, 0x519f78d8, 0x519f78d8, 0x5fcf013d, }, 20 },
|
{ "gfxterm_gre", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0x4990d896, 0x2b3aa242, 0x4990d896, 0x3f36ed25, 0x5fcf013d, 0x5fcf013d, 0x3cc6048d, 0x3cc6048d, 0x3cc6048d, 0xeed61cfb, 0xeed61cfb, 0xeed61cfb, 0xf8a52364, 0xf8a52364, 0xf8a52364, 0x5fcf013d, 0x3f36ed25, 0x3f36ed25, 0x5fcf013d, }, 20 },
|
||||||
{ "gfxterm_gre", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0x624e1f92, 0x4be3bd84, 0x624e1f92, 0x794bc595, 0xdd28f52b, 0xdd28f52b, 0xd33767c, 0xd33767c, 0xd33767c, 0x2c0f8f98, 0x2c0f8f98, 0x2c0f8f98, 0x51b74414, 0x51b74414, 0x51b74414, 0xdd28f52b, 0x794bc595, 0x794bc595, 0xdd28f52b, }, 20 },
|
{ "gfxterm_gre", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0x4ff5c69f, 0x66586489, 0x4ff5c69f, 0x54f01c98, 0xdd28f52b, 0xdd28f52b, 0xc3ff0bf5, 0xc3ff0bf5, 0xc3ff0bf5, 0xe2c3f211, 0xe2c3f211, 0xe2c3f211, 0x9f7b399d, 0x9f7b399d, 0x9f7b399d, 0xdd28f52b, 0x54f01c98, 0x54f01c98, 0xdd28f52b, }, 20 },
|
||||||
{ "gfxterm_gre", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0xbf5dab2e, 0x4747516, 0xbf5dab2e, 0x40e2b0ae, 0x43d1f34, 0x43d1f34, 0x3cc1d2dd, 0x3cc1d2dd, 0x3cc1d2dd, 0x43cb7b75, 0x43cb7b75, 0x43cb7b75, 0xda9a7ef3, 0xda9a7ef3, 0xda9a7ef3, 0x43d1f34, 0x40e2b0ae, 0x40e2b0ae, 0x43d1f34, }, 20 },
|
{ "gfxterm_gre", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0x909b7bb4, 0x2bb2a58c, 0x909b7bb4, 0x6f246034, 0x43d1f34, 0x43d1f34, 0x2df40751, 0x2df40751, 0x2df40751, 0x52feaef9, 0x52feaef9, 0x52feaef9, 0xcbafab7f, 0xcbafab7f, 0xcbafab7f, 0x43d1f34, 0x6f246034, 0x6f246034, 0x43d1f34, }, 20 },
|
||||||
{ "gfxterm_ru", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0x2e284303, 0x169e4b98, 0x2e284303, 0x6dde8e44, 0x59c36f00, 0x59c36f00, 0xd2e0cf68, 0xd2e0cf68, 0xd2e0cf68, 0xac60a20e, 0xac60a20e, 0xac60a20e, 0xce96b7dc, 0xce96b7dc, 0xce96b7dc, 0x59c36f00, 0x6dde8e44, 0x6dde8e44, 0x59c36f00, }, 20 },
|
{ "gfxterm_ru", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0xc77bfcc6, 0xffcdf45d, 0xc77bfcc6, 0x848d3181, 0x59c36f00, 0x59c36f00, 0xd79cd5e, 0xd79cd5e, 0xd79cd5e, 0x73f9a038, 0x73f9a038, 0x73f9a038, 0x110fb5ea, 0x110fb5ea, 0x110fb5ea, 0x59c36f00, 0x848d3181, 0x848d3181, 0x59c36f00, }, 20 },
|
||||||
{ "gfxterm_ru", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x3a911f8f, 0xe5d171c6, 0x3a911f8f, 0x14949af0, 0xaa4593fe, 0xaa4593fe, 0xe7c628ac, 0xe7c628ac, 0xe7c628ac, 0x413325cb, 0x413325cb, 0x413325cb, 0x6c0b8eb3, 0x6c0b8eb3, 0x6c0b8eb3, 0xaa4593fe, 0x14949af0, 0x14949af0, 0xaa4593fe, }, 20 },
|
{ "gfxterm_ru", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0xd5494aa5, 0xa0924ec, 0xd5494aa5, 0xfb4ccfda, 0xaa4593fe, 0xaa4593fe, 0x8692c636, 0x8692c636, 0x8692c636, 0x2067cb51, 0x2067cb51, 0x2067cb51, 0xd5f6029, 0xd5f6029, 0xd5f6029, 0xaa4593fe, 0xfb4ccfda, 0xfb4ccfda, 0xaa4593fe, }, 20 },
|
||||||
{ "gfxterm_ru", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0xa4645fb3, 0x8af97df0, 0xa4645fb3, 0xf9733237, 0xc9cbf769, 0xc9cbf769, 0xef376611, 0xef376611, 0xef376611, 0x11efa7dd, 0x11efa7dd, 0x11efa7dd, 0xf8a518d5, 0xf8a518d5, 0xf8a518d5, 0xc9cbf769, 0xf9733237, 0xf9733237, 0xc9cbf769, }, 20 },
|
{ "gfxterm_ru", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0x2436c4f, 0x2cde4e0c, 0x2436c4f, 0x5f5401cb, 0xc9cbf769, 0xc9cbf769, 0x558f50ae, 0x558f50ae, 0x558f50ae, 0xab579162, 0xab579162, 0xab579162, 0x421d2e6a, 0x421d2e6a, 0x421d2e6a, 0xc9cbf769, 0x5f5401cb, 0x5f5401cb, 0xc9cbf769, }, 20 },
|
||||||
{ "gfxterm_ru", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0x7c3a337b, 0xed3f1a6, 0x7c3a337b, 0xd26c7aa3, 0x9813a416, 0x9813a416, 0x86aa8146, 0x86aa8146, 0x86aa8146, 0x17710775, 0x17710775, 0x17710775, 0xecb3aa5, 0xecb3aa5, 0xecb3aa5, 0x9813a416, 0xd26c7aa3, 0xd26c7aa3, 0x9813a416, }, 20 },
|
{ "gfxterm_ru", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0x86f8a68c, 0xf4116451, 0x86f8a68c, 0x28aeef54, 0x9813a416, 0x9813a416, 0x7befbe43, 0x7befbe43, 0x7befbe43, 0xea343870, 0xea343870, 0xea343870, 0xf38e05a0, 0xf38e05a0, 0xf38e05a0, 0x9813a416, 0x28aeef54, 0x28aeef54, 0x9813a416, }, 20 },
|
||||||
{ "gfxterm_ru", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0x9f31781b, 0xb6d3e547, 0x9f31781b, 0xe9974da8, 0x5fcf013d, 0x5fcf013d, 0x3781245e, 0x3781245e, 0x3781245e, 0xe5913c28, 0xe5913c28, 0xe5913c28, 0xf3e203b7, 0xf3e203b7, 0xf3e203b7, 0x5fcf013d, 0xe9974da8, 0xe9974da8, 0x5fcf013d, }, 20 },
|
{ "gfxterm_ru", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0x156c292f, 0x3c8eb473, 0x156c292f, 0x63ca1c9c, 0x5fcf013d, 0x5fcf013d, 0x895ea16b, 0x895ea16b, 0x895ea16b, 0x5b4eb91d, 0x5b4eb91d, 0x5b4eb91d, 0x4d3d8682, 0x4d3d8682, 0x4d3d8682, 0x5fcf013d, 0x63ca1c9c, 0x63ca1c9c, 0x5fcf013d, }, 20 },
|
||||||
{ "gfxterm_ru", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0xfc18d24f, 0x70ed44c6, 0xfc18d24f, 0xe71d0848, 0xdd28f52b, 0xdd28f52b, 0xc847f61f, 0xc847f61f, 0xc847f61f, 0xe97b0ffb, 0xe97b0ffb, 0xe97b0ffb, 0x94c3c477, 0x94c3c477, 0x94c3c477, 0xdd28f52b, 0xe71d0848, 0xe71d0848, 0xdd28f52b, }, 20 },
|
{ "gfxterm_ru", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0xf57ebf12, 0x798b299b, 0xf57ebf12, 0xee7b6515, 0xdd28f52b, 0xdd28f52b, 0x22563fc6, 0x22563fc6, 0x22563fc6, 0x36ac622, 0x36ac622, 0x36ac622, 0x7ed20dae, 0x7ed20dae, 0x7ed20dae, 0xdd28f52b, 0xee7b6515, 0xee7b6515, 0xdd28f52b, }, 20 },
|
||||||
{ "gfxterm_ru", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0x7bb91866, 0xc4777a1f, 0x7bb91866, 0x840603e6, 0x43d1f34, 0x43d1f34, 0x2a49c131, 0x2a49c131, 0x2a49c131, 0x55436899, 0x55436899, 0x55436899, 0xcc126d1f, 0xcc126d1f, 0xcc126d1f, 0x43d1f34, 0x840603e6, 0x840603e6, 0x43d1f34, }, 20 },
|
{ "gfxterm_ru", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0x2bc82eb1, 0x94064cc8, 0x2bc82eb1, 0xd4773531, 0x43d1f34, 0x43d1f34, 0x44cbf2f0, 0x44cbf2f0, 0x44cbf2f0, 0x3bc15b58, 0x3bc15b58, 0x3bc15b58, 0xa2905ede, 0xa2905ede, 0xa2905ede, 0x43d1f34, 0xd4773531, 0xd4773531, 0x43d1f34, }, 20 },
|
||||||
{ "gfxterm_fr", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0xa0d0faff, 0x8b37dfcd, 0xa0d0faff, 0xe32637b8, 0x59c36f00, 0x59c36f00, 0x94e6a8c7, 0x94e6a8c7, 0x94e6a8c7, 0xea66c5a1, 0xea66c5a1, 0xea66c5a1, 0x8890d073, 0x8890d073, 0x8890d073, 0x59c36f00, 0xe32637b8, 0xe32637b8, 0x59c36f00, }, 20 },
|
{ "gfxterm_fr", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0x7f6dd146, 0x548af474, 0x7f6dd146, 0x3c9b1c01, 0x59c36f00, 0x59c36f00, 0x7d913e8d, 0x7d913e8d, 0x7d913e8d, 0x31153eb, 0x31153eb, 0x31153eb, 0x61e74639, 0x61e74639, 0x61e74639, 0x59c36f00, 0x3c9b1c01, 0x3c9b1c01, 0x59c36f00, }, 20 },
|
||||||
{ "gfxterm_fr", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x4436bcdb, 0xb3a12b62, 0x4436bcdb, 0x6a3339a4, 0xaa4593fe, 0xaa4593fe, 0x53ef9b82, 0x53ef9b82, 0x53ef9b82, 0xf51a96e5, 0xf51a96e5, 0xf51a96e5, 0xd8223d9d, 0xd8223d9d, 0xd8223d9d, 0xaa4593fe, 0x6a3339a4, 0x6a3339a4, 0xaa4593fe, }, 20 },
|
{ "gfxterm_fr", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0xf29ad079, 0x50d47c0, 0xf29ad079, 0xdc9f5506, 0xaa4593fe, 0xaa4593fe, 0x6bcf4c90, 0x6bcf4c90, 0x6bcf4c90, 0xcd3a41f7, 0xcd3a41f7, 0xcd3a41f7, 0xe002ea8f, 0xe002ea8f, 0xe002ea8f, 0xaa4593fe, 0xdc9f5506, 0xdc9f5506, 0xaa4593fe, }, 20 },
|
||||||
{ "gfxterm_fr", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0xb8e59140, 0x2463e41f, 0xb8e59140, 0xe5f2fcc4, 0xc9cbf769, 0xc9cbf769, 0xc31681f4, 0xc31681f4, 0xc31681f4, 0x3dce4038, 0x3dce4038, 0x3dce4038, 0xd484ff30, 0xd484ff30, 0xd484ff30, 0xc9cbf769, 0xe5f2fcc4, 0xe5f2fcc4, 0xc9cbf769, }, 20 },
|
{ "gfxterm_fr", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0xb25e3082, 0x2ed845dd, 0xb25e3082, 0xef495d06, 0xc9cbf769, 0xc9cbf769, 0xd5322575, 0xd5322575, 0xd5322575, 0x2beae4b9, 0x2beae4b9, 0x2beae4b9, 0xc2a05bb1, 0xc2a05bb1, 0xc2a05bb1, 0xc9cbf769, 0xef495d06, 0xef495d06, 0xc9cbf769, }, 20 },
|
||||||
{ "gfxterm_fr", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0x438b3fcc, 0x7ebfbfd, 0x438b3fcc, 0xeddd7614, 0x9813a416, 0x9813a416, 0x8ac4ae20, 0x8ac4ae20, 0x8ac4ae20, 0x1b1f2813, 0x1b1f2813, 0x1b1f2813, 0x2a515c3, 0x2a515c3, 0x2a515c3, 0x9813a416, 0xeddd7614, 0xeddd7614, 0x9813a416, }, 20 },
|
{ "gfxterm_fr", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0x4cdfcd2e, 0x8bf091f, 0x4cdfcd2e, 0xe28984f6, 0x9813a416, 0x9813a416, 0x8217f630, 0x8217f630, 0x8217f630, 0x13cc7003, 0x13cc7003, 0x13cc7003, 0xa764dd3, 0xa764dd3, 0xa764dd3, 0x9813a416, 0xe28984f6, 0xe28984f6, 0x9813a416, }, 20 },
|
||||||
{ "gfxterm_fr", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0xf9eea896, 0x25a51233, 0xf9eea896, 0x8f489d25, 0x5fcf013d, 0x5fcf013d, 0x62e37cf8, 0x62e37cf8, 0x62e37cf8, 0xb0f3648e, 0xb0f3648e, 0xb0f3648e, 0xa6805b11, 0xa6805b11, 0xa6805b11, 0x5fcf013d, 0x8f489d25, 0x8f489d25, 0x5fcf013d, }, 20 },
|
{ "gfxterm_fr", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0xf2b49f88, 0x2eff252d, 0xf2b49f88, 0x8412aa3b, 0x5fcf013d, 0x5fcf013d, 0x5d3b9fe7, 0x5d3b9fe7, 0x5d3b9fe7, 0x8f2b8791, 0x8f2b8791, 0x8f2b8791, 0x9958b80e, 0x9958b80e, 0x9958b80e, 0x5fcf013d, 0x8412aa3b, 0x8412aa3b, 0x5fcf013d, }, 20 },
|
||||||
{ "gfxterm_fr", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0x9b617752, 0xb06817b5, 0x9b617752, 0x8064ad55, 0xdd28f52b, 0xdd28f52b, 0x38159b7a, 0x38159b7a, 0x38159b7a, 0x1929629e, 0x1929629e, 0x1929629e, 0x6491a912, 0x6491a912, 0x6491a912, 0xdd28f52b, 0x8064ad55, 0x8064ad55, 0xdd28f52b, }, 20 },
|
{ "gfxterm_fr", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0x786673be, 0x536f1359, 0x786673be, 0x6363a9b9, 0xdd28f52b, 0xdd28f52b, 0x38653b12, 0x38653b12, 0x38653b12, 0x1959c2f6, 0x1959c2f6, 0x1959c2f6, 0x64e1097a, 0x64e1097a, 0x64e1097a, 0xdd28f52b, 0x6363a9b9, 0x6363a9b9, 0xdd28f52b, }, 20 },
|
||||||
{ "gfxterm_fr", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0x595e29e, 0xc043d961, 0x595e29e, 0xfa2af91e, 0x43d1f34, 0x43d1f34, 0x6d6b2915, 0x6d6b2915, 0x6d6b2915, 0x126180bd, 0x126180bd, 0x126180bd, 0x8b30853b, 0x8b30853b, 0x8b30853b, 0x43d1f34, 0xfa2af91e, 0xfa2af91e, 0x43d1f34, }, 20 },
|
{ "gfxterm_fr", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0xac4a1127, 0x699c2ad8, 0xac4a1127, 0x53f50aa7, 0x43d1f34, 0x43d1f34, 0xfa47dfba, 0xfa47dfba, 0xfa47dfba, 0x854d7612, 0x854d7612, 0x854d7612, 0x1c1c7394, 0x1c1c7394, 0x1c1c7394, 0x43d1f34, 0x53f50aa7, 0x53f50aa7, 0x43d1f34, }, 20 },
|
||||||
{ "gfxterm_quot", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0x63e24d8a, 0x52da109, 0x63e24d8a, 0x201480cd, 0x59c36f00, 0x59c36f00, 0xd3a0a4df, 0xd3a0a4df, 0xd3a0a4df, 0xad20c9b9, 0xad20c9b9, 0xad20c9b9, 0xcfd6dc6b, 0xcfd6dc6b, 0xcfd6dc6b, 0x59c36f00, 0x201480cd, 0x201480cd, 0x59c36f00, }, 20 },
|
{ "gfxterm_quot", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0xbc5f6633, 0xda908ab0, 0xbc5f6633, 0xffa9ab74, 0x59c36f00, 0x59c36f00, 0x3ad73295, 0x3ad73295, 0x3ad73295, 0x44575ff3, 0x44575ff3, 0x44575ff3, 0x26a14a21, 0x26a14a21, 0x26a14a21, 0x59c36f00, 0xffa9ab74, 0xffa9ab74, 0x59c36f00, }, 20 },
|
||||||
{ "gfxterm_quot", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x1b2e61c9, 0xbf04e671, 0x1b2e61c9, 0x352be4b6, 0xaa4593fe, 0xaa4593fe, 0x86e14b09, 0x86e14b09, 0x86e14b09, 0x2014466e, 0x2014466e, 0x2014466e, 0xd2ced16, 0xd2ced16, 0xd2ced16, 0xaa4593fe, 0x352be4b6, 0x352be4b6, 0xaa4593fe, }, 20 },
|
{ "gfxterm_quot", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0xad820d6b, 0x9a88ad3, 0xad820d6b, 0x83878814, 0xaa4593fe, 0xaa4593fe, 0xbec19c1b, 0xbec19c1b, 0xbec19c1b, 0x1834917c, 0x1834917c, 0x1834917c, 0x350c3a04, 0x350c3a04, 0x350c3a04, 0xaa4593fe, 0x83878814, 0x83878814, 0xaa4593fe, }, 20 },
|
||||||
{ "gfxterm_quot", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0xefcce0d0, 0x5540bf08, 0xefcce0d0, 0xb2db8d54, 0xc9cbf769, 0xc9cbf769, 0xf2a2bdc8, 0xf2a2bdc8, 0xf2a2bdc8, 0xc7a7c04, 0xc7a7c04, 0xc7a7c04, 0xe530c30c, 0xe530c30c, 0xe530c30c, 0xc9cbf769, 0xb2db8d54, 0xb2db8d54, 0xc9cbf769, }, 20 },
|
{ "gfxterm_quot", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0xe5774112, 0x5ffb1eca, 0xe5774112, 0xb8602c96, 0xc9cbf769, 0xc9cbf769, 0xe4861949, 0xe4861949, 0xe4861949, 0x1a5ed885, 0x1a5ed885, 0x1a5ed885, 0xf314678d, 0xf314678d, 0xf314678d, 0xc9cbf769, 0xb8602c96, 0xb8602c96, 0xc9cbf769, }, 20 },
|
||||||
{ "gfxterm_quot", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0x65a5505e, 0xd6055969, 0x65a5505e, 0xcbf31986, 0x9813a416, 0x9813a416, 0xbd3bd80c, 0xbd3bd80c, 0xbd3bd80c, 0x2ce05e3f, 0x2ce05e3f, 0x2ce05e3f, 0x355a63ef, 0x355a63ef, 0x355a63ef, 0x9813a416, 0xcbf31986, 0xcbf31986, 0x9813a416, }, 20 },
|
{ "gfxterm_quot", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0x6af1a2bc, 0xd951ab8b, 0x6af1a2bc, 0xc4a7eb64, 0x9813a416, 0x9813a416, 0xb5e8801c, 0xb5e8801c, 0xb5e8801c, 0x2433062f, 0x2433062f, 0x2433062f, 0x3d893bff, 0x3d893bff, 0x3d893bff, 0x9813a416, 0xc4a7eb64, 0xc4a7eb64, 0x9813a416, }, 20 },
|
||||||
{ "gfxterm_quot", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0x7319d06, 0x17c78667, 0x7319d06, 0x7197a8b5, 0x5fcf013d, 0x5fcf013d, 0xbe43bf51, 0xbe43bf51, 0xbe43bf51, 0x6c53a727, 0x6c53a727, 0x6c53a727, 0x7a2098b8, 0x7a2098b8, 0x7a2098b8, 0x5fcf013d, 0x7197a8b5, 0x7197a8b5, 0x5fcf013d, }, 20 },
|
{ "gfxterm_quot", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0xc6baa18, 0x1c9db179, 0xc6baa18, 0x7acd9fab, 0x5fcf013d, 0x5fcf013d, 0x819b5c4e, 0x819b5c4e, 0x819b5c4e, 0x538b4438, 0x538b4438, 0x538b4438, 0x45f87ba7, 0x45f87ba7, 0x45f87ba7, 0x5fcf013d, 0x7acd9fab, 0x7acd9fab, 0x5fcf013d, }, 20 },
|
||||||
{ "gfxterm_quot", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0x723a247, 0x535b0699, 0x723a247, 0x1c267840, 0xdd28f52b, 0xdd28f52b, 0xcdf3c404, 0xcdf3c404, 0xcdf3c404, 0xeccf3de0, 0xeccf3de0, 0xeccf3de0, 0x9177f66c, 0x9177f66c, 0x9177f66c, 0xdd28f52b, 0x1c267840, 0x1c267840, 0xdd28f52b, }, 20 },
|
{ "gfxterm_quot", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0xe424a6ab, 0xb05c0275, 0xe424a6ab, 0xff217cac, 0xdd28f52b, 0xdd28f52b, 0xcd83646c, 0xcd83646c, 0xcd83646c, 0xecbf9d88, 0xecbf9d88, 0xecbf9d88, 0x91075604, 0x91075604, 0x91075604, 0xdd28f52b, 0xff217cac, 0xff217cac, 0xdd28f52b, }, 20 },
|
||||||
{ "gfxterm_quot", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0xe3a20cf8, 0x4833db45, 0xe3a20cf8, 0x1c1d1778, 0x43d1f34, 0x43d1f34, 0x252c3625, 0x252c3625, 0x252c3625, 0x5a269f8d, 0x5a269f8d, 0x5a269f8d, 0xc3779a0b, 0xc3779a0b, 0xc3779a0b, 0x43d1f34, 0x1c1d1778, 0x1c1d1778, 0x43d1f34, }, 20 },
|
{ "gfxterm_quot", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0x4a7dff41, 0xe1ec28fc, 0x4a7dff41, 0xb5c2e4c1, 0x43d1f34, 0x43d1f34, 0xb200c08a, 0xb200c08a, 0xb200c08a, 0xcd0a6922, 0xcd0a6922, 0xcd0a6922, 0x545b6ca4, 0x545b6ca4, 0x545b6ca4, 0x43d1f34, 0xb5c2e4c1, 0xb5c2e4c1, 0x43d1f34, }, 20 },
|
||||||
{ "gfxterm_piglatin", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0x24b38cd5, 0x6b033831, 0x24b38cd5, 0x67454192, 0x59c36f00, 0x59c36f00, 0xc12f3297, 0xc12f3297, 0xc12f3297, 0xbfaf5ff1, 0xbfaf5ff1, 0xbfaf5ff1, 0xdd594a23, 0xdd594a23, 0xdd594a23, 0x59c36f00, 0x67454192, 0x67454192, 0x59c36f00, }, 20 },
|
{ "gfxterm_piglatin", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0xd3d3e4a2, 0x9c635046, 0xd3d3e4a2, 0x902529e5, 0x59c36f00, 0x59c36f00, 0x85e713, 0x85e713, 0x85e713, 0x7e058a75, 0x7e058a75, 0x7e058a75, 0x1cf39fa7, 0x1cf39fa7, 0x1cf39fa7, 0x59c36f00, 0x902529e5, 0x902529e5, 0x59c36f00, }, 20 },
|
||||||
{ "gfxterm_piglatin", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x54f09885, 0x5d94ace6, 0x54f09885, 0x7af51dfa, 0xaa4593fe, 0xaa4593fe, 0xe3a05427, 0xe3a05427, 0xe3a05427, 0x45555940, 0x45555940, 0x45555940, 0x686df238, 0x686df238, 0x686df238, 0xaa4593fe, 0x7af51dfa, 0x7af51dfa, 0xaa4593fe, }, 20 },
|
{ "gfxterm_piglatin", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0xd61c80f5, 0xdf78b496, 0xd61c80f5, 0xf819058a, 0xaa4593fe, 0xaa4593fe, 0xefc0f7e7, 0xefc0f7e7, 0xefc0f7e7, 0x4935fa80, 0x4935fa80, 0x4935fa80, 0x640d51f8, 0x640d51f8, 0x640d51f8, 0xaa4593fe, 0xf819058a, 0xf819058a, 0xaa4593fe, }, 20 },
|
||||||
{ "gfxterm_piglatin", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0x53c2ee74, 0x92931869, 0x53c2ee74, 0xed583f0, 0xc9cbf769, 0xc9cbf769, 0x76afdc1b, 0x76afdc1b, 0x76afdc1b, 0x88771dd7, 0x88771dd7, 0x88771dd7, 0x613da2df, 0x613da2df, 0x613da2df, 0xc9cbf769, 0xed583f0, 0xed583f0, 0xc9cbf769, }, 20 },
|
{ "gfxterm_piglatin", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0x936bc89d, 0x523a3e80, 0x936bc89d, 0xce7ca519, 0xc9cbf769, 0xc9cbf769, 0xaa99ffb1, 0xaa99ffb1, 0xaa99ffb1, 0x54413e7d, 0x54413e7d, 0x54413e7d, 0xbd0b8175, 0xbd0b8175, 0xbd0b8175, 0xc9cbf769, 0xce7ca519, 0xce7ca519, 0xc9cbf769, }, 20 },
|
||||||
{ "gfxterm_piglatin", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0x4e5ded6f, 0x12bf47c3, 0x4e5ded6f, 0xe00ba4b7, 0x9813a416, 0x9813a416, 0x72c4cb9c, 0x72c4cb9c, 0x72c4cb9c, 0xe31f4daf, 0xe31f4daf, 0xe31f4daf, 0xfaa5707f, 0xfaa5707f, 0xfaa5707f, 0x9813a416, 0xe00ba4b7, 0xe00ba4b7, 0x9813a416, }, 20 },
|
{ "gfxterm_piglatin", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0x4fdd0291, 0x133fa83d, 0x4fdd0291, 0xe18b4b49, 0x9813a416, 0x9813a416, 0x74c38e90, 0x74c38e90, 0x74c38e90, 0xe51808a3, 0xe51808a3, 0xe51808a3, 0xfca23573, 0xfca23573, 0xfca23573, 0x9813a416, 0xe18b4b49, 0xe18b4b49, 0x9813a416, }, 20 },
|
||||||
{ "gfxterm_piglatin", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0x3566adf6, 0x4c7649cf, 0x3566adf6, 0x43c09845, 0x5fcf013d, 0x5fcf013d, 0xc2b479f, 0xc2b479f, 0xc2b479f, 0xde3b5fe9, 0xde3b5fe9, 0xde3b5fe9, 0xc8486076, 0xc8486076, 0xc8486076, 0x5fcf013d, 0x43c09845, 0x43c09845, 0x5fcf013d, }, 20 },
|
{ "gfxterm_piglatin", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0x538203b0, 0x2a92e789, 0x538203b0, 0x25243603, 0x5fcf013d, 0x5fcf013d, 0x5e4d3dd8, 0x5e4d3dd8, 0x5e4d3dd8, 0x8c5d25ae, 0x8c5d25ae, 0x8c5d25ae, 0x9a2e1a31, 0x9a2e1a31, 0x9a2e1a31, 0x5fcf013d, 0x25243603, 0x25243603, 0x5fcf013d, }, 20 },
|
||||||
{ "gfxterm_piglatin", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0xec1bda0d, 0x86636a33, 0xec1bda0d, 0xf71e000a, 0xdd28f52b, 0xdd28f52b, 0xda5ce270, 0xda5ce270, 0xda5ce270, 0xfb601b94, 0xfb601b94, 0xfb601b94, 0x86d8d018, 0x86d8d018, 0x86d8d018, 0xdd28f52b, 0xf71e000a, 0xf71e000a, 0xdd28f52b, }, 20 },
|
{ "gfxterm_piglatin", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0xcfc85125, 0xa5b0e11b, 0xcfc85125, 0xd4cd8b22, 0xdd28f52b, 0xdd28f52b, 0x1af8cddc, 0x1af8cddc, 0x1af8cddc, 0x3bc43438, 0x3bc43438, 0x3bc43438, 0x467cffb4, 0x467cffb4, 0x467cffb4, 0xdd28f52b, 0xd4cd8b22, 0xd4cd8b22, 0xdd28f52b, }, 20 },
|
||||||
{ "gfxterm_piglatin", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0x619415be, 0x92024b97, 0x619415be, 0x9e2b0e3e, 0x43d1f34, 0x43d1f34, 0xfa2f329, 0xfa2f329, 0xfa2f329, 0x70a85a81, 0x70a85a81, 0x70a85a81, 0xe9f95f07, 0xe9f95f07, 0xe9f95f07, 0x43d1f34, 0x9e2b0e3e, 0x9e2b0e3e, 0x43d1f34, }, 20 },
|
{ "gfxterm_piglatin", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0xf2469ffb, 0x1d0c1d2, 0xf2469ffb, 0xdf9847b, 0x43d1f34, 0x43d1f34, 0xa2837c7a, 0xa2837c7a, 0xa2837c7a, 0xdd89d5d2, 0xdd89d5d2, 0xdd89d5d2, 0x44d8d054, 0x44d8d054, 0x44d8d054, 0x43d1f34, 0xdf9847b, 0xdf9847b, 0x43d1f34, }, 20 },
|
||||||
{ "gfxterm_ch", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0x200688e1, 0x1274a595, 0x200688e1, 0x63f045a6, 0x59c36f00, 0x59c36f00, 0x2312e40c, 0x2312e40c, 0x2312e40c, 0x5d92896a, 0x5d92896a, 0x5d92896a, 0x3f649cb8, 0x3f649cb8, 0x3f649cb8, 0x59c36f00, 0x63f045a6, 0x63f045a6, 0x59c36f00, }, 20 },
|
{ "gfxterm_ch", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0x27851cc1, 0x15f731b5, 0x27851cc1, 0x6473d186, 0x59c36f00, 0x59c36f00, 0x125bcddf, 0x125bcddf, 0x125bcddf, 0x6cdba0b9, 0x6cdba0b9, 0x6cdba0b9, 0xe2db56b, 0xe2db56b, 0xe2db56b, 0x59c36f00, 0x6473d186, 0x6473d186, 0x59c36f00, }, 20 },
|
||||||
{ "gfxterm_ch", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0xa943b821, 0x8aa682a4, 0xa943b821, 0x87463d5e, 0xaa4593fe, 0xaa4593fe, 0xff049fb7, 0xff049fb7, 0xff049fb7, 0x59f192d0, 0x59f192d0, 0x59f192d0, 0x74c939a8, 0x74c939a8, 0x74c939a8, 0xaa4593fe, 0x87463d5e, 0x87463d5e, 0xaa4593fe, }, 20 },
|
{ "gfxterm_ch", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0xfcb223c, 0x2c2e18b9, 0xfcb223c, 0x21cea743, 0xaa4593fe, 0xaa4593fe, 0xd700be1a, 0xd700be1a, 0xd700be1a, 0x71f5b37d, 0x71f5b37d, 0x71f5b37d, 0x5ccd1805, 0x5ccd1805, 0x5ccd1805, 0xaa4593fe, 0x21cea743, 0x21cea743, 0xaa4593fe, }, 20 },
|
||||||
{ "gfxterm_ch", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0x11b6367b, 0x27bbcfb4, 0x11b6367b, 0x4ca15bff, 0xc9cbf769, 0xc9cbf769, 0x51f424d6, 0x51f424d6, 0x51f424d6, 0xaf2ce51a, 0xaf2ce51a, 0xaf2ce51a, 0x46665a12, 0x46665a12, 0x46665a12, 0xc9cbf769, 0x4ca15bff, 0x4ca15bff, 0xc9cbf769, }, 20 },
|
{ "gfxterm_ch", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0x807efaa5, 0xb673036a, 0x807efaa5, 0xdd699721, 0xc9cbf769, 0xc9cbf769, 0xdca3ed4b, 0xdca3ed4b, 0xdca3ed4b, 0x227b2c87, 0x227b2c87, 0x227b2c87, 0xcb31938f, 0xcb31938f, 0xcb31938f, 0xc9cbf769, 0xdd699721, 0xdd699721, 0xc9cbf769, }, 20 },
|
||||||
{ "gfxterm_ch", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0x7c16ec93, 0xe9d7d93f, 0x7c16ec93, 0xd240a54b, 0x9813a416, 0x9813a416, 0x9e5c75d9, 0x9e5c75d9, 0x9e5c75d9, 0xf87f3ea, 0xf87f3ea, 0xf87f3ea, 0x163dce3a, 0x163dce3a, 0x163dce3a, 0x9813a416, 0xd240a54b, 0xd240a54b, 0x9813a416, }, 20 },
|
{ "gfxterm_ch", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0x651d0d50, 0xf0dc38fc, 0x651d0d50, 0xcb4b4488, 0x9813a416, 0x9813a416, 0x80d03ee8, 0x80d03ee8, 0x80d03ee8, 0x110bb8db, 0x110bb8db, 0x110bb8db, 0x8b1850b, 0x8b1850b, 0x8b1850b, 0x9813a416, 0xcb4b4488, 0xcb4b4488, 0x9813a416, }, 20 },
|
||||||
{ "gfxterm_ch", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0xe28608ec, 0x3575a25f, 0xe28608ec, 0x94203d5f, 0x5fcf013d, 0x5fcf013d, 0x7c6f7c86, 0x7c6f7c86, 0x7c6f7c86, 0xae7f64f0, 0xae7f64f0, 0xae7f64f0, 0xb80c5b6f, 0xb80c5b6f, 0xb80c5b6f, 0x5fcf013d, 0x94203d5f, 0x94203d5f, 0x5fcf013d, }, 20 },
|
{ "gfxterm_ch", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0xb9b068f, 0xdc68ac3c, 0xb9b068f, 0x7d3d333c, 0x5fcf013d, 0x5fcf013d, 0xa1f0a6e4, 0xa1f0a6e4, 0xa1f0a6e4, 0x73e0be92, 0x73e0be92, 0x73e0be92, 0x6593810d, 0x6593810d, 0x6593810d, 0x5fcf013d, 0x7d3d333c, 0x7d3d333c, 0x5fcf013d, }, 20 },
|
||||||
{ "gfxterm_ch", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0xb510e48, 0x9406b857, 0xb510e48, 0x1054d44f, 0xdd28f52b, 0xdd28f52b, 0x13c76182, 0x13c76182, 0x13c76182, 0x32fb9866, 0x32fb9866, 0x32fb9866, 0x4f4353ea, 0x4f4353ea, 0x4f4353ea, 0xdd28f52b, 0x1054d44f, 0x1054d44f, 0xdd28f52b, }, 20 },
|
{ "gfxterm_ch", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0xf0789d7e, 0x6f2f2b61, 0xf0789d7e, 0xeb7d4779, 0xdd28f52b, 0xdd28f52b, 0xb995630, 0xb995630, 0xb995630, 0x2aa5afd4, 0x2aa5afd4, 0x2aa5afd4, 0x571d6458, 0x571d6458, 0x571d6458, 0xdd28f52b, 0xeb7d4779, 0xeb7d4779, 0xdd28f52b, }, 20 },
|
||||||
{ "gfxterm_ch", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0xf256eb36, 0xaed7d845, 0xf256eb36, 0xde9f0b6, 0x43d1f34, 0x43d1f34, 0xbe644e0c, 0xbe644e0c, 0xbe644e0c, 0xc16ee7a4, 0xc16ee7a4, 0xc16ee7a4, 0x583fe222, 0x583fe222, 0x583fe222, 0x43d1f34, 0xde9f0b6, 0xde9f0b6, 0x43d1f34, }, 20 },
|
{ "gfxterm_ch", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0x819821ff, 0xdd19128c, 0x819821ff, 0x7e273a7f, 0x43d1f34, 0x43d1f34, 0xf35981d3, 0xf35981d3, 0xf35981d3, 0x8c53287b, 0x8c53287b, 0x8c53287b, 0x15022dfd, 0x15022dfd, 0x15022dfd, 0x43d1f34, 0x7e273a7f, 0x7e273a7f, 0x43d1f34, }, 20 },
|
||||||
{ "gfxterm_red", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0xe382dd9, 0x68f7c15a, 0xe382dd9, 0x59159307, 0x59c36f00, 0x59c36f00, 0xba01eaa9, 0xba01eaa9, 0xba01eaa9, 0xc48187cf, 0xc48187cf, 0xc48187cf, 0xa677921d, 0xa677921d, 0xa677921d, 0x59c36f00, 0x59159307, 0x59159307, 0x59c36f00, }, 20 },
|
{ "gfxterm_red", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0xa99604d1, 0xcf59e852, 0xa99604d1, 0xfebbba0f, 0x59c36f00, 0x59c36f00, 0x53767ce3, 0x53767ce3, 0x53767ce3, 0x2df61185, 0x2df61185, 0x2df61185, 0x4f000457, 0x4f000457, 0x4f000457, 0x59c36f00, 0xfebbba0f, 0xfebbba0f, 0x59c36f00, }, 20 },
|
||||||
{ "gfxterm_red", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x3c908c, 0xa4161734, 0x3c908c, 0xb09b4ada, 0xaa4593fe, 0xaa4593fe, 0xdfbf1f3, 0xdfbf1f3, 0xdfbf1f3, 0xab0efc94, 0xab0efc94, 0xab0efc94, 0x863657ec, 0x863657ec, 0x863657ec, 0xaa4593fe, 0xb09b4ada, 0xb09b4ada, 0xaa4593fe, }, 20 },
|
{ "gfxterm_red", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x7d0a218, 0xa3fa25a0, 0x7d0a218, 0xb777784e, 0xaa4593fe, 0xaa4593fe, 0x35db26e1, 0x35db26e1, 0x35db26e1, 0x932e2b86, 0x932e2b86, 0x932e2b86, 0xbe1680fe, 0xbe1680fe, 0xbe1680fe, 0xaa4593fe, 0xb777784e, 0xb777784e, 0xaa4593fe, }, 20 },
|
||||||
{ "gfxterm_red", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0xd2e9527, 0xb7a2caff, 0xd2e9527, 0x1d0b8b89, 0xc9cbf769, 0xc9cbf769, 0x6684aa7f, 0x6684aa7f, 0x6684aa7f, 0x985c6bb3, 0x985c6bb3, 0x985c6bb3, 0x7116d4bb, 0x7116d4bb, 0x7116d4bb, 0xc9cbf769, 0x1d0b8b89, 0x1d0b8b89, 0xc9cbf769, }, 20 },
|
{ "gfxterm_red", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0x63be90f4, 0xd932cf2c, 0x63be90f4, 0x739b8e5a, 0xc9cbf769, 0xc9cbf769, 0x70a00efe, 0x70a00efe, 0x70a00efe, 0x8e78cf32, 0x8e78cf32, 0x8e78cf32, 0x6732703a, 0x6732703a, 0x6732703a, 0xc9cbf769, 0x739b8e5a, 0x739b8e5a, 0xc9cbf769, }, 20 },
|
||||||
{ "gfxterm_red", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0x1639705d, 0xa599796a, 0x1639705d, 0x26488c72, 0x9813a416, 0x9813a416, 0x49b2de5c, 0x49b2de5c, 0x49b2de5c, 0xd869586f, 0xd869586f, 0xd869586f, 0xc1d365bf, 0xc1d365bf, 0xc1d365bf, 0x9813a416, 0x26488c72, 0x26488c72, 0x9813a416, }, 20 },
|
{ "gfxterm_red", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0x53460c90, 0xe0e605a7, 0x53460c90, 0x6337f0bf, 0x9813a416, 0x9813a416, 0x4161864c, 0x4161864c, 0x4161864c, 0xd0ba007f, 0xd0ba007f, 0xd0ba007f, 0xc9003daf, 0xc9003daf, 0xc9003daf, 0x9813a416, 0x6337f0bf, 0x6337f0bf, 0x9813a416, }, 20 },
|
||||||
{ "gfxterm_red", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0x10d0c422, 0x26df43, 0x10d0c422, 0xbed72bd7, 0x5fcf013d, 0x5fcf013d, 0x67d73911, 0x67d73911, 0x67d73911, 0xb5c72167, 0xb5c72167, 0xb5c72167, 0xa3b41ef8, 0xa3b41ef8, 0xa3b41ef8, 0x5fcf013d, 0xbed72bd7, 0xbed72bd7, 0x5fcf013d, }, 20 },
|
{ "gfxterm_red", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0xf54761a0, 0xe5b17ac1, 0xf54761a0, 0x5b408e55, 0x5fcf013d, 0x5fcf013d, 0x580fda0e, 0x580fda0e, 0x580fda0e, 0x8a1fc278, 0x8a1fc278, 0x8a1fc278, 0x9c6cfde7, 0x9c6cfde7, 0x9c6cfde7, 0x5fcf013d, 0x5b408e55, 0x5b408e55, 0x5fcf013d, }, 20 },
|
||||||
{ "gfxterm_red", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0xdd34e67a, 0x894c42a4, 0xdd34e67a, 0x53502da0, 0xdd28f52b, 0xdd28f52b, 0x886a111, 0x886a111, 0x886a111, 0x29ba58f5, 0x29ba58f5, 0x29ba58f5, 0x54029379, 0x54029379, 0x54029379, 0xdd28f52b, 0x53502da0, 0x53502da0, 0xdd28f52b, }, 20 },
|
{ "gfxterm_red", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0xec78b0c1, 0xb800141f, 0xec78b0c1, 0x621c7b1b, 0xdd28f52b, 0xdd28f52b, 0x8f60179, 0x8f60179, 0x8f60179, 0x29caf89d, 0x29caf89d, 0x29caf89d, 0x54723311, 0x54723311, 0x54723311, 0xdd28f52b, 0x621c7b1b, 0x621c7b1b, 0xdd28f52b, }, 20 },
|
||||||
{ "gfxterm_red", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0x410b50fc, 0xea9a8741, 0x410b50fc, 0xd653d65c, 0x43d1f34, 0x43d1f34, 0xcdea4de5, 0xcdea4de5, 0xcdea4de5, 0xb2e0e44d, 0xb2e0e44d, 0xb2e0e44d, 0x2bb1e1cb, 0x2bb1e1cb, 0x2bb1e1cb, 0x43d1f34, 0xd653d65c, 0xd653d65c, 0x43d1f34, }, 20 },
|
{ "gfxterm_red", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0xf209411b, 0x599896a6, 0xf209411b, 0x6551c7bb, 0x43d1f34, 0x43d1f34, 0x5ac6bb4a, 0x5ac6bb4a, 0x5ac6bb4a, 0x25cc12e2, 0x25cc12e2, 0x25cc12e2, 0xbc9d1764, 0xbc9d1764, 0xbc9d1764, 0x43d1f34, 0x6551c7bb, 0x6551c7bb, 0x43d1f34, }, 20 },
|
||||||
{ "gfxterm_high", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0x4c09d761, 0x2ac63be2, 0x4c09d761, 0xf44378ab, 0x59c36f00, 0x59c36f00, 0xd3a0a4df, 0xd3a0a4df, 0xd3a0a4df, 0xad20c9b9, 0xad20c9b9, 0xad20c9b9, 0xcfd6dc6b, 0xcfd6dc6b, 0xcfd6dc6b, 0x59c36f00, 0xf44378ab, 0xf44378ab, 0x59c36f00, }, 20 },
|
{ "gfxterm_high", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0x93b4fcd8, 0xf57b105b, 0x93b4fcd8, 0x2bfe5312, 0x59c36f00, 0x59c36f00, 0x3ad73295, 0x3ad73295, 0x3ad73295, 0x44575ff3, 0x44575ff3, 0x44575ff3, 0x26a14a21, 0x26a14a21, 0x26a14a21, 0x59c36f00, 0x2bfe5312, 0x2bfe5312, 0x59c36f00, }, 20 },
|
||||||
{ "gfxterm_high", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0xd3c0fce6, 0x77ea7b5e, 0xd3c0fce6, 0x10463469, 0xaa4593fe, 0xaa4593fe, 0x86e14b09, 0x86e14b09, 0x86e14b09, 0x2014466e, 0x2014466e, 0x2014466e, 0xd2ced16, 0xd2ced16, 0xd2ced16, 0xaa4593fe, 0x10463469, 0x10463469, 0xaa4593fe, }, 20 },
|
{ "gfxterm_high", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x656c9044, 0xc14617fc, 0x656c9044, 0xa6ea58cb, 0xaa4593fe, 0xaa4593fe, 0xbec19c1b, 0xbec19c1b, 0xbec19c1b, 0x1834917c, 0x1834917c, 0x1834917c, 0x350c3a04, 0x350c3a04, 0x350c3a04, 0xaa4593fe, 0xa6ea58cb, 0xa6ea58cb, 0xaa4593fe, }, 20 },
|
||||||
{ "gfxterm_high", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0xabafd82f, 0x112387f7, 0xabafd82f, 0xe9ca2412, 0xc9cbf769, 0xc9cbf769, 0xf2a2bdc8, 0xf2a2bdc8, 0xf2a2bdc8, 0xc7a7c04, 0xc7a7c04, 0xc7a7c04, 0xe530c30c, 0xe530c30c, 0xe530c30c, 0xc9cbf769, 0xe9ca2412, 0xe9ca2412, 0xc9cbf769, }, 20 },
|
{ "gfxterm_high", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0xa11479ed, 0x1b982635, 0xa11479ed, 0xe37185d0, 0xc9cbf769, 0xc9cbf769, 0xe4861949, 0xe4861949, 0xe4861949, 0x1a5ed885, 0x1a5ed885, 0x1a5ed885, 0xf314678d, 0xf314678d, 0xf314678d, 0xc9cbf769, 0xe37185d0, 0xe37185d0, 0xc9cbf769, }, 20 },
|
||||||
{ "gfxterm_high", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0x2b138245, 0x98b38b72, 0x2b138245, 0x6500200c, 0x9813a416, 0x9813a416, 0xbd3bd80c, 0xbd3bd80c, 0xbd3bd80c, 0x2ce05e3f, 0x2ce05e3f, 0x2ce05e3f, 0x355a63ef, 0x355a63ef, 0x355a63ef, 0x9813a416, 0x6500200c, 0x6500200c, 0x9813a416, }, 20 },
|
{ "gfxterm_high", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0x244770a7, 0x97e77990, 0x244770a7, 0x6a54d2ee, 0x9813a416, 0x9813a416, 0xb5e8801c, 0xb5e8801c, 0xb5e8801c, 0x2433062f, 0x2433062f, 0x2433062f, 0x3d893bff, 0x3d893bff, 0x3d893bff, 0x9813a416, 0x6a54d2ee, 0x6a54d2ee, 0x9813a416, }, 20 },
|
||||||
{ "gfxterm_high", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0x87f97368, 0x970f6809, 0x87f97368, 0x149f7c5f, 0x5fcf013d, 0x5fcf013d, 0xbe43bf51, 0xbe43bf51, 0xbe43bf51, 0x6c53a727, 0x6c53a727, 0x6c53a727, 0x7a2098b8, 0x7a2098b8, 0x7a2098b8, 0x5fcf013d, 0x149f7c5f, 0x149f7c5f, 0x5fcf013d, }, 20 },
|
{ "gfxterm_high", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0x8ca34476, 0x9c555f17, 0x8ca34476, 0x1fc54b41, 0x5fcf013d, 0x5fcf013d, 0x819b5c4e, 0x819b5c4e, 0x819b5c4e, 0x538b4438, 0x538b4438, 0x538b4438, 0x45f87ba7, 0x45f87ba7, 0x45f87ba7, 0x5fcf013d, 0x1fc54b41, 0x1fc54b41, 0x5fcf013d, }, 20 },
|
||||||
{ "gfxterm_high", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0x12986e14, 0x46e0caca, 0x12986e14, 0xf51eaa4a, 0xdd28f52b, 0xdd28f52b, 0xcdf3c404, 0xcdf3c404, 0xcdf3c404, 0xeccf3de0, 0xeccf3de0, 0xeccf3de0, 0x9177f66c, 0x9177f66c, 0x9177f66c, 0xdd28f52b, 0xf51eaa4a, 0xf51eaa4a, 0xdd28f52b, }, 20 },
|
{ "gfxterm_high", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0xf19f6af8, 0xa5e7ce26, 0xf19f6af8, 0x1619aea6, 0xdd28f52b, 0xdd28f52b, 0xcd83646c, 0xcd83646c, 0xcd83646c, 0xecbf9d88, 0xecbf9d88, 0xecbf9d88, 0x91075604, 0x91075604, 0x91075604, 0xdd28f52b, 0x1619aea6, 0x1619aea6, 0xdd28f52b, }, 20 },
|
||||||
{ "gfxterm_high", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0xf6aab2f6, 0x5d3b654b, 0xf6aab2f6, 0x8e22ec59, 0x43d1f34, 0x43d1f34, 0x252c3625, 0x252c3625, 0x252c3625, 0x5a269f8d, 0x5a269f8d, 0x5a269f8d, 0xc3779a0b, 0xc3779a0b, 0xc3779a0b, 0x43d1f34, 0x8e22ec59, 0x8e22ec59, 0x43d1f34, }, 20 },
|
{ "gfxterm_high", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0x5f75414f, 0xf4e496f2, 0x5f75414f, 0x27fd1fe0, 0x43d1f34, 0x43d1f34, 0xb200c08a, 0xb200c08a, 0xb200c08a, 0xcd0a6922, 0xcd0a6922, 0xcd0a6922, 0x545b6ca4, 0x545b6ca4, 0x545b6ca4, 0x43d1f34, 0x27fd1fe0, 0x27fd1fe0, 0x43d1f34, }, 20 },
|
||||||
{ "videotest", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x1368a483, 0x1368a483, 0x1368a483, 0x1368a483, 0x1368a483, }, 5 },
|
{ "videotest", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x1368a483, 0x1368a483, 0x1368a483, 0x1368a483, 0x1368a483, }, 5 },
|
||||||
{ "videotest", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0x7033079c, 0x7033079c, 0x7033079c, 0x7033079c, 0x7033079c, }, 5 },
|
{ "videotest", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0x7033079c, 0x7033079c, 0x7033079c, 0x7033079c, 0x7033079c, }, 5 },
|
||||||
{ "videotest", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xff583fbf, 0xff583fbf, 0xff583fbf, 0xff583fbf, 0xff583fbf, }, 5 },
|
{ "videotest", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xff583fbf, 0xff583fbf, 0xff583fbf, 0xff583fbf, 0xff583fbf, }, 5 },
|
||||||
|
|
|
@ -25,7 +25,10 @@ GRUB_MOD_LICENSE ("GPLv3+");
|
||||||
static grub_jmp_buf jmp_point;
|
static grub_jmp_buf jmp_point;
|
||||||
static int expected, ctr;
|
static int expected, ctr;
|
||||||
|
|
||||||
#pragma GCC diagnostic ignored "-Wmissing-noreturn"
|
/* This fixes GCC7 "unintentional fallthrough" warning */
|
||||||
|
static void jmp0 (void) __attribute__ ((noreturn));
|
||||||
|
static void jmp1 (void) __attribute__ ((noreturn));
|
||||||
|
static void jmp2 (void) __attribute__ ((noreturn));
|
||||||
|
|
||||||
static void
|
static void
|
||||||
jmp0 (void)
|
jmp0 (void)
|
||||||
|
|
63
grub-core/tests/strtoull_test.c
Normal file
63
grub-core/tests/strtoull_test.c
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
/*
|
||||||
|
* GRUB -- GRand Unified Bootloader
|
||||||
|
* Copyright (C) 2016 Free Software Foundation, Inc.
|
||||||
|
*
|
||||||
|
* GRUB 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 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* GRUB 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 GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <grub/test.h>
|
||||||
|
#include <grub/dl.h>
|
||||||
|
|
||||||
|
GRUB_MOD_LICENSE ("GPLv3+");
|
||||||
|
|
||||||
|
static void
|
||||||
|
strtoull_testcase (const char *input, int base, unsigned long long expected,
|
||||||
|
int num_digits, grub_err_t error)
|
||||||
|
{
|
||||||
|
char *output;
|
||||||
|
unsigned long long value;
|
||||||
|
grub_errno = 0;
|
||||||
|
value = grub_strtoull(input, &output, base);
|
||||||
|
grub_test_assert (grub_errno == error,
|
||||||
|
"unexpected error. Expected %d, got %d. Input \"%s\"",
|
||||||
|
error, grub_errno, input);
|
||||||
|
if (grub_errno)
|
||||||
|
{
|
||||||
|
grub_errno = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
grub_test_assert (input + num_digits == output,
|
||||||
|
"unexpected number of digits. Expected %d, got %d, input \"%s\"",
|
||||||
|
num_digits, (int) (output - input), input);
|
||||||
|
grub_test_assert (value == expected,
|
||||||
|
"unexpected return value. Expected %llu, got %llu, input \"\%s\"",
|
||||||
|
expected, value, input);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
strtoull_test (void)
|
||||||
|
{
|
||||||
|
strtoull_testcase ("9", 0, 9, 1, GRUB_ERR_NONE);
|
||||||
|
strtoull_testcase ("0xaa", 0, 0xaa, 4, GRUB_ERR_NONE);
|
||||||
|
strtoull_testcase ("0xff", 0, 0xff, 4, GRUB_ERR_NONE);
|
||||||
|
strtoull_testcase ("0", 10, 0, 1, GRUB_ERR_NONE);
|
||||||
|
strtoull_testcase ("8", 8, 0, 0, GRUB_ERR_BAD_NUMBER);
|
||||||
|
strtoull_testcase ("38", 8, 3, 1, GRUB_ERR_NONE);
|
||||||
|
strtoull_testcase ("7", 8, 7, 1, GRUB_ERR_NONE);
|
||||||
|
strtoull_testcase ("1]", 16, 1, 1, GRUB_ERR_NONE);
|
||||||
|
strtoull_testcase ("18446744073709551616", 10, 0, 0, GRUB_ERR_OUT_OF_RANGE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
GRUB_FUNCTIONAL_TEST (strtoull_test, strtoull_test);
|
|
@ -743,7 +743,7 @@ grub_video_fb_unmap_color_int (struct grub_video_fbblit_info * source,
|
||||||
if ((mode_info->mode_type
|
if ((mode_info->mode_type
|
||||||
& GRUB_VIDEO_MODE_TYPE_INDEX_COLOR) != 0)
|
& GRUB_VIDEO_MODE_TYPE_INDEX_COLOR) != 0)
|
||||||
{
|
{
|
||||||
if ((framebuffer.render_target->mode_info.mode_type
|
if ((mode_info->mode_type
|
||||||
& GRUB_VIDEO_MODE_TYPE_ALPHA) != 0
|
& GRUB_VIDEO_MODE_TYPE_ALPHA) != 0
|
||||||
&& color == 0xf0)
|
&& color == 0xf0)
|
||||||
{
|
{
|
||||||
|
|
|
@ -181,6 +181,7 @@ grub_video_ieee1275_fill_mode_info (grub_ieee1275_phandle_t dev,
|
||||||
case 32:
|
case 32:
|
||||||
out->reserved_mask_size = 8;
|
out->reserved_mask_size = 8;
|
||||||
out->reserved_field_pos = 24;
|
out->reserved_field_pos = 24;
|
||||||
|
/* FALLTHROUGH */
|
||||||
|
|
||||||
case 24:
|
case 24:
|
||||||
out->red_mask_size = 8;
|
out->red_mask_size = 8;
|
||||||
|
|
|
@ -736,6 +736,7 @@ grub_jpeg_decode_jpeg (struct grub_jpeg_data *data)
|
||||||
case JPEG_MARKER_SOS: /* Start Of Scan. */
|
case JPEG_MARKER_SOS: /* Start Of Scan. */
|
||||||
if (grub_jpeg_decode_sos (data))
|
if (grub_jpeg_decode_sos (data))
|
||||||
break;
|
break;
|
||||||
|
/* FALLTHROUGH */
|
||||||
case JPEG_MARKER_RST0: /* Restart. */
|
case JPEG_MARKER_RST0: /* Restart. */
|
||||||
case JPEG_MARKER_RST1:
|
case JPEG_MARKER_RST1:
|
||||||
case JPEG_MARKER_RST2:
|
case JPEG_MARKER_RST2:
|
||||||
|
|
|
@ -19,6 +19,13 @@
|
||||||
#ifndef GRUB_ARM64_RELOC_H
|
#ifndef GRUB_ARM64_RELOC_H
|
||||||
#define GRUB_ARM64_RELOC_H 1
|
#define GRUB_ARM64_RELOC_H 1
|
||||||
|
|
||||||
|
struct grub_arm64_trampoline
|
||||||
|
{
|
||||||
|
grub_uint32_t ldr; /* ldr x16, 8 */
|
||||||
|
grub_uint32_t br; /* br x16 */
|
||||||
|
grub_uint64_t addr;
|
||||||
|
};
|
||||||
|
|
||||||
int grub_arm_64_check_xxxx26_offset (grub_int64_t offset);
|
int grub_arm_64_check_xxxx26_offset (grub_int64_t offset);
|
||||||
void
|
void
|
||||||
grub_arm64_set_xxxx26_offset (grub_uint32_t *place, grub_int64_t offset);
|
grub_arm64_set_xxxx26_offset (grub_uint32_t *place, grub_int64_t offset);
|
||||||
|
|
|
@ -263,11 +263,16 @@ void grub_arch_dl_init_linker (void);
|
||||||
grub_err_t
|
grub_err_t
|
||||||
grub_ia64_dl_get_tramp_got_size (const void *ehdr, grub_size_t *tramp,
|
grub_ia64_dl_get_tramp_got_size (const void *ehdr, grub_size_t *tramp,
|
||||||
grub_size_t *got);
|
grub_size_t *got);
|
||||||
|
grub_err_t
|
||||||
|
grub_arm64_dl_get_tramp_got_size (const void *ehdr, grub_size_t *tramp,
|
||||||
|
grub_size_t *got);
|
||||||
|
|
||||||
#if defined (__ia64__)
|
#if defined (__ia64__)
|
||||||
#define GRUB_ARCH_DL_TRAMP_ALIGN GRUB_IA64_DL_TRAMP_ALIGN
|
#define GRUB_ARCH_DL_TRAMP_ALIGN GRUB_IA64_DL_TRAMP_ALIGN
|
||||||
#define GRUB_ARCH_DL_GOT_ALIGN GRUB_IA64_DL_GOT_ALIGN
|
#define GRUB_ARCH_DL_GOT_ALIGN GRUB_IA64_DL_GOT_ALIGN
|
||||||
#define grub_arch_dl_get_tramp_got_size grub_ia64_dl_get_tramp_got_size
|
#define grub_arch_dl_get_tramp_got_size grub_ia64_dl_get_tramp_got_size
|
||||||
|
#elif defined (__aarch64__)
|
||||||
|
#define grub_arch_dl_get_tramp_got_size grub_arm64_dl_get_tramp_got_size
|
||||||
#else
|
#else
|
||||||
grub_err_t
|
grub_err_t
|
||||||
grub_arch_dl_get_tramp_got_size (const void *ehdr, grub_size_t *tramp,
|
grub_arch_dl_get_tramp_got_size (const void *ehdr, grub_size_t *tramp,
|
||||||
|
|
|
@ -2068,11 +2068,14 @@ typedef Elf32_Addr Elf32_Conflict;
|
||||||
#define R_AARCH64_NONE 0 /* No relocation. */
|
#define R_AARCH64_NONE 0 /* No relocation. */
|
||||||
#define R_AARCH64_ABS64 257 /* Direct 64 bit. */
|
#define R_AARCH64_ABS64 257 /* Direct 64 bit. */
|
||||||
#define R_AARCH64_ABS32 258 /* Direct 32 bit. */
|
#define R_AARCH64_ABS32 258 /* Direct 32 bit. */
|
||||||
|
#define R_AARCH64_PREL32 261
|
||||||
#define R_AARCH64_ADR_PREL_PG_HI21 275
|
#define R_AARCH64_ADR_PREL_PG_HI21 275
|
||||||
#define R_AARCH64_ADD_ABS_LO12_NC 277
|
#define R_AARCH64_ADD_ABS_LO12_NC 277
|
||||||
#define R_AARCH64_LDST64_ABS_LO12_NC 286
|
#define R_AARCH64_LDST64_ABS_LO12_NC 286
|
||||||
#define R_AARCH64_JUMP26 282 /* 26-bit relative. */
|
#define R_AARCH64_JUMP26 282 /* 26-bit relative. */
|
||||||
#define R_AARCH64_CALL26 283 /* 26-bit relative. */
|
#define R_AARCH64_CALL26 283 /* 26-bit relative. */
|
||||||
|
#define R_AARCH64_ADR_GOT_PAGE 311
|
||||||
|
#define R_AARCH64_LD64_GOT_LO12_NC 312
|
||||||
#define R_AARCH64_COPY 1024 /* Copy symbol at runtime. */
|
#define R_AARCH64_COPY 1024 /* Copy symbol at runtime. */
|
||||||
#define R_AARCH64_GLOB_DAT 1025 /* Create GOT entry. */
|
#define R_AARCH64_GLOB_DAT 1025 /* Create GOT entry. */
|
||||||
#define R_AARCH64_JUMP_SLOT 1026 /* Create PLT entry. */
|
#define R_AARCH64_JUMP_SLOT 1026 /* Create PLT entry. */
|
||||||
|
|
|
@ -26,6 +26,8 @@ grub_ia64_add_value_to_slot_20b (grub_addr_t addr, grub_uint32_t value);
|
||||||
void
|
void
|
||||||
grub_ia64_add_value_to_slot_21 (grub_addr_t addr, grub_uint32_t value);
|
grub_ia64_add_value_to_slot_21 (grub_addr_t addr, grub_uint32_t value);
|
||||||
void
|
void
|
||||||
|
grub_ia64_set_immu64 (grub_addr_t addr, grub_uint64_t value);
|
||||||
|
void
|
||||||
grub_ia64_make_trampoline (struct grub_ia64_trampoline *tr, grub_uint64_t addr);
|
grub_ia64_make_trampoline (struct grub_ia64_trampoline *tr, grub_uint64_t addr);
|
||||||
|
|
||||||
struct grub_ia64_trampoline
|
struct grub_ia64_trampoline
|
||||||
|
|
|
@ -16,5 +16,5 @@ struct grub_module_verifier_arch {
|
||||||
const int *short_relocations;
|
const int *short_relocations;
|
||||||
};
|
};
|
||||||
|
|
||||||
void grub_module_verify64(void *module_img, size_t module_size, const struct grub_module_verifier_arch *arch);
|
void grub_module_verify64(void *module_img, size_t module_size, const struct grub_module_verifier_arch *arch, const char **whitelist_empty);
|
||||||
void grub_module_verify32(void *module_img, size_t module_size, const struct grub_module_verifier_arch *arch);
|
void grub_module_verify32(void *module_img, size_t module_size, const struct grub_module_verifier_arch *arch, const char **whitelist_empty);
|
||||||
|
|
|
@ -30,7 +30,7 @@ struct grub_mkimage_layout
|
||||||
size_t align;
|
size_t align;
|
||||||
grub_size_t ia64jmp_off;
|
grub_size_t ia64jmp_off;
|
||||||
grub_size_t tramp_off;
|
grub_size_t tramp_off;
|
||||||
grub_size_t ia64_got_off;
|
grub_size_t got_off;
|
||||||
grub_size_t got_size;
|
grub_size_t got_size;
|
||||||
unsigned ia64jmpnum;
|
unsigned ia64jmpnum;
|
||||||
grub_uint32_t bss_start;
|
grub_uint32_t bss_start;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
rsync -Lrtvz --exclude=ko.po translationproject.org::tp/latest/grub/ po
|
rsync -Lrtvz translationproject.org::tp/latest/grub/ po
|
||||||
|
|
||||||
autogenerated="en@quot en@hebrew de@hebrew en@cyrillic en@greek en@arabic en@piglatin de_CH"
|
autogenerated="en@quot en@hebrew de@hebrew en@cyrillic en@greek en@arabic en@piglatin de_CH"
|
||||||
|
|
||||||
|
|
|
@ -85,7 +85,10 @@ for ((LOGSECSIZE=MINLOGSECSIZE;LOGSECSIZE<=MAXLOGSECSIZE;LOGSECSIZE=LOGSECSIZE +
|
||||||
MAXBLKSIZE=1048576
|
MAXBLKSIZE=1048576
|
||||||
;;
|
;;
|
||||||
xnilfs2)
|
xnilfs2)
|
||||||
MINBLKSIZE=1024
|
# nilfs2 supports blocksizes from 1024 to 4096
|
||||||
|
# but non-4096 results in kernel oops in some cases,
|
||||||
|
# avoid it.
|
||||||
|
MINBLKSIZE=4096
|
||||||
MAXBLKSIZE=4096
|
MAXBLKSIZE=4096
|
||||||
;;
|
;;
|
||||||
xsfs*)
|
xsfs*)
|
||||||
|
@ -253,7 +256,7 @@ for ((LOGSECSIZE=MINLOGSECSIZE;LOGSECSIZE<=MAXLOGSECSIZE;LOGSECSIZE=LOGSECSIZE +
|
||||||
CFILES[0]="american-english";;
|
CFILES[0]="american-english";;
|
||||||
esac
|
esac
|
||||||
# OS LIMITATION: Limited by NAME_MAX (usually 255) in GNU/Linux
|
# OS LIMITATION: Limited by NAME_MAX (usually 255) in GNU/Linux
|
||||||
LONGNAME="qwertzuiopasdfghjklyxcvbnm1234567890qwertzuiopasdfghjklyxcvbnm1234567890oiewqfiewioqoiqoiurqruewqoiuwoieoiiuewqroreqiufieiuwrnureweriuvceoiroiewqoiricdsalkcndsakfirefoiwqeoircorejwoijfreoijojoiewjfwnfcoirenfoirefnreoifenoiwfnoirewoifoiwqwoieqfrqwioerijewr"
|
LONGNAME="qwertzuiopasdfghjklyxcvbnm1234567890qwertzuiopasdfghjklyxcvbnm1234567890oiewqfiewioqoiqoiurqruewqoiuwoieoiiuewqroreqiufieiuwrnureweriuvceoiroiewqoiricdsalkcndsakfirefoiwqeoircorejwoijfreoijojoiewjfwnfcoirenfoirefnreoifenoiwfnoi"
|
||||||
rm -rf "$MASTER"
|
rm -rf "$MASTER"
|
||||||
|
|
||||||
case x"$fs" in
|
case x"$fs" in
|
||||||
|
@ -265,7 +268,7 @@ for ((LOGSECSIZE=MINLOGSECSIZE;LOGSECSIZE<=MAXLOGSECSIZE;LOGSECSIZE=LOGSECSIZE +
|
||||||
;;
|
;;
|
||||||
# FS LIMITATION: btrfs label is at most 255 UTF-8 chars
|
# FS LIMITATION: btrfs label is at most 255 UTF-8 chars
|
||||||
x"btrfs"*)
|
x"btrfs"*)
|
||||||
FSLABEL="grub_;/testé莭莽😁киритi urewfceniuewruevrewnuuireurevueurnievrewfnerfcnevirivinrewvnirewnivrewiuvcrewvnuewvrrrewniuerwreiuviurewiuviurewnuvewnvrenurnunuvrevuurerejiremvreijnvcreivire nverivnreivrevnureiorfnfrvoeoiroireoireoifrefoieroifoireoif";;
|
FSLABEL="grub_;/testé莭莽😁киритi urewfceniuewruevrewnuuireurevueurnievrewfnerfcnevirivinrewvnirewnivrewiuvcrewvnuewvrrrewniuerwreiuviurewiuviurewnuvewnvrenurnunuvrevuurerejiremvreijnvcreivire nverivnreivrevnureiorfnfrvoeoiroireoireoifrefoieroifoireoi";;
|
||||||
|
|
||||||
# FS LIMITATION: exfat is at most 15 UTF-16 chars
|
# FS LIMITATION: exfat is at most 15 UTF-16 chars
|
||||||
x"exfat")
|
x"exfat")
|
||||||
|
@ -500,8 +503,8 @@ for ((LOGSECSIZE=MINLOGSECSIZE;LOGSECSIZE<=MAXLOGSECSIZE;LOGSECSIZE=LOGSECSIZE +
|
||||||
NOFSLABEL=y;;
|
NOFSLABEL=y;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
PDIRCOMPNUM=220
|
PDIRCOMPNUM=210
|
||||||
PDIR2COMPNUM=220
|
PDIR2COMPNUM=210
|
||||||
|
|
||||||
case x$fs in
|
case x$fs in
|
||||||
# OS LIMITATION: bfs_fuse bugs beyond that
|
# OS LIMITATION: bfs_fuse bugs beyond that
|
||||||
|
@ -516,7 +519,7 @@ for ((LOGSECSIZE=MINLOGSECSIZE;LOGSECSIZE<=MAXLOGSECSIZE;LOGSECSIZE=LOGSECSIZE +
|
||||||
# FS LIMITATION: at most 255 on path length
|
# FS LIMITATION: at most 255 on path length
|
||||||
# FS LIMITATION: at most 100 on symlink length
|
# FS LIMITATION: at most 100 on symlink length
|
||||||
xcpio_ustar)
|
xcpio_ustar)
|
||||||
PDIRCOMPNUM=85
|
PDIRCOMPNUM=84
|
||||||
PDIR2COMPNUM=30;;
|
PDIR2COMPNUM=30;;
|
||||||
# OS LIMITATION: Linux supports only symlink at most one block long on reiserfs
|
# OS LIMITATION: Linux supports only symlink at most one block long on reiserfs
|
||||||
xreiserfs | xreiserfs_old)
|
xreiserfs | xreiserfs_old)
|
||||||
|
@ -642,7 +645,7 @@ for ((LOGSECSIZE=MINLOGSECSIZE;LOGSECSIZE<=MAXLOGSECSIZE;LOGSECSIZE=LOGSECSIZE +
|
||||||
else
|
else
|
||||||
A=
|
A=
|
||||||
fi
|
fi
|
||||||
"mkfs.vfat" -a $A -S $SECSIZE -s $((BLKSIZE/SECSIZE)) -F "${BITS:0:2}" -n "$FSLABEL" "${LODEVICES[0]}"
|
"mkfs.vfat" -a $A -S $SECSIZE -s $((BLKSIZE/SECSIZE)) -F "${BITS:0:2}" -n "$FSLABEL" "${FSIMAGES[0]}"
|
||||||
MOUNTOPTS="iocharset=utf8,codepage=437,"
|
MOUNTOPTS="iocharset=utf8,codepage=437,"
|
||||||
MOUNTFS="$(echo "$fs"|sed 's,[0-9]*a\?$,,')";;
|
MOUNTFS="$(echo "$fs"|sed 's,[0-9]*a\?$,,')";;
|
||||||
x"minix2")
|
x"minix2")
|
||||||
|
@ -656,7 +659,7 @@ for ((LOGSECSIZE=MINLOGSECSIZE;LOGSECSIZE<=MAXLOGSECSIZE;LOGSECSIZE=LOGSECSIZE +
|
||||||
MOUNTOPTS="iocharset=utf8,compression,"
|
MOUNTOPTS="iocharset=utf8,compression,"
|
||||||
MOUNTFS="ntfs-3g";;
|
MOUNTFS="ntfs-3g";;
|
||||||
x"udf")
|
x"udf")
|
||||||
"/usr/bin/mkudffs" -b $BLKSIZE --utf8 --lvid="$FSLABEL" "${LODEVICES[0]}"
|
"mkudffs" --utf8 -b $BLKSIZE --lvid="$FSLABEL" "${LODEVICES[0]}"
|
||||||
MOUNTOPTS="iocharset=utf8,bs=$BLKSIZE,";;
|
MOUNTOPTS="iocharset=utf8,bs=$BLKSIZE,";;
|
||||||
x"ufs2")
|
x"ufs2")
|
||||||
"mkfs.ufs" -b $BLKSIZE -L "$FSLABEL" -O 2 "${LODEVICES[0]}"
|
"mkfs.ufs" -b $BLKSIZE -L "$FSLABEL" -O 2 "${LODEVICES[0]}"
|
||||||
|
@ -912,6 +915,9 @@ for ((LOGSECSIZE=MINLOGSECSIZE;LOGSECSIZE<=MAXLOGSECSIZE;LOGSECSIZE=LOGSECSIZE +
|
||||||
*)
|
*)
|
||||||
BLOCKCNT=5242880;;
|
BLOCKCNT=5242880;;
|
||||||
esac
|
esac
|
||||||
|
# Make sure file is not exact multiple of block size. This helps to force
|
||||||
|
# tail packing in case of squash4.
|
||||||
|
: $((BLOCKCNT--))
|
||||||
case x"$fs" in
|
case x"$fs" in
|
||||||
x"ntfscomp")
|
x"ntfscomp")
|
||||||
setfattr -h -v 0x00000800 -n system.ntfs_attrib_be "$MNTPOINTRW/$OSDIR";;
|
setfattr -h -v 0x00000800 -n system.ntfs_attrib_be "$MNTPOINTRW/$OSDIR";;
|
||||||
|
@ -997,8 +1003,8 @@ for ((LOGSECSIZE=MINLOGSECSIZE;LOGSECSIZE<=MAXLOGSECSIZE;LOGSECSIZE=LOGSECSIZE +
|
||||||
x"romfs")
|
x"romfs")
|
||||||
genromfs -V "$FSLABEL" -f "${FSIMAGES[0]}" -d "$MASTER" ;;
|
genromfs -V "$FSLABEL" -f "${FSIMAGES[0]}" -d "$MASTER" ;;
|
||||||
xsquash4_*)
|
xsquash4_*)
|
||||||
echo mksquashfs "$MASTER" "${FSIMAGES[0]}" -comp "${fs/squash4_/}" -b $BLKSIZE
|
echo mksquashfs "$MASTER" "${FSIMAGES[0]}" -always-use-fragments -comp "${fs/squash4_/}" -b $BLKSIZE
|
||||||
mksquashfs "$MASTER" "${FSIMAGES[0]}" -comp "${fs/squash4_/}" -b $BLKSIZE ;;
|
mksquashfs "$MASTER" "${FSIMAGES[0]}" -always-use-fragments -comp "${fs/squash4_/}" -b $BLKSIZE ;;
|
||||||
x"bfs")
|
x"bfs")
|
||||||
sleep 1
|
sleep 1
|
||||||
fusermount -u "$MNTPOINTRW"
|
fusermount -u "$MNTPOINTRW"
|
||||||
|
@ -1306,10 +1312,11 @@ for ((LOGSECSIZE=MINLOGSECSIZE;LOGSECSIZE<=MAXLOGSECSIZE;LOGSECSIZE=LOGSECSIZE +
|
||||||
# is not precise. Account for small difference here.
|
# is not precise. Account for small difference here.
|
||||||
FSTIMEM1="$(date -d "$FSTIME UTC -1 second" -u "+%Y-%m-%d %H:%M:%S")"
|
FSTIMEM1="$(date -d "$FSTIME UTC -1 second" -u "+%Y-%m-%d %H:%M:%S")"
|
||||||
FSTIMEM2="$(date -d "$FSTIME UTC -2 second" -u "+%Y-%m-%d %H:%M:%S")"
|
FSTIMEM2="$(date -d "$FSTIME UTC -2 second" -u "+%Y-%m-%d %H:%M:%S")"
|
||||||
|
FSTIMEM3="$(date -d "$FSTIME UTC -3 second" -u "+%Y-%m-%d %H:%M:%S")"
|
||||||
|
|
||||||
if [ x$NOFSTIME = xy ]; then
|
if [ x$NOFSTIME = xy ]; then
|
||||||
:
|
:
|
||||||
elif echo "$LSOUT" | grep -F 'Last modification time '"$FSTIME" > /dev/null || echo "$LSOUT" | grep -F 'Last modification time '"$FSTIMEM1" > /dev/null || echo "$LSOUT" | grep -F 'Last modification time '"$FSTIMEM2" > /dev/null; then
|
elif echo "$LSOUT" | grep -F 'Last modification time '"$FSTIME" > /dev/null || echo "$LSOUT" | grep -F 'Last modification time '"$FSTIMEM1" > /dev/null || echo "$LSOUT" | grep -F 'Last modification time '"$FSTIMEM2" || echo "$LSOUT" | grep -F 'Last modification time '"$FSTIMEM3" > /dev/null; then
|
||||||
:
|
:
|
||||||
else
|
else
|
||||||
echo FSTIME FAIL
|
echo FSTIME FAIL
|
||||||
|
@ -1517,3 +1524,4 @@ for ((LOGSECSIZE=MINLOGSECSIZE;LOGSECSIZE<=MAXLOGSECSIZE;LOGSECSIZE=LOGSECSIZE +
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
rmdir "${tempdir}"
|
||||||
|
|
|
@ -481,7 +481,7 @@ elif [ x$boot = xemu ]; then
|
||||||
mkdir -p "$grubdir/fonts"
|
mkdir -p "$grubdir/fonts"
|
||||||
mkdir -p "$grubdir/themes"
|
mkdir -p "$grubdir/themes"
|
||||||
mkdir -p "$grubdir/locale"
|
mkdir -p "$grubdir/locale"
|
||||||
cp "@builddir@/"unicode.pf2 "$grubdir/fonts/unicode.pf2"
|
test -f "@builddir@/"unicode.pf2 && cp "@builddir@/"unicode.pf2 "$grubdir/fonts/unicode.pf2"
|
||||||
cp -R "@srcdir@/themes/starfield" "$grubdir/themes/starfield"
|
cp -R "@srcdir@/themes/starfield" "$grubdir/themes/starfield"
|
||||||
for file in "@srcdir@/po/"*.gmo; do
|
for file in "@srcdir@/po/"*.gmo; do
|
||||||
if [ -f "$file" ]; then
|
if [ -f "$file" ]; then
|
||||||
|
|
|
@ -99,7 +99,7 @@ grub_util_pull_device (const char *os_dev)
|
||||||
{
|
{
|
||||||
case GRUB_DEV_ABSTRACTION_LVM:
|
case GRUB_DEV_ABSTRACTION_LVM:
|
||||||
grub_util_pull_lvm_by_command (os_dev);
|
grub_util_pull_lvm_by_command (os_dev);
|
||||||
/* Fallthrough in case that lvm-tools are unavailable. */
|
/* Fallthrough - in case that lvm-tools are unavailable. */
|
||||||
case GRUB_DEV_ABSTRACTION_LUKS:
|
case GRUB_DEV_ABSTRACTION_LUKS:
|
||||||
grub_util_pull_devmapper (os_dev);
|
grub_util_pull_devmapper (os_dev);
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -1851,6 +1851,7 @@ main (int argc, char *argv[])
|
||||||
free (mach_kernel);
|
free (mach_kernel);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
/* FALLTHROUGH */
|
||||||
case GRUB_INSTALL_PLATFORM_ARM_EFI:
|
case GRUB_INSTALL_PLATFORM_ARM_EFI:
|
||||||
case GRUB_INSTALL_PLATFORM_ARM64_EFI:
|
case GRUB_INSTALL_PLATFORM_ARM64_EFI:
|
||||||
case GRUB_INSTALL_PLATFORM_IA64_EFI:
|
case GRUB_INSTALL_PLATFORM_IA64_EFI:
|
||||||
|
|
|
@ -179,9 +179,6 @@ add_glyph (struct grub_font_info *font_info, FT_UInt glyph_idx, FT_Face face,
|
||||||
if (font_info->flags & GRUB_FONT_FLAG_BOLD)
|
if (font_info->flags & GRUB_FONT_FLAG_BOLD)
|
||||||
FT_GlyphSlot_Embolden (glyph);
|
FT_GlyphSlot_Embolden (glyph);
|
||||||
|
|
||||||
if (glyph->next)
|
|
||||||
printf ("%x\n", char_code);
|
|
||||||
|
|
||||||
if (nocut)
|
if (nocut)
|
||||||
cuttop = cutbottom = cutleft = cutright = 0;
|
cuttop = cutbottom = cutleft = cutright = 0;
|
||||||
else
|
else
|
||||||
|
|
|
@ -240,6 +240,7 @@ main (int argc, char *argv[])
|
||||||
{
|
{
|
||||||
FILE *fp = stdout;
|
FILE *fp = stdout;
|
||||||
struct arguments arguments;
|
struct arguments arguments;
|
||||||
|
unsigned i;
|
||||||
|
|
||||||
grub_util_host_init (&argc, &argv);
|
grub_util_host_init (&argc, &argv);
|
||||||
|
|
||||||
|
@ -304,7 +305,12 @@ main (int argc, char *argv[])
|
||||||
grub_util_file_sync (fp);
|
grub_util_file_sync (fp);
|
||||||
fclose (fp);
|
fclose (fp);
|
||||||
|
|
||||||
|
for (i = 0; i < arguments.nmodules; i++)
|
||||||
|
free (arguments.modules[i]);
|
||||||
|
|
||||||
free (arguments.dir);
|
free (arguments.dir);
|
||||||
|
free (arguments.prefix);
|
||||||
|
free (arguments.modules);
|
||||||
|
|
||||||
if (arguments.output)
|
if (arguments.output)
|
||||||
free (arguments.output);
|
free (arguments.output);
|
||||||
|
|
|
@ -50,8 +50,6 @@
|
||||||
|
|
||||||
#pragma GCC diagnostic ignored "-Wcast-align"
|
#pragma GCC diagnostic ignored "-Wcast-align"
|
||||||
|
|
||||||
static Elf_Addr SUFFIX (entry_point);
|
|
||||||
|
|
||||||
/* These structures are defined according to the CHRP binding to IEEE1275,
|
/* These structures are defined according to the CHRP binding to IEEE1275,
|
||||||
"Client Program Format" section. */
|
"Client Program Format" section. */
|
||||||
|
|
||||||
|
@ -719,6 +717,7 @@ SUFFIX (relocate_addresses) (Elf_Ehdr *e, Elf_Shdr *sections,
|
||||||
#ifdef MKIMAGE_ELF64
|
#ifdef MKIMAGE_ELF64
|
||||||
struct grub_ia64_trampoline *tr = (void *) (pe_target + tramp_off);
|
struct grub_ia64_trampoline *tr = (void *) (pe_target + tramp_off);
|
||||||
grub_uint64_t *gpptr = (void *) (pe_target + got_off);
|
grub_uint64_t *gpptr = (void *) (pe_target + got_off);
|
||||||
|
unsigned unmatched_adr_got_page = 0;
|
||||||
#define MASK19 ((1 << 19) - 1)
|
#define MASK19 ((1 << 19) - 1)
|
||||||
#else
|
#else
|
||||||
grub_uint32_t *tr = (void *) (pe_target + tramp_off);
|
grub_uint32_t *tr = (void *) (pe_target + tramp_off);
|
||||||
|
@ -908,6 +907,7 @@ SUFFIX (relocate_addresses) (Elf_Ehdr *e, Elf_Shdr *sections,
|
||||||
+ sym->st_value
|
+ sym->st_value
|
||||||
- image_target->vaddr_offset));
|
- image_target->vaddr_offset));
|
||||||
}
|
}
|
||||||
|
/* FALLTHROUGH */
|
||||||
case R_IA64_LTOFF_FPTR22:
|
case R_IA64_LTOFF_FPTR22:
|
||||||
*gpptr = grub_host_to_target64 (addend + sym_addr);
|
*gpptr = grub_host_to_target64 (addend + sym_addr);
|
||||||
grub_ia64_add_value_to_slot_21 ((grub_addr_t) target,
|
grub_ia64_add_value_to_slot_21 ((grub_addr_t) target,
|
||||||
|
@ -920,6 +920,10 @@ SUFFIX (relocate_addresses) (Elf_Ehdr *e, Elf_Shdr *sections,
|
||||||
grub_ia64_add_value_to_slot_21 ((grub_addr_t) target,
|
grub_ia64_add_value_to_slot_21 ((grub_addr_t) target,
|
||||||
addend + sym_addr);
|
addend + sym_addr);
|
||||||
break;
|
break;
|
||||||
|
case R_IA64_GPREL64I:
|
||||||
|
grub_ia64_set_immu64 ((grub_addr_t) target,
|
||||||
|
addend + sym_addr);
|
||||||
|
break;
|
||||||
case R_IA64_PCREL64LSB:
|
case R_IA64_PCREL64LSB:
|
||||||
*target = grub_host_to_target64 (grub_target_to_host64 (*target)
|
*target = grub_host_to_target64 (grub_target_to_host64 (*target)
|
||||||
+ addend + sym_addr
|
+ addend + sym_addr
|
||||||
|
@ -963,6 +967,18 @@ SUFFIX (relocate_addresses) (Elf_Ehdr *e, Elf_Shdr *sections,
|
||||||
*target = grub_host_to_target64 (grub_target_to_host64 (*target) + sym_addr);
|
*target = grub_host_to_target64 (grub_target_to_host64 (*target) + sym_addr);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case R_AARCH64_PREL32:
|
||||||
|
{
|
||||||
|
grub_uint32_t *t32 = (grub_uint32_t *) target;
|
||||||
|
*t32 = grub_host_to_target64 (grub_target_to_host32 (*t32)
|
||||||
|
+ sym_addr
|
||||||
|
- target_section_addr - offset
|
||||||
|
- image_target->vaddr_offset);
|
||||||
|
grub_util_info ("relocating an R_AARCH64_PREL32 entry to 0x%x at the offset 0x%"
|
||||||
|
GRUB_HOST_PRIxLONG_LONG,
|
||||||
|
*t32, (unsigned long long) offset);
|
||||||
|
break;
|
||||||
|
}
|
||||||
case R_AARCH64_ADD_ABS_LO12_NC:
|
case R_AARCH64_ADD_ABS_LO12_NC:
|
||||||
grub_arm64_set_abs_lo12 ((grub_uint32_t *) target,
|
grub_arm64_set_abs_lo12 ((grub_uint32_t *) target,
|
||||||
sym_addr);
|
sym_addr);
|
||||||
|
@ -975,7 +991,7 @@ SUFFIX (relocate_addresses) (Elf_Ehdr *e, Elf_Shdr *sections,
|
||||||
case R_AARCH64_CALL26:
|
case R_AARCH64_CALL26:
|
||||||
{
|
{
|
||||||
sym_addr -= offset;
|
sym_addr -= offset;
|
||||||
sym_addr -= SUFFIX (entry_point);
|
sym_addr -= target_section_addr + image_target->vaddr_offset;
|
||||||
if (!grub_arm_64_check_xxxx26_offset (sym_addr))
|
if (!grub_arm_64_check_xxxx26_offset (sym_addr))
|
||||||
grub_util_error ("%s", "CALL26 Relocation out of range");
|
grub_util_error ("%s", "CALL26 Relocation out of range");
|
||||||
|
|
||||||
|
@ -983,10 +999,45 @@ SUFFIX (relocate_addresses) (Elf_Ehdr *e, Elf_Shdr *sections,
|
||||||
sym_addr);
|
sym_addr);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case R_AARCH64_ADR_GOT_PAGE:
|
||||||
|
{
|
||||||
|
Elf64_Rela *rel2;
|
||||||
|
grub_int64_t gpoffset = (((char *) gpptr - (char *) pe_target + image_target->vaddr_offset) & ~0xfffULL)
|
||||||
|
- ((offset + target_section_addr + image_target->vaddr_offset) & ~0xfffULL);
|
||||||
|
unsigned k;
|
||||||
|
*gpptr = grub_host_to_target64 (sym_addr);
|
||||||
|
unmatched_adr_got_page++;
|
||||||
|
if (!grub_arm64_check_hi21_signed (gpoffset))
|
||||||
|
grub_util_error ("HI21 out of range");
|
||||||
|
grub_arm64_set_hi21((grub_uint32_t *)target,
|
||||||
|
gpoffset);
|
||||||
|
for (k = 0, rel2 = (Elf_Rela *) ((char *) r + r_size);
|
||||||
|
k < num_rs;
|
||||||
|
k++, rel2 = (Elf_Rela *) ((char *) rel2 + r_size))
|
||||||
|
if (ELF_R_SYM (rel2->r_info)
|
||||||
|
== ELF_R_SYM (r->r_info)
|
||||||
|
&& r->r_addend == rel2->r_addend
|
||||||
|
&& ELF_R_TYPE (rel2->r_info) == R_AARCH64_LD64_GOT_LO12_NC)
|
||||||
|
{
|
||||||
|
grub_arm64_set_abs_lo12_ldst64 ((grub_uint32_t *) SUFFIX (get_target_address) (e, target_section,
|
||||||
|
grub_target_to_host (rel2->r_offset), image_target),
|
||||||
|
((char *) gpptr - (char *) pe_target + image_target->vaddr_offset));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (k >= num_rs)
|
||||||
|
grub_util_error ("ADR_GOT_PAGE without matching LD64_GOT_LO12_NC");
|
||||||
|
gpptr++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case R_AARCH64_LD64_GOT_LO12_NC:
|
||||||
|
if (unmatched_adr_got_page == 0)
|
||||||
|
grub_util_error ("LD64_GOT_LO12_NC without matching ADR_GOT_PAGE");
|
||||||
|
unmatched_adr_got_page--;
|
||||||
|
break;
|
||||||
case R_AARCH64_ADR_PREL_PG_HI21:
|
case R_AARCH64_ADR_PREL_PG_HI21:
|
||||||
{
|
{
|
||||||
sym_addr &= ~0xfffULL;
|
sym_addr &= ~0xfffULL;
|
||||||
sym_addr -= (offset + SUFFIX (entry_point)) & ~0xfffULL;
|
sym_addr -= (offset + target_section_addr + image_target->vaddr_offset) & ~0xfffULL;
|
||||||
if (!grub_arm64_check_hi21_signed (sym_addr))
|
if (!grub_arm64_check_hi21_signed (sym_addr))
|
||||||
grub_util_error ("%s", "CALL26 Relocation out of range");
|
grub_util_error ("%s", "CALL26 Relocation out of range");
|
||||||
|
|
||||||
|
@ -1006,7 +1057,7 @@ SUFFIX (relocate_addresses) (Elf_Ehdr *e, Elf_Shdr *sections,
|
||||||
case EM_ARM:
|
case EM_ARM:
|
||||||
{
|
{
|
||||||
sym_addr += addend;
|
sym_addr += addend;
|
||||||
sym_addr -= SUFFIX (entry_point);
|
sym_addr -= image_target->vaddr_offset;
|
||||||
switch (ELF_R_TYPE (info))
|
switch (ELF_R_TYPE (info))
|
||||||
{
|
{
|
||||||
case R_ARM_ABS32:
|
case R_ARM_ABS32:
|
||||||
|
@ -1029,10 +1080,16 @@ SUFFIX (relocate_addresses) (Elf_Ehdr *e, Elf_Shdr *sections,
|
||||||
case R_ARM_THM_JUMP19:
|
case R_ARM_THM_JUMP19:
|
||||||
{
|
{
|
||||||
grub_err_t err;
|
grub_err_t err;
|
||||||
|
Elf_Sym *sym;
|
||||||
grub_util_info (" THM_JUMP24:\ttarget=0x%08lx\toffset=(0x%08x)",
|
grub_util_info (" THM_JUMP24:\ttarget=0x%08lx\toffset=(0x%08x)",
|
||||||
(unsigned long) ((char *) target
|
(unsigned long) ((char *) target
|
||||||
- (char *) e),
|
- (char *) e),
|
||||||
sym_addr);
|
sym_addr);
|
||||||
|
sym = (Elf_Sym *) ((char *) e
|
||||||
|
+ grub_target_to_host (symtab_section->sh_offset)
|
||||||
|
+ ELF_R_SYM (info) * grub_target_to_host (symtab_section->sh_entsize));
|
||||||
|
if (ELF_ST_TYPE (sym->st_info) != STT_FUNC)
|
||||||
|
sym_addr |= 1;
|
||||||
if (!(sym_addr & 1))
|
if (!(sym_addr & 1))
|
||||||
{
|
{
|
||||||
grub_uint32_t tr_addr;
|
grub_uint32_t tr_addr;
|
||||||
|
@ -1286,6 +1343,7 @@ translate_relocation_pe (struct translate_context *ctx,
|
||||||
case R_IA64_LTOFF22X:
|
case R_IA64_LTOFF22X:
|
||||||
case R_IA64_LTOFF22:
|
case R_IA64_LTOFF22:
|
||||||
case R_IA64_GPREL22:
|
case R_IA64_GPREL22:
|
||||||
|
case R_IA64_GPREL64I:
|
||||||
case R_IA64_SEGREL64LSB:
|
case R_IA64_SEGREL64LSB:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1326,6 +1384,7 @@ translate_relocation_pe (struct translate_context *ctx,
|
||||||
/* Relative relocations do not require fixup entries. */
|
/* Relative relocations do not require fixup entries. */
|
||||||
case R_AARCH64_CALL26:
|
case R_AARCH64_CALL26:
|
||||||
case R_AARCH64_JUMP26:
|
case R_AARCH64_JUMP26:
|
||||||
|
case R_AARCH64_PREL32:
|
||||||
break;
|
break;
|
||||||
/* Page-relative relocations do not require fixup entries. */
|
/* Page-relative relocations do not require fixup entries. */
|
||||||
case R_AARCH64_ADR_PREL_PG_HI21:
|
case R_AARCH64_ADR_PREL_PG_HI21:
|
||||||
|
@ -1336,6 +1395,11 @@ translate_relocation_pe (struct translate_context *ctx,
|
||||||
case R_AARCH64_LDST64_ABS_LO12_NC:
|
case R_AARCH64_LDST64_ABS_LO12_NC:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
/* GOT is relocated separately. */
|
||||||
|
case R_AARCH64_ADR_GOT_PAGE:
|
||||||
|
case R_AARCH64_LD64_GOT_LO12_NC:
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
grub_util_error (_("relocation 0x%x is not implemented yet"),
|
grub_util_error (_("relocation 0x%x is not implemented yet"),
|
||||||
(unsigned int) ELF_R_TYPE (info));
|
(unsigned int) ELF_R_TYPE (info));
|
||||||
|
@ -1544,9 +1608,9 @@ finish_reloc_translation (struct translate_context *ctx, struct grub_mkimage_lay
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
translate_reloc_jumpers (struct translate_context *ctx,
|
create_u64_fixups (struct translate_context *ctx,
|
||||||
Elf_Addr jumpers, grub_size_t njumpers,
|
Elf_Addr jumpers, grub_size_t njumpers,
|
||||||
const struct grub_install_image_target_desc *image_target)
|
const struct grub_install_image_target_desc *image_target)
|
||||||
{
|
{
|
||||||
unsigned i;
|
unsigned i;
|
||||||
assert (image_target->id == IMAGE_EFI);
|
assert (image_target->id == IMAGE_EFI);
|
||||||
|
@ -1611,11 +1675,17 @@ make_reloc_section (Elf_Ehdr *e, struct grub_mkimage_layout *layout,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (image_target->elf_target == EM_IA_64)
|
if (image_target->elf_target == EM_IA_64)
|
||||||
translate_reloc_jumpers (&ctx,
|
create_u64_fixups (&ctx,
|
||||||
layout->ia64jmp_off
|
layout->ia64jmp_off
|
||||||
+ image_target->vaddr_offset,
|
+ image_target->vaddr_offset,
|
||||||
2 * layout->ia64jmpnum + (layout->got_size / 8),
|
2 * layout->ia64jmpnum,
|
||||||
image_target);
|
image_target);
|
||||||
|
if (image_target->elf_target == EM_IA_64 || image_target->elf_target == EM_AARCH64)
|
||||||
|
create_u64_fixups (&ctx,
|
||||||
|
layout->got_off
|
||||||
|
+ image_target->vaddr_offset,
|
||||||
|
(layout->got_size / 8),
|
||||||
|
image_target);
|
||||||
|
|
||||||
finish_reloc_translation (&ctx, layout, image_target);
|
finish_reloc_translation (&ctx, layout, image_target);
|
||||||
}
|
}
|
||||||
|
@ -1941,7 +2011,18 @@ SUFFIX (grub_mkimage_load_image) (const char *kernel_path,
|
||||||
image_target);
|
image_target);
|
||||||
layout->kernel_size += 16 * layout->ia64jmpnum;
|
layout->kernel_size += 16 * layout->ia64jmpnum;
|
||||||
|
|
||||||
layout->ia64_got_off = layout->kernel_size;
|
layout->got_off = layout->kernel_size;
|
||||||
|
layout->kernel_size += ALIGN_UP (layout->got_size, 16);
|
||||||
|
}
|
||||||
|
if (image_target->elf_target == EM_AARCH64)
|
||||||
|
{
|
||||||
|
grub_size_t tramp;
|
||||||
|
|
||||||
|
layout->kernel_size = ALIGN_UP (layout->kernel_size, 16);
|
||||||
|
|
||||||
|
grub_arm64_dl_get_tramp_got_size (e, &tramp, &layout->got_size);
|
||||||
|
|
||||||
|
layout->got_off = layout->kernel_size;
|
||||||
layout->kernel_size += ALIGN_UP (layout->got_size, 16);
|
layout->kernel_size += ALIGN_UP (layout->got_size, 16);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -1969,14 +2050,12 @@ SUFFIX (grub_mkimage_load_image) (const char *kernel_path,
|
||||||
if (layout->start_address == (Elf_Addr) -1)
|
if (layout->start_address == (Elf_Addr) -1)
|
||||||
grub_util_error ("start symbol is not defined");
|
grub_util_error ("start symbol is not defined");
|
||||||
|
|
||||||
SUFFIX (entry_point) = (Elf_Addr) layout->start_address;
|
|
||||||
|
|
||||||
/* Resolve addresses in the virtual address space. */
|
/* Resolve addresses in the virtual address space. */
|
||||||
SUFFIX (relocate_addresses) (e, sections, section_addresses,
|
SUFFIX (relocate_addresses) (e, sections, section_addresses,
|
||||||
section_entsize,
|
section_entsize,
|
||||||
num_sections, strtab,
|
num_sections, strtab,
|
||||||
out_img, layout->tramp_off,
|
out_img, layout->tramp_off,
|
||||||
layout->ia64_got_off,
|
layout->got_off,
|
||||||
image_target);
|
image_target);
|
||||||
|
|
||||||
make_reloc_section (e, layout,
|
make_reloc_section (e, layout,
|
||||||
|
|
|
@ -60,6 +60,7 @@ struct grub_module_verifier_arch archs[] = {
|
||||||
R_IA64_PCREL64LSB,
|
R_IA64_PCREL64LSB,
|
||||||
R_IA64_LTOFF22X,
|
R_IA64_LTOFF22X,
|
||||||
R_IA64_LTOFF22,
|
R_IA64_LTOFF22,
|
||||||
|
R_IA64_GPREL64I,
|
||||||
R_IA64_LTOFF_FPTR22,
|
R_IA64_LTOFF_FPTR22,
|
||||||
R_IA64_LDXMOV,
|
R_IA64_LDXMOV,
|
||||||
-1
|
-1
|
||||||
|
@ -106,25 +107,48 @@ struct grub_module_verifier_arch archs[] = {
|
||||||
R_AARCH64_ABS64,
|
R_AARCH64_ABS64,
|
||||||
R_AARCH64_CALL26,
|
R_AARCH64_CALL26,
|
||||||
R_AARCH64_JUMP26,
|
R_AARCH64_JUMP26,
|
||||||
|
R_AARCH64_ADR_GOT_PAGE,
|
||||||
|
R_AARCH64_LD64_GOT_LO12_NC,
|
||||||
-1
|
-1
|
||||||
}, (int[]){
|
}, (int[]){
|
||||||
R_AARCH64_ADR_PREL_PG_HI21,
|
R_AARCH64_ADR_PREL_PG_HI21,
|
||||||
R_AARCH64_ADD_ABS_LO12_NC,
|
R_AARCH64_ADD_ABS_LO12_NC,
|
||||||
R_AARCH64_LDST64_ABS_LO12_NC,
|
R_AARCH64_LDST64_ABS_LO12_NC,
|
||||||
|
R_AARCH64_PREL32,
|
||||||
-1
|
-1
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct platform_whitelist {
|
||||||
|
const char *arch;
|
||||||
|
const char *platform;
|
||||||
|
const char **whitelist_empty;
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct platform_whitelist whitelists[] = {
|
||||||
|
{"i386", "xen", (const char *[]) {"all_video", 0}},
|
||||||
|
{"x86_64", "xen", (const char *[]) {"all_video", 0}},
|
||||||
|
{"sparc64", "ieee1275", (const char *[]) {"all_video", 0}},
|
||||||
|
|
||||||
|
/* video is compiled-in on MIPS. */
|
||||||
|
{"mipsel", "loongson", (const char *[]) {"all_video", 0}},
|
||||||
|
{"mipsel", "qemu_mips", (const char *[]) {"all_video", 0}},
|
||||||
|
{"mipsel", "arc", (const char *[]) {"all_video", 0}},
|
||||||
|
{"mips", "qemu_mips", (const char *[]) {"all_video", 0}},
|
||||||
|
{"mips", "arc", (const char *[]) {"all_video", 0}},
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
main (int argc, char **argv)
|
main (int argc, char **argv)
|
||||||
{
|
{
|
||||||
size_t module_size;
|
size_t module_size;
|
||||||
unsigned arch;
|
unsigned arch, whitelist;
|
||||||
|
const char **whitelist_empty = 0;
|
||||||
char *module_img;
|
char *module_img;
|
||||||
if (argc != 3) {
|
if (argc != 4) {
|
||||||
fprintf (stderr, "usage: %s FILE ARCH\n", argv[0]);
|
fprintf (stderr, "usage: %s FILE ARCH PLATFORM\n", argv[0]);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -134,11 +158,18 @@ main (int argc, char **argv)
|
||||||
if (arch == ARRAY_SIZE(archs))
|
if (arch == ARRAY_SIZE(archs))
|
||||||
grub_util_error("unknown arch: %s", argv[2]);
|
grub_util_error("unknown arch: %s", argv[2]);
|
||||||
|
|
||||||
|
for (whitelist = 0; whitelist < ARRAY_SIZE(whitelists); whitelist++)
|
||||||
|
if (strcmp(whitelists[whitelist].arch, argv[2]) == 0
|
||||||
|
&& strcmp(whitelists[whitelist].platform, argv[3]) == 0)
|
||||||
|
break;
|
||||||
|
if (whitelist != ARRAY_SIZE(whitelists))
|
||||||
|
whitelist_empty = whitelists[whitelist].whitelist_empty;
|
||||||
|
|
||||||
module_size = grub_util_get_image_size (argv[1]);
|
module_size = grub_util_get_image_size (argv[1]);
|
||||||
module_img = grub_util_read_image (argv[1]);
|
module_img = grub_util_read_image (argv[1]);
|
||||||
if (archs[arch].voidp_sizeof == 8)
|
if (archs[arch].voidp_sizeof == 8)
|
||||||
grub_module_verify64(module_img, module_size, &archs[arch]);
|
grub_module_verify64(module_img, module_size, &archs[arch], whitelist_empty);
|
||||||
else
|
else
|
||||||
grub_module_verify32(module_img, module_size, &archs[arch]);
|
grub_module_verify32(module_img, module_size, &archs[arch], whitelist_empty);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -184,8 +184,24 @@ get_symtab (const struct grub_module_verifier_arch *arch, Elf_Ehdr *e, Elf_Word
|
||||||
return sym;
|
return sym;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
is_whitelisted (const char *modname, const char **whitelist)
|
||||||
|
{
|
||||||
|
const char **ptr;
|
||||||
|
if (!whitelist)
|
||||||
|
return 0;
|
||||||
|
if (!modname)
|
||||||
|
return 0;
|
||||||
|
for (ptr = whitelist; *ptr; ptr++)
|
||||||
|
if (strcmp (modname, *ptr) == 0)
|
||||||
|
return 1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
check_symbols (const struct grub_module_verifier_arch *arch, Elf_Ehdr *e)
|
check_symbols (const struct grub_module_verifier_arch *arch,
|
||||||
|
Elf_Ehdr *e, const char *modname,
|
||||||
|
const char **whitelist_empty)
|
||||||
{
|
{
|
||||||
Elf_Sym *sym;
|
Elf_Sym *sym;
|
||||||
Elf_Word size, entsize;
|
Elf_Word size, entsize;
|
||||||
|
@ -196,7 +212,16 @@ check_symbols (const struct grub_module_verifier_arch *arch, Elf_Ehdr *e)
|
||||||
sym = get_symtab (arch, e, &size, &entsize);
|
sym = get_symtab (arch, e, &size, &entsize);
|
||||||
if (!sym)
|
if (!sym)
|
||||||
{
|
{
|
||||||
Elf_Shdr *s = find_section (arch, e, ".moddeps");
|
Elf_Shdr *s;
|
||||||
|
|
||||||
|
/* However some modules are dependencies-only,
|
||||||
|
e.g. insmod all_video pulls in all video drivers.
|
||||||
|
Some platforms e.g. xen have no video drivers, so
|
||||||
|
the module does nothing. */
|
||||||
|
if (is_whitelisted (modname, whitelist_empty))
|
||||||
|
return;
|
||||||
|
|
||||||
|
s = find_section (arch, e, ".moddeps");
|
||||||
|
|
||||||
if (!s)
|
if (!s)
|
||||||
grub_util_error ("no symbol table and no .moddeps section");
|
grub_util_error ("no symbol table and no .moddeps section");
|
||||||
|
@ -294,6 +319,40 @@ section_check_relocations (const struct grub_module_verifier_arch *arch, void *e
|
||||||
continue;
|
continue;
|
||||||
grub_util_error ("relocation 0x%x is not module-local", type);
|
grub_util_error ("relocation 0x%x is not module-local", type);
|
||||||
}
|
}
|
||||||
|
#if defined(MODULEVERIFIER_ELF64)
|
||||||
|
if (arch->machine == EM_AARCH64)
|
||||||
|
{
|
||||||
|
unsigned unmatched_adr_got_page = 0;
|
||||||
|
Elf_Rela *rel2;
|
||||||
|
for (rel = (Elf_Rel *) ((char *) ehdr + grub_target_to_host (s->sh_offset)),
|
||||||
|
max = (Elf_Rel *) ((char *) rel + grub_target_to_host (s->sh_size));
|
||||||
|
rel < max;
|
||||||
|
rel = (Elf_Rel *) ((char *) rel + grub_target_to_host (s->sh_entsize)))
|
||||||
|
{
|
||||||
|
switch (ELF_R_TYPE (grub_target_to_host (rel->r_info)))
|
||||||
|
{
|
||||||
|
case R_AARCH64_ADR_GOT_PAGE:
|
||||||
|
unmatched_adr_got_page++;
|
||||||
|
for (rel2 = (Elf_Rela *) ((char *) rel + grub_target_to_host (s->sh_entsize));
|
||||||
|
rel2 < (Elf_Rela *) max;
|
||||||
|
rel2 = (Elf_Rela *) ((char *) rel2 + grub_target_to_host (s->sh_entsize)))
|
||||||
|
if (ELF_R_SYM (rel2->r_info)
|
||||||
|
== ELF_R_SYM (rel->r_info)
|
||||||
|
&& ((Elf_Rela *) rel)->r_addend == rel2->r_addend
|
||||||
|
&& ELF_R_TYPE (rel2->r_info) == R_AARCH64_LD64_GOT_LO12_NC)
|
||||||
|
break;
|
||||||
|
if (rel2 >= (Elf_Rela *) max)
|
||||||
|
grub_util_error ("ADR_GOT_PAGE without matching LD64_GOT_LO12_NC");
|
||||||
|
break;
|
||||||
|
case R_AARCH64_LD64_GOT_LO12_NC:
|
||||||
|
if (unmatched_adr_got_page == 0)
|
||||||
|
grub_util_error ("LD64_GOT_LO12_NC without matching ADR_GOT_PAGE");
|
||||||
|
unmatched_adr_got_page--;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -324,7 +383,9 @@ check_relocations (const struct grub_module_verifier_arch *arch, Elf_Ehdr *e)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
SUFFIX(grub_module_verify) (void *module_img, size_t size, const struct grub_module_verifier_arch *arch)
|
SUFFIX(grub_module_verify) (void *module_img, size_t size,
|
||||||
|
const struct grub_module_verifier_arch *arch,
|
||||||
|
const char **whitelist_empty)
|
||||||
{
|
{
|
||||||
Elf_Ehdr *e = module_img;
|
Elf_Ehdr *e = module_img;
|
||||||
|
|
||||||
|
@ -361,11 +422,14 @@ SUFFIX(grub_module_verify) (void *module_img, size_t size, const struct grub_mod
|
||||||
check_license (arch, e);
|
check_license (arch, e);
|
||||||
|
|
||||||
Elf_Shdr *s;
|
Elf_Shdr *s;
|
||||||
|
const char *modname;
|
||||||
|
|
||||||
s = find_section (arch, e, ".modname");
|
s = find_section (arch, e, ".modname");
|
||||||
if (!s)
|
if (!s)
|
||||||
grub_util_error ("no module name found");
|
grub_util_error ("no module name found");
|
||||||
|
|
||||||
check_symbols(arch, e);
|
modname = (const char *) e + grub_target_to_host (s->sh_offset);
|
||||||
|
|
||||||
|
check_symbols(arch, e, modname, whitelist_empty);
|
||||||
check_relocations(arch, e);
|
check_relocations(arch, e);
|
||||||
}
|
}
|
||||||
|
|
|
@ -530,6 +530,7 @@ argp_parser (int key, char *arg, struct argp_state *state)
|
||||||
if (arg[0] != '-')
|
if (arg[0] != '-')
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
/* FALLTHROUGH */
|
||||||
default:
|
default:
|
||||||
if (!arg)
|
if (!arg)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in a new issue