Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package limine for openSUSE:Factory checked 
in at 2025-08-16 20:39:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/limine (Old)
 and      /work/SRC/openSUSE:Factory/.limine.new.1085 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "limine"

Sat Aug 16 20:39:21 2025 rev:14 rq:1299896 version:9.6.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/limine/limine.changes    2025-08-06 
14:35:45.898260857 +0200
+++ /work/SRC/openSUSE:Factory/.limine.new.1085/limine.changes  2025-08-16 
20:44:20.488576237 +0200
@@ -1,0 +2,12 @@
+Sat Aug 16 11:40:33 UTC 2025 - Marvin Friedrich <cont...@marvinf.com>
+
+- Update to 9.6.1:
+  * EFI chainloading: Make EFI device path of loaded image relative to
+    the loaded image device handle. This now complies with the EFI
+    specification, and, amongst others, it fixes chainloading Shim.
+  * Miscellaneous build system changes and improvements.
+  * Do not disable linker relaxations for LoongArch64.
+  * `limine` host tool: Add check to ensure that a provided GPT BIOS
+    partition is at least 32KiB in size.
+
+-------------------------------------------------------------------

Old:
----
  limine-9.5.3.tar.gz

New:
----
  limine-9.6.1.tar.gz

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

Other differences:
------------------
++++++ limine.spec ++++++
--- /var/tmp/diff_new_pack.Lt6HuL/_old  2025-08-16 20:44:20.944595148 +0200
+++ /var/tmp/diff_new_pack.Lt6HuL/_new  2025-08-16 20:44:20.944595148 +0200
@@ -15,7 +15,7 @@
 #
 
 Name:           limine
-Version:        9.5.3
+Version:        9.6.1
 Release:        0
 Summary:        Modern, advanced, portable, multiprotocol bootloader and boot 
manager
 License:        BSD-2-Clause
@@ -39,7 +39,7 @@
 %setup -q
 
 %build
-%configure --enable-all --docdir=%{_docdir}/%{name} TOOLCHAIN_FOR_TARGET=llvm
+%configure --enable-all --docdir=%{_docdir}/%{name}
 %make_build
 
 %install

++++++ limine-9.5.3.tar.gz -> limine-9.6.1.tar.gz ++++++
++++ 3228 lines of diff (skipped)
++++    retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/limine-9.5.3/ChangeLog new/limine-9.6.1/ChangeLog
--- old/limine-9.5.3/ChangeLog  2025-08-04 17:34:14.000000000 +0200
+++ new/limine-9.6.1/ChangeLog  2025-08-16 12:55:38.000000000 +0200
@@ -1,3 +1,49 @@
+2025-08-16  Mintsuki  <mints...@protonmail.com>
+
+    *** Release 9.6.1 ***
+
+    Noteworthy changes compared to the previous release, 9.6.0:
+
+    Bug fixes:
+        - EFI chainloading: Make EFI device path of loaded image relative to
+          the loaded image device handle. This now complies with the EFI
+          specification, and, amongst others, it fixes chainloading Shim.
+
+    Miscellaneous:
+        - Miscellaneous build system changes and improvements.
+        - Do not disable linker relaxations for LoongArch64.
+        - `limine` host tool: Add check to ensure that a provided GPT BIOS
+          partition is at least 32KiB in size.
+
+2025-08-07  Mintsuki  <mints...@protonmail.com>
+
+    *** Release 9.6.0 ***
+
+    Noteworthy changes compared to the previous release, 9.5.4:
+
+    Miscellaneous:
+        - Get rid of the fragile and messy "freestanding-toolchain" build
+          helper tool. This allows for a simpler and more predictable way of
+          selecting the target toolchain components via ./configure.
+
+2025-08-06  Mintsuki  <mints...@protonmail.com>
+
+    *** Release 9.5.4 ***
+
+    Noteworthy changes compared to the previous release, 9.5.3:
+
+    Bug fixes:
+        - Exclude non-PCI devices from the volume discovery process on UEFI.
+          This is because on (especially, but not limited to) Snapdragon X
+          systems, firmware/flash devices, which are non-PCI, are exposed as
+          block I/O volumes too. This skips them, which makes the bootloader
+          more reliable and avoids long hangs at boot.
+        - Miscellaneous changes and fixes to the fallback volume discovery
+          path, to increase reliability and reduce the chance of accidental
+          damage or data loss. See GitHub issue #525.
+        - Minor assembly improvement that fixed Limine not building with old
+          NASM.
+
 2025-08-04  Mintsuki  <mints...@protonmail.com>
 
     *** Release 9.5.3 ***
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/limine-9.5.3/GNUmakefile.in new/limine-9.6.1/GNUmakefile.in
--- old/limine-9.5.3/GNUmakefile.in     2025-08-04 17:34:14.000000000 +0200
+++ new/limine-9.6.1/GNUmakefile.in     2025-08-16 12:55:38.000000000 +0200
@@ -62,6 +62,17 @@
 LDFLAGS := @LDFLAGS@
 LIBS := @LIBS@
 
+CC_FOR_TARGET := @CC_FOR_TARGET@
+export CC_FOR_TARGET
+LD_FOR_TARGET := @LD_FOR_TARGET@
+export LD_FOR_TARGET
+OBJCOPY_FOR_TARGET := @OBJCOPY_FOR_TARGET@
+export OBJCOPY_FOR_TARGET
+OBJDUMP_FOR_TARGET := @OBJDUMP_FOR_TARGET@
+export OBJDUMP_FOR_TARGET
+READELF_FOR_TARGET := @READELF_FOR_TARGET@
+export READELF_FOR_TARGET
+
 override WERROR_FLAG := @WERROR_FLAG@
 export WERROR_FLAG
 
@@ -98,11 +109,10 @@
        $(SED) 
's/%VERSION%/@PACKAGE_VERSION@/g;s/%COPYRIGHT%/@LIMINE_COPYRIGHT@/g' <'$(call 
SHESCAPE,$(SRCDIR))/host/limine.c' >'$(call SHESCAPE,$(BINDIR))/limine.c'
        $(MAKE) -C '$(call SHESCAPE,$(BINDIR))' limine \
                CC="$(CC)" \
-               CFLAGS="$(CFLAGS)" \
+               CFLAGS="$(CFLAGS) -Wall -Wextra $(WERROR_FLAG)" \
                CPPFLAGS='$(CPPFLAGS) $(LIMINE_NO_BIOS) 
-DLIMINE_DATADIR=\"$(call SHESCAPE,$(datarootdir))/limine\"' \
                LDFLAGS="$(LDFLAGS)" \
-               LIBS="$(LIBS)" \
-               WERROR_FLAG="$(WERROR_FLAG)"
+               LIBS="$(LIBS)"
 
 $(call MKESCAPE,$(BINDIR))/Makefile: $(call MKESCAPE,$(SRCDIR))/host/host.mk 
$(call MKESCAPE,$(SRCDIR))/host/.gitignore
        mkdir -p '$(call SHESCAPE,$(BINDIR))'
@@ -290,7 +300,6 @@
        cp -r '$(call SHESCAPE,$(SRCDIR))'/.git '$(call 
SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)"/
        cd '$(call SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)" && git checkout .
        cd '$(call SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)" && ./bootstrap
-       rm -rf '$(call 
SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)/build-aux/freestanding-toolchain/.git"
        rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)/flanterm/.git"
        rm -rf '$(call 
SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)/flanterm/.gitignore"
        rm -rf '$(call 
SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)/freestnd-c-hdrs/.git"
@@ -323,7 +332,7 @@
 
 .PHONY: distclean
 distclean: clean
-       rm -rf ovmf* config.log config.status GNUmakefile config.h 
toolchain-files man/man1/limine.1
+       rm -rf ovmf* config.log config.status GNUmakefile config.h 
man/man1/limine.1
 
 .PHONY: maintainer-clean
 maintainer-clean: distclean
@@ -331,10 +340,9 @@
 
 .PHONY: common-uefi-x86-64
 common-uefi-x86-64:
-       TOOLCHAIN_FILE='$(call 
SHESCAPE,$(BUILDDIR))/toolchain-files/uefi-x86_64-toolchain.mk' \
-       TARGET=uefi-x86-64 \
-       BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/common-uefi-x86-64' \
-               $(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/common' -f common.mk
+       $(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/common' -f common.mk \
+               TARGET=uefi-x86-64 \
+               BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/common-uefi-x86-64'
 
 .PHONY: common-uefi-x86-64-clean
 common-uefi-x86-64-clean:
@@ -342,10 +350,9 @@
 
 .PHONY: common-uefi-aarch64
 common-uefi-aarch64:
-       TOOLCHAIN_FILE='$(call 
SHESCAPE,$(BUILDDIR))/toolchain-files/uefi-aarch64-toolchain.mk' \
-       TARGET=uefi-aarch64 \
-       BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/common-uefi-aarch64' \
-               $(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/common' -f common.mk
+       $(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/common' -f common.mk \
+               TARGET=uefi-aarch64 \
+               BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/common-uefi-aarch64'
 
 .PHONY: common-uefi-aarch64-clean
 common-uefi-aarch64-clean:
@@ -353,10 +360,9 @@
 
 .PHONY: common-uefi-riscv64
 common-uefi-riscv64:
-       TOOLCHAIN_FILE='$(call 
SHESCAPE,$(BUILDDIR))/toolchain-files/uefi-riscv64-toolchain.mk' \
-       TARGET=uefi-riscv64 \
-       BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/common-uefi-riscv64' \
-               $(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/common' -f common.mk
+       $(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/common' -f common.mk \
+               TARGET=uefi-riscv64 \
+               BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/common-uefi-riscv64'
 
 .PHONY: common-uefi-riscv64-clean
 common-uefi-riscv64-clean:
@@ -364,10 +370,9 @@
 
 .PHONY: common-uefi-loongarch64
 common-uefi-loongarch64:
-       TOOLCHAIN_FILE='$(call 
SHESCAPE,$(BUILDDIR))/toolchain-files/uefi-loongarch64-toolchain.mk' \
-       TARGET=uefi-loongarch64 \
-       BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/common-uefi-loongarch64' \
-               $(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/common' -f common.mk
+       $(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/common' -f common.mk \
+               TARGET=uefi-loongarch64 \
+               BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/common-uefi-loongarch64'
 
 .PHONY: common-uefi-loongarch64-clean
 common-uefi-loongarch64-clean:
@@ -375,10 +380,9 @@
 
 .PHONY: common-uefi-ia32
 common-uefi-ia32:
-       TOOLCHAIN_FILE='$(call 
SHESCAPE,$(BUILDDIR))/toolchain-files/uefi-i686-toolchain.mk' \
-       TARGET=uefi-ia32 \
-       BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/common-uefi-ia32' \
-               $(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/common' -f common.mk
+       $(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/common' -f common.mk \
+               TARGET=uefi-ia32 \
+               BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/common-uefi-ia32'
 
 .PHONY: common-uefi-ia32-clean
 common-uefi-ia32-clean:
@@ -386,10 +390,9 @@
 
 .PHONY: common-bios
 common-bios:
-       TOOLCHAIN_FILE='$(call 
SHESCAPE,$(BUILDDIR))/toolchain-files/bios-i686-toolchain.mk' \
-       TARGET=bios \
-       BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/common-bios' \
-               $(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/common' -f common.mk
+       $(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/common' -f common.mk \
+               TARGET=bios \
+               BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/common-bios'
 
 .PHONY: common-bios-clean
 common-bios-clean:
@@ -397,9 +400,8 @@
 
 .PHONY: decompressor
 decompressor:
-       TOOLCHAIN_FILE='$(call 
SHESCAPE,$(BUILDDIR))/toolchain-files/bios-i686-toolchain.mk' \
-       BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/decompressor-build' \
-               $(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/decompressor' -f 
decompressor.mk
+       $(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/decompressor' -f decompressor.mk 
\
+               BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/decompressor-build'
 
 .PHONY: decompressor-clean
 decompressor-clean:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/limine-9.5.3/bootstrap new/limine-9.6.1/bootstrap
--- old/limine-9.5.3/bootstrap  2025-08-04 17:34:14.000000000 +0200
+++ new/limine-9.6.1/bootstrap  2025-08-16 12:55:38.000000000 +0200
@@ -83,11 +83,6 @@
     cp cc-runtime/src/cc-runtime.c decompressor/cc-runtime.c
 
     clone_repo_commit \
-        https://codeberg.org/osdev/freestanding-toolchain.git \
-        build-aux/freestanding-toolchain \
-        75fb06aae0fa3cd191f7013985dc55019f7a94d1
-
-    clone_repo_commit \
         https://github.com/limine-bootloader/limine-protocol.git \
         limine-protocol \
         fedf97facd1c473ee8720f8dfd5a71d03490d928
@@ -95,7 +90,7 @@
     clone_repo_commit \
         https://codeberg.org/osdev/nyu-efi.git \
         nyu-efi \
-        849afdaaa45cb483c6f34ad1ac42052ba7263417
+        2307e1e06c51023285ceac4b41bfdd44d746df8b
 
     clone_repo_commit \
         https://github.com/jibsen/tinf.git \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/limine-9.5.3/build-aux/freestanding-toolchain/LICENSE 
new/limine-9.6.1/build-aux/freestanding-toolchain/LICENSE
--- old/limine-9.5.3/build-aux/freestanding-toolchain/LICENSE   2025-08-04 
17:34:17.000000000 +0200
+++ new/limine-9.6.1/build-aux/freestanding-toolchain/LICENSE   1970-01-01 
01:00:00.000000000 +0100
@@ -1,12 +0,0 @@
-Copyright (C) 2023-2025 mintsuki and contributors.
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/limine-9.5.3/build-aux/freestanding-toolchain/freestanding-toolchain 
new/limine-9.6.1/build-aux/freestanding-toolchain/freestanding-toolchain
--- old/limine-9.5.3/build-aux/freestanding-toolchain/freestanding-toolchain    
2025-08-04 17:34:17.000000000 +0200
+++ new/limine-9.6.1/build-aux/freestanding-toolchain/freestanding-toolchain    
1970-01-01 01:00:00.000000000 +0100
@@ -1,325 +0,0 @@
-#! /bin/sh
-
-# Copyright (C) 2023-2025 mintsuki and contributors.
-#
-# Permission to use, copy, modify, and/or distribute this software
-# for any purpose with or without fee is hereby granted.
-#
-# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
-# WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
-# AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
-# DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-# DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE
-# USE OR PERFORMANCE OF THIS SOFTWARE.
-
-set -e
-
-export LC_ALL=C
-
-IFS=" ""       "'
-'
-
-if [ -z "$ARCHITECTURE" ]; then
-    echo 'error: $ARCHITECTURE must be specified'
-    exit 1
-fi
-
-case "$ARCHITECTURE" in
-    arm)
-        TRIPLET=${ARCHITECTURE}-unknown-none-eabi
-        ;;
-    *)
-        TRIPLET=${ARCHITECTURE}-unknown-none-elf
-        ;;
-esac
-
-check_component() {
-    if eval [ "x\$WANT_$1" = "xyes" ]; then
-        printf "checking for $2 ($ARCHITECTURE)... "
-        if ! command -v $2 >/dev/null 2>&1; then
-            echo "no"
-            return 1
-        fi
-        echo "yes"
-        eval "_$1"="$2"
-    fi
-}
-
-validate_lang() {
-    CC_MACHINE="$($1 -dumpmachine | sed 's/-.*//g')"
-
-    if [ "x$CC_MACHINE" = "xamd64" ]; then
-        CC_MACHINE=x86_64
-    fi
-
-    if [ "x$CC_MACHINE" = "xx86_64" ]; then
-        case "$ARCHITECTURE" in
-            i?86)
-                CC_MACHINE="$ARCHITECTURE"
-                ;;
-        esac
-    fi
-
-    if ! [ "x$CC_MACHINE" = "x$ARCHITECTURE" ] || ! echo | $1 -x $2 -c - -o 
/dev/null >/dev/null 2>&1; then
-        return 1
-    fi
-}
-
-validate_cc() {
-    validate_lang "$1" c
-}
-
-validate_cxx() {
-    validate_lang "$1" c++
-}
-
-unset_toolchain() {
-    unset _FREESTANDING_ADDR2LINE
-    unset _FREESTANDING_AR
-    unset _FREESTANDING_CC
-    unset _FREESTANDING_CXX
-    unset _FREESTANDING_CXXFILT
-    unset _FREESTANDING_LD
-    unset _FREESTANDING_NM
-    unset _FREESTANDING_OBJCOPY
-    unset _FREESTANDING_OBJDUMP
-    unset _FREESTANDING_RANLIB
-    unset _FREESTANDING_READELF
-    unset _FREESTANDING_SIZE
-    unset _FREESTANDING_STRINGS
-    unset _FREESTANDING_STRIP
-}
-
-unset_toolchain
-
-TOOLCHAIN_VALID=no
-
-# First check if we have LLVM
-if [ -z "$FREESTANDING_TOOLCHAIN" ] || [ "x$FREESTANDING_TOOLCHAIN" = "xllvm" 
]; then while true; do
-    if [ -z "$FREESTANDING_ADDR2LINE" ]; then check_component 
FREESTANDING_ADDR2LINE llvm-addr2line || break; fi
-    if [ -z "$FREESTANDING_AR" ]; then check_component FREESTANDING_AR llvm-ar 
|| break; fi
-    if [ -z "$FREESTANDING_CC" ]; then check_component FREESTANDING_CC clang 
|| break; fi
-    if [ -z "$FREESTANDING_CXX" ]; then check_component FREESTANDING_CXX 
clang++ || break; fi
-    if [ -z "$FREESTANDING_CXXFILT" ]; then check_component 
FREESTANDING_CXXFILT llvm-cxxfilt || break; fi
-    if [ -z "$FREESTANDING_LD" ]; then check_component FREESTANDING_LD ld.lld 
|| break; fi
-    if [ -z "$FREESTANDING_NM" ]; then check_component FREESTANDING_NM llvm-nm 
|| break; fi
-    if [ -z "$FREESTANDING_OBJCOPY" ]; then check_component 
FREESTANDING_OBJCOPY llvm-objcopy || break; fi
-    if [ -z "$FREESTANDING_OBJDUMP" ]; then check_component 
FREESTANDING_OBJDUMP llvm-objdump || break; fi
-    if [ -z "$FREESTANDING_RANLIB" ]; then check_component FREESTANDING_RANLIB 
llvm-ranlib || break; fi
-    if [ -z "$FREESTANDING_READELF" ]; then check_component 
FREESTANDING_READELF llvm-readelf || break; fi
-    if [ -z "$FREESTANDING_SIZE" ]; then check_component FREESTANDING_SIZE 
llvm-size || break; fi
-    if [ -z "$FREESTANDING_STRINGS" ]; then check_component 
FREESTANDING_STRINGS llvm-strings || break; fi
-    if [ -z "$FREESTANDING_STRIP" ]; then check_component FREESTANDING_STRIP 
llvm-strip || break; fi
-
-    if [ -z "$FREESTANDING_CC" ] && [ "x$WANT_FREESTANDING_CC" = "xyes" ]; then
-        _FREESTANDING_CC="clang -target $TRIPLET"
-        validate_cc "$_FREESTANDING_CC" || break
-    fi
-    if [ -z "$FREESTANDING_CXX" ] && [ "x$WANT_FREESTANDING_CXX" = "xyes" ]; 
then
-        _FREESTANDING_CXX="clang++ -target $TRIPLET"
-        validate_cxx "$_FREESTANDING_CXX" || break
-    fi
-
-    TOOLCHAIN_VALID=yes
-    break
-done; fi
-
-if [ "$TOOLCHAIN_VALID" = "no" ]; then
-    if [ "x$FREESTANDING_TOOLCHAIN" = "xllvm" ]; then
-        echo "error: could not detect LLVM toolchain"
-        exit 1
-    fi
-
-    unset_toolchain
-fi
-
-if [ "x$FREESTANDING_TOOLCHAIN" = "xgnu" ]; then
-    unset FREESTANDING_TOOLCHAIN
-fi
-
-# Now try a prefixed GCC toolchain
-ENFORCE_TOOLCHAIN=no
-if [ "$TOOLCHAIN_VALID" = "no" ]; then
-    if [ -z "$FREESTANDING_TOOLCHAIN" ]; then
-        FREESTANDING_TOOLCHAIN="$TRIPLET"
-    else
-        ENFORCE_TOOLCHAIN=yes
-    fi
-
-    FIRST_LOOP=1
-    for i in $FREESTANDING_TOOLCHAIN \
-             $(echo $FREESTANDING_TOOLCHAIN | sed -E 
's/-unknown-none-(elf|eabi)/-none-\1/g') \
-             $(echo $FREESTANDING_TOOLCHAIN | sed -E 
's/-unknown-none-(elf|eabi)/-\1/g') \
-             $(echo $FREESTANDING_TOOLCHAIN | sed -E 
's/-unknown-none-(elf|eabi)/-unknown-linux-gnu/g') \
-             $(echo $FREESTANDING_TOOLCHAIN | sed -E 
's/-unknown-none-(elf|eabi)/-pc-linux-gnu/g') \
-             $(echo $FREESTANDING_TOOLCHAIN | sed -E 
's/-unknown-none-(elf|eabi)/-linux-gnu/g') \
-    ; do
-        if [ "$FIRST_LOOP" = 0 ] && [ "$ENFORCE_TOOLCHAIN" = "yes" ]; then
-            break
-        fi
-        FIRST_LOOP=0
-
-        if [ -z "$FREESTANDING_ADDR2LINE" ]; then check_component 
FREESTANDING_ADDR2LINE $i-addr2line || continue; fi
-        if [ -z "$FREESTANDING_AR" ]; then check_component FREESTANDING_AR 
$i-ar || continue; fi
-        if [ -z "$FREESTANDING_CC" ]; then check_component FREESTANDING_CC 
$i-gcc || continue; fi
-        if [ -z "$FREESTANDING_CXX" ]; then check_component FREESTANDING_CXX 
$i-g++ || continue; fi
-        if [ -z "$FREESTANDING_CXXFILT" ]; then check_component 
FREESTANDING_CXXFILT $i-c++filt || continue; fi
-        if [ -z "$FREESTANDING_LD" ]; then check_component FREESTANDING_LD 
$i-ld || continue; fi
-        if [ -z "$FREESTANDING_NM" ]; then check_component FREESTANDING_NM 
$i-nm || continue; fi
-        if [ -z "$FREESTANDING_OBJCOPY" ]; then check_component 
FREESTANDING_OBJCOPY $i-objcopy || continue; fi
-        if [ -z "$FREESTANDING_OBJDUMP" ]; then check_component 
FREESTANDING_OBJDUMP $i-objdump || continue; fi
-        if [ -z "$FREESTANDING_RANLIB" ]; then check_component 
FREESTANDING_RANLIB $i-ranlib || continue; fi
-        if [ -z "$FREESTANDING_READELF" ]; then check_component 
FREESTANDING_READELF $i-readelf || continue; fi
-        if [ -z "$FREESTANDING_SIZE" ]; then check_component FREESTANDING_SIZE 
$i-size || continue; fi
-        if [ -z "$FREESTANDING_STRINGS" ]; then check_component 
FREESTANDING_STRINGS $i-strings || continue; fi
-        if [ -z "$FREESTANDING_STRIP" ]; then check_component 
FREESTANDING_STRIP $i-strip || continue; fi
-
-        if [ -z "$FREESTANDING_CC" ] && [ "x$WANT_FREESTANDING_CC" = "xyes" ]; 
then
-            validate_cc "$_FREESTANDING_CC" || continue
-        fi
-        if [ -z "$FREESTANDING_CXX" ] && [ "x$WANT_FREESTANDING_CXX" = "xyes" 
]; then
-            validate_cxx "$_FREESTANDING_CXX" || continue
-        fi
-
-        TOOLCHAIN_VALID=yes
-        break
-    done
-fi
-
-if [ "$TOOLCHAIN_VALID" = "no" ]; then
-    if [ "$ENFORCE_TOOLCHAIN" = "yes" ]; then
-        echo "error: requested toolchain not valid"
-        exit 1
-    fi
-
-    unset_toolchain
-fi
-
-# If $CC is passed, try a toolchain based on the triplet of $CC
-if ! [ -z "$CC" ] && [ "$TOOLCHAIN_VALID" = "no" ]; then while true; do
-    CC_TRIPLET="$($CC -dumpmachine)"
-
-    if [ -z "$FREESTANDING_ADDR2LINE" ]; then check_component 
FREESTANDING_ADDR2LINE $CC_TRIPLET-addr2line || break; fi
-    if [ -z "$FREESTANDING_AR" ]; then check_component FREESTANDING_AR 
$CC_TRIPLET-ar || break; fi
-    if [ -z "$FREESTANDING_CC" ]; then check_component FREESTANDING_CC 
$CC_TRIPLET-gcc || break; fi
-    if [ -z "$FREESTANDING_CXX" ]; then check_component FREESTANDING_CXX 
$CC_TRIPLET-g++ || break; fi
-    if [ -z "$FREESTANDING_CXXFILT" ]; then check_component 
FREESTANDING_CXXFILT $CC_TRIPLET-c++filt || break; fi
-    if [ -z "$FREESTANDING_LD" ]; then check_component FREESTANDING_LD 
$CC_TRIPLET-ld || break; fi
-    if [ -z "$FREESTANDING_NM" ]; then check_component FREESTANDING_NM 
$CC_TRIPLET-nm || break; fi
-    if [ -z "$FREESTANDING_OBJCOPY" ]; then check_component 
FREESTANDING_OBJCOPY $CC_TRIPLET-objcopy || break; fi
-    if [ -z "$FREESTANDING_OBJDUMP" ]; then check_component 
FREESTANDING_OBJDUMP $CC_TRIPLET-objdump || break; fi
-    if [ -z "$FREESTANDING_RANLIB" ]; then check_component FREESTANDING_RANLIB 
$CC_TRIPLET-ranlib || break; fi
-    if [ -z "$FREESTANDING_READELF" ]; then check_component 
FREESTANDING_READELF $CC_TRIPLET-readelf || break; fi
-    if [ -z "$FREESTANDING_SIZE" ]; then check_component FREESTANDING_SIZE 
$CC_TRIPLET-size || break; fi
-    if [ -z "$FREESTANDING_STRINGS" ]; then check_component 
FREESTANDING_STRINGS $CC_TRIPLET-strings || break; fi
-    if [ -z "$FREESTANDING_STRIP" ]; then check_component FREESTANDING_STRIP 
$CC_TRIPLET-strip || break; fi
-
-    if [ -z "$FREESTANDING_CC" ] && [ "x$WANT_FREESTANDING_CC" = "xyes" ]; then
-        validate_cc "$_FREESTANDING_CC" || break
-    fi
-    if [ -z "$FREESTANDING_CXX" ] && [ "x$WANT_FREESTANDING_CXX" = "xyes" ]; 
then
-        validate_cxx "$_FREESTANDING_CXX" || break
-    fi
-
-    TOOLCHAIN_VALID=yes
-    break
-done; fi
-
-# Lastly, try a toolchain made up of unprefixed utilities
-if [ "$TOOLCHAIN_VALID" = "no" ]; then while true; do
-    unset_toolchain
-
-    if [ -z "$FREESTANDING_ADDR2LINE" ]; then check_component 
FREESTANDING_ADDR2LINE addr2line || break; fi
-    if [ -z "$FREESTANDING_AR" ]; then check_component FREESTANDING_AR ar || 
break; fi
-    if [ -z "$FREESTANDING_CC" ]; then check_component FREESTANDING_CC gcc || 
break; fi
-    if [ -z "$FREESTANDING_CXX" ]; then check_component FREESTANDING_CXX g++ 
|| break; fi
-    if [ -z "$FREESTANDING_CXXFILT" ]; then check_component 
FREESTANDING_CXXFILT c++filt || break; fi
-    if [ -z "$FREESTANDING_LD" ]; then check_component FREESTANDING_LD ld || 
break; fi
-    if [ -z "$FREESTANDING_NM" ]; then check_component FREESTANDING_NM nm || 
break; fi
-    if [ -z "$FREESTANDING_OBJCOPY" ]; then check_component 
FREESTANDING_OBJCOPY objcopy || break; fi
-    if [ -z "$FREESTANDING_OBJDUMP" ]; then check_component 
FREESTANDING_OBJDUMP objdump || break; fi
-    if [ -z "$FREESTANDING_RANLIB" ]; then check_component FREESTANDING_RANLIB 
ranlib || break; fi
-    if [ -z "$FREESTANDING_READELF" ]; then check_component 
FREESTANDING_READELF readelf || break; fi
-    if [ -z "$FREESTANDING_SIZE" ]; then check_component FREESTANDING_SIZE 
size || break; fi
-    if [ -z "$FREESTANDING_STRINGS" ]; then check_component 
FREESTANDING_STRINGS strings || break; fi
-    if [ -z "$FREESTANDING_STRIP" ]; then check_component FREESTANDING_STRIP 
strip || break; fi
-
-    if [ -z "$FREESTANDING_CC" ] && [ "x$WANT_FREESTANDING_CC" = "xyes" ]; then
-        validate_cc "$_FREESTANDING_CC" || break
-    fi
-    if [ -z "$FREESTANDING_CXX" ] && [ "x$WANT_FREESTANDING_CXX" = "xyes" ]; 
then
-        validate_cxx "$_FREESTANDING_CXX" || break
-    fi
-
-    TOOLCHAIN_VALID=yes
-    break
-done; fi
-
-if [ "$TOOLCHAIN_VALID" = "no" ]; then
-    echo "error: could not find any valid toolchain for target '$ARCHITECTURE'"
-    exit 1
-fi
-
-custom_check_fail() {
-    echo "error: custom toolchain component '$1' not valid"
-    exit 1
-}
-
-if ! [ -z "$FREESTANDING_ADDR2LINE" ]; then check_component 
FREESTANDING_ADDR2LINE "$FREESTANDING_ADDR2LINE" || custom_check_fail 
"$FREESTANDING_ADDR2LINE"; fi
-if ! [ -z "$FREESTANDING_AR" ]; then check_component FREESTANDING_AR 
"$FREESTANDING_AR" || custom_check_fail "$FREESTANDING_AR"; fi
-if ! [ -z "$FREESTANDING_CC" ]; then check_component FREESTANDING_CC 
"$FREESTANDING_CC" || custom_check_fail "$FREESTANDING_CC"; fi
-if ! [ -z "$FREESTANDING_CXX" ]; then check_component FREESTANDING_CXX 
"$FREESTANDING_CXX" || custom_check_fail "$FREESTANDING_CXX"; fi
-if ! [ -z "$FREESTANDING_CXXFILT" ]; then check_component FREESTANDING_CXXFILT 
"$FREESTANDING_CXXFILT" || custom_check_fail "$FREESTANDING_CXXFILT"; fi
-if ! [ -z "$FREESTANDING_LD" ]; then check_component FREESTANDING_LD 
"$FREESTANDING_LD" || custom_check_fail "$FREESTANDING_LD"; fi
-if ! [ -z "$FREESTANDING_NM" ]; then check_component FREESTANDING_NM 
"$FREESTANDING_NM" || custom_check_fail "$FREESTANDING_NM"; fi
-if ! [ -z "$FREESTANDING_OBJCOPY" ]; then check_component FREESTANDING_OBJCOPY 
"$FREESTANDING_OBJCOPY" || custom_check_fail "$FREESTANDING_OBJCOPY"; fi
-if ! [ -z "$FREESTANDING_OBJDUMP" ]; then check_component FREESTANDING_OBJDUMP 
"$FREESTANDING_OBJDUMP" || custom_check_fail "$FREESTANDING_OBJDUMP"; fi
-if ! [ -z "$FREESTANDING_RANLIB" ]; then check_component FREESTANDING_RANLIB 
"$FREESTANDING_RANLIB" || custom_check_fail "$FREESTANDING_RANLIB"; fi
-if ! [ -z "$FREESTANDING_READELF" ]; then check_component FREESTANDING_READELF 
"$FREESTANDING_READELF" || custom_check_fail "$FREESTANDING_READELF"; fi
-if ! [ -z "$FREESTANDING_SIZE" ]; then check_component FREESTANDING_SIZE 
"$FREESTANDING_SIZE" || custom_check_fail "$FREESTANDING_SIZE"; fi
-if ! [ -z "$FREESTANDING_STRINGS" ]; then check_component FREESTANDING_STRINGS 
"$FREESTANDING_STRINGS" || custom_check_fail "$FREESTANDING_STRING"; fi
-if ! [ -z "$FREESTANDING_STRIP" ]; then check_component FREESTANDING_STRIP 
"$FREESTANDING_STRIP" || custom_check_fail "$FREESTANDING_STRIP"; fi
-
-if ! [ -z "$FREESTANDING_CC" ] && [ "x$WANT_FREESTANDING_CC" = "xyes" ]; then
-    if ! validate_cc "$_FREESTANDING_CC"; then
-        echo "error: C compiler '$FREESTANDING_CC' does not support specified 
architecture '$ARCHITECTURE'"
-        exit 1
-    fi
-fi
-if ! [ -z "$FREESTANDING_CXX" ] && [ "x$WANT_FREESTANDING_CXX" = "xyes" ]; then
-    if ! validate_cxx "$_FREESTANDING_CXX"; then
-        echo "error: C++ compiler '$FREESTANDING_CXX' does not support 
specified architecture '$ARCHITECTURE'"
-        exit 1
-    fi
-fi
-
-unset FREESTANDING_CC_IS_CLANG
-if [ "x$WANT_FREESTANDING_CC" = "xyes" ]; then
-    FREESTANDING_CC_IS_CLANG=no
-
-    if $_FREESTANDING_CC --version 2>&1 | grep -q '^Target: '; then
-        FREESTANDING_CC_IS_CLANG=yes
-    fi
-fi
-
-# Output the final makefile chunk
-cat 1>&2 <<EOF
-${FREESTANDING_TOOLCHAIN_PREFIX}ADDR2LINE${FREESTANDING_TOOLCHAIN_SUFFIX} := 
$_FREESTANDING_ADDR2LINE
-${FREESTANDING_TOOLCHAIN_PREFIX}AR${FREESTANDING_TOOLCHAIN_SUFFIX} := 
$_FREESTANDING_AR
-${FREESTANDING_TOOLCHAIN_PREFIX}CC${FREESTANDING_TOOLCHAIN_SUFFIX} := 
$_FREESTANDING_CC
-${FREESTANDING_TOOLCHAIN_PREFIX}CXX${FREESTANDING_TOOLCHAIN_SUFFIX} := 
$_FREESTANDING_CXX
-${FREESTANDING_TOOLCHAIN_PREFIX}CXXFILT${FREESTANDING_TOOLCHAIN_SUFFIX} := 
$_FREESTANDING_CXXFILT
-${FREESTANDING_TOOLCHAIN_PREFIX}LD${FREESTANDING_TOOLCHAIN_SUFFIX} := 
$_FREESTANDING_LD
-${FREESTANDING_TOOLCHAIN_PREFIX}NM${FREESTANDING_TOOLCHAIN_SUFFIX} := 
$_FREESTANDING_NM
-${FREESTANDING_TOOLCHAIN_PREFIX}OBJCOPY${FREESTANDING_TOOLCHAIN_SUFFIX} := 
$_FREESTANDING_OBJCOPY
-${FREESTANDING_TOOLCHAIN_PREFIX}OBJDUMP${FREESTANDING_TOOLCHAIN_SUFFIX} := 
$_FREESTANDING_OBJDUMP
-${FREESTANDING_TOOLCHAIN_PREFIX}RANLIB${FREESTANDING_TOOLCHAIN_SUFFIX} := 
$_FREESTANDING_RANLIB
-${FREESTANDING_TOOLCHAIN_PREFIX}READELF${FREESTANDING_TOOLCHAIN_SUFFIX} := 
$_FREESTANDING_READELF
-${FREESTANDING_TOOLCHAIN_PREFIX}SIZE${FREESTANDING_TOOLCHAIN_SUFFIX} := 
$_FREESTANDING_SIZE
-${FREESTANDING_TOOLCHAIN_PREFIX}STRINGS${FREESTANDING_TOOLCHAIN_SUFFIX} := 
$_FREESTANDING_STRINGS
-${FREESTANDING_TOOLCHAIN_PREFIX}STRIP${FREESTANDING_TOOLCHAIN_SUFFIX} := 
$_FREESTANDING_STRIP
-
-${FREESTANDING_TOOLCHAIN_PREFIX}CC${FREESTANDING_TOOLCHAIN_SUFFIX}_IS_CLANG := 
$FREESTANDING_CC_IS_CLANG
-EOF
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/limine-9.5.3/common/common.mk new/limine-9.6.1/common/common.mk
--- old/limine-9.5.3/common/common.mk   2025-08-04 17:34:14.000000000 +0200
+++ new/limine-9.6.1/common/common.mk   2025-08-16 12:55:38.000000000 +0200
@@ -1,8 +1,5 @@
 .SUFFIXES:
 
-include $(TOOLCHAIN_FILE)
-export OBJDUMP_FOR_TARGET
-
 override SRCDIR := $(shell pwd -P)
 
 override SPACE := $(subst ,, )
@@ -11,6 +8,8 @@
 override SHESCAPE = $(subst ','\'',$(1))
 override OBJESCAPE = $(subst .a ,.a' ',$(subst .o ,.o' ',$(call 
SHESCAPE,$(1))))
 
+override CC_FOR_TARGET_IS_CLANG := $(shell ! $(CC_FOR_TARGET) --version 
2>/dev/null | $(GREP) -q '^Target: '; echo $$?)
+
 COM_OUTPUT := false
 E9_OUTPUT := false
 
@@ -36,9 +35,6 @@
     -fno-strict-aliasing \
     -fno-lto
 
-override CFLAGS_FOR_TARGET := \
-    $(patsubst -g,-gdwarf,$(CFLAGS_FOR_TARGET))
-
 override CPPFLAGS_FOR_TARGET := \
     -I . \
     -I libc-compat \
@@ -72,12 +68,17 @@
     $(patsubst -g,-g -F dwarf,$(NASMFLAGS_FOR_TARGET))
 
 ifeq ($(TARGET),bios)
+    ifeq ($(CC_FOR_TARGET_IS_CLANG),1)
+        override CC_FOR_TARGET += \
+            -target i686-unknown-none-elf
+    endif
     override CFLAGS_FOR_TARGET += \
         -fno-PIC \
         -m32 \
         -march=i686 \
         -mabi=sysv \
-        -mno-80387
+        -mno-80387 \
+        -mno-mmx
     override CPPFLAGS_FOR_TARGET := \
         $(CPPFLAGS_FOR_TARGET) \
         -DBIOS
@@ -89,6 +90,10 @@
 endif
 
 ifeq ($(TARGET),uefi-x86-64)
+    ifeq ($(CC_FOR_TARGET_IS_CLANG),1)
+        override CC_FOR_TARGET += \
+            -target x86_64-unknown-none-elf
+    endif
     override CFLAGS_FOR_TARGET += \
         -fPIE \
         -fshort-wchar \
@@ -112,13 +117,18 @@
 endif
 
 ifeq ($(TARGET),uefi-ia32)
+    ifeq ($(CC_FOR_TARGET_IS_CLANG),1)
+        override CC_FOR_TARGET += \
+            -target i686-unknown-none-elf
+    endif
     override CFLAGS_FOR_TARGET += \
         -fPIE \
         -fshort-wchar \
         -m32 \
         -march=i686 \
         -mabi=sysv \
-        -mno-80387
+        -mno-80387 \
+        -mno-mmx
     override CPPFLAGS_FOR_TARGET := \
         -I ../nyu-efi/inc \
         $(CPPFLAGS_FOR_TARGET) \
@@ -131,6 +141,10 @@
 endif
 
 ifeq ($(TARGET),uefi-aarch64)
+    ifeq ($(CC_FOR_TARGET_IS_CLANG),1)
+        override CC_FOR_TARGET += \
+            -target aarch64-unknown-none-elf
+    endif
     override CFLAGS_FOR_TARGET += \
         -fPIE \
         -fshort-wchar \
@@ -144,16 +158,18 @@
 endif
 
 ifeq ($(TARGET),uefi-riscv64)
+    ifeq ($(CC_FOR_TARGET_IS_CLANG),1)
+        override CC_FOR_TARGET += \
+            -target riscv64-unknown-none-elf
+    endif
     override CFLAGS_FOR_TARGET += \
         -fPIE \
         -fshort-wchar
-
-    ifeq ($(CC_FOR_TARGET_IS_CLANG),yes)
+    ifeq ($(CC_FOR_TARGET_IS_CLANG),1)
         override CFLAGS_FOR_TARGET += -march=rv64imac
     else
         override CFLAGS_FOR_TARGET += -march=rv64imac_zicsr_zifencei
     endif
-
     override CFLAGS_FOR_TARGET += \
         -mabi=lp64 \
         -mno-relax
@@ -165,14 +181,17 @@
 endif
 
 ifeq ($(TARGET),uefi-loongarch64)
+    ifeq ($(CC_FOR_TARGET_IS_CLANG),1)
+        override CC_FOR_TARGET += \
+            -target loongarch64-unknown-none-elf
+    endif
     override CFLAGS_FOR_TARGET += \
         -fPIE \
         -fshort-wchar \
         -march=loongarch64 \
         -mabi=lp64s \
         -mfpu=none \
-        -msimd=none \
-        -mno-relax
+        -msimd=none
 
     override CPPFLAGS_FOR_TARGET := \
         -I ../nyu-efi/inc \
@@ -224,7 +243,6 @@
 ifeq ($(TARGET),uefi-loongarch64)
     override LDFLAGS_FOR_TARGET += \
         -m elf64loongarch \
-        --no-relax \
         -pie \
         -z text
 endif
@@ -341,7 +359,7 @@
 
 $(call MKESCAPE,$(BUILDDIR))/limine_stage2only.elf: $(OBJ_S2)
        $(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker_stage2only.ld'
-       $(LD_FOR_TARGET) '$(call OBJESCAPE,$^)' $(LDFLAGS_FOR_TARGET) -T'$(call 
SHESCAPE,$(BUILDDIR))/linker_stage2only.ld' -o '$(call SHESCAPE,$@)' || \
+       $(LD_FOR_TARGET) $(LDFLAGS_FOR_TARGET) '$(call OBJESCAPE,$^)' -T'$(call 
SHESCAPE,$(BUILDDIR))/linker_stage2only.ld' -o '$(call SHESCAPE,$@)' || \
                ( echo "This error may mean that stage 2 was trying to use 
stage 3 symbols before loading stage 3" && \
                  false )
 
@@ -355,7 +373,7 @@
 $(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf: $(OBJ)
        $(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/empty'
        $(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker_nos2map.ld'
-       $(LD_FOR_TARGET) '$(call OBJESCAPE,$^)' $(LDFLAGS_FOR_TARGET) -T'$(call 
SHESCAPE,$(BUILDDIR))/linker_nos2map.ld' -o '$(call SHESCAPE,$@)'
+       $(LD_FOR_TARGET) $(LDFLAGS_FOR_TARGET) '$(call OBJESCAPE,$^)' -T'$(call 
SHESCAPE,$(BUILDDIR))/linker_nos2map.ld' -o '$(call SHESCAPE,$@)'
        $(OBJCOPY_FOR_TARGET) -O binary --only-section=.note.gnu.build-id 
'$(call SHESCAPE,$@)' '$(call SHESCAPE,$(BUILDDIR))/build-id.s2.bin'
        cd '$(call SHESCAPE,$(BUILDDIR))' && \
                $(OBJCOPY_FOR_TARGET) -I binary -B i386 -O elf32-i386 
build-id.s2.bin build-id.s2.o && \
@@ -364,7 +382,7 @@
        cd '$(call SHESCAPE,$(BUILDDIR))' && \
                $(OBJCOPY_FOR_TARGET) -I binary -B i386 -O elf32-i386 
build-id.s3.bin build-id.s3.o && \
                $(OBJCOPY_FOR_TARGET) --add-section .note.GNU-stack='$(call 
SHESCAPE,$(BUILDDIR))/empty' --set-section-flags 
.note.GNU-stack=noload,readonly build-id.s3.o
-       $(LD_FOR_TARGET) '$(call OBJESCAPE,$^)' '$(call 
SHESCAPE,$(BUILDDIR))/build-id.s2.o' '$(call 
SHESCAPE,$(BUILDDIR))/build-id.s3.o' $(LDFLAGS_FOR_TARGET) -T'$(call 
SHESCAPE,$(BUILDDIR))/linker_nos2map.ld' -o '$(call SHESCAPE,$@)'
+       $(LD_FOR_TARGET) $(LDFLAGS_FOR_TARGET) '$(call OBJESCAPE,$^)' '$(call 
SHESCAPE,$(BUILDDIR))/build-id.s2.o' '$(call 
SHESCAPE,$(BUILDDIR))/build-id.s3.o' -T'$(call 
SHESCAPE,$(BUILDDIR))/linker_nos2map.ld' -o '$(call SHESCAPE,$@)'
 
 $(call MKESCAPE,$(BUILDDIR))/linker_nomap.ld: linker_bios.ld.in
        $(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
@@ -373,7 +391,7 @@
 $(call MKESCAPE,$(BUILDDIR))/limine_nos3map.elf: $(OBJ) $(call 
MKESCAPE,$(BUILDDIR))/stage2.map.o
        $(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/empty'
        $(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
-       $(LD_FOR_TARGET) '$(call OBJESCAPE,$^)' $(LDFLAGS_FOR_TARGET) -T'$(call 
SHESCAPE,$(BUILDDIR))/linker_nomap.ld' -o '$(call SHESCAPE,$@)'
+       $(LD_FOR_TARGET) $(LDFLAGS_FOR_TARGET) '$(call OBJESCAPE,$^)' -T'$(call 
SHESCAPE,$(BUILDDIR))/linker_nomap.ld' -o '$(call SHESCAPE,$@)'
        $(OBJCOPY_FOR_TARGET) -O binary --only-section=.note.gnu.build-id 
'$(call SHESCAPE,$@)' '$(call SHESCAPE,$(BUILDDIR))/build-id.s2.bin'
        cd '$(call SHESCAPE,$(BUILDDIR))' && \
                $(OBJCOPY_FOR_TARGET) -I binary -B i386 -O elf32-i386 
build-id.s2.bin build-id.s2.o && \
@@ -382,7 +400,7 @@
        cd '$(call SHESCAPE,$(BUILDDIR))' && \
                $(OBJCOPY_FOR_TARGET) -I binary -B i386 -O elf32-i386 
build-id.s3.bin build-id.s3.o && \
                $(OBJCOPY_FOR_TARGET) --add-section .note.GNU-stack='$(call 
SHESCAPE,$(BUILDDIR))/empty' --set-section-flags 
.note.GNU-stack=noload,readonly build-id.s3.o
-       $(LD_FOR_TARGET) '$(call OBJESCAPE,$^)' '$(call 
SHESCAPE,$(BUILDDIR))/build-id.s2.o' '$(call 
SHESCAPE,$(BUILDDIR))/build-id.s3.o' $(LDFLAGS_FOR_TARGET) -T'$(call 
SHESCAPE,$(BUILDDIR))/linker_nomap.ld' -o '$(call SHESCAPE,$@)'
+       $(LD_FOR_TARGET) $(LDFLAGS_FOR_TARGET) '$(call OBJESCAPE,$^)' '$(call 
SHESCAPE,$(BUILDDIR))/build-id.s2.o' '$(call 
SHESCAPE,$(BUILDDIR))/build-id.s3.o' -T'$(call 
SHESCAPE,$(BUILDDIR))/linker_nomap.ld' -o '$(call SHESCAPE,$@)'
 
 $(call MKESCAPE,$(BUILDDIR))/linker.ld: linker_bios.ld.in
        $(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
@@ -391,7 +409,7 @@
 $(call MKESCAPE,$(BUILDDIR))/limine.elf: $(OBJ) $(call 
MKESCAPE,$(BUILDDIR))/stage2.map.o $(call MKESCAPE,$(BUILDDIR))/full.map.o
        $(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/empty'
        $(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
-       $(LD_FOR_TARGET) '$(call OBJESCAPE,$^)' $(LDFLAGS_FOR_TARGET) -T'$(call 
SHESCAPE,$(BUILDDIR))/linker.ld' -o '$(call SHESCAPE,$@)'
+       $(LD_FOR_TARGET) $(LDFLAGS_FOR_TARGET) '$(call OBJESCAPE,$^)' -T'$(call 
SHESCAPE,$(BUILDDIR))/linker.ld' -o '$(call SHESCAPE,$@)'
        $(OBJCOPY_FOR_TARGET) -O binary --only-section=.note.gnu.build-id 
'$(call SHESCAPE,$@)' '$(call SHESCAPE,$(BUILDDIR))/build-id.s2.bin'
        cd '$(call SHESCAPE,$(BUILDDIR))' && \
                $(OBJCOPY_FOR_TARGET) -I binary -B i386 -O elf32-i386 
build-id.s2.bin build-id.s2.o && \
@@ -400,7 +418,7 @@
        cd '$(call SHESCAPE,$(BUILDDIR))' && \
                $(OBJCOPY_FOR_TARGET) -I binary -B i386 -O elf32-i386 
build-id.s3.bin build-id.s3.o && \
                $(OBJCOPY_FOR_TARGET) --add-section .note.GNU-stack='$(call 
SHESCAPE,$(BUILDDIR))/empty' --set-section-flags 
.note.GNU-stack=noload,readonly build-id.s3.o
-       $(LD_FOR_TARGET) '$(call OBJESCAPE,$^)' '$(call 
SHESCAPE,$(BUILDDIR))/build-id.s2.o' '$(call 
SHESCAPE,$(BUILDDIR))/build-id.s3.o' $(LDFLAGS_FOR_TARGET) -T'$(call 
SHESCAPE,$(BUILDDIR))/linker.ld' -o '$(call SHESCAPE,$@)'
+       $(LD_FOR_TARGET) $(LDFLAGS_FOR_TARGET) '$(call OBJESCAPE,$^)' '$(call 
SHESCAPE,$(BUILDDIR))/build-id.s2.o' '$(call 
SHESCAPE,$(BUILDDIR))/build-id.s3.o' -T'$(call SHESCAPE,$(BUILDDIR))/linker.ld' 
-o '$(call SHESCAPE,$@)'
 
 endif
 
@@ -415,7 +433,7 @@
 $(call MKESCAPE,$(BUILDDIR))/BOOTX64.EFI: $(call 
MKESCAPE,$(BUILDDIR))/limine.elf
        $(OBJCOPY_FOR_TARGET) -O binary '$(call SHESCAPE,$<)' '$(call 
SHESCAPE,$@)'
        chmod -x '$(call SHESCAPE,$@)'
-       dd if=/dev/zero of='$(call SHESCAPE,$@)' bs=4096 count=0 seek=$$(( 
($$(wc -c < '$(call SHESCAPE,$@)') + 4095) / 4096 ))
+       dd if=/dev/zero of='$(call SHESCAPE,$@)' bs=4096 count=0 seek=$$(( 
($$(wc -c < '$(call SHESCAPE,$@)') + 4095) / 4096 )) 2>/dev/null
 
 $(call MKESCAPE,$(BUILDDIR))/linker_nomap.ld: linker_uefi_x86_64.ld.in
        $(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
@@ -425,7 +443,7 @@
        $(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
        $(LD_FOR_TARGET) \
                -T'$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' \
-               '$(call OBJESCAPE,$^)' $(LDFLAGS_FOR_TARGET) -o '$(call 
SHESCAPE,$@)'
+               $(LDFLAGS_FOR_TARGET) '$(call OBJESCAPE,$^)' -o '$(call 
SHESCAPE,$@)'
 
 $(call MKESCAPE,$(BUILDDIR))/linker.ld: linker_uefi_x86_64.ld.in
        $(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
@@ -435,7 +453,7 @@
        $(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
        $(LD_FOR_TARGET) \
                -T'$(call SHESCAPE,$(BUILDDIR))/linker.ld' \
-               '$(call OBJESCAPE,$^)' $(LDFLAGS_FOR_TARGET) -o '$(call 
SHESCAPE,$@)'
+               $(LDFLAGS_FOR_TARGET) '$(call OBJESCAPE,$^)' -o '$(call 
SHESCAPE,$@)'
 
 endif
 
@@ -450,7 +468,7 @@
 $(call MKESCAPE,$(BUILDDIR))/BOOTAA64.EFI: $(call 
MKESCAPE,$(BUILDDIR))/limine.elf
        $(OBJCOPY_FOR_TARGET) -O binary '$(call SHESCAPE,$<)' '$(call 
SHESCAPE,$@)'
        chmod -x '$(call SHESCAPE,$@)'
-       dd if=/dev/zero of='$(call SHESCAPE,$@)' bs=4096 count=0 seek=$$(( 
($$(wc -c < '$(call SHESCAPE,$@)') + 4095) / 4096 ))
+       dd if=/dev/zero of='$(call SHESCAPE,$@)' bs=4096 count=0 seek=$$(( 
($$(wc -c < '$(call SHESCAPE,$@)') + 4095) / 4096 )) 2>/dev/null
 
 $(call MKESCAPE,$(BUILDDIR))/linker_nomap.ld: linker_uefi_aarch64.ld.in
        $(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
@@ -460,7 +478,7 @@
        $(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
        $(LD_FOR_TARGET) \
                -T'$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' \
-               '$(call OBJESCAPE,$^)' $(LDFLAGS_FOR_TARGET) -o '$(call 
SHESCAPE,$@)'
+               $(LDFLAGS_FOR_TARGET) '$(call OBJESCAPE,$^)' -o '$(call 
SHESCAPE,$@)'
 
 $(call MKESCAPE,$(BUILDDIR))/linker.ld: linker_uefi_aarch64.ld.in
        $(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
@@ -470,7 +488,7 @@
        $(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
        $(LD_FOR_TARGET) \
                -T'$(call SHESCAPE,$(BUILDDIR))/linker.ld' \
-               '$(call OBJESCAPE,$^)' $(LDFLAGS_FOR_TARGET) -o '$(call 
SHESCAPE,$@)'
+               $(LDFLAGS_FOR_TARGET) '$(call OBJESCAPE,$^)' -o '$(call 
SHESCAPE,$@)'
 endif
 
 ifeq ($(TARGET),uefi-riscv64)
@@ -484,7 +502,7 @@
 $(call MKESCAPE,$(BUILDDIR))/BOOTRISCV64.EFI: $(call 
MKESCAPE,$(BUILDDIR))/limine.elf
        $(OBJCOPY_FOR_TARGET) -O binary '$(call SHESCAPE,$<)' '$(call 
SHESCAPE,$@)'
        chmod -x '$(call SHESCAPE,$@)'
-       dd if=/dev/zero of='$(call SHESCAPE,$@)' bs=4096 count=0 seek=$$(( 
($$(wc -c < '$(call SHESCAPE,$@)') + 4095) / 4096 ))
+       dd if=/dev/zero of='$(call SHESCAPE,$@)' bs=4096 count=0 seek=$$(( 
($$(wc -c < '$(call SHESCAPE,$@)') + 4095) / 4096 )) 2>/dev/null
 
 $(call MKESCAPE,$(BUILDDIR))/linker_nomap.ld: linker_uefi_riscv64.ld.in
        $(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
@@ -494,7 +512,7 @@
        $(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
        $(LD_FOR_TARGET) \
                -T'$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' \
-               '$(call OBJESCAPE,$^)' $(LDFLAGS_FOR_TARGET) -o '$(call 
SHESCAPE,$@)'
+               $(LDFLAGS_FOR_TARGET) '$(call OBJESCAPE,$^)' -o '$(call 
SHESCAPE,$@)'
 
 $(call MKESCAPE,$(BUILDDIR))/linker.ld: linker_uefi_riscv64.ld.in
        $(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
@@ -504,7 +522,7 @@
        $(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
        $(LD_FOR_TARGET) \
                -T'$(call SHESCAPE,$(BUILDDIR))/linker.ld' \
-               '$(call OBJESCAPE,$^)' $(LDFLAGS_FOR_TARGET) -o '$(call 
SHESCAPE,$@)'
+               $(LDFLAGS_FOR_TARGET) '$(call OBJESCAPE,$^)' -o '$(call 
SHESCAPE,$@)'
 endif
 
 ifeq ($(TARGET),uefi-loongarch64)
@@ -518,7 +536,7 @@
 $(call MKESCAPE,$(BUILDDIR))/BOOTLOONGARCH64.EFI: $(call 
MKESCAPE,$(BUILDDIR))/limine.elf
        $(OBJCOPY_FOR_TARGET) -O binary '$(call SHESCAPE,$<)' '$(call 
SHESCAPE,$@)'
        chmod -x '$(call SHESCAPE,$@)'
-       dd if=/dev/zero of='$(call SHESCAPE,$@)' bs=4096 count=0 seek=$$(( 
($$(wc -c < '$(call SHESCAPE,$@)') + 4095) / 4096 ))
+       dd if=/dev/zero of='$(call SHESCAPE,$@)' bs=4096 count=0 seek=$$(( 
($$(wc -c < '$(call SHESCAPE,$@)') + 4095) / 4096 )) 2>/dev/null
 
 $(call MKESCAPE,$(BUILDDIR))/linker_nomap.ld: linker_uefi_loongarch64.ld.in
        $(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
@@ -528,7 +546,7 @@
        $(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
        $(LD_FOR_TARGET) \
                -T'$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' \
-               '$(call OBJESCAPE,$^)' $(LDFLAGS_FOR_TARGET) -o '$(call 
SHESCAPE,$@)'
+               $(LDFLAGS_FOR_TARGET) '$(call OBJESCAPE,$^)' -o '$(call 
SHESCAPE,$@)'
 
 $(call MKESCAPE,$(BUILDDIR))/linker.ld: linker_uefi_loongarch64.ld.in
        $(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
@@ -538,7 +556,7 @@
        $(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
        $(LD_FOR_TARGET) \
                -T'$(call SHESCAPE,$(BUILDDIR))/linker.ld' \
-               '$(call OBJESCAPE,$^)' $(LDFLAGS_FOR_TARGET) -o '$(call 
SHESCAPE,$@)'
+               $(LDFLAGS_FOR_TARGET) '$(call OBJESCAPE,$^)' -o '$(call 
SHESCAPE,$@)'
 endif
 
 ifeq ($(TARGET),uefi-ia32)
@@ -552,7 +570,7 @@
 $(call MKESCAPE,$(BUILDDIR))/BOOTIA32.EFI: $(call 
MKESCAPE,$(BUILDDIR))/limine.elf
        $(OBJCOPY_FOR_TARGET) -O binary '$(call SHESCAPE,$<)' '$(call 
SHESCAPE,$@)'
        chmod -x '$(call SHESCAPE,$@)'
-       dd if=/dev/zero of='$(call SHESCAPE,$@)' bs=4096 count=0 seek=$$(( 
($$(wc -c < '$(call SHESCAPE,$@)') + 4095) / 4096 ))
+       dd if=/dev/zero of='$(call SHESCAPE,$@)' bs=4096 count=0 seek=$$(( 
($$(wc -c < '$(call SHESCAPE,$@)') + 4095) / 4096 )) 2>/dev/null
 
 $(call MKESCAPE,$(BUILDDIR))/linker_nomap.ld: linker_uefi_ia32.ld.in
        $(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
@@ -562,7 +580,7 @@
        $(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
        $(LD_FOR_TARGET) \
                -T'$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' \
-               '$(call OBJESCAPE,$^)' $(LDFLAGS_FOR_TARGET) -o '$(call 
SHESCAPE,$@)'
+               $(LDFLAGS_FOR_TARGET) '$(call OBJESCAPE,$^)' -o '$(call 
SHESCAPE,$@)'
 
 $(call MKESCAPE,$(BUILDDIR))/linker.ld: linker_uefi_ia32.ld.in
        $(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
@@ -572,7 +590,7 @@
        $(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
        $(LD_FOR_TARGET) \
                -T'$(call SHESCAPE,$(BUILDDIR))/linker.ld' \
-               '$(call OBJESCAPE,$^)' $(LDFLAGS_FOR_TARGET) -o '$(call 
SHESCAPE,$@)'
+               $(LDFLAGS_FOR_TARGET) '$(call OBJESCAPE,$^)' -o '$(call 
SHESCAPE,$@)'
 
 endif
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/limine-9.5.3/common/drivers/disk.s2.c 
new/limine-9.6.1/common/drivers/disk.s2.c
--- old/limine-9.5.3/common/drivers/disk.s2.c   2025-08-04 17:34:14.000000000 
+0200
+++ new/limine-9.6.1/common/drivers/disk.s2.c   2025-08-16 12:55:38.000000000 
+0200
@@ -408,6 +408,32 @@
     return NULL;
 }
 
+static bool validate_efi_handle(EFI_HANDLE efi_handle) {
+    EFI_STATUS status;
+
+    EFI_GUID dp_guid = EFI_DEVICE_PATH_PROTOCOL_GUID;
+    EFI_DEVICE_PATH_PROTOCOL *dp = NULL;
+
+    status = gBS->HandleProtocol(efi_handle, &dp_guid, (void **)&dp);
+    if (status) {
+        return false;
+    }
+
+    for (;; dp = (void *)dp + *(uint16_t *)dp->Length) {
+        if (dp->Type == END_DEVICE_PATH_TYPE && dp->SubType == 
END_ENTIRE_DEVICE_PATH_SUBTYPE) {
+            break;
+        }
+
+        if (dp->Type != HARDWARE_DEVICE_PATH || dp->SubType != HW_PCI_DP) {
+            continue;
+        }
+
+        return true;
+    }
+
+    return false;
+}
+
 struct volume *disk_volume_from_efi_handle(EFI_HANDLE efi_handle) {
     struct volume *ret;
 
@@ -416,13 +442,15 @@
     EFI_GUID block_io_guid = BLOCK_IO_PROTOCOL;
     EFI_BLOCK_IO *block_io = NULL;
 
+    if (!validate_efi_handle(efi_handle)) {
+        return NULL;
+    }
+
     status = gBS->HandleProtocol(efi_handle, &block_io_guid, (void 
**)&block_io);
     if (status) {
         return pxe_from_efi_handle(efi_handle);
     }
 
-    block_io->Media->WriteCaching = false;
-
     uint64_t bdev_size = ((uint64_t)block_io->Media->LastBlock + 1) * 
(uint64_t)block_io->Media->BlockSize;
     if (bdev_size < UNIQUE_SECTOR_POOL_SIZE) {
         goto fallback;
@@ -460,6 +488,9 @@
     *(uint64_t *)unique_sector_pool = signature;
     status = block_io->WriteBlocks(block_io, block_io->Media->MediaId, 0, 
4096, unique_sector_pool);
     if (status) {
+        // Attempt to restore anyways, just in case.
+        *(uint64_t *)unique_sector_pool = orig;
+        block_io->WriteBlocks(block_io, block_io->Media->MediaId, 0, 4096, 
unique_sector_pool);
         return NULL;
     }
 
@@ -621,6 +652,10 @@
     for (size_t i = 0; i < handle_count; i++) {
         EFI_BLOCK_IO *drive = NULL;
 
+        if (!validate_efi_handle(handles[i])) {
+            continue;
+        }
+
         status = gBS->HandleProtocol(handles[i], &block_io_guid, (void 
**)&drive);
 
         if (status != 0 || drive == NULL || drive->Media->LastBlock == 0)
@@ -638,6 +673,8 @@
 
         status = drive->WriteBlocks(drive, drive->Media->MediaId, 0, 4096, 
unique_sector_pool);
 
+        drive->Media->WriteCaching = true;
+
         struct volume *block = ext_mem_alloc(sizeof(struct volume));
 
         if ((status || drive->Media->ReadOnly) && drive->Media->BlockSize == 
2048) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/limine-9.5.3/common/linker_uefi_riscv64.ld.in 
new/limine-9.6.1/common/linker_uefi_riscv64.ld.in
--- old/limine-9.5.3/common/linker_uefi_riscv64.ld.in   2025-08-04 
17:34:14.000000000 +0200
+++ new/limine-9.6.1/common/linker_uefi_riscv64.ld.in   2025-08-16 
12:55:38.000000000 +0200
@@ -39,6 +39,8 @@
 
         __data_start = ABSOLUTE(.);
         *(.rodata .rodata.*)
+        *(.srodata .srodata.*)
+        *(.sdata2 .sdata2.*)
 
 #ifdef LINKER_NOMAP
    full_map = .;
@@ -54,8 +56,8 @@
     } :data
 
     .bss : {
-        *(.sbss .sbss.*)
         *(.bss .bss.*)
+        *(.sbss .sbss.*)
         *(COMMON)
    data_end = .;
     } :data
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/limine-9.5.3/common/protos/chainload.c 
new/limine-9.6.1/common/protos/chainload.c
--- old/limine-9.5.3/common/protos/chainload.c  2025-08-04 17:34:14.000000000 
+0200
+++ new/limine-9.6.1/common/protos/chainload.c  2025-08-16 12:55:38.000000000 
+0200
@@ -195,71 +195,56 @@
 
 #elif defined (UEFI)
 
-/*
-static void devpath_print(EFI_DEVICE_PATH_PROTOCOL *DevicePath) {
-    for (;;) {
-        uint8_t type = DevicePath->Type;
-        uint8_t subtype = DevicePath->SubType;
-        size_t length = *(uint16_t *)DevicePath->Length;
-
-        print("Device Path Type: %x, SubType: %x, Length: %x\n", type, 
subtype, length);
-
-        if (type == 4 && subtype == 4) {
-            for (size_t i = sizeof(EFI_DEVICE_PATH_PROTOCOL); i < length; i += 
2) {
-                print("%c", *(uint16_t *)((void *)DevicePath + i));
-            }
-            print("\n");
-        }
+static EFI_DEVICE_PATH_PROTOCOL *build_relative_efi_file_path(struct 
file_handle *image) {
+    // The file path stored in EFI_LOADED_IMAGE_PROTOCOL::FilePath is
+    // expected to be relative to the EFI_LOADED_IMAGE_PROTOCOL::DeviceHandle.
+    // For this reason the EFI_DEVICE_PATH_PROTOCOL of the efi_part_handle
+    // is not used as a prefix. This likely also means that the returned
+    // path cannot be given to gBS->LoadImage() directly.
 
-        DevicePath = (EFI_DEVICE_PATH_PROTOCOL *)((uint8_t *)DevicePath + 
*(uint16_t *)DevicePath->Length);
+    size_t original_path_chars = strlen(image->path);
 
-        if (type == END_DEVICE_PATH_TYPE) {
-            break;
-        }
-    }
-}
-*/
+    size_t efi_file_path_alloc_len = (original_path_chars + 1) * 
sizeof(CHAR16);
+    CHAR16 *efi_file_path = ext_mem_alloc(efi_file_path_alloc_len);
 
-static size_t get_devpath_len(EFI_DEVICE_PATH_PROTOCOL *devpath) {
-    size_t len = 0;
-    EFI_DEVICE_PATH_PROTOCOL *header = devpath;
-    for (;;) {
-        size_t this_len = *(uint16_t *)header->Length;
-        len += this_len;
-        if (header->Type == END_DEVICE_PATH_TYPE) {
-            break;
+    bool leading_slash = true;
+    size_t j = 0;
+    for (size_t i = 0; i < original_path_chars; i++) {
+        if (image->path[i] == '/' && leading_slash) {
+            continue;
         }
-        header = (void *)header + this_len;
+        leading_slash = false;
+        efi_file_path[j++] = image->path[i] == '/' ? '\\' : image->path[i];
     }
-    return len;
-}
+    efi_file_path[j] = 0;
 
-static EFI_DEVICE_PATH_PROTOCOL *devpath_append(EFI_DEVICE_PATH_PROTOCOL 
*devpath,
-                                                EFI_DEVICE_PATH_PROTOCOL 
*item) {
-    EFI_STATUS status;
 
-    size_t devpath_len = get_devpath_len(devpath);
-    size_t item_size = *(uint16_t *)item->Length;
-    size_t new_devpath_len = devpath_len + item_size;
+    size_t efi_file_path_len = ((j + 1) * sizeof(CHAR16));
+    size_t path_item_len     = sizeof(EFI_DEVICE_PATH_PROTOCOL) + 
efi_file_path_len;
+    size_t end_item_len      = sizeof(EFI_DEVICE_PATH_PROTOCOL);
+    size_t alloc_len         = path_item_len + end_item_len;
 
-    EFI_DEVICE_PATH_PROTOCOL *new_devpath = NULL;
-    status = gBS->AllocatePool(EfiLoaderData, new_devpath_len, (void 
**)&new_devpath);
+    EFI_DEVICE_PATH_PROTOCOL *device_path;
+    EFI_STATUS status = gBS->AllocatePool(EfiLoaderData, alloc_len, (void 
**)&device_path);
     if (status) {
         panic(true, "efi: AllocatePool() failure (%x)", status);
     }
 
-    memcpy(new_devpath, devpath, devpath_len);
-
-    EFI_DEVICE_PATH_PROTOCOL *item_ptr = (void *)new_devpath + (devpath_len - 
sizeof(EFI_DEVICE_PATH_PROTOCOL));
-    memcpy(item_ptr, item, item_size);
+    FILEPATH_DEVICE_PATH *path_item = (FILEPATH_DEVICE_PATH *)device_path;
+    path_item->Header.Type      = MEDIA_DEVICE_PATH;
+    path_item->Header.SubType   = MEDIA_FILEPATH_DP;
+    path_item->Header.Length[0] = path_item_len;
+    path_item->Header.Length[1] = path_item_len >> 8;
+    memcpy(&path_item->PathName, efi_file_path, efi_file_path_len);
+
+    EFI_DEVICE_PATH_PROTOCOL *end_item = (void *)device_path + path_item_len;
+    end_item->Type      = END_DEVICE_PATH_TYPE;
+    end_item->SubType   = END_ENTIRE_DEVICE_PATH_SUBTYPE;
+    end_item->Length[0] = end_item_len;
+    end_item->Length[1] = end_item_len >> 8;
 
-    EFI_DEVICE_PATH_PROTOCOL *end_ptr = (void *)new_devpath + (new_devpath_len 
- sizeof(EFI_DEVICE_PATH_PROTOCOL));
-    end_ptr->Type = END_DEVICE_PATH_TYPE;
-    end_ptr->SubType = END_ENTIRE_DEVICE_PATH_SUBTYPE;
-    end_ptr->Length[0] = sizeof(EFI_DEVICE_PATH);
-    end_ptr->Length[1] = sizeof(EFI_DEVICE_PATH) >> 8;
-
-    return new_devpath;
+    pmm_free(efi_file_path, efi_file_path_alloc_len);
+    return device_path;
 }
 
 noreturn void chainload(char *config, char *cmdline) {
@@ -286,46 +271,9 @@
                           (uintptr_t)ptr, ALIGN_UP(image_size, 4096),
                           MEMMAP_RESERVED, MEMMAP_USABLE, true, false, true);
 
-    size_t path_len = strlen(image->path);
-
-    size_t efi_file_path_len = (path_len + 1) * sizeof(CHAR16);
-    CHAR16 *efi_file_path = ext_mem_alloc(efi_file_path_len);
-
-    bool leading_slash = true;
-    size_t j = 0;
-    for (size_t i = 0; i < path_len; i++) {
-        if (image->path[i] == '/' && leading_slash) {
-            continue;
-        }
-        leading_slash = false;
-        efi_file_path[j++] = image->path[i] == '/' ? '\\' : image->path[i];
-    }
-    efi_file_path[j] = 0;
-
-    EFI_GUID device_path_protocol_guid = EFI_DEVICE_PATH_PROTOCOL_GUID;
-    EFI_DEVICE_PATH_PROTOCOL *device_path = NULL;
-    status = gBS->HandleProtocol(image->efi_part_handle, 
&device_path_protocol_guid, (void **)&device_path);
-    if (status) {
-        panic(true, "efi: HandleProtocol() failure (%x)", status);
-    }
+    EFI_DEVICE_PATH_PROTOCOL *efi_file_path = 
build_relative_efi_file_path(image);
 
     fclose(image);
-
-    size_t devpath_item_size = sizeof(EFI_DEVICE_PATH_PROTOCOL) + ((j + 1) * 
sizeof(CHAR16));
-    EFI_DEVICE_PATH_PROTOCOL *devpath_item = ext_mem_alloc(devpath_item_size);
-
-    devpath_item->Type = 0x04;
-    devpath_item->SubType = 0x04;
-    devpath_item->Length[0] = devpath_item_size;
-    devpath_item->Length[1] = devpath_item_size >> 8;
-
-    memcpy(&devpath_item[1], efi_file_path, (j + 1) * sizeof(CHAR16));
-    pmm_free(efi_file_path, efi_file_path_len);
-
-    device_path = devpath_append(device_path, devpath_item);
-
-    pmm_free(devpath_item, devpath_item_size);
-
     term_notready();
 
     size_t req_width = 0, req_height = 0, req_bpp = 0;
@@ -388,7 +336,7 @@
         new_handle_loaded_image->DeviceHandle = efi_part_handle;
     }
 
-    new_handle_loaded_image->FilePath = device_path;
+    new_handle_loaded_image->FilePath = efi_file_path;
 
     new_handle_loaded_image->LoadOptionsSize = cmdline_len * sizeof(CHAR16);
     new_handle_loaded_image->LoadOptions = new_cmdline;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/limine-9.5.3/common/sys/smp_trampoline.asm_x86 
new/limine-9.6.1/common/sys/smp_trampoline.asm_x86
--- old/limine-9.5.3/common/sys/smp_trampoline.asm_x86  2025-08-04 
17:34:14.000000000 +0200
+++ new/limine-9.6.1/common/sys/smp_trampoline.asm_x86  2025-08-16 
12:55:38.000000000 +0200
@@ -164,7 +164,7 @@
     mov rax, qword [rdi + 16]
     test rax, rax
     jnz .out
-    lea rax, qword [rdi + 16]
+    lea rax, [rdi + 16]
     xor ecx, ecx
     xor edx, edx
     monitor
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/limine-9.5.3/configure.ac new/limine-9.6.1/configure.ac
--- old/limine-9.5.3/configure.ac       2025-08-04 17:34:14.000000000 +0200
+++ new/limine-9.6.1/configure.ac       2025-08-16 12:55:38.000000000 +0200
@@ -78,49 +78,86 @@
     AC_MSG_ERROR([find not found, please install find before configuring])
 fi
 
-# $1 - UPPERCASEVAR, $2 - default program
-AC_DEFUN([GET_PROG_FROM_TOOLCHAIN], [
-    AC_ARG_VAR([$1], [$2 command @<:@default: $2@:>@])
+# $1 - UPPERCASEVAR, $2 - default program, $2 - 'tool' if toolchain
+AC_DEFUN([GET_PROG], [
+    first_elem="$(rel2abs $(echo "$$1" | cut -f 1 -d " "))"
 
-    if ! test -z "$$1"; then
-        first_elem="$(echo "$$1" | cut -f 1 -d " ")"
+    if test "x${$1+set}" = "xset"; then
         case "$first_elem" in
-            */*)
+            /*)
+                AC_MSG_CHECKING([for $first_elem])
                 if test -f "$first_elem" && test -x "$first_elem"; then
-                    $1_USER_FOUND=yes
+                    $1="$(rel2abs "$$1")"
+                    $1_FOUND=yes
+                else
+                    $1_FOUND=no
                 fi
+                AC_MSG_RESULT([$$1_FOUND])
                 ;;
             *)
-                AC_CHECK_PROG([$1_USER_FOUND], [$$1], [yes])
+                AC_CHECK_PROG([$1_FOUND], [$$1], [yes])
                 ;;
         esac
-
-        if ! test "x$$1_USER_FOUND" = "xyes"; then
-            AC_MSG_ERROR([$2 not found, please install $2 before configuring])
-        fi
     else
-        AC_CHECK_TOOL([$1], [$2], [:])
-        if test "x$$1" = "x:"; then
-            AC_MSG_ERROR([$2 not found, please install $2 or set $1 to a valid 
command])
+        if ! test -z "$2"; then
+            if test "x$3" = "xtool"; then
+                AC_CHECK_TOOL([$1_FOUND], [$2], [no])
+                if ! test "x$$1_FOUND" = "xno"; then
+                    $1="$$1_FOUND"
+                    $1_FOUND=yes
+                fi
+            else
+                AC_CHECK_PROG([$1_FOUND], [$2], [yes])
+            fi
+        else
+            $1_FOUND=no
         fi
     fi
 
-    $1="$(rel2abs "$$1")"
+    if ! test "x$$1_FOUND" = "xyes"; then
+        AC_MSG_ERROR([$first_elem invalid, set $1 to a valid program])
+    fi
 ])
 
-GET_PROG_FROM_TOOLCHAIN([STRIP], [strip])
+AC_ARG_VAR([STRIP], [strip command @<:@default: strip@:>@])
+GET_PROG([STRIP], [strip], [tool])
 
-AC_CHECK_HEADERS([stdint.h stddef.h stdbool.h limits.h inttypes.h stdio.h 
stdlib.h string.h],
+AC_CHECK_HEADERS([stdio.h stdlib.h stdint.h stddef.h stdbool.h stdarg.h 
string.h errno.h inttypes.h limits.h time.h],
     [], [AC_MSG_ERROR([required header not found])])
 
-AC_ARG_VAR([TOOLCHAIN_FOR_TARGET], [alternative toolchain prefix for Limine 
(or 'llvm', or 'gnu')])
+AC_ARG_VAR([TOOLCHAIN_FOR_TARGET], [alternative toolchain prefix for Limine])
+
 AC_ARG_VAR([CC_FOR_TARGET], [C compiler command for Limine])
+if test "x${CC_FOR_TARGET+set}" = "x"; then
+    if test "x${TOOLCHAIN_FOR_TARGET+set}" = "x"; then
+        CC_FOR_TARGET="clang"
+    else
+        CC_FOR_TARGET="${TOOLCHAIN_FOR_TARGET}gcc"
+    fi
+fi
 AC_ARG_VAR([LD_FOR_TARGET], [linker command for Limine])
+if test "x${LD_FOR_TARGET+set}" = "x"; then
+    if test "x${TOOLCHAIN_FOR_TARGET+set}" = "x"; then
+        LD_FOR_TARGET="ld.lld"
+    else
+        LD_FOR_TARGET="${TOOLCHAIN_FOR_TARGET}ld"
+    fi
+fi
+
+test "x${TOOLCHAIN_FOR_TARGET+set}" = "x" && TOOLCHAIN_FOR_TARGET=llvm-
+
 AC_ARG_VAR([OBJCOPY_FOR_TARGET], [objcopy command for Limine])
+test "x${OBJCOPY_FOR_TARGET+set}" = "x" && 
OBJCOPY_FOR_TARGET="${TOOLCHAIN_FOR_TARGET}objcopy"
 AC_ARG_VAR([OBJDUMP_FOR_TARGET], [objdump command for Limine])
+test "x${OBJDUMP_FOR_TARGET+set}" = "x" && 
OBJDUMP_FOR_TARGET="${TOOLCHAIN_FOR_TARGET}objdump"
 AC_ARG_VAR([READELF_FOR_TARGET], [readelf command for Limine])
+test "x${READELF_FOR_TARGET+set}" = "x" && 
READELF_FOR_TARGET="${TOOLCHAIN_FOR_TARGET}readelf"
 
-rm -rf toolchain-files
+GET_PROG([CC_FOR_TARGET])
+GET_PROG([LD_FOR_TARGET])
+GET_PROG([OBJCOPY_FOR_TARGET])
+GET_PROG([OBJDUMP_FOR_TARGET])
+GET_PROG([READELF_FOR_TARGET])
 
 BUILD_ALL="no"
 
@@ -162,22 +199,6 @@
 if test "x$BUILD_BIOS" = "xno"; then
     BUILD_BIOS=""
 else
-    $MKDIR_P toolchain-files
-    CC="$CC" \
-        ARCHITECTURE=i686 \
-        FREESTANDING_TOOLCHAIN_SUFFIX="_FOR_TARGET" \
-        FREESTANDING_TOOLCHAIN="$TOOLCHAIN_FOR_TARGET" \
-        WANT_FREESTANDING_CC=yes \
-        FREESTANDING_CC="$CC_FOR_TARGET" \
-        WANT_FREESTANDING_LD=yes \
-        FREESTANDING_LD="$LD_FOR_TARGET" \
-        WANT_FREESTANDING_OBJCOPY=yes \
-        FREESTANDING_OBJCOPY="$OBJCOPY_FOR_TARGET" \
-        WANT_FREESTANDING_OBJDUMP=yes \
-        FREESTANDING_OBJDUMP="$OBJDUMP_FOR_TARGET" \
-        WANT_FREESTANDING_READELF=yes \
-        FREESTANDING_READELF="$READELF_FOR_TARGET" \
-        "$SRCDIR/build-aux/freestanding-toolchain/freestanding-toolchain" 
2>"toolchain-files/bios-i686-toolchain.mk" || exit 1
     BUILD_BIOS="limine-bios"
     NEED_NASM=yes
     NEED_GZIP=yes
@@ -194,20 +215,6 @@
 if test "x$BUILD_UEFI_IA32" = "xno"; then
     BUILD_UEFI_IA32=""
 else
-    $MKDIR_P toolchain-files
-    CC="$CC" \
-        ARCHITECTURE=i686 \
-        FREESTANDING_TOOLCHAIN_SUFFIX="_FOR_TARGET" \
-        FREESTANDING_TOOLCHAIN="$TOOLCHAIN_FOR_TARGET" \
-        WANT_FREESTANDING_CC=yes \
-        FREESTANDING_CC="$CC_FOR_TARGET" \
-        WANT_FREESTANDING_LD=yes \
-        FREESTANDING_LD="$LD_FOR_TARGET" \
-        WANT_FREESTANDING_OBJCOPY=yes \
-        FREESTANDING_OBJCOPY="$OBJCOPY_FOR_TARGET" \
-        WANT_FREESTANDING_OBJDUMP=yes \
-        FREESTANDING_OBJDUMP="$OBJDUMP_FOR_TARGET" \
-        "$SRCDIR/build-aux/freestanding-toolchain/freestanding-toolchain" 
2>"toolchain-files/uefi-i686-toolchain.mk" || exit 1
     BUILD_UEFI_IA32="limine-uefi-ia32"
     NEED_NASM=yes
 fi
@@ -223,20 +230,6 @@
 if test "x$BUILD_UEFI_X86_64" = "xno"; then
     BUILD_UEFI_X86_64=""
 else
-    $MKDIR_P toolchain-files
-    CC="$CC" \
-        ARCHITECTURE=x86_64 \
-        FREESTANDING_TOOLCHAIN_SUFFIX="_FOR_TARGET" \
-        FREESTANDING_TOOLCHAIN="$TOOLCHAIN_FOR_TARGET" \
-        WANT_FREESTANDING_CC=yes \
-        FREESTANDING_CC="$CC_FOR_TARGET" \
-        WANT_FREESTANDING_LD=yes \
-        FREESTANDING_LD="$LD_FOR_TARGET" \
-        WANT_FREESTANDING_OBJCOPY=yes \
-        FREESTANDING_OBJCOPY="$OBJCOPY_FOR_TARGET" \
-        WANT_FREESTANDING_OBJDUMP=yes \
-        FREESTANDING_OBJDUMP="$OBJDUMP_FOR_TARGET" \
-        "$SRCDIR/build-aux/freestanding-toolchain/freestanding-toolchain" 
2>"toolchain-files/uefi-x86_64-toolchain.mk" || exit 1
     BUILD_UEFI_X86_64="limine-uefi-x86-64"
     NEED_NASM=yes
 fi
@@ -252,20 +245,6 @@
 if test "x$BUILD_UEFI_AARCH64" = "xno"; then
     BUILD_UEFI_AARCH64=""
 else
-    mkdir -p toolchain-files
-    CC="$CC" \
-        ARCHITECTURE=aarch64 \
-        FREESTANDING_TOOLCHAIN_SUFFIX="_FOR_TARGET" \
-        FREESTANDING_TOOLCHAIN="$TOOLCHAIN_FOR_TARGET" \
-        WANT_FREESTANDING_CC=yes \
-        FREESTANDING_CC="$CC_FOR_TARGET" \
-        WANT_FREESTANDING_LD=yes \
-        FREESTANDING_LD="$LD_FOR_TARGET" \
-        WANT_FREESTANDING_OBJCOPY=yes \
-        FREESTANDING_OBJCOPY="$OBJCOPY_FOR_TARGET" \
-        WANT_FREESTANDING_OBJDUMP=yes \
-        FREESTANDING_OBJDUMP="$OBJDUMP_FOR_TARGET" \
-        "$SRCDIR/build-aux/freestanding-toolchain/freestanding-toolchain" 
2>"toolchain-files/uefi-aarch64-toolchain.mk" || exit 1
     BUILD_UEFI_AARCH64="limine-uefi-aarch64"
 fi
 
@@ -280,20 +259,6 @@
 if test "x$BUILD_UEFI_RISCV64" = "xno"; then
     BUILD_UEFI_RISCV64=""
 else
-    mkdir -p toolchain-files
-    CC="$CC" \
-        ARCHITECTURE=riscv64 \
-        FREESTANDING_TOOLCHAIN_SUFFIX="_FOR_TARGET" \
-        FREESTANDING_TOOLCHAIN="$TOOLCHAIN_FOR_TARGET" \
-        WANT_FREESTANDING_CC=yes \
-        FREESTANDING_CC="$CC_FOR_TARGET" \
-        WANT_FREESTANDING_LD=yes \
-        FREESTANDING_LD="$LD_FOR_TARGET" \
-        WANT_FREESTANDING_OBJCOPY=yes \
-        FREESTANDING_OBJCOPY="$OBJCOPY_FOR_TARGET" \
-        WANT_FREESTANDING_OBJDUMP=yes \
-        FREESTANDING_OBJDUMP="$OBJDUMP_FOR_TARGET" \
-        "$SRCDIR/build-aux/freestanding-toolchain/freestanding-toolchain" 
2>"toolchain-files/uefi-riscv64-toolchain.mk" || exit 1
     BUILD_UEFI_RISCV64="limine-uefi-riscv64"
 fi
 
@@ -308,20 +273,6 @@
 if test "x$BUILD_UEFI_LOONGARCH64" = "xno"; then
     BUILD_UEFI_LOONGARCH64=""
 else
-    mkdir -p toolchain-files
-    CC="$CC" \
-        ARCHITECTURE=loongarch64 \
-        FREESTANDING_TOOLCHAIN_SUFFIX="_FOR_TARGET" \
-        FREESTANDING_TOOLCHAIN="$TOOLCHAIN_FOR_TARGET" \
-        WANT_FREESTANDING_CC=yes \
-        FREESTANDING_CC="$CC_FOR_TARGET" \
-        WANT_FREESTANDING_LD=yes \
-        FREESTANDING_LD="$LD_FOR_TARGET" \
-        WANT_FREESTANDING_OBJCOPY=yes \
-        FREESTANDING_OBJCOPY="$OBJCOPY_FOR_TARGET" \
-        WANT_FREESTANDING_OBJDUMP=yes \
-        FREESTANDING_OBJDUMP="$OBJDUMP_FOR_TARGET" \
-        "$SRCDIR/build-aux/freestanding-toolchain/freestanding-toolchain" 
2>"toolchain-files/uefi-loongarch64-toolchain.mk" || exit 1
     BUILD_UEFI_LOONGARCH64="limine-uefi-loongarch64"
 fi
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/limine-9.5.3/decompressor/decompressor.mk 
new/limine-9.6.1/decompressor/decompressor.mk
--- old/limine-9.5.3/decompressor/decompressor.mk       2025-08-04 
17:34:14.000000000 +0200
+++ new/limine-9.6.1/decompressor/decompressor.mk       2025-08-16 
12:55:38.000000000 +0200
@@ -1,13 +1,18 @@
 .SUFFIXES:
 
-include $(TOOLCHAIN_FILE)
-
 override SPACE := $(subst ,, )
 
 override MKESCAPE = $(subst $(SPACE),\ ,$(1))
 override SHESCAPE = $(subst ','\'',$(1))
 override OBJESCAPE = $(subst .a ,.a' ',$(subst .o ,.o' ',$(call 
SHESCAPE,$(1))))
 
+override CC_FOR_TARGET_IS_CLANG := $(shell ! $(CC_FOR_TARGET) --version 
2>/dev/null | $(GREP) -q '^Target: '; echo $$?)
+
+ifeq ($(CC_FOR_TARGET_IS_CLANG),1)
+    override CC_FOR_TARGET += \
+        -target i686-unknown-none-elf
+endif
+
 override CFLAGS_FOR_TARGET += \
     -Os \
     -Wall \
@@ -29,10 +34,8 @@
     -m32 \
     -march=i686 \
     -mabi=sysv \
-    -mno-80387
-
-override CFLAGS_FOR_TARGET := \
-    $(patsubst -g,-gdwarf,$(CFLAGS_FOR_TARGET))
+    -mno-80387 \
+    -mno-mmx
 
 override CPPFLAGS_FOR_TARGET := \
     -I . \
@@ -67,7 +70,7 @@
 all: $(call MKESCAPE,$(BUILDDIR))/decompressor.bin
 
 $(call MKESCAPE,$(BUILDDIR))/decompressor.bin: $(OBJ)
-       $(LD_FOR_TARGET) '$(call OBJESCAPE,$^)' $(LDFLAGS_FOR_TARGET) -o 
'$(call SHESCAPE,$(BUILDDIR))/decompressor.elf'
+       $(LD_FOR_TARGET) $(LDFLAGS_FOR_TARGET) '$(call OBJESCAPE,$^)' -o 
'$(call SHESCAPE,$(BUILDDIR))/decompressor.elf'
        $(OBJCOPY_FOR_TARGET) -O binary '$(call 
SHESCAPE,$(BUILDDIR))/decompressor.elf' '$(call SHESCAPE,$@)'
 
 -include $(HEADER_DEPS)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/limine-9.5.3/host/host.mk new/limine-9.6.1/host/host.mk
--- old/limine-9.5.3/host/host.mk       2025-08-04 17:34:14.000000000 +0200
+++ new/limine-9.6.1/host/host.mk       2025-08-16 12:55:38.000000000 +0200
@@ -1,3 +1,5 @@
+.POSIX:
+
 SHELL=/bin/sh
 
 CC=cc
@@ -6,8 +8,6 @@
 LDFLAGS=
 LIBS=
 
-WERROR_FLAG=
-
 STRIP=strip
 INSTALL=./install-sh
 
@@ -43,4 +43,4 @@
        rm -f limine limine.exe
 
 limine: limine.c
-       $(CC) $(CFLAGS) -Wall -Wextra $(WERROR_FLAG) $(CPPFLAGS) $(LDFLAGS) 
-std=c99 limine.c $(LIBS) -o $@
+       $(CC) $(CFLAGS) -std=c99 $(CPPFLAGS) $(LDFLAGS) $< $(LIBS) -o $@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/limine-9.5.3/host/limine.c new/limine-9.6.1/host/limine.c
--- old/limine-9.5.3/host/limine.c      2025-08-04 17:34:14.000000000 +0200
+++ new/limine-9.6.1/host/limine.c      2025-08-16 12:55:38.000000000 +0200
@@ -1088,6 +1088,11 @@
                 goto cleanup;
             }
 
+            if (((ENDSWAP(gpt_entry.ending_lba) - 
ENDSWAP(gpt_entry.starting_lba)) + 1) * lb_size < 32768) {
+                fprintf(stderr, "%s: error: Partition with index `%s` is 
smaller than 32KiB.\n", program_name, part_ndx);
+                goto cleanup;
+            }
+
             if (!quiet) {
                 fprintf(stderr, "GPT partition specified. Installing there 
instead of embedding.\n");
             }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/limine-9.5.3/nyu-efi/riscv64/link_script.lds 
new/limine-9.6.1/nyu-efi/riscv64/link_script.lds
--- old/limine-9.5.3/nyu-efi/riscv64/link_script.lds    2025-08-04 
17:34:19.000000000 +0200
+++ new/limine-9.6.1/nyu-efi/riscv64/link_script.lds    2025-08-16 
12:55:41.000000000 +0200
@@ -64,6 +64,8 @@
 
         __data_start = ABSOLUTE(.);
         *(.rodata .rodata.*)
+        *(.srodata .srodata.*)
+        *(.sdata2 .sdata2.*)
     } :rodata
 
     .data : {
@@ -72,8 +74,8 @@
     } :data
 
     .bss : {
-        *(.sbss .sbss.*)
         *(.bss .bss.*)
+        *(.sbss .sbss.*)
         *(COMMON)
     } :data
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/limine-9.5.3/timestamps new/limine-9.6.1/timestamps
--- old/limine-9.5.3/timestamps 2025-08-04 17:34:22.000000000 +0200
+++ new/limine-9.6.1/timestamps 2025-08-16 12:55:42.000000000 +0200
@@ -1,3 +1,3 @@
 REGEN_DATE="August 2025"
-SOURCE_DATE_EPOCH="1754321320"
-SOURCE_DATE_EPOCH_TOUCH="202508041728"
+SOURCE_DATE_EPOCH="1755341393"
+SOURCE_DATE_EPOCH_TOUCH="202508161249"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/limine-9.5.3/version new/limine-9.6.1/version
--- old/limine-9.5.3/version    2025-08-04 17:34:24.000000000 +0200
+++ new/limine-9.6.1/version    2025-08-16 12:55:45.000000000 +0200
@@ -1 +1 @@
-9.5.3
+9.6.1

Reply via email to