diff --git a/0001-fix-EFI-detection-on-Windows.patch b/0001-fix-EFI-detection-on-Windows.patch index b201774..ec59fc7 100644 --- a/0001-fix-EFI-detection-on-Windows.patch +++ b/0001-fix-EFI-detection-on-Windows.patch @@ -1,7 +1,7 @@ From a6e7719bbe05993613a8de69dba14fa092144925 Mon Sep 17 00:00:00 2001 From: Andrey Borzenkov Date: Wed, 25 Dec 2013 22:36:28 +0400 -Subject: [PATCH 001/103] fix EFI detection on Windows +Subject: [PATCH 001/125] fix EFI detection on Windows We are on legacy BIOS if GetFirmwareEnvironmentVariable fails (returns zero) *and* extended error information is ERROR_INVALID_FUNCTION. diff --git a/0002-grub-core-kern-arm-cache_armv6.S-Remove-.arch-direct.patch b/0002-grub-core-kern-arm-cache_armv6.S-Remove-.arch-direct.patch index 33702e5..36e531a 100644 --- a/0002-grub-core-kern-arm-cache_armv6.S-Remove-.arch-direct.patch +++ b/0002-grub-core-kern-arm-cache_armv6.S-Remove-.arch-direct.patch @@ -1,7 +1,7 @@ From 5bda44d7f98c36f87144869ec58b518f80a69b56 Mon Sep 17 00:00:00 2001 From: Vladimir Serbinenko Date: Wed, 25 Dec 2013 23:31:42 +0100 -Subject: [PATCH 002/103] * grub-core/kern/arm/cache_armv6.S: Remove +Subject: [PATCH 002/125] * grub-core/kern/arm/cache_armv6.S: Remove .arch directive. As these functions are used on pre-ARMv6 CPUs as well we don't want diff --git a/0003-INSTALL-Cross-compiling-the-GRUB-Fix-some-spelling-m.patch b/0003-INSTALL-Cross-compiling-the-GRUB-Fix-some-spelling-m.patch index c7c62b0..5ad6d34 100644 --- a/0003-INSTALL-Cross-compiling-the-GRUB-Fix-some-spelling-m.patch +++ b/0003-INSTALL-Cross-compiling-the-GRUB-Fix-some-spelling-m.patch @@ -1,11 +1,9 @@ -From b3a04ee7745f9db87475ed926569ca1b3ba63994 Mon Sep 17 00:00:00 2001 -From: Peter Jones -Date: Tue, 6 May 2014 10:47:21 -0400 -Subject: [PATCH 003/103] * INSTALL (Cross-compiling the GRUB): Fix some +From 8ebe593c564edc8ae62086df8a1448e898ef259b Mon Sep 17 00:00:00 2001 +From: Colin Watson +Date: Fri, 27 Dec 2013 03:03:32 +0000 +Subject: [PATCH 003/125] * INSTALL (Cross-compiling the GRUB): Fix some spelling mistakes. * docs/grub.texi (Getting the source code): Likewise. -Conflicts: - ChangeLog --- ChangeLog | 5 +++++ INSTALL | 10 +++++----- diff --git a/0004-NEWS-First-draft-of-2.02-entry.patch b/0004-NEWS-First-draft-of-2.02-entry.patch index 4ef0581..70ebfc6 100644 --- a/0004-NEWS-First-draft-of-2.02-entry.patch +++ b/0004-NEWS-First-draft-of-2.02-entry.patch @@ -1,7 +1,7 @@ -From 4b4eebb6b2cb81455337137d75467db0e00c7d99 Mon Sep 17 00:00:00 2001 +From c0e2febef52139e0e580e52f553bf3aa521e390c Mon Sep 17 00:00:00 2001 From: Colin Watson Date: Fri, 27 Dec 2013 03:05:38 +0000 -Subject: [PATCH 004/103] * NEWS: First draft of 2.02 entry. +Subject: [PATCH 004/125] * NEWS: First draft of 2.02 entry. --- ChangeLog | 4 +++ diff --git a/0005-Merge-branch-master-of-git.sv.gnu.org-srv-git-grub.patch b/0005-Merge-branch-master-of-git.sv.gnu.org-srv-git-grub.patch new file mode 100644 index 0000000..36c3640 --- /dev/null +++ b/0005-Merge-branch-master-of-git.sv.gnu.org-srv-git-grub.patch @@ -0,0 +1,43 @@ +From 9ee79da5bf54babe11178ced48470b5f09d3dda3 Mon Sep 17 00:00:00 2001 +From: Vladimir Serbinenko +Date: Fri, 27 Dec 2013 11:20:37 +0100 +Subject: [PATCH 005/125] Merge branch 'master' of git.sv.gnu.org:/srv/git/grub + +Conflicts: + ChangeLog +--- + ChangeLog | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index 82dc61d..da3c2df 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,10 @@ ++2013-12-27 Vladimir Serbinenko ++ ++ * grub-core/kern/arm/cache_armv6.S: Remove .arch directive. ++ ++ As these functions are used on pre-ARMv6 CPUs as well we don't want ++ to make assembler assume that architecture is higher than default one. ++ + 2013-12-27 Colin Watson + + * NEWS: First draft of 2.02 entry. +@@ -7,13 +14,6 @@ + * INSTALL (Cross-compiling the GRUB): Fix some spelling mistakes. + * docs/grub.texi (Getting the source code): Likewise. + +-2013-12-25 Vladimir Serbinenko +- +- * grub-core/kern/arm/cache_armv6.S: Remove .arch directive. +- +- As these functions are used on pre-ARMv6 CPUs as well we don't want +- to make assembler assume that architecture is higher than default one. +- + 2013-12-25 Andrey Borzenkov + + * grub-core/osdep/windows/platform.c (get_platform): Fix EFI +-- +1.9.0 + diff --git a/0005-NEWS-The-cmosclean-command-in-fact-dates-back-to-1.9.patch b/0005-NEWS-The-cmosclean-command-in-fact-dates-back-to-1.9.patch deleted file mode 100644 index 99b3650..0000000 --- a/0005-NEWS-The-cmosclean-command-in-fact-dates-back-to-1.9.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 41a4b6d4b2fcf14e6f8dcc03dda3eb807a64c428 Mon Sep 17 00:00:00 2001 -From: Colin Watson -Date: Sat, 28 Dec 2013 02:20:27 +0000 -Subject: [PATCH 005/103] * NEWS: The cmosclean command in fact dates back to - 1.99. Remove mention of it from 2.02. - ---- - ChangeLog | 5 +++++ - NEWS | 3 +-- - 2 files changed, 6 insertions(+), 2 deletions(-) - -diff --git a/ChangeLog b/ChangeLog -index 82dc61d..a606ca5 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,8 @@ -+2013-12-28 Colin Watson -+ -+ * NEWS: The cmosclean command in fact dates back to 1.99. Remove -+ mention of it from 2.02. -+ - 2013-12-27 Colin Watson - - * NEWS: First draft of 2.02 entry. -diff --git a/NEWS b/NEWS -index 577d9fd..b74c05f 100644 ---- a/NEWS -+++ b/NEWS -@@ -46,8 +46,7 @@ New in 2.02: - - * New/improved platform support: - * New `efifwsetup' and `lsefi' commands on EFI platforms. -- * New `cmosclean', `cmosdump', and `cmosset' commands on platforms with -- CMOS support. -+ * New `cmosdump' and `cmosset' commands on platforms with CMOS support. - * New `cbmemc', `coreboot_boottime', and `lscoreboot' commands on - coreboot. - * Improve opcode parsing in ACPI halt implementation. --- -1.9.0 - diff --git a/0006-NEWS-The-cmosclean-command-in-fact-dates-back-to-1.9.patch b/0006-NEWS-The-cmosclean-command-in-fact-dates-back-to-1.9.patch new file mode 100644 index 0000000..7e5dff0 --- /dev/null +++ b/0006-NEWS-The-cmosclean-command-in-fact-dates-back-to-1.9.patch @@ -0,0 +1,41 @@ +From 94763697f5f33614b7bd6da91707a27b6872b750 Mon Sep 17 00:00:00 2001 +From: Colin Watson +Date: Sat, 28 Dec 2013 02:20:27 +0000 +Subject: [PATCH 006/125] * NEWS: The cmosclean command in fact dates back to + 1.99. Remove mention of it from 2.02. + +--- + ChangeLog | 5 +++++ + NEWS | 3 +-- + 2 files changed, 6 insertions(+), 2 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index da3c2df..c33856e 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,8 @@ ++2013-12-28 Colin Watson ++ ++ * NEWS: The cmosclean command in fact dates back to 1.99. Remove ++ mention of it from 2.02. ++ + 2013-12-27 Vladimir Serbinenko + + * grub-core/kern/arm/cache_armv6.S: Remove .arch directive. +diff --git a/NEWS b/NEWS +index 577d9fd..b74c05f 100644 +--- a/NEWS ++++ b/NEWS +@@ -46,8 +46,7 @@ New in 2.02: + + * New/improved platform support: + * New `efifwsetup' and `lsefi' commands on EFI platforms. +- * New `cmosclean', `cmosdump', and `cmosset' commands on platforms with +- CMOS support. ++ * New `cmosdump' and `cmosset' commands on platforms with CMOS support. + * New `cbmemc', `coreboot_boottime', and `lscoreboot' commands on + coreboot. + * Improve opcode parsing in ACPI halt implementation. +-- +1.9.0 + diff --git a/0006-remove-unused-error.h-from-kern-emu-misc.c.patch b/0006-remove-unused-error.h-from-kern-emu-misc.c.patch deleted file mode 100644 index 4785b61..0000000 --- a/0006-remove-unused-error.h-from-kern-emu-misc.c.patch +++ /dev/null @@ -1,39 +0,0 @@ -From bdabacb90e48becc55a4f84e0166c573663879d4 Mon Sep 17 00:00:00 2001 -From: Andrey Borzenkov -Date: Sat, 28 Dec 2013 09:01:20 +0400 -Subject: [PATCH 006/103] remove unused error.h from kern/emu/misc.c - -Fixes compilation on mingw32, where include is apparently missing. ---- - ChangeLog | 5 +++++ - grub-core/kern/emu/misc.c | 1 - - 2 files changed, 5 insertions(+), 1 deletion(-) - -diff --git a/ChangeLog b/ChangeLog -index a606ca5..17c1c31 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,8 @@ -+2013-12-28 Andrey Borzenkov -+ -+ * grub-core/kern/emu/misc.c: Remove unused error.h; fixes compilation -+ on mingw. -+ - 2013-12-28 Colin Watson - - * NEWS: The cmosclean command in fact dates back to 1.99. Remove -diff --git a/grub-core/kern/emu/misc.c b/grub-core/kern/emu/misc.c -index 43471b4..bb606da 100644 ---- a/grub-core/kern/emu/misc.c -+++ b/grub-core/kern/emu/misc.c -@@ -20,7 +20,6 @@ - #include - - #include --#include - #include - #include - #include --- -1.9.0 - diff --git a/0007-Don-t-abort-on-unavailable-coreboot-tables-if-not-ru.patch b/0007-Don-t-abort-on-unavailable-coreboot-tables-if-not-ru.patch deleted file mode 100644 index 7f53d4e..0000000 --- a/0007-Don-t-abort-on-unavailable-coreboot-tables-if-not-ru.patch +++ /dev/null @@ -1,70 +0,0 @@ -From 52bc775fbd3b6e4bb68fe3f5644a23a475ff0b26 Mon Sep 17 00:00:00 2001 -From: Vladimir Serbinenko -Date: Sat, 28 Dec 2013 17:25:14 +0100 -Subject: [PATCH 007/103] Don't abort() on unavailable coreboot tables - if not running on coreboot. - ---- - ChangeLog | 4 ++++ - grub-core/kern/i386/coreboot/cbtable.c | 2 +- - grub-core/kern/i386/coreboot/init.c | 5 +++++ - 3 files changed, 10 insertions(+), 1 deletion(-) - -diff --git a/ChangeLog b/ChangeLog -index 17c1c31..140b2d8 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,7 @@ -+2013-12-28 Vladimir Serbinenko -+ -+ Don't abort() on unavailable coreboot tables if not running on coreboot. -+ - 2013-12-28 Andrey Borzenkov - - * grub-core/kern/emu/misc.c: Remove unused error.h; fixes compilation -diff --git a/grub-core/kern/i386/coreboot/cbtable.c b/grub-core/kern/i386/coreboot/cbtable.c -index e3bb7b2..1669bc0 100644 ---- a/grub-core/kern/i386/coreboot/cbtable.c -+++ b/grub-core/kern/i386/coreboot/cbtable.c -@@ -55,7 +55,7 @@ grub_linuxbios_table_iterate (int (*hook) (grub_linuxbios_table_item_t, - if (check_signature (table_header)) - goto signature_found; - -- grub_fatal ("Could not find coreboot table\n"); -+ return 0; - - signature_found: - -diff --git a/grub-core/kern/i386/coreboot/init.c b/grub-core/kern/i386/coreboot/init.c -index 6b150b4..3314f02 100644 ---- a/grub-core/kern/i386/coreboot/init.c -+++ b/grub-core/kern/i386/coreboot/init.c -@@ -51,6 +51,7 @@ grub_exit (void) - - grub_addr_t grub_modbase = GRUB_KERNEL_I386_COREBOOT_MODULES_ADDR; - static grub_uint64_t modend; -+static int have_memory = 0; - - /* Helper for grub_machine_init. */ - static int -@@ -82,6 +83,8 @@ heap_init (grub_uint64_t addr, grub_uint64_t size, grub_memory_type_t type, - - grub_mm_init_region ((void *) (grub_addr_t) begin, (grub_size_t) (end - begin)); - -+ have_memory = 1; -+ - return 0; - } - -@@ -97,6 +100,8 @@ grub_machine_init (void) - grub_vga_text_init (); - - grub_machine_mmap_iterate (heap_init, NULL); -+ if (!have_memory) -+ grub_fatal ("No memory found"); - - grub_video_coreboot_fb_late_init (); - --- -1.9.0 - diff --git a/0007-remove-unused-error.h-from-kern-emu-misc.c.patch b/0007-remove-unused-error.h-from-kern-emu-misc.c.patch new file mode 100644 index 0000000..ffa8bfc --- /dev/null +++ b/0007-remove-unused-error.h-from-kern-emu-misc.c.patch @@ -0,0 +1,39 @@ +From 904bd6b3cb12977def4f940e90aca3fe557c3bb5 Mon Sep 17 00:00:00 2001 +From: Andrey Borzenkov +Date: Sat, 28 Dec 2013 09:01:20 +0400 +Subject: [PATCH 007/125] remove unused error.h from kern/emu/misc.c + +Fixes compilation on mingw32, where include is apparently missing. +--- + ChangeLog | 5 +++++ + grub-core/kern/emu/misc.c | 1 - + 2 files changed, 5 insertions(+), 1 deletion(-) + +diff --git a/ChangeLog b/ChangeLog +index c33856e..0401f61 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,8 @@ ++2013-12-28 Andrey Borzenkov ++ ++ * grub-core/kern/emu/misc.c: Remove unused error.h; fixes compilation ++ on mingw. ++ + 2013-12-28 Colin Watson + + * NEWS: The cmosclean command in fact dates back to 1.99. Remove +diff --git a/grub-core/kern/emu/misc.c b/grub-core/kern/emu/misc.c +index 43471b4..bb606da 100644 +--- a/grub-core/kern/emu/misc.c ++++ b/grub-core/kern/emu/misc.c +@@ -20,7 +20,6 @@ + #include + + #include +-#include + #include + #include + #include +-- +1.9.0 + diff --git a/0008-Don-t-abort-on-unavailable-coreboot-tables-if-not-ru.patch b/0008-Don-t-abort-on-unavailable-coreboot-tables-if-not-ru.patch new file mode 100644 index 0000000..981cf36 --- /dev/null +++ b/0008-Don-t-abort-on-unavailable-coreboot-tables-if-not-ru.patch @@ -0,0 +1,70 @@ +From 23cd074c57ee6f35776fd5122a050bcef6c9eef5 Mon Sep 17 00:00:00 2001 +From: Vladimir Serbinenko +Date: Sat, 28 Dec 2013 17:25:14 +0100 +Subject: [PATCH 008/125] Don't abort() on unavailable coreboot tables + if not running on coreboot. + +--- + ChangeLog | 4 ++++ + grub-core/kern/i386/coreboot/cbtable.c | 2 +- + grub-core/kern/i386/coreboot/init.c | 5 +++++ + 3 files changed, 10 insertions(+), 1 deletion(-) + +diff --git a/ChangeLog b/ChangeLog +index 0401f61..ed6d77c 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,7 @@ ++2013-12-28 Vladimir Serbinenko ++ ++ Don't abort() on unavailable coreboot tables if not running on coreboot. ++ + 2013-12-28 Andrey Borzenkov + + * grub-core/kern/emu/misc.c: Remove unused error.h; fixes compilation +diff --git a/grub-core/kern/i386/coreboot/cbtable.c b/grub-core/kern/i386/coreboot/cbtable.c +index e3bb7b2..1669bc0 100644 +--- a/grub-core/kern/i386/coreboot/cbtable.c ++++ b/grub-core/kern/i386/coreboot/cbtable.c +@@ -55,7 +55,7 @@ grub_linuxbios_table_iterate (int (*hook) (grub_linuxbios_table_item_t, + if (check_signature (table_header)) + goto signature_found; + +- grub_fatal ("Could not find coreboot table\n"); ++ return 0; + + signature_found: + +diff --git a/grub-core/kern/i386/coreboot/init.c b/grub-core/kern/i386/coreboot/init.c +index 6b150b4..3314f02 100644 +--- a/grub-core/kern/i386/coreboot/init.c ++++ b/grub-core/kern/i386/coreboot/init.c +@@ -51,6 +51,7 @@ grub_exit (void) + + grub_addr_t grub_modbase = GRUB_KERNEL_I386_COREBOOT_MODULES_ADDR; + static grub_uint64_t modend; ++static int have_memory = 0; + + /* Helper for grub_machine_init. */ + static int +@@ -82,6 +83,8 @@ heap_init (grub_uint64_t addr, grub_uint64_t size, grub_memory_type_t type, + + grub_mm_init_region ((void *) (grub_addr_t) begin, (grub_size_t) (end - begin)); + ++ have_memory = 1; ++ + return 0; + } + +@@ -97,6 +100,8 @@ grub_machine_init (void) + grub_vga_text_init (); + + grub_machine_mmap_iterate (heap_init, NULL); ++ if (!have_memory) ++ grub_fatal ("No memory found"); + + grub_video_coreboot_fb_late_init (); + +-- +1.9.0 + diff --git a/0008-NEWS-Add-few-missing-entries.-Correct-existing-ones.patch b/0008-NEWS-Add-few-missing-entries.-Correct-existing-ones.patch deleted file mode 100644 index 1fe3522..0000000 --- a/0008-NEWS-Add-few-missing-entries.-Correct-existing-ones.patch +++ /dev/null @@ -1,121 +0,0 @@ -From e556fb6be8a3b3155723c26d02437a0a5bf26183 Mon Sep 17 00:00:00 2001 -From: Vladimir Serbinenko -Date: Mon, 30 Dec 2013 06:49:15 +0100 -Subject: [PATCH 008/103] * NEWS: Add few missing entries. Correct - existing ones. - ---- - ChangeLog | 4 ++++ - NEWS | 27 ++++++++++++++++++++++----- - 2 files changed, 26 insertions(+), 5 deletions(-) - -diff --git a/ChangeLog b/ChangeLog -index 140b2d8..447dece 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,7 @@ -+2013-12-30 Vladimir Serbinenko -+ -+ * NEWS: Add few missing entries. Correct existing ones. -+ - 2013-12-28 Vladimir Serbinenko - - Don't abort() on unavailable coreboot tables if not running on coreboot. -diff --git a/NEWS b/NEWS -index b74c05f..49a2459 100644 ---- a/NEWS -+++ b/NEWS -@@ -35,6 +35,8 @@ New in 2.02: - * Improve FreeDOS direct loading support compatibility. - * Enable `linux16' on all x86 platforms, not just BIOS. - * New TrueCrypt ISO loader. -+ * multiboot2 boot-services EFI specification. -+ * multiboot2 full-file specfication. - - * New/improved network support: - * New variables `net_default_*' containing properties of the default -@@ -44,11 +46,17 @@ New in 2.02: - * Parse `nd' disk names in GRUB Legacy configuration files. - * Issue separate DNS queries for IPv4 and IPv6. - -+* Coreboot improvements: -+ * CBFS support both in on-disk images (loopback) and flash. -+ * Ability to launch another payload from flash or disk -+ * Coreboot framebuffer -+ * CBMEMC support (both logging and inspecting logs) -+ * Inspecting coreboot timestamps. -+ * Inspecting coreboot tables. -+ - * New/improved platform support: - * New `efifwsetup' and `lsefi' commands on EFI platforms. - * New `cmosdump' and `cmosset' commands on platforms with CMOS support. -- * New `cbmemc', `coreboot_boottime', and `lscoreboot' commands on -- coreboot. - * Improve opcode parsing in ACPI halt implementation. - * Use the TSC as a possible time source on i386-ieee1275. - * Merge PowerPC grub-mkrescue implementation with the common one. -@@ -68,6 +76,7 @@ New in 2.02: - grub-install. - * Support Yeeloong 3A. - * Add `cpuid --pae' option to detect Physical Address Extension on x86. -+ * Support for USB debug dongles. - - * Security: - * Add optional facility to enforce that all files read by the core image -@@ -78,6 +87,7 @@ New in 2.02: - * New boot time analysis framework (`./configure --enable-boot-time'). - * Initialise USB ports in parallel. - * New `testspeed' command to test file read speed. -+ * Speed-up gfxterm by storing intermediate results in more compact format. - - * Scripting: - * New `eval' and `tr' commands. -@@ -95,6 +105,7 @@ New in 2.02: - * grub-install, grub-mknetdir, grub-mkrescue, and grub-mkstandalone - rewritten in C. They should now work in supported non-Unix-like - environments. -+ * Native mingw support, including ability to install on EFI under windows. - * Reorganise timeout handling using new `timeout_style' environment - variable and `GRUB_TIMEOUT_STYLE' configuration key for grub-mkconfig. - Menu hotkeys pressed during a hidden timeout now boot the corresponding -@@ -107,12 +118,19 @@ New in 2.02: - executable stack. - * Fix documentation build with Texinfo >= 5.1. - * More robust and documented cross-compiling support. -- * Partial clang support for some platforms. -+ * Partial clang support for some platforms (experimental). -+ * Partial mingw64 x86_64-efi compile support (highly experimental). -+ * Partial mingw32 i386-* (other than already present i386-pc) -+ compile support (highly experimental). - * Eliminate the use of AutoGen. This allowed some performance - improvements to the build system. -+ * Remove variable length arrays. -+ * OpenBSD compile and tools support (NetBSD and FreeBSD were already supported). - * Fix build with FreeType >= 2.5.1. - * Make gentpl.py compatible with Python 3. It now requires at least - Python 2.6. -+ * modinfo.sh contains build information now. -+ * Added many new tests to improve robustness. - - * Revision control moved to git. - -@@ -142,7 +160,6 @@ New in 2.00: - * IEEE1275 serial. - * EFI serial. - * Network stack for BIOS, IEEE1275, EMU and EFI, including TFTP, HTTP and DNS. -- * VBE on coreboot support. - - * New filesystem, filters and disks formats: - * DVH partition map. -@@ -166,7 +183,7 @@ New in 2.00: - * multidevice, mirrored and raidz(2,3) ZFS support. - * RAID LVM (internal RAIDing) support. - * ZFS crypto support. -- * ZLE and GZIP on ZFS support. -+ * ZLE, LZ4 and GZIP on ZFS support. - * Support ZFS up to 33. - * HFS string is now treated like mac-roman and not UTF-8 - * HFS mtime support. --- -1.9.0 - diff --git a/0009-NEWS-Add-few-missing-entries.-Correct-existing-ones.patch b/0009-NEWS-Add-few-missing-entries.-Correct-existing-ones.patch new file mode 100644 index 0000000..465d290 --- /dev/null +++ b/0009-NEWS-Add-few-missing-entries.-Correct-existing-ones.patch @@ -0,0 +1,121 @@ +From 3eff91e86e4df2cf8a5e1b26f98e96bf4731f526 Mon Sep 17 00:00:00 2001 +From: Vladimir Serbinenko +Date: Mon, 30 Dec 2013 06:49:15 +0100 +Subject: [PATCH 009/125] * NEWS: Add few missing entries. Correct + existing ones. + +--- + ChangeLog | 4 ++++ + NEWS | 27 ++++++++++++++++++++++----- + 2 files changed, 26 insertions(+), 5 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index ed6d77c..db84300 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,7 @@ ++2013-12-30 Vladimir Serbinenko ++ ++ * NEWS: Add few missing entries. Correct existing ones. ++ + 2013-12-28 Vladimir Serbinenko + + Don't abort() on unavailable coreboot tables if not running on coreboot. +diff --git a/NEWS b/NEWS +index b74c05f..49a2459 100644 +--- a/NEWS ++++ b/NEWS +@@ -35,6 +35,8 @@ New in 2.02: + * Improve FreeDOS direct loading support compatibility. + * Enable `linux16' on all x86 platforms, not just BIOS. + * New TrueCrypt ISO loader. ++ * multiboot2 boot-services EFI specification. ++ * multiboot2 full-file specfication. + + * New/improved network support: + * New variables `net_default_*' containing properties of the default +@@ -44,11 +46,17 @@ New in 2.02: + * Parse `nd' disk names in GRUB Legacy configuration files. + * Issue separate DNS queries for IPv4 and IPv6. + ++* Coreboot improvements: ++ * CBFS support both in on-disk images (loopback) and flash. ++ * Ability to launch another payload from flash or disk ++ * Coreboot framebuffer ++ * CBMEMC support (both logging and inspecting logs) ++ * Inspecting coreboot timestamps. ++ * Inspecting coreboot tables. ++ + * New/improved platform support: + * New `efifwsetup' and `lsefi' commands on EFI platforms. + * New `cmosdump' and `cmosset' commands on platforms with CMOS support. +- * New `cbmemc', `coreboot_boottime', and `lscoreboot' commands on +- coreboot. + * Improve opcode parsing in ACPI halt implementation. + * Use the TSC as a possible time source on i386-ieee1275. + * Merge PowerPC grub-mkrescue implementation with the common one. +@@ -68,6 +76,7 @@ New in 2.02: + grub-install. + * Support Yeeloong 3A. + * Add `cpuid --pae' option to detect Physical Address Extension on x86. ++ * Support for USB debug dongles. + + * Security: + * Add optional facility to enforce that all files read by the core image +@@ -78,6 +87,7 @@ New in 2.02: + * New boot time analysis framework (`./configure --enable-boot-time'). + * Initialise USB ports in parallel. + * New `testspeed' command to test file read speed. ++ * Speed-up gfxterm by storing intermediate results in more compact format. + + * Scripting: + * New `eval' and `tr' commands. +@@ -95,6 +105,7 @@ New in 2.02: + * grub-install, grub-mknetdir, grub-mkrescue, and grub-mkstandalone + rewritten in C. They should now work in supported non-Unix-like + environments. ++ * Native mingw support, including ability to install on EFI under windows. + * Reorganise timeout handling using new `timeout_style' environment + variable and `GRUB_TIMEOUT_STYLE' configuration key for grub-mkconfig. + Menu hotkeys pressed during a hidden timeout now boot the corresponding +@@ -107,12 +118,19 @@ New in 2.02: + executable stack. + * Fix documentation build with Texinfo >= 5.1. + * More robust and documented cross-compiling support. +- * Partial clang support for some platforms. ++ * Partial clang support for some platforms (experimental). ++ * Partial mingw64 x86_64-efi compile support (highly experimental). ++ * Partial mingw32 i386-* (other than already present i386-pc) ++ compile support (highly experimental). + * Eliminate the use of AutoGen. This allowed some performance + improvements to the build system. ++ * Remove variable length arrays. ++ * OpenBSD compile and tools support (NetBSD and FreeBSD were already supported). + * Fix build with FreeType >= 2.5.1. + * Make gentpl.py compatible with Python 3. It now requires at least + Python 2.6. ++ * modinfo.sh contains build information now. ++ * Added many new tests to improve robustness. + + * Revision control moved to git. + +@@ -142,7 +160,6 @@ New in 2.00: + * IEEE1275 serial. + * EFI serial. + * Network stack for BIOS, IEEE1275, EMU and EFI, including TFTP, HTTP and DNS. +- * VBE on coreboot support. + + * New filesystem, filters and disks formats: + * DVH partition map. +@@ -166,7 +183,7 @@ New in 2.00: + * multidevice, mirrored and raidz(2,3) ZFS support. + * RAID LVM (internal RAIDing) support. + * ZFS crypto support. +- * ZLE and GZIP on ZFS support. ++ * ZLE, LZ4 and GZIP on ZFS support. + * Support ZFS up to 33. + * HFS string is now treated like mac-roman and not UTF-8 + * HFS mtime support. +-- +1.9.0 + diff --git a/0009-strip-.eh_frame-section-from-arm64-efi-kernel.patch b/0009-strip-.eh_frame-section-from-arm64-efi-kernel.patch deleted file mode 100644 index 5426d24..0000000 --- a/0009-strip-.eh_frame-section-from-arm64-efi-kernel.patch +++ /dev/null @@ -1,39 +0,0 @@ -From e5b01b454769cec291160ffdeef706d04bedb342 Mon Sep 17 00:00:00 2001 -From: Andrey Borzenkov -Date: Mon, 30 Dec 2013 12:56:19 +0000 -Subject: [PATCH 009/103] strip .eh_frame section from arm64-efi kernel - -Fixes grub-mkimage error "relocation 0x105 is not implemented yet." ---- - ChangeLog | 4 ++++ - grub-core/Makefile.core.def | 2 +- - 2 files changed, 5 insertions(+), 1 deletion(-) - -diff --git a/ChangeLog b/ChangeLog -index 447dece..d2e5193 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,7 @@ -+2013-12-30 Andrey Borzenkov -+ -+ * grub-core/Makefile.core.def: strip .eh_frame section for arm64-efi. -+ - 2013-12-30 Vladimir Serbinenko - - * NEWS: Add few missing entries. Correct existing ones. -diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def -index c916246..42443bc 100644 ---- a/grub-core/Makefile.core.def -+++ b/grub-core/Makefile.core.def -@@ -66,7 +66,7 @@ kernel = { - arm_efi_stripflags = '--strip-unneeded -K start -R .note -R .comment -R .note.gnu.gold-version'; - - arm64_efi_ldflags = '-Wl,-r,-d'; -- arm64_efi_stripflags = '--strip-unneeded -K start -R .note -R .comment -R .note.gnu.gold-version'; -+ arm64_efi_stripflags = '--strip-unneeded -K start -R .note -R .comment -R .note.gnu.gold-version -R .eh_frame'; - - i386_pc_ldflags = '$(TARGET_IMG_LDFLAGS)'; - i386_pc_ldflags = '$(TARGET_IMG_BASE_LDOPT),0x9000'; --- -1.9.0 - diff --git a/0010-strip-.eh_frame-section-from-arm64-efi-kernel.patch b/0010-strip-.eh_frame-section-from-arm64-efi-kernel.patch new file mode 100644 index 0000000..f957439 --- /dev/null +++ b/0010-strip-.eh_frame-section-from-arm64-efi-kernel.patch @@ -0,0 +1,39 @@ +From 9e9507d2e1eaed4fc2ebe2959c5405687485f613 Mon Sep 17 00:00:00 2001 +From: Andrey Borzenkov +Date: Mon, 30 Dec 2013 12:56:19 +0000 +Subject: [PATCH 010/125] strip .eh_frame section from arm64-efi kernel + +Fixes grub-mkimage error "relocation 0x105 is not implemented yet." +--- + ChangeLog | 4 ++++ + grub-core/Makefile.core.def | 2 +- + 2 files changed, 5 insertions(+), 1 deletion(-) + +diff --git a/ChangeLog b/ChangeLog +index db84300..8c1ecec 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,7 @@ ++2013-12-30 Andrey Borzenkov ++ ++ * grub-core/Makefile.core.def: strip .eh_frame section for arm64-efi. ++ + 2013-12-30 Vladimir Serbinenko + + * NEWS: Add few missing entries. Correct existing ones. +diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def +index c916246..42443bc 100644 +--- a/grub-core/Makefile.core.def ++++ b/grub-core/Makefile.core.def +@@ -66,7 +66,7 @@ kernel = { + arm_efi_stripflags = '--strip-unneeded -K start -R .note -R .comment -R .note.gnu.gold-version'; + + arm64_efi_ldflags = '-Wl,-r,-d'; +- arm64_efi_stripflags = '--strip-unneeded -K start -R .note -R .comment -R .note.gnu.gold-version'; ++ arm64_efi_stripflags = '--strip-unneeded -K start -R .note -R .comment -R .note.gnu.gold-version -R .eh_frame'; + + i386_pc_ldflags = '$(TARGET_IMG_LDFLAGS)'; + i386_pc_ldflags = '$(TARGET_IMG_BASE_LDOPT),0x9000'; +-- +1.9.0 + diff --git a/0010-use-grub-boot-aa64.efi-for-boot-images-on-AArch64.patch b/0010-use-grub-boot-aa64.efi-for-boot-images-on-AArch64.patch deleted file mode 100644 index 360dd31..0000000 --- a/0010-use-grub-boot-aa64.efi-for-boot-images-on-AArch64.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 907365b13dc4a1fb5a17dea673ad65130ebbcf7a Mon Sep 17 00:00:00 2001 -From: Andrey Borzenkov -Date: Tue, 7 Jan 2014 10:38:54 +0400 -Subject: [PATCH 010/103] use {grub,boot}aa64.efi for boot images on AArch64 - -According to UEFI 2.4 specification, default boot file name on AArch64 -is BOOTAA64.EFI (3.4.1.1 Removable Media Boot Behavior). Also set default -GRUB image name to grubaa64.efi to match it. ---- - util/grub-install.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/util/grub-install.c b/util/grub-install.c -index 8cfe0ea..4608b80 100644 ---- a/util/grub-install.c -+++ b/util/grub-install.c -@@ -1091,7 +1091,7 @@ main (int argc, char *argv[]) - efi_file = "BOOTARM.EFI"; - break; - case GRUB_INSTALL_PLATFORM_ARM64_EFI: -- efi_file = "BOOTAARCH64.EFI"; -+ efi_file = "BOOTAA64.EFI"; - break; - default: - grub_util_error ("%s", _("You've found a bug")); -@@ -1118,7 +1118,7 @@ main (int argc, char *argv[]) - efi_file = "grubarm.efi"; - break; - case GRUB_INSTALL_PLATFORM_ARM64_EFI: -- efi_file = "grubarm64.efi"; -+ efi_file = "grubaa64.efi"; - break; - default: - efi_file = "grub.efi"; --- -1.9.0 - diff --git a/0011-fix-32-bit-compilation-on-MinGW-w64.patch b/0011-fix-32-bit-compilation-on-MinGW-w64.patch deleted file mode 100644 index 3ea78fb..0000000 --- a/0011-fix-32-bit-compilation-on-MinGW-w64.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 9ce80256f3246f13d083374980018e937737f101 Mon Sep 17 00:00:00 2001 -From: Andrey Borzenkov -Date: Tue, 7 Jan 2014 18:43:02 +0400 -Subject: [PATCH 011/103] fix 32 bit compilation on MinGW-w64 - -Use _FILE_OFFSET_BITS macro to distinguish between native MinGW and -32 bit under MinGW-64. The latter does not require fseeko/ftello -redefinition which it already does in case of _FILE_OFFSET_BITS=64. ---- - ChangeLog | 5 +++++ - include/grub/osdep/hostfile_windows.h | 3 +++ - 2 files changed, 8 insertions(+) - -diff --git a/ChangeLog b/ChangeLog -index d2e5193..761e8c6 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,8 @@ -+2014-01-07 Andrey Borzenkov -+ -+ * include/grub/osdep/hostfile_windows.h: Do not redefine fseeko/ftello -+ on MinGW-64 when compiling for 32 bits. -+ - 2013-12-30 Andrey Borzenkov - - * grub-core/Makefile.core.def: strip .eh_frame section for arm64-efi. -diff --git a/include/grub/osdep/hostfile_windows.h b/include/grub/osdep/hostfile_windows.h -index 36615b2..79efcfa 100644 ---- a/include/grub/osdep/hostfile_windows.h -+++ b/include/grub/osdep/hostfile_windows.h -@@ -69,8 +69,11 @@ enum grub_util_fd_open_flags_t - - #if defined (__MINGW32__) && !defined (__MINGW64__) - -+/* 32 bit on MinGW-64 already redefines them if _FILE_OFFSET_BITS=64 */ -+#if !defined(_FILE_OFFSET_BITS) - #define fseeko fseeko64 - #define ftello ftello64 -+#endif - - #endif - --- -1.9.0 - diff --git a/0011-use-grub-boot-aa64.efi-for-boot-images-on-AArch64.patch b/0011-use-grub-boot-aa64.efi-for-boot-images-on-AArch64.patch new file mode 100644 index 0000000..eb1ad03 --- /dev/null +++ b/0011-use-grub-boot-aa64.efi-for-boot-images-on-AArch64.patch @@ -0,0 +1,37 @@ +From 7e782c6996ee433c94fb378cbc8db0fa0f663c84 Mon Sep 17 00:00:00 2001 +From: Andrey Borzenkov +Date: Tue, 7 Jan 2014 10:38:54 +0400 +Subject: [PATCH 011/125] use {grub,boot}aa64.efi for boot images on AArch64 + +According to UEFI 2.4 specification, default boot file name on AArch64 +is BOOTAA64.EFI (3.4.1.1 Removable Media Boot Behavior). Also set default +GRUB image name to grubaa64.efi to match it. +--- + util/grub-install.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/util/grub-install.c b/util/grub-install.c +index 8cfe0ea..4608b80 100644 +--- a/util/grub-install.c ++++ b/util/grub-install.c +@@ -1091,7 +1091,7 @@ main (int argc, char *argv[]) + efi_file = "BOOTARM.EFI"; + break; + case GRUB_INSTALL_PLATFORM_ARM64_EFI: +- efi_file = "BOOTAARCH64.EFI"; ++ efi_file = "BOOTAA64.EFI"; + break; + default: + grub_util_error ("%s", _("You've found a bug")); +@@ -1118,7 +1118,7 @@ main (int argc, char *argv[]) + efi_file = "grubarm.efi"; + break; + case GRUB_INSTALL_PLATFORM_ARM64_EFI: +- efi_file = "grubarm64.efi"; ++ efi_file = "grubaa64.efi"; + break; + default: + efi_file = "grub.efi"; +-- +1.9.0 + diff --git a/0012-Change-grub-mkrescue-to-use-bootaa64.efi-too.patch b/0012-Change-grub-mkrescue-to-use-bootaa64.efi-too.patch deleted file mode 100644 index d9b8b98..0000000 --- a/0012-Change-grub-mkrescue-to-use-bootaa64.efi-too.patch +++ /dev/null @@ -1,44 +0,0 @@ -From abb042d2a8c3787de2509eb6f7c219f9c921ab28 Mon Sep 17 00:00:00 2001 -From: Andrey Borzenkov -Date: Tue, 7 Jan 2014 20:34:25 +0400 -Subject: [PATCH 012/103] Change grub-mkrescue to use bootaa64.efi too - -Also add ChangeLog entry for previous change. ---- - ChangeLog | 7 +++++++ - util/grub-mkrescue.c | 2 +- - 2 files changed, 8 insertions(+), 1 deletion(-) - -diff --git a/ChangeLog b/ChangeLog -index 761e8c6..735748f 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,5 +1,12 @@ - 2014-01-07 Andrey Borzenkov - -+ * util/grub-install.c: Use bootaa64.efi instead of bootaarch64.efi on -+ arm64 to comply with EFI specification. Also use grubaa64.efi for -+ consistency. -+ * util/grub-mkrescue.c: Change to use bootaa64.efi too. -+ -+2014-01-07 Andrey Borzenkov -+ - * include/grub/osdep/hostfile_windows.h: Do not redefine fseeko/ftello - on MinGW-64 when compiling for 32 bits. - -diff --git a/util/grub-mkrescue.c b/util/grub-mkrescue.c -index 317879d..0d03e55 100644 ---- a/util/grub-mkrescue.c -+++ b/util/grub-mkrescue.c -@@ -663,7 +663,7 @@ main (int argc, char *argv[]) - make_image_fwdisk_abs (GRUB_INSTALL_PLATFORM_ARM_EFI, "arm-efi", imgname); - free (imgname); - -- imgname = grub_util_path_concat (2, efidir_efi_boot, "bootaarch64.efi"); -+ imgname = grub_util_path_concat (2, efidir_efi_boot, "bootaa64.efi"); - make_image_fwdisk_abs (GRUB_INSTALL_PLATFORM_ARM64_EFI, "arm64-efi", - imgname); - free (imgname); --- -1.9.0 - diff --git a/0012-fix-32-bit-compilation-on-MinGW-w64.patch b/0012-fix-32-bit-compilation-on-MinGW-w64.patch new file mode 100644 index 0000000..85ac044 --- /dev/null +++ b/0012-fix-32-bit-compilation-on-MinGW-w64.patch @@ -0,0 +1,45 @@ +From afda7f47601f36a98074d8d21ffb640256f02267 Mon Sep 17 00:00:00 2001 +From: Andrey Borzenkov +Date: Tue, 7 Jan 2014 18:43:02 +0400 +Subject: [PATCH 012/125] fix 32 bit compilation on MinGW-w64 + +Use _FILE_OFFSET_BITS macro to distinguish between native MinGW and +32 bit under MinGW-64. The latter does not require fseeko/ftello +redefinition which it already does in case of _FILE_OFFSET_BITS=64. +--- + ChangeLog | 5 +++++ + include/grub/osdep/hostfile_windows.h | 3 +++ + 2 files changed, 8 insertions(+) + +diff --git a/ChangeLog b/ChangeLog +index 8c1ecec..e87f0a7 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,8 @@ ++2014-01-07 Andrey Borzenkov ++ ++ * include/grub/osdep/hostfile_windows.h: Do not redefine fseeko/ftello ++ on MinGW-64 when compiling for 32 bits. ++ + 2013-12-30 Andrey Borzenkov + + * grub-core/Makefile.core.def: strip .eh_frame section for arm64-efi. +diff --git a/include/grub/osdep/hostfile_windows.h b/include/grub/osdep/hostfile_windows.h +index 36615b2..79efcfa 100644 +--- a/include/grub/osdep/hostfile_windows.h ++++ b/include/grub/osdep/hostfile_windows.h +@@ -69,8 +69,11 @@ enum grub_util_fd_open_flags_t + + #if defined (__MINGW32__) && !defined (__MINGW64__) + ++/* 32 bit on MinGW-64 already redefines them if _FILE_OFFSET_BITS=64 */ ++#if !defined(_FILE_OFFSET_BITS) + #define fseeko fseeko64 + #define ftello ftello64 ++#endif + + #endif + +-- +1.9.0 + diff --git a/0013-Change-grub-mkrescue-to-use-bootaa64.efi-too.patch b/0013-Change-grub-mkrescue-to-use-bootaa64.efi-too.patch new file mode 100644 index 0000000..ac852ee --- /dev/null +++ b/0013-Change-grub-mkrescue-to-use-bootaa64.efi-too.patch @@ -0,0 +1,44 @@ +From 9981c4e3f366b4795655368a78baa058b18711c6 Mon Sep 17 00:00:00 2001 +From: Andrey Borzenkov +Date: Tue, 7 Jan 2014 20:34:25 +0400 +Subject: [PATCH 013/125] Change grub-mkrescue to use bootaa64.efi too + +Also add ChangeLog entry for previous change. +--- + ChangeLog | 7 +++++++ + util/grub-mkrescue.c | 2 +- + 2 files changed, 8 insertions(+), 1 deletion(-) + +diff --git a/ChangeLog b/ChangeLog +index e87f0a7..0b9fa05 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,5 +1,12 @@ + 2014-01-07 Andrey Borzenkov + ++ * util/grub-install.c: Use bootaa64.efi instead of bootaarch64.efi on ++ arm64 to comply with EFI specification. Also use grubaa64.efi for ++ consistency. ++ * util/grub-mkrescue.c: Change to use bootaa64.efi too. ++ ++2014-01-07 Andrey Borzenkov ++ + * include/grub/osdep/hostfile_windows.h: Do not redefine fseeko/ftello + on MinGW-64 when compiling for 32 bits. + +diff --git a/util/grub-mkrescue.c b/util/grub-mkrescue.c +index 317879d..0d03e55 100644 +--- a/util/grub-mkrescue.c ++++ b/util/grub-mkrescue.c +@@ -663,7 +663,7 @@ main (int argc, char *argv[]) + make_image_fwdisk_abs (GRUB_INSTALL_PLATFORM_ARM_EFI, "arm-efi", imgname); + free (imgname); + +- imgname = grub_util_path_concat (2, efidir_efi_boot, "bootaarch64.efi"); ++ imgname = grub_util_path_concat (2, efidir_efi_boot, "bootaa64.efi"); + make_image_fwdisk_abs (GRUB_INSTALL_PLATFORM_ARM64_EFI, "arm64-efi", + imgname); + free (imgname); +-- +1.9.0 + diff --git a/0013-arm64-set-correct-length-of-device-path-end-entry.patch b/0013-arm64-set-correct-length-of-device-path-end-entry.patch deleted file mode 100644 index 3d71bcf..0000000 --- a/0013-arm64-set-correct-length-of-device-path-end-entry.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 60431c470d8ae9001d34e76f7b80d2b55007fd64 Mon Sep 17 00:00:00 2001 -From: Leif Lindholm -Date: Tue, 7 Jan 2014 17:52:50 +0000 -Subject: [PATCH 013/103] arm64: set correct length of device path end entry - -The length of the Device Path End entry in the grub_linux_boot() -function was incorrectly set to 0. This triggers an assert failure -in debug builds of Tianocore. - -Set it to sizeof (grub_efi_device_path_t). ---- - ChangeLog | 4 ++++ - grub-core/loader/arm64/linux.c | 2 +- - 2 files changed, 5 insertions(+), 1 deletion(-) - -diff --git a/ChangeLog b/ChangeLog -index 735748f..a1ecbe2 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,7 @@ -+2014-01-07 Leif Lindholm -+ -+ * grub-core/loader/arm64/linux.c: correctly set device path end length. -+ - 2014-01-07 Andrey Borzenkov - - * util/grub-install.c: Use bootaa64.efi instead of bootaarch64.efi on -diff --git a/grub-core/loader/arm64/linux.c b/grub-core/loader/arm64/linux.c -index 9d15aad..75ad871 100644 ---- a/grub-core/loader/arm64/linux.c -+++ b/grub-core/loader/arm64/linux.c -@@ -268,7 +268,7 @@ grub_linux_boot (void) - - mempath[1].header.type = GRUB_EFI_END_DEVICE_PATH_TYPE; - mempath[1].header.subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE; -- mempath[1].header.length = 0; -+ mempath[1].header.length = sizeof (grub_efi_device_path_t); - - b = grub_efi_system_table->boot_services; - status = b->load_image (0, grub_efi_image_handle, --- -1.9.0 - diff --git a/0014-Makefile.util.def-grub-macbless-Change-mansection-to.patch b/0014-Makefile.util.def-grub-macbless-Change-mansection-to.patch deleted file mode 100644 index 2407073..0000000 --- a/0014-Makefile.util.def-grub-macbless-Change-mansection-to.patch +++ /dev/null @@ -1,39 +0,0 @@ -From ad0412ef8b5dcc14499d4ba318493db298ac7a79 Mon Sep 17 00:00:00 2001 -From: Colin Watson -Date: Wed, 8 Jan 2014 11:05:20 +0000 -Subject: [PATCH 014/103] * Makefile.util.def (grub-macbless): Change - mansection to 8. - ---- - ChangeLog | 4 ++++ - Makefile.util.def | 2 +- - 2 files changed, 5 insertions(+), 1 deletion(-) - -diff --git a/ChangeLog b/ChangeLog -index a1ecbe2..6a382e4 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,7 @@ -+2014-01-08 Colin Watson -+ -+ * Makefile.util.def (grub-macbless): Change mansection to 8. -+ - 2014-01-07 Leif Lindholm - - * grub-core/loader/arm64/linux.c: correctly set device path end length. -diff --git a/Makefile.util.def b/Makefile.util.def -index 985e76c..3c99be2 100644 ---- a/Makefile.util.def -+++ b/Makefile.util.def -@@ -405,7 +405,7 @@ program = { - program = { - name = grub-macbless; - installdir = sbin; -- mansection = 1; -+ mansection = 8; - common = util/grub-macbless.c; - common = grub-core/osdep/init.c; - common = grub-core/kern/emu/argp_common.c; --- -1.9.0 - diff --git a/0014-arm64-set-correct-length-of-device-path-end-entry.patch b/0014-arm64-set-correct-length-of-device-path-end-entry.patch new file mode 100644 index 0000000..5a323d6 --- /dev/null +++ b/0014-arm64-set-correct-length-of-device-path-end-entry.patch @@ -0,0 +1,43 @@ +From f493e0d352e1e8ff8cbafee69878d00487a04808 Mon Sep 17 00:00:00 2001 +From: Leif Lindholm +Date: Tue, 7 Jan 2014 17:52:50 +0000 +Subject: [PATCH 014/125] arm64: set correct length of device path end entry + +The length of the Device Path End entry in the grub_linux_boot() +function was incorrectly set to 0. This triggers an assert failure +in debug builds of Tianocore. + +Set it to sizeof (grub_efi_device_path_t). +--- + ChangeLog | 4 ++++ + grub-core/loader/arm64/linux.c | 2 +- + 2 files changed, 5 insertions(+), 1 deletion(-) + +diff --git a/ChangeLog b/ChangeLog +index 0b9fa05..4ec5517 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,7 @@ ++2014-01-07 Leif Lindholm ++ ++ * grub-core/loader/arm64/linux.c: correctly set device path end length. ++ + 2014-01-07 Andrey Borzenkov + + * util/grub-install.c: Use bootaa64.efi instead of bootaarch64.efi on +diff --git a/grub-core/loader/arm64/linux.c b/grub-core/loader/arm64/linux.c +index 9d15aad..75ad871 100644 +--- a/grub-core/loader/arm64/linux.c ++++ b/grub-core/loader/arm64/linux.c +@@ -268,7 +268,7 @@ grub_linux_boot (void) + + mempath[1].header.type = GRUB_EFI_END_DEVICE_PATH_TYPE; + mempath[1].header.subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE; +- mempath[1].header.length = 0; ++ mempath[1].header.length = sizeof (grub_efi_device_path_t); + + b = grub_efi_system_table->boot_services; + status = b->load_image (0, grub_efi_image_handle, +-- +1.9.0 + diff --git a/0015-Makefile.util.def-grub-macbless-Change-mansection-to.patch b/0015-Makefile.util.def-grub-macbless-Change-mansection-to.patch new file mode 100644 index 0000000..05b86e2 --- /dev/null +++ b/0015-Makefile.util.def-grub-macbless-Change-mansection-to.patch @@ -0,0 +1,39 @@ +From 1c0db34a9597ecccb3ad4899892fb6ff6e22304d Mon Sep 17 00:00:00 2001 +From: Colin Watson +Date: Wed, 8 Jan 2014 11:05:20 +0000 +Subject: [PATCH 015/125] * Makefile.util.def (grub-macbless): Change + mansection to 8. + +--- + ChangeLog | 4 ++++ + Makefile.util.def | 2 +- + 2 files changed, 5 insertions(+), 1 deletion(-) + +diff --git a/ChangeLog b/ChangeLog +index 4ec5517..b445f12 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,7 @@ ++2014-01-08 Colin Watson ++ ++ * Makefile.util.def (grub-macbless): Change mansection to 8. ++ + 2014-01-07 Leif Lindholm + + * grub-core/loader/arm64/linux.c: correctly set device path end length. +diff --git a/Makefile.util.def b/Makefile.util.def +index 985e76c..3c99be2 100644 +--- a/Makefile.util.def ++++ b/Makefile.util.def +@@ -405,7 +405,7 @@ program = { + program = { + name = grub-macbless; + installdir = sbin; +- mansection = 1; ++ mansection = 8; + common = util/grub-macbless.c; + common = grub-core/osdep/init.c; + common = grub-core/kern/emu/argp_common.c; +-- +1.9.0 + diff --git a/0015-add-part_apple-to-EFI-rescue-image-to-fix-missing-pr.patch b/0015-add-part_apple-to-EFI-rescue-image-to-fix-missing-pr.patch deleted file mode 100644 index 8560900..0000000 --- a/0015-add-part_apple-to-EFI-rescue-image-to-fix-missing-pr.patch +++ /dev/null @@ -1,48 +0,0 @@ -From ae32118428c545d74dcf2d708660b490d4740ca9 Mon Sep 17 00:00:00 2001 -From: Andrey Borzenkov -Date: Sun, 12 Jan 2014 15:29:21 +0400 -Subject: [PATCH 015/103] add part_apple to EFI rescue image to fix missing - prefix - -On Mac rescue image is booted from HFS+ partition, so bootpath looks like -/ACPI(a0341d0,0)/PCI(1,1f)/ATAPI(0,0,0)/HD(3,5d1,ca3,0000000000000000,20,0)/EndEntire - -grub fails to find device for this path because it cannot scan partition -table. The simplest fix is to add part_apple by default. ---- - util/grub-mkrescue.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/util/grub-mkrescue.c b/util/grub-mkrescue.c -index 0d03e55..34e0b7a 100644 ---- a/util/grub-mkrescue.c -+++ b/util/grub-mkrescue.c -@@ -653,11 +653,15 @@ main (int argc, char *argv[]) - make_image_fwdisk_abs (GRUB_INSTALL_PLATFORM_IA64_EFI, "ia64-efi", imgname); - free (imgname); - -+ grub_install_push_module ("part_apple"); - img64 = grub_util_path_concat (2, efidir_efi_boot, "bootx64.efi"); - make_image_fwdisk_abs (GRUB_INSTALL_PLATFORM_X86_64_EFI, "x86_64-efi", img64); -+ grub_install_pop_module (); - -+ grub_install_push_module ("part_apple"); - img32 = grub_util_path_concat (2, efidir_efi_boot, "bootia32.efi"); - make_image_fwdisk_abs (GRUB_INSTALL_PLATFORM_I386_EFI, "i386-efi", img32); -+ grub_install_pop_module (); - - imgname = grub_util_path_concat (2, efidir_efi_boot, "bootarm.efi"); - make_image_fwdisk_abs (GRUB_INSTALL_PLATFORM_ARM_EFI, "arm-efi", imgname); -@@ -707,7 +711,9 @@ main (int argc, char *argv[]) - free (efidir); - } - -+ grub_install_push_module ("part_apple"); - make_image_fwdisk (GRUB_INSTALL_PLATFORM_POWERPC_IEEE1275, "powerpc-ieee1275", "powerpc-ieee1275/core.elf"); -+ grub_install_pop_module (); - - if (source_dirs[GRUB_INSTALL_PLATFORM_POWERPC_IEEE1275]) - { --- -1.9.0 - diff --git a/0016-add-part_apple-to-EFI-rescue-image-to-fix-missing-pr.patch b/0016-add-part_apple-to-EFI-rescue-image-to-fix-missing-pr.patch new file mode 100644 index 0000000..15e0d55 --- /dev/null +++ b/0016-add-part_apple-to-EFI-rescue-image-to-fix-missing-pr.patch @@ -0,0 +1,48 @@ +From 3aea6cc46177a90056ba60381e6387377fe40c99 Mon Sep 17 00:00:00 2001 +From: Andrey Borzenkov +Date: Sun, 12 Jan 2014 15:29:21 +0400 +Subject: [PATCH 016/125] add part_apple to EFI rescue image to fix missing + prefix + +On Mac rescue image is booted from HFS+ partition, so bootpath looks like +/ACPI(a0341d0,0)/PCI(1,1f)/ATAPI(0,0,0)/HD(3,5d1,ca3,0000000000000000,20,0)/EndEntire + +grub fails to find device for this path because it cannot scan partition +table. The simplest fix is to add part_apple by default. +--- + util/grub-mkrescue.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/util/grub-mkrescue.c b/util/grub-mkrescue.c +index 0d03e55..34e0b7a 100644 +--- a/util/grub-mkrescue.c ++++ b/util/grub-mkrescue.c +@@ -653,11 +653,15 @@ main (int argc, char *argv[]) + make_image_fwdisk_abs (GRUB_INSTALL_PLATFORM_IA64_EFI, "ia64-efi", imgname); + free (imgname); + ++ grub_install_push_module ("part_apple"); + img64 = grub_util_path_concat (2, efidir_efi_boot, "bootx64.efi"); + make_image_fwdisk_abs (GRUB_INSTALL_PLATFORM_X86_64_EFI, "x86_64-efi", img64); ++ grub_install_pop_module (); + ++ grub_install_push_module ("part_apple"); + img32 = grub_util_path_concat (2, efidir_efi_boot, "bootia32.efi"); + make_image_fwdisk_abs (GRUB_INSTALL_PLATFORM_I386_EFI, "i386-efi", img32); ++ grub_install_pop_module (); + + imgname = grub_util_path_concat (2, efidir_efi_boot, "bootarm.efi"); + make_image_fwdisk_abs (GRUB_INSTALL_PLATFORM_ARM_EFI, "arm-efi", imgname); +@@ -707,7 +711,9 @@ main (int argc, char *argv[]) + free (efidir); + } + ++ grub_install_push_module ("part_apple"); + make_image_fwdisk (GRUB_INSTALL_PLATFORM_POWERPC_IEEE1275, "powerpc-ieee1275", "powerpc-ieee1275/core.elf"); ++ grub_install_pop_module (); + + if (source_dirs[GRUB_INSTALL_PLATFORM_POWERPC_IEEE1275]) + { +-- +1.9.0 + diff --git a/0016-freebsd-hostdisk.c-is-only-ever-compiled-on-FreeBSD.patch b/0016-freebsd-hostdisk.c-is-only-ever-compiled-on-FreeBSD.patch deleted file mode 100644 index 8e8e67f..0000000 --- a/0016-freebsd-hostdisk.c-is-only-ever-compiled-on-FreeBSD.patch +++ /dev/null @@ -1,48 +0,0 @@ -From 76455c52e6315685813dd1f880977d4781f3fe73 Mon Sep 17 00:00:00 2001 -From: Colin Watson -Date: Fri, 17 Jan 2014 02:30:52 +0000 -Subject: [PATCH 016/103] freebsd/hostdisk.c is only ever compiled on FreeBSD - -* grub-core/osdep/freebsd/hostdisk.c (grub_util_fd_open): Remove -redundant preprocessor conditional. ---- - ChangeLog | 5 +++++ - grub-core/osdep/freebsd/hostdisk.c | 2 -- - 2 files changed, 5 insertions(+), 2 deletions(-) - -diff --git a/ChangeLog b/ChangeLog -index 6a382e4..a80f172 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,8 @@ -+2014-01-17 Colin Watson -+ -+ * grub-core/osdep/freebsd/hostdisk.c (grub_util_fd_open): Remove -+ redundant preprocessor conditional. -+ - 2014-01-08 Colin Watson - - * Makefile.util.def (grub-macbless): Change mansection to 8. -diff --git a/grub-core/osdep/freebsd/hostdisk.c b/grub-core/osdep/freebsd/hostdisk.c -index bd5fddb..eb202dc 100644 ---- a/grub-core/osdep/freebsd/hostdisk.c -+++ b/grub-core/osdep/freebsd/hostdisk.c -@@ -108,7 +108,6 @@ grub_util_fd_open (const char *os_dev, int flags) - - ret = open (os_dev, flags, S_IROTH | S_IRGRP | S_IRUSR | S_IWUSR); - --#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) - if (! (sysctl_oldflags & 0x10) - && sysctlbyname ("kern.geom.debugflags", NULL , 0, &sysctl_oldflags, sysctl_size)) - { -@@ -116,7 +115,6 @@ grub_util_fd_open (const char *os_dev, int flags) - close (ret); - return GRUB_UTIL_FD_INVALID; - } --#endif - - return ret; - } --- -1.9.0 - diff --git a/0017-Prefer-more-portable-test-1-constructs.patch b/0017-Prefer-more-portable-test-1-constructs.patch deleted file mode 100644 index a9ea359..0000000 --- a/0017-Prefer-more-portable-test-1-constructs.patch +++ /dev/null @@ -1,109 +0,0 @@ -From 942d03cf562e626418a0553a6e22e5c9cb7e7de4 Mon Sep 17 00:00:00 2001 -From: Colin Watson -Date: Fri, 17 Jan 2014 15:24:50 +0000 -Subject: [PATCH 017/103] Prefer more portable test(1) constructs - -* util/grub.d/00_header.in (make_timeout): Use && rather than test --a. -* util/grub.d/10_windows.in: Likewise. -* util/grub.d/10_netbsd.in (netbsd_load_fs_module): Use || rather -than test -o. -* util/grub.d/30_os-prober.in: Use && rather than test -a, and || -rather than test -o. ---- - ChangeLog | 12 +++++++++++- - util/grub.d/00_header.in | 2 +- - util/grub.d/10_netbsd.in | 2 +- - util/grub.d/10_windows.in | 4 ++-- - util/grub.d/30_os-prober.in | 4 ++-- - 5 files changed, 17 insertions(+), 7 deletions(-) - -diff --git a/ChangeLog b/ChangeLog -index a80f172..30084cf 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,4 +1,14 @@ --2014-01-17 Colin Watson -+2014-01-17 Colin Watson -+ -+ * util/grub.d/00_header.in (make_timeout): Use && rather than test -+ -a. -+ * util/grub.d/10_windows.in: Likewise. -+ * util/grub.d/10_netbsd.in (netbsd_load_fs_module): Use || rather -+ than test -o. -+ * util/grub.d/30_os-prober.in: Use && rather than test -a, and || -+ rather than test -o. -+ -+2014-01-17 Colin Watson - - * grub-core/osdep/freebsd/hostdisk.c (grub_util_fd_open): Remove - redundant preprocessor conditional. -diff --git a/util/grub.d/00_header.in b/util/grub.d/00_header.in -index 0c82f23..ce2ec81 100644 ---- a/util/grub.d/00_header.in -+++ b/util/grub.d/00_header.in -@@ -285,7 +285,7 @@ make_timeout () - if [ "x${3}" != "x" ] ; then - timeout="${2}" - style="${3}" -- elif [ "x${1}" != "x" -a "x${1}" != "x0" ] ; then -+ elif [ "x${1}" != "x" ] && [ "x${1}" != "x0" ] ; then - # Handle the deprecated GRUB_HIDDEN_TIMEOUT scheme. - timeout="${1}" - if [ "x${2}" != "x0" ] ; then -diff --git a/util/grub.d/10_netbsd.in b/util/grub.d/10_netbsd.in -index 29a0e41..9988a42 100644 ---- a/util/grub.d/10_netbsd.in -+++ b/util/grub.d/10_netbsd.in -@@ -69,7 +69,7 @@ netbsd_load_fs_module () - kversion=$(zcat -f "${kernel}" | strings | sed -n -e '/^@(#)NetBSD/ { s/^@(#)NetBSD \([0-9\.]*\) .*$/\1/g ; p ; q ; }') - kmodule="/stand/${karch}/${kversion}/modules/${kmod}/${kmod}.kmod" - -- if test -z "$karch" -o -z "$kversion" -o ! -f "${kmodule}"; then -+ if test -z "$karch" || test -z "$kversion" || test ! -f "${kmodule}"; then - return - fi - -diff --git a/util/grub.d/10_windows.in b/util/grub.d/10_windows.in -index 9025914..48bd955 100644 ---- a/util/grub.d/10_windows.in -+++ b/util/grub.d/10_windows.in -@@ -66,11 +66,11 @@ for drv in $drives ; do - osid= - - # Check for Vista bootmgr. -- if [ -f "$dir"/bootmgr -a -f "$dir"/boot/bcd ] ; then -+ if [ -f "$dir"/bootmgr ] && [ -f "$dir"/boot/bcd ] ; then - OS="$(gettext "Windows Vista/7 (loader)")" - osid=bootmgr - # Check for NTLDR. -- elif [ -f "$dir"/ntldr -a -f "$dir"/ntdetect.com -a -f "$dir"/boot.ini ] ; then -+ elif [ -f "$dir"/ntldr ] && [ -f "$dir"/ntdetect.com ] && [ -f "$dir"/boot.ini ] ; then - OS=`get_os_name_from_boot_ini "$dir"/boot.ini` || OS="$(gettext "Windows NT/2000/XP (loader)")" - osid=ntldr - needmap=t -diff --git a/util/grub.d/30_os-prober.in b/util/grub.d/30_os-prober.in -index 0470e66..7cf8487 100644 ---- a/util/grub.d/30_os-prober.in -+++ b/util/grub.d/30_os-prober.in -@@ -30,7 +30,7 @@ if [ "x${GRUB_DISABLE_OS_PROBER}" = "xtrue" ]; then - exit 0 - fi - --if [ -z "`which os-prober 2> /dev/null`" -o -z "`which linux-boot-prober 2> /dev/null`" ] ; then -+if [ -z "`which os-prober 2> /dev/null`" ] || [ -z "`which linux-boot-prober 2> /dev/null`" ] ; then - # missing os-prober and/or linux-boot-prober - exit 0 - fi -@@ -119,7 +119,7 @@ for OS in ${OSPROBED} ; do - EXPUUID="${EXPUUID}@${DEVICE#*@}" - fi - -- if [ "x${GRUB_OS_PROBER_SKIP_LIST}" != "x" -a "x`echo ${GRUB_OS_PROBER_SKIP_LIST} | grep -i -e '\b'${EXPUUID}'\b'`" != "x" ] ; then -+ if [ "x${GRUB_OS_PROBER_SKIP_LIST}" != "x" ] && [ "x`echo ${GRUB_OS_PROBER_SKIP_LIST} | grep -i -e '\b'${EXPUUID}'\b'`" != "x" ] ; then - echo "Skipped ${LONGNAME} on ${DEVICE} by user request." >&2 - continue - fi --- -1.9.0 - diff --git a/0017-freebsd-hostdisk.c-is-only-ever-compiled-on-FreeBSD.patch b/0017-freebsd-hostdisk.c-is-only-ever-compiled-on-FreeBSD.patch new file mode 100644 index 0000000..6a0ac81 --- /dev/null +++ b/0017-freebsd-hostdisk.c-is-only-ever-compiled-on-FreeBSD.patch @@ -0,0 +1,48 @@ +From a433d177585c8355c6ede67469a521d05cf1e9d7 Mon Sep 17 00:00:00 2001 +From: Colin Watson +Date: Fri, 17 Jan 2014 02:30:52 +0000 +Subject: [PATCH 017/125] freebsd/hostdisk.c is only ever compiled on FreeBSD + +* grub-core/osdep/freebsd/hostdisk.c (grub_util_fd_open): Remove +redundant preprocessor conditional. +--- + ChangeLog | 5 +++++ + grub-core/osdep/freebsd/hostdisk.c | 2 -- + 2 files changed, 5 insertions(+), 2 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index b445f12..6613b4e 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,8 @@ ++2014-01-17 Colin Watson ++ ++ * grub-core/osdep/freebsd/hostdisk.c (grub_util_fd_open): Remove ++ redundant preprocessor conditional. ++ + 2014-01-08 Colin Watson + + * Makefile.util.def (grub-macbless): Change mansection to 8. +diff --git a/grub-core/osdep/freebsd/hostdisk.c b/grub-core/osdep/freebsd/hostdisk.c +index bd5fddb..eb202dc 100644 +--- a/grub-core/osdep/freebsd/hostdisk.c ++++ b/grub-core/osdep/freebsd/hostdisk.c +@@ -108,7 +108,6 @@ grub_util_fd_open (const char *os_dev, int flags) + + ret = open (os_dev, flags, S_IROTH | S_IRGRP | S_IRUSR | S_IWUSR); + +-#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) + if (! (sysctl_oldflags & 0x10) + && sysctlbyname ("kern.geom.debugflags", NULL , 0, &sysctl_oldflags, sysctl_size)) + { +@@ -116,7 +115,6 @@ grub_util_fd_open (const char *os_dev, int flags) + close (ret); + return GRUB_UTIL_FD_INVALID; + } +-#endif + + return ret; + } +-- +1.9.0 + diff --git a/0018-NEWS-Add-few-missing-entries.patch b/0018-NEWS-Add-few-missing-entries.patch deleted file mode 100644 index c95ece5..0000000 --- a/0018-NEWS-Add-few-missing-entries.patch +++ /dev/null @@ -1,100 +0,0 @@ -From ed742dc11fee69471c07101c814fc27a36b83768 Mon Sep 17 00:00:00 2001 -From: Vladimir Serbinenko -Date: Sat, 18 Jan 2014 16:31:10 +0100 -Subject: [PATCH 018/103] * NEWS: Add few missing entries. - ---- - ChangeLog | 4 ++++ - NEWS | 18 +++++++++++++++--- - 2 files changed, 19 insertions(+), 3 deletions(-) - -diff --git a/ChangeLog b/ChangeLog -index 30084cf..5eea8a3 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,7 @@ -+2014-01-18 Vladimir Serbinenko -+ -+ * NEWS: Add few missing entries. -+ - 2014-01-17 Colin Watson - - * util/grub.d/00_header.in (make_timeout): Use && rather than test -diff --git a/NEWS b/NEWS -index 49a2459..a61df94 100644 ---- a/NEWS -+++ b/NEWS -@@ -15,6 +15,8 @@ New in 2.02: - * GPT PReP. - * New `progress' module that shows progress information while reading - files. -+ * ZFS features support. -+ * ZFS LZ4 support. - - * New/improved terminal and video support: - * Monochrome text (matching `hercules' in GRUB Legacy). -@@ -36,6 +38,7 @@ New in 2.02: - * Enable `linux16' on all x86 platforms, not just BIOS. - * New TrueCrypt ISO loader. - * multiboot2 boot-services EFI specification. -+ * multiboot2 EFI memory map specification. - * multiboot2 full-file specfication. - - * New/improved network support: -@@ -51,12 +54,15 @@ New in 2.02: - * Ability to launch another payload from flash or disk - * Coreboot framebuffer - * CBMEMC support (both logging and inspecting logs) -- * Inspecting coreboot timestamps. -- * Inspecting coreboot tables. -+ * Command for inspecting coreboot timestamps (`coreboot_boottime'). -+ * Command for inspecting coreboot tables (`lscoreboot'). -+ * New target default_payload.elf. -+ * Increased maximal core size. - - * New/improved platform support: - * New `efifwsetup' and `lsefi' commands on EFI platforms. - * New `cmosdump' and `cmosset' commands on platforms with CMOS support. -+ * New command `pcidump' for PCI platforms. - * Improve opcode parsing in ACPI halt implementation. - * Use the TSC as a possible time source on i386-ieee1275. - * Merge PowerPC grub-mkrescue implementation with the common one. -@@ -77,6 +83,8 @@ New in 2.02: - * Support Yeeloong 3A. - * Add `cpuid --pae' option to detect Physical Address Extension on x86. - * Support for USB debug dongles. -+ * Support for *-emu on all platforms (previously only i386/x86_64 worked). -+ * Support *-emu on Windows. - - * Security: - * Add optional facility to enforce that all files read by the core image -@@ -88,6 +96,8 @@ New in 2.02: - * Initialise USB ports in parallel. - * New `testspeed' command to test file read speed. - * Speed-up gfxterm by storing intermediate results in more compact format. -+ * Lazy LVM/mdraid scan. -+ * Disk hints. - - * Scripting: - * New `eval' and `tr' commands. -@@ -105,7 +115,8 @@ New in 2.02: - * grub-install, grub-mknetdir, grub-mkrescue, and grub-mkstandalone - rewritten in C. They should now work in supported non-Unix-like - environments. -- * Native mingw support, including ability to install on EFI under windows. -+ * Native mingw support. -+ * Ability to install on EFI under windows. - * Reorganise timeout handling using new `timeout_style' environment - variable and `GRUB_TIMEOUT_STYLE' configuration key for grub-mkconfig. - Menu hotkeys pressed during a hidden timeout now boot the corresponding -@@ -122,6 +133,7 @@ New in 2.02: - * Partial mingw64 x86_64-efi compile support (highly experimental). - * Partial mingw32 i386-* (other than already present i386-pc) - compile support (highly experimental). -+ * Support for grub-mkpasswd on Windows. - * Eliminate the use of AutoGen. This allowed some performance - improvements to the build system. - * Remove variable length arrays. --- -1.9.0 - diff --git a/0018-Prefer-more-portable-test-1-constructs.patch b/0018-Prefer-more-portable-test-1-constructs.patch new file mode 100644 index 0000000..2502c37 --- /dev/null +++ b/0018-Prefer-more-portable-test-1-constructs.patch @@ -0,0 +1,109 @@ +From 4ec08b960f6de1190dea9fe7e6ab3b4b249840e5 Mon Sep 17 00:00:00 2001 +From: Colin Watson +Date: Fri, 17 Jan 2014 15:24:50 +0000 +Subject: [PATCH 018/125] Prefer more portable test(1) constructs + +* util/grub.d/00_header.in (make_timeout): Use && rather than test +-a. +* util/grub.d/10_windows.in: Likewise. +* util/grub.d/10_netbsd.in (netbsd_load_fs_module): Use || rather +than test -o. +* util/grub.d/30_os-prober.in: Use && rather than test -a, and || +rather than test -o. +--- + ChangeLog | 12 +++++++++++- + util/grub.d/00_header.in | 2 +- + util/grub.d/10_netbsd.in | 2 +- + util/grub.d/10_windows.in | 4 ++-- + util/grub.d/30_os-prober.in | 4 ++-- + 5 files changed, 17 insertions(+), 7 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index 6613b4e..c8e95a6 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,4 +1,14 @@ +-2014-01-17 Colin Watson ++2014-01-17 Colin Watson ++ ++ * util/grub.d/00_header.in (make_timeout): Use && rather than test ++ -a. ++ * util/grub.d/10_windows.in: Likewise. ++ * util/grub.d/10_netbsd.in (netbsd_load_fs_module): Use || rather ++ than test -o. ++ * util/grub.d/30_os-prober.in: Use && rather than test -a, and || ++ rather than test -o. ++ ++2014-01-17 Colin Watson + + * grub-core/osdep/freebsd/hostdisk.c (grub_util_fd_open): Remove + redundant preprocessor conditional. +diff --git a/util/grub.d/00_header.in b/util/grub.d/00_header.in +index 0c82f23..ce2ec81 100644 +--- a/util/grub.d/00_header.in ++++ b/util/grub.d/00_header.in +@@ -285,7 +285,7 @@ make_timeout () + if [ "x${3}" != "x" ] ; then + timeout="${2}" + style="${3}" +- elif [ "x${1}" != "x" -a "x${1}" != "x0" ] ; then ++ elif [ "x${1}" != "x" ] && [ "x${1}" != "x0" ] ; then + # Handle the deprecated GRUB_HIDDEN_TIMEOUT scheme. + timeout="${1}" + if [ "x${2}" != "x0" ] ; then +diff --git a/util/grub.d/10_netbsd.in b/util/grub.d/10_netbsd.in +index 29a0e41..9988a42 100644 +--- a/util/grub.d/10_netbsd.in ++++ b/util/grub.d/10_netbsd.in +@@ -69,7 +69,7 @@ netbsd_load_fs_module () + kversion=$(zcat -f "${kernel}" | strings | sed -n -e '/^@(#)NetBSD/ { s/^@(#)NetBSD \([0-9\.]*\) .*$/\1/g ; p ; q ; }') + kmodule="/stand/${karch}/${kversion}/modules/${kmod}/${kmod}.kmod" + +- if test -z "$karch" -o -z "$kversion" -o ! -f "${kmodule}"; then ++ if test -z "$karch" || test -z "$kversion" || test ! -f "${kmodule}"; then + return + fi + +diff --git a/util/grub.d/10_windows.in b/util/grub.d/10_windows.in +index 9025914..48bd955 100644 +--- a/util/grub.d/10_windows.in ++++ b/util/grub.d/10_windows.in +@@ -66,11 +66,11 @@ for drv in $drives ; do + osid= + + # Check for Vista bootmgr. +- if [ -f "$dir"/bootmgr -a -f "$dir"/boot/bcd ] ; then ++ if [ -f "$dir"/bootmgr ] && [ -f "$dir"/boot/bcd ] ; then + OS="$(gettext "Windows Vista/7 (loader)")" + osid=bootmgr + # Check for NTLDR. +- elif [ -f "$dir"/ntldr -a -f "$dir"/ntdetect.com -a -f "$dir"/boot.ini ] ; then ++ elif [ -f "$dir"/ntldr ] && [ -f "$dir"/ntdetect.com ] && [ -f "$dir"/boot.ini ] ; then + OS=`get_os_name_from_boot_ini "$dir"/boot.ini` || OS="$(gettext "Windows NT/2000/XP (loader)")" + osid=ntldr + needmap=t +diff --git a/util/grub.d/30_os-prober.in b/util/grub.d/30_os-prober.in +index 0470e66..7cf8487 100644 +--- a/util/grub.d/30_os-prober.in ++++ b/util/grub.d/30_os-prober.in +@@ -30,7 +30,7 @@ if [ "x${GRUB_DISABLE_OS_PROBER}" = "xtrue" ]; then + exit 0 + fi + +-if [ -z "`which os-prober 2> /dev/null`" -o -z "`which linux-boot-prober 2> /dev/null`" ] ; then ++if [ -z "`which os-prober 2> /dev/null`" ] || [ -z "`which linux-boot-prober 2> /dev/null`" ] ; then + # missing os-prober and/or linux-boot-prober + exit 0 + fi +@@ -119,7 +119,7 @@ for OS in ${OSPROBED} ; do + EXPUUID="${EXPUUID}@${DEVICE#*@}" + fi + +- if [ "x${GRUB_OS_PROBER_SKIP_LIST}" != "x" -a "x`echo ${GRUB_OS_PROBER_SKIP_LIST} | grep -i -e '\b'${EXPUUID}'\b'`" != "x" ] ; then ++ if [ "x${GRUB_OS_PROBER_SKIP_LIST}" != "x" ] && [ "x`echo ${GRUB_OS_PROBER_SKIP_LIST} | grep -i -e '\b'${EXPUUID}'\b'`" != "x" ] ; then + echo "Skipped ${LONGNAME} on ${DEVICE} by user request." >&2 + continue + fi +-- +1.9.0 + diff --git a/0019-NEWS-Add-few-missing-entries.patch b/0019-NEWS-Add-few-missing-entries.patch new file mode 100644 index 0000000..54998df --- /dev/null +++ b/0019-NEWS-Add-few-missing-entries.patch @@ -0,0 +1,100 @@ +From e18da008f74a3c5f27a191e4f7be80c02a49f2fe Mon Sep 17 00:00:00 2001 +From: Vladimir Serbinenko +Date: Sat, 18 Jan 2014 16:31:10 +0100 +Subject: [PATCH 019/125] * NEWS: Add few missing entries. + +--- + ChangeLog | 4 ++++ + NEWS | 18 +++++++++++++++--- + 2 files changed, 19 insertions(+), 3 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index c8e95a6..6a19f85 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,7 @@ ++2014-01-18 Vladimir Serbinenko ++ ++ * NEWS: Add few missing entries. ++ + 2014-01-17 Colin Watson + + * util/grub.d/00_header.in (make_timeout): Use && rather than test +diff --git a/NEWS b/NEWS +index 49a2459..a61df94 100644 +--- a/NEWS ++++ b/NEWS +@@ -15,6 +15,8 @@ New in 2.02: + * GPT PReP. + * New `progress' module that shows progress information while reading + files. ++ * ZFS features support. ++ * ZFS LZ4 support. + + * New/improved terminal and video support: + * Monochrome text (matching `hercules' in GRUB Legacy). +@@ -36,6 +38,7 @@ New in 2.02: + * Enable `linux16' on all x86 platforms, not just BIOS. + * New TrueCrypt ISO loader. + * multiboot2 boot-services EFI specification. ++ * multiboot2 EFI memory map specification. + * multiboot2 full-file specfication. + + * New/improved network support: +@@ -51,12 +54,15 @@ New in 2.02: + * Ability to launch another payload from flash or disk + * Coreboot framebuffer + * CBMEMC support (both logging and inspecting logs) +- * Inspecting coreboot timestamps. +- * Inspecting coreboot tables. ++ * Command for inspecting coreboot timestamps (`coreboot_boottime'). ++ * Command for inspecting coreboot tables (`lscoreboot'). ++ * New target default_payload.elf. ++ * Increased maximal core size. + + * New/improved platform support: + * New `efifwsetup' and `lsefi' commands on EFI platforms. + * New `cmosdump' and `cmosset' commands on platforms with CMOS support. ++ * New command `pcidump' for PCI platforms. + * Improve opcode parsing in ACPI halt implementation. + * Use the TSC as a possible time source on i386-ieee1275. + * Merge PowerPC grub-mkrescue implementation with the common one. +@@ -77,6 +83,8 @@ New in 2.02: + * Support Yeeloong 3A. + * Add `cpuid --pae' option to detect Physical Address Extension on x86. + * Support for USB debug dongles. ++ * Support for *-emu on all platforms (previously only i386/x86_64 worked). ++ * Support *-emu on Windows. + + * Security: + * Add optional facility to enforce that all files read by the core image +@@ -88,6 +96,8 @@ New in 2.02: + * Initialise USB ports in parallel. + * New `testspeed' command to test file read speed. + * Speed-up gfxterm by storing intermediate results in more compact format. ++ * Lazy LVM/mdraid scan. ++ * Disk hints. + + * Scripting: + * New `eval' and `tr' commands. +@@ -105,7 +115,8 @@ New in 2.02: + * grub-install, grub-mknetdir, grub-mkrescue, and grub-mkstandalone + rewritten in C. They should now work in supported non-Unix-like + environments. +- * Native mingw support, including ability to install on EFI under windows. ++ * Native mingw support. ++ * Ability to install on EFI under windows. + * Reorganise timeout handling using new `timeout_style' environment + variable and `GRUB_TIMEOUT_STYLE' configuration key for grub-mkconfig. + Menu hotkeys pressed during a hidden timeout now boot the corresponding +@@ -122,6 +133,7 @@ New in 2.02: + * Partial mingw64 x86_64-efi compile support (highly experimental). + * Partial mingw32 i386-* (other than already present i386-pc) + compile support (highly experimental). ++ * Support for grub-mkpasswd on Windows. + * Eliminate the use of AutoGen. This allowed some performance + improvements to the build system. + * Remove variable length arrays. +-- +1.9.0 + diff --git a/0019-grub-core-kern-efi-efi.c-Ensure-that-the-result-star.patch b/0019-grub-core-kern-efi-efi.c-Ensure-that-the-result-star.patch deleted file mode 100644 index 8631ddf..0000000 --- a/0019-grub-core-kern-efi-efi.c-Ensure-that-the-result-star.patch +++ /dev/null @@ -1,90 +0,0 @@ -From cadbf009147f14d3e7f33bf0f29cefb7a26aeb26 Mon Sep 17 00:00:00 2001 -From: Vladimir Serbinenko -Date: Sat, 18 Jan 2014 16:41:47 +0100 -Subject: [PATCH 019/103] * grub-core/kern/efi/efi.c: Ensure that the - result starts with / and has no //. - ---- - ChangeLog | 5 +++++ - grub-core/kern/efi/efi.c | 25 +++++++++++++++++-------- - 2 files changed, 22 insertions(+), 8 deletions(-) - -diff --git a/ChangeLog b/ChangeLog -index 5eea8a3..b42fd65 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,5 +1,10 @@ - 2014-01-18 Vladimir Serbinenko - -+ * grub-core/kern/efi/efi.c: Ensure that the result starts with / -+ and has no //. -+ -+2014-01-18 Vladimir Serbinenko -+ - * NEWS: Add few missing entries. - - 2014-01-17 Colin Watson -diff --git a/grub-core/kern/efi/efi.c b/grub-core/kern/efi/efi.c -index b253141..b9eb1ab 100644 ---- a/grub-core/kern/efi/efi.c -+++ b/grub-core/kern/efi/efi.c -@@ -309,7 +309,7 @@ grub_efi_modules_addr (void) - char * - grub_efi_get_filename (grub_efi_device_path_t *dp0) - { -- char *name = 0, *p; -+ char *name = 0, *p, *pi; - grub_size_t filesize = 0; - grub_efi_device_path_t *dp; - -@@ -328,7 +328,7 @@ grub_efi_get_filename (grub_efi_device_path_t *dp0) - grub_efi_uint16_t len; - len = ((GRUB_EFI_DEVICE_PATH_LENGTH (dp) - 4) - / sizeof (grub_efi_char16_t)); -- filesize += GRUB_MAX_UTF8_PER_UTF16 * len + 1; -+ filesize += GRUB_MAX_UTF8_PER_UTF16 * len + 2; - } - - dp = GRUB_EFI_NEXT_DEVICE_PATH (dp); -@@ -356,12 +356,12 @@ grub_efi_get_filename (grub_efi_device_path_t *dp0) - grub_efi_file_path_device_path_t *fp; - grub_efi_uint16_t len; - -- if (p != name) -- *p++ = '/'; -+ *p++ = '/'; - - len = ((GRUB_EFI_DEVICE_PATH_LENGTH (dp) - 4) - / sizeof (grub_efi_char16_t)); - fp = (grub_efi_file_path_device_path_t *) dp; -+ - p = (char *) grub_utf16_to_utf8 ((unsigned char *) p, fp->path_name, len); - } - -@@ -370,10 +370,19 @@ grub_efi_get_filename (grub_efi_device_path_t *dp0) - - *p = '\0'; - -- /* EFI breaks paths with backslashes. */ -- for (p = name; *p; p++) -- if (*p == '\\') -- *p = '/'; -+ for (pi = name, p = name; *pi;) -+ { -+ /* EFI breaks paths with backslashes. */ -+ if (*pi == '\\' || *pi == '/') -+ { -+ *p++ = '/'; -+ while (*pi == '\\' || *pi == '/') -+ pi++; -+ continue; -+ } -+ *p++ = *pi++; -+ } -+ *p = '\0'; - - return name; - } --- -1.9.0 - diff --git a/0020-grub-core-kern-efi-efi.c-Ensure-that-the-result-star.patch b/0020-grub-core-kern-efi-efi.c-Ensure-that-the-result-star.patch new file mode 100644 index 0000000..f685e43 --- /dev/null +++ b/0020-grub-core-kern-efi-efi.c-Ensure-that-the-result-star.patch @@ -0,0 +1,90 @@ +From 29c96f00677e1dd2a9df4de645a7f5fab7b736a1 Mon Sep 17 00:00:00 2001 +From: Vladimir Serbinenko +Date: Sat, 18 Jan 2014 16:41:47 +0100 +Subject: [PATCH 020/125] * grub-core/kern/efi/efi.c: Ensure that the + result starts with / and has no //. + +--- + ChangeLog | 5 +++++ + grub-core/kern/efi/efi.c | 25 +++++++++++++++++-------- + 2 files changed, 22 insertions(+), 8 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index 6a19f85..b04a4ef 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,5 +1,10 @@ + 2014-01-18 Vladimir Serbinenko + ++ * grub-core/kern/efi/efi.c: Ensure that the result starts with / ++ and has no //. ++ ++2014-01-18 Vladimir Serbinenko ++ + * NEWS: Add few missing entries. + + 2014-01-17 Colin Watson +diff --git a/grub-core/kern/efi/efi.c b/grub-core/kern/efi/efi.c +index b253141..b9eb1ab 100644 +--- a/grub-core/kern/efi/efi.c ++++ b/grub-core/kern/efi/efi.c +@@ -309,7 +309,7 @@ grub_efi_modules_addr (void) + char * + grub_efi_get_filename (grub_efi_device_path_t *dp0) + { +- char *name = 0, *p; ++ char *name = 0, *p, *pi; + grub_size_t filesize = 0; + grub_efi_device_path_t *dp; + +@@ -328,7 +328,7 @@ grub_efi_get_filename (grub_efi_device_path_t *dp0) + grub_efi_uint16_t len; + len = ((GRUB_EFI_DEVICE_PATH_LENGTH (dp) - 4) + / sizeof (grub_efi_char16_t)); +- filesize += GRUB_MAX_UTF8_PER_UTF16 * len + 1; ++ filesize += GRUB_MAX_UTF8_PER_UTF16 * len + 2; + } + + dp = GRUB_EFI_NEXT_DEVICE_PATH (dp); +@@ -356,12 +356,12 @@ grub_efi_get_filename (grub_efi_device_path_t *dp0) + grub_efi_file_path_device_path_t *fp; + grub_efi_uint16_t len; + +- if (p != name) +- *p++ = '/'; ++ *p++ = '/'; + + len = ((GRUB_EFI_DEVICE_PATH_LENGTH (dp) - 4) + / sizeof (grub_efi_char16_t)); + fp = (grub_efi_file_path_device_path_t *) dp; ++ + p = (char *) grub_utf16_to_utf8 ((unsigned char *) p, fp->path_name, len); + } + +@@ -370,10 +370,19 @@ grub_efi_get_filename (grub_efi_device_path_t *dp0) + + *p = '\0'; + +- /* EFI breaks paths with backslashes. */ +- for (p = name; *p; p++) +- if (*p == '\\') +- *p = '/'; ++ for (pi = name, p = name; *pi;) ++ { ++ /* EFI breaks paths with backslashes. */ ++ if (*pi == '\\' || *pi == '/') ++ { ++ *p++ = '/'; ++ while (*pi == '\\' || *pi == '/') ++ pi++; ++ continue; ++ } ++ *p++ = *pi++; ++ } ++ *p = '\0'; + + return name; + } +-- +1.9.0 + diff --git a/0020-util-grub-mount.c-Extend-GCC-warning-workaround-to-g.patch b/0020-util-grub-mount.c-Extend-GCC-warning-workaround-to-g.patch deleted file mode 100644 index c1933ff..0000000 --- a/0020-util-grub-mount.c-Extend-GCC-warning-workaround-to-g.patch +++ /dev/null @@ -1,47 +0,0 @@ -From a97ddeedaa2d65158ea9489cb73ff187fd8ff306 Mon Sep 17 00:00:00 2001 -From: Vladimir Serbinenko -Date: Sat, 18 Jan 2014 16:43:29 +0100 -Subject: [PATCH 020/103] * util/grub-mount.c: Extend GCC warning - workaround to grub-mount. - ---- - ChangeLog | 4 ++++ - util/grub-mount.c | 7 ++++++- - 2 files changed, 10 insertions(+), 1 deletion(-) - -diff --git a/ChangeLog b/ChangeLog -index b42fd65..7241046 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,5 +1,9 @@ - 2014-01-18 Vladimir Serbinenko - -+ * util/grub-mount.c: Extend GCC warning workaround to grub-mount. -+ -+2014-01-18 Vladimir Serbinenko -+ - * grub-core/kern/efi/efi.c: Ensure that the result starts with / - and has no //. - -diff --git a/util/grub-mount.c b/util/grub-mount.c -index 118881e..19de2e6 100644 ---- a/util/grub-mount.c -+++ b/util/grub-mount.c -@@ -41,8 +41,13 @@ - #include - #include - -+#pragma GCC diagnostic ignored "-Wmissing-prototypes" -+#pragma GCC diagnostic ignored "-Wmissing-declarations" -+#include -+#pragma GCC diagnostic error "-Wmissing-prototypes" -+#pragma GCC diagnostic error "-Wmissing-declarations" -+ - #include "progname.h" --#include "argp.h" - - static const char *root = NULL; - grub_device_t dev = NULL; --- -1.9.0 - diff --git a/0021-reintroduce-BUILD_LDFLAGS-for-the-cross-compile-case.patch b/0021-reintroduce-BUILD_LDFLAGS-for-the-cross-compile-case.patch deleted file mode 100644 index 595a654..0000000 --- a/0021-reintroduce-BUILD_LDFLAGS-for-the-cross-compile-case.patch +++ /dev/null @@ -1,153 +0,0 @@ -From 270a7a0d557ecdedc7aaba8dfba01d45635455e9 Mon Sep 17 00:00:00 2001 -From: Andrey Borzenkov -Date: Sat, 18 Jan 2014 19:50:54 +0400 -Subject: [PATCH 021/103] reintroduce BUILD_LDFLAGS for the cross-compile case - -This allows providing separate LDFLAGS for build and host environments, which -are not necessary the same for cross-compile case. In particular, it allows -building host programs statically to not depend on presence of libraries at -run-time (e.g. MinGW DLLs on Windows) while continue to use default dynamic -linking at build time. - -Also fix obsolete comments in confgure.ac - we do use different environment -for build and host now. ---- - ChangeLog | 7 +++++++ - INSTALL | 3 ++- - Makefile.am | 8 ++++---- - configure.ac | 13 ++++++++----- - grub-core/Makefile.am | 6 +++--- - 5 files changed, 24 insertions(+), 13 deletions(-) - -diff --git a/ChangeLog b/ChangeLog -index 7241046..86053ae 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,10 @@ -+2014-01-07 Andrey Borzenkov -+ -+ * configure.ac: Add support for BUILD_LDFLAGS. -+ * Makefile.am: Use BUILD_LDFLAGS for build time programs here ... -+ * grub-core/Makefile.am: ... and here. -+ * INSTALL: Mention BUILD_LDFLAGS. -+ - 2014-01-18 Vladimir Serbinenko - - * util/grub-mount.c: Extend GCC warning workaround to grub-mount. -diff --git a/INSTALL b/INSTALL -index db12530..b67cd7f 100644 ---- a/INSTALL -+++ b/INSTALL -@@ -168,7 +168,8 @@ corresponding platform are not needed for the platform in question. - generate sin and cos tables. - 2. BUILD_CFLAGS= for C options for build. - 3. BUILD_CPPFLAGS= for C preprocessor options for build. -- 4. BUILD_FREETYPE= for freetype-config for build (optional). -+ 4. BUILD_LDFLAGS= for linker options for build. -+ 5. BUILD_FREETYPE= for freetype-config for build (optional). - - - For host - 1. --host= to autoconf name of host. -diff --git a/Makefile.am b/Makefile.am -index 320e86f..1bbec0e 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -67,20 +67,20 @@ endif - starfield_theme_files = $(srcdir)/themes/starfield/blob_w.png $(srcdir)/themes/starfield/boot_menu_c.png $(srcdir)/themes/starfield/boot_menu_e.png $(srcdir)/themes/starfield/boot_menu_ne.png $(srcdir)/themes/starfield/boot_menu_n.png $(srcdir)/themes/starfield/boot_menu_nw.png $(srcdir)/themes/starfield/boot_menu_se.png $(srcdir)/themes/starfield/boot_menu_s.png $(srcdir)/themes/starfield/boot_menu_sw.png $(srcdir)/themes/starfield/boot_menu_w.png $(srcdir)/themes/starfield/slider_c.png $(srcdir)/themes/starfield/slider_n.png $(srcdir)/themes/starfield/slider_s.png $(srcdir)/themes/starfield/starfield.png $(srcdir)/themes/starfield/terminal_box_c.png $(srcdir)/themes/starfield/terminal_box_e.png $(srcdir)/themes/starfield/terminal_box_ne.png $(srcdir)/themes/starfield/terminal_box_n.png $(srcdir)/themes/starfield/terminal_box_nw.png $(srcdir)/themes/starfield/terminal_box_se.png $(srcdir)/themes/starfield/terminal_box_s.png $(srcdir)/themes/starfield/terminal_box_sw.png $(srcdir)/themes/starfield/terminal_box_w.png $(srcdir)/themes/starfield/theme.txt $(srcdir)/themes/starfield/README $(srcdir)/themes/starfield/COPYING.CC-BY-SA-3.0 - - build-grub-mkfont: util/grub-mkfont.c grub-core/unidata.c grub-core/kern/emu/misc.c util/misc.c -- $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-mkfont\" $^ $(build_freetype_cflags) $(build_freetype_libs) -+ $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-mkfont\" $^ $(build_freetype_cflags) $(build_freetype_libs) - CLEANFILES += build-grub-mkfont - - garbage-gen: util/garbage-gen.c -- $(BUILD_CC) -o $@ $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $^ -+ $(BUILD_CC) -o $@ $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) $^ - CLEANFILES += garbage-gen - EXTRA_DIST += util/garbage-gen.c - - build-grub-gen-asciih: util/grub-gen-asciih.c -- $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 $^ $(build_freetype_cflags) $(build_freetype_libs) -Wall -Werror -+ $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 $^ $(build_freetype_cflags) $(build_freetype_libs) -Wall -Werror - CLEANFILES += build-grub-gen-asciih - - build-grub-gen-widthspec: util/grub-gen-widthspec.c -- $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 $^ $(build_freetype_cflags) $(build_freetype_libs) -Wall -Werror -+ $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 $^ $(build_freetype_cflags) $(build_freetype_libs) -Wall -Werror - CLEANFILES += build-grub-gen-widthspec - - if COND_STARFIELD -diff --git a/configure.ac b/configure.ac -index 7c5d080..2e4cf3c 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -26,11 +26,10 @@ dnl This is necessary because the target type in autoconf does not - dnl describe such a system very well. - dnl - dnl The current strategy is to use variables with no prefix (such as --dnl CC, CFLAGS, etc.) for the host type as well as the build type, --dnl because GRUB does not need to use those variables for the build --dnl type, so there is no conflict. Variables with the prefix "TARGET_" --dnl (such as TARGET_CC, TARGET_CFLAGS, etc.) are used for the target --dnl type. -+dnl CC, CFLAGS, etc.) for the host type, variables with prefix "BUILD_" -+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 used for the target type. See INSTALL for full list of variables. - - AC_INIT([GRUB],[2.02~beta2],[bug-grub@gnu.org]) - -@@ -477,6 +476,7 @@ AC_SUBST(HOST_CC) - AC_SUBST(BUILD_CC) - AC_SUBST(BUILD_CFLAGS) - AC_SUBST(BUILD_CPPFLAGS) -+AC_SUBST(BUILD_LDFLAGS) - AC_SUBST(TARGET_CC) - AC_SUBST(TARGET_NM) - AC_SUBST(TARGET_RANLIB) -@@ -1290,10 +1290,12 @@ SAVED_CC="$CC" - SAVED_CPP="$CPP" - SAVED_CFLAGS="$CFLAGS" - SAVED_CPPFLAGS="$CPPFLAGS" -+SAVED_LDFLAGS="$LDFLAGS" - CC="$BUILD_CC" - CPP="$BUILD_CPP" - CFLAGS="$BUILD_CFLAGS" - CPPFLAGS="$BUILD_CPPFLAGS" -+LDFLAGS="$BUILD_LDFAGS" - - unset ac_cv_c_bigendian - unset ac_cv_header_ft2build_h -@@ -1356,6 +1358,7 @@ CC="$SAVED_CC" - CPP="$SAVED_CPP" - CFLAGS="$SAVED_CFLAGS" - CPPFLAGS="$SAVED_CPPFLAGS" -+LDFLAGS="$SAVED_LDFLAGS" - - - DJVU_FONT_SOURCE= -diff --git a/grub-core/Makefile.am b/grub-core/Makefile.am -index 1b3142d..13b7979 100644 ---- a/grub-core/Makefile.am -+++ b/grub-core/Makefile.am -@@ -27,14 +27,14 @@ CPPFLAGS_LIBRARY += $(CPPFLAGS_PLATFORM) - CCASFLAGS_LIBRARY += $(CCASFLAGS_PLATFORM) - - build-grub-pep2elf: $(top_srcdir)/util/grub-pe2elf.c $(top_srcdir)/grub-core/kern/emu/misc.c $(top_srcdir)/util/misc.c -- $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) -DGRUB_BUILD=1 -DGRUB_TARGET_WORDSIZE=64 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-pep2elf\" $^ -+ $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_BUILD=1 -DGRUB_TARGET_WORDSIZE=64 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-pep2elf\" $^ - - build-grub-pe2elf: $(top_srcdir)/util/grub-pe2elf.c $(top_srcdir)/grub-core/kern/emu/misc.c $(top_srcdir)/util/misc.c -- $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) -DGRUB_BUILD=1 -DGRUB_TARGET_WORDSIZE=32 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-pe2elf\" $^ -+ $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_BUILD=1 -DGRUB_TARGET_WORDSIZE=32 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-pe2elf\" $^ - - # gentrigtables - gentrigtables: gentrigtables.c -- $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $< $(BUILD_LIBM) -+ $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) $< $(BUILD_LIBM) - CLEANFILES += gentrigtables - - # trigtables.c --- -1.9.0 - diff --git a/0021-util-grub-mount.c-Extend-GCC-warning-workaround-to-g.patch b/0021-util-grub-mount.c-Extend-GCC-warning-workaround-to-g.patch new file mode 100644 index 0000000..53ee84b --- /dev/null +++ b/0021-util-grub-mount.c-Extend-GCC-warning-workaround-to-g.patch @@ -0,0 +1,47 @@ +From fa9e3a9aa30988c2339e9d05c81b5d91534f4049 Mon Sep 17 00:00:00 2001 +From: Vladimir Serbinenko +Date: Sat, 18 Jan 2014 16:43:29 +0100 +Subject: [PATCH 021/125] * util/grub-mount.c: Extend GCC warning + workaround to grub-mount. + +--- + ChangeLog | 4 ++++ + util/grub-mount.c | 7 ++++++- + 2 files changed, 10 insertions(+), 1 deletion(-) + +diff --git a/ChangeLog b/ChangeLog +index b04a4ef..8534158 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,5 +1,9 @@ + 2014-01-18 Vladimir Serbinenko + ++ * util/grub-mount.c: Extend GCC warning workaround to grub-mount. ++ ++2014-01-18 Vladimir Serbinenko ++ + * grub-core/kern/efi/efi.c: Ensure that the result starts with / + and has no //. + +diff --git a/util/grub-mount.c b/util/grub-mount.c +index 118881e..19de2e6 100644 +--- a/util/grub-mount.c ++++ b/util/grub-mount.c +@@ -41,8 +41,13 @@ + #include + #include + ++#pragma GCC diagnostic ignored "-Wmissing-prototypes" ++#pragma GCC diagnostic ignored "-Wmissing-declarations" ++#include ++#pragma GCC diagnostic error "-Wmissing-prototypes" ++#pragma GCC diagnostic error "-Wmissing-declarations" ++ + #include "progname.h" +-#include "argp.h" + + static const char *root = NULL; + grub_device_t dev = NULL; +-- +1.9.0 + diff --git a/0022-grub-core-term-terminfo.c-Recognize-keys-F1-F12.patch b/0022-grub-core-term-terminfo.c-Recognize-keys-F1-F12.patch deleted file mode 100644 index f195f50..0000000 --- a/0022-grub-core-term-terminfo.c-Recognize-keys-F1-F12.patch +++ /dev/null @@ -1,155 +0,0 @@ -From e5f0bfe517d7b07bcc940c16bbfe89daed17163f Mon Sep 17 00:00:00 2001 -From: Vladimir Serbinenko -Date: Sat, 18 Jan 2014 16:57:35 +0100 -Subject: [PATCH 022/103] * grub-core/term/terminfo.c: Recognize keys - F1-F12. - ---- - ChangeLog | 4 +++ - grub-core/term/terminfo.c | 86 +++++++++++++++++++++++++++-------------------- - 2 files changed, 54 insertions(+), 36 deletions(-) - -diff --git a/ChangeLog b/ChangeLog -index 86053ae..1d530ce 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,7 @@ -+2014-01-18 Vladimir Serbinenko -+ -+ * grub-core/term/terminfo.c: Recognize keys F1-F12. -+ - 2014-01-07 Andrey Borzenkov - - * configure.ac: Add support for BUILD_LDFLAGS. -diff --git a/grub-core/term/terminfo.c b/grub-core/term/terminfo.c -index 3d48b19..f0d3e3d 100644 ---- a/grub-core/term/terminfo.c -+++ b/grub-core/term/terminfo.c -@@ -460,28 +460,31 @@ grub_terminfo_readkey (struct grub_term_input *term, int *keys, int *len, - {'@', GRUB_TERM_KEY_INSERT}, - }; - -- static struct -- { -- char key; -- unsigned ascii; -- } -- four_code_table[] = -+ static unsigned four_code_table[] = - { -- {'1', GRUB_TERM_KEY_HOME}, -- {'3', GRUB_TERM_KEY_DC}, -- {'5', GRUB_TERM_KEY_PPAGE}, -- {'6', GRUB_TERM_KEY_NPAGE}, -- {'7', GRUB_TERM_KEY_HOME}, -- {'8', GRUB_TERM_KEY_END} -+ [1] = GRUB_TERM_KEY_HOME, -+ [3] = GRUB_TERM_KEY_DC, -+ [5] = GRUB_TERM_KEY_PPAGE, -+ [6] = GRUB_TERM_KEY_NPAGE, -+ [7] = GRUB_TERM_KEY_HOME, -+ [8] = GRUB_TERM_KEY_END, -+ [17] = GRUB_TERM_KEY_F6, -+ [18] = GRUB_TERM_KEY_F7, -+ [19] = GRUB_TERM_KEY_F8, -+ [20] = GRUB_TERM_KEY_F9, -+ [21] = GRUB_TERM_KEY_F10, -+ [23] = GRUB_TERM_KEY_F11, -+ [24] = GRUB_TERM_KEY_F12, - }; - char fx_key[] = - { 'P', 'Q', 'w', 'x', 't', 'u', -- 'q', 'r', 'p', 'M', 'A', 'B' }; -+ 'q', 'r', 'p', 'M', 'A', 'B', 'H', 'F' }; - unsigned fx_code[] = - { GRUB_TERM_KEY_F1, GRUB_TERM_KEY_F2, GRUB_TERM_KEY_F3, - GRUB_TERM_KEY_F4, GRUB_TERM_KEY_F5, GRUB_TERM_KEY_F6, - GRUB_TERM_KEY_F7, GRUB_TERM_KEY_F8, GRUB_TERM_KEY_F9, -- GRUB_TERM_KEY_F10, GRUB_TERM_KEY_F11, GRUB_TERM_KEY_F12 }; -+ GRUB_TERM_KEY_F10, GRUB_TERM_KEY_F11, GRUB_TERM_KEY_F12, -+ GRUB_TERM_KEY_HOME, GRUB_TERM_KEY_END }; - unsigned i; - - if (c == '\e') -@@ -492,19 +495,13 @@ grub_terminfo_readkey (struct grub_term_input *term, int *keys, int *len, - { - CONTINUE_READ; - -- switch (c) -- { -- case 'H': -- keys[0] = GRUB_TERM_KEY_HOME; -- *len = 1; -- return; -- case 'F': -- keys[0] = GRUB_TERM_KEY_END; -- *len = 1; -- return; -- default: -- return; -- } -+ for (i = 0; i < ARRAY_SIZE (fx_key); i++) -+ if (fx_key[i] == c) -+ { -+ keys[0] = fx_code[i]; -+ *len = 1; -+ return; -+ } - } - - if (c != '[') -@@ -523,6 +520,15 @@ grub_terminfo_readkey (struct grub_term_input *term, int *keys, int *len, - - switch (c) - { -+ case '[': -+ CONTINUE_READ; -+ if (c >= 'A' && c <= 'E') -+ { -+ keys[0] = GRUB_TERM_KEY_F1 + c - 'A'; -+ *len = 1; -+ return; -+ } -+ return; - case 'O': - CONTINUE_READ; - for (i = 0; i < ARRAY_SIZE (fx_key); i++) -@@ -555,18 +561,26 @@ grub_terminfo_readkey (struct grub_term_input *term, int *keys, int *len, - return; - } - -- default: -- for (i = 0; i < ARRAY_SIZE (four_code_table); i++) -- if (four_code_table[i].key == c) -+ case '1' ... '9': -+ { -+ unsigned val = c - '0'; -+ CONTINUE_READ; -+ if (c >= '0' && c <= '9') - { -+ val = val * 10 + (c - '0'); - CONTINUE_READ; -- if (c != '~') -- return; -- keys[0] = four_code_table[i].ascii; -- *len = 1; -- return; - } -- return; -+ if (c != '~') -+ return; -+ if (val >= ARRAY_SIZE (four_code_table) -+ || four_code_table[val] == 0) -+ return; -+ keys[0] = four_code_table[val]; -+ *len = 1; -+ return; -+ } -+ default: -+ return; - } - } - #undef CONTINUE_READ --- -1.9.0 - diff --git a/0022-reintroduce-BUILD_LDFLAGS-for-the-cross-compile-case.patch b/0022-reintroduce-BUILD_LDFLAGS-for-the-cross-compile-case.patch new file mode 100644 index 0000000..c920419 --- /dev/null +++ b/0022-reintroduce-BUILD_LDFLAGS-for-the-cross-compile-case.patch @@ -0,0 +1,153 @@ +From 3bea802b45b9c98f70753370522fa6e47ba8966b Mon Sep 17 00:00:00 2001 +From: Andrey Borzenkov +Date: Sat, 18 Jan 2014 19:50:54 +0400 +Subject: [PATCH 022/125] reintroduce BUILD_LDFLAGS for the cross-compile case + +This allows providing separate LDFLAGS for build and host environments, which +are not necessary the same for cross-compile case. In particular, it allows +building host programs statically to not depend on presence of libraries at +run-time (e.g. MinGW DLLs on Windows) while continue to use default dynamic +linking at build time. + +Also fix obsolete comments in confgure.ac - we do use different environment +for build and host now. +--- + ChangeLog | 7 +++++++ + INSTALL | 3 ++- + Makefile.am | 8 ++++---- + configure.ac | 13 ++++++++----- + grub-core/Makefile.am | 6 +++--- + 5 files changed, 24 insertions(+), 13 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index 8534158..9c3ef2e 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,10 @@ ++2014-01-07 Andrey Borzenkov ++ ++ * configure.ac: Add support for BUILD_LDFLAGS. ++ * Makefile.am: Use BUILD_LDFLAGS for build time programs here ... ++ * grub-core/Makefile.am: ... and here. ++ * INSTALL: Mention BUILD_LDFLAGS. ++ + 2014-01-18 Vladimir Serbinenko + + * util/grub-mount.c: Extend GCC warning workaround to grub-mount. +diff --git a/INSTALL b/INSTALL +index db12530..b67cd7f 100644 +--- a/INSTALL ++++ b/INSTALL +@@ -168,7 +168,8 @@ corresponding platform are not needed for the platform in question. + generate sin and cos tables. + 2. BUILD_CFLAGS= for C options for build. + 3. BUILD_CPPFLAGS= for C preprocessor options for build. +- 4. BUILD_FREETYPE= for freetype-config for build (optional). ++ 4. BUILD_LDFLAGS= for linker options for build. ++ 5. BUILD_FREETYPE= for freetype-config for build (optional). + + - For host + 1. --host= to autoconf name of host. +diff --git a/Makefile.am b/Makefile.am +index 320e86f..1bbec0e 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -67,20 +67,20 @@ endif + starfield_theme_files = $(srcdir)/themes/starfield/blob_w.png $(srcdir)/themes/starfield/boot_menu_c.png $(srcdir)/themes/starfield/boot_menu_e.png $(srcdir)/themes/starfield/boot_menu_ne.png $(srcdir)/themes/starfield/boot_menu_n.png $(srcdir)/themes/starfield/boot_menu_nw.png $(srcdir)/themes/starfield/boot_menu_se.png $(srcdir)/themes/starfield/boot_menu_s.png $(srcdir)/themes/starfield/boot_menu_sw.png $(srcdir)/themes/starfield/boot_menu_w.png $(srcdir)/themes/starfield/slider_c.png $(srcdir)/themes/starfield/slider_n.png $(srcdir)/themes/starfield/slider_s.png $(srcdir)/themes/starfield/starfield.png $(srcdir)/themes/starfield/terminal_box_c.png $(srcdir)/themes/starfield/terminal_box_e.png $(srcdir)/themes/starfield/terminal_box_ne.png $(srcdir)/themes/starfield/terminal_box_n.png $(srcdir)/themes/starfield/terminal_box_nw.png $(srcdir)/themes/starfield/terminal_box_se.png $(srcdir)/themes/starfield/terminal_box_s.png $(srcdir)/themes/starfield/terminal_box_sw.png $(srcdir)/themes/starfield/terminal_box_w.png $(srcdir)/themes/starfield/theme.txt $(srcdir)/themes/starfield/README $(srcdir)/themes/starfield/COPYING.CC-BY-SA-3.0 + + build-grub-mkfont: util/grub-mkfont.c grub-core/unidata.c grub-core/kern/emu/misc.c util/misc.c +- $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-mkfont\" $^ $(build_freetype_cflags) $(build_freetype_libs) ++ $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-mkfont\" $^ $(build_freetype_cflags) $(build_freetype_libs) + CLEANFILES += build-grub-mkfont + + garbage-gen: util/garbage-gen.c +- $(BUILD_CC) -o $@ $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $^ ++ $(BUILD_CC) -o $@ $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) $^ + CLEANFILES += garbage-gen + EXTRA_DIST += util/garbage-gen.c + + build-grub-gen-asciih: util/grub-gen-asciih.c +- $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 $^ $(build_freetype_cflags) $(build_freetype_libs) -Wall -Werror ++ $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 $^ $(build_freetype_cflags) $(build_freetype_libs) -Wall -Werror + CLEANFILES += build-grub-gen-asciih + + build-grub-gen-widthspec: util/grub-gen-widthspec.c +- $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 $^ $(build_freetype_cflags) $(build_freetype_libs) -Wall -Werror ++ $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 $^ $(build_freetype_cflags) $(build_freetype_libs) -Wall -Werror + CLEANFILES += build-grub-gen-widthspec + + if COND_STARFIELD +diff --git a/configure.ac b/configure.ac +index 7c5d080..2e4cf3c 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -26,11 +26,10 @@ dnl This is necessary because the target type in autoconf does not + dnl describe such a system very well. + dnl + dnl The current strategy is to use variables with no prefix (such as +-dnl CC, CFLAGS, etc.) for the host type as well as the build type, +-dnl because GRUB does not need to use those variables for the build +-dnl type, so there is no conflict. Variables with the prefix "TARGET_" +-dnl (such as TARGET_CC, TARGET_CFLAGS, etc.) are used for the target +-dnl type. ++dnl CC, CFLAGS, etc.) for the host type, variables with prefix "BUILD_" ++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 used for the target type. See INSTALL for full list of variables. + + AC_INIT([GRUB],[2.02~beta2],[bug-grub@gnu.org]) + +@@ -477,6 +476,7 @@ AC_SUBST(HOST_CC) + AC_SUBST(BUILD_CC) + AC_SUBST(BUILD_CFLAGS) + AC_SUBST(BUILD_CPPFLAGS) ++AC_SUBST(BUILD_LDFLAGS) + AC_SUBST(TARGET_CC) + AC_SUBST(TARGET_NM) + AC_SUBST(TARGET_RANLIB) +@@ -1290,10 +1290,12 @@ SAVED_CC="$CC" + SAVED_CPP="$CPP" + SAVED_CFLAGS="$CFLAGS" + SAVED_CPPFLAGS="$CPPFLAGS" ++SAVED_LDFLAGS="$LDFLAGS" + CC="$BUILD_CC" + CPP="$BUILD_CPP" + CFLAGS="$BUILD_CFLAGS" + CPPFLAGS="$BUILD_CPPFLAGS" ++LDFLAGS="$BUILD_LDFAGS" + + unset ac_cv_c_bigendian + unset ac_cv_header_ft2build_h +@@ -1356,6 +1358,7 @@ CC="$SAVED_CC" + CPP="$SAVED_CPP" + CFLAGS="$SAVED_CFLAGS" + CPPFLAGS="$SAVED_CPPFLAGS" ++LDFLAGS="$SAVED_LDFLAGS" + + + DJVU_FONT_SOURCE= +diff --git a/grub-core/Makefile.am b/grub-core/Makefile.am +index 1b3142d..13b7979 100644 +--- a/grub-core/Makefile.am ++++ b/grub-core/Makefile.am +@@ -27,14 +27,14 @@ CPPFLAGS_LIBRARY += $(CPPFLAGS_PLATFORM) + CCASFLAGS_LIBRARY += $(CCASFLAGS_PLATFORM) + + build-grub-pep2elf: $(top_srcdir)/util/grub-pe2elf.c $(top_srcdir)/grub-core/kern/emu/misc.c $(top_srcdir)/util/misc.c +- $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) -DGRUB_BUILD=1 -DGRUB_TARGET_WORDSIZE=64 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-pep2elf\" $^ ++ $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_BUILD=1 -DGRUB_TARGET_WORDSIZE=64 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-pep2elf\" $^ + + build-grub-pe2elf: $(top_srcdir)/util/grub-pe2elf.c $(top_srcdir)/grub-core/kern/emu/misc.c $(top_srcdir)/util/misc.c +- $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) -DGRUB_BUILD=1 -DGRUB_TARGET_WORDSIZE=32 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-pe2elf\" $^ ++ $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_BUILD=1 -DGRUB_TARGET_WORDSIZE=32 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-pe2elf\" $^ + + # gentrigtables + gentrigtables: gentrigtables.c +- $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $< $(BUILD_LIBM) ++ $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) $< $(BUILD_LIBM) + CLEANFILES += gentrigtables + + # trigtables.c +-- +1.9.0 + diff --git a/0023-Fix-ChangeLog-date.patch b/0023-Fix-ChangeLog-date.patch deleted file mode 100644 index 67908d4..0000000 --- a/0023-Fix-ChangeLog-date.patch +++ /dev/null @@ -1,25 +0,0 @@ -From d55d279aaf9e05f5adee41f70eeca2533fa2bc03 Mon Sep 17 00:00:00 2001 -From: Andrey Borzenkov -Date: Sat, 18 Jan 2014 20:01:16 +0400 -Subject: [PATCH 023/103] Fix ChangeLog date - ---- - ChangeLog | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/ChangeLog b/ChangeLog -index 1d530ce..da20112 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -2,7 +2,7 @@ - - * grub-core/term/terminfo.c: Recognize keys F1-F12. - --2014-01-07 Andrey Borzenkov -+2014-01-18 Andrey Borzenkov - - * configure.ac: Add support for BUILD_LDFLAGS. - * Makefile.am: Use BUILD_LDFLAGS for build time programs here ... --- -1.9.0 - diff --git a/0023-grub-core-term-terminfo.c-Recognize-keys-F1-F12.patch b/0023-grub-core-term-terminfo.c-Recognize-keys-F1-F12.patch new file mode 100644 index 0000000..ba94774 --- /dev/null +++ b/0023-grub-core-term-terminfo.c-Recognize-keys-F1-F12.patch @@ -0,0 +1,155 @@ +From ac660e42875162e599f50c085cb646c633cf376d Mon Sep 17 00:00:00 2001 +From: Vladimir Serbinenko +Date: Sat, 18 Jan 2014 16:57:35 +0100 +Subject: [PATCH 023/125] * grub-core/term/terminfo.c: Recognize keys + F1-F12. + +--- + ChangeLog | 4 +++ + grub-core/term/terminfo.c | 86 +++++++++++++++++++++++++++-------------------- + 2 files changed, 54 insertions(+), 36 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index 9c3ef2e..bdfbf44 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,7 @@ ++2014-01-18 Vladimir Serbinenko ++ ++ * grub-core/term/terminfo.c: Recognize keys F1-F12. ++ + 2014-01-07 Andrey Borzenkov + + * configure.ac: Add support for BUILD_LDFLAGS. +diff --git a/grub-core/term/terminfo.c b/grub-core/term/terminfo.c +index 3d48b19..f0d3e3d 100644 +--- a/grub-core/term/terminfo.c ++++ b/grub-core/term/terminfo.c +@@ -460,28 +460,31 @@ grub_terminfo_readkey (struct grub_term_input *term, int *keys, int *len, + {'@', GRUB_TERM_KEY_INSERT}, + }; + +- static struct +- { +- char key; +- unsigned ascii; +- } +- four_code_table[] = ++ static unsigned four_code_table[] = + { +- {'1', GRUB_TERM_KEY_HOME}, +- {'3', GRUB_TERM_KEY_DC}, +- {'5', GRUB_TERM_KEY_PPAGE}, +- {'6', GRUB_TERM_KEY_NPAGE}, +- {'7', GRUB_TERM_KEY_HOME}, +- {'8', GRUB_TERM_KEY_END} ++ [1] = GRUB_TERM_KEY_HOME, ++ [3] = GRUB_TERM_KEY_DC, ++ [5] = GRUB_TERM_KEY_PPAGE, ++ [6] = GRUB_TERM_KEY_NPAGE, ++ [7] = GRUB_TERM_KEY_HOME, ++ [8] = GRUB_TERM_KEY_END, ++ [17] = GRUB_TERM_KEY_F6, ++ [18] = GRUB_TERM_KEY_F7, ++ [19] = GRUB_TERM_KEY_F8, ++ [20] = GRUB_TERM_KEY_F9, ++ [21] = GRUB_TERM_KEY_F10, ++ [23] = GRUB_TERM_KEY_F11, ++ [24] = GRUB_TERM_KEY_F12, + }; + char fx_key[] = + { 'P', 'Q', 'w', 'x', 't', 'u', +- 'q', 'r', 'p', 'M', 'A', 'B' }; ++ 'q', 'r', 'p', 'M', 'A', 'B', 'H', 'F' }; + unsigned fx_code[] = + { GRUB_TERM_KEY_F1, GRUB_TERM_KEY_F2, GRUB_TERM_KEY_F3, + GRUB_TERM_KEY_F4, GRUB_TERM_KEY_F5, GRUB_TERM_KEY_F6, + GRUB_TERM_KEY_F7, GRUB_TERM_KEY_F8, GRUB_TERM_KEY_F9, +- GRUB_TERM_KEY_F10, GRUB_TERM_KEY_F11, GRUB_TERM_KEY_F12 }; ++ GRUB_TERM_KEY_F10, GRUB_TERM_KEY_F11, GRUB_TERM_KEY_F12, ++ GRUB_TERM_KEY_HOME, GRUB_TERM_KEY_END }; + unsigned i; + + if (c == '\e') +@@ -492,19 +495,13 @@ grub_terminfo_readkey (struct grub_term_input *term, int *keys, int *len, + { + CONTINUE_READ; + +- switch (c) +- { +- case 'H': +- keys[0] = GRUB_TERM_KEY_HOME; +- *len = 1; +- return; +- case 'F': +- keys[0] = GRUB_TERM_KEY_END; +- *len = 1; +- return; +- default: +- return; +- } ++ for (i = 0; i < ARRAY_SIZE (fx_key); i++) ++ if (fx_key[i] == c) ++ { ++ keys[0] = fx_code[i]; ++ *len = 1; ++ return; ++ } + } + + if (c != '[') +@@ -523,6 +520,15 @@ grub_terminfo_readkey (struct grub_term_input *term, int *keys, int *len, + + switch (c) + { ++ case '[': ++ CONTINUE_READ; ++ if (c >= 'A' && c <= 'E') ++ { ++ keys[0] = GRUB_TERM_KEY_F1 + c - 'A'; ++ *len = 1; ++ return; ++ } ++ return; + case 'O': + CONTINUE_READ; + for (i = 0; i < ARRAY_SIZE (fx_key); i++) +@@ -555,18 +561,26 @@ grub_terminfo_readkey (struct grub_term_input *term, int *keys, int *len, + return; + } + +- default: +- for (i = 0; i < ARRAY_SIZE (four_code_table); i++) +- if (four_code_table[i].key == c) ++ case '1' ... '9': ++ { ++ unsigned val = c - '0'; ++ CONTINUE_READ; ++ if (c >= '0' && c <= '9') + { ++ val = val * 10 + (c - '0'); + CONTINUE_READ; +- if (c != '~') +- return; +- keys[0] = four_code_table[i].ascii; +- *len = 1; +- return; + } +- return; ++ if (c != '~') ++ return; ++ if (val >= ARRAY_SIZE (four_code_table) ++ || four_code_table[val] == 0) ++ return; ++ keys[0] = four_code_table[val]; ++ *len = 1; ++ return; ++ } ++ default: ++ return; + } + } + #undef CONTINUE_READ +-- +1.9.0 + diff --git a/0024-Fix-ChangeLog-date.patch b/0024-Fix-ChangeLog-date.patch new file mode 100644 index 0000000..f0d7981 --- /dev/null +++ b/0024-Fix-ChangeLog-date.patch @@ -0,0 +1,25 @@ +From 6e5cf6b00fa82e5a02135ea5e21230ee44c72087 Mon Sep 17 00:00:00 2001 +From: Andrey Borzenkov +Date: Sat, 18 Jan 2014 20:01:16 +0400 +Subject: [PATCH 024/125] Fix ChangeLog date + +--- + ChangeLog | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ChangeLog b/ChangeLog +index bdfbf44..fcbf220 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -2,7 +2,7 @@ + + * grub-core/term/terminfo.c: Recognize keys F1-F12. + +-2014-01-07 Andrey Borzenkov ++2014-01-18 Andrey Borzenkov + + * configure.ac: Add support for BUILD_LDFLAGS. + * Makefile.am: Use BUILD_LDFLAGS for build time programs here ... +-- +1.9.0 + diff --git a/0024-Use-_W64-to-detect-MinGW-W64-32-instead-of-_FILE_OFF.patch b/0024-Use-_W64-to-detect-MinGW-W64-32-instead-of-_FILE_OFF.patch deleted file mode 100644 index e164d26..0000000 --- a/0024-Use-_W64-to-detect-MinGW-W64-32-instead-of-_FILE_OFF.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 458248c36f2ec209cfdd7564c8dedf0e443ced5e Mon Sep 17 00:00:00 2001 -From: Andrey Borzenkov -Date: Sat, 18 Jan 2014 20:04:11 +0400 -Subject: [PATCH 024/103] Use _W64 to detect MinGW W64-32 instead of - _FILE_OFFSET_BITS - -In 94cee4a4c201bb506377b2c26e072eee8cb19d6f I overlooked that config.h -unconditionally sets _FILE_OFFSET_BITS, so it cannot be used to detect -MinGW W64 environment. It looks like Emacs folks already found -solution; instead of _FILE_OFFSET_BITS use _W64 as suggested in -http://lists.gnu.org/archive/html/emacs-devel/2013-03/msg00723.html ---- - ChangeLog | 5 +++++ - include/grub/osdep/hostfile_windows.h | 4 ++-- - 2 files changed, 7 insertions(+), 2 deletions(-) - -diff --git a/ChangeLog b/ChangeLog -index da20112..21fc87f 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,8 @@ -+2014-01-18 Andrey Borzenkov -+ -+ * include/grub/osdep/hostfile_windows.h: Use _W64 instead of -+ FILE_OFFSET_BITS to differentiate between native MinGW and Mingw W64. -+ - 2014-01-18 Vladimir Serbinenko - - * grub-core/term/terminfo.c: Recognize keys F1-F12. -diff --git a/include/grub/osdep/hostfile_windows.h b/include/grub/osdep/hostfile_windows.h -index 79efcfa..bf6451b 100644 ---- a/include/grub/osdep/hostfile_windows.h -+++ b/include/grub/osdep/hostfile_windows.h -@@ -69,8 +69,8 @@ enum grub_util_fd_open_flags_t - - #if defined (__MINGW32__) && !defined (__MINGW64__) - --/* 32 bit on MinGW-64 already redefines them if _FILE_OFFSET_BITS=64 */ --#if !defined(_FILE_OFFSET_BITS) -+/* 32 bit on Mingw-w64 already redefines them if _FILE_OFFSET_BITS=64 */ -+#ifndef _W64 - #define fseeko fseeko64 - #define ftello ftello64 - #endif --- -1.9.0 - diff --git a/0025-Use-_W64-to-detect-MinGW-W64-32-instead-of-_FILE_OFF.patch b/0025-Use-_W64-to-detect-MinGW-W64-32-instead-of-_FILE_OFF.patch new file mode 100644 index 0000000..97ef9e7 --- /dev/null +++ b/0025-Use-_W64-to-detect-MinGW-W64-32-instead-of-_FILE_OFF.patch @@ -0,0 +1,47 @@ +From bb3e1a1e8448f3ea9489b5ebfcec799196bc862f Mon Sep 17 00:00:00 2001 +From: Andrey Borzenkov +Date: Sat, 18 Jan 2014 20:04:11 +0400 +Subject: [PATCH 025/125] Use _W64 to detect MinGW W64-32 instead of + _FILE_OFFSET_BITS + +In 94cee4a4c201bb506377b2c26e072eee8cb19d6f I overlooked that config.h +unconditionally sets _FILE_OFFSET_BITS, so it cannot be used to detect +MinGW W64 environment. It looks like Emacs folks already found +solution; instead of _FILE_OFFSET_BITS use _W64 as suggested in +http://lists.gnu.org/archive/html/emacs-devel/2013-03/msg00723.html +--- + ChangeLog | 5 +++++ + include/grub/osdep/hostfile_windows.h | 4 ++-- + 2 files changed, 7 insertions(+), 2 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index fcbf220..5aac7c1 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,8 @@ ++2014-01-18 Andrey Borzenkov ++ ++ * include/grub/osdep/hostfile_windows.h: Use _W64 instead of ++ FILE_OFFSET_BITS to differentiate between native MinGW and Mingw W64. ++ + 2014-01-18 Vladimir Serbinenko + + * grub-core/term/terminfo.c: Recognize keys F1-F12. +diff --git a/include/grub/osdep/hostfile_windows.h b/include/grub/osdep/hostfile_windows.h +index 79efcfa..bf6451b 100644 +--- a/include/grub/osdep/hostfile_windows.h ++++ b/include/grub/osdep/hostfile_windows.h +@@ -69,8 +69,8 @@ enum grub_util_fd_open_flags_t + + #if defined (__MINGW32__) && !defined (__MINGW64__) + +-/* 32 bit on MinGW-64 already redefines them if _FILE_OFFSET_BITS=64 */ +-#if !defined(_FILE_OFFSET_BITS) ++/* 32 bit on Mingw-w64 already redefines them if _FILE_OFFSET_BITS=64 */ ++#ifndef _W64 + #define fseeko fseeko64 + #define ftello ftello64 + #endif +-- +1.9.0 + diff --git a/0025-add-BUILD_EXEEXT-support-to-fix-make-clean-on-Window.patch b/0025-add-BUILD_EXEEXT-support-to-fix-make-clean-on-Window.patch deleted file mode 100644 index 8f2aeed..0000000 --- a/0025-add-BUILD_EXEEXT-support-to-fix-make-clean-on-Window.patch +++ /dev/null @@ -1,174 +0,0 @@ -From 75db309b99ac486e9c6b5508722796c034cb36d6 Mon Sep 17 00:00:00 2001 -From: Andrey Borzenkov -Date: Sat, 18 Jan 2014 20:41:24 +0400 -Subject: [PATCH 025/103] add BUILD_EXEEXT support to fix make clean on Windows - -Add $(BUILD_EXEEXT) to ensure files are removed. Also add CLEANFILES where -appropriate. ---- - ChangeLog | 7 +++++++ - Makefile.am | 16 ++++++++-------- - Makefile.util.def | 2 +- - configure.ac | 21 ++++++++++++++++----- - grub-core/Makefile.am | 14 ++++++++------ - 5 files changed, 40 insertions(+), 20 deletions(-) - -diff --git a/ChangeLog b/ChangeLog -index 21fc87f..8ae23e5 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,5 +1,12 @@ - 2014-01-18 Andrey Borzenkov - -+ * configure.ac: Add support for BUILD_EXEEXT and use it ... -+ * Makefile.am: ... here. -+ * Makefile.util.def: ... and here. -+ * grub-core/Makefile.am: ... and here. -+ -+2014-01-18 Andrey Borzenkov -+ - * include/grub/osdep/hostfile_windows.h: Use _W64 instead of - FILE_OFFSET_BITS to differentiate between native MinGW and Mingw W64. - -diff --git a/Makefile.am b/Makefile.am -index 1bbec0e..aa526f5 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -66,22 +66,22 @@ endif - - starfield_theme_files = $(srcdir)/themes/starfield/blob_w.png $(srcdir)/themes/starfield/boot_menu_c.png $(srcdir)/themes/starfield/boot_menu_e.png $(srcdir)/themes/starfield/boot_menu_ne.png $(srcdir)/themes/starfield/boot_menu_n.png $(srcdir)/themes/starfield/boot_menu_nw.png $(srcdir)/themes/starfield/boot_menu_se.png $(srcdir)/themes/starfield/boot_menu_s.png $(srcdir)/themes/starfield/boot_menu_sw.png $(srcdir)/themes/starfield/boot_menu_w.png $(srcdir)/themes/starfield/slider_c.png $(srcdir)/themes/starfield/slider_n.png $(srcdir)/themes/starfield/slider_s.png $(srcdir)/themes/starfield/starfield.png $(srcdir)/themes/starfield/terminal_box_c.png $(srcdir)/themes/starfield/terminal_box_e.png $(srcdir)/themes/starfield/terminal_box_ne.png $(srcdir)/themes/starfield/terminal_box_n.png $(srcdir)/themes/starfield/terminal_box_nw.png $(srcdir)/themes/starfield/terminal_box_se.png $(srcdir)/themes/starfield/terminal_box_s.png $(srcdir)/themes/starfield/terminal_box_sw.png $(srcdir)/themes/starfield/terminal_box_w.png $(srcdir)/themes/starfield/theme.txt $(srcdir)/themes/starfield/README $(srcdir)/themes/starfield/COPYING.CC-BY-SA-3.0 - --build-grub-mkfont: util/grub-mkfont.c grub-core/unidata.c grub-core/kern/emu/misc.c util/misc.c -+build-grub-mkfont$(BUILD_EXEEXT): util/grub-mkfont.c grub-core/unidata.c grub-core/kern/emu/misc.c util/misc.c - $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-mkfont\" $^ $(build_freetype_cflags) $(build_freetype_libs) --CLEANFILES += build-grub-mkfont -+CLEANFILES += build-grub-mkfont$(BUILD_EXEEXT) - --garbage-gen: util/garbage-gen.c -+garbage-gen$(BUILD_EXEEXT): util/garbage-gen.c - $(BUILD_CC) -o $@ $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) $^ --CLEANFILES += garbage-gen -+CLEANFILES += garbage-gen$(BUILD_EXEEXT) - EXTRA_DIST += util/garbage-gen.c - --build-grub-gen-asciih: util/grub-gen-asciih.c -+build-grub-gen-asciih$(BUILD_EXEEXT): util/grub-gen-asciih.c - $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 $^ $(build_freetype_cflags) $(build_freetype_libs) -Wall -Werror --CLEANFILES += build-grub-gen-asciih -+CLEANFILES += build-grub-gen-asciih$(BUILD_EXEEXT) - --build-grub-gen-widthspec: util/grub-gen-widthspec.c -+build-grub-gen-widthspec$(BUILD_EXEEXT): util/grub-gen-widthspec.c - $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 $^ $(build_freetype_cflags) $(build_freetype_libs) -Wall -Werror --CLEANFILES += build-grub-gen-widthspec -+CLEANFILES += build-grub-gen-widthspec$(BUILD_EXEEXT) - - if COND_STARFIELD - starfield_DATA = dejavu_10.pf2 dejavu_12.pf2 dejavu_bold_14.pf2 dejavu_14.pf2 dejavu_16.pf2 $(starfield_theme_files) -diff --git a/Makefile.util.def b/Makefile.util.def -index 3c99be2..83df212 100644 ---- a/Makefile.util.def -+++ b/Makefile.util.def -@@ -708,7 +708,7 @@ script = { - name = grub-fs-tester; - common = tests/util/grub-fs-tester.in; - installdir = noinst; -- dependencies = garbage-gen; -+ dependencies = 'garbage-gen$(BUILD_EXEEXT)'; - }; - - script = { -diff --git a/configure.ac b/configure.ac -index 2e4cf3c..cf3de3b 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -38,7 +38,8 @@ AC_CONFIG_AUX_DIR([build-aux]) - # We don't want -g -O2 by default in CFLAGS - : ${CFLAGS=""} - --# Checks for host and target systems. -+# Checks for build, host and target systems. -+AC_CANONICAL_BUILD - AC_CANONICAL_HOST - save_program_prefix="${program_prefix}" - AC_CANONICAL_TARGET -@@ -422,6 +423,16 @@ case "$build_os" in - haiku*) BUILD_LIBM= ;; - *) BUILD_LIBM=-lm ;; - esac -+ -+dnl FIXME proper test seems to require too deep dive into Autoconf internals. -+dnl For now just list known platforms that we support. -+ -+case "$build_os" in -+ cygwin*|mingw32*|mingw64*) BUILD_EXEEXT=.exe ;; -+ *) BUILD_EXEEXT= ;; -+esac -+AC_SUBST(BUILD_EXEEXT) -+ - # For gnulib. - gl_INIT - -@@ -765,11 +776,11 @@ if test x"$platform" = xemu ; then - *windows* | *cygwin* | *mingw*) - if test x${target_cpu} = xi386 ; then - grub_cv_target_cc_link_format=-mi386pe; -- TARGET_OBJ2ELF='./build-grub-pe2elf'; -+ TARGET_OBJ2ELF='./build-grub-pe2elf$(BUILD_EXEEXT)'; - fi - if test x${target_cpu} = xx86_64 ; then - grub_cv_target_cc_link_format=-mi386pep; -- TARGET_OBJ2ELF='./build-grub-pep2elf'; -+ TARGET_OBJ2ELF='./build-grub-pep2elf$(BUILD_EXEEXT)'; - fi - TARGET_LDFLAGS="$TARGET_LDFLAGS -Wl,$grub_cv_target_cc_link_format" - ;; -@@ -803,10 +814,10 @@ elif test x"$target_cpu" = xi386 || test x"$target_cpu" = xx86_64; then - fi - TARGET_LDFLAGS="$TARGET_LDFLAGS -Wl,$grub_cv_target_cc_link_format" - if test x"$grub_cv_target_cc_link_format" = x-mi386pe ; then -- TARGET_OBJ2ELF='./build-grub-pe2elf'; -+ TARGET_OBJ2ELF='./build-grub-pe2elf$(BUILD_EXEEXT)'; - fi - if test x"$grub_cv_target_cc_link_format" = x-mi386pep ; then -- TARGET_OBJ2ELF='./build-grub-pep2elf'; -+ TARGET_OBJ2ELF='./build-grub-pep2elf$(BUILD_EXEEXT)'; - fi - fi - -diff --git a/grub-core/Makefile.am b/grub-core/Makefile.am -index 13b7979..826b3dd 100644 ---- a/grub-core/Makefile.am -+++ b/grub-core/Makefile.am -@@ -26,20 +26,22 @@ CFLAGS_LIBRARY += $(CFLAGS_PLATFORM) -fno-builtin - CPPFLAGS_LIBRARY += $(CPPFLAGS_PLATFORM) - CCASFLAGS_LIBRARY += $(CCASFLAGS_PLATFORM) - --build-grub-pep2elf: $(top_srcdir)/util/grub-pe2elf.c $(top_srcdir)/grub-core/kern/emu/misc.c $(top_srcdir)/util/misc.c -+build-grub-pep2elf$(BUILD_EXEEXT): $(top_srcdir)/util/grub-pe2elf.c $(top_srcdir)/grub-core/kern/emu/misc.c $(top_srcdir)/util/misc.c - $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_BUILD=1 -DGRUB_TARGET_WORDSIZE=64 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-pep2elf\" $^ -+CLEANFILES += build-grub-pep2elf$(BUILD_EXEEXT) - --build-grub-pe2elf: $(top_srcdir)/util/grub-pe2elf.c $(top_srcdir)/grub-core/kern/emu/misc.c $(top_srcdir)/util/misc.c -+build-grub-pe2elf$(BUILD_EXEEXT): $(top_srcdir)/util/grub-pe2elf.c $(top_srcdir)/grub-core/kern/emu/misc.c $(top_srcdir)/util/misc.c - $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_BUILD=1 -DGRUB_TARGET_WORDSIZE=32 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-pe2elf\" $^ -+CLEANFILES += build-grub-pe2elf$(BUILD_EXEEXT) - - # gentrigtables --gentrigtables: gentrigtables.c -+gentrigtables$(BUILD_EXEEXT): gentrigtables.c - $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) $< $(BUILD_LIBM) --CLEANFILES += gentrigtables -+CLEANFILES += gentrigtables$(BUILD_EXEEXT) - - # trigtables.c --trigtables.c: gentrigtables gentrigtables.c $(top_srcdir)/configure.ac -- ./gentrigtables > $@ -+trigtables.c: gentrigtables$(BUILD_EXEEXT) gentrigtables.c $(top_srcdir)/configure.ac -+ ./gentrigtables$(BUILD_EXEEXT) > $@ - CLEANFILES += trigtables.c - - # XXX Use Automake's LEX & YACC support --- -1.9.0 - diff --git a/0026-add-BUILD_EXEEXT-support-to-fix-make-clean-on-Window.patch b/0026-add-BUILD_EXEEXT-support-to-fix-make-clean-on-Window.patch new file mode 100644 index 0000000..54f73dc --- /dev/null +++ b/0026-add-BUILD_EXEEXT-support-to-fix-make-clean-on-Window.patch @@ -0,0 +1,174 @@ +From 5ac7afd762d11b4c91d5756222c3abf5862203de Mon Sep 17 00:00:00 2001 +From: Andrey Borzenkov +Date: Sat, 18 Jan 2014 20:41:24 +0400 +Subject: [PATCH 026/125] add BUILD_EXEEXT support to fix make clean on Windows + +Add $(BUILD_EXEEXT) to ensure files are removed. Also add CLEANFILES where +appropriate. +--- + ChangeLog | 7 +++++++ + Makefile.am | 16 ++++++++-------- + Makefile.util.def | 2 +- + configure.ac | 21 ++++++++++++++++----- + grub-core/Makefile.am | 14 ++++++++------ + 5 files changed, 40 insertions(+), 20 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index 5aac7c1..dad2da2 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,5 +1,12 @@ + 2014-01-18 Andrey Borzenkov + ++ * configure.ac: Add support for BUILD_EXEEXT and use it ... ++ * Makefile.am: ... here. ++ * Makefile.util.def: ... and here. ++ * grub-core/Makefile.am: ... and here. ++ ++2014-01-18 Andrey Borzenkov ++ + * include/grub/osdep/hostfile_windows.h: Use _W64 instead of + FILE_OFFSET_BITS to differentiate between native MinGW and Mingw W64. + +diff --git a/Makefile.am b/Makefile.am +index 1bbec0e..aa526f5 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -66,22 +66,22 @@ endif + + starfield_theme_files = $(srcdir)/themes/starfield/blob_w.png $(srcdir)/themes/starfield/boot_menu_c.png $(srcdir)/themes/starfield/boot_menu_e.png $(srcdir)/themes/starfield/boot_menu_ne.png $(srcdir)/themes/starfield/boot_menu_n.png $(srcdir)/themes/starfield/boot_menu_nw.png $(srcdir)/themes/starfield/boot_menu_se.png $(srcdir)/themes/starfield/boot_menu_s.png $(srcdir)/themes/starfield/boot_menu_sw.png $(srcdir)/themes/starfield/boot_menu_w.png $(srcdir)/themes/starfield/slider_c.png $(srcdir)/themes/starfield/slider_n.png $(srcdir)/themes/starfield/slider_s.png $(srcdir)/themes/starfield/starfield.png $(srcdir)/themes/starfield/terminal_box_c.png $(srcdir)/themes/starfield/terminal_box_e.png $(srcdir)/themes/starfield/terminal_box_ne.png $(srcdir)/themes/starfield/terminal_box_n.png $(srcdir)/themes/starfield/terminal_box_nw.png $(srcdir)/themes/starfield/terminal_box_se.png $(srcdir)/themes/starfield/terminal_box_s.png $(srcdir)/themes/starfield/terminal_box_sw.png $(srcdir)/themes/starfield/terminal_box_w.png $(srcdir)/themes/starfield/theme.txt $(srcdir)/themes/starfield/README $(srcdir)/themes/starfield/COPYING.CC-BY-SA-3.0 + +-build-grub-mkfont: util/grub-mkfont.c grub-core/unidata.c grub-core/kern/emu/misc.c util/misc.c ++build-grub-mkfont$(BUILD_EXEEXT): util/grub-mkfont.c grub-core/unidata.c grub-core/kern/emu/misc.c util/misc.c + $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-mkfont\" $^ $(build_freetype_cflags) $(build_freetype_libs) +-CLEANFILES += build-grub-mkfont ++CLEANFILES += build-grub-mkfont$(BUILD_EXEEXT) + +-garbage-gen: util/garbage-gen.c ++garbage-gen$(BUILD_EXEEXT): util/garbage-gen.c + $(BUILD_CC) -o $@ $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) $^ +-CLEANFILES += garbage-gen ++CLEANFILES += garbage-gen$(BUILD_EXEEXT) + EXTRA_DIST += util/garbage-gen.c + +-build-grub-gen-asciih: util/grub-gen-asciih.c ++build-grub-gen-asciih$(BUILD_EXEEXT): util/grub-gen-asciih.c + $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 $^ $(build_freetype_cflags) $(build_freetype_libs) -Wall -Werror +-CLEANFILES += build-grub-gen-asciih ++CLEANFILES += build-grub-gen-asciih$(BUILD_EXEEXT) + +-build-grub-gen-widthspec: util/grub-gen-widthspec.c ++build-grub-gen-widthspec$(BUILD_EXEEXT): util/grub-gen-widthspec.c + $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 $^ $(build_freetype_cflags) $(build_freetype_libs) -Wall -Werror +-CLEANFILES += build-grub-gen-widthspec ++CLEANFILES += build-grub-gen-widthspec$(BUILD_EXEEXT) + + if COND_STARFIELD + starfield_DATA = dejavu_10.pf2 dejavu_12.pf2 dejavu_bold_14.pf2 dejavu_14.pf2 dejavu_16.pf2 $(starfield_theme_files) +diff --git a/Makefile.util.def b/Makefile.util.def +index 3c99be2..83df212 100644 +--- a/Makefile.util.def ++++ b/Makefile.util.def +@@ -708,7 +708,7 @@ script = { + name = grub-fs-tester; + common = tests/util/grub-fs-tester.in; + installdir = noinst; +- dependencies = garbage-gen; ++ dependencies = 'garbage-gen$(BUILD_EXEEXT)'; + }; + + script = { +diff --git a/configure.ac b/configure.ac +index 2e4cf3c..cf3de3b 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -38,7 +38,8 @@ AC_CONFIG_AUX_DIR([build-aux]) + # We don't want -g -O2 by default in CFLAGS + : ${CFLAGS=""} + +-# Checks for host and target systems. ++# Checks for build, host and target systems. ++AC_CANONICAL_BUILD + AC_CANONICAL_HOST + save_program_prefix="${program_prefix}" + AC_CANONICAL_TARGET +@@ -422,6 +423,16 @@ case "$build_os" in + haiku*) BUILD_LIBM= ;; + *) BUILD_LIBM=-lm ;; + esac ++ ++dnl FIXME proper test seems to require too deep dive into Autoconf internals. ++dnl For now just list known platforms that we support. ++ ++case "$build_os" in ++ cygwin*|mingw32*|mingw64*) BUILD_EXEEXT=.exe ;; ++ *) BUILD_EXEEXT= ;; ++esac ++AC_SUBST(BUILD_EXEEXT) ++ + # For gnulib. + gl_INIT + +@@ -765,11 +776,11 @@ if test x"$platform" = xemu ; then + *windows* | *cygwin* | *mingw*) + if test x${target_cpu} = xi386 ; then + grub_cv_target_cc_link_format=-mi386pe; +- TARGET_OBJ2ELF='./build-grub-pe2elf'; ++ TARGET_OBJ2ELF='./build-grub-pe2elf$(BUILD_EXEEXT)'; + fi + if test x${target_cpu} = xx86_64 ; then + grub_cv_target_cc_link_format=-mi386pep; +- TARGET_OBJ2ELF='./build-grub-pep2elf'; ++ TARGET_OBJ2ELF='./build-grub-pep2elf$(BUILD_EXEEXT)'; + fi + TARGET_LDFLAGS="$TARGET_LDFLAGS -Wl,$grub_cv_target_cc_link_format" + ;; +@@ -803,10 +814,10 @@ elif test x"$target_cpu" = xi386 || test x"$target_cpu" = xx86_64; then + fi + TARGET_LDFLAGS="$TARGET_LDFLAGS -Wl,$grub_cv_target_cc_link_format" + if test x"$grub_cv_target_cc_link_format" = x-mi386pe ; then +- TARGET_OBJ2ELF='./build-grub-pe2elf'; ++ TARGET_OBJ2ELF='./build-grub-pe2elf$(BUILD_EXEEXT)'; + fi + if test x"$grub_cv_target_cc_link_format" = x-mi386pep ; then +- TARGET_OBJ2ELF='./build-grub-pep2elf'; ++ TARGET_OBJ2ELF='./build-grub-pep2elf$(BUILD_EXEEXT)'; + fi + fi + +diff --git a/grub-core/Makefile.am b/grub-core/Makefile.am +index 13b7979..826b3dd 100644 +--- a/grub-core/Makefile.am ++++ b/grub-core/Makefile.am +@@ -26,20 +26,22 @@ CFLAGS_LIBRARY += $(CFLAGS_PLATFORM) -fno-builtin + CPPFLAGS_LIBRARY += $(CPPFLAGS_PLATFORM) + CCASFLAGS_LIBRARY += $(CCASFLAGS_PLATFORM) + +-build-grub-pep2elf: $(top_srcdir)/util/grub-pe2elf.c $(top_srcdir)/grub-core/kern/emu/misc.c $(top_srcdir)/util/misc.c ++build-grub-pep2elf$(BUILD_EXEEXT): $(top_srcdir)/util/grub-pe2elf.c $(top_srcdir)/grub-core/kern/emu/misc.c $(top_srcdir)/util/misc.c + $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_BUILD=1 -DGRUB_TARGET_WORDSIZE=64 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-pep2elf\" $^ ++CLEANFILES += build-grub-pep2elf$(BUILD_EXEEXT) + +-build-grub-pe2elf: $(top_srcdir)/util/grub-pe2elf.c $(top_srcdir)/grub-core/kern/emu/misc.c $(top_srcdir)/util/misc.c ++build-grub-pe2elf$(BUILD_EXEEXT): $(top_srcdir)/util/grub-pe2elf.c $(top_srcdir)/grub-core/kern/emu/misc.c $(top_srcdir)/util/misc.c + $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_BUILD=1 -DGRUB_TARGET_WORDSIZE=32 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-pe2elf\" $^ ++CLEANFILES += build-grub-pe2elf$(BUILD_EXEEXT) + + # gentrigtables +-gentrigtables: gentrigtables.c ++gentrigtables$(BUILD_EXEEXT): gentrigtables.c + $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) $< $(BUILD_LIBM) +-CLEANFILES += gentrigtables ++CLEANFILES += gentrigtables$(BUILD_EXEEXT) + + # trigtables.c +-trigtables.c: gentrigtables gentrigtables.c $(top_srcdir)/configure.ac +- ./gentrigtables > $@ ++trigtables.c: gentrigtables$(BUILD_EXEEXT) gentrigtables.c $(top_srcdir)/configure.ac ++ ./gentrigtables$(BUILD_EXEEXT) > $@ + CLEANFILES += trigtables.c + + # XXX Use Automake's LEX & YACC support +-- +1.9.0 + diff --git a/0026-fix-include-loop-on-MinGW-due-to-libintl.h-pulling-s.patch b/0026-fix-include-loop-on-MinGW-due-to-libintl.h-pulling-s.patch deleted file mode 100644 index 39ea1a7..0000000 --- a/0026-fix-include-loop-on-MinGW-due-to-libintl.h-pulling-s.patch +++ /dev/null @@ -1,281 +0,0 @@ -From 925662e61e6becd12efb438d386b5aee45be4ecf Mon Sep 17 00:00:00 2001 -From: Andrey Borzenkov -Date: Sat, 18 Jan 2014 21:22:57 +0400 -Subject: [PATCH 026/103] fix include loop on MinGW due to libintl.h pulling - stdio.h - -In file included from ./include/grub/dl.h:23:0, - from grub-core/lib/libgcrypt-grub/cipher/rfc2268.c:3: -./include/grub/list.h:34:18: warning: conflicting types for 'grub_list_push' [en -abled by default] - void EXPORT_FUNC(grub_list_push) (grub_list_t *head, grub_list_t item); - ^ -./include/grub/symbol.h:68:25: note: in definition of macro 'EXPORT_FUNC' - # define EXPORT_FUNC(x) x - ^ -In file included from ./include/grub/fs.h:30:0, - from ./include/grub/file.h:25, - from ./grub-core/lib/posix_wrap/stdio.h:23, - from c:\mingw\include\libintl.h:314, - from ./include/grub/i18n.h:33, - from ./include/grub/misc.h:27, - from ./include/grub/list.h:25, - from ./include/grub/dl.h:28, - from grub-core/lib/libgcrypt-grub/cipher/rfc2268.c:3: -./include/grub/partition.h:106:3: note: previous implicit declaration of 'grub_l -ist_push' was here - grub_list_push (GRUB_AS_LIST_P (&grub_partition_map_list), - ^ -list.h needs just ATTRIBUTE_ERROR from misc.h; split compiler features -into separate file grub/compiler.h and include it instead. ---- - ChangeLog | 14 +++++++++++ - grub-core/commands/fileXX.c | 1 + - grub-core/efiemu/prepare.c | 1 + - grub-core/loader/i386/xen_file.c | 1 + - grub-core/loader/i386/xen_fileXX.c | 1 + - grub-core/video/capture.c | 1 + - include/grub/command.h | 1 + - include/grub/compiler.h | 51 ++++++++++++++++++++++++++++++++++++++ - include/grub/dl.h | 1 + - include/grub/list.h | 4 +-- - include/grub/misc.h | 29 +--------------------- - include/grub/procfs.h | 1 + - 12 files changed, 76 insertions(+), 30 deletions(-) - create mode 100644 include/grub/compiler.h - -diff --git a/ChangeLog b/ChangeLog -index 8ae23e5..50ac180 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,5 +1,19 @@ - 2014-01-18 Andrey Borzenkov - -+ * include/grub/misc.h: Move macros for compiler features to ... -+ * include/grub/compiler.h: ... new file. -+ * include/grub/list.h: Include instead of . -+ * grub-core/commands/fileXX.c: Include . -+ * grub-core/efiemu/prepare.c: Include . -+ * grub-core/loader/i386/xen_file.c: Include . -+ * grub-core/loader/i386/xen_fileXX.c: Include . -+ * grub-core/video/capture.c: Include . -+ * include/grub/command.h: Include . -+ * include/grub/dl.h: Include . -+ * include/grub/procfs.h: Include . -+ -+2014-01-18 Andrey Borzenkov -+ - * configure.ac: Add support for BUILD_EXEEXT and use it ... - * Makefile.am: ... here. - * Makefile.util.def: ... and here. -diff --git a/grub-core/commands/fileXX.c b/grub-core/commands/fileXX.c -index c9857ff..58e1094 100644 ---- a/grub-core/commands/fileXX.c -+++ b/grub-core/commands/fileXX.c -@@ -18,6 +18,7 @@ - - #include - #include -+#include - - #pragma GCC diagnostic ignored "-Wcast-align" - -diff --git a/grub-core/efiemu/prepare.c b/grub-core/efiemu/prepare.c -index fb1b25d..84c3368 100644 ---- a/grub-core/efiemu/prepare.c -+++ b/grub-core/efiemu/prepare.c -@@ -21,6 +21,7 @@ - #include - #include - #include -+#include - #include - #include - -diff --git a/grub-core/loader/i386/xen_file.c b/grub-core/loader/i386/xen_file.c -index ebbf6aa..ff23235 100644 ---- a/grub-core/loader/i386/xen_file.c -+++ b/grub-core/loader/i386/xen_file.c -@@ -18,6 +18,7 @@ - - #include - #include -+#include - - grub_elf_t - grub_xen_file (grub_file_t file) -diff --git a/grub-core/loader/i386/xen_fileXX.c b/grub-core/loader/i386/xen_fileXX.c -index 6df0015..73a5f90 100644 ---- a/grub-core/loader/i386/xen_fileXX.c -+++ b/grub-core/loader/i386/xen_fileXX.c -@@ -17,6 +17,7 @@ - */ - - #include -+#include - - static grub_err_t - parse_xen_guest (grub_elf_t elf, struct grub_xen_file_info *xi, -diff --git a/grub-core/video/capture.c b/grub-core/video/capture.c -index 67c8edd..4f83c74 100644 ---- a/grub-core/video/capture.c -+++ b/grub-core/video/capture.c -@@ -4,6 +4,7 @@ - #include - #include - #include -+#include - - static struct - { -diff --git a/include/grub/command.h b/include/grub/command.h -index 8705a63..eee4e84 100644 ---- a/include/grub/command.h -+++ b/include/grub/command.h -@@ -22,6 +22,7 @@ - #include - #include - #include -+#include - - typedef enum grub_command_flags - { -diff --git a/include/grub/compiler.h b/include/grub/compiler.h -new file mode 100644 -index 0000000..c9e1d7a ---- /dev/null -+++ b/include/grub/compiler.h -@@ -0,0 +1,51 @@ -+/* compiler.h - macros for various compiler features */ -+/* -+ * GRUB -- GRand Unified Bootloader -+ * Copyright (C) 2002,2003,2005,2006,2007,2008,2009,2010,2014 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 . -+ */ -+ -+#ifndef GRUB_COMPILER_HEADER -+#define GRUB_COMPILER_HEADER 1 -+ -+/* GCC version checking borrowed from glibc. */ -+#if defined(__GNUC__) && defined(__GNUC_MINOR__) -+# define GNUC_PREREQ(maj,min) \ -+ ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) -+#else -+# define GNUC_PREREQ(maj,min) 0 -+#endif -+ -+/* Does this compiler support compile-time error attributes? */ -+#if GNUC_PREREQ(4,3) -+# define ATTRIBUTE_ERROR(msg) \ -+ __attribute__ ((__error__ (msg))) -+#else -+# define ATTRIBUTE_ERROR(msg) __attribute__ ((noreturn)) -+#endif -+ -+#if GNUC_PREREQ(4,4) -+# define GNU_PRINTF gnu_printf -+#else -+# define GNU_PRINTF printf -+#endif -+ -+#if GNUC_PREREQ(3,4) -+# define WARN_UNUSED_RESULT __attribute__ ((warn_unused_result)) -+#else -+# define WARN_UNUSED_RESULT -+#endif -+ -+#endif /* ! GRUB_COMPILER_HEADER */ -diff --git a/include/grub/dl.h b/include/grub/dl.h -index d29a899..9562fa6 100644 ---- a/include/grub/dl.h -+++ b/include/grub/dl.h -@@ -26,6 +26,7 @@ - #include - #include - #include -+#include - #endif - - /* -diff --git a/include/grub/list.h b/include/grub/list.h -index edd20ad..d170ff6 100644 ---- a/include/grub/list.h -+++ b/include/grub/list.h -@@ -21,8 +21,8 @@ - #define GRUB_LIST_HEADER 1 - - #include --#include --#include -+#include -+#include - - struct grub_list - { -diff --git a/include/grub/misc.h b/include/grub/misc.h -index 2cf74b5..c6cd456 100644 ---- a/include/grub/misc.h -+++ b/include/grub/misc.h -@@ -25,34 +25,7 @@ - #include - #include - #include -- --/* GCC version checking borrowed from glibc. */ --#if defined(__GNUC__) && defined(__GNUC_MINOR__) --# define GNUC_PREREQ(maj,min) \ -- ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) --#else --# define GNUC_PREREQ(maj,min) 0 --#endif -- --/* Does this compiler support compile-time error attributes? */ --#if GNUC_PREREQ(4,3) --# define ATTRIBUTE_ERROR(msg) \ -- __attribute__ ((__error__ (msg))) --#else --# define ATTRIBUTE_ERROR(msg) __attribute__ ((noreturn)) --#endif -- --#if GNUC_PREREQ(4,4) --# define GNU_PRINTF gnu_printf --#else --# define GNU_PRINTF printf --#endif -- --#if GNUC_PREREQ(3,4) --# define WARN_UNUSED_RESULT __attribute__ ((warn_unused_result)) --#else --# define WARN_UNUSED_RESULT --#endif -+#include - - #define ALIGN_UP(addr, align) \ - ((addr + (typeof (addr)) align - 1) & ~((typeof (addr)) align - 1)) -diff --git a/include/grub/procfs.h b/include/grub/procfs.h -index d393da7..8cc331d 100644 ---- a/include/grub/procfs.h -+++ b/include/grub/procfs.h -@@ -20,6 +20,7 @@ - #define GRUB_PROCFS_HEADER 1 - - #include -+#include - - struct grub_procfs_entry - { --- -1.9.0 - diff --git a/0027-fix-include-loop-on-MinGW-due-to-libintl.h-pulling-s.patch b/0027-fix-include-loop-on-MinGW-due-to-libintl.h-pulling-s.patch new file mode 100644 index 0000000..8ba4dc3 --- /dev/null +++ b/0027-fix-include-loop-on-MinGW-due-to-libintl.h-pulling-s.patch @@ -0,0 +1,281 @@ +From 09194ac15b3c348cbf147e8ea27b982b57a7a778 Mon Sep 17 00:00:00 2001 +From: Andrey Borzenkov +Date: Sat, 18 Jan 2014 21:22:57 +0400 +Subject: [PATCH 027/125] fix include loop on MinGW due to libintl.h pulling + stdio.h + +In file included from ./include/grub/dl.h:23:0, + from grub-core/lib/libgcrypt-grub/cipher/rfc2268.c:3: +./include/grub/list.h:34:18: warning: conflicting types for 'grub_list_push' [en +abled by default] + void EXPORT_FUNC(grub_list_push) (grub_list_t *head, grub_list_t item); + ^ +./include/grub/symbol.h:68:25: note: in definition of macro 'EXPORT_FUNC' + # define EXPORT_FUNC(x) x + ^ +In file included from ./include/grub/fs.h:30:0, + from ./include/grub/file.h:25, + from ./grub-core/lib/posix_wrap/stdio.h:23, + from c:\mingw\include\libintl.h:314, + from ./include/grub/i18n.h:33, + from ./include/grub/misc.h:27, + from ./include/grub/list.h:25, + from ./include/grub/dl.h:28, + from grub-core/lib/libgcrypt-grub/cipher/rfc2268.c:3: +./include/grub/partition.h:106:3: note: previous implicit declaration of 'grub_l +ist_push' was here + grub_list_push (GRUB_AS_LIST_P (&grub_partition_map_list), + ^ +list.h needs just ATTRIBUTE_ERROR from misc.h; split compiler features +into separate file grub/compiler.h and include it instead. +--- + ChangeLog | 14 +++++++++++ + grub-core/commands/fileXX.c | 1 + + grub-core/efiemu/prepare.c | 1 + + grub-core/loader/i386/xen_file.c | 1 + + grub-core/loader/i386/xen_fileXX.c | 1 + + grub-core/video/capture.c | 1 + + include/grub/command.h | 1 + + include/grub/compiler.h | 51 ++++++++++++++++++++++++++++++++++++++ + include/grub/dl.h | 1 + + include/grub/list.h | 4 +-- + include/grub/misc.h | 29 +--------------------- + include/grub/procfs.h | 1 + + 12 files changed, 76 insertions(+), 30 deletions(-) + create mode 100644 include/grub/compiler.h + +diff --git a/ChangeLog b/ChangeLog +index dad2da2..dad469b 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,5 +1,19 @@ + 2014-01-18 Andrey Borzenkov + ++ * include/grub/misc.h: Move macros for compiler features to ... ++ * include/grub/compiler.h: ... new file. ++ * include/grub/list.h: Include instead of . ++ * grub-core/commands/fileXX.c: Include . ++ * grub-core/efiemu/prepare.c: Include . ++ * grub-core/loader/i386/xen_file.c: Include . ++ * grub-core/loader/i386/xen_fileXX.c: Include . ++ * grub-core/video/capture.c: Include . ++ * include/grub/command.h: Include . ++ * include/grub/dl.h: Include . ++ * include/grub/procfs.h: Include . ++ ++2014-01-18 Andrey Borzenkov ++ + * configure.ac: Add support for BUILD_EXEEXT and use it ... + * Makefile.am: ... here. + * Makefile.util.def: ... and here. +diff --git a/grub-core/commands/fileXX.c b/grub-core/commands/fileXX.c +index c9857ff..58e1094 100644 +--- a/grub-core/commands/fileXX.c ++++ b/grub-core/commands/fileXX.c +@@ -18,6 +18,7 @@ + + #include + #include ++#include + + #pragma GCC diagnostic ignored "-Wcast-align" + +diff --git a/grub-core/efiemu/prepare.c b/grub-core/efiemu/prepare.c +index fb1b25d..84c3368 100644 +--- a/grub-core/efiemu/prepare.c ++++ b/grub-core/efiemu/prepare.c +@@ -21,6 +21,7 @@ + #include + #include + #include ++#include + #include + #include + +diff --git a/grub-core/loader/i386/xen_file.c b/grub-core/loader/i386/xen_file.c +index ebbf6aa..ff23235 100644 +--- a/grub-core/loader/i386/xen_file.c ++++ b/grub-core/loader/i386/xen_file.c +@@ -18,6 +18,7 @@ + + #include + #include ++#include + + grub_elf_t + grub_xen_file (grub_file_t file) +diff --git a/grub-core/loader/i386/xen_fileXX.c b/grub-core/loader/i386/xen_fileXX.c +index 6df0015..73a5f90 100644 +--- a/grub-core/loader/i386/xen_fileXX.c ++++ b/grub-core/loader/i386/xen_fileXX.c +@@ -17,6 +17,7 @@ + */ + + #include ++#include + + static grub_err_t + parse_xen_guest (grub_elf_t elf, struct grub_xen_file_info *xi, +diff --git a/grub-core/video/capture.c b/grub-core/video/capture.c +index 67c8edd..4f83c74 100644 +--- a/grub-core/video/capture.c ++++ b/grub-core/video/capture.c +@@ -4,6 +4,7 @@ + #include + #include + #include ++#include + + static struct + { +diff --git a/include/grub/command.h b/include/grub/command.h +index 8705a63..eee4e84 100644 +--- a/include/grub/command.h ++++ b/include/grub/command.h +@@ -22,6 +22,7 @@ + #include + #include + #include ++#include + + typedef enum grub_command_flags + { +diff --git a/include/grub/compiler.h b/include/grub/compiler.h +new file mode 100644 +index 0000000..c9e1d7a +--- /dev/null ++++ b/include/grub/compiler.h +@@ -0,0 +1,51 @@ ++/* compiler.h - macros for various compiler features */ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2002,2003,2005,2006,2007,2008,2009,2010,2014 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 . ++ */ ++ ++#ifndef GRUB_COMPILER_HEADER ++#define GRUB_COMPILER_HEADER 1 ++ ++/* GCC version checking borrowed from glibc. */ ++#if defined(__GNUC__) && defined(__GNUC_MINOR__) ++# define GNUC_PREREQ(maj,min) \ ++ ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) ++#else ++# define GNUC_PREREQ(maj,min) 0 ++#endif ++ ++/* Does this compiler support compile-time error attributes? */ ++#if GNUC_PREREQ(4,3) ++# define ATTRIBUTE_ERROR(msg) \ ++ __attribute__ ((__error__ (msg))) ++#else ++# define ATTRIBUTE_ERROR(msg) __attribute__ ((noreturn)) ++#endif ++ ++#if GNUC_PREREQ(4,4) ++# define GNU_PRINTF gnu_printf ++#else ++# define GNU_PRINTF printf ++#endif ++ ++#if GNUC_PREREQ(3,4) ++# define WARN_UNUSED_RESULT __attribute__ ((warn_unused_result)) ++#else ++# define WARN_UNUSED_RESULT ++#endif ++ ++#endif /* ! GRUB_COMPILER_HEADER */ +diff --git a/include/grub/dl.h b/include/grub/dl.h +index d29a899..9562fa6 100644 +--- a/include/grub/dl.h ++++ b/include/grub/dl.h +@@ -26,6 +26,7 @@ + #include + #include + #include ++#include + #endif + + /* +diff --git a/include/grub/list.h b/include/grub/list.h +index edd20ad..d170ff6 100644 +--- a/include/grub/list.h ++++ b/include/grub/list.h +@@ -21,8 +21,8 @@ + #define GRUB_LIST_HEADER 1 + + #include +-#include +-#include ++#include ++#include + + struct grub_list + { +diff --git a/include/grub/misc.h b/include/grub/misc.h +index 2cf74b5..c6cd456 100644 +--- a/include/grub/misc.h ++++ b/include/grub/misc.h +@@ -25,34 +25,7 @@ + #include + #include + #include +- +-/* GCC version checking borrowed from glibc. */ +-#if defined(__GNUC__) && defined(__GNUC_MINOR__) +-# define GNUC_PREREQ(maj,min) \ +- ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) +-#else +-# define GNUC_PREREQ(maj,min) 0 +-#endif +- +-/* Does this compiler support compile-time error attributes? */ +-#if GNUC_PREREQ(4,3) +-# define ATTRIBUTE_ERROR(msg) \ +- __attribute__ ((__error__ (msg))) +-#else +-# define ATTRIBUTE_ERROR(msg) __attribute__ ((noreturn)) +-#endif +- +-#if GNUC_PREREQ(4,4) +-# define GNU_PRINTF gnu_printf +-#else +-# define GNU_PRINTF printf +-#endif +- +-#if GNUC_PREREQ(3,4) +-# define WARN_UNUSED_RESULT __attribute__ ((warn_unused_result)) +-#else +-# define WARN_UNUSED_RESULT +-#endif ++#include + + #define ALIGN_UP(addr, align) \ + ((addr + (typeof (addr)) align - 1) & ~((typeof (addr)) align - 1)) +diff --git a/include/grub/procfs.h b/include/grub/procfs.h +index d393da7..8cc331d 100644 +--- a/include/grub/procfs.h ++++ b/include/grub/procfs.h +@@ -20,6 +20,7 @@ + #define GRUB_PROCFS_HEADER 1 + + #include ++#include + + struct grub_procfs_entry + { +-- +1.9.0 + diff --git a/0027-grub-core-commands-macbless.c-Rename-FILE-and-DIR-to.patch b/0027-grub-core-commands-macbless.c-Rename-FILE-and-DIR-to.patch deleted file mode 100644 index d5202a0..0000000 --- a/0027-grub-core-commands-macbless.c-Rename-FILE-and-DIR-to.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 82a8398294fbb8ef767860e27d648df3e44f9b87 Mon Sep 17 00:00:00 2001 -From: Vladimir Serbinenko -Date: Sat, 18 Jan 2014 19:26:40 +0100 -Subject: [PATCH 027/103] * grub-core/commands/macbless.c: Rename FILE - and DIR to avoid conflicts. - - Reported by: Andrey Borzenkov. ---- - ChangeLog | 7 +++++++ - grub-core/commands/macbless.c | 6 +++--- - 2 files changed, 10 insertions(+), 3 deletions(-) - -diff --git a/ChangeLog b/ChangeLog -index 50ac180..75ecd5f 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,10 @@ -+2014-01-18 Vladimir Serbinenko -+ -+ * grub-core/commands/macbless.c: Rename FILE and DIR to avoid -+ conflicts. -+ -+ Reported by: Andrey Borzenkov. -+ - 2014-01-18 Andrey Borzenkov - - * include/grub/misc.h: Move macros for compiler features to ... -diff --git a/grub-core/commands/macbless.c b/grub-core/commands/macbless.c -index c521083..4724edd 100644 ---- a/grub-core/commands/macbless.c -+++ b/grub-core/commands/macbless.c -@@ -37,7 +37,7 @@ struct find_node_context - grub_uint64_t inode_found; - char *dirname; - enum -- { NONE, FILE, DIR } found; -+ { FOUND_NONE, FOUND_FILE, FOUND_DIR } found; - }; - - static int -@@ -53,7 +53,7 @@ find_inode (const char *filename, - && grub_strcasecmp (ctx->dirname, filename) == 0))) - { - ctx->inode_found = info->inode; -- ctx->found = info->dir ? DIR : FILE; -+ ctx->found = info->dir ? FOUND_DIR : FOUND_FILE; - } - return 0; - } -@@ -175,7 +175,7 @@ grub_mac_bless_file (grub_device_t dev, const char *path_in, int intel) - grub_free (path); - - return grub_mac_bless_inode (dev, (grub_uint32_t) ctx.inode_found, -- (ctx.found == DIR), intel); -+ (ctx.found == FOUND_DIR), intel); - } - - static grub_err_t --- -1.9.0 - diff --git a/0028-Makefile.util.def-Link-grub-ofpathname-with-zfs-libs.patch b/0028-Makefile.util.def-Link-grub-ofpathname-with-zfs-libs.patch deleted file mode 100644 index 9eda460..0000000 --- a/0028-Makefile.util.def-Link-grub-ofpathname-with-zfs-libs.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 5fd5c957af6bce9d59324a54e94c879285bd2897 Mon Sep 17 00:00:00 2001 -From: Mike Gilbert -Date: Sat, 18 Jan 2014 19:41:15 +0100 -Subject: [PATCH 028/103] * Makefile.util.def: Link grub-ofpathname with - zfs libs. - ---- - ChangeLog | 4 ++++ - Makefile.util.def | 2 +- - 2 files changed, 5 insertions(+), 1 deletion(-) - -diff --git a/ChangeLog b/ChangeLog -index 75ecd5f..40ffd93 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,7 @@ -+2014-01-01 Mike Gilbert -+ -+ * Makefile.util.def: Link grub-ofpathname with zfs libs. -+ - 2014-01-18 Vladimir Serbinenko - - * grub-core/commands/macbless.c: Rename FILE and DIR to avoid -diff --git a/Makefile.util.def b/Makefile.util.def -index 83df212..a286a89 100644 ---- a/Makefile.util.def -+++ b/Makefile.util.def -@@ -384,7 +384,7 @@ program = { - ldadd = libgrubgcry.a; - ldadd = libgrubkern.a; - ldadd = grub-core/gnulib/libgnu.a; -- ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBGEOM)'; -+ ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)'; - }; - - program = { --- -1.9.0 - diff --git a/0028-grub-core-commands-macbless.c-Rename-FILE-and-DIR-to.patch b/0028-grub-core-commands-macbless.c-Rename-FILE-and-DIR-to.patch new file mode 100644 index 0000000..24777e9 --- /dev/null +++ b/0028-grub-core-commands-macbless.c-Rename-FILE-and-DIR-to.patch @@ -0,0 +1,61 @@ +From 9cbb9fc3d79e449affe7ed5e104aa828b72ad2cd Mon Sep 17 00:00:00 2001 +From: Vladimir Serbinenko +Date: Sat, 18 Jan 2014 19:26:40 +0100 +Subject: [PATCH 028/125] * grub-core/commands/macbless.c: Rename FILE + and DIR to avoid conflicts. + + Reported by: Andrey Borzenkov. +--- + ChangeLog | 7 +++++++ + grub-core/commands/macbless.c | 6 +++--- + 2 files changed, 10 insertions(+), 3 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index dad469b..9d1a3f0 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,10 @@ ++2014-01-18 Vladimir Serbinenko ++ ++ * grub-core/commands/macbless.c: Rename FILE and DIR to avoid ++ conflicts. ++ ++ Reported by: Andrey Borzenkov. ++ + 2014-01-18 Andrey Borzenkov + + * include/grub/misc.h: Move macros for compiler features to ... +diff --git a/grub-core/commands/macbless.c b/grub-core/commands/macbless.c +index c521083..4724edd 100644 +--- a/grub-core/commands/macbless.c ++++ b/grub-core/commands/macbless.c +@@ -37,7 +37,7 @@ struct find_node_context + grub_uint64_t inode_found; + char *dirname; + enum +- { NONE, FILE, DIR } found; ++ { FOUND_NONE, FOUND_FILE, FOUND_DIR } found; + }; + + static int +@@ -53,7 +53,7 @@ find_inode (const char *filename, + && grub_strcasecmp (ctx->dirname, filename) == 0))) + { + ctx->inode_found = info->inode; +- ctx->found = info->dir ? DIR : FILE; ++ ctx->found = info->dir ? FOUND_DIR : FOUND_FILE; + } + return 0; + } +@@ -175,7 +175,7 @@ grub_mac_bless_file (grub_device_t dev, const char *path_in, int intel) + grub_free (path); + + return grub_mac_bless_inode (dev, (grub_uint32_t) ctx.inode_found, +- (ctx.found == DIR), intel); ++ (ctx.found == FOUND_DIR), intel); + } + + static grub_err_t +-- +1.9.0 + diff --git a/0029-Makefile.am-default_payload.elf-Add-modules.patch b/0029-Makefile.am-default_payload.elf-Add-modules.patch deleted file mode 100644 index 6b42bf3..0000000 --- a/0029-Makefile.am-default_payload.elf-Add-modules.patch +++ /dev/null @@ -1,42 +0,0 @@ -From e7bf7f69fa55a08430efcd81472daf253fd1b7f3 Mon Sep 17 00:00:00 2001 -From: Vladimir Serbinenko -Date: Sat, 18 Jan 2014 19:43:19 +0100 -Subject: [PATCH 029/103] * Makefile.am (default_payload.elf): Add - modules multiboot cbmemc linux16 gzio echo help. - ---- - ChangeLog | 7 ++++++- - Makefile.am | 2 +- - 2 files changed, 7 insertions(+), 2 deletions(-) - -diff --git a/ChangeLog b/ChangeLog -index 40ffd93..23fa27e 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,4 +1,9 @@ --2014-01-01 Mike Gilbert -+2014-01-18 Vladimir Serbinenko -+ -+ * Makefile.am (default_payload.elf): Add modules -+ multiboot cbmemc linux16 gzio echo help. -+ -+2014-01-18 Mike Gilbert - - * Makefile.util.def: Link grub-ofpathname with zfs libs. - -diff --git a/Makefile.am b/Makefile.am -index aa526f5..97c062d 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -399,7 +399,7 @@ bootcheck: $(BOOTCHECKS) - - if COND_i386_coreboot - default_payload.elf: grub-mkstandalone grub-mkimage -- pkgdatadir=. ./grub-mkstandalone --grub-mkimage=./grub-mkimage -O i386-coreboot -o $@ --modules='ahci pata ehci uhci ohci usb_keyboard usbms part_msdos xfs ext2 fat at_keyboard part_gpt usbserial_usbdebug cbfs' --install-modules='ls linux search configfile normal cbtime cbls memrw iorw minicmd lsmmap lspci halt reboot hexdump pcidump regexp setpci lsacpi chain test serial' --fonts= --themes= --locales= -d grub-core/ /boot/grub/grub.cfg=$(srcdir)/coreboot.cfg -+ pkgdatadir=. ./grub-mkstandalone --grub-mkimage=./grub-mkimage -O i386-coreboot -o $@ --modules='ahci pata ehci uhci ohci usb_keyboard usbms part_msdos xfs ext2 fat at_keyboard part_gpt usbserial_usbdebug cbfs' --install-modules='ls linux search configfile normal cbtime cbls memrw iorw minicmd lsmmap lspci halt reboot hexdump pcidump regexp setpci lsacpi chain test serial multiboot cbmemc linux16 gzio echo help' --fonts= --themes= --locales= -d grub-core/ /boot/grub/grub.cfg=$(srcdir)/coreboot.cfg - endif - - windowsdir=$(top_builddir)/$(PACKAGE)-$(VERSION)-for-windows --- -1.9.0 - diff --git a/0029-Makefile.util.def-Link-grub-ofpathname-with-zfs-libs.patch b/0029-Makefile.util.def-Link-grub-ofpathname-with-zfs-libs.patch new file mode 100644 index 0000000..fa05502 --- /dev/null +++ b/0029-Makefile.util.def-Link-grub-ofpathname-with-zfs-libs.patch @@ -0,0 +1,39 @@ +From 6c3fa2da4fd22c3ebda0c6cf69f97d578c04e704 Mon Sep 17 00:00:00 2001 +From: Mike Gilbert +Date: Sat, 18 Jan 2014 19:41:15 +0100 +Subject: [PATCH 029/125] * Makefile.util.def: Link grub-ofpathname with + zfs libs. + +--- + ChangeLog | 4 ++++ + Makefile.util.def | 2 +- + 2 files changed, 5 insertions(+), 1 deletion(-) + +diff --git a/ChangeLog b/ChangeLog +index 9d1a3f0..edceb66 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,7 @@ ++2014-01-01 Mike Gilbert ++ ++ * Makefile.util.def: Link grub-ofpathname with zfs libs. ++ + 2014-01-18 Vladimir Serbinenko + + * grub-core/commands/macbless.c: Rename FILE and DIR to avoid +diff --git a/Makefile.util.def b/Makefile.util.def +index 83df212..a286a89 100644 +--- a/Makefile.util.def ++++ b/Makefile.util.def +@@ -384,7 +384,7 @@ program = { + ldadd = libgrubgcry.a; + ldadd = libgrubkern.a; + ldadd = grub-core/gnulib/libgnu.a; +- ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBGEOM)'; ++ ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)'; + }; + + program = { +-- +1.9.0 + diff --git a/0030-Makefile.am-default_payload.elf-Add-modules.patch b/0030-Makefile.am-default_payload.elf-Add-modules.patch new file mode 100644 index 0000000..73a5e73 --- /dev/null +++ b/0030-Makefile.am-default_payload.elf-Add-modules.patch @@ -0,0 +1,42 @@ +From 3f6bd432acbf2244e6f4b83dd3a259392b10afb6 Mon Sep 17 00:00:00 2001 +From: Vladimir Serbinenko +Date: Sat, 18 Jan 2014 19:43:19 +0100 +Subject: [PATCH 030/125] * Makefile.am (default_payload.elf): Add + modules multiboot cbmemc linux16 gzio echo help. + +--- + ChangeLog | 7 ++++++- + Makefile.am | 2 +- + 2 files changed, 7 insertions(+), 2 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index edceb66..cff9386 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,4 +1,9 @@ +-2014-01-01 Mike Gilbert ++2014-01-18 Vladimir Serbinenko ++ ++ * Makefile.am (default_payload.elf): Add modules ++ multiboot cbmemc linux16 gzio echo help. ++ ++2014-01-18 Mike Gilbert + + * Makefile.util.def: Link grub-ofpathname with zfs libs. + +diff --git a/Makefile.am b/Makefile.am +index aa526f5..97c062d 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -399,7 +399,7 @@ bootcheck: $(BOOTCHECKS) + + if COND_i386_coreboot + default_payload.elf: grub-mkstandalone grub-mkimage +- pkgdatadir=. ./grub-mkstandalone --grub-mkimage=./grub-mkimage -O i386-coreboot -o $@ --modules='ahci pata ehci uhci ohci usb_keyboard usbms part_msdos xfs ext2 fat at_keyboard part_gpt usbserial_usbdebug cbfs' --install-modules='ls linux search configfile normal cbtime cbls memrw iorw minicmd lsmmap lspci halt reboot hexdump pcidump regexp setpci lsacpi chain test serial' --fonts= --themes= --locales= -d grub-core/ /boot/grub/grub.cfg=$(srcdir)/coreboot.cfg ++ pkgdatadir=. ./grub-mkstandalone --grub-mkimage=./grub-mkimage -O i386-coreboot -o $@ --modules='ahci pata ehci uhci ohci usb_keyboard usbms part_msdos xfs ext2 fat at_keyboard part_gpt usbserial_usbdebug cbfs' --install-modules='ls linux search configfile normal cbtime cbls memrw iorw minicmd lsmmap lspci halt reboot hexdump pcidump regexp setpci lsacpi chain test serial multiboot cbmemc linux16 gzio echo help' --fonts= --themes= --locales= -d grub-core/ /boot/grub/grub.cfg=$(srcdir)/coreboot.cfg + endif + + windowsdir=$(top_builddir)/$(PACKAGE)-$(VERSION)-for-windows +-- +1.9.0 + diff --git a/0030-fix-removal-of-cpu-machine-links-on-mingw-msys.patch b/0030-fix-removal-of-cpu-machine-links-on-mingw-msys.patch deleted file mode 100644 index 74d976e..0000000 --- a/0030-fix-removal-of-cpu-machine-links-on-mingw-msys.patch +++ /dev/null @@ -1,55 +0,0 @@ -From bad3b8b7be801e2213955727277f55d88325e714 Mon Sep 17 00:00:00 2001 -From: Andrey Borzenkov -Date: Sat, 18 Jan 2014 22:48:04 +0400 -Subject: [PATCH 030/103] fix removal of {cpu,machine} links on mingw/msys - -At least on Windows 2003 using "ln -s dir1 dir2" in msys shell succeeds, -but results in what looks like hard link. Subsequent "rm -f dir2" (e.g. -during second config.status invocation) fails. Check that we also can -remove link to directory. - -Make it more clear in message that we are checking "ln -s". ---- - ChangeLog | 5 +++++ - acinclude.m4 | 6 +++--- - 2 files changed, 8 insertions(+), 3 deletions(-) - -diff --git a/ChangeLog b/ChangeLog -index 23fa27e..58ae4f5 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,8 @@ -+2014-01-18 Andrey Borzenkov -+ -+ * acinclude.m4 (grub_CHECK_LINK_DIR): Check that we can also remove -+ symbolic link to directory. It fails in Msys shell on Windows 2003. -+ - 2014-01-18 Vladimir Serbinenko - - * Makefile.am (default_payload.elf): Add modules -diff --git a/acinclude.m4 b/acinclude.m4 -index 32d5477..b2bb88d 100644 ---- a/acinclude.m4 -+++ b/acinclude.m4 -@@ -418,15 +418,15 @@ else - [fi] - ]) - --dnl Check if ln can handle directories properly (mingw). -+dnl Check if ln -s can handle directories properly (mingw). - AC_DEFUN([grub_CHECK_LINK_DIR],[ --AC_MSG_CHECKING([whether ln can handle directories properly]) -+AC_MSG_CHECKING([whether ln -s can handle directories properly]) - [mkdir testdir 2>/dev/null - case $srcdir in - [\\/$]* | ?:[\\/]* ) reldir=$srcdir/include/grub/util ;; - *) reldir=../$srcdir/include/grub/util ;; - esac --if ln -s $reldir testdir/util 2>/dev/null ; then] -+if ln -s $reldir testdir/util 2>/dev/null && rm -f testdir/util 2>/dev/null ; then] - AC_MSG_RESULT([yes]) - [link_dir=yes - else --- -1.9.0 - diff --git a/0031-fix-removal-of-cpu-machine-links-on-mingw-msys.patch b/0031-fix-removal-of-cpu-machine-links-on-mingw-msys.patch new file mode 100644 index 0000000..7714277 --- /dev/null +++ b/0031-fix-removal-of-cpu-machine-links-on-mingw-msys.patch @@ -0,0 +1,55 @@ +From d0cf0d7dcd4813a168d2bd94ec77ee0ae8ff860e Mon Sep 17 00:00:00 2001 +From: Andrey Borzenkov +Date: Sat, 18 Jan 2014 22:48:04 +0400 +Subject: [PATCH 031/125] fix removal of {cpu,machine} links on mingw/msys + +At least on Windows 2003 using "ln -s dir1 dir2" in msys shell succeeds, +but results in what looks like hard link. Subsequent "rm -f dir2" (e.g. +during second config.status invocation) fails. Check that we also can +remove link to directory. + +Make it more clear in message that we are checking "ln -s". +--- + ChangeLog | 5 +++++ + acinclude.m4 | 6 +++--- + 2 files changed, 8 insertions(+), 3 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index cff9386..c3bfa9f 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,8 @@ ++2014-01-18 Andrey Borzenkov ++ ++ * acinclude.m4 (grub_CHECK_LINK_DIR): Check that we can also remove ++ symbolic link to directory. It fails in Msys shell on Windows 2003. ++ + 2014-01-18 Vladimir Serbinenko + + * Makefile.am (default_payload.elf): Add modules +diff --git a/acinclude.m4 b/acinclude.m4 +index 32d5477..b2bb88d 100644 +--- a/acinclude.m4 ++++ b/acinclude.m4 +@@ -418,15 +418,15 @@ else + [fi] + ]) + +-dnl Check if ln can handle directories properly (mingw). ++dnl Check if ln -s can handle directories properly (mingw). + AC_DEFUN([grub_CHECK_LINK_DIR],[ +-AC_MSG_CHECKING([whether ln can handle directories properly]) ++AC_MSG_CHECKING([whether ln -s can handle directories properly]) + [mkdir testdir 2>/dev/null + case $srcdir in + [\\/$]* | ?:[\\/]* ) reldir=$srcdir/include/grub/util ;; + *) reldir=../$srcdir/include/grub/util ;; + esac +-if ln -s $reldir testdir/util 2>/dev/null ; then] ++if ln -s $reldir testdir/util 2>/dev/null && rm -f testdir/util 2>/dev/null ; then] + AC_MSG_RESULT([yes]) + [link_dir=yes + else +-- +1.9.0 + diff --git a/0031-grub-core-normal-main.c-read_config_file-Buffer-conf.patch b/0031-grub-core-normal-main.c-read_config_file-Buffer-conf.patch deleted file mode 100644 index 2c529cc..0000000 --- a/0031-grub-core-normal-main.c-read_config_file-Buffer-conf.patch +++ /dev/null @@ -1,68 +0,0 @@ -From 1e0b6198696c7ba23945468d81dff7a8ba28c361 Mon Sep 17 00:00:00 2001 -From: Vladimir Serbinenko -Date: Sat, 18 Jan 2014 19:54:09 +0100 -Subject: [PATCH 031/103] * grub-core/normal/main.c (read_config_file): - Buffer config file. Reduces boot time. - ---- - ChangeLog | 5 +++++ - grub-core/normal/main.c | 14 +++++++++++--- - 2 files changed, 16 insertions(+), 3 deletions(-) - -diff --git a/ChangeLog b/ChangeLog -index 58ae4f5..0609420 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,8 @@ -+2014-01-18 Vladimir Serbinenko -+ -+ * grub-core/normal/main.c (read_config_file): Buffer config file. -+ Reduces boot time. -+ - 2014-01-18 Andrey Borzenkov - - * acinclude.m4 (grub_CHECK_LINK_DIR): Check that we can also remove -diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c -index c36663f..3a926fc 100644 ---- a/grub-core/normal/main.c -+++ b/grub-core/normal/main.c -@@ -32,6 +32,7 @@ - #include - #include - #include -+#include - - GRUB_MOD_LICENSE ("GPLv3+"); - -@@ -104,7 +105,7 @@ read_config_file_getline (char **line, int cont __attribute__ ((unused)), - static grub_menu_t - read_config_file (const char *config) - { -- grub_file_t file; -+ grub_file_t rawfile, file; - char *old_file = 0, *old_dir = 0; - char *config_dir, *ptr = 0; - const char *ctmp; -@@ -122,10 +123,17 @@ read_config_file (const char *config) - } - - /* Try to open the config file. */ -- file = grub_file_open (config); -- if (! file) -+ rawfile = grub_file_open (config); -+ if (! rawfile) - return 0; - -+ file = grub_bufio_open (rawfile, 0); -+ if (! file) -+ { -+ grub_file_close (file); -+ return 0; -+ } -+ - ctmp = grub_env_get ("config_file"); - if (ctmp) - old_file = grub_strdup (ctmp); --- -1.9.0 - diff --git a/0032-grub-core-normal-main.c-read_config_file-Buffer-conf.patch b/0032-grub-core-normal-main.c-read_config_file-Buffer-conf.patch new file mode 100644 index 0000000..440afe6 --- /dev/null +++ b/0032-grub-core-normal-main.c-read_config_file-Buffer-conf.patch @@ -0,0 +1,68 @@ +From 221f6e1ac22f66881276d4cb012d588ecfb17e47 Mon Sep 17 00:00:00 2001 +From: Vladimir Serbinenko +Date: Sat, 18 Jan 2014 19:54:09 +0100 +Subject: [PATCH 032/125] * grub-core/normal/main.c (read_config_file): + Buffer config file. Reduces boot time. + +--- + ChangeLog | 5 +++++ + grub-core/normal/main.c | 14 +++++++++++--- + 2 files changed, 16 insertions(+), 3 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index c3bfa9f..c84f7e7 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,8 @@ ++2014-01-18 Vladimir Serbinenko ++ ++ * grub-core/normal/main.c (read_config_file): Buffer config file. ++ Reduces boot time. ++ + 2014-01-18 Andrey Borzenkov + + * acinclude.m4 (grub_CHECK_LINK_DIR): Check that we can also remove +diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c +index c36663f..3a926fc 100644 +--- a/grub-core/normal/main.c ++++ b/grub-core/normal/main.c +@@ -32,6 +32,7 @@ + #include + #include + #include ++#include + + GRUB_MOD_LICENSE ("GPLv3+"); + +@@ -104,7 +105,7 @@ read_config_file_getline (char **line, int cont __attribute__ ((unused)), + static grub_menu_t + read_config_file (const char *config) + { +- grub_file_t file; ++ grub_file_t rawfile, file; + char *old_file = 0, *old_dir = 0; + char *config_dir, *ptr = 0; + const char *ctmp; +@@ -122,10 +123,17 @@ read_config_file (const char *config) + } + + /* Try to open the config file. */ +- file = grub_file_open (config); +- if (! file) ++ rawfile = grub_file_open (config); ++ if (! rawfile) + return 0; + ++ file = grub_bufio_open (rawfile, 0); ++ if (! file) ++ { ++ grub_file_close (file); ++ return 0; ++ } ++ + ctmp = grub_env_get ("config_file"); + if (ctmp) + old_file = grub_strdup (ctmp); +-- +1.9.0 + diff --git a/0032-util-grub-install.c-Fix-a-typo.patch b/0032-util-grub-install.c-Fix-a-typo.patch deleted file mode 100644 index 80345c2..0000000 --- a/0032-util-grub-install.c-Fix-a-typo.patch +++ /dev/null @@ -1,40 +0,0 @@ -From caa0ecbe148f596f021967fc4ef02cb4f6a02852 Mon Sep 17 00:00:00 2001 -From: Vladimir Serbinenko -Date: Sat, 18 Jan 2014 20:02:51 +0100 -Subject: [PATCH 032/103] * util/grub-install.c: Fix a typo. - ---- - ChangeLog | 4 ++++ - util/grub-install.c | 2 +- - 2 files changed, 5 insertions(+), 1 deletion(-) - -diff --git a/ChangeLog b/ChangeLog -index 0609420..dc6df34 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,5 +1,9 @@ - 2014-01-18 Vladimir Serbinenko - -+ * util/grub-install.c: Fix a typo. -+ -+2014-01-18 Vladimir Serbinenko -+ - * grub-core/normal/main.c (read_config_file): Buffer config file. - Reduces boot time. - -diff --git a/util/grub-install.c b/util/grub-install.c -index 4608b80..5903f34 100644 ---- a/util/grub-install.c -+++ b/util/grub-install.c -@@ -1259,7 +1259,7 @@ main (int argc, char *argv[]) - - if (!config.is_cryptodisk_enabled && have_cryptodisk) - grub_util_error (_("attempt to install to encrypted disk without cryptodisk enabled. " -- "Set `%s' in file `%s'."), "GRUB_ENABLE_CRYPTODISK=1", -+ "Set `%s' in file `%s'."), "GRUB_ENABLE_CRYPTODISK=y", - grub_util_get_config_filename ()); - - if (disk_module && grub_strcmp (disk_module, "ata") == 0) --- -1.9.0 - diff --git a/0033-use-MODULE_FILES-for-genemuinit-instead-of-MOD_FILES.patch b/0033-use-MODULE_FILES-for-genemuinit-instead-of-MOD_FILES.patch deleted file mode 100644 index 8347a02..0000000 --- a/0033-use-MODULE_FILES-for-genemuinit-instead-of-MOD_FILES.patch +++ /dev/null @@ -1,91 +0,0 @@ -From 656469fae69a5b7c6ddaaef717433b101c60e8c3 Mon Sep 17 00:00:00 2001 -From: Andrey Borzenkov -Date: Sat, 18 Jan 2014 23:15:40 +0400 -Subject: [PATCH 033/103] use MODULE_FILES for genemuinit* instead of MOD_FILES - -MinGW native nm does not support ELF binaries. ---- - ChangeLog | 8 ++++++++ - grub-core/Makefile.am | 8 ++++---- - grub-core/genemuinit.sh | 4 ++-- - grub-core/genemuinitheader.sh | 4 ++-- - 4 files changed, 16 insertions(+), 8 deletions(-) - -diff --git a/ChangeLog b/ChangeLog -index dc6df34..9073b1e 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,11 @@ -+2014-01-18 Andrey Borzenkov -+ -+ * grub-core/Makefile.am: Build grub_emu_init.[ch] from MODULE_FILES -+ instead of MOD_FILES. -+ * grub-core/genemuinit.sh: Simplify stripping of suffix so it works -+ both with and without .exe. -+ * grub-core/genemuinitheader.sh: Same. -+ - 2014-01-18 Vladimir Serbinenko - - * util/grub-install.c: Fix a typo. -diff --git a/grub-core/Makefile.am b/grub-core/Makefile.am -index 826b3dd..5c087c8 100644 ---- a/grub-core/Makefile.am -+++ b/grub-core/Makefile.am -@@ -294,12 +294,12 @@ grub_emu-grub_emu_init.$(OBJEXT):grub_emu_init.h - kern/emu/grub_emu_dyn-main.$(OBJEXT):grub_emu_init.h - grub_emu_dyn-grub_emu_init.$(OBJEXT):grub_emu_init.h - --grub_emu_init.h: genemuinitheader.sh $(MOD_FILES) -- rm -f $@; echo $(MOD_FILES) | sh $(srcdir)/genemuinitheader.sh $(TARGET_NM) > $@ -+grub_emu_init.h: genemuinitheader.sh $(MODULE_FILES) -+ rm -f $@; echo $(MODULE_FILES) | sh $(srcdir)/genemuinitheader.sh $(TARGET_NM) > $@ - CLEANFILES += grub_emu_init.h - --grub_emu_init.c: grub_emu_init.h genemuinit.sh $(MOD_FILES) -- rm -f $@; echo $(MOD_FILES) | sh $(srcdir)/genemuinit.sh $(TARGET_NM) > $@ -+grub_emu_init.c: grub_emu_init.h genemuinit.sh $(MODULE_FILES) -+ rm -f $@; echo $(MODULE_FILES) | sh $(srcdir)/genemuinit.sh $(TARGET_NM) > $@ - CLEANFILES += grub_emu_init.c - endif - -diff --git a/grub-core/genemuinit.sh b/grub-core/genemuinit.sh -index 45c15ec..8c6bb1c 100644 ---- a/grub-core/genemuinit.sh -+++ b/grub-core/genemuinit.sh -@@ -47,7 +47,7 @@ EOF - read mods - for line in $mods; do - if ${nm} --defined-only -P -p ${line} | grep grub_mod_init > /dev/null; then -- echo "grub_${line}_init ();" | sed 's,\.mod,,g;' -+ echo "grub_${line%%.*}_init ();" - fi - done - -@@ -63,7 +63,7 @@ EOF - - for line in $mods; do - if ${nm} --defined-only -P -p ${line} | grep grub_mod_fini > /dev/null; then -- echo "grub_${line}_fini ();" | sed 's,\.mod,,g;' -+ echo "grub_${line%%.*}_fini ();" - fi - done - -diff --git a/grub-core/genemuinitheader.sh b/grub-core/genemuinitheader.sh -index 6b83f59..a99a15d 100644 ---- a/grub-core/genemuinitheader.sh -+++ b/grub-core/genemuinitheader.sh -@@ -44,9 +44,9 @@ EOF - read mods - for line in $mods; do - if ${nm} --defined-only -P -p ${line} | grep grub_mod_init > /dev/null; then -- echo "void grub_${line}_init (void);" | sed 's,\.mod,,g;' -+ echo "void grub_${line%%.*}_init (void);" - fi - if ${nm} --defined-only -P -p ${line} | grep grub_mod_fini > /dev/null; then -- echo "void grub_${line}_fini (void);" | sed 's,\.mod,,g;' -+ echo "void grub_${line%%.*}_fini (void);" - fi - done --- -1.9.0 - diff --git a/0033-util-grub-install.c-Fix-a-typo.patch b/0033-util-grub-install.c-Fix-a-typo.patch new file mode 100644 index 0000000..1c25056 --- /dev/null +++ b/0033-util-grub-install.c-Fix-a-typo.patch @@ -0,0 +1,40 @@ +From d353b169aa6b2a9cd03d0c2987da7da059aa6f99 Mon Sep 17 00:00:00 2001 +From: Vladimir Serbinenko +Date: Sat, 18 Jan 2014 20:02:51 +0100 +Subject: [PATCH 033/125] * util/grub-install.c: Fix a typo. + +--- + ChangeLog | 4 ++++ + util/grub-install.c | 2 +- + 2 files changed, 5 insertions(+), 1 deletion(-) + +diff --git a/ChangeLog b/ChangeLog +index c84f7e7..9360345 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,5 +1,9 @@ + 2014-01-18 Vladimir Serbinenko + ++ * util/grub-install.c: Fix a typo. ++ ++2014-01-18 Vladimir Serbinenko ++ + * grub-core/normal/main.c (read_config_file): Buffer config file. + Reduces boot time. + +diff --git a/util/grub-install.c b/util/grub-install.c +index 4608b80..5903f34 100644 +--- a/util/grub-install.c ++++ b/util/grub-install.c +@@ -1259,7 +1259,7 @@ main (int argc, char *argv[]) + + if (!config.is_cryptodisk_enabled && have_cryptodisk) + grub_util_error (_("attempt to install to encrypted disk without cryptodisk enabled. " +- "Set `%s' in file `%s'."), "GRUB_ENABLE_CRYPTODISK=1", ++ "Set `%s' in file `%s'."), "GRUB_ENABLE_CRYPTODISK=y", + grub_util_get_config_filename ()); + + if (disk_module && grub_strcmp (disk_module, "ata") == 0) +-- +1.9.0 + diff --git a/0034-Ignore-EPERM-when-modifying-kern.geom.debugflags.patch b/0034-Ignore-EPERM-when-modifying-kern.geom.debugflags.patch deleted file mode 100644 index 988e5e0..0000000 --- a/0034-Ignore-EPERM-when-modifying-kern.geom.debugflags.patch +++ /dev/null @@ -1,58 +0,0 @@ -From aa4a525fe853594ed566b2bafa7b8bc101c78a88 Mon Sep 17 00:00:00 2001 -From: Colin Watson -Date: Fri, 17 Jan 2014 02:28:46 +0000 -Subject: [PATCH 034/103] Ignore EPERM when modifying kern.geom.debugflags - -Many tests fail when run as a non-root user on FreeBSD. The failures -all amount to an inability to open files using grub_util_fd_open, -because we cannot set the kern.geom.debugflags sysctl. This sysctl is -indeed important to allow us to do such things as installing GRUB to the -MBR, but if we need to do that and can't then we will get an error -later. Enforcing it here is unnecessary and prevents otherwise -perfectly reasonable operations. ---- - ChangeLog | 7 +++++++ - grub-core/osdep/freebsd/hostdisk.c | 12 ++++++++++-- - 2 files changed, 17 insertions(+), 2 deletions(-) - -diff --git a/ChangeLog b/ChangeLog -index 9073b1e..a7aee43 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,10 @@ -+2014-01-19 Colin Watson -+ -+ * grub-core/osdep/freebsd/hostdisk.c (grub_util_fd_open): Ignore -+ EPERM when modifying kern.geom.debugflags. It is only a problem for -+ such things as installing GRUB to the MBR, in which case there'll be -+ an error later anyway, not for opening files during tests. -+ - 2014-01-18 Andrey Borzenkov - - * grub-core/Makefile.am: Build grub_emu_init.[ch] from MODULE_FILES -diff --git a/grub-core/osdep/freebsd/hostdisk.c b/grub-core/osdep/freebsd/hostdisk.c -index eb202dc..6145d07 100644 ---- a/grub-core/osdep/freebsd/hostdisk.c -+++ b/grub-core/osdep/freebsd/hostdisk.c -@@ -102,8 +102,16 @@ grub_util_fd_open (const char *os_dev, int flags) - if (! (sysctl_oldflags & 0x10) - && sysctlbyname ("kern.geom.debugflags", NULL , 0, &sysctl_flags, sysctl_size)) - { -- grub_error (GRUB_ERR_BAD_DEVICE, "cannot set flags of sysctl kern.geom.debugflags"); -- return GRUB_UTIL_FD_INVALID; -+ if (errno == EPERM) -+ /* Running as an unprivileged user; don't worry about restoring -+ flags, although if we try to write to anything interesting such -+ as the MBR then we may fail later. */ -+ sysctl_oldflags = 0x10; -+ else -+ { -+ grub_error (GRUB_ERR_BAD_DEVICE, "cannot set flags of sysctl kern.geom.debugflags"); -+ return GRUB_UTIL_FD_INVALID; -+ } - } - - ret = open (os_dev, flags, S_IROTH | S_IRGRP | S_IRUSR | S_IWUSR); --- -1.9.0 - diff --git a/0034-use-MODULE_FILES-for-genemuinit-instead-of-MOD_FILES.patch b/0034-use-MODULE_FILES-for-genemuinit-instead-of-MOD_FILES.patch new file mode 100644 index 0000000..447ccbf --- /dev/null +++ b/0034-use-MODULE_FILES-for-genemuinit-instead-of-MOD_FILES.patch @@ -0,0 +1,91 @@ +From 85cc4b1abfed85fd8504da4acc391d5936de2812 Mon Sep 17 00:00:00 2001 +From: Andrey Borzenkov +Date: Sat, 18 Jan 2014 23:15:40 +0400 +Subject: [PATCH 034/125] use MODULE_FILES for genemuinit* instead of MOD_FILES + +MinGW native nm does not support ELF binaries. +--- + ChangeLog | 8 ++++++++ + grub-core/Makefile.am | 8 ++++---- + grub-core/genemuinit.sh | 4 ++-- + grub-core/genemuinitheader.sh | 4 ++-- + 4 files changed, 16 insertions(+), 8 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index 9360345..4688ff4 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,11 @@ ++2014-01-18 Andrey Borzenkov ++ ++ * grub-core/Makefile.am: Build grub_emu_init.[ch] from MODULE_FILES ++ instead of MOD_FILES. ++ * grub-core/genemuinit.sh: Simplify stripping of suffix so it works ++ both with and without .exe. ++ * grub-core/genemuinitheader.sh: Same. ++ + 2014-01-18 Vladimir Serbinenko + + * util/grub-install.c: Fix a typo. +diff --git a/grub-core/Makefile.am b/grub-core/Makefile.am +index 826b3dd..5c087c8 100644 +--- a/grub-core/Makefile.am ++++ b/grub-core/Makefile.am +@@ -294,12 +294,12 @@ grub_emu-grub_emu_init.$(OBJEXT):grub_emu_init.h + kern/emu/grub_emu_dyn-main.$(OBJEXT):grub_emu_init.h + grub_emu_dyn-grub_emu_init.$(OBJEXT):grub_emu_init.h + +-grub_emu_init.h: genemuinitheader.sh $(MOD_FILES) +- rm -f $@; echo $(MOD_FILES) | sh $(srcdir)/genemuinitheader.sh $(TARGET_NM) > $@ ++grub_emu_init.h: genemuinitheader.sh $(MODULE_FILES) ++ rm -f $@; echo $(MODULE_FILES) | sh $(srcdir)/genemuinitheader.sh $(TARGET_NM) > $@ + CLEANFILES += grub_emu_init.h + +-grub_emu_init.c: grub_emu_init.h genemuinit.sh $(MOD_FILES) +- rm -f $@; echo $(MOD_FILES) | sh $(srcdir)/genemuinit.sh $(TARGET_NM) > $@ ++grub_emu_init.c: grub_emu_init.h genemuinit.sh $(MODULE_FILES) ++ rm -f $@; echo $(MODULE_FILES) | sh $(srcdir)/genemuinit.sh $(TARGET_NM) > $@ + CLEANFILES += grub_emu_init.c + endif + +diff --git a/grub-core/genemuinit.sh b/grub-core/genemuinit.sh +index 45c15ec..8c6bb1c 100644 +--- a/grub-core/genemuinit.sh ++++ b/grub-core/genemuinit.sh +@@ -47,7 +47,7 @@ EOF + read mods + for line in $mods; do + if ${nm} --defined-only -P -p ${line} | grep grub_mod_init > /dev/null; then +- echo "grub_${line}_init ();" | sed 's,\.mod,,g;' ++ echo "grub_${line%%.*}_init ();" + fi + done + +@@ -63,7 +63,7 @@ EOF + + for line in $mods; do + if ${nm} --defined-only -P -p ${line} | grep grub_mod_fini > /dev/null; then +- echo "grub_${line}_fini ();" | sed 's,\.mod,,g;' ++ echo "grub_${line%%.*}_fini ();" + fi + done + +diff --git a/grub-core/genemuinitheader.sh b/grub-core/genemuinitheader.sh +index 6b83f59..a99a15d 100644 +--- a/grub-core/genemuinitheader.sh ++++ b/grub-core/genemuinitheader.sh +@@ -44,9 +44,9 @@ EOF + read mods + for line in $mods; do + if ${nm} --defined-only -P -p ${line} | grep grub_mod_init > /dev/null; then +- echo "void grub_${line}_init (void);" | sed 's,\.mod,,g;' ++ echo "void grub_${line%%.*}_init (void);" + fi + if ${nm} --defined-only -P -p ${line} | grep grub_mod_fini > /dev/null; then +- echo "void grub_${line}_fini (void);" | sed 's,\.mod,,g;' ++ echo "void grub_${line%%.*}_fini (void);" + fi + done +-- +1.9.0 + diff --git a/0035-Ignore-EPERM-when-modifying-kern.geom.debugflags.patch b/0035-Ignore-EPERM-when-modifying-kern.geom.debugflags.patch new file mode 100644 index 0000000..329d654 --- /dev/null +++ b/0035-Ignore-EPERM-when-modifying-kern.geom.debugflags.patch @@ -0,0 +1,58 @@ +From 97fca4331e317b0491912c3cf3d02a9fac96c419 Mon Sep 17 00:00:00 2001 +From: Colin Watson +Date: Fri, 17 Jan 2014 02:28:46 +0000 +Subject: [PATCH 035/125] Ignore EPERM when modifying kern.geom.debugflags + +Many tests fail when run as a non-root user on FreeBSD. The failures +all amount to an inability to open files using grub_util_fd_open, +because we cannot set the kern.geom.debugflags sysctl. This sysctl is +indeed important to allow us to do such things as installing GRUB to the +MBR, but if we need to do that and can't then we will get an error +later. Enforcing it here is unnecessary and prevents otherwise +perfectly reasonable operations. +--- + ChangeLog | 7 +++++++ + grub-core/osdep/freebsd/hostdisk.c | 12 ++++++++++-- + 2 files changed, 17 insertions(+), 2 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index 4688ff4..10abfe2 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,10 @@ ++2014-01-19 Colin Watson ++ ++ * grub-core/osdep/freebsd/hostdisk.c (grub_util_fd_open): Ignore ++ EPERM when modifying kern.geom.debugflags. It is only a problem for ++ such things as installing GRUB to the MBR, in which case there'll be ++ an error later anyway, not for opening files during tests. ++ + 2014-01-18 Andrey Borzenkov + + * grub-core/Makefile.am: Build grub_emu_init.[ch] from MODULE_FILES +diff --git a/grub-core/osdep/freebsd/hostdisk.c b/grub-core/osdep/freebsd/hostdisk.c +index eb202dc..6145d07 100644 +--- a/grub-core/osdep/freebsd/hostdisk.c ++++ b/grub-core/osdep/freebsd/hostdisk.c +@@ -102,8 +102,16 @@ grub_util_fd_open (const char *os_dev, int flags) + if (! (sysctl_oldflags & 0x10) + && sysctlbyname ("kern.geom.debugflags", NULL , 0, &sysctl_flags, sysctl_size)) + { +- grub_error (GRUB_ERR_BAD_DEVICE, "cannot set flags of sysctl kern.geom.debugflags"); +- return GRUB_UTIL_FD_INVALID; ++ if (errno == EPERM) ++ /* Running as an unprivileged user; don't worry about restoring ++ flags, although if we try to write to anything interesting such ++ as the MBR then we may fail later. */ ++ sysctl_oldflags = 0x10; ++ else ++ { ++ grub_error (GRUB_ERR_BAD_DEVICE, "cannot set flags of sysctl kern.geom.debugflags"); ++ return GRUB_UTIL_FD_INVALID; ++ } + } + + ret = open (os_dev, flags, S_IROTH | S_IRGRP | S_IRUSR | S_IWUSR); +-- +1.9.0 + diff --git a/0035-change-stop-condition-to-avoid-infinite-loops.patch b/0035-change-stop-condition-to-avoid-infinite-loops.patch deleted file mode 100644 index 12d8f2c..0000000 --- a/0035-change-stop-condition-to-avoid-infinite-loops.patch +++ /dev/null @@ -1,52 +0,0 @@ -From fe1f47e9190113ad7318f46e0e66a4497ebb6135 Mon Sep 17 00:00:00 2001 -From: Paulo Flabiano Smorigo -Date: Tue, 21 Jan 2014 10:49:39 -0200 -Subject: [PATCH 035/103] change stop condition to avoid infinite loops - -In net/net.c there is a while (1) that only exits if there is a stop -condition and more then 10 packages or if there is no package received. - -If GRUB is idle and enter in this loop, the only condition to leave is -if it doesn't have incoming packages. In a network with heavy traffic -this never happens. ---- - ChangeLog | 12 ++++++++++++ - grub-core/net/net.c | 2 +- - 2 files changed, 13 insertions(+), 1 deletion(-) - -diff --git a/ChangeLog b/ChangeLog -index a7aee43..0df6854 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,15 @@ -+2014-01-21 Paulo Flabiano Smorigo -+ -+ * grub-core/net/net.c (receive_packets): Change stop condition to avoid -+ infinite loops. -+ -+ In net/net.c there is a while (1) that only exits if there is a stop -+ condition and more then 10 packages or if there is no package received. -+ -+ If GRUB is idle and enter in this loop, the only condition to leave is -+ if it doesn't have incoming packages. In a network with heavy traffic -+ this never happens. -+ - 2014-01-19 Colin Watson - - * grub-core/osdep/freebsd/hostdisk.c (grub_util_fd_open): Ignore -diff --git a/grub-core/net/net.c b/grub-core/net/net.c -index 0e57e93..56355f3 100644 ---- a/grub-core/net/net.c -+++ b/grub-core/net/net.c -@@ -1453,7 +1453,7 @@ receive_packets (struct grub_net_card *card, int *stop_condition) - } - card->opened = 1; - } -- while (1) -+ while (received < 100) - { - /* Maybe should be better have a fixed number of packets for each card - and just mark them as used and not used. */ --- -1.9.0 - diff --git a/0036-change-stop-condition-to-avoid-infinite-loops.patch b/0036-change-stop-condition-to-avoid-infinite-loops.patch new file mode 100644 index 0000000..8d5841a --- /dev/null +++ b/0036-change-stop-condition-to-avoid-infinite-loops.patch @@ -0,0 +1,52 @@ +From 547d1e84df5d57c7600ead4556d43d5dbbe33c4b Mon Sep 17 00:00:00 2001 +From: Paulo Flabiano Smorigo +Date: Tue, 21 Jan 2014 10:49:39 -0200 +Subject: [PATCH 036/125] change stop condition to avoid infinite loops + +In net/net.c there is a while (1) that only exits if there is a stop +condition and more then 10 packages or if there is no package received. + +If GRUB is idle and enter in this loop, the only condition to leave is +if it doesn't have incoming packages. In a network with heavy traffic +this never happens. +--- + ChangeLog | 12 ++++++++++++ + grub-core/net/net.c | 2 +- + 2 files changed, 13 insertions(+), 1 deletion(-) + +diff --git a/ChangeLog b/ChangeLog +index 10abfe2..f69d8c7 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,15 @@ ++2014-01-21 Paulo Flabiano Smorigo ++ ++ * grub-core/net/net.c (receive_packets): Change stop condition to avoid ++ infinite loops. ++ ++ In net/net.c there is a while (1) that only exits if there is a stop ++ condition and more then 10 packages or if there is no package received. ++ ++ If GRUB is idle and enter in this loop, the only condition to leave is ++ if it doesn't have incoming packages. In a network with heavy traffic ++ this never happens. ++ + 2014-01-19 Colin Watson + + * grub-core/osdep/freebsd/hostdisk.c (grub_util_fd_open): Ignore +diff --git a/grub-core/net/net.c b/grub-core/net/net.c +index 0e57e93..56355f3 100644 +--- a/grub-core/net/net.c ++++ b/grub-core/net/net.c +@@ -1453,7 +1453,7 @@ receive_packets (struct grub_net_card *card, int *stop_condition) + } + card->opened = 1; + } +- while (1) ++ while (received < 100) + { + /* Maybe should be better have a fixed number of packets for each card + and just mark them as used and not used. */ +-- +1.9.0 + diff --git a/0036-increase-network-try-interval-gradually.patch b/0036-increase-network-try-interval-gradually.patch deleted file mode 100644 index d8d92bf..0000000 --- a/0036-increase-network-try-interval-gradually.patch +++ /dev/null @@ -1,111 +0,0 @@ -From ec46305a8533a9880dbfd157c2ba8cc1354ab504 Mon Sep 17 00:00:00 2001 -From: Paulo Flabiano Smorigo -Date: Tue, 21 Jan 2014 11:03:51 -0200 -Subject: [PATCH 036/103] increase network try interval gradually - -* grub-core/net/arp.c (grub_net_arp_send_request): Increase network try -interval gradually. -* grub-core/net/icmp6.c (grub_net_icmp6_send_request): Likewise. -* grub-core/net/net.c (grub_net_fs_read_real): Likewise. -* grub-core/net/tftp.c (tftp_open): Likewise. -* include/grub/net.h (GRUB_NET_INTERVAL_ADDITION): New define. ---- - ChangeLog | 9 +++++++++ - grub-core/net/arp.c | 3 ++- - grub-core/net/icmp6.c | 3 ++- - grub-core/net/net.c | 5 +++-- - grub-core/net/tftp.c | 3 ++- - include/grub/net.h | 1 + - 6 files changed, 19 insertions(+), 5 deletions(-) - -diff --git a/ChangeLog b/ChangeLog -index 0df6854..b35563e 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,5 +1,14 @@ - 2014-01-21 Paulo Flabiano Smorigo - -+ * grub-core/net/arp.c (grub_net_arp_send_request): Increase network try -+ interval gradually. -+ * grub-core/net/icmp6.c (grub_net_icmp6_send_request): Likewise. -+ * grub-core/net/net.c (grub_net_fs_read_real): Likewise. -+ * grub-core/net/tftp.c (tftp_open): Likewise. -+ * include/grub/net.h (GRUB_NET_INTERVAL_ADDITION): New define. -+ -+2014-01-21 Paulo Flabiano Smorigo -+ - * grub-core/net/net.c (receive_packets): Change stop condition to avoid - infinite loops. - -diff --git a/grub-core/net/arp.c b/grub-core/net/arp.c -index e92c7e7..d62d0cc 100644 ---- a/grub-core/net/arp.c -+++ b/grub-core/net/arp.c -@@ -110,7 +110,8 @@ grub_net_arp_send_request (struct grub_net_network_level_interface *inf, - return GRUB_ERR_NONE; - pending_req = proto_addr->ipv4; - have_pending = 0; -- grub_net_poll_cards (GRUB_NET_INTERVAL, &have_pending); -+ grub_net_poll_cards (GRUB_NET_INTERVAL + (i * GRUB_NET_INTERVAL_ADDITION), -+ &have_pending); - if (grub_net_link_layer_resolve_check (inf, proto_addr)) - return GRUB_ERR_NONE; - nb.data = nbd; -diff --git a/grub-core/net/icmp6.c b/grub-core/net/icmp6.c -index 2741e6f..bbc9020 100644 ---- a/grub-core/net/icmp6.c -+++ b/grub-core/net/icmp6.c -@@ -518,7 +518,8 @@ grub_net_icmp6_send_request (struct grub_net_network_level_interface *inf, - { - if (grub_net_link_layer_resolve_check (inf, proto_addr)) - break; -- grub_net_poll_cards (GRUB_NET_INTERVAL, 0); -+ grub_net_poll_cards (GRUB_NET_INTERVAL + (i * GRUB_NET_INTERVAL_ADDITION), -+ 0); - if (grub_net_link_layer_resolve_check (inf, proto_addr)) - break; - nb->data = nbd; -diff --git a/grub-core/net/net.c b/grub-core/net/net.c -index 56355f3..1521d8d 100644 ---- a/grub-core/net/net.c -+++ b/grub-core/net/net.c -@@ -1558,8 +1558,9 @@ grub_net_fs_read_real (grub_file_t file, char *buf, grub_size_t len) - if (!net->eof) - { - try++; -- grub_net_poll_cards (GRUB_NET_INTERVAL, &net->stall); -- } -+ grub_net_poll_cards (GRUB_NET_INTERVAL + -+ (try * GRUB_NET_INTERVAL_ADDITION), &net->stall); -+ } - else - return total; - } -diff --git a/grub-core/net/tftp.c b/grub-core/net/tftp.c -index 9c489f1..5173614 100644 ---- a/grub-core/net/tftp.c -+++ b/grub-core/net/tftp.c -@@ -398,7 +398,8 @@ tftp_open (struct grub_file *file, const char *filename) - destroy_pq (data); - return err; - } -- grub_net_poll_cards (GRUB_NET_INTERVAL, &data->have_oack); -+ grub_net_poll_cards (GRUB_NET_INTERVAL + (i * GRUB_NET_INTERVAL_ADDITION), -+ &data->have_oack); - if (data->have_oack) - break; - } -diff --git a/include/grub/net.h b/include/grub/net.h -index de6259e..0e0a605 100644 ---- a/include/grub/net.h -+++ b/include/grub/net.h -@@ -532,5 +532,6 @@ extern char *grub_net_default_server; - - #define GRUB_NET_TRIES 40 - #define GRUB_NET_INTERVAL 400 -+#define GRUB_NET_INTERVAL_ADDITION 20 - - #endif /* ! GRUB_NET_HEADER */ --- -1.9.0 - diff --git a/0037-increase-network-try-interval-gradually.patch b/0037-increase-network-try-interval-gradually.patch new file mode 100644 index 0000000..45ad186 --- /dev/null +++ b/0037-increase-network-try-interval-gradually.patch @@ -0,0 +1,111 @@ +From d3652ff33623d842fc4422ffd98e4303795e9519 Mon Sep 17 00:00:00 2001 +From: Paulo Flabiano Smorigo +Date: Tue, 21 Jan 2014 11:03:51 -0200 +Subject: [PATCH 037/125] increase network try interval gradually + +* grub-core/net/arp.c (grub_net_arp_send_request): Increase network try +interval gradually. +* grub-core/net/icmp6.c (grub_net_icmp6_send_request): Likewise. +* grub-core/net/net.c (grub_net_fs_read_real): Likewise. +* grub-core/net/tftp.c (tftp_open): Likewise. +* include/grub/net.h (GRUB_NET_INTERVAL_ADDITION): New define. +--- + ChangeLog | 9 +++++++++ + grub-core/net/arp.c | 3 ++- + grub-core/net/icmp6.c | 3 ++- + grub-core/net/net.c | 5 +++-- + grub-core/net/tftp.c | 3 ++- + include/grub/net.h | 1 + + 6 files changed, 19 insertions(+), 5 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index f69d8c7..f5618a6 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,5 +1,14 @@ + 2014-01-21 Paulo Flabiano Smorigo + ++ * grub-core/net/arp.c (grub_net_arp_send_request): Increase network try ++ interval gradually. ++ * grub-core/net/icmp6.c (grub_net_icmp6_send_request): Likewise. ++ * grub-core/net/net.c (grub_net_fs_read_real): Likewise. ++ * grub-core/net/tftp.c (tftp_open): Likewise. ++ * include/grub/net.h (GRUB_NET_INTERVAL_ADDITION): New define. ++ ++2014-01-21 Paulo Flabiano Smorigo ++ + * grub-core/net/net.c (receive_packets): Change stop condition to avoid + infinite loops. + +diff --git a/grub-core/net/arp.c b/grub-core/net/arp.c +index e92c7e7..d62d0cc 100644 +--- a/grub-core/net/arp.c ++++ b/grub-core/net/arp.c +@@ -110,7 +110,8 @@ grub_net_arp_send_request (struct grub_net_network_level_interface *inf, + return GRUB_ERR_NONE; + pending_req = proto_addr->ipv4; + have_pending = 0; +- grub_net_poll_cards (GRUB_NET_INTERVAL, &have_pending); ++ grub_net_poll_cards (GRUB_NET_INTERVAL + (i * GRUB_NET_INTERVAL_ADDITION), ++ &have_pending); + if (grub_net_link_layer_resolve_check (inf, proto_addr)) + return GRUB_ERR_NONE; + nb.data = nbd; +diff --git a/grub-core/net/icmp6.c b/grub-core/net/icmp6.c +index 2741e6f..bbc9020 100644 +--- a/grub-core/net/icmp6.c ++++ b/grub-core/net/icmp6.c +@@ -518,7 +518,8 @@ grub_net_icmp6_send_request (struct grub_net_network_level_interface *inf, + { + if (grub_net_link_layer_resolve_check (inf, proto_addr)) + break; +- grub_net_poll_cards (GRUB_NET_INTERVAL, 0); ++ grub_net_poll_cards (GRUB_NET_INTERVAL + (i * GRUB_NET_INTERVAL_ADDITION), ++ 0); + if (grub_net_link_layer_resolve_check (inf, proto_addr)) + break; + nb->data = nbd; +diff --git a/grub-core/net/net.c b/grub-core/net/net.c +index 56355f3..1521d8d 100644 +--- a/grub-core/net/net.c ++++ b/grub-core/net/net.c +@@ -1558,8 +1558,9 @@ grub_net_fs_read_real (grub_file_t file, char *buf, grub_size_t len) + if (!net->eof) + { + try++; +- grub_net_poll_cards (GRUB_NET_INTERVAL, &net->stall); +- } ++ grub_net_poll_cards (GRUB_NET_INTERVAL + ++ (try * GRUB_NET_INTERVAL_ADDITION), &net->stall); ++ } + else + return total; + } +diff --git a/grub-core/net/tftp.c b/grub-core/net/tftp.c +index 9c489f1..5173614 100644 +--- a/grub-core/net/tftp.c ++++ b/grub-core/net/tftp.c +@@ -398,7 +398,8 @@ tftp_open (struct grub_file *file, const char *filename) + destroy_pq (data); + return err; + } +- grub_net_poll_cards (GRUB_NET_INTERVAL, &data->have_oack); ++ grub_net_poll_cards (GRUB_NET_INTERVAL + (i * GRUB_NET_INTERVAL_ADDITION), ++ &data->have_oack); + if (data->have_oack) + break; + } +diff --git a/include/grub/net.h b/include/grub/net.h +index de6259e..0e0a605 100644 +--- a/include/grub/net.h ++++ b/include/grub/net.h +@@ -532,5 +532,6 @@ extern char *grub_net_default_server; + + #define GRUB_NET_TRIES 40 + #define GRUB_NET_INTERVAL 400 ++#define GRUB_NET_INTERVAL_ADDITION 20 + + #endif /* ! GRUB_NET_HEADER */ +-- +1.9.0 + diff --git a/0037-look-for-DejaVu-also-in-usr-share-fonts-truetype.patch b/0037-look-for-DejaVu-also-in-usr-share-fonts-truetype.patch deleted file mode 100644 index bd41e32..0000000 --- a/0037-look-for-DejaVu-also-in-usr-share-fonts-truetype.patch +++ /dev/null @@ -1,39 +0,0 @@ -From e9cbf597953d597dd15c0dc0be77a9583fa733f7 Mon Sep 17 00:00:00 2001 -From: Andrey Borzenkov -Date: Tue, 21 Jan 2014 19:29:33 +0400 -Subject: [PATCH 037/103] look for DejaVu also in /usr/share/fonts/truetype - -It is installed in this path on openSUSE. ---- - ChangeLog | 4 ++++ - configure.ac | 2 +- - 2 files changed, 5 insertions(+), 1 deletion(-) - -diff --git a/ChangeLog b/ChangeLog -index b35563e..b2e6d39 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,7 @@ -+2014-01-21 Andrey Borzenkov -+ -+ * configure.ac: Look for DejaVuSans also in /usr/share/fonts/truetype. -+ - 2014-01-21 Paulo Flabiano Smorigo - - * grub-core/net/arp.c (grub_net_arp_send_request): Increase network try -diff --git a/configure.ac b/configure.ac -index cf3de3b..120263e 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -1389,7 +1389,7 @@ fi - - if test x"$starfield_excuse" = x; then - for ext in pcf pcf.gz bdf bdf.gz ttf ttf.gz; do -- for dir in . /usr/src /usr/share/fonts/X11/misc /usr/share/fonts/truetype/ttf-dejavu /usr/share/fonts/dejavu; do -+ for dir in . /usr/src /usr/share/fonts/X11/misc /usr/share/fonts/truetype/ttf-dejavu /usr/share/fonts/dejavu /usr/share/fonts/truetype; do - if test -f "$dir/DejaVuSans.$ext"; then - DJVU_FONT_SOURCE="$dir/DejaVuSans.$ext" - break 2 --- -1.9.0 - diff --git a/0038-Show-detected-path-to-DejaVuSans-in-configure-summar.patch b/0038-Show-detected-path-to-DejaVuSans-in-configure-summar.patch deleted file mode 100644 index 5c878cd..0000000 --- a/0038-Show-detected-path-to-DejaVuSans-in-configure-summar.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 8dd8e1c0e27070d2f172ddaf4e7528496dfd8b45 Mon Sep 17 00:00:00 2001 -From: Andrey Borzenkov -Date: Tue, 21 Jan 2014 19:41:11 +0400 -Subject: [PATCH 038/103] Show detected path to DejaVuSans in configure summary - ---- - ChangeLog | 1 + - configure.ac | 1 + - 2 files changed, 2 insertions(+) - -diff --git a/ChangeLog b/ChangeLog -index b2e6d39..30b8e8a 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,6 +1,7 @@ - 2014-01-21 Andrey Borzenkov - - * configure.ac: Look for DejaVuSans also in /usr/share/fonts/truetype. -+ Show detected font path in summary. - - 2014-01-21 Paulo Flabiano Smorigo - -diff --git a/configure.ac b/configure.ac -index 120263e..8888c2f 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -1816,6 +1816,7 @@ echo grub-mount: No "($grub_mount_excuse)" - fi - if [ x"$starfield_excuse" = x ]; then - echo starfield theme: Yes -+echo With DejaVuSans font from $DJVU_FONT_SOURCE - else - echo starfield theme: No "($starfield_excuse)" - fi --- -1.9.0 - diff --git a/0038-look-for-DejaVu-also-in-usr-share-fonts-truetype.patch b/0038-look-for-DejaVu-also-in-usr-share-fonts-truetype.patch new file mode 100644 index 0000000..9b9fa29 --- /dev/null +++ b/0038-look-for-DejaVu-also-in-usr-share-fonts-truetype.patch @@ -0,0 +1,39 @@ +From 90d83cda679fef485f7bb1a318bd682c4eb86cb4 Mon Sep 17 00:00:00 2001 +From: Andrey Borzenkov +Date: Tue, 21 Jan 2014 19:29:33 +0400 +Subject: [PATCH 038/125] look for DejaVu also in /usr/share/fonts/truetype + +It is installed in this path on openSUSE. +--- + ChangeLog | 4 ++++ + configure.ac | 2 +- + 2 files changed, 5 insertions(+), 1 deletion(-) + +diff --git a/ChangeLog b/ChangeLog +index f5618a6..9f5d81d 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,7 @@ ++2014-01-21 Andrey Borzenkov ++ ++ * configure.ac: Look for DejaVuSans also in /usr/share/fonts/truetype. ++ + 2014-01-21 Paulo Flabiano Smorigo + + * grub-core/net/arp.c (grub_net_arp_send_request): Increase network try +diff --git a/configure.ac b/configure.ac +index cf3de3b..120263e 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1389,7 +1389,7 @@ fi + + if test x"$starfield_excuse" = x; then + for ext in pcf pcf.gz bdf bdf.gz ttf ttf.gz; do +- for dir in . /usr/src /usr/share/fonts/X11/misc /usr/share/fonts/truetype/ttf-dejavu /usr/share/fonts/dejavu; do ++ for dir in . /usr/src /usr/share/fonts/X11/misc /usr/share/fonts/truetype/ttf-dejavu /usr/share/fonts/dejavu /usr/share/fonts/truetype; do + if test -f "$dir/DejaVuSans.$ext"; then + DJVU_FONT_SOURCE="$dir/DejaVuSans.$ext" + break 2 +-- +1.9.0 + diff --git a/0039-Show-detected-path-to-DejaVuSans-in-configure-summar.patch b/0039-Show-detected-path-to-DejaVuSans-in-configure-summar.patch new file mode 100644 index 0000000..921115c --- /dev/null +++ b/0039-Show-detected-path-to-DejaVuSans-in-configure-summar.patch @@ -0,0 +1,37 @@ +From 3e02e2fbd2089645ac2c482dad59318394b62252 Mon Sep 17 00:00:00 2001 +From: Andrey Borzenkov +Date: Tue, 21 Jan 2014 19:41:11 +0400 +Subject: [PATCH 039/125] Show detected path to DejaVuSans in configure summary + +--- + ChangeLog | 1 + + configure.ac | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/ChangeLog b/ChangeLog +index 9f5d81d..3ba57ae 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,6 +1,7 @@ + 2014-01-21 Andrey Borzenkov + + * configure.ac: Look for DejaVuSans also in /usr/share/fonts/truetype. ++ Show detected font path in summary. + + 2014-01-21 Paulo Flabiano Smorigo + +diff --git a/configure.ac b/configure.ac +index 120263e..8888c2f 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1816,6 +1816,7 @@ echo grub-mount: No "($grub_mount_excuse)" + fi + if [ x"$starfield_excuse" = x ]; then + echo starfield theme: Yes ++echo With DejaVuSans font from $DJVU_FONT_SOURCE + else + echo starfield theme: No "($starfield_excuse)" + fi +-- +1.9.0 + diff --git a/0039-add-GRUB_WINDOWS_EXTRA_DIST-to-allow-shipping-runtim.patch b/0039-add-GRUB_WINDOWS_EXTRA_DIST-to-allow-shipping-runtim.patch deleted file mode 100644 index ce66ea7..0000000 --- a/0039-add-GRUB_WINDOWS_EXTRA_DIST-to-allow-shipping-runtim.patch +++ /dev/null @@ -1,62 +0,0 @@ -From b56a7569613e59c14d09c77b428884a9acb19e7d Mon Sep 17 00:00:00 2001 -From: Andrey Borzenkov -Date: Tue, 21 Jan 2014 20:54:09 +0400 -Subject: [PATCH 039/103] add GRUB_WINDOWS_EXTRA_DIST to allow shipping runtime - files - -Not all toolkits provide static libraries. This patch enables creation of self -contained distribution that does not require pre-existing runtime libraries. -Intended usage is - -export GRUB_WINDOWS_EXTRA_DIST="/path/to/liblzma.dll /path/to/libintl.dll" -make -make windowszip - -As those libraries and locations are dependent on toolchain in use, trying -to autodetect them is likely impossible. So just provide a simple way to -package everything in one step. - -Also remove $(windowsdir) after ZIP was created same as other "make dist" -targets. ---- - ChangeLog | 5 +++++ - Makefile.am | 4 ++++ - 2 files changed, 9 insertions(+) - -diff --git a/ChangeLog b/ChangeLog -index 30b8e8a..f2c75dc 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,5 +1,10 @@ - 2014-01-21 Andrey Borzenkov - -+ * Makefile.am: Allow adding extra files to generated Windows ZIP -+ archive by setting GRUB_WINDOWS_EXTRA_DIST. -+ -+2014-01-21 Andrey Borzenkov -+ - * configure.ac: Look for DejaVuSans also in /usr/share/fonts/truetype. - Show detected font path in summary. - -diff --git a/Makefile.am b/Makefile.am -index 97c062d..f02ae0a 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -420,10 +420,14 @@ windowsdir: $(PROGRAMS) $(starfield_DATA) $(platform_DATA) - for x in $(starfield_DATA); do \ - cp -fp $$x $(windowsdir)/themes/starfield/$$(basename $$x); \ - done -+ for x in $(GRUB_WINDOWS_EXTRA_DIST); do \ -+ cp -fp $$x $(windowsdir); \ -+ done - - windowszip=$(top_builddir)/$(PACKAGE)-$(VERSION)-for-windows.zip - windowszip: windowsdir - test -f $(windowszip) && rm $(windowszip) || true - zip -r $(windowszip) $(windowsdir) -+ rm -rf $(windowsdir) - - EXTRA_DIST += linguas.sh --- -1.9.0 - diff --git a/0040-add-GRUB_WINDOWS_EXTRA_DIST-to-allow-shipping-runtim.patch b/0040-add-GRUB_WINDOWS_EXTRA_DIST-to-allow-shipping-runtim.patch new file mode 100644 index 0000000..1f6eb9f --- /dev/null +++ b/0040-add-GRUB_WINDOWS_EXTRA_DIST-to-allow-shipping-runtim.patch @@ -0,0 +1,62 @@ +From 6e9483ee94033f4bb7b9a17bd032c4af4479abc0 Mon Sep 17 00:00:00 2001 +From: Andrey Borzenkov +Date: Tue, 21 Jan 2014 20:54:09 +0400 +Subject: [PATCH 040/125] add GRUB_WINDOWS_EXTRA_DIST to allow shipping runtime + files + +Not all toolkits provide static libraries. This patch enables creation of self +contained distribution that does not require pre-existing runtime libraries. +Intended usage is + +export GRUB_WINDOWS_EXTRA_DIST="/path/to/liblzma.dll /path/to/libintl.dll" +make +make windowszip + +As those libraries and locations are dependent on toolchain in use, trying +to autodetect them is likely impossible. So just provide a simple way to +package everything in one step. + +Also remove $(windowsdir) after ZIP was created same as other "make dist" +targets. +--- + ChangeLog | 5 +++++ + Makefile.am | 4 ++++ + 2 files changed, 9 insertions(+) + +diff --git a/ChangeLog b/ChangeLog +index 3ba57ae..1ede370 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,5 +1,10 @@ + 2014-01-21 Andrey Borzenkov + ++ * Makefile.am: Allow adding extra files to generated Windows ZIP ++ archive by setting GRUB_WINDOWS_EXTRA_DIST. ++ ++2014-01-21 Andrey Borzenkov ++ + * configure.ac: Look for DejaVuSans also in /usr/share/fonts/truetype. + Show detected font path in summary. + +diff --git a/Makefile.am b/Makefile.am +index 97c062d..f02ae0a 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -420,10 +420,14 @@ windowsdir: $(PROGRAMS) $(starfield_DATA) $(platform_DATA) + for x in $(starfield_DATA); do \ + cp -fp $$x $(windowsdir)/themes/starfield/$$(basename $$x); \ + done ++ for x in $(GRUB_WINDOWS_EXTRA_DIST); do \ ++ cp -fp $$x $(windowsdir); \ ++ done + + windowszip=$(top_builddir)/$(PACKAGE)-$(VERSION)-for-windows.zip + windowszip: windowsdir + test -f $(windowszip) && rm $(windowszip) || true + zip -r $(windowszip) $(windowsdir) ++ rm -rf $(windowsdir) + + EXTRA_DIST += linguas.sh +-- +1.9.0 + diff --git a/0040-util-grub-install.c-write_to_disk-Add-an-info-messag.patch b/0040-util-grub-install.c-write_to_disk-Add-an-info-messag.patch deleted file mode 100644 index 2d958e1..0000000 --- a/0040-util-grub-install.c-write_to_disk-Add-an-info-messag.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 4a640fa8d9e9f463dfc9a1c1e9adfc758c58ed16 Mon Sep 17 00:00:00 2001 -From: Colin Watson -Date: Thu, 23 Jan 2014 12:05:36 +0000 -Subject: [PATCH 040/103] * util/grub-install.c (write_to_disk): Add an info - message. - ---- - ChangeLog | 4 ++++ - util/grub-install.c | 1 + - 2 files changed, 5 insertions(+) - -diff --git a/ChangeLog b/ChangeLog -index f2c75dc..21417f8 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,7 @@ -+2014-01-23 Colin Watson -+ -+ * util/grub-install.c (write_to_disk): Add an info message. -+ - 2014-01-21 Andrey Borzenkov - - * Makefile.am: Allow adding extra files to generated Windows ZIP -diff --git a/util/grub-install.c b/util/grub-install.c -index 5903f34..787dc90 100644 ---- a/util/grub-install.c -+++ b/util/grub-install.c -@@ -675,6 +675,7 @@ write_to_disk (grub_device_t dev, const char *fn) - - core_img = grub_util_read_image (fn); - -+ grub_util_info ("writing `%s' to `%s'", fn, dev->disk->name); - err = grub_disk_write (dev->disk, 0, 0, - core_size, core_img); - free (core_img); --- -1.9.0 - diff --git a/0041-util-grub-install.c-List-available-targets.patch b/0041-util-grub-install.c-List-available-targets.patch deleted file mode 100644 index 7e37557..0000000 --- a/0041-util-grub-install.c-List-available-targets.patch +++ /dev/null @@ -1,109 +0,0 @@ -From 9779a803f3368df23a4a90f2475d6d78672e83c0 Mon Sep 17 00:00:00 2001 -From: Vladimir Serbinenko -Date: Fri, 24 Jan 2014 18:09:25 +0100 -Subject: [PATCH 041/103] * util/grub-install.c: List available targets. - ---- - ChangeLog | 4 ++++ - include/grub/util/install.h | 2 ++ - util/grub-install-common.c | 30 ++++++++++++++++++++++++++++++ - util/grub-install.c | 10 ++++++++-- - 4 files changed, 44 insertions(+), 2 deletions(-) - -diff --git a/ChangeLog b/ChangeLog -index 21417f8..f3bb077 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,7 @@ -+2014-01-24 Vladimir Serbinenko -+ -+ * util/grub-install.c: List available targets. -+ - 2014-01-23 Colin Watson - - * util/grub-install.c (write_to_disk): Add an info message. -diff --git a/include/grub/util/install.h b/include/grub/util/install.h -index bc987aa..aedcd29 100644 ---- a/include/grub/util/install.h -+++ b/include/grub/util/install.h -@@ -138,6 +138,8 @@ grub_install_get_platform_cpu (enum grub_install_plat platid); - const char * - grub_install_get_platform_platform (enum grub_install_plat platid); - -+char * -+grub_install_get_platforms_string (void); - - typedef enum { - GRUB_COMPRESSION_AUTO, -diff --git a/util/grub-install-common.c b/util/grub-install-common.c -index 6ea0a8e..c8bedcb 100644 ---- a/util/grub-install-common.c -+++ b/util/grub-install-common.c -@@ -668,6 +668,36 @@ static struct - }; - - char * -+grub_install_get_platforms_string (void) -+{ -+ char **arr = xmalloc (sizeof (char *) * ARRAY_SIZE (platforms)); -+ int platform_strins_len = 0; -+ char *platforms_string; -+ char *ptr; -+ unsigned i; -+ for (i = 0; i < ARRAY_SIZE (platforms); i++) -+ { -+ arr[i] = xasprintf ("%s-%s", platforms[i].cpu, -+ platforms[i].platform); -+ platform_strins_len += strlen (arr[i]) + 2; -+ } -+ ptr = platforms_string = xmalloc (platform_strins_len); -+ qsort (arr, ARRAY_SIZE (platforms), sizeof (char *), grub_qsort_strcmp); -+ for (i = 0; i < ARRAY_SIZE (platforms); i++) -+ { -+ strcpy (ptr, arr[i]); -+ ptr += strlen (arr[i]); -+ *ptr++ = ','; -+ *ptr++ = ' '; -+ free (arr[i]); -+ } -+ ptr[-2] = 0; -+ free (arr); -+ -+ return platforms_string; -+} -+ -+char * - grub_install_get_platform_name (enum grub_install_plat platid) - { - return xasprintf ("%s-%s", platforms[platid].cpu, -diff --git a/util/grub-install.c b/util/grub-install.c -index 787dc90..2e6226a 100644 ---- a/util/grub-install.c -+++ b/util/grub-install.c -@@ -256,7 +256,7 @@ static struct argp_option options[] = { - OPTION_HIDDEN, 0, 2}, - {"target", OPTION_TARGET, N_("TARGET"), - /* TRANSLATORS: "TARGET" as in "target platform". */ -- 0, N_("install GRUB for TARGET platform [default=%s]"), 2}, -+ 0, N_("install GRUB for TARGET platform [default=%s]; available targets: %s"), 2}, - {"grub-setup", OPTION_SETUP, "FILE", OPTION_HIDDEN, 0, 2}, - {"grub-mkrelpath", OPTION_MKRELPATH, "FILE", OPTION_HIDDEN, 0, 2}, - {"grub-mkdevicemap", OPTION_MKDEVICEMAP, "FILE", OPTION_HIDDEN, 0, 2}, -@@ -340,7 +340,13 @@ help_filter (int key, const char *text, void *input __attribute__ ((unused))) - case OPTION_BOOT_DIRECTORY: - return xasprintf (text, GRUB_DIR_NAME, GRUB_BOOT_DIR_NAME "/" GRUB_DIR_NAME); - case OPTION_TARGET: -- return xasprintf (text, get_default_platform ()); -+ { -+ char *plats = grub_install_get_platforms_string (); -+ char *ret; -+ ret = xasprintf (text, get_default_platform (), plats); -+ free (plats); -+ return ret; -+ } - case ARGP_KEY_HELP_POST_DOC: - return xasprintf (text, program_name, GRUB_BOOT_DIR_NAME "/" GRUB_DIR_NAME); - default: --- -1.9.0 - diff --git a/0041-util-grub-install.c-write_to_disk-Add-an-info-messag.patch b/0041-util-grub-install.c-write_to_disk-Add-an-info-messag.patch new file mode 100644 index 0000000..0ca62f0 --- /dev/null +++ b/0041-util-grub-install.c-write_to_disk-Add-an-info-messag.patch @@ -0,0 +1,38 @@ +From 100e7015f7dcf2cee0c4ddbbd7498a67bac695d0 Mon Sep 17 00:00:00 2001 +From: Colin Watson +Date: Thu, 23 Jan 2014 12:05:36 +0000 +Subject: [PATCH 041/125] * util/grub-install.c (write_to_disk): Add an info + message. + +--- + ChangeLog | 4 ++++ + util/grub-install.c | 1 + + 2 files changed, 5 insertions(+) + +diff --git a/ChangeLog b/ChangeLog +index 1ede370..eee8e78 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,7 @@ ++2014-01-23 Colin Watson ++ ++ * util/grub-install.c (write_to_disk): Add an info message. ++ + 2014-01-21 Andrey Borzenkov + + * Makefile.am: Allow adding extra files to generated Windows ZIP +diff --git a/util/grub-install.c b/util/grub-install.c +index 5903f34..787dc90 100644 +--- a/util/grub-install.c ++++ b/util/grub-install.c +@@ -675,6 +675,7 @@ write_to_disk (grub_device_t dev, const char *fn) + + core_img = grub_util_read_image (fn); + ++ grub_util_info ("writing `%s' to `%s'", fn, dev->disk->name); + err = grub_disk_write (dev->disk, 0, 0, + core_size, core_img); + free (core_img); +-- +1.9.0 + diff --git a/0042-Fix-several-translatable-strings.patch b/0042-Fix-several-translatable-strings.patch deleted file mode 100644 index 6408813..0000000 --- a/0042-Fix-several-translatable-strings.patch +++ /dev/null @@ -1,78 +0,0 @@ -From 3886fbac17202ede59c051ef90046b01d199ecc9 Mon Sep 17 00:00:00 2001 -From: Vladimir Serbinenko -Date: Fri, 24 Jan 2014 18:20:27 +0100 -Subject: [PATCH 042/103] Fix several translatable strings. -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - - Suggested by: D. Prévot. ---- - ChangeLog | 6 ++++++ - grub-core/commands/syslinuxcfg.c | 2 +- - grub-core/loader/arm64/linux.c | 2 +- - util/grub-syslinux2cfg.c | 4 ++-- - 4 files changed, 10 insertions(+), 4 deletions(-) - -diff --git a/ChangeLog b/ChangeLog -index f3bb077..bc1a08a 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,5 +1,11 @@ - 2014-01-24 Vladimir Serbinenko - -+ Fix several translatable strings. -+ -+ Suggested by: D. Prévot. -+ -+2014-01-24 Vladimir Serbinenko -+ - * util/grub-install.c: List available targets. - - 2014-01-23 Colin Watson -diff --git a/grub-core/commands/syslinuxcfg.c b/grub-core/commands/syslinuxcfg.c -index a4bfc40..00ae113 100644 ---- a/grub-core/commands/syslinuxcfg.c -+++ b/grub-core/commands/syslinuxcfg.c -@@ -50,7 +50,7 @@ static const struct grub_arg_option options[] = - N_("root directory of the syslinux disk [default=/]."), - N_("DIR"), ARG_TYPE_STRING}, - {"cwd", 'c', 0, -- N_("current directory of the syslinux [default is parent directory of input file]."), -+ N_("current directory of syslinux [default is parent directory of input file]."), - N_("DIR"), ARG_TYPE_STRING}, - {"isolinux", 'i', 0, N_("assume input is an isolinux configuration file."), 0, 0}, - {"pxelinux", 'p', 0, N_("assume input is a pxelinux configuration file."), 0, 0}, -diff --git a/grub-core/loader/arm64/linux.c b/grub-core/loader/arm64/linux.c -index 75ad871..65129c2 100644 ---- a/grub-core/loader/arm64/linux.c -+++ b/grub-core/loader/arm64/linux.c -@@ -120,7 +120,7 @@ check_kernel (struct grub_arm64_linux_kernel_header *lh) - - if ((lh->code0 & 0xffff) != GRUB_EFI_PE_MAGIC) - return grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET, -- N_("plain Image kernel not supported - rebuild with CONFIG_(U)EFI_STUB enabled")); -+ N_("plain image kernel not supported - rebuild with CONFIG_(U)EFI_STUB enabled")); - - grub_dprintf ("linux", "UEFI stub kernel:\n"); - grub_dprintf ("linux", "text_offset = 0x%012llx\n", -diff --git a/util/grub-syslinux2cfg.c b/util/grub-syslinux2cfg.c -index 5e944c2..f4fda6d 100644 ---- a/util/grub-syslinux2cfg.c -+++ b/util/grub-syslinux2cfg.c -@@ -66,10 +66,10 @@ static struct argp_option options[] = { - N_("root directory of the syslinux disk [default=/]."), 0}, - {"target-cwd", 'T', N_("DIR"), 0, - N_( -- "current directory of the syslinux as it will be seen on runtime [default is parent directory of input file]." -+ "current directory of syslinux as it will be seen on runtime [default is parent directory of input file]." - ), 0}, - {"cwd", 'c', N_("DIR"), 0, -- N_("current directory of the syslinux [default is parent directory of input file]."), 0}, -+ N_("current directory of syslinux [default is parent directory of input file]."), 0}, - - {"output", 'o', N_("FILE"), 0, N_("write output to FILE [default=stdout]."), 0}, - {"isolinux", 'i', 0, 0, N_("assume input is an isolinux configuration file."), 0}, --- -1.9.0 - diff --git a/0042-util-grub-install.c-List-available-targets.patch b/0042-util-grub-install.c-List-available-targets.patch new file mode 100644 index 0000000..8a12d3b --- /dev/null +++ b/0042-util-grub-install.c-List-available-targets.patch @@ -0,0 +1,109 @@ +From d25ddbcafa537525f606938df0e500c50a5e93e1 Mon Sep 17 00:00:00 2001 +From: Vladimir Serbinenko +Date: Fri, 24 Jan 2014 18:09:25 +0100 +Subject: [PATCH 042/125] * util/grub-install.c: List available targets. + +--- + ChangeLog | 4 ++++ + include/grub/util/install.h | 2 ++ + util/grub-install-common.c | 30 ++++++++++++++++++++++++++++++ + util/grub-install.c | 10 ++++++++-- + 4 files changed, 44 insertions(+), 2 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index eee8e78..20e8baa 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,7 @@ ++2014-01-24 Vladimir Serbinenko ++ ++ * util/grub-install.c: List available targets. ++ + 2014-01-23 Colin Watson + + * util/grub-install.c (write_to_disk): Add an info message. +diff --git a/include/grub/util/install.h b/include/grub/util/install.h +index bc987aa..aedcd29 100644 +--- a/include/grub/util/install.h ++++ b/include/grub/util/install.h +@@ -138,6 +138,8 @@ grub_install_get_platform_cpu (enum grub_install_plat platid); + const char * + grub_install_get_platform_platform (enum grub_install_plat platid); + ++char * ++grub_install_get_platforms_string (void); + + typedef enum { + GRUB_COMPRESSION_AUTO, +diff --git a/util/grub-install-common.c b/util/grub-install-common.c +index 6ea0a8e..c8bedcb 100644 +--- a/util/grub-install-common.c ++++ b/util/grub-install-common.c +@@ -668,6 +668,36 @@ static struct + }; + + char * ++grub_install_get_platforms_string (void) ++{ ++ char **arr = xmalloc (sizeof (char *) * ARRAY_SIZE (platforms)); ++ int platform_strins_len = 0; ++ char *platforms_string; ++ char *ptr; ++ unsigned i; ++ for (i = 0; i < ARRAY_SIZE (platforms); i++) ++ { ++ arr[i] = xasprintf ("%s-%s", platforms[i].cpu, ++ platforms[i].platform); ++ platform_strins_len += strlen (arr[i]) + 2; ++ } ++ ptr = platforms_string = xmalloc (platform_strins_len); ++ qsort (arr, ARRAY_SIZE (platforms), sizeof (char *), grub_qsort_strcmp); ++ for (i = 0; i < ARRAY_SIZE (platforms); i++) ++ { ++ strcpy (ptr, arr[i]); ++ ptr += strlen (arr[i]); ++ *ptr++ = ','; ++ *ptr++ = ' '; ++ free (arr[i]); ++ } ++ ptr[-2] = 0; ++ free (arr); ++ ++ return platforms_string; ++} ++ ++char * + grub_install_get_platform_name (enum grub_install_plat platid) + { + return xasprintf ("%s-%s", platforms[platid].cpu, +diff --git a/util/grub-install.c b/util/grub-install.c +index 787dc90..2e6226a 100644 +--- a/util/grub-install.c ++++ b/util/grub-install.c +@@ -256,7 +256,7 @@ static struct argp_option options[] = { + OPTION_HIDDEN, 0, 2}, + {"target", OPTION_TARGET, N_("TARGET"), + /* TRANSLATORS: "TARGET" as in "target platform". */ +- 0, N_("install GRUB for TARGET platform [default=%s]"), 2}, ++ 0, N_("install GRUB for TARGET platform [default=%s]; available targets: %s"), 2}, + {"grub-setup", OPTION_SETUP, "FILE", OPTION_HIDDEN, 0, 2}, + {"grub-mkrelpath", OPTION_MKRELPATH, "FILE", OPTION_HIDDEN, 0, 2}, + {"grub-mkdevicemap", OPTION_MKDEVICEMAP, "FILE", OPTION_HIDDEN, 0, 2}, +@@ -340,7 +340,13 @@ help_filter (int key, const char *text, void *input __attribute__ ((unused))) + case OPTION_BOOT_DIRECTORY: + return xasprintf (text, GRUB_DIR_NAME, GRUB_BOOT_DIR_NAME "/" GRUB_DIR_NAME); + case OPTION_TARGET: +- return xasprintf (text, get_default_platform ()); ++ { ++ char *plats = grub_install_get_platforms_string (); ++ char *ret; ++ ret = xasprintf (text, get_default_platform (), plats); ++ free (plats); ++ return ret; ++ } + case ARGP_KEY_HELP_POST_DOC: + return xasprintf (text, program_name, GRUB_BOOT_DIR_NAME "/" GRUB_DIR_NAME); + default: +-- +1.9.0 + diff --git a/0043-Fix-several-translatable-strings.patch b/0043-Fix-several-translatable-strings.patch new file mode 100644 index 0000000..0795545 --- /dev/null +++ b/0043-Fix-several-translatable-strings.patch @@ -0,0 +1,78 @@ +From 2cd73ec6b2efeaff2bdcd40cce0cd3145d9e07d0 Mon Sep 17 00:00:00 2001 +From: Vladimir Serbinenko +Date: Fri, 24 Jan 2014 18:20:27 +0100 +Subject: [PATCH 043/125] Fix several translatable strings. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + + Suggested by: D. Prévot. +--- + ChangeLog | 6 ++++++ + grub-core/commands/syslinuxcfg.c | 2 +- + grub-core/loader/arm64/linux.c | 2 +- + util/grub-syslinux2cfg.c | 4 ++-- + 4 files changed, 10 insertions(+), 4 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index 20e8baa..e149d8e 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,5 +1,11 @@ + 2014-01-24 Vladimir Serbinenko + ++ Fix several translatable strings. ++ ++ Suggested by: D. Prévot. ++ ++2014-01-24 Vladimir Serbinenko ++ + * util/grub-install.c: List available targets. + + 2014-01-23 Colin Watson +diff --git a/grub-core/commands/syslinuxcfg.c b/grub-core/commands/syslinuxcfg.c +index a4bfc40..00ae113 100644 +--- a/grub-core/commands/syslinuxcfg.c ++++ b/grub-core/commands/syslinuxcfg.c +@@ -50,7 +50,7 @@ static const struct grub_arg_option options[] = + N_("root directory of the syslinux disk [default=/]."), + N_("DIR"), ARG_TYPE_STRING}, + {"cwd", 'c', 0, +- N_("current directory of the syslinux [default is parent directory of input file]."), ++ N_("current directory of syslinux [default is parent directory of input file]."), + N_("DIR"), ARG_TYPE_STRING}, + {"isolinux", 'i', 0, N_("assume input is an isolinux configuration file."), 0, 0}, + {"pxelinux", 'p', 0, N_("assume input is a pxelinux configuration file."), 0, 0}, +diff --git a/grub-core/loader/arm64/linux.c b/grub-core/loader/arm64/linux.c +index 75ad871..65129c2 100644 +--- a/grub-core/loader/arm64/linux.c ++++ b/grub-core/loader/arm64/linux.c +@@ -120,7 +120,7 @@ check_kernel (struct grub_arm64_linux_kernel_header *lh) + + if ((lh->code0 & 0xffff) != GRUB_EFI_PE_MAGIC) + return grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET, +- N_("plain Image kernel not supported - rebuild with CONFIG_(U)EFI_STUB enabled")); ++ N_("plain image kernel not supported - rebuild with CONFIG_(U)EFI_STUB enabled")); + + grub_dprintf ("linux", "UEFI stub kernel:\n"); + grub_dprintf ("linux", "text_offset = 0x%012llx\n", +diff --git a/util/grub-syslinux2cfg.c b/util/grub-syslinux2cfg.c +index 5e944c2..f4fda6d 100644 +--- a/util/grub-syslinux2cfg.c ++++ b/util/grub-syslinux2cfg.c +@@ -66,10 +66,10 @@ static struct argp_option options[] = { + N_("root directory of the syslinux disk [default=/]."), 0}, + {"target-cwd", 'T', N_("DIR"), 0, + N_( +- "current directory of the syslinux as it will be seen on runtime [default is parent directory of input file]." ++ "current directory of syslinux as it will be seen on runtime [default is parent directory of input file]." + ), 0}, + {"cwd", 'c', N_("DIR"), 0, +- N_("current directory of the syslinux [default is parent directory of input file]."), 0}, ++ N_("current directory of syslinux [default is parent directory of input file]."), 0}, + + {"output", 'o', N_("FILE"), 0, N_("write output to FILE [default=stdout]."), 0}, + {"isolinux", 'i', 0, 0, N_("assume input is an isolinux configuration file."), 0}, +-- +1.9.0 + diff --git a/0043-do-not-set-default-prefix-in-grub-mkimage.patch b/0043-do-not-set-default-prefix-in-grub-mkimage.patch deleted file mode 100644 index 3b7d6c5..0000000 --- a/0043-do-not-set-default-prefix-in-grub-mkimage.patch +++ /dev/null @@ -1,75 +0,0 @@ -From 7a7665be5063a4f2aa97fb7e8f8585d38f7821ac Mon Sep 17 00:00:00 2001 -From: Andrey Borzenkov -Date: Sat, 25 Jan 2014 19:54:51 +0400 -Subject: [PATCH 043/103] do not set default prefix in grub-mkimage - -Default prefix is likely wrong on Unix and completely wrong on Windows. -Let caller set it explicitly to avoid any ambiguity. ---- - ChangeLog | 4 ++++ - util/grub-mkimage.c | 16 +++++++++++----- - 2 files changed, 15 insertions(+), 5 deletions(-) - -diff --git a/ChangeLog b/ChangeLog -index bc1a08a..3b39980 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,7 @@ -+2014-01-25 Andrey Borzenkov -+ -+ * util/grub-mkimage.c: Make prefix argument mandatory. -+ - 2014-01-24 Vladimir Serbinenko - - Fix several translatable strings. -diff --git a/util/grub-mkimage.c b/util/grub-mkimage.c -index a2bd4c1..1e0bcf1 100644 ---- a/util/grub-mkimage.c -+++ b/util/grub-mkimage.c -@@ -64,7 +64,7 @@ static struct argp_option options[] = { - {"directory", 'd', N_("DIR"), 0, - /* TRANSLATORS: platform here isn't identifier. It can be translated. */ - N_("use images and modules under DIR [default=%s/]"), 0}, -- {"prefix", 'p', N_("DIR"), 0, N_("set prefix directory [default=%s]"), 0}, -+ {"prefix", 'p', N_("DIR"), 0, N_("set prefix directory"), 0}, - {"memdisk", 'm', N_("FILE"), 0, - /* TRANSLATORS: "memdisk" here isn't an identifier, it can be translated. - "embed" is a verb (command description). "*/ -@@ -93,8 +93,6 @@ help_filter (int key, const char *text, void *input __attribute__ ((unused))) - { - case 'd': - return xasprintf (text, grub_util_get_pkglibdir ()); -- case 'p': -- return xasprintf (text, DEFAULT_DIRECTORY); - case 'O': - { - char *formats = grub_install_get_image_targets_string (), *ret; -@@ -268,6 +266,15 @@ main (int argc, char *argv[]) - exit(1); - } - -+ if (!arguments.prefix) -+ { -+ char *program = xstrdup(program_name); -+ printf ("%s\n", _("Prefix not specified (use the -p option).")); -+ argp_help (&argp, stderr, ARGP_HELP_STD_USAGE, program); -+ free (program); -+ exit(1); -+ } -+ - if (arguments.output) - { - fp = grub_util_fopen (arguments.output, "wb"); -@@ -287,8 +294,7 @@ main (int argc, char *argv[]) - strcpy (ptr, dn); - } - -- grub_install_generate_image (arguments.dir, -- arguments.prefix ? : DEFAULT_DIRECTORY, fp, -+ grub_install_generate_image (arguments.dir, arguments.prefix, fp, - arguments.output, arguments.modules, - arguments.memdisk, arguments.pubkeys, - arguments.npubkeys, arguments.config, --- -1.9.0 - diff --git a/0044-do-not-set-default-prefix-in-grub-mkimage.patch b/0044-do-not-set-default-prefix-in-grub-mkimage.patch new file mode 100644 index 0000000..dbbeb1f --- /dev/null +++ b/0044-do-not-set-default-prefix-in-grub-mkimage.patch @@ -0,0 +1,75 @@ +From 2b2a550c14e70d17af4140e64d08022ed170f0c8 Mon Sep 17 00:00:00 2001 +From: Andrey Borzenkov +Date: Sat, 25 Jan 2014 19:54:51 +0400 +Subject: [PATCH 044/125] do not set default prefix in grub-mkimage + +Default prefix is likely wrong on Unix and completely wrong on Windows. +Let caller set it explicitly to avoid any ambiguity. +--- + ChangeLog | 4 ++++ + util/grub-mkimage.c | 16 +++++++++++----- + 2 files changed, 15 insertions(+), 5 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index e149d8e..b405b7e 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,7 @@ ++2014-01-25 Andrey Borzenkov ++ ++ * util/grub-mkimage.c: Make prefix argument mandatory. ++ + 2014-01-24 Vladimir Serbinenko + + Fix several translatable strings. +diff --git a/util/grub-mkimage.c b/util/grub-mkimage.c +index a2bd4c1..1e0bcf1 100644 +--- a/util/grub-mkimage.c ++++ b/util/grub-mkimage.c +@@ -64,7 +64,7 @@ static struct argp_option options[] = { + {"directory", 'd', N_("DIR"), 0, + /* TRANSLATORS: platform here isn't identifier. It can be translated. */ + N_("use images and modules under DIR [default=%s/]"), 0}, +- {"prefix", 'p', N_("DIR"), 0, N_("set prefix directory [default=%s]"), 0}, ++ {"prefix", 'p', N_("DIR"), 0, N_("set prefix directory"), 0}, + {"memdisk", 'm', N_("FILE"), 0, + /* TRANSLATORS: "memdisk" here isn't an identifier, it can be translated. + "embed" is a verb (command description). "*/ +@@ -93,8 +93,6 @@ help_filter (int key, const char *text, void *input __attribute__ ((unused))) + { + case 'd': + return xasprintf (text, grub_util_get_pkglibdir ()); +- case 'p': +- return xasprintf (text, DEFAULT_DIRECTORY); + case 'O': + { + char *formats = grub_install_get_image_targets_string (), *ret; +@@ -268,6 +266,15 @@ main (int argc, char *argv[]) + exit(1); + } + ++ if (!arguments.prefix) ++ { ++ char *program = xstrdup(program_name); ++ printf ("%s\n", _("Prefix not specified (use the -p option).")); ++ argp_help (&argp, stderr, ARGP_HELP_STD_USAGE, program); ++ free (program); ++ exit(1); ++ } ++ + if (arguments.output) + { + fp = grub_util_fopen (arguments.output, "wb"); +@@ -287,8 +294,7 @@ main (int argc, char *argv[]) + strcpy (ptr, dn); + } + +- grub_install_generate_image (arguments.dir, +- arguments.prefix ? : DEFAULT_DIRECTORY, fp, ++ grub_install_generate_image (arguments.dir, arguments.prefix, fp, + arguments.output, arguments.modules, + arguments.memdisk, arguments.pubkeys, + arguments.npubkeys, arguments.config, +-- +1.9.0 + diff --git a/0044-fix-Mingw-W64-32-cross-compile-failure-due-to-printf.patch b/0044-fix-Mingw-W64-32-cross-compile-failure-due-to-printf.patch deleted file mode 100644 index 6a1b24a..0000000 --- a/0044-fix-Mingw-W64-32-cross-compile-failure-due-to-printf.patch +++ /dev/null @@ -1,108 +0,0 @@ -From 67c5e4180039d4b98039620f1d109a9323e4d2fe Mon Sep 17 00:00:00 2001 -From: Andrey Borzenkov -Date: Sat, 25 Jan 2014 21:49:41 +0400 -Subject: [PATCH 044/103] fix Mingw W64-32 cross compile failure due to printf - redefinition in libintl.h - -In file included from util/misc.c:36:0: -./include/grub/emu/misc.h:56:1: error: 'libintl_printf' is an unrecognized format function type [-Werror=format=] - char * EXPORT_FUNC(xasprintf) (const char *fmt, ...) __attribute__ ((format (printf, 1, 2))) WARN_UNUSED_RESULT; - ^ -./include/grub/emu/misc.h:58:1: error: 'libintl_printf' is an unrecognized format function type [-Werror=format=] - -The reason is libintl.h which redefines printf as libintl_printf. The problem -is not present in native MinGW build which avoids redefinition. Use -(format (__printf__) instead which is valid replacement in GCC. - -v2: add grub-core/lib/libgcrypt/src/g10lib.h -v3: modify g10lib.h during import ---- - ChangeLog | 9 +++++++++ - include/grub/crypto.h | 2 +- - include/grub/emu/misc.h | 8 ++++---- - include/grub/err.h | 2 +- - util/import_gcry.py | 6 ++++++ - 5 files changed, 21 insertions(+), 6 deletions(-) - -diff --git a/ChangeLog b/ChangeLog -index 3b39980..50d07c8 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,12 @@ -+ -+2014-01-25 Andrey Borzenkov -+ -+ * include/grub/crypto.h: Replace __attribute__ ((format (printf)) with -+ __attribute__ ((format (__printf__)) to fix compilation under MinGW-w64. -+ * include/grub/emu/misc.h: ... and here. -+ * include/grub/err.h: ... and here. -+ * util/import_gcry.py: ... and here (in files g10lib.h). -+ - 2014-01-25 Andrey Borzenkov - - * util/grub-mkimage.c: Make prefix argument mandatory. -diff --git a/include/grub/crypto.h b/include/grub/crypto.h -index ec1b980..a24e89d 100644 ---- a/include/grub/crypto.h -+++ b/include/grub/crypto.h -@@ -408,7 +408,7 @@ void _gcry_assert_failed (const char *expr, const char *file, int line, - const char *func) __attribute__ ((noreturn)); - - void _gcry_burn_stack (int bytes); --void _gcry_log_error( const char *fmt, ... ) __attribute__ ((format (printf, 1, 2))); -+void _gcry_log_error( const char *fmt, ... ) __attribute__ ((format (__printf__, 1, 2))); - - - #ifdef GRUB_UTIL -diff --git a/include/grub/emu/misc.h b/include/grub/emu/misc.h -index dde48c1..a588ba2 100644 ---- a/include/grub/emu/misc.h -+++ b/include/grub/emu/misc.h -@@ -53,11 +53,11 @@ grub_util_device_is_mapped (const char *dev); - void * EXPORT_FUNC(xmalloc) (grub_size_t size) WARN_UNUSED_RESULT; - void * EXPORT_FUNC(xrealloc) (void *ptr, grub_size_t size) WARN_UNUSED_RESULT; - char * EXPORT_FUNC(xstrdup) (const char *str) WARN_UNUSED_RESULT; --char * EXPORT_FUNC(xasprintf) (const char *fmt, ...) __attribute__ ((format (printf, 1, 2))) WARN_UNUSED_RESULT; -+char * EXPORT_FUNC(xasprintf) (const char *fmt, ...) __attribute__ ((format (__printf__, 1, 2))) WARN_UNUSED_RESULT; - --void EXPORT_FUNC(grub_util_warn) (const char *fmt, ...) __attribute__ ((format (printf, 1, 2))); --void EXPORT_FUNC(grub_util_info) (const char *fmt, ...) __attribute__ ((format (printf, 1, 2))); --void EXPORT_FUNC(grub_util_error) (const char *fmt, ...) __attribute__ ((format (printf, 1, 2), noreturn)); -+void EXPORT_FUNC(grub_util_warn) (const char *fmt, ...) __attribute__ ((format (__printf__, 1, 2))); -+void EXPORT_FUNC(grub_util_info) (const char *fmt, ...) __attribute__ ((format (__printf__, 1, 2))); -+void EXPORT_FUNC(grub_util_error) (const char *fmt, ...) __attribute__ ((format (__printf__, 1, 2), noreturn)); - - grub_uint64_t EXPORT_FUNC (grub_util_get_cpu_time_ms) (void); - -diff --git a/include/grub/err.h b/include/grub/err.h -index 9896fcc..1590c68 100644 ---- a/include/grub/err.h -+++ b/include/grub/err.h -@@ -91,6 +91,6 @@ int EXPORT_FUNC(grub_error_pop) (void); - void EXPORT_FUNC(grub_print_error) (void); - extern int EXPORT_VAR(grub_err_printed_errors); - int grub_err_printf (const char *fmt, ...) -- __attribute__ ((format (printf, 1, 2))); -+ __attribute__ ((format (__printf__, 1, 2))); - - #endif /* ! GRUB_ERR_HEADER */ -diff --git a/util/import_gcry.py b/util/import_gcry.py -index 63ebb90..2b3322d 100644 ---- a/util/import_gcry.py -+++ b/util/import_gcry.py -@@ -534,6 +534,12 @@ for src in sorted (os.listdir (os.path.join (indir, "src"))): - fw.close () - continue - -+ if src == "g10lib.h": -+ fw.write (f.read ().replace ("(printf,f,a)", "(__printf__,f,a)")) -+ f.close () -+ fw.close () -+ continue -+ - fw.write (f.read ()) - f.close () - fw.close () --- -1.9.0 - diff --git a/0045-fix-Mingw-W64-32-cross-compile-failure-due-to-printf.patch b/0045-fix-Mingw-W64-32-cross-compile-failure-due-to-printf.patch new file mode 100644 index 0000000..fef1a66 --- /dev/null +++ b/0045-fix-Mingw-W64-32-cross-compile-failure-due-to-printf.patch @@ -0,0 +1,108 @@ +From 90efd351fa4f81df97473e1bb8c8234a801f8ebe Mon Sep 17 00:00:00 2001 +From: Andrey Borzenkov +Date: Sat, 25 Jan 2014 21:49:41 +0400 +Subject: [PATCH 045/125] fix Mingw W64-32 cross compile failure due to printf + redefinition in libintl.h + +In file included from util/misc.c:36:0: +./include/grub/emu/misc.h:56:1: error: 'libintl_printf' is an unrecognized format function type [-Werror=format=] + char * EXPORT_FUNC(xasprintf) (const char *fmt, ...) __attribute__ ((format (printf, 1, 2))) WARN_UNUSED_RESULT; + ^ +./include/grub/emu/misc.h:58:1: error: 'libintl_printf' is an unrecognized format function type [-Werror=format=] + +The reason is libintl.h which redefines printf as libintl_printf. The problem +is not present in native MinGW build which avoids redefinition. Use +(format (__printf__) instead which is valid replacement in GCC. + +v2: add grub-core/lib/libgcrypt/src/g10lib.h +v3: modify g10lib.h during import +--- + ChangeLog | 9 +++++++++ + include/grub/crypto.h | 2 +- + include/grub/emu/misc.h | 8 ++++---- + include/grub/err.h | 2 +- + util/import_gcry.py | 6 ++++++ + 5 files changed, 21 insertions(+), 6 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index b405b7e..c93f11f 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,12 @@ ++ ++2014-01-25 Andrey Borzenkov ++ ++ * include/grub/crypto.h: Replace __attribute__ ((format (printf)) with ++ __attribute__ ((format (__printf__)) to fix compilation under MinGW-w64. ++ * include/grub/emu/misc.h: ... and here. ++ * include/grub/err.h: ... and here. ++ * util/import_gcry.py: ... and here (in files g10lib.h). ++ + 2014-01-25 Andrey Borzenkov + + * util/grub-mkimage.c: Make prefix argument mandatory. +diff --git a/include/grub/crypto.h b/include/grub/crypto.h +index ec1b980..a24e89d 100644 +--- a/include/grub/crypto.h ++++ b/include/grub/crypto.h +@@ -408,7 +408,7 @@ void _gcry_assert_failed (const char *expr, const char *file, int line, + const char *func) __attribute__ ((noreturn)); + + void _gcry_burn_stack (int bytes); +-void _gcry_log_error( const char *fmt, ... ) __attribute__ ((format (printf, 1, 2))); ++void _gcry_log_error( const char *fmt, ... ) __attribute__ ((format (__printf__, 1, 2))); + + + #ifdef GRUB_UTIL +diff --git a/include/grub/emu/misc.h b/include/grub/emu/misc.h +index dde48c1..a588ba2 100644 +--- a/include/grub/emu/misc.h ++++ b/include/grub/emu/misc.h +@@ -53,11 +53,11 @@ grub_util_device_is_mapped (const char *dev); + void * EXPORT_FUNC(xmalloc) (grub_size_t size) WARN_UNUSED_RESULT; + void * EXPORT_FUNC(xrealloc) (void *ptr, grub_size_t size) WARN_UNUSED_RESULT; + char * EXPORT_FUNC(xstrdup) (const char *str) WARN_UNUSED_RESULT; +-char * EXPORT_FUNC(xasprintf) (const char *fmt, ...) __attribute__ ((format (printf, 1, 2))) WARN_UNUSED_RESULT; ++char * EXPORT_FUNC(xasprintf) (const char *fmt, ...) __attribute__ ((format (__printf__, 1, 2))) WARN_UNUSED_RESULT; + +-void EXPORT_FUNC(grub_util_warn) (const char *fmt, ...) __attribute__ ((format (printf, 1, 2))); +-void EXPORT_FUNC(grub_util_info) (const char *fmt, ...) __attribute__ ((format (printf, 1, 2))); +-void EXPORT_FUNC(grub_util_error) (const char *fmt, ...) __attribute__ ((format (printf, 1, 2), noreturn)); ++void EXPORT_FUNC(grub_util_warn) (const char *fmt, ...) __attribute__ ((format (__printf__, 1, 2))); ++void EXPORT_FUNC(grub_util_info) (const char *fmt, ...) __attribute__ ((format (__printf__, 1, 2))); ++void EXPORT_FUNC(grub_util_error) (const char *fmt, ...) __attribute__ ((format (__printf__, 1, 2), noreturn)); + + grub_uint64_t EXPORT_FUNC (grub_util_get_cpu_time_ms) (void); + +diff --git a/include/grub/err.h b/include/grub/err.h +index 9896fcc..1590c68 100644 +--- a/include/grub/err.h ++++ b/include/grub/err.h +@@ -91,6 +91,6 @@ int EXPORT_FUNC(grub_error_pop) (void); + void EXPORT_FUNC(grub_print_error) (void); + extern int EXPORT_VAR(grub_err_printed_errors); + int grub_err_printf (const char *fmt, ...) +- __attribute__ ((format (printf, 1, 2))); ++ __attribute__ ((format (__printf__, 1, 2))); + + #endif /* ! GRUB_ERR_HEADER */ +diff --git a/util/import_gcry.py b/util/import_gcry.py +index 63ebb90..2b3322d 100644 +--- a/util/import_gcry.py ++++ b/util/import_gcry.py +@@ -534,6 +534,12 @@ for src in sorted (os.listdir (os.path.join (indir, "src"))): + fw.close () + continue + ++ if src == "g10lib.h": ++ fw.write (f.read ().replace ("(printf,f,a)", "(__printf__,f,a)")) ++ f.close () ++ fw.close () ++ continue ++ + fw.write (f.read ()) + f.close () + fw.close () +-- +1.9.0 + diff --git a/0045-grub-core-term-serial.c-grub_serial_register-Fix-inv.patch b/0045-grub-core-term-serial.c-grub_serial_register-Fix-inv.patch deleted file mode 100644 index cc8a31a..0000000 --- a/0045-grub-core-term-serial.c-grub_serial_register-Fix-inv.patch +++ /dev/null @@ -1,60 +0,0 @@ -From 7cb3659aebdd85ceb3b582b5c342b5c2ba84e904 Mon Sep 17 00:00:00 2001 -From: Vladimir Serbinenko -Date: Sun, 26 Jan 2014 02:36:05 +0100 -Subject: [PATCH 045/103] * grub-core/term/serial.c - (grub_serial_register): Fix invalid free. Ensure that pointers are - inited to NULL and that pointers are not accessed after free. - ---- - ChangeLog | 5 +++++ - grub-core/term/serial.c | 8 ++++---- - 2 files changed, 9 insertions(+), 4 deletions(-) - -diff --git a/ChangeLog b/ChangeLog -index 50d07c8..6727e6e 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,8 @@ -+2014-01-26 Vladimir Serbinenko -+ -+ * grub-core/term/serial.c (grub_serial_register): Fix invalid free. -+ Ensure that pointers are inited to NULL and that pointers are not -+ accessed after free. - - 2014-01-25 Andrey Borzenkov - -diff --git a/grub-core/term/serial.c b/grub-core/term/serial.c -index b581a76..c9b5574 100644 ---- a/grub-core/term/serial.c -+++ b/grub-core/term/serial.c -@@ -338,23 +338,23 @@ grub_serial_register (struct grub_serial_port *port) - grub_free (indata); - return grub_errno; - } -- -- out = grub_malloc (sizeof (*out)); -+ -+ out = grub_zalloc (sizeof (*out)); - if (!out) - { -- grub_free (in); - grub_free (indata); - grub_free ((char *) in->name); -+ grub_free (in); - return grub_errno; - } - - outdata = grub_malloc (sizeof (*outdata)); - if (!outdata) - { -- grub_free (in); - grub_free (indata); - grub_free ((char *) in->name); - grub_free (out); -+ grub_free (in); - return grub_errno; - } - --- -1.9.0 - diff --git a/0046-grub-core-term-serial.c-grub_serial_register-Fix-inv.patch b/0046-grub-core-term-serial.c-grub_serial_register-Fix-inv.patch new file mode 100644 index 0000000..60e2354 --- /dev/null +++ b/0046-grub-core-term-serial.c-grub_serial_register-Fix-inv.patch @@ -0,0 +1,60 @@ +From c18e39b667adb11624f3f4162c1342b76712d655 Mon Sep 17 00:00:00 2001 +From: Vladimir Serbinenko +Date: Sun, 26 Jan 2014 02:36:05 +0100 +Subject: [PATCH 046/125] * grub-core/term/serial.c + (grub_serial_register): Fix invalid free. Ensure that pointers are + inited to NULL and that pointers are not accessed after free. + +--- + ChangeLog | 5 +++++ + grub-core/term/serial.c | 8 ++++---- + 2 files changed, 9 insertions(+), 4 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index c93f11f..67b4d5c 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,8 @@ ++2014-01-26 Vladimir Serbinenko ++ ++ * grub-core/term/serial.c (grub_serial_register): Fix invalid free. ++ Ensure that pointers are inited to NULL and that pointers are not ++ accessed after free. + + 2014-01-25 Andrey Borzenkov + +diff --git a/grub-core/term/serial.c b/grub-core/term/serial.c +index b581a76..c9b5574 100644 +--- a/grub-core/term/serial.c ++++ b/grub-core/term/serial.c +@@ -338,23 +338,23 @@ grub_serial_register (struct grub_serial_port *port) + grub_free (indata); + return grub_errno; + } +- +- out = grub_malloc (sizeof (*out)); ++ ++ out = grub_zalloc (sizeof (*out)); + if (!out) + { +- grub_free (in); + grub_free (indata); + grub_free ((char *) in->name); ++ grub_free (in); + return grub_errno; + } + + outdata = grub_malloc (sizeof (*outdata)); + if (!outdata) + { +- grub_free (in); + grub_free (indata); + grub_free ((char *) in->name); + grub_free (out); ++ grub_free (in); + return grub_errno; + } + +-- +1.9.0 + diff --git a/0046-grub-install-support-for-partitioned-partx-loop-devi.patch b/0046-grub-install-support-for-partitioned-partx-loop-devi.patch deleted file mode 100644 index ea01129..0000000 --- a/0046-grub-install-support-for-partitioned-partx-loop-devi.patch +++ /dev/null @@ -1,55 +0,0 @@ -From bb87dccc37bf223ecf207660511efc93bd021a40 Mon Sep 17 00:00:00 2001 -From: Mike Gilbert -Date: Sun, 26 Jan 2014 02:56:04 +0100 -Subject: [PATCH 046/103] grub-install: support for partitioned partx - loop devices. - - * grub-core/osdep/linux/getroot.c (grub_util_part_to_disk): Detect - /dev/loopX as being the parent of /dev/loopXpY. ---- - ChangeLog | 7 +++++++ - grub-core/osdep/linux/getroot.c | 13 +++++++++++++ - 2 files changed, 20 insertions(+) - -diff --git a/ChangeLog b/ChangeLog -index 6727e6e..b80896b 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,10 @@ -+2014-01-26 Mike Gilbert -+ -+ grub-install: support for partitioned partx loop devices. -+ -+ * grub-core/osdep/linux/getroot.c (grub_util_part_to_disk): Detect -+ /dev/loopX as being the parent of /dev/loopXpY. -+ - 2014-01-26 Vladimir Serbinenko - - * grub-core/term/serial.c (grub_serial_register): Fix invalid free. -diff --git a/grub-core/osdep/linux/getroot.c b/grub-core/osdep/linux/getroot.c -index 772de0a..19581d3 100644 ---- a/grub-core/osdep/linux/getroot.c -+++ b/grub-core/osdep/linux/getroot.c -@@ -883,6 +883,19 @@ grub_util_part_to_disk (const char *os_dev, struct stat *st, - *pp = '\0'; - return path; - } -+ -+ /* If this is a loop device */ -+ if ((strncmp ("loop", p, 4) == 0) && p[4] >= '0' && p[4] <= '9') -+ { -+ char *pp = p + 4; -+ while (*pp >= '0' && *pp <= '9') -+ pp++; -+ if (*pp == 'p') -+ *is_part = 1; -+ /* /dev/loop[0-9]+p[0-9]* */ -+ *pp = '\0'; -+ return path; -+ } - } - - return path; --- -1.9.0 - diff --git a/0047-grub-core-term-at_keyboard.c-Tolerate-missing-keyboa.patch b/0047-grub-core-term-at_keyboard.c-Tolerate-missing-keyboa.patch deleted file mode 100644 index 478eafa..0000000 --- a/0047-grub-core-term-at_keyboard.c-Tolerate-missing-keyboa.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 2919748f67c5e4cf7ec9ce67604c5a82fb09036f Mon Sep 17 00:00:00 2001 -From: Vladimir Serbinenko -Date: Sun, 26 Jan 2014 03:31:10 +0100 -Subject: [PATCH 047/103] * grub-core/term/at_keyboard.c: Tolerate - missing keyboard. - ---- - ChangeLog | 4 ++++ - grub-core/term/at_keyboard.c | 3 +++ - 2 files changed, 7 insertions(+) - -diff --git a/ChangeLog b/ChangeLog -index b80896b..44f018b 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,7 @@ -+2014-01-26 Vladimir Serbinenko -+ -+ * grub-core/term/at_keyboard.c: Tolerate missing keyboard. -+ - 2014-01-26 Mike Gilbert - - grub-install: support for partitioned partx loop devices. -diff --git a/grub-core/term/at_keyboard.c b/grub-core/term/at_keyboard.c -index f5071ce..b4257e8 100644 ---- a/grub-core/term/at_keyboard.c -+++ b/grub-core/term/at_keyboard.c -@@ -396,6 +396,9 @@ fetch_key (int *is_break) - if (! KEYBOARD_ISREADY (grub_inb (KEYBOARD_REG_STATUS))) - return -1; - at_key = grub_inb (KEYBOARD_REG_DATA); -+ /* May happen if no keyboard is connected. Just ignore this. */ -+ if (at_key == 0xff) -+ return -1; - if (at_key == 0xe0) - { - e0_received = 1; --- -1.9.0 - diff --git a/0047-grub-install-support-for-partitioned-partx-loop-devi.patch b/0047-grub-install-support-for-partitioned-partx-loop-devi.patch new file mode 100644 index 0000000..913dc28 --- /dev/null +++ b/0047-grub-install-support-for-partitioned-partx-loop-devi.patch @@ -0,0 +1,55 @@ +From c889057e089d69bd187c8ba134c9669247744628 Mon Sep 17 00:00:00 2001 +From: Mike Gilbert +Date: Sun, 26 Jan 2014 02:56:04 +0100 +Subject: [PATCH 047/125] grub-install: support for partitioned partx + loop devices. + + * grub-core/osdep/linux/getroot.c (grub_util_part_to_disk): Detect + /dev/loopX as being the parent of /dev/loopXpY. +--- + ChangeLog | 7 +++++++ + grub-core/osdep/linux/getroot.c | 13 +++++++++++++ + 2 files changed, 20 insertions(+) + +diff --git a/ChangeLog b/ChangeLog +index 67b4d5c..bbec1e7 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,10 @@ ++2014-01-26 Mike Gilbert ++ ++ grub-install: support for partitioned partx loop devices. ++ ++ * grub-core/osdep/linux/getroot.c (grub_util_part_to_disk): Detect ++ /dev/loopX as being the parent of /dev/loopXpY. ++ + 2014-01-26 Vladimir Serbinenko + + * grub-core/term/serial.c (grub_serial_register): Fix invalid free. +diff --git a/grub-core/osdep/linux/getroot.c b/grub-core/osdep/linux/getroot.c +index 772de0a..19581d3 100644 +--- a/grub-core/osdep/linux/getroot.c ++++ b/grub-core/osdep/linux/getroot.c +@@ -883,6 +883,19 @@ grub_util_part_to_disk (const char *os_dev, struct stat *st, + *pp = '\0'; + return path; + } ++ ++ /* If this is a loop device */ ++ if ((strncmp ("loop", p, 4) == 0) && p[4] >= '0' && p[4] <= '9') ++ { ++ char *pp = p + 4; ++ while (*pp >= '0' && *pp <= '9') ++ pp++; ++ if (*pp == 'p') ++ *is_part = 1; ++ /* /dev/loop[0-9]+p[0-9]* */ ++ *pp = '\0'; ++ return path; ++ } + } + + return path; +-- +1.9.0 + diff --git a/0048-.gitignore-add-missing-files-and-.exe-variants.patch b/0048-.gitignore-add-missing-files-and-.exe-variants.patch deleted file mode 100644 index 3c13ced..0000000 --- a/0048-.gitignore-add-missing-files-and-.exe-variants.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 23537251e8447ea8a43b0ddc7c4e15fde69adfb2 Mon Sep 17 00:00:00 2001 -From: Paulo Flabiano Smorigo -Date: Wed, 29 Jan 2014 13:26:00 -0200 -Subject: [PATCH 048/103] .gitignore: add missing files and .exe variants. - ---- - .gitignore | 7 +++++++ - ChangeLog | 6 +++++- - 2 files changed, 12 insertions(+), 1 deletion(-) - -diff --git a/ChangeLog b/ChangeLog -index 44f018b..f4cf40f 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,7 @@ -+2014-01-29 Paulo Flabiano Smorigo -+ -+ * .gitignore: add missing files and .exe variants. -+ - 2014-01-26 Vladimir Serbinenko - - * grub-core/term/at_keyboard.c: Tolerate missing keyboard. -@@ -1113,7 +1117,7 @@ - - 2013-12-14 Vladimir Serbinenko - -- * .gitignore: Add .exe variants. Add missing files. Remove few outdated -+ * .gitignore: add .exe variants. add missing files. remove few outdated - entries. - - 2013-12-14 Vladimir Serbinenko --- -1.9.0 - diff --git a/0048-grub-core-term-at_keyboard.c-Tolerate-missing-keyboa.patch b/0048-grub-core-term-at_keyboard.c-Tolerate-missing-keyboa.patch new file mode 100644 index 0000000..036b300 --- /dev/null +++ b/0048-grub-core-term-at_keyboard.c-Tolerate-missing-keyboa.patch @@ -0,0 +1,40 @@ +From 379cbd6233fe227544ff3073b60b295fe841b654 Mon Sep 17 00:00:00 2001 +From: Vladimir Serbinenko +Date: Sun, 26 Jan 2014 03:31:10 +0100 +Subject: [PATCH 048/125] * grub-core/term/at_keyboard.c: Tolerate + missing keyboard. + +--- + ChangeLog | 4 ++++ + grub-core/term/at_keyboard.c | 3 +++ + 2 files changed, 7 insertions(+) + +diff --git a/ChangeLog b/ChangeLog +index bbec1e7..d37d4a6 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,7 @@ ++2014-01-26 Vladimir Serbinenko ++ ++ * grub-core/term/at_keyboard.c: Tolerate missing keyboard. ++ + 2014-01-26 Mike Gilbert + + grub-install: support for partitioned partx loop devices. +diff --git a/grub-core/term/at_keyboard.c b/grub-core/term/at_keyboard.c +index f5071ce..b4257e8 100644 +--- a/grub-core/term/at_keyboard.c ++++ b/grub-core/term/at_keyboard.c +@@ -396,6 +396,9 @@ fetch_key (int *is_break) + if (! KEYBOARD_ISREADY (grub_inb (KEYBOARD_REG_STATUS))) + return -1; + at_key = grub_inb (KEYBOARD_REG_DATA); ++ /* May happen if no keyboard is connected. Just ignore this. */ ++ if (at_key == 0xff) ++ return -1; + if (at_key == 0xe0) + { + e0_received = 1; +-- +1.9.0 + diff --git a/0049-.gitignore-add-missing-files-and-.exe-variants.patch b/0049-.gitignore-add-missing-files-and-.exe-variants.patch new file mode 100644 index 0000000..dfc08c5 --- /dev/null +++ b/0049-.gitignore-add-missing-files-and-.exe-variants.patch @@ -0,0 +1,34 @@ +From 58ca3abc65a64d950d6da8b473e91f16d410f1ac Mon Sep 17 00:00:00 2001 +From: Paulo Flabiano Smorigo +Date: Wed, 29 Jan 2014 13:26:00 -0200 +Subject: [PATCH 049/125] .gitignore: add missing files and .exe variants. + +--- + .gitignore | 7 +++++++ + ChangeLog | 6 +++++- + 2 files changed, 12 insertions(+), 1 deletion(-) + +diff --git a/ChangeLog b/ChangeLog +index d37d4a6..a49f5f1 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,7 @@ ++2014-01-29 Paulo Flabiano Smorigo ++ ++ * .gitignore: add missing files and .exe variants. ++ + 2014-01-26 Vladimir Serbinenko + + * grub-core/term/at_keyboard.c: Tolerate missing keyboard. +@@ -1113,7 +1117,7 @@ + + 2013-12-14 Vladimir Serbinenko + +- * .gitignore: Add .exe variants. Add missing files. Remove few outdated ++ * .gitignore: add .exe variants. add missing files. remove few outdated + entries. + + 2013-12-14 Vladimir Serbinenko +-- +1.9.0 + diff --git a/0049-util-grub-mkfont.c-Downgrade-warnings-about-unhandle.patch b/0049-util-grub-mkfont.c-Downgrade-warnings-about-unhandle.patch deleted file mode 100644 index b127be8..0000000 --- a/0049-util-grub-mkfont.c-Downgrade-warnings-about-unhandle.patch +++ /dev/null @@ -1,73 +0,0 @@ -From c3011bbece033baf950468e9c538a58822c839bc Mon Sep 17 00:00:00 2001 -From: Vladimir Serbinenko -Date: Wed, 29 Jan 2014 23:41:48 +0100 -Subject: [PATCH 049/103] * util/grub-mkfont.c: Downgrade warnings about - unhandled features to debug. - ---- - ChangeLog | 5 +++++ - util/grub-mkfont.c | 14 ++++++++------ - 2 files changed, 13 insertions(+), 6 deletions(-) - -diff --git a/ChangeLog b/ChangeLog -index f4cf40f..7aac69a 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,8 @@ -+2014-01-29 Vladimir Serbinenko -+ -+ * util/grub-mkfont.c: Downgrade warnings about unhandled features -+ to debug. -+ - 2014-01-29 Paulo Flabiano Smorigo - - * .gitignore: add missing files and .exe variants. -diff --git a/util/grub-mkfont.c b/util/grub-mkfont.c -index 3cb02ad..3de07ee 100644 ---- a/util/grub-mkfont.c -+++ b/util/grub-mkfont.c -@@ -516,8 +516,8 @@ process_cursive (struct gsub_feature *feature, - } - if (grub_be_to_cpu16 (lookup->flag) & ~GSUB_RTL_CHAR) - { -- printf (_("Unsupported substitution flag: 0x%x\n"), -- grub_be_to_cpu16 (lookup->flag)); -+ grub_util_info ("unsupported substitution flag: 0x%x", -+ grub_be_to_cpu16 (lookup->flag)); - } - switch (feattag) - { -@@ -577,7 +577,8 @@ process_cursive (struct gsub_feature *feature, - There are 2 coverage specifications: list and range. - This warning is thrown when another coverage specification - is detected. */ -- printf (_("Unsupported coverage specification: %d\n"), covertype); -+ fprintf (stderr, -+ _("Unsupported coverage specification: %d\n"), covertype); - } - } - } -@@ -616,7 +617,8 @@ add_font (struct grub_font_info *font_info, FT_Face face, int nocut) - grub_uint32_t feattag - = grub_be_to_cpu32 (features->features[i].feature_tag); - if (feature->params) -- printf (_("WARNING: unsupported font feature parameters: %x\n"), -+ fprintf (stderr, -+ _("WARNING: unsupported font feature parameters: %x\n"), - grub_be_to_cpu16 (feature->params)); - switch (feattag) - { -@@ -647,8 +649,8 @@ add_font (struct grub_font_info *font_info, FT_Face face, int nocut) - if (!grub_isgraph (str[j])) - str[j] = '?'; - /* TRANSLATORS: It's gsub feature, not gsub font. */ -- printf (_("Unknown gsub font feature 0x%x (%s)\n"), -- feattag, str); -+ grub_util_info ("Unknown gsub font feature 0x%x (%s)", -+ feattag, str); - } - } - } --- -1.9.0 - diff --git a/0050-grub-core-disk-ahci.c-Do-not-enable-I-O-decoding-and.patch b/0050-grub-core-disk-ahci.c-Do-not-enable-I-O-decoding-and.patch deleted file mode 100644 index 17bc496..0000000 --- a/0050-grub-core-disk-ahci.c-Do-not-enable-I-O-decoding-and.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 8a51c8b80452b6156148177dff95532160a88541 Mon Sep 17 00:00:00 2001 -From: Vladimir Serbinenko -Date: Wed, 29 Jan 2014 23:43:25 +0100 -Subject: [PATCH 050/103] * grub-core/disk/ahci.c: Do not enable I/O - decoding and keep enabling busmaster for the end. - ---- - ChangeLog | 5 +++++ - grub-core/disk/ahci.c | 10 ++++++---- - 2 files changed, 11 insertions(+), 4 deletions(-) - -diff --git a/ChangeLog b/ChangeLog -index 7aac69a..1b8aae2 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,5 +1,10 @@ - 2014-01-29 Vladimir Serbinenko - -+ * grub-core/disk/ahci.c: Do not enable I/O decoding and keep -+ enabling busmaster for the end. -+ -+2014-01-29 Vladimir Serbinenko -+ - * util/grub-mkfont.c: Downgrade warnings about unhandled features - to debug. - -diff --git a/grub-core/disk/ahci.c b/grub-core/disk/ahci.c -index 0b13fb8..18c1327 100644 ---- a/grub-core/disk/ahci.c -+++ b/grub-core/disk/ahci.c -@@ -194,10 +194,8 @@ grub_ahci_pciinit (grub_pci_device_t dev, - return 0; - - addr = grub_pci_make_address (dev, GRUB_PCI_REG_COMMAND); -- grub_pci_write_word (addr, grub_pci_read_word (addr) | -- GRUB_PCI_COMMAND_IO_ENABLED -- | GRUB_PCI_COMMAND_MEM_ENABLED -- | GRUB_PCI_COMMAND_BUS_MASTER); -+ grub_pci_write_word (addr, grub_pci_read_word (addr) -+ | GRUB_PCI_COMMAND_MEM_ENABLED); - - hba = grub_pci_device_map_range (dev, bar & GRUB_PCI_ADDR_MEM_MASK, - sizeof (hba)); -@@ -621,6 +619,10 @@ grub_ahci_pciinit (grub_pci_device_t dev, - if (adevs[i] && (adevs[i]->hba->ports[adevs[i]->port].sig >> 16) == 0xeb14) - adevs[i]->atapi = 1; - -+ addr = grub_pci_make_address (dev, GRUB_PCI_REG_COMMAND); -+ grub_pci_write_word (addr, grub_pci_read_word (addr) -+ | GRUB_PCI_COMMAND_BUS_MASTER); -+ - for (i = 0; i < nports; i++) - if (adevs[i]) - { --- -1.9.0 - diff --git a/0050-util-grub-mkfont.c-Downgrade-warnings-about-unhandle.patch b/0050-util-grub-mkfont.c-Downgrade-warnings-about-unhandle.patch new file mode 100644 index 0000000..3863f89 --- /dev/null +++ b/0050-util-grub-mkfont.c-Downgrade-warnings-about-unhandle.patch @@ -0,0 +1,77 @@ +From f21c40f33c95d908cee32a5063f285d22574a507 Mon Sep 17 00:00:00 2001 +From: Vladimir Serbinenko +Date: Wed, 29 Jan 2014 23:41:48 +0100 +Subject: [PATCH 050/125] * util/grub-mkfont.c: Downgrade warnings about + unhandled features to debug. + +--- + ChangeLog | 9 +++++++++ + util/grub-mkfont.c | 14 ++++++++------ + 2 files changed, 17 insertions(+), 6 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index a49f5f1..9837c7f 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,12 @@ ++2014-01-29 Vladimir Serbinenko ++ ++ * util/grub-mkfont.c: Downgrade warnings about unhandled features ++ to debug. ++ ++2014-01-29 Vladimir Serbinenko ++ ++ * grub-core/term/at_keyboard.c: Tolerate missing keyboard. ++ + 2014-01-29 Paulo Flabiano Smorigo + + * .gitignore: add missing files and .exe variants. +diff --git a/util/grub-mkfont.c b/util/grub-mkfont.c +index 3cb02ad..3de07ee 100644 +--- a/util/grub-mkfont.c ++++ b/util/grub-mkfont.c +@@ -516,8 +516,8 @@ process_cursive (struct gsub_feature *feature, + } + if (grub_be_to_cpu16 (lookup->flag) & ~GSUB_RTL_CHAR) + { +- printf (_("Unsupported substitution flag: 0x%x\n"), +- grub_be_to_cpu16 (lookup->flag)); ++ grub_util_info ("unsupported substitution flag: 0x%x", ++ grub_be_to_cpu16 (lookup->flag)); + } + switch (feattag) + { +@@ -577,7 +577,8 @@ process_cursive (struct gsub_feature *feature, + There are 2 coverage specifications: list and range. + This warning is thrown when another coverage specification + is detected. */ +- printf (_("Unsupported coverage specification: %d\n"), covertype); ++ fprintf (stderr, ++ _("Unsupported coverage specification: %d\n"), covertype); + } + } + } +@@ -616,7 +617,8 @@ add_font (struct grub_font_info *font_info, FT_Face face, int nocut) + grub_uint32_t feattag + = grub_be_to_cpu32 (features->features[i].feature_tag); + if (feature->params) +- printf (_("WARNING: unsupported font feature parameters: %x\n"), ++ fprintf (stderr, ++ _("WARNING: unsupported font feature parameters: %x\n"), + grub_be_to_cpu16 (feature->params)); + switch (feattag) + { +@@ -647,8 +649,8 @@ add_font (struct grub_font_info *font_info, FT_Face face, int nocut) + if (!grub_isgraph (str[j])) + str[j] = '?'; + /* TRANSLATORS: It's gsub feature, not gsub font. */ +- printf (_("Unknown gsub font feature 0x%x (%s)\n"), +- feattag, str); ++ grub_util_info ("Unknown gsub font feature 0x%x (%s)", ++ feattag, str); + } + } + } +-- +1.9.0 + diff --git a/0051-grub-core-disk-ahci.c-Allocate-and-clean-space-for-a.patch b/0051-grub-core-disk-ahci.c-Allocate-and-clean-space-for-a.patch deleted file mode 100644 index 5203c0c..0000000 --- a/0051-grub-core-disk-ahci.c-Allocate-and-clean-space-for-a.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 8465dd514df3e1bbdec7e001c7d3c343cd355d42 Mon Sep 17 00:00:00 2001 -From: Vladimir Serbinenko -Date: Wed, 29 Jan 2014 23:45:18 +0100 -Subject: [PATCH 051/103] * grub-core/disk/ahci.c: Allocate and clean - space for all possible 32 slots to avoid pointing to uninited area. - ---- - ChangeLog | 5 +++++ - grub-core/disk/ahci.c | 8 +++++++- - 2 files changed, 12 insertions(+), 1 deletion(-) - -diff --git a/ChangeLog b/ChangeLog -index 1b8aae2..2a8f372 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,5 +1,10 @@ - 2014-01-29 Vladimir Serbinenko - -+ * grub-core/disk/ahci.c: Allocate and clean space for all possible 32 -+ slots to avoid pointing to uninited area. -+ -+2014-01-29 Vladimir Serbinenko -+ - * grub-core/disk/ahci.c: Do not enable I/O decoding and keep - enabling busmaster for the end. - -diff --git a/grub-core/disk/ahci.c b/grub-core/disk/ahci.c -index 18c1327..d63fd09 100644 ---- a/grub-core/disk/ahci.c -+++ b/grub-core/disk/ahci.c -@@ -358,7 +358,7 @@ grub_ahci_pciinit (grub_pci_device_t dev, - grub_dprintf ("ahci", "err: %x\n", - adevs[i]->hba->ports[adevs[i]->port].sata_error); - -- adevs[i]->command_list_chunk = grub_memalign_dma32 (1024, sizeof (struct grub_ahci_cmd_head)); -+ adevs[i]->command_list_chunk = grub_memalign_dma32 (1024, sizeof (struct grub_ahci_cmd_head) * 32); - if (!adevs[i]->command_list_chunk) - { - adevs[i] = 0; -@@ -376,6 +376,12 @@ grub_ahci_pciinit (grub_pci_device_t dev, - - adevs[i]->command_list = grub_dma_get_virt (adevs[i]->command_list_chunk); - adevs[i]->command_table = grub_dma_get_virt (adevs[i]->command_table_chunk); -+ -+ grub_memset ((void *) adevs[i]->command_list, 0, -+ sizeof (struct grub_ahci_cmd_table)); -+ grub_memset ((void *) adevs[i]->command_table, 0, -+ sizeof (struct grub_ahci_cmd_head) * 32); -+ - adevs[i]->command_list->command_table_base - = grub_dma_get_phys (adevs[i]->command_table_chunk); - --- -1.9.0 - diff --git a/0051-grub-core-disk-ahci.c-Do-not-enable-I-O-decoding-and.patch b/0051-grub-core-disk-ahci.c-Do-not-enable-I-O-decoding-and.patch new file mode 100644 index 0000000..d411536 --- /dev/null +++ b/0051-grub-core-disk-ahci.c-Do-not-enable-I-O-decoding-and.patch @@ -0,0 +1,57 @@ +From 5795341bb64a4e101d7c067d688b19a41dd50662 Mon Sep 17 00:00:00 2001 +From: Vladimir Serbinenko +Date: Wed, 29 Jan 2014 23:43:25 +0100 +Subject: [PATCH 051/125] * grub-core/disk/ahci.c: Do not enable I/O + decoding and keep enabling busmaster for the end. + +--- + ChangeLog | 5 +++++ + grub-core/disk/ahci.c | 10 ++++++---- + 2 files changed, 11 insertions(+), 4 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index 9837c7f..51eba95 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,5 +1,10 @@ + 2014-01-29 Vladimir Serbinenko + ++ * grub-core/disk/ahci.c: Do not enable I/O decoding and keep ++ enabling busmaster for the end. ++ ++2014-01-29 Vladimir Serbinenko ++ + * util/grub-mkfont.c: Downgrade warnings about unhandled features + to debug. + +diff --git a/grub-core/disk/ahci.c b/grub-core/disk/ahci.c +index 0b13fb8..18c1327 100644 +--- a/grub-core/disk/ahci.c ++++ b/grub-core/disk/ahci.c +@@ -194,10 +194,8 @@ grub_ahci_pciinit (grub_pci_device_t dev, + return 0; + + addr = grub_pci_make_address (dev, GRUB_PCI_REG_COMMAND); +- grub_pci_write_word (addr, grub_pci_read_word (addr) | +- GRUB_PCI_COMMAND_IO_ENABLED +- | GRUB_PCI_COMMAND_MEM_ENABLED +- | GRUB_PCI_COMMAND_BUS_MASTER); ++ grub_pci_write_word (addr, grub_pci_read_word (addr) ++ | GRUB_PCI_COMMAND_MEM_ENABLED); + + hba = grub_pci_device_map_range (dev, bar & GRUB_PCI_ADDR_MEM_MASK, + sizeof (hba)); +@@ -621,6 +619,10 @@ grub_ahci_pciinit (grub_pci_device_t dev, + if (adevs[i] && (adevs[i]->hba->ports[adevs[i]->port].sig >> 16) == 0xeb14) + adevs[i]->atapi = 1; + ++ addr = grub_pci_make_address (dev, GRUB_PCI_REG_COMMAND); ++ grub_pci_write_word (addr, grub_pci_read_word (addr) ++ | GRUB_PCI_COMMAND_BUS_MASTER); ++ + for (i = 0; i < nports; i++) + if (adevs[i]) + { +-- +1.9.0 + diff --git a/0052-grub-core-disk-ahci.c-Add-safety-cleanups.patch b/0052-grub-core-disk-ahci.c-Add-safety-cleanups.patch deleted file mode 100644 index ca412da..0000000 --- a/0052-grub-core-disk-ahci.c-Add-safety-cleanups.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 1d7a31631db690d4159e1c1415cb074c9ef25c1f Mon Sep 17 00:00:00 2001 -From: Vladimir Serbinenko -Date: Wed, 29 Jan 2014 23:46:17 +0100 -Subject: [PATCH 052/103] * grub-core/disk/ahci.c: Add safety cleanups. - ---- - ChangeLog | 4 ++++ - grub-core/disk/ahci.c | 10 ++++++++++ - 2 files changed, 14 insertions(+) - -diff --git a/ChangeLog b/ChangeLog -index 2a8f372..0385937 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,5 +1,9 @@ - 2014-01-29 Vladimir Serbinenko - -+ * grub-core/disk/ahci.c: Add safety cleanups. -+ -+2014-01-29 Vladimir Serbinenko -+ - * grub-core/disk/ahci.c: Allocate and clean space for all possible 32 - slots to avoid pointing to uninited area. - -diff --git a/grub-core/disk/ahci.c b/grub-core/disk/ahci.c -index d63fd09..643e691 100644 ---- a/grub-core/disk/ahci.c -+++ b/grub-core/disk/ahci.c -@@ -454,6 +454,7 @@ grub_ahci_pciinit (grub_pci_device_t dev, - adevs[i]->hba->ports[adevs[i]->port].fis_base = grub_dma_get_phys (adevs[i]->rfis); - adevs[i]->hba->ports[adevs[i]->port].command_list_base - = grub_dma_get_phys (adevs[i]->command_list_chunk); -+ adevs[i]->hba->ports[adevs[i]->port].command_issue = 0; - adevs[i]->hba->ports[adevs[i]->port].command |= GRUB_AHCI_HBA_PORT_CMD_FRE; - } - -@@ -600,6 +601,9 @@ grub_ahci_pciinit (grub_pci_device_t dev, - failed_adevs[i] = adevs[i]; - adevs[i] = 0; - } -+ -+ grub_dprintf ("ahci", "cleaning up failed devs\n"); -+ - for (i = 0; i < nports; i++) - if (failed_adevs[i] && (fr_running & (1 << i))) - failed_adevs[i]->hba->ports[failed_adevs[i]->port].command &= ~GRUB_AHCI_HBA_PORT_CMD_FRE; -@@ -855,6 +859,12 @@ grub_ahci_reset_port (struct grub_ahci_device *dev, int force) - { - struct grub_disk_ata_pass_through_parms parms2; - dev->hba->ports[dev->port].command &= ~GRUB_AHCI_HBA_PORT_CMD_ST; -+ dev->hba->ports[dev->port].command_issue = 0; -+ dev->command_list[0].config = 0; -+ dev->command_table[0].prdt[0].unused = 0; -+ dev->command_table[0].prdt[0].size = 0; -+ dev->command_table[0].prdt[0].data_base = 0; -+ - endtime = grub_get_time_ms () + 1000; - while ((dev->hba->ports[dev->port].command & GRUB_AHCI_HBA_PORT_CMD_CR)) - if (grub_get_time_ms () > endtime) --- -1.9.0 - diff --git a/0052-grub-core-disk-ahci.c-Allocate-and-clean-space-for-a.patch b/0052-grub-core-disk-ahci.c-Allocate-and-clean-space-for-a.patch new file mode 100644 index 0000000..50eb17d --- /dev/null +++ b/0052-grub-core-disk-ahci.c-Allocate-and-clean-space-for-a.patch @@ -0,0 +1,55 @@ +From 50cb0018044359180aa57e6aa7ec944def83bbcc Mon Sep 17 00:00:00 2001 +From: Vladimir Serbinenko +Date: Wed, 29 Jan 2014 23:45:18 +0100 +Subject: [PATCH 052/125] * grub-core/disk/ahci.c: Allocate and clean + space for all possible 32 slots to avoid pointing to uninited area. + +--- + ChangeLog | 5 +++++ + grub-core/disk/ahci.c | 8 +++++++- + 2 files changed, 12 insertions(+), 1 deletion(-) + +diff --git a/ChangeLog b/ChangeLog +index 51eba95..9bb1817 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,5 +1,10 @@ + 2014-01-29 Vladimir Serbinenko + ++ * grub-core/disk/ahci.c: Allocate and clean space for all possible 32 ++ slots to avoid pointing to uninited area. ++ ++2014-01-29 Vladimir Serbinenko ++ + * grub-core/disk/ahci.c: Do not enable I/O decoding and keep + enabling busmaster for the end. + +diff --git a/grub-core/disk/ahci.c b/grub-core/disk/ahci.c +index 18c1327..d63fd09 100644 +--- a/grub-core/disk/ahci.c ++++ b/grub-core/disk/ahci.c +@@ -358,7 +358,7 @@ grub_ahci_pciinit (grub_pci_device_t dev, + grub_dprintf ("ahci", "err: %x\n", + adevs[i]->hba->ports[adevs[i]->port].sata_error); + +- adevs[i]->command_list_chunk = grub_memalign_dma32 (1024, sizeof (struct grub_ahci_cmd_head)); ++ adevs[i]->command_list_chunk = grub_memalign_dma32 (1024, sizeof (struct grub_ahci_cmd_head) * 32); + if (!adevs[i]->command_list_chunk) + { + adevs[i] = 0; +@@ -376,6 +376,12 @@ grub_ahci_pciinit (grub_pci_device_t dev, + + adevs[i]->command_list = grub_dma_get_virt (adevs[i]->command_list_chunk); + adevs[i]->command_table = grub_dma_get_virt (adevs[i]->command_table_chunk); ++ ++ grub_memset ((void *) adevs[i]->command_list, 0, ++ sizeof (struct grub_ahci_cmd_table)); ++ grub_memset ((void *) adevs[i]->command_table, 0, ++ sizeof (struct grub_ahci_cmd_head) * 32); ++ + adevs[i]->command_list->command_table_base + = grub_dma_get_phys (adevs[i]->command_table_chunk); + +-- +1.9.0 + diff --git a/0053-grub-core-disk-ahci.c-Add-safety-cleanups.patch b/0053-grub-core-disk-ahci.c-Add-safety-cleanups.patch new file mode 100644 index 0000000..56562d1 --- /dev/null +++ b/0053-grub-core-disk-ahci.c-Add-safety-cleanups.patch @@ -0,0 +1,62 @@ +From 3f00de9c207fb4b3f9e45fd775650404ce087aac Mon Sep 17 00:00:00 2001 +From: Vladimir Serbinenko +Date: Wed, 29 Jan 2014 23:46:17 +0100 +Subject: [PATCH 053/125] * grub-core/disk/ahci.c: Add safety cleanups. + +--- + ChangeLog | 4 ++++ + grub-core/disk/ahci.c | 10 ++++++++++ + 2 files changed, 14 insertions(+) + +diff --git a/ChangeLog b/ChangeLog +index 9bb1817..15300b0 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,5 +1,9 @@ + 2014-01-29 Vladimir Serbinenko + ++ * grub-core/disk/ahci.c: Add safety cleanups. ++ ++2014-01-29 Vladimir Serbinenko ++ + * grub-core/disk/ahci.c: Allocate and clean space for all possible 32 + slots to avoid pointing to uninited area. + +diff --git a/grub-core/disk/ahci.c b/grub-core/disk/ahci.c +index d63fd09..643e691 100644 +--- a/grub-core/disk/ahci.c ++++ b/grub-core/disk/ahci.c +@@ -454,6 +454,7 @@ grub_ahci_pciinit (grub_pci_device_t dev, + adevs[i]->hba->ports[adevs[i]->port].fis_base = grub_dma_get_phys (adevs[i]->rfis); + adevs[i]->hba->ports[adevs[i]->port].command_list_base + = grub_dma_get_phys (adevs[i]->command_list_chunk); ++ adevs[i]->hba->ports[adevs[i]->port].command_issue = 0; + adevs[i]->hba->ports[adevs[i]->port].command |= GRUB_AHCI_HBA_PORT_CMD_FRE; + } + +@@ -600,6 +601,9 @@ grub_ahci_pciinit (grub_pci_device_t dev, + failed_adevs[i] = adevs[i]; + adevs[i] = 0; + } ++ ++ grub_dprintf ("ahci", "cleaning up failed devs\n"); ++ + for (i = 0; i < nports; i++) + if (failed_adevs[i] && (fr_running & (1 << i))) + failed_adevs[i]->hba->ports[failed_adevs[i]->port].command &= ~GRUB_AHCI_HBA_PORT_CMD_FRE; +@@ -855,6 +859,12 @@ grub_ahci_reset_port (struct grub_ahci_device *dev, int force) + { + struct grub_disk_ata_pass_through_parms parms2; + dev->hba->ports[dev->port].command &= ~GRUB_AHCI_HBA_PORT_CMD_ST; ++ dev->hba->ports[dev->port].command_issue = 0; ++ dev->command_list[0].config = 0; ++ dev->command_table[0].prdt[0].unused = 0; ++ dev->command_table[0].prdt[0].size = 0; ++ dev->command_table[0].prdt[0].data_base = 0; ++ + endtime = grub_get_time_ms () + 1000; + while ((dev->hba->ports[dev->port].command & GRUB_AHCI_HBA_PORT_CMD_CR)) + if (grub_get_time_ms () > endtime) +-- +1.9.0 + diff --git a/0053-grub-core-disk-ahci.c-Properly-handle-transactions-w.patch b/0053-grub-core-disk-ahci.c-Properly-handle-transactions-w.patch deleted file mode 100644 index 90fc13f..0000000 --- a/0053-grub-core-disk-ahci.c-Properly-handle-transactions-w.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 056070c0cadb1af383d46ca6441f34d79c0298ca Mon Sep 17 00:00:00 2001 -From: Vladimir Serbinenko -Date: Wed, 29 Jan 2014 23:49:51 +0100 -Subject: [PATCH 053/103] * grub-core/disk/ahci.c: Properly handle - transactions with no transferred data. - ---- - ChangeLog | 5 +++++ - grub-core/disk/ahci.c | 7 +++++-- - 2 files changed, 10 insertions(+), 2 deletions(-) - -diff --git a/ChangeLog b/ChangeLog -index 0385937..d84aff0 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,5 +1,10 @@ - 2014-01-29 Vladimir Serbinenko - -+ * grub-core/disk/ahci.c: Properly handle transactions with no -+ transferred data. -+ -+2014-01-29 Vladimir Serbinenko -+ - * grub-core/disk/ahci.c: Add safety cleanups. - - 2014-01-29 Vladimir Serbinenko -diff --git a/grub-core/disk/ahci.c b/grub-core/disk/ahci.c -index 643e691..fdd40c6 100644 ---- a/grub-core/disk/ahci.c -+++ b/grub-core/disk/ahci.c -@@ -932,7 +932,10 @@ grub_ahci_readwrite_real (struct grub_ahci_device *dev, - if (parms->size > GRUB_AHCI_PRDT_MAX_CHUNK_LENGTH) - return grub_error (GRUB_ERR_BUG, "too big data buffer"); - -- bufc = grub_memalign_dma32 (1024, parms->size + (parms->size & 1)); -+ if (parms->size) -+ bufc = grub_memalign_dma32 (1024, parms->size + (parms->size & 1)); -+ else -+ bufc = grub_memalign_dma32 (1024, 512); - - grub_dprintf ("ahci", "AHCI tfd = %x, CL=%p\n", - dev->hba->ports[dev->port].task_file_data, -@@ -942,7 +945,7 @@ grub_ahci_readwrite_real (struct grub_ahci_device *dev, - = (5 << GRUB_AHCI_CONFIG_CFIS_LENGTH_SHIFT) - // | GRUB_AHCI_CONFIG_CLEAR_R_OK - | (0 << GRUB_AHCI_CONFIG_PMP_SHIFT) -- | (1 << GRUB_AHCI_CONFIG_PRDT_LENGTH_SHIFT) -+ | ((parms->size ? 1 : 0) << GRUB_AHCI_CONFIG_PRDT_LENGTH_SHIFT) - | (parms->cmdsize ? GRUB_AHCI_CONFIG_ATAPI : 0) - | (parms->write ? GRUB_AHCI_CONFIG_WRITE : GRUB_AHCI_CONFIG_READ) - | (parms->taskfile.cmd == 8 ? (1 << 8) : 0); --- -1.9.0 - diff --git a/0054-grub-core-disk-ahci.c-Increase-timeout.-Some-SSDs-ta.patch b/0054-grub-core-disk-ahci.c-Increase-timeout.-Some-SSDs-ta.patch deleted file mode 100644 index f61eac4..0000000 --- a/0054-grub-core-disk-ahci.c-Increase-timeout.-Some-SSDs-ta.patch +++ /dev/null @@ -1,42 +0,0 @@ -From a50391c562f002d026dad5ef14ab7fd175154e07 Mon Sep 17 00:00:00 2001 -From: Vladimir Serbinenko -Date: Wed, 29 Jan 2014 23:50:49 +0100 -Subject: [PATCH 054/103] * grub-core/disk/ahci.c: Increase timeout. - Some SSDs take up to 7 seconds to recover if last poweroff was bad. - ---- - ChangeLog | 5 +++++ - grub-core/disk/ahci.c | 2 +- - 2 files changed, 6 insertions(+), 1 deletion(-) - -diff --git a/ChangeLog b/ChangeLog -index d84aff0..9d0b00b 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,5 +1,10 @@ - 2014-01-29 Vladimir Serbinenko - -+ * grub-core/disk/ahci.c: Increase timeout. Some SSDs take up to -+ 7 seconds to recover if last poweroff was bad. -+ -+2014-01-29 Vladimir Serbinenko -+ - * grub-core/disk/ahci.c: Properly handle transactions with no - transferred data. - -diff --git a/grub-core/disk/ahci.c b/grub-core/disk/ahci.c -index fdd40c6..5e4a639 100644 ---- a/grub-core/disk/ahci.c -+++ b/grub-core/disk/ahci.c -@@ -1022,7 +1022,7 @@ grub_ahci_readwrite_real (struct grub_ahci_device *dev, - grub_dprintf ("ahci", "AHCI tfd = %x\n", - dev->hba->ports[dev->port].task_file_data); - -- endtime = grub_get_time_ms () + (spinup ? 10000 : 5000); -+ endtime = grub_get_time_ms () + (spinup ? 20000 : 20000); - while ((dev->hba->ports[dev->port].command_issue & 1)) - if (grub_get_time_ms () > endtime) - { --- -1.9.0 - diff --git a/0054-grub-core-disk-ahci.c-Properly-handle-transactions-w.patch b/0054-grub-core-disk-ahci.c-Properly-handle-transactions-w.patch new file mode 100644 index 0000000..7976cd7 --- /dev/null +++ b/0054-grub-core-disk-ahci.c-Properly-handle-transactions-w.patch @@ -0,0 +1,54 @@ +From 5e8c619b17cdf70b30d37412738b149d80874c28 Mon Sep 17 00:00:00 2001 +From: Vladimir Serbinenko +Date: Wed, 29 Jan 2014 23:49:51 +0100 +Subject: [PATCH 054/125] * grub-core/disk/ahci.c: Properly handle + transactions with no transferred data. + +--- + ChangeLog | 5 +++++ + grub-core/disk/ahci.c | 7 +++++-- + 2 files changed, 10 insertions(+), 2 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index 15300b0..bc1ab23 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,5 +1,10 @@ + 2014-01-29 Vladimir Serbinenko + ++ * grub-core/disk/ahci.c: Properly handle transactions with no ++ transferred data. ++ ++2014-01-29 Vladimir Serbinenko ++ + * grub-core/disk/ahci.c: Add safety cleanups. + + 2014-01-29 Vladimir Serbinenko +diff --git a/grub-core/disk/ahci.c b/grub-core/disk/ahci.c +index 643e691..fdd40c6 100644 +--- a/grub-core/disk/ahci.c ++++ b/grub-core/disk/ahci.c +@@ -932,7 +932,10 @@ grub_ahci_readwrite_real (struct grub_ahci_device *dev, + if (parms->size > GRUB_AHCI_PRDT_MAX_CHUNK_LENGTH) + return grub_error (GRUB_ERR_BUG, "too big data buffer"); + +- bufc = grub_memalign_dma32 (1024, parms->size + (parms->size & 1)); ++ if (parms->size) ++ bufc = grub_memalign_dma32 (1024, parms->size + (parms->size & 1)); ++ else ++ bufc = grub_memalign_dma32 (1024, 512); + + grub_dprintf ("ahci", "AHCI tfd = %x, CL=%p\n", + dev->hba->ports[dev->port].task_file_data, +@@ -942,7 +945,7 @@ grub_ahci_readwrite_real (struct grub_ahci_device *dev, + = (5 << GRUB_AHCI_CONFIG_CFIS_LENGTH_SHIFT) + // | GRUB_AHCI_CONFIG_CLEAR_R_OK + | (0 << GRUB_AHCI_CONFIG_PMP_SHIFT) +- | (1 << GRUB_AHCI_CONFIG_PRDT_LENGTH_SHIFT) ++ | ((parms->size ? 1 : 0) << GRUB_AHCI_CONFIG_PRDT_LENGTH_SHIFT) + | (parms->cmdsize ? GRUB_AHCI_CONFIG_ATAPI : 0) + | (parms->write ? GRUB_AHCI_CONFIG_WRITE : GRUB_AHCI_CONFIG_READ) + | (parms->taskfile.cmd == 8 ? (1 << 8) : 0); +-- +1.9.0 + diff --git a/0055-grub-core-disk-ahci.c-Increase-timeout.-Some-SSDs-ta.patch b/0055-grub-core-disk-ahci.c-Increase-timeout.-Some-SSDs-ta.patch new file mode 100644 index 0000000..a287d35 --- /dev/null +++ b/0055-grub-core-disk-ahci.c-Increase-timeout.-Some-SSDs-ta.patch @@ -0,0 +1,42 @@ +From 45dd39fb467d061a550113fd5e5431209f0db73c Mon Sep 17 00:00:00 2001 +From: Vladimir Serbinenko +Date: Wed, 29 Jan 2014 23:50:49 +0100 +Subject: [PATCH 055/125] * grub-core/disk/ahci.c: Increase timeout. + Some SSDs take up to 7 seconds to recover if last poweroff was bad. + +--- + ChangeLog | 5 +++++ + grub-core/disk/ahci.c | 2 +- + 2 files changed, 6 insertions(+), 1 deletion(-) + +diff --git a/ChangeLog b/ChangeLog +index bc1ab23..1a822f3 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,5 +1,10 @@ + 2014-01-29 Vladimir Serbinenko + ++ * grub-core/disk/ahci.c: Increase timeout. Some SSDs take up to ++ 7 seconds to recover if last poweroff was bad. ++ ++2014-01-29 Vladimir Serbinenko ++ + * grub-core/disk/ahci.c: Properly handle transactions with no + transferred data. + +diff --git a/grub-core/disk/ahci.c b/grub-core/disk/ahci.c +index fdd40c6..5e4a639 100644 +--- a/grub-core/disk/ahci.c ++++ b/grub-core/disk/ahci.c +@@ -1022,7 +1022,7 @@ grub_ahci_readwrite_real (struct grub_ahci_device *dev, + grub_dprintf ("ahci", "AHCI tfd = %x\n", + dev->hba->ports[dev->port].task_file_data); + +- endtime = grub_get_time_ms () + (spinup ? 10000 : 5000); ++ endtime = grub_get_time_ms () + (spinup ? 20000 : 20000); + while ((dev->hba->ports[dev->port].command_issue & 1)) + if (grub_get_time_ms () > endtime) + { +-- +1.9.0 + diff --git a/0055-util-grub-mkfont.c-Build-fix-for-argp.h-with-older-g.patch b/0055-util-grub-mkfont.c-Build-fix-for-argp.h-with-older-g.patch deleted file mode 100644 index dc77541..0000000 --- a/0055-util-grub-mkfont.c-Build-fix-for-argp.h-with-older-g.patch +++ /dev/null @@ -1,42 +0,0 @@ -From e4aba2a9e4a0e2f7966c8225fc4f500a65c81361 Mon Sep 17 00:00:00 2001 -From: Vladimir Serbinenko -Date: Mon, 3 Feb 2014 14:34:27 +0100 -Subject: [PATCH 055/103] * util/grub-mkfont.c: Build fix for argp.h - with older gcc. - ---- - ChangeLog | 4 ++++ - util/grub-mkfont.c | 4 ++++ - 2 files changed, 8 insertions(+) - -diff --git a/ChangeLog b/ChangeLog -index 9d0b00b..f5472af 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,7 @@ -+2014-02-03 Vladimir Serbinenko -+ -+ * util/grub-mkfont.c: Build fix for argp.h with older gcc. -+ - 2014-01-29 Vladimir Serbinenko - - * grub-core/disk/ahci.c: Increase timeout. Some SSDs take up to -diff --git a/util/grub-mkfont.c b/util/grub-mkfont.c -index 3de07ee..e6485b4 100644 ---- a/util/grub-mkfont.c -+++ b/util/grub-mkfont.c -@@ -33,7 +33,11 @@ - - #ifndef GRUB_BUILD - #define _GNU_SOURCE 1 -+#pragma GCC diagnostic ignored "-Wmissing-prototypes" -+#pragma GCC diagnostic ignored "-Wmissing-declarations" - #include -+#pragma GCC diagnostic error "-Wmissing-prototypes" -+#pragma GCC diagnostic error "-Wmissing-declarations" - #endif - #include - --- -1.9.0 - diff --git a/0056-util-grub-mkfont.c-Build-fix-for-argp.h-with-older-g.patch b/0056-util-grub-mkfont.c-Build-fix-for-argp.h-with-older-g.patch new file mode 100644 index 0000000..9e4b89a --- /dev/null +++ b/0056-util-grub-mkfont.c-Build-fix-for-argp.h-with-older-g.patch @@ -0,0 +1,42 @@ +From 767cf43a2e5c738df50155cc8729ad0f57d6ab47 Mon Sep 17 00:00:00 2001 +From: Vladimir Serbinenko +Date: Mon, 3 Feb 2014 14:34:27 +0100 +Subject: [PATCH 056/125] * util/grub-mkfont.c: Build fix for argp.h + with older gcc. + +--- + ChangeLog | 4 ++++ + util/grub-mkfont.c | 4 ++++ + 2 files changed, 8 insertions(+) + +diff --git a/ChangeLog b/ChangeLog +index 1a822f3..f2bba84 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,7 @@ ++2014-02-03 Vladimir Serbinenko ++ ++ * util/grub-mkfont.c: Build fix for argp.h with older gcc. ++ + 2014-01-29 Vladimir Serbinenko + + * grub-core/disk/ahci.c: Increase timeout. Some SSDs take up to +diff --git a/util/grub-mkfont.c b/util/grub-mkfont.c +index 3de07ee..e6485b4 100644 +--- a/util/grub-mkfont.c ++++ b/util/grub-mkfont.c +@@ -33,7 +33,11 @@ + + #ifndef GRUB_BUILD + #define _GNU_SOURCE 1 ++#pragma GCC diagnostic ignored "-Wmissing-prototypes" ++#pragma GCC diagnostic ignored "-Wmissing-declarations" + #include ++#pragma GCC diagnostic error "-Wmissing-prototypes" ++#pragma GCC diagnostic error "-Wmissing-declarations" + #endif + #include + +-- +1.9.0 + diff --git a/0056-util-grub-mkrescue.c-Build-fix-for-argp.h-with-older.patch b/0056-util-grub-mkrescue.c-Build-fix-for-argp.h-with-older.patch deleted file mode 100644 index a267e6b..0000000 --- a/0056-util-grub-mkrescue.c-Build-fix-for-argp.h-with-older.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 51490b569b3c08672685eaf85431f7015f55b86d Mon Sep 17 00:00:00 2001 -From: Vladimir Serbinenko -Date: Mon, 3 Feb 2014 14:35:51 +0100 -Subject: [PATCH 056/103] * util/grub-mkrescue.c: Build fix for argp.h - with older gcc. - ---- - ChangeLog | 4 ++++ - util/grub-mkrescue.c | 4 ++++ - 2 files changed, 8 insertions(+) - -diff --git a/ChangeLog b/ChangeLog -index f5472af..2e0bdfc 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,5 +1,9 @@ - 2014-02-03 Vladimir Serbinenko - -+ * util/grub-mkrescue.c: Build fix for argp.h with older gcc. -+ -+2014-02-03 Vladimir Serbinenko -+ - * util/grub-mkfont.c: Build fix for argp.h with older gcc. - - 2014-01-29 Vladimir Serbinenko -diff --git a/util/grub-mkrescue.c b/util/grub-mkrescue.c -index 34e0b7a..e719839 100644 ---- a/util/grub-mkrescue.c -+++ b/util/grub-mkrescue.c -@@ -25,7 +25,11 @@ - #include - #include - #include -+#pragma GCC diagnostic ignored "-Wmissing-prototypes" -+#pragma GCC diagnostic ignored "-Wmissing-declarations" - #include -+#pragma GCC diagnostic error "-Wmissing-prototypes" -+#pragma GCC diagnostic error "-Wmissing-declarations" - - #include - #include --- -1.9.0 - diff --git a/0057-add-grub_env_set_net_property-function.patch b/0057-add-grub_env_set_net_property-function.patch deleted file mode 100644 index b086708..0000000 --- a/0057-add-grub_env_set_net_property-function.patch +++ /dev/null @@ -1,199 +0,0 @@ -From d2f5eb3848747a696b94baf9bbc525d93dc0a81c Mon Sep 17 00:00:00 2001 -From: Paulo Flabiano Smorigo -Date: Tue, 4 Feb 2014 18:41:38 -0200 -Subject: [PATCH 057/103] add grub_env_set_net_property function - -* grub-core/net/bootp.c: Remove set_env_limn_ro. -* grub-core/net/net.c: Add grub_env_set_net_property. -* include/grub/net.h: Likewise. ---- - ChangeLog | 8 +++++++ - grub-core/net/bootp.c | 63 +++++++++++++-------------------------------------- - grub-core/net/net.c | 38 +++++++++++++++++++++++++++++++ - include/grub/net.h | 4 ++++ - 4 files changed, 66 insertions(+), 47 deletions(-) - -diff --git a/ChangeLog b/ChangeLog -index 2e0bdfc..f7338f4 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,11 @@ -+2014-02-04 Paulo Flabiano Smorigo -+ -+ Add grub_env_set_net_property function. -+ -+ * grub-core/net/bootp.c: Remove set_env_limn_ro. -+ * grub-core/net/net.c: Add grub_env_set_net_property. -+ * include/grub/net.h: Likewise. -+ - 2014-02-03 Vladimir Serbinenko - - * util/grub-mkrescue.c: Build fix for argp.h with older gcc. -diff --git a/grub-core/net/bootp.c b/grub-core/net/bootp.c -index c14e9de..6310ed4 100644 ---- a/grub-core/net/bootp.c -+++ b/grub-core/net/bootp.c -@@ -25,41 +25,6 @@ - #include - #include - --static char * --grub_env_write_readonly (struct grub_env_var *var __attribute__ ((unused)), -- const char *val __attribute__ ((unused))) --{ -- return NULL; --} -- --static void --set_env_limn_ro (const char *intername, const char *suffix, -- const char *value, grub_size_t len) --{ -- char *varname, *varvalue; -- char *ptr; -- varname = grub_xasprintf ("net_%s_%s", intername, suffix); -- if (!varname) -- return; -- for (ptr = varname; *ptr; ptr++) -- if (*ptr == ':') -- *ptr = '_'; -- varvalue = grub_malloc (len + 1); -- if (!varvalue) -- { -- grub_free (varname); -- return; -- } -- -- grub_memcpy (varvalue, value, len); -- varvalue[len] = 0; -- grub_env_set (varname, varvalue); -- grub_register_variable_hook (varname, 0, grub_env_write_readonly); -- grub_env_export (varname); -- grub_free (varname); -- grub_free (varvalue); --} -- - static void - parse_dhcp_vendor (const char *name, const void *vend, int limit, int *mask) - { -@@ -136,20 +101,24 @@ parse_dhcp_vendor (const char *name, const void *vend, int limit, int *mask) - } - continue; - case GRUB_NET_BOOTP_HOSTNAME: -- set_env_limn_ro (name, "hostname", (const char *) ptr, taglength); -- break; -+ grub_env_set_net_property (name, "hostname", (const char *) ptr, -+ taglength); -+ break; - - case GRUB_NET_BOOTP_DOMAIN: -- set_env_limn_ro (name, "domain", (const char *) ptr, taglength); -- break; -+ grub_env_set_net_property (name, "domain", (const char *) ptr, -+ taglength); -+ break; - - case GRUB_NET_BOOTP_ROOT_PATH: -- set_env_limn_ro (name, "rootpath", (const char *) ptr, taglength); -- break; -+ grub_env_set_net_property (name, "rootpath", (const char *) ptr, -+ taglength); -+ break; - - case GRUB_NET_BOOTP_EXTENSIONS_PATH: -- set_env_limn_ro (name, "extensionspath", (const char *) ptr, taglength); -- break; -+ grub_env_set_net_property (name, "extensionspath", (const char *) ptr, -+ taglength); -+ break; - - /* If you need any other options please contact GRUB - development team. */ -@@ -211,8 +180,8 @@ grub_net_configure_by_dhcp_ack (const char *name, - } - - if (size > OFFSET_OF (boot_file, bp)) -- set_env_limn_ro (name, "boot_file", (char *) bp->boot_file, -- sizeof (bp->boot_file)); -+ grub_env_set_net_property (name, "boot_file", bp->boot_file, -+ sizeof (bp->boot_file)); - if (is_def) - grub_net_default_server = 0; - if (is_def && !grub_net_default_server && bp->server_ip) -@@ -243,8 +212,8 @@ grub_net_configure_by_dhcp_ack (const char *name, - if (size > OFFSET_OF (server_name, bp) - && bp->server_name[0]) - { -- set_env_limn_ro (name, "dhcp_server_name", (char *) bp->server_name, -- sizeof (bp->server_name)); -+ grub_env_set_net_property (name, "dhcp_server_name", bp->server_name, -+ sizeof (bp->server_name)); - if (is_def && !grub_net_default_server) - { - grub_net_default_server = grub_strdup (bp->server_name); -diff --git a/grub-core/net/net.c b/grub-core/net/net.c -index 1521d8d..f2e723b 100644 ---- a/grub-core/net/net.c -+++ b/grub-core/net/net.c -@@ -1480,6 +1480,44 @@ receive_packets (struct grub_net_card *card, int *stop_condition) - grub_print_error (); - } - -+static char * -+grub_env_write_readonly (struct grub_env_var *var __attribute__ ((unused)), -+ const char *val __attribute__ ((unused))) -+{ -+ return NULL; -+} -+ -+grub_err_t -+grub_env_set_net_property (const char *intername, const char *suffix, -+ const char *value, grub_size_t len) -+{ -+ char *varname, *varvalue; -+ char *ptr; -+ -+ varname = grub_xasprintf ("net_%s_%s", intername, suffix); -+ if (!varname) -+ return grub_errno; -+ for (ptr = varname; *ptr; ptr++) -+ if (*ptr == ':') -+ *ptr = '_'; -+ varvalue = grub_malloc (len + 1); -+ if (!varvalue) -+ { -+ grub_free (varname); -+ return grub_errno; -+ } -+ -+ grub_memcpy (varvalue, value, len); -+ varvalue[len] = 0; -+ grub_err_t ret = grub_env_set (varname, varvalue); -+ grub_register_variable_hook (varname, 0, grub_env_write_readonly); -+ grub_env_export (varname); -+ grub_free (varname); -+ grub_free (varvalue); -+ -+ return ret; -+} -+ - void - grub_net_poll_cards (unsigned time, int *stop_condition) - { -diff --git a/include/grub/net.h b/include/grub/net.h -index 0e0a605..538baa3 100644 ---- a/include/grub/net.h -+++ b/include/grub/net.h -@@ -480,6 +480,10 @@ grub_net_addr_to_str (const grub_net_network_level_address_t *target, - void - grub_net_hwaddr_to_str (const grub_net_link_level_address_t *addr, char *str); - -+grub_err_t -+grub_env_set_net_property (const char *intername, const char *suffix, -+ const char *value, grub_size_t len); -+ - void - grub_net_poll_cards (unsigned time, int *stop_condition); - --- -1.9.0 - diff --git a/0057-util-grub-mkrescue.c-Build-fix-for-argp.h-with-older.patch b/0057-util-grub-mkrescue.c-Build-fix-for-argp.h-with-older.patch new file mode 100644 index 0000000..d7f3d71 --- /dev/null +++ b/0057-util-grub-mkrescue.c-Build-fix-for-argp.h-with-older.patch @@ -0,0 +1,44 @@ +From 3365d3eb4062cee9581f3560ec3e93f8c8ababb2 Mon Sep 17 00:00:00 2001 +From: Vladimir Serbinenko +Date: Mon, 3 Feb 2014 14:35:51 +0100 +Subject: [PATCH 057/125] * util/grub-mkrescue.c: Build fix for argp.h + with older gcc. + +--- + ChangeLog | 4 ++++ + util/grub-mkrescue.c | 4 ++++ + 2 files changed, 8 insertions(+) + +diff --git a/ChangeLog b/ChangeLog +index f2bba84..f4a4721 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,5 +1,9 @@ + 2014-02-03 Vladimir Serbinenko + ++ * util/grub-mkrescue.c: Build fix for argp.h with older gcc. ++ ++2014-02-03 Vladimir Serbinenko ++ + * util/grub-mkfont.c: Build fix for argp.h with older gcc. + + 2014-01-29 Vladimir Serbinenko +diff --git a/util/grub-mkrescue.c b/util/grub-mkrescue.c +index 34e0b7a..e719839 100644 +--- a/util/grub-mkrescue.c ++++ b/util/grub-mkrescue.c +@@ -25,7 +25,11 @@ + #include + #include + #include ++#pragma GCC diagnostic ignored "-Wmissing-prototypes" ++#pragma GCC diagnostic ignored "-Wmissing-declarations" + #include ++#pragma GCC diagnostic error "-Wmissing-prototypes" ++#pragma GCC diagnostic error "-Wmissing-declarations" + + #include + #include +-- +1.9.0 + diff --git a/0058-add-bootpath-parser-for-open-firmware.patch b/0058-add-bootpath-parser-for-open-firmware.patch deleted file mode 100644 index ed964ea..0000000 --- a/0058-add-bootpath-parser-for-open-firmware.patch +++ /dev/null @@ -1,211 +0,0 @@ -From bec34a014c4bad329869b5316204cd07e53fd0ac Mon Sep 17 00:00:00 2001 -From: Paulo Flabiano Smorigo -Date: Tue, 4 Feb 2014 19:00:55 -0200 -Subject: [PATCH 058/103] add bootpath parser for open firmware - -It enables net boot even when there is no bootp/dhcp server. - -* grub-core/net/drivers/ieee1275/ofnet.c: Add grub_ieee1275_parse_bootpath and -call it at grub_ieee1275_net_config_real. -* grub-core/kern/ieee1275/init.c: Add bootpath to grub_ieee1275_net_config. -* include/grub/ieee1275/ieee1275.h: Likewise. ---- - ChangeLog | 13 ++++ - grub-core/kern/ieee1275/init.c | 7 +-- - grub-core/net/drivers/ieee1275/ofnet.c | 107 ++++++++++++++++++++++++++++++++- - include/grub/ieee1275/ieee1275.h | 5 +- - 4 files changed, 125 insertions(+), 7 deletions(-) - -diff --git a/ChangeLog b/ChangeLog -index f7338f4..5e8eded 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,5 +1,18 @@ - 2014-02-04 Paulo Flabiano Smorigo - -+ Add bootpath parser for open firmware. -+ -+ It enables net boot even when there is no bootp/dhcp server. -+ -+ * grub-core/net/drivers/ieee1275/ofnet.c: Add grub_ieee1275_parse_bootpath -+ and call it at grub_ieee1275_net_config_real. -+ * grub-core/kern/ieee1275/init.c: Add bootpath to -+ grub_ieee1275_net_config. -+ * include/grub/ieee1275/ieee1275.h: Likewise. -+ -+ -+2014-02-04 Paulo Flabiano Smorigo -+ - Add grub_env_set_net_property function. - - * grub-core/net/bootp.c: Remove set_env_limn_ro. -diff --git a/grub-core/kern/ieee1275/init.c b/grub-core/kern/ieee1275/init.c -index 89b2822..d5bd74d 100644 ---- a/grub-core/kern/ieee1275/init.c -+++ b/grub-core/kern/ieee1275/init.c -@@ -80,9 +80,8 @@ grub_translate_ieee1275_path (char *filepath) - } - } - --void (*grub_ieee1275_net_config) (const char *dev, -- char **device, -- char **path); -+void (*grub_ieee1275_net_config) (const char *dev, char **device, char **path, -+ char *bootpath); - void - grub_machine_get_bootlocation (char **device, char **path) - { -@@ -126,7 +125,7 @@ grub_machine_get_bootlocation (char **device, char **path) - *ptr = 0; - - if (grub_ieee1275_net_config) -- grub_ieee1275_net_config (canon, device, path); -+ grub_ieee1275_net_config (canon, device, path, bootpath); - grub_free (dev); - grub_free (canon); - } -diff --git a/grub-core/net/drivers/ieee1275/ofnet.c b/grub-core/net/drivers/ieee1275/ofnet.c -index 4483c91..eea8e71 100644 ---- a/grub-core/net/drivers/ieee1275/ofnet.c -+++ b/grub-core/net/drivers/ieee1275/ofnet.c -@@ -127,8 +127,111 @@ bootp_response_properties[] = - { .name = "bootpreply-packet", .offset = 0x2a}, - }; - -+enum -+{ -+ BOOTARGS_SERVER_ADDR, -+ BOOTARGS_FILENAME, -+ BOOTARGS_CLIENT_ADDR, -+ BOOTARGS_GATEWAY_ADDR, -+ BOOTARGS_BOOTP_RETRIES, -+ BOOTARGS_TFTP_RETRIES, -+ BOOTARGS_SUBNET_MASK, -+ BOOTARGS_BLOCKSIZE -+}; -+ -+static int -+grub_ieee1275_parse_bootpath (const char *devpath, char *bootpath, -+ char **device, struct grub_net_card **card) -+{ -+ char *args; -+ char *comma_char = 0; -+ char *equal_char = 0; -+ grub_size_t field_counter = 0; -+ -+ grub_net_network_level_address_t client_addr, gateway_addr, subnet_mask; -+ grub_net_link_level_address_t hw_addr; -+ grub_net_interface_flags_t flags = 0; -+ struct grub_net_network_level_interface *inter; -+ -+ hw_addr.type = GRUB_NET_LINK_LEVEL_PROTOCOL_ETHERNET; -+ -+ args = bootpath + grub_strlen (devpath) + 1; -+ do -+ { -+ comma_char = grub_strchr (args, ','); -+ if (comma_char != 0) -+ *comma_char = 0; -+ -+ /* Check if it's an option (like speed=auto) and not a default parameter */ -+ equal_char = grub_strchr (args, '='); -+ if (equal_char != 0) -+ { -+ *equal_char = 0; -+ grub_env_set_net_property ((*card)->name, args, equal_char + 1, -+ grub_strlen(equal_char + 1)); -+ *equal_char = '='; -+ } -+ else -+ { -+ switch (field_counter++) -+ { -+ case BOOTARGS_SERVER_ADDR: -+ *device = grub_xasprintf ("tftp,%s", args); -+ if (!*device) -+ return grub_errno; -+ break; -+ -+ case BOOTARGS_CLIENT_ADDR: -+ grub_net_resolve_address (args, &client_addr); -+ break; -+ -+ case BOOTARGS_GATEWAY_ADDR: -+ grub_net_resolve_address (args, &gateway_addr); -+ break; -+ -+ case BOOTARGS_SUBNET_MASK: -+ grub_net_resolve_address (args, &subnet_mask); -+ break; -+ } -+ } -+ args = comma_char + 1; -+ if (comma_char != 0) -+ *comma_char = ','; -+ } while (comma_char != 0); -+ -+ if ((client_addr.ipv4 != 0) && (subnet_mask.ipv4 != 0)) -+ { -+ grub_ieee1275_phandle_t devhandle; -+ grub_ieee1275_finddevice (devpath, &devhandle); -+ grub_ieee1275_get_property (devhandle, "mac-address", -+ hw_addr.mac, sizeof(hw_addr.mac), 0); -+ inter = grub_net_add_addr ((*card)->name, *card, &client_addr, &hw_addr, -+ flags); -+ grub_net_add_ipv4_local (inter, -+ __builtin_ctz (~grub_le_to_cpu32 (subnet_mask.ipv4))); -+ } -+ -+ if (gateway_addr.ipv4 != 0) -+ { -+ grub_net_network_level_netaddress_t target; -+ char *rname; -+ -+ target.type = GRUB_NET_NETWORK_LEVEL_PROTOCOL_IPV4; -+ target.ipv4.base = 0; -+ target.ipv4.masksize = 0; -+ rname = grub_xasprintf ("%s:default", ((*card)->name)); -+ if (rname) -+ grub_net_add_route_gw (rname, target, gateway_addr); -+ else -+ return grub_errno; -+ } -+ -+ return 0; -+} -+ - static void --grub_ieee1275_net_config_real (const char *devpath, char **device, char **path) -+grub_ieee1275_net_config_real (const char *devpath, char **device, char **path, -+ char *bootpath) - { - struct grub_net_card *card; - -@@ -158,6 +261,8 @@ grub_ieee1275_net_config_real (const char *devpath, char **device, char **path) - } - grub_free (canon); - -+ grub_ieee1275_parse_bootpath (devpath, bootpath, device, &card); -+ - for (i = 0; i < ARRAY_SIZE (bootp_response_properties); i++) - if (grub_ieee1275_get_property_length (grub_ieee1275_chosen, - bootp_response_properties[i].name, -diff --git a/include/grub/ieee1275/ieee1275.h b/include/grub/ieee1275/ieee1275.h -index dc54bea..8e42513 100644 ---- a/include/grub/ieee1275/ieee1275.h -+++ b/include/grub/ieee1275/ieee1275.h -@@ -70,8 +70,9 @@ struct grub_ieee1275_devalias - }; - - extern void (*EXPORT_VAR(grub_ieee1275_net_config)) (const char *dev, -- char **device, -- char **path); -+ char **device, -+ char **path, -+ char *bootargs); - - /* Maps a device alias to a pathname. */ - extern grub_ieee1275_phandle_t EXPORT_VAR(grub_ieee1275_chosen); --- -1.9.0 - diff --git a/0058-add-grub_env_set_net_property-function.patch b/0058-add-grub_env_set_net_property-function.patch new file mode 100644 index 0000000..3908353 --- /dev/null +++ b/0058-add-grub_env_set_net_property-function.patch @@ -0,0 +1,199 @@ +From 533058df7c164a4d3498dfaa626923904597f162 Mon Sep 17 00:00:00 2001 +From: Paulo Flabiano Smorigo +Date: Tue, 4 Feb 2014 18:41:38 -0200 +Subject: [PATCH 058/125] add grub_env_set_net_property function + +* grub-core/net/bootp.c: Remove set_env_limn_ro. +* grub-core/net/net.c: Add grub_env_set_net_property. +* include/grub/net.h: Likewise. +--- + ChangeLog | 8 +++++++ + grub-core/net/bootp.c | 63 +++++++++++++-------------------------------------- + grub-core/net/net.c | 38 +++++++++++++++++++++++++++++++ + include/grub/net.h | 4 ++++ + 4 files changed, 66 insertions(+), 47 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index f4a4721..63f5aa3 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,11 @@ ++2014-02-04 Paulo Flabiano Smorigo ++ ++ Add grub_env_set_net_property function. ++ ++ * grub-core/net/bootp.c: Remove set_env_limn_ro. ++ * grub-core/net/net.c: Add grub_env_set_net_property. ++ * include/grub/net.h: Likewise. ++ + 2014-02-03 Vladimir Serbinenko + + * util/grub-mkrescue.c: Build fix for argp.h with older gcc. +diff --git a/grub-core/net/bootp.c b/grub-core/net/bootp.c +index c14e9de..6310ed4 100644 +--- a/grub-core/net/bootp.c ++++ b/grub-core/net/bootp.c +@@ -25,41 +25,6 @@ + #include + #include + +-static char * +-grub_env_write_readonly (struct grub_env_var *var __attribute__ ((unused)), +- const char *val __attribute__ ((unused))) +-{ +- return NULL; +-} +- +-static void +-set_env_limn_ro (const char *intername, const char *suffix, +- const char *value, grub_size_t len) +-{ +- char *varname, *varvalue; +- char *ptr; +- varname = grub_xasprintf ("net_%s_%s", intername, suffix); +- if (!varname) +- return; +- for (ptr = varname; *ptr; ptr++) +- if (*ptr == ':') +- *ptr = '_'; +- varvalue = grub_malloc (len + 1); +- if (!varvalue) +- { +- grub_free (varname); +- return; +- } +- +- grub_memcpy (varvalue, value, len); +- varvalue[len] = 0; +- grub_env_set (varname, varvalue); +- grub_register_variable_hook (varname, 0, grub_env_write_readonly); +- grub_env_export (varname); +- grub_free (varname); +- grub_free (varvalue); +-} +- + static void + parse_dhcp_vendor (const char *name, const void *vend, int limit, int *mask) + { +@@ -136,20 +101,24 @@ parse_dhcp_vendor (const char *name, const void *vend, int limit, int *mask) + } + continue; + case GRUB_NET_BOOTP_HOSTNAME: +- set_env_limn_ro (name, "hostname", (const char *) ptr, taglength); +- break; ++ grub_env_set_net_property (name, "hostname", (const char *) ptr, ++ taglength); ++ break; + + case GRUB_NET_BOOTP_DOMAIN: +- set_env_limn_ro (name, "domain", (const char *) ptr, taglength); +- break; ++ grub_env_set_net_property (name, "domain", (const char *) ptr, ++ taglength); ++ break; + + case GRUB_NET_BOOTP_ROOT_PATH: +- set_env_limn_ro (name, "rootpath", (const char *) ptr, taglength); +- break; ++ grub_env_set_net_property (name, "rootpath", (const char *) ptr, ++ taglength); ++ break; + + case GRUB_NET_BOOTP_EXTENSIONS_PATH: +- set_env_limn_ro (name, "extensionspath", (const char *) ptr, taglength); +- break; ++ grub_env_set_net_property (name, "extensionspath", (const char *) ptr, ++ taglength); ++ break; + + /* If you need any other options please contact GRUB + development team. */ +@@ -211,8 +180,8 @@ grub_net_configure_by_dhcp_ack (const char *name, + } + + if (size > OFFSET_OF (boot_file, bp)) +- set_env_limn_ro (name, "boot_file", (char *) bp->boot_file, +- sizeof (bp->boot_file)); ++ grub_env_set_net_property (name, "boot_file", bp->boot_file, ++ sizeof (bp->boot_file)); + if (is_def) + grub_net_default_server = 0; + if (is_def && !grub_net_default_server && bp->server_ip) +@@ -243,8 +212,8 @@ grub_net_configure_by_dhcp_ack (const char *name, + if (size > OFFSET_OF (server_name, bp) + && bp->server_name[0]) + { +- set_env_limn_ro (name, "dhcp_server_name", (char *) bp->server_name, +- sizeof (bp->server_name)); ++ grub_env_set_net_property (name, "dhcp_server_name", bp->server_name, ++ sizeof (bp->server_name)); + if (is_def && !grub_net_default_server) + { + grub_net_default_server = grub_strdup (bp->server_name); +diff --git a/grub-core/net/net.c b/grub-core/net/net.c +index 1521d8d..f2e723b 100644 +--- a/grub-core/net/net.c ++++ b/grub-core/net/net.c +@@ -1480,6 +1480,44 @@ receive_packets (struct grub_net_card *card, int *stop_condition) + grub_print_error (); + } + ++static char * ++grub_env_write_readonly (struct grub_env_var *var __attribute__ ((unused)), ++ const char *val __attribute__ ((unused))) ++{ ++ return NULL; ++} ++ ++grub_err_t ++grub_env_set_net_property (const char *intername, const char *suffix, ++ const char *value, grub_size_t len) ++{ ++ char *varname, *varvalue; ++ char *ptr; ++ ++ varname = grub_xasprintf ("net_%s_%s", intername, suffix); ++ if (!varname) ++ return grub_errno; ++ for (ptr = varname; *ptr; ptr++) ++ if (*ptr == ':') ++ *ptr = '_'; ++ varvalue = grub_malloc (len + 1); ++ if (!varvalue) ++ { ++ grub_free (varname); ++ return grub_errno; ++ } ++ ++ grub_memcpy (varvalue, value, len); ++ varvalue[len] = 0; ++ grub_err_t ret = grub_env_set (varname, varvalue); ++ grub_register_variable_hook (varname, 0, grub_env_write_readonly); ++ grub_env_export (varname); ++ grub_free (varname); ++ grub_free (varvalue); ++ ++ return ret; ++} ++ + void + grub_net_poll_cards (unsigned time, int *stop_condition) + { +diff --git a/include/grub/net.h b/include/grub/net.h +index 0e0a605..538baa3 100644 +--- a/include/grub/net.h ++++ b/include/grub/net.h +@@ -480,6 +480,10 @@ grub_net_addr_to_str (const grub_net_network_level_address_t *target, + void + grub_net_hwaddr_to_str (const grub_net_link_level_address_t *addr, char *str); + ++grub_err_t ++grub_env_set_net_property (const char *intername, const char *suffix, ++ const char *value, grub_size_t len); ++ + void + grub_net_poll_cards (unsigned time, int *stop_condition); + +-- +1.9.0 + diff --git a/0059-add-bootpath-parser-for-open-firmware.patch b/0059-add-bootpath-parser-for-open-firmware.patch new file mode 100644 index 0000000..8915d7b --- /dev/null +++ b/0059-add-bootpath-parser-for-open-firmware.patch @@ -0,0 +1,211 @@ +From 1a768cc5a65094e19c216caf92dd190317df25fc Mon Sep 17 00:00:00 2001 +From: Paulo Flabiano Smorigo +Date: Tue, 4 Feb 2014 19:00:55 -0200 +Subject: [PATCH 059/125] add bootpath parser for open firmware + +It enables net boot even when there is no bootp/dhcp server. + +* grub-core/net/drivers/ieee1275/ofnet.c: Add grub_ieee1275_parse_bootpath and +call it at grub_ieee1275_net_config_real. +* grub-core/kern/ieee1275/init.c: Add bootpath to grub_ieee1275_net_config. +* include/grub/ieee1275/ieee1275.h: Likewise. +--- + ChangeLog | 13 ++++ + grub-core/kern/ieee1275/init.c | 7 +-- + grub-core/net/drivers/ieee1275/ofnet.c | 107 ++++++++++++++++++++++++++++++++- + include/grub/ieee1275/ieee1275.h | 5 +- + 4 files changed, 125 insertions(+), 7 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index 63f5aa3..5237631 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,5 +1,18 @@ + 2014-02-04 Paulo Flabiano Smorigo + ++ Add bootpath parser for open firmware. ++ ++ It enables net boot even when there is no bootp/dhcp server. ++ ++ * grub-core/net/drivers/ieee1275/ofnet.c: Add grub_ieee1275_parse_bootpath ++ and call it at grub_ieee1275_net_config_real. ++ * grub-core/kern/ieee1275/init.c: Add bootpath to ++ grub_ieee1275_net_config. ++ * include/grub/ieee1275/ieee1275.h: Likewise. ++ ++ ++2014-02-04 Paulo Flabiano Smorigo ++ + Add grub_env_set_net_property function. + + * grub-core/net/bootp.c: Remove set_env_limn_ro. +diff --git a/grub-core/kern/ieee1275/init.c b/grub-core/kern/ieee1275/init.c +index 89b2822..d5bd74d 100644 +--- a/grub-core/kern/ieee1275/init.c ++++ b/grub-core/kern/ieee1275/init.c +@@ -80,9 +80,8 @@ grub_translate_ieee1275_path (char *filepath) + } + } + +-void (*grub_ieee1275_net_config) (const char *dev, +- char **device, +- char **path); ++void (*grub_ieee1275_net_config) (const char *dev, char **device, char **path, ++ char *bootpath); + void + grub_machine_get_bootlocation (char **device, char **path) + { +@@ -126,7 +125,7 @@ grub_machine_get_bootlocation (char **device, char **path) + *ptr = 0; + + if (grub_ieee1275_net_config) +- grub_ieee1275_net_config (canon, device, path); ++ grub_ieee1275_net_config (canon, device, path, bootpath); + grub_free (dev); + grub_free (canon); + } +diff --git a/grub-core/net/drivers/ieee1275/ofnet.c b/grub-core/net/drivers/ieee1275/ofnet.c +index 4483c91..eea8e71 100644 +--- a/grub-core/net/drivers/ieee1275/ofnet.c ++++ b/grub-core/net/drivers/ieee1275/ofnet.c +@@ -127,8 +127,111 @@ bootp_response_properties[] = + { .name = "bootpreply-packet", .offset = 0x2a}, + }; + ++enum ++{ ++ BOOTARGS_SERVER_ADDR, ++ BOOTARGS_FILENAME, ++ BOOTARGS_CLIENT_ADDR, ++ BOOTARGS_GATEWAY_ADDR, ++ BOOTARGS_BOOTP_RETRIES, ++ BOOTARGS_TFTP_RETRIES, ++ BOOTARGS_SUBNET_MASK, ++ BOOTARGS_BLOCKSIZE ++}; ++ ++static int ++grub_ieee1275_parse_bootpath (const char *devpath, char *bootpath, ++ char **device, struct grub_net_card **card) ++{ ++ char *args; ++ char *comma_char = 0; ++ char *equal_char = 0; ++ grub_size_t field_counter = 0; ++ ++ grub_net_network_level_address_t client_addr, gateway_addr, subnet_mask; ++ grub_net_link_level_address_t hw_addr; ++ grub_net_interface_flags_t flags = 0; ++ struct grub_net_network_level_interface *inter; ++ ++ hw_addr.type = GRUB_NET_LINK_LEVEL_PROTOCOL_ETHERNET; ++ ++ args = bootpath + grub_strlen (devpath) + 1; ++ do ++ { ++ comma_char = grub_strchr (args, ','); ++ if (comma_char != 0) ++ *comma_char = 0; ++ ++ /* Check if it's an option (like speed=auto) and not a default parameter */ ++ equal_char = grub_strchr (args, '='); ++ if (equal_char != 0) ++ { ++ *equal_char = 0; ++ grub_env_set_net_property ((*card)->name, args, equal_char + 1, ++ grub_strlen(equal_char + 1)); ++ *equal_char = '='; ++ } ++ else ++ { ++ switch (field_counter++) ++ { ++ case BOOTARGS_SERVER_ADDR: ++ *device = grub_xasprintf ("tftp,%s", args); ++ if (!*device) ++ return grub_errno; ++ break; ++ ++ case BOOTARGS_CLIENT_ADDR: ++ grub_net_resolve_address (args, &client_addr); ++ break; ++ ++ case BOOTARGS_GATEWAY_ADDR: ++ grub_net_resolve_address (args, &gateway_addr); ++ break; ++ ++ case BOOTARGS_SUBNET_MASK: ++ grub_net_resolve_address (args, &subnet_mask); ++ break; ++ } ++ } ++ args = comma_char + 1; ++ if (comma_char != 0) ++ *comma_char = ','; ++ } while (comma_char != 0); ++ ++ if ((client_addr.ipv4 != 0) && (subnet_mask.ipv4 != 0)) ++ { ++ grub_ieee1275_phandle_t devhandle; ++ grub_ieee1275_finddevice (devpath, &devhandle); ++ grub_ieee1275_get_property (devhandle, "mac-address", ++ hw_addr.mac, sizeof(hw_addr.mac), 0); ++ inter = grub_net_add_addr ((*card)->name, *card, &client_addr, &hw_addr, ++ flags); ++ grub_net_add_ipv4_local (inter, ++ __builtin_ctz (~grub_le_to_cpu32 (subnet_mask.ipv4))); ++ } ++ ++ if (gateway_addr.ipv4 != 0) ++ { ++ grub_net_network_level_netaddress_t target; ++ char *rname; ++ ++ target.type = GRUB_NET_NETWORK_LEVEL_PROTOCOL_IPV4; ++ target.ipv4.base = 0; ++ target.ipv4.masksize = 0; ++ rname = grub_xasprintf ("%s:default", ((*card)->name)); ++ if (rname) ++ grub_net_add_route_gw (rname, target, gateway_addr); ++ else ++ return grub_errno; ++ } ++ ++ return 0; ++} ++ + static void +-grub_ieee1275_net_config_real (const char *devpath, char **device, char **path) ++grub_ieee1275_net_config_real (const char *devpath, char **device, char **path, ++ char *bootpath) + { + struct grub_net_card *card; + +@@ -158,6 +261,8 @@ grub_ieee1275_net_config_real (const char *devpath, char **device, char **path) + } + grub_free (canon); + ++ grub_ieee1275_parse_bootpath (devpath, bootpath, device, &card); ++ + for (i = 0; i < ARRAY_SIZE (bootp_response_properties); i++) + if (grub_ieee1275_get_property_length (grub_ieee1275_chosen, + bootp_response_properties[i].name, +diff --git a/include/grub/ieee1275/ieee1275.h b/include/grub/ieee1275/ieee1275.h +index dc54bea..8e42513 100644 +--- a/include/grub/ieee1275/ieee1275.h ++++ b/include/grub/ieee1275/ieee1275.h +@@ -70,8 +70,9 @@ struct grub_ieee1275_devalias + }; + + extern void (*EXPORT_VAR(grub_ieee1275_net_config)) (const char *dev, +- char **device, +- char **path); ++ char **device, ++ char **path, ++ char *bootargs); + + /* Maps a device alias to a pathname. */ + extern grub_ieee1275_phandle_t EXPORT_VAR(grub_ieee1275_chosen); +-- +1.9.0 + diff --git a/0059-grub-core-disk-ahci.c-Ignore-NPORTS-field-and-rely-o.patch b/0059-grub-core-disk-ahci.c-Ignore-NPORTS-field-and-rely-o.patch deleted file mode 100644 index c4baef9..0000000 --- a/0059-grub-core-disk-ahci.c-Ignore-NPORTS-field-and-rely-o.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 009445ef577c51c6b9041f5525d8138977bc24ef Mon Sep 17 00:00:00 2001 -From: Vladimir Serbinenko -Date: Thu, 20 Feb 2014 10:11:43 +0100 -Subject: [PATCH 059/103] * grub-core/disk/ahci.c: Ignore NPORTS field - and rely on PI exclusively. - ---- - ChangeLog | 5 +++++ - grub-core/disk/ahci.c | 2 +- - 2 files changed, 6 insertions(+), 1 deletion(-) - -diff --git a/ChangeLog b/ChangeLog -index 5e8eded..19e13d8 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,8 @@ -+2014-02-20 Vladimir Serbinenko -+ -+ * grub-core/disk/ahci.c: Ignore NPORTS field and rely on PI -+ exclusively. -+ - 2014-02-04 Paulo Flabiano Smorigo - - Add bootpath parser for open firmware. -diff --git a/grub-core/disk/ahci.c b/grub-core/disk/ahci.c -index 5e4a639..89365cd 100644 ---- a/grub-core/disk/ahci.c -+++ b/grub-core/disk/ahci.c -@@ -322,7 +322,7 @@ grub_ahci_pciinit (grub_pci_device_t dev, - - grub_dprintf ("ahci", "GLC:%x\n", hba->global_control); - -- nports = (hba->cap & GRUB_AHCI_HBA_CAP_NPORTS_MASK) + 1; -+ nports = (GRUB_AHCI_HBA_CAP_NPORTS_MASK) + 1; - - grub_dprintf ("ahci", "%d AHCI ports, PI = 0x%x\n", nports, - hba->ports_implemented); --- -1.9.0 - diff --git a/0060-grub-core-disk-ahci.c-Ignore-NPORTS-field-and-rely-o.patch b/0060-grub-core-disk-ahci.c-Ignore-NPORTS-field-and-rely-o.patch new file mode 100644 index 0000000..62e41dc --- /dev/null +++ b/0060-grub-core-disk-ahci.c-Ignore-NPORTS-field-and-rely-o.patch @@ -0,0 +1,40 @@ +From 7f4e3839c9b872f0981e1ecdecfa2bd91065f99c Mon Sep 17 00:00:00 2001 +From: Vladimir Serbinenko +Date: Thu, 20 Feb 2014 10:11:43 +0100 +Subject: [PATCH 060/125] * grub-core/disk/ahci.c: Ignore NPORTS field + and rely on PI exclusively. + +--- + ChangeLog | 5 +++++ + grub-core/disk/ahci.c | 2 +- + 2 files changed, 6 insertions(+), 1 deletion(-) + +diff --git a/ChangeLog b/ChangeLog +index 5237631..be41aa5 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,8 @@ ++2014-02-20 Vladimir Serbinenko ++ ++ * grub-core/disk/ahci.c: Ignore NPORTS field and rely on PI ++ exclusively. ++ + 2014-02-04 Paulo Flabiano Smorigo + + Add bootpath parser for open firmware. +diff --git a/grub-core/disk/ahci.c b/grub-core/disk/ahci.c +index 5e4a639..89365cd 100644 +--- a/grub-core/disk/ahci.c ++++ b/grub-core/disk/ahci.c +@@ -322,7 +322,7 @@ grub_ahci_pciinit (grub_pci_device_t dev, + + grub_dprintf ("ahci", "GLC:%x\n", hba->global_control); + +- nports = (hba->cap & GRUB_AHCI_HBA_CAP_NPORTS_MASK) + 1; ++ nports = (GRUB_AHCI_HBA_CAP_NPORTS_MASK) + 1; + + grub_dprintf ("ahci", "%d AHCI ports, PI = 0x%x\n", nports, + hba->ports_implemented); +-- +1.9.0 + diff --git a/0060-grub-core-kern-i386-coreboot-mmap.c-Filter-out-0xa00.patch b/0060-grub-core-kern-i386-coreboot-mmap.c-Filter-out-0xa00.patch deleted file mode 100644 index 10cf522..0000000 --- a/0060-grub-core-kern-i386-coreboot-mmap.c-Filter-out-0xa00.patch +++ /dev/null @@ -1,82 +0,0 @@ -From 77a4d6620a9a9a9ef83fc746d14b330d842b7298 Mon Sep 17 00:00:00 2001 -From: Vladimir Serbinenko -Date: Fri, 28 Feb 2014 09:47:57 +0100 -Subject: [PATCH 060/103] * grub-core/kern/i386/coreboot/mmap.c: Filter - out 0xa0000-0x100000 region. - ---- - ChangeLog | 5 +++++ - grub-core/kern/i386/coreboot/mmap.c | 38 +++++++++++++++++++++++++++++++------ - 2 files changed, 37 insertions(+), 6 deletions(-) - -diff --git a/ChangeLog b/ChangeLog -index 19e13d8..6af559a 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,8 @@ -+2014-02-28 Vladimir Serbinenko -+ -+ * grub-core/kern/i386/coreboot/mmap.c: Filter out 0xa0000-0x100000 -+ region. -+ - 2014-02-20 Vladimir Serbinenko - - * grub-core/disk/ahci.c: Ignore NPORTS field and rely on PI -diff --git a/grub-core/kern/i386/coreboot/mmap.c b/grub-core/kern/i386/coreboot/mmap.c -index 1197975..4d29f6b 100644 ---- a/grub-core/kern/i386/coreboot/mmap.c -+++ b/grub-core/kern/i386/coreboot/mmap.c -@@ -44,18 +44,44 @@ iterate_linuxbios_table (grub_linuxbios_table_item_t table_item, void *data) - mem_region = - (mem_region_t) ((long) table_item + - sizeof (struct grub_linuxbios_table_item)); -- while ((long) mem_region < (long) table_item + (long) table_item->size) -+ for (; (long) mem_region < (long) table_item + (long) table_item->size; -+ mem_region++) - { -- if (ctx->hook (mem_region->addr, mem_region->size, -+ grub_uint64_t start = mem_region->addr; -+ grub_uint64_t end = mem_region->addr + mem_region->size; -+ /* Mark region 0xa0000 - 0x100000 as reserved. */ -+ if (start < 0x100000 && end >= 0xa0000 -+ && mem_region->type == GRUB_MACHINE_MEMORY_AVAILABLE) -+ { -+ if (start < 0xa0000 -+ && ctx->hook (start, 0xa0000 - start, -+ /* Multiboot mmaps match with the coreboot mmap -+ definition. Therefore, we can just pass type -+ through. */ -+ mem_region->type, -+ ctx->hook_data)) -+ return 1; -+ if (start < 0xa0000) -+ start = 0xa0000; -+ if (start >= end) -+ continue; -+ -+ if (ctx->hook (start, (end > 0x100000 ? 0x100000 : end) - start, -+ GRUB_MEMORY_RESERVED, -+ ctx->hook_data)) -+ return 1; -+ start = 0x100000; -+ -+ if (end <= start) -+ continue; -+ } -+ if (ctx->hook (start, end - start, - /* Multiboot mmaps match with the coreboot mmap - definition. Therefore, we can just pass type - through. */ -- (((mem_region->type <= GRUB_MACHINE_MEMORY_BADRAM) && (mem_region->type >= GRUB_MACHINE_MEMORY_AVAILABLE)) -- || mem_region->type == GRUB_MEMORY_COREBOOT_TABLES) ? mem_region->type : GRUB_MEMORY_RESERVED, -+ mem_region->type, - ctx->hook_data)) - return 1; -- -- mem_region++; - } - - return 0; --- -1.9.0 - diff --git a/0061-grub-core-kern-i386-coreboot-mmap.c-Filter-out-0xa00.patch b/0061-grub-core-kern-i386-coreboot-mmap.c-Filter-out-0xa00.patch new file mode 100644 index 0000000..2fda096 --- /dev/null +++ b/0061-grub-core-kern-i386-coreboot-mmap.c-Filter-out-0xa00.patch @@ -0,0 +1,82 @@ +From c65d7e05498edecd560753768114b574f7c3543d Mon Sep 17 00:00:00 2001 +From: Vladimir Serbinenko +Date: Fri, 28 Feb 2014 09:47:57 +0100 +Subject: [PATCH 061/125] * grub-core/kern/i386/coreboot/mmap.c: Filter + out 0xa0000-0x100000 region. + +--- + ChangeLog | 5 +++++ + grub-core/kern/i386/coreboot/mmap.c | 38 +++++++++++++++++++++++++++++++------ + 2 files changed, 37 insertions(+), 6 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index be41aa5..4f6f6d6 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,8 @@ ++2014-02-28 Vladimir Serbinenko ++ ++ * grub-core/kern/i386/coreboot/mmap.c: Filter out 0xa0000-0x100000 ++ region. ++ + 2014-02-20 Vladimir Serbinenko + + * grub-core/disk/ahci.c: Ignore NPORTS field and rely on PI +diff --git a/grub-core/kern/i386/coreboot/mmap.c b/grub-core/kern/i386/coreboot/mmap.c +index 1197975..4d29f6b 100644 +--- a/grub-core/kern/i386/coreboot/mmap.c ++++ b/grub-core/kern/i386/coreboot/mmap.c +@@ -44,18 +44,44 @@ iterate_linuxbios_table (grub_linuxbios_table_item_t table_item, void *data) + mem_region = + (mem_region_t) ((long) table_item + + sizeof (struct grub_linuxbios_table_item)); +- while ((long) mem_region < (long) table_item + (long) table_item->size) ++ for (; (long) mem_region < (long) table_item + (long) table_item->size; ++ mem_region++) + { +- if (ctx->hook (mem_region->addr, mem_region->size, ++ grub_uint64_t start = mem_region->addr; ++ grub_uint64_t end = mem_region->addr + mem_region->size; ++ /* Mark region 0xa0000 - 0x100000 as reserved. */ ++ if (start < 0x100000 && end >= 0xa0000 ++ && mem_region->type == GRUB_MACHINE_MEMORY_AVAILABLE) ++ { ++ if (start < 0xa0000 ++ && ctx->hook (start, 0xa0000 - start, ++ /* Multiboot mmaps match with the coreboot mmap ++ definition. Therefore, we can just pass type ++ through. */ ++ mem_region->type, ++ ctx->hook_data)) ++ return 1; ++ if (start < 0xa0000) ++ start = 0xa0000; ++ if (start >= end) ++ continue; ++ ++ if (ctx->hook (start, (end > 0x100000 ? 0x100000 : end) - start, ++ GRUB_MEMORY_RESERVED, ++ ctx->hook_data)) ++ return 1; ++ start = 0x100000; ++ ++ if (end <= start) ++ continue; ++ } ++ if (ctx->hook (start, end - start, + /* Multiboot mmaps match with the coreboot mmap + definition. Therefore, we can just pass type + through. */ +- (((mem_region->type <= GRUB_MACHINE_MEMORY_BADRAM) && (mem_region->type >= GRUB_MACHINE_MEMORY_AVAILABLE)) +- || mem_region->type == GRUB_MEMORY_COREBOOT_TABLES) ? mem_region->type : GRUB_MEMORY_RESERVED, ++ mem_region->type, + ctx->hook_data)) + return 1; +- +- mem_region++; + } + + return 0; +-- +1.9.0 + diff --git a/0061-grub-core-loader-i386-multiboot_mbi.c-grub_multiboot.patch b/0061-grub-core-loader-i386-multiboot_mbi.c-grub_multiboot.patch deleted file mode 100644 index 4b3bb9d..0000000 --- a/0061-grub-core-loader-i386-multiboot_mbi.c-grub_multiboot.patch +++ /dev/null @@ -1,42 +0,0 @@ -From e1c64869c163e44957cca04844753c1dae60ebad Mon Sep 17 00:00:00 2001 -From: Vladimir Serbinenko -Date: Fri, 28 Feb 2014 09:48:57 +0100 -Subject: [PATCH 061/103] * grub-core/loader/i386/multiboot_mbi.c - (grub_multiboot_make_mbi): Limit location to 640K. - ---- - ChangeLog | 5 +++++ - grub-core/loader/i386/multiboot_mbi.c | 2 +- - 2 files changed, 6 insertions(+), 1 deletion(-) - -diff --git a/ChangeLog b/ChangeLog -index 6af559a..8087595 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,5 +1,10 @@ - 2014-02-28 Vladimir Serbinenko - -+ * grub-core/loader/i386/multiboot_mbi.c (grub_multiboot_make_mbi): Limit -+ location to 640K. -+ -+2014-02-28 Vladimir Serbinenko -+ - * grub-core/kern/i386/coreboot/mmap.c: Filter out 0xa0000-0x100000 - region. - -diff --git a/grub-core/loader/i386/multiboot_mbi.c b/grub-core/loader/i386/multiboot_mbi.c -index 7431aa4..f10c087 100644 ---- a/grub-core/loader/i386/multiboot_mbi.c -+++ b/grub-core/loader/i386/multiboot_mbi.c -@@ -446,7 +446,7 @@ grub_multiboot_make_mbi (grub_uint32_t *target) - bufsize = grub_multiboot_get_mbi_size (); - - err = grub_relocator_alloc_chunk_align (grub_multiboot_relocator, &ch, -- 0x10000, 0x100000 - bufsize, -+ 0x10000, 0xa0000 - bufsize, - bufsize, 4, - GRUB_RELOCATOR_PREFERENCE_NONE, 0); - if (err) --- -1.9.0 - diff --git a/0062-grub-core-loader-i386-multiboot_mbi.c-grub_multiboot.patch b/0062-grub-core-loader-i386-multiboot_mbi.c-grub_multiboot.patch new file mode 100644 index 0000000..1ea10c7 --- /dev/null +++ b/0062-grub-core-loader-i386-multiboot_mbi.c-grub_multiboot.patch @@ -0,0 +1,42 @@ +From 4530afc725782bbb92d4681fc338acebc4604b45 Mon Sep 17 00:00:00 2001 +From: Vladimir Serbinenko +Date: Fri, 28 Feb 2014 09:48:57 +0100 +Subject: [PATCH 062/125] * grub-core/loader/i386/multiboot_mbi.c + (grub_multiboot_make_mbi): Limit location to 640K. + +--- + ChangeLog | 5 +++++ + grub-core/loader/i386/multiboot_mbi.c | 2 +- + 2 files changed, 6 insertions(+), 1 deletion(-) + +diff --git a/ChangeLog b/ChangeLog +index 4f6f6d6..bbaed26 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,5 +1,10 @@ + 2014-02-28 Vladimir Serbinenko + ++ * grub-core/loader/i386/multiboot_mbi.c (grub_multiboot_make_mbi): Limit ++ location to 640K. ++ ++2014-02-28 Vladimir Serbinenko ++ + * grub-core/kern/i386/coreboot/mmap.c: Filter out 0xa0000-0x100000 + region. + +diff --git a/grub-core/loader/i386/multiboot_mbi.c b/grub-core/loader/i386/multiboot_mbi.c +index 7431aa4..f10c087 100644 +--- a/grub-core/loader/i386/multiboot_mbi.c ++++ b/grub-core/loader/i386/multiboot_mbi.c +@@ -446,7 +446,7 @@ grub_multiboot_make_mbi (grub_uint32_t *target) + bufsize = grub_multiboot_get_mbi_size (); + + err = grub_relocator_alloc_chunk_align (grub_multiboot_relocator, &ch, +- 0x10000, 0x100000 - bufsize, ++ 0x10000, 0xa0000 - bufsize, + bufsize, 4, + GRUB_RELOCATOR_PREFERENCE_NONE, 0); + if (err) +-- +1.9.0 + diff --git a/0062-grub-core-mmap-i386-uppermem.c-lower_hook-COREBOOT-I.patch b/0062-grub-core-mmap-i386-uppermem.c-lower_hook-COREBOOT-I.patch deleted file mode 100644 index 2ad8c90..0000000 --- a/0062-grub-core-mmap-i386-uppermem.c-lower_hook-COREBOOT-I.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 710c688efe8b10b3e6b889158d80d11cca6655ec Mon Sep 17 00:00:00 2001 -From: Vladimir Serbinenko -Date: Fri, 28 Feb 2014 09:50:47 +0100 -Subject: [PATCH 062/103] * grub-core/mmap/i386/uppermem.c (lower_hook) - [COREBOOT]: Ignore low tables for low memory calculations. - ---- - ChangeLog | 5 +++++ - grub-core/mmap/i386/uppermem.c | 6 +++++- - 2 files changed, 10 insertions(+), 1 deletion(-) - -diff --git a/ChangeLog b/ChangeLog -index 8087595..76ae629 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,5 +1,10 @@ - 2014-02-28 Vladimir Serbinenko - -+ * grub-core/mmap/i386/uppermem.c (lower_hook) [COREBOOT]: Ignore low -+ tables for low memory calculations. -+ -+2014-02-28 Vladimir Serbinenko -+ - * grub-core/loader/i386/multiboot_mbi.c (grub_multiboot_make_mbi): Limit - location to 640K. - -diff --git a/grub-core/mmap/i386/uppermem.c b/grub-core/mmap/i386/uppermem.c -index bd8b429..a6be989 100644 ---- a/grub-core/mmap/i386/uppermem.c -+++ b/grub-core/mmap/i386/uppermem.c -@@ -31,8 +31,12 @@ lower_hook (grub_uint64_t addr, grub_uint64_t size, grub_memory_type_t type, - - if (type != GRUB_MEMORY_AVAILABLE) - return 0; -+#ifdef GRUB_MACHINE_COREBOOT -+ if (addr <= 0x1000) -+#else - if (addr == 0) -- *lower = size; -+#endif -+ *lower = size + addr; - return 0; - } - --- -1.9.0 - diff --git a/0063-grub-core-kern-i386-pc-mmap.c-Fallback-to-EISA-memor.patch b/0063-grub-core-kern-i386-pc-mmap.c-Fallback-to-EISA-memor.patch deleted file mode 100644 index 6694c5d..0000000 --- a/0063-grub-core-kern-i386-pc-mmap.c-Fallback-to-EISA-memor.patch +++ /dev/null @@ -1,88 +0,0 @@ -From 2fecc871c9094c82a78d057d340fb4d83b895cdb Mon Sep 17 00:00:00 2001 -From: Vladimir Serbinenko -Date: Fri, 28 Feb 2014 10:07:11 +0100 -Subject: [PATCH 063/103] * grub-core/kern/i386/pc/mmap.c: Fallback to - EISA memory map if E820 failed to return any regions. - ---- - ChangeLog | 5 +++++ - grub-core/kern/i386/pc/mmap.c | 40 +++++++++++++++++++++------------------- - 2 files changed, 26 insertions(+), 19 deletions(-) - -diff --git a/ChangeLog b/ChangeLog -index 76ae629..25ca7db 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,5 +1,10 @@ - 2014-02-28 Vladimir Serbinenko - -+ * grub-core/kern/i386/pc/mmap.c: Fallback to EISA memory map -+ if E820 failed to return any regions. -+ -+2014-02-28 Vladimir Serbinenko -+ - * grub-core/mmap/i386/uppermem.c (lower_hook) [COREBOOT]: Ignore low - tables for low memory calculations. - -diff --git a/grub-core/kern/i386/pc/mmap.c b/grub-core/kern/i386/pc/mmap.c -index 8009e83..f1375f3 100644 ---- a/grub-core/kern/i386/pc/mmap.c -+++ b/grub-core/kern/i386/pc/mmap.c -@@ -141,33 +141,35 @@ grub_get_mmap_entry (struct grub_machine_mmap_entry *entry, - grub_err_t - grub_machine_mmap_iterate (grub_memory_hook_t hook, void *hook_data) - { -- grub_uint32_t cont; -+ grub_uint32_t cont = 0; - struct grub_machine_mmap_entry *entry - = (struct grub_machine_mmap_entry *) GRUB_MEMORY_MACHINE_SCRATCH_ADDR; -+ int e820_works = 0; - -- grub_memset (entry, 0, sizeof (entry)); -+ while (1) -+ { -+ grub_memset (entry, 0, sizeof (entry)); - -- /* Check if grub_get_mmap_entry works. */ -- cont = grub_get_mmap_entry (entry, 0); -+ cont = grub_get_mmap_entry (entry, cont); - -- if (entry->size) -- do -- { -- if (hook (entry->addr, entry->len, -- /* GRUB mmaps have been defined to match with the E820 definition. -- Therefore, we can just pass type through. */ -- entry->type, hook_data)) -- break; -+ if (!entry->size) -+ break; - -- if (! cont) -- break; -+ if (entry->len) -+ e820_works = 1; -+ if (entry->len -+ && hook (entry->addr, entry->len, -+ /* GRUB mmaps have been defined to match with -+ the E820 definition. -+ Therefore, we can just pass type through. */ -+ entry->type, hook_data)) -+ break; - -- grub_memset (entry, 0, sizeof (entry)); -+ if (! cont) -+ break; -+ } - -- cont = grub_get_mmap_entry (entry, cont); -- } -- while (entry->size); -- else -+ if (!e820_works) - { - grub_uint32_t eisa_mmap = grub_get_eisa_mmap (); - --- -1.9.0 - diff --git a/0063-grub-core-mmap-i386-uppermem.c-lower_hook-COREBOOT-I.patch b/0063-grub-core-mmap-i386-uppermem.c-lower_hook-COREBOOT-I.patch new file mode 100644 index 0000000..a6ca9dd --- /dev/null +++ b/0063-grub-core-mmap-i386-uppermem.c-lower_hook-COREBOOT-I.patch @@ -0,0 +1,47 @@ +From e85cc7078e669509d3a22c4e76f94cdd53335fff Mon Sep 17 00:00:00 2001 +From: Vladimir Serbinenko +Date: Fri, 28 Feb 2014 09:50:47 +0100 +Subject: [PATCH 063/125] * grub-core/mmap/i386/uppermem.c (lower_hook) + [COREBOOT]: Ignore low tables for low memory calculations. + +--- + ChangeLog | 5 +++++ + grub-core/mmap/i386/uppermem.c | 6 +++++- + 2 files changed, 10 insertions(+), 1 deletion(-) + +diff --git a/ChangeLog b/ChangeLog +index bbaed26..6ed6cf4 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,5 +1,10 @@ + 2014-02-28 Vladimir Serbinenko + ++ * grub-core/mmap/i386/uppermem.c (lower_hook) [COREBOOT]: Ignore low ++ tables for low memory calculations. ++ ++2014-02-28 Vladimir Serbinenko ++ + * grub-core/loader/i386/multiboot_mbi.c (grub_multiboot_make_mbi): Limit + location to 640K. + +diff --git a/grub-core/mmap/i386/uppermem.c b/grub-core/mmap/i386/uppermem.c +index bd8b429..a6be989 100644 +--- a/grub-core/mmap/i386/uppermem.c ++++ b/grub-core/mmap/i386/uppermem.c +@@ -31,8 +31,12 @@ lower_hook (grub_uint64_t addr, grub_uint64_t size, grub_memory_type_t type, + + if (type != GRUB_MEMORY_AVAILABLE) + return 0; ++#ifdef GRUB_MACHINE_COREBOOT ++ if (addr <= 0x1000) ++#else + if (addr == 0) +- *lower = size; ++#endif ++ *lower = size + addr; + return 0; + } + +-- +1.9.0 + diff --git a/0064-grub-core-kern-i386-pc-mmap.c-Fallback-to-EISA-memor.patch b/0064-grub-core-kern-i386-pc-mmap.c-Fallback-to-EISA-memor.patch new file mode 100644 index 0000000..4df3110 --- /dev/null +++ b/0064-grub-core-kern-i386-pc-mmap.c-Fallback-to-EISA-memor.patch @@ -0,0 +1,88 @@ +From 37e3b5e42930e8cd4e801e4203dc2fde335b4b10 Mon Sep 17 00:00:00 2001 +From: Vladimir Serbinenko +Date: Fri, 28 Feb 2014 10:07:11 +0100 +Subject: [PATCH 064/125] * grub-core/kern/i386/pc/mmap.c: Fallback to + EISA memory map if E820 failed to return any regions. + +--- + ChangeLog | 5 +++++ + grub-core/kern/i386/pc/mmap.c | 40 +++++++++++++++++++++------------------- + 2 files changed, 26 insertions(+), 19 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index 6ed6cf4..97cf57e 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,5 +1,10 @@ + 2014-02-28 Vladimir Serbinenko + ++ * grub-core/kern/i386/pc/mmap.c: Fallback to EISA memory map ++ if E820 failed to return any regions. ++ ++2014-02-28 Vladimir Serbinenko ++ + * grub-core/mmap/i386/uppermem.c (lower_hook) [COREBOOT]: Ignore low + tables for low memory calculations. + +diff --git a/grub-core/kern/i386/pc/mmap.c b/grub-core/kern/i386/pc/mmap.c +index 8009e83..f1375f3 100644 +--- a/grub-core/kern/i386/pc/mmap.c ++++ b/grub-core/kern/i386/pc/mmap.c +@@ -141,33 +141,35 @@ grub_get_mmap_entry (struct grub_machine_mmap_entry *entry, + grub_err_t + grub_machine_mmap_iterate (grub_memory_hook_t hook, void *hook_data) + { +- grub_uint32_t cont; ++ grub_uint32_t cont = 0; + struct grub_machine_mmap_entry *entry + = (struct grub_machine_mmap_entry *) GRUB_MEMORY_MACHINE_SCRATCH_ADDR; ++ int e820_works = 0; + +- grub_memset (entry, 0, sizeof (entry)); ++ while (1) ++ { ++ grub_memset (entry, 0, sizeof (entry)); + +- /* Check if grub_get_mmap_entry works. */ +- cont = grub_get_mmap_entry (entry, 0); ++ cont = grub_get_mmap_entry (entry, cont); + +- if (entry->size) +- do +- { +- if (hook (entry->addr, entry->len, +- /* GRUB mmaps have been defined to match with the E820 definition. +- Therefore, we can just pass type through. */ +- entry->type, hook_data)) +- break; ++ if (!entry->size) ++ break; + +- if (! cont) +- break; ++ if (entry->len) ++ e820_works = 1; ++ if (entry->len ++ && hook (entry->addr, entry->len, ++ /* GRUB mmaps have been defined to match with ++ the E820 definition. ++ Therefore, we can just pass type through. */ ++ entry->type, hook_data)) ++ break; + +- grub_memset (entry, 0, sizeof (entry)); ++ if (! cont) ++ break; ++ } + +- cont = grub_get_mmap_entry (entry, cont); +- } +- while (entry->size); +- else ++ if (!e820_works) + { + grub_uint32_t eisa_mmap = grub_get_eisa_mmap (); + +-- +1.9.0 + diff --git a/0064-include-grub-i386-openbsd_bootarg.h-Add-addr-and-fre.patch b/0064-include-grub-i386-openbsd_bootarg.h-Add-addr-and-fre.patch deleted file mode 100644 index 4ab2528..0000000 --- a/0064-include-grub-i386-openbsd_bootarg.h-Add-addr-and-fre.patch +++ /dev/null @@ -1,70 +0,0 @@ -From d69dfa96c2765e9759d99bc808566b46c599ede0 Mon Sep 17 00:00:00 2001 -From: Vladimir Serbinenko -Date: Fri, 28 Feb 2014 10:50:05 +0100 -Subject: [PATCH 064/103] * include/grub/i386/openbsd_bootarg.h: Add - addr and frequency fields. * grub-core/loader/i386/bsd.c - (grub_cmd_openbsd): Fill addr field. -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - - Suggested by: Markus Müller. ---- - ChangeLog | 7 +++++++ - grub-core/loader/i386/bsd.c | 2 ++ - include/grub/i386/openbsd_bootarg.h | 2 ++ - 3 files changed, 11 insertions(+) - -diff --git a/ChangeLog b/ChangeLog -index 25ca7db..1b17e1b 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,5 +1,12 @@ - 2014-02-28 Vladimir Serbinenko - -+ * include/grub/i386/openbsd_bootarg.h: Add addr and frequency fields. -+ * grub-core/loader/i386/bsd.c (grub_cmd_openbsd): Fill addr field. -+ -+ Suggested by: Markus Müller. -+ -+2014-02-28 Vladimir Serbinenko -+ - * grub-core/kern/i386/pc/mmap.c: Fallback to EISA memory map - if E820 failed to return any regions. - -diff --git a/grub-core/loader/i386/bsd.c b/grub-core/loader/i386/bsd.c -index ea0edfa..19985f0 100644 ---- a/grub-core/loader/i386/bsd.c -+++ b/grub-core/loader/i386/bsd.c -@@ -1646,6 +1646,7 @@ grub_cmd_openbsd (grub_extcmd_context_t ctxt, int argc, char *argv[]) - - serial.device = (GRUB_OPENBSD_COM_MAJOR << 8) | port; - serial.speed = speed; -+ serial.addr = grub_ns8250_hw_get_port (port); - - grub_bsd_add_meta (OPENBSD_BOOTARG_CONSOLE, &serial, sizeof (serial)); - bootflags |= OPENBSD_RB_SERCONS; -@@ -1656,6 +1657,7 @@ grub_cmd_openbsd (grub_extcmd_context_t ctxt, int argc, char *argv[]) - - grub_memset (&serial, 0, sizeof (serial)); - serial.device = (GRUB_OPENBSD_VGA_MAJOR << 8); -+ serial.addr = 0xffffffff; - grub_bsd_add_meta (OPENBSD_BOOTARG_CONSOLE, &serial, sizeof (serial)); - bootflags &= ~OPENBSD_RB_SERCONS; - } -diff --git a/include/grub/i386/openbsd_bootarg.h b/include/grub/i386/openbsd_bootarg.h -index 01ca486..9ebe6b4 100644 ---- a/include/grub/i386/openbsd_bootarg.h -+++ b/include/grub/i386/openbsd_bootarg.h -@@ -75,6 +75,8 @@ struct grub_openbsd_bootarg_console - { - grub_uint32_t device; - grub_uint32_t speed; -+ grub_uint32_t addr; -+ grub_uint32_t frequency; - }; - - struct grub_openbsd_bootarg_pcibios --- -1.9.0 - diff --git a/0065-Migrate-PPC-from-Yaboot-to-Grub2.patch b/0065-Migrate-PPC-from-Yaboot-to-Grub2.patch deleted file mode 100644 index 3f1b501..0000000 --- a/0065-Migrate-PPC-from-Yaboot-to-Grub2.patch +++ /dev/null @@ -1,154 +0,0 @@ -From 4d75121a7fa86a60b646c96e2d75caa0d70c408e Mon Sep 17 00:00:00 2001 -From: Mark Hamzy -Date: Wed, 28 Mar 2012 14:46:41 -0500 -Subject: [PATCH 065/103] Migrate PPC from Yaboot to Grub2 - -Add configuration support for serial terminal consoles. This will set the -maximum screen size so that text is not overwritten. ---- - Makefile.util.def | 7 +++ - util/grub.d/20_ppc_terminfo.in | 114 +++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 121 insertions(+) - create mode 100644 util/grub.d/20_ppc_terminfo.in - -diff --git a/Makefile.util.def b/Makefile.util.def -index a286a89..8f40e78 100644 ---- a/Makefile.util.def -+++ b/Makefile.util.def -@@ -485,6 +485,13 @@ script = { - }; - - script = { -+ name = '20_ppc_terminfo'; -+ common = util/grub.d/20_ppc_terminfo.in; -+ installdir = grubconf; -+ condition = COND_HOST_LINUX; -+}; -+ -+script = { - name = '30_os-prober'; - common = util/grub.d/30_os-prober.in; - installdir = grubconf; -diff --git a/util/grub.d/20_ppc_terminfo.in b/util/grub.d/20_ppc_terminfo.in -new file mode 100644 -index 0000000..10d6658 ---- /dev/null -+++ b/util/grub.d/20_ppc_terminfo.in -@@ -0,0 +1,114 @@ -+#! /bin/sh -+set -e -+ -+# grub-mkconfig helper script. -+# Copyright (C) 2006,2007,2008,2009,2010 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 . -+ -+prefix=@prefix@ -+exec_prefix=@exec_prefix@ -+bindir=@bindir@ -+libdir=@libdir@ -+. "@datadir@/@PACKAGE@/grub-mkconfig_lib" -+ -+export TEXTDOMAIN=@PACKAGE@ -+export TEXTDOMAINDIR=@localedir@ -+ -+X=80 -+Y=24 -+TERMINAL=ofconsole -+ -+argument () { -+ opt=$1 -+ shift -+ -+ if test $# -eq 0; then -+ echo "$0: option requires an argument -- '$opt'" 1>&2 -+ exit 1 -+ fi -+ echo $1 -+} -+ -+check_terminfo () { -+ -+ while test $# -gt 0 -+ do -+ option=$1 -+ shift -+ -+ case "$option" in -+ terminfo | TERMINFO) -+ ;; -+ -+ -g) -+ NEWXY=`argument $option "$@"` -+ NEWX=`echo $NEWXY | cut -d x -f 1` -+ NEWY=`echo $NEWXY | cut -d x -f 2` -+ -+ if [ ${NEWX} -ge 80 ] ; then -+ X=${NEWX} -+ else -+ echo "Warning: ${NEWX} is less than the minimum size of 80" -+ fi -+ -+ if [ ${NEWY} -ge 24 ] ; then -+ Y=${NEWY} -+ else -+ echo "Warning: ${NEWY} is less than the minimum size of 24" -+ fi -+ -+ shift -+ ;; -+ -+ *) -+# # accept console or ofconsole -+# if [ "$option" != "console" -a "$option" != "ofconsole" ] ; then -+# echo "Error: GRUB_TERMINFO unknown console: $option" -+# exit 1 -+# fi -+# # perfer console -+# TERMINAL=console -+ # accept ofconsole -+ if [ "$option" != "ofconsole" ] ; then -+ echo "Error: GRUB_TERMINFO unknown console: $option" -+ exit 1 -+ fi -+ # perfer console -+ TERMINAL=ofconsole -+ ;; -+ esac -+ -+ done -+ -+} -+ -+if ! uname -m | grep -q ppc ; then -+ exit 0 -+fi -+ -+if [ "x${GRUB_TERMINFO}" != "x" ] ; then -+ F1=`echo ${GRUB_TERMINFO} | cut -d " " -f 1` -+ -+ if [ "${F1}" != "terminfo" ] ; then -+ echo "Error: GRUB_TERMINFO is set to \"${GRUB_TERMINFO}\" The first word should be terminfo." -+ exit 1 -+ fi -+ -+ check_terminfo ${GRUB_TERMINFO} -+fi -+ -+cat << EOF -+ terminfo -g ${X}x${Y} ${TERMINAL} -+EOF --- -1.9.0 - diff --git a/0065-include-grub-i386-openbsd_bootarg.h-Add-addr-and-fre.patch b/0065-include-grub-i386-openbsd_bootarg.h-Add-addr-and-fre.patch new file mode 100644 index 0000000..2f67767 --- /dev/null +++ b/0065-include-grub-i386-openbsd_bootarg.h-Add-addr-and-fre.patch @@ -0,0 +1,70 @@ +From 1cdf2c717c0f4a2efac0e5dc8b5c564f930c537a Mon Sep 17 00:00:00 2001 +From: Vladimir Serbinenko +Date: Fri, 28 Feb 2014 10:50:05 +0100 +Subject: [PATCH 065/125] * include/grub/i386/openbsd_bootarg.h: Add + addr and frequency fields. * grub-core/loader/i386/bsd.c + (grub_cmd_openbsd): Fill addr field. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + + Suggested by: Markus Müller. +--- + ChangeLog | 7 +++++++ + grub-core/loader/i386/bsd.c | 2 ++ + include/grub/i386/openbsd_bootarg.h | 2 ++ + 3 files changed, 11 insertions(+) + +diff --git a/ChangeLog b/ChangeLog +index 97cf57e..f571f66 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,5 +1,12 @@ + 2014-02-28 Vladimir Serbinenko + ++ * include/grub/i386/openbsd_bootarg.h: Add addr and frequency fields. ++ * grub-core/loader/i386/bsd.c (grub_cmd_openbsd): Fill addr field. ++ ++ Suggested by: Markus Müller. ++ ++2014-02-28 Vladimir Serbinenko ++ + * grub-core/kern/i386/pc/mmap.c: Fallback to EISA memory map + if E820 failed to return any regions. + +diff --git a/grub-core/loader/i386/bsd.c b/grub-core/loader/i386/bsd.c +index ea0edfa..19985f0 100644 +--- a/grub-core/loader/i386/bsd.c ++++ b/grub-core/loader/i386/bsd.c +@@ -1646,6 +1646,7 @@ grub_cmd_openbsd (grub_extcmd_context_t ctxt, int argc, char *argv[]) + + serial.device = (GRUB_OPENBSD_COM_MAJOR << 8) | port; + serial.speed = speed; ++ serial.addr = grub_ns8250_hw_get_port (port); + + grub_bsd_add_meta (OPENBSD_BOOTARG_CONSOLE, &serial, sizeof (serial)); + bootflags |= OPENBSD_RB_SERCONS; +@@ -1656,6 +1657,7 @@ grub_cmd_openbsd (grub_extcmd_context_t ctxt, int argc, char *argv[]) + + grub_memset (&serial, 0, sizeof (serial)); + serial.device = (GRUB_OPENBSD_VGA_MAJOR << 8); ++ serial.addr = 0xffffffff; + grub_bsd_add_meta (OPENBSD_BOOTARG_CONSOLE, &serial, sizeof (serial)); + bootflags &= ~OPENBSD_RB_SERCONS; + } +diff --git a/include/grub/i386/openbsd_bootarg.h b/include/grub/i386/openbsd_bootarg.h +index 01ca486..9ebe6b4 100644 +--- a/include/grub/i386/openbsd_bootarg.h ++++ b/include/grub/i386/openbsd_bootarg.h +@@ -75,6 +75,8 @@ struct grub_openbsd_bootarg_console + { + grub_uint32_t device; + grub_uint32_t speed; ++ grub_uint32_t addr; ++ grub_uint32_t frequency; + }; + + struct grub_openbsd_bootarg_pcibios +-- +1.9.0 + diff --git a/0066-Add-fw_path-variable-revised.patch b/0066-Add-fw_path-variable-revised.patch deleted file mode 100644 index ade4f17..0000000 --- a/0066-Add-fw_path-variable-revised.patch +++ /dev/null @@ -1,81 +0,0 @@ -From ae053ae71b4d7e3168f6d97398f0d137929fafd0 Mon Sep 17 00:00:00 2001 -From: Paulo Flabiano Smorigo -Date: Wed, 19 Sep 2012 21:22:55 -0300 -Subject: [PATCH 066/103] Add fw_path variable (revised) - -This patch makes grub look for its config file on efi where the app was -found. It was originally written by Matthew Garrett, and adapted to fix the -"No modules are loaded on grub2 network boot" issue: - -https://bugzilla.redhat.com/show_bug.cgi?id=857936 ---- - grub-core/kern/main.c | 13 ++++++------- - grub-core/normal/main.c | 25 ++++++++++++++++++++++++- - 2 files changed, 30 insertions(+), 8 deletions(-) - -diff --git a/grub-core/kern/main.c b/grub-core/kern/main.c -index 9cad0c4..8ab7794 100644 ---- a/grub-core/kern/main.c -+++ b/grub-core/kern/main.c -@@ -127,16 +127,15 @@ grub_set_prefix_and_root (void) - - grub_machine_get_bootlocation (&fwdevice, &fwpath); - -- if (fwdevice) -+ if (fwdevice && fwpath) - { -- char *cmdpath; -+ char *fw_path; - -- cmdpath = grub_xasprintf ("(%s)%s", fwdevice, fwpath ? : ""); -- if (cmdpath) -+ fw_path = grub_xasprintf ("(%s)/%s", fwdevice, fwpath); -+ if (fw_path) - { -- grub_env_set ("cmdpath", cmdpath); -- grub_env_export ("cmdpath"); -- grub_free (cmdpath); -+ grub_env_set ("fw_path", fw_path); -+ grub_free (fw_path); - } - } - -diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c -index 3a926fc..6f4970f 100644 ---- a/grub-core/normal/main.c -+++ b/grub-core/normal/main.c -@@ -319,7 +319,30 @@ grub_cmd_normal (struct grub_command *cmd __attribute__ ((unused)), - /* Guess the config filename. It is necessary to make CONFIG static, - so that it won't get broken by longjmp. */ - char *config; -- const char *prefix; -+ const char *prefix, *fw_path; -+ -+ fw_path = grub_env_get ("fw_path"); -+ if (fw_path) -+ { -+ config = grub_xasprintf ("%s/grub.cfg", fw_path); -+ if (config) -+ { -+ grub_file_t file; -+ -+ file = grub_file_open (config); -+ if (file) -+ { -+ grub_file_close (file); -+ grub_enter_normal_mode (config); -+ } -+ else -+ { -+ /* Ignore all errors. */ -+ grub_errno = 0; -+ } -+ grub_free (config); -+ } -+ } - - prefix = grub_env_get ("prefix"); - if (prefix) --- -1.9.0 - diff --git a/0066-ieee1275-check-for-IBM-pseries-emulated-machine.patch b/0066-ieee1275-check-for-IBM-pseries-emulated-machine.patch new file mode 100644 index 0000000..454dc2d --- /dev/null +++ b/0066-ieee1275-check-for-IBM-pseries-emulated-machine.patch @@ -0,0 +1,33 @@ +From 2a20b05871d51635060ab58c1b63ac2ee9f8a359 Mon Sep 17 00:00:00 2001 +From: Nikunj A Dadhania +Date: Thu, 20 Mar 2014 16:57:12 +0530 +Subject: [PATCH 066/125] ieee1275: check for IBM pseries emulated machine + +is_qemu is not being set lead to disabling of feature like +GRUB_IEEE1275_FLAG_HAS_CURSORONOFF. This resulted in cursor not being +displayed during the grub-menu edit. + +Signed-off-by: Nikunj A Dadhania +--- + grub-core/kern/ieee1275/cmain.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/grub-core/kern/ieee1275/cmain.c b/grub-core/kern/ieee1275/cmain.c +index d92ae14..3e12e6b 100644 +--- a/grub-core/kern/ieee1275/cmain.c ++++ b/grub-core/kern/ieee1275/cmain.c +@@ -84,8 +84,10 @@ grub_ieee1275_find_options (void) + + rc = grub_ieee1275_get_property (root, "model", + tmp, sizeof (tmp), 0); +- if (rc >= 0 && !grub_strcmp (tmp, "Emulated PC")) ++ if (rc >= 0 && (!grub_strcmp (tmp, "Emulated PC") ++ || !grub_strcmp (tmp, "IBM pSeries (emulated by qemu)"))) { + is_qemu = 1; ++ } + + if (rc >= 0 && grub_strncmp (tmp, "IBM", 3) == 0) + grub_ieee1275_set_flag (GRUB_IEEE1275_FLAG_NO_TREE_SCANNING_FOR_DISKS); +-- +1.9.0 + diff --git a/0067-Add-support-for-linuxefi.patch b/0067-Add-support-for-linuxefi.patch deleted file mode 100644 index 079da3d..0000000 --- a/0067-Add-support-for-linuxefi.patch +++ /dev/null @@ -1,482 +0,0 @@ -From f84fdfda066a9b46598847f7af0f02c97fb8cdc5 Mon Sep 17 00:00:00 2001 -From: Matthew Garrett -Date: Tue, 10 Jul 2012 11:58:52 -0400 -Subject: [PATCH 067/103] Add support for linuxefi - ---- - grub-core/Makefile.core.def | 8 + - grub-core/kern/efi/mm.c | 32 ++++ - grub-core/loader/i386/efi/linux.c | 371 ++++++++++++++++++++++++++++++++++++++ - include/grub/efi/efi.h | 3 + - include/grub/i386/linux.h | 1 + - 5 files changed, 415 insertions(+) - create mode 100644 grub-core/loader/i386/efi/linux.c - -diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def -index 42443bc..ec46506 100644 ---- a/grub-core/Makefile.core.def -+++ b/grub-core/Makefile.core.def -@@ -1706,6 +1706,14 @@ module = { - }; - - module = { -+ name = linuxefi; -+ efi = loader/i386/efi/linux.c; -+ efi = lib/cmdline.c; -+ enable = i386_efi; -+ enable = x86_64_efi; -+}; -+ -+module = { - name = chain; - efi = loader/efi/chainloader.c; - i386_pc = loader/i386/pc/chainloader.c; -diff --git a/grub-core/kern/efi/mm.c b/grub-core/kern/efi/mm.c -index be37afd..ddeca60 100644 ---- a/grub-core/kern/efi/mm.c -+++ b/grub-core/kern/efi/mm.c -@@ -49,6 +49,38 @@ static grub_efi_uintn_t finish_desc_size; - static grub_efi_uint32_t finish_desc_version; - int grub_efi_is_finished = 0; - -+/* Allocate pages below a specified address */ -+void * -+grub_efi_allocate_pages_max (grub_efi_physical_address_t max, -+ grub_efi_uintn_t pages) -+{ -+ grub_efi_status_t status; -+ grub_efi_boot_services_t *b; -+ grub_efi_physical_address_t address = max; -+ -+ if (max > 0xffffffff) -+ return 0; -+ -+ b = grub_efi_system_table->boot_services; -+ status = efi_call_4 (b->allocate_pages, GRUB_EFI_ALLOCATE_MAX_ADDRESS, GRUB_EFI_LOADER_DATA, pages, &address); -+ -+ if (status != GRUB_EFI_SUCCESS) -+ return 0; -+ -+ if (address == 0) -+ { -+ /* Uggh, the address 0 was allocated... This is too annoying, -+ so reallocate another one. */ -+ address = max; -+ status = efi_call_4 (b->allocate_pages, GRUB_EFI_ALLOCATE_MAX_ADDRESS, GRUB_EFI_LOADER_DATA, pages, &address); -+ grub_efi_free_pages (0, pages); -+ if (status != GRUB_EFI_SUCCESS) -+ return 0; -+ } -+ -+ return (void *) ((grub_addr_t) address); -+} -+ - /* Allocate pages. Return the pointer to the first of allocated pages. */ - void * - grub_efi_allocate_pages (grub_efi_physical_address_t address, -diff --git a/grub-core/loader/i386/efi/linux.c b/grub-core/loader/i386/efi/linux.c -new file mode 100644 -index 0000000..b79e632 ---- /dev/null -+++ b/grub-core/loader/i386/efi/linux.c -@@ -0,0 +1,371 @@ -+/* -+ * GRUB -- GRand Unified Bootloader -+ * Copyright (C) 2012 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 . -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+GRUB_MOD_LICENSE ("GPLv3+"); -+ -+static grub_dl_t my_mod; -+static int loaded; -+static void *kernel_mem; -+static grub_uint64_t kernel_size; -+static grub_uint8_t *initrd_mem; -+static grub_uint32_t handover_offset; -+struct linux_kernel_params *params; -+static char *linux_cmdline; -+ -+#define BYTES_TO_PAGES(bytes) (((bytes) + 0xfff) >> 12) -+ -+#define SHIM_LOCK_GUID \ -+ { 0x605dab50, 0xe046, 0x4300, {0xab, 0xb6, 0x3d, 0xd8, 0x10, 0xdd, 0x8b, 0x23} } -+ -+struct grub_efi_shim_lock -+{ -+ grub_efi_status_t (*verify) (void *buffer, grub_uint32_t size); -+}; -+typedef struct grub_efi_shim_lock grub_efi_shim_lock_t; -+ -+static grub_efi_boolean_t -+grub_linuxefi_secure_validate (void *data, grub_uint32_t size) -+{ -+ grub_efi_guid_t guid = SHIM_LOCK_GUID; -+ grub_efi_shim_lock_t *shim_lock; -+ -+ shim_lock = grub_efi_locate_protocol(&guid, NULL); -+ -+ if (!shim_lock) -+ return 1; -+ -+ if (shim_lock->verify(data, size) == GRUB_EFI_SUCCESS) -+ return 1; -+ -+ return 0; -+} -+ -+typedef void(*handover_func)(void *, grub_efi_system_table_t *, struct linux_kernel_params *); -+ -+static grub_err_t -+grub_linuxefi_boot (void) -+{ -+ handover_func hf; -+ int offset = 0; -+ -+#ifdef __x86_64__ -+ offset = 512; -+#endif -+ -+ hf = (handover_func)((char *)kernel_mem + handover_offset + offset); -+ -+ asm volatile ("cli"); -+ -+ hf (grub_efi_image_handle, grub_efi_system_table, params); -+ -+ /* Not reached */ -+ return GRUB_ERR_NONE; -+} -+ -+static grub_err_t -+grub_linuxefi_unload (void) -+{ -+ grub_dl_unref (my_mod); -+ loaded = 0; -+ if (initrd_mem) -+ grub_efi_free_pages((grub_efi_physical_address_t)initrd_mem, BYTES_TO_PAGES(params->ramdisk_size)); -+ if (linux_cmdline) -+ grub_efi_free_pages((grub_efi_physical_address_t)linux_cmdline, BYTES_TO_PAGES(params->cmdline_size + 1)); -+ if (kernel_mem) -+ grub_efi_free_pages((grub_efi_physical_address_t)kernel_mem, BYTES_TO_PAGES(kernel_size)); -+ if (params) -+ grub_efi_free_pages((grub_efi_physical_address_t)params, BYTES_TO_PAGES(16384)); -+ return GRUB_ERR_NONE; -+} -+ -+static grub_err_t -+grub_cmd_initrd (grub_command_t cmd __attribute__ ((unused)), -+ int argc, char *argv[]) -+{ -+ grub_file_t *files = 0; -+ int i, nfiles = 0; -+ grub_size_t size = 0; -+ grub_uint8_t *ptr; -+ -+ if (argc == 0) -+ { -+ grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected")); -+ goto fail; -+ } -+ -+ if (!loaded) -+ { -+ grub_error (GRUB_ERR_BAD_ARGUMENT, N_("you need to load the kernel first")); -+ goto fail; -+ } -+ -+ files = grub_zalloc (argc * sizeof (files[0])); -+ if (!files) -+ goto fail; -+ -+ for (i = 0; i < argc; i++) -+ { -+ grub_file_filter_disable_compression (); -+ files[i] = grub_file_open (argv[i]); -+ if (! files[i]) -+ goto fail; -+ nfiles++; -+ size += ALIGN_UP (grub_file_size (files[i]), 4); -+ } -+ -+ initrd_mem = grub_efi_allocate_pages_max (0x3fffffff, BYTES_TO_PAGES(size)); -+ -+ if (!initrd_mem) -+ { -+ grub_error (GRUB_ERR_OUT_OF_MEMORY, N_("can't allocate initrd")); -+ goto fail; -+ } -+ -+ params->ramdisk_size = size; -+ params->ramdisk_image = (grub_uint32_t)(grub_uint64_t) initrd_mem; -+ -+ ptr = initrd_mem; -+ -+ for (i = 0; i < nfiles; i++) -+ { -+ grub_ssize_t cursize = grub_file_size (files[i]); -+ if (grub_file_read (files[i], ptr, cursize) != cursize) -+ { -+ if (!grub_errno) -+ grub_error (GRUB_ERR_FILE_READ_ERROR, N_("premature end of file %s"), -+ argv[i]); -+ goto fail; -+ } -+ ptr += cursize; -+ grub_memset (ptr, 0, ALIGN_UP_OVERHEAD (cursize, 4)); -+ ptr += ALIGN_UP_OVERHEAD (cursize, 4); -+ } -+ -+ params->ramdisk_size = size; -+ -+ fail: -+ for (i = 0; i < nfiles; i++) -+ grub_file_close (files[i]); -+ grub_free (files); -+ -+ if (initrd_mem && grub_errno) -+ grub_efi_free_pages((grub_efi_physical_address_t)initrd_mem, BYTES_TO_PAGES(size)); -+ -+ return grub_errno; -+} -+ -+static grub_err_t -+grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)), -+ int argc, char *argv[]) -+{ -+ grub_file_t file = 0; -+ struct linux_kernel_header lh; -+ grub_ssize_t len, start, filelen; -+ void *kernel; -+ -+ grub_dl_ref (my_mod); -+ -+ if (argc == 0) -+ { -+ grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected")); -+ goto fail; -+ } -+ -+ file = grub_file_open (argv[0]); -+ if (! file) -+ goto fail; -+ -+ filelen = grub_file_size (file); -+ -+ kernel = grub_malloc(filelen); -+ -+ if (!kernel) -+ { -+ grub_error (GRUB_ERR_OUT_OF_MEMORY, N_("cannot allocate kernel buffer")); -+ goto fail; -+ } -+ -+ if (grub_file_read (file, kernel, filelen) != filelen) -+ { -+ grub_error (GRUB_ERR_FILE_READ_ERROR, N_("Can't read kernel %s"), argv[0]); -+ goto fail; -+ } -+ -+ if (! grub_linuxefi_secure_validate (kernel, filelen)) -+ { -+ grub_error (GRUB_ERR_INVALID_COMMAND, N_("%s has invalid signature"), argv[0]); -+ grub_free (kernel); -+ goto fail; -+ } -+ -+ grub_file_seek (file, 0); -+ -+ grub_free(kernel); -+ -+ params = grub_efi_allocate_pages_max (0x3fffffff, BYTES_TO_PAGES(16384)); -+ -+ if (! params) -+ { -+ grub_error (GRUB_ERR_OUT_OF_MEMORY, "cannot allocate kernel parameters"); -+ goto fail; -+ } -+ -+ memset (params, 0, 16384); -+ -+ if (grub_file_read (file, &lh, sizeof (lh)) != sizeof (lh)) -+ { -+ if (!grub_errno) -+ grub_error (GRUB_ERR_BAD_OS, N_("premature end of file %s"), -+ argv[0]); -+ goto fail; -+ } -+ -+ if (lh.boot_flag != grub_cpu_to_le16 (0xaa55)) -+ { -+ grub_error (GRUB_ERR_BAD_OS, N_("invalid magic number")); -+ goto fail; -+ } -+ -+ if (lh.setup_sects > GRUB_LINUX_MAX_SETUP_SECTS) -+ { -+ grub_error (GRUB_ERR_BAD_OS, N_("too many setup sectors")); -+ goto fail; -+ } -+ -+ if (lh.version < grub_cpu_to_le16 (0x020b)) -+ { -+ grub_error (GRUB_ERR_BAD_OS, N_("kernel too old")); -+ goto fail; -+ } -+ -+ if (!lh.handover_offset) -+ { -+ grub_error (GRUB_ERR_BAD_OS, N_("kernel doesn't support EFI handover")); -+ goto fail; -+ } -+ -+ linux_cmdline = grub_efi_allocate_pages_max(0x3fffffff, -+ BYTES_TO_PAGES(lh.cmdline_size + 1)); -+ -+ if (!linux_cmdline) -+ { -+ grub_error (GRUB_ERR_OUT_OF_MEMORY, N_("can't allocate cmdline")); -+ goto fail; -+ } -+ -+ grub_memcpy (linux_cmdline, LINUX_IMAGE, sizeof (LINUX_IMAGE)); -+ grub_create_loader_cmdline (argc, argv, -+ linux_cmdline + sizeof (LINUX_IMAGE) - 1, -+ lh.cmdline_size - (sizeof (LINUX_IMAGE) - 1)); -+ -+ lh.cmd_line_ptr = (grub_uint32_t)(grub_uint64_t)linux_cmdline; -+ -+ handover_offset = lh.handover_offset; -+ -+ start = (lh.setup_sects + 1) * 512; -+ len = grub_file_size(file) - start; -+ -+ kernel_mem = grub_efi_allocate_pages(lh.pref_address, -+ BYTES_TO_PAGES(lh.init_size)); -+ -+ if (!kernel_mem) -+ kernel_mem = grub_efi_allocate_pages_max(0x3fffffff, -+ BYTES_TO_PAGES(lh.init_size)); -+ -+ if (!kernel_mem) -+ { -+ grub_error (GRUB_ERR_OUT_OF_MEMORY, N_("can't allocate kernel")); -+ goto fail; -+ } -+ -+ if (grub_file_seek (file, start) == (grub_off_t) -1) -+ { -+ grub_error (GRUB_ERR_BAD_OS, N_("premature end of file %s"), -+ argv[0]); -+ goto fail; -+ } -+ -+ if (grub_file_read (file, kernel_mem, len) != len && !grub_errno) -+ { -+ grub_error (GRUB_ERR_BAD_OS, N_("premature end of file %s"), -+ argv[0]); -+ } -+ -+ if (grub_errno == GRUB_ERR_NONE) -+ { -+ grub_loader_set (grub_linuxefi_boot, grub_linuxefi_unload, 0); -+ loaded = 1; -+ lh.code32_start = (grub_uint32_t)(grub_uint64_t) kernel_mem; -+ } -+ -+ memcpy(params, &lh, 2 * 512); -+ -+ params->type_of_loader = 0x21; -+ -+ fail: -+ -+ if (file) -+ grub_file_close (file); -+ -+ if (grub_errno != GRUB_ERR_NONE) -+ { -+ grub_dl_unref (my_mod); -+ loaded = 0; -+ } -+ -+ if (linux_cmdline && !loaded) -+ grub_efi_free_pages((grub_efi_physical_address_t)linux_cmdline, BYTES_TO_PAGES(lh.cmdline_size + 1)); -+ -+ if (kernel_mem && !loaded) -+ grub_efi_free_pages((grub_efi_physical_address_t)kernel_mem, BYTES_TO_PAGES(kernel_size)); -+ -+ if (params && !loaded) -+ grub_efi_free_pages((grub_efi_physical_address_t)params, BYTES_TO_PAGES(16384)); -+ -+ return grub_errno; -+} -+ -+static grub_command_t cmd_linux, cmd_initrd; -+ -+GRUB_MOD_INIT(linuxefi) -+{ -+ cmd_linux = -+ grub_register_command ("linuxefi", grub_cmd_linux, -+ 0, N_("Load Linux.")); -+ cmd_initrd = -+ grub_register_command ("initrdefi", grub_cmd_initrd, -+ 0, N_("Load initrd.")); -+ my_mod = mod; -+} -+ -+GRUB_MOD_FINI(linuxefi) -+{ -+ grub_unregister_command (cmd_linux); -+ grub_unregister_command (cmd_initrd); -+} -diff --git a/include/grub/efi/efi.h b/include/grub/efi/efi.h -index 489cf9e..9370fd5 100644 ---- a/include/grub/efi/efi.h -+++ b/include/grub/efi/efi.h -@@ -40,6 +40,9 @@ void EXPORT_FUNC(grub_efi_stall) (grub_efi_uintn_t microseconds); - void * - EXPORT_FUNC(grub_efi_allocate_pages) (grub_efi_physical_address_t address, - grub_efi_uintn_t pages); -+void * -+EXPORT_FUNC(grub_efi_allocate_pages_max) (grub_efi_physical_address_t max, -+ grub_efi_uintn_t pages); - void EXPORT_FUNC(grub_efi_free_pages) (grub_efi_physical_address_t address, - grub_efi_uintn_t pages); - int -diff --git a/include/grub/i386/linux.h b/include/grub/i386/linux.h -index da0ca3b..fc36bda 100644 ---- a/include/grub/i386/linux.h -+++ b/include/grub/i386/linux.h -@@ -139,6 +139,7 @@ struct linux_kernel_header - grub_uint64_t setup_data; - grub_uint64_t pref_address; - grub_uint32_t init_size; -+ grub_uint32_t handover_offset; - } GRUB_PACKED; - - /* Boot parameters for Linux based on 2.6.12. This is used by the setup --- -1.9.0 - diff --git a/0067-grub-core-loader-arm64-linux.c-Remove-redundant-0x.patch b/0067-grub-core-loader-arm64-linux.c-Remove-redundant-0x.patch new file mode 100644 index 0000000..6bff740 --- /dev/null +++ b/0067-grub-core-loader-arm64-linux.c-Remove-redundant-0x.patch @@ -0,0 +1,39 @@ +From 530b22a1c04a08fbdb4dcbc3d34bc610af17cc68 Mon Sep 17 00:00:00 2001 +From: Fu Wei +Date: Wed, 26 Mar 2014 08:13:07 +0100 +Subject: [PATCH 067/125] * grub-core/loader/arm64/linux.c: Remove + redundant "0x". + +--- + ChangeLog | 4 ++++ + grub-core/loader/arm64/linux.c | 2 +- + 2 files changed, 5 insertions(+), 1 deletion(-) + +diff --git a/ChangeLog b/ChangeLog +index f571f66..091535b 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,7 @@ ++2014-03-26 Fu Wei ++ ++ * grub-core/loader/arm64/linux.c: Remove redundant "0x". ++ + 2014-02-28 Vladimir Serbinenko + + * include/grub/i386/openbsd_bootarg.h: Add addr and frequency fields. +diff --git a/grub-core/loader/arm64/linux.c b/grub-core/loader/arm64/linux.c +index 65129c2..f1d10a1 100644 +--- a/grub-core/loader/arm64/linux.c ++++ b/grub-core/loader/arm64/linux.c +@@ -68,7 +68,7 @@ get_firmware_fdt (void) + if (grub_memcmp (&tables[i].vendor_guid, &fdt_guid, sizeof (fdt_guid)) == 0) + { + firmware_fdt = tables[i].vendor_table; +- grub_dprintf ("linux", "found registered FDT @ 0x%p\n", firmware_fdt); ++ grub_dprintf ("linux", "found registered FDT @ %p\n", firmware_fdt); + break; + } + +-- +1.9.0 + diff --git a/0068-Use-linuxefi-and-initrdefi-where-appropriate.patch b/0068-Use-linuxefi-and-initrdefi-where-appropriate.patch deleted file mode 100644 index f378b24..0000000 --- a/0068-Use-linuxefi-and-initrdefi-where-appropriate.patch +++ /dev/null @@ -1,50 +0,0 @@ -From f606b7dfc35082809dd68dccf47d16db7d741085 Mon Sep 17 00:00:00 2001 -From: Peter Jones -Date: Mon, 16 Jul 2012 18:57:11 -0400 -Subject: [PATCH 068/103] Use "linuxefi" and "initrdefi" where appropriate. - ---- - util/grub.d/10_linux.in | 18 ++++++++++++++++-- - 1 file changed, 16 insertions(+), 2 deletions(-) - -diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in -index 00d1931..ad34cc0 100644 ---- a/util/grub.d/10_linux.in -+++ b/util/grub.d/10_linux.in -@@ -127,17 +127,31 @@ linux_entry () - printf '%s\n' "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/" - fi - message="$(gettext_printf "Loading Linux %s ..." ${version})" -- sed "s/^/$submenu_indentation/" << EOF -+ if [ -d /sys/firmware/efi ]; then -+ sed "s/^/$submenu_indentation/" << EOF -+ echo '$(echo "$message" | grub_quote)' -+ linuxefi ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args} -+EOF -+ else -+ sed "s/^/$submenu_indentation/" << EOF - echo '$(echo "$message" | grub_quote)' - linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args} - EOF -+ fi - if test -n "${initrd}" ; then - # TRANSLATORS: ramdisk isn't identifier. Should be translated. - message="$(gettext_printf "Loading initial ramdisk ...")" -- sed "s/^/$submenu_indentation/" << EOF -+ if [ -d /sys/firmware/efi ]; then -+ sed "s/^/$submenu_indentation/" << EOF - echo '$(echo "$message" | grub_quote)' -+ initrdefi ${rel_dirname}/${initrd} -+EOF -+ else -+ sed "s/^/$submenu_indentation/" << EOF -+ echo '$message' - initrd ${rel_dirname}/${initrd} - EOF -+ fi - fi - sed "s/^/$submenu_indentation/" << EOF - } --- -1.9.0 - diff --git a/0068-grub-core-lib-relocator.c-Fix-the-case-when-end-of-l.patch b/0068-grub-core-lib-relocator.c-Fix-the-case-when-end-of-l.patch new file mode 100644 index 0000000..fc4a44f --- /dev/null +++ b/0068-grub-core-lib-relocator.c-Fix-the-case-when-end-of-l.patch @@ -0,0 +1,39 @@ +From 5d1749ea5730be5c9c32228461b784317a500f4b Mon Sep 17 00:00:00 2001 +From: Vladimir Serbinenko +Date: Wed, 26 Mar 2014 08:48:30 +0100 +Subject: [PATCH 068/125] * grub-core/lib/relocator.c: Fix the case when + end of leftover is used. + +--- + ChangeLog | 4 ++++ + grub-core/lib/relocator.c | 2 ++ + 2 files changed, 6 insertions(+) + +diff --git a/ChangeLog b/ChangeLog +index 091535b..9404eda 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,7 @@ ++2014-03-26 Vladimir Serbinenko ++ ++ * grub-core/lib/relocator.c: Fix the case when end of leftover is used. ++ + 2014-03-26 Fu Wei + + * grub-core/loader/arm64/linux.c: Remove redundant "0x". +diff --git a/grub-core/lib/relocator.c b/grub-core/lib/relocator.c +index 9f9770b..cb11ea5 100644 +--- a/grub-core/lib/relocator.c ++++ b/grub-core/lib/relocator.c +@@ -865,6 +865,8 @@ malloc_in_range (struct grub_relocator *rel, + % GRUB_RELOCATOR_FIRMWARE_REQUESTS_QUANT; + struct grub_relocator_fw_leftover *lo + = events[last_lo].leftover; ++ if (offend == 0 && alloc_end != alloc_start) ++ offend = GRUB_RELOCATOR_FIRMWARE_REQUESTS_QUANT; + lo->freebytes[offstart / 8] + &= ((1 << (8 - (start % 8))) - 1); + grub_memset (lo->freebytes + (offstart + 7) / 8, 0, +-- +1.9.0 + diff --git a/0069-Don-t-allow-insmod-when-secure-boot-is-enabled.patch b/0069-Don-t-allow-insmod-when-secure-boot-is-enabled.patch deleted file mode 100644 index 6c9e02c..0000000 --- a/0069-Don-t-allow-insmod-when-secure-boot-is-enabled.patch +++ /dev/null @@ -1,117 +0,0 @@ -From 87edbb7d2e669de75f05d28329f72464ce5d4ee3 Mon Sep 17 00:00:00 2001 -From: Colin Watson -Date: Tue, 23 Oct 2012 10:40:49 -0400 -Subject: [PATCH 069/103] Don't allow insmod when secure boot is enabled. - -Hi, - -Fedora's patch to forbid insmod in UEFI Secure Boot environments is fine -as far as it goes. However, the insmod command is not the only way that -modules can be loaded. In particular, the 'normal' command, which -implements the usual GRUB menu and the fully-featured command prompt, -will implicitly load commands not currently loaded into memory. This -permits trivial Secure Boot violations by writing commands implementing -whatever you want to do and pointing $prefix at the malicious code. - -I'm currently test-building this patch (replacing your current -grub-2.00-no-insmod-on-sb.patch), but this should be more correct. It -moves the check into grub_dl_load_file. ---- - grub-core/kern/dl.c | 21 +++++++++++++++++++++ - grub-core/kern/efi/efi.c | 28 ++++++++++++++++++++++++++++ - include/grub/efi/efi.h | 1 + - 3 files changed, 50 insertions(+) - -diff --git a/grub-core/kern/dl.c b/grub-core/kern/dl.c -index 6850e04..b0b0405 100644 ---- a/grub-core/kern/dl.c -+++ b/grub-core/kern/dl.c -@@ -38,6 +38,14 @@ - #define GRUB_MODULES_MACHINE_READONLY - #endif - -+#ifdef GRUB_MACHINE_EMU -+#include -+#endif -+ -+#ifdef GRUB_MACHINE_EFI -+#include -+#endif -+ - - - #pragma GCC diagnostic ignored "-Wcast-align" -@@ -680,6 +688,19 @@ grub_dl_load_file (const char *filename) - void *core = 0; - grub_dl_t mod = 0; - -+#ifdef GRUB_MACHINE_EFI -+ if (grub_efi_secure_boot ()) -+ { -+#if 0 -+ /* This is an error, but grub2-mkconfig still generates a pile of -+ * insmod commands, so emitting it would be mostly just obnoxious. */ -+ grub_error (GRUB_ERR_ACCESS_DENIED, -+ "Secure Boot forbids loading module from %s", filename); -+#endif -+ return 0; -+ } -+#endif -+ - grub_boot_time ("Loading module %s", filename); - - file = grub_file_open (filename); -diff --git a/grub-core/kern/efi/efi.c b/grub-core/kern/efi/efi.c -index b9eb1ab..cd839cc 100644 ---- a/grub-core/kern/efi/efi.c -+++ b/grub-core/kern/efi/efi.c -@@ -259,6 +259,34 @@ grub_efi_get_variable (const char *var, const grub_efi_guid_t *guid, - return NULL; - } - -+grub_efi_boolean_t -+grub_efi_secure_boot (void) -+{ -+ grub_efi_guid_t efi_var_guid = GRUB_EFI_GLOBAL_VARIABLE_GUID; -+ grub_size_t datasize; -+ char *secure_boot = NULL; -+ char *setup_mode = NULL; -+ grub_efi_boolean_t ret = 0; -+ -+ secure_boot = grub_efi_get_variable("SecureBoot", &efi_var_guid, &datasize); -+ -+ if (datasize != 1 || !secure_boot) -+ goto out; -+ -+ setup_mode = grub_efi_get_variable("SetupMode", &efi_var_guid, &datasize); -+ -+ if (datasize != 1 || !setup_mode) -+ goto out; -+ -+ if (*secure_boot && !*setup_mode) -+ ret = 1; -+ -+ out: -+ grub_free (secure_boot); -+ grub_free (setup_mode); -+ return ret; -+} -+ - #pragma GCC diagnostic ignored "-Wcast-align" - - /* Search the mods section from the PE32/PE32+ image. This code uses -diff --git a/include/grub/efi/efi.h b/include/grub/efi/efi.h -index 9370fd5..a000c38 100644 ---- a/include/grub/efi/efi.h -+++ b/include/grub/efi/efi.h -@@ -72,6 +72,7 @@ EXPORT_FUNC (grub_efi_set_variable) (const char *var, - const grub_efi_guid_t *guid, - void *data, - grub_size_t datasize); -+grub_efi_boolean_t EXPORT_FUNC (grub_efi_secure_boot) (void); - int - EXPORT_FUNC (grub_efi_compare_device_paths) (const grub_efi_device_path_t *dp1, - const grub_efi_device_path_t *dp2); --- -1.9.0 - diff --git a/0069-Fix-grub-probe-0-option.patch b/0069-Fix-grub-probe-0-option.patch new file mode 100644 index 0000000..3483987 --- /dev/null +++ b/0069-Fix-grub-probe-0-option.patch @@ -0,0 +1,55 @@ +From fdf24f98bc9e4632bfe7f280872cbbf40942ae7b Mon Sep 17 00:00:00 2001 +From: Colin Watson +Date: Mon, 31 Mar 2014 13:51:17 +0100 +Subject: [PATCH 069/125] Fix grub-probe -0 option + +* util/grub-probe,c (options): Make -0 work again (broken by +conversion to argp). +(main): Simplify logic. +--- + ChangeLog | 6 ++++++ + util/grub-probe.c | 7 ++----- + 2 files changed, 8 insertions(+), 5 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index 9404eda..efbed8c 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,9 @@ ++2014-03-31 Colin Watson ++ ++ * util/grub-probe,c (options): Make -0 work again (broken by ++ conversion to argp). ++ (main): Simplify logic. ++ + 2014-03-26 Vladimir Serbinenko + + * grub-core/lib/relocator.c: Fix the case when end of leftover is used. +diff --git a/util/grub-probe.c b/util/grub-probe.c +index 1f3b59f..80509be 100644 +--- a/util/grub-probe.c ++++ b/util/grub-probe.c +@@ -711,6 +711,7 @@ static struct argp_option options[] = { + N_("use FILE as the device map [default=%s]"), 0}, + {"target", 't', N_("TARGET"), 0, 0, 0}, + {"verbose", 'v', 0, 0, N_("print verbose messages."), 0}, ++ {0, '0', 0, 0, N_("separate items in output using ASCII NUL characters"), 0}, + { 0, 0, 0, 0, 0, 0 } + }; + +@@ -884,11 +885,7 @@ main (int argc, char *argv[]) + else + probe (arguments.devices[0], NULL, delim); + +- if (!arguments.zero_delim && (print == PRINT_BIOS_HINT +- || print == PRINT_IEEE1275_HINT +- || print == PRINT_BAREMETAL_HINT +- || print == PRINT_EFI_HINT +- || print == PRINT_ARC_HINT)) ++ if (delim == ' ') + putchar ('\n'); + + /* Free resources. */ +-- +1.9.0 + diff --git a/0070-Fix-partmap-cryptodisk-and-abstraction-handling-in-g.patch b/0070-Fix-partmap-cryptodisk-and-abstraction-handling-in-g.patch new file mode 100644 index 0000000..0e46c75 --- /dev/null +++ b/0070-Fix-partmap-cryptodisk-and-abstraction-handling-in-g.patch @@ -0,0 +1,366 @@ +From 0a65563c2b355c0eb7412b46f015556691f1b5d1 Mon Sep 17 00:00:00 2001 +From: Colin Watson +Date: Mon, 31 Mar 2014 14:48:33 +0100 +Subject: [PATCH 070/125] Fix partmap, cryptodisk, and abstraction handling in + grub-mkconfig. + +Commit 588744d0dc655177d5883bdcb8f72ff5160109ed caused grub-mkconfig +no longer to be forgiving of trailing spaces on grub-probe output +lines, which among other things means that util/grub.d/10_linux.in +no longer detects LVM. To fix this, make grub-probe's output +delimiting more consistent. As a bonus, this improves the coverage +of the -0 option. + +Fixes Debian bug #735935. + +* grub-core/disk/cryptodisk.c +(grub_util_cryptodisk_get_abstraction): Add a user-data argument. +* grub-core/disk/diskfilter.c (grub_diskfilter_get_partmap): +Likewise. +* include/grub/cryptodisk.h (grub_util_cryptodisk_get_abstraction): +Update prototype. +* include/grub/diskfilter.h (grub_diskfilter_get_partmap): Likewise. +* util/grub-install.c (push_partmap_module, push_cryptodisk_module, +probe_mods): Adjust for extra user-data arguments. +* util/grub-probe.c (do_print, probe_partmap, probe_cryptodisk_uuid, +probe_abstraction): Use configured delimiter. Update callers. +--- + ChangeLog | 25 ++++++++++++++++++++++++ + grub-core/disk/cryptodisk.c | 19 ++++++++++--------- + grub-core/disk/diskfilter.c | 5 +++-- + include/grub/cryptodisk.h | 3 ++- + include/grub/diskfilter.h | 3 ++- + util/grub-install.c | 14 ++++++++++---- + util/grub-probe.c | 46 ++++++++++++++++++++++----------------------- + 7 files changed, 74 insertions(+), 41 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index efbed8c..1cb3b68 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,5 +1,30 @@ + 2014-03-31 Colin Watson + ++ Fix partmap, cryptodisk, and abstraction handling in grub-mkconfig. ++ ++ Commit 588744d0dc655177d5883bdcb8f72ff5160109ed caused grub-mkconfig ++ no longer to be forgiving of trailing spaces on grub-probe output ++ lines, which among other things means that util/grub.d/10_linux.in ++ no longer detects LVM. To fix this, make grub-probe's output ++ delimiting more consistent. As a bonus, this improves the coverage ++ of the -0 option. ++ ++ Fixes Debian bug #735935. ++ ++ * grub-core/disk/cryptodisk.c ++ (grub_util_cryptodisk_get_abstraction): Add a user-data argument. ++ * grub-core/disk/diskfilter.c (grub_diskfilter_get_partmap): ++ Likewise. ++ * include/grub/cryptodisk.h (grub_util_cryptodisk_get_abstraction): ++ Update prototype. ++ * include/grub/diskfilter.h (grub_diskfilter_get_partmap): Likewise. ++ * util/grub-install.c (push_partmap_module, push_cryptodisk_module, ++ probe_mods): Adjust for extra user-data arguments. ++ * util/grub-probe.c (do_print, probe_partmap, probe_cryptodisk_uuid, ++ probe_abstraction): Use configured delimiter. Update callers. ++ ++2014-03-31 Colin Watson ++ + * util/grub-probe,c (options): Make -0 work again (broken by + conversion to argp). + (main): Simplify logic. +diff --git a/grub-core/disk/cryptodisk.c b/grub-core/disk/cryptodisk.c +index 75c6e1f..f0e3a90 100644 +--- a/grub-core/disk/cryptodisk.c ++++ b/grub-core/disk/cryptodisk.c +@@ -762,25 +762,26 @@ grub_cryptodisk_cheat_insert (grub_cryptodisk_t newdev, const char *name, + + void + grub_util_cryptodisk_get_abstraction (grub_disk_t disk, +- void (*cb) (const char *val)) ++ void (*cb) (const char *val, void *data), ++ void *data) + { + grub_cryptodisk_t dev = (grub_cryptodisk_t) disk->data; + +- cb ("cryptodisk"); +- cb (dev->modname); ++ cb ("cryptodisk", data); ++ cb (dev->modname, data); + + if (dev->cipher) +- cb (dev->cipher->cipher->modname); ++ cb (dev->cipher->cipher->modname, data); + if (dev->secondary_cipher) +- cb (dev->secondary_cipher->cipher->modname); ++ cb (dev->secondary_cipher->cipher->modname, data); + if (dev->essiv_cipher) +- cb (dev->essiv_cipher->cipher->modname); ++ cb (dev->essiv_cipher->cipher->modname, data); + if (dev->hash) +- cb (dev->hash->modname); ++ cb (dev->hash->modname, data); + if (dev->essiv_hash) +- cb (dev->essiv_hash->modname); ++ cb (dev->essiv_hash->modname, data); + if (dev->iv_hash) +- cb (dev->iv_hash->modname); ++ cb (dev->iv_hash->modname, data); + } + + const char * +diff --git a/grub-core/disk/diskfilter.c b/grub-core/disk/diskfilter.c +index 28b70c6..e8a3bcb 100644 +--- a/grub-core/disk/diskfilter.c ++++ b/grub-core/disk/diskfilter.c +@@ -354,7 +354,8 @@ grub_diskfilter_memberlist (grub_disk_t disk) + + void + grub_diskfilter_get_partmap (grub_disk_t disk, +- void (*cb) (const char *pm)) ++ void (*cb) (const char *pm, void *data), ++ void *data) + { + struct grub_diskfilter_lv *lv = disk->data; + struct grub_diskfilter_pv *pv; +@@ -376,7 +377,7 @@ grub_diskfilter_get_partmap (grub_disk_t disk, + continue; + } + for (s = 0; pv->partmaps[s]; s++) +- cb (pv->partmaps[s]); ++ cb (pv->partmaps[s], data); + } + } + +diff --git a/include/grub/cryptodisk.h b/include/grub/cryptodisk.h +index 66f3e1e..f2ad2a7 100644 +--- a/include/grub/cryptodisk.h ++++ b/include/grub/cryptodisk.h +@@ -145,7 +145,8 @@ grub_cryptodisk_cheat_insert (grub_cryptodisk_t newdev, const char *name, + grub_disk_t source, const char *cheat); + void + grub_util_cryptodisk_get_abstraction (grub_disk_t disk, +- void (*cb) (const char *val)); ++ void (*cb) (const char *val, void *data), ++ void *data); + + char * + grub_util_get_geli_uuid (const char *dev); +diff --git a/include/grub/diskfilter.h b/include/grub/diskfilter.h +index 042fe04..1aedcd3 100644 +--- a/include/grub/diskfilter.h ++++ b/include/grub/diskfilter.h +@@ -202,7 +202,8 @@ grub_diskfilter_get_pv_from_disk (grub_disk_t disk, + struct grub_diskfilter_vg **vg); + void + grub_diskfilter_get_partmap (grub_disk_t disk, +- void (*cb) (const char *val)); ++ void (*cb) (const char *val, void *data), ++ void *data); + #endif + + #endif /* ! GRUB_RAID_H */ +diff --git a/util/grub-install.c b/util/grub-install.c +index 2e6226a..e9c6a46 100644 +--- a/util/grub-install.c ++++ b/util/grub-install.c +@@ -387,7 +387,7 @@ probe_raid_level (grub_disk_t disk) + } + + static void +-push_partmap_module (const char *map) ++push_partmap_module (const char *map, void *data __attribute__ ((unused))) + { + char buf[50]; + +@@ -402,6 +402,12 @@ push_partmap_module (const char *map) + } + + static void ++push_cryptodisk_module (const char *mod, void *data __attribute__ ((unused))) ++{ ++ grub_install_push_module (mod); ++} ++ ++static void + probe_mods (grub_disk_t disk) + { + grub_partition_t part; +@@ -412,11 +418,11 @@ probe_mods (grub_disk_t disk) + grub_util_info ("no partition map found for %s", disk->name); + + for (part = disk->partition; part; part = part->parent) +- push_partmap_module (part->partmap->name); ++ push_partmap_module (part->partmap->name, NULL); + + if (disk->dev->id == GRUB_DISK_DEVICE_DISKFILTER_ID) + { +- grub_diskfilter_get_partmap (disk, push_partmap_module); ++ grub_diskfilter_get_partmap (disk, push_partmap_module, NULL); + have_abstractions = 1; + } + +@@ -432,7 +438,7 @@ probe_mods (grub_disk_t disk) + if (disk->dev->id == GRUB_DISK_DEVICE_CRYPTODISK_ID) + { + grub_util_cryptodisk_get_abstraction (disk, +- grub_install_push_module); ++ push_cryptodisk_module, NULL); + have_abstractions = 1; + have_cryptodisk = 1; + } +diff --git a/util/grub-probe.c b/util/grub-probe.c +index 80509be..ecb7b6b 100644 +--- a/util/grub-probe.c ++++ b/util/grub-probe.c +@@ -130,13 +130,14 @@ get_targets_string (void) + } + + static void +-do_print (const char *x) ++do_print (const char *x, void *data) + { +- grub_printf ("%s ", x); ++ char delim = *(const char *) data; ++ grub_printf ("%s%c", x, delim); + } + + static void +-probe_partmap (grub_disk_t disk) ++probe_partmap (grub_disk_t disk, char delim) + { + grub_partition_t part; + grub_disk_memberlist_t list = NULL, tmp; +@@ -147,10 +148,10 @@ probe_partmap (grub_disk_t disk) + } + + for (part = disk->partition; part; part = part->parent) +- printf ("%s ", part->partmap->name); ++ printf ("%s%c", part->partmap->name, delim); + + if (disk->dev->id == GRUB_DISK_DEVICE_DISKFILTER_ID) +- grub_diskfilter_get_partmap (disk, do_print); ++ grub_diskfilter_get_partmap (disk, do_print, &delim); + + /* In case of LVM/RAID, check the member devices as well. */ + if (disk->dev->memberlist) +@@ -159,7 +160,7 @@ probe_partmap (grub_disk_t disk) + } + while (list) + { +- probe_partmap (list->disk); ++ probe_partmap (list->disk, delim); + tmp = list->next; + free (list); + list = tmp; +@@ -167,7 +168,7 @@ probe_partmap (grub_disk_t disk) + } + + static void +-probe_cryptodisk_uuid (grub_disk_t disk) ++probe_cryptodisk_uuid (grub_disk_t disk, char delim) + { + grub_disk_memberlist_t list = NULL, tmp; + +@@ -178,7 +179,7 @@ probe_cryptodisk_uuid (grub_disk_t disk) + } + while (list) + { +- probe_cryptodisk_uuid (list->disk); ++ probe_cryptodisk_uuid (list->disk, delim); + tmp = list->next; + free (list); + list = tmp; +@@ -186,7 +187,7 @@ probe_cryptodisk_uuid (grub_disk_t disk) + if (disk->dev->id == GRUB_DISK_DEVICE_CRYPTODISK_ID) + { + const char *uu = grub_util_cryptodisk_get_uuid (disk); +- grub_printf ("%s ", uu); ++ grub_printf ("%s%c", uu, delim); + } + } + +@@ -210,7 +211,7 @@ probe_raid_level (grub_disk_t disk) + } + + static void +-probe_abstraction (grub_disk_t disk) ++probe_abstraction (grub_disk_t disk, char delim) + { + grub_disk_memberlist_t list = NULL, tmp; + int raid_level; +@@ -219,7 +220,7 @@ probe_abstraction (grub_disk_t disk) + list = disk->dev->memberlist (disk); + while (list) + { +- probe_abstraction (list->disk); ++ probe_abstraction (list->disk, delim); + + tmp = list->next; + free (list); +@@ -229,26 +230,26 @@ probe_abstraction (grub_disk_t disk) + if (disk->dev->id == GRUB_DISK_DEVICE_DISKFILTER_ID + && (grub_memcmp (disk->name, "lvm/", sizeof ("lvm/") - 1) == 0 || + grub_memcmp (disk->name, "lvmid/", sizeof ("lvmid/") - 1) == 0)) +- printf ("lvm "); ++ printf ("lvm%c", delim); + + if (disk->dev->id == GRUB_DISK_DEVICE_DISKFILTER_ID + && grub_memcmp (disk->name, "ldm/", sizeof ("ldm/") - 1) == 0) +- printf ("ldm "); ++ printf ("ldm%c", delim); + + if (disk->dev->id == GRUB_DISK_DEVICE_CRYPTODISK_ID) +- grub_util_cryptodisk_get_abstraction (disk, do_print); ++ grub_util_cryptodisk_get_abstraction (disk, do_print, &delim); + + raid_level = probe_raid_level (disk); + if (raid_level >= 0) + { +- printf ("diskfilter "); ++ printf ("diskfilter%c", delim); + if (disk->dev->raidname) +- printf ("%s ", disk->dev->raidname (disk)); ++ printf ("%s%c", disk->dev->raidname (disk), delim); + } + if (raid_level == 5) +- printf ("raid5rec "); ++ printf ("raid5rec%c", delim); + if (raid_level == 6) +- printf ("raid6rec "); ++ printf ("raid6rec%c", delim); + } + + static void +@@ -630,16 +631,14 @@ probe (const char *path, char **device_names, char delim) + + if (print == PRINT_ABSTRACTION) + { +- probe_abstraction (dev->disk); +- putchar (delim); ++ probe_abstraction (dev->disk, delim); + grub_device_close (dev); + continue; + } + + if (print == PRINT_CRYPTODISK_UUID) + { +- probe_cryptodisk_uuid (dev->disk); +- putchar (delim); ++ probe_cryptodisk_uuid (dev->disk, delim); + grub_device_close (dev); + continue; + } +@@ -647,8 +646,7 @@ probe (const char *path, char **device_names, char delim) + if (print == PRINT_PARTMAP) + { + /* Check if dev->disk itself is contained in a partmap. */ +- probe_partmap (dev->disk); +- putchar (delim); ++ probe_partmap (dev->disk, delim); + grub_device_close (dev); + continue; + } +-- +1.9.0 + diff --git a/0070-Pass-x-hex-hex-straight-through-unmolested.patch b/0070-Pass-x-hex-hex-straight-through-unmolested.patch deleted file mode 100644 index 225bed3..0000000 --- a/0070-Pass-x-hex-hex-straight-through-unmolested.patch +++ /dev/null @@ -1,183 +0,0 @@ -From 438e7306ea31c03ee86c4cdf97b2802443e5e4dd Mon Sep 17 00:00:00 2001 -From: Peter Jones -Date: Mon, 1 Oct 2012 13:24:37 -0400 -Subject: [PATCH 070/103] Pass "\x[[:hex:]][[:hex:]]" straight through - unmolested. - ---- - grub-core/commands/wildcard.c | 16 +++++++++++++++- - grub-core/lib/cmdline.c | 34 ++++++++++++++++++++++++++++++++-- - grub-core/script/execute.c | 43 +++++++++++++++++++++++++++++++++++++------ - 3 files changed, 84 insertions(+), 9 deletions(-) - -diff --git a/grub-core/commands/wildcard.c b/grub-core/commands/wildcard.c -index 2807f80..0f40e04 100644 ---- a/grub-core/commands/wildcard.c -+++ b/grub-core/commands/wildcard.c -@@ -458,6 +458,12 @@ check_file (const char *dir, const char *basename) - return ctx.found; - } - -+static int -+is_hex(char c) -+{ -+ return ((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F')); -+} -+ - static void - unescape (char *out, const char *in, const char *end) - { -@@ -466,7 +472,15 @@ unescape (char *out, const char *in, const char *end) - - for (optr = out, iptr = in; iptr < end;) - { -- if (*iptr == '\\' && iptr + 1 < end) -+ if (*iptr == '\\' && iptr + 3 < end && iptr[1] == 'x' && is_hex(iptr[2]) && is_hex(iptr[3])) -+ { -+ *optr++ = *iptr++; -+ *optr++ = *iptr++; -+ *optr++ = *iptr++; -+ *optr++ = *iptr++; -+ continue; -+ } -+ else if (*iptr == '\\' && iptr + 1 < end) - { - *optr++ = iptr[1]; - iptr += 2; -diff --git a/grub-core/lib/cmdline.c b/grub-core/lib/cmdline.c -index d5e10ee..0a5b2af 100644 ---- a/grub-core/lib/cmdline.c -+++ b/grub-core/lib/cmdline.c -@@ -20,6 +20,12 @@ - #include - #include - -+static int -+is_hex(char c) -+{ -+ return ((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F')); -+} -+ - static unsigned int check_arg (char *c, int *has_space) - { - int space = 0; -@@ -27,7 +33,13 @@ static unsigned int check_arg (char *c, int *has_space) - - while (*c) - { -- if (*c == '\\' || *c == '\'' || *c == '"') -+ if (*c == '\\' && *(c+1) == 'x' && is_hex(*(c+2)) && is_hex(*(c+3))) -+ { -+ size += 4; -+ c += 4; -+ continue; -+ } -+ else if (*c == '\\' || *c == '\'' || *c == '"') - size++; - else if (*c == ' ') - space = 1; -@@ -85,7 +97,25 @@ int grub_create_loader_cmdline (int argc, char *argv[], char *buf, - - while (*c) - { -- if (*c == '\\' || *c == '\'' || *c == '"') -+ if (*c == ' ') -+ { -+ *buf++ = '\\'; -+ *buf++ = 'x'; -+ *buf++ = '2'; -+ *buf++ = '0'; -+ c++; -+ continue; -+ } -+ else if (*c == '\\' && *(c+1) == 'x' && -+ is_hex(*(c+2)) && is_hex(*(c+3))) -+ { -+ *buf++ = *c++; -+ *buf++ = *c++; -+ *buf++ = *c++; -+ *buf++ = *c++; -+ continue; -+ } -+ else if (*c == '\\' || *c == '\'' || *c == '"') - *buf++ = '\\'; - - *buf++ = *c; -diff --git a/grub-core/script/execute.c b/grub-core/script/execute.c -index afd5513..8f01c1b 100644 ---- a/grub-core/script/execute.c -+++ b/grub-core/script/execute.c -@@ -52,6 +52,12 @@ static struct grub_script_scope *scope = 0; - /* Wildcard translator for GRUB script. */ - struct grub_script_wildcard_translator *grub_wildcard_translator; - -+static int -+is_hex(char c) -+{ -+ return ((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F')); -+} -+ - static char* - wildcard_escape (const char *s) - { -@@ -68,7 +74,15 @@ wildcard_escape (const char *s) - i = 0; - while ((ch = *s++)) - { -- if (ch == '*' || ch == '\\' || ch == '?') -+ if (ch == '\\' && s[0] == 'x' && is_hex(s[1]) && is_hex(s[2])) -+ { -+ p[i++] = ch; -+ p[i++] = *s++; -+ p[i++] = *s++; -+ p[i++] = *s++; -+ continue; -+ } -+ else if (ch == '*' || ch == '\\' || ch == '?') - p[i++] = '\\'; - p[i++] = ch; - } -@@ -92,7 +106,14 @@ wildcard_unescape (const char *s) - i = 0; - while ((ch = *s++)) - { -- if (ch == '\\') -+ if (ch == '\\' && s[0] == 'x' && is_hex(s[1]) && is_hex(s[2])) -+ { -+ p[i++] = '\\'; -+ p[i++] = *s++; -+ p[i++] = *s++; -+ p[i++] = *s++; -+ } -+ else if (ch == '\\') - p[i++] = *s++; - else - p[i++] = ch; -@@ -394,10 +415,20 @@ parse_string (const char *str, - switch (*ptr) - { - case '\\': -- escaped = !escaped; -- if (!escaped && put) -- *(put++) = '\\'; -- ptr++; -+ if (!escaped && put && *(ptr+1) == 'x' && is_hex(*(ptr+2)) && is_hex(*(ptr+3))) -+ { -+ *(put++) = *ptr++; -+ *(put++) = *ptr++; -+ *(put++) = *ptr++; -+ *(put++) = *ptr++; -+ } -+ else -+ { -+ escaped = !escaped; -+ if (!escaped && put) -+ *(put++) = '\\'; -+ ptr++; -+ } - break; - case '$': - if (escaped) --- -1.9.0 - diff --git a/0071-Fix-crash-on-http.patch b/0071-Fix-crash-on-http.patch deleted file mode 100644 index 21a0c2b..0000000 --- a/0071-Fix-crash-on-http.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 0a40f0fc38bf46df57c411b673299c20120cf9b2 Mon Sep 17 00:00:00 2001 -From: Gustavo Luiz Duarte -Date: Tue, 25 Sep 2012 18:40:55 -0400 -Subject: [PATCH 071/103] Fix crash on http - -Don't free file->data on receiving FIN flag since it is used all over without -checking. http_close() will be called later to free that memory. -https://bugzilla.redhat.com/show_bug.cgi?id=860834 ---- - grub-core/net/http.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/grub-core/net/http.c b/grub-core/net/http.c -index 4684f8b..ef9538c 100644 ---- a/grub-core/net/http.c -+++ b/grub-core/net/http.c -@@ -393,7 +393,7 @@ http_establish (struct grub_file *file, grub_off_t offset, int initial) - - data->sock = grub_net_tcp_open (file->device->net->server, - HTTP_PORT, http_receive, -- http_err, http_err, -+ http_err, NULL, - file); - if (!data->sock) - { --- -1.9.0 - diff --git a/0071-btrfs-fix-get_root-key-comparison-failures-due-to-en.patch b/0071-btrfs-fix-get_root-key-comparison-failures-due-to-en.patch new file mode 100644 index 0000000..7d631ad --- /dev/null +++ b/0071-btrfs-fix-get_root-key-comparison-failures-due-to-en.patch @@ -0,0 +1,44 @@ +From bd2125649cbeae60a5caff05d5a39c88a4e6eff6 Mon Sep 17 00:00:00 2001 +From: Thomas Falcon +Date: Mon, 31 Mar 2014 15:32:30 +0100 +Subject: [PATCH 071/125] btrfs: fix get_root key comparison failures due to + endianness + +* grub-core/fs/btrfs.c (get_root): Convert +GRUB_BTRFS_ROOT_VOL_OBJECTID to little-endian. +--- + ChangeLog | 7 +++++++ + grub-core/fs/btrfs.c | 2 +- + 2 files changed, 8 insertions(+), 1 deletion(-) + +diff --git a/ChangeLog b/ChangeLog +index 1cb3b68..accffad 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,10 @@ ++2014-03-31 Thomas Falcon ++ ++ btrfs: fix get_root key comparison failures due to endianness ++ ++ * grub-core/fs/btrfs.c (get_root): Convert ++ GRUB_BTRFS_ROOT_VOL_OBJECTID to little-endian. ++ + 2014-03-31 Colin Watson + + Fix partmap, cryptodisk, and abstraction handling in grub-mkconfig. +diff --git a/grub-core/fs/btrfs.c b/grub-core/fs/btrfs.c +index 89666b6..f7b6c15 100644 +--- a/grub-core/fs/btrfs.c ++++ b/grub-core/fs/btrfs.c +@@ -1201,7 +1201,7 @@ get_root (struct grub_btrfs_data *data, struct grub_btrfs_key *key, + struct grub_btrfs_key key_out, key_in; + struct grub_btrfs_root_item ri; + +- key_in.object_id = GRUB_BTRFS_ROOT_VOL_OBJECTID; ++ key_in.object_id = grub_cpu_to_le64_compile_time (GRUB_BTRFS_ROOT_VOL_OBJECTID); + key_in.offset = 0; + key_in.type = GRUB_BTRFS_ITEM_TYPE_ROOT_ITEM; + err = lower_bound (data, &key_in, &key_out, +-- +1.9.0 + diff --git a/0072-IBM-client-architecture-CAS-reboot-support.patch b/0072-IBM-client-architecture-CAS-reboot-support.patch deleted file mode 100644 index 8065777..0000000 --- a/0072-IBM-client-architecture-CAS-reboot-support.patch +++ /dev/null @@ -1,174 +0,0 @@ -From 751b9439b85ba9f6a6da7b08bc261fcf68f6ea94 Mon Sep 17 00:00:00 2001 -From: Paulo Flabiano Smorigo -Date: Thu, 20 Sep 2012 18:07:39 -0300 -Subject: [PATCH 072/103] IBM client architecture (CAS) reboot support - -This is an implementation of IBM client architecture (CAS) reboot for GRUB. - -There are cases where the POWER firmware must reboot in order to support -specific features requested by a kernel. The kernel calls -ibm,client-architecture-support and it may either return or reboot with the new -feature set. eg: - -Calling ibm,client-architecture-support.../ -Elapsed time since release of system processors: 70959 mins 50 secs -Welcome to GRUB! - -Instead of return to the GRUB menu, it will check if the flag for CAS reboot is -set. If so, grub will automatically boot the last booted kernel using the same -parameters ---- - grub-core/kern/ieee1275/openfw.c | 62 ++++++++++++++++++++++++++++++++++++++++ - grub-core/normal/main.c | 19 ++++++++++++ - grub-core/script/execute.c | 7 +++++ - include/grub/ieee1275/ieee1275.h | 2 ++ - 4 files changed, 90 insertions(+) - -diff --git a/grub-core/kern/ieee1275/openfw.c b/grub-core/kern/ieee1275/openfw.c -index ddb7783..6db8b98 100644 ---- a/grub-core/kern/ieee1275/openfw.c -+++ b/grub-core/kern/ieee1275/openfw.c -@@ -561,3 +561,65 @@ grub_ieee1275_canonicalise_devname (const char *path) - return NULL; - } - -+/* Check if it's a CAS reboot. If so, set the script to be executed. */ -+int -+grub_ieee1275_cas_reboot (char *script) -+{ -+ grub_uint32_t ibm_ca_support_reboot; -+ grub_uint32_t ibm_fw_nbr_reboots; -+ char property_value[10]; -+ grub_ssize_t actual; -+ grub_ieee1275_ihandle_t options; -+ -+ if (grub_ieee1275_finddevice ("/options", &options) < 0) -+ return -1; -+ -+ /* Check two properties, one is enough to get cas reboot value */ -+ ibm_ca_support_reboot = 0; -+ if (grub_ieee1275_get_integer_property (grub_ieee1275_chosen, -+ "ibm,client-architecture-support-reboot", -+ &ibm_ca_support_reboot, -+ sizeof (ibm_ca_support_reboot), -+ &actual) >= 0) -+ grub_dprintf("ieee1275", "ibm,client-architecture-support-reboot: %u\n", -+ ibm_ca_support_reboot); -+ -+ ibm_fw_nbr_reboots = 0; -+ if (grub_ieee1275_get_property (options, "ibm,fw-nbr-reboots", -+ property_value, sizeof (property_value), -+ &actual) >= 0) -+ { -+ property_value[sizeof (property_value) - 1] = 0; -+ ibm_fw_nbr_reboots = (grub_uint8_t) grub_strtoul (property_value, 0, 10); -+ grub_dprintf("ieee1275", "ibm,fw-nbr-reboots: %u\n", ibm_fw_nbr_reboots); -+ } -+ -+ if (ibm_ca_support_reboot || ibm_fw_nbr_reboots) -+ { -+ if (! grub_ieee1275_get_property_length (options, "boot-last-label", &actual)) -+ { -+ if (actual > 1024) -+ script = grub_realloc (script, actual + 1); -+ grub_ieee1275_get_property (options, "boot-last-label", script, actual, -+ &actual); -+ return 0; -+ } -+ } -+ -+ grub_ieee1275_set_boot_last_label (""); -+ -+ return -1; -+} -+ -+int grub_ieee1275_set_boot_last_label (const char *text) -+{ -+ grub_ieee1275_ihandle_t options; -+ grub_ssize_t actual; -+ -+ grub_dprintf("ieee1275", "set boot_last_label (size: %u)\n", grub_strlen(text)); -+ if (! grub_ieee1275_finddevice ("/options", &options) && -+ options != (grub_ieee1275_ihandle_t) -1) -+ grub_ieee1275_set_property (options, "boot-last-label", text, -+ grub_strlen (text), &actual); -+ return 0; -+} -diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c -index 6f4970f..f72844c 100644 ---- a/grub-core/normal/main.c -+++ b/grub-core/normal/main.c -@@ -33,6 +33,9 @@ - #include - #include - #include -+#ifdef GRUB_MACHINE_IEEE1275 -+#include -+#endif - - GRUB_MOD_LICENSE ("GPLv3+"); - -@@ -275,6 +278,22 @@ grub_normal_execute (const char *config, int nested, int batch) - { - menu = read_config_file (config); - -+#ifdef GRUB_MACHINE_IEEE1275 -+ int boot; -+ boot = 0; -+ char *script; -+ script = grub_malloc (1024); -+ if (! grub_ieee1275_cas_reboot (script)) -+ { -+ char *dummy[1] = { NULL }; -+ if (! grub_script_execute_sourcecode (script, 0, dummy)) -+ boot = 1; -+ } -+ grub_free (script); -+ if (boot) -+ grub_command_execute ("boot", 0, 0); -+#endif -+ - /* Ignore any error. */ - grub_errno = GRUB_ERR_NONE; - } -diff --git a/grub-core/script/execute.c b/grub-core/script/execute.c -index 8f01c1b..cec9539 100644 ---- a/grub-core/script/execute.c -+++ b/grub-core/script/execute.c -@@ -27,6 +27,9 @@ - #include - #include - #include -+#ifdef GRUB_MACHINE_IEEE1275 -+#include -+#endif - - /* Max digits for a char is 3 (0xFF is 255), similarly for an int it - is sizeof (int) * 3, and one extra for a possible -ve sign. */ -@@ -892,6 +895,10 @@ grub_script_execute_sourcecode (const char *source) - grub_err_t ret = 0; - struct grub_script *parsed_script; - -+#ifdef GRUB_MACHINE_IEEE1275 -+ grub_ieee1275_set_boot_last_label (source); -+#endif -+ - while (source) - { - char *line; -diff --git a/include/grub/ieee1275/ieee1275.h b/include/grub/ieee1275/ieee1275.h -index 8e42513..9f26c69 100644 ---- a/include/grub/ieee1275/ieee1275.h -+++ b/include/grub/ieee1275/ieee1275.h -@@ -234,6 +234,8 @@ int EXPORT_FUNC(grub_ieee1275_devalias_next) (struct grub_ieee1275_devalias *ali - void EXPORT_FUNC(grub_ieee1275_children_peer) (struct grub_ieee1275_devalias *alias); - void EXPORT_FUNC(grub_ieee1275_children_first) (const char *devpath, - struct grub_ieee1275_devalias *alias); -+int EXPORT_FUNC(grub_ieee1275_cas_reboot) (char *script); -+int EXPORT_FUNC(grub_ieee1275_set_boot_last_label) (const char *text); - - #define FOR_IEEE1275_DEVALIASES(alias) for (grub_ieee1275_devalias_init_iterator (&(alias)); grub_ieee1275_devalias_next (&(alias));) - --- -1.9.0 - diff --git a/0072-grub-core-osdep-linux-getroot.c-grub_util_part_to_di.patch b/0072-grub-core-osdep-linux-getroot.c-grub_util_part_to_di.patch new file mode 100644 index 0000000..8438558 --- /dev/null +++ b/0072-grub-core-osdep-linux-getroot.c-grub_util_part_to_di.patch @@ -0,0 +1,55 @@ +From c3d9e64a61d17e57ef941a6a46e5a148c51c8519 Mon Sep 17 00:00:00 2001 +From: Vladimir Serbinenko +Date: Thu, 3 Apr 2014 21:31:12 +0200 +Subject: [PATCH 072/125] * grub-core/osdep/linux/getroot.c + (grub_util_part_to_disk): Support NVMe device names. + +--- + ChangeLog | 5 +++++ + grub-core/osdep/linux/getroot.c | 17 +++++++++++++++++ + 2 files changed, 22 insertions(+) + +diff --git a/ChangeLog b/ChangeLog +index accffad..4a48409 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,8 @@ ++2014-04-03 Vladimir Serbinenko ++ ++ * grub-core/osdep/linux/getroot.c (grub_util_part_to_disk): Support NVMe ++ device names. ++ + 2014-03-31 Thomas Falcon + + btrfs: fix get_root key comparison failures due to endianness +diff --git a/grub-core/osdep/linux/getroot.c b/grub-core/osdep/linux/getroot.c +index 19581d3..7007193 100644 +--- a/grub-core/osdep/linux/getroot.c ++++ b/grub-core/osdep/linux/getroot.c +@@ -896,6 +896,23 @@ grub_util_part_to_disk (const char *os_dev, struct stat *st, + *pp = '\0'; + return path; + } ++ ++ /* If this is a NVMe device */ ++ if ((strncmp ("nvme", p, 4) == 0) && p[4] >= '0' && p[4] <= '9') ++ { ++ char *pp = p + 4; ++ while (*pp >= '0' && *pp <= '9') ++ pp++; ++ if (*pp == 'n') ++ pp++; ++ while (*pp >= '0' && *pp <= '9') ++ pp++; ++ if (*pp == 'p') ++ *is_part = 1; ++ /* /dev/nvme[0-9]+n[0-9]+p[0-9]* */ ++ *pp = '\0'; ++ return path; ++ } + } + + return path; +-- +1.9.0 + diff --git a/0073-Add-vlan-tag-support.patch b/0073-Add-vlan-tag-support.patch deleted file mode 100644 index 6525097..0000000 --- a/0073-Add-vlan-tag-support.patch +++ /dev/null @@ -1,186 +0,0 @@ -From e6fbb3e8b50fb1e41f1466d2ef11c88868702f49 Mon Sep 17 00:00:00 2001 -From: Paulo Flabiano Smorigo -Date: Tue, 30 Oct 2012 15:19:39 -0200 -Subject: [PATCH 073/103] Add vlan-tag support - -This patch adds support for virtual LAN (VLAN) tagging. VLAN tagging allows -multiple VLANs in a bridged network to share the same physical network link but -maintain isolation: - -http://en.wikipedia.org/wiki/IEEE_802.1Q - -This patch should fix this bugzilla: -https://bugzilla.redhat.com/show_bug.cgi?id=871563 ---- - grub-core/kern/ieee1275/init.c | 1 + - grub-core/kern/ieee1275/openfw.c | 30 ++++++++++++++++++++++++++++ - grub-core/net/ethernet.c | 42 +++++++++++++++++++++++++++++++++++++--- - include/grub/ieee1275/ieee1275.h | 1 + - include/grub/net.h | 2 ++ - 5 files changed, 73 insertions(+), 3 deletions(-) - -diff --git a/grub-core/kern/ieee1275/init.c b/grub-core/kern/ieee1275/init.c -index d5bd74d..8191f8c 100644 ---- a/grub-core/kern/ieee1275/init.c -+++ b/grub-core/kern/ieee1275/init.c -@@ -117,6 +117,7 @@ grub_machine_get_bootlocation (char **device, char **path) - char *dev, *canon; - char *ptr; - dev = grub_ieee1275_get_aliasdevname (bootpath); -+ grub_ieee1275_parse_net_options (bootpath); - canon = grub_ieee1275_canonicalise_devname (dev); - ptr = canon + grub_strlen (canon) - 1; - while (ptr > canon && (*ptr == ',' || *ptr == ':')) -diff --git a/grub-core/kern/ieee1275/openfw.c b/grub-core/kern/ieee1275/openfw.c -index 6db8b98..81276fa 100644 ---- a/grub-core/kern/ieee1275/openfw.c -+++ b/grub-core/kern/ieee1275/openfw.c -@@ -23,6 +23,7 @@ - #include - #include - #include -+#include - - enum grub_ieee1275_parse_type - { -@@ -451,6 +452,35 @@ fail: - return ret; - } - -+int -+grub_ieee1275_parse_net_options (const char *path) -+{ -+ char *comma; -+ char *args; -+ char *option = 0; -+ -+ args = grub_ieee1275_get_devargs (path); -+ if (!args) -+ /* There is no option. */ -+ return -1; -+ -+ do -+ { -+ comma = grub_strchr (args, ','); -+ if (! comma) -+ option = grub_strdup (args); -+ else -+ option = grub_strndup (args, (grub_size_t)(comma - args)); -+ args = comma + 1; -+ -+ if (! grub_strncmp(option, "vtag", 4)) -+ grub_env_set ("vlan-tag", option + grub_strlen("vtag=")); -+ -+ } while (comma); -+ -+ return 0; -+} -+ - char * - grub_ieee1275_get_device_type (const char *path) - { -diff --git a/grub-core/net/ethernet.c b/grub-core/net/ethernet.c -index c397b1b..faaca67 100644 ---- a/grub-core/net/ethernet.c -+++ b/grub-core/net/ethernet.c -@@ -23,6 +23,7 @@ - #include - #include - #include -+#include - #include - #include - -@@ -56,10 +57,19 @@ send_ethernet_packet (struct grub_net_network_level_interface *inf, - { - struct etherhdr *eth; - grub_err_t err; -+ grub_uint32_t vlantag = 0; -+ grub_uint8_t etherhdr_size; - -- COMPILE_TIME_ASSERT (sizeof (*eth) < GRUB_NET_MAX_LINK_HEADER_SIZE); -+ etherhdr_size = sizeof (*eth); -+ COMPILE_TIME_ASSERT (sizeof (*eth) + 4 < GRUB_NET_MAX_LINK_HEADER_SIZE); - -- err = grub_netbuff_push (nb, sizeof (*eth)); -+ const char *vlantag_text = grub_env_get ("vlan-tag"); -+ if (vlantag_text != 0) { -+ etherhdr_size += 4; -+ vlantag = grub_strtoul (vlantag_text, 0, 16); -+ } -+ -+ err = grub_netbuff_push (nb, etherhdr_size); - if (err) - return err; - eth = (struct etherhdr *) nb->data; -@@ -76,6 +86,19 @@ send_ethernet_packet (struct grub_net_network_level_interface *inf, - return err; - inf->card->opened = 1; - } -+ -+ /* Check if a vlan-tag is needed. */ -+ if (vlantag != 0) -+ { -+ /* Move eth type to the right */ -+ grub_memcpy((char *) nb->data + etherhdr_size - 2, -+ (char *) nb->data + etherhdr_size - 6, 2); -+ -+ /* Add the tag in the middle */ -+ grub_memcpy((char *) nb->data + etherhdr_size - 6, -+ &vlantag, 4); -+ } -+ - return inf->card->driver->send (inf->card, nb); - } - -@@ -90,10 +113,23 @@ grub_net_recv_ethernet_packet (struct grub_net_buff *nb, - grub_net_link_level_address_t hwaddress; - grub_net_link_level_address_t src_hwaddress; - grub_err_t err; -+ grub_uint8_t etherhdr_size = sizeof (*eth); -+ -+ grub_uint16_t vlantag_identifier = 0; -+ grub_memcpy (&vlantag_identifier, nb->data + etherhdr_size - 2, 2); -+ -+ /* Check if a vlan-tag is present. */ -+ if (vlantag_identifier == VLANTAG_IDENTIFIER) -+ { -+ etherhdr_size += 4; -+ /* Move eth type to the original position */ -+ grub_memcpy((char *) nb->data + etherhdr_size - 6, -+ (char *) nb->data + etherhdr_size - 2, 2); -+ } - - eth = (struct etherhdr *) nb->data; - type = grub_be_to_cpu16 (eth->type); -- err = grub_netbuff_pull (nb, sizeof (*eth)); -+ err = grub_netbuff_pull (nb, etherhdr_size); - if (err) - return err; - -diff --git a/include/grub/ieee1275/ieee1275.h b/include/grub/ieee1275/ieee1275.h -index 9f26c69..6a21f5d 100644 ---- a/include/grub/ieee1275/ieee1275.h -+++ b/include/grub/ieee1275/ieee1275.h -@@ -236,6 +236,7 @@ void EXPORT_FUNC(grub_ieee1275_children_first) (const char *devpath, - struct grub_ieee1275_devalias *alias); - int EXPORT_FUNC(grub_ieee1275_cas_reboot) (char *script); - int EXPORT_FUNC(grub_ieee1275_set_boot_last_label) (const char *text); -+int EXPORT_FUNC(grub_ieee1275_parse_net_options) (const char *path); - - #define FOR_IEEE1275_DEVALIASES(alias) for (grub_ieee1275_devalias_init_iterator (&(alias)); grub_ieee1275_devalias_next (&(alias));) - -diff --git a/include/grub/net.h b/include/grub/net.h -index 538baa3..a799e6b 100644 ---- a/include/grub/net.h -+++ b/include/grub/net.h -@@ -538,4 +538,6 @@ extern char *grub_net_default_server; - #define GRUB_NET_INTERVAL 400 - #define GRUB_NET_INTERVAL_ADDITION 20 - -+#define VLANTAG_IDENTIFIER 0x8100 -+ - #endif /* ! GRUB_NET_HEADER */ --- -1.9.0 - diff --git a/0073-Replace-few-instances-of-memcmp-memcpy-in-the-code-t.patch b/0073-Replace-few-instances-of-memcmp-memcpy-in-the-code-t.patch new file mode 100644 index 0000000..d55bd61 --- /dev/null +++ b/0073-Replace-few-instances-of-memcmp-memcpy-in-the-code-t.patch @@ -0,0 +1,102 @@ +From cb2cfc87fad111a539e9645f6a96d0a89a28c8ab Mon Sep 17 00:00:00 2001 +From: Vladimir Serbinenko +Date: Fri, 4 Apr 2014 07:58:42 +0200 +Subject: [PATCH 073/125] Replace few instances of memcmp/memcpy in the code + that should be grub_memcmp/grub_memcpy. + +--- + ChangeLog | 5 +++++ + grub-core/commands/acpihalt.c | 4 ++-- + grub-core/commands/legacycfg.c | 4 ++-- + grub-core/lib/relocator.c | 2 +- + grub-core/loader/i386/bsd.c | 4 ++-- + 5 files changed, 12 insertions(+), 7 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index 4a48409..f18cdba 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,8 @@ ++2014-04-04 Vladimir Serbinenko ++ ++ Replace few instances of memcmp/memcpy in the code that should be ++ grub_memcmp/grub_memcpy. ++ + 2014-04-03 Vladimir Serbinenko + + * grub-core/osdep/linux/getroot.c (grub_util_part_to_disk): Support NVMe +diff --git a/grub-core/commands/acpihalt.c b/grub-core/commands/acpihalt.c +index 09421a6..83bdfe1 100644 +--- a/grub-core/commands/acpihalt.c ++++ b/grub-core/commands/acpihalt.c +@@ -214,8 +214,8 @@ get_sleep_type (grub_uint8_t *table, grub_uint8_t *ptr, grub_uint8_t *end, + } + case GRUB_ACPI_OPCODE_NAME: + ptr++; +- if ((!scope || memcmp (scope, "\\", scope_len) == 0) && +- (memcmp (ptr, "_S5_", 4) == 0 || memcmp (ptr, "\\_S5_", 4) == 0)) ++ if ((!scope || grub_memcmp (scope, "\\", scope_len) == 0) && ++ (grub_memcmp (ptr, "_S5_", 4) == 0 || grub_memcmp (ptr, "\\_S5_", 4) == 0)) + { + int ll; + grub_uint8_t *ptr2 = ptr; +diff --git a/grub-core/commands/legacycfg.c b/grub-core/commands/legacycfg.c +index e42a9d8..2c09fb7 100644 +--- a/grub-core/commands/legacycfg.c ++++ b/grub-core/commands/legacycfg.c +@@ -580,7 +580,7 @@ check_password_md5_real (const char *entered, + GRUB_MD_MD5->write (ctx, entered, enteredlen); + digest = GRUB_MD_MD5->read (ctx); + GRUB_MD_MD5->final (ctx); +- memcpy (alt_result, digest, MD5_HASHLEN); ++ grub_memcpy (alt_result, digest, MD5_HASHLEN); + + GRUB_MD_MD5->init (ctx); + GRUB_MD_MD5->write (ctx, entered, enteredlen); +@@ -596,7 +596,7 @@ check_password_md5_real (const char *entered, + + for (i = 0; i < 1000; i++) + { +- memcpy (alt_result, digest, 16); ++ grub_memcpy (alt_result, digest, 16); + + GRUB_MD_MD5->init (ctx); + if ((i & 1) != 0) +diff --git a/grub-core/lib/relocator.c b/grub-core/lib/relocator.c +index cb11ea5..f759c7f 100644 +--- a/grub-core/lib/relocator.c ++++ b/grub-core/lib/relocator.c +@@ -652,7 +652,7 @@ malloc_in_range (struct grub_relocator *rel, + for (i = 0; i < (BITS_IN_BYTE * sizeof (grub_addr_t) / DIGITSORT_BITS); + i++) + { +- memset (counter, 0, (1 + (1 << DIGITSORT_BITS)) * sizeof (counter[0])); ++ grub_memset (counter, 0, (1 + (1 << DIGITSORT_BITS)) * sizeof (counter[0])); + for (j = 0; j < N; j++) + counter[((events[j].pos >> (DIGITSORT_BITS * i)) + & DIGITSORT_MASK) + 1]++; +diff --git a/grub-core/loader/i386/bsd.c b/grub-core/loader/i386/bsd.c +index 19985f0..41ef910 100644 +--- a/grub-core/loader/i386/bsd.c ++++ b/grub-core/loader/i386/bsd.c +@@ -1082,7 +1082,7 @@ grub_netbsd_add_boot_disk_and_wedge (void) + + grub_crypto_hash (GRUB_MD_MD5, hash, + buf.raw, GRUB_DISK_SECTOR_SIZE); +- memcpy (biw.matchhash, hash, 16); ++ grub_memcpy (biw.matchhash, hash, 16); + + grub_bsd_add_meta (NETBSD_BTINFO_BOOTWEDGE, &biw, sizeof (biw)); + } +@@ -1100,7 +1100,7 @@ grub_netbsd_add_boot_disk_and_wedge (void) + bid.labelsector = partmapsector; + bid.label.type = buf.label.type; + bid.label.checksum = buf.label.checksum; +- memcpy (bid.label.packname, buf.label.packname, 16); ++ grub_memcpy (bid.label.packname, buf.label.packname, 16); + } + else + { +-- +1.9.0 + diff --git a/0074-Add-X-option-to-printf-functions.patch b/0074-Add-X-option-to-printf-functions.patch deleted file mode 100644 index 4e4bd86..0000000 --- a/0074-Add-X-option-to-printf-functions.patch +++ /dev/null @@ -1,58 +0,0 @@ -From 6831a99c8594a644adb7da3fe8191c01b42f1912 Mon Sep 17 00:00:00 2001 -From: Paulo Flabiano Smorigo -Date: Tue, 27 Nov 2012 16:58:39 -0200 -Subject: [PATCH 074/103] Add %X option to printf functions. - ---- - grub-core/kern/misc.c | 7 +++++-- - 1 file changed, 5 insertions(+), 2 deletions(-) - -diff --git a/grub-core/kern/misc.c b/grub-core/kern/misc.c -index 54db2e1..50f7f53 100644 ---- a/grub-core/kern/misc.c -+++ b/grub-core/kern/misc.c -@@ -759,7 +759,7 @@ __umoddi3 (grub_uint64_t a, grub_uint64_t b) - static inline char * - grub_lltoa (char *str, int c, unsigned long long n) - { -- unsigned base = (c == 'x') ? 16 : 10; -+ unsigned base = ((c == 'x') || (c == 'X')) ? 16 : 10; - char *p; - - if ((long long) n < 0 && c == 'd') -@@ -774,7 +774,7 @@ grub_lltoa (char *str, int c, unsigned long long n) - do - { - unsigned d = (unsigned) (n & 0xf); -- *p++ = (d > 9) ? d + 'a' - 10 : d + '0'; -+ *p++ = (d > 9) ? d + ((c == 'x') ? 'a' : 'A') - 10 : d + '0'; - } - while (n >>= 4); - else -@@ -847,6 +847,7 @@ parse_printf_args (const char *fmt0, struct printf_args *args, - { - case 'p': - case 'x': -+ case 'X': - case 'u': - case 'd': - case 'c': -@@ -927,6 +928,7 @@ parse_printf_args (const char *fmt0, struct printf_args *args, - switch (c) - { - case 'x': -+ case 'X': - case 'u': - args->ptr[curn].type = UNSIGNED_INT + longfmt; - break; -@@ -1064,6 +1066,7 @@ grub_vsnprintf_real (char *str, grub_size_t max_len, const char *fmt0, - c = 'x'; - /* Fall through. */ - case 'x': -+ case 'X': - case 'u': - case 'd': - { --- -1.9.0 - diff --git a/0074-include-grub-libgcc.h-Remove-ctzsi2-and-ctzdi2.-They.patch b/0074-include-grub-libgcc.h-Remove-ctzsi2-and-ctzdi2.-They.patch new file mode 100644 index 0000000..7a21954 --- /dev/null +++ b/0074-include-grub-libgcc.h-Remove-ctzsi2-and-ctzdi2.-They.patch @@ -0,0 +1,47 @@ +From 91152c6e2944e9ad3583482140f8991b972fec08 Mon Sep 17 00:00:00 2001 +From: Vladimir Serbinenko +Date: Fri, 4 Apr 2014 08:02:38 +0200 +Subject: [PATCH 074/125] * include/grub/libgcc.h: Remove ctzsi2 and ctzdi2. + They're no longer pulled from libgcc. + +--- + ChangeLog | 5 +++++ + include/grub/libgcc.h | 7 ------- + 2 files changed, 5 insertions(+), 7 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index f18cdba..90e41bd 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,5 +1,10 @@ + 2014-04-04 Vladimir Serbinenko + ++ * include/grub/libgcc.h: Remove ctzsi2 and ctzdi2. They're no longer ++ pulled from libgcc. ++ ++2014-04-04 Vladimir Serbinenko ++ + Replace few instances of memcmp/memcpy in the code that should be + grub_memcmp/grub_memcpy. + +diff --git a/include/grub/libgcc.h b/include/grub/libgcc.h +index fdc6611..97233d7 100644 +--- a/include/grub/libgcc.h ++++ b/include/grub/libgcc.h +@@ -42,13 +42,6 @@ void EXPORT_FUNC (__bswapsi2) (void); + # ifdef HAVE___BSWAPDI2 + void EXPORT_FUNC (__bswapdi2) (void); + # endif +-# ifdef HAVE___CTZDI2 +-void EXPORT_FUNC (__ctzdi2) (void); +-# endif +-# ifdef HAVE___CTZSI2 +-void EXPORT_FUNC (__ctzsi2) (void); +-# endif +-#endif + + #ifdef HAVE__RESTGPR_14_X + void EXPORT_FUNC (_restgpr_14_x) (void); +-- +1.9.0 + diff --git a/0075-Add-missing-endif.patch b/0075-Add-missing-endif.patch new file mode 100644 index 0000000..620dc59 --- /dev/null +++ b/0075-Add-missing-endif.patch @@ -0,0 +1,24 @@ +From fb1b02802aa368f43c8d0a871e017c14cb39b180 Mon Sep 17 00:00:00 2001 +From: Vladimir Serbinenko +Date: Fri, 4 Apr 2014 08:11:15 +0200 +Subject: [PATCH 075/125] Add missing #endif + +--- + include/grub/libgcc.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/include/grub/libgcc.h b/include/grub/libgcc.h +index 97233d7..8e93b67 100644 +--- a/include/grub/libgcc.h ++++ b/include/grub/libgcc.h +@@ -42,6 +42,7 @@ void EXPORT_FUNC (__bswapsi2) (void); + # ifdef HAVE___BSWAPDI2 + void EXPORT_FUNC (__bswapdi2) (void); + # endif ++#endif + + #ifdef HAVE__RESTGPR_14_X + void EXPORT_FUNC (_restgpr_14_x) (void); +-- +1.9.0 + diff --git a/0075-DHCP-client-ID-and-UUID-options-added.patch b/0075-DHCP-client-ID-and-UUID-options-added.patch deleted file mode 100644 index 98b17d4..0000000 --- a/0075-DHCP-client-ID-and-UUID-options-added.patch +++ /dev/null @@ -1,145 +0,0 @@ -From 3eb31d2652b19eb38b2a01bdc83540cbd67d96be Mon Sep 17 00:00:00 2001 -From: Paulo Flabiano Smorigo -Date: Tue, 27 Nov 2012 17:18:53 -0200 -Subject: [PATCH 075/103] DHCP client ID and UUID options added. - ---- - grub-core/net/bootp.c | 87 ++++++++++++++++++++++++++++++++++++++++++++++----- - include/grub/net.h | 2 ++ - 2 files changed, 81 insertions(+), 8 deletions(-) - -diff --git a/grub-core/net/bootp.c b/grub-core/net/bootp.c -index 6310ed4..88f2056 100644 ---- a/grub-core/net/bootp.c -+++ b/grub-core/net/bootp.c -@@ -25,6 +25,49 @@ - #include - #include - -+static char * -+grub_env_write_readonly (struct grub_env_var *var __attribute__ ((unused)), -+ const char *val __attribute__ ((unused))) -+{ -+ return NULL; -+} -+ -+static void -+set_env_limn_ro (const char *intername, const char *suffix, -+ const char *value, grub_size_t len) -+{ -+ char *varname, *varvalue; -+ char *ptr; -+ varname = grub_xasprintf ("net_%s_%s", intername, suffix); -+ if (!varname) -+ return; -+ for (ptr = varname; *ptr; ptr++) -+ if (*ptr == ':') -+ *ptr = '_'; -+ varvalue = grub_malloc (len + 1); -+ if (!varvalue) -+ { -+ grub_free (varname); -+ return; -+ } -+ -+ grub_memcpy (varvalue, value, len); -+ varvalue[len] = 0; -+ grub_env_set (varname, varvalue); -+ grub_register_variable_hook (varname, 0, grub_env_write_readonly); -+ grub_env_export (varname); -+ grub_free (varname); -+ grub_free (varvalue); -+} -+ -+static char -+hexdigit (grub_uint8_t val) -+{ -+ if (val < 10) -+ return val + '0'; -+ return val + 'a' - 10; -+} -+ - static void - parse_dhcp_vendor (const char *name, const void *vend, int limit, int *mask) - { -@@ -55,6 +98,9 @@ parse_dhcp_vendor (const char *name, const void *vend, int limit, int *mask) - - taglength = *ptr++; - -+ grub_dprintf("net", "DHCP option %u (0x%02x) found with length %u.\n", -+ tagtype, tagtype, taglength); -+ - switch (tagtype) - { - case GRUB_NET_BOOTP_NETMASK: -@@ -120,6 +166,39 @@ parse_dhcp_vendor (const char *name, const void *vend, int limit, int *mask) - taglength); - break; - -+ case GRUB_NET_BOOTP_CLIENT_ID: -+ set_env_limn_ro (name, "clientid", (char *) ptr, taglength); -+ break; -+ -+ case GRUB_NET_BOOTP_CLIENT_UUID: -+ { -+ if (taglength != 17) -+ break; -+ -+ /* The format is 9cfe245e-d0c8-bd45-a79f-54ea5fbd3d97 */ -+ -+ ptr += 1; -+ taglength -= 1; -+ -+ char *val = grub_malloc (2 * taglength + 4 + 1); -+ int i = 0; -+ int j = 0; -+ for (i = 0; i < taglength; i++) -+ { -+ val[2 * i + j] = hexdigit (ptr[i] >> 4); -+ val[2 * i + 1 + j] = hexdigit (ptr[i] & 0xf); -+ -+ if ((i == 3) || (i == 5) || (i == 7) || (i == 9)) -+ { -+ j++; -+ val[2 * i + 1+ j] = '-'; -+ } -+ } -+ -+ set_env_limn_ro (name, "clientuuid", (char *) val, 2 * taglength + 4); -+ } -+ break; -+ - /* If you need any other options please contact GRUB - development team. */ - } -@@ -288,14 +367,6 @@ grub_net_process_dhcp (struct grub_net_buff *nb, - } - } - --static char --hexdigit (grub_uint8_t val) --{ -- if (val < 10) -- return val + '0'; -- return val + 'a' - 10; --} -- - static grub_err_t - grub_cmd_dhcpopt (struct grub_command *cmd __attribute__ ((unused)), - int argc, char **args) -diff --git a/include/grub/net.h b/include/grub/net.h -index a799e6b..59e5975 100644 ---- a/include/grub/net.h -+++ b/include/grub/net.h -@@ -433,6 +433,8 @@ enum - GRUB_NET_BOOTP_DOMAIN = 0x0f, - GRUB_NET_BOOTP_ROOT_PATH = 0x11, - GRUB_NET_BOOTP_EXTENSIONS_PATH = 0x12, -+ GRUB_NET_BOOTP_CLIENT_ID = 0x3d, -+ GRUB_NET_BOOTP_CLIENT_UUID = 0x61, - GRUB_NET_BOOTP_END = 0xff - }; - --- -1.9.0 - diff --git a/0076-Search-for-specific-config-file-for-netboot.patch b/0076-Search-for-specific-config-file-for-netboot.patch deleted file mode 100644 index dfda2de..0000000 --- a/0076-Search-for-specific-config-file-for-netboot.patch +++ /dev/null @@ -1,203 +0,0 @@ -From 430bea1ee5b48877f8ffd461b4a0c6e147a3c24e Mon Sep 17 00:00:00 2001 -From: Paulo Flabiano Smorigo -Date: Tue, 27 Nov 2012 17:22:07 -0200 -Subject: [PATCH 076/103] Search for specific config file for netboot - -This patch implements a search for a specific configuration when the config -file is on a remoteserver. It uses the following order: - 1) DHCP client UUID option. - 2) MAC address (in lower case hexadecimal with dash separators); - 3) IP (in upper case hexadecimal) or IPv6; - 4) The original grub.cfg file. - -This procedure is similar to what is used by pxelinux and yaboot: -http://www.syslinux.org/wiki/index.php/PXELINUX#config - -This should close the bugzilla: -https://bugzilla.redhat.com/show_bug.cgi?id=873406 ---- - grub-core/net/net.c | 118 ++++++++++++++++++++++++++++++++++++++++++++++++ - grub-core/normal/main.c | 18 ++++++-- - include/grub/net.h | 3 ++ - 3 files changed, 135 insertions(+), 4 deletions(-) - -diff --git a/grub-core/net/net.c b/grub-core/net/net.c -index f2e723b..578e057 100644 ---- a/grub-core/net/net.c -+++ b/grub-core/net/net.c -@@ -1702,6 +1702,124 @@ grub_net_restore_hw (void) - return GRUB_ERR_NONE; - } - -+grub_err_t -+grub_net_search_configfile (char *config) -+{ -+ grub_size_t config_len; -+ char *suffix; -+ -+ auto int search_through (grub_size_t num_tries, grub_size_t slice_size); -+ int search_through (grub_size_t num_tries, grub_size_t slice_size) -+ { -+ while (num_tries-- > 0) -+ { -+ grub_dprintf ("net", "probe %s\n", config); -+ -+ grub_file_t file; -+ file = grub_file_open (config); -+ -+ if (file) -+ { -+ grub_file_close (file); -+ grub_dprintf ("net", "found!\n"); -+ return 0; -+ } -+ else -+ { -+ if (grub_errno == GRUB_ERR_IO) -+ grub_errno = GRUB_ERR_NONE; -+ } -+ -+ if (grub_strlen (suffix) < slice_size) -+ break; -+ -+ config[grub_strlen (config) - slice_size] = '\0'; -+ } -+ -+ return 1; -+ } -+ -+ config_len = grub_strlen (config); -+ config[config_len] = '-'; -+ suffix = config + config_len + 1; -+ -+ struct grub_net_network_level_interface *inf; -+ FOR_NET_NETWORK_LEVEL_INTERFACES (inf) -+ { -+ /* By the Client UUID. */ -+ -+ char client_uuid_var[sizeof ("net_") + grub_strlen (inf->name) + -+ sizeof ("_clientuuid") + 1]; -+ grub_snprintf (client_uuid_var, sizeof (client_uuid_var), -+ "net_%s_clientuuid", inf->name); -+ -+ const char *client_uuid; -+ client_uuid = grub_env_get (client_uuid_var); -+ -+ if (client_uuid) -+ { -+ grub_strcpy (suffix, client_uuid); -+ if (search_through (1, 0) == 0) return GRUB_ERR_NONE; -+ } -+ -+ /* By the MAC address. */ -+ -+ /* Add ethernet type */ -+ grub_strcpy (suffix, "01-"); -+ -+ grub_net_hwaddr_to_str (&inf->hwaddress, suffix + 3); -+ -+ char *ptr; -+ for (ptr = suffix; *ptr; ptr++) -+ if (*ptr == ':') -+ *ptr = '-'; -+ -+ if (search_through (1, 0) == 0) return GRUB_ERR_NONE; -+ -+ /* By IP address */ -+ -+ switch ((&inf->address)->type) -+ { -+ case GRUB_NET_NETWORK_LEVEL_PROTOCOL_IPV4: -+ { -+ grub_uint32_t n = grub_be_to_cpu32 ((&inf->address)->ipv4); -+ grub_snprintf (suffix, GRUB_NET_MAX_STR_ADDR_LEN, "%02X%02X%02X%02X", \ -+ ((n >> 24) & 0xff), ((n >> 16) & 0xff), \ -+ ((n >> 8) & 0xff), ((n >> 0) & 0xff)); -+ -+ if (search_through (8, 1) == 0) return GRUB_ERR_NONE; -+ break; -+ } -+ case GRUB_NET_NETWORK_LEVEL_PROTOCOL_IPV6: -+ { -+ char buf[GRUB_NET_MAX_STR_ADDR_LEN]; -+ struct grub_net_network_level_address base; -+ base.type = GRUB_NET_NETWORK_LEVEL_PROTOCOL_IPV6; -+ grub_memcpy (&base.ipv6, ((&inf->address)->ipv6), 16); -+ grub_net_addr_to_str (&base, buf); -+ -+ for (ptr = buf; *ptr; ptr++) -+ if (*ptr == ':') -+ *ptr = '-'; -+ -+ grub_snprintf (suffix, GRUB_NET_MAX_STR_ADDR_LEN, "%s", buf); -+ if (search_through (1, 0) == 0) return GRUB_ERR_NONE; -+ break; -+ } -+ case GRUB_NET_NETWORK_LEVEL_PROTOCOL_DHCP_RECV: -+ return grub_error (GRUB_ERR_BUG, "shouldn't reach here"); -+ default: -+ return grub_error (GRUB_ERR_BUG, -+ "unsupported address type %d", (&inf->address)->type); -+ } -+ } -+ -+ /* Remove the remaining minus sign at the end. */ -+ config[config_len] = '\0'; -+ -+ return GRUB_ERR_NONE; -+} -+ - static struct grub_preboot *fini_hnd; - - static grub_command_t cmd_addaddr, cmd_deladdr, cmd_addroute, cmd_delroute; -diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c -index f72844c..85d2a28 100644 ---- a/grub-core/normal/main.c -+++ b/grub-core/normal/main.c -@@ -33,6 +33,7 @@ - #include - #include - #include -+#include - #ifdef GRUB_MACHINE_IEEE1275 - #include - #endif -@@ -365,10 +366,19 @@ grub_cmd_normal (struct grub_command *cmd __attribute__ ((unused)), - - prefix = grub_env_get ("prefix"); - if (prefix) -- { -- config = grub_xasprintf ("%s/grub.cfg", prefix); -- if (! config) -- goto quit; -+ { -+ grub_size_t config_len; -+ config_len = grub_strlen (prefix) + -+ sizeof ("/grub.cfg-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"); -+ config = grub_malloc (config_len); -+ -+ if (! config) -+ goto quit; -+ -+ grub_snprintf (config, config_len, "%s/grub.cfg", prefix); -+ -+ if (grub_strncmp (prefix + 1, "tftp", sizeof ("tftp") - 1) == 0) -+ grub_net_search_configfile (config); - - grub_enter_normal_mode (config); - grub_free (config); -diff --git a/include/grub/net.h b/include/grub/net.h -index 59e5975..88fc71c 100644 ---- a/include/grub/net.h -+++ b/include/grub/net.h -@@ -542,4 +542,7 @@ extern char *grub_net_default_server; - - #define VLANTAG_IDENTIFIER 0x8100 - -+grub_err_t -+grub_net_search_configfile (char *config); -+ - #endif /* ! GRUB_NET_HEADER */ --- -1.9.0 - diff --git a/0076-grub-core-lib-syslinux_parse.c-Fix-timeout-quoting.patch b/0076-grub-core-lib-syslinux_parse.c-Fix-timeout-quoting.patch new file mode 100644 index 0000000..157678a --- /dev/null +++ b/0076-grub-core-lib-syslinux_parse.c-Fix-timeout-quoting.patch @@ -0,0 +1,39 @@ +From fb62186fefaca6b302eb61081bb6281042ff7283 Mon Sep 17 00:00:00 2001 +From: Vladimir Serbinenko +Date: Sun, 6 Apr 2014 00:44:44 +0200 +Subject: [PATCH 076/125] * grub-core/lib/syslinux_parse.c: Fix timeout + quoting. + +--- + ChangeLog | 4 ++++ + grub-core/lib/syslinux_parse.c | 2 +- + 2 files changed, 5 insertions(+), 1 deletion(-) + +diff --git a/ChangeLog b/ChangeLog +index 90e41bd..50d9291 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,7 @@ ++2014-04-06 Vladimir Serbinenko ++ ++ * grub-core/lib/syslinux_parse.c: Fix timeout quoting. ++ + 2014-04-04 Vladimir Serbinenko + + * include/grub/libgcc.h: Remove ctzsi2 and ctzdi2. They're no longer +diff --git a/grub-core/lib/syslinux_parse.c b/grub-core/lib/syslinux_parse.c +index 21fa175..6bc504b 100644 +--- a/grub-core/lib/syslinux_parse.c ++++ b/grub-core/lib/syslinux_parse.c +@@ -1432,7 +1432,7 @@ config_file (struct output_buffer *outbuf, + for (curentry = menu.entries; curentry->next; curentry = curentry->next); + lentry = curentry; + +- print_string ("set timeout='"); ++ print_string ("set timeout="); + err = print_num (outbuf, (menu.timeout + 9) / 10); + if (err) + return err; +-- +1.9.0 + diff --git a/0077-Improve-LVM-logical_volumes-string-matching.patch b/0077-Improve-LVM-logical_volumes-string-matching.patch new file mode 100644 index 0000000..30bf96c --- /dev/null +++ b/0077-Improve-LVM-logical_volumes-string-matching.patch @@ -0,0 +1,45 @@ +From d576e05a7bfe25413f70b54f671f305397bacf5e Mon Sep 17 00:00:00 2001 +From: Colin Watson +Date: Thu, 10 Apr 2014 14:42:41 +0100 +Subject: [PATCH 077/125] Improve LVM "logical_volumes" string matching + +* grub-core/disk/lvm.c (grub_lvm_detect): Search for +"logical_volumes" block a little more accurately. +--- + ChangeLog | 5 +++++ + grub-core/disk/lvm.c | 4 ++-- + 2 files changed, 7 insertions(+), 2 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index 50d9291..7f0c57d 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,8 @@ ++2014-04-10 Colin Watson ++ ++ * grub-core/disk/lvm.c (grub_lvm_detect): Search for ++ "logical_volumes" block a little more accurately. ++ + 2014-04-06 Vladimir Serbinenko + + * grub-core/lib/syslinux_parse.c: Fix timeout quoting. +diff --git a/grub-core/disk/lvm.c b/grub-core/disk/lvm.c +index 483c17e..862a966 100644 +--- a/grub-core/disk/lvm.c ++++ b/grub-core/disk/lvm.c +@@ -333,10 +333,10 @@ grub_lvm_detect (grub_disk_t disk, + } + } + +- p = grub_strstr (p, "logical_volumes"); ++ p = grub_strstr (p, "logical_volumes {"); + if (p) + { +- p += sizeof ("logical_volumes = ") - 1; ++ p += sizeof ("logical_volumes {") - 1; + + /* And add all the lvs to the volume group. */ + while (1) +-- +1.9.0 + diff --git a/0077-blscfg-add-blscfg-module-to-parse-Boot-Loader-Specif.patch b/0077-blscfg-add-blscfg-module-to-parse-Boot-Loader-Specif.patch deleted file mode 100644 index 9063b61..0000000 --- a/0077-blscfg-add-blscfg-module-to-parse-Boot-Loader-Specif.patch +++ /dev/null @@ -1,251 +0,0 @@ -From 8721b76fad30cce6f152f119a031422acd6ae13a Mon Sep 17 00:00:00 2001 -From: Fedora Ninjas -Date: Tue, 22 Jan 2013 06:31:38 +0100 -Subject: [PATCH 077/103] blscfg: add blscfg module to parse Boot Loader - Specification snippets - -http://www.freedesktop.org/wiki/Specifications/BootLoaderSpec - -Works like this: - - insmod blscfg - bls_import - -Done! You should now have menu items for your snippets in place. - -Signed-off-by: Peter Jones ---- - grub-core/Makefile.core.def | 8 ++ - grub-core/commands/blscfg.c | 201 ++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 209 insertions(+) - create mode 100644 grub-core/commands/blscfg.c - -diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def -index ec46506..7bf1c8a 100644 ---- a/grub-core/Makefile.core.def -+++ b/grub-core/Makefile.core.def -@@ -747,6 +747,14 @@ module = { - }; - - module = { -+ name = blscfg; -+ common = commands/blscfg.c; -+ enable = i386_efi; -+ enable = x86_64_efi; -+ enable = i386_pc; -+}; -+ -+module = { - name = boot; - common = commands/boot.c; - i386_pc = lib/i386/pc/biosnum.c; -diff --git a/grub-core/commands/blscfg.c b/grub-core/commands/blscfg.c -new file mode 100644 -index 0000000..4274aca ---- /dev/null -+++ b/grub-core/commands/blscfg.c -@@ -0,0 +1,201 @@ -+/*-*- Mode: C; c-basic-offset: 2; indent-tabs-mode: t -*-*/ -+ -+/* bls.c - implementation of the boot loader spec */ -+ -+/* -+ * GRUB -- GRand Unified Bootloader -+ * -+ * 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 . -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+GRUB_MOD_LICENSE ("GPLv3+"); -+ -+#ifdef GRUB_MACHINE_EFI -+#define GRUB_LINUX_CMD "linuxefi" -+#define GRUB_INITRD_CMD "initrdefi" -+#define GRUB_BLS_CONFIG_PATH "/EFI/fedora/loader/entries/" -+#define GRUB_BOOT_DEVICE "($boot)" -+#else -+#define GRUB_LINUX_CMD "linux" -+#define GRUB_INITRD_CMD "initrd" -+#define GRUB_BLS_CONFIG_PATH "/loader/entries/" -+#define GRUB_BOOT_DEVICE "($root)" -+#endif -+ -+static int parse_entry ( -+ const char *filename, -+ const struct grub_dirhook_info *info __attribute__ ((unused)), -+ void *data __attribute__ ((unused))) -+{ -+ grub_size_t n; -+ char *p; -+ grub_file_t f = NULL; -+ grub_off_t sz; -+ char *title = NULL, *options = NULL, *clinux = NULL, *initrd = NULL, *src = NULL; -+ const char *args[2] = { NULL, NULL }; -+ -+ if (filename[0] == '.') -+ return 0; -+ -+ n = grub_strlen (filename); -+ if (n <= 5) -+ return 0; -+ -+ if (grub_strcmp (filename + n - 5, ".conf") != 0) -+ return 0; -+ -+ p = grub_xasprintf (GRUB_BLS_CONFIG_PATH "%s", filename); -+ -+ f = grub_file_open (p); -+ if (!f) -+ goto finish; -+ -+ sz = grub_file_size (f); -+ if (sz == GRUB_FILE_SIZE_UNKNOWN || sz > 1024*1024) -+ goto finish; -+ -+ for (;;) -+ { -+ char *buf; -+ -+ buf = grub_file_getline (f); -+ if (!buf) -+ break; -+ -+ if (grub_strncmp (buf, "title ", 6) == 0) -+ { -+ grub_free (title); -+ title = grub_strdup (buf + 6); -+ if (!title) -+ goto finish; -+ } -+ else if (grub_strncmp (buf, "options ", 8) == 0) -+ { -+ grub_free (options); -+ options = grub_strdup (buf + 8); -+ if (!options) -+ goto finish; -+ } -+ else if (grub_strncmp (buf, "linux ", 6) == 0) -+ { -+ grub_free (clinux); -+ clinux = grub_strdup (buf + 6); -+ if (!clinux) -+ goto finish; -+ } -+ else if (grub_strncmp (buf, "initrd ", 7) == 0) -+ { -+ grub_free (initrd); -+ initrd = grub_strdup (buf + 7); -+ if (!initrd) -+ goto finish; -+ } -+ -+ grub_free(buf); -+ } -+ -+ if (!linux) -+ { -+ grub_printf ("Skipping file %s with no 'linux' key.", p); -+ goto finish; -+ } -+ -+ args[0] = title ? title : filename; -+ -+ src = grub_xasprintf ("load_video\n" -+ "set gfx_payload=keep\n" -+ "insmod gzio\n" -+ GRUB_LINUX_CMD " %s%s%s%s\n" -+ "%s%s%s%s", -+ GRUB_BOOT_DEVICE, clinux, options ? " " : "", options ? options : "", -+ initrd ? GRUB_INITRD_CMD " " : "", initrd ? GRUB_BOOT_DEVICE : "", initrd ? initrd : "", initrd ? "\n" : ""); -+ -+ grub_normal_add_menu_entry (1, args, NULL, NULL, "bls", NULL, NULL, src, 0); -+ -+finish: -+ grub_free (p); -+ grub_free (title); -+ grub_free (options); -+ grub_free (clinux); -+ grub_free (initrd); -+ grub_free (src); -+ -+ if (f) -+ grub_file_close (f); -+ -+ return 0; -+} -+ -+static grub_err_t -+grub_cmd_bls_import (grub_extcmd_context_t ctxt __attribute__ ((unused)), -+ int argc __attribute__ ((unused)), -+ char **args __attribute__ ((unused))) -+{ -+ grub_fs_t fs; -+ grub_device_t dev; -+ static grub_err_t r; -+ const char *devid; -+ -+ devid = grub_env_get ("root"); -+ if (!devid) -+ return grub_error (GRUB_ERR_FILE_NOT_FOUND, N_("variable `%s' isn't set"), "root"); -+ -+ dev = grub_device_open (devid); -+ if (!dev) -+ return grub_errno; -+ -+ fs = grub_fs_probe (dev); -+ if (!fs) -+ { -+ r = grub_errno; -+ goto finish; -+ } -+ -+ r = fs->dir (dev, GRUB_BLS_CONFIG_PATH, parse_entry, NULL); -+ -+finish: -+ if (dev) -+ grub_device_close (dev); -+ -+ return r; -+} -+ -+static grub_extcmd_t cmd; -+ -+GRUB_MOD_INIT(bls) -+{ -+ cmd = grub_register_extcmd ("bls_import", -+ grub_cmd_bls_import, -+ 0, -+ NULL, -+ N_("Import Boot Loader Specification snippets."), -+ NULL); -+} -+ -+GRUB_MOD_FINI(bls) -+{ -+ grub_unregister_extcmd (cmd); -+} --- -1.9.0 - diff --git a/0078-Move-bash-completion-script-922997.patch b/0078-Move-bash-completion-script-922997.patch deleted file mode 100644 index 70d859f..0000000 --- a/0078-Move-bash-completion-script-922997.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 35cc854569fc68a336072775fc7e3dc7debc99bc Mon Sep 17 00:00:00 2001 -From: Peter Jones -Date: Wed, 3 Apr 2013 14:35:34 -0400 -Subject: [PATCH 078/103] Move bash completion script (#922997) - -Apparently these go in a new place now. ---- - util/bash-completion.d/Makefile.am | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/util/bash-completion.d/Makefile.am b/util/bash-completion.d/Makefile.am -index 136287c..0bcdb06 100644 ---- a/util/bash-completion.d/Makefile.am -+++ b/util/bash-completion.d/Makefile.am -@@ -6,7 +6,7 @@ EXTRA_DIST = $(bash_completion_source) - - CLEANFILES = $(bash_completion_script) config.log - --bashcompletiondir = $(sysconfdir)/bash_completion.d -+bashcompletiondir = $(datarootdir)/bash-completion/completions - bashcompletion_DATA = $(bash_completion_script) - - $(bash_completion_script): $(bash_completion_source) $(top_builddir)/config.status --- -1.9.0 - diff --git a/0078-Tolerate-devices-with-no-filesystem-UUID-returned-by.patch b/0078-Tolerate-devices-with-no-filesystem-UUID-returned-by.patch new file mode 100644 index 0000000..82792e1 --- /dev/null +++ b/0078-Tolerate-devices-with-no-filesystem-UUID-returned-by.patch @@ -0,0 +1,83 @@ +From 0942ce33c5b88d85a6b81f4b3dd75c32fdf21978 Mon Sep 17 00:00:00 2001 +From: Colin Watson +Date: Thu, 10 Apr 2014 16:54:33 +0100 +Subject: [PATCH 078/125] Tolerate devices with no filesystem UUID returned by + os-prober + +* util/grub.d/30_os-prober.in: Tolerate devices with no filesystem +UUID. Other parts of grub-mkconfig tolerate these, they were +previously allowed here up to commit +55e706c918922def17f5012c23cfe88c4c645208, and they can arise in +practice when the system has active LVM snapshots. +Fixes Ubuntu bug #1287436. +--- + ChangeLog | 9 +++++++++ + util/grub.d/30_os-prober.in | 23 +++++++++++++---------- + 2 files changed, 22 insertions(+), 10 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index 7f0c57d..3556468 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,5 +1,14 @@ + 2014-04-10 Colin Watson + ++ * util/grub.d/30_os-prober.in: Tolerate devices with no filesystem ++ UUID. Other parts of grub-mkconfig tolerate these, they were ++ previously allowed here up to commit ++ 55e706c918922def17f5012c23cfe88c4c645208, and they can arise in ++ practice when the system has active LVM snapshots. ++ Fixes Ubuntu bug #1287436. ++ ++2014-04-10 Colin Watson ++ + * grub-core/disk/lvm.c (grub_lvm_detect): Search for + "logical_volumes" block a little more accurately. + +diff --git a/util/grub.d/30_os-prober.in b/util/grub.d/30_os-prober.in +index 7cf8487..6f38c82 100644 +--- a/util/grub.d/30_os-prober.in ++++ b/util/grub.d/30_os-prober.in +@@ -112,16 +112,17 @@ for OS in ${OSPROBED} ; do + LONGNAME="`echo ${OS} | cut -d ':' -f 2 | tr '^' ' '`" + LABEL="`echo ${OS} | cut -d ':' -f 3 | tr '^' ' '`" + BOOT="`echo ${OS} | cut -d ':' -f 4`" +- UUID="`${grub_probe} --target=fs_uuid --device ${DEVICE%@*}`" +- EXPUUID="$UUID" ++ if UUID="`${grub_probe} --target=fs_uuid --device ${DEVICE%@*}`"; then ++ EXPUUID="$UUID" + +- if [ x"${DEVICE#*@}" != x ] ; then ++ if [ x"${DEVICE#*@}" != x ] ; then + EXPUUID="${EXPUUID}@${DEVICE#*@}" +- fi ++ fi + +- if [ "x${GRUB_OS_PROBER_SKIP_LIST}" != "x" ] && [ "x`echo ${GRUB_OS_PROBER_SKIP_LIST} | grep -i -e '\b'${EXPUUID}'\b'`" != "x" ] ; then +- echo "Skipped ${LONGNAME} on ${DEVICE} by user request." >&2 +- continue ++ if [ "x${GRUB_OS_PROBER_SKIP_LIST}" != "x" ] && [ "x`echo ${GRUB_OS_PROBER_SKIP_LIST} | grep -i -e '\b'${EXPUUID}'\b'`" != "x" ] ; then ++ echo "Skipped ${LONGNAME} on ${DEVICE} by user request." >&2 ++ continue ++ fi + fi + + BTRFS="`echo ${OS} | cut -d ':' -f 5`" +@@ -277,9 +278,11 @@ EOF + echo "$title_correction_code" + ;; + macosx) +- OSXUUID="${UUID}" +- osx_entry xnu_kernel 32 +- osx_entry xnu_kernel64 64 ++ if [ "${UUID}" ]; then ++ OSXUUID="${UUID}" ++ osx_entry xnu_kernel 32 ++ osx_entry xnu_kernel64 64 ++ fi + ;; + hurd) + onstr="$(gettext_printf "(on %s)" "${DEVICE}")" +-- +1.9.0 + diff --git a/0079-Allow-loading-old-kernels-by-placing-GDT-in-conventi.patch b/0079-Allow-loading-old-kernels-by-placing-GDT-in-conventi.patch new file mode 100644 index 0000000..33e156a --- /dev/null +++ b/0079-Allow-loading-old-kernels-by-placing-GDT-in-conventi.patch @@ -0,0 +1,49 @@ +From 42c1756fd0ff7d94dcc8e9be2e429a2a976f6d41 Mon Sep 17 00:00:00 2001 +From: Piotr Krysiuk +Date: Sun, 20 Apr 2014 15:58:45 +0200 +Subject: [PATCH 079/125] Allow loading old kernels by placing GDT in + conventional memory. + +--- + ChangeLog | 5 +++++ + grub-core/lib/i386/relocator.c | 11 +++++++---- + 2 files changed, 12 insertions(+), 4 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index 3556468..73a8928 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,8 @@ ++2014-04-20 Piotr Krysiuk ++ ++ * grub-core/lib/i386/relocator.c: Allow loading old kernels by placing ++ GDT in conventional memory. ++ + 2014-04-10 Colin Watson + + * util/grub.d/30_os-prober.in: Tolerate devices with no filesystem +diff --git a/grub-core/lib/i386/relocator.c b/grub-core/lib/i386/relocator.c +index d2a1b27..ffaf25f 100644 +--- a/grub-core/lib/i386/relocator.c ++++ b/grub-core/lib/i386/relocator.c +@@ -81,10 +81,13 @@ grub_relocator32_boot (struct grub_relocator *rel, + void *relst; + grub_relocator_chunk_t ch; + +- err = grub_relocator_alloc_chunk_align (rel, &ch, 0, +- (0xffffffff - RELOCATOR_SIZEOF (32)) +- + 1, RELOCATOR_SIZEOF (32), 16, +- GRUB_RELOCATOR_PREFERENCE_NONE, ++ /* Specific memory range due to Global Descriptor Table for use by payload ++ that we will store in returned chunk. The address range and preference ++ are based on "THE LINUX/x86 BOOT PROTOCOL" specification. */ ++ err = grub_relocator_alloc_chunk_align (rel, &ch, 0x1000, ++ 0x9a000 - RELOCATOR_SIZEOF (32), ++ RELOCATOR_SIZEOF (32), 16, ++ GRUB_RELOCATOR_PREFERENCE_LOW, + avoid_efi_bootservices); + if (err) + return err; +-- +1.9.0 + diff --git a/0079-for-ppc-reset-console-display-attr-when-clear-screen.patch b/0079-for-ppc-reset-console-display-attr-when-clear-screen.patch deleted file mode 100644 index 94fab7a..0000000 --- a/0079-for-ppc-reset-console-display-attr-when-clear-screen.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 9364753f4e7eaa65dceadba5652ddd2becabce0a Mon Sep 17 00:00:00 2001 -From: Paulo Flabiano Smorigo -Date: Wed, 24 Apr 2013 10:51:48 -0300 -Subject: [PATCH 079/103] for ppc, reset console display attr when clear screen - -This should fix this bugzilla: -https://bugzilla.redhat.com/show_bug.cgi?id=908519 ---- - grub-core/term/terminfo.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/grub-core/term/terminfo.c b/grub-core/term/terminfo.c -index f0d3e3d..7cb7909 100644 ---- a/grub-core/term/terminfo.c -+++ b/grub-core/term/terminfo.c -@@ -151,7 +151,7 @@ grub_terminfo_set_current (struct grub_term_output *term, - /* Clear the screen. Using serial console, screen(1) only recognizes the - * ANSI escape sequence. Using video console, Apple Open Firmware - * (version 3.1.1) only recognizes the literal ^L. So use both. */ -- data->cls = grub_strdup (" \e[2J"); -+ data->cls = grub_strdup (" \e[2J\e[m"); - data->reverse_video_on = grub_strdup ("\e[7m"); - data->reverse_video_off = grub_strdup ("\e[m"); - if (grub_strcmp ("ieee1275", str) == 0) --- -1.9.0 - diff --git a/0080-Don-t-write-messages-to-the-screen.patch b/0080-Don-t-write-messages-to-the-screen.patch deleted file mode 100644 index fc8c628..0000000 --- a/0080-Don-t-write-messages-to-the-screen.patch +++ /dev/null @@ -1,158 +0,0 @@ -From 56d9ef35cfe88fdfc82f8b16908e839d62801b38 Mon Sep 17 00:00:00 2001 -From: William Jon McCann -Date: Wed, 15 May 2013 13:30:20 -0400 -Subject: [PATCH 080/103] Don't write messages to the screen - -Writing messages to the screen before the menus or boot splash -happens so quickly it looks like something is wrong and isn't -very appealing. ---- - grub-core/boot/i386/pc/boot.S | 3 --- - grub-core/boot/i386/pc/diskboot.S | 5 ----- - grub-core/gettext/gettext.c | 15 --------------- - grub-core/kern/main.c | 5 ----- - util/grub.d/10_linux.in | 7 ------- - 5 files changed, 35 deletions(-) - -diff --git a/grub-core/boot/i386/pc/boot.S b/grub-core/boot/i386/pc/boot.S -index b4975e2..432a472 100644 ---- a/grub-core/boot/i386/pc/boot.S -+++ b/grub-core/boot/i386/pc/boot.S -@@ -249,9 +249,6 @@ real_start: - /* save drive reference first thing! */ - pushw %dx - -- /* print a notification message on the screen */ -- MSG(notification_string) -- - /* set %si to the disk address packet */ - movw $disk_address_packet, %si - -diff --git a/grub-core/boot/i386/pc/diskboot.S b/grub-core/boot/i386/pc/diskboot.S -index d030a14..a494d02 100644 ---- a/grub-core/boot/i386/pc/diskboot.S -+++ b/grub-core/boot/i386/pc/diskboot.S -@@ -50,11 +50,6 @@ _start: - /* save drive reference first thing! */ - pushw %dx - -- /* print a notification message on the screen */ -- pushw %si -- MSG(notification_string) -- popw %si -- - /* this sets up for the first run through "bootloop" */ - movw $LOCAL(firstlist), %di - -diff --git a/grub-core/gettext/gettext.c b/grub-core/gettext/gettext.c -index 4880cef..1e5c21d 100644 ---- a/grub-core/gettext/gettext.c -+++ b/grub-core/gettext/gettext.c -@@ -437,13 +437,9 @@ grub_gettext_env_write_lang (struct grub_env_var *var - grub_err_t err; - err = grub_gettext_init_ext (&main_context, val, grub_env_get ("locale_dir"), - grub_env_get ("prefix")); -- if (err) -- grub_print_error (); - - err = grub_gettext_init_ext (&secondary_context, val, - grub_env_get ("secondary_locale_dir"), 0); -- if (err) -- grub_print_error (); - - return grub_strdup (val); - } -@@ -455,8 +451,6 @@ grub_gettext_reread_prefix (const char *val) - err = grub_gettext_init_ext (&main_context, grub_env_get ("lang"), - grub_env_get ("locale_dir"), - val); -- if (err) -- grub_print_error (); - } - - static char * -@@ -466,8 +460,6 @@ read_main (struct grub_env_var *var - grub_err_t err; - err = grub_gettext_init_ext (&main_context, grub_env_get ("lang"), val, - grub_env_get ("prefix")); -- if (err) -- grub_print_error (); - return grub_strdup (val); - } - -@@ -478,9 +470,6 @@ read_secondary (struct grub_env_var *var - grub_err_t err; - err = grub_gettext_init_ext (&secondary_context, grub_env_get ("lang"), val, - 0); -- if (err) -- grub_print_error (); -- - return grub_strdup (val); - } - -@@ -506,12 +495,8 @@ GRUB_MOD_INIT (gettext) - - err = grub_gettext_init_ext (&main_context, lang, grub_env_get ("locale_dir"), - grub_env_get ("prefix")); -- if (err) -- grub_print_error (); - err = grub_gettext_init_ext (&secondary_context, lang, - grub_env_get ("secondary_locale_dir"), 0); -- if (err) -- grub_print_error (); - - grub_register_variable_hook ("locale_dir", NULL, read_main); - grub_register_variable_hook ("secondary_locale_dir", NULL, read_secondary); -diff --git a/grub-core/kern/main.c b/grub-core/kern/main.c -index 8ab7794..da47b18 100644 ---- a/grub-core/kern/main.c -+++ b/grub-core/kern/main.c -@@ -268,11 +268,6 @@ grub_main (void) - - grub_boot_time ("After machine init."); - -- /* Hello. */ -- grub_setcolorstate (GRUB_TERM_COLOR_HIGHLIGHT); -- grub_printf ("Welcome to GRUB!\n\n"); -- grub_setcolorstate (GRUB_TERM_COLOR_STANDARD); -- - grub_load_config (); - - grub_boot_time ("Before loading embedded modules."); -diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in -index ad34cc0..e762e1f 100644 ---- a/util/grub.d/10_linux.in -+++ b/util/grub.d/10_linux.in -@@ -126,29 +126,22 @@ linux_entry () - fi - printf '%s\n' "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/" - fi -- message="$(gettext_printf "Loading Linux %s ..." ${version})" - if [ -d /sys/firmware/efi ]; then - sed "s/^/$submenu_indentation/" << EOF -- echo '$(echo "$message" | grub_quote)' - linuxefi ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args} - EOF - else - sed "s/^/$submenu_indentation/" << EOF -- echo '$(echo "$message" | grub_quote)' - linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args} - EOF - fi - if test -n "${initrd}" ; then -- # TRANSLATORS: ramdisk isn't identifier. Should be translated. -- message="$(gettext_printf "Loading initial ramdisk ...")" - if [ -d /sys/firmware/efi ]; then - sed "s/^/$submenu_indentation/" << EOF -- echo '$(echo "$message" | grub_quote)' - initrdefi ${rel_dirname}/${initrd} - EOF - else - sed "s/^/$submenu_indentation/" << EOF -- echo '$message' - initrd ${rel_dirname}/${initrd} - EOF - fi --- -1.9.0 - diff --git a/0080-grub-core-kern-misc.c-__bzero-Don-t-compile-in-GRUB_.patch b/0080-grub-core-kern-misc.c-__bzero-Don-t-compile-in-GRUB_.patch new file mode 100644 index 0000000..964b51d --- /dev/null +++ b/0080-grub-core-kern-misc.c-__bzero-Don-t-compile-in-GRUB_.patch @@ -0,0 +1,43 @@ +From ec4609b70a7deebf6381297aae95dd4bf05bd008 Mon Sep 17 00:00:00 2001 +From: Vladimir Serbinenko +Date: Sun, 20 Apr 2014 16:12:41 +0200 +Subject: [PATCH 080/125] * grub-core/kern/misc.c (__bzero): Don't + compile in GRUB_UTIL. + + Reported by: Yves Blusseau . +--- + ChangeLog | 6 ++++++ + grub-core/kern/misc.c | 3 +++ + 2 files changed, 9 insertions(+) + +diff --git a/ChangeLog b/ChangeLog +index 73a8928..3b61c0a 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,9 @@ ++2014-04-20 Vladimir Serbinenko ++ ++ * grub-core/kern/misc.c (__bzero): Don't compile in GRUB_UTIL. ++ ++ Reported by: Yves Blusseau . ++ + 2014-04-20 Piotr Krysiuk + + * grub-core/lib/i386/relocator.c: Allow loading old kernels by placing +diff --git a/grub-core/kern/misc.c b/grub-core/kern/misc.c +index 54db2e1..c5c815d 100644 +--- a/grub-core/kern/misc.c ++++ b/grub-core/kern/misc.c +@@ -542,6 +542,9 @@ memset (void *s, int c, grub_size_t n) + return grub_memset (s, c, n); + } + ++#endif ++ ++#if !defined(GRUB_UTIL) && defined(__APPLE__) + void GRUB_BUILTIN_ATTR + __bzero (void *s, grub_size_t n) + { +-- +1.9.0 + diff --git a/0081-Don-t-print-GNU-GRUB-header.patch b/0081-Don-t-print-GNU-GRUB-header.patch deleted file mode 100644 index 996a65a..0000000 --- a/0081-Don-t-print-GNU-GRUB-header.patch +++ /dev/null @@ -1,33 +0,0 @@ -From c3cb9d2a7a43ef15f361e142be2a1abaa4067655 Mon Sep 17 00:00:00 2001 -From: William Jon McCann -Date: Wed, 15 May 2013 13:53:48 -0400 -Subject: [PATCH 081/103] Don't print GNU GRUB header - -No one cares. ---- - grub-core/normal/main.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c -index 85d2a28..3777cd2 100644 ---- a/grub-core/normal/main.c -+++ b/grub-core/normal/main.c -@@ -212,6 +212,7 @@ grub_normal_init_page (struct grub_term_output *term, - - grub_term_cls (term); - -+#if 0 - msg_formatted = grub_xasprintf (_("GNU GRUB version %s"), PACKAGE_VERSION); - if (!msg_formatted) - return; -@@ -235,6 +236,7 @@ grub_normal_init_page (struct grub_term_output *term, - grub_putcode ('\n', term); - grub_putcode ('\n', term); - grub_free (unicode_msg); -+#endif - } - - static void --- -1.9.0 - diff --git a/0081-grub-core-commands-verify.c-grub_pubkey_open-Fix-mem.patch b/0081-grub-core-commands-verify.c-grub_pubkey_open-Fix-mem.patch new file mode 100644 index 0000000..e3454c5 --- /dev/null +++ b/0081-grub-core-commands-verify.c-grub_pubkey_open-Fix-mem.patch @@ -0,0 +1,40 @@ +From 4a307e8fe1298f88641a40c8a8008363aa4b9c17 Mon Sep 17 00:00:00 2001 +From: Vladimir Serbinenko +Date: Mon, 12 May 2014 10:01:48 +0200 +Subject: [PATCH 081/125] * grub-core/commands/verify.c + (grub_pubkey_open): Fix memdisk check. + +--- + ChangeLog | 5 +++++ + grub-core/commands/verify.c | 2 +- + 2 files changed, 6 insertions(+), 1 deletion(-) + +diff --git a/ChangeLog b/ChangeLog +index 3b61c0a..d0896d8 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,8 @@ ++2014-06-21 Vladimir Serbinenko ++ ++ * grub-core/commands/verify.c (grub_pubkey_open): Fix memdisk ++ check. ++ + 2014-04-20 Vladimir Serbinenko + + * grub-core/kern/misc.c (__bzero): Don't compile in GRUB_UTIL. +diff --git a/grub-core/commands/verify.c b/grub-core/commands/verify.c +index a9dfd88..6349ccf 100644 +--- a/grub-core/commands/verify.c ++++ b/grub-core/commands/verify.c +@@ -835,7 +835,7 @@ grub_pubkey_open (grub_file_t io, const char *filename) + + if (!sec) + return io; +- if (io->device->disk && io->device->disk->id == GRUB_DISK_DEVICE_MEMDISK_ID) ++ if (io->device->disk && io->device->disk->dev->id == GRUB_DISK_DEVICE_MEMDISK_ID) + return io; + fsuf = grub_malloc (grub_strlen (filename) + sizeof (".sig")); + if (!fsuf) +-- +1.9.0 + diff --git a/0082-Don-t-add-to-highlighted-row.patch b/0082-Don-t-add-to-highlighted-row.patch deleted file mode 100644 index 1175260..0000000 --- a/0082-Don-t-add-to-highlighted-row.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 6a89fe8eff74f03b19a850e260c971b9ac3129ca Mon Sep 17 00:00:00 2001 -From: William Jon McCann -Date: Wed, 15 May 2013 17:49:45 -0400 -Subject: [PATCH 082/103] Don't add '*' to highlighted row - -It is already highlighted. ---- - grub-core/normal/menu_text.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/grub-core/normal/menu_text.c b/grub-core/normal/menu_text.c -index 2ff2941..daf92b5 100644 ---- a/grub-core/normal/menu_text.c -+++ b/grub-core/normal/menu_text.c -@@ -242,7 +242,7 @@ print_entry (int y, int highlight, grub_menu_entry_t entry, - unicode_title[i] = ' '; - - if (data->geo.num_entries > 1) -- grub_putcode (highlight ? '*' : ' ', data->term); -+ grub_putcode (' ', term); - - grub_print_ucs4_menu (unicode_title, - unicode_title + len, --- -1.9.0 - diff --git a/0082-grub-core-commands-verify.c-grub_pubkey_open-Trust-p.patch b/0082-grub-core-commands-verify.c-grub_pubkey_open-Trust-p.patch new file mode 100644 index 0000000..2b92647 --- /dev/null +++ b/0082-grub-core-commands-verify.c-grub_pubkey_open-Trust-p.patch @@ -0,0 +1,43 @@ +From 61fdf8bebdeaed4b601f0eca847282780380191f Mon Sep 17 00:00:00 2001 +From: Vladimir Serbinenko +Date: Thu, 15 May 2014 14:36:48 +0200 +Subject: [PATCH 082/125] * grub-core/commands/verify.c + (grub_pubkey_open): Trust procfs. + +--- + ChangeLog | 4 ++++ + grub-core/commands/verify.c | 4 +++- + 2 files changed, 7 insertions(+), 1 deletion(-) + +diff --git a/ChangeLog b/ChangeLog +index d0896d8..2a94ad9 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,5 +1,9 @@ + 2014-06-21 Vladimir Serbinenko + ++ * grub-core/commands/verify.c (grub_pubkey_open): Trust procfs. ++ ++2014-06-21 Vladimir Serbinenko ++ + * grub-core/commands/verify.c (grub_pubkey_open): Fix memdisk + check. + +diff --git a/grub-core/commands/verify.c b/grub-core/commands/verify.c +index 6349ccf..525bdd1 100644 +--- a/grub-core/commands/verify.c ++++ b/grub-core/commands/verify.c +@@ -835,7 +835,9 @@ grub_pubkey_open (grub_file_t io, const char *filename) + + if (!sec) + return io; +- if (io->device->disk && io->device->disk->dev->id == GRUB_DISK_DEVICE_MEMDISK_ID) ++ if (io->device->disk && ++ (io->device->disk->dev->id == GRUB_DISK_DEVICE_MEMDISK_ID ++ || io->device->disk->dev->id == GRUB_DISK_DEVICE_PROCFS_ID)) + return io; + fsuf = grub_malloc (grub_strlen (filename) + sizeof (".sig")); + if (!fsuf) +-- +1.9.0 + diff --git a/0083-Don-t-add-to-highlighted-row.patch b/0083-Don-t-add-to-highlighted-row.patch deleted file mode 100644 index 1181345..0000000 --- a/0083-Don-t-add-to-highlighted-row.patch +++ /dev/null @@ -1,26 +0,0 @@ -From ceaa93bab3ce4b8ed8ac4448e39bbf017749a757 Mon Sep 17 00:00:00 2001 -From: William Jon McCann -Date: Wed, 15 May 2013 17:49:45 -0400 -Subject: [PATCH 083/103] Don't add '*' to highlighted row - -It is already highlighted. ---- - grub-core/normal/menu_text.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/grub-core/normal/menu_text.c b/grub-core/normal/menu_text.c -index daf92b5..2f84fcc 100644 ---- a/grub-core/normal/menu_text.c -+++ b/grub-core/normal/menu_text.c -@@ -242,7 +242,7 @@ print_entry (int y, int highlight, grub_menu_entry_t entry, - unicode_title[i] = ' '; - - if (data->geo.num_entries > 1) -- grub_putcode (' ', term); -+ grub_putcode (' ', data->term); - - grub_print_ucs4_menu (unicode_title, - unicode_title + len, --- -1.9.0 - diff --git a/0083-util-grub-gen-asciih.c-add_glyph-Fix-uninitialised-v.patch b/0083-util-grub-gen-asciih.c-add_glyph-Fix-uninitialised-v.patch new file mode 100644 index 0000000..ea807fd --- /dev/null +++ b/0083-util-grub-gen-asciih.c-add_glyph-Fix-uninitialised-v.patch @@ -0,0 +1,73 @@ +From 473348e663de53939fc077a1e1ef262405712dd8 Mon Sep 17 00:00:00 2001 +From: Trevor Woerner +Date: Sat, 21 Jun 2014 20:26:47 +0200 +Subject: [PATCH 083/125] * util/grub-gen-asciih.c (add_glyph): Fix + uninitialised variable. + +--- + ChangeLog | 4 ++++ + util/grub-gen-asciih.c | 15 +++++++++------ + 2 files changed, 13 insertions(+), 6 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index 2a94ad9..b552113 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,7 @@ ++2014-06-21 Trevor Woerner ++ ++ * util/grub-gen-asciih.c (add_glyph): Fix uninitialised variable. ++ + 2014-06-21 Vladimir Serbinenko + + * grub-core/commands/verify.c (grub_pubkey_open): Trust procfs. +diff --git a/util/grub-gen-asciih.c b/util/grub-gen-asciih.c +index e01447a..e35dcb7 100644 +--- a/util/grub-gen-asciih.c ++++ b/util/grub-gen-asciih.c +@@ -81,14 +81,14 @@ add_glyph (FT_UInt glyph_idx, FT_Face face, + err = FT_Load_Glyph (face, glyph_idx, flag); + if (err) + { +- printf ("Freetype Error %d loading glyph 0x%x for U+0x%x", ++ fprintf (stderr, "Freetype Error %d loading glyph 0x%x for U+0x%x", + err, glyph_idx, char_code); + + if (err > 0 && err < (signed) ARRAY_SIZE (ft_errmsgs)) +- printf (": %s\n", ft_errmsgs[err]); ++ fprintf (stderr, ": %s\n", ft_errmsgs[err]); + else +- printf ("\n"); +- return; ++ fprintf (stderr, "\n"); ++ exit (1); + } + + glyph = face->glyph; +@@ -128,7 +128,6 @@ add_glyph (FT_UInt glyph_idx, FT_Face face, + static void + write_font_ascii_bitmap (FILE *file, FT_Face face) + { +- struct grub_glyph_info glyph; + int char_code; + + fprintf (file, "/* THIS CHUNK OF BYTES IS AUTOMATICALLY GENERATED */\n"); +@@ -138,10 +137,14 @@ write_font_ascii_bitmap (FILE *file, FT_Face face) + for (char_code = 0; char_code <= 0x7f; char_code++) + { + FT_UInt glyph_idx; +- ++ struct grub_glyph_info glyph; ++ + glyph_idx = FT_Get_Char_Index (face, char_code); + if (!glyph_idx) + return; ++ ++ memset (&glyph, 0, sizeof(glyph)); ++ + add_glyph (glyph_idx, face, char_code, &glyph); + + if (glyph.width == 8 && glyph.height == 16 +-- +1.9.0 + diff --git a/0084-Message-string-cleanups.patch b/0084-Message-string-cleanups.patch deleted file mode 100644 index 99c8ea1..0000000 --- a/0084-Message-string-cleanups.patch +++ /dev/null @@ -1,71 +0,0 @@ -From db36eff4717d7a05a9c17dabbf46ebf6a30d056b Mon Sep 17 00:00:00 2001 -From: William Jon McCann -Date: Fri, 7 Jun 2013 11:09:04 -0400 -Subject: [PATCH 084/103] Message string cleanups - -Make use of terminology consistent. Remove jargon. ---- - grub-core/normal/menu_text.c | 21 +++++++++------------ - 1 file changed, 9 insertions(+), 12 deletions(-) - -diff --git a/grub-core/normal/menu_text.c b/grub-core/normal/menu_text.c -index 2f84fcc..9d20c6b 100644 ---- a/grub-core/normal/menu_text.c -+++ b/grub-core/normal/menu_text.c -@@ -157,9 +157,8 @@ print_message (int nested, int edit, struct grub_term_output *term, int dry_run) - - if (edit) - { -- ret += grub_print_message_indented_real (_("Minimum Emacs-like screen editing is \ --supported. TAB lists completions. Press Ctrl-x or F10 to boot, Ctrl-c or F2 for a \ --command-line or ESC to discard edits and return to the GRUB menu."), -+ ret += grub_print_message_indented_real (_("Press Ctrl-x or F10 to start, Ctrl-c or F2 for a \ -+command prompt or Escape to discard edits and return to the menu. Pressing Tab lists possible completions."), - STANDARD_MARGIN, STANDARD_MARGIN, - term, dry_run); - } -@@ -167,8 +166,8 @@ command-line or ESC to discard edits and return to the GRUB menu."), - { - char *msg_translated; - -- msg_translated = grub_xasprintf (_("Use the %C and %C keys to select which " -- "entry is highlighted."), -+ msg_translated = grub_xasprintf (_("Use the %C and %C keys to change the " -+ "selection."), - GRUB_UNICODE_UPARROW, - GRUB_UNICODE_DOWNARROW); - if (!msg_translated) -@@ -181,17 +180,15 @@ command-line or ESC to discard edits and return to the GRUB menu."), - if (nested) - { - ret += grub_print_message_indented_real -- (_("Press enter to boot the selected OS, " -- "`e' to edit the commands before booting " -- "or `c' for a command-line. ESC to return previous menu."), -+ (_("Press 'e' to edit the selected item, " -+ "or 'c' for a command prompt. Press Escape to return to the previous menu."), - STANDARD_MARGIN, STANDARD_MARGIN, term, dry_run); - } - else - { - ret += grub_print_message_indented_real -- (_("Press enter to boot the selected OS, " -- "`e' to edit the commands before booting " -- "or `c' for a command-line."), -+ (_("Press 'e' to edit the selected item, " -+ "or 'c' for a command prompt."), - STANDARD_MARGIN, STANDARD_MARGIN, term, dry_run); - } - } -@@ -440,7 +437,7 @@ menu_text_print_timeout (int timeout, void *dataptr) - || data->timeout_msg == TIMEOUT_TERSE_NO_MARGIN) - msg_translated = grub_xasprintf (_("%ds"), timeout); - else -- msg_translated = grub_xasprintf (_("The highlighted entry will be executed automatically in %ds."), timeout); -+ msg_translated = grub_xasprintf (_("The selected entry will be started automatically in %ds."), timeout); - if (!msg_translated) - { - grub_print_error (); --- -1.9.0 - diff --git a/0084-grub-core-commands-efi-lsefisystab.c-grub_cmd_lsefis.patch b/0084-grub-core-commands-efi-lsefisystab.c-grub_cmd_lsefis.patch new file mode 100644 index 0000000..02e54c7 --- /dev/null +++ b/0084-grub-core-commands-efi-lsefisystab.c-grub_cmd_lsefis.patch @@ -0,0 +1,39 @@ +From 9de53cc99ce4c8e404e645443d07324bd9cfc157 Mon Sep 17 00:00:00 2001 +From: Stephane Rochoy +Date: Sun, 22 Jun 2014 01:34:57 +0200 +Subject: [PATCH 084/125] * grub-core/commands/efi/lsefisystab.c + (grub_cmd_lsefisystab): Show EFI system table physical address. + +--- + ChangeLog | 5 +++++ + grub-core/commands/efi/lsefisystab.c | 1 + + 2 files changed, 6 insertions(+) + +diff --git a/ChangeLog b/ChangeLog +index b552113..abf8f4b 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,8 @@ ++2014-06-21 Stephane Rochoy ++ ++ * grub-core/commands/efi/lsefisystab.c (grub_cmd_lsefisystab): Show ++ EFI system table physical address. ++ + 2014-06-21 Trevor Woerner + + * util/grub-gen-asciih.c (add_glyph): Fix uninitialised variable. +diff --git a/grub-core/commands/efi/lsefisystab.c b/grub-core/commands/efi/lsefisystab.c +index eda8c5f..8717db9 100644 +--- a/grub-core/commands/efi/lsefisystab.c ++++ b/grub-core/commands/efi/lsefisystab.c +@@ -52,6 +52,7 @@ grub_cmd_lsefisystab (struct grub_command *cmd __attribute__ ((unused)), + grub_efi_configuration_table_t *t; + unsigned int i; + ++ grub_printf ("Address: %p\n", st); + grub_printf ("Signature: %016" PRIxGRUB_UINT64_T " revision: %08x\n", + st->hdr.signature, st->hdr.revision); + { +-- +1.9.0 + diff --git a/0085-Fix-border-spacing-now-that-we-aren-t-displaying-it.patch b/0085-Fix-border-spacing-now-that-we-aren-t-displaying-it.patch deleted file mode 100644 index 9971dcd..0000000 --- a/0085-Fix-border-spacing-now-that-we-aren-t-displaying-it.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 7c1b0d6c8c79bfb55fcc9f81c4db225e63ba57a9 Mon Sep 17 00:00:00 2001 -From: William Jon McCann -Date: Fri, 7 Jun 2013 14:08:23 -0400 -Subject: [PATCH 085/103] Fix border spacing now that we aren't displaying it - ---- - grub-core/normal/menu_text.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/grub-core/normal/menu_text.c b/grub-core/normal/menu_text.c -index 9d20c6b..aa3454f 100644 ---- a/grub-core/normal/menu_text.c -+++ b/grub-core/normal/menu_text.c -@@ -331,12 +331,12 @@ grub_menu_init_page (int nested, int edit, - int empty_lines = 1; - int version_msg = 1; - -- geo->border = 1; -- geo->first_entry_x = 1 /* margin */ + 1 /* border */; -+ geo->border = 0; -+ geo->first_entry_x = 0 /* margin */ + 0 /* border */; - geo->entry_width = grub_term_width (term) - 5; - - geo->first_entry_y = 2 /* two empty lines*/ -- + 1 /* GNU GRUB version text */ + 1 /* top border */; -+ + 0 /* GNU GRUB version text */ + 1 /* top border */; - - geo->timeout_lines = 2; - --- -1.9.0 - diff --git a/0085-grub-core-loader-i386-bsd.c-grub_netbsd_boot-Pass-po.patch b/0085-grub-core-loader-i386-bsd.c-grub_netbsd_boot-Pass-po.patch new file mode 100644 index 0000000..0ea46b8 --- /dev/null +++ b/0085-grub-core-loader-i386-bsd.c-grub_netbsd_boot-Pass-po.patch @@ -0,0 +1,72 @@ +From 3be166827cecb977ad47ac4d3d89ec92688307a4 Mon Sep 17 00:00:00 2001 +From: Stephane Rochoy +Date: Sun, 22 Jun 2014 01:35:52 +0200 +Subject: [PATCH 085/125] * grub-core/loader/i386/bsd.c + (grub_netbsd_boot): Pass pointer to EFI system table. + +--- + ChangeLog | 5 +++++ + grub-core/loader/i386/bsd.c | 8 ++++++++ + include/grub/i386/netbsd_bootinfo.h | 7 +++++++ + 3 files changed, 20 insertions(+) + +diff --git a/ChangeLog b/ChangeLog +index abf8f4b..0cdd095 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,5 +1,10 @@ + 2014-06-21 Stephane Rochoy + ++ * grub-core/loader/i386/bsd.c (grub_netbsd_boot): Pass pointer to ++ EFI system table. ++ ++2014-06-21 Stephane Rochoy ++ + * grub-core/commands/efi/lsefisystab.c (grub_cmd_lsefisystab): Show + EFI system table physical address. + +diff --git a/grub-core/loader/i386/bsd.c b/grub-core/loader/i386/bsd.c +index 41ef910..8f691e0 100644 +--- a/grub-core/loader/i386/bsd.c ++++ b/grub-core/loader/i386/bsd.c +@@ -1145,6 +1145,14 @@ grub_netbsd_boot (void) + if (err) + return err; + ++#ifdef GRUB_MACHINE_EFI ++ err = grub_bsd_add_meta (NETBSD_BTINFO_EFI, ++ &grub_efi_system_table, ++ sizeof (grub_efi_system_table)); ++ if (err) ++ return err; ++#endif ++ + { + struct bsd_tag *tag; + tag_buf_len = 0; +diff --git a/include/grub/i386/netbsd_bootinfo.h b/include/grub/i386/netbsd_bootinfo.h +index e48c19b..9b4f460 100644 +--- a/include/grub/i386/netbsd_bootinfo.h ++++ b/include/grub/i386/netbsd_bootinfo.h +@@ -58,6 +58,8 @@ + #define NETBSD_BTINFO_BOOTWEDGE 10 + #define NETBSD_BTINFO_MODULES 11 + #define NETBSD_BTINFO_FRAMEBUF 12 ++#define NETBSD_BTINFO_USERCONFCOMMANDS 13 ++#define NETBSD_BTINFO_EFI 14 + + struct grub_netbsd_bootinfo + { +@@ -146,4 +148,9 @@ struct grub_netbsd_btinfo_framebuf + + #define GRUB_NETBSD_MAX_ROOTDEVICE_LEN 16 + ++struct grub_netbsd_btinfo_efi ++{ ++ void *pa_systbl; /* Physical address of the EFI System Table */ ++}; ++ + #endif +-- +1.9.0 + diff --git a/0086-Use-the-correct-indentation-for-the-term-help-text.patch b/0086-Use-the-correct-indentation-for-the-term-help-text.patch deleted file mode 100644 index 7eab53d..0000000 --- a/0086-Use-the-correct-indentation-for-the-term-help-text.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 7188fc2fc1cc381e3ad0ca765c205bdc9ce44b1a Mon Sep 17 00:00:00 2001 -From: William Jon McCann -Date: Fri, 7 Jun 2013 14:08:49 -0400 -Subject: [PATCH 086/103] Use the correct indentation for the term help text - -That is consistent with the menu help text ---- - grub-core/normal/main.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c -index 3777cd2..0da2a52 100644 ---- a/grub-core/normal/main.c -+++ b/grub-core/normal/main.c -@@ -426,8 +426,8 @@ grub_normal_reader_init (int nested) - grub_normal_init_page (term, 1); - grub_term_setcursor (term, 1); - -- if (grub_term_width (term) > 3 + STANDARD_MARGIN + 20) -- grub_print_message_indented (msg_formatted, 3, STANDARD_MARGIN, term); -+ if (grub_term_width (term) > 2 * STANDARD_MARGIN + 20) -+ grub_print_message_indented (msg_formatted, STANDARD_MARGIN, STANDARD_MARGIN, term); - else - grub_print_message_indented (msg_formatted, 0, 0, term); - grub_putcode ('\n', term); --- -1.9.0 - diff --git a/0086-util-grub-install.c-Fix-handling-of-disk-module.patch b/0086-util-grub-install.c-Fix-handling-of-disk-module.patch new file mode 100644 index 0000000..3256788 --- /dev/null +++ b/0086-util-grub-install.c-Fix-handling-of-disk-module.patch @@ -0,0 +1,47 @@ +From d45ed8a6bf7c0c0abacb268da1f6d569743f16a0 Mon Sep 17 00:00:00 2001 +From: Glenn Washburn +Date: Sun, 22 Jun 2014 01:45:11 +0200 +Subject: [PATCH 086/125] * util/grub-install.c: Fix handling of + --disk-module. + +--- + ChangeLog | 4 ++++ + util/grub-install.c | 3 +-- + 2 files changed, 5 insertions(+), 2 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index 0cdd095..4ce6643 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,7 @@ ++2014-06-21 Glenn Washburn ++ ++ * util/grub-install.c: Fix handling of --disk-module. ++ + 2014-06-21 Stephane Rochoy + + * grub-core/loader/i386/bsd.c (grub_netbsd_boot): Pass pointer to +diff --git a/util/grub-install.c b/util/grub-install.c +index e9c6a46..7d61c32 100644 +--- a/util/grub-install.c ++++ b/util/grub-install.c +@@ -94,7 +94,6 @@ enum + OPTION_RECHECK, + OPTION_FORCE, + OPTION_FORCE_FILE_ID, +- OPTION_MODULE, + OPTION_NO_NVRAM, + OPTION_REMOVABLE, + OPTION_BOOTLOADER_ID, +@@ -273,7 +272,7 @@ static struct argp_option options[] = { + N_("install even if problems are detected"), 2}, + {"force-file-id", OPTION_FORCE_FILE_ID, 0, 0, + N_("use identifier file even if UUID is available"), 2}, +- {"disk-module", OPTION_MODULE, N_("MODULE"), 0, ++ {"disk-module", OPTION_DISK_MODULE, N_("MODULE"), 0, + N_("disk module to use (biosdisk or native). " + "This option is only available on BIOS target."), 2}, + {"no-nvram", OPTION_NO_NVRAM, 0, 0, +-- +1.9.0 + diff --git a/0087-Indent-menu-entries.patch b/0087-Indent-menu-entries.patch deleted file mode 100644 index b41cecf..0000000 --- a/0087-Indent-menu-entries.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 90dbb7aaa066c84e514af72530018ec71735c9d7 Mon Sep 17 00:00:00 2001 -From: William Jon McCann -Date: Fri, 7 Jun 2013 14:30:55 -0400 -Subject: [PATCH 087/103] Indent menu entries - ---- - grub-core/normal/menu_text.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/grub-core/normal/menu_text.c b/grub-core/normal/menu_text.c -index aa3454f..01b6f1c 100644 ---- a/grub-core/normal/menu_text.c -+++ b/grub-core/normal/menu_text.c -@@ -239,7 +239,8 @@ print_entry (int y, int highlight, grub_menu_entry_t entry, - unicode_title[i] = ' '; - - if (data->geo.num_entries > 1) -- grub_putcode (' ', data->term); -+ for (i = 0; i < STANDARD_MARGIN; i++) -+ grub_putcode (' ', data->term); - - grub_print_ucs4_menu (unicode_title, - unicode_title + len, --- -1.9.0 - diff --git a/0087-grub-core-commands-loadenv.c-check_blocklists-Fix-ov.patch b/0087-grub-core-commands-loadenv.c-check_blocklists-Fix-ov.patch new file mode 100644 index 0000000..7b41e25 --- /dev/null +++ b/0087-grub-core-commands-loadenv.c-check_blocklists-Fix-ov.patch @@ -0,0 +1,58 @@ +From a9c472a7eeec6816868dbccce6decaef3b3c62bb Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=A0=D0=BE=D0=BC=D0=B0=D0=BD=20=D0=9F=D0=B5=D1=85=D0=BE?= + =?UTF-8?q?=D0=B2?= +Date: Sun, 22 Jun 2014 03:51:50 +0400 +Subject: [PATCH 087/125] * grub-core/commands/loadenv.c + (check_blocklists): Fix overlap check. + +--- + ChangeLog | 4 ++++ + grub-core/commands/loadenv.c | 13 ++----------- + 2 files changed, 6 insertions(+), 11 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index 4ce6643..a2da974 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,7 @@ ++2014-06-21 Роман Пехов ++ ++ * grub-core/commands/loadenv.c (check_blocklists): Fix overlap check. ++ + 2014-06-21 Glenn Washburn + + * util/grub-install.c: Fix handling of --disk-module. +diff --git a/grub-core/commands/loadenv.c b/grub-core/commands/loadenv.c +index 6af8112..acd93d1 100644 +--- a/grub-core/commands/loadenv.c ++++ b/grub-core/commands/loadenv.c +@@ -263,7 +263,7 @@ check_blocklists (grub_envblk_t envblk, struct blocklist *blocklists, + for (q = p->next; q; q = q->next) + { + grub_disk_addr_t s1, s2; +- grub_disk_addr_t e1, e2, t; ++ grub_disk_addr_t e1, e2; + + s1 = p->sector; + e1 = s1 + ((p->length + GRUB_DISK_SECTOR_SIZE - 1) >> GRUB_DISK_SECTOR_BITS); +@@ -271,16 +271,7 @@ check_blocklists (grub_envblk_t envblk, struct blocklist *blocklists, + s2 = q->sector; + e2 = s2 + ((q->length + GRUB_DISK_SECTOR_SIZE - 1) >> GRUB_DISK_SECTOR_BITS); + +- if (s2 > s1) +- { +- t = s2; +- s2 = s1; +- s1 = t; +- t = e2; +- e2 = e1; +- e1 = t; +- } +- if (e1 > s2) ++ if (s1 < e2 && s2 < e1) + { + /* This might be actually valid, but it is unbelievable that + any filesystem makes such a silly allocation. */ +-- +1.9.0 + diff --git a/0088-Fix-margins.patch b/0088-Fix-margins.patch deleted file mode 100644 index fc6224d..0000000 --- a/0088-Fix-margins.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 69d78859f1c3d2841a2519dddabcb656b0d61ad7 Mon Sep 17 00:00:00 2001 -From: William Jon McCann -Date: Fri, 7 Jun 2013 14:59:36 -0400 -Subject: [PATCH 088/103] Fix margins - ---- - grub-core/normal/menu_text.c | 8 +++----- - 1 file changed, 3 insertions(+), 5 deletions(-) - -diff --git a/grub-core/normal/menu_text.c b/grub-core/normal/menu_text.c -index 01b6f1c..ead3391 100644 ---- a/grub-core/normal/menu_text.c -+++ b/grub-core/normal/menu_text.c -@@ -333,17 +333,15 @@ grub_menu_init_page (int nested, int edit, - int version_msg = 1; - - geo->border = 0; -- geo->first_entry_x = 0 /* margin */ + 0 /* border */; -- geo->entry_width = grub_term_width (term) - 5; -+ geo->first_entry_x = 0; /* no margin */ -+ geo->entry_width = grub_term_width (term) - 1; - -- geo->first_entry_y = 2 /* two empty lines*/ -- + 0 /* GNU GRUB version text */ + 1 /* top border */; -+ geo->first_entry_y = 3; /* three empty lines*/ - - geo->timeout_lines = 2; - - /* 3 lines for timeout message and bottom margin. 2 lines for the border. */ - geo->num_entries = grub_term_height (term) - geo->first_entry_y -- - 1 /* bottom border */ - - 1 /* empty line before info message*/ - - geo->timeout_lines /* timeout */ - - 1 /* empty final line */; --- -1.9.0 - diff --git a/0088-NEWS-The-cmosclean-command-in-fact-dates-back-to-1.9.patch b/0088-NEWS-The-cmosclean-command-in-fact-dates-back-to-1.9.patch new file mode 100644 index 0000000..1f49561 --- /dev/null +++ b/0088-NEWS-The-cmosclean-command-in-fact-dates-back-to-1.9.patch @@ -0,0 +1,26 @@ +From e4ecf3a1f8eef683feae27ed84c85eb8aeb79e11 Mon Sep 17 00:00:00 2001 +From: Colin Watson +Date: Sat, 28 Dec 2013 02:20:27 +0000 +Subject: [PATCH 088/125] * NEWS: The cmosclean command in fact dates back to + 1.99. Remove mention of it from 2.02. + +--- + NEWS | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/NEWS b/NEWS +index a61df94..f621c65 100644 +--- a/NEWS ++++ b/NEWS +@@ -63,6 +63,8 @@ New in 2.02: + * New `efifwsetup' and `lsefi' commands on EFI platforms. + * New `cmosdump' and `cmosset' commands on platforms with CMOS support. + * New command `pcidump' for PCI platforms. ++ * New `cbmemc', `coreboot_boottime', and `lscoreboot' commands on ++ coreboot. + * Improve opcode parsing in ACPI halt implementation. + * Use the TSC as a possible time source on i386-ieee1275. + * Merge PowerPC grub-mkrescue implementation with the common one. +-- +1.9.0 + diff --git a/0089-Add-support-for-UEFI-operating-systems-returned-by-o.patch b/0089-Add-support-for-UEFI-operating-systems-returned-by-o.patch deleted file mode 100644 index 9f170f9..0000000 --- a/0089-Add-support-for-UEFI-operating-systems-returned-by-o.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 57af230410edac066aa54ee1d008ead9e0405039 Mon Sep 17 00:00:00 2001 -From: Matthew Garrett -Date: Wed, 12 Jun 2013 11:51:49 -0400 -Subject: [PATCH 089/103] Add support for UEFI operating systems returned by - os-prober - -os-prober returns UEFI operating systems in the form: - -path:long-name:name - -where path is the path under the EFI directory on the ESP. This is in -contrast to legacy OSes, where path is the device string. Handle this case. ---- - util/grub.d/30_os-prober.in | 22 ++++++++++++++++++---- - 1 file changed, 18 insertions(+), 4 deletions(-) - -diff --git a/util/grub.d/30_os-prober.in b/util/grub.d/30_os-prober.in -index 7cf8487..390bb0e 100644 ---- a/util/grub.d/30_os-prober.in -+++ b/util/grub.d/30_os-prober.in -@@ -319,9 +319,23 @@ EOF - EOF - ;; - *) -- echo -n " " -- # TRANSLATORS: %s is replaced by OS name. -- gettext_printf "%s is not yet supported by grub-mkconfig.\n" "${LONGNAME}" >&2 -- ;; -+ case ${DEVICE} in -+ *.efi) -+ cat << EOF -+menuentry '$(echo "${LONGNAME}" | grub_quote)' { -+EOF -+ save_default_entry | grub_add_tab -+ cat << EOF -+ chainloader /EFI/${DEVICE} -+ boot -+} -+EOF -+ ;; -+ *) -+ echo -n " " -+ # TRANSLATORS: %s is replaced by OS name. -+ gettext_printf "%s is not yet supported by grub-mkconfig.\n" "${LONGNAME}" >&2 -+ ;; -+ esac - esac - done --- -1.9.0 - diff --git a/0089-Migrate-PPC-from-Yaboot-to-Grub2.patch b/0089-Migrate-PPC-from-Yaboot-to-Grub2.patch new file mode 100644 index 0000000..39d07c9 --- /dev/null +++ b/0089-Migrate-PPC-from-Yaboot-to-Grub2.patch @@ -0,0 +1,154 @@ +From f01392a68f7f20bcc064a7d28e10805509701c4d Mon Sep 17 00:00:00 2001 +From: Mark Hamzy +Date: Wed, 28 Mar 2012 14:46:41 -0500 +Subject: [PATCH 089/125] Migrate PPC from Yaboot to Grub2 + +Add configuration support for serial terminal consoles. This will set the +maximum screen size so that text is not overwritten. +--- + Makefile.util.def | 7 +++ + util/grub.d/20_ppc_terminfo.in | 114 +++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 121 insertions(+) + create mode 100644 util/grub.d/20_ppc_terminfo.in + +diff --git a/Makefile.util.def b/Makefile.util.def +index a286a89..8f40e78 100644 +--- a/Makefile.util.def ++++ b/Makefile.util.def +@@ -485,6 +485,13 @@ script = { + }; + + script = { ++ name = '20_ppc_terminfo'; ++ common = util/grub.d/20_ppc_terminfo.in; ++ installdir = grubconf; ++ condition = COND_HOST_LINUX; ++}; ++ ++script = { + name = '30_os-prober'; + common = util/grub.d/30_os-prober.in; + installdir = grubconf; +diff --git a/util/grub.d/20_ppc_terminfo.in b/util/grub.d/20_ppc_terminfo.in +new file mode 100644 +index 0000000..10d6658 +--- /dev/null ++++ b/util/grub.d/20_ppc_terminfo.in +@@ -0,0 +1,114 @@ ++#! /bin/sh ++set -e ++ ++# grub-mkconfig helper script. ++# Copyright (C) 2006,2007,2008,2009,2010 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 . ++ ++prefix=@prefix@ ++exec_prefix=@exec_prefix@ ++bindir=@bindir@ ++libdir=@libdir@ ++. "@datadir@/@PACKAGE@/grub-mkconfig_lib" ++ ++export TEXTDOMAIN=@PACKAGE@ ++export TEXTDOMAINDIR=@localedir@ ++ ++X=80 ++Y=24 ++TERMINAL=ofconsole ++ ++argument () { ++ opt=$1 ++ shift ++ ++ if test $# -eq 0; then ++ echo "$0: option requires an argument -- '$opt'" 1>&2 ++ exit 1 ++ fi ++ echo $1 ++} ++ ++check_terminfo () { ++ ++ while test $# -gt 0 ++ do ++ option=$1 ++ shift ++ ++ case "$option" in ++ terminfo | TERMINFO) ++ ;; ++ ++ -g) ++ NEWXY=`argument $option "$@"` ++ NEWX=`echo $NEWXY | cut -d x -f 1` ++ NEWY=`echo $NEWXY | cut -d x -f 2` ++ ++ if [ ${NEWX} -ge 80 ] ; then ++ X=${NEWX} ++ else ++ echo "Warning: ${NEWX} is less than the minimum size of 80" ++ fi ++ ++ if [ ${NEWY} -ge 24 ] ; then ++ Y=${NEWY} ++ else ++ echo "Warning: ${NEWY} is less than the minimum size of 24" ++ fi ++ ++ shift ++ ;; ++ ++ *) ++# # accept console or ofconsole ++# if [ "$option" != "console" -a "$option" != "ofconsole" ] ; then ++# echo "Error: GRUB_TERMINFO unknown console: $option" ++# exit 1 ++# fi ++# # perfer console ++# TERMINAL=console ++ # accept ofconsole ++ if [ "$option" != "ofconsole" ] ; then ++ echo "Error: GRUB_TERMINFO unknown console: $option" ++ exit 1 ++ fi ++ # perfer console ++ TERMINAL=ofconsole ++ ;; ++ esac ++ ++ done ++ ++} ++ ++if ! uname -m | grep -q ppc ; then ++ exit 0 ++fi ++ ++if [ "x${GRUB_TERMINFO}" != "x" ] ; then ++ F1=`echo ${GRUB_TERMINFO} | cut -d " " -f 1` ++ ++ if [ "${F1}" != "terminfo" ] ; then ++ echo "Error: GRUB_TERMINFO is set to \"${GRUB_TERMINFO}\" The first word should be terminfo." ++ exit 1 ++ fi ++ ++ check_terminfo ${GRUB_TERMINFO} ++fi ++ ++cat << EOF ++ terminfo -g ${X}x${Y} ${TERMINAL} ++EOF +-- +1.9.0 + diff --git a/0090-Add-fw_path-variable-revised.patch b/0090-Add-fw_path-variable-revised.patch new file mode 100644 index 0000000..f20abd1 --- /dev/null +++ b/0090-Add-fw_path-variable-revised.patch @@ -0,0 +1,81 @@ +From 5bd3e1f888eeddc2575608516220ffa7b8270c7a Mon Sep 17 00:00:00 2001 +From: Paulo Flabiano Smorigo +Date: Wed, 19 Sep 2012 21:22:55 -0300 +Subject: [PATCH 090/125] Add fw_path variable (revised) + +This patch makes grub look for its config file on efi where the app was +found. It was originally written by Matthew Garrett, and adapted to fix the +"No modules are loaded on grub2 network boot" issue: + +https://bugzilla.redhat.com/show_bug.cgi?id=857936 +--- + grub-core/kern/main.c | 13 ++++++------- + grub-core/normal/main.c | 25 ++++++++++++++++++++++++- + 2 files changed, 30 insertions(+), 8 deletions(-) + +diff --git a/grub-core/kern/main.c b/grub-core/kern/main.c +index 9cad0c4..8ab7794 100644 +--- a/grub-core/kern/main.c ++++ b/grub-core/kern/main.c +@@ -127,16 +127,15 @@ grub_set_prefix_and_root (void) + + grub_machine_get_bootlocation (&fwdevice, &fwpath); + +- if (fwdevice) ++ if (fwdevice && fwpath) + { +- char *cmdpath; ++ char *fw_path; + +- cmdpath = grub_xasprintf ("(%s)%s", fwdevice, fwpath ? : ""); +- if (cmdpath) ++ fw_path = grub_xasprintf ("(%s)/%s", fwdevice, fwpath); ++ if (fw_path) + { +- grub_env_set ("cmdpath", cmdpath); +- grub_env_export ("cmdpath"); +- grub_free (cmdpath); ++ grub_env_set ("fw_path", fw_path); ++ grub_free (fw_path); + } + } + +diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c +index 3a926fc..6f4970f 100644 +--- a/grub-core/normal/main.c ++++ b/grub-core/normal/main.c +@@ -319,7 +319,30 @@ grub_cmd_normal (struct grub_command *cmd __attribute__ ((unused)), + /* Guess the config filename. It is necessary to make CONFIG static, + so that it won't get broken by longjmp. */ + char *config; +- const char *prefix; ++ const char *prefix, *fw_path; ++ ++ fw_path = grub_env_get ("fw_path"); ++ if (fw_path) ++ { ++ config = grub_xasprintf ("%s/grub.cfg", fw_path); ++ if (config) ++ { ++ grub_file_t file; ++ ++ file = grub_file_open (config); ++ if (file) ++ { ++ grub_file_close (file); ++ grub_enter_normal_mode (config); ++ } ++ else ++ { ++ /* Ignore all errors. */ ++ grub_errno = 0; ++ } ++ grub_free (config); ++ } ++ } + + prefix = grub_env_get ("prefix"); + if (prefix) +-- +1.9.0 + diff --git a/0090-Disable-GRUB-video-support-for-IBM-power-machines.patch b/0090-Disable-GRUB-video-support-for-IBM-power-machines.patch deleted file mode 100644 index 26a4f75..0000000 --- a/0090-Disable-GRUB-video-support-for-IBM-power-machines.patch +++ /dev/null @@ -1,65 +0,0 @@ -From bd0e85e1590dec600e0a46fca6f88fa32d38701f Mon Sep 17 00:00:00 2001 -From: Paulo Flabiano Smorigo -Date: Tue, 11 Jun 2013 15:14:05 -0300 -Subject: [PATCH 090/103] Disable GRUB video support for IBM power machines - -Should fix the problem in bugzilla: -https://bugzilla.redhat.com/show_bug.cgi?id=973205 ---- - grub-core/kern/ieee1275/cmain.c | 5 ++++- - grub-core/video/ieee1275.c | 9 ++++++--- - include/grub/ieee1275/ieee1275.h | 2 ++ - 3 files changed, 12 insertions(+), 4 deletions(-) - -diff --git a/grub-core/kern/ieee1275/cmain.c b/grub-core/kern/ieee1275/cmain.c -index d92ae14..409c922 100644 ---- a/grub-core/kern/ieee1275/cmain.c -+++ b/grub-core/kern/ieee1275/cmain.c -@@ -88,7 +88,10 @@ grub_ieee1275_find_options (void) - is_qemu = 1; - - if (rc >= 0 && grub_strncmp (tmp, "IBM", 3) == 0) -- grub_ieee1275_set_flag (GRUB_IEEE1275_FLAG_NO_TREE_SCANNING_FOR_DISKS); -+ { -+ grub_ieee1275_set_flag (GRUB_IEEE1275_FLAG_NO_TREE_SCANNING_FOR_DISKS); -+ grub_ieee1275_set_flag (GRUB_IEEE1275_FLAG_DISABLE_VIDEO_SUPPORT); -+ } - - /* Old Macs have no key repeat, newer ones have fully working one. - The ones inbetween when repeated key generates an escaoe sequence -diff --git a/grub-core/video/ieee1275.c b/grub-core/video/ieee1275.c -index 0b150ec..813ab38 100644 ---- a/grub-core/video/ieee1275.c -+++ b/grub-core/video/ieee1275.c -@@ -351,9 +351,12 @@ static struct grub_video_adapter grub_video_ieee1275_adapter = - - GRUB_MOD_INIT(ieee1275_fb) - { -- find_display (); -- if (display) -- grub_video_register (&grub_video_ieee1275_adapter); -+ if (! grub_ieee1275_test_flag (GRUB_IEEE1275_FLAG_DISABLE_VIDEO_SUPPORT)) -+ { -+ find_display (); -+ if (display) -+ grub_video_register (&grub_video_ieee1275_adapter); -+ } - } - - GRUB_MOD_FINI(ieee1275_fb) -diff --git a/include/grub/ieee1275/ieee1275.h b/include/grub/ieee1275/ieee1275.h -index 6a21f5d..663935d 100644 ---- a/include/grub/ieee1275/ieee1275.h -+++ b/include/grub/ieee1275/ieee1275.h -@@ -146,6 +146,8 @@ enum grub_ieee1275_flag - GRUB_IEEE1275_FLAG_BROKEN_REPEAT, - - GRUB_IEEE1275_FLAG_CURSORONOFF_ANSI_BROKEN, -+ -+ GRUB_IEEE1275_FLAG_DISABLE_VIDEO_SUPPORT - }; - - extern int EXPORT_FUNC(grub_ieee1275_test_flag) (enum grub_ieee1275_flag flag); --- -1.9.0 - diff --git a/0091-Add-support-for-linuxefi.patch b/0091-Add-support-for-linuxefi.patch new file mode 100644 index 0000000..a998cdd --- /dev/null +++ b/0091-Add-support-for-linuxefi.patch @@ -0,0 +1,482 @@ +From 70e7bfb2caa9d0f52187b4f6e84762c6459c5903 Mon Sep 17 00:00:00 2001 +From: Matthew Garrett +Date: Tue, 10 Jul 2012 11:58:52 -0400 +Subject: [PATCH 091/125] Add support for linuxefi + +--- + grub-core/Makefile.core.def | 8 + + grub-core/kern/efi/mm.c | 32 ++++ + grub-core/loader/i386/efi/linux.c | 371 ++++++++++++++++++++++++++++++++++++++ + include/grub/efi/efi.h | 3 + + include/grub/i386/linux.h | 1 + + 5 files changed, 415 insertions(+) + create mode 100644 grub-core/loader/i386/efi/linux.c + +diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def +index 42443bc..ec46506 100644 +--- a/grub-core/Makefile.core.def ++++ b/grub-core/Makefile.core.def +@@ -1706,6 +1706,14 @@ module = { + }; + + module = { ++ name = linuxefi; ++ efi = loader/i386/efi/linux.c; ++ efi = lib/cmdline.c; ++ enable = i386_efi; ++ enable = x86_64_efi; ++}; ++ ++module = { + name = chain; + efi = loader/efi/chainloader.c; + i386_pc = loader/i386/pc/chainloader.c; +diff --git a/grub-core/kern/efi/mm.c b/grub-core/kern/efi/mm.c +index be37afd..ddeca60 100644 +--- a/grub-core/kern/efi/mm.c ++++ b/grub-core/kern/efi/mm.c +@@ -49,6 +49,38 @@ static grub_efi_uintn_t finish_desc_size; + static grub_efi_uint32_t finish_desc_version; + int grub_efi_is_finished = 0; + ++/* Allocate pages below a specified address */ ++void * ++grub_efi_allocate_pages_max (grub_efi_physical_address_t max, ++ grub_efi_uintn_t pages) ++{ ++ grub_efi_status_t status; ++ grub_efi_boot_services_t *b; ++ grub_efi_physical_address_t address = max; ++ ++ if (max > 0xffffffff) ++ return 0; ++ ++ b = grub_efi_system_table->boot_services; ++ status = efi_call_4 (b->allocate_pages, GRUB_EFI_ALLOCATE_MAX_ADDRESS, GRUB_EFI_LOADER_DATA, pages, &address); ++ ++ if (status != GRUB_EFI_SUCCESS) ++ return 0; ++ ++ if (address == 0) ++ { ++ /* Uggh, the address 0 was allocated... This is too annoying, ++ so reallocate another one. */ ++ address = max; ++ status = efi_call_4 (b->allocate_pages, GRUB_EFI_ALLOCATE_MAX_ADDRESS, GRUB_EFI_LOADER_DATA, pages, &address); ++ grub_efi_free_pages (0, pages); ++ if (status != GRUB_EFI_SUCCESS) ++ return 0; ++ } ++ ++ return (void *) ((grub_addr_t) address); ++} ++ + /* Allocate pages. Return the pointer to the first of allocated pages. */ + void * + grub_efi_allocate_pages (grub_efi_physical_address_t address, +diff --git a/grub-core/loader/i386/efi/linux.c b/grub-core/loader/i386/efi/linux.c +new file mode 100644 +index 0000000..b79e632 +--- /dev/null ++++ b/grub-core/loader/i386/efi/linux.c +@@ -0,0 +1,371 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2012 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 . ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++GRUB_MOD_LICENSE ("GPLv3+"); ++ ++static grub_dl_t my_mod; ++static int loaded; ++static void *kernel_mem; ++static grub_uint64_t kernel_size; ++static grub_uint8_t *initrd_mem; ++static grub_uint32_t handover_offset; ++struct linux_kernel_params *params; ++static char *linux_cmdline; ++ ++#define BYTES_TO_PAGES(bytes) (((bytes) + 0xfff) >> 12) ++ ++#define SHIM_LOCK_GUID \ ++ { 0x605dab50, 0xe046, 0x4300, {0xab, 0xb6, 0x3d, 0xd8, 0x10, 0xdd, 0x8b, 0x23} } ++ ++struct grub_efi_shim_lock ++{ ++ grub_efi_status_t (*verify) (void *buffer, grub_uint32_t size); ++}; ++typedef struct grub_efi_shim_lock grub_efi_shim_lock_t; ++ ++static grub_efi_boolean_t ++grub_linuxefi_secure_validate (void *data, grub_uint32_t size) ++{ ++ grub_efi_guid_t guid = SHIM_LOCK_GUID; ++ grub_efi_shim_lock_t *shim_lock; ++ ++ shim_lock = grub_efi_locate_protocol(&guid, NULL); ++ ++ if (!shim_lock) ++ return 1; ++ ++ if (shim_lock->verify(data, size) == GRUB_EFI_SUCCESS) ++ return 1; ++ ++ return 0; ++} ++ ++typedef void(*handover_func)(void *, grub_efi_system_table_t *, struct linux_kernel_params *); ++ ++static grub_err_t ++grub_linuxefi_boot (void) ++{ ++ handover_func hf; ++ int offset = 0; ++ ++#ifdef __x86_64__ ++ offset = 512; ++#endif ++ ++ hf = (handover_func)((char *)kernel_mem + handover_offset + offset); ++ ++ asm volatile ("cli"); ++ ++ hf (grub_efi_image_handle, grub_efi_system_table, params); ++ ++ /* Not reached */ ++ return GRUB_ERR_NONE; ++} ++ ++static grub_err_t ++grub_linuxefi_unload (void) ++{ ++ grub_dl_unref (my_mod); ++ loaded = 0; ++ if (initrd_mem) ++ grub_efi_free_pages((grub_efi_physical_address_t)initrd_mem, BYTES_TO_PAGES(params->ramdisk_size)); ++ if (linux_cmdline) ++ grub_efi_free_pages((grub_efi_physical_address_t)linux_cmdline, BYTES_TO_PAGES(params->cmdline_size + 1)); ++ if (kernel_mem) ++ grub_efi_free_pages((grub_efi_physical_address_t)kernel_mem, BYTES_TO_PAGES(kernel_size)); ++ if (params) ++ grub_efi_free_pages((grub_efi_physical_address_t)params, BYTES_TO_PAGES(16384)); ++ return GRUB_ERR_NONE; ++} ++ ++static grub_err_t ++grub_cmd_initrd (grub_command_t cmd __attribute__ ((unused)), ++ int argc, char *argv[]) ++{ ++ grub_file_t *files = 0; ++ int i, nfiles = 0; ++ grub_size_t size = 0; ++ grub_uint8_t *ptr; ++ ++ if (argc == 0) ++ { ++ grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected")); ++ goto fail; ++ } ++ ++ if (!loaded) ++ { ++ grub_error (GRUB_ERR_BAD_ARGUMENT, N_("you need to load the kernel first")); ++ goto fail; ++ } ++ ++ files = grub_zalloc (argc * sizeof (files[0])); ++ if (!files) ++ goto fail; ++ ++ for (i = 0; i < argc; i++) ++ { ++ grub_file_filter_disable_compression (); ++ files[i] = grub_file_open (argv[i]); ++ if (! files[i]) ++ goto fail; ++ nfiles++; ++ size += ALIGN_UP (grub_file_size (files[i]), 4); ++ } ++ ++ initrd_mem = grub_efi_allocate_pages_max (0x3fffffff, BYTES_TO_PAGES(size)); ++ ++ if (!initrd_mem) ++ { ++ grub_error (GRUB_ERR_OUT_OF_MEMORY, N_("can't allocate initrd")); ++ goto fail; ++ } ++ ++ params->ramdisk_size = size; ++ params->ramdisk_image = (grub_uint32_t)(grub_uint64_t) initrd_mem; ++ ++ ptr = initrd_mem; ++ ++ for (i = 0; i < nfiles; i++) ++ { ++ grub_ssize_t cursize = grub_file_size (files[i]); ++ if (grub_file_read (files[i], ptr, cursize) != cursize) ++ { ++ if (!grub_errno) ++ grub_error (GRUB_ERR_FILE_READ_ERROR, N_("premature end of file %s"), ++ argv[i]); ++ goto fail; ++ } ++ ptr += cursize; ++ grub_memset (ptr, 0, ALIGN_UP_OVERHEAD (cursize, 4)); ++ ptr += ALIGN_UP_OVERHEAD (cursize, 4); ++ } ++ ++ params->ramdisk_size = size; ++ ++ fail: ++ for (i = 0; i < nfiles; i++) ++ grub_file_close (files[i]); ++ grub_free (files); ++ ++ if (initrd_mem && grub_errno) ++ grub_efi_free_pages((grub_efi_physical_address_t)initrd_mem, BYTES_TO_PAGES(size)); ++ ++ return grub_errno; ++} ++ ++static grub_err_t ++grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)), ++ int argc, char *argv[]) ++{ ++ grub_file_t file = 0; ++ struct linux_kernel_header lh; ++ grub_ssize_t len, start, filelen; ++ void *kernel; ++ ++ grub_dl_ref (my_mod); ++ ++ if (argc == 0) ++ { ++ grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected")); ++ goto fail; ++ } ++ ++ file = grub_file_open (argv[0]); ++ if (! file) ++ goto fail; ++ ++ filelen = grub_file_size (file); ++ ++ kernel = grub_malloc(filelen); ++ ++ if (!kernel) ++ { ++ grub_error (GRUB_ERR_OUT_OF_MEMORY, N_("cannot allocate kernel buffer")); ++ goto fail; ++ } ++ ++ if (grub_file_read (file, kernel, filelen) != filelen) ++ { ++ grub_error (GRUB_ERR_FILE_READ_ERROR, N_("Can't read kernel %s"), argv[0]); ++ goto fail; ++ } ++ ++ if (! grub_linuxefi_secure_validate (kernel, filelen)) ++ { ++ grub_error (GRUB_ERR_INVALID_COMMAND, N_("%s has invalid signature"), argv[0]); ++ grub_free (kernel); ++ goto fail; ++ } ++ ++ grub_file_seek (file, 0); ++ ++ grub_free(kernel); ++ ++ params = grub_efi_allocate_pages_max (0x3fffffff, BYTES_TO_PAGES(16384)); ++ ++ if (! params) ++ { ++ grub_error (GRUB_ERR_OUT_OF_MEMORY, "cannot allocate kernel parameters"); ++ goto fail; ++ } ++ ++ memset (params, 0, 16384); ++ ++ if (grub_file_read (file, &lh, sizeof (lh)) != sizeof (lh)) ++ { ++ if (!grub_errno) ++ grub_error (GRUB_ERR_BAD_OS, N_("premature end of file %s"), ++ argv[0]); ++ goto fail; ++ } ++ ++ if (lh.boot_flag != grub_cpu_to_le16 (0xaa55)) ++ { ++ grub_error (GRUB_ERR_BAD_OS, N_("invalid magic number")); ++ goto fail; ++ } ++ ++ if (lh.setup_sects > GRUB_LINUX_MAX_SETUP_SECTS) ++ { ++ grub_error (GRUB_ERR_BAD_OS, N_("too many setup sectors")); ++ goto fail; ++ } ++ ++ if (lh.version < grub_cpu_to_le16 (0x020b)) ++ { ++ grub_error (GRUB_ERR_BAD_OS, N_("kernel too old")); ++ goto fail; ++ } ++ ++ if (!lh.handover_offset) ++ { ++ grub_error (GRUB_ERR_BAD_OS, N_("kernel doesn't support EFI handover")); ++ goto fail; ++ } ++ ++ linux_cmdline = grub_efi_allocate_pages_max(0x3fffffff, ++ BYTES_TO_PAGES(lh.cmdline_size + 1)); ++ ++ if (!linux_cmdline) ++ { ++ grub_error (GRUB_ERR_OUT_OF_MEMORY, N_("can't allocate cmdline")); ++ goto fail; ++ } ++ ++ grub_memcpy (linux_cmdline, LINUX_IMAGE, sizeof (LINUX_IMAGE)); ++ grub_create_loader_cmdline (argc, argv, ++ linux_cmdline + sizeof (LINUX_IMAGE) - 1, ++ lh.cmdline_size - (sizeof (LINUX_IMAGE) - 1)); ++ ++ lh.cmd_line_ptr = (grub_uint32_t)(grub_uint64_t)linux_cmdline; ++ ++ handover_offset = lh.handover_offset; ++ ++ start = (lh.setup_sects + 1) * 512; ++ len = grub_file_size(file) - start; ++ ++ kernel_mem = grub_efi_allocate_pages(lh.pref_address, ++ BYTES_TO_PAGES(lh.init_size)); ++ ++ if (!kernel_mem) ++ kernel_mem = grub_efi_allocate_pages_max(0x3fffffff, ++ BYTES_TO_PAGES(lh.init_size)); ++ ++ if (!kernel_mem) ++ { ++ grub_error (GRUB_ERR_OUT_OF_MEMORY, N_("can't allocate kernel")); ++ goto fail; ++ } ++ ++ if (grub_file_seek (file, start) == (grub_off_t) -1) ++ { ++ grub_error (GRUB_ERR_BAD_OS, N_("premature end of file %s"), ++ argv[0]); ++ goto fail; ++ } ++ ++ if (grub_file_read (file, kernel_mem, len) != len && !grub_errno) ++ { ++ grub_error (GRUB_ERR_BAD_OS, N_("premature end of file %s"), ++ argv[0]); ++ } ++ ++ if (grub_errno == GRUB_ERR_NONE) ++ { ++ grub_loader_set (grub_linuxefi_boot, grub_linuxefi_unload, 0); ++ loaded = 1; ++ lh.code32_start = (grub_uint32_t)(grub_uint64_t) kernel_mem; ++ } ++ ++ memcpy(params, &lh, 2 * 512); ++ ++ params->type_of_loader = 0x21; ++ ++ fail: ++ ++ if (file) ++ grub_file_close (file); ++ ++ if (grub_errno != GRUB_ERR_NONE) ++ { ++ grub_dl_unref (my_mod); ++ loaded = 0; ++ } ++ ++ if (linux_cmdline && !loaded) ++ grub_efi_free_pages((grub_efi_physical_address_t)linux_cmdline, BYTES_TO_PAGES(lh.cmdline_size + 1)); ++ ++ if (kernel_mem && !loaded) ++ grub_efi_free_pages((grub_efi_physical_address_t)kernel_mem, BYTES_TO_PAGES(kernel_size)); ++ ++ if (params && !loaded) ++ grub_efi_free_pages((grub_efi_physical_address_t)params, BYTES_TO_PAGES(16384)); ++ ++ return grub_errno; ++} ++ ++static grub_command_t cmd_linux, cmd_initrd; ++ ++GRUB_MOD_INIT(linuxefi) ++{ ++ cmd_linux = ++ grub_register_command ("linuxefi", grub_cmd_linux, ++ 0, N_("Load Linux.")); ++ cmd_initrd = ++ grub_register_command ("initrdefi", grub_cmd_initrd, ++ 0, N_("Load initrd.")); ++ my_mod = mod; ++} ++ ++GRUB_MOD_FINI(linuxefi) ++{ ++ grub_unregister_command (cmd_linux); ++ grub_unregister_command (cmd_initrd); ++} +diff --git a/include/grub/efi/efi.h b/include/grub/efi/efi.h +index 489cf9e..9370fd5 100644 +--- a/include/grub/efi/efi.h ++++ b/include/grub/efi/efi.h +@@ -40,6 +40,9 @@ void EXPORT_FUNC(grub_efi_stall) (grub_efi_uintn_t microseconds); + void * + EXPORT_FUNC(grub_efi_allocate_pages) (grub_efi_physical_address_t address, + grub_efi_uintn_t pages); ++void * ++EXPORT_FUNC(grub_efi_allocate_pages_max) (grub_efi_physical_address_t max, ++ grub_efi_uintn_t pages); + void EXPORT_FUNC(grub_efi_free_pages) (grub_efi_physical_address_t address, + grub_efi_uintn_t pages); + int +diff --git a/include/grub/i386/linux.h b/include/grub/i386/linux.h +index da0ca3b..fc36bda 100644 +--- a/include/grub/i386/linux.h ++++ b/include/grub/i386/linux.h +@@ -139,6 +139,7 @@ struct linux_kernel_header + grub_uint64_t setup_data; + grub_uint64_t pref_address; + grub_uint32_t init_size; ++ grub_uint32_t handover_offset; + } GRUB_PACKED; + + /* Boot parameters for Linux based on 2.6.12. This is used by the setup +-- +1.9.0 + diff --git a/0091-Use-2-instead-of-1-for-our-right-hand-margin-so-line.patch b/0091-Use-2-instead-of-1-for-our-right-hand-margin-so-line.patch deleted file mode 100644 index f05e677..0000000 --- a/0091-Use-2-instead-of-1-for-our-right-hand-margin-so-line.patch +++ /dev/null @@ -1,27 +0,0 @@ -From dc24706a6f889f3562f642ab5c6a19fe0eeb49b5 Mon Sep 17 00:00:00 2001 -From: Peter Jones -Date: Fri, 21 Jun 2013 14:44:08 -0400 -Subject: [PATCH 091/103] Use -2 instead of -1 for our right-hand margin, so - linewrapping works (#976643). - -Signed-off-by: Peter Jones ---- - grub-core/normal/menu_text.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/grub-core/normal/menu_text.c b/grub-core/normal/menu_text.c -index ead3391..bc1fc71 100644 ---- a/grub-core/normal/menu_text.c -+++ b/grub-core/normal/menu_text.c -@@ -334,7 +334,7 @@ grub_menu_init_page (int nested, int edit, - - geo->border = 0; - geo->first_entry_x = 0; /* no margin */ -- geo->entry_width = grub_term_width (term) - 1; -+ geo->entry_width = grub_term_width (term) - 2; - - geo->first_entry_y = 3; /* three empty lines*/ - --- -1.9.0 - diff --git a/0092-Use-linux16-when-appropriate-880840.patch b/0092-Use-linux16-when-appropriate-880840.patch deleted file mode 100644 index aee4441..0000000 --- a/0092-Use-linux16-when-appropriate-880840.patch +++ /dev/null @@ -1,52 +0,0 @@ -From e3c0c4cdf83eb8269984e3d33ce47e604247913e Mon Sep 17 00:00:00 2001 -From: Peter Jones -Date: Mon, 28 Oct 2013 10:05:07 -0400 -Subject: [PATCH 092/103] Use linux16 when appropriate (#880840) - -The kernel group really would prefer that we use the 16 bit entry point -on x86 bios machines. - -Resolves: rhbz#880840 - -Signed-off-by: Peter Jones ---- - util/grub.d/10_linux.in | 9 +++++++-- - 1 file changed, 7 insertions(+), 2 deletions(-) - -diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in -index e762e1f..600bfd2 100644 ---- a/util/grub.d/10_linux.in -+++ b/util/grub.d/10_linux.in -@@ -74,6 +74,11 @@ linux_entry () - type="$3" - args="$4" - -+ sixteenbit="" -+ case "$machine" in -+ i?86|x86_64) sixteenbit="16" ;; -+ esac -+ - if [ -z "$boot_device_id" ]; then - boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")" - fi -@@ -132,7 +137,7 @@ linux_entry () - EOF - else - sed "s/^/$submenu_indentation/" << EOF -- linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args} -+ linux${sixteenbit} ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args} - EOF - fi - if test -n "${initrd}" ; then -@@ -142,7 +147,7 @@ EOF - EOF - else - sed "s/^/$submenu_indentation/" << EOF -- initrd ${rel_dirname}/${initrd} -+ initrd${sixteenbit} ${rel_dirname}/${initrd} - EOF - fi - fi --- -1.9.0 - diff --git a/0092-Use-linuxefi-and-initrdefi-where-appropriate.patch b/0092-Use-linuxefi-and-initrdefi-where-appropriate.patch new file mode 100644 index 0000000..762c562 --- /dev/null +++ b/0092-Use-linuxefi-and-initrdefi-where-appropriate.patch @@ -0,0 +1,50 @@ +From acc83cfa76a6457be73b1e748a80deb3967e2364 Mon Sep 17 00:00:00 2001 +From: Peter Jones +Date: Mon, 16 Jul 2012 18:57:11 -0400 +Subject: [PATCH 092/125] Use "linuxefi" and "initrdefi" where appropriate. + +--- + util/grub.d/10_linux.in | 18 ++++++++++++++++-- + 1 file changed, 16 insertions(+), 2 deletions(-) + +diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in +index 00d1931..ad34cc0 100644 +--- a/util/grub.d/10_linux.in ++++ b/util/grub.d/10_linux.in +@@ -127,17 +127,31 @@ linux_entry () + printf '%s\n' "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/" + fi + message="$(gettext_printf "Loading Linux %s ..." ${version})" +- sed "s/^/$submenu_indentation/" << EOF ++ if [ -d /sys/firmware/efi ]; then ++ sed "s/^/$submenu_indentation/" << EOF ++ echo '$(echo "$message" | grub_quote)' ++ linuxefi ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args} ++EOF ++ else ++ sed "s/^/$submenu_indentation/" << EOF + echo '$(echo "$message" | grub_quote)' + linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args} + EOF ++ fi + if test -n "${initrd}" ; then + # TRANSLATORS: ramdisk isn't identifier. Should be translated. + message="$(gettext_printf "Loading initial ramdisk ...")" +- sed "s/^/$submenu_indentation/" << EOF ++ if [ -d /sys/firmware/efi ]; then ++ sed "s/^/$submenu_indentation/" << EOF + echo '$(echo "$message" | grub_quote)' ++ initrdefi ${rel_dirname}/${initrd} ++EOF ++ else ++ sed "s/^/$submenu_indentation/" << EOF ++ echo '$message' + initrd ${rel_dirname}/${initrd} + EOF ++ fi + fi + sed "s/^/$submenu_indentation/" << EOF + } +-- +1.9.0 + diff --git a/0093-Don-t-allow-insmod-when-secure-boot-is-enabled.patch b/0093-Don-t-allow-insmod-when-secure-boot-is-enabled.patch new file mode 100644 index 0000000..5e7f4c4 --- /dev/null +++ b/0093-Don-t-allow-insmod-when-secure-boot-is-enabled.patch @@ -0,0 +1,117 @@ +From fe7b32ab9e58470fdf930d8efc7c9ebcd69e6ef3 Mon Sep 17 00:00:00 2001 +From: Colin Watson +Date: Tue, 23 Oct 2012 10:40:49 -0400 +Subject: [PATCH 093/125] Don't allow insmod when secure boot is enabled. + +Hi, + +Fedora's patch to forbid insmod in UEFI Secure Boot environments is fine +as far as it goes. However, the insmod command is not the only way that +modules can be loaded. In particular, the 'normal' command, which +implements the usual GRUB menu and the fully-featured command prompt, +will implicitly load commands not currently loaded into memory. This +permits trivial Secure Boot violations by writing commands implementing +whatever you want to do and pointing $prefix at the malicious code. + +I'm currently test-building this patch (replacing your current +grub-2.00-no-insmod-on-sb.patch), but this should be more correct. It +moves the check into grub_dl_load_file. +--- + grub-core/kern/dl.c | 21 +++++++++++++++++++++ + grub-core/kern/efi/efi.c | 28 ++++++++++++++++++++++++++++ + include/grub/efi/efi.h | 1 + + 3 files changed, 50 insertions(+) + +diff --git a/grub-core/kern/dl.c b/grub-core/kern/dl.c +index 6850e04..b0b0405 100644 +--- a/grub-core/kern/dl.c ++++ b/grub-core/kern/dl.c +@@ -38,6 +38,14 @@ + #define GRUB_MODULES_MACHINE_READONLY + #endif + ++#ifdef GRUB_MACHINE_EMU ++#include ++#endif ++ ++#ifdef GRUB_MACHINE_EFI ++#include ++#endif ++ + + + #pragma GCC diagnostic ignored "-Wcast-align" +@@ -680,6 +688,19 @@ grub_dl_load_file (const char *filename) + void *core = 0; + grub_dl_t mod = 0; + ++#ifdef GRUB_MACHINE_EFI ++ if (grub_efi_secure_boot ()) ++ { ++#if 0 ++ /* This is an error, but grub2-mkconfig still generates a pile of ++ * insmod commands, so emitting it would be mostly just obnoxious. */ ++ grub_error (GRUB_ERR_ACCESS_DENIED, ++ "Secure Boot forbids loading module from %s", filename); ++#endif ++ return 0; ++ } ++#endif ++ + grub_boot_time ("Loading module %s", filename); + + file = grub_file_open (filename); +diff --git a/grub-core/kern/efi/efi.c b/grub-core/kern/efi/efi.c +index b9eb1ab..cd839cc 100644 +--- a/grub-core/kern/efi/efi.c ++++ b/grub-core/kern/efi/efi.c +@@ -259,6 +259,34 @@ grub_efi_get_variable (const char *var, const grub_efi_guid_t *guid, + return NULL; + } + ++grub_efi_boolean_t ++grub_efi_secure_boot (void) ++{ ++ grub_efi_guid_t efi_var_guid = GRUB_EFI_GLOBAL_VARIABLE_GUID; ++ grub_size_t datasize; ++ char *secure_boot = NULL; ++ char *setup_mode = NULL; ++ grub_efi_boolean_t ret = 0; ++ ++ secure_boot = grub_efi_get_variable("SecureBoot", &efi_var_guid, &datasize); ++ ++ if (datasize != 1 || !secure_boot) ++ goto out; ++ ++ setup_mode = grub_efi_get_variable("SetupMode", &efi_var_guid, &datasize); ++ ++ if (datasize != 1 || !setup_mode) ++ goto out; ++ ++ if (*secure_boot && !*setup_mode) ++ ret = 1; ++ ++ out: ++ grub_free (secure_boot); ++ grub_free (setup_mode); ++ return ret; ++} ++ + #pragma GCC diagnostic ignored "-Wcast-align" + + /* Search the mods section from the PE32/PE32+ image. This code uses +diff --git a/include/grub/efi/efi.h b/include/grub/efi/efi.h +index 9370fd5..a000c38 100644 +--- a/include/grub/efi/efi.h ++++ b/include/grub/efi/efi.h +@@ -72,6 +72,7 @@ EXPORT_FUNC (grub_efi_set_variable) (const char *var, + const grub_efi_guid_t *guid, + void *data, + grub_size_t datasize); ++grub_efi_boolean_t EXPORT_FUNC (grub_efi_secure_boot) (void); + int + EXPORT_FUNC (grub_efi_compare_device_paths) (const grub_efi_device_path_t *dp1, + const grub_efi_device_path_t *dp2); +-- +1.9.0 + diff --git a/0093-Enable-pager-by-default.-985860.patch b/0093-Enable-pager-by-default.-985860.patch deleted file mode 100644 index e5a690a..0000000 --- a/0093-Enable-pager-by-default.-985860.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 281b3060d667e35b84850b8943f2dd1b7c9d5e7c Mon Sep 17 00:00:00 2001 -From: Peter Jones -Date: Mon, 28 Oct 2013 10:09:27 -0400 -Subject: [PATCH 093/103] Enable pager by default. (#985860) - -Signed-off-by: Peter Jones ---- - util/grub.d/00_header.in | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/util/grub.d/00_header.in b/util/grub.d/00_header.in -index ce2ec81..fefa7dd 100644 ---- a/util/grub.d/00_header.in -+++ b/util/grub.d/00_header.in -@@ -43,6 +43,8 @@ if [ "x${GRUB_DEFAULT_BUTTON}" = "xsaved" ] ; then GRUB_DEFAULT_BUTTON='${saved_ - if [ "x${GRUB_TIMEOUT_BUTTON}" = "x" ] ; then GRUB_TIMEOUT_BUTTON="$GRUB_TIMEOUT" ; fi - - cat << EOF -+set pager=1 -+ - if [ -s \$prefix/grubenv ]; then - load_env - fi --- -1.9.0 - diff --git a/0094-F10-doesn-t-work-on-serial-so-don-t-tell-the-user-to.patch b/0094-F10-doesn-t-work-on-serial-so-don-t-tell-the-user-to.patch deleted file mode 100644 index a9afd10..0000000 --- a/0094-F10-doesn-t-work-on-serial-so-don-t-tell-the-user-to.patch +++ /dev/null @@ -1,27 +0,0 @@ -From d550d551e833d56ffbf08166e12aa6c8a97b38fc Mon Sep 17 00:00:00 2001 -From: Peter Jones -Date: Mon, 28 Oct 2013 10:13:27 -0400 -Subject: [PATCH 094/103] F10 doesn't work on serial, so don't tell the user to - hit it (#987443) - -Signed-off-by: Peter Jones ---- - grub-core/normal/menu_text.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/grub-core/normal/menu_text.c b/grub-core/normal/menu_text.c -index bc1fc71..6202c2a 100644 ---- a/grub-core/normal/menu_text.c -+++ b/grub-core/normal/menu_text.c -@@ -157,7 +157,7 @@ print_message (int nested, int edit, struct grub_term_output *term, int dry_run) - - if (edit) - { -- ret += grub_print_message_indented_real (_("Press Ctrl-x or F10 to start, Ctrl-c or F2 for a \ -+ ret += grub_print_message_indented_real (_("Press Ctrl-x to start, Ctrl-c for a \ - command prompt or Escape to discard edits and return to the menu. Pressing Tab lists possible completions."), - STANDARD_MARGIN, STANDARD_MARGIN, - term, dry_run); --- -1.9.0 - diff --git a/0094-Pass-x-hex-hex-straight-through-unmolested.patch b/0094-Pass-x-hex-hex-straight-through-unmolested.patch new file mode 100644 index 0000000..ed4751c --- /dev/null +++ b/0094-Pass-x-hex-hex-straight-through-unmolested.patch @@ -0,0 +1,183 @@ +From a4f335a93d417c7f51f715d55ae59621fc9772ad Mon Sep 17 00:00:00 2001 +From: Peter Jones +Date: Mon, 1 Oct 2012 13:24:37 -0400 +Subject: [PATCH 094/125] Pass "\x[[:hex:]][[:hex:]]" straight through + unmolested. + +--- + grub-core/commands/wildcard.c | 16 +++++++++++++++- + grub-core/lib/cmdline.c | 34 ++++++++++++++++++++++++++++++++-- + grub-core/script/execute.c | 43 +++++++++++++++++++++++++++++++++++++------ + 3 files changed, 84 insertions(+), 9 deletions(-) + +diff --git a/grub-core/commands/wildcard.c b/grub-core/commands/wildcard.c +index 2807f80..0f40e04 100644 +--- a/grub-core/commands/wildcard.c ++++ b/grub-core/commands/wildcard.c +@@ -458,6 +458,12 @@ check_file (const char *dir, const char *basename) + return ctx.found; + } + ++static int ++is_hex(char c) ++{ ++ return ((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F')); ++} ++ + static void + unescape (char *out, const char *in, const char *end) + { +@@ -466,7 +472,15 @@ unescape (char *out, const char *in, const char *end) + + for (optr = out, iptr = in; iptr < end;) + { +- if (*iptr == '\\' && iptr + 1 < end) ++ if (*iptr == '\\' && iptr + 3 < end && iptr[1] == 'x' && is_hex(iptr[2]) && is_hex(iptr[3])) ++ { ++ *optr++ = *iptr++; ++ *optr++ = *iptr++; ++ *optr++ = *iptr++; ++ *optr++ = *iptr++; ++ continue; ++ } ++ else if (*iptr == '\\' && iptr + 1 < end) + { + *optr++ = iptr[1]; + iptr += 2; +diff --git a/grub-core/lib/cmdline.c b/grub-core/lib/cmdline.c +index d5e10ee..0a5b2af 100644 +--- a/grub-core/lib/cmdline.c ++++ b/grub-core/lib/cmdline.c +@@ -20,6 +20,12 @@ + #include + #include + ++static int ++is_hex(char c) ++{ ++ return ((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F')); ++} ++ + static unsigned int check_arg (char *c, int *has_space) + { + int space = 0; +@@ -27,7 +33,13 @@ static unsigned int check_arg (char *c, int *has_space) + + while (*c) + { +- if (*c == '\\' || *c == '\'' || *c == '"') ++ if (*c == '\\' && *(c+1) == 'x' && is_hex(*(c+2)) && is_hex(*(c+3))) ++ { ++ size += 4; ++ c += 4; ++ continue; ++ } ++ else if (*c == '\\' || *c == '\'' || *c == '"') + size++; + else if (*c == ' ') + space = 1; +@@ -85,7 +97,25 @@ int grub_create_loader_cmdline (int argc, char *argv[], char *buf, + + while (*c) + { +- if (*c == '\\' || *c == '\'' || *c == '"') ++ if (*c == ' ') ++ { ++ *buf++ = '\\'; ++ *buf++ = 'x'; ++ *buf++ = '2'; ++ *buf++ = '0'; ++ c++; ++ continue; ++ } ++ else if (*c == '\\' && *(c+1) == 'x' && ++ is_hex(*(c+2)) && is_hex(*(c+3))) ++ { ++ *buf++ = *c++; ++ *buf++ = *c++; ++ *buf++ = *c++; ++ *buf++ = *c++; ++ continue; ++ } ++ else if (*c == '\\' || *c == '\'' || *c == '"') + *buf++ = '\\'; + + *buf++ = *c; +diff --git a/grub-core/script/execute.c b/grub-core/script/execute.c +index afd5513..8f01c1b 100644 +--- a/grub-core/script/execute.c ++++ b/grub-core/script/execute.c +@@ -52,6 +52,12 @@ static struct grub_script_scope *scope = 0; + /* Wildcard translator for GRUB script. */ + struct grub_script_wildcard_translator *grub_wildcard_translator; + ++static int ++is_hex(char c) ++{ ++ return ((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F')); ++} ++ + static char* + wildcard_escape (const char *s) + { +@@ -68,7 +74,15 @@ wildcard_escape (const char *s) + i = 0; + while ((ch = *s++)) + { +- if (ch == '*' || ch == '\\' || ch == '?') ++ if (ch == '\\' && s[0] == 'x' && is_hex(s[1]) && is_hex(s[2])) ++ { ++ p[i++] = ch; ++ p[i++] = *s++; ++ p[i++] = *s++; ++ p[i++] = *s++; ++ continue; ++ } ++ else if (ch == '*' || ch == '\\' || ch == '?') + p[i++] = '\\'; + p[i++] = ch; + } +@@ -92,7 +106,14 @@ wildcard_unescape (const char *s) + i = 0; + while ((ch = *s++)) + { +- if (ch == '\\') ++ if (ch == '\\' && s[0] == 'x' && is_hex(s[1]) && is_hex(s[2])) ++ { ++ p[i++] = '\\'; ++ p[i++] = *s++; ++ p[i++] = *s++; ++ p[i++] = *s++; ++ } ++ else if (ch == '\\') + p[i++] = *s++; + else + p[i++] = ch; +@@ -394,10 +415,20 @@ parse_string (const char *str, + switch (*ptr) + { + case '\\': +- escaped = !escaped; +- if (!escaped && put) +- *(put++) = '\\'; +- ptr++; ++ if (!escaped && put && *(ptr+1) == 'x' && is_hex(*(ptr+2)) && is_hex(*(ptr+3))) ++ { ++ *(put++) = *ptr++; ++ *(put++) = *ptr++; ++ *(put++) = *ptr++; ++ *(put++) = *ptr++; ++ } ++ else ++ { ++ escaped = !escaped; ++ if (!escaped && put) ++ *(put++) = '\\'; ++ ptr++; ++ } + break; + case '$': + if (escaped) +-- +1.9.0 + diff --git a/0095-Don-t-say-GNU-Linux-in-generated-menus.patch b/0095-Don-t-say-GNU-Linux-in-generated-menus.patch deleted file mode 100644 index ab9f1e3..0000000 --- a/0095-Don-t-say-GNU-Linux-in-generated-menus.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 931f63ee792555882837c1287a361223d603d37c Mon Sep 17 00:00:00 2001 -From: Peter Jones -Date: Mon, 14 Mar 2011 14:27:42 -0400 -Subject: [PATCH 095/103] Don't say "GNU/Linux" in generated menus. - ---- - util/grub.d/10_linux.in | 4 ++-- - util/grub.d/20_linux_xen.in | 4 ++-- - 2 files changed, 4 insertions(+), 4 deletions(-) - -diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in -index 600bfd2..c943a1e 100644 ---- a/util/grub.d/10_linux.in -+++ b/util/grub.d/10_linux.in -@@ -29,9 +29,9 @@ export TEXTDOMAINDIR="@localedir@" - CLASS="--class gnu-linux --class gnu --class os" - - if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then -- OS=GNU/Linux -+ OS="$(sed 's, release .*$,,g' /etc/system-release)" - else -- OS="${GRUB_DISTRIBUTOR} GNU/Linux" -+ OS="${GRUB_DISTRIBUTOR}" - CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1|LC_ALL=C sed 's,[^[:alnum:]_],_,g') ${CLASS}" - fi - -diff --git a/util/grub.d/20_linux_xen.in b/util/grub.d/20_linux_xen.in -index a608435..79d4e38 100644 ---- a/util/grub.d/20_linux_xen.in -+++ b/util/grub.d/20_linux_xen.in -@@ -29,9 +29,9 @@ export TEXTDOMAINDIR="@localedir@" - CLASS="--class gnu-linux --class gnu --class os --class xen" - - if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then -- OS=GNU/Linux -+ OS="$(sed 's, release .*$,,g' /etc/system-release)" - else -- OS="${GRUB_DISTRIBUTOR} GNU/Linux" -+ OS="${GRUB_DISTRIBUTOR}" - CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1|LC_ALL=C sed 's,[^[:alnum:]_],_,g') ${CLASS}" - fi - --- -1.9.0 - diff --git a/0095-Fix-crash-on-http.patch b/0095-Fix-crash-on-http.patch new file mode 100644 index 0000000..7423137 --- /dev/null +++ b/0095-Fix-crash-on-http.patch @@ -0,0 +1,28 @@ +From e5a51c7c96d347cd6cbb7a2aa11f5dd7358c802a Mon Sep 17 00:00:00 2001 +From: Gustavo Luiz Duarte +Date: Tue, 25 Sep 2012 18:40:55 -0400 +Subject: [PATCH 095/125] Fix crash on http + +Don't free file->data on receiving FIN flag since it is used all over without +checking. http_close() will be called later to free that memory. +https://bugzilla.redhat.com/show_bug.cgi?id=860834 +--- + grub-core/net/http.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/grub-core/net/http.c b/grub-core/net/http.c +index 4684f8b..ef9538c 100644 +--- a/grub-core/net/http.c ++++ b/grub-core/net/http.c +@@ -393,7 +393,7 @@ http_establish (struct grub_file *file, grub_off_t offset, int initial) + + data->sock = grub_net_tcp_open (file->device->net->server, + HTTP_PORT, http_receive, +- http_err, http_err, ++ http_err, NULL, + file); + if (!data->sock) + { +-- +1.9.0 + diff --git a/0096-Don-t-draw-a-border-around-the-menu.patch b/0096-Don-t-draw-a-border-around-the-menu.patch deleted file mode 100644 index 5e1a17e..0000000 --- a/0096-Don-t-draw-a-border-around-the-menu.patch +++ /dev/null @@ -1,74 +0,0 @@ -From 9fd85bc9025a32e053b752c8de04e1ba48e83951 Mon Sep 17 00:00:00 2001 -From: William Jon McCann -Date: Wed, 15 May 2013 16:47:33 -0400 -Subject: [PATCH 096/103] Don't draw a border around the menu - -It looks cleaner without it. ---- - grub-core/normal/menu_text.c | 43 ------------------------------------------- - 1 file changed, 43 deletions(-) - -diff --git a/grub-core/normal/menu_text.c b/grub-core/normal/menu_text.c -index 6202c2a..beddd7f 100644 ---- a/grub-core/normal/menu_text.c -+++ b/grub-core/normal/menu_text.c -@@ -108,47 +108,6 @@ grub_print_message_indented (const char *msg, int margin_left, int margin_right, - grub_print_message_indented_real (msg, margin_left, margin_right, term, 0); - } - --static void --draw_border (struct grub_term_output *term, const struct grub_term_screen_geometry *geo) --{ -- int i; -- -- grub_term_setcolorstate (term, GRUB_TERM_COLOR_NORMAL); -- -- grub_term_gotoxy (term, (struct grub_term_coordinate) { geo->first_entry_x - 1, -- geo->first_entry_y - 1 }); -- grub_putcode (GRUB_UNICODE_CORNER_UL, term); -- for (i = 0; i < geo->entry_width + 1; i++) -- grub_putcode (GRUB_UNICODE_HLINE, term); -- grub_putcode (GRUB_UNICODE_CORNER_UR, term); -- -- for (i = 0; i < geo->num_entries; i++) -- { -- grub_term_gotoxy (term, (struct grub_term_coordinate) { geo->first_entry_x - 1, -- geo->first_entry_y + i }); -- grub_putcode (GRUB_UNICODE_VLINE, term); -- grub_term_gotoxy (term, -- (struct grub_term_coordinate) { geo->first_entry_x + geo->entry_width + 1, -- geo->first_entry_y + i }); -- grub_putcode (GRUB_UNICODE_VLINE, term); -- } -- -- grub_term_gotoxy (term, -- (struct grub_term_coordinate) { geo->first_entry_x - 1, -- geo->first_entry_y - 1 + geo->num_entries + 1 }); -- grub_putcode (GRUB_UNICODE_CORNER_LL, term); -- for (i = 0; i < geo->entry_width + 1; i++) -- grub_putcode (GRUB_UNICODE_HLINE, term); -- grub_putcode (GRUB_UNICODE_CORNER_LR, term); -- -- grub_term_setcolorstate (term, GRUB_TERM_COLOR_NORMAL); -- -- grub_term_gotoxy (term, -- (struct grub_term_coordinate) { geo->first_entry_x - 1, -- (geo->first_entry_y - 1 + geo->num_entries -- + GRUB_TERM_MARGIN + 1) }); --} -- - static int - print_message (int nested, int edit, struct grub_term_output *term, int dry_run) - { -@@ -403,8 +362,6 @@ grub_menu_init_page (int nested, int edit, - - grub_term_normal_color = grub_color_menu_normal; - grub_term_highlight_color = grub_color_menu_highlight; -- if (geo->border) -- draw_border (term, geo); - grub_term_normal_color = old_color_normal; - grub_term_highlight_color = old_color_highlight; - geo->timeout_y = geo->first_entry_y + geo->num_entries --- -1.9.0 - diff --git a/0096-IBM-client-architecture-CAS-reboot-support.patch b/0096-IBM-client-architecture-CAS-reboot-support.patch new file mode 100644 index 0000000..4a80b5b --- /dev/null +++ b/0096-IBM-client-architecture-CAS-reboot-support.patch @@ -0,0 +1,174 @@ +From 9d1411ffa7290c1cbdc9ee95bb5fcc5506e63e0f Mon Sep 17 00:00:00 2001 +From: Paulo Flabiano Smorigo +Date: Thu, 20 Sep 2012 18:07:39 -0300 +Subject: [PATCH 096/125] IBM client architecture (CAS) reboot support + +This is an implementation of IBM client architecture (CAS) reboot for GRUB. + +There are cases where the POWER firmware must reboot in order to support +specific features requested by a kernel. The kernel calls +ibm,client-architecture-support and it may either return or reboot with the new +feature set. eg: + +Calling ibm,client-architecture-support.../ +Elapsed time since release of system processors: 70959 mins 50 secs +Welcome to GRUB! + +Instead of return to the GRUB menu, it will check if the flag for CAS reboot is +set. If so, grub will automatically boot the last booted kernel using the same +parameters +--- + grub-core/kern/ieee1275/openfw.c | 62 ++++++++++++++++++++++++++++++++++++++++ + grub-core/normal/main.c | 19 ++++++++++++ + grub-core/script/execute.c | 7 +++++ + include/grub/ieee1275/ieee1275.h | 2 ++ + 4 files changed, 90 insertions(+) + +diff --git a/grub-core/kern/ieee1275/openfw.c b/grub-core/kern/ieee1275/openfw.c +index ddb7783..6db8b98 100644 +--- a/grub-core/kern/ieee1275/openfw.c ++++ b/grub-core/kern/ieee1275/openfw.c +@@ -561,3 +561,65 @@ grub_ieee1275_canonicalise_devname (const char *path) + return NULL; + } + ++/* Check if it's a CAS reboot. If so, set the script to be executed. */ ++int ++grub_ieee1275_cas_reboot (char *script) ++{ ++ grub_uint32_t ibm_ca_support_reboot; ++ grub_uint32_t ibm_fw_nbr_reboots; ++ char property_value[10]; ++ grub_ssize_t actual; ++ grub_ieee1275_ihandle_t options; ++ ++ if (grub_ieee1275_finddevice ("/options", &options) < 0) ++ return -1; ++ ++ /* Check two properties, one is enough to get cas reboot value */ ++ ibm_ca_support_reboot = 0; ++ if (grub_ieee1275_get_integer_property (grub_ieee1275_chosen, ++ "ibm,client-architecture-support-reboot", ++ &ibm_ca_support_reboot, ++ sizeof (ibm_ca_support_reboot), ++ &actual) >= 0) ++ grub_dprintf("ieee1275", "ibm,client-architecture-support-reboot: %u\n", ++ ibm_ca_support_reboot); ++ ++ ibm_fw_nbr_reboots = 0; ++ if (grub_ieee1275_get_property (options, "ibm,fw-nbr-reboots", ++ property_value, sizeof (property_value), ++ &actual) >= 0) ++ { ++ property_value[sizeof (property_value) - 1] = 0; ++ ibm_fw_nbr_reboots = (grub_uint8_t) grub_strtoul (property_value, 0, 10); ++ grub_dprintf("ieee1275", "ibm,fw-nbr-reboots: %u\n", ibm_fw_nbr_reboots); ++ } ++ ++ if (ibm_ca_support_reboot || ibm_fw_nbr_reboots) ++ { ++ if (! grub_ieee1275_get_property_length (options, "boot-last-label", &actual)) ++ { ++ if (actual > 1024) ++ script = grub_realloc (script, actual + 1); ++ grub_ieee1275_get_property (options, "boot-last-label", script, actual, ++ &actual); ++ return 0; ++ } ++ } ++ ++ grub_ieee1275_set_boot_last_label (""); ++ ++ return -1; ++} ++ ++int grub_ieee1275_set_boot_last_label (const char *text) ++{ ++ grub_ieee1275_ihandle_t options; ++ grub_ssize_t actual; ++ ++ grub_dprintf("ieee1275", "set boot_last_label (size: %u)\n", grub_strlen(text)); ++ if (! grub_ieee1275_finddevice ("/options", &options) && ++ options != (grub_ieee1275_ihandle_t) -1) ++ grub_ieee1275_set_property (options, "boot-last-label", text, ++ grub_strlen (text), &actual); ++ return 0; ++} +diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c +index 6f4970f..f72844c 100644 +--- a/grub-core/normal/main.c ++++ b/grub-core/normal/main.c +@@ -33,6 +33,9 @@ + #include + #include + #include ++#ifdef GRUB_MACHINE_IEEE1275 ++#include ++#endif + + GRUB_MOD_LICENSE ("GPLv3+"); + +@@ -275,6 +278,22 @@ grub_normal_execute (const char *config, int nested, int batch) + { + menu = read_config_file (config); + ++#ifdef GRUB_MACHINE_IEEE1275 ++ int boot; ++ boot = 0; ++ char *script; ++ script = grub_malloc (1024); ++ if (! grub_ieee1275_cas_reboot (script)) ++ { ++ char *dummy[1] = { NULL }; ++ if (! grub_script_execute_sourcecode (script, 0, dummy)) ++ boot = 1; ++ } ++ grub_free (script); ++ if (boot) ++ grub_command_execute ("boot", 0, 0); ++#endif ++ + /* Ignore any error. */ + grub_errno = GRUB_ERR_NONE; + } +diff --git a/grub-core/script/execute.c b/grub-core/script/execute.c +index 8f01c1b..cec9539 100644 +--- a/grub-core/script/execute.c ++++ b/grub-core/script/execute.c +@@ -27,6 +27,9 @@ + #include + #include + #include ++#ifdef GRUB_MACHINE_IEEE1275 ++#include ++#endif + + /* Max digits for a char is 3 (0xFF is 255), similarly for an int it + is sizeof (int) * 3, and one extra for a possible -ve sign. */ +@@ -892,6 +895,10 @@ grub_script_execute_sourcecode (const char *source) + grub_err_t ret = 0; + struct grub_script *parsed_script; + ++#ifdef GRUB_MACHINE_IEEE1275 ++ grub_ieee1275_set_boot_last_label (source); ++#endif ++ + while (source) + { + char *line; +diff --git a/include/grub/ieee1275/ieee1275.h b/include/grub/ieee1275/ieee1275.h +index 8e42513..9f26c69 100644 +--- a/include/grub/ieee1275/ieee1275.h ++++ b/include/grub/ieee1275/ieee1275.h +@@ -234,6 +234,8 @@ int EXPORT_FUNC(grub_ieee1275_devalias_next) (struct grub_ieee1275_devalias *ali + void EXPORT_FUNC(grub_ieee1275_children_peer) (struct grub_ieee1275_devalias *alias); + void EXPORT_FUNC(grub_ieee1275_children_first) (const char *devpath, + struct grub_ieee1275_devalias *alias); ++int EXPORT_FUNC(grub_ieee1275_cas_reboot) (char *script); ++int EXPORT_FUNC(grub_ieee1275_set_boot_last_label) (const char *text); + + #define FOR_IEEE1275_DEVALIASES(alias) for (grub_ieee1275_devalias_init_iterator (&(alias)); grub_ieee1275_devalias_next (&(alias));) + +-- +1.9.0 + diff --git a/0097-Add-vlan-tag-support.patch b/0097-Add-vlan-tag-support.patch new file mode 100644 index 0000000..1eeffe9 --- /dev/null +++ b/0097-Add-vlan-tag-support.patch @@ -0,0 +1,186 @@ +From c987623113e2d03e80f0ba1e108bf0a800628f85 Mon Sep 17 00:00:00 2001 +From: Paulo Flabiano Smorigo +Date: Tue, 30 Oct 2012 15:19:39 -0200 +Subject: [PATCH 097/125] Add vlan-tag support + +This patch adds support for virtual LAN (VLAN) tagging. VLAN tagging allows +multiple VLANs in a bridged network to share the same physical network link but +maintain isolation: + +http://en.wikipedia.org/wiki/IEEE_802.1Q + +This patch should fix this bugzilla: +https://bugzilla.redhat.com/show_bug.cgi?id=871563 +--- + grub-core/kern/ieee1275/init.c | 1 + + grub-core/kern/ieee1275/openfw.c | 30 ++++++++++++++++++++++++++++ + grub-core/net/ethernet.c | 42 +++++++++++++++++++++++++++++++++++++--- + include/grub/ieee1275/ieee1275.h | 1 + + include/grub/net.h | 2 ++ + 5 files changed, 73 insertions(+), 3 deletions(-) + +diff --git a/grub-core/kern/ieee1275/init.c b/grub-core/kern/ieee1275/init.c +index d5bd74d..8191f8c 100644 +--- a/grub-core/kern/ieee1275/init.c ++++ b/grub-core/kern/ieee1275/init.c +@@ -117,6 +117,7 @@ grub_machine_get_bootlocation (char **device, char **path) + char *dev, *canon; + char *ptr; + dev = grub_ieee1275_get_aliasdevname (bootpath); ++ grub_ieee1275_parse_net_options (bootpath); + canon = grub_ieee1275_canonicalise_devname (dev); + ptr = canon + grub_strlen (canon) - 1; + while (ptr > canon && (*ptr == ',' || *ptr == ':')) +diff --git a/grub-core/kern/ieee1275/openfw.c b/grub-core/kern/ieee1275/openfw.c +index 6db8b98..81276fa 100644 +--- a/grub-core/kern/ieee1275/openfw.c ++++ b/grub-core/kern/ieee1275/openfw.c +@@ -23,6 +23,7 @@ + #include + #include + #include ++#include + + enum grub_ieee1275_parse_type + { +@@ -451,6 +452,35 @@ fail: + return ret; + } + ++int ++grub_ieee1275_parse_net_options (const char *path) ++{ ++ char *comma; ++ char *args; ++ char *option = 0; ++ ++ args = grub_ieee1275_get_devargs (path); ++ if (!args) ++ /* There is no option. */ ++ return -1; ++ ++ do ++ { ++ comma = grub_strchr (args, ','); ++ if (! comma) ++ option = grub_strdup (args); ++ else ++ option = grub_strndup (args, (grub_size_t)(comma - args)); ++ args = comma + 1; ++ ++ if (! grub_strncmp(option, "vtag", 4)) ++ grub_env_set ("vlan-tag", option + grub_strlen("vtag=")); ++ ++ } while (comma); ++ ++ return 0; ++} ++ + char * + grub_ieee1275_get_device_type (const char *path) + { +diff --git a/grub-core/net/ethernet.c b/grub-core/net/ethernet.c +index c397b1b..faaca67 100644 +--- a/grub-core/net/ethernet.c ++++ b/grub-core/net/ethernet.c +@@ -23,6 +23,7 @@ + #include + #include + #include ++#include + #include + #include + +@@ -56,10 +57,19 @@ send_ethernet_packet (struct grub_net_network_level_interface *inf, + { + struct etherhdr *eth; + grub_err_t err; ++ grub_uint32_t vlantag = 0; ++ grub_uint8_t etherhdr_size; + +- COMPILE_TIME_ASSERT (sizeof (*eth) < GRUB_NET_MAX_LINK_HEADER_SIZE); ++ etherhdr_size = sizeof (*eth); ++ COMPILE_TIME_ASSERT (sizeof (*eth) + 4 < GRUB_NET_MAX_LINK_HEADER_SIZE); + +- err = grub_netbuff_push (nb, sizeof (*eth)); ++ const char *vlantag_text = grub_env_get ("vlan-tag"); ++ if (vlantag_text != 0) { ++ etherhdr_size += 4; ++ vlantag = grub_strtoul (vlantag_text, 0, 16); ++ } ++ ++ err = grub_netbuff_push (nb, etherhdr_size); + if (err) + return err; + eth = (struct etherhdr *) nb->data; +@@ -76,6 +86,19 @@ send_ethernet_packet (struct grub_net_network_level_interface *inf, + return err; + inf->card->opened = 1; + } ++ ++ /* Check if a vlan-tag is needed. */ ++ if (vlantag != 0) ++ { ++ /* Move eth type to the right */ ++ grub_memcpy((char *) nb->data + etherhdr_size - 2, ++ (char *) nb->data + etherhdr_size - 6, 2); ++ ++ /* Add the tag in the middle */ ++ grub_memcpy((char *) nb->data + etherhdr_size - 6, ++ &vlantag, 4); ++ } ++ + return inf->card->driver->send (inf->card, nb); + } + +@@ -90,10 +113,23 @@ grub_net_recv_ethernet_packet (struct grub_net_buff *nb, + grub_net_link_level_address_t hwaddress; + grub_net_link_level_address_t src_hwaddress; + grub_err_t err; ++ grub_uint8_t etherhdr_size = sizeof (*eth); ++ ++ grub_uint16_t vlantag_identifier = 0; ++ grub_memcpy (&vlantag_identifier, nb->data + etherhdr_size - 2, 2); ++ ++ /* Check if a vlan-tag is present. */ ++ if (vlantag_identifier == VLANTAG_IDENTIFIER) ++ { ++ etherhdr_size += 4; ++ /* Move eth type to the original position */ ++ grub_memcpy((char *) nb->data + etherhdr_size - 6, ++ (char *) nb->data + etherhdr_size - 2, 2); ++ } + + eth = (struct etherhdr *) nb->data; + type = grub_be_to_cpu16 (eth->type); +- err = grub_netbuff_pull (nb, sizeof (*eth)); ++ err = grub_netbuff_pull (nb, etherhdr_size); + if (err) + return err; + +diff --git a/include/grub/ieee1275/ieee1275.h b/include/grub/ieee1275/ieee1275.h +index 9f26c69..6a21f5d 100644 +--- a/include/grub/ieee1275/ieee1275.h ++++ b/include/grub/ieee1275/ieee1275.h +@@ -236,6 +236,7 @@ void EXPORT_FUNC(grub_ieee1275_children_first) (const char *devpath, + struct grub_ieee1275_devalias *alias); + int EXPORT_FUNC(grub_ieee1275_cas_reboot) (char *script); + int EXPORT_FUNC(grub_ieee1275_set_boot_last_label) (const char *text); ++int EXPORT_FUNC(grub_ieee1275_parse_net_options) (const char *path); + + #define FOR_IEEE1275_DEVALIASES(alias) for (grub_ieee1275_devalias_init_iterator (&(alias)); grub_ieee1275_devalias_next (&(alias));) + +diff --git a/include/grub/net.h b/include/grub/net.h +index 538baa3..a799e6b 100644 +--- a/include/grub/net.h ++++ b/include/grub/net.h +@@ -538,4 +538,6 @@ extern char *grub_net_default_server; + #define GRUB_NET_INTERVAL 400 + #define GRUB_NET_INTERVAL_ADDITION 20 + ++#define VLANTAG_IDENTIFIER 0x8100 ++ + #endif /* ! GRUB_NET_HEADER */ +-- +1.9.0 + diff --git a/0097-Use-the-standard-margin-for-the-timeout-string.patch b/0097-Use-the-standard-margin-for-the-timeout-string.patch deleted file mode 100644 index d89d094..0000000 --- a/0097-Use-the-standard-margin-for-the-timeout-string.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 903bf51c8b9ca237e135d20a80ed7783584b3d8b Mon Sep 17 00:00:00 2001 -From: William Jon McCann -Date: Fri, 7 Jun 2013 10:52:32 -0400 -Subject: [PATCH 097/103] Use the standard margin for the timeout string - -So that it aligns with the other messages ---- - grub-core/normal/menu_text.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/grub-core/normal/menu_text.c b/grub-core/normal/menu_text.c -index beddd7f..33b208b 100644 ---- a/grub-core/normal/menu_text.c -+++ b/grub-core/normal/menu_text.c -@@ -369,7 +369,7 @@ grub_menu_init_page (int nested, int edit, - if (bottom_message) - { - grub_term_gotoxy (term, -- (struct grub_term_coordinate) { GRUB_TERM_MARGIN, -+ (struct grub_term_coordinate) { STANDARD_MARGIN, - geo->timeout_y }); - - print_message (nested, edit, term, 0); -@@ -404,14 +404,14 @@ menu_text_print_timeout (int timeout, void *dataptr) - if (data->timeout_msg == TIMEOUT_UNKNOWN) - { - data->timeout_msg = grub_print_message_indented_real (msg_translated, -- 3, 1, data->term, 1) -+ STANDARD_MARGIN, 1, data->term, 1) - <= data->geo.timeout_lines ? TIMEOUT_NORMAL : TIMEOUT_TERSE; - if (data->timeout_msg == TIMEOUT_TERSE) - { - grub_free (msg_translated); - msg_translated = grub_xasprintf (_("%ds"), timeout); - if (grub_term_width (data->term) < 10) -- data->timeout_msg = TIMEOUT_TERSE_NO_MARGIN; -+ data->timeout_msg = STANDARD_MARGIN; - } - } - --- -1.9.0 - diff --git a/0098-Add-X-option-to-printf-functions.patch b/0098-Add-X-option-to-printf-functions.patch new file mode 100644 index 0000000..59e0f75 --- /dev/null +++ b/0098-Add-X-option-to-printf-functions.patch @@ -0,0 +1,58 @@ +From d7aaf1651f4b36721f73331753d017d33d7879b4 Mon Sep 17 00:00:00 2001 +From: Paulo Flabiano Smorigo +Date: Tue, 27 Nov 2012 16:58:39 -0200 +Subject: [PATCH 098/125] Add %X option to printf functions. + +--- + grub-core/kern/misc.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/grub-core/kern/misc.c b/grub-core/kern/misc.c +index c5c815d..a56cfe7 100644 +--- a/grub-core/kern/misc.c ++++ b/grub-core/kern/misc.c +@@ -762,7 +762,7 @@ __umoddi3 (grub_uint64_t a, grub_uint64_t b) + static inline char * + grub_lltoa (char *str, int c, unsigned long long n) + { +- unsigned base = (c == 'x') ? 16 : 10; ++ unsigned base = ((c == 'x') || (c == 'X')) ? 16 : 10; + char *p; + + if ((long long) n < 0 && c == 'd') +@@ -777,7 +777,7 @@ grub_lltoa (char *str, int c, unsigned long long n) + do + { + unsigned d = (unsigned) (n & 0xf); +- *p++ = (d > 9) ? d + 'a' - 10 : d + '0'; ++ *p++ = (d > 9) ? d + ((c == 'x') ? 'a' : 'A') - 10 : d + '0'; + } + while (n >>= 4); + else +@@ -850,6 +850,7 @@ parse_printf_args (const char *fmt0, struct printf_args *args, + { + case 'p': + case 'x': ++ case 'X': + case 'u': + case 'd': + case 'c': +@@ -930,6 +931,7 @@ parse_printf_args (const char *fmt0, struct printf_args *args, + switch (c) + { + case 'x': ++ case 'X': + case 'u': + args->ptr[curn].type = UNSIGNED_INT + longfmt; + break; +@@ -1067,6 +1069,7 @@ grub_vsnprintf_real (char *str, grub_size_t max_len, const char *fmt0, + c = 'x'; + /* Fall through. */ + case 'x': ++ case 'X': + case 'u': + case 'd': + { +-- +1.9.0 + diff --git a/0098-Fix-grub_script_execute_sourcecode-usage-on-ppc.patch b/0098-Fix-grub_script_execute_sourcecode-usage-on-ppc.patch deleted file mode 100644 index 8be9b05..0000000 --- a/0098-Fix-grub_script_execute_sourcecode-usage-on-ppc.patch +++ /dev/null @@ -1,29 +0,0 @@ -From b45d96d3c8877f1194728152e8a23c3a85245ac6 Mon Sep 17 00:00:00 2001 -From: Peter Jones -Date: Fri, 10 Jan 2014 09:36:24 -0500 -Subject: [PATCH 098/103] Fix grub_script_execute_sourcecode() usage on ppc. - -593e430c made it not take the extra argc/argv that this code still -passes it. - -Signed-off-by: Peter Jones ---- - grub-core/normal/main.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c -index 0da2a52..f66c03c 100644 ---- a/grub-core/normal/main.c -+++ b/grub-core/normal/main.c -@@ -289,7 +289,7 @@ grub_normal_execute (const char *config, int nested, int batch) - if (! grub_ieee1275_cas_reboot (script)) - { - char *dummy[1] = { NULL }; -- if (! grub_script_execute_sourcecode (script, 0, dummy)) -+ if (! grub_script_execute_sourcecode (script)) - boot = 1; - } - grub_free (script); --- -1.9.0 - diff --git a/0099-Add-.eh_frame-to-list-of-relocations-stripped.patch b/0099-Add-.eh_frame-to-list-of-relocations-stripped.patch deleted file mode 100644 index aca5b30..0000000 --- a/0099-Add-.eh_frame-to-list-of-relocations-stripped.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 648dcde61e116b808c81a54f312de88a8ae2a672 Mon Sep 17 00:00:00 2001 -From: Fedora Ninjas -Date: Mon, 13 Jan 2014 21:50:59 -0500 -Subject: [PATCH 099/103] Add .eh_frame to list of relocations stripped - ---- - conf/Makefile.common | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/conf/Makefile.common b/conf/Makefile.common -index e4c301f..6f836d8 100644 ---- a/conf/Makefile.common -+++ b/conf/Makefile.common -@@ -45,7 +45,7 @@ CFLAGS_KERNEL = $(CFLAGS_CPU) $(CFLAGS_PLATFORM) -ffreestanding - LDFLAGS_KERNEL = $(LDFLAGS_CPU) $(LDFLAGS_PLATFORM) -nostdlib $(TARGET_LDFLAGS_OLDMAGIC) $(TARGET_LDFLAGS_STATIC_LIBGCC) - CPPFLAGS_KERNEL = $(CPPFLAGS_CPU) $(CPPFLAGS_PLATFORM) -DGRUB_KERNEL=1 - CCASFLAGS_KERNEL = $(CCASFLAGS_CPU) $(CCASFLAGS_PLATFORM) --STRIPFLAGS_KERNEL = -R .rel.dyn -R .reginfo -R .note -R .comment -R .drectve -R .note.gnu.gold-version -+STRIPFLAGS_KERNEL = -R .eh_frame -R .rel.dyn -R .reginfo -R .note -R .comment -R .drectve -R .note.gnu.gold-version - - CFLAGS_MODULE = $(CFLAGS_CPU) $(CFLAGS_PLATFORM) -ffreestanding - LDFLAGS_MODULE = $(LDFLAGS_CPU) $(LDFLAGS_PLATFORM) -nostdlib $(TARGET_LDFLAGS_OLDMAGIC) -Wl,-r,-d --- -1.9.0 - diff --git a/0099-DHCP-client-ID-and-UUID-options-added.patch b/0099-DHCP-client-ID-and-UUID-options-added.patch new file mode 100644 index 0000000..4c55c1b --- /dev/null +++ b/0099-DHCP-client-ID-and-UUID-options-added.patch @@ -0,0 +1,145 @@ +From 2f3846a557e4ddf83f44e166d959ee460bedf8e1 Mon Sep 17 00:00:00 2001 +From: Paulo Flabiano Smorigo +Date: Tue, 27 Nov 2012 17:18:53 -0200 +Subject: [PATCH 099/125] DHCP client ID and UUID options added. + +--- + grub-core/net/bootp.c | 87 ++++++++++++++++++++++++++++++++++++++++++++++----- + include/grub/net.h | 2 ++ + 2 files changed, 81 insertions(+), 8 deletions(-) + +diff --git a/grub-core/net/bootp.c b/grub-core/net/bootp.c +index 6310ed4..88f2056 100644 +--- a/grub-core/net/bootp.c ++++ b/grub-core/net/bootp.c +@@ -25,6 +25,49 @@ + #include + #include + ++static char * ++grub_env_write_readonly (struct grub_env_var *var __attribute__ ((unused)), ++ const char *val __attribute__ ((unused))) ++{ ++ return NULL; ++} ++ ++static void ++set_env_limn_ro (const char *intername, const char *suffix, ++ const char *value, grub_size_t len) ++{ ++ char *varname, *varvalue; ++ char *ptr; ++ varname = grub_xasprintf ("net_%s_%s", intername, suffix); ++ if (!varname) ++ return; ++ for (ptr = varname; *ptr; ptr++) ++ if (*ptr == ':') ++ *ptr = '_'; ++ varvalue = grub_malloc (len + 1); ++ if (!varvalue) ++ { ++ grub_free (varname); ++ return; ++ } ++ ++ grub_memcpy (varvalue, value, len); ++ varvalue[len] = 0; ++ grub_env_set (varname, varvalue); ++ grub_register_variable_hook (varname, 0, grub_env_write_readonly); ++ grub_env_export (varname); ++ grub_free (varname); ++ grub_free (varvalue); ++} ++ ++static char ++hexdigit (grub_uint8_t val) ++{ ++ if (val < 10) ++ return val + '0'; ++ return val + 'a' - 10; ++} ++ + static void + parse_dhcp_vendor (const char *name, const void *vend, int limit, int *mask) + { +@@ -55,6 +98,9 @@ parse_dhcp_vendor (const char *name, const void *vend, int limit, int *mask) + + taglength = *ptr++; + ++ grub_dprintf("net", "DHCP option %u (0x%02x) found with length %u.\n", ++ tagtype, tagtype, taglength); ++ + switch (tagtype) + { + case GRUB_NET_BOOTP_NETMASK: +@@ -120,6 +166,39 @@ parse_dhcp_vendor (const char *name, const void *vend, int limit, int *mask) + taglength); + break; + ++ case GRUB_NET_BOOTP_CLIENT_ID: ++ set_env_limn_ro (name, "clientid", (char *) ptr, taglength); ++ break; ++ ++ case GRUB_NET_BOOTP_CLIENT_UUID: ++ { ++ if (taglength != 17) ++ break; ++ ++ /* The format is 9cfe245e-d0c8-bd45-a79f-54ea5fbd3d97 */ ++ ++ ptr += 1; ++ taglength -= 1; ++ ++ char *val = grub_malloc (2 * taglength + 4 + 1); ++ int i = 0; ++ int j = 0; ++ for (i = 0; i < taglength; i++) ++ { ++ val[2 * i + j] = hexdigit (ptr[i] >> 4); ++ val[2 * i + 1 + j] = hexdigit (ptr[i] & 0xf); ++ ++ if ((i == 3) || (i == 5) || (i == 7) || (i == 9)) ++ { ++ j++; ++ val[2 * i + 1+ j] = '-'; ++ } ++ } ++ ++ set_env_limn_ro (name, "clientuuid", (char *) val, 2 * taglength + 4); ++ } ++ break; ++ + /* If you need any other options please contact GRUB + development team. */ + } +@@ -288,14 +367,6 @@ grub_net_process_dhcp (struct grub_net_buff *nb, + } + } + +-static char +-hexdigit (grub_uint8_t val) +-{ +- if (val < 10) +- return val + '0'; +- return val + 'a' - 10; +-} +- + static grub_err_t + grub_cmd_dhcpopt (struct grub_command *cmd __attribute__ ((unused)), + int argc, char **args) +diff --git a/include/grub/net.h b/include/grub/net.h +index a799e6b..59e5975 100644 +--- a/include/grub/net.h ++++ b/include/grub/net.h +@@ -433,6 +433,8 @@ enum + GRUB_NET_BOOTP_DOMAIN = 0x0f, + GRUB_NET_BOOTP_ROOT_PATH = 0x11, + GRUB_NET_BOOTP_EXTENSIONS_PATH = 0x12, ++ GRUB_NET_BOOTP_CLIENT_ID = 0x3d, ++ GRUB_NET_BOOTP_CLIENT_UUID = 0x61, + GRUB_NET_BOOTP_END = 0xff + }; + +-- +1.9.0 + diff --git a/0100-Search-for-specific-config-file-for-netboot.patch b/0100-Search-for-specific-config-file-for-netboot.patch new file mode 100644 index 0000000..2c466fe --- /dev/null +++ b/0100-Search-for-specific-config-file-for-netboot.patch @@ -0,0 +1,203 @@ +From bf19a1e123fd09552165bd0d2b19ccf438c0a46c Mon Sep 17 00:00:00 2001 +From: Paulo Flabiano Smorigo +Date: Tue, 27 Nov 2012 17:22:07 -0200 +Subject: [PATCH 100/125] Search for specific config file for netboot + +This patch implements a search for a specific configuration when the config +file is on a remoteserver. It uses the following order: + 1) DHCP client UUID option. + 2) MAC address (in lower case hexadecimal with dash separators); + 3) IP (in upper case hexadecimal) or IPv6; + 4) The original grub.cfg file. + +This procedure is similar to what is used by pxelinux and yaboot: +http://www.syslinux.org/wiki/index.php/PXELINUX#config + +This should close the bugzilla: +https://bugzilla.redhat.com/show_bug.cgi?id=873406 +--- + grub-core/net/net.c | 118 ++++++++++++++++++++++++++++++++++++++++++++++++ + grub-core/normal/main.c | 18 ++++++-- + include/grub/net.h | 3 ++ + 3 files changed, 135 insertions(+), 4 deletions(-) + +diff --git a/grub-core/net/net.c b/grub-core/net/net.c +index f2e723b..578e057 100644 +--- a/grub-core/net/net.c ++++ b/grub-core/net/net.c +@@ -1702,6 +1702,124 @@ grub_net_restore_hw (void) + return GRUB_ERR_NONE; + } + ++grub_err_t ++grub_net_search_configfile (char *config) ++{ ++ grub_size_t config_len; ++ char *suffix; ++ ++ auto int search_through (grub_size_t num_tries, grub_size_t slice_size); ++ int search_through (grub_size_t num_tries, grub_size_t slice_size) ++ { ++ while (num_tries-- > 0) ++ { ++ grub_dprintf ("net", "probe %s\n", config); ++ ++ grub_file_t file; ++ file = grub_file_open (config); ++ ++ if (file) ++ { ++ grub_file_close (file); ++ grub_dprintf ("net", "found!\n"); ++ return 0; ++ } ++ else ++ { ++ if (grub_errno == GRUB_ERR_IO) ++ grub_errno = GRUB_ERR_NONE; ++ } ++ ++ if (grub_strlen (suffix) < slice_size) ++ break; ++ ++ config[grub_strlen (config) - slice_size] = '\0'; ++ } ++ ++ return 1; ++ } ++ ++ config_len = grub_strlen (config); ++ config[config_len] = '-'; ++ suffix = config + config_len + 1; ++ ++ struct grub_net_network_level_interface *inf; ++ FOR_NET_NETWORK_LEVEL_INTERFACES (inf) ++ { ++ /* By the Client UUID. */ ++ ++ char client_uuid_var[sizeof ("net_") + grub_strlen (inf->name) + ++ sizeof ("_clientuuid") + 1]; ++ grub_snprintf (client_uuid_var, sizeof (client_uuid_var), ++ "net_%s_clientuuid", inf->name); ++ ++ const char *client_uuid; ++ client_uuid = grub_env_get (client_uuid_var); ++ ++ if (client_uuid) ++ { ++ grub_strcpy (suffix, client_uuid); ++ if (search_through (1, 0) == 0) return GRUB_ERR_NONE; ++ } ++ ++ /* By the MAC address. */ ++ ++ /* Add ethernet type */ ++ grub_strcpy (suffix, "01-"); ++ ++ grub_net_hwaddr_to_str (&inf->hwaddress, suffix + 3); ++ ++ char *ptr; ++ for (ptr = suffix; *ptr; ptr++) ++ if (*ptr == ':') ++ *ptr = '-'; ++ ++ if (search_through (1, 0) == 0) return GRUB_ERR_NONE; ++ ++ /* By IP address */ ++ ++ switch ((&inf->address)->type) ++ { ++ case GRUB_NET_NETWORK_LEVEL_PROTOCOL_IPV4: ++ { ++ grub_uint32_t n = grub_be_to_cpu32 ((&inf->address)->ipv4); ++ grub_snprintf (suffix, GRUB_NET_MAX_STR_ADDR_LEN, "%02X%02X%02X%02X", \ ++ ((n >> 24) & 0xff), ((n >> 16) & 0xff), \ ++ ((n >> 8) & 0xff), ((n >> 0) & 0xff)); ++ ++ if (search_through (8, 1) == 0) return GRUB_ERR_NONE; ++ break; ++ } ++ case GRUB_NET_NETWORK_LEVEL_PROTOCOL_IPV6: ++ { ++ char buf[GRUB_NET_MAX_STR_ADDR_LEN]; ++ struct grub_net_network_level_address base; ++ base.type = GRUB_NET_NETWORK_LEVEL_PROTOCOL_IPV6; ++ grub_memcpy (&base.ipv6, ((&inf->address)->ipv6), 16); ++ grub_net_addr_to_str (&base, buf); ++ ++ for (ptr = buf; *ptr; ptr++) ++ if (*ptr == ':') ++ *ptr = '-'; ++ ++ grub_snprintf (suffix, GRUB_NET_MAX_STR_ADDR_LEN, "%s", buf); ++ if (search_through (1, 0) == 0) return GRUB_ERR_NONE; ++ break; ++ } ++ case GRUB_NET_NETWORK_LEVEL_PROTOCOL_DHCP_RECV: ++ return grub_error (GRUB_ERR_BUG, "shouldn't reach here"); ++ default: ++ return grub_error (GRUB_ERR_BUG, ++ "unsupported address type %d", (&inf->address)->type); ++ } ++ } ++ ++ /* Remove the remaining minus sign at the end. */ ++ config[config_len] = '\0'; ++ ++ return GRUB_ERR_NONE; ++} ++ + static struct grub_preboot *fini_hnd; + + static grub_command_t cmd_addaddr, cmd_deladdr, cmd_addroute, cmd_delroute; +diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c +index f72844c..85d2a28 100644 +--- a/grub-core/normal/main.c ++++ b/grub-core/normal/main.c +@@ -33,6 +33,7 @@ + #include + #include + #include ++#include + #ifdef GRUB_MACHINE_IEEE1275 + #include + #endif +@@ -365,10 +366,19 @@ grub_cmd_normal (struct grub_command *cmd __attribute__ ((unused)), + + prefix = grub_env_get ("prefix"); + if (prefix) +- { +- config = grub_xasprintf ("%s/grub.cfg", prefix); +- if (! config) +- goto quit; ++ { ++ grub_size_t config_len; ++ config_len = grub_strlen (prefix) + ++ sizeof ("/grub.cfg-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"); ++ config = grub_malloc (config_len); ++ ++ if (! config) ++ goto quit; ++ ++ grub_snprintf (config, config_len, "%s/grub.cfg", prefix); ++ ++ if (grub_strncmp (prefix + 1, "tftp", sizeof ("tftp") - 1) == 0) ++ grub_net_search_configfile (config); + + grub_enter_normal_mode (config); + grub_free (config); +diff --git a/include/grub/net.h b/include/grub/net.h +index 59e5975..88fc71c 100644 +--- a/include/grub/net.h ++++ b/include/grub/net.h +@@ -542,4 +542,7 @@ extern char *grub_net_default_server; + + #define VLANTAG_IDENTIFIER 0x8100 + ++grub_err_t ++grub_net_search_configfile (char *config); ++ + #endif /* ! GRUB_NET_HEADER */ +-- +1.9.0 + diff --git a/0100-arm64-set-correct-length-of-device-path-end-entry.patch b/0100-arm64-set-correct-length-of-device-path-end-entry.patch deleted file mode 100644 index f6474e9..0000000 --- a/0100-arm64-set-correct-length-of-device-path-end-entry.patch +++ /dev/null @@ -1,30 +0,0 @@ -From f581af0a9cac0c25468c9c0c43c103ca38b547a9 Mon Sep 17 00:00:00 2001 -From: Leif Lindholm -Date: Tue, 7 Jan 2014 17:52:50 +0000 -Subject: [PATCH 100/103] arm64: set correct length of device path end entry - -The length of the Device Path End entry in the grub_linux_boot() -function was incorrectly set to 0. This triggers an assert failure -in debug builds of Tianocore. - -Set it to sizeof (grub_efi_device_path_t). ---- - ChangeLog | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/ChangeLog b/ChangeLog -index 1b17e1b..5d2bef7 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -339,6 +339,8 @@ - * grub-core/osdep/windows/platform.c (get_platform): Fix EFI - detection. - -+======= -+>>>>>>> arm64: set correct length of device path end entry - 2013-12-24 Vladimir Serbinenko - - * configure.ac: Set version to 2.02~beta2. --- -1.9.0 - diff --git a/0101-Make-10_linux-work-with-our-changes-for-linux16-and-.patch b/0101-Make-10_linux-work-with-our-changes-for-linux16-and-.patch deleted file mode 100644 index eabf5eb..0000000 --- a/0101-Make-10_linux-work-with-our-changes-for-linux16-and-.patch +++ /dev/null @@ -1,85 +0,0 @@ -From ffc319b20f2eafb1146aae42b4e88c408c59a32f Mon Sep 17 00:00:00 2001 -From: Peter Jones -Date: Tue, 14 Jan 2014 13:12:23 -0500 -Subject: [PATCH 101/103] Make 10_linux work with our changes for linux16 and - linuxefi on aarch64 - -Signed-off-by: Peter Jones ---- - util/grub.d/10_linux.in | 31 ++++++++++++++++++++++++++++--- - 1 file changed, 28 insertions(+), 3 deletions(-) - -diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in -index c943a1e..2b8c561 100644 ---- a/util/grub.d/10_linux.in -+++ b/util/grub.d/10_linux.in -@@ -75,8 +75,18 @@ linux_entry () - args="$4" - - sixteenbit="" -+ linuxefi="linux" -+ initrdefi="initrd" - case "$machine" in -- i?86|x86_64) sixteenbit="16" ;; -+ i?86|x86_64) -+ sixteenbit="16" -+ linuxefi="linuxefi" -+ initrdefi="initrdefi" -+ ;; -+ aarch64) -+ linuxefi="linux" -+ initrdefi="initrd" -+ ;; - esac - - if [ -z "$boot_device_id" ]; then -@@ -133,7 +143,7 @@ linux_entry () - fi - if [ -d /sys/firmware/efi ]; then - sed "s/^/$submenu_indentation/" << EOF -- linuxefi ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args} -+ ${linuxefi} ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args} - EOF - else - sed "s/^/$submenu_indentation/" << EOF -@@ -143,7 +153,7 @@ EOF - if test -n "${initrd}" ; then - if [ -d /sys/firmware/efi ]; then - sed "s/^/$submenu_indentation/" << EOF -- initrdefi ${rel_dirname}/${initrd} -+ ${initrdefi} ${rel_dirname}/${initrd} - EOF - else - sed "s/^/$submenu_indentation/" << EOF -@@ -151,6 +161,13 @@ EOF - EOF - fi - fi -+ if test -n "${fdt}" ; then -+ message="$(gettext_printf "Loading fdt ...")" -+ sed "s/^/$submenu_indentation/" << EOF -+ echo '$(echo "$message" | grub_quote)' -+ devicetree ${rel_dirname}/${fdt} -+EOF -+ fi - sed "s/^/$submenu_indentation/" << EOF - } - EOF -@@ -211,6 +228,14 @@ while [ "x$list" != "x" ] ; do - fi - done - -+ fdt= -+ for i in "dtb-${version}" "dtb-${alt_version}"; do -+ if test -e "${dirname}/${i}/foundation-v8.dtb" ; then -+ fdt="${i}/foundation-v8.dtb" -+ break -+ fi -+ done -+ - config= - for i in "${dirname}/config-${version}" "${dirname}/config-${alt_version}" "/etc/kernels/kernel-config-${version}" ; do - if test -e "${i}" ; then --- -1.9.0 - diff --git a/0101-blscfg-add-blscfg-module-to-parse-Boot-Loader-Specif.patch b/0101-blscfg-add-blscfg-module-to-parse-Boot-Loader-Specif.patch new file mode 100644 index 0000000..ac9ceea --- /dev/null +++ b/0101-blscfg-add-blscfg-module-to-parse-Boot-Loader-Specif.patch @@ -0,0 +1,251 @@ +From ddfb160353df14e9f88affe7498512a553146872 Mon Sep 17 00:00:00 2001 +From: Fedora Ninjas +Date: Tue, 22 Jan 2013 06:31:38 +0100 +Subject: [PATCH 101/125] blscfg: add blscfg module to parse Boot Loader + Specification snippets + +http://www.freedesktop.org/wiki/Specifications/BootLoaderSpec + +Works like this: + + insmod blscfg + bls_import + +Done! You should now have menu items for your snippets in place. + +Signed-off-by: Peter Jones +--- + grub-core/Makefile.core.def | 8 ++ + grub-core/commands/blscfg.c | 201 ++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 209 insertions(+) + create mode 100644 grub-core/commands/blscfg.c + +diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def +index ec46506..7bf1c8a 100644 +--- a/grub-core/Makefile.core.def ++++ b/grub-core/Makefile.core.def +@@ -747,6 +747,14 @@ module = { + }; + + module = { ++ name = blscfg; ++ common = commands/blscfg.c; ++ enable = i386_efi; ++ enable = x86_64_efi; ++ enable = i386_pc; ++}; ++ ++module = { + name = boot; + common = commands/boot.c; + i386_pc = lib/i386/pc/biosnum.c; +diff --git a/grub-core/commands/blscfg.c b/grub-core/commands/blscfg.c +new file mode 100644 +index 0000000..4274aca +--- /dev/null ++++ b/grub-core/commands/blscfg.c +@@ -0,0 +1,201 @@ ++/*-*- Mode: C; c-basic-offset: 2; indent-tabs-mode: t -*-*/ ++ ++/* bls.c - implementation of the boot loader spec */ ++ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * ++ * 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 . ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++GRUB_MOD_LICENSE ("GPLv3+"); ++ ++#ifdef GRUB_MACHINE_EFI ++#define GRUB_LINUX_CMD "linuxefi" ++#define GRUB_INITRD_CMD "initrdefi" ++#define GRUB_BLS_CONFIG_PATH "/EFI/fedora/loader/entries/" ++#define GRUB_BOOT_DEVICE "($boot)" ++#else ++#define GRUB_LINUX_CMD "linux" ++#define GRUB_INITRD_CMD "initrd" ++#define GRUB_BLS_CONFIG_PATH "/loader/entries/" ++#define GRUB_BOOT_DEVICE "($root)" ++#endif ++ ++static int parse_entry ( ++ const char *filename, ++ const struct grub_dirhook_info *info __attribute__ ((unused)), ++ void *data __attribute__ ((unused))) ++{ ++ grub_size_t n; ++ char *p; ++ grub_file_t f = NULL; ++ grub_off_t sz; ++ char *title = NULL, *options = NULL, *clinux = NULL, *initrd = NULL, *src = NULL; ++ const char *args[2] = { NULL, NULL }; ++ ++ if (filename[0] == '.') ++ return 0; ++ ++ n = grub_strlen (filename); ++ if (n <= 5) ++ return 0; ++ ++ if (grub_strcmp (filename + n - 5, ".conf") != 0) ++ return 0; ++ ++ p = grub_xasprintf (GRUB_BLS_CONFIG_PATH "%s", filename); ++ ++ f = grub_file_open (p); ++ if (!f) ++ goto finish; ++ ++ sz = grub_file_size (f); ++ if (sz == GRUB_FILE_SIZE_UNKNOWN || sz > 1024*1024) ++ goto finish; ++ ++ for (;;) ++ { ++ char *buf; ++ ++ buf = grub_file_getline (f); ++ if (!buf) ++ break; ++ ++ if (grub_strncmp (buf, "title ", 6) == 0) ++ { ++ grub_free (title); ++ title = grub_strdup (buf + 6); ++ if (!title) ++ goto finish; ++ } ++ else if (grub_strncmp (buf, "options ", 8) == 0) ++ { ++ grub_free (options); ++ options = grub_strdup (buf + 8); ++ if (!options) ++ goto finish; ++ } ++ else if (grub_strncmp (buf, "linux ", 6) == 0) ++ { ++ grub_free (clinux); ++ clinux = grub_strdup (buf + 6); ++ if (!clinux) ++ goto finish; ++ } ++ else if (grub_strncmp (buf, "initrd ", 7) == 0) ++ { ++ grub_free (initrd); ++ initrd = grub_strdup (buf + 7); ++ if (!initrd) ++ goto finish; ++ } ++ ++ grub_free(buf); ++ } ++ ++ if (!linux) ++ { ++ grub_printf ("Skipping file %s with no 'linux' key.", p); ++ goto finish; ++ } ++ ++ args[0] = title ? title : filename; ++ ++ src = grub_xasprintf ("load_video\n" ++ "set gfx_payload=keep\n" ++ "insmod gzio\n" ++ GRUB_LINUX_CMD " %s%s%s%s\n" ++ "%s%s%s%s", ++ GRUB_BOOT_DEVICE, clinux, options ? " " : "", options ? options : "", ++ initrd ? GRUB_INITRD_CMD " " : "", initrd ? GRUB_BOOT_DEVICE : "", initrd ? initrd : "", initrd ? "\n" : ""); ++ ++ grub_normal_add_menu_entry (1, args, NULL, NULL, "bls", NULL, NULL, src, 0); ++ ++finish: ++ grub_free (p); ++ grub_free (title); ++ grub_free (options); ++ grub_free (clinux); ++ grub_free (initrd); ++ grub_free (src); ++ ++ if (f) ++ grub_file_close (f); ++ ++ return 0; ++} ++ ++static grub_err_t ++grub_cmd_bls_import (grub_extcmd_context_t ctxt __attribute__ ((unused)), ++ int argc __attribute__ ((unused)), ++ char **args __attribute__ ((unused))) ++{ ++ grub_fs_t fs; ++ grub_device_t dev; ++ static grub_err_t r; ++ const char *devid; ++ ++ devid = grub_env_get ("root"); ++ if (!devid) ++ return grub_error (GRUB_ERR_FILE_NOT_FOUND, N_("variable `%s' isn't set"), "root"); ++ ++ dev = grub_device_open (devid); ++ if (!dev) ++ return grub_errno; ++ ++ fs = grub_fs_probe (dev); ++ if (!fs) ++ { ++ r = grub_errno; ++ goto finish; ++ } ++ ++ r = fs->dir (dev, GRUB_BLS_CONFIG_PATH, parse_entry, NULL); ++ ++finish: ++ if (dev) ++ grub_device_close (dev); ++ ++ return r; ++} ++ ++static grub_extcmd_t cmd; ++ ++GRUB_MOD_INIT(bls) ++{ ++ cmd = grub_register_extcmd ("bls_import", ++ grub_cmd_bls_import, ++ 0, ++ NULL, ++ N_("Import Boot Loader Specification snippets."), ++ NULL); ++} ++ ++GRUB_MOD_FINI(bls) ++{ ++ grub_unregister_extcmd (cmd); ++} +-- +1.9.0 + diff --git a/0102-Don-t-print-during-fdt-loading-method.patch b/0102-Don-t-print-during-fdt-loading-method.patch deleted file mode 100644 index 41ecb60..0000000 --- a/0102-Don-t-print-during-fdt-loading-method.patch +++ /dev/null @@ -1,27 +0,0 @@ -From d1d443a3ea5f6ba9eef4dd40e1435d567ffe8526 Mon Sep 17 00:00:00 2001 -From: Peter Jones -Date: Tue, 14 Jan 2014 16:15:46 -0500 -Subject: [PATCH 102/103] Don't print during fdt loading method. - -Signed-off-by: Peter Jones ---- - util/grub.d/10_linux.in | 2 -- - 1 file changed, 2 deletions(-) - -diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in -index 2b8c561..acf2e0e 100644 ---- a/util/grub.d/10_linux.in -+++ b/util/grub.d/10_linux.in -@@ -162,9 +162,7 @@ EOF - fi - fi - if test -n "${fdt}" ; then -- message="$(gettext_printf "Loading fdt ...")" - sed "s/^/$submenu_indentation/" << EOF -- echo '$(echo "$message" | grub_quote)' - devicetree ${rel_dirname}/${fdt} - EOF - fi --- -1.9.0 - diff --git a/0102-Move-bash-completion-script-922997.patch b/0102-Move-bash-completion-script-922997.patch new file mode 100644 index 0000000..ce872c1 --- /dev/null +++ b/0102-Move-bash-completion-script-922997.patch @@ -0,0 +1,26 @@ +From f60046d87e55646d36c21520c5f6391c184ec8ad Mon Sep 17 00:00:00 2001 +From: Peter Jones +Date: Wed, 3 Apr 2013 14:35:34 -0400 +Subject: [PATCH 102/125] Move bash completion script (#922997) + +Apparently these go in a new place now. +--- + util/bash-completion.d/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/util/bash-completion.d/Makefile.am b/util/bash-completion.d/Makefile.am +index 136287c..0bcdb06 100644 +--- a/util/bash-completion.d/Makefile.am ++++ b/util/bash-completion.d/Makefile.am +@@ -6,7 +6,7 @@ EXTRA_DIST = $(bash_completion_source) + + CLEANFILES = $(bash_completion_script) config.log + +-bashcompletiondir = $(sysconfdir)/bash_completion.d ++bashcompletiondir = $(datarootdir)/bash-completion/completions + bashcompletion_DATA = $(bash_completion_script) + + $(bash_completion_script): $(bash_completion_source) $(top_builddir)/config.status +-- +1.9.0 + diff --git a/0103-Honor-a-symlink-when-generating-configuration-by-gru.patch b/0103-Honor-a-symlink-when-generating-configuration-by-gru.patch deleted file mode 100644 index 869c7a8..0000000 --- a/0103-Honor-a-symlink-when-generating-configuration-by-gru.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 3da70b20f42c2c678d54cc0f56a6d3df6432d79e Mon Sep 17 00:00:00 2001 -From: Marcel Kolaja -Date: Tue, 21 Jan 2014 10:57:08 -0500 -Subject: [PATCH 103/103] Honor a symlink when generating configuration by - grub2-mkconfig - -Honor a symlink when generating configuration by grub2-mkconfig, so that -the -o option follows it rather than overwriting it with a regular file. ---- - util/grub-mkconfig.in | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in -index ca040dd..b00f9e6 100644 ---- a/util/grub-mkconfig.in -+++ b/util/grub-mkconfig.in -@@ -272,7 +272,8 @@ and /etc/grub.d/* files or please file a bug report with - echo >&2 - else - # none of the children aborted with error, install the new grub.cfg -- mv -f ${grub_cfg}.new ${grub_cfg} -+ cat ${grub_cfg}.new > ${grub_cfg} -+ rm -f ${grub_cfg}.new - fi - fi - --- -1.9.0 - diff --git a/0103-for-ppc-reset-console-display-attr-when-clear-screen.patch b/0103-for-ppc-reset-console-display-attr-when-clear-screen.patch new file mode 100644 index 0000000..bef0ba5 --- /dev/null +++ b/0103-for-ppc-reset-console-display-attr-when-clear-screen.patch @@ -0,0 +1,27 @@ +From e52a5b66e765740deea4dbd201ab802c408184b9 Mon Sep 17 00:00:00 2001 +From: Paulo Flabiano Smorigo +Date: Wed, 24 Apr 2013 10:51:48 -0300 +Subject: [PATCH 103/125] for ppc, reset console display attr when clear screen + +This should fix this bugzilla: +https://bugzilla.redhat.com/show_bug.cgi?id=908519 +--- + grub-core/term/terminfo.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/grub-core/term/terminfo.c b/grub-core/term/terminfo.c +index f0d3e3d..7cb7909 100644 +--- a/grub-core/term/terminfo.c ++++ b/grub-core/term/terminfo.c +@@ -151,7 +151,7 @@ grub_terminfo_set_current (struct grub_term_output *term, + /* Clear the screen. Using serial console, screen(1) only recognizes the + * ANSI escape sequence. Using video console, Apple Open Firmware + * (version 3.1.1) only recognizes the literal ^L. So use both. */ +- data->cls = grub_strdup (" \e[2J"); ++ data->cls = grub_strdup (" \e[2J\e[m"); + data->reverse_video_on = grub_strdup ("\e[7m"); + data->reverse_video_off = grub_strdup ("\e[m"); + if (grub_strcmp ("ieee1275", str) == 0) +-- +1.9.0 + diff --git a/0104-Don-t-write-messages-to-the-screen.patch b/0104-Don-t-write-messages-to-the-screen.patch new file mode 100644 index 0000000..9f4f086 --- /dev/null +++ b/0104-Don-t-write-messages-to-the-screen.patch @@ -0,0 +1,158 @@ +From 0ee337319fc8c21da04bca1cabb51b3445dba3fd Mon Sep 17 00:00:00 2001 +From: William Jon McCann +Date: Wed, 15 May 2013 13:30:20 -0400 +Subject: [PATCH 104/125] Don't write messages to the screen + +Writing messages to the screen before the menus or boot splash +happens so quickly it looks like something is wrong and isn't +very appealing. +--- + grub-core/boot/i386/pc/boot.S | 3 --- + grub-core/boot/i386/pc/diskboot.S | 5 ----- + grub-core/gettext/gettext.c | 15 --------------- + grub-core/kern/main.c | 5 ----- + util/grub.d/10_linux.in | 7 ------- + 5 files changed, 35 deletions(-) + +diff --git a/grub-core/boot/i386/pc/boot.S b/grub-core/boot/i386/pc/boot.S +index b4975e2..432a472 100644 +--- a/grub-core/boot/i386/pc/boot.S ++++ b/grub-core/boot/i386/pc/boot.S +@@ -249,9 +249,6 @@ real_start: + /* save drive reference first thing! */ + pushw %dx + +- /* print a notification message on the screen */ +- MSG(notification_string) +- + /* set %si to the disk address packet */ + movw $disk_address_packet, %si + +diff --git a/grub-core/boot/i386/pc/diskboot.S b/grub-core/boot/i386/pc/diskboot.S +index d030a14..a494d02 100644 +--- a/grub-core/boot/i386/pc/diskboot.S ++++ b/grub-core/boot/i386/pc/diskboot.S +@@ -50,11 +50,6 @@ _start: + /* save drive reference first thing! */ + pushw %dx + +- /* print a notification message on the screen */ +- pushw %si +- MSG(notification_string) +- popw %si +- + /* this sets up for the first run through "bootloop" */ + movw $LOCAL(firstlist), %di + +diff --git a/grub-core/gettext/gettext.c b/grub-core/gettext/gettext.c +index 4880cef..1e5c21d 100644 +--- a/grub-core/gettext/gettext.c ++++ b/grub-core/gettext/gettext.c +@@ -437,13 +437,9 @@ grub_gettext_env_write_lang (struct grub_env_var *var + grub_err_t err; + err = grub_gettext_init_ext (&main_context, val, grub_env_get ("locale_dir"), + grub_env_get ("prefix")); +- if (err) +- grub_print_error (); + + err = grub_gettext_init_ext (&secondary_context, val, + grub_env_get ("secondary_locale_dir"), 0); +- if (err) +- grub_print_error (); + + return grub_strdup (val); + } +@@ -455,8 +451,6 @@ grub_gettext_reread_prefix (const char *val) + err = grub_gettext_init_ext (&main_context, grub_env_get ("lang"), + grub_env_get ("locale_dir"), + val); +- if (err) +- grub_print_error (); + } + + static char * +@@ -466,8 +460,6 @@ read_main (struct grub_env_var *var + grub_err_t err; + err = grub_gettext_init_ext (&main_context, grub_env_get ("lang"), val, + grub_env_get ("prefix")); +- if (err) +- grub_print_error (); + return grub_strdup (val); + } + +@@ -478,9 +470,6 @@ read_secondary (struct grub_env_var *var + grub_err_t err; + err = grub_gettext_init_ext (&secondary_context, grub_env_get ("lang"), val, + 0); +- if (err) +- grub_print_error (); +- + return grub_strdup (val); + } + +@@ -506,12 +495,8 @@ GRUB_MOD_INIT (gettext) + + err = grub_gettext_init_ext (&main_context, lang, grub_env_get ("locale_dir"), + grub_env_get ("prefix")); +- if (err) +- grub_print_error (); + err = grub_gettext_init_ext (&secondary_context, lang, + grub_env_get ("secondary_locale_dir"), 0); +- if (err) +- grub_print_error (); + + grub_register_variable_hook ("locale_dir", NULL, read_main); + grub_register_variable_hook ("secondary_locale_dir", NULL, read_secondary); +diff --git a/grub-core/kern/main.c b/grub-core/kern/main.c +index 8ab7794..da47b18 100644 +--- a/grub-core/kern/main.c ++++ b/grub-core/kern/main.c +@@ -268,11 +268,6 @@ grub_main (void) + + grub_boot_time ("After machine init."); + +- /* Hello. */ +- grub_setcolorstate (GRUB_TERM_COLOR_HIGHLIGHT); +- grub_printf ("Welcome to GRUB!\n\n"); +- grub_setcolorstate (GRUB_TERM_COLOR_STANDARD); +- + grub_load_config (); + + grub_boot_time ("Before loading embedded modules."); +diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in +index ad34cc0..e762e1f 100644 +--- a/util/grub.d/10_linux.in ++++ b/util/grub.d/10_linux.in +@@ -126,29 +126,22 @@ linux_entry () + fi + printf '%s\n' "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/" + fi +- message="$(gettext_printf "Loading Linux %s ..." ${version})" + if [ -d /sys/firmware/efi ]; then + sed "s/^/$submenu_indentation/" << EOF +- echo '$(echo "$message" | grub_quote)' + linuxefi ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args} + EOF + else + sed "s/^/$submenu_indentation/" << EOF +- echo '$(echo "$message" | grub_quote)' + linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args} + EOF + fi + if test -n "${initrd}" ; then +- # TRANSLATORS: ramdisk isn't identifier. Should be translated. +- message="$(gettext_printf "Loading initial ramdisk ...")" + if [ -d /sys/firmware/efi ]; then + sed "s/^/$submenu_indentation/" << EOF +- echo '$(echo "$message" | grub_quote)' + initrdefi ${rel_dirname}/${initrd} + EOF + else + sed "s/^/$submenu_indentation/" << EOF +- echo '$message' + initrd ${rel_dirname}/${initrd} + EOF + fi +-- +1.9.0 + diff --git a/0105-Don-t-print-GNU-GRUB-header.patch b/0105-Don-t-print-GNU-GRUB-header.patch new file mode 100644 index 0000000..2dcb13a --- /dev/null +++ b/0105-Don-t-print-GNU-GRUB-header.patch @@ -0,0 +1,33 @@ +From e3cabcd95237fadbad8e6a0e36222d97d16b5365 Mon Sep 17 00:00:00 2001 +From: William Jon McCann +Date: Wed, 15 May 2013 13:53:48 -0400 +Subject: [PATCH 105/125] Don't print GNU GRUB header + +No one cares. +--- + grub-core/normal/main.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c +index 85d2a28..3777cd2 100644 +--- a/grub-core/normal/main.c ++++ b/grub-core/normal/main.c +@@ -212,6 +212,7 @@ grub_normal_init_page (struct grub_term_output *term, + + grub_term_cls (term); + ++#if 0 + msg_formatted = grub_xasprintf (_("GNU GRUB version %s"), PACKAGE_VERSION); + if (!msg_formatted) + return; +@@ -235,6 +236,7 @@ grub_normal_init_page (struct grub_term_output *term, + grub_putcode ('\n', term); + grub_putcode ('\n', term); + grub_free (unicode_msg); ++#endif + } + + static void +-- +1.9.0 + diff --git a/0106-Don-t-add-to-highlighted-row.patch b/0106-Don-t-add-to-highlighted-row.patch new file mode 100644 index 0000000..c2b3c81 --- /dev/null +++ b/0106-Don-t-add-to-highlighted-row.patch @@ -0,0 +1,26 @@ +From c89f05d148a1a1416513d22f62d23504b35dd230 Mon Sep 17 00:00:00 2001 +From: William Jon McCann +Date: Wed, 15 May 2013 17:49:45 -0400 +Subject: [PATCH 106/125] Don't add '*' to highlighted row + +It is already highlighted. +--- + grub-core/normal/menu_text.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/grub-core/normal/menu_text.c b/grub-core/normal/menu_text.c +index 2ff2941..2f84fcc 100644 +--- a/grub-core/normal/menu_text.c ++++ b/grub-core/normal/menu_text.c +@@ -242,7 +242,7 @@ print_entry (int y, int highlight, grub_menu_entry_t entry, + unicode_title[i] = ' '; + + if (data->geo.num_entries > 1) +- grub_putcode (highlight ? '*' : ' ', data->term); ++ grub_putcode (' ', data->term); + + grub_print_ucs4_menu (unicode_title, + unicode_title + len, +-- +1.9.0 + diff --git a/0107-Message-string-cleanups.patch b/0107-Message-string-cleanups.patch new file mode 100644 index 0000000..e1797d2 --- /dev/null +++ b/0107-Message-string-cleanups.patch @@ -0,0 +1,71 @@ +From 6c33a9b3a96a5e8c782a8eef97f5d95a3a542921 Mon Sep 17 00:00:00 2001 +From: William Jon McCann +Date: Fri, 7 Jun 2013 11:09:04 -0400 +Subject: [PATCH 107/125] Message string cleanups + +Make use of terminology consistent. Remove jargon. +--- + grub-core/normal/menu_text.c | 21 +++++++++------------ + 1 file changed, 9 insertions(+), 12 deletions(-) + +diff --git a/grub-core/normal/menu_text.c b/grub-core/normal/menu_text.c +index 2f84fcc..9d20c6b 100644 +--- a/grub-core/normal/menu_text.c ++++ b/grub-core/normal/menu_text.c +@@ -157,9 +157,8 @@ print_message (int nested, int edit, struct grub_term_output *term, int dry_run) + + if (edit) + { +- ret += grub_print_message_indented_real (_("Minimum Emacs-like screen editing is \ +-supported. TAB lists completions. Press Ctrl-x or F10 to boot, Ctrl-c or F2 for a \ +-command-line or ESC to discard edits and return to the GRUB menu."), ++ ret += grub_print_message_indented_real (_("Press Ctrl-x or F10 to start, Ctrl-c or F2 for a \ ++command prompt or Escape to discard edits and return to the menu. Pressing Tab lists possible completions."), + STANDARD_MARGIN, STANDARD_MARGIN, + term, dry_run); + } +@@ -167,8 +166,8 @@ command-line or ESC to discard edits and return to the GRUB menu."), + { + char *msg_translated; + +- msg_translated = grub_xasprintf (_("Use the %C and %C keys to select which " +- "entry is highlighted."), ++ msg_translated = grub_xasprintf (_("Use the %C and %C keys to change the " ++ "selection."), + GRUB_UNICODE_UPARROW, + GRUB_UNICODE_DOWNARROW); + if (!msg_translated) +@@ -181,17 +180,15 @@ command-line or ESC to discard edits and return to the GRUB menu."), + if (nested) + { + ret += grub_print_message_indented_real +- (_("Press enter to boot the selected OS, " +- "`e' to edit the commands before booting " +- "or `c' for a command-line. ESC to return previous menu."), ++ (_("Press 'e' to edit the selected item, " ++ "or 'c' for a command prompt. Press Escape to return to the previous menu."), + STANDARD_MARGIN, STANDARD_MARGIN, term, dry_run); + } + else + { + ret += grub_print_message_indented_real +- (_("Press enter to boot the selected OS, " +- "`e' to edit the commands before booting " +- "or `c' for a command-line."), ++ (_("Press 'e' to edit the selected item, " ++ "or 'c' for a command prompt."), + STANDARD_MARGIN, STANDARD_MARGIN, term, dry_run); + } + } +@@ -440,7 +437,7 @@ menu_text_print_timeout (int timeout, void *dataptr) + || data->timeout_msg == TIMEOUT_TERSE_NO_MARGIN) + msg_translated = grub_xasprintf (_("%ds"), timeout); + else +- msg_translated = grub_xasprintf (_("The highlighted entry will be executed automatically in %ds."), timeout); ++ msg_translated = grub_xasprintf (_("The selected entry will be started automatically in %ds."), timeout); + if (!msg_translated) + { + grub_print_error (); +-- +1.9.0 + diff --git a/0108-Fix-border-spacing-now-that-we-aren-t-displaying-it.patch b/0108-Fix-border-spacing-now-that-we-aren-t-displaying-it.patch new file mode 100644 index 0000000..dbb7a5f --- /dev/null +++ b/0108-Fix-border-spacing-now-that-we-aren-t-displaying-it.patch @@ -0,0 +1,32 @@ +From 6227514ebbfcf1744060eb4bf1b39b669221809d Mon Sep 17 00:00:00 2001 +From: William Jon McCann +Date: Fri, 7 Jun 2013 14:08:23 -0400 +Subject: [PATCH 108/125] Fix border spacing now that we aren't displaying it + +--- + grub-core/normal/menu_text.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/grub-core/normal/menu_text.c b/grub-core/normal/menu_text.c +index 9d20c6b..aa3454f 100644 +--- a/grub-core/normal/menu_text.c ++++ b/grub-core/normal/menu_text.c +@@ -331,12 +331,12 @@ grub_menu_init_page (int nested, int edit, + int empty_lines = 1; + int version_msg = 1; + +- geo->border = 1; +- geo->first_entry_x = 1 /* margin */ + 1 /* border */; ++ geo->border = 0; ++ geo->first_entry_x = 0 /* margin */ + 0 /* border */; + geo->entry_width = grub_term_width (term) - 5; + + geo->first_entry_y = 2 /* two empty lines*/ +- + 1 /* GNU GRUB version text */ + 1 /* top border */; ++ + 0 /* GNU GRUB version text */ + 1 /* top border */; + + geo->timeout_lines = 2; + +-- +1.9.0 + diff --git a/0109-Use-the-correct-indentation-for-the-term-help-text.patch b/0109-Use-the-correct-indentation-for-the-term-help-text.patch new file mode 100644 index 0000000..3641870 --- /dev/null +++ b/0109-Use-the-correct-indentation-for-the-term-help-text.patch @@ -0,0 +1,28 @@ +From 9cc9edb600ad1acc1598910ed95a8482ff3de6e2 Mon Sep 17 00:00:00 2001 +From: William Jon McCann +Date: Fri, 7 Jun 2013 14:08:49 -0400 +Subject: [PATCH 109/125] Use the correct indentation for the term help text + +That is consistent with the menu help text +--- + grub-core/normal/main.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c +index 3777cd2..0da2a52 100644 +--- a/grub-core/normal/main.c ++++ b/grub-core/normal/main.c +@@ -426,8 +426,8 @@ grub_normal_reader_init (int nested) + grub_normal_init_page (term, 1); + grub_term_setcursor (term, 1); + +- if (grub_term_width (term) > 3 + STANDARD_MARGIN + 20) +- grub_print_message_indented (msg_formatted, 3, STANDARD_MARGIN, term); ++ if (grub_term_width (term) > 2 * STANDARD_MARGIN + 20) ++ grub_print_message_indented (msg_formatted, STANDARD_MARGIN, STANDARD_MARGIN, term); + else + grub_print_message_indented (msg_formatted, 0, 0, term); + grub_putcode ('\n', term); +-- +1.9.0 + diff --git a/0110-Indent-menu-entries.patch b/0110-Indent-menu-entries.patch new file mode 100644 index 0000000..b0a8038 --- /dev/null +++ b/0110-Indent-menu-entries.patch @@ -0,0 +1,26 @@ +From e52c695e09447f6fbc51c23f1745d50c6db5c7b8 Mon Sep 17 00:00:00 2001 +From: William Jon McCann +Date: Fri, 7 Jun 2013 14:30:55 -0400 +Subject: [PATCH 110/125] Indent menu entries + +--- + grub-core/normal/menu_text.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/grub-core/normal/menu_text.c b/grub-core/normal/menu_text.c +index aa3454f..01b6f1c 100644 +--- a/grub-core/normal/menu_text.c ++++ b/grub-core/normal/menu_text.c +@@ -239,7 +239,8 @@ print_entry (int y, int highlight, grub_menu_entry_t entry, + unicode_title[i] = ' '; + + if (data->geo.num_entries > 1) +- grub_putcode (' ', data->term); ++ for (i = 0; i < STANDARD_MARGIN; i++) ++ grub_putcode (' ', data->term); + + grub_print_ucs4_menu (unicode_title, + unicode_title + len, +-- +1.9.0 + diff --git a/0111-Fix-margins.patch b/0111-Fix-margins.patch new file mode 100644 index 0000000..7aa4eb8 --- /dev/null +++ b/0111-Fix-margins.patch @@ -0,0 +1,37 @@ +From a623d490ea6a94cc7db68400d3fea5b0c25ccb9c Mon Sep 17 00:00:00 2001 +From: William Jon McCann +Date: Fri, 7 Jun 2013 14:59:36 -0400 +Subject: [PATCH 111/125] Fix margins + +--- + grub-core/normal/menu_text.c | 8 +++----- + 1 file changed, 3 insertions(+), 5 deletions(-) + +diff --git a/grub-core/normal/menu_text.c b/grub-core/normal/menu_text.c +index 01b6f1c..ead3391 100644 +--- a/grub-core/normal/menu_text.c ++++ b/grub-core/normal/menu_text.c +@@ -333,17 +333,15 @@ grub_menu_init_page (int nested, int edit, + int version_msg = 1; + + geo->border = 0; +- geo->first_entry_x = 0 /* margin */ + 0 /* border */; +- geo->entry_width = grub_term_width (term) - 5; ++ geo->first_entry_x = 0; /* no margin */ ++ geo->entry_width = grub_term_width (term) - 1; + +- geo->first_entry_y = 2 /* two empty lines*/ +- + 0 /* GNU GRUB version text */ + 1 /* top border */; ++ geo->first_entry_y = 3; /* three empty lines*/ + + geo->timeout_lines = 2; + + /* 3 lines for timeout message and bottom margin. 2 lines for the border. */ + geo->num_entries = grub_term_height (term) - geo->first_entry_y +- - 1 /* bottom border */ + - 1 /* empty line before info message*/ + - geo->timeout_lines /* timeout */ + - 1 /* empty final line */; +-- +1.9.0 + diff --git a/0112-Add-support-for-UEFI-operating-systems-returned-by-o.patch b/0112-Add-support-for-UEFI-operating-systems-returned-by-o.patch new file mode 100644 index 0000000..eae6afa --- /dev/null +++ b/0112-Add-support-for-UEFI-operating-systems-returned-by-o.patch @@ -0,0 +1,51 @@ +From 5980cac9e0320a3eb65e7fb73487a565d21361da Mon Sep 17 00:00:00 2001 +From: Matthew Garrett +Date: Wed, 12 Jun 2013 11:51:49 -0400 +Subject: [PATCH 112/125] Add support for UEFI operating systems returned by + os-prober + +os-prober returns UEFI operating systems in the form: + +path:long-name:name + +where path is the path under the EFI directory on the ESP. This is in +contrast to legacy OSes, where path is the device string. Handle this case. +--- + util/grub.d/30_os-prober.in | 22 ++++++++++++++++++---- + 1 file changed, 18 insertions(+), 4 deletions(-) + +diff --git a/util/grub.d/30_os-prober.in b/util/grub.d/30_os-prober.in +index 6f38c82..9f955ab 100644 +--- a/util/grub.d/30_os-prober.in ++++ b/util/grub.d/30_os-prober.in +@@ -322,9 +322,23 @@ EOF + EOF + ;; + *) +- echo -n " " +- # TRANSLATORS: %s is replaced by OS name. +- gettext_printf "%s is not yet supported by grub-mkconfig.\n" "${LONGNAME}" >&2 +- ;; ++ case ${DEVICE} in ++ *.efi) ++ cat << EOF ++menuentry '$(echo "${LONGNAME}" | grub_quote)' { ++EOF ++ save_default_entry | grub_add_tab ++ cat << EOF ++ chainloader /EFI/${DEVICE} ++ boot ++} ++EOF ++ ;; ++ *) ++ echo -n " " ++ # TRANSLATORS: %s is replaced by OS name. ++ gettext_printf "%s is not yet supported by grub-mkconfig.\n" "${LONGNAME}" >&2 ++ ;; ++ esac + esac + done +-- +1.9.0 + diff --git a/0113-Disable-GRUB-video-support-for-IBM-power-machines.patch b/0113-Disable-GRUB-video-support-for-IBM-power-machines.patch new file mode 100644 index 0000000..7230092 --- /dev/null +++ b/0113-Disable-GRUB-video-support-for-IBM-power-machines.patch @@ -0,0 +1,65 @@ +From 3fd909cbba26f1f76a64aa095937b00cd1785570 Mon Sep 17 00:00:00 2001 +From: Paulo Flabiano Smorigo +Date: Tue, 11 Jun 2013 15:14:05 -0300 +Subject: [PATCH 113/125] Disable GRUB video support for IBM power machines + +Should fix the problem in bugzilla: +https://bugzilla.redhat.com/show_bug.cgi?id=973205 +--- + grub-core/kern/ieee1275/cmain.c | 5 ++++- + grub-core/video/ieee1275.c | 9 ++++++--- + include/grub/ieee1275/ieee1275.h | 2 ++ + 3 files changed, 12 insertions(+), 4 deletions(-) + +diff --git a/grub-core/kern/ieee1275/cmain.c b/grub-core/kern/ieee1275/cmain.c +index 3e12e6b..3e14f53 100644 +--- a/grub-core/kern/ieee1275/cmain.c ++++ b/grub-core/kern/ieee1275/cmain.c +@@ -90,7 +90,10 @@ grub_ieee1275_find_options (void) + } + + if (rc >= 0 && grub_strncmp (tmp, "IBM", 3) == 0) +- grub_ieee1275_set_flag (GRUB_IEEE1275_FLAG_NO_TREE_SCANNING_FOR_DISKS); ++ { ++ grub_ieee1275_set_flag (GRUB_IEEE1275_FLAG_NO_TREE_SCANNING_FOR_DISKS); ++ grub_ieee1275_set_flag (GRUB_IEEE1275_FLAG_DISABLE_VIDEO_SUPPORT); ++ } + + /* Old Macs have no key repeat, newer ones have fully working one. + The ones inbetween when repeated key generates an escaoe sequence +diff --git a/grub-core/video/ieee1275.c b/grub-core/video/ieee1275.c +index 0b150ec..813ab38 100644 +--- a/grub-core/video/ieee1275.c ++++ b/grub-core/video/ieee1275.c +@@ -351,9 +351,12 @@ static struct grub_video_adapter grub_video_ieee1275_adapter = + + GRUB_MOD_INIT(ieee1275_fb) + { +- find_display (); +- if (display) +- grub_video_register (&grub_video_ieee1275_adapter); ++ if (! grub_ieee1275_test_flag (GRUB_IEEE1275_FLAG_DISABLE_VIDEO_SUPPORT)) ++ { ++ find_display (); ++ if (display) ++ grub_video_register (&grub_video_ieee1275_adapter); ++ } + } + + GRUB_MOD_FINI(ieee1275_fb) +diff --git a/include/grub/ieee1275/ieee1275.h b/include/grub/ieee1275/ieee1275.h +index 6a21f5d..663935d 100644 +--- a/include/grub/ieee1275/ieee1275.h ++++ b/include/grub/ieee1275/ieee1275.h +@@ -146,6 +146,8 @@ enum grub_ieee1275_flag + GRUB_IEEE1275_FLAG_BROKEN_REPEAT, + + GRUB_IEEE1275_FLAG_CURSORONOFF_ANSI_BROKEN, ++ ++ GRUB_IEEE1275_FLAG_DISABLE_VIDEO_SUPPORT + }; + + extern int EXPORT_FUNC(grub_ieee1275_test_flag) (enum grub_ieee1275_flag flag); +-- +1.9.0 + diff --git a/0114-Use-2-instead-of-1-for-our-right-hand-margin-so-line.patch b/0114-Use-2-instead-of-1-for-our-right-hand-margin-so-line.patch new file mode 100644 index 0000000..7ed1420 --- /dev/null +++ b/0114-Use-2-instead-of-1-for-our-right-hand-margin-so-line.patch @@ -0,0 +1,27 @@ +From 6550cd89b1dee8c9ad866cbf10bf72dc2ff8a8bc Mon Sep 17 00:00:00 2001 +From: Peter Jones +Date: Fri, 21 Jun 2013 14:44:08 -0400 +Subject: [PATCH 114/125] Use -2 instead of -1 for our right-hand margin, so + linewrapping works (#976643). + +Signed-off-by: Peter Jones +--- + grub-core/normal/menu_text.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/grub-core/normal/menu_text.c b/grub-core/normal/menu_text.c +index ead3391..bc1fc71 100644 +--- a/grub-core/normal/menu_text.c ++++ b/grub-core/normal/menu_text.c +@@ -334,7 +334,7 @@ grub_menu_init_page (int nested, int edit, + + geo->border = 0; + geo->first_entry_x = 0; /* no margin */ +- geo->entry_width = grub_term_width (term) - 1; ++ geo->entry_width = grub_term_width (term) - 2; + + geo->first_entry_y = 3; /* three empty lines*/ + +-- +1.9.0 + diff --git a/0115-Use-linux16-when-appropriate-880840.patch b/0115-Use-linux16-when-appropriate-880840.patch new file mode 100644 index 0000000..edc8da6 --- /dev/null +++ b/0115-Use-linux16-when-appropriate-880840.patch @@ -0,0 +1,52 @@ +From ba749818b7a53df63d887cb17497f82c78ca934c Mon Sep 17 00:00:00 2001 +From: Peter Jones +Date: Mon, 28 Oct 2013 10:05:07 -0400 +Subject: [PATCH 115/125] Use linux16 when appropriate (#880840) + +The kernel group really would prefer that we use the 16 bit entry point +on x86 bios machines. + +Resolves: rhbz#880840 + +Signed-off-by: Peter Jones +--- + util/grub.d/10_linux.in | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in +index e762e1f..600bfd2 100644 +--- a/util/grub.d/10_linux.in ++++ b/util/grub.d/10_linux.in +@@ -74,6 +74,11 @@ linux_entry () + type="$3" + args="$4" + ++ sixteenbit="" ++ case "$machine" in ++ i?86|x86_64) sixteenbit="16" ;; ++ esac ++ + if [ -z "$boot_device_id" ]; then + boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")" + fi +@@ -132,7 +137,7 @@ linux_entry () + EOF + else + sed "s/^/$submenu_indentation/" << EOF +- linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args} ++ linux${sixteenbit} ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args} + EOF + fi + if test -n "${initrd}" ; then +@@ -142,7 +147,7 @@ EOF + EOF + else + sed "s/^/$submenu_indentation/" << EOF +- initrd ${rel_dirname}/${initrd} ++ initrd${sixteenbit} ${rel_dirname}/${initrd} + EOF + fi + fi +-- +1.9.0 + diff --git a/0116-Enable-pager-by-default.-985860.patch b/0116-Enable-pager-by-default.-985860.patch new file mode 100644 index 0000000..23f9203 --- /dev/null +++ b/0116-Enable-pager-by-default.-985860.patch @@ -0,0 +1,26 @@ +From 26f2fbd4fb424ad097ea99578864ae526b79f732 Mon Sep 17 00:00:00 2001 +From: Peter Jones +Date: Mon, 28 Oct 2013 10:09:27 -0400 +Subject: [PATCH 116/125] Enable pager by default. (#985860) + +Signed-off-by: Peter Jones +--- + util/grub.d/00_header.in | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/util/grub.d/00_header.in b/util/grub.d/00_header.in +index ce2ec81..fefa7dd 100644 +--- a/util/grub.d/00_header.in ++++ b/util/grub.d/00_header.in +@@ -43,6 +43,8 @@ if [ "x${GRUB_DEFAULT_BUTTON}" = "xsaved" ] ; then GRUB_DEFAULT_BUTTON='${saved_ + if [ "x${GRUB_TIMEOUT_BUTTON}" = "x" ] ; then GRUB_TIMEOUT_BUTTON="$GRUB_TIMEOUT" ; fi + + cat << EOF ++set pager=1 ++ + if [ -s \$prefix/grubenv ]; then + load_env + fi +-- +1.9.0 + diff --git a/0117-F10-doesn-t-work-on-serial-so-don-t-tell-the-user-to.patch b/0117-F10-doesn-t-work-on-serial-so-don-t-tell-the-user-to.patch new file mode 100644 index 0000000..704a0ea --- /dev/null +++ b/0117-F10-doesn-t-work-on-serial-so-don-t-tell-the-user-to.patch @@ -0,0 +1,27 @@ +From 3e8fad7dba63db810a9626d472de5270b2d1bb75 Mon Sep 17 00:00:00 2001 +From: Peter Jones +Date: Mon, 28 Oct 2013 10:13:27 -0400 +Subject: [PATCH 117/125] F10 doesn't work on serial, so don't tell the user to + hit it (#987443) + +Signed-off-by: Peter Jones +--- + grub-core/normal/menu_text.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/grub-core/normal/menu_text.c b/grub-core/normal/menu_text.c +index bc1fc71..6202c2a 100644 +--- a/grub-core/normal/menu_text.c ++++ b/grub-core/normal/menu_text.c +@@ -157,7 +157,7 @@ print_message (int nested, int edit, struct grub_term_output *term, int dry_run) + + if (edit) + { +- ret += grub_print_message_indented_real (_("Press Ctrl-x or F10 to start, Ctrl-c or F2 for a \ ++ ret += grub_print_message_indented_real (_("Press Ctrl-x to start, Ctrl-c for a \ + command prompt or Escape to discard edits and return to the menu. Pressing Tab lists possible completions."), + STANDARD_MARGIN, STANDARD_MARGIN, + term, dry_run); +-- +1.9.0 + diff --git a/0118-Don-t-say-GNU-Linux-in-generated-menus.patch b/0118-Don-t-say-GNU-Linux-in-generated-menus.patch new file mode 100644 index 0000000..6916ba9 --- /dev/null +++ b/0118-Don-t-say-GNU-Linux-in-generated-menus.patch @@ -0,0 +1,45 @@ +From 03d405d9b503c435f3a975c5789a0bda9650a753 Mon Sep 17 00:00:00 2001 +From: Peter Jones +Date: Mon, 14 Mar 2011 14:27:42 -0400 +Subject: [PATCH 118/125] Don't say "GNU/Linux" in generated menus. + +--- + util/grub.d/10_linux.in | 4 ++-- + util/grub.d/20_linux_xen.in | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in +index 600bfd2..c943a1e 100644 +--- a/util/grub.d/10_linux.in ++++ b/util/grub.d/10_linux.in +@@ -29,9 +29,9 @@ export TEXTDOMAINDIR="@localedir@" + CLASS="--class gnu-linux --class gnu --class os" + + if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then +- OS=GNU/Linux ++ OS="$(sed 's, release .*$,,g' /etc/system-release)" + else +- OS="${GRUB_DISTRIBUTOR} GNU/Linux" ++ OS="${GRUB_DISTRIBUTOR}" + CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1|LC_ALL=C sed 's,[^[:alnum:]_],_,g') ${CLASS}" + fi + +diff --git a/util/grub.d/20_linux_xen.in b/util/grub.d/20_linux_xen.in +index a608435..79d4e38 100644 +--- a/util/grub.d/20_linux_xen.in ++++ b/util/grub.d/20_linux_xen.in +@@ -29,9 +29,9 @@ export TEXTDOMAINDIR="@localedir@" + CLASS="--class gnu-linux --class gnu --class os --class xen" + + if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then +- OS=GNU/Linux ++ OS="$(sed 's, release .*$,,g' /etc/system-release)" + else +- OS="${GRUB_DISTRIBUTOR} GNU/Linux" ++ OS="${GRUB_DISTRIBUTOR}" + CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1|LC_ALL=C sed 's,[^[:alnum:]_],_,g') ${CLASS}" + fi + +-- +1.9.0 + diff --git a/0119-Don-t-draw-a-border-around-the-menu.patch b/0119-Don-t-draw-a-border-around-the-menu.patch new file mode 100644 index 0000000..8569fea --- /dev/null +++ b/0119-Don-t-draw-a-border-around-the-menu.patch @@ -0,0 +1,74 @@ +From 6bf4deb61df3ecb1e2d108195efa5ac980baa961 Mon Sep 17 00:00:00 2001 +From: William Jon McCann +Date: Wed, 15 May 2013 16:47:33 -0400 +Subject: [PATCH 119/125] Don't draw a border around the menu + +It looks cleaner without it. +--- + grub-core/normal/menu_text.c | 43 ------------------------------------------- + 1 file changed, 43 deletions(-) + +diff --git a/grub-core/normal/menu_text.c b/grub-core/normal/menu_text.c +index 6202c2a..beddd7f 100644 +--- a/grub-core/normal/menu_text.c ++++ b/grub-core/normal/menu_text.c +@@ -108,47 +108,6 @@ grub_print_message_indented (const char *msg, int margin_left, int margin_right, + grub_print_message_indented_real (msg, margin_left, margin_right, term, 0); + } + +-static void +-draw_border (struct grub_term_output *term, const struct grub_term_screen_geometry *geo) +-{ +- int i; +- +- grub_term_setcolorstate (term, GRUB_TERM_COLOR_NORMAL); +- +- grub_term_gotoxy (term, (struct grub_term_coordinate) { geo->first_entry_x - 1, +- geo->first_entry_y - 1 }); +- grub_putcode (GRUB_UNICODE_CORNER_UL, term); +- for (i = 0; i < geo->entry_width + 1; i++) +- grub_putcode (GRUB_UNICODE_HLINE, term); +- grub_putcode (GRUB_UNICODE_CORNER_UR, term); +- +- for (i = 0; i < geo->num_entries; i++) +- { +- grub_term_gotoxy (term, (struct grub_term_coordinate) { geo->first_entry_x - 1, +- geo->first_entry_y + i }); +- grub_putcode (GRUB_UNICODE_VLINE, term); +- grub_term_gotoxy (term, +- (struct grub_term_coordinate) { geo->first_entry_x + geo->entry_width + 1, +- geo->first_entry_y + i }); +- grub_putcode (GRUB_UNICODE_VLINE, term); +- } +- +- grub_term_gotoxy (term, +- (struct grub_term_coordinate) { geo->first_entry_x - 1, +- geo->first_entry_y - 1 + geo->num_entries + 1 }); +- grub_putcode (GRUB_UNICODE_CORNER_LL, term); +- for (i = 0; i < geo->entry_width + 1; i++) +- grub_putcode (GRUB_UNICODE_HLINE, term); +- grub_putcode (GRUB_UNICODE_CORNER_LR, term); +- +- grub_term_setcolorstate (term, GRUB_TERM_COLOR_NORMAL); +- +- grub_term_gotoxy (term, +- (struct grub_term_coordinate) { geo->first_entry_x - 1, +- (geo->first_entry_y - 1 + geo->num_entries +- + GRUB_TERM_MARGIN + 1) }); +-} +- + static int + print_message (int nested, int edit, struct grub_term_output *term, int dry_run) + { +@@ -403,8 +362,6 @@ grub_menu_init_page (int nested, int edit, + + grub_term_normal_color = grub_color_menu_normal; + grub_term_highlight_color = grub_color_menu_highlight; +- if (geo->border) +- draw_border (term, geo); + grub_term_normal_color = old_color_normal; + grub_term_highlight_color = old_color_highlight; + geo->timeout_y = geo->first_entry_y + geo->num_entries +-- +1.9.0 + diff --git a/0120-Use-the-standard-margin-for-the-timeout-string.patch b/0120-Use-the-standard-margin-for-the-timeout-string.patch new file mode 100644 index 0000000..daccecd --- /dev/null +++ b/0120-Use-the-standard-margin-for-the-timeout-string.patch @@ -0,0 +1,43 @@ +From a3e6964bd3242bd042489bb510e63fc0224fede4 Mon Sep 17 00:00:00 2001 +From: William Jon McCann +Date: Fri, 7 Jun 2013 10:52:32 -0400 +Subject: [PATCH 120/125] Use the standard margin for the timeout string + +So that it aligns with the other messages +--- + grub-core/normal/menu_text.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/grub-core/normal/menu_text.c b/grub-core/normal/menu_text.c +index beddd7f..33b208b 100644 +--- a/grub-core/normal/menu_text.c ++++ b/grub-core/normal/menu_text.c +@@ -369,7 +369,7 @@ grub_menu_init_page (int nested, int edit, + if (bottom_message) + { + grub_term_gotoxy (term, +- (struct grub_term_coordinate) { GRUB_TERM_MARGIN, ++ (struct grub_term_coordinate) { STANDARD_MARGIN, + geo->timeout_y }); + + print_message (nested, edit, term, 0); +@@ -404,14 +404,14 @@ menu_text_print_timeout (int timeout, void *dataptr) + if (data->timeout_msg == TIMEOUT_UNKNOWN) + { + data->timeout_msg = grub_print_message_indented_real (msg_translated, +- 3, 1, data->term, 1) ++ STANDARD_MARGIN, 1, data->term, 1) + <= data->geo.timeout_lines ? TIMEOUT_NORMAL : TIMEOUT_TERSE; + if (data->timeout_msg == TIMEOUT_TERSE) + { + grub_free (msg_translated); + msg_translated = grub_xasprintf (_("%ds"), timeout); + if (grub_term_width (data->term) < 10) +- data->timeout_msg = TIMEOUT_TERSE_NO_MARGIN; ++ data->timeout_msg = STANDARD_MARGIN; + } + } + +-- +1.9.0 + diff --git a/0121-Fix-grub_script_execute_sourcecode-usage-on-ppc.patch b/0121-Fix-grub_script_execute_sourcecode-usage-on-ppc.patch new file mode 100644 index 0000000..19ba050 --- /dev/null +++ b/0121-Fix-grub_script_execute_sourcecode-usage-on-ppc.patch @@ -0,0 +1,29 @@ +From a7a033ed92a55dd44314ed20f720a3d32fa9c684 Mon Sep 17 00:00:00 2001 +From: Peter Jones +Date: Fri, 10 Jan 2014 09:36:24 -0500 +Subject: [PATCH 121/125] Fix grub_script_execute_sourcecode() usage on ppc. + +593e430c made it not take the extra argc/argv that this code still +passes it. + +Signed-off-by: Peter Jones +--- + grub-core/normal/main.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c +index 0da2a52..f66c03c 100644 +--- a/grub-core/normal/main.c ++++ b/grub-core/normal/main.c +@@ -289,7 +289,7 @@ grub_normal_execute (const char *config, int nested, int batch) + if (! grub_ieee1275_cas_reboot (script)) + { + char *dummy[1] = { NULL }; +- if (! grub_script_execute_sourcecode (script, 0, dummy)) ++ if (! grub_script_execute_sourcecode (script)) + boot = 1; + } + grub_free (script); +-- +1.9.0 + diff --git a/0122-Add-.eh_frame-to-list-of-relocations-stripped.patch b/0122-Add-.eh_frame-to-list-of-relocations-stripped.patch new file mode 100644 index 0000000..449d530 --- /dev/null +++ b/0122-Add-.eh_frame-to-list-of-relocations-stripped.patch @@ -0,0 +1,25 @@ +From 9120cc5592d26a945ead586b71820fb9708f5062 Mon Sep 17 00:00:00 2001 +From: Fedora Ninjas +Date: Mon, 13 Jan 2014 21:50:59 -0500 +Subject: [PATCH 122/125] Add .eh_frame to list of relocations stripped + +--- + conf/Makefile.common | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/conf/Makefile.common b/conf/Makefile.common +index e4c301f..6f836d8 100644 +--- a/conf/Makefile.common ++++ b/conf/Makefile.common +@@ -45,7 +45,7 @@ CFLAGS_KERNEL = $(CFLAGS_CPU) $(CFLAGS_PLATFORM) -ffreestanding + LDFLAGS_KERNEL = $(LDFLAGS_CPU) $(LDFLAGS_PLATFORM) -nostdlib $(TARGET_LDFLAGS_OLDMAGIC) $(TARGET_LDFLAGS_STATIC_LIBGCC) + CPPFLAGS_KERNEL = $(CPPFLAGS_CPU) $(CPPFLAGS_PLATFORM) -DGRUB_KERNEL=1 + CCASFLAGS_KERNEL = $(CCASFLAGS_CPU) $(CCASFLAGS_PLATFORM) +-STRIPFLAGS_KERNEL = -R .rel.dyn -R .reginfo -R .note -R .comment -R .drectve -R .note.gnu.gold-version ++STRIPFLAGS_KERNEL = -R .eh_frame -R .rel.dyn -R .reginfo -R .note -R .comment -R .drectve -R .note.gnu.gold-version + + CFLAGS_MODULE = $(CFLAGS_CPU) $(CFLAGS_PLATFORM) -ffreestanding + LDFLAGS_MODULE = $(LDFLAGS_CPU) $(LDFLAGS_PLATFORM) -nostdlib $(TARGET_LDFLAGS_OLDMAGIC) -Wl,-r,-d +-- +1.9.0 + diff --git a/0123-Make-10_linux-work-with-our-changes-for-linux16-and-.patch b/0123-Make-10_linux-work-with-our-changes-for-linux16-and-.patch new file mode 100644 index 0000000..4811f03 --- /dev/null +++ b/0123-Make-10_linux-work-with-our-changes-for-linux16-and-.patch @@ -0,0 +1,85 @@ +From 1c9518bb506f8f4fa6b388571c76797705e7b566 Mon Sep 17 00:00:00 2001 +From: Peter Jones +Date: Tue, 14 Jan 2014 13:12:23 -0500 +Subject: [PATCH 123/125] Make 10_linux work with our changes for linux16 and + linuxefi on aarch64 + +Signed-off-by: Peter Jones +--- + util/grub.d/10_linux.in | 31 ++++++++++++++++++++++++++++--- + 1 file changed, 28 insertions(+), 3 deletions(-) + +diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in +index c943a1e..2b8c561 100644 +--- a/util/grub.d/10_linux.in ++++ b/util/grub.d/10_linux.in +@@ -75,8 +75,18 @@ linux_entry () + args="$4" + + sixteenbit="" ++ linuxefi="linux" ++ initrdefi="initrd" + case "$machine" in +- i?86|x86_64) sixteenbit="16" ;; ++ i?86|x86_64) ++ sixteenbit="16" ++ linuxefi="linuxefi" ++ initrdefi="initrdefi" ++ ;; ++ aarch64) ++ linuxefi="linux" ++ initrdefi="initrd" ++ ;; + esac + + if [ -z "$boot_device_id" ]; then +@@ -133,7 +143,7 @@ linux_entry () + fi + if [ -d /sys/firmware/efi ]; then + sed "s/^/$submenu_indentation/" << EOF +- linuxefi ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args} ++ ${linuxefi} ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args} + EOF + else + sed "s/^/$submenu_indentation/" << EOF +@@ -143,7 +153,7 @@ EOF + if test -n "${initrd}" ; then + if [ -d /sys/firmware/efi ]; then + sed "s/^/$submenu_indentation/" << EOF +- initrdefi ${rel_dirname}/${initrd} ++ ${initrdefi} ${rel_dirname}/${initrd} + EOF + else + sed "s/^/$submenu_indentation/" << EOF +@@ -151,6 +161,13 @@ EOF + EOF + fi + fi ++ if test -n "${fdt}" ; then ++ message="$(gettext_printf "Loading fdt ...")" ++ sed "s/^/$submenu_indentation/" << EOF ++ echo '$(echo "$message" | grub_quote)' ++ devicetree ${rel_dirname}/${fdt} ++EOF ++ fi + sed "s/^/$submenu_indentation/" << EOF + } + EOF +@@ -211,6 +228,14 @@ while [ "x$list" != "x" ] ; do + fi + done + ++ fdt= ++ for i in "dtb-${version}" "dtb-${alt_version}"; do ++ if test -e "${dirname}/${i}/foundation-v8.dtb" ; then ++ fdt="${i}/foundation-v8.dtb" ++ break ++ fi ++ done ++ + config= + for i in "${dirname}/config-${version}" "${dirname}/config-${alt_version}" "/etc/kernels/kernel-config-${version}" ; do + if test -e "${i}" ; then +-- +1.9.0 + diff --git a/0124-Don-t-print-during-fdt-loading-method.patch b/0124-Don-t-print-during-fdt-loading-method.patch new file mode 100644 index 0000000..44fa894 --- /dev/null +++ b/0124-Don-t-print-during-fdt-loading-method.patch @@ -0,0 +1,27 @@ +From aa8c71086da3a28382b8bd958bac1c5d3b2b2be3 Mon Sep 17 00:00:00 2001 +From: Peter Jones +Date: Tue, 14 Jan 2014 16:15:46 -0500 +Subject: [PATCH 124/125] Don't print during fdt loading method. + +Signed-off-by: Peter Jones +--- + util/grub.d/10_linux.in | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in +index 2b8c561..acf2e0e 100644 +--- a/util/grub.d/10_linux.in ++++ b/util/grub.d/10_linux.in +@@ -162,9 +162,7 @@ EOF + fi + fi + if test -n "${fdt}" ; then +- message="$(gettext_printf "Loading fdt ...")" + sed "s/^/$submenu_indentation/" << EOF +- echo '$(echo "$message" | grub_quote)' + devicetree ${rel_dirname}/${fdt} + EOF + fi +-- +1.9.0 + diff --git a/0125-Honor-a-symlink-when-generating-configuration-by-gru.patch b/0125-Honor-a-symlink-when-generating-configuration-by-gru.patch new file mode 100644 index 0000000..5056519 --- /dev/null +++ b/0125-Honor-a-symlink-when-generating-configuration-by-gru.patch @@ -0,0 +1,29 @@ +From 37ad82c4f11e293e30eea26302624691e80f19b8 Mon Sep 17 00:00:00 2001 +From: Marcel Kolaja +Date: Tue, 21 Jan 2014 10:57:08 -0500 +Subject: [PATCH 125/125] Honor a symlink when generating configuration by + grub2-mkconfig + +Honor a symlink when generating configuration by grub2-mkconfig, so that +the -o option follows it rather than overwriting it with a regular file. +--- + util/grub-mkconfig.in | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in +index ca040dd..b00f9e6 100644 +--- a/util/grub-mkconfig.in ++++ b/util/grub-mkconfig.in +@@ -272,7 +272,8 @@ and /etc/grub.d/* files or please file a bug report with + echo >&2 + else + # none of the children aborted with error, install the new grub.cfg +- mv -f ${grub_cfg}.new ${grub_cfg} ++ cat ${grub_cfg}.new > ${grub_cfg} ++ rm -f ${grub_cfg}.new + fi + fi + +-- +1.9.0 + diff --git a/grub2.spec b/grub2.spec index 52db98b..f591b48 100644 --- a/grub2.spec +++ b/grub2.spec @@ -47,7 +47,7 @@ Name: grub2 Epoch: 1 Version: 2.02 -Release: 0.3%{?dist} +Release: 0.4%{?dist} Summary: Bootloader with support for Linux, Multiboot and more Group: System Environment/Base @@ -64,105 +64,127 @@ Patch0001: 0001-fix-EFI-detection-on-Windows.patch Patch0002: 0002-grub-core-kern-arm-cache_armv6.S-Remove-.arch-direct.patch Patch0003: 0003-INSTALL-Cross-compiling-the-GRUB-Fix-some-spelling-m.patch Patch0004: 0004-NEWS-First-draft-of-2.02-entry.patch -Patch0005: 0005-NEWS-The-cmosclean-command-in-fact-dates-back-to-1.9.patch -Patch0006: 0006-remove-unused-error.h-from-kern-emu-misc.c.patch -Patch0007: 0007-Don-t-abort-on-unavailable-coreboot-tables-if-not-ru.patch -Patch0008: 0008-NEWS-Add-few-missing-entries.-Correct-existing-ones.patch -Patch0009: 0009-strip-.eh_frame-section-from-arm64-efi-kernel.patch -Patch0010: 0010-use-grub-boot-aa64.efi-for-boot-images-on-AArch64.patch -Patch0011: 0011-fix-32-bit-compilation-on-MinGW-w64.patch -Patch0012: 0012-Change-grub-mkrescue-to-use-bootaa64.efi-too.patch -Patch0013: 0013-arm64-set-correct-length-of-device-path-end-entry.patch -Patch0014: 0014-Makefile.util.def-grub-macbless-Change-mansection-to.patch -Patch0015: 0015-add-part_apple-to-EFI-rescue-image-to-fix-missing-pr.patch -Patch0016: 0016-freebsd-hostdisk.c-is-only-ever-compiled-on-FreeBSD.patch -Patch0017: 0017-Prefer-more-portable-test-1-constructs.patch -Patch0018: 0018-NEWS-Add-few-missing-entries.patch -Patch0019: 0019-grub-core-kern-efi-efi.c-Ensure-that-the-result-star.patch -Patch0020: 0020-util-grub-mount.c-Extend-GCC-warning-workaround-to-g.patch -Patch0021: 0021-reintroduce-BUILD_LDFLAGS-for-the-cross-compile-case.patch -Patch0022: 0022-grub-core-term-terminfo.c-Recognize-keys-F1-F12.patch -Patch0023: 0023-Fix-ChangeLog-date.patch -Patch0024: 0024-Use-_W64-to-detect-MinGW-W64-32-instead-of-_FILE_OFF.patch -Patch0025: 0025-add-BUILD_EXEEXT-support-to-fix-make-clean-on-Window.patch -Patch0026: 0026-fix-include-loop-on-MinGW-due-to-libintl.h-pulling-s.patch -Patch0027: 0027-grub-core-commands-macbless.c-Rename-FILE-and-DIR-to.patch -Patch0028: 0028-Makefile.util.def-Link-grub-ofpathname-with-zfs-libs.patch -Patch0029: 0029-Makefile.am-default_payload.elf-Add-modules.patch -Patch0030: 0030-fix-removal-of-cpu-machine-links-on-mingw-msys.patch -Patch0031: 0031-grub-core-normal-main.c-read_config_file-Buffer-conf.patch -Patch0032: 0032-util-grub-install.c-Fix-a-typo.patch -Patch0033: 0033-use-MODULE_FILES-for-genemuinit-instead-of-MOD_FILES.patch -Patch0034: 0034-Ignore-EPERM-when-modifying-kern.geom.debugflags.patch -Patch0035: 0035-change-stop-condition-to-avoid-infinite-loops.patch -Patch0036: 0036-increase-network-try-interval-gradually.patch -Patch0037: 0037-look-for-DejaVu-also-in-usr-share-fonts-truetype.patch -Patch0038: 0038-Show-detected-path-to-DejaVuSans-in-configure-summar.patch -Patch0039: 0039-add-GRUB_WINDOWS_EXTRA_DIST-to-allow-shipping-runtim.patch -Patch0040: 0040-util-grub-install.c-write_to_disk-Add-an-info-messag.patch -Patch0041: 0041-util-grub-install.c-List-available-targets.patch -Patch0042: 0042-Fix-several-translatable-strings.patch -Patch0043: 0043-do-not-set-default-prefix-in-grub-mkimage.patch -Patch0044: 0044-fix-Mingw-W64-32-cross-compile-failure-due-to-printf.patch -Patch0045: 0045-grub-core-term-serial.c-grub_serial_register-Fix-inv.patch -Patch0046: 0046-grub-install-support-for-partitioned-partx-loop-devi.patch -Patch0047: 0047-grub-core-term-at_keyboard.c-Tolerate-missing-keyboa.patch -Patch0048: 0048-.gitignore-add-missing-files-and-.exe-variants.patch -Patch0049: 0049-util-grub-mkfont.c-Downgrade-warnings-about-unhandle.patch -Patch0050: 0050-grub-core-disk-ahci.c-Do-not-enable-I-O-decoding-and.patch -Patch0051: 0051-grub-core-disk-ahci.c-Allocate-and-clean-space-for-a.patch -Patch0052: 0052-grub-core-disk-ahci.c-Add-safety-cleanups.patch -Patch0053: 0053-grub-core-disk-ahci.c-Properly-handle-transactions-w.patch -Patch0054: 0054-grub-core-disk-ahci.c-Increase-timeout.-Some-SSDs-ta.patch -Patch0055: 0055-util-grub-mkfont.c-Build-fix-for-argp.h-with-older-g.patch -Patch0056: 0056-util-grub-mkrescue.c-Build-fix-for-argp.h-with-older.patch -Patch0057: 0057-add-grub_env_set_net_property-function.patch -Patch0058: 0058-add-bootpath-parser-for-open-firmware.patch -Patch0059: 0059-grub-core-disk-ahci.c-Ignore-NPORTS-field-and-rely-o.patch -Patch0060: 0060-grub-core-kern-i386-coreboot-mmap.c-Filter-out-0xa00.patch -Patch0061: 0061-grub-core-loader-i386-multiboot_mbi.c-grub_multiboot.patch -Patch0062: 0062-grub-core-mmap-i386-uppermem.c-lower_hook-COREBOOT-I.patch -Patch0063: 0063-grub-core-kern-i386-pc-mmap.c-Fallback-to-EISA-memor.patch -Patch0064: 0064-include-grub-i386-openbsd_bootarg.h-Add-addr-and-fre.patch -Patch0065: 0065-Migrate-PPC-from-Yaboot-to-Grub2.patch -Patch0066: 0066-Add-fw_path-variable-revised.patch -Patch0067: 0067-Add-support-for-linuxefi.patch -Patch0068: 0068-Use-linuxefi-and-initrdefi-where-appropriate.patch -Patch0069: 0069-Don-t-allow-insmod-when-secure-boot-is-enabled.patch -Patch0070: 0070-Pass-x-hex-hex-straight-through-unmolested.patch -Patch0071: 0071-Fix-crash-on-http.patch -Patch0072: 0072-IBM-client-architecture-CAS-reboot-support.patch -Patch0073: 0073-Add-vlan-tag-support.patch -Patch0074: 0074-Add-X-option-to-printf-functions.patch -Patch0075: 0075-DHCP-client-ID-and-UUID-options-added.patch -Patch0076: 0076-Search-for-specific-config-file-for-netboot.patch -Patch0077: 0077-blscfg-add-blscfg-module-to-parse-Boot-Loader-Specif.patch -Patch0078: 0078-Move-bash-completion-script-922997.patch -Patch0079: 0079-for-ppc-reset-console-display-attr-when-clear-screen.patch -Patch0080: 0080-Don-t-write-messages-to-the-screen.patch -Patch0081: 0081-Don-t-print-GNU-GRUB-header.patch -Patch0082: 0082-Don-t-add-to-highlighted-row.patch -Patch0083: 0083-Don-t-add-to-highlighted-row.patch -Patch0084: 0084-Message-string-cleanups.patch -Patch0085: 0085-Fix-border-spacing-now-that-we-aren-t-displaying-it.patch -Patch0086: 0086-Use-the-correct-indentation-for-the-term-help-text.patch -Patch0087: 0087-Indent-menu-entries.patch -Patch0088: 0088-Fix-margins.patch -Patch0089: 0089-Add-support-for-UEFI-operating-systems-returned-by-o.patch -Patch0090: 0090-Disable-GRUB-video-support-for-IBM-power-machines.patch -Patch0091: 0091-Use-2-instead-of-1-for-our-right-hand-margin-so-line.patch -Patch0092: 0092-Use-linux16-when-appropriate-880840.patch -Patch0093: 0093-Enable-pager-by-default.-985860.patch -Patch0094: 0094-F10-doesn-t-work-on-serial-so-don-t-tell-the-user-to.patch -Patch0095: 0095-Don-t-say-GNU-Linux-in-generated-menus.patch -Patch0096: 0096-Don-t-draw-a-border-around-the-menu.patch -Patch0097: 0097-Use-the-standard-margin-for-the-timeout-string.patch -Patch0098: 0098-Fix-grub_script_execute_sourcecode-usage-on-ppc.patch -Patch0099: 0099-Add-.eh_frame-to-list-of-relocations-stripped.patch -Patch0100: 0100-arm64-set-correct-length-of-device-path-end-entry.patch -Patch0101: 0101-Make-10_linux-work-with-our-changes-for-linux16-and-.patch -Patch0102: 0102-Don-t-print-during-fdt-loading-method.patch -Patch0103: 0103-Honor-a-symlink-when-generating-configuration-by-gru.patch +Patch0005: 0005-Merge-branch-master-of-git.sv.gnu.org-srv-git-grub.patch +Patch0006: 0006-NEWS-The-cmosclean-command-in-fact-dates-back-to-1.9.patch +Patch0007: 0007-remove-unused-error.h-from-kern-emu-misc.c.patch +Patch0008: 0008-Don-t-abort-on-unavailable-coreboot-tables-if-not-ru.patch +Patch0009: 0009-NEWS-Add-few-missing-entries.-Correct-existing-ones.patch +Patch0010: 0010-strip-.eh_frame-section-from-arm64-efi-kernel.patch +Patch0011: 0011-use-grub-boot-aa64.efi-for-boot-images-on-AArch64.patch +Patch0012: 0012-fix-32-bit-compilation-on-MinGW-w64.patch +Patch0013: 0013-Change-grub-mkrescue-to-use-bootaa64.efi-too.patch +Patch0014: 0014-arm64-set-correct-length-of-device-path-end-entry.patch +Patch0015: 0015-Makefile.util.def-grub-macbless-Change-mansection-to.patch +Patch0016: 0016-add-part_apple-to-EFI-rescue-image-to-fix-missing-pr.patch +Patch0017: 0017-freebsd-hostdisk.c-is-only-ever-compiled-on-FreeBSD.patch +Patch0018: 0018-Prefer-more-portable-test-1-constructs.patch +Patch0019: 0019-NEWS-Add-few-missing-entries.patch +Patch0020: 0020-grub-core-kern-efi-efi.c-Ensure-that-the-result-star.patch +Patch0021: 0021-util-grub-mount.c-Extend-GCC-warning-workaround-to-g.patch +Patch0022: 0022-reintroduce-BUILD_LDFLAGS-for-the-cross-compile-case.patch +Patch0023: 0023-grub-core-term-terminfo.c-Recognize-keys-F1-F12.patch +Patch0024: 0024-Fix-ChangeLog-date.patch +Patch0025: 0025-Use-_W64-to-detect-MinGW-W64-32-instead-of-_FILE_OFF.patch +Patch0026: 0026-add-BUILD_EXEEXT-support-to-fix-make-clean-on-Window.patch +Patch0027: 0027-fix-include-loop-on-MinGW-due-to-libintl.h-pulling-s.patch +Patch0028: 0028-grub-core-commands-macbless.c-Rename-FILE-and-DIR-to.patch +Patch0029: 0029-Makefile.util.def-Link-grub-ofpathname-with-zfs-libs.patch +Patch0030: 0030-Makefile.am-default_payload.elf-Add-modules.patch +Patch0031: 0031-fix-removal-of-cpu-machine-links-on-mingw-msys.patch +Patch0032: 0032-grub-core-normal-main.c-read_config_file-Buffer-conf.patch +Patch0033: 0033-util-grub-install.c-Fix-a-typo.patch +Patch0034: 0034-use-MODULE_FILES-for-genemuinit-instead-of-MOD_FILES.patch +Patch0035: 0035-Ignore-EPERM-when-modifying-kern.geom.debugflags.patch +Patch0036: 0036-change-stop-condition-to-avoid-infinite-loops.patch +Patch0037: 0037-increase-network-try-interval-gradually.patch +Patch0038: 0038-look-for-DejaVu-also-in-usr-share-fonts-truetype.patch +Patch0039: 0039-Show-detected-path-to-DejaVuSans-in-configure-summar.patch +Patch0040: 0040-add-GRUB_WINDOWS_EXTRA_DIST-to-allow-shipping-runtim.patch +Patch0041: 0041-util-grub-install.c-write_to_disk-Add-an-info-messag.patch +Patch0042: 0042-util-grub-install.c-List-available-targets.patch +Patch0043: 0043-Fix-several-translatable-strings.patch +Patch0044: 0044-do-not-set-default-prefix-in-grub-mkimage.patch +Patch0045: 0045-fix-Mingw-W64-32-cross-compile-failure-due-to-printf.patch +Patch0046: 0046-grub-core-term-serial.c-grub_serial_register-Fix-inv.patch +Patch0047: 0047-grub-install-support-for-partitioned-partx-loop-devi.patch +Patch0048: 0048-grub-core-term-at_keyboard.c-Tolerate-missing-keyboa.patch +Patch0049: 0049-.gitignore-add-missing-files-and-.exe-variants.patch +Patch0050: 0050-util-grub-mkfont.c-Downgrade-warnings-about-unhandle.patch +Patch0051: 0051-grub-core-disk-ahci.c-Do-not-enable-I-O-decoding-and.patch +Patch0052: 0052-grub-core-disk-ahci.c-Allocate-and-clean-space-for-a.patch +Patch0053: 0053-grub-core-disk-ahci.c-Add-safety-cleanups.patch +Patch0054: 0054-grub-core-disk-ahci.c-Properly-handle-transactions-w.patch +Patch0055: 0055-grub-core-disk-ahci.c-Increase-timeout.-Some-SSDs-ta.patch +Patch0056: 0056-util-grub-mkfont.c-Build-fix-for-argp.h-with-older-g.patch +Patch0057: 0057-util-grub-mkrescue.c-Build-fix-for-argp.h-with-older.patch +Patch0058: 0058-add-grub_env_set_net_property-function.patch +Patch0059: 0059-add-bootpath-parser-for-open-firmware.patch +Patch0060: 0060-grub-core-disk-ahci.c-Ignore-NPORTS-field-and-rely-o.patch +Patch0061: 0061-grub-core-kern-i386-coreboot-mmap.c-Filter-out-0xa00.patch +Patch0062: 0062-grub-core-loader-i386-multiboot_mbi.c-grub_multiboot.patch +Patch0063: 0063-grub-core-mmap-i386-uppermem.c-lower_hook-COREBOOT-I.patch +Patch0064: 0064-grub-core-kern-i386-pc-mmap.c-Fallback-to-EISA-memor.patch +Patch0065: 0065-include-grub-i386-openbsd_bootarg.h-Add-addr-and-fre.patch +Patch0066: 0066-ieee1275-check-for-IBM-pseries-emulated-machine.patch +Patch0067: 0067-grub-core-loader-arm64-linux.c-Remove-redundant-0x.patch +Patch0068: 0068-grub-core-lib-relocator.c-Fix-the-case-when-end-of-l.patch +Patch0069: 0069-Fix-grub-probe-0-option.patch +Patch0070: 0070-Fix-partmap-cryptodisk-and-abstraction-handling-in-g.patch +Patch0071: 0071-btrfs-fix-get_root-key-comparison-failures-due-to-en.patch +Patch0072: 0072-grub-core-osdep-linux-getroot.c-grub_util_part_to_di.patch +Patch0073: 0073-Replace-few-instances-of-memcmp-memcpy-in-the-code-t.patch +Patch0074: 0074-include-grub-libgcc.h-Remove-ctzsi2-and-ctzdi2.-They.patch +Patch0075: 0075-Add-missing-endif.patch +Patch0076: 0076-grub-core-lib-syslinux_parse.c-Fix-timeout-quoting.patch +Patch0077: 0077-Improve-LVM-logical_volumes-string-matching.patch +Patch0078: 0078-Tolerate-devices-with-no-filesystem-UUID-returned-by.patch +Patch0079: 0079-Allow-loading-old-kernels-by-placing-GDT-in-conventi.patch +Patch0080: 0080-grub-core-kern-misc.c-__bzero-Don-t-compile-in-GRUB_.patch +Patch0081: 0081-grub-core-commands-verify.c-grub_pubkey_open-Fix-mem.patch +Patch0082: 0082-grub-core-commands-verify.c-grub_pubkey_open-Trust-p.patch +Patch0083: 0083-util-grub-gen-asciih.c-add_glyph-Fix-uninitialised-v.patch +Patch0084: 0084-grub-core-commands-efi-lsefisystab.c-grub_cmd_lsefis.patch +Patch0085: 0085-grub-core-loader-i386-bsd.c-grub_netbsd_boot-Pass-po.patch +Patch0086: 0086-util-grub-install.c-Fix-handling-of-disk-module.patch +Patch0087: 0087-grub-core-commands-loadenv.c-check_blocklists-Fix-ov.patch +Patch0088: 0088-NEWS-The-cmosclean-command-in-fact-dates-back-to-1.9.patch +Patch0089: 0089-Migrate-PPC-from-Yaboot-to-Grub2.patch +Patch0090: 0090-Add-fw_path-variable-revised.patch +Patch0091: 0091-Add-support-for-linuxefi.patch +Patch0092: 0092-Use-linuxefi-and-initrdefi-where-appropriate.patch +Patch0093: 0093-Don-t-allow-insmod-when-secure-boot-is-enabled.patch +Patch0094: 0094-Pass-x-hex-hex-straight-through-unmolested.patch +Patch0095: 0095-Fix-crash-on-http.patch +Patch0096: 0096-IBM-client-architecture-CAS-reboot-support.patch +Patch0097: 0097-Add-vlan-tag-support.patch +Patch0098: 0098-Add-X-option-to-printf-functions.patch +Patch0099: 0099-DHCP-client-ID-and-UUID-options-added.patch +Patch0100: 0100-Search-for-specific-config-file-for-netboot.patch +Patch0101: 0101-blscfg-add-blscfg-module-to-parse-Boot-Loader-Specif.patch +Patch0102: 0102-Move-bash-completion-script-922997.patch +Patch0103: 0103-for-ppc-reset-console-display-attr-when-clear-screen.patch +Patch0104: 0104-Don-t-write-messages-to-the-screen.patch +Patch0105: 0105-Don-t-print-GNU-GRUB-header.patch +Patch0106: 0106-Don-t-add-to-highlighted-row.patch +Patch0107: 0107-Message-string-cleanups.patch +Patch0108: 0108-Fix-border-spacing-now-that-we-aren-t-displaying-it.patch +Patch0109: 0109-Use-the-correct-indentation-for-the-term-help-text.patch +Patch0110: 0110-Indent-menu-entries.patch +Patch0111: 0111-Fix-margins.patch +Patch0112: 0112-Add-support-for-UEFI-operating-systems-returned-by-o.patch +Patch0113: 0113-Disable-GRUB-video-support-for-IBM-power-machines.patch +Patch0114: 0114-Use-2-instead-of-1-for-our-right-hand-margin-so-line.patch +Patch0115: 0115-Use-linux16-when-appropriate-880840.patch +Patch0116: 0116-Enable-pager-by-default.-985860.patch +Patch0117: 0117-F10-doesn-t-work-on-serial-so-don-t-tell-the-user-to.patch +Patch0118: 0118-Don-t-say-GNU-Linux-in-generated-menus.patch +Patch0119: 0119-Don-t-draw-a-border-around-the-menu.patch +Patch0120: 0120-Use-the-standard-margin-for-the-timeout-string.patch +Patch0121: 0121-Fix-grub_script_execute_sourcecode-usage-on-ppc.patch +Patch0122: 0122-Add-.eh_frame-to-list-of-relocations-stripped.patch +Patch0123: 0123-Make-10_linux-work-with-our-changes-for-linux16-and-.patch +Patch0124: 0124-Don-t-print-during-fdt-loading-method.patch +Patch0125: 0125-Honor-a-symlink-when-generating-configuration-by-gru.patch BuildRequires: flex bison binutils python BuildRequires: ncurses-devel xz-devel bzip2-devel @@ -591,6 +613,9 @@ fi %{_datarootdir}/grub/themes/ %changelog +* Tue Jun 24 2014 Peter Jones - 2.02-0.4 +- Update to latest upstream. + * Thu Mar 13 2014 Peter Jones - 2.02-0.3 - Merge in RHEL 7 changes and ARM works in progress.