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
