* [PATCH v3] grub-core: Build fixes for i386
@ 2021-05-26 18:18 Jan (janneke) Nieuwenhuizen
2021-05-27 14:43 ` Daniel Kiper
0 siblings, 1 reply; 2+ messages in thread
From: Jan (janneke) Nieuwenhuizen @ 2021-05-26 18:18 UTC (permalink / raw)
To: grub-devel
This fixes cross-compiling to x86 (e.g., the Hurd) from x86-linux of
grub-core/lib/i386/relocator64.S
This file has six sections that only build with a 64-bit assembler,
yet only the first two sections had support for a 32-bit assembler;
this patch completes this for the remaining sections.
To reproduce, update the GRUB source description in your local Guix
archive and run
./pre-inst-env guix build --system=i686-linux --target=i586-pc-gnu grub
or install an x86 cross-build environment on x86-linux (32-bit!) and
configure to cross build and make, e.g., do something like
./configure \
CC_FOR_BUILD=gcc \
--build=i686-unknown-linux-gnu \
--host=i586-pc-gnu
make
Signed-off-by: Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
---
grub-core/lib/i386/relocator64.S | 27 +++++++++++++++++++++++++--
1 file changed, 25 insertions(+), 2 deletions(-)
diff --git a/grub-core/lib/i386/relocator64.S b/grub-core/lib/i386/relocator64.S
index 148f38adb..b8b1f896b 100644
--- a/grub-core/lib/i386/relocator64.S
+++ b/grub-core/lib/i386/relocator64.S
@@ -63,7 +63,9 @@ VARIABLE(grub_relocator64_cr3)
movq %rax, %cr3
#endif
+#ifdef __x86_64__
.code64
+#endif
/* mov imm64, %rax */
.byte 0x48
@@ -71,7 +73,14 @@ VARIABLE(grub_relocator64_cr3)
VARIABLE(grub_relocator64_rsp)
.quad 0
+#ifdef __x86_64__
movq %rax, %rsp
+#else
+ /* movq %rax, %rsp */
+ .byte 0x48
+ .byte 0x89
+ .byte 0xc4
+#endif
#ifdef GRUB_MACHINE_EFI
jmp LOCAL(skip_efi_stack_align)
@@ -85,7 +94,14 @@ VARIABLE(grub_relocator64_rsp)
*/
VARIABLE(grub_relocator64_efi_start)
/* Align the stack as UEFI spec requires. */
+#ifdef __x86_64__
andq $~15, %rsp
+#else
+ .byte 0x48
+ .byte 0x83
+ .byte 0xe4
+ .byte 0xf0
+#endif
LOCAL(skip_efi_stack_align):
#endif
@@ -95,8 +111,15 @@ LOCAL(skip_efi_stack_align):
VARIABLE(grub_relocator64_rsi)
.quad 0
+#ifdef __x86_64__
movq %rax, %rsi
-
+#else
+ /* movq %rax, %rsi */
+ .byte 0x48
+ .byte 0x89
+ .byte 0xc6
+#endif
+
/* mov imm64, %rax */
.byte 0x48
.byte 0xb8
@@ -125,7 +148,7 @@ VARIABLE(grub_relocator64_rdx)
payload and makes this implementation easier. */
cld
-#ifdef __APPLE__
+#if defined (__APPLE__) || !defined (__x86_64__)
.byte 0xff, 0x25
.quad 0
#else
--
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH v3] grub-core: Build fixes for i386
2021-05-26 18:18 [PATCH v3] grub-core: Build fixes for i386 Jan (janneke) Nieuwenhuizen
@ 2021-05-27 14:43 ` Daniel Kiper
0 siblings, 0 replies; 2+ messages in thread
From: Daniel Kiper @ 2021-05-27 14:43 UTC (permalink / raw)
To: Jan (janneke) Nieuwenhuizen; +Cc: grub-devel
On Wed, May 26, 2021 at 08:18:24PM +0200, Jan (janneke) Nieuwenhuizen wrote:
> This fixes cross-compiling to x86 (e.g., the Hurd) from x86-linux of
>
> grub-core/lib/i386/relocator64.S
>
> This file has six sections that only build with a 64-bit assembler,
> yet only the first two sections had support for a 32-bit assembler;
> this patch completes this for the remaining sections.
>
> To reproduce, update the GRUB source description in your local Guix
> archive and run
>
> ./pre-inst-env guix build --system=i686-linux --target=i586-pc-gnu grub
>
> or install an x86 cross-build environment on x86-linux (32-bit!) and
> configure to cross build and make, e.g., do something like
>
> ./configure \
> CC_FOR_BUILD=gcc \
> --build=i686-unknown-linux-gnu \
> --host=i586-pc-gnu
> make
>
> Signed-off-by: Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com> except these "empty"
line changes. Though I will fix them before committing...
Thank you for fixing this issue...
Daniel
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2021-05-27 14:43 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-26 18:18 [PATCH v3] grub-core: Build fixes for i386 Jan (janneke) Nieuwenhuizen
2021-05-27 14:43 ` Daniel Kiper
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.