diff --git a/programming/library/gnu-efi/actions.py b/programming/library/gnu-efi/actions.py index 1d717a8c15..8bbf7a8667 100644 --- a/programming/library/gnu-efi/actions.py +++ b/programming/library/gnu-efi/actions.py @@ -10,11 +10,17 @@ from pisi.actionsapi import shelltools from pisi.actionsapi import get def build(): + pisitools.ldflags.remove("-Wl,-z,relro") + pisitools.ldflags.remove("-Wl,-O1") + pisitools.ldflags.remove("-Wl,--hash-style=gnu") + pisitools.ldflags.remove("-Wl,--as-needed") + pisitools.ldflags.remove("-Wl,--sort-common") shelltools.system("sed -e 's/-Werror//g' -i Make.defaults") - options="lib gnuefi inc" + options="PREFIX='/usr' lib gnuefi inc apps" autotools.make(options) + def install(): autotools.rawInstall("INSTALLROOT=%s \ PREFIX='/usr'" % get.installDIR()) diff --git a/programming/library/gnu-efi/files/fedora/gnu-efi-backports.patch b/programming/library/gnu-efi/files/fedora/gnu-efi-backports.patch new file mode 100644 index 0000000000..030a888b6d --- /dev/null +++ b/programming/library/gnu-efi/files/fedora/gnu-efi-backports.patch @@ -0,0 +1,130 @@ +diff --git a/Make.defaults b/Make.defaults +index 0068e31..775e287 100755 +--- a/Make.defaults ++++ b/Make.defaults +@@ -199,7 +199,7 @@ endif + ARFLAGS := rDv + ASFLAGS += $(ARCH3264) + LDFLAGS += -nostdlib --warn-common --no-undefined --fatal-warnings \ +- --build-id=sha1 -z nocombreloc ++ --build-id=sha1 -z nocombreloc -z norelro + + ifneq ($(ARCH),arm) + export LIBGCC=$(shell $(CC) $(CFLAGS) $(ARCH3264) -print-libgcc-file-name) +diff --git a/inc/efirtlib.h b/inc/efirtlib.h +index 518859e..68320bc 100644 +--- 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 + ); + +diff --git a/lib/runtime/efirtlib.c b/lib/runtime/efirtlib.c +index 434db91..f7b6fba 100644 +--- 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 + ) + { +diff --git a/lib/runtime/rtstr.c b/lib/runtime/rtstr.c +index 802e7f4..902e075 100644 +--- 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'; + } + +diff --git a/lib/str.c b/lib/str.c +index a2f8750..0752e06 100644 +--- 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; + } diff --git a/programming/library/gnu-efi/pspec.xml b/programming/library/gnu-efi/pspec.xml index 23d0ad0610..2a0ba63beb 100644 --- a/programming/library/gnu-efi/pspec.xml +++ b/programming/library/gnu-efi/pspec.xml @@ -13,7 +13,10 @@ Libry Develop EFI applications for ARM-64, ARM-32, x86_64, IA-64 (IPF), and IA-32 (x86) platforms using the GNU toolchain and the EFI development environment.. GNU toolchain and the EFI development environment.. - https://sourceforge.net/projects/gnu-efi/files/gnu-efi-3.0.15.tar.bz2 + https://sourceforge.net/projects/gnu-efi/files/gnu-efi-3.0.18.tar.bz2 + + fedora/gnu-efi-backports.patch + @@ -26,6 +29,13 @@ + + 2024-07-01 + 3.0.18 + Version bump. + Pisi Linux Community + admin@pisilinux.org + 2023-03-12 3.0.15