Fix non-x86 builds after verifiers framework merged
cover Fix non-x86 builds after verifiers framework merged
The verifiers framework caused some breakage for non-x86 platforms that need fixing.
Basically, this boils down to:
- Add an include guard for verify.h.
- Add a new file type for device tree blobs.
- Fix an error added to arm64/linux.c.
- Add file types to grub_file_open calls.
Note: only the common and arm64 fixes have actually been tested.
Fu Wei, Julien - can you guys have a look at fixing arm64/xen_boot.c? I'm not 100% certain how multiboot should be handled.
Leif Lindholm (5):
grub/verify.h: add include guard
file.h: add device tree file type loader/efi/fdt.c: fixup grub_file_open call arm64/efi: fix breakage caused by verifiers arm-uboot, ia64, sparc64: fix up grub_file_open calls
grub-core/loader/arm/linux.c | 6 +++--- grub-core/loader/arm64/linux.c | 3 ++- grub-core/loader/efi/fdt.c | 2 +- grub-core/loader/ia64/efi/linux.c | 2 +- grub-core/loader/sparc64/ieee1275/linux.c | 2 +- include/grub/file.h | 2 ++ include/grub/verify.h | 5 +++++ 7 files changed, 15 insertions(+), 7 deletions(-)
Signature · 1 line
2.11.0
PATCH 1/5 grub/verify.h: add include guard
verify.h was added without include guards. This means compiling anything including both grub/verify.h and grub/lib/cmdline.h fails (at least loader/arm64/linux.c.
Add the necessary include guard.
--- include/grub/verify.h | 5 +++++ 1 file changed, 5 insertions(+)
include/grub/verify.h +5 -0
@@ -16,6 +16,9 @@* along with GRUB. If not, see <http://www.gnu.org/licenses/>. */ +#ifndef GRUB_VERIFY_HEADER +#define GRUB_VERIFY_HEADER +#include <grub/file.h> #include <grub/list.h>
@@ -76,3 +79,5 @@ grub_verifier_unregister (struct grub_file_verifier *ver)grub_err_t grub_verify_string (char *str,enum grub_verify_string_type type); + +#endif /* ! GRUB_VERIFY_HEADER */
Signature · 1 line
2.11.0
PATCH 2/5 file.h: add device tree file type
In reply to Leif LindholmThe api change of grub_file_open for adding verifiers did not include a type for device tree blobs. Add GRUB_FILE_TYPE_DEVICE_TREE_IMAGE to the grub_file_type enum.
--- include/grub/file.h | 2 ++ 1 file changed, 2 insertions(+)
include/grub/file.h +2 -0
@@ -69,6 +69,8 @@ enum grub_file_typeGRUB_FILE_TYPE_EFI_CHAINLOADED_IMAGE , +GRUB_FILE_TYPE_DEVICE_TREE_IMAGE , +/* File holding signature. */ GRUB_FILE_TYPE_SIGNATURE,/* File holding public key to verify signature once. */
Signature · 1 line
2.11.0
PATCH 3/5 loader/efi/fdt.c: fixup grub_file_open call
In reply to Leif LindholmThe verifiers framework changed the api of grub_file_open, but did not fix up all users. Add the file type GRUB_FILE_TYPE_DEVICE_TREE_IMAGE to the "devicetree" command handler call.
--- grub-core/loader/efi/fdt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
grub-core/loader/efi/fdt.c +1 -1
@@ -123,7 +123,7 @@ grub_cmd_devicetree (grub_command_t cmd __attribute__ ((unused)),return GRUB_ERR_NONE ; } - dtb =grub_file_open (argv[0 ]); + dtb =grub_file_open (argv[0 ],GRUB_FILE_TYPE_DEVICE_TREE_IMAGE );if (!dtb) goto out;
Signature · 1 line
2.11.0
PATCH 4/5 arm64/efi: fix breakage caused by verifiers
In reply to Leif Lindholm- add variable "err" (used but not defined)
- add GRUB_FILE_TYPE_LINUX_KERNEL to grub_file_open call
--- grub-core/loader/arm64/linux.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
grub-core/loader/arm64/linux.c +2 -1
@@ -288,6 +288,7 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)), {grub_file_t file =0 ;struct linux_armxx_kernel_header lh; +grub_err_t err;grub_dl_ref (my_mod);
@@ -297,7 +298,7 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)), goto fail; } - file =grub_file_open (argv[0 ]); + file =grub_file_open (argv[0 ],GRUB_FILE_TYPE_LINUX_KERNEL );if (!file) goto fail;
Signature · 1 line
2.11.0
PATCH 5/5 arm-uboot, ia64, sparc64: fix up grub_file_open calls
In reply to Leif LindholmThe verifiers framework changed the grub_file_open interface, breaking all non-x86 linux loaders.
Add file types to the grub_file_open calls to make them build again.
---
Bundling these changes together in a single patch, since I haven't actually tested these.
grub-core/loader/arm/linux.c | 6 +++--- grub-core/loader/ia64/efi/linux.c | 2 +- grub-core/loader/sparc64/ieee1275/linux.c | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-)
grub-core/loader/arm/linux.c +3 -3
@@ -363,7 +363,7 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),if (argc ==0 )return grub_error (GRUB_ERR_BAD_ARGUMENT ,N_ ("filename expected" )); - file =grub_file_open (argv[0 ]); + file =grub_file_open (argv[0 ],GRUB_FILE_TYPE_LINUX_KERNEL );if (!file) goto fail;
@@ -408,7 +408,7 @@ grub_cmd_initrd (grub_command_t cmd __attribute__ ((unused)),if (argc ==0 )return grub_error (GRUB_ERR_BAD_ARGUMENT ,N_ ("filename expected" )); - file =grub_file_open (argv[0 ]); + file =grub_file_open (argv[0 ],GRUB_FILE_TYPE_LINUX_INITRD );if (!file)return grub_errno;
@@ -471,7 +471,7 @@ grub_cmd_devicetree (grub_command_t cmd __attribute__ ((unused)),if (argc !=1 )return grub_error (GRUB_ERR_BAD_ARGUMENT ,N_ ("filename expected" )); - dtb =grub_file_open (argv[0 ]); + dtb =grub_file_open (argv[0 ],GRUB_FILE_TYPE_DEVICE_TREE_IMAGE );if (!dtb)return grub_errno;
grub-core/loader/ia64/efi/linux.c +1 -1
@@ -460,7 +460,7 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)), goto fail; } - file =grub_file_open (argv[0 ]); + file =grub_file_open (argv[0 ],GRUB_FILE_TYPE_LINUX_KERNEL );if (! file) goto fail;
grub-core/loader/sparc64/ieee1275/linux.c +1 -1
@@ -306,7 +306,7 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)), goto out; } - file =grub_file_open (argv[0 ]); + file =grub_file_open (argv[0 ],GRUB_FILE_TYPE_LINUX_KERNEL );if (!file) goto out;
Signature · 1 line
2.11.0
Hi Leif,
Great thanks for your information, will do ASAP when I am back home.
Quoted 38 lines · Leif Lindholm
The verifiers framework caused some breakage for non-x86 platforms that need fixing.
Basically, this boils down to:
- Add an include guard forverify.h.
- Add a new file type for device tree blobs.
- Fix an error added toarm64/linux.c.
- Add file types togrub_file_opencalls.Note: only the common and arm64 fixes have actually been tested.
Fu Wei, Julien - can you guys have a look at fixing
arm64/xen_boot.c? I'm not 100% certain how multiboot should be handled.Cc Fu Wei <[email protected]>Cc Julien Grall <[email protected]>Reported-by Alexander Graf <[email protected]>Leif Lindholm (5):
grub/verify.h: add include guard
file.h: add device tree file typeloader/efi/fdt.c: fixupgrub_file_opencall arm64/efi: fix breakage caused by verifiers arm-uboot, ia64, sparc64: fix upgrub_file_opencallsgrub-core/loader/arm/linux.c | 6 +++--- grub-core/loader/arm64/linux.c | 3 ++- grub-core/loader/efi/fdt.c | 2 +- grub-core/loader/ia64/efi/linux.c | 2 +- grub-core/loader/sparc64/ieee1275/linux.c | 2 +- include/grub/file.h | 2 ++ include/grub/verify.h | 5 +++++ 7 files changed, 15 insertions(+), 7 deletions(-)--
2.11.0
Signature · 5 lines
Best regards, Fu Wei Software Engineer Red Hat
Quoted 3 lines · Fu Wei Fu
Hi Leif,
Great thanks for your information, will do ASAP when I am back home.
I have pushed fixes into the master, so, please take a look at it.
Daniel
arm64/xen: Fix implicit declaration of function ‘grub_file_filter_disable_compression
From: Lee Jones <[email protected]>
arm64/xen: Fix implicit declaration of function ‘grub_file_filter_disable_compression
Without this fix, building xen_boot.c omits:
loader/arm64/xen_boot.c:433:5: error: implicit declaration of function ‘grub_file_filter_disable_compression’; did you mean ‘grub_file_filter_unregister’? [-Werror=implicit-function-declaration]
grub_file_filter_disable_compression ();
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
grub_file_filter_unregisterloader/arm64/xen_boot.c:433:5: error: nested extern declaration of ‘grub_file_filter_disable_compression’ [-Werror=nested-externs]
grub-core/loader/arm64/xen_boot.c +0 -10
@@ -391,7 +391,6 @@ grub_cmd_xen_module (grub_command_t cmd __attribute__((unused)),struct xen_boot_binary *module =NULL ;grub_file_t file =0 ; -int nounzip =0 ;if (!argc) {
@@ -399,13 +398,6 @@ grub_cmd_xen_module (grub_command_t cmd __attribute__((unused)), goto fail; } -if (grub_strcmp (argv[0 ],"--nounzip" ) ==0 ) - { - argv++; - argc--; - nounzip =1 ; - } -if (!argc) {grub_error (GRUB_ERR_BAD_ARGUMENT ,N_ ("filename expected" ));
@@ -429,8 +421,6 @@ grub_cmd_xen_module (grub_command_t cmd __attribute__((unused)),grub_dprintf ("xen_loader" ,"Init module and node info\n" ); -if (nounzip) -grub_file_filter_disable_compression (); file =grub_file_open (argv[0 ]);if (!file) goto fail;
grub-core/osdep/generic/blocklist.c +0 -2
@@ -59,7 +59,6 @@ grub_install_get_blocklist (grub_device_t root_dev,grub_disk_cache_invalidate_all (); -grub_file_filter_disable_compression (); file =grub_file_open (core_path_dev);if (file) {
@@ -117,7 +116,6 @@ grub_install_get_blocklist (grub_device_t root_dev,grub_file_t file;/* Now read the core image to determine where the sectors are. */ -grub_file_filter_disable_compression (); file =grub_file_open (core_path_dev);if (! file)grub_util_error ("%s" , grub_errmsg);
Re: arm64/xen: Fix implicit declaration of function ‘grub_file_filter_disable_compression
Hi,
Quoted 3 lines · Lee Jones
From: Lee Jones <[email protected]>
arm64/xen: Fix implicit declaration of function ‘grub_file_filter_disable_compression
This patch seems to drop support for --nounzip. Can you explain why?
Note that the option added on Arm64 to keep the compatibility with x86 multiboot loading.
Cheers,
Quoted 67 lines
Without this fix, building
xen_boot.comits:
loader/arm64/xen_boot.c:433:5: error: implicit declaration of function ‘grub_file_filter_disable_compression’; did you mean ‘grub_file_filter_unregister’? [-Werror=implicit-function-declaration]grub_file_filter_disable_compression (); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ grub_file_filter_unregister
loader/arm64/xen_boot.c:433:5: error: nested extern declaration of ‘grub_file_filter_disable_compression’ [-Werror=nested-externs]Signed-off-by Lee Jones <[email protected]>grub-core/loader/arm64/xen_boot.c +0
-10@@ -391,7 +391,6 @@ grub_cmd_xen_module (grub_command_t cmd __attribute__((unused)),struct xen_boot_binary *module =NULL ;grub_file_t file =0 ; -int nounzip =0 ;if (!argc) {@@ -399,13 +398,6 @@ grub_cmd_xen_module (grub_command_t cmd __attribute__((unused)), goto fail; } -if (grub_strcmp (argv[0 ],"--nounzip" ) ==0 ) - { - argv++; - argc--; - nounzip =1 ; - } -if (!argc) {grub_error (GRUB_ERR_BAD_ARGUMENT ,N_ ("filename expected" ));@@ -429,8 +421,6 @@ grub_cmd_xen_module (grub_command_t cmd __attribute__((unused)),grub_dprintf ("xen_loader" ,"Init module and node info\n" ); -if (nounzip) -grub_file_filter_disable_compression (); file =grub_file_open (argv[0 ]);if (!file) goto fail;grub-core/osdep/generic/blocklist.c +0
-2@@ -59,7 +59,6 @@ grub_install_get_blocklist (grub_device_t root_dev,grub_disk_cache_invalidate_all (); -grub_file_filter_disable_compression (); file =grub_file_open (core_path_dev);if (file) {@@ -117,7 +116,6 @@ grub_install_get_blocklist (grub_device_t root_dev,grub_file_t file;/* Now read the core image to determine where the sectors are. */ -grub_file_filter_disable_compression (); file =grub_file_open (core_path_dev);if (! file)grub_util_error ("%s" , grub_errmsg);
Signature · 1 line
Julien Grall
Re: arm64/xen: Fix implicit declaration of function ‘grub_file_filter_disable_compression
Quoted 6 lines · Julien Grall
Quoted 3 lines · Lee Jones
From: Lee Jones <[email protected]>
arm64/xen: Fix implicit declaration of function ‘grub_file_filter_disable_compression
This patch seems to drop support for --nounzip. Can you explain why?
It only seemed to serve the invocation of grub_file_filter_disable_compression() which was removed in this patch. On closer inspection, I do see that argv/argc still needs to be shifted though. I will fix that.
Quoted 2 lines
Note that the option added on Arm64 to keep the compatibility with x86 multiboot loading.
Signature · 4 lines
Lee Jones [李琼斯] Linaro Services Technical Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Re: arm64/xen: Fix implicit declaration of function ‘grub_file_filter_disable_compression
Hi,
Quoted 10 lines · Lee Jones
Quoted 6 lines · Julien Grall
Quoted 3 lines · Lee Jones
From: Lee Jones <[email protected]>
arm64/xen: Fix implicit declaration of function ‘grub_file_filter_disable_compression
This patch seems to drop support for --nounzip. Can you explain why?
It only seemed to serve the invocation of
grub_file_filter_disable_compression()which was removed in this patch.
But --nounzip will not work as expected after this patch. Looking at GRUB, it seems the call to that function was replaced by passing GRUB_FILE_TYPE_NO_DECOMPRESSION to grub_file_open.
Is there any reason to not use it for Arm?
Cheers,
Quoted 6 lines
On closer inspection, I do see that
argv/argc still needs to be shifted though. I will fix that.Quoted 2 lines
Note that the option added on Arm64 to keep the compatibility with x86 multiboot loading.
Signature · 1 line
Julien Grall
Re: arm64/xen: Fix implicit declaration of function ‘grub_file_filter_disable_compression
Quoted 9 lines · Julien Grall
Hi,
Quoted 6 lines · Lee Jones
Quoted 5 lines · Julien Grall
Quoted 3 lines · Lee Jones
From: Lee Jones <[email protected]>
arm64/xen: Fix implicit declaration of function ‘grub_file_filter_disable_compression
Quoted 8 lines
Quoted 4 lines
Quoted 1 line
This patch seems to drop support for --nounzip. Can you explain why?
It only seemed to serve the invocation of
grub_file_filter_disable_compression()which was removed in this patch.But --nounzip will not work as expected after this patch. Looking at GRUB, it seems the call to that function was replaced by passing
GRUB_FILE_TYPE_NO_DECOMPRESSIONtogrub_file_open.
Ah yes, I see. Please bear with me.
I need to split this patch too.
Quoted 1 line
Is there any reason to not use it for Arm?
Signature · 4 lines
Lee Jones [李琼斯] Linaro Services Technical Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
PATCH v2 1/1 arm64/xen: Fix implicit declaration of function ‘grub_file_filter_disable_compression
In reply to Lee JonesFrom: Lee Jones <[email protected]>
arm64/xen: Fix implicit declaration of function ‘grub_file_filter_disable_compression
Without this fix, building xen_boot.c omits:
loader/arm64/xen_boot.c:433:5: error: implicit declaration of function ‘grub_file_filter_disable_compression’; did you mean ‘grub_file_filter_unregister’? [-Werror=implicit-function-declaration]
grub_file_filter_disable_compression ();
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
grub_file_filter_unregisterloader/arm64/xen_boot.c:433:5: error: nested extern declaration of ‘grub_file_filter_disable_compression’ [-Werror=nested-externs]
grub-core/loader/arm64/xen_boot.c +0 -4
@@ -391,7 +391,6 @@ grub_cmd_xen_module (grub_command_t cmd __attribute__((unused)),struct xen_boot_binary *module =NULL ;grub_file_t file =0 ; -int nounzip =0 ;if (!argc) {
@@ -403,7 +402,6 @@ grub_cmd_xen_module (grub_command_t cmd __attribute__((unused)), { argv++; argc--; - nounzip =1 ; }if (!argc)
@@ -429,8 +427,6 @@ grub_cmd_xen_module (grub_command_t cmd __attribute__((unused)),grub_dprintf ("xen_loader" ,"Init module and node info\n" ); -if (nounzip) -grub_file_filter_disable_compression (); file =grub_file_open (argv[0 ]);if (!file) goto fail;
grub-core/osdep/generic/blocklist.c +0 -2
@@ -59,7 +59,6 @@ grub_install_get_blocklist (grub_device_t root_dev,grub_disk_cache_invalidate_all (); -grub_file_filter_disable_compression (); file =grub_file_open (core_path_dev);if (file) {
@@ -117,7 +116,6 @@ grub_install_get_blocklist (grub_device_t root_dev,grub_file_t file;/* Now read the core image to determine where the sectors are. */ -grub_file_filter_disable_compression (); file =grub_file_open (core_path_dev);if (! file)grub_util_error ("%s" , grub_errmsg);
PATCH v3 1/1 arm64/xen: Fix implicit declaration of function ‘grub_file_filter_disable_compression'
From: Lee Jones <[email protected]>
arm64/xen: Fix implicit declaration of function ‘grub_file_filter_disable_compression'
Without this fix, building xen_boot.c emits:
loader/arm64/xen_boot.c:433:5: error: implicit declaration of function ‘grub_file_filter_disable_compression’; did you mean ‘grub_file_filter_unregister’? [-Werror=implicit-function-declaration]
grub_file_filter_disable_compression ();
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
grub_file_filter_unregisterloader/arm64/xen_boot.c:433:5: error: nested extern declaration of ‘grub_file_filter_disable_compression’ [-Werror=nested-externs]
grub-core/loader/arm64/xen_boot.c +3 -3
@@ -429,9 +429,9 @@ grub_cmd_xen_module (grub_command_t cmd __attribute__((unused)),grub_dprintf ("xen_loader" ,"Init module and node info\n" ); -if (nounzip) -grub_file_filter_disable_compression (); - file =grub_file_open (argv[0 ],GRUB_FILE_TYPE_LINUX_KERNEL ); + file =grub_file_open (argv[0 ],GRUB_FILE_TYPE_LINUX_KERNEL + | (nounzip ?GRUB_FILE_TYPE_NO_DECOMPRESS + :GRUB_FILE_TYPE_NONE ));if (!file) goto fail;
Re: [PATCH v3 (part 1)] arm64/xen: Fix implicit declaration of function ‘grub_file_filter_disable_compression'
Quoted 6 lines · Lee Jones
From: Lee Jones <[email protected]>
arm64/xen: Fix implicit declaration of function ‘grub_file_filter_disable_compression'
Without this fix, building
xen_boot.cemits:
Quoted 7 lines
loader/arm64/xen_boot.c:433:5: error: implicit declaration of function ‘grub_file_filter_disable_compression’; did you mean ‘grub_file_filter_unregister’? [-Werror=implicit-function-declaration]grub_file_filter_disable_compression (); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ grub_file_filter_unregister
loader/arm64/xen_boot.c:433:5: error: nested extern declaration of ‘grub_file_filter_disable_compression’ [-Werror=nested-externs]Signed-off-by Lee Jones <[email protected]>
I have not pushed this patch because it depends on "arm64/xen: Fix too few arguments to function ‘grub_file_open’" patch.
Daniel
PATCH v3 1/1 generic/blocklist: Fix implicit declaration of function ‘grub_file_filter_disable_compression'
In reply to Lee JonesFrom: Lee Jones <[email protected]>
generic/blocklist: Fix implicit declaration of function ‘grub_file_filter_disable_compression'
grub_file_filter_disable_compression() no longer exists.
grub-core/osdep/generic/blocklist.c +2 -4
@@ -59,8 +59,7 @@ grub_install_get_blocklist (grub_device_t root_dev,grub_disk_cache_invalidate_all (); -grub_file_filter_disable_compression (); - file =grub_file_open (core_path_dev); + file =grub_file_open (core_path_dev,FILE_TYPE_NO_DECOMPRESS );if (file) {if (grub_file_size (file) != core_size)
@@ -117,8 +116,7 @@ grub_install_get_blocklist (grub_device_t root_dev,grub_file_t file;/* Now read the core image to determine where the sectors are. */ -grub_file_filter_disable_compression (); - file =grub_file_open (core_path_dev); + file =grub_file_open (core_path_dev,FILE_TYPE_NO_DECOMPRESS );if (! file)grub_util_error ("%s" , grub_errmsg);
Re: [PATCH v3 (part 2)] generic/blocklist: Fix implicit declaration of function ‘grub_file_filter_disable_compression'
LGTM
Quoted 39 lines · On Tue, 20 Nov 2018, 14:40 Lee Jones, <[email protected]> wrote:
From: Lee Jones <[email protected]>
generic/blocklist: Fix implicit declaration of function ‘grub_file_filter_disable_compression'
grub_file_filter_disable_compression()no longer exists.Signed-off-by Lee Jones <[email protected]>grub-core/osdep/generic/blocklist.c +2
-4@@ -59,8 +59,7 @@ grub_install_get_blocklist (grub_device_t root_dev,grub_disk_cache_invalidate_all (); -grub_file_filter_disable_compression (); - file =grub_file_open (core_path_dev); + file =grub_file_open (core_path_dev,FILE_TYPE_NO_DECOMPRESS );if (file) {if (grub_file_size (file) != core_size)@@ -117,8 +116,7 @@ grub_install_get_blocklist (grub_device_t root_dev,grub_file_t file;/* Now read the core image to determine where the sectors are. */ -grub_file_filter_disable_compression (); - file =grub_file_open (core_path_dev); + file =grub_file_open (core_path_dev,FILE_TYPE_NO_DECOMPRESS );if (! file)grub_util_error ("%s" , grub_errmsg);_______________________________________________
Grub-devel mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/grub-devel
Re: [PATCH v3 (part 2)] generic/blocklist: Fix implicit declaration of function ‘grub_file_filter_disable_compression'
In reply to Lee JonesQuoted 7 lines · Lee Jones
From: Lee Jones <[email protected]>
generic/blocklist: Fix implicit declaration of function ‘grub_file_filter_disable_compression'
grub_file_filter_disable_compression()no longer exists.Signed-off-by Lee Jones <[email protected]>
Pushed with two minor changes. Thanks a lot!
Daniel
arm64/xen: Fix too few arguments to function ‘grub_file_open’
In reply to Daniel KiperFrom: Lee Jones <[email protected]>
arm64/xen: Fix too few arguments to function ‘grub_file_open’
Without this fix xen_boot.c omits:
loader/arm64/xen_boot.c: In function ‘grub_cmd_xen_module’:loader/arm64/xen_boot.c:424:10: error: too few arguments to function ‘grub_file_open’
file = grub_file_open (argv[0]);
^~~~~~~~~~~~~~
In file included from ../include/grub/cache.h:23:0,
from loader/arm64/xen_boot.c:19:
../include/grub/file.h:204:25: note: declared here
grub_file_t EXPORT_FUNC(grub_file_open) (const char *name, enum grub_file_type type);
^
../include/grub/symbol.h:68:25: note: in definition of macro ‘EXPORT_FUNC’
# define EXPORT_FUNC(x) x
^
loader/arm64/xen_boot.c: In function ‘grub_cmd_xen_hypervisor’:
loader/arm64/xen_boot.c:456:10: error: too few arguments to function ‘grub_file_open’
file = grub_file_open (argv[0]);
^~~~~~~~~~~~~~grub-core/loader/arm64/xen_boot.c +2 -2
@@ -421,7 +421,7 @@ grub_cmd_xen_module (grub_command_t cmd __attribute__((unused)),grub_dprintf ("xen_loader" ,"Init module and node info\n" ); - file =grub_file_open (argv[0 ]); + file =grub_file_open (argv[0 ],GRUB_FILE_TYPE_NONE );if (!file) goto fail;
@@ -453,7 +453,7 @@ grub_cmd_xen_hypervisor (grub_command_t cmd __attribute__ ((unused)), goto fail; } - file =grub_file_open (argv[0 ]); + file =grub_file_open (argv[0 ],GRUB_FILE_TYPE_NONE );if (!file) goto fail;
Re: arm64/xen: Fix too few arguments to function ‘grub_file_open’
Hi Lee,
Quoted 39 lines · Lee Jones
From: Lee Jones <[email protected]>
arm64/xen: Fix too few arguments to function ‘grub_file_open’
Without this fix
xen_boot.comits:
loader/arm64/xen_boot.c: In function ‘grub_cmd_xen_module’:loader/arm64/xen_boot.c:424:10: error: too few arguments to function ‘grub_file_open’file = grub_file_open (argv[0]); ^~~~~~~~~~~~~~ In file included from ../include/grub/cache.h:23:0, from loader/arm64/xen_boot.c:19: ../include/grub/file.h:204:25: note: declared here grub_file_t EXPORT_FUNC(grub_file_open) (const char *name, enum grub_file_type type); ^ ../include/grub/symbol.h:68:25: note: in definition of macro ‘EXPORT_FUNC’ # define EXPORT_FUNC(x) x ^ loader/arm64/xen_boot.c: In function ‘grub_cmd_xen_hypervisor’: loader/arm64/xen_boot.c:456:10: error: too few arguments to function ‘grub_file_open’ file = grub_file_open (argv[0]); ^~~~~~~~~~~~~~Signed-off-by Lee Jones <[email protected]>grub-core/loader/arm64/xen_boot.c +1
-1@@ -421,7 +421,7 @@ grub_cmd_xen_module (grub_command_t cmd __attribute__((unused)),grub_dprintf ("xen_loader" ,"Init module and node info\n" ); - file =grub_file_open (argv[0 ]); + file =grub_file_open (argv[0 ],GRUB_FILE_TYPE_NONE );if (!file) goto fail;
grub-core/loader/arm64/xen_boot.c grub_cmd_xen_hypervisor (grub_command_t cmd __attribute__ ((unused)), · line 456
Quoted 5 lines
grub-core/loader/arm64/xen_boot.c +1
-1@@ -453,7 +453,7 @@ grub_cmd_xen_hypervisor (grub_command_t cmd __attribute__ ((unused)), goto fail; } - file =grub_file_open (argv[0 ]); + file =grub_file_open (argv[0 ],GRUB_FILE_TYPE_NONE );
I would prefer if we try to keep the type similar to x86 Xen. In that case it would be GRUB_FILE_TYPE_LINUX_KERNEL.
Cheers,
Signature · 1 line
Julien Grall
Re: arm64/xen: Fix too few arguments to function ‘grub_file_open’
Quoted 36 lines · Julien Grall
Hi Lee,
Quoted 33 lines · Lee Jones
From: Lee Jones <[email protected]>
arm64/xen: Fix too few arguments to function ‘grub_file_open’
Without this fixxen_boot.comits:loader/arm64/xen_boot.c: In function ‘grub_cmd_xen_module’:loader/arm64/xen_boot.c:424:10: error: too few arguments to function ‘grub_file_open’file = grub_file_open (argv[0]); ^~~~~~~~~~~~~~ In file included from ../include/grub/cache.h:23:0, from loader/arm64/xen_boot.c:19: ../include/grub/file.h:204:25: note: declared here grub_file_t EXPORT_FUNC(grub_file_open) (const char *name, enum grub_file_type type); ^ ../include/grub/symbol.h:68:25: note: in definition of macro ‘EXPORT_FUNC’ # define EXPORT_FUNC(x) x ^ loader/arm64/xen_boot.c: In function ‘grub_cmd_xen_hypervisor’: loader/arm64/xen_boot.c:456:10: error: too few arguments to function ‘grub_file_open’ file = grub_file_open (argv[0]); ^~~~~~~~~~~~~~Signed-off-by Lee Jones <[email protected]>grub-core/loader/arm64/xen_boot.c +1
-1@@ -421,7 +421,7 @@ grub_cmd_xen_module (grub_command_t cmd __attribute__((unused)),grub_dprintf ("xen_loader" ,"Init module and node info\n" ); - file =grub_file_open (argv[0 ]); + file =grub_file_open (argv[0 ],GRUB_FILE_TYPE_NONE );if (!file) goto fail;
Quoted 8 lines
grub-core/loader/arm64/xen_boot.c grub_cmd_xen_hypervisor (grub_command_t cmd __attribute__ ((unused)), · line 455
Quoted 5 lines
grub-core/loader/arm64/xen_boot.c +1
-1@@ -453,7 +453,7 @@ grub_cmd_xen_hypervisor (grub_command_t cmd __attribute__ ((unused)), goto fail; } - file =grub_file_open (argv[0 ]); + file =grub_file_open (argv[0 ],GRUB_FILE_TYPE_NONE );I would prefer if we try to keep the type similar to x86 Xen. In that case it would be
GRUB_FILE_TYPE_LINUX_KERNEL.
Thanks Julien. Will fix.
Signature · 4 lines
Lee Jones [李琼斯] Linaro Services Technical Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
PATCH v2 1/1 arm64/xen: Fix too few arguments to function ‘grub_file_open’
In reply to Lee JonesFrom: Lee Jones <[email protected]>
arm64/xen: Fix too few arguments to function ‘grub_file_open’
Without this fix xen_boot.c omits:
loader/arm64/xen_boot.c: In function ‘grub_cmd_xen_module’:loader/arm64/xen_boot.c:424:10: error: too few arguments to function ‘grub_file_open’
file = grub_file_open (argv[0]);
^~~~~~~~~~~~~~
In file included from ../include/grub/cache.h:23:0,
from loader/arm64/xen_boot.c:19:
../include/grub/file.h:204:25: note: declared here
grub_file_t EXPORT_FUNC(grub_file_open) (const char *name, enum grub_file_type type);
^
../include/grub/symbol.h:68:25: note: in definition of macro ‘EXPORT_FUNC’
# define EXPORT_FUNC(x) x
^
loader/arm64/xen_boot.c: In function ‘grub_cmd_xen_hypervisor’:
loader/arm64/xen_boot.c:456:10: error: too few arguments to function ‘grub_file_open’
file = grub_file_open (argv[0]);
^~~~~~~~~~~~~~grub-core/loader/arm64/xen_boot.c +2 -2
@@ -427,7 +427,7 @@ grub_cmd_xen_module (grub_command_t cmd __attribute__((unused)),grub_dprintf ("xen_loader" ,"Init module and node info\n" ); - file =grub_file_open (argv[0 ]); + file =grub_file_open (argv[0 ],GRUB_FILE_TYPE_LINUX_KERNEL );if (!file) goto fail;
@@ -459,7 +459,7 @@ grub_cmd_xen_hypervisor (grub_command_t cmd __attribute__ ((unused)), goto fail; } - file =grub_file_open (argv[0 ]); + file =grub_file_open (argv[0 ],GRUB_FILE_TYPE_LINUX_KERNEL );if (!file) goto fail;
Re: [PATCH v2] arm64/xen: Fix too few arguments to function ‘grub_file_open’
Quoted 39 lines · Lee Jones
From: Lee Jones <[email protected]>
arm64/xen: Fix too few arguments to function ‘grub_file_open’
Without this fix
xen_boot.comits:
loader/arm64/xen_boot.c: In function ‘grub_cmd_xen_module’:loader/arm64/xen_boot.c:424:10: error: too few arguments to function ‘grub_file_open’file = grub_file_open (argv[0]); ^~~~~~~~~~~~~~ In file included from ../include/grub/cache.h:23:0, from loader/arm64/xen_boot.c:19: ../include/grub/file.h:204:25: note: declared here grub_file_t EXPORT_FUNC(grub_file_open) (const char *name, enum grub_file_type type); ^ ../include/grub/symbol.h:68:25: note: in definition of macro ‘EXPORT_FUNC’ # define EXPORT_FUNC(x) x ^ loader/arm64/xen_boot.c: In function ‘grub_cmd_xen_hypervisor’: loader/arm64/xen_boot.c:456:10: error: too few arguments to function ‘grub_file_open’ file = grub_file_open (argv[0]); ^~~~~~~~~~~~~~Signed-off-by Lee Jones <[email protected]>grub-core/loader/arm64/xen_boot.c +1
-1@@ -427,7 +427,7 @@ grub_cmd_xen_module (grub_command_t cmd __attribute__((unused)),grub_dprintf ("xen_loader" ,"Init module and node info\n" ); - file =grub_file_open (argv[0 ]); + file =grub_file_open (argv[0 ],GRUB_FILE_TYPE_LINUX_KERNEL );if (!file) goto fail;
grub-core/loader/arm64/xen_boot.c grub_cmd_xen_hypervisor (grub_command_t cmd __attribute__ ((unused)), · line 462
Quoted 5 lines
grub-core/loader/arm64/xen_boot.c +1
-1@@ -459,7 +459,7 @@ grub_cmd_xen_hypervisor (grub_command_t cmd __attribute__ ((unused)), goto fail; } - file =grub_file_open (argv[0 ]); + file =grub_file_open (argv[0 ],GRUB_FILE_TYPE_LINUX_KERNEL );
Please introduce GRUB_FILE_TYPE_XEN_HYPERVISOR and GRUB_FILE_TYPE_XEN_MODULE. You can put both of them behind GRUB_FILE_TYPE_MULTIBOOT_MODULE.
Daniel
arm64/xen: Fix too few arguments to function ‘grub_create_loader_cmdline’
In reply to Daniel KiperFrom: Lee Jones <[email protected]>
arm64/xen: Fix too few arguments to function ‘grub_create_loader_cmdline’
Without this fix, building xen_boot.c omits:
loader/arm64/xen_boot.c: In function ‘xen_boot_binary_load’:loader/arm64/xen_boot.c:370:7: error: too few arguments to function ‘grub_create_loader_cmdline’
grub_create_loader_cmdline (argc - 1, argv + 1, binary->cmdline,
^~~~~~~~~~~~~~~~~~~~~~~~~~In file included from loader/arm64/xen_boot.c:36:0:../include/grub/lib/cmdline.h:29:12: note: declared here
grub_err_t grub_create_loader_cmdline (int argc, char *argv[], char *buf,
grub-core/loader/arm64/xen_boot.c +2 -1
@@ -368,7 +368,8 @@ xen_boot_binary_load (struct xen_boot_binary *binary, grub_file_t file,return ; }grub_create_loader_cmdline (argc -1 , argv +1 , binary->cmdline, - binary->cmdline_size); + binary->cmdline_size, +GRUB_VERIFY_KERNEL_CMDLINE );grub_dprintf ("xen_loader" ,"Xen_boot cmdline @ %p %s, size: %d\n" , binary->cmdline, binary->cmdline, binary->cmdline_size);
Julien Grall
Reviewed-byRe: arm64/xen: Fix too few arguments to function ‘grub_create_loader_cmdline’
Quoted 8 lines · Lee Jones
From: Lee Jones <[email protected]>
arm64/xen: Fix too few arguments to function ‘grub_create_loader_cmdline’
Without this fix, building
xen_boot.comits:
loader/arm64/xen_boot.c: In function ‘xen_boot_binary_load’:loader/arm64/xen_boot.c:370:7: error: too few arguments to function ‘grub_create_loader_cmdline’
Quoted 7 lines
grub_create_loader_cmdline (argc - 1, argv + 1, binary->cmdline, ^~~~~~~~~~~~~~~~~~~~~~~~~~In file included from
loader/arm64/xen_boot.c:36:0:../include/grub/lib/cmdline.h:29:12: note: declared here
grub_err_tgrub_create_loader_cmdline(int argc, char *argv[], char *buf,Signed-off-by Lee Jones <[email protected]>
Cheers,
Quoted 16 lines
grub-core/loader/arm64/xen_boot.c +2
-1@@ -368,7 +368,8 @@ xen_boot_binary_load (struct xen_boot_binary *binary, grub_file_t file,return ; }grub_create_loader_cmdline (argc -1 , argv +1 , binary->cmdline, - binary->cmdline_size); + binary->cmdline_size, +GRUB_VERIFY_KERNEL_CMDLINE );grub_dprintf ("xen_loader" ,"Xen_boot cmdline @ %p %s, size: %d\n" , binary->cmdline, binary->cmdline, binary->cmdline_size);
Signature · 1 line
Julien Grall
Re: arm64/xen: Fix too few arguments to function ‘grub_create_loader_cmdline’
In reply to Lee JonesQuoted 8 lines · Lee Jones
From: Lee Jones <[email protected]>
arm64/xen: Fix too few arguments to function ‘grub_create_loader_cmdline’
Without this fix, building
xen_boot.comits:
loader/arm64/xen_boot.c: In function ‘xen_boot_binary_load’:loader/arm64/xen_boot.c:370:7: error: too few arguments to function ‘grub_create_loader_cmdline’
Quoted 7 lines
grub_create_loader_cmdline (argc - 1, argv + 1, binary->cmdline, ^~~~~~~~~~~~~~~~~~~~~~~~~~In file included from
loader/arm64/xen_boot.c:36:0:../include/grub/lib/cmdline.h:29:12: note: declared here
grub_err_tgrub_create_loader_cmdline(int argc, char *argv[], char *buf,Signed-off-by Lee Jones <[email protected]>
Pushed despite it had malformed tabs. Next time please use "git format-patch" and "git send-email" to build and send the patches.
Daniel
Re: arm64/xen: Fix too few arguments to function ‘grub_create_loader_cmdline’
Quoted 15 lines · Daniel Kiper
Quoted 14 lines · Lee Jones
From: Lee Jones <[email protected]>
arm64/xen: Fix too few arguments to function ‘grub_create_loader_cmdline’
Without this fix, building
xen_boot.comits:
loader/arm64/xen_boot.c: In function ‘xen_boot_binary_load’:loader/arm64/xen_boot.c:370:7: error: too few arguments to function ‘grub_create_loader_cmdline’grub_create_loader_cmdline (argc - 1, argv + 1, binary->cmdline, ^~~~~~~~~~~~~~~~~~~~~~~~~~In file included from
loader/arm64/xen_boot.c:36:0:../include/grub/lib/cmdline.h:29:12: note: declared here
grub_err_tgrub_create_loader_cmdline(int argc, char *argv[], char *buf,
Quoted 4 lines
Quoted 1 line
Signed-off-by Lee Jones <[email protected]>Pushed despite it had malformed tabs. Next time please use "git format-patch" and "git send-email" to build and send the patches.
I normally do this (for my kernel work), but Leif asked me to reply directly to this mail (since I am not set-up for Grub).
If I continue to contribute, I'll set something up more enduring.
Thank you for your help.
Signature · 4 lines
Lee Jones [李琼斯] Linaro Services Technical Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
arm64/xen: Remove duplicate check for arguments
In reply to Daniel KiperFrom: Lee Jones <[email protected]>
arm64/xen: Remove duplicate check for arguments
grub-core/loader/arm64/xen_boot.c +0 -6
@@ -404,12 +404,6 @@ grub_cmd_xen_module (grub_command_t cmd __attribute__((unused)), argc--; } -if (!argc) - { -grub_error (GRUB_ERR_BAD_ARGUMENT ,N_ ("filename expected" )); - goto fail; - } -if (!loaded) { grub_error (GRUB_ERR_BAD_ARGUMENT,
Re: arm64/xen: Remove duplicate check for arguments
Quoted 4 lines · On Tue, 20 Nov 2018, 14:40 Lee Jones, <[email protected]> wrote:
From: Lee Jones <[email protected]>
arm64/xen: Remove duplicate check for arguments
It's not duplicate because of argc-- right before it
Quoted 28 lines
Signed-off-by Lee Jones <[email protected]>grub-core/loader/arm64/xen_boot.c +0
-6@@ -404,12 +404,6 @@ grub_cmd_xen_module (grub_command_t cmd __attribute__((unused)), argc--; } -if (!argc) - { -grub_error (GRUB_ERR_BAD_ARGUMENT ,N_ ("filename expected" )); - goto fail; - } -if (!loaded) {
grub_error(GRUB_ERR_BAD_ARGUMENT,_______________________________________________
Grub-devel mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/grub-devel
Quoted 9 lines · Leif Lindholm
The verifiers framework caused some breakage for non-x86 platforms that need fixing.
Basically, this boils down to:
- Add an include guard forverify.h.
- Add a new file type for device tree blobs.
- Fix an error added toarm64/linux.c.
- Add file types togrub_file_opencalls.
Quoted 8 lines
Note: only the common and arm64 fixes have actually been tested.
Fu Wei, Julien - can you guys have a look at fixing
arm64/xen_boot.c? I'm not 100% certain how multiboot should be handled.Cc Fu Wei <[email protected]>Cc Julien Grall <[email protected]>Reported-by Alexander Graf <[email protected]>
Thanks a lot! Pushed!
By the way, have you cross compiled GRUB2 ARM stuff on x86? I would like to add ARM builds to my test suite and I do not want to reinvent the wheel.
Daniel
Quoted 19 lines · Daniel Kiper
Quoted 9 lines · Leif Lindholm
The verifiers framework caused some breakage for non-x86 platforms that need fixing.
Basically, this boils down to:
- Add an include guard forverify.h.
- Add a new file type for device tree blobs.
- Fix an error added toarm64/linux.c.
- Add file types togrub_file_opencalls.Quoted 8 lines
Note: only the common and arm64 fixes have actually been tested.
Fu Wei, Julien - can you guys have a look at fixing
arm64/xen_boot.c? I'm not 100% certain how multiboot should be handled.Cc Fu Wei <[email protected]>Cc Julien Grall <[email protected]>Reported-by Alexander Graf <[email protected]>
Quoted 5 lines
Thanks a lot! Pushed!
By the way, have you cross compiled GRUB2 ARM stuff on x86? I would like to add ARM builds to my test suite and I do not want to reinvent the wheel.
Yeah, when I started in 2012, we didn't exactly have arm64 hardware :)
(And sometimes these days I'm still on x86.)
--target=aarch64-linux-gnu or --target=arm-linux-gnueabihf "just works" with the caveat that 32-bit defaults to the U-Boot API version, so needs --with-platform=efi for building the UEFI (including U-Boot) flavour.
Several distros package cross compilation toolchains for both above targets. Otherwise, latest (gcc 8) can be found at
https://developer.arm.com/open-source/gnu-toolchain/gnu-a/downloads
and less bleeding edge ones can be found under
https://releases.linaro.org/components/toolchain/binaries/
My smoke test is building an image with grub-mkstandalone and loading a distro kernel/initrd in qemu with EDK2 images from
https://releases.linaro.org/reference-platform/enterprise/firmware/18.02/release/
qemu-system-arm -M virt -cpu cortex-a15 -m 1024M -bios QEMU_EFI.fd -hda fat:rw:fatdir/ -nographic -net none qemu-system-aarch64 -M virt -cpu cortex-a57 -m 1024M -bios QEMU_EFI.fd -hda fat:rw:fatdir/ -nographic -net none
(I do that even when building/testing natively.)
/
Leif