Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package gnu-efi for openSUSE:Factory checked 
in at 2025-12-08 11:53:03
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gnu-efi (Old)
 and      /work/SRC/openSUSE:Factory/.gnu-efi.new.1939 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gnu-efi"

Mon Dec  8 11:53:03 2025 rev:39 rq:1321434 version:4.0.4

Changes:
--------
--- /work/SRC/openSUSE:Factory/gnu-efi/gnu-efi.changes  2025-05-27 
18:50:44.078135257 +0200
+++ /work/SRC/openSUSE:Factory/.gnu-efi.new.1939/gnu-efi.changes        
2025-12-08 11:53:31.928426418 +0100
@@ -1,0 +2,11 @@
+Sun Dec  7 12:12:21 UTC 2025 - Callum Farmer <[email protected]>
+
+- Update to version 4.0.4:
+  * Make setjmp/longjmp ISO C
+  * Shim 16.1 updates
+  * efibind: fix stdint.h #if operator precedence
+  * Fix -Wstrict-prototypes warnings
+  * Fix syslinux issue + user CFLAGS/LDFLAGS
+  * Shim 16 updates + IsZeroGuid
+
+-------------------------------------------------------------------

Old:
----
  gnu-efi-4.0.1.tar.gz

New:
----
  gnu-efi-4.0.4.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ gnu-efi.spec ++++++
--- /var/tmp/diff_new_pack.LSHC1J/_old  2025-12-08 11:53:32.652456751 +0100
+++ /var/tmp/diff_new_pack.LSHC1J/_new  2025-12-08 11:53:32.656456918 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           gnu-efi
-Version:        4.0.1
+Version:        4.0.4
 Release:        0
 Summary:        Library for EFI Applications
 License:        BSD-3-Clause AND GPL-2.0-or-later
@@ -58,7 +58,7 @@
 %make_build LINUX_HEADERS=%{_prefix}/src/linux LIBDIR=%{_libdir} 
PREFIX=%{_prefix}
 
 %install
-%make_install INSTALLROOT=%{buildroot} LIBDIR=%{_libdir} PREFIX=%{_prefix}
+%make_install LIBDIR=%{_libdir} PREFIX=%{_prefix}
 
 %files devel
 %{_includedir}/efi

++++++ gnu-efi-4.0.1.tar.gz -> gnu-efi-4.0.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/.github/workflows/linux-gcc-musl.yml 
new/gnu-efi-4.0.4/.github/workflows/linux-gcc-musl.yml
--- old/gnu-efi-4.0.1/.github/workflows/linux-gcc-musl.yml      2025-05-16 
16:11:33.000000000 +0200
+++ new/gnu-efi-4.0.4/.github/workflows/linux-gcc-musl.yml      2025-12-06 
13:01:47.000000000 +0100
@@ -22,7 +22,7 @@
         sudo apt-get install ${{ matrix.musl }}
 
     - name: Checkout repository
-      uses: actions/checkout@v4
+      uses: actions/checkout@v6
       with:
         fetch-depth: 0
 
@@ -38,7 +38,7 @@
       run: readelf -a ./${{ matrix.dir }}/apps/ctors_dtors_priority_test.so > 
./${{ matrix.dir }}/apps/readelf.txt
 
     - name: Upload artifacts
-      uses: actions/upload-artifact@v4
+      uses: actions/upload-artifact@v5
       with:
         name: ${{ matrix.arch }}
         path: |
@@ -65,12 +65,12 @@
         sudo apt-get -y --no-install-recommends install ${{ matrix.pkg }}
 
     - name: Checkout repository
-      uses: actions/checkout@v4
+      uses: actions/checkout@v6
       with:
         fetch-depth: 0
 
     - name: Download artifacts
-      uses: actions/download-artifact@v4
+      uses: actions/download-artifact@v6
       with:
         name: ${{ matrix.arch }}
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/.github/workflows/linux-gcc.yml 
new/gnu-efi-4.0.4/.github/workflows/linux-gcc.yml
--- old/gnu-efi-4.0.1/.github/workflows/linux-gcc.yml   2025-05-16 
16:11:33.000000000 +0200
+++ new/gnu-efi-4.0.4/.github/workflows/linux-gcc.yml   2025-12-06 
13:01:47.000000000 +0100
@@ -43,7 +43,7 @@
     steps:
       # Must happens first or else the LoongArch toolchain gets deleted
     - name: Checkout repository
-      uses: actions/checkout@v4
+      uses: actions/checkout@v6
       with:
         fetch-depth: 0
 
@@ -64,7 +64,7 @@
       run: readelf -a ./${{ matrix.dir }}/apps/ctors_dtors_priority_test.so > 
./${{ matrix.dir }}/apps/readelf.txt
 
     - name: Upload artifacts
-      uses: actions/upload-artifact@v4
+      uses: actions/upload-artifact@v5
       with:
         name: ${{ matrix.arch }}
         path: |
@@ -115,12 +115,12 @@
         sudo apt-get -y --no-install-recommends install ${{ matrix.pkg }}
 
     - name: Checkout repository
-      uses: actions/checkout@v4
+      uses: actions/checkout@v6
       with:
         fetch-depth: 0
 
     - name: Download artifacts
-      uses: actions/download-artifact@v4
+      uses: actions/download-artifact@v6
       with:
         name: ${{ matrix.arch }}
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/.github/workflows/linux-llvm.yml 
new/gnu-efi-4.0.4/.github/workflows/linux-llvm.yml
--- old/gnu-efi-4.0.1/.github/workflows/linux-llvm.yml  2025-05-16 
16:11:33.000000000 +0200
+++ new/gnu-efi-4.0.4/.github/workflows/linux-llvm.yml  2025-12-06 
13:01:47.000000000 +0100
@@ -22,7 +22,7 @@
         sudo apt-get install gcc-${{ matrix.gcc }} clang lld
 
     - name: Checkout repository
-      uses: actions/checkout@v4
+      uses: actions/checkout@v6
       with:
         fetch-depth: 0
 
@@ -33,7 +33,7 @@
       run: readelf -a ./${{ matrix.dir }}/apps/ctors_dtors_priority_test.so > 
./${{ matrix.dir }}/apps/readelf.txt
 
     - name: Upload artifacts
-      uses: actions/upload-artifact@v4
+      uses: actions/upload-artifact@v5
       with:
         name: ${{ matrix.arch }}
         path: |
@@ -59,12 +59,12 @@
         sudo apt-get -y --no-install-recommends install ${{ matrix.pkg }}
 
     - name: Checkout repository
-      uses: actions/checkout@v4
+      uses: actions/checkout@v6
       with:
         fetch-depth: 0
 
     - name: Download artifacts
-      uses: actions/download-artifact@v4
+      uses: actions/download-artifact@v6
       with:
         name: ${{ matrix.arch }}
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/.github/workflows/linux-mingw.yml 
new/gnu-efi-4.0.4/.github/workflows/linux-mingw.yml
--- old/gnu-efi-4.0.1/.github/workflows/linux-mingw.yml 2025-05-16 
16:11:33.000000000 +0200
+++ new/gnu-efi-4.0.4/.github/workflows/linux-mingw.yml 2025-12-06 
13:01:47.000000000 +0100
@@ -21,7 +21,7 @@
 
     steps:
     - name: Checkout repository and submodules
-      uses: actions/checkout@v4
+      uses: actions/checkout@v6
       with:
         fetch-depth: 0
 
@@ -32,7 +32,7 @@
       run: make ARCH=${{ matrix.arch }} CROSS_COMPILE=${{ matrix.tuple }}
 
     - name: Upload artifacts
-      uses: actions/upload-artifact@v4
+      uses: actions/upload-artifact@v5
       with:
         name: ${{ matrix.arch }}
         path: ./${{ matrix.dir }}/apps/*.efi
@@ -63,12 +63,12 @@
         sudo apt-get -y --no-install-recommends install ${{ matrix.pkg }}
 
     - name: Checkout repository
-      uses: actions/checkout@v4
+      uses: actions/checkout@v6
       with:
         fetch-depth: 0
 
     - name: Download artifacts
-      uses: actions/download-artifact@v4
+      uses: actions/download-artifact@v6
       with:
         name: ${{ matrix.arch }}
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/.github/workflows/macos-gcc.yml 
new/gnu-efi-4.0.4/.github/workflows/macos-gcc.yml
--- old/gnu-efi-4.0.1/.github/workflows/macos-gcc.yml   2025-05-16 
16:11:33.000000000 +0200
+++ new/gnu-efi-4.0.4/.github/workflows/macos-gcc.yml   2025-12-06 
13:01:47.000000000 +0100
@@ -34,7 +34,7 @@
         brew install ${{ matrix.toolchain }}
 
     - name: Checkout repository
-      uses: actions/checkout@v4
+      uses: actions/checkout@v6
       with:
         fetch-depth: 0
 
@@ -46,7 +46,7 @@
       run: ${{ matrix.cross_compile }}readelf -a ./${{ matrix.dir 
}}/apps/ctors_dtors_priority_test.so > ./${{ matrix.dir }}/apps/readelf.txt
 
     - name: Upload artifacts
-      uses: actions/upload-artifact@v4
+      uses: actions/upload-artifact@v5
       with:
         name: ${{ matrix.arch }}
         path: |
@@ -88,12 +88,12 @@
         sudo apt-get -y --no-install-recommends install ${{ matrix.pkg }}
 
     - name: Checkout repository
-      uses: actions/checkout@v4
+      uses: actions/checkout@v6
       with:
         fetch-depth: 0
 
     - name: Download artifacts
-      uses: actions/download-artifact@v4
+      uses: actions/download-artifact@v6
       with:
         name: ${{ matrix.arch }}
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/.github/workflows/windows-mingw.yml 
new/gnu-efi-4.0.4/.github/workflows/windows-mingw.yml
--- old/gnu-efi-4.0.1/.github/workflows/windows-mingw.yml       2025-05-16 
16:11:33.000000000 +0200
+++ new/gnu-efi-4.0.4/.github/workflows/windows-mingw.yml       2025-12-06 
13:01:47.000000000 +0100
@@ -35,7 +35,7 @@
           git
 
     - name: Checkout repository
-      uses: actions/checkout@v4
+      uses: actions/checkout@v6
       with:
         fetch-depth: 0
 
@@ -43,7 +43,7 @@
       run: make
 
     - name: Upload artifacts
-      uses: actions/upload-artifact@v4
+      uses: actions/upload-artifact@v5
       with:
         name: ${{ matrix.arch }}
         path: ./${{ matrix.dir }}/apps/*.efi
@@ -74,12 +74,12 @@
         sudo apt-get -y --no-install-recommends install ${{ matrix.pkg }}
 
     - name: Checkout repository
-      uses: actions/checkout@v4
+      uses: actions/checkout@v6
       with:
         fetch-depth: 0
 
     - name: Download artifacts
-      uses: actions/download-artifact@v4
+      uses: actions/download-artifact@v6
       with:
         name: ${{ matrix.arch }}
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/.github/workflows/windows-vs2022.yml 
new/gnu-efi-4.0.4/.github/workflows/windows-vs2022.yml
--- old/gnu-efi-4.0.1/.github/workflows/windows-vs2022.yml      2025-05-16 
16:11:33.000000000 +0200
+++ new/gnu-efi-4.0.4/.github/workflows/windows-vs2022.yml      2025-12-06 
13:01:47.000000000 +0100
@@ -13,7 +13,7 @@
 
     steps:
     - name: Checkout repository
-      uses: actions/checkout@v4
+      uses: actions/checkout@v6
       with:
         fetch-depth: 0
 
@@ -27,7 +27,7 @@
       run: msbuild ./gnu-efi.sln /m /p:Configuration=${{ matrix.conf 
}},Platform=${{ matrix.arch }}
 
     - name: Upload artifacts
-      uses: actions/upload-artifact@v4
+      uses: actions/upload-artifact@v5
       if: ${{ matrix.conf == 'Release' }}
       with:
         name: ${{ matrix.arch }}
@@ -64,12 +64,12 @@
         sudo apt-get -y --no-install-recommends install ${{ matrix.pkg }}
 
     - name: Checkout repository
-      uses: actions/checkout@v4
+      uses: actions/checkout@v6
       with:
         fetch-depth: 0
 
     - name: Download artifacts
-      uses: actions/download-artifact@v4
+      uses: actions/download-artifact@v6
       with:
         name: ${{ matrix.arch }}
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/Make.defaults 
new/gnu-efi-4.0.4/Make.defaults
--- old/gnu-efi-4.0.1/Make.defaults     2025-05-16 16:11:33.000000000 +0200
+++ new/gnu-efi-4.0.4/Make.defaults     2025-12-06 13:01:47.000000000 +0100
@@ -50,6 +50,14 @@
 INSTALLROOT = $(DESTDIR)
 endif
 
+EFI_CFLAGS := 
+USER_CFLAGS := $(CFLAGS)
+override CFLAGS = $(EFI_CFLAGS) $(USER_CFLAGS)
+EFI_LDFLAGS := 
+USER_LDFLAGS := $(LDFLAGS)
+override LDFLAGS = $(EFI_LDFLAGS) $(USER_LDFLAGS)
+
+
 empty :=
 space := $(empty) $(empty)
 stripped = $(subst $(space),/,$(strip $(subst /,$(space),$(1))))
@@ -151,33 +159,33 @@
 #
 
 # Arch-specific compilation flags
-CPPFLAGS += -DCONFIG_$(ARCH)
+EFI_CFLAGS += -DCONFIG_$(ARCH)
 
-CFLAGS += -Wno-error=pragmas
+EFI_CFLAGS += -Wno-error=pragmas
 
 ifeq ($(ARCH),ia64)
-  CFLAGS += -mfixed-range=f32-f127
+  EFI_CFLAGS += -mfixed-range=f32-f127
 endif
 
 ifeq ($(ARCH),ia32)
-  CFLAGS += -mno-mmx -mno-sse
+  EFI_CFLAGS += -mno-mmx -mno-sse
   ifeq ($(HOSTARCH),x86_64)
     ARCH3264 = -m32
   endif
 endif
 
 # Set ISO C mode
-CPPFLAGS += -std=c11
+EFI_CFLAGS += -std=c11
 
 ifeq ($(ARCH),x86_64)
   ifeq ($(GCCNEWENOUGH),1)
-    CPPFLAGS += -DGNU_EFI_USE_MS_ABI
+    EFI_CFLAGS += -DGNU_EFI_USE_MS_ABI
     ifneq ($(USING_CLANG),clang)
-      CPPFLAGS +=  -maccumulate-outgoing-args
+      EFI_CFLAGS +=  -maccumulate-outgoing-args
     endif
   endif
 
-  CFLAGS += -mno-red-zone
+  EFI_CFLAGS += -mno-red-zone
   ifeq ($(HOSTARCH),ia32)
     ARCH3264 = -m64
   endif
@@ -187,12 +195,12 @@
   # Disable AVX, if the compiler supports that.
   CC_CAN_DISABLE_AVX=$(shell $(CC) -Werror -c -o /dev/null -xc -mno-avx - 
</dev/null >/dev/null 2>&1 && echo 1)
   ifeq ($(CC_CAN_DISABLE_AVX), 1)
-    CFLAGS += -mno-avx
+    EFI_CFLAGS += -mno-avx
   endif
 endif
 
 ifeq ($(ARCH),mips64el)
-  CFLAGS += -march=mips64r2
+  EFI_CFLAGS += -march=mips64r2
   ARCH3264 = -mabi=64
 endif
 
@@ -235,39 +243,39 @@
 
 
 ifeq ($(USING_APPLE),1)
-CFLAGS += -D__GNU_EFI_NO_GLIBC
+EFI_CFLAGS += -D__GNU_EFI_NO_GLIBC
 endif
 
 ifeq ($(NO_GLIBC),1)
-CFLAGS += -D__GNU_EFI_NO_GLIBC
+EFI_CFLAGS += -D__GNU_EFI_NO_GLIBC
 endif
 
 ifeq ($(ARCH),arm)
-CFLAGS += -marm
+EFI_CFLAGS += -marm
 endif
 
 ifneq (,$(filter $(ARCH),aarch64 arm loongarch64))
-LDFLAGS += -z common-page-size=4096
-LDFLAGS += -z max-page-size=4096
+EFI_LDFLAGS += -z common-page-size=4096
+EFI_LDFLAGS += -z max-page-size=4096
 endif
 
 # Generic compilation flags
 INCDIR  += -I$(SRCDIR) -I$(TOPDIR)/inc -I$(TOPDIR)/inc/$(ARCH) \
            -I$(TOPDIR)/inc/protocol
 
-# Only enable -fPIE for non MinGW compilers (unneeded on MinGW)
+# Only enable -fPIC for non MinGW compilers (unneeded on MinGW)
 GCCMACHINE := $(shell $(CC) -dumpmachine)
 IS_MINGW32 := $(findstring mingw32, $(GCCMACHINE))
 ifeq ($(IS_MINGW32),)
-  CFLAGS += -fPIE
+  EFI_CFLAGS += -fPIC
 endif
 
 ifeq ($(USING_FREEBSD),1)
-CFLAGS  += $(ARCH3264) -g -O2 -Wall -Wextra -Werror \
+EFI_CFLAGS  += $(ARCH3264) -g -O2 -Wall -Wextra -Wstrict-prototypes -Werror \
            -fno-strict-aliasing \
            -ffreestanding -fno-stack-protector
 else
-CFLAGS  += $(ARCH3264) -g -O2 -Wall -Wextra -Werror \
+EFI_CFLAGS  += $(ARCH3264) -g -O2 -Wall -Wextra -Wstrict-prototypes -Werror \
            -fno-strict-aliasing \
            -ffreestanding -fno-stack-protector \
            $(if $(findstring 0,$(USING_CLANG)),-fno-merge-all-constants,)
@@ -276,13 +284,13 @@
 # Force DWARF 4 on LLVM
 # Otherwise readelf becomes very unhappy
 ifeq ($(USING_CLANG),clang)
-CFLAGS += -gdwarf-4
+EFI_CFLAGS += -gdwarf-4
 endif
 
 # Force hard float (for library mismatch)
 ifeq ($(ARCH),arm)
 ifeq ($(USING_APPLE),1)
-CFLAGS += -mfloat-abi=hard -mfpu=vfpv2
+EFI_CFLAGS += -mfloat-abi=hard -mfpu=vfpv2
 endif
 endif
 
@@ -292,15 +300,15 @@
 ARFLAGS := rD
 endif
 ASFLAGS += $(ARCH3264)
-LDFLAGS += -nostdlib 
+EFI_LDFLAGS += -nostdlib 
 ifeq ($(IS_MINGW32),)
-  LDFLAGS += --warn-common --no-undefined --fatal-warnings \
+  EFI_LDFLAGS += --warn-common --no-undefined --fatal-warnings \
              --build-id=sha1
   ifeq ($(USING_APPLE),0)
-  LDFLAGS += -z norelro -z nocombreloc
+  EFI_LDFLAGS += -z norelro -z nocombreloc
   endif
 else
-  LDFLAGS += -Wl,--warn-common -Wl,--no-undefined -Wl,--fatal-warnings \
+  EFI_LDFLAGS += -Wl,--warn-common -Wl,--no-undefined -Wl,--fatal-warnings \
              -Wl,--build-id=sha1
 endif
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/Make.rules new/gnu-efi-4.0.4/Make.rules
--- old/gnu-efi-4.0.1/Make.rules        2025-05-16 16:11:33.000000000 +0200
+++ new/gnu-efi-4.0.4/Make.rules        2025-12-06 13:01:47.000000000 +0100
@@ -59,29 +59,29 @@
 
 %.so: %.o
        @$(ECHO) "  LD       $(notdir $@)"
-       $(HIDE)$(LD) $(LDFLAGS) $^ -o $@ $(LOADLIBES)
+       $(HIDE)$(LD) $(LDFLAGS) $(SUBSYSTEM_DEFINES) $^ -o $@ $(LOADLIBES)
 else
 %.efi: %.o
        @$(ECHO) "  CCLD     $(notdir $@)"
-       $(HIDE)$(CC) $(LDFLAGS) $< -o $@ $(LOADLIBES)
+       $(HIDE)$(CC) $(LDFLAGS) $(SUBSYSTEM_DEFINES) $< -o $@ $(LOADLIBES)
 endif
 
 %.o: %.c
        @$(ECHO) "  CC       $(notdir $@)"
-       $(HIDE)$(CC) $(INCDIR) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
+       $(HIDE)$(CC) $(INCDIR) $(CFLAGS) -c $< -o $@
 
 %.s: %.c
        @$(ECHO) "  CC       $(notdir $@)"
-       $(HIDE)$(CC) $(INCDIR) $(CFLAGS) $(CPPFLAGS) -S $< -o $@
+       $(HIDE)$(CC) $(INCDIR) $(CFLAGS) -S $< -o $@
 
 %.i: %.c
        @$(ECHO) "  CPP      $(notdir $@)"
-       $(HIDE)$(CC) $(INCDIR) $(CFLAGS) $(CPPFLAGS) -E $< -o $@
+       $(HIDE)$(CC) $(INCDIR) $(CFLAGS) -E $< -o $@
 
 %.o: %.S
-       @$(ECHO) "  CC       $(notdir $@)"
-       $(HIDE)$(CC) $(INCDIR) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
+       @$(ECHO) "  AS       $(notdir $@)"
+       $(HIDE)$(CC) $(INCDIR) $(CFLAGS) -c $< -o $@
 
 %.s: %.S
        @$(ECHO) "  CPP      $(notdir $@)"
-       $(HIDE)$(CC) $(INCDIR) $(CFLAGS) $(CPPFLAGS) -E $< -o $@
+       $(HIDE)$(CC) $(INCDIR) $(CFLAGS) -E $< -o $@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/Makefile new/gnu-efi-4.0.4/Makefile
--- old/gnu-efi-4.0.1/Makefile  2025-05-16 16:11:33.000000000 +0200
+++ new/gnu-efi-4.0.4/Makefile  2025-12-06 13:01:47.000000000 +0100
@@ -34,7 +34,7 @@
 #    SUCH DAMAGE.
 #
 
-export VERSION = 4.0.0
+export VERSION = 4.0.3
 
 MKFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
 VPATH ?= $(dir $(MKFILE_PATH))
@@ -65,7 +65,6 @@
        @echo ASFLAGS=$(ASFLAGS)
        @echo CC=$(CC)
        @echo CFLAGS=$(CFLAGS)
-       @echo CPPFLAGS=$(CPPFLAGS)
        @echo GCCMINOR=$(GCCMINOR)
        @echo GCCNEWENOUGH=$(GCCNEWENOUGH)
        @echo GCCVERSION=$(GCCVERSION)
@@ -101,7 +100,6 @@
                mkdir -p $(OBJDIR)/$$d; \
                $(MAKE) -C $(OBJDIR)/$$d -f $(SRCDIR)/$$d/Makefile 
VPATH=$(SRCDIR)/$$d install; done
 
-.PHONY:        $(SUBDIRS) clean depend
 
 #
 # on both platforms you must use gcc 3.0 or higher 
@@ -136,3 +134,6 @@
        @rm -rf /tmp/gnu-efi-$(VERSION)
        @echo "The archive is in gnu-efi-$(VERSION).tar.bz2"
 
+.PHONY:        all $(SUBDIRS) clean depend install tag archive mkvars 
check_gcc test-archive
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/apps/Makefile 
new/gnu-efi-4.0.4/apps/Makefile
--- old/gnu-efi-4.0.1/apps/Makefile     2025-05-16 16:11:33.000000000 +0200
+++ new/gnu-efi-4.0.4/apps/Makefile     2025-12-06 13:01:47.000000000 +0100
@@ -42,7 +42,7 @@
 
 LINUX_HEADERS  = /usr/src/sys/build
 APPSDIR                = $(LIBDIR)/gnuefi/apps
-CPPFLAGS       += -D__KERNEL__ -I$(LINUX_HEADERS)/include
+EFI_CFLAGS     += -D__KERNEL__ -I$(LINUX_HEADERS)/include
 
 ifneq ($(HAVE_EFI_OBJCOPY),)
 ifeq ($(SYSTEM_HAS_EFI_OBJCOPY),0)
@@ -63,11 +63,16 @@
 ifeq ($(USING_FREEBSD),1)
 LDSCRIPT       = $(TOPDIR)/gnuefi/elf_$(ARCH)_fbsd_efi.lds
 endif
-LDFLAGS                += -L$(TOPDIR)/$(ARCH)/lib -L$(TOPDIR)/$(ARCH)/gnuefi 
$(CRTOBJS)
+EFI_LDFLAGS            += -L$(TOPDIR)/$(ARCH)/lib -L$(TOPDIR)/$(ARCH)/gnuefi 
$(CRTOBJS)
 LOADLIBES      += -T $(LDSCRIPT)
 endif
 
-LDFLAGS                += -shared -Bsymbolic -L$(TOPDIR)/$(ARCH)/lib
+EFI_LDFLAGS            += -pie -Bsymbolic -L$(TOPDIR)/$(ARCH)/lib
+
+ifeq ($(IS_MINGW32),)
+EFI_CFLAGS      += -fPIE
+EFI_LDFLAGS     += --no-dynamic-linker
+endif
 
 LOADLIBES      += -lefi $(CRT0_LIBS)
 LOADLIBES      += $(LIBGCC)
@@ -75,7 +80,7 @@
 TARGET_APPS  = t.efi t2.efi t3.efi t4.efi t5.efi t6.efi t7.efi t8.efi \
                tcc.efi printenv.efi modelist.efi route80h.efi drv0_use.efi \
                AllocPages.efi exit.efi FreePages.efi bltgrid.efi \
-               lfbgrid.efi setdbg.efi unsetdbg.efi old_ABI.efi
+               lfbgrid.efi setdbg.efi unsetdbg.efi old_ABI.efi check_print.efi
 ifeq ($(IS_MINGW32),)
 TARGET_APPS += setjmp.efi debughook.efi debughook.efi.debug \
                ctors_test.efi ctors_dtors_priority_test.efi
@@ -99,18 +104,19 @@
 $(TARGET_RTDRIVERS): FORMAT=-O efi-rtdrv-$(ARCH)
 
 ifneq ($(IS_MINGW32),)
-LDFLAGS     += -s -Wl,-dll -Wl,--subsystem,$(SUBSYSTEM) 
+EFI_LDFLAGS += -s -Wl,-dll
+SUBSYSTEM_DEFINES = -Wl,--subsystem,$(SUBSYSTEM)
 ifeq ($(ARCH),ia32)
-LDFLAGS     += -e _efi_main
+EFI_LDFLAGS     += -e _efi_main
 else
-LDFLAGS     += -e efi_main
+EFI_LDFLAGS     += -e efi_main
 endif
 endif
 
 else
 
 FORMAT         := -O binary
-LDFLAGS                += --defsym=EFI_SUBSYSTEM=$(SUBSYSTEM)
+SUBSYSTEM_DEFINES = --defsym=EFI_SUBSYSTEM=$(SUBSYSTEM)
 
 endif
 
@@ -127,6 +133,6 @@
        mkdir -p $(INSTALLROOT)$(APPSDIR)
        $(INSTALL) -m 644 $(TARGETS) $(INSTALLROOT)$(APPSDIR)
 
-.PHONY: install
+.PHONY: all clean install
 
 include $(SRCDIR)/../Make.rules
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/apps/check_print.c 
new/gnu-efi-4.0.4/apps/check_print.c
--- old/gnu-efi-4.0.1/apps/check_print.c        1970-01-01 01:00:00.000000000 
+0100
+++ new/gnu-efi-4.0.4/apps/check_print.c        2025-12-06 13:01:47.000000000 
+0100
@@ -0,0 +1,24 @@
+#include "lib.h"
+
+void check_len_sprint(void) {
+    CHAR8 buf1[200];
+    CHAR16 buf2[200];
+    UINTN len1;
+    UINTN len2;
+    CONST CHAR8 *str1 = (CHAR8*)"This is a test\n";
+    CONST CHAR16 *str2 = u"This is a test\n";
+    len1 = AsciiSPrint(buf1, sizeof(buf1), (CHAR8*)"%a\n", str1);
+    len2 = UnicodeSPrint(buf2, sizeof(buf2), u"%s\n", str2);
+    if (len1 != len2) { Print(u"Length Error!\r\n"); }
+    if (len1 == len2) { Print(u"Length OK!\r\n"); }
+    Print(u"%u\r\n", len1);
+    Print(u"%u\r\n", len2);
+}
+
+EFI_STATUS
+efi_main (EFI_HANDLE image EFI_UNUSED, EFI_SYSTEM_TABLE *systab EFI_UNUSED)
+{
+    check_len_sprint();
+    return EFI_SUCCESS;
+}
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/apps/ctors_dtors_priority_test.c 
new/gnu-efi-4.0.4/apps/ctors_dtors_priority_test.c
--- old/gnu-efi-4.0.1/apps/ctors_dtors_priority_test.c  2025-05-16 
16:11:33.000000000 +0200
+++ new/gnu-efi-4.0.4/apps/ctors_dtors_priority_test.c  2025-12-06 
13:01:47.000000000 +0100
@@ -2,22 +2,22 @@
 #include <efilib.h>
 
 // 101 in init_array, 65434 in ctors
-static void __attribute__((constructor(101))) EFI_NO_TAIL_CALL ctors101() {
+static void __attribute__((constructor(101))) EFI_NO_TAIL_CALL ctors101(void) {
     Print(u"1) ctor with lower numbered priority \r\n");
 }
 
 // 65434 in init_array, 101 in ctors
-static void __attribute__((constructor(65434))) EFI_NO_TAIL_CALL ctors65434() {
+static void __attribute__((constructor(65434))) EFI_NO_TAIL_CALL 
ctors65434(void) {
     Print(u"2) ctor with higher numbered priority \r\n");
 }
 
 // 101 in fini_array, 65434 in dtors
-static void __attribute__((destructor(101))) EFI_NO_TAIL_CALL dtors101() {
+static void __attribute__((destructor(101))) EFI_NO_TAIL_CALL dtors101(void) {
     Print(u"4) dtor with lower numbered priority \r\n");
 }
 
 // 65434 in fini_array, 101 in dtors
-static void __attribute__((destructor(65434))) EFI_NO_TAIL_CALL dtors65434() {
+static void __attribute__((destructor(65434))) EFI_NO_TAIL_CALL 
dtors65434(void) {
     Print(u"3) dtor with higher numbered priority \r\n");
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/apps/printenv.c 
new/gnu-efi-4.0.4/apps/printenv.c
--- old/gnu-efi-4.0.1/apps/printenv.c   2025-05-16 16:11:33.000000000 +0200
+++ new/gnu-efi-4.0.4/apps/printenv.c   2025-12-06 13:01:47.000000000 +0100
@@ -12,7 +12,7 @@
        InitializeLib(image, systab);
 
        name[0] = 0;
-       vendor = NullGuid;
+       vendor = gZeroGuid;
 
        Print(u"GUID                                Variable Name        
Value\n");
        Print(u"=================================== ==================== 
========\n");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/apps/setjmp.c 
new/gnu-efi-4.0.4/apps/setjmp.c
--- old/gnu-efi-4.0.1/apps/setjmp.c     2025-05-16 16:11:33.000000000 +0200
+++ new/gnu-efi-4.0.4/apps/setjmp.c     2025-12-06 13:01:47.000000000 +0100
@@ -1,7 +1,6 @@
 
 #include <efi.h>
 #include <efilib.h>
-#include <efisetjmp.h>
 
 EFI_STATUS
 efi_main(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/gnuefi/Makefile 
new/gnu-efi-4.0.4/gnuefi/Makefile
--- old/gnu-efi-4.0.1/gnuefi/Makefile   2025-05-16 16:11:33.000000000 +0200
+++ new/gnu-efi-4.0.4/gnuefi/Makefile   2025-12-06 13:01:47.000000000 +0100
@@ -75,16 +75,17 @@
   efi_machine_type_name=mips64
 endif
 
-# on aarch64, avoid jump tables before all relocations have been processed
-reloc_aarch64.o: CFLAGS += -fno-jump-tables
-
 ifneq (,$(filter $(ARCH),aarch64 riscv64 ia32))
 CRT0_LOCAL_TARGET = crt0-efi-$(ARCH)-local.o
 endif
 
-TARGETS        = crt0-efi-$(ARCH).o libgnuefi.a $(CRT0_LOCAL_TARGET)
+LIBS = crt0-efi-$(ARCH).o libgnuefi.a $(CRT0_LOCAL_TARGET)
+TARGETS        = $(LIBS) gnu-efi.pc
 
-all:   $(TARGETS) gnu-efi.pc
+all:   $(TARGETS)
+
+# on aarch64, avoid jump tables before all relocations have been processed
+reloc_aarch64.o: EFI_CFLAGS += -fno-jump-tables
 
 libgnuefi.a: $(OBJS)
        @$(ECHO) "  AR       $(notdir $@)"
@@ -105,11 +106,11 @@
 
 
 clean:
-       @rm -vf $(TARGETS) *~ *.o $(OBJS) gnu-efi.pc
+       @rm -vf $(TARGETS) *~ *.o $(OBJS)
 
 install:
        mkdir -p $(INSTALLROOT)$(LIBDIR)
-       $(INSTALL) -m 644 $(TARGETS) $(INSTALLROOT)$(LIBDIR)
+       $(INSTALL) -m 644 $(LIBS) $(INSTALLROOT)$(LIBDIR)
 ifneq (,$(filter $(ARCH),x86_64 ia32))
        $(INSTALL) -m 644 $(SRCDIR)/elf_$(ARCH)_fbsd_efi.lds 
$(INSTALLROOT)$(LIBDIR)
 endif
@@ -120,4 +121,6 @@
        $(INSTALL) -d $(INSTALLROOT)$(PKGCONFIGDIR)
        $(INSTALL) -m 644 gnu-efi.pc $(INSTALLROOT)$(PKGCONFIGDIR)
 
+.PHONY: all clean install
+
 include $(SRCDIR)/../Make.rules
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/inc/Makefile 
new/gnu-efi-4.0.4/inc/Makefile
--- old/gnu-efi-4.0.1/inc/Makefile      2025-05-16 16:11:33.000000000 +0200
+++ new/gnu-efi-4.0.4/inc/Makefile      2025-12-06 13:01:47.000000000 +0100
@@ -23,4 +23,6 @@
        $(INSTALL) -m 644 $(SRCDIR)/protocol/ia64/*.h 
$(INSTALLROOT)$(INCLUDEDIR)/efi/protocol/ia64
 endif
 
+.PHONY: all clean install
+
 include $(SRCDIR)/../Make.rules
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/inc/aarch64/efibind.h 
new/gnu-efi-4.0.4/inc/aarch64/efibind.h
--- old/gnu-efi-4.0.1/inc/aarch64/efibind.h     2025-05-16 16:11:33.000000000 
+0200
+++ new/gnu-efi-4.0.4/inc/aarch64/efibind.h     2025-12-06 13:01:47.000000000 
+0100
@@ -156,5 +156,5 @@
 
 #define INTERFACE_DECL(x) struct x
 
-#define uefi_call_wrapper(func, va_num, ...) func(__VA_ARGS__)
+#define uefi_call_wrapper(func, va_num, ...) (func)(__VA_ARGS__)
 #define EFI_FUNCTION
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/inc/arm/efibind.h 
new/gnu-efi-4.0.4/inc/arm/efibind.h
--- old/gnu-efi-4.0.1/inc/arm/efibind.h 2025-05-16 16:11:33.000000000 +0200
+++ new/gnu-efi-4.0.4/inc/arm/efibind.h 2025-12-06 13:01:47.000000000 +0100
@@ -164,5 +164,5 @@
 
 #define INTERFACE_DECL(x) struct x
 
-#define uefi_call_wrapper(func, va_num, ...) func(__VA_ARGS__)
+#define uefi_call_wrapper(func, va_num, ...) (func)(__VA_ARGS__)
 #define EFI_FUNCTION
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/inc/efiapi.h 
new/gnu-efi-4.0.4/inc/efiapi.h
--- old/gnu-efi-4.0.1/inc/efiapi.h      2025-05-16 16:11:33.000000000 +0200
+++ new/gnu-efi-4.0.4/inc/efiapi.h      2025-12-06 13:01:47.000000000 +0100
@@ -754,6 +754,7 @@
 typedef
 EFI_STATUS
 (EFIAPI *EFI_RESERVED_SERVICE) (
+    VOID
     );
 
 //
@@ -1030,5 +1031,75 @@
 
 } EFI_SYSTEM_TABLE;
 
-#endif
 
+//
+// Not technically EFI, but oh well.
+//
+
+#define EFI_DXE_SERVICES_TABLE_SIGNATURE        0x565245535f455844ULL
+
+typedef enum {
+    EFI_GCD_MEMORY_TYPE_NON_EXISTENT,
+    EFI_GCD_MEMORY_TYPE_RESERVED,
+    EFI_GCD_MEMORY_TYPE_SYSTEM_MEMORY,
+    EFI_GCD_MEMORY_TYPE_MEMORY_MAPPED_IO,
+    EFI_GCD_MEMORY_TYPE_PERSISTENT,
+    EFI_GCD_MEMORY_TYPE_MORE_RELIABLE,
+    EFI_GCD_MEMORY_TYPE_MAXIMUM
+} EFI_GCD_MEMORY_TYPE_T;
+
+#define DXE_SERVICES_TABLE_GUID \
+  { \
+    0x5ad34ba, 0x6f02, 0x4214, {0x95, 0x2e, 0x4d, 0xa0, 0x39, 0x8e, 0x2b, 0xb9 
} \
+  }
+
+struct _EFI_GCD_MEMORY_SPACE_DESCRIPTOR {
+    EFI_PHYSICAL_ADDRESS            BaseAddress;
+    UINT64                          Length;
+    UINT64                          Capabilities;
+    UINT64                          Attributes;
+    EFI_GCD_MEMORY_TYPE_T           GcdMemoryType;
+    EFI_HANDLE                      ImageHandle;
+    EFI_HANDLE                      DeviceHandle;
+} __attribute__((__packed__));
+
+typedef struct _EFI_GCD_MEMORY_SPACE_DESCRIPTOR 
EFI_GCD_MEMORY_SPACE_DESCRIPTOR;
+
+typedef
+EFI_STATUS
+(EFIAPI *GET_MEMORY_SPACE_DESCRIPTOR) (
+    IN EFI_PHYSICAL_ADDRESS     BaseAddress,
+    OUT EFI_GCD_MEMORY_SPACE_DESCRIPTOR *Desc
+    );
+
+typedef
+EFI_STATUS
+(EFIAPI *SET_MEMORY_SPACE_ATTRIBUTES) (
+    IN EFI_PHYSICAL_ADDRESS     BaseAddress,
+    IN UINT64                   Length,
+    IN UINT64                   Attributes
+    );
+
+typedef struct _EFI_DXE_SERVICES_TABLE {
+    EFI_TABLE_HEADER                Hdr;
+    VOID                            *AddMemorySpace;
+    VOID                            *AllocateMemorySpace;
+    VOID                            *FreeMemorySpace;
+    VOID                            *RemoveMemorySpace;
+    GET_MEMORY_SPACE_DESCRIPTOR            GetMemorySpaceDescriptor;
+    SET_MEMORY_SPACE_ATTRIBUTES            SetMemorySpaceAttributes;
+    VOID                            *GetMemorySpaceMap;
+    VOID                            *AddIoSpace;
+    VOID                            *AllocateIoSpace;
+    VOID                            *FreeIoSpace;
+    VOID                            *RemoveIoSpace;
+    VOID                            *GetIoSpaceDescriptor;
+    VOID                            *GetIoSpaceMap;
+    VOID                            *Dispatch;
+    VOID                            *Schedule;
+    VOID                            *Trust;
+    VOID                            *ProcessFirmwareVolume;
+    VOID                            *SetMemorySpaceCapabilities;
+} EFI_DXE_SERVICES_TABLE;
+
+#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/inc/eficompiler.h 
new/gnu-efi-4.0.4/inc/eficompiler.h
--- old/gnu-efi-4.0.1/inc/eficompiler.h 2025-05-16 16:11:33.000000000 +0200
+++ new/gnu-efi-4.0.4/inc/eficompiler.h 2025-12-06 13:01:47.000000000 +0100
@@ -1,3 +1,6 @@
+#ifndef _EFICOMPILER_H_
+#define _EFICOMPILER_H_
+
 /*++
 
 Copyright (c) 2016-2024 Pete Batard <[email protected]>
@@ -70,3 +73,5 @@
 #if defined(_MSC_VER)
 #define __attribute__(x)
 #endif
+
+#endif /* _EFICOMPILER_H_ */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/inc/efidef.h 
new/gnu-efi-4.0.4/inc/efidef.h
--- old/gnu-efi-4.0.1/inc/efidef.h      2025-05-16 16:11:33.000000000 +0200
+++ new/gnu-efi-4.0.4/inc/efidef.h      2025-12-06 13:01:47.000000000 +0100
@@ -216,6 +216,7 @@
 #define EFI_MEMORY_MORE_RELIABLE 0x0000000000010000
 #define EFI_MEMORY_SP            0x0000000000040000
 #define EFI_MEMORY_CPU_CRYPTO    0x0000000000080000
+#define EFI_MEMORY_HOT_PLUGGABLE 0x0000000000100000
 #define EFI_MEMORY_ISA_VALID     0x4000000000000000
 #define EFI_MEMORY_ISA_MASK      0x0FFFF00000000000
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/inc/efilib.h 
new/gnu-efi-4.0.4/inc/efilib.h
--- old/gnu-efi-4.0.1/inc/efilib.h      2025-05-16 16:11:33.000000000 +0200
+++ new/gnu-efi-4.0.4/inc/efilib.h      2025-12-06 13:01:47.000000000 +0100
@@ -23,6 +23,7 @@
 extern "C" {
 #endif
 
+#include "eficompiler.h"
 #include "efidebug.h"
 #include "efipart.h"
 #if defined(_M_X64) || defined(__x86_64__) || defined(__amd64__)
@@ -45,6 +46,7 @@
 #include "legacy/efilib.h"
 #include "efilink.h"
 #include "efirtlib.h"
+#include "efisetjmp.h"
 #include "efistdarg.h"
 #include "pci22.h"
 #include "libsmbios.h"
@@ -60,6 +62,10 @@
 extern EFI_RUNTIME_SERVICES     *RT;
 #define gRT                      RT
 
+extern EFI_GUID gZeroGuid;
+#define EFI_ZERO_GUID {0x0, 0x0, 0x0, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
+#define NullGuid gZeroGuid
+
 extern EFI_GUID gEfiDevicePathProtocolGuid;
 #define DevicePathProtocol gEfiDevicePathProtocolGuid
 extern EFI_GUID gEfiDevicePathToTextProtocolGuid;
@@ -90,10 +96,16 @@
 #define DiskIoProtocol gEfiDiskIoProtocolGuid
 extern EFI_GUID gEfiDiskIo2ProtocolGuid;
 #define DiskIo2Protocol gEfiDiskIo2ProtocolGuid
+extern EFI_GUID gEfiDxeServicesTableGuid;
+#define DxeServicesTable gEfiDxeServicesTableGuid
 extern EFI_GUID gEfiSimpleFileSystemProtocolGuid;
 #define FileSystemProtocol gEfiSimpleFileSystemProtocolGuid
+extern EFI_GUID gEfiLoadedImageDevicePathProtocolGuid;
+#define LoadedImageDevicePathProtocol gEfiLoadedImageDevicePathProtocolGuid
 extern EFI_GUID gEfiLoadFileProtocolGuid;
 #define LoadFileProtocol gEfiLoadFileProtocolGuid
+extern EFI_GUID gEfiLoadFile2ProtocolGuid;
+#define LoadFile2Protocol gEfiLoadFile2ProtocolGuid
 extern EFI_GUID gEfiDeviceIoProtocolGuid;
 #define DeviceIoProtocol gEfiDeviceIoProtocolGuid
 extern EFI_GUID VariableStoreProtocol;
@@ -154,7 +166,6 @@
 extern EFI_GUID gEfiVT100PlusGuid;
 extern EFI_GUID gEfiVTUTF8Guid;
 
-extern EFI_GUID NullGuid;
 extern EFI_GUID UnknownDevice;
 
 extern EFI_GUID EfiPartTypeSystemPartitionGuid;
@@ -504,6 +515,13 @@
     IN CONST EFI_GUID     *Guid2
     );
 
+BOOLEAN
+EFIAPI
+IsZeroGuid (
+    IN CONST EFI_GUID     *Guid1
+);
+
+
 VOID *
 AllocatePool (
     IN UINTN     Size
@@ -698,6 +716,14 @@
     );
 
 UINTN
+AsciiSPrint (
+    OUT CHAR8         *Str,
+    IN UINTN          StrSize,
+    IN CONST CHAR8    *fmt,
+    ...
+);
+
+UINTN
 AsciiVSPrint(
     OUT CHAR8         *Str,
     IN  UINTN         StrSize,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/inc/efiprot.h 
new/gnu-efi-4.0.4/inc/efiprot.h
--- old/gnu-efi-4.0.1/inc/efiprot.h     2025-05-16 16:11:33.000000000 +0200
+++ new/gnu-efi-4.0.4/inc/efiprot.h     2025-12-06 13:01:47.000000000 +0100
@@ -560,6 +560,69 @@
 typedef struct _EFI_LOAD_FILE_PROTOCOL _EFI_LOAD_FILE_INTERFACE;
 typedef EFI_LOAD_FILE_PROTOCOL EFI_LOAD_FILE_INTERFACE;
 
+
+//
+// Load File 2 Protocol
+//
+
+#define EFI_LOAD_FILE2_PROTOCOL_GUID \
+  { \
+    0x4006c0c1, 0xfcb3, 0x403e, {0x99, 0x6d, 0x4a, 0x6c, 0x87, 0x24, 0xe0, 
0x6d } \
+  }
+
+///
+/// Protocol Guid defined by UEFI2.1.
+///
+#define LOAD_FILE2_PROTOCOL  EFI_LOAD_FILE2_PROTOCOL_GUID
+
+typedef struct _EFI_LOAD_FILE2_PROTOCOL EFI_LOAD_FILE2_PROTOCOL;
+
+/**
+  Causes the driver to load a specified file.
+
+  @param  This       Protocol instance pointer.
+  @param  FilePath   The device specific path of the file to load.
+  @param  BootPolicy Should always be FALSE.
+  @param  BufferSize On input the size of Buffer in bytes. On output with a 
return
+                     code of EFI_SUCCESS, the amount of data transferred to
+                     Buffer. On output with a return code of 
EFI_BUFFER_TOO_SMALL,
+                     the size of Buffer required to retrieve the requested 
file.
+  @param  Buffer     The memory buffer to transfer the file to. IF Buffer is 
NULL,
+                     then no the size of the requested file is returned in
+                     BufferSize.
+
+  @retval EFI_SUCCESS           The file was loaded.
+  @retval EFI_UNSUPPORTED       BootPolicy is TRUE.
+  @retval EFI_INVALID_PARAMETER FilePath is not a valid device path, or
+                                BufferSize is NULL.
+  @retval EFI_NO_MEDIA          No medium was present to load the file.
+  @retval EFI_DEVICE_ERROR      The file was not loaded due to a device error.
+  @retval EFI_NO_RESPONSE       The remote system did not respond.
+  @retval EFI_NOT_FOUND         The file was not found
+  @retval EFI_ABORTED           The file load process was manually canceled.
+  @retval EFI_BUFFER_TOO_SMALL  The BufferSize is too small to read the current
+                                directory entry. BufferSize has been updated 
with
+                                the size needed to complete the request.
+
+
+**/
+typedef
+EFI_STATUS
+(EFIAPI *EFI_LOAD_FILE2)(
+  IN EFI_LOAD_FILE2_PROTOCOL          *This,
+  IN EFI_DEVICE_PATH_PROTOCOL         *FilePath,
+  IN BOOLEAN                          BootPolicy,
+  IN OUT UINTN                        *BufferSize,
+  IN VOID                             *Buffer OPTIONAL
+  );
+
+///
+/// The EFI_LOAD_FILE_PROTOCOL is a simple protocol used to obtain files from 
arbitrary devices.
+///
+struct _EFI_LOAD_FILE2_PROTOCOL {
+  EFI_LOAD_FILE2    LoadFile;
+};
+
 //
 // Device IO protocol
 //
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/inc/efirtlib.h 
new/gnu-efi-4.0.4/inc/efirtlib.h
--- old/gnu-efi-4.0.1/inc/efirtlib.h    2025-05-16 16:11:33.000000000 +0200
+++ new/gnu-efi-4.0.4/inc/efirtlib.h    2025-12-06 13:01:47.000000000 +0100
@@ -159,6 +159,13 @@
     IN CONST EFI_GUID     *Guid2
     );
 
+BOOLEAN
+EFIAPI
+RUNTIMEFUNCTION
+RtIsZeroGuid (
+    IN CONST EFI_GUID     *Guid1
+);
+
 UINT8
 RUNTIMEFUNCTION
 RtDecimaltoBCD(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/inc/efisetjmp.h 
new/gnu-efi-4.0.4/inc/efisetjmp.h
--- old/gnu-efi-4.0.1/inc/efisetjmp.h   2025-05-16 16:11:33.000000000 +0200
+++ new/gnu-efi-4.0.4/inc/efisetjmp.h   2025-12-06 13:01:47.000000000 +0100
@@ -1,10 +1,18 @@
 #ifndef GNU_EFI_SETJMP_H
 #define GNU_EFI_SETJMP_H
 
+#if !defined(_MSC_VER)
+
 #include "eficompiler.h"
 #include "efisetjmp_arch.h"
 
-extern UINTN setjmp(jmp_buf env) __attribute__((returns_twice));
-extern VOID longjmp(jmp_buf env, UINTN value) EFI_NORETURN;
+extern UINTN base_setjmp(jmp_buf env) __attribute__((returns_twice));
+extern VOID base_longjmp(jmp_buf env, UINTN value) EFI_NORETURN;
+
+#define setjmp(env) (int)base_setjmp(env)
+#define longjmp(env, value) base_longjmp(env, (UINTN)value)
+
+#endif /* _MSC_VER */
 
 #endif /* GNU_EFI_SETJMP_H */
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/inc/ia32/efibind.h 
new/gnu-efi-4.0.4/inc/ia32/efibind.h
--- old/gnu-efi-4.0.1/inc/ia32/efibind.h        2025-05-16 16:11:33.000000000 
+0200
+++ new/gnu-efi-4.0.4/inc/ia32/efibind.h        2025-12-06 13:01:47.000000000 
+0100
@@ -25,7 +25,7 @@
 // Basic int types of various widths
 //
 
-#if !defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L ) && 
!defined(__cplusplus)
+#if (!defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L )) && 
!defined(__cplusplus)
 
     // No ANSI C 1999/2000 stdint.h integer width declarations 
 
@@ -285,7 +285,7 @@
 #endif
 
 /* No efi call wrapper for IA32 architecture */
-#define uefi_call_wrapper(func, va_num, ...)   func(__VA_ARGS__)
+#define uefi_call_wrapper(func, va_num, ...)   (func)(__VA_ARGS__)
 #define EFI_FUNCTION
 
 #ifdef _MSC_EXTENSIONS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/inc/ia64/efibind.h 
new/gnu-efi-4.0.4/inc/ia64/efibind.h
--- old/gnu-efi-4.0.1/inc/ia64/efibind.h        2025-05-16 16:11:33.000000000 
+0200
+++ new/gnu-efi-4.0.4/inc/ia64/efibind.h        2025-12-06 13:01:47.000000000 
+0100
@@ -24,7 +24,7 @@
 // Basic int types of various widths
 //
 
-#if !defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L ) && 
!defined(__cplusplus)
+#if (!defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L )) && 
!defined(__cplusplus)
 
     // No ANSI C 1999/2000 stdint.h integer width declarations 
 
@@ -232,5 +232,5 @@
 #endif
 
 /* No efi call wrapper for IA32 architecture */
-#define uefi_call_wrapper(func, va_num, ...)   func(__VA_ARGS__)
+#define uefi_call_wrapper(func, va_num, ...)   (func)(__VA_ARGS__)
 #define EFI_FUNCTION
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/inc/internal/va_print.h 
new/gnu-efi-4.0.4/inc/internal/va_print.h
--- old/gnu-efi-4.0.1/inc/internal/va_print.h   2025-05-16 16:11:33.000000000 
+0200
+++ new/gnu-efi-4.0.4/inc/internal/va_print.h   2025-12-06 13:01:47.000000000 
+0100
@@ -163,8 +163,9 @@
     IN CHAR16              c
     )
 {
-    // if this is a newline, add a carraige return
-    if (c == '\n') {
+    // if this is a newline, add a carriage return
+    CHAR16 last_char = (ps->Len > 0) ? *(ps->Pos - 1) : '\0';
+    if (c == '\n' && last_char != '\r') {
         FUNCTION_NAME(PPUTC) (ps, '\r');
     }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/inc/loongarch64/efibind.h 
new/gnu-efi-4.0.4/inc/loongarch64/efibind.h
--- old/gnu-efi-4.0.1/inc/loongarch64/efibind.h 2025-05-16 16:11:33.000000000 
+0200
+++ new/gnu-efi-4.0.4/inc/loongarch64/efibind.h 2025-12-06 13:01:47.000000000 
+0100
@@ -19,7 +19,7 @@
  * either version 2 of the License, or (at your option) any later version.
  */
 
-#if !defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L ) && 
!defined(__cplusplus)
+#if (!defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L )) && 
!defined(__cplusplus)
 
 // ANSI C 1999/2000 stdint.h integer width declarations
 
@@ -155,5 +155,5 @@
 
 #define INTERFACE_DECL(x) struct x
 
-#define uefi_call_wrapper(func, va_num, ...) func(__VA_ARGS__)
+#define uefi_call_wrapper(func, va_num, ...) (func)(__VA_ARGS__)
 #define EFI_FUNCTION
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/inc/mips64el/efibind.h 
new/gnu-efi-4.0.4/inc/mips64el/efibind.h
--- old/gnu-efi-4.0.1/inc/mips64el/efibind.h    2025-05-16 16:11:33.000000000 
+0200
+++ new/gnu-efi-4.0.4/inc/mips64el/efibind.h    2025-12-06 13:01:47.000000000 
+0100
@@ -17,7 +17,7 @@
  * either version 2 of the License, or (at your option) any later version.
  */
 
-#if !defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L ) && 
!defined(__cplusplus)
+#if (!defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L )) && 
!defined(__cplusplus)
 
 // ANSI C 1999/2000 stdint.h integer width declarations
 
@@ -153,7 +153,7 @@
 
 #define INTERFACE_DECL(x) struct x
 
-#define uefi_call_wrapper(func, va_num, ...) func(__VA_ARGS__)
+#define uefi_call_wrapper(func, va_num, ...) (func)(__VA_ARGS__)
 #define EFI_FUNCTION
 
 static inline UINT64 swap_uint64 (UINT64 v)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/inc/riscv64/efibind.h 
new/gnu-efi-4.0.4/inc/riscv64/efibind.h
--- old/gnu-efi-4.0.1/inc/riscv64/efibind.h     2025-05-16 16:11:33.000000000 
+0200
+++ new/gnu-efi-4.0.4/inc/riscv64/efibind.h     2025-12-06 13:01:47.000000000 
+0100
@@ -123,5 +123,5 @@
 // The following macro provide a workaround for such cases.
 #define INTERFACE_DECL(x)       struct x
 
-#define uefi_call_wrapper(func, va_num, ...) func(__VA_ARGS__)
+#define uefi_call_wrapper(func, va_num, ...) (func)(__VA_ARGS__)
 #define EFI_FUNCTION
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/inc/x86_64/efibind.h 
new/gnu-efi-4.0.4/inc/x86_64/efibind.h
--- old/gnu-efi-4.0.1/inc/x86_64/efibind.h      2025-05-16 16:11:33.000000000 
+0200
+++ new/gnu-efi-4.0.4/inc/x86_64/efibind.h      2025-12-06 13:01:47.000000000 
+0100
@@ -36,7 +36,7 @@
 // Basic int types of various widths
 //
 
-#if !defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L ) && 
!defined(__cplusplus)
+#if (!defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L )) && 
!defined(__cplusplus)
 
     // No ANSI C 1999/2000 stdint.h integer width declarations 
 
@@ -299,7 +299,7 @@
 
 /* for x86_64, EFI_FUNCTION_WRAPPER must be defined */
 #if defined(HAVE_USE_MS_ABI)
-#define uefi_call_wrapper(func, va_num, ...) func(__VA_ARGS__)
+#define uefi_call_wrapper(func, va_num, ...) (func)(__VA_ARGS__)
 #else
 /*
   Credits for macro-magic:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/lib/Makefile 
new/gnu-efi-4.0.4/lib/Makefile
--- old/gnu-efi-4.0.1/lib/Makefile      2025-05-16 16:11:33.000000000 +0200
+++ new/gnu-efi-4.0.4/lib/Makefile      2025-12-06 13:01:47.000000000 +0100
@@ -64,14 +64,13 @@
 
 SUBDIRS = ia32 x86_64 ia64 aarch64 arm mips64el riscv64 loongarch64 runtime
 
-all: libsubdirs libefi.a
+all:   libefi.a
+
+$(OBJS): | libsubdirs
 
-.PHONY: libsubdirs
 libsubdirs:
        @set -e ; for sdir in $(SUBDIRS); do mkdir -p $$sdir; done
 
-$(OBJS): libsubdirs
-
 libefi.a: $(OBJS)
        @$(ECHO) "  AR       $(notdir $@)"
        $(HIDE)$(AR) $(ARFLAGS) $@ $^
@@ -80,11 +79,11 @@
        @$(ECHO) "  CP       $(notdir ms_va_print.c)"
        $(HIDE)cp $(SRCDIR)/va_print.c $(SRCDIR)/ms_va_print.c
 
-ms_va_print.o: CFLAGS += -Wno-error=unused-function 
-D__GNU_EFI_INTERNAL_USE_MS_VA_ABI
+ms_va_print.o: EFI_CFLAGS += -Wno-error=unused-function 
-D__GNU_EFI_INTERNAL_USE_MS_VA_ABI
 
-va_print.o: CFLAGS += -Wno-error=unused-function
+va_print.o: EFI_CFLAGS += -Wno-error=unused-function
 
-print.o: CFLAGS += -Wno-error=unused-function
+print.o: EFI_CFLAGS += -Wno-error=unused-function
 
 clean:
        @rm -vf libefi.a *~ $(OBJS) */*.o $(SRCDIR)/ms_va_print.c
@@ -93,4 +92,6 @@
        mkdir -p $(INSTALLROOT)$(LIBDIR)
        $(INSTALL) -m 644 libefi.a $(INSTALLROOT)$(LIBDIR)
 
+.PHONY: all libsubdirs clean install
+
 include $(SRCDIR)/../Make.rules
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/lib/aarch64/setjmp.S 
new/gnu-efi-4.0.4/lib/aarch64/setjmp.S
--- old/gnu-efi-4.0.1/lib/aarch64/setjmp.S      2025-05-16 16:11:33.000000000 
+0200
+++ new/gnu-efi-4.0.4/lib/aarch64/setjmp.S      2025-12-06 13:01:47.000000000 
+0100
@@ -33,9 +33,9 @@
 #define REG_PAIR(REG1, REG2, OFFS)      stp REG1, REG2, [x0, OFFS]
 #define REG_ONE(REG1, OFFS)             str REG1, [x0, OFFS]
 
-       .globl  setjmp
-       .type   setjmp, @function
-setjmp:
+       .globl  base_setjmp
+       .type   base_setjmp, @function
+base_setjmp:
        mov     x16, sp
        GPR_LAYOUT
        FPR_LAYOUT
@@ -48,9 +48,9 @@
 #define REG_PAIR(REG1, REG2, OFFS)      ldp REG1, REG2, [x0, OFFS]
 #define REG_ONE(REG1, OFFS)             ldr REG1, [x0, OFFS]
 
-       .globl  longjmp
-       .type   longjmp, @function
-longjmp:
+       .globl  base_longjmp
+       .type   base_longjmp, @function
+base_longjmp:
        GPR_LAYOUT
        FPR_LAYOUT
        mov     sp, x16
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/lib/arm/setjmp.S 
new/gnu-efi-4.0.4/lib/arm/setjmp.S
--- old/gnu-efi-4.0.1/lib/arm/setjmp.S  2025-05-16 16:11:33.000000000 +0200
+++ new/gnu-efi-4.0.4/lib/arm/setjmp.S  2025-12-06 13:01:47.000000000 +0100
@@ -11,17 +11,17 @@
  */
        .text
        .arm
-       .globl  setjmp
-       .type   setjmp, %function
-setjmp:
+       .globl  base_setjmp
+       .type   base_setjmp, %function
+base_setjmp:
        mov     r3, r13
        stmia   r0, {r3-r12,r14}
        eor     r0, r0, r0
        bx      lr
 
-       .globl  longjmp
-       .type   longjmp, %function
-longjmp:
+       .globl  base_longjmp
+       .type   base_longjmp, %function
+base_longjmp:
        ldmia   r0, {r3-r12,r14}
 
 #if defined(__ELF__) && defined(__linux__)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/lib/data.c new/gnu-efi-4.0.4/lib/data.c
--- old/gnu-efi-4.0.1/lib/data.c        2025-05-16 16:11:33.000000000 +0200
+++ new/gnu-efi-4.0.4/lib/data.c        2025-12-06 13:01:47.000000000 +0100
@@ -86,7 +86,7 @@
 //
 
 EFI_GUID gEfiGlobalVariableGuid = EFI_GLOBAL_VARIABLE;
-EFI_GUID NullGuid = { 0,0,0,{0,0,0,0,0,0,0,0} };
+EFI_GUID gZeroGuid = EFI_ZERO_GUID;
 
 //
 // Protocol IDs
@@ -103,8 +103,11 @@
 EFI_GUID gEfiBlockIo2ProtocolGuid                   = 
EFI_BLOCK_IO2_PROTOCOL_GUID;
 EFI_GUID gEfiDiskIoProtocolGuid                     = 
EFI_DISK_IO_PROTOCOL_GUID;
 EFI_GUID gEfiDiskIo2ProtocolGuid                    = 
EFI_DISK_IO2_PROTOCOL_GUID;
+EFI_GUID gEfiDxeServicesTableGuid                   = DXE_SERVICES_TABLE_GUID;
 EFI_GUID gEfiSimpleFileSystemProtocolGuid           = 
EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID;
+EFI_GUID gEfiLoadedImageDevicePathProtocolGuid      = 
EFI_LOADED_IMAGE_DEVICE_PATH_PROTOCOL_GUID;
 EFI_GUID gEfiLoadFileProtocolGuid                   = 
EFI_LOAD_FILE_PROTOCOL_GUID;
+EFI_GUID gEfiLoadFile2ProtocolGuid                  = 
EFI_LOAD_FILE2_PROTOCOL_GUID;
 EFI_GUID gEfiDeviceIoProtocolGuid                   = 
EFI_DEVICE_IO_PROTOCOL_GUID;
 EFI_GUID gEfiUnicodeCollationProtocolGuid           = 
EFI_UNICODE_COLLATION_PROTOCOL_GUID;
 EFI_GUID gEfiSerialIoProtocolGuid                   = 
EFI_SERIAL_IO_PROTOCOL_GUID;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/lib/guid.c new/gnu-efi-4.0.4/lib/guid.c
--- old/gnu-efi-4.0.1/lib/guid.c        2025-05-16 16:11:33.000000000 +0200
+++ new/gnu-efi-4.0.4/lib/guid.c        2025-12-06 13:01:47.000000000 +0100
@@ -48,7 +48,7 @@
     EFI_GUID        *Guid;
     WCHAR           *GuidName;
 } KnownGuids[] = {
-       {  &NullGuid,                                       u"G0" },
+       {  &gZeroGuid,                                      u"NullGuid" },
        {  &gEfiGlobalVariableGuid,                         u"EfiVar" },
 
        {  &VariableStoreProtocol,                          u"VarStore" },
@@ -141,6 +141,15 @@
     return RtCompareGuid (Guid1, Guid2);
 }
 
+BOOLEAN
+EFIAPI
+IsZeroGuid (
+IN CONST EFI_GUID *Guid1
+)
+{
+       return RtIsZeroGuid(Guid1);
+}
+
 
 VOID
 GuidToString (
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/lib/ia32/setjmp.S 
new/gnu-efi-4.0.4/lib/ia32/setjmp.S
--- old/gnu-efi-4.0.1/lib/ia32/setjmp.S 2025-05-16 16:11:33.000000000 +0200
+++ new/gnu-efi-4.0.4/lib/ia32/setjmp.S 2025-12-06 13:01:47.000000000 +0100
@@ -13,13 +13,13 @@
  * IMPLIED.
  */
        .text
-       .globl  setjmp
+       .globl  base_setjmp
 #ifndef __MINGW32__
-       .type setjmp, @function
+       .type base_setjmp, @function
 #else
-       .def setjmp; .scl 2; .type 32; .endef
+       .def base_setjmp; .scl 2; .type 32; .endef
 #endif
-setjmp:
+base_setjmp:
        pop     %ecx
        movl    (%esp), %edx
        movl    %ebx, (%edx)
@@ -30,13 +30,13 @@
        xorl    %eax, %eax
        jmp     *%ecx
 
-       .globl  longjmp
+       .globl  base_longjmp
 #ifndef __MINGW32__
-       .type   longjmp, @function
+       .type   base_longjmp, @function
 #else
-       .def longjmp; .scl 2; .type 32; .endef
+       .def base_longjmp; .scl 2; .type 32; .endef
 #endif
-longjmp:
+base_longjmp:
        pop     %eax
        pop     %edx
        pop     %eax
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/lib/ia64/setjmp.S 
new/gnu-efi-4.0.4/lib/ia64/setjmp.S
--- old/gnu-efi-4.0.1/lib/ia64/setjmp.S 2025-05-16 16:11:33.000000000 +0200
+++ new/gnu-efi-4.0.4/lib/ia64/setjmp.S 2025-12-06 13:01:47.000000000 +0100
@@ -13,9 +13,9 @@
  * IMPLIED.
  */
        .text
-       .globl  setjmp
-       .type   setjmp, @function
-setjmp:
+       .globl  base_setjmp
+       .type   base_setjmp, @function
+base_setjmp:
        alloc   loc0 = ar.pfs, 1, 2, 1, 0
        ;;
        mov     r14 = ar.unat
@@ -96,10 +96,10 @@
        br.ret.sptk     b0
        ;;
 
-       .globl  longjmp
-       .type   longjmp, @function
+       .globl  base_longjmp
+       .type   base_longjmp, @function
        .regstk 2, 0, 0, 0
-longjmp:
+base_longjmp:
        add             r10 = 0x10*20 + 8*14, in0
        movl            r2  = ~((((1<<14) - 1) << 16) | 3)
        ;;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/lib/loongarch64/setjmp.S 
new/gnu-efi-4.0.4/lib/loongarch64/setjmp.S
--- old/gnu-efi-4.0.1/lib/loongarch64/setjmp.S  2025-05-16 16:11:33.000000000 
+0200
+++ new/gnu-efi-4.0.4/lib/loongarch64/setjmp.S  2025-12-06 13:01:47.000000000 
+0100
@@ -20,12 +20,10 @@
        .text
        .p2align 3
 
-/*
-   int setjmp(jmp_buf env);
-*/
-       .globl  setjmp
-       .type   setjmp, @function
-setjmp:
+
+       .globl  base_setjmp
+       .type   base_setjmp, @function
+base_setjmp:
        st.d $ra, $a0, 0x0
        st.d $sp, $a0, 0x8
        st.d $fp, $a0, 0x10
@@ -42,12 +40,9 @@
        move $a0, $zero
        jr   $ra
 
-/*
-   void longjmp(jmp_buf env, int val);
-*/
-       .globl  longjmp
-       .type   longjmp, @function
-longjmp:
+       .globl  base_longjmp
+       .type   base_longjmp, @function
+base_longjmp:
        ld.d $ra, $a0, 0x0
        ld.d $sp, $a0, 0x8
        ld.d $fp, $a0, 0x10
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/lib/mips64el/setjmp.S 
new/gnu-efi-4.0.4/lib/mips64el/setjmp.S
--- old/gnu-efi-4.0.1/lib/mips64el/setjmp.S     2025-05-16 16:11:33.000000000 
+0200
+++ new/gnu-efi-4.0.4/lib/mips64el/setjmp.S     2025-12-06 13:01:47.000000000 
+0100
@@ -18,9 +18,9 @@
        .text
        .p2align 3
 
-       .globl  setjmp
-       .type   setjmp, @function
-setjmp:
+       .globl  base_setjmp
+       .type   base_setjmp, @function
+base_setjmp:
        sd      $ra, 0x00($a0)
        sd      $sp, 0x08($a0)
        sd      $fp, 0x10($a0)
@@ -54,9 +54,9 @@
        move    $v0, $zero
        jr      $ra
 
-       .globl  longjmp
-       .type   longjmp, @function
-longjmp:
+       .globl  base_longjmp
+       .type   base_longjmp, @function
+base_longjmp:
        ld      $ra, 0x00($a0)
        ld      $sp, 0x08($a0)
        ld      $fp, 0x10($a0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/lib/print.c 
new/gnu-efi-4.0.4/lib/print.c
--- old/gnu-efi-4.0.1/lib/print.c       2025-05-16 16:11:33.000000000 +0200
+++ new/gnu-efi-4.0.4/lib/print.c       2025-12-06 13:01:47.000000000 +0100
@@ -291,6 +291,44 @@
     return len;
 }
 
+UINTN
+AsciiSPrint (
+    OUT CHAR8         *Str,
+    IN UINTN          StrSize,
+    IN CONST CHAR8    *fmt,
+    ...
+    )
+/*++
+
+Routine Description:
+
+    Prints a formatted unicode string to a buffer
+
+Arguments:
+
+    Str         - Output buffer to print the formatted string into
+
+    StrSize     - Size of Str.  String is truncated to this size.
+                  A size of 0 means there is no limit
+
+    fmt         - The format string
+
+Returns:
+
+    String length returned in buffer
+
+--*/
+{
+    va_list       args;
+    UINTN         len;
+
+    va_start (args, fmt);
+    len = AsciiVSPrint(Str, StrSize, fmt, args);
+    va_end (args);
+
+    return len;
+}
+
 CHAR16 *
 PoolPrint (
     IN CONST CHAR16     *fmt,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/lib/riscv64/setjmp.S 
new/gnu-efi-4.0.4/lib/riscv64/setjmp.S
--- old/gnu-efi-4.0.1/lib/riscv64/setjmp.S      2025-05-16 16:11:33.000000000 
+0200
+++ new/gnu-efi-4.0.4/lib/riscv64/setjmp.S      2025-12-06 13:01:47.000000000 
+0100
@@ -39,10 +39,10 @@
 #define REG_ONE(R, P) sd R, P(a0)
 #define FREG_ONE(R, P) fsd R, P(a0)
 
-       .globl setjmp
-       .type setjmp, @function
+       .globl base_setjmp
+       .type base_setjmp, @function
 
-setjmp:
+base_setjmp:
        GREG_LIST
 #ifndef __riscv_float_abi_soft
        FREG_LIST
@@ -56,10 +56,10 @@
 #define REG_ONE(R, P) ld R, P(a0)
 #define FREG_ONE(R, P) fld R, P(a0)
 
-       .globl longjmp
-       .type longjmp, @function
+       .globl base_longjmp
+       .type base_longjmp, @function
 
-longjmp:
+base_longjmp:
        GREG_LIST
 #ifndef __riscv_float_abi_soft
        FREG_LIST
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/lib/runtime/efirtlib.c 
new/gnu-efi-4.0.4/lib/runtime/efirtlib.c
--- old/gnu-efi-4.0.1/lib/runtime/efirtlib.c    2025-05-16 16:11:33.000000000 
+0200
+++ new/gnu-efi-4.0.4/lib/runtime/efirtlib.c    2025-12-06 13:01:47.000000000 
+0100
@@ -188,4 +188,16 @@
     }
 }
 
+#ifndef __GNUC__
+#pragma RUNTIME_CODE(RtIsZeroGuid)
+#endif
+BOOLEAN
+EFIAPI
+RUNTIMEFUNCTION
+RtIsZeroGuid (
+IN CONST EFI_GUID     *Guid1
+)
+{
+       return RtCompareGuid(Guid1, &gZeroGuid);
 
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gnu-efi-4.0.1/lib/x86_64/setjmp.S 
new/gnu-efi-4.0.4/lib/x86_64/setjmp.S
--- old/gnu-efi-4.0.1/lib/x86_64/setjmp.S       2025-05-16 16:11:33.000000000 
+0200
+++ new/gnu-efi-4.0.4/lib/x86_64/setjmp.S       2025-12-06 13:01:47.000000000 
+0100
@@ -1,11 +1,11 @@
        .text
-       .globl  setjmp
+       .globl  base_setjmp
 #ifndef __MINGW32__
-       .type setjmp, @function
+       .type base_setjmp, @function
 #else
-       .def setjmp; .scl 2; .type 32; .endef
+       .def base_setjmp; .scl 2; .type 32; .endef
 #endif
-setjmp:
+base_setjmp:
        pop     %rsi
        movq    %rbx,0x00(%rdi)
        movq    %rsp,0x08(%rdi)
@@ -19,13 +19,13 @@
        xor     %rax,%rax
        ret
 
-       .globl  longjmp
+       .globl  base_longjmp
 #ifndef __MINGW32__
-       .type   longjmp, @function
+       .type   base_longjmp, @function
 #else
-       .def longjmp; .scl 2; .type 32; .endef
+       .def base_longjmp; .scl 2; .type 32; .endef
 #endif
-longjmp:
+base_longjmp:
        movl    %esi, %eax
        movq    0x00(%rdi), %rbx
        movq    0x08(%rdi), %rsp

Reply via email to