summaryrefslogtreecommitdiff
path: root/sys-boot/gnu-efi/files/gnu-efi-3.0.18-refind.patch
diff options
context:
space:
mode:
Diffstat (limited to 'sys-boot/gnu-efi/files/gnu-efi-3.0.18-refind.patch')
-rw-r--r--sys-boot/gnu-efi/files/gnu-efi-3.0.18-refind.patch126
1 files changed, 126 insertions, 0 deletions
diff --git a/sys-boot/gnu-efi/files/gnu-efi-3.0.18-refind.patch b/sys-boot/gnu-efi/files/gnu-efi-3.0.18-refind.patch
new file mode 100644
index 000000000000..d198426c4635
--- /dev/null
+++ b/sys-boot/gnu-efi/files/gnu-efi-3.0.18-refind.patch
@@ -0,0 +1,126 @@
+https://github.com/ncroxon/gnu-efi/commit/f5bb548df572c992fe3389a586bec3a19b092c18
+https://github.com/ncroxon/gnu-efi/commit/6b9dae0bef0fab82230a6672eaadd38d739e3e1e
+
+From f5bb548df572c992fe3389a586bec3a19b092c18 Mon Sep 17 00:00:00 2001
+From: Callum Farmer <gmbr3@opensuse.org>
+Date: Thu, 25 Apr 2024 15:27:26 +0100
+Subject: [PATCH] Align RTLIB CopyMem/SetMem with normal versions
+
+Looks like 699e452654df6de53890ae994756b0d47237e3ac broke rEFInd
+(https://sourceforge.net/p/refind/code/ci/189e405630293445df8565e36b831bba56e87093/)
+--- a/inc/efirtlib.h
++++ b/inc/efirtlib.h
+@@ -45,6 +45,7 @@ RtZeroMem (
+ );
+
+ VOID
++EFIAPI
+ RUNTIMEFUNCTION
+ RtSetMem (
+ IN VOID *Buffer,
+@@ -53,10 +54,11 @@ RtSetMem (
+ );
+
+ VOID
++EFIAPI
+ RUNTIMEFUNCTION
+ RtCopyMem (
+ IN VOID *Dest,
+- IN CONST VOID *Src,
++ IN VOID *Src,
+ IN UINTN len
+ );
+
+--- a/lib/runtime/efirtlib.c
++++ b/lib/runtime/efirtlib.c
+@@ -42,6 +42,7 @@ RtZeroMem (
+ #pragma RUNTIME_CODE(RtSetMem)
+ #endif
+ VOID
++EFIAPI
+ RUNTIMEFUNCTION
+ RtSetMem (
+ IN VOID *Buffer,
+@@ -61,10 +62,11 @@ RtSetMem (
+ #pragma RUNTIME_CODE(RtCopyMem)
+ #endif
+ VOID
++EFIAPI
+ RUNTIMEFUNCTION
+ RtCopyMem (
+ IN VOID *Dest,
+- IN CONST VOID *Src,
++ IN VOID *Src,
+ IN UINTN len
+ )
+ {
+
+From 6b9dae0bef0fab82230a6672eaadd38d739e3e1e Mon Sep 17 00:00:00 2001
+From: Callum Farmer <gmbr3@opensuse.org>
+Date: Sat, 27 Apr 2024 13:14:28 +0100
+Subject: [PATCH] Fixup string functions for new CopyMem
+
+Signed-off-by: Callum Farmer <gmbr3@opensuse.org>
+--- a/lib/runtime/rtstr.c
++++ b/lib/runtime/rtstr.c
+@@ -69,10 +69,13 @@ RtStrnCpy (
+ )
+ // copy strings
+ {
++ CHAR16 CopySrc = *Src;
++ CHAR16 *PCopySrc = &CopySrc;
++
+ UINTN Size = RtStrnLen(Src, Len);
+ if (Size != Len)
+ RtSetMem(Dest + Size, (Len - Size) * sizeof(CHAR16), '\0');
+- RtCopyMem(Dest, Src, Size * sizeof(CHAR16));
++ RtCopyMem(Dest, PCopySrc, Size * sizeof(CHAR16));
+ }
+
+ #ifndef __GNUC__
+@@ -105,10 +108,13 @@ RtStpnCpy (
+ )
+ // copy strings
+ {
++ CHAR16 CopySrc = *Src;
++ CHAR16 *PCopySrc = &CopySrc;
++
+ UINTN Size = RtStrnLen(Src, Len);
+ if (Size != Len)
+ RtSetMem(Dest + Size, (Len - Size) * sizeof(CHAR16), '\0');
+- RtCopyMem(Dest, Src, Size * sizeof(CHAR16));
++ RtCopyMem(Dest, PCopySrc, Size * sizeof(CHAR16));
+ return Dest + Size;
+ }
+
+@@ -137,10 +143,12 @@ RtStrnCat (
+ )
+ {
+ UINTN DestSize, Size;
++ CHAR16 CopySrc = *Src;
++ CHAR16 *PCopySrc = &CopySrc;
+
+ DestSize = RtStrLen(Dest);
+ Size = RtStrnLen(Src, Len);
+- RtCopyMem(Dest + DestSize, Src, Size * sizeof(CHAR16));
++ RtCopyMem(Dest + DestSize, PCopySrc, Size * sizeof(CHAR16));
+ Dest[DestSize + Size] = '\0';
+ }
+
+--- a/lib/str.c
++++ b/lib/str.c
+@@ -201,11 +201,13 @@ StrDuplicate (
+ {
+ CHAR16 *Dest;
+ UINTN Size;
++ CHAR16 CopySrc = *Src;
++ CHAR16 *PCopySrc = &CopySrc;
+
+ Size = StrSize(Src);
+ Dest = AllocatePool (Size);
+ if (Dest) {
+- CopyMem (Dest, (void *)Src, Size);
++ CopyMem (Dest, PCopySrc, Size);
+ }
+ return Dest;
+ }