summaryrefslogtreecommitdiff
path: root/sys-boot/gnu-efi/files/gnu-efi-3.0.18-refind.patch
blob: d198426c46351dd0467f1fc7e2c24a00717b1605 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
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;
 }