summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bitbake/lib/bb/fetch2/__init__.py2
-rw-r--r--bitbake/lib/bb/fetch2/gcp.py14
-rw-r--r--bitbake/lib/bb/parse/ast.py20
-rw-r--r--bitbake/lib/toaster/tests/builds/buildtest.py2
-rw-r--r--documentation/README21
-rw-r--r--documentation/brief-yoctoprojectqs/index.rst8
-rw-r--r--documentation/bsp-guide/bsp.rst54
-rw-r--r--documentation/conf.py19
-rw-r--r--documentation/contributor-guide/submit-changes.rst32
-rw-r--r--documentation/dev-manual/debugging.rst2
-rw-r--r--documentation/dev-manual/new-recipe.rst2
-rw-r--r--documentation/dev-manual/sbom.rst15
-rw-r--r--documentation/dev-manual/upgrading-recipes.rst2
-rw-r--r--documentation/kernel-dev/common.rst14
-rw-r--r--documentation/kernel-dev/intro.rst2
-rw-r--r--documentation/migration-guides/release-4.0.rst2
-rw-r--r--documentation/migration-guides/release-5.0.rst2
-rw-r--r--documentation/migration-guides/release-notes-4.0.26.rst263
-rw-r--r--documentation/migration-guides/release-notes-4.0.27.rst153
-rw-r--r--documentation/migration-guides/release-notes-4.3.rst2
-rw-r--r--documentation/migration-guides/release-notes-5.0.10.rst208
-rw-r--r--documentation/migration-guides/release-notes-5.0.9.rst206
-rw-r--r--documentation/overview-manual/concepts.rst27
-rw-r--r--documentation/ref-manual/classes.rst26
-rw-r--r--documentation/ref-manual/devtool-reference.rst2
-rw-r--r--documentation/ref-manual/structure.rst2
-rw-r--r--documentation/ref-manual/svg/releases.svg518
-rw-r--r--documentation/ref-manual/tasks.rst4
-rw-r--r--documentation/ref-manual/terms.rst2
-rw-r--r--documentation/ref-manual/variables.rst148
-rw-r--r--documentation/sdk-manual/extensible.rst4
-rw-r--r--documentation/test-manual/intro.rst12
-rw-r--r--documentation/toaster-manual/reference.rst6
-rw-r--r--meta-poky/conf/distro/poky.conf2
-rw-r--r--meta-poky/conf/templates/default/local.conf.sample5
-rw-r--r--meta/classes-recipe/module.bbclass1
-rw-r--r--meta/classes-recipe/testimage.bbclass4
-rw-r--r--meta/classes-recipe/uboot-sign.bbclass2
-rw-r--r--meta/classes/cve-check.bbclass5
-rw-r--r--meta/conf/distro/include/maintainers.inc3
-rw-r--r--meta/conf/distro/include/ptest-packagelists.inc3
-rw-r--r--meta/conf/distro/include/time64.inc2
-rw-r--r--meta/conf/machine/include/arm/armv8r/tune-cortexr52.inc5
-rw-r--r--meta/lib/oeqa/selftest/cases/sstatetests.py2
-rw-r--r--meta/recipes-connectivity/bluez5/bluez5.inc1
-rw-r--r--meta/recipes-connectivity/bluez5/bluez5/toolsbtmgmt-fix-index-option-for-non-interactive-mode.patch29
-rw-r--r--meta/recipes-connectivity/connman/connman/CVE-2025-32366.patch41
-rw-r--r--meta/recipes-connectivity/connman/connman/CVE-2025-32743.patch48
-rw-r--r--meta/recipes-connectivity/connman/connman_1.42.bb2
-rw-r--r--meta/recipes-connectivity/kea/kea_2.4.2.bb (renamed from meta/recipes-connectivity/kea/kea_2.4.1.bb)4
-rw-r--r--meta/recipes-connectivity/nfs-utils/nfs-utils/nfsserver28
-rw-r--r--meta/recipes-connectivity/openssh/openssh/CVE-2025-32728.patch44
-rw-r--r--meta/recipes-connectivity/openssh/openssh_9.6p1.bb1
-rw-r--r--meta/recipes-core/coreutils/coreutils/CVE-2025-5278.patch112
-rw-r--r--meta/recipes-core/coreutils/coreutils_9.4.bb1
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-4373-01.patch120
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-4373-02.patch29
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0_2.78.6.bb2
-rw-r--r--meta/recipes-core/glibc/glibc-version.inc2
-rw-r--r--meta/recipes-core/glibc/glibc-y2038-tests_2.39.bb119
-rw-r--r--meta/recipes-core/glibc/glibc/0001-stdlib-Add-single-threaded-fast-path-to-rand.patch47
-rw-r--r--meta/recipes-core/glibc/glibc/0016-wordsize.h-Unify-the-header-between-arm-and-aarch64.patch1
-rw-r--r--meta/recipes-core/glibc/glibc/0022-Avoid-hardcoded-build-time-paths-in-the-output-binar.patch2
-rw-r--r--meta/recipes-core/glibc/glibc/0023-qemu-stale-process.patch8
-rwxr-xr-xmeta/recipes-core/glibc/glibc/run-ptest37
-rw-r--r--meta/recipes-core/glibc/glibc_2.39.bb4
-rw-r--r--meta/recipes-core/images/build-appliance-image_15.0.0.bb2
-rw-r--r--meta/recipes-core/systemd/systemd-boot-native_255.21.bb (renamed from meta/recipes-core/systemd/systemd-boot-native_255.18.bb)0
-rw-r--r--meta/recipes-core/systemd/systemd-boot_255.21.bb (renamed from meta/recipes-core/systemd/systemd-boot_255.18.bb)0
-rw-r--r--meta/recipes-core/systemd/systemd.inc2
-rw-r--r--meta/recipes-core/systemd/systemd/0001-missing_type.h-add-comparison_fn_t.patch2
-rw-r--r--meta/recipes-core/systemd/systemd/0002-add-fallback-parse_printf_format-implementation.patch2
-rw-r--r--meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch2
-rw-r--r--meta/recipes-core/systemd/systemd/0003-src-basic-missing.h-check-for-missing-strndupa.patch10
-rw-r--r--meta/recipes-core/systemd/systemd/0004-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch2
-rw-r--r--meta/recipes-core/systemd/systemd/0005-add-missing-FTW_-macros-for-musl.patch2
-rw-r--r--meta/recipes-core/systemd/systemd/0006-Use-uintmax_t-for-handling-rlim_t.patch2
-rw-r--r--meta/recipes-core/systemd/systemd/0007-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch2
-rw-r--r--meta/recipes-core/systemd/systemd/0008-Define-glibc-compatible-basename-for-non-glibc-syste.patch2
-rw-r--r--meta/recipes-core/systemd/systemd/0008-implment-systemd-sysv-install-for-OE.patch2
-rw-r--r--meta/recipes-core/systemd/systemd/0009-Do-not-disable-buffering-when-writing-to-oom_score_a.patch2
-rw-r--r--meta/recipes-core/systemd/systemd/0010-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch2
-rw-r--r--meta/recipes-core/systemd/systemd/0011-avoid-redefinition-of-prctl_mm_map-structure.patch2
-rw-r--r--meta/recipes-core/systemd/systemd/0012-do-not-disable-buffer-in-writing-files.patch8
-rw-r--r--meta/recipes-core/systemd/systemd/0013-Handle-__cpu_mask-usage.patch2
-rw-r--r--meta/recipes-core/systemd/systemd/0014-Handle-missing-gshadow.patch2
-rw-r--r--meta/recipes-core/systemd/systemd/0015-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch2
-rw-r--r--meta/recipes-core/systemd/systemd/0016-pass-correct-parameters-to-getdents64.patch2
-rw-r--r--meta/recipes-core/systemd/systemd/0017-Adjust-for-musl-headers.patch2
-rw-r--r--meta/recipes-core/systemd/systemd/0018-test-bus-error-strerror-is-assumed-to-be-GNU-specifi.patch2
-rw-r--r--meta/recipes-core/systemd/systemd/0019-errno-util-Make-STRERROR-portable-for-musl.patch2
-rw-r--r--meta/recipes-core/systemd/systemd/0020-sd-event-Make-malloc_trim-conditional-on-glibc.patch2
-rw-r--r--meta/recipes-core/systemd/systemd/0021-shared-Do-not-use-malloc_info-on-musl.patch2
-rw-r--r--meta/recipes-core/systemd/systemd/0022-avoid-missing-LOCK_EX-declaration.patch4
-rw-r--r--meta/recipes-core/systemd/systemd_255.21.bb (renamed from meta/recipes-core/systemd/systemd_255.18.bb)10
-rw-r--r--meta/recipes-core/util-linux/util-linux.inc1
-rw-r--r--meta/recipes-core/util-linux/util-linux/fstab-isolation.patch448
-rw-r--r--meta/recipes-devtools/binutils/binutils-2.42.inc8
-rw-r--r--meta/recipes-devtools/binutils/binutils/0019-CVE-2025-1153-1.patch3207
-rw-r--r--meta/recipes-devtools/binutils/binutils/0020-CVE-2025-1153-2.patch840
-rw-r--r--meta/recipes-devtools/binutils/binutils/0021-CVE-2025-1153-3.patch3756
-rw-r--r--meta/recipes-devtools/binutils/binutils/0022-CVE-2025-5244.patch25
-rw-r--r--meta/recipes-devtools/binutils/binutils/0022-CVE-2025-5245.patch38
-rw-r--r--meta/recipes-devtools/binutils/binutils/CVE-2025-1179-pre.patch1086
-rw-r--r--meta/recipes-devtools/binutils/binutils/CVE-2025-1179.patch269
-rw-r--r--meta/recipes-devtools/cmake/cmake-native_3.28.3.bb2
-rw-r--r--meta/recipes-devtools/cmake/cmake/0001-ctest-Allow-arbitrary-characters-in-test-names-of-CT.patch205
-rw-r--r--meta/recipes-devtools/cmake/cmake_3.28.3.bb1
-rw-r--r--meta/recipes-devtools/gcc/gcc-13.4.inc (renamed from meta/recipes-devtools/gcc/gcc-13.3.inc)8
-rw-r--r--meta/recipes-devtools/gcc/gcc-cross-canadian_13.4.bb (renamed from meta/recipes-devtools/gcc/gcc-cross-canadian_13.3.bb)0
-rw-r--r--meta/recipes-devtools/gcc/gcc-cross_13.4.bb (renamed from meta/recipes-devtools/gcc/gcc-cross_13.3.bb)0
-rw-r--r--meta/recipes-devtools/gcc/gcc-crosssdk_13.4.bb (renamed from meta/recipes-devtools/gcc/gcc-crosssdk_13.3.bb)0
-rw-r--r--meta/recipes-devtools/gcc/gcc-runtime_13.4.bb (renamed from meta/recipes-devtools/gcc/gcc-runtime_13.3.bb)0
-rw-r--r--meta/recipes-devtools/gcc/gcc-sanitizers_13.4.bb (renamed from meta/recipes-devtools/gcc/gcc-sanitizers_13.3.bb)0
-rw-r--r--meta/recipes-devtools/gcc/gcc-source_13.4.bb (renamed from meta/recipes-devtools/gcc/gcc-source_13.3.bb)0
-rw-r--r--meta/recipes-devtools/gcc/gcc/0028-gcc-Fix-c-tweak-for-Wrange-loop-construct.patch113
-rw-r--r--meta/recipes-devtools/gcc/gcc/gcc.git-ab884fffe3fc82a710bea66ad651720d71c938b8.patch549
-rw-r--r--meta/recipes-devtools/gcc/gcc_13.4.bb (renamed from meta/recipes-devtools/gcc/gcc_13.3.bb)0
-rw-r--r--meta/recipes-devtools/gcc/libgcc-initial_13.4.bb (renamed from meta/recipes-devtools/gcc/libgcc-initial_13.3.bb)0
-rw-r--r--meta/recipes-devtools/gcc/libgcc_13.4.bb (renamed from meta/recipes-devtools/gcc/libgcc_13.3.bb)0
-rw-r--r--meta/recipes-devtools/gcc/libgfortran_13.4.bb (renamed from meta/recipes-devtools/gcc/libgfortran_13.3.bb)0
-rw-r--r--meta/recipes-devtools/go/go-binary-native_1.22.12.bb1
-rw-r--r--meta/recipes-devtools/go/go-common.inc1
-rw-r--r--meta/recipes-devtools/python/python3-requests_2.32.4.bb (renamed from meta/recipes-devtools/python/python3-requests_2.32.3.bb)2
-rw-r--r--meta/recipes-devtools/python/python3-setuptools/CVE-2025-47273-pre1.patch54
-rw-r--r--meta/recipes-devtools/python/python3-setuptools/CVE-2025-47273.patch59
-rw-r--r--meta/recipes-devtools/python/python3-setuptools_69.1.1.bb2
-rw-r--r--meta/recipes-devtools/python/python3/0001-Avoid-shebang-overflow-on-python-config.py.patch2
-rw-r--r--meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch2
-rw-r--r--meta/recipes-devtools/python/python3/0001-Skip-failing-tests-due-to-load-variability-on-YP-AB.patch6
-rw-r--r--meta/recipes-devtools/python/python3/0001-ctypes-correct-gcc-check-in-test.patch53
-rw-r--r--meta/recipes-devtools/python/python3/0001-gh-107811-tarfile-treat-overflow-in-UID-GID-as-failu.patch2
-rw-r--r--meta/recipes-devtools/python/python3/0001-skip-no_stdout_fileno-test-due-to-load-variability.patch2
-rw-r--r--meta/recipes-devtools/python/python3/0001-test_storlines-skip-due-to-load-variability.patch2
-rw-r--r--meta/recipes-devtools/python/python3/makerace.patch2
-rw-r--r--meta/recipes-devtools/python/python3_3.12.11.bb (renamed from meta/recipes-devtools/python/python3_3.12.9.bb)3
-rw-r--r--meta/recipes-devtools/ruby/ruby/CVE-2025-27221-0001.patch57
-rw-r--r--meta/recipes-devtools/ruby/ruby/CVE-2025-27221-0002.patch73
-rw-r--r--meta/recipes-devtools/ruby/ruby_3.3.5.bb2
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript_10.05.1.bb (renamed from meta/recipes-extended/ghostscript/ghostscript_10.05.0.bb)2
-rw-r--r--meta/recipes-extended/iputils/iputils/CVE-2025-47268.patch143
-rw-r--r--meta/recipes-extended/iputils/iputils_20240117.bb4
-rw-r--r--meta/recipes-extended/net-tools/net-tools/CVE-2025-46836-01.patch91
-rw-r--r--meta/recipes-extended/net-tools/net-tools/CVE-2025-46836-02.patch31
-rw-r--r--meta/recipes-extended/net-tools/net-tools_2.10.bb2
-rw-r--r--meta/recipes-extended/screen/screen/CVE-2025-46802.patch146
-rw-r--r--meta/recipes-extended/screen/screen/CVE-2025-46804.patch131
-rw-r--r--meta/recipes-extended/screen/screen/CVE-2025-46805.patch101
-rw-r--r--meta/recipes-extended/screen/screen_4.9.1.bb3
-rw-r--r--meta/recipes-gnome/gtk+/gtk4_4.14.1.bb1
-rw-r--r--meta/recipes-kernel/linux/linux-yocto-rt_6.6.bb6
-rw-r--r--meta/recipes-kernel/linux/linux-yocto-tiny_6.6.bb6
-rw-r--r--meta/recipes-kernel/linux/linux-yocto_6.6.bb28
-rw-r--r--meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-32230.patch36
-rw-r--r--meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-35366.patch35
-rw-r--r--meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-36613.patch37
-rw-r--r--meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-36616.patch35
-rw-r--r--meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-36617.patch36
-rw-r--r--meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-36619.patch36
-rw-r--r--meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-7055.patch38
-rw-r--r--meta/recipes-multimedia/ffmpeg/ffmpeg/vulkan_av1_stable_API.patch40
-rw-r--r--meta/recipes-multimedia/ffmpeg/ffmpeg_6.1.2.bb (renamed from meta/recipes-multimedia/ffmpeg/ffmpeg_6.1.1.bb)13
-rw-r--r--meta/recipes-multimedia/libpng/files/run-ptest7
-rw-r--r--meta/recipes-multimedia/libpng/libpng_1.6.42.bb42
-rw-r--r--meta/recipes-support/libatomic-ops/libatomic-ops_7.8.2.bb4
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52530.patch149
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52531-1.patch131
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52531-2.patch36
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52532-1.patch36
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52532-2.patch42
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52532-3.patch46
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-2784.patch56
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32050.patch29
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32052.patch32
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32053.patch39
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32906-1.patch61
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32906-2.patch83
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32907.patch39
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32909.patch36
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32910-1.patch36
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32910-2.patch106
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32910-3.patch26
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32911_CVE-2025-32913-1.patch72
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32911_CVE-2025-32913-2.patch44
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32912-1.patch33
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32912-2.patch30
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32914.patch137
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-4476.patch38
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-46420.patch60
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-46421.patch47
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-4948.patch38
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-4969.patch76
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4_2.74.3.bb30
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-2784.patch137
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32050.patch29
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32051-1.patch29
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32051-2.patch57
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32052.patch31
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32053.patch40
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32907-1.patch200
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32907-2.patch68
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32908-1.patch89
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32908-2.patch53
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32914.patch111
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-4476.patch38
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-46421.patch139
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-4948.patch97
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-4969.patch76
-rw-r--r--meta/recipes-support/libsoup/libsoup_3.4.4.bb17
-rwxr-xr-xscripts/install-buildtools4
210 files changed, 15802 insertions, 1526 deletions
diff --git a/bitbake/lib/bb/fetch2/__init__.py b/bitbake/lib/bb/fetch2/__init__.py
index e698fde19c..1a6ff25d4d 100644
--- a/bitbake/lib/bb/fetch2/__init__.py
+++ b/bitbake/lib/bb/fetch2/__init__.py
@@ -237,7 +237,7 @@ class URI(object):
237 # to RFC compliant URL format. E.g.: 237 # to RFC compliant URL format. E.g.:
238 # file://foo.diff -> file:foo.diff 238 # file://foo.diff -> file:foo.diff
239 if urlp.scheme in self._netloc_forbidden: 239 if urlp.scheme in self._netloc_forbidden:
240 uri = re.sub("(?<=:)//(?!/)", "", uri, 1) 240 uri = re.sub(r"(?<=:)//(?!/)", "", uri, count=1)
241 reparse = 1 241 reparse = 1
242 242
243 if reparse: 243 if reparse:
diff --git a/bitbake/lib/bb/fetch2/gcp.py b/bitbake/lib/bb/fetch2/gcp.py
index eb3e0c6a6b..2ee9ed2194 100644
--- a/bitbake/lib/bb/fetch2/gcp.py
+++ b/bitbake/lib/bb/fetch2/gcp.py
@@ -23,7 +23,6 @@ import urllib.parse, urllib.error
23from bb.fetch2 import FetchMethod 23from bb.fetch2 import FetchMethod
24from bb.fetch2 import FetchError 24from bb.fetch2 import FetchError
25from bb.fetch2 import logger 25from bb.fetch2 import logger
26from bb.fetch2 import runfetchcmd
27 26
28class GCP(FetchMethod): 27class GCP(FetchMethod):
29 """ 28 """
@@ -48,7 +47,6 @@ class GCP(FetchMethod):
48 ud.basename = os.path.basename(ud.path) 47 ud.basename = os.path.basename(ud.path)
49 48
50 ud.localfile = d.expand(urllib.parse.unquote(ud.basename)) 49 ud.localfile = d.expand(urllib.parse.unquote(ud.basename))
51 ud.basecmd = "gsutil stat"
52 50
53 def get_gcp_client(self): 51 def get_gcp_client(self):
54 from google.cloud import storage 52 from google.cloud import storage
@@ -59,17 +57,20 @@ class GCP(FetchMethod):
59 Fetch urls using the GCP API. 57 Fetch urls using the GCP API.
60 Assumes localpath was called first. 58 Assumes localpath was called first.
61 """ 59 """
60 from google.api_core.exceptions import NotFound
62 logger.debug2(f"Trying to download gs://{ud.host}{ud.path} to {ud.localpath}") 61 logger.debug2(f"Trying to download gs://{ud.host}{ud.path} to {ud.localpath}")
63 if self.gcp_client is None: 62 if self.gcp_client is None:
64 self.get_gcp_client() 63 self.get_gcp_client()
65 64
66 bb.fetch2.check_network_access(d, ud.basecmd, f"gs://{ud.host}{ud.path}") 65 bb.fetch2.check_network_access(d, "blob.download_to_filename", f"gs://{ud.host}{ud.path}")
67 runfetchcmd("%s %s" % (ud.basecmd, f"gs://{ud.host}{ud.path}"), d)
68 66
69 # Path sometimes has leading slash, so strip it 67 # Path sometimes has leading slash, so strip it
70 path = ud.path.lstrip("/") 68 path = ud.path.lstrip("/")
71 blob = self.gcp_client.bucket(ud.host).blob(path) 69 blob = self.gcp_client.bucket(ud.host).blob(path)
72 blob.download_to_filename(ud.localpath) 70 try:
71 blob.download_to_filename(ud.localpath)
72 except NotFound:
73 raise FetchError("The GCP API threw a NotFound exception")
73 74
74 # Additional sanity checks copied from the wget class (although there 75 # Additional sanity checks copied from the wget class (although there
75 # are no known issues which mean these are required, treat the GCP API 76 # are no known issues which mean these are required, treat the GCP API
@@ -91,8 +92,7 @@ class GCP(FetchMethod):
91 if self.gcp_client is None: 92 if self.gcp_client is None:
92 self.get_gcp_client() 93 self.get_gcp_client()
93 94
94 bb.fetch2.check_network_access(d, ud.basecmd, f"gs://{ud.host}{ud.path}") 95 bb.fetch2.check_network_access(d, "gcp_client.bucket(ud.host).blob(path).exists()", f"gs://{ud.host}{ud.path}")
95 runfetchcmd("%s %s" % (ud.basecmd, f"gs://{ud.host}{ud.path}"), d)
96 96
97 # Path sometimes has leading slash, so strip it 97 # Path sometimes has leading slash, so strip it
98 path = ud.path.lstrip("/") 98 path = ud.path.lstrip("/")
diff --git a/bitbake/lib/bb/parse/ast.py b/bitbake/lib/bb/parse/ast.py
index 7581d003fd..327e45c8ac 100644
--- a/bitbake/lib/bb/parse/ast.py
+++ b/bitbake/lib/bb/parse/ast.py
@@ -391,6 +391,14 @@ def finalize(fn, d, variant = None):
391 if d.getVar("_FAILPARSINGERRORHANDLED", False) == True: 391 if d.getVar("_FAILPARSINGERRORHANDLED", False) == True:
392 raise bb.BBHandledException() 392 raise bb.BBHandledException()
393 393
394 while True:
395 inherits = d.getVar('__BBDEFINHERITS', False) or []
396 if not inherits:
397 break
398 inherit, filename, lineno = inherits.pop(0)
399 d.setVar('__BBDEFINHERITS', inherits)
400 bb.parse.BBHandler.inherit(inherit, filename, lineno, d, deferred=True)
401
394 for var in d.getVar('__BBHANDLERS', False) or []: 402 for var in d.getVar('__BBHANDLERS', False) or []:
395 # try to add the handler 403 # try to add the handler
396 handlerfn = d.getVarFlag(var, "filename", False) 404 handlerfn = d.getVarFlag(var, "filename", False)
@@ -444,14 +452,6 @@ def multi_finalize(fn, d):
444 logger.debug("Appending .bbappend file %s to %s", append, fn) 452 logger.debug("Appending .bbappend file %s to %s", append, fn)
445 bb.parse.BBHandler.handle(append, d, True) 453 bb.parse.BBHandler.handle(append, d, True)
446 454
447 while True:
448 inherits = d.getVar('__BBDEFINHERITS', False) or []
449 if not inherits:
450 break
451 inherit, filename, lineno = inherits.pop(0)
452 d.setVar('__BBDEFINHERITS', inherits)
453 bb.parse.BBHandler.inherit(inherit, filename, lineno, d, deferred=True)
454
455 onlyfinalise = d.getVar("__ONLYFINALISE", False) 455 onlyfinalise = d.getVar("__ONLYFINALISE", False)
456 456
457 safe_d = d 457 safe_d = d
@@ -487,7 +487,9 @@ def multi_finalize(fn, d):
487 d.setVar("BBEXTENDVARIANT", variantmap[name]) 487 d.setVar("BBEXTENDVARIANT", variantmap[name])
488 else: 488 else:
489 d.setVar("PN", "%s-%s" % (pn, name)) 489 d.setVar("PN", "%s-%s" % (pn, name))
490 bb.parse.BBHandler.inherit(extendedmap[name], fn, 0, d) 490 inherits = d.getVar('__BBDEFINHERITS', False) or []
491 inherits.append((extendedmap[name], fn, 0))
492 d.setVar('__BBDEFINHERITS', inherits)
491 493
492 safe_d.setVar("BBCLASSEXTEND", extended) 494 safe_d.setVar("BBCLASSEXTEND", extended)
493 _create_variants(datastores, extendedmap.keys(), extendfunc, onlyfinalise) 495 _create_variants(datastores, extendedmap.keys(), extendfunc, onlyfinalise)
diff --git a/bitbake/lib/toaster/tests/builds/buildtest.py b/bitbake/lib/toaster/tests/builds/buildtest.py
index cacfccd4d3..e54d561334 100644
--- a/bitbake/lib/toaster/tests/builds/buildtest.py
+++ b/bitbake/lib/toaster/tests/builds/buildtest.py
@@ -128,7 +128,7 @@ class BuildTest(unittest.TestCase):
128 if os.environ.get("TOASTER_TEST_USE_SSTATE_MIRROR"): 128 if os.environ.get("TOASTER_TEST_USE_SSTATE_MIRROR"):
129 ProjectVariable.objects.get_or_create( 129 ProjectVariable.objects.get_or_create(
130 name="SSTATE_MIRRORS", 130 name="SSTATE_MIRRORS",
131 value="file://.* http://cdn.jsdelivr.net/yocto/sstate/all/PATH;downloadfilename=PATH", 131 value="file://.* http://sstate.yoctoproject.org/all/PATH;downloadfilename=PATH",
132 project=project) 132 project=project)
133 133
134 ProjectTarget.objects.create(project=project, 134 ProjectTarget.objects.create(project=project,
diff --git a/documentation/README b/documentation/README
index d7428eb8ed..c394ab9288 100644
--- a/documentation/README
+++ b/documentation/README
@@ -429,5 +429,22 @@ both the Yocto Project and BitBake manuals:
429Submitting documentation changes 429Submitting documentation changes
430================================ 430================================
431 431
432Please see the top level README file in this repository for details of where 432Please refer to our contributor guide here: https://docs.yoctoproject.org/contributor-guide/
433to send patches. 433for full details on how to submit changes.
434
435As a quick guide, patches should be sent to docs@lists.yoctoproject.org
436The git command to do that would be:
437
438 git send-email -M -1 --to docs@lists.yoctoproject.org
439
440The 'To' header can be set as default for this repository:
441
442 git config sendemail.to docs@lists.yoctoproject.org
443
444Now you can just do 'git send-email origin/master..' to send all local patches.
445
446Read the other sections in this document and documentation/standards.md for
447rules to follow when contributing to the documentation.
448
449Git repository: https://git.yoctoproject.org/yocto-docs
450Mailing list: docs@lists.yoctoproject.org
diff --git a/documentation/brief-yoctoprojectqs/index.rst b/documentation/brief-yoctoprojectqs/index.rst
index 2f6e4cf02e..b37142ef14 100644
--- a/documentation/brief-yoctoprojectqs/index.rst
+++ b/documentation/brief-yoctoprojectqs/index.rst
@@ -57,7 +57,7 @@ following requirements:
57 :ref:`dev-manual/start:preparing the build host` 57 :ref:`dev-manual/start:preparing the build host`
58 section in the Yocto Project Development Tasks Manual. 58 section in the Yocto Project Development Tasks Manual.
59 59
60- 60- Ensure that the following utilities have these minimum version numbers:
61 61
62 - Git &MIN_GIT_VERSION; or greater 62 - Git &MIN_GIT_VERSION; or greater
63 - tar &MIN_TAR_VERSION; or greater 63 - tar &MIN_TAR_VERSION; or greater
@@ -65,7 +65,7 @@ following requirements:
65 - gcc &MIN_GCC_VERSION; or greater. 65 - gcc &MIN_GCC_VERSION; or greater.
66 - GNU make &MIN_MAKE_VERSION; or greater 66 - GNU make &MIN_MAKE_VERSION; or greater
67 67
68If your build host does not meet any of these three listed version 68If your build host does not satisfy all of the above version
69requirements, you can take steps to prepare the system so that you 69requirements, you can take steps to prepare the system so that you
70can still use the Yocto Project. See the 70can still use the Yocto Project. See the
71:ref:`ref-manual/system-requirements:required git, tar, python, make and gcc versions` 71:ref:`ref-manual/system-requirements:required git, tar, python, make and gcc versions`
@@ -182,7 +182,7 @@ an entire Linux distribution, including the toolchain, from source.
182 page of the Yocto Project Wiki. 182 page of the Yocto Project Wiki.
183 183
184#. **Initialize the Build Environment:** From within the ``poky`` 184#. **Initialize the Build Environment:** From within the ``poky``
185 directory, run the :ref:`ref-manual/structure:\`\`oe-init-build-env\`\`` 185 directory, run the :ref:`ref-manual/structure:``oe-init-build-env```
186 environment 186 environment
187 setup script to define Yocto Project's build environment on your 187 setup script to define Yocto Project's build environment on your
188 build host. 188 build host.
@@ -252,7 +252,7 @@ an entire Linux distribution, including the toolchain, from source.
252 file in the :term:`Build Directory`:: 252 file in the :term:`Build Directory`::
253 253
254 BB_HASHSERVE_UPSTREAM = "wss://hashserv.yoctoproject.org/ws" 254 BB_HASHSERVE_UPSTREAM = "wss://hashserv.yoctoproject.org/ws"
255 SSTATE_MIRRORS ?= "file://.* http://cdn.jsdelivr.net/yocto/sstate/all/PATH;downloadfilename=PATH" 255 SSTATE_MIRRORS ?= "file://.* http://sstate.yoctoproject.org/all/PATH;downloadfilename=PATH"
256 BB_HASHSERVE = "auto" 256 BB_HASHSERVE = "auto"
257 BB_SIGNATURE_HANDLER = "OEEquivHash" 257 BB_SIGNATURE_HANDLER = "OEEquivHash"
258 258
diff --git a/documentation/bsp-guide/bsp.rst b/documentation/bsp-guide/bsp.rst
index 3e484aa473..73e31670d6 100644
--- a/documentation/bsp-guide/bsp.rst
+++ b/documentation/bsp-guide/bsp.rst
@@ -81,7 +81,7 @@ directory of that Layer. This directory is what you add to the
81``conf/bblayers.conf`` file found in your 81``conf/bblayers.conf`` file found in your
82:term:`Build Directory`, which is 82:term:`Build Directory`, which is
83established after you run the OpenEmbedded build environment setup 83established after you run the OpenEmbedded build environment setup
84script (i.e. :ref:`ref-manual/structure:\`\`oe-init-build-env\`\``). 84script (i.e. :ref:`ref-manual/structure:``oe-init-build-env```).
85Adding the root directory allows the :term:`OpenEmbedded Build System` 85Adding the root directory allows the :term:`OpenEmbedded Build System`
86to recognize the BSP 86to recognize the BSP
87layer and from it build an image. Here is an example:: 87layer and from it build an image. Here is an example::
@@ -229,7 +229,7 @@ section.
229 229
230#. *Initialize the Build Environment:* While in the root directory of 230#. *Initialize the Build Environment:* While in the root directory of
231 the Source Directory (i.e. ``poky``), run the 231 the Source Directory (i.e. ``poky``), run the
232 :ref:`ref-manual/structure:\`\`oe-init-build-env\`\`` environment 232 :ref:`ref-manual/structure:``oe-init-build-env``` environment
233 setup script to define the OpenEmbedded build environment on your 233 setup script to define the OpenEmbedded build environment on your
234 build host. :: 234 build host. ::
235 235
@@ -674,21 +674,21 @@ to the kernel recipe by using a similarly named append file, which is
674located in the BSP Layer for your target device (e.g. the 674located in the BSP Layer for your target device (e.g. the
675``meta-bsp_root_name/recipes-kernel/linux`` directory). 675``meta-bsp_root_name/recipes-kernel/linux`` directory).
676 676
677Suppose you are using the ``linux-yocto_4.4.bb`` recipe to build the 677Suppose you are using the ``linux-yocto_6.12.bb`` recipe to build the
678kernel. In other words, you have selected the kernel in your 678kernel. In other words, you have selected the kernel in your
679``"bsp_root_name".conf`` file by adding 679``"bsp_root_name".conf`` file by adding
680:term:`PREFERRED_PROVIDER` and :term:`PREFERRED_VERSION` 680:term:`PREFERRED_PROVIDER` and :term:`PREFERRED_VERSION`
681statements as follows:: 681statements as follows::
682 682
683 PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto" 683 PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
684 PREFERRED_VERSION_linux-yocto ?= "4.4%" 684 PREFERRED_VERSION_linux-yocto ?= "6.12%"
685 685
686.. note:: 686.. note::
687 687
688 When the preferred provider is assumed by default, the :term:`PREFERRED_PROVIDER` 688 When the preferred provider is assumed by default, the :term:`PREFERRED_PROVIDER`
689 statement does not appear in the ``"bsp_root_name".conf`` file. 689 statement does not appear in the ``"bsp_root_name".conf`` file.
690 690
691You would use the ``linux-yocto_4.4.bbappend`` file to append specific 691You would use the ``linux-yocto_6.12.bbappend`` file to append specific
692BSP settings to the kernel, thus configuring the kernel for your 692BSP settings to the kernel, thus configuring the kernel for your
693particular BSP. 693particular BSP.
694 694
@@ -698,14 +698,19 @@ in the Yocto Project Linux Kernel Development Manual.
698 698
699An alternate scenario is when you create your own kernel recipe for the 699An alternate scenario is when you create your own kernel recipe for the
700BSP. A good example of this is the Raspberry Pi BSP. If you examine the 700BSP. A good example of this is the Raspberry Pi BSP. If you examine the
701``recipes-kernel/linux`` directory you see the following:: 701``recipes-kernel/linux`` directory in that layer you see the following
702Raspberry Pi-specific recipes and associated files::
702 703
704 files/
705 linux-raspberrypi_6.12.bb
706 linux-raspberrypi_6.1.bb
707 linux-raspberrypi_6.6.bb
703 linux-raspberrypi-dev.bb 708 linux-raspberrypi-dev.bb
704 linux-raspberrypi.inc 709 linux-raspberrypi.inc
705 linux-raspberrypi_4.14.bb 710 linux-raspberrypi-v7_6.12.bb
706 linux-raspberrypi_4.9.bb 711 linux-raspberrypi-v7_6.1.bb
707 712 linux-raspberrypi-v7_6.6.bb
708The directory contains three kernel recipes and a common include file. 713 linux-raspberrypi-v7.inc
709 714
710Developing a Board Support Package (BSP) 715Developing a Board Support Package (BSP)
711======================================== 716========================================
@@ -1177,7 +1182,7 @@ Use these steps to create a BSP layer:
1177 1182
1178- *Create a Kernel Recipe:* Create a kernel recipe in 1183- *Create a Kernel Recipe:* Create a kernel recipe in
1179 ``recipes-kernel/linux`` by either using a kernel append file or a 1184 ``recipes-kernel/linux`` by either using a kernel append file or a
1180 new custom kernel recipe file (e.g. ``linux-yocto_4.12.bb``). The BSP 1185 new custom kernel recipe file (e.g. ``linux-yocto_6.12.bb``). The BSP
1181 layers mentioned in the previous step also contain different kernel 1186 layers mentioned in the previous step also contain different kernel
1182 examples. See the ":ref:`kernel-dev/common:modifying an existing recipe`" 1187 examples. See the ":ref:`kernel-dev/common:modifying an existing recipe`"
1183 section in the Yocto Project Linux Kernel Development Manual for 1188 section in the Yocto Project Linux Kernel Development Manual for
@@ -1242,7 +1247,7 @@ located in :yocto_git:`poky/meta-yocto-bsp/conf/machine/beaglebone-yocto.conf
1242 1247
1243 PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg" 1248 PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg"
1244 1249
1245 MACHINE_EXTRA_RRECOMMENDS = "kernel-modules kernel-devicetree" 1250 MACHINE_EXTRA_RRECOMMENDS = "kernel-modules"
1246 1251
1247 EXTRA_IMAGEDEPENDS += "virtual/bootloader" 1252 EXTRA_IMAGEDEPENDS += "virtual/bootloader"
1248 1253
@@ -1258,23 +1263,21 @@ located in :yocto_git:`poky/meta-yocto-bsp/conf/machine/beaglebone-yocto.conf
1258 SERIAL_CONSOLES ?= "115200;ttyS0 115200;ttyO0 115200;ttyAMA0" 1263 SERIAL_CONSOLES ?= "115200;ttyS0 115200;ttyO0 115200;ttyAMA0"
1259 1264
1260 PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto" 1265 PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
1261 PREFERRED_VERSION_linux-yocto ?= "6.1%" 1266 PREFERRED_VERSION_linux-yocto ?= "6.12%"
1262 1267
1263 KERNEL_IMAGETYPE = "zImage" 1268 KERNEL_IMAGETYPE = "zImage"
1264 KERNEL_DEVICETREE = "am335x-bone.dtb am335x-boneblack.dtb am335x-bonegreen.dtb" 1269 DTB_FILES = "am335x-bone.dtb am335x-boneblack.dtb am335x-bonegreen.dtb"
1265 KERNEL_EXTRA_ARGS += "LOADADDR=${UBOOT_ENTRYPOINT}" 1270 KERNEL_DEVICETREE = '${@' '.join('ti/omap/%s' % d for d in '${DTB_FILES}'.split())}'
1266 1271
1267 PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot" 1272 PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot"
1268 1273
1269 SPL_BINARY = "MLO" 1274 SPL_BINARY = "MLO"
1270 UBOOT_SUFFIX = "img" 1275 UBOOT_SUFFIX = "img"
1271 UBOOT_MACHINE = "am335x_evm_defconfig" 1276 UBOOT_MACHINE = "am335x_evm_defconfig"
1272 UBOOT_ENTRYPOINT = "0x80008000"
1273 UBOOT_LOADADDRESS = "0x80008000"
1274 1277
1275 MACHINE_FEATURES = "usbgadget usbhost vfat alsa" 1278 MACHINE_FEATURES = "usbgadget usbhost vfat alsa"
1276 1279
1277 IMAGE_BOOT_FILES ?= "u-boot.${UBOOT_SUFFIX} ${SPL_BINARY} ${KERNEL_IMAGETYPE} ${KERNEL_DEVICETREE}" 1280 IMAGE_BOOT_FILES ?= "u-boot.${UBOOT_SUFFIX} ${SPL_BINARY} ${KERNEL_IMAGETYPE} ${DTB_FILES}"
1278 1281
1279 # support runqemu 1282 # support runqemu
1280 EXTRA_IMAGEDEPENDS += "qemu-native qemu-helper-native" 1283 EXTRA_IMAGEDEPENDS += "qemu-native qemu-helper-native"
@@ -1328,12 +1331,12 @@ Project Reference Manual.
1328 needed in the root filesystem. In this case, the U-Boot recipe must 1331 needed in the root filesystem. In this case, the U-Boot recipe must
1329 be built for the image. 1332 be built for the image.
1330 1333
1331 At the end of the file, we also use this setings to implement 1334 At the end of the file, we also use this setting to implement
1332 ``runqemu`` support on the host machine. 1335 ``runqemu`` support on the host machine.
1333 1336
1334- :term:`DEFAULTTUNE`: Machines 1337- :term:`DEFAULTTUNE`: Machines
1335 use tunings to optimize machine, CPU, and application performance. 1338 use tunings to optimize machine, CPU, and application performance.
1336 These features, which are collectively known as "tuning features", 1339 These features --- collectively known as "tuning features" ---
1337 are set in the :term:`OpenEmbedded-Core (OE-Core)` layer. In this 1340 are set in the :term:`OpenEmbedded-Core (OE-Core)` layer. In this
1338 example, the default tuning file is :oe_git:`tune-cortexa8 1341 example, the default tuning file is :oe_git:`tune-cortexa8
1339 </openembedded-core/tree/meta/conf/machine/include/arm/armv7a/tune-cortexa8.inc>`. 1342 </openembedded-core/tree/meta/conf/machine/include/arm/armv7a/tune-cortexa8.inc>`.
@@ -1363,8 +1366,7 @@ Project Reference Manual.
1363 to create the sysroot when building a Wic image. 1366 to create the sysroot when building a Wic image.
1364 1367
1365- :term:`SERIAL_CONSOLES`: 1368- :term:`SERIAL_CONSOLES`:
1366 Defines a serial console (TTY) to enable using getty. In this case, 1369 Defines one or more serial consoles (TTYs) to enable using getty.
1367 the baud rate is "115200" and the device name is "ttyO0".
1368 1370
1369- :term:`PREFERRED_PROVIDER_virtual/kernel <PREFERRED_PROVIDER>`: 1371- :term:`PREFERRED_PROVIDER_virtual/kernel <PREFERRED_PROVIDER>`:
1370 Specifies the recipe that provides "virtual/kernel" when more than 1372 Specifies the recipe that provides "virtual/kernel" when more than
@@ -1374,7 +1376,7 @@ Project Reference Manual.
1374 1376
1375- :term:`PREFERRED_VERSION_linux-yocto <PREFERRED_VERSION>`: 1377- :term:`PREFERRED_VERSION_linux-yocto <PREFERRED_VERSION>`:
1376 Defines the version of the recipe used to build the kernel, which is 1378 Defines the version of the recipe used to build the kernel, which is
1377 "6.1" in this case. 1379 "6.12" in this case.
1378 1380
1379- :term:`KERNEL_IMAGETYPE`: 1381- :term:`KERNEL_IMAGETYPE`:
1380 The type of kernel to build for the device. In this case, the 1382 The type of kernel to build for the device. In this case, the
@@ -1416,12 +1418,6 @@ Project Reference Manual.
1416 Specifies the value passed on the make command line when building 1418 Specifies the value passed on the make command line when building
1417 a U-Boot image. 1419 a U-Boot image.
1418 1420
1419 - :term:`UBOOT_ENTRYPOINT`:
1420 Specifies the entry point for the U-Boot image.
1421
1422 - :term:`UBOOT_LOADADDRESS`:
1423 Specifies the load address for the U-Boot image.
1424
1425- :term:`MACHINE_FEATURES`: 1421- :term:`MACHINE_FEATURES`:
1426 Specifies the list of hardware features the BeagleBone device is 1422 Specifies the list of hardware features the BeagleBone device is
1427 capable of supporting. In this case, the device supports "usbgadget 1423 capable of supporting. In this case, the device supports "usbgadget
diff --git a/documentation/conf.py b/documentation/conf.py
index 2aceeb8e79..1eca8756ab 100644
--- a/documentation/conf.py
+++ b/documentation/conf.py
@@ -13,6 +13,7 @@
13# documentation root, use os.path.abspath to make it absolute, like shown here. 13# documentation root, use os.path.abspath to make it absolute, like shown here.
14# 14#
15import os 15import os
16import re
16import sys 17import sys
17import datetime 18import datetime
18try: 19try:
@@ -173,6 +174,24 @@ latex_elements = {
173 'preamble': '\\usepackage[UTF8]{ctex}\n\\setcounter{tocdepth}{2}', 174 'preamble': '\\usepackage[UTF8]{ctex}\n\\setcounter{tocdepth}{2}',
174} 175}
175 176
177
178from sphinx.search import SearchEnglish
179from sphinx.search import languages
180class DashFriendlySearchEnglish(SearchEnglish):
181
182 # Accept words that can include hyphens
183 _word_re = re.compile(r'[\w\-]+')
184
185 js_splitter_code = r"""
186function splitQuery(query) {
187 return query
188 .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}-]+/gu)
189 .filter(term => term.length > 0);
190}
191"""
192
193languages['en'] = DashFriendlySearchEnglish
194
176# Make the EPUB builder prefer PNG to SVG because of issues rendering Inkscape SVG 195# Make the EPUB builder prefer PNG to SVG because of issues rendering Inkscape SVG
177from sphinx.builders.epub3 import Epub3Builder 196from sphinx.builders.epub3 import Epub3Builder
178Epub3Builder.supported_image_types = ['image/png', 'image/gif', 'image/jpeg'] 197Epub3Builder.supported_image_types = ['image/png', 'image/gif', 'image/jpeg']
diff --git a/documentation/contributor-guide/submit-changes.rst b/documentation/contributor-guide/submit-changes.rst
index 0675aac984..6d5d69d7cf 100644
--- a/documentation/contributor-guide/submit-changes.rst
+++ b/documentation/contributor-guide/submit-changes.rst
@@ -776,6 +776,38 @@ argument to ``git format-patch`` with a version number::
776 776
777 git format-patch -v2 <ref-branch> 777 git format-patch -v2 <ref-branch>
778 778
779
780After generating updated patches (v2, v3, and so on) via ``git
781format-patch``, ideally developers will add a patch version changelog
782to each patch that describes what has changed between each revision of
783the patch. Add patch version changelogs after the ``---`` marker in the
784patch, indicating that this information is part of this patch, but is not
785suitable for inclusion in the commit message (i.e. the git history) itself.
786Providing a patch version changelog makes it easier for maintainers and
787reviewers to succinctly understand what changed in all versions of the
788patch, without having to consult alternate sources of information, such as
789searching through messages on a mailing list. For example::
790
791 <patch title>
792
793 <commit message>
794
795 <Signed-off-by/other trailers>
796 ---
797 changes in v4:
798 - provide a clearer commit message
799 - fix spelling mistakes
800
801 changes in v3:
802 - replace func() to use other_func() instead
803
804 changes in v2:
805 - this patch was added in v2
806 ---
807 <diffstat output>
808
809 <unified diff>
810
779Lastly please ensure that you also test your revised changes. In particular 811Lastly please ensure that you also test your revised changes. In particular
780please don't just edit the patch file written out by ``git format-patch`` and 812please don't just edit the patch file written out by ``git format-patch`` and
781resend it. 813resend it.
diff --git a/documentation/dev-manual/debugging.rst b/documentation/dev-manual/debugging.rst
index 92458a0c37..8552b26aea 100644
--- a/documentation/dev-manual/debugging.rst
+++ b/documentation/dev-manual/debugging.rst
@@ -36,7 +36,7 @@ section:
36 use the BitBake ``-e`` option to examine variable values after a 36 use the BitBake ``-e`` option to examine variable values after a
37 recipe has been parsed. 37 recipe has been parsed.
38 38
39- ":ref:`dev-manual/debugging:viewing package information with \`\`oe-pkgdata-util\`\``" 39- ":ref:`dev-manual/debugging:viewing package information with ``oe-pkgdata-util```"
40 describes how to use the ``oe-pkgdata-util`` utility to query 40 describes how to use the ``oe-pkgdata-util`` utility to query
41 :term:`PKGDATA_DIR` and 41 :term:`PKGDATA_DIR` and
42 display package-related information for built packages. 42 display package-related information for built packages.
diff --git a/documentation/dev-manual/new-recipe.rst b/documentation/dev-manual/new-recipe.rst
index 944b9627f9..af88db937b 100644
--- a/documentation/dev-manual/new-recipe.rst
+++ b/documentation/dev-manual/new-recipe.rst
@@ -56,7 +56,7 @@ necessary when adding a recipe to build a new piece of software to be
56included in a build. 56included in a build.
57 57
58You can find a complete description of the ``devtool add`` command in 58You can find a complete description of the ``devtool add`` command in
59the ":ref:`sdk-manual/extensible:a closer look at \`\`devtool add\`\``" section 59the ":ref:`sdk-manual/extensible:a closer look at ``devtool add```" section
60in the Yocto Project Application Development and the Extensible Software 60in the Yocto Project Application Development and the Extensible Software
61Development Kit (eSDK) manual. 61Development Kit (eSDK) manual.
62 62
diff --git a/documentation/dev-manual/sbom.rst b/documentation/dev-manual/sbom.rst
index b72bad1554..7c4b5804fb 100644
--- a/documentation/dev-manual/sbom.rst
+++ b/documentation/dev-manual/sbom.rst
@@ -30,16 +30,9 @@ To make this happen, you must inherit the
30 30
31 INHERIT += "create-spdx" 31 INHERIT += "create-spdx"
32 32
33Upon building an image, you will then get: 33Upon building an image, you will then get the compressed archive
34 34``IMAGE-MACHINE.spdx.tar.zst`` contains the index and the files for the single
35- :term:`SPDX` output in JSON format as an ``IMAGE-MACHINE.spdx.json`` file in 35recipes.
36 ``tmp/deploy/images/MACHINE/`` inside the :term:`Build Directory`.
37
38- This toplevel file is accompanied by an ``IMAGE-MACHINE.spdx.index.json``
39 containing an index of JSON :term:`SPDX` files for individual recipes.
40
41- The compressed archive ``IMAGE-MACHINE.spdx.tar.zst`` contains the index
42 and the files for the single recipes.
43 36
44The :ref:`ref-classes-create-spdx` class offers options to include 37The :ref:`ref-classes-create-spdx` class offers options to include
45more information in the output :term:`SPDX` data: 38more information in the output :term:`SPDX` data:
@@ -56,7 +49,7 @@ more information in the output :term:`SPDX` data:
56 49
57Though the toplevel :term:`SPDX` output is available in 50Though the toplevel :term:`SPDX` output is available in
58``tmp/deploy/images/MACHINE/`` inside the :term:`Build Directory`, ancillary 51``tmp/deploy/images/MACHINE/`` inside the :term:`Build Directory`, ancillary
59generated files are available in ``tmp/deploy/spdx/MACHINE`` too, such as: 52generated files are available in ``tmp/deploy/spdx`` too, such as:
60 53
61- The individual :term:`SPDX` JSON files in the ``IMAGE-MACHINE.spdx.tar.zst`` 54- The individual :term:`SPDX` JSON files in the ``IMAGE-MACHINE.spdx.tar.zst``
62 archive. 55 archive.
diff --git a/documentation/dev-manual/upgrading-recipes.rst b/documentation/dev-manual/upgrading-recipes.rst
index 4fac78bdfb..a38fd7837c 100644
--- a/documentation/dev-manual/upgrading-recipes.rst
+++ b/documentation/dev-manual/upgrading-recipes.rst
@@ -333,7 +333,7 @@ Manually Upgrading a Recipe
333 333
334If for some reason you choose not to upgrade recipes using 334If for some reason you choose not to upgrade recipes using
335:ref:`dev-manual/upgrading-recipes:Using the Auto Upgrade Helper (AUH)` or 335:ref:`dev-manual/upgrading-recipes:Using the Auto Upgrade Helper (AUH)` or
336by :ref:`dev-manual/upgrading-recipes:Using \`\`devtool upgrade\`\``, 336by :ref:`dev-manual/upgrading-recipes:Using ``devtool upgrade```,
337you can manually edit the recipe files to upgrade the versions. 337you can manually edit the recipe files to upgrade the versions.
338 338
339.. note:: 339.. note::
diff --git a/documentation/kernel-dev/common.rst b/documentation/kernel-dev/common.rst
index 28ef3b22c3..654c4e0a01 100644
--- a/documentation/kernel-dev/common.rst
+++ b/documentation/kernel-dev/common.rst
@@ -672,7 +672,7 @@ The steps in this procedure show you how you can patch the kernel using
672 672
673 Before attempting this procedure, be sure you have performed the 673 Before attempting this procedure, be sure you have performed the
674 steps to get ready for updating the kernel as described in the 674 steps to get ready for updating the kernel as described in the
675 ":ref:`kernel-dev/common:getting ready to develop using \`\`devtool\`\``" 675 ":ref:`kernel-dev/common:getting ready to develop using ``devtool```"
676 section. 676 section.
677 677
678Patching the kernel involves changing or adding configurations to an 678Patching the kernel involves changing or adding configurations to an
@@ -685,7 +685,7 @@ output at boot time through ``printk`` statements in the kernel's
685``calibrate.c`` source code file. Applying the patch and booting the 685``calibrate.c`` source code file. Applying the patch and booting the
686modified image causes the added messages to appear on the emulator's 686modified image causes the added messages to appear on the emulator's
687console. The example is a continuation of the setup procedure found in 687console. The example is a continuation of the setup procedure found in
688the ":ref:`kernel-dev/common:getting ready to develop using \`\`devtool\`\``" Section. 688the ":ref:`kernel-dev/common:getting ready to develop using ``devtool```" Section.
689 689
690#. *Check Out the Kernel Source Files:* First you must use ``devtool`` 690#. *Check Out the Kernel Source Files:* First you must use ``devtool``
691 to checkout the kernel source code in its workspace. 691 to checkout the kernel source code in its workspace.
@@ -693,7 +693,7 @@ the ":ref:`kernel-dev/common:getting ready to develop using \`\`devtool\`\``" Se
693 .. note:: 693 .. note::
694 694
695 See this step in the 695 See this step in the
696 ":ref:`kernel-dev/common:getting ready to develop using \`\`devtool\`\``" 696 ":ref:`kernel-dev/common:getting ready to develop using ``devtool```"
697 section for more information. 697 section for more information.
698 698
699 Use the following ``devtool`` command to check out the code:: 699 Use the following ``devtool`` command to check out the code::
@@ -804,7 +804,7 @@ the ":ref:`kernel-dev/common:getting ready to develop using \`\`devtool\`\``" Se
804 .. note:: 804 .. note::
805 805
806 See Step 3 of the 806 See Step 3 of the
807 ":ref:`kernel-dev/common:getting ready to develop using \`\`devtool\`\``" 807 ":ref:`kernel-dev/common:getting ready to develop using ``devtool```"
808 section for information on setting up this layer. 808 section for information on setting up this layer.
809 809
810 Once the command 810 Once the command
@@ -1190,7 +1190,7 @@ appear in the ``.config`` file, which is in the :term:`Build Directory`.
1190 1190
1191 For more information about where the ``.config`` file is located, see the 1191 For more information about where the ``.config`` file is located, see the
1192 example in the 1192 example in the
1193 ":ref:`kernel-dev/common:using \`\`menuconfig\`\``" 1193 ":ref:`kernel-dev/common:using ``menuconfig```"
1194 section. 1194 section.
1195 1195
1196It is simple to create a configuration fragment. One method is to use 1196It is simple to create a configuration fragment. One method is to use
@@ -1286,7 +1286,7 @@ when you override a policy configuration in a hardware configuration
1286fragment. 1286fragment.
1287 1287
1288In order to run this task, you must have an existing ``.config`` file. 1288In order to run this task, you must have an existing ``.config`` file.
1289See the ":ref:`kernel-dev/common:using \`\`menuconfig\`\``" section for 1289See the ":ref:`kernel-dev/common:using ``menuconfig```" section for
1290information on how to create a configuration file. 1290information on how to create a configuration file.
1291 1291
1292Here is sample output from the :ref:`ref-tasks-kernel_configcheck` task: 1292Here is sample output from the :ref:`ref-tasks-kernel_configcheck` task:
@@ -1359,7 +1359,7 @@ and
1359tasks until they produce no warnings. 1359tasks until they produce no warnings.
1360 1360
1361For more information on how to use the ``menuconfig`` tool, see the 1361For more information on how to use the ``menuconfig`` tool, see the
1362:ref:`kernel-dev/common:using \`\`menuconfig\`\`` section. 1362:ref:`kernel-dev/common:using ``menuconfig``` section.
1363 1363
1364Fine-Tuning the Kernel Configuration File 1364Fine-Tuning the Kernel Configuration File
1365----------------------------------------- 1365-----------------------------------------
diff --git a/documentation/kernel-dev/intro.rst b/documentation/kernel-dev/intro.rst
index a663733a1d..7df342f8d5 100644
--- a/documentation/kernel-dev/intro.rst
+++ b/documentation/kernel-dev/intro.rst
@@ -122,7 +122,7 @@ general information and references for further information.
122 Using ``devtool`` requires that you have a clean build 122 Using ``devtool`` requires that you have a clean build
123 of the image. For 123 of the image. For
124 more information, see the 124 more information, see the
125 ":ref:`kernel-dev/common:getting ready to develop using \`\`devtool\`\``" 125 ":ref:`kernel-dev/common:getting ready to develop using ``devtool```"
126 section. 126 section.
127 127
128 Using traditional kernel development requires that you have the 128 Using traditional kernel development requires that you have the
diff --git a/documentation/migration-guides/release-4.0.rst b/documentation/migration-guides/release-4.0.rst
index e4e619d179..1053ec4c0b 100644
--- a/documentation/migration-guides/release-4.0.rst
+++ b/documentation/migration-guides/release-4.0.rst
@@ -32,3 +32,5 @@ Release 4.0 (kirkstone)
32 release-notes-4.0.23 32 release-notes-4.0.23
33 release-notes-4.0.24 33 release-notes-4.0.24
34 release-notes-4.0.25 34 release-notes-4.0.25
35 release-notes-4.0.26
36 release-notes-4.0.27
diff --git a/documentation/migration-guides/release-5.0.rst b/documentation/migration-guides/release-5.0.rst
index 528963ec2d..b3e7a67912 100644
--- a/documentation/migration-guides/release-5.0.rst
+++ b/documentation/migration-guides/release-5.0.rst
@@ -15,3 +15,5 @@ Release 5.0 (scarthgap)
15 release-notes-5.0.6 15 release-notes-5.0.6
16 release-notes-5.0.7 16 release-notes-5.0.7
17 release-notes-5.0.8 17 release-notes-5.0.8
18 release-notes-5.0.9
19 release-notes-5.0.10
diff --git a/documentation/migration-guides/release-notes-4.0.26.rst b/documentation/migration-guides/release-notes-4.0.26.rst
new file mode 100644
index 0000000000..42ff28c6a2
--- /dev/null
+++ b/documentation/migration-guides/release-notes-4.0.26.rst
@@ -0,0 +1,263 @@
1Release notes for Yocto-4.0.26 (Kirkstone)
2------------------------------------------
3
4Security Fixes in Yocto-4.0.26
5~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6
7
8- bind: Fix :cve_nist:`2024-11187` and :cve_nist:`2024-12705`
9- binutils: Fix :cve_nist:`2025-0840`
10- elfutils: Fix :cve_nist:`2025-1352` and :cve_nist:`2025-1372`
11- ffmpeg: Fix CVE-2024-28661, :cve_nist:`2024-35369`, :cve_nist:`2024-36613`, :cve_nist:`2024-36616`,
12 :cve_nist:`2024-36617`, :cve_nist:`2024-36618`, :cve_nist:`2025-0518` and :cve_nist:`2025-25473`
13- ffmpeg: Ignore :cve_nist:`2023-46407`, :cve_nist:`2023-47470`, :cve_nist:`2024-7272`,
14 :cve_nist:`2024-22860`, :cve_nist:`2024-22861` and :cve_nist:`2024-22862`
15- freetype: Fix :cve_nist:`2025-27363`
16- gnutls: Fix :cve_nist:`2024-12243`
17- grub: Fix :cve_nist:`2024-45774`, :cve_nist:`2024-45775`, :cve_nist:`2024-45776`,
18 :cve_nist:`2024-45777`, :cve_nist:`2024-45778`, :cve_nist:`2024-45779`, :cve_nist:`2024-45780`,
19 :cve_nist:`2024-45781`, :cve_nist:`2024-45782`, :cve_nist:`2024-45783`, :cve_nist:`2024-56737`,
20 :cve_nist:`2025-0622`, :cve_nist:`2025-0624`, :cve_nist:`2025-0677`, :cve_nist:`2025-0684`,
21 :cve_nist:`2025-0685`, :cve_nist:`2025-0686`, :cve_nist:`2025-0689`, :cve_nist:`2025-0678`,
22 :cve_nist:`2025-0690`, :cve_nist:`2025-1118` and :cve_nist:`2025-1125`
23- gstreamer1.0-rtsp-server: fix :cve_nist:`2024-44331`
24- libarchive: Fix :cve_nist:`2025-25724`
25- libarchive: Ignore :cve_nist:`2025-1632`
26- libcap: Fix :cve_nist:`2025-1390`
27- linux-yocto/5.10: Fix :cve_nist:`2024-36476`, :cve_nist:`2024-43098`, :cve_nist:`2024-47143`,
28 :cve_nist:`2024-48881`, :cve_nist:`2024-50051`, :cve_nist:`2024-50074`, :cve_nist:`2024-50082`,
29 :cve_nist:`2024-50083`, :cve_nist:`2024-50099`, :cve_nist:`2024-50115`, :cve_nist:`2024-50116`,
30 :cve_nist:`2024-50117`, :cve_nist:`2024-50142`, :cve_nist:`2024-50148`, :cve_nist:`2024-50150`,
31 :cve_nist:`2024-50151`, :cve_nist:`2024-50167`, :cve_nist:`2024-50168`, :cve_nist:`2024-50171`,
32 :cve_nist:`2024-50185`, :cve_nist:`2024-50192`, :cve_nist:`2024-50193`, :cve_nist:`2024-50194`,
33 :cve_nist:`2024-50195`, :cve_nist:`2024-50198`, :cve_nist:`2024-50201`, :cve_nist:`2024-50202`,
34 :cve_nist:`2024-50205`, :cve_nist:`2024-50208`, :cve_nist:`2024-50209`, :cve_nist:`2024-50229`,
35 :cve_nist:`2024-50230`, :cve_nist:`2024-50233`, :cve_nist:`2024-50234`, :cve_nist:`2024-50236`,
36 :cve_nist:`2024-50237`, :cve_nist:`2024-50251`, :cve_nist:`2024-50262`, :cve_nist:`2024-50264`,
37 :cve_nist:`2024-50265`, :cve_nist:`2024-50267`, :cve_nist:`2024-50268`, :cve_nist:`2024-50269`,
38 :cve_nist:`2024-50273`, :cve_nist:`2024-50278`, :cve_nist:`2024-50279`, :cve_nist:`2024-50282`,
39 :cve_nist:`2024-50287`, :cve_nist:`2024-50292`, :cve_nist:`2024-50296`, :cve_nist:`2024-50299`,
40 :cve_nist:`2024-50301`, :cve_nist:`2024-50302`, :cve_nist:`2024-53042`, :cve_nist:`2024-53052`,
41 :cve_nist:`2024-53057`, :cve_nist:`2024-53059`, :cve_nist:`2024-53060`, :cve_nist:`2024-53061`,
42 :cve_nist:`2024-53063`, :cve_nist:`2024-53066`, :cve_nist:`2024-53096`, :cve_nist:`2024-53097`,
43 :cve_nist:`2024-53101`, :cve_nist:`2024-53103`, :cve_nist:`2024-53104`, :cve_nist:`2024-53145`,
44 :cve_nist:`2024-53146`, :cve_nist:`2024-53150`, :cve_nist:`2024-53155`, :cve_nist:`2024-53156`,
45 :cve_nist:`2024-53157`, :cve_nist:`2024-53161`, :cve_nist:`2024-53165`, :cve_nist:`2024-53171`,
46 :cve_nist:`2024-53173`, :cve_nist:`2024-53174`, :cve_nist:`2024-53194`, :cve_nist:`2024-53197`,
47 :cve_nist:`2024-53217`, :cve_nist:`2024-53226`, :cve_nist:`2024-53227`, :cve_nist:`2024-53237`,
48 :cve_nist:`2024-53239`, :cve_nist:`2024-55916`, :cve_nist:`2024-56548`, :cve_nist:`2024-56558`,
49 :cve_nist:`2024-56567`, :cve_nist:`2024-56568`, :cve_nist:`2024-56569`, :cve_nist:`2024-56572`,
50 :cve_nist:`2024-56574`, :cve_nist:`2024-56581`, :cve_nist:`2024-56587`, :cve_nist:`2024-56593`,
51 :cve_nist:`2024-56595`, :cve_nist:`2024-56596`, :cve_nist:`2024-56598`, :cve_nist:`2024-56600`,
52 :cve_nist:`2024-56601`, :cve_nist:`2024-56602`, :cve_nist:`2024-56603`, :cve_nist:`2024-56605`,
53 :cve_nist:`2024-56606`, :cve_nist:`2024-56615`, :cve_nist:`2024-56619`, :cve_nist:`2024-56623`,
54 :cve_nist:`2024-56629`, :cve_nist:`2024-56634`, :cve_nist:`2024-56642`, :cve_nist:`2024-56643`,
55 :cve_nist:`2024-56648`, :cve_nist:`2024-56650`, :cve_nist:`2024-56659`, :cve_nist:`2024-56662`,
56 :cve_nist:`2024-56670`, :cve_nist:`2024-56688`, :cve_nist:`2024-56698`, :cve_nist:`2024-56704`,
57 :cve_nist:`2024-56716`, :cve_nist:`2024-56720`, :cve_nist:`2024-56723`, :cve_nist:`2024-56724`,
58 :cve_nist:`2024-56728`, :cve_nist:`2024-56739`, :cve_nist:`2024-56746`, :cve_nist:`2024-56747`,
59 :cve_nist:`2024-56748`, :cve_nist:`2024-56754`, :cve_nist:`2024-56756`, :cve_nist:`2024-56770`,
60 :cve_nist:`2024-56779`, :cve_nist:`2024-56780`, :cve_nist:`2024-56781`, :cve_nist:`2024-56785`,
61 :cve_nist:`2024-57802`, :cve_nist:`2024-57807`, :cve_nist:`2024-57850`, :cve_nist:`2024-57874`,
62 :cve_nist:`2024-57890`, :cve_nist:`2024-57896`, :cve_nist:`2024-57900`, :cve_nist:`2024-57901`,
63 :cve_nist:`2024-57902`, :cve_nist:`2024-57910`, :cve_nist:`2024-57911`, :cve_nist:`2024-57913`,
64 :cve_nist:`2024-57922`, :cve_nist:`2024-57938`, :cve_nist:`2024-57939`, :cve_nist:`2024-57946`,
65 :cve_nist:`2024-57951`, :cve_nist:`2025-21638`, :cve_nist:`2025-21687`, :cve_nist:`2025-21689`,
66 :cve_nist:`2025-21692`, :cve_nist:`2025-21694`, :cve_nist:`2025-21697` and :cve_nist:`2025-21699`
67- linux-yocto/5.15: Fix :cve_nist:`2024-57979`, :cve_nist:`2024-58034`, :cve_nist:`2024-58052`,
68 :cve_nist:`2024-58055`, :cve_nist:`2024-58058`, :cve_nist:`2024-58063`, :cve_nist:`2024-58069`,
69 :cve_nist:`2024-58071`, :cve_nist:`2024-58076`, :cve_nist:`2024-58083`, :cve_nist:`2025-21700`,
70 :cve_nist:`2025-21703`, :cve_nist:`2025-21715`, :cve_nist:`2025-21722`, :cve_nist:`2025-21727`,
71 :cve_nist:`2025-21731`, :cve_nist:`2025-21753`, :cve_nist:`2025-21756`, :cve_nist:`2025-21760`,
72 :cve_nist:`2025-21761`, :cve_nist:`2025-21762`, :cve_nist:`2025-21763`, :cve_nist:`2025-21764`,
73 :cve_nist:`2025-21796`, :cve_nist:`2025-21811`, :cve_nist:`2025-21887`, :cve_nist:`2025-21898`,
74 :cve_nist:`2025-21904`, :cve_nist:`2025-21905`, :cve_nist:`2025-21912`, :cve_nist:`2025-21917`,
75 :cve_nist:`2025-21919`, :cve_nist:`2025-21920`, :cve_nist:`2025-21922`, :cve_nist:`2025-21934`,
76 :cve_nist:`2025-21943`, :cve_nist:`2025-21948` and :cve_nist:`2025-21951`
77- libpcre2: Ignore :cve_nist:`2022-1586`
78- libtasn1: Fix :cve_nist:`2024-12133`
79- libxml2: Fix :cve_nist:`2022-49043`, :cve_nist:`2024-56171`, :cve_nist:`2025-24928` and
80 :cve_nist:`2025-27113`
81- libxslt: Fix :cve_nist:`2024-55549` and :cve_nist:`2025-24855`
82- llvm: Fix :cve_nist:`2024-0151`
83- mpg123: Fix :cve_nist:`2024-10573`
84- openssh: Fix :cve_nist:`2025-26465`
85- ovmf: Revert Fix for CVE-2023-45236 :cve_nist:`2023-45237`
86- perl: Ignore :cve_nist:`2023-47038`
87- puzzles: Ignore :cve_nist:`2024-13769`, :cve_nist:`2024-13770` and :cve_nist:`2025-0837`
88- python3: Fix :cve_nist:`2025-0938`
89- ruby: Fix :cve_nist:`2024-41946`, :cve_nist:`2025-27219` and :cve_nist:`2025-27220`
90- subversion: Ignore :cve_nist:`2024-45720`
91- systemd: Fix :cve_nist:`2022-3821`, :cve_nist:`2022-4415`, :cve_nist:`2022-45873` and
92 :cve_nist:`2023-7008`
93- tiff: mark :cve_nist:`2023-30774` as patched with existing patch
94- u-boot: Fix :cve_nist:`2022-2347`, :cve_nist:`2022-30767`, :cve_nist:`2022-30790`,
95 :cve_nist:`2024-57254`, :cve_nist:`2024-57255`, :cve_nist:`2024-57256`, :cve_nist:`2024-57257`,
96 :cve_nist:`2024-57258` and :cve_nist:`2024-57259`
97- vim: Fix :cve_nist:`2025-1215`, :cve_nist:`2025-22134`, :cve_nist:`2025-24014`,
98 :cve_nist:`2025-26603`, :cve_nist:`2025-27423` and :cve_nist:`2025-29768`
99- xserver-xorg: Fix :cve_nist:`2022-49737`, :cve_nist:`2025-26594`, :cve_nist:`2025-26595`,
100 :cve_nist:`2025-26596`, :cve_nist:`2025-26597`, :cve_nist:`2025-26598`, :cve_nist:`2025-26599`,
101 :cve_nist:`2025-26600` and :cve_nist:`2025-26601`
102- xwayland: Fix :cve_nist:`2022-49737`, :cve_nist:`2024-9632`, :cve_nist:`2024-21885`,
103 :cve_nist:`2024-21886`, :cve_nist:`2024-31080`, :cve_nist:`2024-31081`, :cve_nist:`2024-31083`,
104 :cve_nist:`2025-26594`, :cve_nist:`2025-26595`, :cve_nist:`2025-26596`, :cve_nist:`2025-26597`,
105 :cve_nist:`2025-26598`, :cve_nist:`2025-26599`, :cve_nist:`2025-26600` and :cve_nist:`2025-26601`
106- zlib: Fix :cve_nist:`2014-9485`
107
108
109
110Fixes in Yocto-4.0.26
111~~~~~~~~~~~~~~~~~~~~~
112
113- bind: Upgrade to 9.18.33
114- bitbake: cache: bump cache version
115- bitbake: siggen.py: Improve taskhash reproducibility
116- boost: fix do_fetch error
117- build-appliance-image: Update to kirkstone head revision
118- contributor-guide/submit-changes: add policy on AI generated code
119- cve-update-nvd2-native: handle missing vulnStatus
120- docs: Add favicon for the documentation html
121- docs: Remove all mention of core-image-lsb
122- libtasn1: upgrade to 4.20.0
123- libxcrypt-compat: Remove libcrypt.so to fix conflict with libcrypt
124- libxml2: fix compilation of explicit child axis in pattern
125- linux-yocto/5.10: update to v5.10.234
126- linux-yocto/5.15: update to v5.15.179
127- mesa: Fix missing GLES3 headers in SDK sysroot
128- mesa: Update :term:`SRC_URI`
129- meta: Enable '-o pipefail' for the SDK installer
130- migration-guides: add release notes for 4.0.25
131- poky.conf: add ubuntu2404 to :term:`SANITY_TESTED_DISTROS`
132- poky.conf: bump version for 4.0.26
133- procps: replaced one use of fputs(3) with a write(2) call
134- ref-manual: don't refer to poky-lsb
135- scripts/install-buildtools: Update to 4.0.24
136- scritps/runqemu: Ensure we only have two serial ports
137- systemd: upgrade to 250.14
138- tzcode-native: Fix compiler setting from 2023d version
139- tzcode: Update :term:`SRC_URI`
140- tzdata/tzcode-native: upgrade 2025a
141- vim: Upgrade to 9.1.1198
142- virglrenderer: fix do_fetch error
143- vulnerabilities/classes: remove references to cve-check text format
144- xz: Update :term:`SRC_URI`
145- yocto-uninative: Update to 4.7 for glibc 2.41
146
147
148Known Issues in Yocto-4.0.26
149~~~~~~~~~~~~~~~~~~~~~~~~~~~~
150
151- N/A
152
153
154Contributors to Yocto-4.0.26
155~~~~~~~~~~~~~~~~~~~~~~~~~~~~
156
157Thanks to the following people who contributed to this release:
158
159- Aleksandar Nikolic
160- Alessio Cascone
161- Antonin Godard
162- Archana Polampalli
163- Ashish Sharma
164- Bruce Ashfield
165- Carlos Dominguez
166- Deepesh Varatharajan
167- Divya Chellam
168- Guocai He
169- Hitendra Prajapati
170- Hongxu Jia
171- Jiaying Song
172- Johannes Kauffmann
173- Kai Kang
174- Lee Chee Yang
175- Libo Chen
176- Marta Rybczynska
177- Michael Halstead
178- Mingli Yu
179- Moritz Haase
180- Narpat Mali
181- Paulo Neves
182- Peter Marko
183- Priyal Doshi
184- Richard Purdie
185- Robert Yang
186- Ross Burton
187- Sakib Sajal
188- Steve Sakoman
189- Vijay Anusuri
190- Yogita Urade
191- Zhang Peng
192
193
194Repositories / Downloads for Yocto-4.0.26
195~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
196
197poky
198
199- Repository Location: :yocto_git:`/poky`
200- Branch: :yocto_git:`kirkstone </poky/log/?h=kirkstone>`
201- Tag: :yocto_git:`yocto-4.0.26 </poky/log/?h=yocto-4.0.26>`
202- Git Revision: :yocto_git:`d70d287a77d5026b698ac237ab865b2dafd36bb8 </poky/commit/?id=d70d287a77d5026b698ac237ab865b2dafd36bb8>`
203- Release Artefact: poky-d70d287a77d5026b698ac237ab865b2dafd36bb8
204- sha: 3ebfadb8bff4c1ca12b3cf3e4ef6e3ac2ce52b73570266daa98436c9959249f2
205- Download Locations:
206 https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.26/poky-d70d287a77d5026b698ac237ab865b2dafd36bb8.tar.bz2
207 https://mirrors.kernel.org/yocto/yocto/yocto-4.0.26/poky-d70d287a77d5026b698ac237ab865b2dafd36bb8.tar.bz2
208
209openembedded-core
210
211- Repository Location: :oe_git:`/openembedded-core`
212- Branch: :oe_git:`kirkstone </openembedded-core/log/?h=kirkstone>`
213- Tag: :oe_git:`yocto-4.0.26 </openembedded-core/log/?h=yocto-4.0.26>`
214- Git Revision: :oe_git:`1efbe1004bc82e7c14c1e8bd4ce644f5015c3346 </openembedded-core/commit/?id=1efbe1004bc82e7c14c1e8bd4ce644f5015c3346>`
215- Release Artefact: oecore-1efbe1004bc82e7c14c1e8bd4ce644f5015c3346
216- sha: d3805e034dabd0865dbf55488b2c16d4ea0351d37aa826f0054a6bfdde5a8be9
217- Download Locations:
218 https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.26/oecore-1efbe1004bc82e7c14c1e8bd4ce644f5015c3346.tar.bz2
219 https://mirrors.kernel.org/yocto/yocto/yocto-4.0.26/oecore-1efbe1004bc82e7c14c1e8bd4ce644f5015c3346.tar.bz2
220
221meta-mingw
222
223- Repository Location: :yocto_git:`/meta-mingw`
224- Branch: :yocto_git:`kirkstone </meta-mingw/log/?h=kirkstone>`
225- Tag: :yocto_git:`yocto-4.0.26 </meta-mingw/log/?h=yocto-4.0.26>`
226- Git Revision: :yocto_git:`87c22abb1f11be430caf4372e6b833dc7d77564e </meta-mingw/commit/?id=87c22abb1f11be430caf4372e6b833dc7d77564e>`
227- Release Artefact: meta-mingw-87c22abb1f11be430caf4372e6b833dc7d77564e
228- sha: f0bc4873e2e0319fb9d6d6ab9b98eb3f89664d4339a167d2db6a787dd12bc1a8
229- Download Locations:
230 https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.26/meta-mingw-87c22abb1f11be430caf4372e6b833dc7d77564e.tar.bz2
231 https://mirrors.kernel.org/yocto/yocto/yocto-4.0.26/meta-mingw-87c22abb1f11be430caf4372e6b833dc7d77564e.tar.bz2
232
233meta-gplv2
234
235- Repository Location: :yocto_git:`/meta-gplv2`
236- Branch: :yocto_git:`kirkstone </meta-gplv2/log/?h=kirkstone>`
237- Tag: :yocto_git:`yocto-4.0.26 </meta-gplv2/log/?h=yocto-4.0.26>`
238- Git Revision: :yocto_git:`d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a </meta-gplv2/commit/?id=d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a>`
239- Release Artefact: meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a
240- sha: c386f59f8a672747dc3d0be1d4234b6039273d0e57933eb87caa20f56b9cca6d
241- Download Locations:
242 https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.26/meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a.tar.bz2
243 https://mirrors.kernel.org/yocto/yocto/yocto-4.0.26/meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a.tar.bz2
244
245bitbake
246
247- Repository Location: :oe_git:`/bitbake`
248- Branch: :oe_git:`2.0 </bitbake/log/?h=2.0>`
249- Tag: :oe_git:`yocto-4.0.26 </bitbake/log/?h=yocto-4.0.26>`
250- Git Revision: :oe_git:`046871d9fd76efdca7b72718b328d8f545523f7e </bitbake/commit/?id=046871d9fd76efdca7b72718b328d8f545523f7e>`
251- Release Artefact: bitbake-046871d9fd76efdca7b72718b328d8f545523f7e
252- sha: e9df0a9f5921b583b539188d66b23f120e1751000e7822e76c3391d5c76ee21a
253- Download Locations:
254 https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.26/bitbake-046871d9fd76efdca7b72718b328d8f545523f7e.tar.bz2
255 https://mirrors.kernel.org/yocto/yocto/yocto-4.0.26/bitbake-046871d9fd76efdca7b72718b328d8f545523f7e.tar.bz2
256
257yocto-docs
258
259- Repository Location: :yocto_git:`/yocto-docs`
260- Branch: :yocto_git:`kirkstone </yocto-docs/log/?h=kirkstone>`
261- Tag: :yocto_git:`yocto-4.0.26 </yocto-docs/log/?h=yocto-4.0.26>`
262- Git Revision: :yocto_git:`9b4c36f7b02dd4bedfec90206744a1e90e37733c </yocto-docs/commit/?id=9b4c36f7b02dd4bedfec90206744a1e90e37733c>`
263
diff --git a/documentation/migration-guides/release-notes-4.0.27.rst b/documentation/migration-guides/release-notes-4.0.27.rst
new file mode 100644
index 0000000000..e37e2f78b6
--- /dev/null
+++ b/documentation/migration-guides/release-notes-4.0.27.rst
@@ -0,0 +1,153 @@
1Release notes for Yocto-4.0.27 (Kirkstone)
2------------------------------------------
3
4Security Fixes in Yocto-4.0.27
5~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6
7- binutils: Fix :cve_nist:`2025-1178`
8- busybox: fix :cve_nist:`2023-39810`
9- connman :fix :cve_nist:`2025-32743`
10- curl: Ignore :cve_nist:`2025-0725`
11- ghostscript: Fix :cve_nist:`2025-27830`, :cve_nist:`2025-27831`, :cve_nist:`2025-27832`,
12 :cve_nist:`2025-27834`, :cve_nist:`2025-27835` and :cve_nist:`2025-27836`
13- ghostscript: Ignore :cve_nist:`2024-29507`, :cve_nist:`2025-27833` and :cve_nist:`2025-27837`
14- glib-2.0: Fix :cve_nist:`2025-3360`
15- go: Fix :cve_nist:`2025-22871`
16- libarchive: Ignore :cve_nist:`2024-48615`
17- libpam: Fix :cve_nist:`2024-10041`
18- libsoup-2.4: Fix :cve_nist:`2024-52532`, :cve_nist:`2025-32906` and :cve_nist:`2025-32909`
19- libsoup: Fix :cve_nist:`2024-52532`, :cve_nist:`2025-32906`, :cve_nist:`2025-32909`,
20 :cve_nist:`2025-32910`, :cve_nist:`2025-32911`, :cve_nist:`2025-32912`, :cve_nist:`2025-32913`
21 and :cve_nist:`2025-32914`
22- libxml2: Fix :cve_nist:`2025-32414` and :cve_nist:`2025-32415`
23- ofono: Fix :cve_nist:`2024-7537`
24- perl: Fix :cve_nist:`2024-56406`
25- ppp: Fix :cve_nist:`2024-58250`
26- python3-setuptools: Fix :cve_nist:`2024-6345`
27- qemu: Ignore :cve_nist:`2023-1386`
28- ruby: Fix :cve_nist:`2024-43398`
29- sqlite3: Fix :cve_nist:`2025-29088`
30- systemd: Ignore :cve_nist:`2022-3821`, :cve_nist:`2022-4415` and :cve_nist:`2022-45873`
31
32
33Fixes in Yocto-4.0.27
34~~~~~~~~~~~~~~~~~~~~~
35
36- Revert "cve-update-nvd2-native: Tweak to work better with NFS DL_DIR"
37- build-appliance-image: Update to kirkstone head revision
38- cve-update-nvd2-native: add workaround for json5 style list
39- docs: Fix dead links that use the :term:`DISTRO` macro
40- docs: manuals: remove repeated word
41- docs: poky.yaml: introduce DISTRO_LATEST_TAG
42- glibc: Add single-threaded fast path to rand()
43- glibc: stable 2.35 branch updates
44- module.bbclass: add KBUILD_EXTRA_SYMBOLS to install
45- perl: enable _GNU_SOURCE define via d_gnulibc
46- poky.conf: bump version for 4.0.27
47- ref-manual/variables.rst: document autotools class related variables
48- scripts/install-buildtools: Update to 4.0.26
49- systemd: backport patch to fix journal issue
50- systemd: systemd-journald fails to setup LogNamespace
51- tzdata/tzcode-native: upgrade to 2025b
52
53
54Known Issues in Yocto-4.0.27
55~~~~~~~~~~~~~~~~~~~~~~~~~~~~
56
57- N/A
58
59
60Contributors to Yocto-4.0.27
61~~~~~~~~~~~~~~~~~~~~~~~~~~~~
62
63- Aleksandar Nikolic
64- Alexander Kanavin
65- Alon Bar-Lev
66- Andrew Kreimer
67- Antonin Godard
68- Chen Qi
69- Deepesh Varatharajan
70- Divya Chellam
71- Haitao Liu
72- Haixiao Yan
73- Hitendra Prajapati
74- Peter Marko
75- Praveen Kumar
76- Priyal Doshi
77- Shubham Kulkarni
78- Soumya Sambu
79- Steve Sakoman
80- Vijay Anusuri
81- Yogita Urade
82
83
84Repositories / Downloads for Yocto-4.0.27
85~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
86
87poky
88
89- Repository Location: :yocto_git:`/poky`
90- Branch: :yocto_git:`kirkstone </poky/log/?h=kirkstone>`
91- Tag: :yocto_git:`yocto-4.0.27 </poky/log/?h=yocto-4.0.27>`
92- Git Revision: :yocto_git:`ab9a994a8cd8e06b519a693db444030999d273b7 </poky/commit/?id=ab9a994a8cd8e06b519a693db444030999d273b7>`
93- Release Artefact: poky-ab9a994a8cd8e06b519a693db444030999d273b7
94- sha: 77a366c17cf29eef15c6ff3f44e73f81c07288c723fd4a6dbd8c7ee9b79933f3
95- Download Locations:
96 https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.27/poky-ab9a994a8cd8e06b519a693db444030999d273b7.tar.bz2
97 https://mirrors.kernel.org/yocto/yocto/yocto-4.0.27/poky-ab9a994a8cd8e06b519a693db444030999d273b7.tar.bz2
98
99openembedded-core
100
101- Repository Location: :oe_git:`/openembedded-core`
102- Branch: :oe_git:`kirkstone </openembedded-core/log/?h=kirkstone>`
103- Tag: :oe_git:`yocto-4.0.27 </openembedded-core/log/?h=yocto-4.0.27>`
104- Git Revision: :oe_git:`e8be08a624b2d024715a5c8b0c37f2345a02336b </openembedded-core/commit/?id=e8be08a624b2d024715a5c8b0c37f2345a02336b>`
105- Release Artefact: oecore-e8be08a624b2d024715a5c8b0c37f2345a02336b
106- sha: cc5b0fadab021c6dc61f37fc4ff01a1cf657e7c219488ce264bede42f7f6212f
107- Download Locations:
108 https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.27/oecore-e8be08a624b2d024715a5c8b0c37f2345a02336b.tar.bz2
109 https://mirrors.kernel.org/yocto/yocto/yocto-4.0.27/oecore-e8be08a624b2d024715a5c8b0c37f2345a02336b.tar.bz2
110
111meta-mingw
112
113- Repository Location: :yocto_git:`/meta-mingw`
114- Branch: :yocto_git:`kirkstone </meta-mingw/log/?h=kirkstone>`
115- Tag: :yocto_git:`yocto-4.0.27 </meta-mingw/log/?h=yocto-4.0.27>`
116- Git Revision: :yocto_git:`87c22abb1f11be430caf4372e6b833dc7d77564e </meta-mingw/commit/?id=87c22abb1f11be430caf4372e6b833dc7d77564e>`
117- Release Artefact: meta-mingw-87c22abb1f11be430caf4372e6b833dc7d77564e
118- sha: f0bc4873e2e0319fb9d6d6ab9b98eb3f89664d4339a167d2db6a787dd12bc1a8
119- Download Locations:
120 https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.27/meta-mingw-87c22abb1f11be430caf4372e6b833dc7d77564e.tar.bz2
121 https://mirrors.kernel.org/yocto/yocto/yocto-4.0.27/meta-mingw-87c22abb1f11be430caf4372e6b833dc7d77564e.tar.bz2
122
123meta-gplv2
124
125- Repository Location: :yocto_git:`/meta-gplv2`
126- Branch: :yocto_git:`kirkstone </meta-gplv2/log/?h=kirkstone>`
127- Tag: :yocto_git:`yocto-4.0.27 </meta-gplv2/log/?h=yocto-4.0.27>`
128- Git Revision: :yocto_git:`d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a </meta-gplv2/commit/?id=d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a>`
129- Release Artefact: meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a
130- sha: c386f59f8a672747dc3d0be1d4234b6039273d0e57933eb87caa20f56b9cca6d
131- Download Locations:
132 https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.27/meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a.tar.bz2
133 https://mirrors.kernel.org/yocto/yocto/yocto-4.0.27/meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a.tar.bz2
134
135bitbake
136
137- Repository Location: :oe_git:`/bitbake`
138- Branch: :oe_git:`2.0 </bitbake/log/?h=2.0>`
139- Tag: :oe_git:`yocto-4.0.27 </bitbake/log/?h=yocto-4.0.27>`
140- Git Revision: :oe_git:`046871d9fd76efdca7b72718b328d8f545523f7e </bitbake/commit/?id=046871d9fd76efdca7b72718b328d8f545523f7e>`
141- Release Artefact: bitbake-046871d9fd76efdca7b72718b328d8f545523f7e
142- sha: e9df0a9f5921b583b539188d66b23f120e1751000e7822e76c3391d5c76ee21a
143- Download Locations:
144 https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.27/bitbake-046871d9fd76efdca7b72718b328d8f545523f7e.tar.bz2
145 https://mirrors.kernel.org/yocto/yocto/yocto-4.0.27/bitbake-046871d9fd76efdca7b72718b328d8f545523f7e.tar.bz2
146
147yocto-docs
148
149- Repository Location: :yocto_git:`/yocto-docs`
150- Branch: :yocto_git:`kirkstone </yocto-docs/log/?h=kirkstone>`
151- Tag: :yocto_git:`yocto-4.0.27 </yocto-docs/log/?h=yocto-4.0.27>`
152- Git Revision: :yocto_git:`0d51e553d5f83eea6634e03ddc9c7740bf72fcea </yocto-docs/commit/?id=0d51e553d5f83eea6634e03ddc9c7740bf72fcea>`
153
diff --git a/documentation/migration-guides/release-notes-4.3.rst b/documentation/migration-guides/release-notes-4.3.rst
index d1ab70447b..0103ac985e 100644
--- a/documentation/migration-guides/release-notes-4.3.rst
+++ b/documentation/migration-guides/release-notes-4.3.rst
@@ -295,7 +295,7 @@ New Features / Enhancements in 4.3
295 - Generation of :term:`SPDX` manifests is now enabled by default. 295 - Generation of :term:`SPDX` manifests is now enabled by default.
296 296
297 - Git based recipes in OE-Core which used the ``git`` protocol have been 297 - Git based recipes in OE-Core which used the ``git`` protocol have been
298 changed to use `https`` where possible, as it is typically faster and 298 changed to use ``https`` where possible, as it is typically faster and
299 more reliable. 299 more reliable.
300 300
301 - The ``os-release`` recipe added a ``CPE_NAME`` to the fields provided, with the 301 - The ``os-release`` recipe added a ``CPE_NAME`` to the fields provided, with the
diff --git a/documentation/migration-guides/release-notes-5.0.10.rst b/documentation/migration-guides/release-notes-5.0.10.rst
new file mode 100644
index 0000000000..e9845aa315
--- /dev/null
+++ b/documentation/migration-guides/release-notes-5.0.10.rst
@@ -0,0 +1,208 @@
1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
2
3Release notes for Yocto-5.0.10 (Scarthgap)
4------------------------------------------
5
6Security Fixes in Yocto-5.0.10
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8
9- binutils: Fix :cve_nist:`2025-1153`, :cve_nist:`2025-1179`, :cve_nist:`2025-1180` and
10 :cve_nist:`2025-1182`
11- connman: Fix :cve_nist:`2025-32366` and :cve_nist:`2025-32743`
12- curl: Fix :cve_nist:`2024-11053` and :cve_nist:`2025-0167`
13- elfutils: Fix :cve_nist:`2025-1371`
14- ffmpeg: Fix :cve_nist:`2024-7055`, :cve_nist:`2024-32230`, :cve_nist:`2024-35366`,
15 :cve_nist:`2024-36613`, :cve_nist:`2024-36616`, :cve_nist:`2024-36617` and :cve_nist:`2024-36619`
16- git: Fix :cve_nist:`2024-50349` and :cve_nist:`2024-52006`
17- glib-2.0: fix :cve_nist:`2025-3360` and :cve_nist:`2025-4373`
18- iputils: Fix :cve_nist:`2025-47268`
19- libpam: Fix :cve_nist:`2024-10041`
20- libsoup-2.4: Fix :cve_nist:`2024-52530`, :cve_nist:`2024-52531`, :cve_nist:`2024-52532`,
21 :cve_nist:`2025-32906`, :cve_nist:`2025-32909`, :cve_nist:`2025-32910`, :cve_nist:`2025-32911`,
22 :cve_nist:`2025-32912`, :cve_nist:`2025-32913`, :cve_nist:`2025-32914` and :cve_nist:`2025-46420`
23- libsoup: Fix :cve_nist:`2025-4476`, :cve_nist:`2025-32906`, :cve_nist:`2025-32909`,
24 :cve_nist:`2025-32910`, :cve_nist:`2025-32911`, :cve_nist:`2025-32912`, :cve_nist:`2025-32913`,
25 :cve_nist:`2025-32914` and :cve_nist:`2025-46420`
26- libxml2: Fix :cve_nist:`2025-32414` and :cve_nist:`2025-32415`
27- openssh: Fix :cve_nist:`2025-32728`
28- perl: Fix :cve_nist:`2024-56406`
29- ppp: Fix :cve_nist:`2024-58250`
30- python3-jinja2: Fix :cve_nist:`2024-56201`, :cve_nist:`2024-56326` and :cve_nist:`2025-27516`
31- ruby: Fix :cve_nist:`2025-27221`
32- sqlite3: Fix :cve_nist:`2025-3277`, :cve_nist:`2025-29087` and :cve_nist:`2025-29088`
33
34
35Fixes in Yocto-5.0.10
36~~~~~~~~~~~~~~~~~~~~~
37
38- binutils: stable 2.42 branch updates
39- bluez5: add missing tools to noinst-tools package
40- bluez5: backport a patch to fix btmgmt -i
41- bluez5: make media control a :term:`PACKAGECONFIG` option
42- build-appliance-image: Update to scarthgap head revision
43- buildtools-tarball: Make buildtools respects host CA certificates
44- buildtools-tarball: add envvars into :term:`BB_ENV_PASSTHROUGH_ADDITIONS`
45- buildtools-tarball: move setting of envvars to respective envfile
46- contributor-guide/submit-changes: encourage patch version changelogs
47- cve-check.bbclass: Fix symlink handling also for text files
48- cve-update-nvd2-native: Revert "cve-update-nvd2-native: Tweak to work better with NFS DL_DIR"
49- dev-manual/sbom.rst: fix wrong build outputs
50- docs: Fix dead links that use the :term:`DISTRO` macro
51- docs: conf.py: tweak SearchEnglish to be hyphen-friendly
52- docs:conf.py: define a manpage url
53- ffmpeg: upgrade to 6.1.2
54- git: upgrade to 2.44.3
55- glibc-y2038-tests: remove glibc-y2038-tests_2.39.bb recipe
56- glibc: Add single-threaded fast path to rand()
57- glibc: stable 2.39 branch updates
58- initscripts: add function log_success_msg/log_failure_msg/log_warning_msg
59- libatomic-ops: Update :term:`GITHUB_BASE_URI`
60- manuals: remove repeated word
61- migration-guides: add release notes for 4.0.26, 5.0.8, 5.0.9
62- module.bbclass: add KBUILD_EXTRA_SYMBOLS to install
63- perl: upgrade to 5.38.4
64- perlcross: upgrade to 1.6.2
65- poky.conf: bump version for 5.0.10
66- poky.yaml: introduce DISTRO_LATEST_TAG
67- python3-jinja2: upgrade to 3.1.6
68- ref-manual/release-process: update releases.svg
69- ref-manual/variables.rst: HOST_CC_ARCH: fix wrong SDK reference
70- ref-manual/variables.rst: WATCHDOG_TIMEOUT: fix recipe name
71- ref-manual/variables.rst: add manpage links for toolchain variables
72- ref-manual/variables.rst: add missing documentation for BUILD_* variables
73- ref-manual/variables.rst: document HOST_*_ARCH variables
74- ref-manual/variables.rst: document :term:`INHIBIT_DEFAULT_RUST_DEPS`
75- ref-manual/variables.rst: document :term:`INHIBIT_UPDATERCD_BBCLASS`
76- ref-manual/variables.rst: document :term:`SSTATE_SKIP_CREATION`
77- ref-manual/variables.rst: document :term:`WIC_CREATE_EXTRA_ARGS`
78- ref-manual/variables.rst: document autotools class related variables
79- ref-manual/variables.rst: document missing SDK_*_ARCH variables
80- ref-manual/variables.rst: document the :term:`IMAGE_ROOTFS_MAXSIZE` variable
81- ref-manual/variables.rst: document the :term:`INITRAMFS_MAXSIZE` variable
82- ref-manual/variables.rst: improve the :term:`PKGV` documentation
83- ref-manual/variables.rst: update :term:`ROOT_HOME` documentation
84- ref-manual: kernel-fitimage.bbclass does not use :term:`SPL_SIGN_KEYNAME`
85- scripts/install-buildtools: Update to 5.0.9
86- sphinx-lint: missing space after literal
87- sphinx-lint: trailing whitespace
88- sphinx-lint: unbalanced inline literal markup
89- systemd: Password agents shouldn't be optional
90- systemd: upgrade to 255.18
91- test-manual/intro: remove Buildbot version used
92- tzdata/tzcode-native: upgrade 2025a -> 2025b
93- u-boot: ensure keys are generated before assembling U-Boot FIT image
94- util-linux: Add fix to isolate test fstab entries using CUSTOM_FSTAB
95- wic: bootimg-efi: Support + symbol in filenames
96
97
98Known Issues in Yocto-5.0.10
99~~~~~~~~~~~~~~~~~~~~~~~~~~~~
100
101- There is an issue where the target libsoup-2.4 build may fail if apachectl is present on the build
102 host. The issue only affects test binaries which aren't actually used. The issue can be fixed by
103 disabling the tests or updating to more recent changes on the scarthgap branch which fix this.
104
105
106Contributors to Yocto-5.0.10
107~~~~~~~~~~~~~~~~~~~~~~~~~~~~
108
109Thanks to the following people who contributed to this release:
110
111- Adrian Freihofer
112- Aleksandar Nikolic
113- Alexander Kanavin
114- Alon Bar-Lev
115- Alper Ak
116- Andrew Kreimer
117- Antonin Godard
118- Archana Polampalli
119- Ashish Sharma
120- Changqing Li
121- Christos Gavros
122- Deepesh Varatharajan
123- Divya Chellam
124- Divyanshu Rathore
125- Enrico Jörns
126- Etienne Cordonnier
127- Guðni Már Gilbert
128- Haixiao Yan
129- Harish Sadineni
130- Igor Opaniuk
131- Jeroen Hofstee
132- Lee Chee Yang
133- Nguyen Dat Tho
134- Niko Mauno
135- Peter Marko
136- Praveen Kumar
137- Priyal Doshi
138- Rogerio Guerra Borin
139- Shubham Kulkarni
140- Soumya Sambu
141- Steve Sakoman
142- Sunil Dora
143- Trevor Woerner
144- Vijay Anusuri
145- Virendra Thakur
146- Vyacheslav Yurkov
147- Yi Zhao
148- Yogita Urade
149- rajmohan r
150
151Repositories / Downloads for Yocto-5.0.10
152~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
153
154poky
155
156- Repository Location: :yocto_git:`/poky`
157- Branch: :yocto_git:`scarthgap </poky/log/?h=scarthgap>`
158- Tag: :yocto_git:`yocto-5.0.10 </poky/log/?h=yocto-5.0.10>`
159- Git Revision: :yocto_git:`ac257900c33754957b2696529682029d997a8f28 </poky/commit/?id=ac257900c33754957b2696529682029d997a8f28>`
160- Release Artefact: poky-ac257900c33754957b2696529682029d997a8f28
161- sha: ddca7e54b331e78214bea65b346320d4fbcddf4b51103bfbbd9fc3960f32cdc7
162- Download Locations:
163 https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.10/poky-ac257900c33754957b2696529682029d997a8f28.tar.bz2
164 https://mirrors.kernel.org/yocto/yocto/yocto-5.0.10/poky-ac257900c33754957b2696529682029d997a8f28.tar.bz2
165
166openembedded-core
167
168- Repository Location: :oe_git:`/openembedded-core`
169- Branch: :oe_git:`scarthgap </openembedded-core/log/?h=scarthgap>`
170- Tag: :oe_git:`yocto-5.0.10 </openembedded-core/log/?h=yocto-5.0.10>`
171- Git Revision: :oe_git:`d5342ffc570d47a723b18297d75bd2f63c2088db </openembedded-core/commit/?id=d5342ffc570d47a723b18297d75bd2f63c2088db>`
172- Release Artefact: oecore-d5342ffc570d47a723b18297d75bd2f63c2088db
173- sha: daa62094f2327f4b3fbcc485e8964d1b86a4722f58fb37e0d8e8e9885094a262
174- Download Locations:
175 https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.10/oecore-d5342ffc570d47a723b18297d75bd2f63c2088db.tar.bz2
176 https://mirrors.kernel.org/yocto/yocto/yocto-5.0.10/oecore-d5342ffc570d47a723b18297d75bd2f63c2088db.tar.bz2
177
178meta-mingw
179
180- Repository Location: :yocto_git:`/meta-mingw`
181- Branch: :yocto_git:`scarthgap </meta-mingw/log/?h=scarthgap>`
182- Tag: :yocto_git:`yocto-5.0.10 </meta-mingw/log/?h=yocto-5.0.10>`
183- Git Revision: :yocto_git:`bd9fef71ec005be3c3a6d7f8b99d8116daf70c4f </meta-mingw/commit/?id=bd9fef71ec005be3c3a6d7f8b99d8116daf70c4f>`
184- Release Artefact: meta-mingw-bd9fef71ec005be3c3a6d7f8b99d8116daf70c4f
185- sha: ab073def6487f237ac125d239b3739bf02415270959546b6b287778664f0ae65
186- Download Locations:
187 https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.10/meta-mingw-bd9fef71ec005be3c3a6d7f8b99d8116daf70c4f.tar.bz2
188 https://mirrors.kernel.org/yocto/yocto/yocto-5.0.10/meta-mingw-bd9fef71ec005be3c3a6d7f8b99d8116daf70c4f.tar.bz2
189
190bitbake
191
192- Repository Location: :oe_git:`/bitbake`
193- Branch: :oe_git:`2.8 </bitbake/log/?h=2.8>`
194- Tag: :oe_git:`yocto-5.0.10 </bitbake/log/?h=yocto-5.0.10>`
195- Git Revision: :oe_git:`696c2c1ef095f8b11c7d2eff36fae50f58c62e5e </bitbake/commit/?id=696c2c1ef095f8b11c7d2eff36fae50f58c62e5e>`
196- Release Artefact: bitbake-696c2c1ef095f8b11c7d2eff36fae50f58c62e5e
197- sha: fc83f879cd6dd14b9b7eba0161fec23ecc191fed0fb00556ba729dceef6c145f
198- Download Locations:
199 https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.10/bitbake-696c2c1ef095f8b11c7d2eff36fae50f58c62e5e.tar.bz2
200 https://mirrors.kernel.org/yocto/yocto/yocto-5.0.10/bitbake-696c2c1ef095f8b11c7d2eff36fae50f58c62e5e.tar.bz2
201
202yocto-docs
203
204- Repository Location: :yocto_git:`/yocto-docs`
205- Branch: :yocto_git:`scarthgap </yocto-docs/log/?h=scarthgap>`
206- Tag: :yocto_git:`yocto-5.0.10 </yocto-docs/log/?h=yocto-5.0.10>`
207- Git Revision: :yocto_git:`3996388e337377bedc113d072a51fe9d68dd40c6 </yocto-docs/commit/?id=3996388e337377bedc113d072a51fe9d68dd40c6>`
208
diff --git a/documentation/migration-guides/release-notes-5.0.9.rst b/documentation/migration-guides/release-notes-5.0.9.rst
new file mode 100644
index 0000000000..81b853cf31
--- /dev/null
+++ b/documentation/migration-guides/release-notes-5.0.9.rst
@@ -0,0 +1,206 @@
1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
2
3Release notes for Yocto-5.0.9 (Scarthgap)
4-----------------------------------------
5
6Security Fixes in Yocto-5.0.9
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8
9- binutils: Fix :cve_nist:`2024-57360`, :cve_nist:`2025-1176`, :cve_nist:`2025-1178` and
10 :cve_nist:`2025-1181`
11- expat: Fix :cve_nist:`2024-8176`
12- freetype: Fix :cve_nist:`2025-27363`
13- ghostscript: Fix :cve_nist:`2025-27830`, :cve_nist:`2025-27831`, :cve_nist:`2025-27832`,
14 :cve_nist:`2025-27833`, :cve_nist:`2025-27833`, :cve_nist:`2025-27834`, :cve_nist:`2025-27835`
15 and :cve_nist:`2025-27836`
16- go: fix :cve_nist:`2025-22870` and :cve_nist:`2025-22871`
17- grub: Fix :cve_nist:`2024-45781`, :cve_nist:`2024-45774`, :cve_nist:`2024-45775`,
18 :cve_nist:`2024-45776`, :cve_nist:`2024-45777`, :cve_nist:`2024-45778`, :cve_nist:`2024-45779`,
19 :cve_nist:`2024-45780`, :cve_nist:`2024-45782`, :cve_nist:`2024-45783`, :cve_nist:`2024-56737`,
20 :cve_nist:`2025-0622`, :cve_nist:`2025-0624`, :cve_nist:`2025-0677`, :cve_nist:`2025-0678`,
21 :cve_nist:`2025-0684`, :cve_nist:`2025-0685`, :cve_nist:`2025-0686`, :cve_nist:`2025-0689`,
22 :cve_nist:`2025-0690`, :cve_nist:`2025-1118` and :cve_nist:`2025-1125`
23- libarchive: Fix :cve_nist:`2024-20696`, :cve_nist:`2024-48957`, :cve_nist:`2024-48958`,
24 :cve_nist:`2025-1632` and :cve_nist:`2025-25724`
25- libxslt: Fix :cve_nist:`2024-24855` and :cve_nist:`2024-55549`
26- linux-yocto/6.6: Fix :cve_nist:`2024-54458`, :cve_nist:`2024-57834`, :cve_nist:`2024-57973`,
27 :cve_nist:`2024-57978`, :cve_nist:`2024-57979`, :cve_nist:`2024-57980`, :cve_nist:`2024-57981`,
28 :cve_nist:`2024-57984`, :cve_nist:`2024-57996`, :cve_nist:`2024-57997`, :cve_nist:`2024-58002`,
29 :cve_nist:`2024-58005`, :cve_nist:`2024-58007`, :cve_nist:`2024-58010`, :cve_nist:`2024-58011`,
30 :cve_nist:`2024-58013`, :cve_nist:`2024-58017`, :cve_nist:`2024-58020`, :cve_nist:`2024-58034`,
31 :cve_nist:`2024-58052`, :cve_nist:`2024-58055`, :cve_nist:`2024-58058`, :cve_nist:`2024-58063`,
32 :cve_nist:`2024-58068`, :cve_nist:`2024-58069`, :cve_nist:`2024-58070`, :cve_nist:`2024-58071`,
33 :cve_nist:`2024-58076`, :cve_nist:`2024-58080`, :cve_nist:`2024-58083`, :cve_nist:`2024-58088`,
34 :cve_nist:`2025-21700`, :cve_nist:`2025-21703`, :cve_nist:`2025-21707`, :cve_nist:`2025-21711`,
35 :cve_nist:`2025-21715`, :cve_nist:`2025-21716`, :cve_nist:`2025-21718`, :cve_nist:`2025-21726`,
36 :cve_nist:`2025-21727`, :cve_nist:`2025-21731`, :cve_nist:`2025-21735`, :cve_nist:`2025-21736`,
37 :cve_nist:`2025-21741`, :cve_nist:`2025-21742`, :cve_nist:`2025-21743`, :cve_nist:`2025-21744`,
38 :cve_nist:`2025-21745`, :cve_nist:`2025-21748`, :cve_nist:`2025-21749`, :cve_nist:`2025-21753`,
39 :cve_nist:`2025-21756`, :cve_nist:`2025-21759`, :cve_nist:`2025-21760`, :cve_nist:`2025-21761`,
40 :cve_nist:`2025-21762`, :cve_nist:`2025-21763`, :cve_nist:`2025-21764`, :cve_nist:`2025-21773`,
41 :cve_nist:`2025-21775`, :cve_nist:`2025-21776`, :cve_nist:`2025-21779`, :cve_nist:`2025-21780`,
42 :cve_nist:`2025-21782`, :cve_nist:`2025-21783`, :cve_nist:`2025-21785`, :cve_nist:`2025-21787`,
43 :cve_nist:`2025-21789`, :cve_nist:`2025-21790`, :cve_nist:`2025-21791`, :cve_nist:`2025-21792`,
44 :cve_nist:`2025-21793`, :cve_nist:`2025-21796`, :cve_nist:`2025-21811`, :cve_nist:`2025-21812`,
45 :cve_nist:`2025-21814`, :cve_nist:`2025-21820`, :cve_nist:`2025-21844`, :cve_nist:`2025-21846`,
46 :cve_nist:`2025-21847`, :cve_nist:`2025-21848`, :cve_nist:`2025-21853`, :cve_nist:`2025-21854`,
47 :cve_nist:`2025-21855`, :cve_nist:`2025-21856`, :cve_nist:`2025-21857`, :cve_nist:`2025-21858`,
48 :cve_nist:`2025-21859`, :cve_nist:`2025-21862`, :cve_nist:`2025-21863`, :cve_nist:`2025-21864`,
49 :cve_nist:`2025-21865`, :cve_nist:`2025-21866`, :cve_nist:`2025-21867`, :cve_nist:`2025-21887`,
50 :cve_nist:`2025-21891`, :cve_nist:`2025-21898`, :cve_nist:`2025-21904`, :cve_nist:`2025-21905`,
51 :cve_nist:`2025-21908`, :cve_nist:`2025-21912`, :cve_nist:`2025-21915`, :cve_nist:`2025-21917`,
52 :cve_nist:`2025-21918`, :cve_nist:`2025-21919`, :cve_nist:`2025-21920`, :cve_nist:`2025-21922`,
53 :cve_nist:`2025-21928`, :cve_nist:`2025-21934`, :cve_nist:`2025-21936`, :cve_nist:`2025-21937`,
54 :cve_nist:`2025-21941`, :cve_nist:`2025-21943`, :cve_nist:`2025-21945`, :cve_nist:`2025-21947`,
55 :cve_nist:`2025-21948`, :cve_nist:`2025-21951`, :cve_nist:`2025-21957`, :cve_nist:`2025-21959`,
56 :cve_nist:`2025-21962`, :cve_nist:`2025-21963`, :cve_nist:`2025-21964`, :cve_nist:`2025-21966`,
57 :cve_nist:`2025-21967`, :cve_nist:`2025-21968`, :cve_nist:`2025-21969`, :cve_nist:`2025-21979`,
58 :cve_nist:`2025-21980`, :cve_nist:`2025-21981`, :cve_nist:`2025-21991` and :cve_nist:`2025-21993`
59- mpg123: Fix :cve_nist:`2024-10573`
60- ofono: Fix :cve_nist:`2024-7537`
61- openssh: Fix :cve_nist:`2025-26465`
62- puzzles: Ignore :cve_nist:`2024-13769`, :cve_nist:`2024-13770` and :cve_nist:`2025-0837`
63- qemu: Ignore :cve_nist:`2023-1386`
64- ruby: Fix :cve_nist:`2025-27219` and :cve_nist:`2025-27220`
65- rust-cross-canadian: Ignore :cve_nist:`2024-43402`
66- vim: Fix :cve_nist:`2025-1215`, :cve_nist:`2025-26603`, :cve_nist:`2025-27423` and
67 :cve_nist:`2025-29768`
68- xserver-xorg: Fix :cve_nist:`2025-26594`, :cve_nist:`2025-26595`, :cve_nist:`2025-26596`,
69 :cve_nist:`2025-26597`, :cve_nist:`2025-26598`, :cve_nist:`2025-26599`, :cve_nist:`2025-26600`
70 and :cve_nist:`2025-26601`
71- xz: Fix :cve_nist:`2025-31115`
72
73
74Fixes in Yocto-5.0.9
75~~~~~~~~~~~~~~~~~~~~
76
77- babeltrace2: extend to nativesdk
78- babeltrace: extend to nativesdk
79- bitbake: event/utils: Avoid deadlock from lock_timeout() and recursive events
80- bitbake: utils: Add signal blocking for lock_timeout
81- bitbake: utils: Print information about lock issue before exiting
82- bitbake: utils: Tweak lock_timeout logic
83- build-appliance-image: Update to scarthgap head revision
84- cve-check.bbclass: Mitigate symlink related error
85- cve-update-nvd2-native: add workaround for json5 style list
86- cve-update-nvd2-native: handle missing vulnStatus
87- gcc: remove paths to sysroot from configargs.h and checksum-options for gcc-cross-canadian
88- gcc: unify cleanup of include-fixed, apply to cross-canadian
89- ghostscript: upgrade to 10.05.0
90- grub: backport strlcpy function
91- grub: drop obsolete CVE statuses
92- icu: Adjust ICU_DATA_DIR path on big endian targets
93- kernel-arch: add macro-prefix-map in KERNEL_CC
94- libarchive: upgrade to 3.7.9
95- libxslt: upgrade to 1.1.43
96- linux-yocto/6.6: update to v6.6.84
97- mc: set ac_cv_path_ZIP to avoid buildpaths QA issues
98- mpg123: upgrade to 1.32.10
99- nativesdk-libtool: sanitize the script, remove buildpaths
100- openssl: rewrite ptest installation
101- overview-manual/concepts: remove :term:`PR` from the build dir list
102- patch.py: set commituser and commitemail for addNote
103- poky.conf: bump version for 5.0.9
104- vim: Upgrade to 9.1.1198
105- xserver-xf86-config: add a configuration fragment to disable screen blanking
106- xserver-xf86-config: remove obsolete configuration files
107- xserver-xorg: upgrade to 21.1.16
108- xz: upgrade to 5.4.7
109- yocto-uninative: Update to 4.7 for glibc 2.41
110
111
112Known Issues in Yocto-5.0.9
113~~~~~~~~~~~~~~~~~~~~~~~~~~~
114
115- N/A
116
117Contributors to Yocto-5.0.9
118~~~~~~~~~~~~~~~~~~~~~~~~~~~
119
120Thanks to the following people who contributed to this release:
121
122- Antonin Godard
123- Archana Polampalli
124- Ashish Sharma
125- Bruce Ashfield
126- Changqing Li
127- Denys Dmytriyenko
128- Divya Chellam
129- Hitendra Prajapati
130- Madhu Marri
131- Makarios Christakis
132- Martin Jansa
133- Michael Halstead
134- Niko Mauno
135- Oleksandr Hnatiuk
136- Peter Marko
137- Richard Purdie
138- Ross Burton
139- Sana Kazi
140- Stefan Mueller-Klieser
141- Steve Sakoman
142- Vijay Anusuri
143- Virendra Thakur
144- Vishwas Udupa
145- Wang Mingyu
146- Zhang Peng
147
148
149Repositories / Downloads for Yocto-5.0.9
150~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
151
152poky
153
154- Repository Location: :yocto_git:`/poky`
155- Branch: :yocto_git:`scarthgap </poky/log/?h=scarthgap>`
156- Tag: :yocto_git:`yocto-5.0.9 </poky/log/?h=yocto-5.0.9>`
157- Git Revision: :yocto_git:`bab0f9f62af9af580744948dd3240f648a99879a </poky/commit/?id=bab0f9f62af9af580744948dd3240f648a99879a>`
158- Release Artefact: poky-bab0f9f62af9af580744948dd3240f648a99879a
159- sha: ee6811d9fb6c4913e19d6e3569f1edc8ccd793779b237520596506446a6b4531
160- Download Locations:
161 https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.9/poky-bab0f9f62af9af580744948dd3240f648a99879a.tar.bz2
162 https://mirrors.kernel.org/yocto/yocto/yocto-5.0.9/poky-bab0f9f62af9af580744948dd3240f648a99879a.tar.bz2
163
164openembedded-core
165
166- Repository Location: :oe_git:`/openembedded-core`
167- Branch: :oe_git:`scarthgap </openembedded-core/log/?h=scarthgap>`
168- Tag: :oe_git:`yocto-5.0.9 </openembedded-core/log/?h=yocto-5.0.9>`
169- Git Revision: :oe_git:`04038ecd1edd6592b826665a2b787387bb7074fa </openembedded-core/commit/?id=04038ecd1edd6592b826665a2b787387bb7074fa>`
170- Release Artefact: oecore-04038ecd1edd6592b826665a2b787387bb7074fa
171- sha: 6e201a4b486dfbdfcb7e96d83b962a205ec4764db6ad0e34bd623db18910eddb
172- Download Locations:
173 https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.9/oecore-04038ecd1edd6592b826665a2b787387bb7074fa.tar.bz2
174 https://mirrors.kernel.org/yocto/yocto/yocto-5.0.9/oecore-04038ecd1edd6592b826665a2b787387bb7074fa.tar.bz2
175
176meta-mingw
177
178- Repository Location: :yocto_git:`/meta-mingw`
179- Branch: :yocto_git:`scarthgap </meta-mingw/log/?h=scarthgap>`
180- Tag: :yocto_git:`yocto-5.0.9 </meta-mingw/log/?h=yocto-5.0.9>`
181- Git Revision: :yocto_git:`bd9fef71ec005be3c3a6d7f8b99d8116daf70c4f </meta-mingw/commit/?id=bd9fef71ec005be3c3a6d7f8b99d8116daf70c4f>`
182- Release Artefact: meta-mingw-bd9fef71ec005be3c3a6d7f8b99d8116daf70c4f
183- sha: ab073def6487f237ac125d239b3739bf02415270959546b6b287778664f0ae65
184- Download Locations:
185 https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.9/meta-mingw-bd9fef71ec005be3c3a6d7f8b99d8116daf70c4f.tar.bz2
186 https://mirrors.kernel.org/yocto/yocto/yocto-5.0.9/meta-mingw-bd9fef71ec005be3c3a6d7f8b99d8116daf70c4f.tar.bz2
187
188bitbake
189
190- Repository Location: :oe_git:`/bitbake`
191- Branch: :oe_git:`2.8 </bitbake/log/?h=2.8>`
192- Tag: :oe_git:`yocto-5.0.9 </bitbake/log/?h=yocto-5.0.9>`
193- Git Revision: :oe_git:`696c2c1ef095f8b11c7d2eff36fae50f58c62e5e </bitbake/commit/?id=696c2c1ef095f8b11c7d2eff36fae50f58c62e5e>`
194- Release Artefact: bitbake-696c2c1ef095f8b11c7d2eff36fae50f58c62e5e
195- sha: fc83f879cd6dd14b9b7eba0161fec23ecc191fed0fb00556ba729dceef6c145f
196- Download Locations:
197 https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.9/bitbake-696c2c1ef095f8b11c7d2eff36fae50f58c62e5e.tar.bz2
198 https://mirrors.kernel.org/yocto/yocto/yocto-5.0.9/bitbake-696c2c1ef095f8b11c7d2eff36fae50f58c62e5e.tar.bz2
199
200yocto-docs
201
202- Repository Location: :yocto_git:`/yocto-docs`
203- Branch: :yocto_git:`scarthgap </yocto-docs/log/?h=scarthgap>`
204- Tag: :yocto_git:`yocto-5.0.9 </yocto-docs/log/?h=yocto-5.0.9>`
205- Git Revision: :yocto_git:`56db4fd81f6235428bef9e46a61c11ca0ba89733 </yocto-docs/commit/?id=56db4fd81f6235428bef9e46a61c11ca0ba89733>`
206
diff --git a/documentation/overview-manual/concepts.rst b/documentation/overview-manual/concepts.rst
index 062ac4ab76..56dd3b3b55 100644
--- a/documentation/overview-manual/concepts.rst
+++ b/documentation/overview-manual/concepts.rst
@@ -98,7 +98,7 @@ files, and how to package the compiled output.
98 98
99The term "package" is sometimes used to refer to recipes. However, since 99The term "package" is sometimes used to refer to recipes. However, since
100the word "package" is used for the packaged output from the OpenEmbedded 100the word "package" is used for the packaged output from the OpenEmbedded
101build system (i.e. ``.ipk`` or ``.deb`` files), this document avoids 101build system (i.e. ``.ipk``, ``.deb`` or ``.rpm`` files), this document avoids
102using the term "package" when referring to recipes. 102using the term "package" when referring to recipes.
103 103
104Classes 104Classes
@@ -256,7 +256,7 @@ development environment.
256.. note:: 256.. note::
257 257
258 The 258 The
259 scripts/oe-setup-builddir 259 ``scripts/oe-setup-builddir``
260 script uses the 260 script uses the
261 ``$TEMPLATECONF`` 261 ``$TEMPLATECONF``
262 variable to determine which sample configuration files to locate. 262 variable to determine which sample configuration files to locate.
@@ -352,7 +352,7 @@ layers the build system uses to further control the build. These layers
352provide Metadata for the software, machine, and policies. 352provide Metadata for the software, machine, and policies.
353 353
354In general, there are three types of layer input. You can see them below 354In general, there are three types of layer input. You can see them below
355the "User Configuration" box in the `general workflow 355the "User Configuration" box in the :ref:`general workflow
356figure <overview-manual/concepts:openembedded build system concepts>`: 356figure <overview-manual/concepts:openembedded build system concepts>`:
357 357
358- *Metadata (.bb + Patches):* Software layers containing 358- *Metadata (.bb + Patches):* Software layers containing
@@ -420,14 +420,14 @@ build.
420Distro Layer 420Distro Layer
421~~~~~~~~~~~~ 421~~~~~~~~~~~~
422 422
423The distribution layer provides policy configurations for your 423A distribution layer provides policy configurations for your
424distribution. Best practices dictate that you isolate these types of 424distribution. Best practices dictate that you isolate these types of
425configurations into their own layer. Settings you provide in 425configurations into their own layer. Settings you provide in
426``conf/distro/distro.conf`` override similar settings that BitBake finds 426``conf/distro/distro.conf`` override similar settings that BitBake finds
427in your ``conf/local.conf`` file in the :term:`Build Directory`. 427in your ``conf/local.conf`` file in the :term:`Build Directory`.
428 428
429The following list provides some explanation and references for what you 429The following list provides some explanation and references for what you
430typically find in the distribution layer: 430typically find in a distribution layer:
431 431
432- *classes:* Class files (``.bbclass``) hold common functionality that 432- *classes:* Class files (``.bbclass``) hold common functionality that
433 can be shared among recipes in the distribution. When your recipes 433 can be shared among recipes in the distribution. When your recipes
@@ -454,7 +454,7 @@ typically find in the distribution layer:
454BSP Layer 454BSP Layer
455~~~~~~~~~ 455~~~~~~~~~
456 456
457The BSP Layer provides machine configurations that target specific 457A BSP layer provides machine configurations that target specific
458hardware. Everything in this layer is specific to the machine for which 458hardware. Everything in this layer is specific to the machine for which
459you are building the image or the SDK. A common structure or form is 459you are building the image or the SDK. A common structure or form is
460defined for BSP layers. You can learn more about this structure in the 460defined for BSP layers. You can learn more about this structure in the
@@ -465,7 +465,7 @@ defined for BSP layers. You can learn more about this structure in the
465 In order for a BSP layer to be considered compliant with the Yocto 465 In order for a BSP layer to be considered compliant with the Yocto
466 Project, it must meet some structural requirements. 466 Project, it must meet some structural requirements.
467 467
468The BSP Layer's configuration directory contains configuration files for 468A BSP layer's configuration directory contains configuration files for
469the machine (``conf/machine/machine.conf``) and, of course, the layer 469the machine (``conf/machine/machine.conf``) and, of course, the layer
470(``conf/layer.conf``). 470(``conf/layer.conf``).
471 471
@@ -477,18 +477,18 @@ formfactors, graphics support systems, and so forth.
477.. note:: 477.. note::
478 478
479 While the figure shows several 479 While the figure shows several
480 recipes-\* 480 ``recipes-*``
481 directories, not all these directories appear in all BSP layers. 481 directories, not all these directories appear in all BSP layers.
482 482
483Software Layer 483Software Layer
484~~~~~~~~~~~~~~ 484~~~~~~~~~~~~~~
485 485
486The software layer provides the Metadata for additional software 486A software layer provides the Metadata for additional software
487packages used during the build. This layer does not include Metadata 487packages used during the build. This layer does not include Metadata
488that is specific to the distribution or the machine, which are found in 488that is specific to the distribution or the machine, which are found in
489their respective layers. 489their respective layers.
490 490
491This layer contains any recipes, append files, and patches, that your 491This layer contains any recipes, append files, and patches that your
492project needs. 492project needs.
493 493
494Sources 494Sources
@@ -560,9 +560,8 @@ source tree used by the group).
560 560
561The canonical method through which to include a local project is to use the 561The canonical method through which to include a local project is to use the
562:ref:`ref-classes-externalsrc` class to include that local project. You use 562:ref:`ref-classes-externalsrc` class to include that local project. You use
563either the ``local.conf`` or a recipe's append file to override or set the 563either ``local.conf`` or a recipe's append file to override or set the
564recipe to point to the local directory on your disk to pull in the whole 564recipe to point to the local directory from which to fetch the source.
565source tree.
566 565
567Source Control Managers (Optional) 566Source Control Managers (Optional)
568~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 567~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -953,7 +952,7 @@ package.
953 952
954 For more information on the ``oe-pkgdata-util`` utility, see the section 953 For more information on the ``oe-pkgdata-util`` utility, see the section
955 :ref:`dev-manual/debugging:Viewing Package Information with 954 :ref:`dev-manual/debugging:Viewing Package Information with
956 \`\`oe-pkgdata-util\`\`` of the Yocto Project Development Tasks Manual. 955 ``oe-pkgdata-util``` of the Yocto Project Development Tasks Manual.
957 956
958To add a custom package variant of the ``${PN}`` recipe named 957To add a custom package variant of the ``${PN}`` recipe named
959``${PN}-extra`` (name is arbitrary), one can add it to the 958``${PN}-extra`` (name is arbitrary), one can add it to the
diff --git a/documentation/ref-manual/classes.rst b/documentation/ref-manual/classes.rst
index 45973befbe..1d76b36d45 100644
--- a/documentation/ref-manual/classes.rst
+++ b/documentation/ref-manual/classes.rst
@@ -1993,7 +1993,8 @@ a couple different ways:
1993 Not using this naming convention can lead to subtle problems 1993 Not using this naming convention can lead to subtle problems
1994 caused by existing code that depends on that naming convention. 1994 caused by existing code that depends on that naming convention.
1995 1995
1996- Create or modify a target recipe that contains the following:: 1996- Or, create a :ref:`ref-classes-native` variant of any target recipe (e.g.
1997 ``myrecipe.bb``) by adding the following to the recipe::
1997 1998
1998 BBCLASSEXTEND = "native" 1999 BBCLASSEXTEND = "native"
1999 2000
@@ -2024,24 +2025,25 @@ couple different ways:
2024 inherit statement in the recipe after all other inherit statements so 2025 inherit statement in the recipe after all other inherit statements so
2025 that the :ref:`ref-classes-nativesdk` class is inherited last. 2026 that the :ref:`ref-classes-nativesdk` class is inherited last.
2026 2027
2027- Create a :ref:`ref-classes-nativesdk` variant of any recipe by adding the following:: 2028 .. note::
2028 2029
2029 BBCLASSEXTEND = "nativesdk" 2030 When creating a recipe, you must follow this naming convention::
2030 2031
2031 Inside the 2032 nativesdk-myrecipe.bb
2032 recipe, use ``:class-nativesdk`` and ``:class-target`` overrides to
2033 specify any functionality specific to the respective SDK machine or
2034 target case.
2035 2033
2036.. note::
2037 2034
2038 When creating a recipe, you must follow this naming convention:: 2035 Not doing so can lead to subtle problems because there is code that
2036 depends on the naming convention.
2039 2037
2040 nativesdk-myrecipe.bb 2038- Or, create a :ref:`ref-classes-nativesdk` variant of any target recipe (e.g.
2039 ``myrecipe.bb``) by adding the following to the recipe::
2041 2040
2041 BBCLASSEXTEND = "nativesdk"
2042 2042
2043 Not doing so can lead to subtle problems because there is code that 2043 Inside the
2044 depends on the naming convention. 2044 recipe, use ``:class-nativesdk`` and ``:class-target`` overrides to
2045 specify any functionality specific to the respective SDK machine or
2046 target case.
2045 2047
2046Although applied differently, the :ref:`ref-classes-nativesdk` class is used with both 2048Although applied differently, the :ref:`ref-classes-nativesdk` class is used with both
2047methods. The advantage of the second method is that you do not need to 2049methods. The advantage of the second method is that you do not need to
diff --git a/documentation/ref-manual/devtool-reference.rst b/documentation/ref-manual/devtool-reference.rst
index a6ea00c210..2db2adde95 100644
--- a/documentation/ref-manual/devtool-reference.rst
+++ b/documentation/ref-manual/devtool-reference.rst
@@ -435,7 +435,7 @@ You can read more on the ``devtool upgrade`` workflow in the
435":ref:`sdk-manual/extensible:use \`\`devtool upgrade\`\` to create a version of the recipe that supports a newer version of the software`" 435":ref:`sdk-manual/extensible:use \`\`devtool upgrade\`\` to create a version of the recipe that supports a newer version of the software`"
436section in the Yocto Project Application Development and the Extensible 436section in the Yocto Project Application Development and the Extensible
437Software Development Kit (eSDK) manual. You can also see an example of 437Software Development Kit (eSDK) manual. You can also see an example of
438how to use ``devtool upgrade`` in the ":ref:`dev-manual/upgrading-recipes:using \`\`devtool upgrade\`\``" 438how to use ``devtool upgrade`` in the ":ref:`dev-manual/upgrading-recipes:using ``devtool upgrade```"
439section in the Yocto Project Development Tasks Manual. 439section in the Yocto Project Development Tasks Manual.
440 440
441.. _devtool-resetting-a-recipe: 441.. _devtool-resetting-a-recipe:
diff --git a/documentation/ref-manual/structure.rst b/documentation/ref-manual/structure.rst
index 616c3c4c9b..2190f5b90e 100644
--- a/documentation/ref-manual/structure.rst
+++ b/documentation/ref-manual/structure.rst
@@ -515,7 +515,7 @@ generated during the :ref:`ref-tasks-packagedata` task. The files stored in this
515directory contain information about each output package produced by the 515directory contain information about each output package produced by the
516OpenEmbedded build system, and are used in different ways by the build system 516OpenEmbedded build system, and are used in different ways by the build system
517such as ":ref:`dev-manual/debugging:viewing package information with 517such as ":ref:`dev-manual/debugging:viewing package information with
518\`\`oe-pkgdata-util\`\``". 518``oe-pkgdata-util```".
519 519
520.. _structure-build-tmp-sstate-control: 520.. _structure-build-tmp-sstate-control:
521 521
diff --git a/documentation/ref-manual/svg/releases.svg b/documentation/ref-manual/svg/releases.svg
index aad50cf593..3a379078b8 100644
--- a/documentation/ref-manual/svg/releases.svg
+++ b/documentation/ref-manual/svg/releases.svg
@@ -2,11 +2,11 @@
2<svg 2<svg
3 version="1.1" 3 version="1.1"
4 id="svg2" 4 id="svg2"
5 width="1523.001" 5 width="1992.7236"
6 height="504.30499" 6 height="613.35602"
7 viewBox="0 0 1523.001 504.30497" 7 viewBox="0 0 1992.7236 613.35599"
8 sodipodi:docname="releases.svg" 8 sodipodi:docname="releases.svg"
9 inkscape:version="1.3.2 (091e20ef0f, 2023-11-25, custom)" 9 inkscape:version="1.4.1 (93de688d07, 2025-03-30)"
10 inkscape:export-filename="../../../../../../../../tmp/releases.png" 10 inkscape:export-filename="../../../../../../../../tmp/releases.png"
11 inkscape:export-xdpi="96" 11 inkscape:export-xdpi="96"
12 inkscape:export-ydpi="96" 12 inkscape:export-ydpi="96"
@@ -70,7 +70,7 @@
70 scale_width="1" 70 scale_width="1"
71 end_linecap_type="zerowidth" 71 end_linecap_type="zerowidth"
72 not_jump="false" 72 not_jump="false"
73 message="&lt;b&gt;Ctrl + click&lt;/b&gt; on existing node and move it" /> 73 message="" />
74 <marker 74 <marker
75 style="overflow:visible" 75 style="overflow:visible"
76 id="marker5783" 76 id="marker5783"
@@ -412,9 +412,9 @@
412 inkscape:window-height="2069" 412 inkscape:window-height="2069"
413 id="namedview4" 413 id="namedview4"
414 showgrid="true" 414 showgrid="true"
415 inkscape:zoom="2.1971372" 415 inkscape:zoom="1.5536106"
416 inkscape:cx="1068.2082" 416 inkscape:cx="1158.2696"
417 inkscape:cy="287.87461" 417 inkscape:cy="273.55632"
418 inkscape:window-x="2256" 418 inkscape:window-x="2256"
419 inkscape:window-y="60" 419 inkscape:window-y="60"
420 inkscape:window-maximized="1" 420 inkscape:window-maximized="1"
@@ -433,8 +433,8 @@
433 <inkscape:grid 433 <inkscape:grid
434 type="xygrid" 434 type="xygrid"
435 id="grid1257" 435 id="grid1257"
436 originx="-289.99936" 436 originx="-289.06071"
437 originy="369.99997" 437 originy="478.43017"
438 spacingy="1" 438 spacingy="1"
439 spacingx="1" 439 spacingx="1"
440 units="px" 440 units="px"
@@ -444,66 +444,90 @@
444 inkscape:groupmode="layer" 444 inkscape:groupmode="layer"
445 inkscape:label="Image" 445 inkscape:label="Image"
446 id="g10" 446 id="g10"
447 transform="translate(-289.99936,370.00003)"> 447 transform="translate(-289.06072,478.43022)">
448 <rect
449 style="fill:#333333;fill-opacity:0;stroke:#000000;stroke-width:0.713896;stroke-linejoin:bevel;stroke-miterlimit:0;stroke-opacity:0"
450 id="rect1"
451 width="1992.0098"
452 height="612.64215"
453 x="289.41766"
454 y="-478.07327"
455 ry="24.97636" />
448 <path 456 <path
449 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.449183;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 457 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
450 d="m 563.40434,64.000628 v -415.635938 0 0" 458 d="m 563.40434,64.000628 v -524.414808 0 0"
451 id="path207708" /> 459 id="path207708" />
452 <path 460 <path
453 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.449183;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 461 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
454 d="m 683.40434,64.000628 v -415.635938 0 0" 462 d="m 683.40434,64.000628 v -524.414808 0 0"
455 id="path207708-4" /> 463 id="path207708-4" />
456 <path 464 <path
457 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.449183;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 465 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
458 d="m 803.40434,64.000628 v -415.635938 0 0" 466 d="m 803.40434,64.000628 v -524.414808 0 0"
459 id="path207708-4-3" /> 467 id="path207708-4-3" />
460 <path 468 <path
461 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.449183;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 469 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
462 d="m 923.40434,64.000588 v -415.635898 0 0" 470 d="m 923.40434,64.000577 v -524.414757 0 0"
463 id="path207708-4-3-6" /> 471 id="path207708-4-3-6" />
464 <path 472 <path
465 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.449183;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 473 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
466 d="m 1043.4043,64.000588 v -415.635898 0 0" 474 d="m 1043.4043,64.000577 v -524.414757 0 0"
467 id="path207708-4-3-6-2" /> 475 id="path207708-4-3-6-2" />
468 <path 476 <path
469 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.449183;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 477 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
470 d="m 1163.4043,64.000588 v -415.635898 0 0" 478 d="m 1163.4043,64.000577 v -524.414757 0 0"
471 id="path207708-4-3-6-2-8" /> 479 id="path207708-4-3-6-2-8" />
472 <path 480 <path
473 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.449183;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 481 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
474 d="m 1283.4043,64.000588 v -415.635898 0 0" 482 d="m 1283.4043,64.000577 v -524.414757 0 0"
475 id="path207708-4-3-6-2-8-4" /> 483 id="path207708-4-3-6-2-8-4" />
476 <path 484 <path
477 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.449183;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 485 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
478 d="m 1403.4043,64.000588 v -415.635898 0 0" 486 d="m 1403.4043,64.000577 v -524.414757 0 0"
479 id="path207708-4-3-6-2-8-4-3" /> 487 id="path207708-4-3-6-2-8-4-3" />
480 <path 488 <path
481 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.475347;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 489 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.475347;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
482 d="m 1523.4043,64.000568 v -415.757648 0 0" 490 d="m 1523.4043,64.000568 v -415.757648 0 0"
483 id="path207708-4-3-6-2-8-4-3-8" /> 491 id="path207708-4-3-6-2-8-4-3-8" />
484 <path 492 <path
485 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.449183;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 493 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
486 d="m 1523.4043,64.000588 v -415.635898 0 0" 494 d="m 1523.4043,64.000577 v -524.414757 0 0"
487 id="path207708-4-3-6-2-8-4-3-8-0" /> 495 id="path207708-4-3-6-2-8-4-3-8-0" />
488 <path 496 <path
489 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.449183;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 497 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
490 d="m 1643.3583,64.000578 v -415.635868 0 0" 498 d="m 1643.3583,64.000565 v -524.414715 0 0"
491 id="path207708-4-3-6-2-8-4-3-8-4" /> 499 id="path207708-4-3-6-2-8-4-3-8-4" />
492 <path 500 <path
493 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.449183;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 501 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
494 d="m 1763.4043,64.000578 v -415.635868 0 0" 502 d="m 1763.4043,64.000565 v -524.414715 0 0"
495 id="path207708-4-3-6-2-8-4-3-8-4-0" /> 503 id="path207708-4-3-6-2-8-4-3-8-4-0" />
496 <path 504 <path
497 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.449183;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 505 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
498 d="m 443.40434,64.000628 v -415.635938 0 0" 506 d="m 1883.7877,64.878769 v -524.414709 0 0"
507 id="path207708-4-3-6-2-8-4-3-8-4-0-8" />
508 <path
509 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
510 d="m 2002.9599,64.984489 v -524.414709 0 0"
511 id="path207708-4-3-6-2-8-4-3-8-4-0-8-8" />
512 <path
513 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
514 d="m 2123.2232,62.984489 v -524.414709 0 0"
515 id="path207708-4-3-6-2-8-4-3-8-4-0-8-8-1" />
516 <path
517 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
518 d="m 2243.313,63.984489 v -524.414709 0 0"
519 id="path207708-4-3-6-2-8-4-3-8-4-0-8-8-1-9" />
520 <path
521 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
522 d="m 443.40434,64.000628 v -524.414808 0 0"
499 id="path207708-9" /> 523 id="path207708-9" />
500 <path 524 <path
501 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 525 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
502 d="m 323.40434,64.000608 v -375.000008 0 0" 526 d="m 323.40434,64.000608 v -375.000008 0 0"
503 id="path207708-9-6" /> 527 id="path207708-9-6" />
504 <path 528 <path
505 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.449183;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 529 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
506 d="m 323.40434,64.000618 v -415.635908 0 0" 530 d="m 323.40434,64.000616 v -524.414766 0 0"
507 id="path207708-9-6-2" /> 531 id="path207708-9-6-2" />
508 <text 532 <text
509 xml:space="preserve" 533 xml:space="preserve"
@@ -536,7 +560,7 @@
536 x="-59.575905" 560 x="-59.575905"
537 y="580.05695" /></text> 561 y="580.05695" /></text>
538 <rect 562 <rect
539 style="fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1;opacity:0.5" 563 style="opacity:0.5;fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1"
540 id="rect917-0-0-4-4-9-4" 564 id="rect917-0-0-4-4-9-4"
541 width="160.00002" 565 width="160.00002"
542 height="45.000004" 566 height="45.000004"
@@ -584,14 +608,6 @@
584 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;fill:#fffefe;fill-opacity:1;stroke:none" 608 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;fill:#fffefe;fill-opacity:1;stroke:none"
585 id="tspan10317-2-9-1-4">4.2</tspan></text> 609 id="tspan10317-2-9-1-4">4.2</tspan></text>
586 <rect 610 <rect
587 style="opacity:0.75;fill:#251f32;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1"
588 id="rect917-0-0-4-4-9-4-5-3-9-2-3"
589 width="140"
590 height="45.000004"
591 x="1043.132"
592 y="-328.2114"
593 ry="2.2558987" />
594 <rect
595 style="opacity:1;fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1" 611 style="opacity:1;fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1"
596 id="rect917-0-0-4-4-9-4-5-3-9-2-3-6" 612 id="rect917-0-0-4-4-9-4-5-3-9-2-3-6"
597 width="140" 613 width="140"
@@ -615,22 +631,78 @@
615 y="-238.332" 631 y="-238.332"
616 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;fill:#fffefe;fill-opacity:1;stroke:none" 632 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;fill:#fffefe;fill-opacity:1;stroke:none"
617 id="tspan10317-2-9-1-4-6-5-6">5.1</tspan></text> 633 id="tspan10317-2-9-1-4-6-5-6">5.1</tspan></text>
634 <rect
635 style="fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1"
636 id="rect917-0-0-4-4-9-4-5-3-9-2-3-6-2"
637 width="140"
638 height="45.000004"
639 x="1043.4697"
640 y="-328.48172"
641 ry="2.2558987" />
642 <text
643 xml:space="preserve"
644 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#fffefe;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
645 x="1090.4542"
646 y="-309.61823"
647 id="text1185-3-55-4-0-0-0-1-1-6-4-7"><tspan
648 sodipodi:role="line"
649 x="1090.4542"
650 y="-309.61823"
651 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;fill:#fffefe;fill-opacity:1;stroke:none"
652 id="tspan957-2-8-6-3-9-7-4-2-0-0">Walnascar</tspan><tspan
653 sodipodi:role="line"
654 x="1090.4542"
655 y="-291.62155"
656 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;fill:#fffefe;fill-opacity:1;stroke:none"
657 id="tspan10317-2-9-1-4-6-5-6-9">5.2</tspan></text>
658 <rect
659 style="opacity:0.75;fill:#251f32;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1"
660 id="rect917-0-0-4-4-9-4-5-3-9-2-3-67"
661 width="140"
662 height="45.000004"
663 x="1163.6425"
664 y="-382.27469"
665 ry="2.2558987" />
618 <text 666 <text
619 xml:space="preserve" 667 xml:space="preserve"
620 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#fffefe;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" 668 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#fffefe;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
621 x="1094.2197" 669 x="1214.9716"
622 y="-309.83084" 670 y="-363.89413"
623 id="text1185-3-55-4-0-0-0-1-1-6-4-3"><tspan 671 id="text1185-3-55-4-0-0-0-1-1-6-4-3-53"><tspan
624 sodipodi:role="line" 672 sodipodi:role="line"
625 x="1094.2197" 673 x="1214.9716"
626 y="-309.83084" 674 y="-363.89413"
627 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;fill:#fffefe;fill-opacity:1;stroke:none" 675 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;fill:#fffefe;fill-opacity:1;stroke:none"
628 id="tspan957-2-8-6-3-9-7-4-2-0-5">Walnascar</tspan><tspan 676 id="tspan957-2-8-6-3-9-7-4-2-0-5-5">Whinlatter</tspan><tspan
629 sodipodi:role="line" 677 sodipodi:role="line"
630 x="1094.2197" 678 x="1214.9716"
631 y="-291.83417" 679 y="-345.89746"
632 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;fill:#fffefe;fill-opacity:1;stroke:none" 680 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;fill:#fffefe;fill-opacity:1;stroke:none"
633 id="tspan10317-2-9-1-4-6-5-6-6">5.2</tspan></text> 681 id="tspan10317-2-9-1-4-6-5-6-6-6">5.3</tspan></text>
682 <rect
683 style="opacity:0.75;fill:#251f32;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:5.29752;stroke-opacity:1"
684 id="rect917-0-0-4-4-9-4-5-3-9-2-3-67-6"
685 width="982.23163"
686 height="45.000004"
687 x="1283.7023"
688 y="-436.77539"
689 ry="2.2558987" />
690 <text
691 xml:space="preserve"
692 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#fffefe;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
693 x="1335.1118"
694 y="-418.39484"
695 id="text1185-3-55-4-0-0-0-1-1-6-4-3-53-0"><tspan
696 sodipodi:role="line"
697 x="1335.1118"
698 y="-418.39484"
699 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;fill:#fffefe;fill-opacity:1;stroke:none"
700 id="tspan957-2-8-6-3-9-7-4-2-0-5-5-6">Wrynose</tspan><tspan
701 sodipodi:role="line"
702 x="1335.1118"
703 y="-400.39816"
704 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;fill:#fffefe;fill-opacity:1;stroke:none"
705 id="tspan10317-2-9-1-4-6-5-6-6-6-2">6.0</tspan></text>
634 <g 706 <g
635 id="g1591" 707 id="g1591"
636 transform="translate(-516.59566,64.000598)"> 708 transform="translate(-516.59566,64.000598)">
@@ -681,7 +753,7 @@
681 id="tspan10317-2-9-0-1">5.0</tspan></text> 753 id="tspan10317-2-9-0-1">5.0</tspan></text>
682 <g 754 <g
683 id="g1125-0" 755 id="g1125-0"
684 transform="matrix(0.42240595,0,0,0.41654472,330.77064,-441.11721)" 756 transform="matrix(0.42240595,0,0,0.41654472,330.77064,-497.11721)"
685 style="stroke:none;stroke-width:2.38399"> 757 style="stroke:none;stroke-width:2.38399">
686 <rect 758 <rect
687 style="opacity:1;fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4.76797;stroke-opacity:1" 759 style="opacity:1;fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4.76797;stroke-opacity:1"
@@ -923,8 +995,8 @@
923 y="345.7359" /></text> 995 y="345.7359" /></text>
924 <path 996 <path
925 id="path29430" 997 id="path29430"
926 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.72671;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 998 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.99503;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
927 d="M 307.54809,63.999718 H 1783.4043 Z" /> 999 d="M 307.54809,63.999718 H 2277.72 Z" />
928 <path 1000 <path
929 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 1001 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
930 d="m 323.40434,64.000618 v 9.99995 0" 1002 d="m 323.40434,64.000618 v 9.99995 0"
@@ -1437,50 +1509,324 @@
1437 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 1509 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1438 d="m 1763.4043,64.000578 v 9.99999 0" 1510 d="m 1763.4043,64.000578 v 9.99999 0"
1439 id="path29548-5-1-3-6-3-1-0-3-4-2-0-0" /> 1511 id="path29548-5-1-3-6-3-1-0-3-4-2-0-0" />
1512 <text
1513 xml:space="preserve"
1514 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1515 x="1885.6029"
1516 y="94.285194"
1517 id="text1185-9-7-1-1-8-1-0-4-2-8-2"><tspan
1518 sodipodi:role="line"
1519 x="1885.6029"
1520 y="94.285194"
1521 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1522 id="tspan31345-4-0-4-81-5-2-8">Oct.</tspan><tspan
1523 sodipodi:role="line"
1524 x="1885.6029"
1525 y="112.28188"
1526 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1527 id="tspan49906-7-3-8-2-8-9-9">2028</tspan></text>
1528 <g
1529 id="g1267-4-5-2-7"
1530 transform="translate(563.45518,-155.9782)">
1531 <path
1532 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1533 d="m 1200,220.00002 v 9.99999 0"
1534 id="path29548-5-1-3-6-3-1-0-3-4-1-3" />
1535 <path
1536 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1537 d="m 1220,219.99997 v 5.00004 0"
1538 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-0-5-0-0-5-6"
1539 inkscape:transform-center-x="14.782001"
1540 inkscape:transform-center-y="-0.085282837" />
1541 <path
1542 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1543 d="m 1240,219.99997 v 5.00004 0"
1544 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-7-5-3-5-9-1"
1545 inkscape:transform-center-x="14.782001"
1546 inkscape:transform-center-y="-0.085282837" />
1547 <path
1548 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1549 d="m 1260,219.99997 v 5.00004 0"
1550 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-5-2-0-9-9-2"
1551 inkscape:transform-center-x="14.782001"
1552 inkscape:transform-center-y="-0.085282837" />
1553 <path
1554 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1555 d="m 1280,219.99997 v 5.00004 0"
1556 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-8-9-9-4-1-9"
1557 inkscape:transform-center-x="14.782001"
1558 inkscape:transform-center-y="-0.085282837" />
1559 <path
1560 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1561 d="m 1299.7216,219.99997 v 5.00004 0"
1562 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-9-7-0-2-6-4-3"
1563 inkscape:transform-center-x="-14.78205"
1564 inkscape:transform-center-y="-0.085282837" />
1565 </g>
1566 <path
1567 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1568 d="m 1883.4551,64.021829 v 9.99999 0"
1569 id="path29548-5-1-3-6-3-1-0-3-4-2-0-0-1" />
1570 <text
1571 xml:space="preserve"
1572 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1573 x="2005.5908"
1574 y="94.339828"
1575 id="text1185-9-7-1-1-8-1-0-4-2-8-2-4"><tspan
1576 sodipodi:role="line"
1577 x="2005.5908"
1578 y="94.339828"
1579 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1580 id="tspan31345-4-0-4-81-5-2-8-7">Apr.</tspan><tspan
1581 sodipodi:role="line"
1582 x="2005.5908"
1583 y="112.33651"
1584 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1585 id="tspan49906-7-3-8-2-8-9-9-8">2029</tspan></text>
1586 <g
1587 id="g1267-4-5-2-7-4"
1588 transform="translate(683.44312,-155.92356)">
1589 <path
1590 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1591 d="m 1200,220.00002 v 9.99999 0"
1592 id="path29548-5-1-3-6-3-1-0-3-4-1-3-5" />
1593 <path
1594 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1595 d="m 1220,219.99997 v 5.00004 0"
1596 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-0-5-0-0-5-6-0"
1597 inkscape:transform-center-x="14.782001"
1598 inkscape:transform-center-y="-0.085282837" />
1599 <path
1600 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1601 d="m 1240,219.99997 v 5.00004 0"
1602 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-7-5-3-5-9-1-3"
1603 inkscape:transform-center-x="14.782001"
1604 inkscape:transform-center-y="-0.085282837" />
1605 <path
1606 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1607 d="m 1260,219.99997 v 5.00004 0"
1608 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-5-2-0-9-9-2-6"
1609 inkscape:transform-center-x="14.782001"
1610 inkscape:transform-center-y="-0.085282837" />
1611 <path
1612 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1613 d="m 1280,219.99997 v 5.00004 0"
1614 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-8-9-9-4-1-9-1"
1615 inkscape:transform-center-x="14.782001"
1616 inkscape:transform-center-y="-0.085282837" />
1617 <path
1618 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1619 d="m 1299.7216,219.99997 v 5.00004 0"
1620 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-9-7-0-2-6-4-3-0"
1621 inkscape:transform-center-x="-14.78205"
1622 inkscape:transform-center-y="-0.085282837" />
1623 </g>
1624 <path
1625 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1626 d="m 2003.443,64.076464 v 9.99999 0"
1627 id="path29548-5-1-3-6-3-1-0-3-4-2-0-0-1-6" />
1628 <text
1629 xml:space="preserve"
1630 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1631 x="2125.6079"
1632 y="94.692207"
1633 id="text1185-9-7-1-1-8-1-0-4-2-8-2-4-2"><tspan
1634 sodipodi:role="line"
1635 x="2125.6079"
1636 y="94.692207"
1637 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1638 id="tspan31345-4-0-4-81-5-2-8-7-0">Oct.</tspan><tspan
1639 sodipodi:role="line"
1640 x="2125.6079"
1641 y="112.68889"
1642 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1643 id="tspan49906-7-3-8-2-8-9-9-8-6">2029</tspan></text>
1644 <g
1645 id="g1267-4-5-2-7-4-1"
1646 transform="translate(803.46019,-155.57118)">
1647 <path
1648 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1649 d="m 1200,220.00002 v 9.99999 0"
1650 id="path29548-5-1-3-6-3-1-0-3-4-1-3-5-5" />
1651 <path
1652 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1653 d="m 1220,219.99997 v 5.00004 0"
1654 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-0-5-0-0-5-6-0-5"
1655 inkscape:transform-center-x="14.782001"
1656 inkscape:transform-center-y="-0.085282837" />
1657 <path
1658 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1659 d="m 1240,219.99997 v 5.00004 0"
1660 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-7-5-3-5-9-1-3-4"
1661 inkscape:transform-center-x="14.782001"
1662 inkscape:transform-center-y="-0.085282837" />
1663 <path
1664 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1665 d="m 1260,219.99997 v 5.00004 0"
1666 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-5-2-0-9-9-2-6-7"
1667 inkscape:transform-center-x="14.782001"
1668 inkscape:transform-center-y="-0.085282837" />
1669 <path
1670 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1671 d="m 1280,219.99997 v 5.00004 0"
1672 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-8-9-9-4-1-9-1-6"
1673 inkscape:transform-center-x="14.782001"
1674 inkscape:transform-center-y="-0.085282837" />
1675 <path
1676 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1677 d="m 1299.7216,219.99997 v 5.00004 0"
1678 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-9-7-0-2-6-4-3-0-5"
1679 inkscape:transform-center-x="-14.78205"
1680 inkscape:transform-center-y="-0.085282837" />
1681 </g>
1682 <path
1683 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1684 d="m 2123.4601,64.428843 v 9.99999 0"
1685 id="path29548-5-1-3-6-3-1-0-3-4-2-0-0-1-6-6" />
1686 <path
1687 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1688 d="m 2123.3825,64.223284 v 9.99999 0"
1689 id="path29548-5-1-3-6-3-1-0-3-4-2-0-0-1-6-3" />
1690 <text
1691 xml:space="preserve"
1692 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1693 x="2245.5474"
1694 y="94.839027"
1695 id="text1185-9-7-1-1-8-1-0-4-2-8-2-4-2-7"><tspan
1696 sodipodi:role="line"
1697 x="2245.5474"
1698 y="94.839027"
1699 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1700 id="tspan31345-4-0-4-81-5-2-8-7-0-4">Apr.</tspan><tspan
1701 sodipodi:role="line"
1702 x="2245.5474"
1703 y="112.83571"
1704 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1705 id="tspan49906-7-3-8-2-8-9-9-8-6-5">2030</tspan></text>
1706 <g
1707 id="g1267-4-5-2-7-4-1-2"
1708 transform="translate(923.39972,-155.42436)">
1709 <path
1710 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1711 d="m 1200,220.00002 v 9.99999 0"
1712 id="path29548-5-1-3-6-3-1-0-3-4-1-3-5-5-5" />
1713 <path
1714 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1715 d="m 1220,219.99997 v 5.00004 0"
1716 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-0-5-0-0-5-6-0-5-4"
1717 inkscape:transform-center-x="14.782001"
1718 inkscape:transform-center-y="-0.085282837" />
1719 <path
1720 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1721 d="m 1240,219.99997 v 5.00004 0"
1722 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-7-5-3-5-9-1-3-4-7"
1723 inkscape:transform-center-x="14.782001"
1724 inkscape:transform-center-y="-0.085282837" />
1725 <path
1726 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1727 d="m 1260,219.99997 v 5.00004 0"
1728 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-5-2-0-9-9-2-6-7-4"
1729 inkscape:transform-center-x="14.782001"
1730 inkscape:transform-center-y="-0.085282837" />
1731 <path
1732 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1733 d="m 1280,219.99997 v 5.00004 0"
1734 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-8-9-9-4-1-9-1-6-4"
1735 inkscape:transform-center-x="14.782001"
1736 inkscape:transform-center-y="-0.085282837" />
1737 <path
1738 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1739 d="m 1299.7216,219.99997 v 5.00004 0"
1740 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-9-7-0-2-6-4-3-0-5-3"
1741 inkscape:transform-center-x="-14.78205"
1742 inkscape:transform-center-y="-0.085282837" />
1743 </g>
1744 <g
1745 id="g1267-4-5-2-7-4-1-2-0"
1746 transform="translate(1043.3579,-155.33829)">
1747 <path
1748 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1749 d="m 1200,220.00002 v 9.99999 0"
1750 id="path29548-5-1-3-6-3-1-0-3-4-1-3-5-5-5-6" />
1751 <path
1752 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1753 d="m 1220,219.99997 v 5.00004 0"
1754 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-0-5-0-0-5-6-0-5-4-8"
1755 inkscape:transform-center-x="14.782001"
1756 inkscape:transform-center-y="-0.085282837" />
1757 <path
1758 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1759 d="m 1240,219.99997 v 5.00004 0"
1760 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-7-5-3-5-9-1-3-4-7-9"
1761 inkscape:transform-center-x="14.782001"
1762 inkscape:transform-center-y="-0.085282837" />
1763 <path
1764 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1765 d="m 1260,219.99997 v 5.00004 0"
1766 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-5-2-0-9-9-2-6-7-4-2"
1767 inkscape:transform-center-x="14.782001"
1768 inkscape:transform-center-y="-0.085282837" />
1769 <path
1770 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1771 d="m 1280,219.99997 v 5.00004 0"
1772 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-8-9-9-4-1-9-1-6-4-6"
1773 inkscape:transform-center-x="14.782001"
1774 inkscape:transform-center-y="-0.085282837" />
1775 <path
1776 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1777 d="m 1299.7216,219.99997 v 5.00004 0"
1778 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-9-7-0-2-6-4-3-0-5-3-6"
1779 inkscape:transform-center-x="-14.78205"
1780 inkscape:transform-center-y="-0.085282837" />
1781 </g>
1782 <path
1783 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1784 d="m 2243.3996,64.575663 v 9.99999 0"
1785 id="path29548-5-1-3-6-3-1-0-3-4-2-0-0-1-6-6-0" />
1440 <rect 1786 <rect
1441 style="opacity:0.75;fill:#241f31;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.751473;stroke-opacity:1" 1787 style="opacity:0.75;fill:#241f31;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.751473;stroke-opacity:1"
1442 id="rect917-0-0-4-4-9-4-5-3-9-2-36" 1788 id="rect917-0-0-4-4-9-4-5-3-9-2-36"
1443 width="38.418175" 1789 width="38.418175"
1444 height="23.151052" 1790 height="23.151052"
1445 x="1605.6135" 1791 x="2047.6135"
1446 y="-41.172161" 1792 y="-45.172161"
1447 ry="1.1605872" /> 1793 ry="1.1605872" />
1448 <rect 1794 <rect
1449 style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.98878;stroke-dasharray:none;stroke-opacity:1" 1795 style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.98878;stroke-dasharray:none;stroke-opacity:1"
1450 id="rect917-0-0-4-4-9-4-5-3-9-2-36-7" 1796 id="rect917-0-0-4-4-9-4-5-3-9-2-36-7"
1451 width="186.42949" 1797 width="186.42949"
1452 height="110.40546" 1798 height="110.40546"
1453 x="1594.5294" 1799 x="2036.5294"
1454 y="-73.753708" 1800 y="-77.753708"
1455 ry="5.5347452" /> 1801 ry="5.5347452" />
1456 <rect 1802 <rect
1457 style="opacity:0.75;fill:#241f31;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.50949;stroke-opacity:1" 1803 style="opacity:0.75;fill:#241f31;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.50949;stroke-opacity:1"
1458 id="rect917-0-0-4-4-9-4-5-3-9-2-6" 1804 id="rect917-0-0-4-4-9-4-5-3-9-2-6"
1459 width="21.197233" 1805 width="21.197233"
1460 height="19.28739" 1806 height="19.28739"
1461 x="1611.8163" 1807 x="2053.8164"
1462 y="-41.883858" 1808 y="-45.883858"
1463 ry="0.96689767" /> 1809 ry="0.96689767" />
1464 <text 1810 <text
1465 xml:space="preserve" 1811 xml:space="preserve"
1466 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#fffefe;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" 1812 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#fffefe;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1467 x="1690.4917" 1813 x="2132.4917"
1468 y="-53.687912" 1814 y="-57.687912"
1469 id="text1185-3-55-4-0-0-0-1-1-6-4-3-5"><tspan 1815 id="text1185-3-55-4-0-0-0-1-1-6-4-3-5"><tspan
1470 sodipodi:role="line" 1816 sodipodi:role="line"
1471 x="1690.4917" 1817 x="2132.4917"
1472 y="-53.687912" 1818 y="-57.687912"
1473 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none" 1819 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none"
1474 id="tspan10317-2-9-1-4-6-5-6-6-5">Legend</tspan></text> 1820 id="tspan10317-2-9-1-4-6-5-6-6-5">Legend</tspan></text>
1475 <text 1821 <text
1476 xml:space="preserve" 1822 xml:space="preserve"
1477 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#fffefe;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" 1823 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#fffefe;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1478 x="1656.0988" 1824 x="2098.0986"
1479 y="-27.899874" 1825 y="-31.899874"
1480 id="text1185-3-55-4-0-0-0-1-1-6-4-3-5-2"><tspan 1826 id="text1185-3-55-4-0-0-0-1-1-6-4-3-5-2"><tspan
1481 sodipodi:role="line" 1827 sodipodi:role="line"
1482 x="1656.0988" 1828 x="2098.0986"
1483 y="-27.899874" 1829 y="-31.899874"
1484 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none" 1830 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none"
1485 id="tspan10317-2-9-1-4-6-5-6-6-5-9">Future</tspan></text> 1831 id="tspan10317-2-9-1-4-6-5-6-6-5-9">Future</tspan></text>
1486 <rect 1832 <rect
@@ -1488,38 +1834,38 @@
1488 id="rect917-0-0-4-4-9-4-5-3-9-2-6-1" 1834 id="rect917-0-0-4-4-9-4-5-3-9-2-6-1"
1489 width="21.197233" 1835 width="21.197233"
1490 height="19.28739" 1836 height="19.28739"
1491 x="1611.8671" 1837 x="2053.8672"
1492 y="-17.756365" 1838 y="-21.756365"
1493 ry="0.96689767" /> 1839 ry="0.96689767" />
1494 <text 1840 <text
1495 xml:space="preserve" 1841 xml:space="preserve"
1496 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#fffefe;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" 1842 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#fffefe;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1497 x="1686.7159" 1843 x="2128.7158"
1498 y="-3.6722763" 1844 y="-7.6722765"
1499 id="text1185-3-55-4-0-0-0-1-1-6-4-3-5-2-2"><tspan 1845 id="text1185-3-55-4-0-0-0-1-1-6-4-3-5-2-2"><tspan
1500 sodipodi:role="line" 1846 sodipodi:role="line"
1501 x="1686.7159" 1847 x="2128.7158"
1502 y="-3.6722763" 1848 y="-7.6722765"
1503 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none" 1849 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none"
1504 id="tspan10317-2-9-1-4-6-5-6-6-5-9-7">Current (Oct. 24)</tspan></text> 1850 id="tspan10317-2-9-1-4-6-5-6-6-5-9-7">Current (Apr. 25)</tspan></text>
1505 <text 1851 <text
1506 xml:space="preserve" 1852 xml:space="preserve"
1507 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#fffefe;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" 1853 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#fffefe;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1508 x="1667.363" 1854 x="2109.363"
1509 y="20.03771" 1855 y="16.03771"
1510 id="text1185-3-55-4-0-0-0-1-1-6-4-3-5-2-2-9"><tspan 1856 id="text1185-3-55-4-0-0-0-1-1-6-4-3-5-2-2-9"><tspan
1511 sodipodi:role="line" 1857 sodipodi:role="line"
1512 x="1667.363" 1858 x="2109.363"
1513 y="20.03771" 1859 y="16.03771"
1514 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none" 1860 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none"
1515 id="tspan10317-2-9-1-4-6-5-6-6-5-9-7-3">End-of-life</tspan></text> 1861 id="tspan10317-2-9-1-4-6-5-6-6-5-9-7-3">End-of-life</tspan></text>
1516 <rect 1862 <rect
1517 style="fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.50949;stroke-opacity:1;opacity:0.5" 1863 style="opacity:0.5;fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.50949;stroke-opacity:1"
1518 id="rect917-0-0-4-4-9-4-5-3-9-2-6-1-0" 1864 id="rect917-0-0-4-4-9-4-5-3-9-2-6-1-0"
1519 width="21.197233" 1865 width="21.197233"
1520 height="19.28739" 1866 height="19.28739"
1521 x="1612.0239" 1867 x="2054.0239"
1522 y="5.9667883" 1868 y="1.9667883"
1523 ry="0.96689767" /> 1869 ry="0.96689767" />
1524 <rect 1870 <rect
1525 style="opacity:0.5;fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.85786;stroke-opacity:1" 1871 style="opacity:0.5;fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.85786;stroke-opacity:1"
diff --git a/documentation/ref-manual/tasks.rst b/documentation/ref-manual/tasks.rst
index 5cd23449fa..cf6b9876ca 100644
--- a/documentation/ref-manual/tasks.rst
+++ b/documentation/ref-manual/tasks.rst
@@ -727,7 +727,7 @@ tool, which you then use to modify the kernel configuration.
727 $ bitbake linux-yocto -c menuconfig 727 $ bitbake linux-yocto -c menuconfig
728 728
729 729
730See the ":ref:`kernel-dev/common:using \`\`menuconfig\`\``" 730See the ":ref:`kernel-dev/common:using ``menuconfig```"
731section in the Yocto Project Linux Kernel Development Manual for more 731section in the Yocto Project Linux Kernel Development Manual for more
732information on this configuration tool. 732information on this configuration tool.
733 733
@@ -751,7 +751,7 @@ which can then be applied by subsequent tasks such as
751 751
752Runs ``make menuconfig`` for the kernel. For information on 752Runs ``make menuconfig`` for the kernel. For information on
753``menuconfig``, see the 753``menuconfig``, see the
754":ref:`kernel-dev/common:using \`\`menuconfig\`\``" 754":ref:`kernel-dev/common:using ``menuconfig```"
755section in the Yocto Project Linux Kernel Development Manual. 755section in the Yocto Project Linux Kernel Development Manual.
756 756
757.. _ref-tasks-savedefconfig: 757.. _ref-tasks-savedefconfig:
diff --git a/documentation/ref-manual/terms.rst b/documentation/ref-manual/terms.rst
index 9d765c89c8..9f61061415 100644
--- a/documentation/ref-manual/terms.rst
+++ b/documentation/ref-manual/terms.rst
@@ -63,7 +63,7 @@ universal, the list includes them just in case:
63 This term refers to the area used by the OpenEmbedded build system for 63 This term refers to the area used by the OpenEmbedded build system for
64 builds. The area is created when you ``source`` the setup environment 64 builds. The area is created when you ``source`` the setup environment
65 script that is found in the Source Directory 65 script that is found in the Source Directory
66 (i.e. :ref:`ref-manual/structure:\`\`oe-init-build-env\`\``). The 66 (i.e. :ref:`ref-manual/structure:``oe-init-build-env```). The
67 :term:`TOPDIR` variable points to the :term:`Build Directory`. 67 :term:`TOPDIR` variable points to the :term:`Build Directory`.
68 68
69 You have a lot of flexibility when creating the :term:`Build Directory`. 69 You have a lot of flexibility when creating the :term:`Build Directory`.
diff --git a/documentation/ref-manual/variables.rst b/documentation/ref-manual/variables.rst
index 66e0bdee0d..9406f3548c 100644
--- a/documentation/ref-manual/variables.rst
+++ b/documentation/ref-manual/variables.rst
@@ -2199,7 +2199,7 @@ system and gives an overview of their function and contents.
2199 resides within the :term:`Build Directory` as ``${TMPDIR}/deploy``. 2199 resides within the :term:`Build Directory` as ``${TMPDIR}/deploy``.
2200 2200
2201 For more information on the structure of the Build Directory, see 2201 For more information on the structure of the Build Directory, see
2202 ":ref:`ref-manual/structure:the build directory --- \`\`build/\`\``" section. 2202 ":ref:`ref-manual/structure:the build directory --- ``build/```" section.
2203 For more detail on the contents of the ``deploy`` directory, see the 2203 For more detail on the contents of the ``deploy`` directory, see the
2204 ":ref:`overview-manual/concepts:images`", 2204 ":ref:`overview-manual/concepts:images`",
2205 ":ref:`overview-manual/concepts:package feeds`", and 2205 ":ref:`overview-manual/concepts:package feeds`", and
@@ -2241,7 +2241,7 @@ system and gives an overview of their function and contents.
2241 contents of :term:`IMGDEPLOYDIR` by the :ref:`ref-classes-image` class. 2241 contents of :term:`IMGDEPLOYDIR` by the :ref:`ref-classes-image` class.
2242 2242
2243 For more information on the structure of the :term:`Build Directory`, see 2243 For more information on the structure of the :term:`Build Directory`, see
2244 ":ref:`ref-manual/structure:the build directory --- \`\`build/\`\``" section. 2244 ":ref:`ref-manual/structure:the build directory --- ``build/```" section.
2245 For more detail on the contents of the ``deploy`` directory, see the 2245 For more detail on the contents of the ``deploy`` directory, see the
2246 ":ref:`overview-manual/concepts:images`" and 2246 ":ref:`overview-manual/concepts:images`" and
2247 ":ref:`overview-manual/concepts:application development sdk`" sections both in 2247 ":ref:`overview-manual/concepts:application development sdk`" sections both in
@@ -4154,9 +4154,33 @@ system and gives an overview of their function and contents.
4154 IMAGE_ROOTFS_EXTRA_SPACE = "41943040" 4154 IMAGE_ROOTFS_EXTRA_SPACE = "41943040"
4155 4155
4156 :term:`IMAGE_ROOTFS_MAXSIZE` 4156 :term:`IMAGE_ROOTFS_MAXSIZE`
4157 Defines the maximum size in Kbytes for the generated image. If the 4157 Defines the maximum allowed size of the generated image in kilobytes.
4158 generated image size is above that, the build will fail. It's a good 4158 The build will fail if the generated image size exceeds this value.
4159 idea to set this variable for images that need to fit on a limited 4159
4160 The generated image size undergoes several calculation steps before being
4161 compared to :term:`IMAGE_ROOTFS_MAXSIZE`.
4162 In the first step, the size of the directory pointed to by :term:`IMAGE_ROOTFS`
4163 is calculated.
4164 In the second step, the result from the first step is multiplied
4165 by :term:`IMAGE_OVERHEAD_FACTOR`.
4166 In the third step, the result from the second step is compared with
4167 :term:`IMAGE_ROOTFS_SIZE`. The larger value of these is added to
4168 :term:`IMAGE_ROOTFS_EXTRA_SPACE`.
4169 In the fourth step, the result from the third step is checked for
4170 a decimal part. If it has one, it is rounded up to the next integer.
4171 If it does not, it is simply converted into an integer.
4172 In the fifth step, the :term:`IMAGE_ROOTFS_ALIGNMENT` is added to the result
4173 from the fourth step and "1" is subtracted.
4174 In the sixth step, the remainder of the division between the result
4175 from the fifth step and :term:`IMAGE_ROOTFS_ALIGNMENT` is subtracted from the
4176 result of the fifth step. In this way, the result from the fourth step is
4177 rounded up to the nearest multiple of :term:`IMAGE_ROOTFS_ALIGNMENT`.
4178
4179 Thus, if the :term:`IMAGE_ROOTFS_MAXSIZE` is set, is compared with the result
4180 of the above calculations and is independent of the final image type.
4181 No default value is set for :term:`IMAGE_ROOTFS_MAXSIZE`.
4182
4183 It's a good idea to set this variable for images that need to fit on a limited
4160 space (e.g. SD card, a fixed-size partition, ...). 4184 space (e.g. SD card, a fixed-size partition, ...).
4161 4185
4162 :term:`IMAGE_ROOTFS_SIZE` 4186 :term:`IMAGE_ROOTFS_SIZE`
@@ -4340,6 +4364,23 @@ system and gives an overview of their function and contents.
4340 Set the variable to "1" to prevent the default dependencies from 4364 Set the variable to "1" to prevent the default dependencies from
4341 being added. 4365 being added.
4342 4366
4367 :term:`INHIBIT_DEFAULT_RUST_DEPS`
4368 Prevents the :ref:`ref-classes-rust` class from automatically adding
4369 its default build-time dependencies.
4370
4371 When a recipe inherits the :ref:`ref-classes-rust` class, several
4372 tools such as ``rust-native`` and ``${RUSTLIB_DEP}`` (only added when cross-compiling) are added
4373 to :term:`DEPENDS` to support the ``rust`` build process.
4374
4375 To prevent the build system from adding these dependencies automatically,
4376 set the :term:`INHIBIT_DEFAULT_RUST_DEPS` variable as follows::
4377
4378 INHIBIT_DEFAULT_RUST_DEPS = "1"
4379
4380 By default, the value of :term:`INHIBIT_DEFAULT_RUST_DEPS` is empty. Setting
4381 it to "0" does not disable inhibition. Only the empty string will disable
4382 inhibition.
4383
4343 :term:`INHIBIT_PACKAGE_DEBUG_SPLIT` 4384 :term:`INHIBIT_PACKAGE_DEBUG_SPLIT`
4344 Prevents the OpenEmbedded build system from splitting out debug 4385 Prevents the OpenEmbedded build system from splitting out debug
4345 information during packaging. By default, the build system splits out 4386 information during packaging. By default, the build system splits out
@@ -4386,6 +4427,25 @@ system and gives an overview of their function and contents.
4386 even if the toolchain's binaries are strippable, there are other files 4427 even if the toolchain's binaries are strippable, there are other files
4387 needed for the build that are not strippable. 4428 needed for the build that are not strippable.
4388 4429
4430 :term:`INHIBIT_UPDATERCD_BBCLASS`
4431 Prevents the :ref:`ref-classes-update-rc.d` class from automatically
4432 installing and registering SysV init scripts for packages.
4433
4434 When a recipe inherits the :ref:`ref-classes-update-rc.d` class, init
4435 scripts are typically installed and registered for the packages listed in
4436 :term:`INITSCRIPT_PACKAGES`. This ensures that the relevant
4437 services are started and stopped at the appropriate runlevels using the
4438 traditional SysV init system.
4439
4440 To prevent the build system from adding these scripts and configurations
4441 automatically, set the :term:`INHIBIT_UPDATERCD_BBCLASS` variable as follows::
4442
4443 INHIBIT_UPDATERCD_BBCLASS = "1"
4444
4445 By default, the value of :term:`INHIBIT_UPDATERCD_BBCLASS` is empty. Setting
4446 it to "0" does not disable inhibition. Only the empty string will disable
4447 inhibition.
4448
4389 :term:`INIT_MANAGER` 4449 :term:`INIT_MANAGER`
4390 Specifies the system init manager to use. Available options are: 4450 Specifies the system init manager to use. Available options are:
4391 4451
@@ -4552,6 +4612,20 @@ system and gives an overview of their function and contents.
4552 See the :term:`MACHINE` variable for additional 4612 See the :term:`MACHINE` variable for additional
4553 information. 4613 information.
4554 4614
4615 :term:`INITRAMFS_MAXSIZE`
4616 Defines the maximum allowed size of the :term:`Initramfs` image in Kbytes.
4617 The build will fail if the :term:`Initramfs` image size exceeds this value.
4618
4619 The :term:`Initramfs` image size undergoes several calculation steps before
4620 being compared to :term:`INITRAMFS_MAXSIZE`.
4621 These steps are the same as those used for :term:`IMAGE_ROOTFS_MAXSIZE`
4622 and are described in detail in that entry.
4623
4624 Thus, :term:`INITRAMFS_MAXSIZE` is compared with the result of the calculations
4625 and is independent of the final image type (e.g. compressed).
4626 A default value for :term:`INITRAMFS_MAXSIZE` is set in
4627 :oe_git:`meta/conf/bitbake.conf </openembedded-core/tree/meta/conf/bitbake.conf>`.
4628
4555 :term:`INITRAMFS_MULTICONFIG` 4629 :term:`INITRAMFS_MULTICONFIG`
4556 Defines the multiconfig to create a multiconfig dependency to be used by 4630 Defines the multiconfig to create a multiconfig dependency to be used by
4557 the :ref:`ref-classes-kernel` class. 4631 the :ref:`ref-classes-kernel` class.
@@ -4734,15 +4808,8 @@ system and gives an overview of their function and contents.
4734 options not explicitly specified will be disabled in the kernel 4808 options not explicitly specified will be disabled in the kernel
4735 config. 4809 config.
4736 4810
4737 In case :term:`KCONFIG_MODE` is not set the behaviour will depend on where 4811 In case :term:`KCONFIG_MODE` is not set the ``defconfig`` file
4738 the ``defconfig`` file is coming from. An "in-tree" ``defconfig`` file 4812 will be handled in ``allnoconfig`` mode.
4739 will be handled in ``alldefconfig`` mode, a ``defconfig`` file placed
4740 in ``${WORKDIR}`` through a meta-layer will be handled in
4741 ``allnoconfig`` mode.
4742
4743 An "in-tree" ``defconfig`` file can be selected via the
4744 :term:`KBUILD_DEFCONFIG` variable. :term:`KCONFIG_MODE` does not need to
4745 be explicitly set.
4746 4813
4747 A ``defconfig`` file compatible with ``allnoconfig`` mode can be 4814 A ``defconfig`` file compatible with ``allnoconfig`` mode can be
4748 generated by copying the ``.config`` file from a working Linux kernel 4815 generated by copying the ``.config`` file from a working Linux kernel
@@ -6730,7 +6797,7 @@ system and gives an overview of their function and contents.
6730 For examples of how this data is used, see the 6797 For examples of how this data is used, see the
6731 ":ref:`overview-manual/concepts:automatically added runtime dependencies`" 6798 ":ref:`overview-manual/concepts:automatically added runtime dependencies`"
6732 section in the Yocto Project Overview and Concepts Manual and the 6799 section in the Yocto Project Overview and Concepts Manual and the
6733 ":ref:`dev-manual/debugging:viewing package information with \`\`oe-pkgdata-util\`\``" 6800 ":ref:`dev-manual/debugging:viewing package information with ``oe-pkgdata-util```"
6734 section in the Yocto Project Development Tasks Manual. For more 6801 section in the Yocto Project Development Tasks Manual. For more
6735 information on the shared, global-state directory, see 6802 information on the shared, global-state directory, see
6736 :term:`STAGING_DIR_HOST`. 6803 :term:`STAGING_DIR_HOST`.
@@ -6784,7 +6851,7 @@ system and gives an overview of their function and contents.
6784 the package is built, the version information can be retrieved with 6851 the package is built, the version information can be retrieved with
6785 ``oe-pkgdata-util package-info <package name>``. See the 6852 ``oe-pkgdata-util package-info <package name>``. See the
6786 :ref:`dev-manual/debugging:Viewing Package Information with 6853 :ref:`dev-manual/debugging:Viewing Package Information with
6787 \`\`oe-pkgdata-util\`\`` section of the Yocto Project Development Tasks 6854 ``oe-pkgdata-util``` section of the Yocto Project Development Tasks
6788 Manual for more information on ``oe-pkgdata-util``. 6855 Manual for more information on ``oe-pkgdata-util``.
6789 6856
6790 6857
@@ -7385,17 +7452,12 @@ system and gives an overview of their function and contents.
7385 prefer to have a read-only root filesystem and prefer to keep 7452 prefer to have a read-only root filesystem and prefer to keep
7386 writeable data in one place. 7453 writeable data in one place.
7387 7454
7388 You can override the default by setting the variable in any layer or 7455 When setting ``INIT_MANAGER = systemd``, the default will be set to::
7389 in the ``local.conf`` file. Because the default is set using a "weak"
7390 assignment (i.e. "??="), you can use either of the following forms to
7391 define your override::
7392 7456
7393 ROOT_HOME = "/root"
7394 ROOT_HOME ?= "/root" 7457 ROOT_HOME ?= "/root"
7395 7458
7396 These 7459 You can also override the default by setting the variable in your distro
7397 override examples use ``/root``, which is probably the most commonly 7460 configuration or in the ``local.conf`` file.
7398 used override.
7399 7461
7400 :term:`ROOTFS` 7462 :term:`ROOTFS`
7401 Indicates a filesystem image to include as the root filesystem. 7463 Indicates a filesystem image to include as the root filesystem.
@@ -8388,7 +8450,7 @@ system and gives an overview of their function and contents.
8388 class. 8450 class.
8389 8451
8390 :term:`SPL_SIGN_KEYNAME` 8452 :term:`SPL_SIGN_KEYNAME`
8391 The name of keys used by the :ref:`ref-classes-kernel-fitimage` class 8453 The name of keys used by the :ref:`ref-classes-uboot-sign` class
8392 for signing U-Boot FIT image stored in the :term:`SPL_SIGN_KEYDIR` 8454 for signing U-Boot FIT image stored in the :term:`SPL_SIGN_KEYDIR`
8393 directory. If we have for example a ``dev.key`` key and a ``dev.crt`` 8455 directory. If we have for example a ``dev.key`` key and a ``dev.crt``
8394 certificate stored in the :term:`SPL_SIGN_KEYDIR` directory, you will 8456 certificate stored in the :term:`SPL_SIGN_KEYDIR` directory, you will
@@ -8652,7 +8714,7 @@ system and gives an overview of their function and contents.
8652 The Yocto Project actually shares the cache data objects built by its 8714 The Yocto Project actually shares the cache data objects built by its
8653 autobuilder:: 8715 autobuilder::
8654 8716
8655 SSTATE_MIRRORS ?= "file://.* http://cdn.jsdelivr.net/yocto/sstate/all/PATH;downloadfilename=PATH" 8717 SSTATE_MIRRORS ?= "file://.* http://sstate.yoctoproject.org/all/PATH;downloadfilename=PATH"
8656 8718
8657 As such binary artifacts are built for the generic QEMU machines 8719 As such binary artifacts are built for the generic QEMU machines
8658 supported by the various Poky releases, they are less likely to be 8720 supported by the various Poky releases, they are less likely to be
@@ -8676,6 +8738,26 @@ system and gives an overview of their function and contents.
8676 8738
8677 For details on the process, see the :ref:`ref-classes-staging` class. 8739 For details on the process, see the :ref:`ref-classes-staging` class.
8678 8740
8741 :term:`SSTATE_SKIP_CREATION`
8742 The :term:`SSTATE_SKIP_CREATION` variable can be used to skip the
8743 creation of :ref:`shared state <overview-manual/concepts:shared state cache>`
8744 tarball files. It makes sense e.g. for image creation tasks as tarring images
8745 and keeping them in sstate would consume a lot of disk space.
8746
8747 In general it is not recommended to use this variable as missing sstate
8748 artefacts adversely impact the build, particularly for entries in the
8749 middle of dependency chains. The case it can make sense is where the
8750 size and time costs of the artefact are similar to just running the
8751 tasks. This generally only applies to end artefact output like images.
8752
8753 The syntax to disable it for one task is::
8754
8755 SSTATE_SKIP_CREATION:task-image-complete = "1"
8756
8757 The syntax to disable it for the whole recipe is::
8758
8759 SSTATE_SKIP_CREATION = "1"
8760
8679 :term:`STAGING_BASE_LIBDIR_NATIVE` 8761 :term:`STAGING_BASE_LIBDIR_NATIVE`
8680 Specifies the path to the ``/lib`` subdirectory of the sysroot 8762 Specifies the path to the ``/lib`` subdirectory of the sysroot
8681 directory for the build host. 8763 directory for the build host.
@@ -10374,6 +10456,20 @@ system and gives an overview of their function and contents.
10374 Specifies the timeout in seconds used by the ``watchdog-config`` recipe 10456 Specifies the timeout in seconds used by the ``watchdog-config`` recipe
10375 and also by ``systemd`` during reboot. The default is 60 seconds. 10457 and also by ``systemd`` during reboot. The default is 60 seconds.
10376 10458
10459 :term:`WIC_CREATE_EXTRA_ARGS`
10460 If the :term:`IMAGE_FSTYPES` variable contains "wic", the build
10461 will generate a
10462 :ref:`Wic image <dev-manual/wic:creating partitioned images using wic>`
10463 automatically when BitBake builds an image recipe. As part of
10464 this process BitBake will invoke the "`wic create`" command. The
10465 :term:`WIC_CREATE_EXTRA_ARGS` variable is placed at the end of this
10466 command which allows the user to supply additional arguments.
10467
10468 One such useful purpose for this mechanism is to add the ``-D`` (or
10469 ``--debug``) argument to the "`wic create`" command. This increases the
10470 amount of debugging information written out to the Wic log during the
10471 Wic creation process.
10472
10377 :term:`WIRELESS_DAEMON` 10473 :term:`WIRELESS_DAEMON`
10378 For ``connman`` and ``packagegroup-base``, specifies the wireless 10474 For ``connman`` and ``packagegroup-base``, specifies the wireless
10379 daemon to use. The default is "wpa-supplicant" (note that the value 10475 daemon to use. The default is "wpa-supplicant" (note that the value
diff --git a/documentation/sdk-manual/extensible.rst b/documentation/sdk-manual/extensible.rst
index d8d3858bfe..ab4956f466 100644
--- a/documentation/sdk-manual/extensible.rst
+++ b/documentation/sdk-manual/extensible.rst
@@ -669,7 +669,7 @@ SDK or eSDK:
669 ``devtool build``. 669 ``devtool build``.
670 It also allows to benefit from the very good integration that IDEs like 670 It also allows to benefit from the very good integration that IDEs like
671 VSCode offer for tools like CMake or GDB. 671 VSCode offer for tools like CMake or GDB.
672 672
673 However, supporting many programming languages and multiple 673 However, supporting many programming languages and multiple
674 IDEs is quite an elaborate and constantly evolving thing. Support for IDEs 674 IDEs is quite an elaborate and constantly evolving thing. Support for IDEs
675 is therefore implemented as plugins. Plugins can also be provided by 675 is therefore implemented as plugins. Plugins can also be provided by
@@ -802,7 +802,7 @@ the two modes:
802 802
803 This instance of VSCode uses plugins that are useful for the development 803 This instance of VSCode uses plugins that are useful for the development
804 of the application. ``devtool ide-sdk`` generates the necessary 804 of the application. ``devtool ide-sdk`` generates the necessary
805 ``extensions.json``, ``settings.json``, ``tasks.json``and ``launch.json`` 805 ``extensions.json``, ``settings.json``, ``tasks.json`` and ``launch.json``
806 configuration files for all the involved plugins. 806 configuration files for all the involved plugins.
807 807
808 When the source code folder present in the workspace folder is opened in 808 When the source code folder present in the workspace folder is opened in
diff --git a/documentation/test-manual/intro.rst b/documentation/test-manual/intro.rst
index 5d451b6c28..caa0a8a792 100644
--- a/documentation/test-manual/intro.rst
+++ b/documentation/test-manual/intro.rst
@@ -51,13 +51,11 @@ fashion. Basically, during the development of a Yocto Project release,
51the Autobuilder tests if things work. The Autobuilder builds all test 51the Autobuilder tests if things work. The Autobuilder builds all test
52targets and runs all the tests. 52targets and runs all the tests.
53 53
54The Yocto Project uses now uses standard upstream 54The Yocto Project uses standard upstream Buildbot to drive its integration and
55Buildbot (`version 3.8 <https://docs.buildbot.net/3.8.0/>`__) to 55testing. Buildbot has a plug-in interface that the Yocto Project customizes
56drive its integration and testing. Buildbot has a plug-in interface 56using code from the :yocto_git:`yocto-autobuilder2 </yocto-autobuilder2>`
57that the Yocto Project customizes using code from the 57repository, adding its own console UI plugin. The resulting UI plug-in allows
58``yocto-autobuilder2`` repository, adding its own console UI plugin. The 58you to visualize builds in a way suited to the project's needs.
59resulting UI plug-in allows you to visualize builds in a way suited to
60the project's needs.
61 59
62A ``helper`` layer provides configuration and job management through 60A ``helper`` layer provides configuration and job management through
63scripts found in the ``yocto-autobuilder-helper`` repository. The 61scripts found in the ``yocto-autobuilder-helper`` repository. The
diff --git a/documentation/toaster-manual/reference.rst b/documentation/toaster-manual/reference.rst
index 755b895cee..3050b5d0f5 100644
--- a/documentation/toaster-manual/reference.rst
+++ b/documentation/toaster-manual/reference.rst
@@ -546,7 +546,7 @@ database.
546 546
547You need to run the ``buildslist`` command first to identify existing 547You need to run the ``buildslist`` command first to identify existing
548builds in the database before using the 548builds in the database before using the
549:ref:`toaster-manual/reference:\`\`builddelete\`\`` command. Here is an 549:ref:`toaster-manual/reference:``builddelete``` command. Here is an
550example that assumes default repository and :term:`Build Directory` names: 550example that assumes default repository and :term:`Build Directory` names:
551 551
552.. code-block:: shell 552.. code-block:: shell
@@ -555,7 +555,7 @@ example that assumes default repository and :term:`Build Directory` names:
555 $ python ../bitbake/lib/toaster/manage.py buildslist 555 $ python ../bitbake/lib/toaster/manage.py buildslist
556 556
557If your Toaster database had only one build, the above 557If your Toaster database had only one build, the above
558:ref:`toaster-manual/reference:\`\`buildslist\`\`` 558:ref:`toaster-manual/reference:``buildslist```
559command would return something like the following:: 559command would return something like the following::
560 560
561 1: qemux86 poky core-image-minimal 561 1: qemux86 poky core-image-minimal
@@ -576,7 +576,7 @@ the database.
576 576
577Prior to running the ``builddelete`` command, you need to get the ID 577Prior to running the ``builddelete`` command, you need to get the ID
578associated with builds by using the 578associated with builds by using the
579:ref:`toaster-manual/reference:\`\`buildslist\`\`` command. 579:ref:`toaster-manual/reference:``buildslist``` command.
580 580
581``perf`` 581``perf``
582-------- 582--------
diff --git a/meta-poky/conf/distro/poky.conf b/meta-poky/conf/distro/poky.conf
index 4e2974e6d1..9eff80491b 100644
--- a/meta-poky/conf/distro/poky.conf
+++ b/meta-poky/conf/distro/poky.conf
@@ -1,6 +1,6 @@
1DISTRO = "poky" 1DISTRO = "poky"
2DISTRO_NAME = "Poky (Yocto Project Reference Distro)" 2DISTRO_NAME = "Poky (Yocto Project Reference Distro)"
3DISTRO_VERSION = "5.0.9" 3DISTRO_VERSION = "5.0.10"
4DISTRO_CODENAME = "scarthgap" 4DISTRO_CODENAME = "scarthgap"
5SDK_VENDOR = "-pokysdk" 5SDK_VENDOR = "-pokysdk"
6SDK_VERSION = "${@d.getVar('DISTRO_VERSION').replace('snapshot-${METADATA_REVISION}', 'snapshot')}" 6SDK_VERSION = "${@d.getVar('DISTRO_VERSION').replace('snapshot-${METADATA_REVISION}', 'snapshot')}"
diff --git a/meta-poky/conf/templates/default/local.conf.sample b/meta-poky/conf/templates/default/local.conf.sample
index 72d3566294..b6071e2821 100644
--- a/meta-poky/conf/templates/default/local.conf.sample
+++ b/meta-poky/conf/templates/default/local.conf.sample
@@ -239,10 +239,7 @@ BB_DISKMON_DIRS ??= "\
239# Using the CDN rather than the yoctoproject.org address is suggested/preferred. 239# Using the CDN rather than the yoctoproject.org address is suggested/preferred.
240# 240#
241#BB_HASHSERVE_UPSTREAM = 'wss://hashserv.yoctoproject.org/ws' 241#BB_HASHSERVE_UPSTREAM = 'wss://hashserv.yoctoproject.org/ws'
242#SSTATE_MIRRORS ?= "file://.* http://cdn.jsdelivr.net/yocto/sstate/all/PATH;downloadfilename=PATH" 242#SSTATE_MIRRORS ?= "file://.* http://sstate.yoctoproject.org/all/PATH;downloadfilename=PATH"
243#
244###SSTATE_MIRRORS ?= "file://.* http://sstate.yoctoproject.org/all/PATH;downloadfilename=PATH"
245
246 243
247# 244#
248# Qemu configuration 245# Qemu configuration
diff --git a/meta/classes-recipe/module.bbclass b/meta/classes-recipe/module.bbclass
index f2f0b25a2d..4948e995c5 100644
--- a/meta/classes-recipe/module.bbclass
+++ b/meta/classes-recipe/module.bbclass
@@ -65,6 +65,7 @@ module_do_install() {
65 CC="${KERNEL_CC}" LD="${KERNEL_LD}" OBJCOPY="${KERNEL_OBJCOPY}" \ 65 CC="${KERNEL_CC}" LD="${KERNEL_LD}" OBJCOPY="${KERNEL_OBJCOPY}" \
66 STRIP="${KERNEL_STRIP}" \ 66 STRIP="${KERNEL_STRIP}" \
67 O=${STAGING_KERNEL_BUILDDIR} \ 67 O=${STAGING_KERNEL_BUILDDIR} \
68 KBUILD_EXTRA_SYMBOLS="${KBUILD_EXTRA_SYMBOLS}" \
68 ${MODULES_INSTALL_TARGET} 69 ${MODULES_INSTALL_TARGET}
69 70
70 if [ ! -e "${B}/${MODULES_MODULE_SYMVERS_LOCATION}/Module.symvers" ] ; then 71 if [ ! -e "${B}/${MODULES_MODULE_SYMVERS_LOCATION}/Module.symvers" ] ; then
diff --git a/meta/classes-recipe/testimage.bbclass b/meta/classes-recipe/testimage.bbclass
index 954c213912..33b1c13f9d 100644
--- a/meta/classes-recipe/testimage.bbclass
+++ b/meta/classes-recipe/testimage.bbclass
@@ -25,7 +25,9 @@ TESTIMAGE_AUTO ??= "0"
25TESTIMAGE_FAILED_QA_ARTIFACTS = "\ 25TESTIMAGE_FAILED_QA_ARTIFACTS = "\
26 ${localstatedir}/log \ 26 ${localstatedir}/log \
27 ${sysconfdir}/version \ 27 ${sysconfdir}/version \
28 ${sysconfdir}/os-release" 28 ${sysconfdir}/os-release \
29 ${nonarch_libdir}/os-release \
30"
29 31
30# If some ptests are run and fail, retrieve corresponding directories 32# If some ptests are run and fail, retrieve corresponding directories
31TESTIMAGE_FAILED_QA_ARTIFACTS += "${@bb.utils.contains('DISTRO_FEATURES', 'ptest', '${libdir}/${MCNAME}/ptest', '', d)}" 33TESTIMAGE_FAILED_QA_ARTIFACTS += "${@bb.utils.contains('DISTRO_FEATURES', 'ptest', '${libdir}/${MCNAME}/ptest', '', d)}"
diff --git a/meta/classes-recipe/uboot-sign.bbclass b/meta/classes-recipe/uboot-sign.bbclass
index 5c579a9fb0..699db248e1 100644
--- a/meta/classes-recipe/uboot-sign.bbclass
+++ b/meta/classes-recipe/uboot-sign.bbclass
@@ -94,6 +94,8 @@ python() {
94 sign = d.getVar('UBOOT_SIGN_ENABLE') == '1' 94 sign = d.getVar('UBOOT_SIGN_ENABLE') == '1'
95 if d.getVar('UBOOT_FITIMAGE_ENABLE') == '1' or sign: 95 if d.getVar('UBOOT_FITIMAGE_ENABLE') == '1' or sign:
96 d.appendVar('DEPENDS', " u-boot-tools-native dtc-native") 96 d.appendVar('DEPENDS', " u-boot-tools-native dtc-native")
97 if d.getVar('FIT_GENERATE_KEYS') == '1' and sign:
98 d.appendVarFlag('do_uboot_assemble_fitimage', 'depends', ' virtual/kernel:do_kernel_generate_rsa_keys')
97} 99}
98 100
99concat_dtb() { 101concat_dtb() {
diff --git a/meta/classes/cve-check.bbclass b/meta/classes/cve-check.bbclass
index badfee550c..6b8376bf17 100644
--- a/meta/classes/cve-check.bbclass
+++ b/meta/classes/cve-check.bbclass
@@ -270,13 +270,14 @@ python cve_check_write_rootfs_manifest () {
270 d.setVar("PN", save_pn) 270 d.setVar("PN", save_pn)
271 271
272 if enable_text: 272 if enable_text:
273 link_path = os.path.join(deploy_dir, "%s.cve" % link_name)
274 manifest_name = d.getVar("CVE_CHECK_MANIFEST") 273 manifest_name = d.getVar("CVE_CHECK_MANIFEST")
275 274
276 with open(manifest_name, "w") as f: 275 with open(manifest_name, "w") as f:
277 f.write(text_data) 276 f.write(text_data)
278 277
279 update_symlinks(manifest_name, link_path) 278 if link_name:
279 link_path = os.path.join(deploy_dir, "%s.cve" % link_name)
280 update_symlinks(manifest_name, link_path)
280 bb.plain("Image CVE report stored in: %s" % manifest_name) 281 bb.plain("Image CVE report stored in: %s" % manifest_name)
281 282
282 if enable_json: 283 if enable_json:
diff --git a/meta/conf/distro/include/maintainers.inc b/meta/conf/distro/include/maintainers.inc
index baaf971a9a..3a51ad2139 100644
--- a/meta/conf/distro/include/maintainers.inc
+++ b/meta/conf/distro/include/maintainers.inc
@@ -190,7 +190,7 @@ RECIPE_MAINTAINER:pn-gcc-cross-canadian-${TRANSLATED_TARGET_ARCH} = "Khem Raj <r
190RECIPE_MAINTAINER:pn-gcc-crosssdk-${SDK_SYS} = "Khem Raj <raj.khem@gmail.com>" 190RECIPE_MAINTAINER:pn-gcc-crosssdk-${SDK_SYS} = "Khem Raj <raj.khem@gmail.com>"
191RECIPE_MAINTAINER:pn-gcc-runtime = "Khem Raj <raj.khem@gmail.com>" 191RECIPE_MAINTAINER:pn-gcc-runtime = "Khem Raj <raj.khem@gmail.com>"
192RECIPE_MAINTAINER:pn-gcc-sanitizers = "Khem Raj <raj.khem@gmail.com>" 192RECIPE_MAINTAINER:pn-gcc-sanitizers = "Khem Raj <raj.khem@gmail.com>"
193RECIPE_MAINTAINER:pn-gcc-source-13.3.0 = "Khem Raj <raj.khem@gmail.com>" 193RECIPE_MAINTAINER:pn-gcc-source-13.4.0 = "Khem Raj <raj.khem@gmail.com>"
194RECIPE_MAINTAINER:pn-gconf = "Ross Burton <ross.burton@arm.com>" 194RECIPE_MAINTAINER:pn-gconf = "Ross Burton <ross.burton@arm.com>"
195RECIPE_MAINTAINER:pn-gcr = "Alexander Kanavin <alex.kanavin@gmail.com>" 195RECIPE_MAINTAINER:pn-gcr = "Alexander Kanavin <alex.kanavin@gmail.com>"
196RECIPE_MAINTAINER:pn-gdb = "Khem Raj <raj.khem@gmail.com>" 196RECIPE_MAINTAINER:pn-gdb = "Khem Raj <raj.khem@gmail.com>"
@@ -210,7 +210,6 @@ RECIPE_MAINTAINER:pn-glibc = "Khem Raj <raj.khem@gmail.com>"
210RECIPE_MAINTAINER:pn-glibc-locale = "Khem Raj <raj.khem@gmail.com>" 210RECIPE_MAINTAINER:pn-glibc-locale = "Khem Raj <raj.khem@gmail.com>"
211RECIPE_MAINTAINER:pn-glibc-mtrace = "Khem Raj <raj.khem@gmail.com>" 211RECIPE_MAINTAINER:pn-glibc-mtrace = "Khem Raj <raj.khem@gmail.com>"
212RECIPE_MAINTAINER:pn-glibc-scripts = "Khem Raj <raj.khem@gmail.com>" 212RECIPE_MAINTAINER:pn-glibc-scripts = "Khem Raj <raj.khem@gmail.com>"
213RECIPE_MAINTAINER:pn-glibc-y2038-tests = "Lukasz Majewski <lukma@denx.de>"
214RECIPE_MAINTAINER:pn-glibc-testsuite = "Khem Raj <raj.khem@gmail.com>" 213RECIPE_MAINTAINER:pn-glibc-testsuite = "Khem Raj <raj.khem@gmail.com>"
215RECIPE_MAINTAINER:pn-gmp = "Khem Raj <raj.khem@gmail.com>" 214RECIPE_MAINTAINER:pn-gmp = "Khem Raj <raj.khem@gmail.com>"
216RECIPE_MAINTAINER:pn-glslang = "Jose Quaresma <quaresma.jose@gmail.com>" 215RECIPE_MAINTAINER:pn-glslang = "Jose Quaresma <quaresma.jose@gmail.com>"
diff --git a/meta/conf/distro/include/ptest-packagelists.inc b/meta/conf/distro/include/ptest-packagelists.inc
index 5975db25cc..9950e46776 100644
--- a/meta/conf/distro/include/ptest-packagelists.inc
+++ b/meta/conf/distro/include/ptest-packagelists.inc
@@ -81,8 +81,6 @@ PTESTS_FAST = "\
81 zlib \ 81 zlib \
82 libexif \ 82 libexif \
83" 83"
84PTESTS_FAST:append:libc-glibc = " glibc-y2038-tests"
85PTESTS_PROBLEMS:remove:libc-glibc = "glibc-y2038-tests"
86PTESTS_FAST:remove:mips64 = "qemu" 84PTESTS_FAST:remove:mips64 = "qemu"
87PTESTS_PROBLEMS:append:mips64 = " qemu" 85PTESTS_PROBLEMS:append:mips64 = " qemu"
88PTESTS_FAST:remove:riscv32 = "qemu" 86PTESTS_FAST:remove:riscv32 = "qemu"
@@ -104,6 +102,7 @@ PTESTS_SLOW = "\
104 libevent \ 102 libevent \
105 libgcrypt \ 103 libgcrypt \
106 libmodule-build-perl \ 104 libmodule-build-perl \
105 libpng \
107 lttng-tools \ 106 lttng-tools \
108 openssh \ 107 openssh \
109 openssl \ 108 openssl \
diff --git a/meta/conf/distro/include/time64.inc b/meta/conf/distro/include/time64.inc
index 2e85753e55..dd29105db4 100644
--- a/meta/conf/distro/include/time64.inc
+++ b/meta/conf/distro/include/time64.inc
@@ -19,7 +19,6 @@ TARGET_CC_ARCH:append:powerpc = "${@bb.utils.contains('TUNE_FEATURES', 'm32', '$
19TARGET_CC_ARCH:append:x86 = "${@bb.utils.contains('TUNE_FEATURES', 'm32', '${GLIBC_64BIT_TIME_FLAGS}', '', d)}" 19TARGET_CC_ARCH:append:x86 = "${@bb.utils.contains('TUNE_FEATURES', 'm32', '${GLIBC_64BIT_TIME_FLAGS}', '', d)}"
20 20
21GLIBC_64BIT_TIME_FLAGS:pn-glibc = "" 21GLIBC_64BIT_TIME_FLAGS:pn-glibc = ""
22GLIBC_64BIT_TIME_FLAGS:pn-glibc-y2038-tests = ""
23GLIBC_64BIT_TIME_FLAGS:pn-glibc-testsuite = "" 22GLIBC_64BIT_TIME_FLAGS:pn-glibc-testsuite = ""
24# pipewire-v4l2 explicitly sets _FILE_OFFSET_BITS=32 to get access to 23# pipewire-v4l2 explicitly sets _FILE_OFFSET_BITS=32 to get access to
25# both 32 and 64 bit file APIs. But it does not handle the time side? 24# both 32 and 64 bit file APIs. But it does not handle the time side?
@@ -36,7 +35,6 @@ GLIBC_64BIT_TIME_FLAGS:pn-gcc-sanitizers = ""
36# Caused by the flags exceptions above 35# Caused by the flags exceptions above
37INSANE_SKIP:append:pn-gcc-sanitizers = " 32bit-time" 36INSANE_SKIP:append:pn-gcc-sanitizers = " 32bit-time"
38INSANE_SKIP:append:pn-glibc = " 32bit-time" 37INSANE_SKIP:append:pn-glibc = " 32bit-time"
39INSANE_SKIP:append:pn-glibc-y2038-tests = " 32bit-time"
40INSANE_SKIP:append:pn-pulseaudio = " 32bit-time" 38INSANE_SKIP:append:pn-pulseaudio = " 32bit-time"
41 39
42# Strace has tests that call 32 bit API directly, which is fair enough, e.g. 40# Strace has tests that call 32 bit API directly, which is fair enough, e.g.
diff --git a/meta/conf/machine/include/arm/armv8r/tune-cortexr52.inc b/meta/conf/machine/include/arm/armv8r/tune-cortexr52.inc
index 89f0e09450..e8667bc16b 100644
--- a/meta/conf/machine/include/arm/armv8r/tune-cortexr52.inc
+++ b/meta/conf/machine/include/arm/armv8r/tune-cortexr52.inc
@@ -10,11 +10,10 @@ require conf/machine/include/arm/arch-armv8r.inc
10 10
11AVAILTUNES += "cortexr52" 11AVAILTUNES += "cortexr52"
12ARMPKGARCH:tune-cortexr52 = "cortexr52" 12ARMPKGARCH:tune-cortexr52 = "cortexr52"
13# We do not want -march since -mcpu is added above to cover for it 13TUNE_FEATURES:tune-cortexr52 = "${TUNE_FEATURES:tune-armv8r-crc-simd} cortexr52"
14TUNE_FEATURES:tune-cortexr52 = "aarch64 crc simd cortexr52"
15PACKAGE_EXTRA_ARCHS:tune-cortexr52 = "${PACKAGE_EXTRA_ARCHS:tune-armv8r-crc-simd} cortexr52" 14PACKAGE_EXTRA_ARCHS:tune-cortexr52 = "${PACKAGE_EXTRA_ARCHS:tune-armv8r-crc-simd} cortexr52"
16 15
17AVAILTUNES += "cortexr52hf" 16AVAILTUNES += "cortexr52hf"
18ARMPKGARCH:tune-cortexr52hf = "cortexr52" 17ARMPKGARCH:tune-cortexr52hf = "cortexr52hf"
19TUNE_FEATURES:tune-cortexr52hf = "${TUNE_FEATURES:tune-cortexr52} callconvention-hard" 18TUNE_FEATURES:tune-cortexr52hf = "${TUNE_FEATURES:tune-cortexr52} callconvention-hard"
20PACKAGE_EXTRA_ARCHS:tune-cortexr52hf = "cortexr52hf" 19PACKAGE_EXTRA_ARCHS:tune-cortexr52hf = "cortexr52hf"
diff --git a/meta/lib/oeqa/selftest/cases/sstatetests.py b/meta/lib/oeqa/selftest/cases/sstatetests.py
index 86d6cd7464..4a2c425ac8 100644
--- a/meta/lib/oeqa/selftest/cases/sstatetests.py
+++ b/meta/lib/oeqa/selftest/cases/sstatetests.py
@@ -977,7 +977,7 @@ class SStateMirrors(SStateBase):
977 self.append_config(""" 977 self.append_config("""
978MACHINE = "{}" 978MACHINE = "{}"
979BB_HASHSERVE_UPSTREAM = "hashserv.yocto.io:8687" 979BB_HASHSERVE_UPSTREAM = "hashserv.yocto.io:8687"
980SSTATE_MIRRORS ?= "file://.* http://cdn.jsdelivr.net/yocto/sstate/all/PATH;downloadfilename=PATH" 980SSTATE_MIRRORS ?= "file://.* http://sstate.yoctoproject.org/all/PATH;downloadfilename=PATH"
981""".format(machine)) 981""".format(machine))
982 else: 982 else:
983 self.append_config(""" 983 self.append_config("""
diff --git a/meta/recipes-connectivity/bluez5/bluez5.inc b/meta/recipes-connectivity/bluez5/bluez5.inc
index 731bfa0e40..53d8644159 100644
--- a/meta/recipes-connectivity/bluez5/bluez5.inc
+++ b/meta/recipes-connectivity/bluez5/bluez5.inc
@@ -57,6 +57,7 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/bluetooth/bluez-${PV}.tar.xz \
57 file://0001-tests-add-a-target-for-building-tests-without-runnin.patch \ 57 file://0001-tests-add-a-target-for-building-tests-without-runnin.patch \
58 file://0001-test-gatt-Fix-hung-issue.patch \ 58 file://0001-test-gatt-Fix-hung-issue.patch \
59 file://0001-adapter-Fix-up-address-type-when-loading-keys.patch \ 59 file://0001-adapter-Fix-up-address-type-when-loading-keys.patch \
60 file://toolsbtmgmt-fix-index-option-for-non-interactive-mode.patch \
60 " 61 "
61S = "${WORKDIR}/bluez-${PV}" 62S = "${WORKDIR}/bluez-${PV}"
62 63
diff --git a/meta/recipes-connectivity/bluez5/bluez5/toolsbtmgmt-fix-index-option-for-non-interactive-mode.patch b/meta/recipes-connectivity/bluez5/bluez5/toolsbtmgmt-fix-index-option-for-non-interactive-mode.patch
new file mode 100644
index 0000000000..f4e14be146
--- /dev/null
+++ b/meta/recipes-connectivity/bluez5/bluez5/toolsbtmgmt-fix-index-option-for-non-interactive-mode.patch
@@ -0,0 +1,29 @@
1From f00d5546c9e989dd68ce0de0190cd0e043b0f1f5 Mon Sep 17 00:00:00 2001
2From: Arjan Opmeer <arjan.opmeer@gmail.com>
3Date: Tue, 9 Jul 2024 13:55:41 +0200
4Subject: [PATCH] tools/btmgmt: Fix --index option for non-interactive mode
5
6In non-interactive mode the --index option does not work because the
7call to mgmt_set_index() is made after bt_shell_attach().
8
9Fixes: https://github.com/bluez/bluez/issues/893
10
11Upstream-Status: Backport [https://github.com/bluez/bluez/commit/f00d5546c9e989dd68ce0de0190cd0e043b0f1f5]
12---
13 tools/btmgmt.c | 2 +-
14 1 file changed, 1 insertion(+), 1 deletion(-)
15
16diff --git a/tools/btmgmt.c b/tools/btmgmt.c
17index 9b7f851bd8..436c2bb21f 100644
18--- a/tools/btmgmt.c
19+++ b/tools/btmgmt.c
20@@ -51,8 +51,8 @@ int main(int argc, char *argv[])
21 return EXIT_FAILURE;
22 }
23
24- bt_shell_attach(fileno(stdin));
25 mgmt_set_index(index_option);
26+ bt_shell_attach(fileno(stdin));
27 status = bt_shell_run();
28
29 mgmt_remove_submenu();
diff --git a/meta/recipes-connectivity/connman/connman/CVE-2025-32366.patch b/meta/recipes-connectivity/connman/connman/CVE-2025-32366.patch
new file mode 100644
index 0000000000..0eb7360685
--- /dev/null
+++ b/meta/recipes-connectivity/connman/connman/CVE-2025-32366.patch
@@ -0,0 +1,41 @@
1From 8d3be0285f1d4667bfe85dba555c663eb3d704b4 Mon Sep 17 00:00:00 2001
2From: Yoonje Shin <ioerts@kookmin.ac.kr>
3Date: Mon, 12 May 2025 10:48:18 +0200
4Subject: [PATCH] dnsproxy: Address CVE-2025-32366 vulnerability
5
6In Connman parse_rr in dnsproxy.c has a memcpy length
7that depends on an RR RDLENGTH value (i.e., *rdlen=ntohs(rr->rdlen)
8and memcpy(response+offset,*end,*rdlen)). Here, rdlen may be larger
9than the amount of remaining packet data in the current state of
10parsing. As a result, values of stack memory locations may be sent
11over the network in a response.
12
13This patch adds a check to ensure that (*end + *rdlen) does not exceed
14the valid range. If the condition is violated, the function returns
15-EINVAL.
16
17CVE: CVE-2025-32366
18
19Upstream-Status: Backport [https://git.kernel.org/pub/scm/network/connman/connman.git/commit/?id=8d3be0285f1d4667bfe85dba555c663eb3d704b4]
20
21Signed-off-by: Praveen Kumar <praveen.kumar@windriver.com>
22---
23 src/dnsproxy.c | 3 +++
24 1 file changed, 3 insertions(+)
25
26diff --git a/src/dnsproxy.c b/src/dnsproxy.c
27index 1a5a4f3..50b2d55 100644
28--- a/src/dnsproxy.c
29+++ b/src/dnsproxy.c
30@@ -985,6 +985,9 @@ static int parse_rr(const unsigned char *buf, const unsigned char *start,
31 if ((offset + *rdlen) > *response_size)
32 return -ENOBUFS;
33
34+ if ((*end + *rdlen) > max)
35+ return -EINVAL;
36+
37 memcpy(response + offset, *end, *rdlen);
38
39 *end += *rdlen;
40--
412.40.0
diff --git a/meta/recipes-connectivity/connman/connman/CVE-2025-32743.patch b/meta/recipes-connectivity/connman/connman/CVE-2025-32743.patch
new file mode 100644
index 0000000000..b31c59aa70
--- /dev/null
+++ b/meta/recipes-connectivity/connman/connman/CVE-2025-32743.patch
@@ -0,0 +1,48 @@
1From d90b911f6760959bdf1393c39fe8d1118315490f Mon Sep 17 00:00:00 2001
2From: Praveen Kumar <praveen.kumar@windriver.com>
3Date: Thu, 24 Apr 2025 11:39:29 +0000
4Subject: [PATCH] dnsproxy: Fix NULL/empty lookup causing potential crash
5
6In ConnMan through 1.44, the lookup string in ns_resolv in dnsproxy.c
7can be NULL or an empty string when the TC (Truncated) bit is set in
8a DNS response. This allows attackers to cause a denial of service
9(application crash) or possibly execute arbitrary code, because those
10lookup values lead to incorrect length calculations and incorrect
11memcpy operations.
12
13This patch includes a check to make sure loookup value is valid before
14using it. This helps avoid unexpected value when the input is empty or
15incorrect.
16
17Fixes: CVE-2025-32743
18
19CVE: CVE-2025-32743
20
21Upstream-Status: Backport [https://git.kernel.org/pub/scm/network/connman/connman.git/commit/?id=d90b911f6760959bdf1393c39fe8d1118315490f]
22
23Signed-off-by: Praveen Kumar <praveen.kumar@windriver.com>
24---
25 src/dnsproxy.c | 7 ++++++-
26 1 file changed, 6 insertions(+), 1 deletion(-)
27
28diff --git a/src/dnsproxy.c b/src/dnsproxy.c
29index 7ebffbc..1a5a4f3 100644
30--- a/src/dnsproxy.c
31+++ b/src/dnsproxy.c
32@@ -1669,8 +1669,13 @@ static int ns_resolv(struct server_data *server, struct request_data *req,
33 gpointer request, gpointer name)
34 {
35 int sk = -1;
36+ int err;
37 const char *lookup = (const char *)name;
38- int err = ns_try_resolv_from_cache(req, request, lookup);
39+
40+ if (!lookup || strlen(lookup) == 0)
41+ return -EINVAL;
42+
43+ err = ns_try_resolv_from_cache(req, request, lookup);
44
45 if (err > 0)
46 /* cache hit */
47--
482.40.0
diff --git a/meta/recipes-connectivity/connman/connman_1.42.bb b/meta/recipes-connectivity/connman/connman_1.42.bb
index 91ab9895ac..9b3abbe258 100644
--- a/meta/recipes-connectivity/connman/connman_1.42.bb
+++ b/meta/recipes-connectivity/connman/connman_1.42.bb
@@ -7,6 +7,8 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/network/${BPN}/${BP}.tar.xz \
7 file://no-version-scripts.patch \ 7 file://no-version-scripts.patch \
8 file://0001-vpn-Adding-support-for-latest-pppd-2.5.0-release.patch \ 8 file://0001-vpn-Adding-support-for-latest-pppd-2.5.0-release.patch \
9 file://0001-src-log.c-Include-libgen.h-for-basename-API.patch \ 9 file://0001-src-log.c-Include-libgen.h-for-basename-API.patch \
10 file://CVE-2025-32743.patch \
11 file://CVE-2025-32366.patch \
10 " 12 "
11 13
12SRC_URI:append:libc-musl = " file://0002-resolve-musl-does-not-implement-res_ninit.patch" 14SRC_URI:append:libc-musl = " file://0002-resolve-musl-does-not-implement-res_ninit.patch"
diff --git a/meta/recipes-connectivity/kea/kea_2.4.1.bb b/meta/recipes-connectivity/kea/kea_2.4.2.bb
index fcdb4889d9..6bb7cb9164 100644
--- a/meta/recipes-connectivity/kea/kea_2.4.1.bb
+++ b/meta/recipes-connectivity/kea/kea_2.4.2.bb
@@ -3,7 +3,7 @@ DESCRIPTION = "Kea is the next generation of DHCP software developed by ISC. It
3HOMEPAGE = "http://kea.isc.org" 3HOMEPAGE = "http://kea.isc.org"
4SECTION = "connectivity" 4SECTION = "connectivity"
5LICENSE = "MPL-2.0" 5LICENSE = "MPL-2.0"
6LIC_FILES_CHKSUM = "file://COPYING;md5=ea061fa0188838072c4248c1318ec131" 6LIC_FILES_CHKSUM = "file://COPYING;md5=ee16e7280a6cf2a1487717faf33190dc"
7 7
8DEPENDS = "boost log4cplus openssl" 8DEPENDS = "boost log4cplus openssl"
9 9
@@ -18,7 +18,7 @@ SRC_URI = "http://ftp.isc.org/isc/kea/${PV}/${BP}.tar.gz \
18 file://fix_pid_keactrl.patch \ 18 file://fix_pid_keactrl.patch \
19 file://0001-src-lib-log-logger_unittest_support.cc-do-not-write-.patch \ 19 file://0001-src-lib-log-logger_unittest_support.cc-do-not-write-.patch \
20 " 20 "
21SRC_URI[sha256sum] = "815c61f5c271caa4a1db31dd656eb50a7f6ea973da3690f7c8581408e180131a" 21SRC_URI[sha256sum] = "6e82fb319d3b871c0d39bbd504f2cda0c66fa1262865872985fb4fb91b4eaafc"
22 22
23inherit autotools systemd update-rc.d upstream-version-is-even 23inherit autotools systemd update-rc.d upstream-version-is-even
24 24
diff --git a/meta/recipes-connectivity/nfs-utils/nfs-utils/nfsserver b/meta/recipes-connectivity/nfs-utils/nfs-utils/nfsserver
index 0f5747cc6d..4d78312929 100644
--- a/meta/recipes-connectivity/nfs-utils/nfs-utils/nfsserver
+++ b/meta/recipes-connectivity/nfs-utils/nfs-utils/nfsserver
@@ -66,34 +66,14 @@ start_nfsd(){
66 start-stop-daemon --start --exec "$NFS_NFSD" -- "$@" 66 start-stop-daemon --start --exec "$NFS_NFSD" -- "$@"
67 echo done 67 echo done
68} 68}
69delay_nfsd(){
70 for delay in 0 1 2 3 4 5 6 7 8 9
71 do
72 if pidof nfsd >/dev/null
73 then
74 echo -n .
75 sleep 1
76 else
77 return 0
78 fi
79 done
80 return 1
81}
82stop_nfsd(){ 69stop_nfsd(){
83 # WARNING: this kills any process with the executable
84 # name 'nfsd'.
85 echo -n 'stopping nfsd: ' 70 echo -n 'stopping nfsd: '
86 start-stop-daemon --stop --quiet --signal 1 --name nfsd 71 $NFS_NFSD 0
87 if delay_nfsd || { 72 if pidof nfsd
88 echo failed
89 echo ' using signal 9: '
90 start-stop-daemon --stop --quiet --signal 9 --name nfsd
91 delay_nfsd
92 }
93 then 73 then
94 echo done
95 else
96 echo failed 74 echo failed
75 else
76 echo done
97 fi 77 fi
98} 78}
99 79
diff --git a/meta/recipes-connectivity/openssh/openssh/CVE-2025-32728.patch b/meta/recipes-connectivity/openssh/openssh/CVE-2025-32728.patch
new file mode 100644
index 0000000000..72fc0073e8
--- /dev/null
+++ b/meta/recipes-connectivity/openssh/openssh/CVE-2025-32728.patch
@@ -0,0 +1,44 @@
1From fc86875e6acb36401dfc1dfb6b628a9d1460f367 Mon Sep 17 00:00:00 2001
2From: "djm@openbsd.org" <djm@openbsd.org>
3Date: Wed, 9 Apr 2025 07:00:03 +0000
4Subject: [PATCH] upstream: Fix logic error in DisableForwarding option. This
5 option
6
7was documented as disabling X11 and agent forwarding but it failed to do so.
8Spotted by Tim Rice.
9
10OpenBSD-Commit-ID: fffc89195968f7eedd2fc57f0b1f1ef3193f5ed1
11
12Upstream-Status: Backport [https://github.com/openssh/openssh-portable/commit/fc86875e6acb36401dfc1dfb6b628a9d1460f367]
13CVE: CVE-2025-32728
14Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
15---
16 session.c | 5 +++--
17 1 file changed, 3 insertions(+), 2 deletions(-)
18
19diff --git a/session.c b/session.c
20index aa342e8..eb932b8 100644
21--- a/session.c
22+++ b/session.c
23@@ -2191,7 +2191,8 @@ session_auth_agent_req(struct ssh *ssh, Session *s)
24 if ((r = sshpkt_get_end(ssh)) != 0)
25 sshpkt_fatal(ssh, r, "%s: parse packet", __func__);
26 if (!auth_opts->permit_agent_forwarding_flag ||
27- !options.allow_agent_forwarding) {
28+ !options.allow_agent_forwarding ||
29+ options.disable_forwarding) {
30 debug_f("agent forwarding disabled");
31 return 0;
32 }
33@@ -2586,7 +2587,7 @@ session_setup_x11fwd(struct ssh *ssh, Session *s)
34 ssh_packet_send_debug(ssh, "X11 forwarding disabled by key options.");
35 return 0;
36 }
37- if (!options.x11_forwarding) {
38+ if (!options.x11_forwarding || options.disable_forwarding) {
39 debug("X11 forwarding disabled in server configuration file.");
40 return 0;
41 }
42--
432.25.1
44
diff --git a/meta/recipes-connectivity/openssh/openssh_9.6p1.bb b/meta/recipes-connectivity/openssh/openssh_9.6p1.bb
index 6ae4c81a42..afcd50c7e6 100644
--- a/meta/recipes-connectivity/openssh/openssh_9.6p1.bb
+++ b/meta/recipes-connectivity/openssh/openssh_9.6p1.bb
@@ -31,6 +31,7 @@ SRC_URI = "http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-${PV}.tar
31 file://0001-Fix-missing-header-for-systemd-notification.patch \ 31 file://0001-Fix-missing-header-for-systemd-notification.patch \
32 file://CVE-2025-26466.patch \ 32 file://CVE-2025-26466.patch \
33 file://CVE-2025-26465.patch \ 33 file://CVE-2025-26465.patch \
34 file://CVE-2025-32728.patch \
34 " 35 "
35SRC_URI[sha256sum] = "910211c07255a8c5ad654391b40ee59800710dd8119dd5362de09385aa7a777c" 36SRC_URI[sha256sum] = "910211c07255a8c5ad654391b40ee59800710dd8119dd5362de09385aa7a777c"
36 37
diff --git a/meta/recipes-core/coreutils/coreutils/CVE-2025-5278.patch b/meta/recipes-core/coreutils/coreutils/CVE-2025-5278.patch
new file mode 100644
index 0000000000..41be1635b5
--- /dev/null
+++ b/meta/recipes-core/coreutils/coreutils/CVE-2025-5278.patch
@@ -0,0 +1,112 @@
1From 8763c305c29d0abb7e2be4695212b42917d054b2 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?P=C3=A1draig=20Brady?= <P@draigBrady.com>
3Date: Tue, 20 May 2025 16:03:44 +0100
4Subject: [PATCH] sort: fix buffer under-read (CWE-127)
5
6* src/sort.c (begfield): Check pointer adjustment
7to avoid Out-of-range pointer offset (CWE-823).
8(limfield): Likewise.
9* tests/sort/sort-field-limit.sh: Add a new test,
10which triggers with ASAN or Valgrind.
11* tests/local.mk: Reference the new test.
12* NEWS: Mention bug fix introduced in v7.2 (2009).
13Fixes https://bugs.gnu.org/78507
14
15CVE: CVE-2025-5278
16
17Upstream-Status: Backport [https://cgit.git.savannah.gnu.org/cgit/coreutils.git/commit/?id=8c9602e3a145e9596dc1a63c6ed67865814b6633]
18
19Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
20---
21 src/sort.c | 12 ++++++++++--
22 tests/local.mk | 1 +
23 tests/sort/sort-field-limit.sh | 35 ++++++++++++++++++++++++++++++++++
24 3 files changed, 46 insertions(+), 2 deletions(-)
25 create mode 100755 tests/sort/sort-field-limit.sh
26
27diff --git a/src/sort.c b/src/sort.c
28index b10183b6f..7af1a2512 100644
29--- a/src/sort.c
30+++ b/src/sort.c
31@@ -1644,7 +1644,11 @@ begfield (struct line const *line, struct keyfield const *key)
32 ++ptr;
33
34 /* Advance PTR by SCHAR (if possible), but no further than LIM. */
35- ptr = MIN (lim, ptr + schar);
36+ size_t remaining_bytes = lim - ptr;
37+ if (schar < remaining_bytes)
38+ ptr += schar;
39+ else
40+ ptr = lim;
41
42 return ptr;
43 }
44@@ -1746,7 +1750,11 @@ limfield (struct line const *line, struct keyfield const *key)
45 ++ptr;
46
47 /* Advance PTR by ECHAR (if possible), but no further than LIM. */
48- ptr = MIN (lim, ptr + echar);
49+ size_t remaining_bytes = lim - ptr;
50+ if (echar < remaining_bytes)
51+ ptr += echar;
52+ else
53+ ptr = lim;
54 }
55
56 return ptr;
57diff --git a/tests/local.mk b/tests/local.mk
58index 4da6756ac..642d225fa 100644
59--- a/tests/local.mk
60+++ b/tests/local.mk
61@@ -388,6 +388,7 @@ all_tests = \
62 tests/sort/sort-debug-keys.sh \
63 tests/sort/sort-debug-warn.sh \
64 tests/sort/sort-discrim.sh \
65+ tests/sort/sort-field-limit.sh \
66 tests/sort/sort-files0-from.pl \
67 tests/sort/sort-float.sh \
68 tests/sort/sort-h-thousands-sep.sh \
69diff --git a/tests/sort/sort-field-limit.sh b/tests/sort/sort-field-limit.sh
70new file mode 100755
71index 000000000..52d8e1d17
72--- /dev/null
73+++ b/tests/sort/sort-field-limit.sh
74@@ -0,0 +1,35 @@
75+#!/bin/sh
76+# From 7.2-9.7, this would trigger an out of bounds mem read
77+
78+# Copyright (C) 2025 Free Software Foundation, Inc.
79+
80+# This program is free software: you can redistribute it and/or modify
81+# it under the terms of the GNU General Public License as published by
82+# the Free Software Foundation, either version 3 of the License, or
83+# (at your option) any later version.
84+
85+# This program is distributed in the hope that it will be useful,
86+# but WITHOUT ANY WARRANTY; without even the implied warranty of
87+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
88+# GNU General Public License for more details.
89+
90+# You should have received a copy of the GNU General Public License
91+# along with this program. If not, see <https://www.gnu.org/licenses/>.
92+
93+. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
94+print_ver_ sort
95+getlimits_
96+
97+# This issue triggers with valgrind or ASAN
98+valgrind --error-exitcode=1 sort --version 2>/dev/null &&
99+ VALGRIND='valgrind --error-exitcode=1'
100+
101+{ printf '%s\n' aa bb; } > in || framework_failure_
102+
103+_POSIX2_VERSION=200809 $VALGRIND sort +0.${SIZE_MAX}R in > out || fail=1
104+compare in out || fail=1
105+
106+_POSIX2_VERSION=200809 $VALGRIND sort +1 -1.${SIZE_MAX}R in > out || fail=1
107+compare in out || fail=1
108+
109+Exit $fail
110--
1112.34.1
112
diff --git a/meta/recipes-core/coreutils/coreutils_9.4.bb b/meta/recipes-core/coreutils/coreutils_9.4.bb
index 62ecdea6ec..caed1f8c49 100644
--- a/meta/recipes-core/coreutils/coreutils_9.4.bb
+++ b/meta/recipes-core/coreutils/coreutils_9.4.bb
@@ -18,6 +18,7 @@ SRC_URI = "${GNU_MIRROR}/coreutils/${BP}.tar.xz \
18 file://0001-local.mk-fix-cross-compiling-problem.patch \ 18 file://0001-local.mk-fix-cross-compiling-problem.patch \
19 file://0001-posixtm-pacify-clang-18.patch \ 19 file://0001-posixtm-pacify-clang-18.patch \
20 file://CVE-2024-0684.patch \ 20 file://CVE-2024-0684.patch \
21 file://CVE-2025-5278.patch \
21 file://run-ptest \ 22 file://run-ptest \
22 " 23 "
23SRC_URI[sha256sum] = "ea613a4cf44612326e917201bbbcdfbd301de21ffc3b59b6e5c07e040b275e52" 24SRC_URI[sha256sum] = "ea613a4cf44612326e917201bbbcdfbd301de21ffc3b59b6e5c07e040b275e52"
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-4373-01.patch b/meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-4373-01.patch
new file mode 100644
index 0000000000..f99c4de7e1
--- /dev/null
+++ b/meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-4373-01.patch
@@ -0,0 +1,120 @@
1From cc647f9e46d55509a93498af19659baf9c80f2e3 Mon Sep 17 00:00:00 2001
2From: Michael Catanzaro <mcatanzaro@redhat.com>
3Date: Thu, 10 Apr 2025 10:57:20 -0500
4Subject: [PATCH 1/2] gstring: carefully handle gssize parameters
5
6Wherever we use gssize to allow passing -1, we need to ensure we don't
7overflow the value by assigning a gsize to it without checking if the
8size exceeds the maximum gssize. The safest way to do this is to just
9use normal gsize everywhere instead and use gssize only for the
10parameter.
11
12Our computers don't have enough RAM to write tests for this. I tried
13forcing string->len to high values for test purposes, but this isn't
14valid and will just cause out of bounds reads/writes due to
15string->allocated_len being unexpectedly small, so I don't think we can
16test this easily.
17
18CVE: CVE-2025-4373
19
20Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/commit/cc647f9e46d55509a93498af19659baf9c80f2e3]
21
22Signed-off-by: Praveen Kumar <praveen.kumar@windriver.com>
23---
24 glib/gstring.c | 36 +++++++++++++++++++++++-------------
25 1 file changed, 23 insertions(+), 13 deletions(-)
26
27diff --git a/glib/gstring.c b/glib/gstring.c
28index 9f04144..d016b65 100644
29--- a/glib/gstring.c
30+++ b/glib/gstring.c
31@@ -490,8 +490,9 @@ g_string_insert_len (GString *string,
32 return string;
33
34 if (len < 0)
35- len = strlen (val);
36- len_unsigned = len;
37+ len_unsigned = strlen (val);
38+ else
39+ len_unsigned = len;
40
41 if (pos < 0)
42 pos_unsigned = string->len;
43@@ -788,10 +789,12 @@ g_string_insert_c (GString *string,
44 g_string_maybe_expand (string, 1);
45
46 if (pos < 0)
47- pos = string->len;
48+ pos_unsigned = string->len;
49 else
50- g_return_val_if_fail ((gsize) pos <= string->len, string);
51- pos_unsigned = pos;
52+ {
53+ pos_unsigned = pos;
54+ g_return_val_if_fail (pos_unsigned <= string->len, string);
55+ }
56
57 /* If not just an append, move the old stuff */
58 if (pos_unsigned < string->len)
59@@ -824,6 +827,7 @@ g_string_insert_unichar (GString *string,
60 gssize pos,
61 gunichar wc)
62 {
63+ gsize pos_unsigned;
64 gint charlen, first, i;
65 gchar *dest;
66
67@@ -865,15 +869,18 @@ g_string_insert_unichar (GString *string,
68 g_string_maybe_expand (string, charlen);
69
70 if (pos < 0)
71- pos = string->len;
72+ pos_unsigned = string->len;
73 else
74- g_return_val_if_fail ((gsize) pos <= string->len, string);
75+ {
76+ pos_unsigned = pos;
77+ g_return_val_if_fail (pos_unsigned <= string->len, string);
78+ }
79
80 /* If not just an append, move the old stuff */
81- if ((gsize) pos < string->len)
82- memmove (string->str + pos + charlen, string->str + pos, string->len - pos);
83+ if (pos_unsigned < string->len)
84+ memmove (string->str + pos_unsigned + charlen, string->str + pos_unsigned, string->len - pos_unsigned);
85
86- dest = string->str + pos;
87+ dest = string->str + pos_unsigned;
88 /* Code copied from g_unichar_to_utf() */
89 for (i = charlen - 1; i > 0; --i)
90 {
91@@ -931,6 +938,7 @@ g_string_overwrite_len (GString *string,
92 const gchar *val,
93 gssize len)
94 {
95+ gssize len_unsigned;
96 gsize end;
97
98 g_return_val_if_fail (string != NULL, NULL);
99@@ -942,14 +950,16 @@ g_string_overwrite_len (GString *string,
100 g_return_val_if_fail (pos <= string->len, string);
101
102 if (len < 0)
103- len = strlen (val);
104+ len_unsigned = strlen (val);
105+ else
106+ len_unsigned = len;
107
108- end = pos + len;
109+ end = pos + len_unsigned;
110
111 if (end > string->len)
112 g_string_maybe_expand (string, end - string->len);
113
114- memcpy (string->str + pos, val, len);
115+ memcpy (string->str + pos, val, len_unsigned);
116
117 if (end > string->len)
118 {
119--
1202.40.0
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-4373-02.patch b/meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-4373-02.patch
new file mode 100644
index 0000000000..ea586c90dc
--- /dev/null
+++ b/meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-4373-02.patch
@@ -0,0 +1,29 @@
1From 4d435bb4809793c445846db8fb87e3c9184c4703 Mon Sep 17 00:00:00 2001
2From: Peter Bloomfield <peterbloomfield@bellsouth.net>
3Date: Fri, 11 Apr 2025 05:52:33 +0000
4Subject: [PATCH 2/2] gstring: Make len_unsigned unsigned
5
6CVE: CVE-2025-4373
7
8Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/commit/4d435bb4809793c445846db8fb87e3c9184c4703]
9
10Signed-off-by: Praveen Kumar <praveen.kumar@windriver.com>
11---
12 glib/gstring.c | 2 +-
13 1 file changed, 1 insertion(+), 1 deletion(-)
14
15diff --git a/glib/gstring.c b/glib/gstring.c
16index d016b65..d9ad0c3 100644
17--- a/glib/gstring.c
18+++ b/glib/gstring.c
19@@ -938,7 +938,7 @@ g_string_overwrite_len (GString *string,
20 const gchar *val,
21 gssize len)
22 {
23- gssize len_unsigned;
24+ gsize len_unsigned;
25 gsize end;
26
27 g_return_val_if_fail (string != NULL, NULL);
28--
292.40.0
diff --git a/meta/recipes-core/glib-2.0/glib-2.0_2.78.6.bb b/meta/recipes-core/glib-2.0/glib-2.0_2.78.6.bb
index 1a65f48399..e1a3b57270 100644
--- a/meta/recipes-core/glib-2.0/glib-2.0_2.78.6.bb
+++ b/meta/recipes-core/glib-2.0/glib-2.0_2.78.6.bb
@@ -27,6 +27,8 @@ SRC_URI = "${GNOME_MIRROR}/glib/${SHRT_VER}/glib-${PV}.tar.xz \
27 file://CVE-2025-3360-04.patch \ 27 file://CVE-2025-3360-04.patch \
28 file://CVE-2025-3360-05.patch \ 28 file://CVE-2025-3360-05.patch \
29 file://CVE-2025-3360-06.patch \ 29 file://CVE-2025-3360-06.patch \
30 file://CVE-2025-4373-01.patch \
31 file://CVE-2025-4373-02.patch \
30 " 32 "
31SRC_URI:append:class-native = " file://relocate-modules.patch \ 33SRC_URI:append:class-native = " file://relocate-modules.patch \
32 file://0001-meson.build-do-not-enable-pidfd-features-on-native-g.patch \ 34 file://0001-meson.build-do-not-enable-pidfd-features-on-native-g.patch \
diff --git a/meta/recipes-core/glibc/glibc-version.inc b/meta/recipes-core/glibc/glibc-version.inc
index 040fc793b1..0130613936 100644
--- a/meta/recipes-core/glibc/glibc-version.inc
+++ b/meta/recipes-core/glibc/glibc-version.inc
@@ -1,6 +1,6 @@
1SRCBRANCH ?= "release/2.39/master" 1SRCBRANCH ?= "release/2.39/master"
2PV = "2.39+git" 2PV = "2.39+git"
3SRCREV_glibc ?= "3463100f2d47f2897a24ba8023a5c7aaf2d26550" 3SRCREV_glibc ?= "06a70769fd0b2e1f2a3085ad50ab620282bd77b3"
4SRCREV_localedef ?= "fab74f31b3811df543e24b6de47efdf45b538abc" 4SRCREV_localedef ?= "fab74f31b3811df543e24b6de47efdf45b538abc"
5 5
6GLIBC_GIT_URI ?= "git://sourceware.org/git/glibc.git;protocol=https" 6GLIBC_GIT_URI ?= "git://sourceware.org/git/glibc.git;protocol=https"
diff --git a/meta/recipes-core/glibc/glibc-y2038-tests_2.39.bb b/meta/recipes-core/glibc/glibc-y2038-tests_2.39.bb
deleted file mode 100644
index be49ca4cb7..0000000000
--- a/meta/recipes-core/glibc/glibc-y2038-tests_2.39.bb
+++ /dev/null
@@ -1,119 +0,0 @@
1require glibc_${PV}.bb
2require glibc-tests.inc
3
4inherit ptest features_check
5REQUIRED_DISTRO_FEATURES = "ptest"
6
7SRC_URI += "\
8 file://run-ptest \
9"
10
11SUMMARY = "glibc tests using time32/time64 interfaces to be run with ptest for the purpose of checking y2038 compatiblity"
12
13# Erase some variables already set by glibc_${PV}
14python __anonymous() {
15 # Remove packages provided by glibc build, we only need a subset of them
16 d.setVar("PACKAGES", "${PN} ${PN}-ptest")
17
18 d.setVar("PROVIDES", "${PN} ${PN}-ptest")
19
20 bbclassextend = d.getVar("BBCLASSEXTEND").replace("nativesdk", "").strip()
21 d.setVar("BBCLASSEXTEND", bbclassextend)
22 d.setVar("RRECOMMENDS", "")
23 d.setVar("SYSTEMD_SERVICE:nscd", "")
24 d.setVar("SYSTEMD_PACKAGES", "")
25}
26
27# Remove any leftovers from original glibc recipe
28RPROVIDES:${PN} = "${PN}"
29RRECOMMENDS:${PN} = ""
30RDEPENDS:${PN} = "glibc libgcc sed bash"
31RDEPENDS:${PN}-ptest = "${PN}"
32DEPENDS += "sed"
33
34export oe_srcdir="${exec_prefix}/src/debug/glibc/${PV}/"
35
36# Just build tests for target - do not run them
37do_check:append () {
38 oe_runmake -i check run-built-tests=no
39}
40addtask do_check after do_compile before do_install_ptest_base
41
42glibc_strip_build_directory () {
43 # Delete all non executable files from build directory
44 find ${B} ! -executable -type f -delete
45
46 # Remove build dynamic libraries and links to them as
47 # those are already installed in the target device
48 find ${B} -type f -name "*.so" -delete
49 find ${B} -type l -name "*.so*" -delete
50
51 # Remove headers (installed with glibc)
52 find ${B} -type f -name "*.h" -delete
53
54 find ${B} -type f -name "isomac" -delete
55 find ${B} -type f -name "annexc" -delete
56}
57
58do_install_ptest_base () {
59 glibc_strip_build_directory
60
61 ls -r ${B}/*/*-time64 > ${B}/tst_time64
62
63 # Remove '-time64' suffix - those tests are also time related
64 sed -e "s/-time64$//" ${B}/tst_time64 > ${B}/tst_time_tmp
65 tst_time=$(cat ${B}/tst_time_tmp ${B}/tst_time64)
66
67 rm ${B}/tst_time_tmp ${B}/tst_time64
68 echo "${tst_time}"
69
70 # Install build test programs to the image
71 install -d ${D}${PTEST_PATH}/tests/glibc-ptest/
72
73 for f in "${tst_time}"
74 do
75 cp -r ${f} ${D}${PTEST_PATH}/tests/glibc-ptest/
76 done
77
78 install -d ${D}${PTEST_PATH}
79 cp ${WORKDIR}/run-ptest ${D}${PTEST_PATH}/
80
81}
82
83# The datadir directory is required to allow core (and reused)
84# glibc cleanup function to finish correctly, as this directory
85# is not created for ptests
86stash_locale_package_cleanup:prepend () {
87 mkdir -p ${PKGD}${datadir}
88}
89
90stash_locale_sysroot_cleanup:prepend () {
91 mkdir -p ${SYSROOT_DESTDIR}${datadir}
92}
93
94# Prevent the do_package() task to set 'libc6' prefix
95# for glibc tests related packages
96python populate_packages:prepend () {
97 if d.getVar('DEBIAN_NAMES'):
98 d.setVar('DEBIAN_NAMES', '')
99}
100
101FILES:${PN} = "${PTEST_PATH}/* /usr/src/debug/${PN}/*"
102
103EXCLUDE_FROM_SHLIBS = "1"
104
105# Install debug data in .debug and sources in /usr/src/debug
106# It is more handy to have _all_ the sources and symbols in one
107# place (package) as this recipe will be used for validation and
108# debugging.
109PACKAGE_DEBUG_SPLIT_STYLE = ".debug"
110
111# glibc test cases violate by default some Yocto/OE checks (staticdev,
112# textrel)
113# 'debug-files' - add everything (including debug) into one package
114# (no need to install/build *-src package)
115INSANE_SKIP:${PN} += "staticdev textrel debug-files rpaths"
116
117deltask do_stash_locale
118do_install[noexec] = "1"
119do_populate_sysroot[noexec] = "1"
diff --git a/meta/recipes-core/glibc/glibc/0001-stdlib-Add-single-threaded-fast-path-to-rand.patch b/meta/recipes-core/glibc/glibc/0001-stdlib-Add-single-threaded-fast-path-to-rand.patch
new file mode 100644
index 0000000000..736fc51f38
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0001-stdlib-Add-single-threaded-fast-path-to-rand.patch
@@ -0,0 +1,47 @@
1From 4f54b0dfc16dbe0df86afccb90e447df5f7f571e Mon Sep 17 00:00:00 2001
2From: Wilco Dijkstra <wilco.dijkstra@arm.com>
3Date: Mon, 18 Mar 2024 15:18:20 +0000
4Subject: [PATCH] stdlib: Add single-threaded fast path to rand()
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9Improve performance of rand() and __random() by adding a single-threaded
10fast path. Bench-random-lock shows about 5x speedup on Neoverse V1.
11
12Upstream-Status: Backport [be0cfd848d9ad7378800d6302bc11467cf2b514f]
13
14Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
15Signed-off-by: Haixiao Yan <haixiao.yan.cn@windriver.com>
16---
17 stdlib/random.c | 7 +++++++
18 1 file changed, 7 insertions(+)
19
20diff --git a/stdlib/random.c b/stdlib/random.c
21index 17cc61ba8f55..5d482a857065 100644
22--- a/stdlib/random.c
23+++ b/stdlib/random.c
24@@ -51,6 +51,7 @@
25 SUCH DAMAGE.*/
26
27 #include <libc-lock.h>
28+#include <sys/single_threaded.h>
29 #include <limits.h>
30 #include <stddef.h>
31 #include <stdlib.h>
32@@ -288,6 +289,12 @@ __random (void)
33 {
34 int32_t retval;
35
36+ if (SINGLE_THREAD_P)
37+ {
38+ (void) __random_r (&unsafe_state, &retval);
39+ return retval;
40+ }
41+
42 __libc_lock_lock (lock);
43
44 (void) __random_r (&unsafe_state, &retval);
45--
462.34.1
47
diff --git a/meta/recipes-core/glibc/glibc/0016-wordsize.h-Unify-the-header-between-arm-and-aarch64.patch b/meta/recipes-core/glibc/glibc/0016-wordsize.h-Unify-the-header-between-arm-and-aarch64.patch
index 9bdfa76318..411ca55d9f 100644
--- a/meta/recipes-core/glibc/glibc/0016-wordsize.h-Unify-the-header-between-arm-and-aarch64.patch
+++ b/meta/recipes-core/glibc/glibc/0016-wordsize.h-Unify-the-header-between-arm-and-aarch64.patch
@@ -14,6 +14,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
14 sysdeps/aarch64/bits/wordsize.h | 11 +++++++++-- 14 sysdeps/aarch64/bits/wordsize.h | 11 +++++++++--
15 sysdeps/arm/bits/wordsize.h | 22 +--------------------- 15 sysdeps/arm/bits/wordsize.h | 22 +---------------------
16 2 files changed, 10 insertions(+), 23 deletions(-) 16 2 files changed, 10 insertions(+), 23 deletions(-)
17 mode change 100644 => 120000 sysdeps/arm/bits/wordsize.h
17 18
18diff --git a/sysdeps/aarch64/bits/wordsize.h b/sysdeps/aarch64/bits/wordsize.h 19diff --git a/sysdeps/aarch64/bits/wordsize.h b/sysdeps/aarch64/bits/wordsize.h
19index 118e59172d..ff86359fe8 100644 20index 118e59172d..ff86359fe8 100644
diff --git a/meta/recipes-core/glibc/glibc/0022-Avoid-hardcoded-build-time-paths-in-the-output-binar.patch b/meta/recipes-core/glibc/glibc/0022-Avoid-hardcoded-build-time-paths-in-the-output-binar.patch
index b527ddffc8..9e27a51e41 100644
--- a/meta/recipes-core/glibc/glibc/0022-Avoid-hardcoded-build-time-paths-in-the-output-binar.patch
+++ b/meta/recipes-core/glibc/glibc/0022-Avoid-hardcoded-build-time-paths-in-the-output-binar.patch
@@ -17,7 +17,7 @@ diff --git a/support/Makefile b/support/Makefile
17index 362a51f882..56d2b37058 100644 17index 362a51f882..56d2b37058 100644
18--- a/support/Makefile 18--- a/support/Makefile
19+++ b/support/Makefile 19+++ b/support/Makefile
20@@ -228,9 +228,9 @@ libsupport-inhibit-o += .o 20@@ -229,9 +229,9 @@ libsupport-inhibit-o += .o
21 endif 21 endif
22 22
23 CFLAGS-support_paths.c = \ 23 CFLAGS-support_paths.c = \
diff --git a/meta/recipes-core/glibc/glibc/0023-qemu-stale-process.patch b/meta/recipes-core/glibc/glibc/0023-qemu-stale-process.patch
index c0a467fcec..7c44acb013 100644
--- a/meta/recipes-core/glibc/glibc/0023-qemu-stale-process.patch
+++ b/meta/recipes-core/glibc/glibc/0023-qemu-stale-process.patch
@@ -22,16 +22,16 @@ diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefil
22 tst-sigtimedwait \ 22 tst-sigtimedwait \
23 tst-sync_file_range \ 23 tst-sync_file_range \
24 tst-sysconf-iov_max \ 24 tst-sysconf-iov_max \
25@@ -233,6 +232,8 @@ 25@@ -234,6 +233,8 @@ tests += \
26 tst-timerfd \ 26 tst-timerfd \
27 tst-ttyname-direct \ 27 tst-ttyname-direct \
28 tst-ttyname-namespace \ 28 tst-ttyname-namespace \
29+ # Skip this test to avoid stale qemu process 29+ # Skip this test to avoid stale qemu process
30+ # tst-scm_rights \ 30+ # tst-scm_rights \
31 # tests 31 # tests
32 32
33 # process_madvise requires CAP_SYS_ADMIN. 33 # process_madvise requires CAP_SYS_ADMIN.
34@@ -270,9 +271,10 @@ 34@@ -271,9 +272,10 @@ tests-time64 += \
35 tst-ntp_gettimex-time64 \ 35 tst-ntp_gettimex-time64 \
36 tst-ppoll-time64 \ 36 tst-ppoll-time64 \
37 tst-prctl-time64 \ 37 tst-prctl-time64 \
@@ -41,5 +41,5 @@ diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefil
41+ # Skip this test to avoid stale qemu process 41+ # Skip this test to avoid stale qemu process
42+ # tst-scm_rights-time64 \ 42+ # tst-scm_rights-time64 \
43 # tests-time64 43 # tests-time64
44 44
45 tests-clone-internal = \ 45 tests-clone-internal = \
diff --git a/meta/recipes-core/glibc/glibc/run-ptest b/meta/recipes-core/glibc/glibc/run-ptest
deleted file mode 100755
index cb71c75682..0000000000
--- a/meta/recipes-core/glibc/glibc/run-ptest
+++ /dev/null
@@ -1,37 +0,0 @@
1#!/bin/bash
2# ptest script for glibc - to run time related tests to
3# facilitate Y2038 validation
4# Run with 'ptest-runner glibc-tests'
5
6output() {
7 retcode=$?
8 if [ $retcode -eq 0 ]
9 then echo "PASS: $i"
10 elif [ $retcode -eq 77 ]
11 then echo "SKIP: $i"
12 else echo "FAIL: $i"
13 fi
14}
15
16# Allow altering time on the target
17export GLIBC_TEST_ALLOW_TIME_SETTING="1"
18
19tst_time64=$(ls -r ${PWD}/tests/glibc-ptest/*-time64)
20
21# Remove '-time64' suffix - those tests are also time
22# related
23tst_time_tmp=$(sed -e "s/-time64$//" <<< ${tst_time64})
24
25# Do not run tests supporting only 32 bit time
26#for i in ${tst_time_tmp}
27#do
28# $i >/dev/null 2>&1
29# output
30#done
31
32# Run tests supporting only 64 bit time
33for i in ${tst_time64}
34do
35 $i >/dev/null 2>&1
36 output
37done
diff --git a/meta/recipes-core/glibc/glibc_2.39.bb b/meta/recipes-core/glibc/glibc_2.39.bb
index 8373db2c4f..c87eb76f41 100644
--- a/meta/recipes-core/glibc/glibc_2.39.bb
+++ b/meta/recipes-core/glibc/glibc_2.39.bb
@@ -17,7 +17,8 @@ Allows for ASLR bypass so can bypass some hardening, not an exploit in itself, m
17easier access for another. 'ASLR bypass itself is not a vulnerability.'" 17easier access for another. 'ASLR bypass itself is not a vulnerability.'"
18 18
19CVE_STATUS_GROUPS += "CVE_STATUS_STABLE_BACKPORTS" 19CVE_STATUS_GROUPS += "CVE_STATUS_STABLE_BACKPORTS"
20CVE_STATUS_STABLE_BACKPORTS = "CVE-2024-2961 CVE-2024-33599 CVE-2024-33600 CVE-2024-33601 CVE-2024-33602 CVE-2025-0395" 20CVE_STATUS_STABLE_BACKPORTS = "CVE-2024-2961 CVE-2024-33599 CVE-2024-33600 CVE-2024-33601 CVE-2024-33602 CVE-2025-0395 \
21 CVE-2025-4802 CVE-2025-5702"
21CVE_STATUS_STABLE_BACKPORTS[status] = "cpe-stable-backport: fix available in used git hash" 22CVE_STATUS_STABLE_BACKPORTS[status] = "cpe-stable-backport: fix available in used git hash"
22 23
23DEPENDS += "gperf-native bison-native" 24DEPENDS += "gperf-native bison-native"
@@ -53,6 +54,7 @@ SRC_URI = "${GLIBC_GIT_URI};branch=${SRCBRANCH};name=glibc \
53 file://0021-fix-create-thread-failed-in-unprivileged-process-BZ-.patch \ 54 file://0021-fix-create-thread-failed-in-unprivileged-process-BZ-.patch \
54 file://0022-Avoid-hardcoded-build-time-paths-in-the-output-binar.patch \ 55 file://0022-Avoid-hardcoded-build-time-paths-in-the-output-binar.patch \
55 file://0023-qemu-stale-process.patch \ 56 file://0023-qemu-stale-process.patch \
57 file://0001-stdlib-Add-single-threaded-fast-path-to-rand.patch \
56" 58"
57S = "${WORKDIR}/git" 59S = "${WORKDIR}/git"
58B = "${WORKDIR}/build-${TARGET_SYS}" 60B = "${WORKDIR}/build-${TARGET_SYS}"
diff --git a/meta/recipes-core/images/build-appliance-image_15.0.0.bb b/meta/recipes-core/images/build-appliance-image_15.0.0.bb
index 39de22c188..fc942e3565 100644
--- a/meta/recipes-core/images/build-appliance-image_15.0.0.bb
+++ b/meta/recipes-core/images/build-appliance-image_15.0.0.bb
@@ -26,7 +26,7 @@ inherit core-image setuptools3 features_check
26 26
27REQUIRED_DISTRO_FEATURES += "xattr" 27REQUIRED_DISTRO_FEATURES += "xattr"
28 28
29SRCREV ?= "0ce88bc3474d29122e6f319cf474e5c5dce55419" 29SRCREV ?= "1c462cc39e557276861323b7adcef4fedbdf75e9"
30SRC_URI = "git://git.yoctoproject.org/poky;branch=scarthgap \ 30SRC_URI = "git://git.yoctoproject.org/poky;branch=scarthgap \
31 file://Yocto_Build_Appliance.vmx \ 31 file://Yocto_Build_Appliance.vmx \
32 file://Yocto_Build_Appliance.vmxf \ 32 file://Yocto_Build_Appliance.vmxf \
diff --git a/meta/recipes-core/systemd/systemd-boot-native_255.18.bb b/meta/recipes-core/systemd/systemd-boot-native_255.21.bb
index 73db59b14e..73db59b14e 100644
--- a/meta/recipes-core/systemd/systemd-boot-native_255.18.bb
+++ b/meta/recipes-core/systemd/systemd-boot-native_255.21.bb
diff --git a/meta/recipes-core/systemd/systemd-boot_255.18.bb b/meta/recipes-core/systemd/systemd-boot_255.21.bb
index 397316fe9b..397316fe9b 100644
--- a/meta/recipes-core/systemd/systemd-boot_255.18.bb
+++ b/meta/recipes-core/systemd/systemd-boot_255.21.bb
diff --git a/meta/recipes-core/systemd/systemd.inc b/meta/recipes-core/systemd/systemd.inc
index 8e134d8c86..28392b6b09 100644
--- a/meta/recipes-core/systemd/systemd.inc
+++ b/meta/recipes-core/systemd/systemd.inc
@@ -15,7 +15,7 @@ LICENSE:libsystemd = "LGPL-2.1-or-later"
15LIC_FILES_CHKSUM = "file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe \ 15LIC_FILES_CHKSUM = "file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe \
16 file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c" 16 file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c"
17 17
18SRCREV = "20415d357fb0e253df7444019a47674fac4ed1d6" 18SRCREV = "70500d37992a01d3275b1c414c3ed161d6f91f9e"
19SRCBRANCH = "v255-stable" 19SRCBRANCH = "v255-stable"
20SRC_URI = "git://github.com/systemd/systemd-stable.git;protocol=https;branch=${SRCBRANCH}" 20SRC_URI = "git://github.com/systemd/systemd-stable.git;protocol=https;branch=${SRCBRANCH}"
21 21
diff --git a/meta/recipes-core/systemd/systemd/0001-missing_type.h-add-comparison_fn_t.patch b/meta/recipes-core/systemd/systemd/0001-missing_type.h-add-comparison_fn_t.patch
index d2ffdd8de4..22f0468460 100644
--- a/meta/recipes-core/systemd/systemd/0001-missing_type.h-add-comparison_fn_t.patch
+++ b/meta/recipes-core/systemd/systemd/0001-missing_type.h-add-comparison_fn_t.patch
@@ -1,4 +1,4 @@
1From 7bbb54406dd77c358eab9df08b100ee85e176052 Mon Sep 17 00:00:00 2001 1From b270af4c086d254758fdcd1d294b15a555a4b3ea Mon Sep 17 00:00:00 2001
2From: Chen Qi <Qi.Chen@windriver.com> 2From: Chen Qi <Qi.Chen@windriver.com>
3Date: Mon, 25 Feb 2019 13:55:12 +0800 3Date: Mon, 25 Feb 2019 13:55:12 +0800
4Subject: [PATCH] missing_type.h: add comparison_fn_t 4Subject: [PATCH] missing_type.h: add comparison_fn_t
diff --git a/meta/recipes-core/systemd/systemd/0002-add-fallback-parse_printf_format-implementation.patch b/meta/recipes-core/systemd/systemd/0002-add-fallback-parse_printf_format-implementation.patch
index df9e978e55..6cce960299 100644
--- a/meta/recipes-core/systemd/systemd/0002-add-fallback-parse_printf_format-implementation.patch
+++ b/meta/recipes-core/systemd/systemd/0002-add-fallback-parse_printf_format-implementation.patch
@@ -1,4 +1,4 @@
1From d0b08484a6c3113b6209d8f8e1dc1186a6427b99 Mon Sep 17 00:00:00 2001 1From 0660aea3d7c8058d73c9f7b2971f4daf35dd7a32 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com> 2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Sat, 22 May 2021 20:26:24 +0200 3Date: Sat, 22 May 2021 20:26:24 +0200
4Subject: [PATCH] add fallback parse_printf_format implementation 4Subject: [PATCH] add fallback parse_printf_format implementation
diff --git a/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch b/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch
index 784f0898c0..4472dda2e8 100644
--- a/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch
+++ b/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch
@@ -1,4 +1,4 @@
1From 7e4fae68909ce4932e073dd060e22581edc39ad2 Mon Sep 17 00:00:00 2001 1From edc39fe19419120f70341cd50d4d097a514ac9cb Mon Sep 17 00:00:00 2001
2From: Chen Qi <Qi.Chen@windriver.com> 2From: Chen Qi <Qi.Chen@windriver.com>
3Date: Thu, 21 Feb 2019 16:23:24 +0800 3Date: Thu, 21 Feb 2019 16:23:24 +0800
4Subject: [PATCH] binfmt: Don't install dependency links at install time for 4Subject: [PATCH] binfmt: Don't install dependency links at install time for
diff --git a/meta/recipes-core/systemd/systemd/0003-src-basic-missing.h-check-for-missing-strndupa.patch b/meta/recipes-core/systemd/systemd/0003-src-basic-missing.h-check-for-missing-strndupa.patch
index e46b4386aa..715a0c7ec8 100644
--- a/meta/recipes-core/systemd/systemd/0003-src-basic-missing.h-check-for-missing-strndupa.patch
+++ b/meta/recipes-core/systemd/systemd/0003-src-basic-missing.h-check-for-missing-strndupa.patch
@@ -1,4 +1,4 @@
1From ca0b48676132744b78d99ee3ec2d33f11bb73c28 Mon Sep 17 00:00:00 2001 1From c728a728cd54c372162f5447aa94921efb0c35f0 Mon Sep 17 00:00:00 2001
2From: Chen Qi <Qi.Chen@windriver.com> 2From: Chen Qi <Qi.Chen@windriver.com>
3Date: Mon, 25 Feb 2019 14:18:21 +0800 3Date: Mon, 25 Feb 2019 14:18:21 +0800
4Subject: [PATCH] src/basic/missing.h: check for missing strndupa 4Subject: [PATCH] src/basic/missing.h: check for missing strndupa
@@ -280,7 +280,7 @@ index b3baf03afc..7404784a01 100644
280 280
281 BUS_DEFINE_PROPERTY_GET(bus_property_get_tasks_max, "t", CGroupTasksMax, cgroup_tasks_max_resolve); 281 BUS_DEFINE_PROPERTY_GET(bus_property_get_tasks_max, "t", CGroupTasksMax, cgroup_tasks_max_resolve);
282diff --git a/src/core/dbus-execute.c b/src/core/dbus-execute.c 282diff --git a/src/core/dbus-execute.c b/src/core/dbus-execute.c
283index 2d05ba7e1d..61a7de0037 100644 283index 71b07a6ec1..174a94e8a0 100644
284--- a/src/core/dbus-execute.c 284--- a/src/core/dbus-execute.c
285+++ b/src/core/dbus-execute.c 285+++ b/src/core/dbus-execute.c
286@@ -42,6 +42,7 @@ 286@@ -42,6 +42,7 @@
@@ -352,7 +352,7 @@ index 7e0c98cb7d..978a7f5874 100644
352 #define DEFAULT_MAX_USE_LOWER (uint64_t) (1ULL*1024ULL*1024ULL) /* 1 MiB */ 352 #define DEFAULT_MAX_USE_LOWER (uint64_t) (1ULL*1024ULL*1024ULL) /* 1 MiB */
353 #define DEFAULT_MAX_USE_UPPER (uint64_t) (4ULL*1024ULL*1024ULL*1024ULL) /* 4 GiB */ 353 #define DEFAULT_MAX_USE_UPPER (uint64_t) (4ULL*1024ULL*1024ULL*1024ULL) /* 4 GiB */
354diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c 354diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c
355index 016f3baa7f..b1def81313 100644 355index e7caf510ba..79b252cad7 100644
356--- a/src/fstab-generator/fstab-generator.c 356--- a/src/fstab-generator/fstab-generator.c
357+++ b/src/fstab-generator/fstab-generator.c 357+++ b/src/fstab-generator/fstab-generator.c
358@@ -37,6 +37,7 @@ 358@@ -37,6 +37,7 @@
@@ -424,7 +424,7 @@ index 5ade8e99aa..7553cf319d 100644
424 #define SNDBUF_SIZE (8*1024*1024) 424 #define SNDBUF_SIZE (8*1024*1024)
425 425
426diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c 426diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c
427index 8befc97460..6ee4d4f595 100644 427index b32cd6c6a0..cc484454e0 100644
428--- a/src/libsystemd/sd-bus/sd-bus.c 428--- a/src/libsystemd/sd-bus/sd-bus.c
429+++ b/src/libsystemd/sd-bus/sd-bus.c 429+++ b/src/libsystemd/sd-bus/sd-bus.c
430@@ -46,6 +46,7 @@ 430@@ -46,6 +46,7 @@
@@ -616,7 +616,7 @@ index 0a31be382f..92d629e7e0 100644
616 /* up to three lines (each up to 100 characters) or 300 characters, whichever is less */ 616 /* up to three lines (each up to 100 characters) or 300 characters, whichever is less */
617 #define PRINT_LINE_THRESHOLD 3 617 #define PRINT_LINE_THRESHOLD 3
618diff --git a/src/shared/pager.c b/src/shared/pager.c 618diff --git a/src/shared/pager.c b/src/shared/pager.c
619index 19deefab56..6b6d0af1a0 100644 619index 41dd7bffdc..9ca45d8b91 100644
620--- a/src/shared/pager.c 620--- a/src/shared/pager.c
621+++ b/src/shared/pager.c 621+++ b/src/shared/pager.c
622@@ -25,6 +25,7 @@ 622@@ -25,6 +25,7 @@
diff --git a/meta/recipes-core/systemd/systemd/0004-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch b/meta/recipes-core/systemd/systemd/0004-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch
index 43ba526792..19eaf9170d 100644
--- a/meta/recipes-core/systemd/systemd/0004-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch
+++ b/meta/recipes-core/systemd/systemd/0004-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch
@@ -1,4 +1,4 @@
1From 3ea9cc03431c93c86cf0ca63ad04219af221a2d0 Mon Sep 17 00:00:00 2001 1From 674232187bf337c31a6528b4d241eafeb27ac85e Mon Sep 17 00:00:00 2001
2From: Chen Qi <Qi.Chen@windriver.com> 2From: Chen Qi <Qi.Chen@windriver.com>
3Date: Mon, 25 Feb 2019 14:56:21 +0800 3Date: Mon, 25 Feb 2019 14:56:21 +0800
4Subject: [PATCH] don't fail if GLOB_BRACE and GLOB_ALTDIRFUNC is not defined 4Subject: [PATCH] don't fail if GLOB_BRACE and GLOB_ALTDIRFUNC is not defined
diff --git a/meta/recipes-core/systemd/systemd/0005-add-missing-FTW_-macros-for-musl.patch b/meta/recipes-core/systemd/systemd/0005-add-missing-FTW_-macros-for-musl.patch
index c25ccde9e2..dbd94d473d 100644
--- a/meta/recipes-core/systemd/systemd/0005-add-missing-FTW_-macros-for-musl.patch
+++ b/meta/recipes-core/systemd/systemd/0005-add-missing-FTW_-macros-for-musl.patch
@@ -1,4 +1,4 @@
1From 885a6880ad1b687e3fbf1b9f35e218bee1fcc835 Mon Sep 17 00:00:00 2001 1From cdaafa37983753d309d2b37f8262e71f95798e52 Mon Sep 17 00:00:00 2001
2From: Chen Qi <Qi.Chen@windriver.com> 2From: Chen Qi <Qi.Chen@windriver.com>
3Date: Mon, 25 Feb 2019 15:00:06 +0800 3Date: Mon, 25 Feb 2019 15:00:06 +0800
4Subject: [PATCH] add missing FTW_ macros for musl 4Subject: [PATCH] add missing FTW_ macros for musl
diff --git a/meta/recipes-core/systemd/systemd/0006-Use-uintmax_t-for-handling-rlim_t.patch b/meta/recipes-core/systemd/systemd/0006-Use-uintmax_t-for-handling-rlim_t.patch
index 13c155745a..09ffbcb70a 100644
--- a/meta/recipes-core/systemd/systemd/0006-Use-uintmax_t-for-handling-rlim_t.patch
+++ b/meta/recipes-core/systemd/systemd/0006-Use-uintmax_t-for-handling-rlim_t.patch
@@ -1,4 +1,4 @@
1From 646c3ced29922065eed64ac9b23af8276e989608 Mon Sep 17 00:00:00 2001 1From 8c33fe6338c448dca8533b9d3f9933e2794bda61 Mon Sep 17 00:00:00 2001
2From: Chen Qi <Qi.Chen@windriver.com> 2From: Chen Qi <Qi.Chen@windriver.com>
3Date: Mon, 25 Feb 2019 15:12:41 +0800 3Date: Mon, 25 Feb 2019 15:12:41 +0800
4Subject: [PATCH] Use uintmax_t for handling rlim_t 4Subject: [PATCH] Use uintmax_t for handling rlim_t
diff --git a/meta/recipes-core/systemd/systemd/0007-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch b/meta/recipes-core/systemd/systemd/0007-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch
index 55405c5d0b..563f033b0d 100644
--- a/meta/recipes-core/systemd/systemd/0007-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch
+++ b/meta/recipes-core/systemd/systemd/0007-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch
@@ -1,4 +1,4 @@
1From f772369a2519b378c09bb89bd48c3743a62404e3 Mon Sep 17 00:00:00 2001 1From 68ab3364c0fe1073bba3adf02add7108de80a17c Mon Sep 17 00:00:00 2001
2From: Andre McCurdy <armccurdy@gmail.com> 2From: Andre McCurdy <armccurdy@gmail.com>
3Date: Tue, 10 Oct 2017 14:33:30 -0700 3Date: Tue, 10 Oct 2017 14:33:30 -0700
4Subject: [PATCH] don't pass AT_SYMLINK_NOFOLLOW flag to faccessat() 4Subject: [PATCH] don't pass AT_SYMLINK_NOFOLLOW flag to faccessat()
diff --git a/meta/recipes-core/systemd/systemd/0008-Define-glibc-compatible-basename-for-non-glibc-syste.patch b/meta/recipes-core/systemd/systemd/0008-Define-glibc-compatible-basename-for-non-glibc-syste.patch
index 6005b621ee..cc9f7771be 100644
--- a/meta/recipes-core/systemd/systemd/0008-Define-glibc-compatible-basename-for-non-glibc-syste.patch
+++ b/meta/recipes-core/systemd/systemd/0008-Define-glibc-compatible-basename-for-non-glibc-syste.patch
@@ -1,4 +1,4 @@
1From 45b1226ddbd981798e0448da41ddc4901e246b45 Mon Sep 17 00:00:00 2001 1From 6dd1aa50da27c07530a434218b5a7a384d0c6747 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com> 2From: Khem Raj <raj.khem@gmail.com>
3Date: Sun, 27 May 2018 08:36:44 -0700 3Date: Sun, 27 May 2018 08:36:44 -0700
4Subject: [PATCH] Define glibc compatible basename() for non-glibc systems 4Subject: [PATCH] Define glibc compatible basename() for non-glibc systems
diff --git a/meta/recipes-core/systemd/systemd/0008-implment-systemd-sysv-install-for-OE.patch b/meta/recipes-core/systemd/systemd/0008-implment-systemd-sysv-install-for-OE.patch
index d43eaeff7a..21faa10a95 100644
--- a/meta/recipes-core/systemd/systemd/0008-implment-systemd-sysv-install-for-OE.patch
+++ b/meta/recipes-core/systemd/systemd/0008-implment-systemd-sysv-install-for-OE.patch
@@ -1,4 +1,4 @@
1From abca5814cb0b5b98a1e7af829cc166e76c524f1a Mon Sep 17 00:00:00 2001 1From 8da2b10dcbf423f791db79b7dfcc6cfaf8e26f8b Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com> 2From: Khem Raj <raj.khem@gmail.com>
3Date: Sat, 5 Sep 2015 06:31:47 +0000 3Date: Sat, 5 Sep 2015 06:31:47 +0000
4Subject: [PATCH] implment systemd-sysv-install for OE 4Subject: [PATCH] implment systemd-sysv-install for OE
diff --git a/meta/recipes-core/systemd/systemd/0009-Do-not-disable-buffering-when-writing-to-oom_score_a.patch b/meta/recipes-core/systemd/systemd/0009-Do-not-disable-buffering-when-writing-to-oom_score_a.patch
index 3e557b764f..66aa8551ac 100644
--- a/meta/recipes-core/systemd/systemd/0009-Do-not-disable-buffering-when-writing-to-oom_score_a.patch
+++ b/meta/recipes-core/systemd/systemd/0009-Do-not-disable-buffering-when-writing-to-oom_score_a.patch
@@ -1,4 +1,4 @@
1From 8d61cecff3ba0687ad2c10aacb7d2aee7cb3fa79 Mon Sep 17 00:00:00 2001 1From ed33f139195794477ac854214022034db306f42d Mon Sep 17 00:00:00 2001
2From: Chen Qi <Qi.Chen@windriver.com> 2From: Chen Qi <Qi.Chen@windriver.com>
3Date: Wed, 4 Jul 2018 15:00:44 +0800 3Date: Wed, 4 Jul 2018 15:00:44 +0800
4Subject: [PATCH] Do not disable buffering when writing to oom_score_adj 4Subject: [PATCH] Do not disable buffering when writing to oom_score_adj
diff --git a/meta/recipes-core/systemd/systemd/0010-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch b/meta/recipes-core/systemd/systemd/0010-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch
index d4b67d15f4..66fab46128 100644
--- a/meta/recipes-core/systemd/systemd/0010-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch
+++ b/meta/recipes-core/systemd/systemd/0010-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch
@@ -1,4 +1,4 @@
1From 2180b639665bd314905ef058dee9a5e4a534333e Mon Sep 17 00:00:00 2001 1From ef261a0122ff5a4340897c9afe1fae04d14eb0dd Mon Sep 17 00:00:00 2001
2From: Chen Qi <Qi.Chen@windriver.com> 2From: Chen Qi <Qi.Chen@windriver.com>
3Date: Tue, 10 Jul 2018 15:40:17 +0800 3Date: Tue, 10 Jul 2018 15:40:17 +0800
4Subject: [PATCH] distinguish XSI-compliant strerror_r from GNU-specifi 4Subject: [PATCH] distinguish XSI-compliant strerror_r from GNU-specifi
diff --git a/meta/recipes-core/systemd/systemd/0011-avoid-redefinition-of-prctl_mm_map-structure.patch b/meta/recipes-core/systemd/systemd/0011-avoid-redefinition-of-prctl_mm_map-structure.patch
index ad8888895f..1ad9a302ff 100644
--- a/meta/recipes-core/systemd/systemd/0011-avoid-redefinition-of-prctl_mm_map-structure.patch
+++ b/meta/recipes-core/systemd/systemd/0011-avoid-redefinition-of-prctl_mm_map-structure.patch
@@ -1,4 +1,4 @@
1From 3b1639c7052d9d574dd05d268364e7919b6f2580 Mon Sep 17 00:00:00 2001 1From 8b76e1f027d73e26cfc8e13bd49f43197dbb9004 Mon Sep 17 00:00:00 2001
2From: Chen Qi <Qi.Chen@windriver.com> 2From: Chen Qi <Qi.Chen@windriver.com>
3Date: Mon, 25 Feb 2019 15:44:54 +0800 3Date: Mon, 25 Feb 2019 15:44:54 +0800
4Subject: [PATCH] avoid redefinition of prctl_mm_map structure 4Subject: [PATCH] avoid redefinition of prctl_mm_map structure
diff --git a/meta/recipes-core/systemd/systemd/0012-do-not-disable-buffer-in-writing-files.patch b/meta/recipes-core/systemd/systemd/0012-do-not-disable-buffer-in-writing-files.patch
index f0eafd6fea..3ff247debb 100644
--- a/meta/recipes-core/systemd/systemd/0012-do-not-disable-buffer-in-writing-files.patch
+++ b/meta/recipes-core/systemd/systemd/0012-do-not-disable-buffer-in-writing-files.patch
@@ -1,4 +1,4 @@
1From c1a375d93edbfaf3f64bec88c75cfcf436d4ba05 Mon Sep 17 00:00:00 2001 1From 9686b8c52bd9e532ebe687dd31352d884873e0a4 Mon Sep 17 00:00:00 2001
2From: Chen Qi <Qi.Chen@windriver.com> 2From: Chen Qi <Qi.Chen@windriver.com>
3Date: Fri, 1 Mar 2019 15:22:15 +0800 3Date: Fri, 1 Mar 2019 15:22:15 +0800
4Subject: [PATCH] do not disable buffer in writing files 4Subject: [PATCH] do not disable buffer in writing files
@@ -188,10 +188,10 @@ index d21f3f79ff..258607cc7e 100644
188 log_warning_errno(r, "Failed to flush binfmt_misc rules, ignoring: %m"); 188 log_warning_errno(r, "Failed to flush binfmt_misc rules, ignoring: %m");
189 else 189 else
190diff --git a/src/core/cgroup.c b/src/core/cgroup.c 190diff --git a/src/core/cgroup.c b/src/core/cgroup.c
191index 61539afdbf..77e2b35daf 100644 191index d398655b0a..9558f38a72 100644
192--- a/src/core/cgroup.c 192--- a/src/core/cgroup.c
193+++ b/src/core/cgroup.c 193+++ b/src/core/cgroup.c
194@@ -4581,7 +4581,7 @@ int unit_cgroup_freezer_action(Unit *u, FreezerAction action) { 194@@ -4589,7 +4589,7 @@ int unit_cgroup_freezer_action(Unit *u, FreezerAction action) {
195 u->freezer_state = FREEZER_THAWING; 195 u->freezer_state = FREEZER_THAWING;
196 } 196 }
197 197
@@ -201,7 +201,7 @@ index 61539afdbf..77e2b35daf 100644
201 return r; 201 return r;
202 202
203diff --git a/src/core/main.c b/src/core/main.c 203diff --git a/src/core/main.c b/src/core/main.c
204index 8373a156cb..33e866942c 100644 204index 364dc895d1..d28ec42030 100644
205--- a/src/core/main.c 205--- a/src/core/main.c
206+++ b/src/core/main.c 206+++ b/src/core/main.c
207@@ -1683,7 +1683,7 @@ static void initialize_core_pattern(bool skip_setup) { 207@@ -1683,7 +1683,7 @@ static void initialize_core_pattern(bool skip_setup) {
diff --git a/meta/recipes-core/systemd/systemd/0013-Handle-__cpu_mask-usage.patch b/meta/recipes-core/systemd/systemd/0013-Handle-__cpu_mask-usage.patch
index 5427671553..a92d4db101 100644
--- a/meta/recipes-core/systemd/systemd/0013-Handle-__cpu_mask-usage.patch
+++ b/meta/recipes-core/systemd/systemd/0013-Handle-__cpu_mask-usage.patch
@@ -1,4 +1,4 @@
1From b10a273f5e26536068a90f961c2a7a6c6528083b Mon Sep 17 00:00:00 2001 1From 385fbcc3cec50b995299e25f913d9683ddf51174 Mon Sep 17 00:00:00 2001
2From: Scott Murray <scott.murray@konsulko.com> 2From: Scott Murray <scott.murray@konsulko.com>
3Date: Fri, 13 Sep 2019 19:26:27 -0400 3Date: Fri, 13 Sep 2019 19:26:27 -0400
4Subject: [PATCH] Handle __cpu_mask usage 4Subject: [PATCH] Handle __cpu_mask usage
diff --git a/meta/recipes-core/systemd/systemd/0014-Handle-missing-gshadow.patch b/meta/recipes-core/systemd/systemd/0014-Handle-missing-gshadow.patch
index 679b42ff95..f84f289c2f 100644
--- a/meta/recipes-core/systemd/systemd/0014-Handle-missing-gshadow.patch
+++ b/meta/recipes-core/systemd/systemd/0014-Handle-missing-gshadow.patch
@@ -1,4 +1,4 @@
1From c55dd0f9e1ea05749d0a54082daa69729ee946af Mon Sep 17 00:00:00 2001 1From bc62e5e507cc3f10fde7d35d16059a06a78757b6 Mon Sep 17 00:00:00 2001
2From: Alex Kiernan <alex.kiernan@gmail.com> 2From: Alex Kiernan <alex.kiernan@gmail.com>
3Date: Tue, 10 Mar 2020 11:05:20 +0000 3Date: Tue, 10 Mar 2020 11:05:20 +0000
4Subject: [PATCH] Handle missing gshadow 4Subject: [PATCH] Handle missing gshadow
diff --git a/meta/recipes-core/systemd/systemd/0015-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch b/meta/recipes-core/systemd/systemd/0015-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch
index 2bd683785d..c1297f27dd 100644
--- a/meta/recipes-core/systemd/systemd/0015-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch
+++ b/meta/recipes-core/systemd/systemd/0015-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch
@@ -1,4 +1,4 @@
1From 4733cb758285ec7f63e834894aa8f09d9bc77ad5 Mon Sep 17 00:00:00 2001 1From 79f2f3e90229f4812d93c6965cb67385642dfcc4 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com> 2From: Khem Raj <raj.khem@gmail.com>
3Date: Mon, 12 Apr 2021 23:44:53 -0700 3Date: Mon, 12 Apr 2021 23:44:53 -0700
4Subject: [PATCH] missing_syscall.h: Define MIPS ABI defines for musl 4Subject: [PATCH] missing_syscall.h: Define MIPS ABI defines for musl
diff --git a/meta/recipes-core/systemd/systemd/0016-pass-correct-parameters-to-getdents64.patch b/meta/recipes-core/systemd/systemd/0016-pass-correct-parameters-to-getdents64.patch
index 3e359d976a..d932d7cc76 100644
--- a/meta/recipes-core/systemd/systemd/0016-pass-correct-parameters-to-getdents64.patch
+++ b/meta/recipes-core/systemd/systemd/0016-pass-correct-parameters-to-getdents64.patch
@@ -1,4 +1,4 @@
1From 1118d270cf2cd7c6cb99eb40ab42c3d07b20476c Mon Sep 17 00:00:00 2001 1From a8e07d87adfeb1c72c6eaf5402db465a78e08ee6 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com> 2From: Khem Raj <raj.khem@gmail.com>
3Date: Fri, 21 Jan 2022 15:15:11 -0800 3Date: Fri, 21 Jan 2022 15:15:11 -0800
4Subject: [PATCH] pass correct parameters to getdents64 4Subject: [PATCH] pass correct parameters to getdents64
diff --git a/meta/recipes-core/systemd/systemd/0017-Adjust-for-musl-headers.patch b/meta/recipes-core/systemd/systemd/0017-Adjust-for-musl-headers.patch
index 6ae6cdfe54..6a2dcc355d 100644
--- a/meta/recipes-core/systemd/systemd/0017-Adjust-for-musl-headers.patch
+++ b/meta/recipes-core/systemd/systemd/0017-Adjust-for-musl-headers.patch
@@ -1,4 +1,4 @@
1From ab78d7938e732125012f8276e357e8f6d4a51476 Mon Sep 17 00:00:00 2001 1From 5da745dc6f60f6fac65371a60eee7cecaf575eae Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com> 2From: Khem Raj <raj.khem@gmail.com>
3Date: Fri, 21 Jan 2022 22:19:37 -0800 3Date: Fri, 21 Jan 2022 22:19:37 -0800
4Subject: [PATCH] Adjust for musl headers 4Subject: [PATCH] Adjust for musl headers
diff --git a/meta/recipes-core/systemd/systemd/0018-test-bus-error-strerror-is-assumed-to-be-GNU-specifi.patch b/meta/recipes-core/systemd/systemd/0018-test-bus-error-strerror-is-assumed-to-be-GNU-specifi.patch
index 5d74d08201..89ef33c156 100644
--- a/meta/recipes-core/systemd/systemd/0018-test-bus-error-strerror-is-assumed-to-be-GNU-specifi.patch
+++ b/meta/recipes-core/systemd/systemd/0018-test-bus-error-strerror-is-assumed-to-be-GNU-specifi.patch
@@ -1,4 +1,4 @@
1From 20cf3569dff21f5c4e46855c3956606fa0141710 Mon Sep 17 00:00:00 2001 1From 1c5c9714a2a9bc651687bf2c583019c52ed93ac4 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com> 2From: Khem Raj <raj.khem@gmail.com>
3Date: Tue, 8 Nov 2022 13:31:34 -0800 3Date: Tue, 8 Nov 2022 13:31:34 -0800
4Subject: [PATCH] test-bus-error: strerror() is assumed to be GNU specific 4Subject: [PATCH] test-bus-error: strerror() is assumed to be GNU specific
diff --git a/meta/recipes-core/systemd/systemd/0019-errno-util-Make-STRERROR-portable-for-musl.patch b/meta/recipes-core/systemd/systemd/0019-errno-util-Make-STRERROR-portable-for-musl.patch
index a20e21ee08..7911add5ea 100644
--- a/meta/recipes-core/systemd/systemd/0019-errno-util-Make-STRERROR-portable-for-musl.patch
+++ b/meta/recipes-core/systemd/systemd/0019-errno-util-Make-STRERROR-portable-for-musl.patch
@@ -1,4 +1,4 @@
1From 5e3e71f93adf5bdbfd470bcd93320dab314dc3ef Mon Sep 17 00:00:00 2001 1From 43f56ac05ff4b9c7774b6f580612f2a7896a4885 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com> 2From: Khem Raj <raj.khem@gmail.com>
3Date: Mon, 23 Jan 2023 23:39:46 -0800 3Date: Mon, 23 Jan 2023 23:39:46 -0800
4Subject: [PATCH] errno-util: Make STRERROR portable for musl 4Subject: [PATCH] errno-util: Make STRERROR portable for musl
diff --git a/meta/recipes-core/systemd/systemd/0020-sd-event-Make-malloc_trim-conditional-on-glibc.patch b/meta/recipes-core/systemd/systemd/0020-sd-event-Make-malloc_trim-conditional-on-glibc.patch
index bdcff34f2c..be0a0da013 100644
--- a/meta/recipes-core/systemd/systemd/0020-sd-event-Make-malloc_trim-conditional-on-glibc.patch
+++ b/meta/recipes-core/systemd/systemd/0020-sd-event-Make-malloc_trim-conditional-on-glibc.patch
@@ -1,4 +1,4 @@
1From 18201d3350b443c79cc85274f3944bf64de33da0 Mon Sep 17 00:00:00 2001 1From cda1cc94bd81c8ff9135255895a414fb938e2c79 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com> 2From: Khem Raj <raj.khem@gmail.com>
3Date: Wed, 2 Aug 2023 12:06:27 -0700 3Date: Wed, 2 Aug 2023 12:06:27 -0700
4Subject: [PATCH] sd-event: Make malloc_trim() conditional on glibc 4Subject: [PATCH] sd-event: Make malloc_trim() conditional on glibc
diff --git a/meta/recipes-core/systemd/systemd/0021-shared-Do-not-use-malloc_info-on-musl.patch b/meta/recipes-core/systemd/systemd/0021-shared-Do-not-use-malloc_info-on-musl.patch
index 451511be16..9aa08e59cd 100644
--- a/meta/recipes-core/systemd/systemd/0021-shared-Do-not-use-malloc_info-on-musl.patch
+++ b/meta/recipes-core/systemd/systemd/0021-shared-Do-not-use-malloc_info-on-musl.patch
@@ -1,4 +1,4 @@
1From 96c3d0d3a2359dd248685c2ede876d66c3faa3f9 Mon Sep 17 00:00:00 2001 1From 2913e608d6e91c8037d698534f72970b4c365d8f Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com> 2From: Khem Raj <raj.khem@gmail.com>
3Date: Wed, 2 Aug 2023 12:20:40 -0700 3Date: Wed, 2 Aug 2023 12:20:40 -0700
4Subject: [PATCH] shared: Do not use malloc_info on musl 4Subject: [PATCH] shared: Do not use malloc_info on musl
diff --git a/meta/recipes-core/systemd/systemd/0022-avoid-missing-LOCK_EX-declaration.patch b/meta/recipes-core/systemd/systemd/0022-avoid-missing-LOCK_EX-declaration.patch
index cd22adf0e5..e0a342355f 100644
--- a/meta/recipes-core/systemd/systemd/0022-avoid-missing-LOCK_EX-declaration.patch
+++ b/meta/recipes-core/systemd/systemd/0022-avoid-missing-LOCK_EX-declaration.patch
@@ -1,4 +1,4 @@
1From f3bc7816d9cca9963a2737857763ee76e300a232 Mon Sep 17 00:00:00 2001 1From 9d151b5bb3105fb21d55a301def3d97b5a314580 Mon Sep 17 00:00:00 2001
2From: Chen Qi <Qi.Chen@windriver.com> 2From: Chen Qi <Qi.Chen@windriver.com>
3Date: Tue, 2 Jan 2024 11:03:27 +0800 3Date: Tue, 2 Jan 2024 11:03:27 +0800
4Subject: [PATCH] avoid missing LOCK_EX declaration 4Subject: [PATCH] avoid missing LOCK_EX declaration
@@ -15,7 +15,7 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
15 2 files changed, 2 insertions(+) 15 2 files changed, 2 insertions(+)
16 16
17diff --git a/src/core/exec-invoke.c b/src/core/exec-invoke.c 17diff --git a/src/core/exec-invoke.c b/src/core/exec-invoke.c
18index 22bc8d10c1..9bced8f420 100644 18index 9d27280ed0..569311422d 100644
19--- a/src/core/exec-invoke.c 19--- a/src/core/exec-invoke.c
20+++ b/src/core/exec-invoke.c 20+++ b/src/core/exec-invoke.c
21@@ -5,6 +5,7 @@ 21@@ -5,6 +5,7 @@
diff --git a/meta/recipes-core/systemd/systemd_255.18.bb b/meta/recipes-core/systemd/systemd_255.21.bb
index f85ad61080..bb9dc3da33 100644
--- a/meta/recipes-core/systemd/systemd_255.18.bb
+++ b/meta/recipes-core/systemd/systemd_255.21.bb
@@ -592,26 +592,16 @@ FILES:${PN}-extra-utils = "\
592 ${bindir}/systemd-cgls \ 592 ${bindir}/systemd-cgls \
593 ${bindir}/systemd-cgtop \ 593 ${bindir}/systemd-cgtop \
594 ${bindir}/systemd-stdio-bridge \ 594 ${bindir}/systemd-stdio-bridge \
595 ${base_bindir}/systemd-ask-password \
596 ${base_bindir}/systemd-tty-ask-password-agent \
597 ${base_sbindir}/mount.ddi \ 595 ${base_sbindir}/mount.ddi \
598 ${systemd_system_unitdir}/initrd.target.wants/systemd-pcrphase-initrd.path \ 596 ${systemd_system_unitdir}/initrd.target.wants/systemd-pcrphase-initrd.path \
599 ${systemd_system_unitdir}/systemd-ask-password-console.path \
600 ${systemd_system_unitdir}/systemd-ask-password-console.service \
601 ${systemd_system_unitdir}/systemd-ask-password-wall.path \
602 ${systemd_system_unitdir}/systemd-ask-password-wall.service \
603 ${systemd_system_unitdir}/sysinit.target.wants/systemd-ask-password-console.path \
604 ${systemd_system_unitdir}/sysinit.target.wants/systemd-ask-password-wall.path \
605 ${systemd_system_unitdir}/sysinit.target.wants/systemd-pcrphase.path \ 597 ${systemd_system_unitdir}/sysinit.target.wants/systemd-pcrphase.path \
606 ${systemd_system_unitdir}/sysinit.target.wants/systemd-pcrphase-sysinit.path \ 598 ${systemd_system_unitdir}/sysinit.target.wants/systemd-pcrphase-sysinit.path \
607 ${systemd_system_unitdir}/multi-user.target.wants/systemd-ask-password-wall.path \
608 ${rootlibexecdir}/systemd/systemd-resolve-host \ 599 ${rootlibexecdir}/systemd/systemd-resolve-host \
609 ${rootlibexecdir}/systemd/systemd-ac-power \ 600 ${rootlibexecdir}/systemd/systemd-ac-power \
610 ${rootlibexecdir}/systemd/systemd-activate \ 601 ${rootlibexecdir}/systemd/systemd-activate \
611 ${rootlibexecdir}/systemd/systemd-measure \ 602 ${rootlibexecdir}/systemd/systemd-measure \
612 ${rootlibexecdir}/systemd/systemd-pcrphase \ 603 ${rootlibexecdir}/systemd/systemd-pcrphase \
613 ${rootlibexecdir}/systemd/systemd-socket-proxyd \ 604 ${rootlibexecdir}/systemd/systemd-socket-proxyd \
614 ${rootlibexecdir}/systemd/systemd-reply-password \
615 ${rootlibexecdir}/systemd/systemd-sleep \ 605 ${rootlibexecdir}/systemd/systemd-sleep \
616 ${rootlibexecdir}/systemd/system-sleep \ 606 ${rootlibexecdir}/systemd/system-sleep \
617 ${systemd_system_unitdir}/systemd-hibernate.service \ 607 ${systemd_system_unitdir}/systemd-hibernate.service \
diff --git a/meta/recipes-core/util-linux/util-linux.inc b/meta/recipes-core/util-linux/util-linux.inc
index 48520ef951..1ecf5c7b39 100644
--- a/meta/recipes-core/util-linux/util-linux.inc
+++ b/meta/recipes-core/util-linux/util-linux.inc
@@ -42,6 +42,7 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/utils/util-linux/v${MAJOR_VERSION}/util-lin
42 file://fcntl-lock.c \ 42 file://fcntl-lock.c \
43 file://CVE-2024-28085-0001.patch \ 43 file://CVE-2024-28085-0001.patch \
44 file://CVE-2024-28085-0002.patch \ 44 file://CVE-2024-28085-0002.patch \
45 file://fstab-isolation.patch \
45 " 46 "
46 47
47SRC_URI[sha256sum] = "7b6605e48d1a49f43cc4b4cfc59f313d0dd5402fa40b96810bd572e167dfed0f" 48SRC_URI[sha256sum] = "7b6605e48d1a49f43cc4b4cfc59f313d0dd5402fa40b96810bd572e167dfed0f"
diff --git a/meta/recipes-core/util-linux/util-linux/fstab-isolation.patch b/meta/recipes-core/util-linux/util-linux/fstab-isolation.patch
new file mode 100644
index 0000000000..51d209ec60
--- /dev/null
+++ b/meta/recipes-core/util-linux/util-linux/fstab-isolation.patch
@@ -0,0 +1,448 @@
1From 51f1e56cc8b6843bf65ceadc5eca1545258bf020 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= <thomas@t-8ch.de>
3Date: Sat, 22 Apr 2023 17:48:58 +0200
4Subject: [PATCH 1/3] tests: (functions.sh) create variable for test fstab
5 location
6MIME-Version: 1.0
7Content-Type: text/plain; charset=UTF-8
8Content-Transfer-Encoding: 8bit
9
10Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de>
11(cherry picked from commit ed3d33faff17fb702a3acfca2f9f24e69f4920de)
12Upstream-Status: Backport [https://github.com/util-linux/util-linux/commit/ed3d33faff17fb702a3acfca2f9f24e69f4920de]
13Signed-off-by: Virendra Thakur <virendra.thakur@kpit.com>
14---
15 tests/functions.sh | 13 +++++++------
16 tests/ts/mount/fstab-broken | 2 +-
17 2 files changed, 8 insertions(+), 7 deletions(-)
18
19diff --git a/tests/functions.sh b/tests/functions.sh
20index 5a562a39a..c2e2f33ae 100644
21--- a/tests/functions.sh
22+++ b/tests/functions.sh
23@@ -386,6 +386,7 @@ function ts_init_env {
24 TS_ENABLE_UBSAN="yes"
25 fi
26
27+ TS_FSTAB="/etc/fstab"
28 BLKID_FILE="$TS_OUTDIR/${TS_TESTNAME}.blkidtab"
29
30 declare -a TS_SUID_PROGS
31@@ -824,12 +825,12 @@ function ts_is_mounted {
32 }
33
34 function ts_fstab_open {
35- echo "# <!-- util-linux test entry" >> /etc/fstab
36+ echo "# <!-- util-linux test entry" >> "$TS_FSTAB"
37 }
38
39 function ts_fstab_close {
40- echo "# -->" >> /etc/fstab
41- sync /etc/fstab 2>/dev/null
42+ echo "# -->" >> "$TS_FSTAB"
43+ sync "$TS_FSTAB" 2>/dev/null
44 }
45
46 function ts_fstab_addline {
47@@ -838,7 +839,7 @@ function ts_fstab_addline {
48 local FS=${3:-"auto"}
49 local OPT=${4:-"defaults"}
50
51- echo "$SPEC $MNT $FS $OPT 0 0" >> /etc/fstab
52+ echo "$SPEC $MNT $FS $OPT 0 0" >> "$TS_FSTAB"
53 }
54
55 function ts_fstab_lock {
56@@ -862,9 +863,9 @@ function ts_fstab_clean {
57 ba
58 }
59 s/# <!-- util-linux.*-->//;
60-/^$/d" /etc/fstab
61+/^$/d" "$TS_FSTAB"
62
63- sync /etc/fstab 2>/dev/null
64+ sync "$TS_FSTAB" 2>/dev/null
65 ts_unlock "fstab"
66 }
67
68diff --git a/tests/ts/mount/fstab-broken b/tests/ts/mount/fstab-broken
69index 19edc5fe3..3b7a1ee9d 100755
70--- a/tests/ts/mount/fstab-broken
71+++ b/tests/ts/mount/fstab-broken
72@@ -34,7 +34,7 @@ mkdir -p $MNT
73
74 ts_fstab_lock
75 ts_fstab_open
76-echo "tmpd $MNT tmpfs" >> /etc/fstab
77+echo "tmpd $MNT tmpfs" >> "$TS_FSTAB"
78 ts_fstab_close
79
80 ts_init_subtest "mount"
81--
822.34.1
83
84
85From 1e4a9141ca7d310030311e09123a81591f994f83 Mon Sep 17 00:00:00 2001
86From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= <thomas@t-8ch.de>
87Date: Sat, 22 Apr 2023 17:20:45 +0200
88Subject: [PATCH 2/3] tests: (functions.sh) use per-test fstab file
89MIME-Version: 1.0
90Content-Type: text/plain; charset=UTF-8
91Content-Transfer-Encoding: 8bit
92
93Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de>
94(cherry picked from commit 6aa8d17b6b53b86a46c5da68c02a893113130496)
95Upstream-Status: Backport [https://github.com/util-linux/util-linux/commit/6aa8d17b6b53b86a46c5da68c02a893113130496]
96Signed-off-by: Virendra Thakur <virendra.thakur@kpit.com>
97---
98 tests/functions.sh | 2 +-
99 1 file changed, 1 insertion(+), 1 deletion(-)
100
101diff --git a/tests/functions.sh b/tests/functions.sh
102index c2e2f33ae..3089e8cda 100644
103--- a/tests/functions.sh
104+++ b/tests/functions.sh
105@@ -386,7 +386,7 @@ function ts_init_env {
106 TS_ENABLE_UBSAN="yes"
107 fi
108
109- TS_FSTAB="/etc/fstab"
110+ TS_FSTAB="$TS_OUTDIR/${TS_TESTNAME}.fstab"
111 BLKID_FILE="$TS_OUTDIR/${TS_TESTNAME}.blkidtab"
112
113 declare -a TS_SUID_PROGS
114--
1152.34.1
116
117
118From 02c483f982e23a86d58cd7c6a4eb4b6e4d5def1a Mon Sep 17 00:00:00 2001
119From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= <thomas@t-8ch.de>
120Date: Sat, 22 Apr 2023 17:34:28 +0200
121Subject: [PATCH 3/3] mount: (tests) explicitly use test fstab location
122MIME-Version: 1.0
123Content-Type: text/plain; charset=UTF-8
124Content-Transfer-Encoding: 8bit
125
126Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de>
127(cherry picked from commit b1580bd760519a2cf052f023057846e54de47484)
128Upstream-Status: Backport [https://github.com/util-linux/util-linux/commit/b1580bd760519a2cf052f023057846e54de47484]
129Signed-off-by: Virendra Thakur <virendra.thakur@kpit.com>
130---
131 tests/ts/mount/fslists | 2 +-
132 tests/ts/mount/fstab-bind | 2 +-
133 tests/ts/mount/fstab-broken | 4 ++--
134 tests/ts/mount/fstab-btrfs | 8 ++++----
135 tests/ts/mount/fstab-devname | 4 ++--
136 tests/ts/mount/fstab-devname2label | 2 +-
137 tests/ts/mount/fstab-devname2uuid | 2 +-
138 tests/ts/mount/fstab-label | 6 +++---
139 tests/ts/mount/fstab-label2devname | 4 ++--
140 tests/ts/mount/fstab-label2uuid | 4 ++--
141 tests/ts/mount/fstab-loop | 4 ++--
142 tests/ts/mount/fstab-none | 2 +-
143 tests/ts/mount/fstab-symlink | 2 +-
144 tests/ts/mount/fstab-uuid | 6 +++---
145 tests/ts/mount/fstab-uuid2devname | 4 ++--
146 tests/ts/mount/fstab-uuid2label | 4 ++--
147 16 files changed, 30 insertions(+), 30 deletions(-)
148
149diff --git a/tests/ts/mount/fslists b/tests/ts/mount/fslists
150index 230186a1e..6ac72c3ce 100755
151--- a/tests/ts/mount/fslists
152+++ b/tests/ts/mount/fslists
153@@ -61,7 +61,7 @@ ts_finalize_subtest
154 ts_init_subtest "more-types-fstab"
155 [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT
156 ts_fstab_add $DEVICE $TS_MOUNTPOINT "foo,bar,ext2"
157-$TS_CMD_MOUNT $TS_MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
158+$TS_CMD_MOUNT -T "$TS_FSTAB" $TS_MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
159 ts_fstab_clean
160 ts_is_mounted $DEVICE || ts_die "Cannot find $DEVICE in /proc/mounts"
161 $TS_CMD_UMOUNT $TS_MOUNTPOINT
162diff --git a/tests/ts/mount/fstab-bind b/tests/ts/mount/fstab-bind
163index 2c799df78..cae016dd2 100755
164--- a/tests/ts/mount/fstab-bind
165+++ b/tests/ts/mount/fstab-bind
166@@ -20,7 +20,7 @@ ts_fstab_add $MY_SOURCE "$TS_MOUNTPOINT" "none" "bind,default,noauto"
167 mkdir -p $MY_SOURCE
168 mkdir -p $TS_MOUNTPOINT
169
170-$TS_CMD_MOUNT $TS_MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
171+$TS_CMD_MOUNT -T "$TS_FSTAB" $TS_MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
172 [ "$?" = "0" ] || ts_log "error: mount $TS_MOUNTPOINT"
173
174 $TS_CMD_FINDMNT --mountpoint "$TS_MOUNTPOINT" &> /dev/null
175diff --git a/tests/ts/mount/fstab-broken b/tests/ts/mount/fstab-broken
176index 3b7a1ee9d..ec4c34241 100755
177--- a/tests/ts/mount/fstab-broken
178+++ b/tests/ts/mount/fstab-broken
179@@ -38,7 +38,7 @@ echo "tmpd $MNT tmpfs" >> "$TS_FSTAB"
180 ts_fstab_close
181
182 ts_init_subtest "mount"
183-$TS_CMD_MOUNT $MNT &> /dev/null
184+$TS_CMD_MOUNT -T "$TS_FSTAB" $MNT &> /dev/null
185 [ "$?" = "0" ] || ts_log "error: mount $MNT"
186 $TS_CMD_FINDMNT --kernel --mountpoint "$MNT" &> /dev/null
187 if [ "$?" != "0" ]; then
188@@ -57,7 +57,7 @@ ts_finalize_subtest
189
190
191 ts_init_subtest "mount-all"
192-$TS_CMD_MOUNT -a &> /dev/null
193+$TS_CMD_MOUNT -T "$TS_FSTAB" -a &> /dev/null
194 [ "$?" = "0" ] || ts_log "error: mount -a"
195 $TS_CMD_FINDMNT --kernel --mountpoint "$MNT" &> /dev/null
196 if [ "$?" != "0" ]; then
197diff --git a/tests/ts/mount/fstab-btrfs b/tests/ts/mount/fstab-btrfs
198index a1003ab52..8e76dbba6 100755
199--- a/tests/ts/mount/fstab-btrfs
200+++ b/tests/ts/mount/fstab-btrfs
201@@ -94,8 +94,8 @@ ts_fstab_addline "$DEVICE" "$TS_MOUNTPOINT_SUBVOLID" "btrfs" "subvolid=$NON_DEFA
202 ts_fstab_addline "$TS_MOUNTPOINT_SUBVOLID" "$TS_MOUNTPOINT_BIND" "auto" "bind"
203 ts_fstab_close
204
205-$TS_CMD_MOUNT -a >> $TS_OUTPUT 2>> $TS_ERRLOG
206-$TS_CMD_MOUNT -a >> $TS_OUTPUT 2>> $TS_ERRLOG
207+$TS_CMD_MOUNT -T "$TS_FSTAB" -a >> $TS_OUTPUT 2>> $TS_ERRLOG
208+$TS_CMD_MOUNT -T "$TS_FSTAB" -a >> $TS_OUTPUT 2>> $TS_ERRLOG
209
210 $TS_CMD_UMOUNT "$TS_MOUNTPOINT_BIND" >> $TS_OUTPUT 2>> $TS_ERRLOG
211 $TS_CMD_UMOUNT "$TS_MOUNTPOINT_DEFAULT" >> $TS_OUTPUT 2>> $TS_ERRLOG
212@@ -124,8 +124,8 @@ ts_fstab_addline "$DEVICE" "$TS_MOUNTPOINT_SUBVOLID" "auto" "subvolid=$NON_DEFAU
213 ts_fstab_addline "$TS_MOUNTPOINT_SUBVOL/bind-mnt" "$TS_MOUNTPOINT_BIND" "auto" "bind"
214 ts_fstab_close
215
216-$TS_CMD_MOUNT -a >> $TS_OUTPUT 2>> $TS_ERRLOG
217-$TS_CMD_MOUNT -a >> $TS_OUTPUT 2>> $TS_ERRLOG
218+$TS_CMD_MOUNT -T "$TS_FSTAB" -a >> $TS_OUTPUT 2>> $TS_ERRLOG
219+$TS_CMD_MOUNT -T "$TS_FSTAB" -a >> $TS_OUTPUT 2>> $TS_ERRLOG
220
221 $TS_CMD_UMOUNT "$TS_MOUNTPOINT_BIND" >> $TS_OUTPUT 2>> $TS_ERRLOG
222 $TS_CMD_UMOUNT "$TS_MOUNTPOINT_DEFAULT" >> $TS_OUTPUT 2>> $TS_ERRLOG
223diff --git a/tests/ts/mount/fstab-devname b/tests/ts/mount/fstab-devname
224index 5b64a32a6..6ac03b5a7 100755
225--- a/tests/ts/mount/fstab-devname
226+++ b/tests/ts/mount/fstab-devname
227@@ -42,13 +42,13 @@ MOUNTPOINT=$TS_MOUNTPOINT
228 ts_fstab_add $DEVICE
229
230 ts_init_subtest "mountpoint"
231-$TS_CMD_MOUNT $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
232+$TS_CMD_MOUNT -T "$TS_FSTAB" $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
233 ts_is_mounted $DEVICE || ts_log "Cannot find $DEVICE in /proc/mounts"
234 $TS_CMD_UMOUNT $DEVICE || >> $TS_OUTPUT 2>> $TS_ERRLOG
235 ts_finalize_subtest
236
237 ts_init_subtest "device-name"
238-$TS_CMD_MOUNT $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
239+$TS_CMD_MOUNT -T "$TS_FSTAB" $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
240 ts_is_mounted $DEVICE || ts_log "Cannot find $DEVICE in /proc/mounts"
241 $TS_CMD_UMOUNT $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
242 ts_finalize_subtest
243diff --git a/tests/ts/mount/fstab-devname2label b/tests/ts/mount/fstab-devname2label
244index 1d8562109..44066e153 100755
245--- a/tests/ts/mount/fstab-devname2label
246+++ b/tests/ts/mount/fstab-devname2label
247@@ -41,7 +41,7 @@ ts_device_has "LABEL" $LABEL $DEVICE \
248 ts_fstab_add "LABEL=$LABEL"
249 ts_udevadm_settle "$DEVICE" "LABEL"
250
251-$TS_CMD_MOUNT $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
252+$TS_CMD_MOUNT -T "$TS_FSTAB" $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
253 ts_is_mounted $DEVICE || ts_die "Cannot find $DEVICE in /proc/mounts"
254 $TS_CMD_UMOUNT $DEVICE || ts_die "Cannot umount $DEVICE"
255
256diff --git a/tests/ts/mount/fstab-devname2uuid b/tests/ts/mount/fstab-devname2uuid
257index 8105fa028..503959103 100755
258--- a/tests/ts/mount/fstab-devname2uuid
259+++ b/tests/ts/mount/fstab-devname2uuid
260@@ -39,7 +39,7 @@ UUID=$(ts_uuid_by_devname "$DEVICE") || ts_die "Cannot find UUID on $DEVICE"
261 ts_fstab_add "UUID=$UUID"
262 ts_udevadm_settle "$DEVICE" "UUID"
263
264-$TS_CMD_MOUNT $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
265+$TS_CMD_MOUNT -T "$TS_FSTAB" $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
266 ts_is_mounted $DEVICE || ts_die "Cannot find $DEVICE in /proc/mounts"
267 $TS_CMD_UMOUNT $DEVICE || ts_die "Cannot umount $DEVICE"
268
269diff --git a/tests/ts/mount/fstab-label b/tests/ts/mount/fstab-label
270index 4b23e7fee..a3cc06d52 100755
271--- a/tests/ts/mount/fstab-label
272+++ b/tests/ts/mount/fstab-label
273@@ -42,19 +42,19 @@ ts_fstab_add "LABEL=$LABEL"
274 ts_udevadm_settle "$DEVICE" "LABEL"
275
276 ts_init_subtest "no-option"
277-$TS_CMD_MOUNT $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
278+$TS_CMD_MOUNT -T "$TS_FSTAB" $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
279 ts_is_mounted $DEVICE || ts_log "Cannot find $DEVICE in /proc/mounts"
280 $TS_CMD_UMOUNT $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
281 ts_finalize_subtest
282
283 ts_init_subtest "L-option"
284-$TS_CMD_MOUNT -L $LABEL >> $TS_OUTPUT 2>> $TS_ERRLOG
285+$TS_CMD_MOUNT -T "$TS_FSTAB" -L $LABEL >> $TS_OUTPUT 2>> $TS_ERRLOG
286 ts_is_mounted $DEVICE || ts_log "Cannot find $DEVICE in /proc/mounts"
287 $TS_CMD_UMOUNT $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
288 ts_finalize_subtest
289
290 ts_init_subtest "LABEL-option"
291-$TS_CMD_MOUNT LABEL=$LABEL >> $TS_OUTPUT 2>> $TS_ERRLOG
292+$TS_CMD_MOUNT -T "$TS_FSTAB" LABEL=$LABEL >> $TS_OUTPUT 2>> $TS_ERRLOG
293 ts_is_mounted $DEVICE || ts_log "Cannot find $DEVICE in /proc/mounts"
294 $TS_CMD_UMOUNT $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
295 ts_finalize_subtest
296diff --git a/tests/ts/mount/fstab-label2devname b/tests/ts/mount/fstab-label2devname
297index 75ca05e8c..fddbfa0ba 100755
298--- a/tests/ts/mount/fstab-label2devname
299+++ b/tests/ts/mount/fstab-label2devname
300@@ -44,13 +44,13 @@ ts_udevadm_settle "$DEVICE" "LABEL"
301 [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT
302
303 ts_init_subtest "L-option"
304-$TS_CMD_MOUNT -L $LABEL >> $TS_OUTPUT 2>> $TS_ERRLOG
305+$TS_CMD_MOUNT -T "$TS_FSTAB" -L $LABEL >> $TS_OUTPUT 2>> $TS_ERRLOG
306 ts_is_mounted $DEVICE || ts_log "Cannot find $DEVICE in /proc/mounts"
307 $TS_CMD_UMOUNT $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
308 ts_finalize_subtest
309
310 ts_init_subtest "LABEL-option"
311-$TS_CMD_MOUNT "LABEL=$LABEL" >> $TS_OUTPUT 2>> $TS_ERRLOG
312+$TS_CMD_MOUNT -T "$TS_FSTAB" "LABEL=$LABEL" >> $TS_OUTPUT 2>> $TS_ERRLOG
313 ts_is_mounted $DEVICE || ts_log "Cannot find $DEVICE in /proc/mounts"
314 $TS_CMD_UMOUNT $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
315 ts_finalize_subtest
316diff --git a/tests/ts/mount/fstab-label2uuid b/tests/ts/mount/fstab-label2uuid
317index 4bfcae4b9..927cde9aa 100755
318--- a/tests/ts/mount/fstab-label2uuid
319+++ b/tests/ts/mount/fstab-label2uuid
320@@ -46,13 +46,13 @@ ts_udevadm_settle "$DEVICE" "LABEL" "UUID"
321 [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT
322
323 ts_init_subtest "L-option"
324-$TS_CMD_MOUNT -L $LABEL >> $TS_OUTPUT 2>> $TS_ERRLOG
325+$TS_CMD_MOUNT -T "$TS_FSTAB" -L $LABEL >> $TS_OUTPUT 2>> $TS_ERRLOG
326 ts_is_mounted $DEVICE || ts_log "Cannot find $DEVICE in /proc/mounts"
327 $TS_CMD_UMOUNT $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
328 ts_finalize_subtest
329
330 ts_init_subtest "LABEL-option"
331-$TS_CMD_MOUNT "LABEL=$LABEL" >> $TS_OUTPUT 2>> $TS_ERRLOG
332+$TS_CMD_MOUNT -T "$TS_FSTAB" "LABEL=$LABEL" >> $TS_OUTPUT 2>> $TS_ERRLOG
333 ts_is_mounted $DEVICE || ts_log "Cannot find $DEVICE in /proc/mounts"
334 $TS_CMD_UMOUNT $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
335 ts_finalize_subtest
336diff --git a/tests/ts/mount/fstab-loop b/tests/ts/mount/fstab-loop
337index 7cc589fd2..0541e3a74 100755
338--- a/tests/ts/mount/fstab-loop
339+++ b/tests/ts/mount/fstab-loop
340@@ -39,10 +39,10 @@ ts_fstab_lock
341 ts_fstab_open
342
343 ts_fstab_addline "$IMG" "$TS_MOUNTPOINT-1" "ext2" "loop"
344-$TS_CMD_MOUNT -a >> $TS_OUTPUT 2>> $TS_ERRLOG
345+$TS_CMD_MOUNT -T "$TS_FSTAB" -a >> $TS_OUTPUT 2>> $TS_ERRLOG
346
347 ts_fstab_addline "$IMG" "$TS_MOUNTPOINT-2" "ext2" "loop"
348-$TS_CMD_MOUNT -a >> $TS_OUTPUT 2>> $TS_ERRLOG
349+$TS_CMD_MOUNT -T "$TS_FSTAB" -a >> $TS_OUTPUT 2>> $TS_ERRLOG
350
351 ts_fstab_close
352
353diff --git a/tests/ts/mount/fstab-none b/tests/ts/mount/fstab-none
354index 6a4d05b62..95daa6cee 100755
355--- a/tests/ts/mount/fstab-none
356+++ b/tests/ts/mount/fstab-none
357@@ -17,7 +17,7 @@ ts_fstab_add "none" "$TS_MOUNTPOINT" "tmpfs" "rw,nosuid,nodev,relatime"
358
359 mkdir -p $TS_MOUNTPOINT
360
361-$TS_CMD_MOUNT $TS_MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
362+$TS_CMD_MOUNT -T "$TS_FSTAB" $TS_MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
363 [ "$?" = "0" ] || ts_log "error: mount $TS_MOUNTPOINT"
364
365 $TS_CMD_FINDMNT --mountpoint "$TS_MOUNTPOINT" &> /dev/null
366diff --git a/tests/ts/mount/fstab-symlink b/tests/ts/mount/fstab-symlink
367index 4d3e37b19..6d419f9fe 100755
368--- a/tests/ts/mount/fstab-symlink
369+++ b/tests/ts/mount/fstab-symlink
370@@ -46,7 +46,7 @@ ln -s $DEVICE $LINKNAME
371 ts_fstab_add $LINKNAME $TS_MOUNTPOINT "auto" "defaults,user"
372
373 # variant A) -- UID=0
374-$TS_CMD_MOUNT $LINKNAME >> $TS_OUTPUT 2>> $TS_ERRLOG
375+$TS_CMD_MOUNT -T "$TS_FSTAB" $LINKNAME >> $TS_OUTPUT 2>> $TS_ERRLOG
376 ts_is_mounted $DEVICE || ts_die "A) Cannot find $DEVICE in /proc/mounts"
377 $TS_CMD_UMOUNT $LINKNAME || ts_die "A) Cannot umount $LINKNAME"
378
379diff --git a/tests/ts/mount/fstab-uuid b/tests/ts/mount/fstab-uuid
380index 03917b782..f51bb294e 100755
381--- a/tests/ts/mount/fstab-uuid
382+++ b/tests/ts/mount/fstab-uuid
383@@ -42,19 +42,19 @@ ts_fstab_add "UUID=$UUID"
384 ts_udevadm_settle "$DEVICE" "UUID"
385
386 ts_init_subtest "no-option"
387-$TS_CMD_MOUNT $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
388+$TS_CMD_MOUNT -T "$TS_FSTAB" $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
389 ts_is_mounted $DEVICE || ts_log "Cannot find $DEVICE in /proc/mounts"
390 $TS_CMD_UMOUNT $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
391 ts_finalize_subtest
392
393 ts_init_subtest "U-option"
394-$TS_CMD_MOUNT -U $UUID >> $TS_OUTPUT 2>> $TS_ERRLOG
395+$TS_CMD_MOUNT -T "$TS_FSTAB" -U $UUID >> $TS_OUTPUT 2>> $TS_ERRLOG
396 ts_is_mounted $DEVICE || ts_log "Cannot find $DEVICE in /proc/mounts"
397 $TS_CMD_UMOUNT $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
398 ts_finalize_subtest
399
400 ts_init_subtest "UUID-option"
401-$TS_CMD_MOUNT UUID=$UUID >> $TS_OUTPUT 2>> $TS_ERRLOG
402+$TS_CMD_MOUNT -T "$TS_FSTAB" UUID=$UUID >> $TS_OUTPUT 2>> $TS_ERRLOG
403 ts_is_mounted $DEVICE || ts_log "Cannot find $DEVICE in /proc/mounts"
404 $TS_CMD_UMOUNT $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
405 ts_finalize_subtest
406diff --git a/tests/ts/mount/fstab-uuid2devname b/tests/ts/mount/fstab-uuid2devname
407index 9bf165e16..2b338acb1 100755
408--- a/tests/ts/mount/fstab-uuid2devname
409+++ b/tests/ts/mount/fstab-uuid2devname
410@@ -42,13 +42,13 @@ ts_udevadm_settle "$DEVICE" "UUID"
411 [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT
412
413 ts_init_subtest "U-option"
414-$TS_CMD_MOUNT -U $UUID >> $TS_OUTPUT 2>> $TS_ERRLOG
415+$TS_CMD_MOUNT -T "$TS_FSTAB" -U $UUID >> $TS_OUTPUT 2>> $TS_ERRLOG
416 ts_is_mounted $DEVICE || ts_log "Cannot find $DEVICE in /proc/mounts"
417 $TS_CMD_UMOUNT $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
418 ts_finalize_subtest
419
420 ts_init_subtest "UUID-option"
421-$TS_CMD_MOUNT "UUID=$UUID" >> $TS_OUTPUT 2>> $TS_ERRLOG
422+$TS_CMD_MOUNT -T "$TS_FSTAB" "UUID=$UUID" >> $TS_OUTPUT 2>> $TS_ERRLOG
423 ts_is_mounted $DEVICE || ts_log "Cannot find $DEVICE in /proc/mounts"
424 $TS_CMD_UMOUNT $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
425 ts_finalize_subtest
426diff --git a/tests/ts/mount/fstab-uuid2label b/tests/ts/mount/fstab-uuid2label
427index de10ff0b0..02eb6b985 100755
428--- a/tests/ts/mount/fstab-uuid2label
429+++ b/tests/ts/mount/fstab-uuid2label
430@@ -45,13 +45,13 @@ ts_udevadm_settle "$DEVICE" "LABEL" "UUID"
431 [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT
432
433 ts_init_subtest "U-option"
434-$TS_CMD_MOUNT -U $UUID >> $TS_OUTPUT 2>> $TS_ERRLOG
435+$TS_CMD_MOUNT -T "$TS_FSTAB" -U $UUID >> $TS_OUTPUT 2>> $TS_ERRLOG
436 ts_is_mounted $DEVICE || ts_log "Cannot find $DEVICE in /proc/mounts"
437 $TS_CMD_UMOUNT $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
438 ts_finalize_subtest
439
440 ts_init_subtest "UUID-option"
441-$TS_CMD_MOUNT "UUID=$UUID" >> $TS_OUTPUT 2>> $TS_ERRLOG
442+$TS_CMD_MOUNT -T "$TS_FSTAB" "UUID=$UUID" >> $TS_OUTPUT 2>> $TS_ERRLOG
443 ts_is_mounted $DEVICE || ts_log "Cannot find $DEVICE in /proc/mounts"
444 $TS_CMD_UMOUNT $DEVICE >> $TS_OUTPUT 2>>$TS_ERRLOG
445 ts_finalize_subtest
446--
4472.34.1
448
diff --git a/meta/recipes-devtools/binutils/binutils-2.42.inc b/meta/recipes-devtools/binutils/binutils-2.42.inc
index e103e712a4..ea018a48a3 100644
--- a/meta/recipes-devtools/binutils/binutils-2.42.inc
+++ b/meta/recipes-devtools/binutils/binutils-2.42.inc
@@ -19,6 +19,7 @@ SRCBRANCH ?= "binutils-2_42-branch"
19UPSTREAM_CHECK_GITTAGREGEX = "binutils-(?P<pver>\d+_(\d_?)*)" 19UPSTREAM_CHECK_GITTAGREGEX = "binutils-(?P<pver>\d+_(\d_?)*)"
20 20
21CVE_STATUS[CVE-2023-25584] = "cpe-incorrect: Applies only for version 2.40 and earlier" 21CVE_STATUS[CVE-2023-25584] = "cpe-incorrect: Applies only for version 2.40 and earlier"
22CVE_STATUS[CVE-2025-1180] = "patched: fixed by patch for CVE-2025-1176"
22 23
23SRCREV ?= "6558f9f5f0ccc107a083ae7fbf106ebcb5efa817" 24SRCREV ?= "6558f9f5f0ccc107a083ae7fbf106ebcb5efa817"
24BINUTILS_GIT_URI ?= "git://sourceware.org/git/binutils-gdb.git;branch=${SRCBRANCH};protocol=https" 25BINUTILS_GIT_URI ?= "git://sourceware.org/git/binutils-gdb.git;branch=${SRCBRANCH};protocol=https"
@@ -45,5 +46,12 @@ SRC_URI = "\
45 file://CVE-2025-1181-pre.patch \ 46 file://CVE-2025-1181-pre.patch \
46 file://CVE-2025-1181.patch \ 47 file://CVE-2025-1181.patch \
47 file://CVE-2025-1182.patch \ 48 file://CVE-2025-1182.patch \
49 file://0019-CVE-2025-1153-1.patch \
50 file://0020-CVE-2025-1153-2.patch \
51 file://0021-CVE-2025-1153-3.patch \
52 file://CVE-2025-1179-pre.patch \
53 file://CVE-2025-1179.patch \
54 file://0022-CVE-2025-5245.patch \
55 file://0022-CVE-2025-5244.patch \
48" 56"
49S = "${WORKDIR}/git" 57S = "${WORKDIR}/git"
diff --git a/meta/recipes-devtools/binutils/binutils/0019-CVE-2025-1153-1.patch b/meta/recipes-devtools/binutils/binutils/0019-CVE-2025-1153-1.patch
new file mode 100644
index 0000000000..fa26961447
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/0019-CVE-2025-1153-1.patch
@@ -0,0 +1,3207 @@
1From 0b7f992b78fe0984fc7d84cc748d0794e4a400e3 Mon Sep 17 00:00:00 2001
2From: Alan Modra <amodra@gmail.com>
3Date: Thu, 6 Feb 2025 21:46:22 +1030
4Subject: [PATCH] PR 32603, ld -w misbehaviorur
5
6ld -w currently causes segmentation faults and other misbehaviour
7since it changes einfo with %F in the format string (fatal error) to
8not exit. This patch fixes that by introducing a new variant of einfo
9called "fatal" that always exits, and replaces all einfo calls using
10%F with a call to fatal without the %F. I considered modifying einfo
11to inspect the first 2 or 4 chars in the format string, looking for
12%F, but decided that was probably a bad idea given that translators
13might have moved the %F. It's also a little nicer to inform the
14compiler of a function that doesn't return.
15
16The patch also fixes some formatting nits, and makes use of %pA
17to print section names in a couple of places in aix.em.
18
19Upstream-Status: Backport [https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=0b7f992b78fe0984fc7d84cc748d0794e4a400e3]
20CVE: CVE-2025-1153
21
22Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
23---
24 ld/emulparams/call_nop.sh | 6 +--
25 ld/emulparams/cet.sh | 2 +-
26 ld/emulparams/elf32mcore.sh | 2 +-
27 ld/emulparams/x86-64-lam.sh | 6 +--
28 ld/emulparams/x86-64-level.sh | 2 +-
29 ld/emultempl/aarch64elf.em | 6 +--
30 ld/emultempl/aix.em | 41 ++++++++-------
31 ld/emultempl/armelf.em | 10 ++--
32 ld/emultempl/avrelf.em | 2 +-
33 ld/emultempl/beos.em | 24 ++++-----
34 ld/emultempl/cr16elf.em | 4 +-
35 ld/emultempl/cskyelf.em | 4 +-
36 ld/emultempl/elf.em | 18 +++----
37 ld/emultempl/hppaelf.em | 4 +-
38 ld/emultempl/kvxelf.em | 7 ++-
39 ld/emultempl/loongarchelf.em | 4 +-
40 ld/emultempl/m68hc1xelf.em | 2 +-
41 ld/emultempl/m68kelf.em | 4 +-
42 ld/emultempl/metagelf.em | 4 +-
43 ld/emultempl/mipself.em | 2 +-
44 ld/emultempl/mmix-elfnmmo.em | 5 +-
45 ld/emultempl/nds32elf.em | 6 +--
46 ld/emultempl/nto.em | 28 +++++------
47 ld/emultempl/pe.em | 20 ++++----
48 ld/emultempl/pep.em | 16 +++---
49 ld/emultempl/ppc32elf.em | 4 +-
50 ld/emultempl/ppc64elf.em | 10 ++--
51 ld/emultempl/riscvelf.em | 2 +-
52 ld/emultempl/s390.em | 2 +-
53 ld/emultempl/scoreelf.em | 2 +-
54 ld/emultempl/spuelf.em | 20 ++++----
55 ld/emultempl/tic6xdsbt.em | 10 ++--
56 ld/emultempl/ticoff.em | 4 +-
57 ld/emultempl/v850elf.em | 2 +-
58 ld/emultempl/vms.em | 2 +-
59 ld/emultempl/xtensaelf.em | 12 ++---
60 ld/emultempl/z80.em | 2 +-
61 ld/ldcref.c | 8 +--
62 ld/ldelf.c | 34 ++++++-------
63 ld/ldelfgen.c | 17 +++----
64 ld/ldemul.c | 2 +-
65 ld/ldexp.c | 42 ++++++++--------
66 ld/ldfile.c | 14 +++---
67 ld/ldgram.y | 6 +--
68 ld/ldlang.c | 95 +++++++++++++++++------------------
69 ld/ldlex.l | 14 ++----
70 ld/ldmain.c | 44 ++++++++--------
71 ld/ldmisc.c | 28 ++++++++---
72 ld/ldmisc.h | 1 +
73 ld/ldwrite.c | 20 ++++----
74 ld/lexsup.c | 72 +++++++++++++-------------
75 ld/mri.c | 2 +-
76 ld/pe-dll.c | 12 ++---
77 ld/plugin.c | 27 +++++-----
78 54 files changed, 363 insertions(+), 376 deletions(-)
79
80diff --git a/ld/emulparams/call_nop.sh b/ld/emulparams/call_nop.sh
81index 2c3c305f..7dd6dfb1 100644
82--- a/ld/emulparams/call_nop.sh
83+++ b/ld/emulparams/call_nop.sh
84@@ -20,7 +20,7 @@ PARSE_AND_LIST_ARGS_CASE_Z_CALL_NOP='
85 char *end;
86 params.call_nop_byte = strtoul (optarg + 16 , &end, 0);
87 if (*end)
88- einfo (_("%F%P: invalid number for -z call-nop=prefix-: %s\n"),
89+ fatal (_("%P: invalid number for -z call-nop=prefix-: %s\n"),
90 optarg + 16);
91 params.call_nop_as_suffix = false;
92 }
93@@ -29,12 +29,12 @@ PARSE_AND_LIST_ARGS_CASE_Z_CALL_NOP='
94 char *end;
95 params.call_nop_byte = strtoul (optarg + 16, &end, 0);
96 if (*end)
97- einfo (_("%F%P: invalid number for -z call-nop=suffix-: %s\n"),
98+ fatal (_("%P: invalid number for -z call-nop=suffix-: %s\n"),
99 optarg + 16);
100 params.call_nop_as_suffix = true;
101 }
102 else
103- einfo (_("%F%P: unsupported option: -z %s\n"), optarg);
104+ fatal (_("%P: unsupported option: -z %s\n"), optarg);
105 }
106 '
107
108diff --git a/ld/emulparams/cet.sh b/ld/emulparams/cet.sh
109index 2c627994..e463441d 100644
110--- a/ld/emulparams/cet.sh
111+++ b/ld/emulparams/cet.sh
112@@ -29,7 +29,7 @@ PARSE_AND_LIST_ARGS_CASE_Z_CET='
113 | prop_report_ibt
114 | prop_report_shstk);
115 else
116- einfo (_("%F%P: invalid option for -z cet-report=: %s\n"),
117+ fatal (_("%P: invalid option for -z cet-report=: %s\n"),
118 optarg + 11);
119 }
120 '
121diff --git a/ld/emulparams/elf32mcore.sh b/ld/emulparams/elf32mcore.sh
122index 88a8cb6e..275a796f 100644
123--- a/ld/emulparams/elf32mcore.sh
124+++ b/ld/emulparams/elf32mcore.sh
125@@ -46,6 +46,6 @@ PARSE_AND_LIST_ARGS_CASES='
126 case OPTION_BASE_FILE:
127 link_info.base_file = fopen (optarg, FOPEN_WB);
128 if (link_info.base_file == NULL)
129- einfo (_("%F%P: cannot open base file %s\n"), optarg);
130+ fatal (_("%P: cannot open base file %s\n"), optarg);
131 break;
132 '
133diff --git a/ld/emulparams/x86-64-lam.sh b/ld/emulparams/x86-64-lam.sh
134index fab42ff1..6e629ebb 100644
135--- a/ld/emulparams/x86-64-lam.sh
136+++ b/ld/emulparams/x86-64-lam.sh
137@@ -25,7 +25,7 @@ PARSE_AND_LIST_ARGS_CASE_Z_LAM='
138 else if (strcmp (optarg + 15, "error") == 0)
139 params.lam_u48_report = prop_report_error;
140 else
141- einfo (_("%F%P: invalid option for -z lam-u48-report=: %s\n"),
142+ fatal (_("%P: invalid option for -z lam-u48-report=: %s\n"),
143 optarg + 15);
144 }
145 else if (strcmp (optarg, "lam-u57") == 0)
146@@ -39,7 +39,7 @@ PARSE_AND_LIST_ARGS_CASE_Z_LAM='
147 else if (strcmp (optarg + 15, "error") == 0)
148 params.lam_u57_report = prop_report_error;
149 else
150- einfo (_("%F%P: invalid option for -z lam-u57-report=: %s\n"),
151+ fatal (_("%P: invalid option for -z lam-u57-report=: %s\n"),
152 optarg + 15);
153 }
154 else if (strncmp (optarg, "lam-report=", 11) == 0)
155@@ -60,7 +60,7 @@ PARSE_AND_LIST_ARGS_CASE_Z_LAM='
156 params.lam_u57_report = prop_report_error;
157 }
158 else
159- einfo (_("%F%P: invalid option for -z lam-report=: %s\n"),
160+ fatal (_("%P: invalid option for -z lam-report=: %s\n"),
161 optarg + 11);
162 }
163 '
164diff --git a/ld/emulparams/x86-64-level.sh b/ld/emulparams/x86-64-level.sh
165index c46aacf3..7e27cf1e 100644
166--- a/ld/emulparams/x86-64-level.sh
167+++ b/ld/emulparams/x86-64-level.sh
168@@ -10,7 +10,7 @@ PARSE_AND_LIST_ARGS_CASE_Z_X86_64_LEVEL='
169 char *end;
170 unsigned int level = strtoul (optarg + 8 , &end, 10);
171 if (*end != '\0' || level < 2 || level > 4)
172- einfo (_("%F%P: invalid x86-64 ISA level: %s\n"), optarg);
173+ fatal (_("%P: invalid x86-64 ISA level: %s\n"), optarg);
174 params.isa_level = level;
175 }
176 '
177diff --git a/ld/emultempl/aarch64elf.em b/ld/emultempl/aarch64elf.em
178index b647909a..a6637718 100644
179--- a/ld/emultempl/aarch64elf.em
180+++ b/ld/emultempl/aarch64elf.em
181@@ -316,7 +316,7 @@ aarch64_elf_create_output_section_statements (void)
182 These will only be created if the output format is an arm format,
183 hence we do not support linking and changing output formats at the
184 same time. Use a link followed by objcopy to change output formats. */
185- einfo (_("%F%P: error: cannot change output format "
186+ fatal (_("%P: error: cannot change output format "
187 "whilst linking %s binaries\n"), "AArch64");
188 return;
189 }
190@@ -342,7 +342,7 @@ aarch64_elf_create_output_section_statements (void)
191 bfd_get_arch (link_info.output_bfd),
192 bfd_get_mach (link_info.output_bfd)))
193 {
194- einfo (_("%F%P: can not create BFD: %E\n"));
195+ fatal (_("%P: can not create BFD: %E\n"));
196 return;
197 }
198
199@@ -468,7 +468,7 @@ PARSE_AND_LIST_ARGS_CASES='
200
201 group_size = bfd_scan_vma (optarg, &end, 0);
202 if (*end)
203- einfo (_("%F%P: invalid number `%s'\''\n"), optarg);
204+ fatal (_("%P: invalid number `%s'\''\n"), optarg);
205 }
206 break;
207 '
208diff --git a/ld/emultempl/aix.em b/ld/emultempl/aix.em
209index a445c329..29acdbc9 100644
210--- a/ld/emultempl/aix.em
211+++ b/ld/emultempl/aix.em
212@@ -335,7 +335,7 @@ read_file_list (const char *filename)
213 f = fopen (filename, FOPEN_RT);
214 if (f == NULL)
215 {
216- einfo (_("%F%P: cannot open %s\n"), filename);
217+ fatal (_("%P: cannot open %s\n"), filename);
218 return;
219 }
220 if (fseek (f, 0L, SEEK_END) == -1)
221@@ -382,8 +382,8 @@ read_file_list (const char *filename)
222 return;
223
224 error:
225- einfo (_("%F%P: cannot read %s\n"), optarg);
226 fclose (f);
227+ fatal (_("%P: cannot read %s\n"), optarg);
228 }
229
230 static bool
231@@ -734,7 +734,7 @@ gld${EMULATION_NAME}_after_open (void)
232 size = (p->count + 2) * 4;
233 if (!bfd_xcoff_link_record_set (link_info.output_bfd, &link_info,
234 p->h, size))
235- einfo (_("%F%P: bfd_xcoff_link_record_set failed: %E\n"));
236+ fatal (_("%P: bfd_xcoff_link_record_set failed: %E\n"));
237 }
238 }
239
240@@ -764,9 +764,9 @@ gld${EMULATION_NAME}_before_allocation (void)
241
242 h = bfd_link_hash_lookup (link_info.hash, el->name, false, false, false);
243 if (h == NULL)
244- einfo (_("%F%P: bfd_link_hash_lookup of export symbol failed: %E\n"));
245+ fatal (_("%P: bfd_link_hash_lookup of export symbol failed: %E\n"));
246 if (!bfd_xcoff_export_symbol (link_info.output_bfd, &link_info, h))
247- einfo (_("%F%P: bfd_xcoff_export_symbol failed: %E\n"));
248+ fatal (_("%P: bfd_xcoff_export_symbol failed: %E\n"));
249 }
250
251 /* Track down all relocations called for by the linker script (these
252@@ -849,7 +849,7 @@ gld${EMULATION_NAME}_before_allocation (void)
253 (link_info.output_bfd, &link_info, libpath, entry_symbol.name,
254 file_align, maxstack, maxdata, gc && !unix_ld,
255 modtype, textro, flags, special_sections, rtld))
256- einfo (_("%F%P: failed to set dynamic section sizes: %E\n"));
257+ fatal (_("%P: failed to set dynamic section sizes: %E\n"));
258
259 /* Look through the special sections, and put them in the right
260 place in the link ordering. This is especially magic. */
261@@ -871,8 +871,8 @@ gld${EMULATION_NAME}_before_allocation (void)
262 is = NULL;
263 os = lang_output_section_get (sec->output_section);
264 if (os == NULL)
265- einfo (_("%F%P: can't find output section %s\n"),
266- sec->output_section->name);
267+ fatal (_("%P: can't find output section %pA\n"),
268+ sec->output_section);
269
270 for (pls = &os->children.head; *pls != NULL; pls = &(*pls)->header.next)
271 {
272@@ -908,8 +908,7 @@ gld${EMULATION_NAME}_before_allocation (void)
273
274 if (is == NULL)
275 {
276- einfo (_("%F%P: can't find %s in output section\n"),
277- bfd_section_name (sec));
278+ fatal (_("%P: can't find %pA in output section\n"), sec);
279 }
280
281 /* Now figure out where the section should go. */
282@@ -1162,7 +1161,7 @@ gld${EMULATION_NAME}_after_allocation (void)
283
284 /* Now that everything is in place, finalize the dynamic sections. */
285 if (!bfd_xcoff_build_dynamic_sections (link_info.output_bfd, &link_info))
286- einfo (_("%F%P: failed to layout dynamic sections: %E\n"));
287+ fatal (_("%P: failed to layout dynamic sections: %E\n"));
288
289 if (!bfd_link_relocatable (&link_info))
290 {
291@@ -1313,7 +1312,7 @@ gld${EMULATION_NAME}_read_file (const char *filename, bool import)
292 if (f == NULL)
293 {
294 bfd_set_error (bfd_error_system_call);
295- einfo ("%F%P: %s: %E\n", filename);
296+ fatal ("%P: %s: %E\n", filename);
297 return;
298 }
299
300@@ -1375,7 +1374,7 @@ gld${EMULATION_NAME}_read_file (const char *filename, bool import)
301 obstack_free (o, obstack_base (o));
302 }
303 else if (*s == '(')
304- einfo (_("%F%P:%s:%d: #! ([member]) is not supported "
305+ fatal (_("%P:%s:%d: #! ([member]) is not supported "
306 "in import files\n"),
307 filename, lineno);
308 else
309@@ -1392,7 +1391,7 @@ gld${EMULATION_NAME}_read_file (const char *filename, bool import)
310 *s = '\0';
311 if (!bfd_xcoff_split_import_path (link_info.output_bfd,
312 start, &imppath, &impfile))
313- einfo (_("%F%P: could not parse import path: %E\n"));
314+ fatal (_("%P: could not parse import path: %E\n"));
315 while (ISSPACE (cs))
316 {
317 ++s;
318@@ -1547,10 +1546,10 @@ gld${EMULATION_NAME}_find_relocs (lang_statement_union_type *s)
319
320 rs = &s->reloc_statement;
321 if (rs->name == NULL)
322- einfo (_("%F%P: only relocations against symbols are permitted\n"));
323+ fatal (_("%P: only relocations against symbols are permitted\n"));
324 if (!bfd_xcoff_link_count_reloc (link_info.output_bfd, &link_info,
325 rs->name))
326- einfo (_("%F%P: bfd_xcoff_link_count_reloc failed: %E\n"));
327+ fatal (_("%P: bfd_xcoff_link_count_reloc failed: %E\n"));
328 }
329
330 if (s->header.type == lang_assignment_statement_enum)
331@@ -1579,7 +1578,7 @@ gld${EMULATION_NAME}_find_exp_assignment (etree_type *exp)
332 if (!bfd_xcoff_record_link_assignment (link_info.output_bfd,
333 &link_info,
334 exp->assign.dst))
335- einfo (_("%F%P: failed to record assignment to %s: %E\n"),
336+ fatal (_("%P: failed to record assignment to %s: %E\n"),
337 exp->assign.dst);
338 }
339 gld${EMULATION_NAME}_find_exp_assignment (exp->assign.src);
340@@ -1674,7 +1673,7 @@ gld${EMULATION_NAME}_create_output_section_statements (void)
341 bfd_get_arch (link_info.output_bfd),
342 bfd_get_mach (link_info.output_bfd)))
343 {
344- einfo (_("%F%P: can not create stub BFD: %E\n"));
345+ fatal (_("%P: can not create stub BFD: %E\n"));
346 return;
347 }
348
349@@ -1684,7 +1683,7 @@ gld${EMULATION_NAME}_create_output_section_statements (void)
350
351 /* Pass linker params to the back-end. */
352 if (!bfd_xcoff_link_init (&link_info, &params))
353- einfo (_("%F%P: can not init BFD: %E\n"));
354+ fatal (_("%P: can not init BFD: %E\n"));
355
356 /* __rtinit */
357 if (link_info.init_function != NULL
358@@ -1701,7 +1700,7 @@ gld${EMULATION_NAME}_create_output_section_statements (void)
359 bfd_get_arch (link_info.output_bfd),
360 bfd_get_mach (link_info.output_bfd)))
361 {
362- einfo (_("%F%P: can not create BFD: %E\n"));
363+ fatal (_("%P: can not create BFD: %E\n"));
364 return;
365 }
366
367@@ -1711,7 +1710,7 @@ gld${EMULATION_NAME}_create_output_section_statements (void)
368 link_info.fini_function,
369 rtld))
370 {
371- einfo (_("%F%P: can not create BFD: %E\n"));
372+ fatal (_("%P: can not create BFD: %E\n"));
373 return;
374 }
375
376diff --git a/ld/emultempl/armelf.em b/ld/emultempl/armelf.em
377index 7fb1826e..504fb0cd 100644
378--- a/ld/emultempl/armelf.em
379+++ b/ld/emultempl/armelf.em
380@@ -521,7 +521,7 @@ arm_elf_create_output_section_statements (void)
381 These will only be created if the output format is an arm format,
382 hence we do not support linking and changing output formats at the
383 same time. Use a link followed by objcopy to change output formats. */
384- einfo (_("%F%P: error: cannot change output format "
385+ fatal (_("%P: error: cannot change output format "
386 "whilst linking %s binaries\n"), "ARM");
387 return;
388 }
389@@ -532,10 +532,10 @@ arm_elf_create_output_section_statements (void)
390 bfd_get_target (link_info.output_bfd));
391
392 if (params.in_implib_bfd == NULL)
393- einfo (_("%F%P: %s: can't open: %E\n"), in_implib_filename);
394+ fatal (_("%P: %s: can't open: %E\n"), in_implib_filename);
395
396 if (!bfd_check_format (params.in_implib_bfd, bfd_object))
397- einfo (_("%F%P: %s: not a relocatable file: %E\n"), in_implib_filename);
398+ fatal (_("%P: %s: not a relocatable file: %E\n"), in_implib_filename);
399 }
400
401 bfd_elf32_arm_set_target_params (link_info.output_bfd, &link_info, &params);
402@@ -549,7 +549,7 @@ arm_elf_create_output_section_statements (void)
403 bfd_get_arch (link_info.output_bfd),
404 bfd_get_mach (link_info.output_bfd)))
405 {
406- einfo (_("%F%P: can not create BFD: %E\n"));
407+ fatal (_("%P: can not create BFD: %E\n"));
408 return;
409 }
410
411@@ -734,7 +734,7 @@ PARSE_AND_LIST_ARGS_CASES='
412
413 group_size = bfd_scan_vma (optarg, &end, 0);
414 if (*end)
415- einfo (_("%F%P: invalid number `%s'\''\n"), optarg);
416+ fatal (_("%P: invalid number `%s'\''\n"), optarg);
417 }
418 break;
419
420diff --git a/ld/emultempl/avrelf.em b/ld/emultempl/avrelf.em
421index 3fe81004..dd5b57d1 100644
422--- a/ld/emultempl/avrelf.em
423+++ b/ld/emultempl/avrelf.em
424@@ -116,7 +116,7 @@ avr_elf_create_output_section_statements (void)
425
426 if (bfd_get_flavour (link_info.output_bfd) != bfd_target_elf_flavour)
427 {
428- einfo (_("%F%P: error: cannot change output format "
429+ fatal (_("%P: error: cannot change output format "
430 "whilst linking %s binaries\n"), "AVR");
431 return;
432 }
433diff --git a/ld/emultempl/beos.em b/ld/emultempl/beos.em
434index 844d4986..81878b02 100644
435--- a/ld/emultempl/beos.em
436+++ b/ld/emultempl/beos.em
437@@ -227,7 +227,7 @@ set_pe_subsystem (void)
438 return;
439 }
440 }
441- einfo (_("%F%P: invalid subsystem type %s\n"), optarg);
442+ fatal (_("%P: invalid subsystem type %s\n"), optarg);
443 }
444
445
446@@ -237,9 +237,7 @@ set_pe_value (char *name)
447 char *end;
448 set_pe_name (name, strtoul (optarg, &end, 0));
449 if (end == optarg)
450- {
451- einfo (_("%F%P: invalid hex number for PE parameter '%s'\n"), optarg);
452- }
453+ fatal (_("%P: invalid hex number for PE parameter '%s'\n"), optarg);
454
455 optarg = end;
456 }
457@@ -254,9 +252,7 @@ set_pe_stack_heap (char *resname, char *comname)
458 set_pe_value (comname);
459 }
460 else if (*optarg)
461- {
462- einfo (_("%F%P: strange hex info for PE parameter '%s'\n"), optarg);
463- }
464+ fatal (_("%P: strange hex info for PE parameter '%s'\n"), optarg);
465 }
466
467
468@@ -271,7 +267,7 @@ gld${EMULATION_NAME}_handle_option (int optc)
469 case OPTION_BASE_FILE:
470 link_info.base_file = fopen (optarg, FOPEN_WB);
471 if (link_info.base_file == NULL)
472- einfo (_("%F%P: cannot open base file %s\n"), optarg);
473+ fatal (_("%P: cannot open base file %s\n"), optarg);
474 break;
475
476 /* PE options */
477@@ -380,9 +376,7 @@ gld${EMULATION_NAME}_after_open (void)
478 FIXME: This should be done via a function, rather than by
479 including an internal BFD header. */
480 if (!obj_pe (link_info.output_bfd))
481- {
482- einfo (_("%F%P: PE operations on non PE file\n"));
483- }
484+ fatal (_("%P: PE operations on non PE file\n"));
485
486 pe_data(link_info.output_bfd)->pe_opthdr = pe;
487 pe_data(link_info.output_bfd)->dll = init[DLLOFF].value;
488@@ -431,12 +425,12 @@ sort_by_file_name (const void *a, const void *b)
489
490 if (!bfd_get_section_contents (sa->owner, sa, &a_sec, (file_ptr) 0,
491 (bfd_size_type) sizeof (a_sec)))
492- einfo (_("%F%P: %pB: can't read contents of section .idata: %E\n"),
493+ fatal (_("%P: %pB: can't read contents of section .idata: %E\n"),
494 sa->owner);
495
496 if (!bfd_get_section_contents (sb->owner, sb, &b_sec, (file_ptr) 0,
497 (bfd_size_type) sizeof (b_sec)))
498- einfo (_("%F%P: %pB: can't read contents of section .idata: %E\n"),
499+ fatal (_("%P: %pB: can't read contents of section .idata: %E\n"),
500 sb->owner);
501
502 i = a_sec < b_sec ? -1 : 0;
503@@ -668,7 +662,7 @@ gld${EMULATION_NAME}_place_orphan (asection *s,
504 /* Everything from the '\$' on gets deleted so don't allow '\$' as the
505 first character. */
506 if (*secname == '\$')
507- einfo (_("%F%P: section %s has '\$' as first character\n"), secname);
508+ fatal (_("%P: section %s has '\$' as first character\n"), secname);
509 if (strchr (secname + 1, '\$') == NULL)
510 return NULL;
511
512@@ -698,7 +692,7 @@ gld${EMULATION_NAME}_place_orphan (asection *s,
513 }
514 ps[0] = 0;
515 if (l == NULL)
516- einfo (_("%F%P: *(%s\$) missing from linker script\n"), output_secname);
517+ fatal (_("%P: *(%s\$) missing from linker script\n"), output_secname);
518
519 /* Link the input section in and we're done for now.
520 The sections still have to be sorted, but that has to wait until
521diff --git a/ld/emultempl/cr16elf.em b/ld/emultempl/cr16elf.em
522index 7d4f9507..5464edf1 100644
523--- a/ld/emultempl/cr16elf.em
524+++ b/ld/emultempl/cr16elf.em
525@@ -58,7 +58,7 @@ cr16_elf_after_open (void)
526 COFF and ELF. */
527 if (bfd_get_flavour (abfd) != bfd_target_coff_flavour
528 && bfd_get_flavour (abfd) != bfd_target_elf_flavour)
529- einfo (_("%F%P: %pB: all input objects must be COFF or ELF "
530+ fatal (_("%P: %pB: all input objects must be COFF or ELF "
531 "for --embedded-relocs\n"));
532
533 datasec = bfd_get_section_by_name (abfd, ".data.rel");
534@@ -82,7 +82,7 @@ cr16_elf_after_open (void)
535 | SEC_IN_MEMORY))
536 || !bfd_set_section_alignment (relsec, 2)
537 || !bfd_set_section_size (relsec, datasec->reloc_count * 8))
538- einfo (_("%F%P: %pB: can not create .emreloc section: %E\n"));
539+ fatal (_("%P: %pB: can not create .emreloc section: %E\n"));
540 }
541
542 /* Double check that all other data sections are empty, as is
543diff --git a/ld/emultempl/cskyelf.em b/ld/emultempl/cskyelf.em
544index 82815e5e..9c91d7ac 100644
545--- a/ld/emultempl/cskyelf.em
546+++ b/ld/emultempl/cskyelf.em
547@@ -151,7 +151,7 @@ csky_elf_create_output_section_statements (void)
548 bfd_get_arch (link_info.output_bfd),
549 bfd_get_mach (link_info.output_bfd)))
550 {
551- einfo (_("%F%P: can not create BFD: %E\n"));
552+ fatal (_("%P: can not create BFD: %E\n"));
553 return;
554 }
555
556@@ -324,7 +324,7 @@ PARSE_AND_LIST_ARGS_CASES='
557
558 group_size = bfd_scan_vma (optarg, &end, 0);
559 if (*end)
560- einfo (_("%F%P: invalid number `%s'\''\n"), optarg);
561+ fatal (_("%P: invalid number `%s'\''\n"), optarg);
562 }
563 break;
564 '
565diff --git a/ld/emultempl/elf.em b/ld/emultempl/elf.em
566index 71cec19f..5cc38194 100644
567--- a/ld/emultempl/elf.em
568+++ b/ld/emultempl/elf.em
569@@ -667,13 +667,13 @@ gld${EMULATION_NAME}_handle_option (int optc)
570 {
571 #ifndef HAVE_ZSTD
572 if (config.compress_debug == COMPRESS_DEBUG_ZSTD)
573- einfo (_ ("%F%P: --compress-debug-sections=zstd: ld is not built "
574- "with zstd support\n"));
575+ fatal (_("%P: --compress-debug-sections=zstd: ld is not built "
576+ "with zstd support\n"));
577 #endif
578 }
579 if (config.compress_debug == COMPRESS_UNKNOWN)
580- einfo (_("%F%P: invalid --compress-debug-sections option: \`%s'\n"),
581- optarg);
582+ fatal (_("%P: invalid --compress-debug-sections option: \`%s'\n"),
583+ optarg);
584 break;
585 EOF
586
587@@ -727,7 +727,7 @@ fragment <<EOF
588 link_info.emit_gnu_hash = true;
589 }
590 else
591- einfo (_("%F%P: invalid hash style \`%s'\n"), optarg);
592+ fatal (_("%P: invalid hash style \`%s'\n"), optarg);
593 break;
594
595 EOF
596@@ -747,7 +747,7 @@ fragment <<EOF
597 link_info.maxpagesize = strtoul (optarg + 14, &end, 0);
598 if (*end
599 || (link_info.maxpagesize & (link_info.maxpagesize - 1)) != 0)
600- einfo (_("%F%P: invalid maximum page size \`%s'\n"),
601+ fatal (_("%P: invalid maximum page size \`%s'\n"),
602 optarg + 14);
603 link_info.maxpagesize_is_set = true;
604 }
605@@ -757,7 +757,7 @@ fragment <<EOF
606 link_info.commonpagesize = strtoul (optarg + 17, &end, 0);
607 if (*end
608 || (link_info.commonpagesize & (link_info.commonpagesize - 1)) != 0)
609- einfo (_("%F%P: invalid common page size \`%s'\n"),
610+ fatal (_("%P: invalid common page size \`%s'\n"),
611 optarg + 17);
612 link_info.commonpagesize_is_set = true;
613 }
614@@ -766,7 +766,7 @@ fragment <<EOF
615 char *end;
616 link_info.stacksize = strtoul (optarg + 11, &end, 0);
617 if (*end || link_info.stacksize < 0)
618- einfo (_("%F%P: invalid stack size \`%s'\n"), optarg + 11);
619+ fatal (_("%P: invalid stack size \`%s'\n"), optarg + 11);
620 if (!link_info.stacksize)
621 /* Use -1 for explicit no-stack, because zero means
622 'default'. */
623@@ -805,7 +805,7 @@ fragment <<EOF
624 else if (strcmp (optarg, "start-stop-visibility=protected") == 0)
625 link_info.start_stop_visibility = STV_PROTECTED;
626 else
627- einfo (_("%F%P: invalid visibility in \`-z %s'; "
628+ fatal (_("%P: invalid visibility in \`-z %s'; "
629 "must be default, internal, hidden, or protected"),
630 optarg);
631 }
632diff --git a/ld/emultempl/hppaelf.em b/ld/emultempl/hppaelf.em
633index 09db0cb0..f0284ea3 100644
634--- a/ld/emultempl/hppaelf.em
635+++ b/ld/emultempl/hppaelf.em
636@@ -82,7 +82,7 @@ hppaelf_create_output_section_statements (void)
637 bfd_get_arch (link_info.output_bfd),
638 bfd_get_mach (link_info.output_bfd)))
639 {
640- einfo (_("%F%P: can not create BFD: %E\n"));
641+ fatal (_("%P: can not create BFD: %E\n"));
642 return;
643 }
644
645@@ -351,7 +351,7 @@ PARSE_AND_LIST_ARGS_CASES='
646 const char *end;
647 group_size = bfd_scan_vma (optarg, &end, 0);
648 if (*end)
649- einfo (_("%F%P: invalid number `%s'\''\n"), optarg);
650+ fatal (_("%P: invalid number `%s'\''\n"), optarg);
651 }
652 break;
653 '
654diff --git a/ld/emultempl/kvxelf.em b/ld/emultempl/kvxelf.em
655index 2076c5b6..1ffbd1db 100644
656--- a/ld/emultempl/kvxelf.em
657+++ b/ld/emultempl/kvxelf.em
658@@ -35,9 +35,8 @@ elf${ELFSIZE}_kvx_before_allocation (void)
659 EOF
660 if test x"${EMULATION_NAME}" != x"elf64kvx_linux"; then
661 fragment <<EOF
662- if (bfd_link_pie (&link_info)) {
663- einfo (_("%F:%P: -pie not supported\n"));
664- }
665+ if (bfd_link_pie (&link_info))
666+ fatal (_(":%P: -pie not supported\n"));
667 EOF
668 fi
669 fragment <<EOF
670@@ -300,7 +299,7 @@ kvx_elf_create_output_section_statements (void)
671 ldlang_add_file (stub_file);
672
673 if (!kvx_elf${ELFSIZE}_init_stub_bfd (&link_info, stub_file->the_bfd))
674- einfo ("%F%P: can not init BFD: %E\n");
675+ einfo ("%P: can not init BFD: %E\n");
676 }
677
678
679diff --git a/ld/emultempl/loongarchelf.em b/ld/emultempl/loongarchelf.em
680index 3bb5ddf0..5a3d7b79 100644
681--- a/ld/emultempl/loongarchelf.em
682+++ b/ld/emultempl/loongarchelf.em
683@@ -67,11 +67,11 @@ gld${EMULATION_NAME}_after_allocation (void)
684 && !bfd_link_relocatable (&link_info))
685 {
686 if (lang_phdr_list == NULL)
687- elf_seg_map (link_info.output_bfd) = NULL;
688+ elf_seg_map (link_info.output_bfd) = NULL;
689 if (!_bfd_elf_map_sections_to_segments (link_info.output_bfd,
690 &link_info,
691 NULL))
692- einfo (_("%F%P: map sections to segments failed: %E\n"));
693+ fatal (_("%P: map sections to segments failed: %E\n"));
694 }
695
696 /* Adjust program header size and .eh_frame_hdr size before
697diff --git a/ld/emultempl/m68hc1xelf.em b/ld/emultempl/m68hc1xelf.em
698index 5355b0fc..36f5f068 100644
699--- a/ld/emultempl/m68hc1xelf.em
700+++ b/ld/emultempl/m68hc1xelf.em
701@@ -159,7 +159,7 @@ m68hc11elf_create_output_section_statements (void)
702 bfd_get_arch (link_info.output_bfd),
703 bfd_get_mach (link_info.output_bfd)))
704 {
705- einfo (_("%F%P: can not create BFD: %E\n"));
706+ fatal (_("%P: can not create BFD: %E\n"));
707 return;
708 }
709
710diff --git a/ld/emultempl/m68kelf.em b/ld/emultempl/m68kelf.em
711index 0477f1eb..f9a5bec2 100644
712--- a/ld/emultempl/m68kelf.em
713+++ b/ld/emultempl/m68kelf.em
714@@ -82,7 +82,7 @@ m68k_elf_after_open (void)
715 asection *datasec;
716
717 if (bfd_get_flavour (abfd) != bfd_target_elf_flavour)
718- einfo (_("%F%P: %pB: all input objects must be ELF "
719+ fatal (_("%P: %pB: all input objects must be ELF "
720 "for --embedded-relocs\n"));
721
722 datasec = bfd_get_section_by_name (abfd, ".data");
723@@ -106,7 +106,7 @@ m68k_elf_after_open (void)
724 if (relsec == NULL
725 || !bfd_set_section_alignment (relsec, 2)
726 || !bfd_set_section_size (relsec, datasec->reloc_count * 12))
727- einfo (_("%F%P: %pB: can not create .emreloc section: %E\n"));
728+ fatal (_("%P: %pB: can not create .emreloc section: %E\n"));
729 }
730
731 /* Double check that all other data sections are empty, as is
732diff --git a/ld/emultempl/metagelf.em b/ld/emultempl/metagelf.em
733index 81ab64c1..313d7ed5 100644
734--- a/ld/emultempl/metagelf.em
735+++ b/ld/emultempl/metagelf.em
736@@ -59,7 +59,7 @@ metagelf_create_output_section_statements (void)
737 bfd_get_arch (link_info.output_bfd),
738 bfd_get_mach (link_info.output_bfd)))
739 {
740- einfo (_("%F%P: can not create BFD: %E\n"));
741+ fatal (_("%P: can not create BFD: %E\n"));
742 return;
743 }
744
745@@ -309,7 +309,7 @@ PARSE_AND_LIST_ARGS_CASES='
746 const char *end;
747 group_size = bfd_scan_vma (optarg, &end, 0);
748 if (*end)
749- einfo (_("%F%P: invalid number `%s'\''\n"), optarg);
750+ fatal (_("%P: invalid number `%s'\''\n"), optarg);
751 }
752 break;
753 '
754diff --git a/ld/emultempl/mipself.em b/ld/emultempl/mipself.em
755index f8fe4b97..2a22ba49 100644
756--- a/ld/emultempl/mipself.em
757+++ b/ld/emultempl/mipself.em
758@@ -152,7 +152,7 @@ mips_add_stub_section (const char *stub_sec_name, asection *input_section,
759 bfd_get_arch (link_info.output_bfd),
760 bfd_get_mach (link_info.output_bfd)))
761 {
762- einfo (_("%F%P: can not create BFD: %E\n"));
763+ fatal (_("%P: can not create BFD: %E\n"));
764 return NULL;
765 }
766 stub_bfd->flags |= BFD_LINKER_CREATED;
767diff --git a/ld/emultempl/mmix-elfnmmo.em b/ld/emultempl/mmix-elfnmmo.em
768index f2ecbba3..03186363 100644
769--- a/ld/emultempl/mmix-elfnmmo.em
770+++ b/ld/emultempl/mmix-elfnmmo.em
771@@ -113,10 +113,7 @@ mmix_after_allocation (void)
772 bfd_set_section_vma (sec, 0);
773
774 if (!_bfd_mmix_after_linker_allocation (link_info.output_bfd, &link_info))
775- {
776- /* This is a fatal error; make einfo call not return. */
777- einfo (_("%F%P: can't finalize linker-allocated global registers\n"));
778- }
779+ fatal (_("%P: can't finalize linker-allocated global registers\n"));
780 }
781 EOF
782
783diff --git a/ld/emultempl/nds32elf.em b/ld/emultempl/nds32elf.em
784index bde9e35d..36260573 100644
785--- a/ld/emultempl/nds32elf.em
786+++ b/ld/emultempl/nds32elf.em
787@@ -44,7 +44,7 @@ nds32_elf_create_output_section_statements (void)
788 if (strstr (bfd_get_target (link_info.output_bfd), "nds32") == NULL)
789 {
790 /* Check the output target is nds32. */
791- einfo (_("%F%P: error: cannot change output format whilst "
792+ fatal (_("%P: error: cannot change output format whilst "
793 "linking %s binaries\n"), "NDS32");
794 return;
795 }
796@@ -96,7 +96,7 @@ nds32_elf_after_open (void)
797 && abi_ver != (elf_elfheader (abfd)->e_flags & EF_NDS_ABI))
798 {
799 /* Incompatible objects. */
800- einfo (_("%F%P: %pB: ABI version of object files mismatched\n"),
801+ fatal (_("%P: %pB: ABI version of object files mismatched\n"),
802 abfd);
803 }
804 }
805@@ -195,7 +195,7 @@ PARSE_AND_LIST_ARGS_CASES='
806 {
807 sym_ld_script = fopen (optarg, FOPEN_WT);
808 if(sym_ld_script == NULL)
809- einfo (_("%F%P: cannot open map file %s: %E\n"), optarg);
810+ fatal (_("%P: cannot open map file %s: %E\n"), optarg);
811 }
812 break;
813 case OPTION_HYPER_RELAX:
814diff --git a/ld/emultempl/nto.em b/ld/emultempl/nto.em
815index de69e132..609d0217 100644
816--- a/ld/emultempl/nto.em
817+++ b/ld/emultempl/nto.em
818@@ -51,7 +51,7 @@ nto_create_QNX_note_section(int type)
819 is called before this function, stub_file should already be defined. */
820 if (!stub_file)
821 {
822- einfo (_("%F%P: cannot create .note section in stub BFD.\n"));
823+ fatal (_("%P: cannot create .note section in stub BFD.\n"));
824 return NULL;
825 }
826
827@@ -60,7 +60,7 @@ nto_create_QNX_note_section(int type)
828 note_sec = bfd_make_section_anyway_with_flags (stub_file->the_bfd, ".note", flags);
829 if (! note_sec)
830 {
831- einfo (_("%F%P: failed to create .note section\n"));
832+ fatal (_("%P: failed to create .note section\n"));
833 return NULL;
834 }
835
836@@ -101,7 +101,7 @@ nto_lookup_QNX_note_section(int type)
837 sec->contents = xmalloc(sec->size);
838 if (!bfd_get_section_contents (sec->owner, sec, sec->contents, (file_ptr) 0,
839 sec->size))
840- einfo (_("%F%P: %pB: can't read contents of section .note: %E\n"),
841+ fatal (_("%P: %pB: can't read contents of section .note: %E\n"),
842 sec->owner);
843
844 e_note = (Elf_External_Note *) sec->contents;
845@@ -144,7 +144,7 @@ nto_add_note_section (void) {
846
847 if (nto_lazy_stack && !link_info.stacksize)
848 {
849- einfo (_("%F%P: error: --lazy-stack must follow -zstack-size=<size>\n"));
850+ fatal (_("%P: error: --lazy-stack must follow -zstack-size=<size>\n"));
851 return;
852 }
853
854@@ -206,22 +206,22 @@ PARSE_AND_LIST_LONGOPTS=${PARSE_AND_LIST_LONGOPTS}'
855 PARSE_AND_LIST_OPTIONS=${PARSE_AND_LIST_OPTIONS}'
856 fprintf (file, _("\
857 --stack <size> Set size of the initial stack\n\
858- --lazy-stack Set lazy allocation of stack\n\
859+ --lazy-stack Set lazy allocation of stack\n\
860 "));
861 '
862
863 PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}'
864 case OPTION_STACK:
865 {
866- char *end;
867- link_info.stacksize = strtoul (optarg, &end, 0);
868- if (*end || link_info.stacksize < 0)
869- einfo (_("%F%P: invalid stack size `%s'\''\n"), optarg + 11);
870- if (!link_info.stacksize)
871- /* Use -1 for explicit no-stack, because zero means
872- 'default'. */
873- link_info.stacksize = -1;
874- break;
875+ char *end;
876+ link_info.stacksize = strtoul (optarg, &end, 0);
877+ if (*end || link_info.stacksize < 0)
878+ fatal (_("%P: invalid stack size `%s'\''\n"), optarg + 11);
879+ if (!link_info.stacksize)
880+ /* Use -1 for explicit no-stack, because zero means
881+ 'default'. */
882+ link_info.stacksize = -1;
883+ break;
884 }
885 case OPTION_LAZY_STACK:
886 nto_lazy_stack = true;
887diff --git a/ld/emultempl/pe.em b/ld/emultempl/pe.em
888index c6ed1110..4cb1488e 100644
889--- a/ld/emultempl/pe.em
890+++ b/ld/emultempl/pe.em
891@@ -726,7 +726,7 @@ set_pe_subsystem (void)
892
893 if (v[i].name == NULL)
894 {
895- einfo (_("%F%P: invalid subsystem type %s\n"), optarg);
896+ fatal (_("%P: invalid subsystem type %s\n"), optarg);
897 return;
898 }
899
900@@ -747,7 +747,7 @@ set_pe_value (char *name)
901 set_pe_name (name, strtoul (optarg, &end, 0));
902
903 if (end == optarg)
904- einfo (_("%F%P: invalid hex number for PE parameter '%s'\n"), optarg);
905+ fatal (_("%P: invalid hex number for PE parameter '%s'\n"), optarg);
906
907 optarg = end;
908 }
909@@ -764,7 +764,7 @@ set_pe_stack_heap (char *resname, char *comname)
910 set_pe_value (comname);
911 }
912 else if (*optarg)
913- einfo (_("%F%P: strange hex info for PE parameter '%s'\n"), optarg);
914+ fatal (_("%P: strange hex info for PE parameter '%s'\n"), optarg);
915 }
916
917 #define DEFAULT_BUILD_ID_STYLE "md5"
918@@ -780,7 +780,7 @@ gld${EMULATION_NAME}_handle_option (int optc)
919 case OPTION_BASE_FILE:
920 link_info.base_file = fopen (optarg, FOPEN_WB);
921 if (link_info.base_file == NULL)
922- einfo (_("%F%P: cannot open base file %s\n"), optarg);
923+ fatal (_("%P: cannot open base file %s\n"), optarg);
924 break;
925
926 /* PE options. */
927@@ -1309,7 +1309,7 @@ make_runtime_ref (void)
928 = bfd_wrapped_link_hash_lookup (link_info.output_bfd, &link_info,
929 rr, true, false, true);
930 if (!h)
931- einfo (_("%F%P: bfd_link_hash_lookup failed: %E\n"));
932+ fatal (_("%P: bfd_link_hash_lookup failed: %E\n"));
933 else
934 {
935 if (h->type == bfd_link_hash_new)
936@@ -1607,7 +1607,7 @@ gld${EMULATION_NAME}_after_open (void)
937 if (bfd_get_flavour (link_info.output_bfd) != bfd_target_coff_flavour
938 || coff_data (link_info.output_bfd) == NULL
939 || !obj_pe (link_info.output_bfd))
940- einfo (_("%F%P: cannot perform PE operations on non PE output file '%pB'\n"),
941+ fatal (_("%P: cannot perform PE operations on non PE output file '%pB'\n"),
942 link_info.output_bfd);
943
944 pe_data (link_info.output_bfd)->pe_opthdr = pe;
945@@ -1680,7 +1680,7 @@ gld${EMULATION_NAME}_after_open (void)
946 These will only be created if the output format is an arm format,
947 hence we do not support linking and changing output formats at the
948 same time. Use a link followed by objcopy to change output formats. */
949- einfo (_("%F%P: error: cannot change output format "
950+ fatal (_("%P: error: cannot change output format "
951 "whilst linking %s binaries\n"), "ARM");
952 return;
953 }
954@@ -1740,7 +1740,7 @@ gld${EMULATION_NAME}_after_open (void)
955
956 if (!bfd_generic_link_read_symbols (is->the_bfd))
957 {
958- einfo (_("%F%P: %pB: could not read symbols: %E\n"),
959+ fatal (_("%P: %pB: could not read symbols: %E\n"),
960 is->the_bfd);
961 return;
962 }
963@@ -1912,7 +1912,7 @@ gld${EMULATION_NAME}_after_open (void)
964
965 if (!bfd_generic_link_read_symbols (is->the_bfd))
966 {
967- einfo (_("%F%P: %pB: could not read symbols: %E\n"),
968+ fatal (_("%P: %pB: could not read symbols: %E\n"),
969 is->the_bfd);
970 return;
971 }
972@@ -2023,7 +2023,7 @@ gld${EMULATION_NAME}_unrecognized_file (lang_input_statement_type *entry ATTRIBU
973
974 h = bfd_link_hash_lookup (link_info.hash, buf, true, true, true);
975 if (h == (struct bfd_link_hash_entry *) NULL)
976- einfo (_("%F%P: bfd_link_hash_lookup failed: %E\n"));
977+ fatal (_("%P: bfd_link_hash_lookup failed: %E\n"));
978 if (h->type == bfd_link_hash_new)
979 {
980 h->type = bfd_link_hash_undefined;
981diff --git a/ld/emultempl/pep.em b/ld/emultempl/pep.em
982index bd2ee2ed..2d033dd3 100644
983--- a/ld/emultempl/pep.em
984+++ b/ld/emultempl/pep.em
985@@ -698,7 +698,7 @@ set_pep_subsystem (void)
986
987 if (v[i].name == NULL)
988 {
989- einfo (_("%F%P: invalid subsystem type %s\n"), optarg);
990+ fatal (_("%P: invalid subsystem type %s\n"), optarg);
991 return;
992 }
993
994@@ -719,7 +719,7 @@ set_pep_value (char *name)
995 set_pep_name (name, (bfd_vma) strtoull (optarg, &end, 0));
996
997 if (end == optarg)
998- einfo (_("%F%P: invalid hex number for PE parameter '%s'\n"), optarg);
999+ fatal (_("%P: invalid hex number for PE parameter '%s'\n"), optarg);
1000
1001 optarg = end;
1002 }
1003@@ -736,7 +736,7 @@ set_pep_stack_heap (char *resname, char *comname)
1004 set_pep_value (comname);
1005 }
1006 else if (*optarg)
1007- einfo (_("%F%P: strange hex info for PE parameter '%s'\n"), optarg);
1008+ fatal (_("%P: strange hex info for PE parameter '%s'\n"), optarg);
1009 }
1010
1011 #define DEFAULT_BUILD_ID_STYLE "md5"
1012@@ -753,7 +753,7 @@ gld${EMULATION_NAME}_handle_option (int optc)
1013 case OPTION_BASE_FILE:
1014 link_info.base_file = fopen (optarg, FOPEN_WB);
1015 if (link_info.base_file == NULL)
1016- einfo (_("%F%P: cannot open base file %s\n"), optarg);
1017+ fatal (_("%P: cannot open base file %s\n"), optarg);
1018 break;
1019
1020 /* PE options. */
1021@@ -1306,7 +1306,7 @@ make_runtime_ref (void)
1022 = bfd_wrapped_link_hash_lookup (link_info.output_bfd, &link_info,
1023 rr, true, false, true);
1024 if (!h)
1025- einfo (_("%F%P: bfd_link_hash_lookup failed: %E\n"));
1026+ fatal (_("%P: bfd_link_hash_lookup failed: %E\n"));
1027 else
1028 {
1029 if (h->type == bfd_link_hash_new)
1030@@ -1606,7 +1606,7 @@ gld${EMULATION_NAME}_after_open (void)
1031 if (bfd_get_flavour (link_info.output_bfd) != bfd_target_coff_flavour
1032 || coff_data (link_info.output_bfd) == NULL
1033 || !obj_pe (link_info.output_bfd))
1034- einfo (_("%F%P: cannot perform PE operations on non PE output file '%pB'\n"),
1035+ fatal (_("%P: cannot perform PE operations on non PE output file '%pB'\n"),
1036 link_info.output_bfd);
1037
1038 pe_data (link_info.output_bfd)->pe_opthdr = pep;
1039@@ -1718,7 +1718,7 @@ gld${EMULATION_NAME}_after_open (void)
1040
1041 if (!bfd_generic_link_read_symbols (is->the_bfd))
1042 {
1043- einfo (_("%F%P: %pB: could not read symbols: %E\n"),
1044+ fatal (_("%P: %pB: could not read symbols: %E\n"),
1045 is->the_bfd);
1046 return;
1047 }
1048@@ -1907,7 +1907,7 @@ gld${EMULATION_NAME}_unrecognized_file (lang_input_statement_type *entry ATTRIBU
1049
1050 h = bfd_link_hash_lookup (link_info.hash, buf, true, true, true);
1051 if (h == (struct bfd_link_hash_entry *) NULL)
1052- einfo (_("%F%P: bfd_link_hash_lookup failed: %E\n"));
1053+ fatal (_("%P: bfd_link_hash_lookup failed: %E\n"));
1054 if (h->type == bfd_link_hash_new)
1055 {
1056 h->type = bfd_link_hash_undefined;
1057diff --git a/ld/emultempl/ppc32elf.em b/ld/emultempl/ppc32elf.em
1058index 0730a05e..ffacadc6 100644
1059--- a/ld/emultempl/ppc32elf.em
1060+++ b/ld/emultempl/ppc32elf.em
1061@@ -386,7 +386,7 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}'
1062 char *end;
1063 unsigned long val = strtoul (optarg, &end, 0);
1064 if (*end || val > 5)
1065- einfo (_("%F%P: invalid --plt-align `%s'\''\n"), optarg);
1066+ fatal (_("%P: invalid --plt-align `%s'\''\n"), optarg);
1067 params.plt_stub_align = val;
1068 }
1069 else
1070@@ -419,7 +419,7 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}'
1071 if (*end
1072 || (params.pagesize < 4096 && params.pagesize != 0)
1073 || params.pagesize != (params.pagesize & -params.pagesize))
1074- einfo (_("%F%P: invalid pagesize `%s'\''\n"), optarg);
1075+ fatal (_("%P: invalid pagesize `%s'\''\n"), optarg);
1076 }
1077 break;
1078
1079diff --git a/ld/emultempl/ppc64elf.em b/ld/emultempl/ppc64elf.em
1080index 533caed2..92bf4f58 100644
1081--- a/ld/emultempl/ppc64elf.em
1082+++ b/ld/emultempl/ppc64elf.em
1083@@ -91,7 +91,7 @@ ppc_create_output_section_statements (void)
1084 bfd_get_arch (link_info.output_bfd),
1085 bfd_get_mach (link_info.output_bfd)))
1086 {
1087- einfo (_("%F%P: can not create BFD: %E\n"));
1088+ fatal (_("%P: can not create BFD: %E\n"));
1089 return;
1090 }
1091
1092@@ -101,7 +101,7 @@ ppc_create_output_section_statements (void)
1093 if (params.save_restore_funcs < 0)
1094 params.save_restore_funcs = !bfd_link_relocatable (&link_info);
1095 if (!ppc64_elf_init_stub_bfd (&link_info, &params))
1096- einfo (_("%F%P: can not init BFD: %E\n"));
1097+ fatal (_("%P: can not init BFD: %E\n"));
1098 }
1099
1100 /* Called after opening files but before mapping sections. */
1101@@ -860,7 +860,7 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}'
1102 const char *end;
1103 params.group_size = bfd_scan_vma (optarg, &end, 0);
1104 if (*end)
1105- einfo (_("%F%P: invalid number `%s'\''\n"), optarg);
1106+ fatal (_("%P: invalid number `%s'\''\n"), optarg);
1107 }
1108 break;
1109
1110@@ -886,7 +886,7 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}'
1111 char *end;
1112 long val = strtol (optarg, &end, 0);
1113 if (*end || (unsigned long) val + 8 > 16)
1114- einfo (_("%F%P: invalid --plt-align `%s'\''\n"), optarg);
1115+ fatal (_("%P: invalid --plt-align `%s'\''\n"), optarg);
1116 params.plt_stub_align = val;
1117 }
1118 else
1119@@ -915,7 +915,7 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}'
1120 else if (strcasecmp (optarg, "no") == 0)
1121 params.power10_stubs = 0;
1122 else
1123- einfo (_("%F%P: invalid --power10-stubs argument `%s'\''\n"),
1124+ fatal (_("%P: invalid --power10-stubs argument `%s'\''\n"),
1125 optarg);
1126 }
1127 else
1128diff --git a/ld/emultempl/riscvelf.em b/ld/emultempl/riscvelf.em
1129index fe53b2a7..006e4edb 100644
1130--- a/ld/emultempl/riscvelf.em
1131+++ b/ld/emultempl/riscvelf.em
1132@@ -141,7 +141,7 @@ riscv_create_output_section_statements (void)
1133 These will only be created if the output format is a RISC-V format,
1134 hence we do not support linking and changing output formats at the
1135 same time. Use a link followed by objcopy to change output formats. */
1136- einfo (_("%F%P: error: cannot change output format"
1137+ fatal (_("%P: error: cannot change output format"
1138 " whilst linking %s binaries\n"), "RISC-V");
1139 return;
1140 }
1141diff --git a/ld/emultempl/s390.em b/ld/emultempl/s390.em
1142index 11e7f19b..0a93d76b 100644
1143--- a/ld/emultempl/s390.em
1144+++ b/ld/emultempl/s390.em
1145@@ -34,7 +34,7 @@ static void
1146 s390_elf_create_output_section_statements (void)
1147 {
1148 if (!bfd_elf_s390_set_options (&link_info, &params))
1149- einfo (_("%F%P: can not init BFD: %E\n"));
1150+ fatal (_("%P: can not init BFD: %E\n"));
1151 }
1152
1153 EOF
1154diff --git a/ld/emultempl/scoreelf.em b/ld/emultempl/scoreelf.em
1155index 6238b5e2..6413f330 100644
1156--- a/ld/emultempl/scoreelf.em
1157+++ b/ld/emultempl/scoreelf.em
1158@@ -62,7 +62,7 @@ score_elf_after_open (void)
1159 These will only be created if the output format is an score format,
1160 hence we do not support linking and changing output formats at the
1161 same time. Use a link followed by objcopy to change output formats. */
1162- einfo (_("%F%P: error: cannot change output format "
1163+ fatal (_("%P: error: cannot change output format "
1164 "whilst linking %s binaries\n"), "S+core");
1165 return;
1166 }
1167diff --git a/ld/emultempl/spuelf.em b/ld/emultempl/spuelf.em
1168index cc39435c..c694b828 100644
1169--- a/ld/emultempl/spuelf.em
1170+++ b/ld/emultempl/spuelf.em
1171@@ -202,7 +202,7 @@ spu_elf_load_ovl_mgr (void)
1172 /* User supplied __ovly_load. */
1173 }
1174 else if (mgr_stream->start == mgr_stream->end)
1175- einfo (_("%F%P: no built-in overlay manager\n"));
1176+ fatal (_("%P: no built-in overlay manager\n"));
1177 else
1178 {
1179 lang_input_statement_type *ovl_is;
1180@@ -379,7 +379,7 @@ spu_elf_open_overlay_script (void)
1181 if (script == NULL)
1182 {
1183 file_err:
1184- einfo (_("%F%P: can not open script: %E\n"));
1185+ fatal (_("%P: can not open script: %E\n"));
1186 }
1187 return script;
1188 }
1189@@ -719,7 +719,7 @@ PARSE_AND_LIST_ARGS_CASES='
1190 if (*end == 0)
1191 break;
1192 }
1193- einfo (_("%F%P: invalid --local-store address range `%s'\''\n"), optarg);
1194+ fatal (_("%P: invalid --local-store address range `%s'\''\n"), optarg);
1195 }
1196 break;
1197
1198@@ -755,12 +755,12 @@ PARSE_AND_LIST_ARGS_CASES='
1199 if (!num_lines_set)
1200 params.num_lines = 32;
1201 else if ((params.num_lines & -params.num_lines) != params.num_lines)
1202- einfo (_("%F%P: invalid --num-lines/--num-regions `%u'\''\n"),
1203+ fatal (_("%P: invalid --num-lines/--num-regions `%u'\''\n"),
1204 params.num_lines);
1205 if (!line_size_set)
1206 params.line_size = 1024;
1207 else if ((params.line_size & -params.line_size) != params.line_size)
1208- einfo (_("%F%P: invalid --line-size/--region-size `%u'\''\n"),
1209+ fatal (_("%P: invalid --line-size/--region-size `%u'\''\n"),
1210 params.line_size);
1211 break;
1212
1213@@ -781,7 +781,7 @@ PARSE_AND_LIST_ARGS_CASES='
1214 && (params.ovly_flavour != ovly_soft_icache
1215 || (params.num_lines & -params.num_lines) == params.num_lines))
1216 break;
1217- einfo (_("%F%P: invalid --num-lines/--num-regions `%s'\''\n"), optarg);
1218+ fatal (_("%P: invalid --num-lines/--num-regions `%s'\''\n"), optarg);
1219 }
1220 break;
1221
1222@@ -794,7 +794,7 @@ PARSE_AND_LIST_ARGS_CASES='
1223 && (params.ovly_flavour != ovly_soft_icache
1224 || (params.line_size & -params.line_size) == params.line_size))
1225 break;
1226- einfo (_("%F%P: invalid --line-size/--region-size `%s'\''\n"), optarg);
1227+ fatal (_("%P: invalid --line-size/--region-size `%s'\''\n"), optarg);
1228 }
1229 break;
1230
1231@@ -803,7 +803,7 @@ PARSE_AND_LIST_ARGS_CASES='
1232 char *end;
1233 params.auto_overlay_fixed = strtoul (optarg, &end, 0);
1234 if (*end != 0)
1235- einfo (_("%F%P: invalid --fixed-space value `%s'\''\n"), optarg);
1236+ fatal (_("%P: invalid --fixed-space value `%s'\''\n"), optarg);
1237 }
1238 break;
1239
1240@@ -812,7 +812,7 @@ PARSE_AND_LIST_ARGS_CASES='
1241 char *end;
1242 params.auto_overlay_reserved = strtoul (optarg, &end, 0);
1243 if (*end != 0)
1244- einfo (_("%F%P: invalid --reserved-space value `%s'\''\n"), optarg);
1245+ fatal (_("%P: invalid --reserved-space value `%s'\''\n"), optarg);
1246 }
1247 break;
1248
1249@@ -821,7 +821,7 @@ PARSE_AND_LIST_ARGS_CASES='
1250 char *end;
1251 params.extra_stack_space = strtol (optarg, &end, 0);
1252 if (*end != 0)
1253- einfo (_("%F%P: invalid --extra-stack-space value `%s'\''\n"), optarg);
1254+ fatal (_("%P: invalid --extra-stack-space value `%s'\''\n"), optarg);
1255 }
1256 break;
1257
1258diff --git a/ld/emultempl/tic6xdsbt.em b/ld/emultempl/tic6xdsbt.em
1259index 524e3f73..a830be7e 100644
1260--- a/ld/emultempl/tic6xdsbt.em
1261+++ b/ld/emultempl/tic6xdsbt.em
1262@@ -59,10 +59,8 @@ tic6x_after_open (void)
1263 if (is_tic6x_target ())
1264 {
1265 if (params.dsbt_index >= params.dsbt_size)
1266- {
1267- einfo (_("%F%P: invalid --dsbt-index %d, outside DSBT size\n"),
1268- params.dsbt_index);
1269- }
1270+ fatal (_("%P: invalid --dsbt-index %d, outside DSBT size\n"),
1271+ params.dsbt_index);
1272 elf32_tic6x_setup (&link_info, &params);
1273 }
1274
1275@@ -192,7 +190,7 @@ PARSE_AND_LIST_ARGS_CASES='
1276 if (*end == 0
1277 && params.dsbt_index >= 0 && params.dsbt_index < 0x7fff)
1278 break;
1279- einfo (_("%F%P: invalid --dsbt-index %s\n"), optarg);
1280+ fatal (_("%P: invalid --dsbt-index %s\n"), optarg);
1281 }
1282 break;
1283 case OPTION_DSBT_SIZE:
1284@@ -202,7 +200,7 @@ PARSE_AND_LIST_ARGS_CASES='
1285 if (*end == 0
1286 && params.dsbt_size >= 0 && params.dsbt_size < 0x7fff)
1287 break;
1288- einfo (_("%F%P: invalid --dsbt-size %s\n"), optarg);
1289+ fatal (_("%P: invalid --dsbt-size %s\n"), optarg);
1290 }
1291 break;
1292 case OPTION_NO_MERGE_EXIDX_ENTRIES:
1293diff --git a/ld/emultempl/ticoff.em b/ld/emultempl/ticoff.em
1294index 4b048bef..bbf30f4a 100644
1295--- a/ld/emultempl/ticoff.em
1296+++ b/ld/emultempl/ticoff.em
1297@@ -88,9 +88,7 @@ gld${EMULATION_NAME}_handle_option (int optc)
1298 lang_add_output_format (buf, NULL, NULL, 0);
1299 }
1300 else
1301- {
1302- einfo (_("%F%P: invalid COFF format version %s\n"), optarg);
1303- }
1304+ fatal (_("%P: invalid COFF format version %s\n"), optarg);
1305 break;
1306 }
1307 return false;
1308diff --git a/ld/emultempl/v850elf.em b/ld/emultempl/v850elf.em
1309index 7bcd45f3..49ad2cc8 100644
1310--- a/ld/emultempl/v850elf.em
1311+++ b/ld/emultempl/v850elf.em
1312@@ -63,7 +63,7 @@ v850_create_output_section_statements (void)
1313 These will only be created if the output format is an arm format,
1314 hence we do not support linking and changing output formats at the
1315 same time. Use a link followed by objcopy to change output formats. */
1316- einfo (_("%F%P: error: cannot change output format"
1317+ fatal (_("%P: error: cannot change output format"
1318 " whilst linking %s binaries\n"), "V850");
1319 return;
1320 }
1321diff --git a/ld/emultempl/vms.em b/ld/emultempl/vms.em
1322index 67e9ea64..4ca2c942 100644
1323--- a/ld/emultempl/vms.em
1324+++ b/ld/emultempl/vms.em
1325@@ -201,7 +201,7 @@ gld${EMULATION_NAME}_before_allocation (void)
1326 && bed->elf_backend_size_dynamic_sections
1327 && ! (*bed->elf_backend_size_dynamic_sections) (link_info.output_bfd,
1328 &link_info))
1329- einfo (_("%F%P: failed to set dynamic section sizes: %E\n"));
1330+ fatal (_("%P: failed to set dynamic section sizes: %E\n"));
1331
1332 before_allocation_default ();
1333 }
1334diff --git a/ld/emultempl/xtensaelf.em b/ld/emultempl/xtensaelf.em
1335index 51293539..208f730d 100644
1336--- a/ld/emultempl/xtensaelf.em
1337+++ b/ld/emultempl/xtensaelf.em
1338@@ -388,7 +388,7 @@ check_xtensa_info (bfd *abfd, asection *info_sec)
1339
1340 data = xmalloc (info_sec->size);
1341 if (! bfd_get_section_contents (abfd, info_sec, data, 0, info_sec->size))
1342- einfo (_("%F%P: %pB: cannot read contents of section %pA\n"), abfd, info_sec);
1343+ fatal (_("%P: %pB: cannot read contents of section %pA\n"), abfd, info_sec);
1344
1345 if (info_sec->size > 24
1346 && info_sec->size >= 24 + bfd_get_32 (abfd, data + 4)
1347@@ -429,13 +429,13 @@ elf_xtensa_before_allocation (void)
1348 if (is_big_endian
1349 && link_info.output_bfd->xvec->byteorder == BFD_ENDIAN_LITTLE)
1350 {
1351- einfo (_("%F%P: little endian output does not match "
1352+ fatal (_("%P: little endian output does not match "
1353 "Xtensa configuration\n"));
1354 }
1355 if (!is_big_endian
1356 && link_info.output_bfd->xvec->byteorder == BFD_ENDIAN_BIG)
1357 {
1358- einfo (_("%F%P: big endian output does not match "
1359+ fatal (_("%P: big endian output does not match "
1360 "Xtensa configuration\n"));
1361 }
1362
1363@@ -454,7 +454,7 @@ elf_xtensa_before_allocation (void)
1364 cannot go any further if there are any mismatches. */
1365 if ((is_big_endian && f->the_bfd->xvec->byteorder == BFD_ENDIAN_LITTLE)
1366 || (!is_big_endian && f->the_bfd->xvec->byteorder == BFD_ENDIAN_BIG))
1367- einfo (_("%F%P: cross-endian linking for %pB not supported\n"),
1368+ fatal (_("%P: cross-endian linking for %pB not supported\n"),
1369 f->the_bfd);
1370
1371 if (! first_bfd)
1372@@ -485,7 +485,7 @@ elf_xtensa_before_allocation (void)
1373 info_sec = bfd_make_section_with_flags (first_bfd, ".xtensa.info",
1374 SEC_HAS_CONTENTS | SEC_READONLY);
1375 if (! info_sec)
1376- einfo (_("%F%P: failed to create .xtensa.info section\n"));
1377+ fatal (_("%P: failed to create .xtensa.info section\n"));
1378 }
1379 if (info_sec)
1380 {
1381@@ -1224,7 +1224,7 @@ ld_build_required_section_dependence (lang_statement_union_type *s)
1382 lang_statement_union_type *l = iter_stack_current (&stack);
1383
1384 if (l == NULL && link_info.non_contiguous_regions)
1385- einfo (_("%F%P: Relaxation not supported with "
1386+ fatal (_("%P: Relaxation not supported with "
1387 "--enable-non-contiguous-regions.\n"));
1388
1389 if (l->header.type == lang_input_section_enum)
1390diff --git a/ld/emultempl/z80.em b/ld/emultempl/z80.em
1391index ded04136..555f6024 100644
1392--- a/ld/emultempl/z80.em
1393+++ b/ld/emultempl/z80.em
1394@@ -48,7 +48,7 @@ z80_after_open (void)
1395 const bfd_arch_info_type *info;
1396 info = bfd_arch_get_compatible (link_info.output_bfd, abfd, false);
1397 if (info == NULL)
1398- einfo (_("%F%P: %pB: Instruction sets of object files incompatible\n"),
1399+ fatal (_("%P: %pB: Instruction sets of object files incompatible\n"),
1400 abfd);
1401 else
1402 bfd_set_arch_info (link_info.output_bfd, info);
1403diff --git a/ld/ldcref.c b/ld/ldcref.c
1404index 632506a4..572d4f4d 100644
1405--- a/ld/ldcref.c
1406+++ b/ld/ldcref.c
1407@@ -514,7 +514,7 @@ check_local_sym_xref (lang_input_statement_type *statement)
1408 return;
1409
1410 if (!bfd_generic_link_read_symbols (abfd))
1411- einfo (_("%F%P: %pB: could not read symbols: %E\n"), abfd);
1412+ fatal (_("%P: %pB: could not read symbols: %E\n"), abfd);
1413
1414 for (syms = bfd_get_outsymbols (abfd); *syms; ++syms)
1415 {
1416@@ -625,7 +625,7 @@ check_refs (const char *name,
1417 BFD might contain a prohibited cross reference. */
1418
1419 if (!bfd_generic_link_read_symbols (abfd))
1420- einfo (_("%F%P: %pB: could not read symbols: %E\n"), abfd);
1421+ fatal (_("%P: %pB: could not read symbols: %E\n"), abfd);
1422
1423 info.sym_name = name;
1424 info.global = global;
1425@@ -687,14 +687,14 @@ check_reloc_refs (bfd *abfd, asection *sec, void *iarg)
1426
1427 relsize = bfd_get_reloc_upper_bound (abfd, sec);
1428 if (relsize < 0)
1429- einfo (_("%F%P: %pB: could not read relocs: %E\n"), abfd);
1430+ fatal (_("%P: %pB: could not read relocs: %E\n"), abfd);
1431 if (relsize == 0)
1432 return;
1433
1434 relpp = (arelent **) xmalloc (relsize);
1435 relcount = bfd_canonicalize_reloc (abfd, sec, relpp, info->asymbols);
1436 if (relcount < 0)
1437- einfo (_("%F%P: %pB: could not read relocs: %E\n"), abfd);
1438+ fatal (_("%P: %pB: could not read relocs: %E\n"), abfd);
1439
1440 p = relpp;
1441 pend = p + relcount;
1442diff --git a/ld/ldelf.c b/ld/ldelf.c
1443index d66e08dd..fb95b7a9 100644
1444--- a/ld/ldelf.c
1445+++ b/ld/ldelf.c
1446@@ -94,7 +94,7 @@ ldelf_after_parse (void)
1447 else if (!link_info.maxpagesize_is_set)
1448 link_info.maxpagesize = link_info.commonpagesize;
1449 else
1450- einfo (_("%F%P: common page size (0x%v) > maximum page size (0x%v)\n"),
1451+ fatal (_("%P: common page size (0x%v) > maximum page size (0x%v)\n"),
1452 link_info.commonpagesize, link_info.maxpagesize);
1453 }
1454 }
1455@@ -120,7 +120,7 @@ ldelf_load_symbols (lang_input_statement_type *entry)
1456
1457 if (entry->flags.just_syms
1458 && (bfd_get_file_flags (entry->the_bfd) & DYNAMIC) != 0)
1459- einfo (_("%F%P: %pB: --just-symbols may not be used on DSO\n"),
1460+ fatal (_("%P: %pB: --just-symbols may not be used on DSO\n"),
1461 entry->the_bfd);
1462
1463 if (link_class == 0
1464@@ -320,7 +320,7 @@ ldelf_try_needed (struct dt_needed *needed, int force, int is_linux)
1465 struct bfd_link_needed_list *needs;
1466
1467 if (! bfd_elf_get_bfd_needed_list (abfd, &needs))
1468- einfo (_("%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n"), abfd);
1469+ fatal (_("%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n"), abfd);
1470
1471 if (needs != NULL)
1472 {
1473@@ -368,7 +368,7 @@ ldelf_try_needed (struct dt_needed *needed, int force, int is_linux)
1474 can only check that using stat. */
1475
1476 if (bfd_stat (abfd, &global_stat) != 0)
1477- einfo (_("%F%P: %pB: bfd_stat failed: %E\n"), abfd);
1478+ fatal (_("%P: %pB: bfd_stat failed: %E\n"), abfd);
1479
1480 /* First strip off everything before the last '/'. */
1481 soname = lbasename (bfd_get_filename (abfd));
1482@@ -407,7 +407,7 @@ ldelf_try_needed (struct dt_needed *needed, int force, int is_linux)
1483
1484 /* Add this file into the symbol table. */
1485 if (! bfd_link_add_symbols (abfd, &link_info))
1486- einfo (_("%F%P: %pB: error adding symbols: %E\n"), abfd);
1487+ fatal (_("%P: %pB: error adding symbols: %E\n"), abfd);
1488
1489 return true;
1490 }
1491@@ -1205,7 +1205,7 @@ ldelf_handle_dt_needed (struct elf_link_hash_table *htab,
1492 && elf_dt_name (abfd) != NULL)
1493 {
1494 if (bfd_elf_add_dt_needed_tag (abfd, &link_info) < 0)
1495- einfo (_("%F%P: failed to add DT_NEEDED dynamic tag\n"));
1496+ fatal (_("%P: failed to add DT_NEEDED dynamic tag\n"));
1497 }
1498
1499 link_info.input_bfds_tail = save_input_bfd_tail;
1500@@ -1256,10 +1256,8 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd,
1501 bfd_get_target (link_info.output_bfd));
1502
1503 if (link_info.out_implib_bfd == NULL)
1504- {
1505- einfo (_("%F%P: %s: can't open for writing: %E\n"),
1506- command_line.out_implib_filename);
1507- }
1508+ fatal (_("%P: %s: can't open for writing: %E\n"),
1509+ command_line.out_implib_filename);
1510 }
1511
1512 if (ldelf_emit_note_gnu_build_id != NULL
1513@@ -1313,7 +1311,7 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd,
1514 && (elf_tdata (abfd)->elf_header->e_type == ET_EXEC
1515 || (elf_tdata (abfd)->elf_header->e_type == ET_DYN
1516 && elf_tdata (abfd)->is_pie)))
1517- einfo (_("%F%P: cannot use executable file '%pB' as input to a link\n"),
1518+ fatal (_("%P: cannot use executable file '%pB' as input to a link\n"),
1519 abfd);
1520 }
1521
1522@@ -1367,7 +1365,7 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd,
1523 }
1524 else if (seen_type != type)
1525 {
1526- einfo (_("%F%P: compact frame descriptions incompatible with"
1527+ fatal (_("%P: compact frame descriptions incompatible with"
1528 " DWARF2 .eh_frame from %pB\n"),
1529 type == DWARF2_EH_HDR ? abfd : elfbfd);
1530 break;
1531@@ -1409,7 +1407,7 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd,
1532
1533 if (link_info.eh_frame_hdr_type == COMPACT_EH_HDR)
1534 if (!bfd_elf_parse_eh_frame_entries (NULL, &link_info))
1535- einfo (_("%F%P: failed to parse EH frame entries\n"));
1536+ fatal (_("%P: failed to parse EH frame entries\n"));
1537
1538 ldelf_handle_dt_needed (htab, use_libpath, native, is_linux,
1539 is_freebsd, elfsize, prefix);
1540@@ -1666,7 +1664,7 @@ ldelf_find_exp_assignment (etree_type *exp)
1541 &link_info,
1542 exp->assign.dst, provide,
1543 exp->assign.hidden))
1544- einfo (_("%F%P: failed to record assignment to %s: %E\n"),
1545+ fatal (_("%P: failed to record assignment to %s: %E\n"),
1546 exp->assign.dst);
1547 }
1548 ldelf_find_exp_assignment (exp->assign.src);
1549@@ -1846,7 +1844,7 @@ ldelf_before_allocation (char *audit, char *depaudit,
1550 command_line.filter_shlib, audit, depaudit,
1551 (const char * const *) command_line.auxiliary_filters,
1552 &link_info, &sinterp)))
1553- einfo (_("%F%P: failed to set dynamic section sizes: %E\n"));
1554+ fatal (_("%P: failed to set dynamic section sizes: %E\n"));
1555
1556 if (sinterp != NULL)
1557 {
1558@@ -1883,8 +1881,8 @@ ldelf_before_allocation (char *audit, char *depaudit,
1559 msg = (char *) xmalloc ((size_t) (sz + 1));
1560 if (! bfd_get_section_contents (is->the_bfd, s, msg,
1561 (file_ptr) 0, sz))
1562- einfo (_("%F%P: %pB: can't read contents of section .gnu.warning: %E\n"),
1563- is->the_bfd);
1564+ fatal (_("%P: %pB: can't read contents of section %pA: %E\n"),
1565+ is->the_bfd, s);
1566 msg[sz] = '\0';
1567 (*link_info.callbacks->warning) (&link_info, msg,
1568 (const char *) NULL, is->the_bfd,
1569@@ -1911,7 +1909,7 @@ ldelf_before_allocation (char *audit, char *depaudit,
1570 before_allocation_default ();
1571
1572 if (!bfd_elf_size_dynsym_hash_dynstr (link_info.output_bfd, &link_info))
1573- einfo (_("%F%P: failed to set dynamic section sizes: %E\n"));
1574+ fatal (_("%P: failed to set dynamic section sizes: %E\n"));
1575
1576 if (ehdr_start != NULL)
1577 {
1578diff --git a/ld/ldelfgen.c b/ld/ldelfgen.c
1579index d3448546..1b1e49ce 100644
1580--- a/ld/ldelfgen.c
1581+++ b/ld/ldelfgen.c
1582@@ -282,7 +282,7 @@ ldelf_map_segments (bool need_layout)
1583 if (os_info->ordered != os_info->count
1584 && bfd_link_relocatable (&link_info))
1585 {
1586- einfo (_("%F%P: "
1587+ fatal (_("%P: "
1588 "%pA has both ordered and unordered sections\n"),
1589 os->bfd_section);
1590 return;
1591@@ -307,7 +307,7 @@ ldelf_map_segments (bool need_layout)
1592 if (!_bfd_elf_map_sections_to_segments (link_info.output_bfd,
1593 &link_info,
1594 &need_layout))
1595- einfo (_("%F%P: map sections to segments failed: %E\n"));
1596+ fatal (_("%P: map sections to segments failed: %E\n"));
1597
1598 if (phdr_size != elf_program_header_size (link_info.output_bfd))
1599 {
1600@@ -327,7 +327,7 @@ ldelf_map_segments (bool need_layout)
1601 while (need_layout && --tries);
1602
1603 if (tries == 0)
1604- einfo (_("%F%P: looping in map_segments\n"));
1605+ fatal (_("%P: looping in map_segments\n"));
1606
1607 if (bfd_get_flavour (link_info.output_bfd) == bfd_target_elf_flavour
1608 && lang_phdr_list == NULL)
1609@@ -337,9 +337,8 @@ ldelf_map_segments (bool need_layout)
1610 const struct elf_backend_data *bed
1611 = get_elf_backend_data (link_info.output_bfd);
1612 if (bed->elf_backend_strip_zero_sized_dynamic_sections
1613- && !bed->elf_backend_strip_zero_sized_dynamic_sections
1614- (&link_info))
1615- einfo (_("%F%P: failed to strip zero-sized dynamic sections\n"));
1616+ && !bed->elf_backend_strip_zero_sized_dynamic_sections (&link_info))
1617+ fatal (_("%P: failed to strip zero-sized dynamic sections\n"));
1618 }
1619 }
1620
1621@@ -417,7 +416,7 @@ ldelf_acquire_strings_for_ctf
1622 {
1623 if (ctf_link_add_strtab (ctf_output, ldelf_ctf_strtab_iter_cb,
1624 &args) < 0)
1625- einfo (_("%F%P: warning: CTF strtab association failed; strings will "
1626+ fatal (_("%P: warning: CTF strtab association failed; strings will "
1627 "not be shared: %s\n"),
1628 ctf_errmsg (ctf_errno (ctf_output)));
1629 }
1630@@ -444,7 +443,7 @@ ldelf_new_dynsym_for_ctf (struct ctf_dict *ctf_output, int symidx,
1631 lsym.st_value = sym->st_value;
1632 if (ctf_link_add_linker_symbol (ctf_output, &lsym) < 0)
1633 {
1634- einfo (_("%F%P: warning: CTF symbol addition failed; CTF will "
1635+ fatal (_("%P: warning: CTF symbol addition failed; CTF will "
1636 "not be tied to symbols: %s\n"),
1637 ctf_errmsg (ctf_errno (ctf_output)));
1638 }
1639@@ -454,7 +453,7 @@ ldelf_new_dynsym_for_ctf (struct ctf_dict *ctf_output, int symidx,
1640 /* Shuffle all the symbols. */
1641
1642 if (ctf_link_shuffle_syms (ctf_output) < 0)
1643- einfo (_("%F%P: warning: CTF symbol shuffling failed; CTF will "
1644+ fatal (_("%P: warning: CTF symbol shuffling failed; CTF will "
1645 "not be tied to symbols: %s\n"),
1646 ctf_errmsg (ctf_errno (ctf_output)));
1647 }
1648diff --git a/ld/ldemul.c b/ld/ldemul.c
1649index 218abb84..b56b0492 100644
1650--- a/ld/ldemul.c
1651+++ b/ld/ldemul.c
1652@@ -343,7 +343,7 @@ ldemul_choose_mode (char *target)
1653 einfo (_("%P: unrecognised emulation mode: %s\n"), target);
1654 einfo (_("Supported emulations: "));
1655 ldemul_list_emulations (stderr);
1656- einfo ("%F\n");
1657+ fatal ("\n");
1658 }
1659
1660 void
1661diff --git a/ld/ldexp.c b/ld/ldexp.c
1662index 3c8ab2d3..45dffbc6 100644
1663--- a/ld/ldexp.c
1664+++ b/ld/ldexp.c
1665@@ -282,7 +282,7 @@ definedness_newfunc (struct bfd_hash_entry *entry,
1666 bfd_hash_allocate (table, sizeof (struct definedness_hash_entry));
1667
1668 if (ret == NULL)
1669- einfo (_("%F%P: bfd_hash_allocate failed creating symbol %s\n"), name);
1670+ fatal (_("%P: bfd_hash_allocate failed creating symbol %s\n"), name);
1671
1672 ret->by_object = 0;
1673 ret->iteration = 0;
1674@@ -313,7 +313,7 @@ update_definedness (const char *name, struct bfd_link_hash_entry *h)
1675 bfd_hash_lookup (&definedness_table, name, true, false);
1676
1677 if (defentry == NULL)
1678- einfo (_("%F%P: bfd_hash_lookup failed creating symbol %s\n"), name);
1679+ fatal (_("%P: bfd_hash_lookup failed creating symbol %s\n"), name);
1680
1681 /* If the symbol was already defined, and not by a script, then it
1682 must be defined by an object file or by the linker target code. */
1683@@ -638,7 +638,7 @@ fold_binary (etree_type *tree)
1684 expld.result.value = ((bfd_signed_vma) lhs.value
1685 % (bfd_signed_vma) expld.result.value);
1686 else if (expld.phase != lang_mark_phase_enum)
1687- einfo (_("%F%P:%pS %% by zero\n"), tree->binary.rhs);
1688+ fatal (_("%P:%pS %% by zero\n"), tree->binary.rhs);
1689 arith_result_section (&lhs);
1690 break;
1691
1692@@ -647,7 +647,7 @@ fold_binary (etree_type *tree)
1693 expld.result.value = ((bfd_signed_vma) lhs.value
1694 / (bfd_signed_vma) expld.result.value);
1695 else if (expld.phase != lang_mark_phase_enum)
1696- einfo (_("%F%P:%pS / by zero\n"), tree->binary.rhs);
1697+ fatal (_("%P:%pS / by zero\n"), tree->binary.rhs);
1698 arith_result_section (&lhs);
1699 break;
1700
1701@@ -761,7 +761,7 @@ fold_name (etree_type *tree)
1702 if (!h)
1703 {
1704 if (expld.phase != lang_first_phase_enum)
1705- einfo (_("%F%P: bfd_link_hash_lookup failed: %E\n"));
1706+ fatal (_("%P: bfd_link_hash_lookup failed: %E\n"));
1707 }
1708 else if (h->type == bfd_link_hash_defined
1709 || h->type == bfd_link_hash_defweak)
1710@@ -789,7 +789,7 @@ fold_name (etree_type *tree)
1711 else if (expld.phase == lang_final_phase_enum
1712 || (expld.phase != lang_mark_phase_enum
1713 && expld.assigning_to_dot))
1714- einfo (_("%F%P:%pS: undefined symbol `%s'"
1715+ fatal (_("%P:%pS: undefined symbol `%s'"
1716 " referenced in expression\n"),
1717 tree, tree->name.name);
1718 else if (h->type == bfd_link_hash_new)
1719@@ -827,7 +827,7 @@ fold_name (etree_type *tree)
1720 if (os == NULL)
1721 {
1722 if (expld.phase == lang_final_phase_enum)
1723- einfo (_("%F%P:%pS: undefined section `%s'"
1724+ fatal (_("%P:%pS: undefined section `%s'"
1725 " referenced in expression\n"),
1726 tree, tree->name.name);
1727 }
1728@@ -845,7 +845,7 @@ fold_name (etree_type *tree)
1729 if (os == NULL)
1730 {
1731 if (expld.phase == lang_final_phase_enum)
1732- einfo (_("%F%P:%pS: undefined section `%s'"
1733+ fatal (_("%P:%pS: undefined section `%s'"
1734 " referenced in expression\n"),
1735 tree, tree->name.name);
1736 }
1737@@ -873,7 +873,7 @@ fold_name (etree_type *tree)
1738 if (os == NULL)
1739 {
1740 if (expld.phase == lang_final_phase_enum)
1741- einfo (_("%F%P:%pS: undefined section `%s'"
1742+ fatal (_("%P:%pS: undefined section `%s'"
1743 " referenced in expression\n"),
1744 tree, tree->name.name);
1745 new_number (0);
1746@@ -912,7 +912,7 @@ fold_name (etree_type *tree)
1747 if (mem != NULL)
1748 new_number (mem->length);
1749 else
1750- einfo (_("%F%P:%pS: undefined MEMORY region `%s'"
1751+ fatal (_("%P:%pS: undefined MEMORY region `%s'"
1752 " referenced in expression\n"),
1753 tree, tree->name.name);
1754 }
1755@@ -926,7 +926,7 @@ fold_name (etree_type *tree)
1756 if (mem != NULL)
1757 new_rel_from_abs (mem->origin);
1758 else
1759- einfo (_("%F%P:%pS: undefined MEMORY region `%s'"
1760+ fatal (_("%P:%pS: undefined MEMORY region `%s'"
1761 " referenced in expression\n"),
1762 tree, tree->name.name);
1763 }
1764@@ -938,7 +938,7 @@ fold_name (etree_type *tree)
1765 else if (strcmp (tree->name.name, "COMMONPAGESIZE") == 0)
1766 new_number (link_info.commonpagesize);
1767 else
1768- einfo (_("%F%P:%pS: unknown constant `%s' referenced in expression\n"),
1769+ fatal (_("%P:%pS: unknown constant `%s' referenced in expression\n"),
1770 tree, tree->name.name);
1771 break;
1772
1773@@ -1086,7 +1086,7 @@ exp_fold_tree_1 (etree_type *tree)
1774 if (tree->assign.dst[0] == '.' && tree->assign.dst[1] == 0)
1775 {
1776 if (tree->type.node_class != etree_assign)
1777- einfo (_("%F%P:%pS can not PROVIDE assignment to"
1778+ fatal (_("%P:%pS can not PROVIDE assignment to"
1779 " location counter\n"), tree);
1780 if (expld.phase != lang_first_phase_enum)
1781 {
1782@@ -1119,11 +1119,11 @@ exp_fold_tree_1 (etree_type *tree)
1783 || expld.section == bfd_und_section_ptr)
1784 {
1785 if (expld.phase != lang_mark_phase_enum)
1786- einfo (_("%F%P:%pS invalid assignment to"
1787+ fatal (_("%P:%pS invalid assignment to"
1788 " location counter\n"), tree);
1789 }
1790 else if (expld.dotp == NULL)
1791- einfo (_("%F%P:%pS assignment to location counter"
1792+ fatal (_("%P:%pS assignment to location counter"
1793 " invalid outside of SECTIONS\n"), tree);
1794
1795 /* After allocation, assignment to dot should not be
1796@@ -1142,7 +1142,7 @@ exp_fold_tree_1 (etree_type *tree)
1797 nextdot += expld.section->vma;
1798 if (nextdot < expld.dot
1799 && expld.section != bfd_abs_section_ptr)
1800- einfo (_("%F%P:%pS cannot move location counter backwards"
1801+ fatal (_("%P:%pS cannot move location counter backwards"
1802 " (from %V to %V)\n"),
1803 tree, expld.dot, nextdot);
1804 else
1805@@ -1202,7 +1202,7 @@ exp_fold_tree_1 (etree_type *tree)
1806 h = bfd_link_hash_lookup (link_info.hash, tree->assign.dst,
1807 true, false, true);
1808 if (h == NULL)
1809- einfo (_("%F%P:%s: hash creation failed\n"),
1810+ fatal (_("%P:%s: hash creation failed\n"),
1811 tree->assign.dst);
1812 }
1813
1814@@ -1578,7 +1578,7 @@ exp_get_vma (etree_type *tree, lang_output_section_statement_type *os,
1815 if (expld.result.valid_p)
1816 return expld.result.value;
1817 else if (name != NULL && expld.phase != lang_mark_phase_enum)
1818- einfo (_("%F%P:%pS: nonconstant expression for %s\n"),
1819+ fatal (_("%P:%pS: nonconstant expression for %s\n"),
1820 tree, name);
1821 }
1822 return def;
1823@@ -1621,7 +1621,7 @@ exp_get_fill (etree_type *tree, fill_type *def, char *name)
1824 if (!expld.result.valid_p)
1825 {
1826 if (name != NULL && expld.phase != lang_mark_phase_enum)
1827- einfo (_("%F%P:%pS: nonconstant expression for %s\n"),
1828+ fatal (_("%P:%pS: nonconstant expression for %s\n"),
1829 tree, name);
1830 return def;
1831 }
1832@@ -1681,7 +1681,7 @@ exp_get_abs_int (etree_type *tree, int def, char *name)
1833 }
1834 else if (name != NULL && expld.phase != lang_mark_phase_enum)
1835 {
1836- einfo (_("%F%P:%pS: nonconstant expression for %s\n"),
1837+ fatal (_("%P:%pS: nonconstant expression for %s\n"),
1838 tree, name);
1839 }
1840 }
1841@@ -1707,7 +1707,7 @@ ldexp_init (void)
1842 definedness_newfunc,
1843 sizeof (struct definedness_hash_entry),
1844 13))
1845- einfo (_("%F%P: can not create hash table: %E\n"));
1846+ fatal (_("%P: can not create hash table: %E\n"));
1847 }
1848
1849 /* Convert absolute symbols defined by a script from "dot" (also
1850diff --git a/ld/ldfile.c b/ld/ldfile.c
1851index 49d899ee..ddab0d37 100644
1852--- a/ld/ldfile.c
1853+++ b/ld/ldfile.c
1854@@ -183,7 +183,7 @@ ldfile_add_remap_file (const char * file)
1855
1856 if (*p == '\0')
1857 {
1858- einfo ("%F%P: malformed remap file entry: %s\n", line);
1859+ fatal ("%P: malformed remap file entry: %s\n", line);
1860 continue;
1861 }
1862
1863@@ -195,7 +195,7 @@ ldfile_add_remap_file (const char * file)
1864
1865 if (*p == '\0')
1866 {
1867- einfo ("%F%P: malformed remap file entry: %s\n", line);
1868+ fatal ("%P: malformed remap file entry: %s\n", line);
1869 continue;
1870 }
1871
1872@@ -365,7 +365,7 @@ ldfile_try_open_bfd (const char *attempt,
1873 if (entry->the_bfd == NULL)
1874 {
1875 if (bfd_get_error () == bfd_error_invalid_target)
1876- einfo (_("%F%P: invalid BFD target `%s'\n"), entry->target);
1877+ fatal (_("%P: invalid BFD target `%s'\n"), entry->target);
1878 return false;
1879 }
1880
1881@@ -508,7 +508,7 @@ ldfile_try_open_bfd (const char *attempt,
1882
1883 if (!entry->flags.dynamic && (entry->the_bfd->flags & DYNAMIC) != 0)
1884 {
1885- einfo (_("%F%P: attempted static link of dynamic object `%s'\n"),
1886+ fatal (_("%P: attempted static link of dynamic object `%s'\n"),
1887 attempt);
1888 bfd_close (entry->the_bfd);
1889 entry->the_bfd = NULL;
1890@@ -919,7 +919,7 @@ ldfile_open_command_file_1 (const char *name, enum script_open_style open_how)
1891 if ((open_how != script_nonT || script->open_how != script_nonT)
1892 && strcmp (name, script->name) == 0)
1893 {
1894- einfo (_("%F%P: error: linker script file '%s'"
1895+ fatal (_("%P: error: linker script file '%s'"
1896 " appears multiple times\n"), name);
1897 return;
1898 }
1899@@ -941,7 +941,7 @@ ldfile_open_command_file_1 (const char *name, enum script_open_style open_how)
1900 if (ldlex_input_stack == NULL)
1901 {
1902 bfd_set_error (bfd_error_system_call);
1903- einfo (_("%F%P: cannot open linker script file %s: %E\n"), name);
1904+ fatal (_("%P: cannot open linker script file %s: %E\n"), name);
1905 return;
1906 }
1907
1908@@ -1012,5 +1012,5 @@ ldfile_set_output_arch (const char *string, enum bfd_architecture defarch)
1909 else if (defarch != bfd_arch_unknown)
1910 ldfile_output_architecture = defarch;
1911 else
1912- einfo (_("%F%P: cannot represent machine `%s'\n"), string);
1913+ fatal (_("%P: cannot represent machine `%s'\n"), string);
1914 }
1915diff --git a/ld/ldgram.y b/ld/ldgram.y
1916index 0d531fdd..c2f1e298 100644
1917--- a/ld/ldgram.y
1918+++ b/ld/ldgram.y
1919@@ -209,7 +209,7 @@ mri_script_command:
1920 CHIP exp
1921 | CHIP exp ',' exp
1922 | NAME {
1923- einfo(_("%F%P: unrecognised keyword in MRI style script '%s'\n"),$1);
1924+ fatal (_("%P: unrecognised keyword in MRI style script '%s'\n"), $1);
1925 }
1926 | LIST {
1927 config.map_filename = "-";
1928@@ -1547,7 +1547,7 @@ yyerror (const char *arg)
1929 einfo (_("%P:%s: file format not recognized; treating as linker script\n"),
1930 ldlex_filename ());
1931 if (error_index > 0 && error_index < ERROR_NAME_MAX)
1932- einfo (_("%F%P:%pS: %s in %s\n"), NULL, arg, error_names[error_index - 1]);
1933+ fatal (_("%P:%pS: %s in %s\n"), NULL, arg, error_names[error_index - 1]);
1934 else
1935- einfo ("%F%P:%pS: %s\n", NULL, arg);
1936+ fatal ("%P:%pS: %s\n", NULL, arg);
1937 }
1938diff --git a/ld/ldlang.c b/ld/ldlang.c
1939index 229401c8..9bf5fcbe 100644
1940--- a/ld/ldlang.c
1941+++ b/ld/ldlang.c
1942@@ -1325,7 +1325,7 @@ output_section_statement_table_init (void)
1943 output_section_statement_newfunc,
1944 sizeof (struct out_section_hash_entry),
1945 61))
1946- einfo (_("%F%P: can not create hash table: %E\n"));
1947+ fatal (_("%P: can not create hash table: %E\n"));
1948 }
1949
1950 static void
1951@@ -1453,7 +1453,7 @@ lang_memory_region_alias (const char *alias, const char *region_name)
1952 the default memory region. */
1953 if (strcmp (region_name, DEFAULT_MEMORY_REGION) == 0
1954 || strcmp (alias, DEFAULT_MEMORY_REGION) == 0)
1955- einfo (_("%F%P:%pS: error: alias for default memory region\n"), NULL);
1956+ fatal (_("%P:%pS: error: alias for default memory region\n"), NULL);
1957
1958 /* Look for the target region and check if the alias is not already
1959 in use. */
1960@@ -1464,14 +1464,14 @@ lang_memory_region_alias (const char *alias, const char *region_name)
1961 if (region == NULL && strcmp (n->name, region_name) == 0)
1962 region = r;
1963 if (strcmp (n->name, alias) == 0)
1964- einfo (_("%F%P:%pS: error: redefinition of memory region "
1965+ fatal (_("%P:%pS: error: redefinition of memory region "
1966 "alias `%s'\n"),
1967 NULL, alias);
1968 }
1969
1970 /* Check if the target region exists. */
1971 if (region == NULL)
1972- einfo (_("%F%P:%pS: error: memory region `%s' "
1973+ fatal (_("%P:%pS: error: memory region `%s' "
1974 "for alias `%s' does not exist\n"),
1975 NULL, region_name, alias);
1976
1977@@ -1532,7 +1532,7 @@ lang_output_section_statement_lookup (const char *name,
1978 if (entry == NULL)
1979 {
1980 if (create)
1981- einfo (_("%F%P: failed creating section `%s': %E\n"), name);
1982+ fatal (_("%P: failed creating section `%s': %E\n"), name);
1983 return NULL;
1984 }
1985
1986@@ -1567,7 +1567,7 @@ lang_output_section_statement_lookup (const char *name,
1987 name));
1988 if (entry == NULL)
1989 {
1990- einfo (_("%F%P: failed creating section `%s': %E\n"), name);
1991+ fatal (_("%P: failed creating section `%s': %E\n"), name);
1992 return NULL;
1993 }
1994 entry->root = last_ent->root;
1995@@ -2426,7 +2426,7 @@ static void
1996 init_os (lang_output_section_statement_type *s, flagword flags)
1997 {
1998 if (strcmp (s->name, DISCARD_SECTION_NAME) == 0)
1999- einfo (_("%F%P: illegal use of `%s' section\n"), DISCARD_SECTION_NAME);
2000+ fatal (_("%P: illegal use of `%s' section\n"), DISCARD_SECTION_NAME);
2001
2002 if (!s->dup_output)
2003 s->bfd_section = bfd_get_section_by_name (link_info.output_bfd, s->name);
2004@@ -2435,7 +2435,7 @@ init_os (lang_output_section_statement_type *s, flagword flags)
2005 s->name, flags);
2006 if (s->bfd_section == NULL)
2007 {
2008- einfo (_("%F%P: output format %s cannot represent section"
2009+ fatal (_("%P: output format %s cannot represent section"
2010 " called %s: %E\n"),
2011 link_info.output_bfd->xvec->name, s->name);
2012 }
2013@@ -3023,11 +3023,11 @@ load_symbols (lang_input_statement_type *entry,
2014 for (p = matching; *p != NULL; p++)
2015 einfo (" %s", *p);
2016 free (matching);
2017- einfo ("%F\n");
2018+ fatal ("\n");
2019 }
2020 else if (err != bfd_error_file_not_recognized
2021 || place == NULL)
2022- einfo (_("%F%P: %pB: file not recognized: %E\n"), entry->the_bfd);
2023+ fatal (_("%P: %pB: file not recognized: %E\n"), entry->the_bfd);
2024
2025 bfd_close (entry->the_bfd);
2026 entry->the_bfd = NULL;
2027@@ -3100,7 +3100,7 @@ load_symbols (lang_input_statement_type *entry,
2028
2029 if (!bfd_check_format (member, bfd_object))
2030 {
2031- einfo (_("%F%P: %pB: member %pB in archive is not an object\n"),
2032+ fatal (_("%P: %pB: member %pB in archive is not an object\n"),
2033 entry->the_bfd, member);
2034 loaded = false;
2035 }
2036@@ -3115,7 +3115,7 @@ load_symbols (lang_input_statement_type *entry,
2037 substitute BFD for us. */
2038 if (!bfd_link_add_symbols (subsbfd, &link_info))
2039 {
2040- einfo (_("%F%P: %pB: error adding symbols: %E\n"), member);
2041+ fatal (_("%P: %pB: error adding symbols: %E\n"), member);
2042 loaded = false;
2043 }
2044 }
2045@@ -3129,7 +3129,7 @@ load_symbols (lang_input_statement_type *entry,
2046 if (bfd_link_add_symbols (entry->the_bfd, &link_info))
2047 entry->flags.loaded = true;
2048 else
2049- einfo (_("%F%P: %pB: error adding symbols: %E\n"), entry->the_bfd);
2050+ fatal (_("%P: %pB: error adding symbols: %E\n"), entry->the_bfd);
2051
2052 return entry->flags.loaded;
2053 }
2054@@ -3370,7 +3370,7 @@ open_output (const char *name)
2055 {
2056 char *in = lrealpath (f->local_sym_name);
2057 if (filename_cmp (in, out) == 0)
2058- einfo (_("%F%P: input file '%s' is the same as output file\n"),
2059+ fatal (_("%P: input file '%s' is the same as output file\n"),
2060 f->filename);
2061 free (in);
2062 }
2063@@ -3432,23 +3432,23 @@ open_output (const char *name)
2064 if (link_info.output_bfd == NULL)
2065 {
2066 if (bfd_get_error () == bfd_error_invalid_target)
2067- einfo (_("%F%P: target %s not found\n"), output_target);
2068+ fatal (_("%P: target %s not found\n"), output_target);
2069
2070- einfo (_("%F%P: cannot open output file %s: %E\n"), name);
2071+ fatal (_("%P: cannot open output file %s: %E\n"), name);
2072 }
2073
2074 delete_output_file_on_failure = true;
2075
2076 if (!bfd_set_format (link_info.output_bfd, bfd_object))
2077- einfo (_("%F%P: %s: can not make object file: %E\n"), name);
2078+ fatal (_("%P: %s: can not make object file: %E\n"), name);
2079 if (!bfd_set_arch_mach (link_info.output_bfd,
2080- ldfile_output_architecture,
2081- ldfile_output_machine))
2082- einfo (_("%F%P: %s: can not set architecture: %E\n"), name);
2083+ ldfile_output_architecture,
2084+ ldfile_output_machine))
2085+ fatal (_("%P: %s: can not set architecture: %E\n"), name);
2086
2087 link_info.hash = bfd_link_hash_table_create (link_info.output_bfd);
2088 if (link_info.hash == NULL)
2089- einfo (_("%F%P: can not create hash table: %E\n"));
2090+ fatal (_("%P: can not create hash table: %E\n"));
2091
2092 bfd_set_gp_size (link_info.output_bfd, g_switch_value);
2093 }
2094@@ -3662,7 +3662,7 @@ open_input_bfds (lang_statement_union_type *s,
2095
2096 /* Exit if any of the files were missing. */
2097 if (input_flags.missing_file)
2098- einfo ("%F");
2099+ fatal ("");
2100 }
2101
2102 #ifdef ENABLE_LIBCTF
2103@@ -3973,7 +3973,7 @@ insert_undefined (const char *name)
2104
2105 h = bfd_link_hash_lookup (link_info.hash, name, true, false, true);
2106 if (h == NULL)
2107- einfo (_("%F%P: bfd_link_hash_lookup failed: %E\n"));
2108+ fatal (_("%P: bfd_link_hash_lookup failed: %E\n"));
2109 if (h->type == bfd_link_hash_new)
2110 {
2111 h->type = bfd_link_hash_undefined;
2112@@ -4259,7 +4259,7 @@ map_input_to_output_sections
2113 else if (strcmp (name, "SHT_PREINIT_ARRAY") == 0)
2114 type = SHT_PREINIT_ARRAY;
2115 else
2116- einfo (_ ("%F%P: invalid type for output section `%s'\n"),
2117+ fatal (_ ("%P: invalid type for output section `%s'\n"),
2118 os->name);
2119 }
2120 else
2121@@ -4268,7 +4268,7 @@ map_input_to_output_sections
2122 if (expld.result.valid_p)
2123 type = expld.result.value;
2124 else
2125- einfo (_ ("%F%P: invalid type for output section `%s'\n"),
2126+ fatal (_ ("%P: invalid type for output section `%s'\n"),
2127 os->name);
2128 }
2129 break;
2130@@ -4417,7 +4417,7 @@ process_insert_statements (lang_statement_union_type **start)
2131 }
2132 if (where == NULL)
2133 {
2134- einfo (_("%F%P: %s not found for insert\n"), i->where);
2135+ fatal (_("%P: %s not found for insert\n"), i->where);
2136 return;
2137 }
2138
2139@@ -5499,12 +5499,12 @@ size_input_section
2140 if (dot + TO_ADDR (i->size) > end)
2141 {
2142 if (i->flags & SEC_LINKER_CREATED)
2143- einfo (_("%F%P: Output section `%pA' not large enough for "
2144+ fatal (_("%P: Output section `%pA' not large enough for "
2145 "the linker-created stubs section `%pA'.\n"),
2146 i->output_section, i);
2147
2148 if (i->rawsize && i->rawsize != i->size)
2149- einfo (_("%F%P: Relaxation not supported with "
2150+ fatal (_("%P: Relaxation not supported with "
2151 "--enable-non-contiguous-regions (section `%pA' "
2152 "would overflow `%pA' after it changed size).\n"),
2153 i, i->output_section);
2154@@ -5860,7 +5860,7 @@ lang_size_sections_1
2155 dot += expld.result.section->vma;
2156 }
2157 else if (expld.phase != lang_mark_phase_enum)
2158- einfo (_("%F%P:%pS: non constant or forward reference"
2159+ fatal (_("%P:%pS: non constant or forward reference"
2160 " address expression for section %s\n"),
2161 os->addr_tree, os->name);
2162 }
2163@@ -5943,7 +5943,7 @@ lang_size_sections_1
2164 overridden by the using the --no-check-sections
2165 switch. */
2166 if (command_line.check_section_addresses)
2167- einfo (_("%F%P: error: no memory region specified"
2168+ fatal (_("%P: error: no memory region specified"
2169 " for loadable section `%s'\n"),
2170 bfd_section_name (os->bfd_section));
2171 else
2172@@ -6250,7 +6250,7 @@ lang_size_sections_1
2173 bool again;
2174
2175 if (!bfd_relax_section (i->owner, i, &link_info, &again))
2176- einfo (_("%F%P: can't relax section: %E\n"));
2177+ fatal (_("%P: can't relax section: %E\n"));
2178 if (again)
2179 *relax = true;
2180 }
2181@@ -6659,7 +6659,7 @@ lang_do_assignments_1 (lang_statement_union_type *s,
2182 s->data_statement.value += expld.result.section->vma;
2183 }
2184 else if (expld.phase == lang_final_phase_enum)
2185- einfo (_("%F%P: invalid data statement\n"));
2186+ fatal (_("%P: invalid data statement\n"));
2187 {
2188 unsigned int size;
2189 switch (s->data_statement.type)
2190@@ -6692,7 +6692,7 @@ lang_do_assignments_1 (lang_statement_union_type *s,
2191 if (expld.result.valid_p)
2192 s->reloc_statement.addend_value = expld.result.value;
2193 else if (expld.phase == lang_final_phase_enum)
2194- einfo (_("%F%P: invalid reloc statement\n"));
2195+ fatal (_("%P: invalid reloc statement\n"));
2196 dot += TO_ADDR (bfd_get_reloc_size (s->reloc_statement.howto));
2197 break;
2198
2199@@ -7110,7 +7110,7 @@ lang_end (void)
2200 break;
2201 }
2202 if (!sym)
2203- einfo (_("%F%P: --gc-sections requires a defined symbol root "
2204+ fatal (_("%P: --gc-sections requires a defined symbol root "
2205 "specified by -e or -u\n"));
2206 }
2207
2208@@ -7135,7 +7135,7 @@ lang_end (void)
2209 + bfd_section_vma (h->u.def.section->output_section)
2210 + h->u.def.section->output_offset);
2211 if (!bfd_set_start_address (link_info.output_bfd, val))
2212- einfo (_("%F%P: %s: can't set start address\n"), entry_symbol.name);
2213+ fatal (_("%P: %s: can't set start address\n"), entry_symbol.name);
2214 }
2215 else
2216 {
2217@@ -7148,7 +7148,7 @@ lang_end (void)
2218 if (*send == '\0')
2219 {
2220 if (!bfd_set_start_address (link_info.output_bfd, val))
2221- einfo (_("%F%P: can't set start address\n"));
2222+ fatal (_("%P: can't set start address\n"));
2223 }
2224 /* BZ 2004952: Only use the start of the entry section for executables. */
2225 else if bfd_link_executable (&link_info)
2226@@ -7167,7 +7167,7 @@ lang_end (void)
2227 bfd_section_vma (ts));
2228 if (!bfd_set_start_address (link_info.output_bfd,
2229 bfd_section_vma (ts)))
2230- einfo (_("%F%P: can't set start address\n"));
2231+ fatal (_("%P: can't set start address\n"));
2232 }
2233 else
2234 {
2235@@ -7236,11 +7236,10 @@ lang_check (void)
2236 != bfd_get_flavour (link_info.output_bfd)))
2237 && (bfd_get_file_flags (input_bfd) & HAS_RELOC) != 0)
2238 {
2239- einfo (_("%F%P: relocatable linking with relocations from"
2240+ fatal (_("%P: relocatable linking with relocations from"
2241 " format %s (%pB) to format %s (%pB) is not supported\n"),
2242 bfd_get_target (input_bfd), input_bfd,
2243 bfd_get_target (link_info.output_bfd), link_info.output_bfd);
2244- /* einfo with %F exits. */
2245 }
2246
2247 if (compatible == NULL)
2248@@ -7341,7 +7340,7 @@ lang_one_common (struct bfd_link_hash_entry *h, void *info)
2249
2250 section = h->u.c.p->section;
2251 if (!bfd_define_common_symbol (link_info.output_bfd, &link_info, h))
2252- einfo (_("%F%P: could not define common symbol `%pT': %E\n"),
2253+ fatal (_("%P: could not define common symbol `%pT': %E\n"),
2254 h->root.string);
2255
2256 if (config.map_file != NULL)
2257@@ -7519,7 +7518,7 @@ lang_set_flags (lang_memory_region_type *ptr, const char *flags, int invert)
2258 break;
2259
2260 default:
2261- einfo (_("%F%P: invalid character %c (%d) in flags\n"),
2262+ fatal (_("%P: invalid character %c (%d) in flags\n"),
2263 *flags, *flags);
2264 break;
2265 }
2266@@ -7631,7 +7630,7 @@ lang_enter_output_section_statement (const char *output_section_statement_name,
2267
2268 os->align_lma_with_input = align_with_input == ALIGN_WITH_INPUT;
2269 if (os->align_lma_with_input && align != NULL)
2270- einfo (_("%F%P:%pS: error: align with input and explicit align specified\n"),
2271+ fatal (_("%P:%pS: error: align with input and explicit align specified\n"),
2272 NULL);
2273
2274 os->subsection_alignment = subalign;
2275@@ -8143,7 +8142,7 @@ lang_process (void)
2276 lang_place_undefineds ();
2277
2278 if (!bfd_section_already_linked_table_init ())
2279- einfo (_("%F%P: can not create hash table: %E\n"));
2280+ fatal (_("%P: can not create hash table: %E\n"));
2281
2282 /* A first pass through the memory regions ensures that if any region
2283 references a symbol for its origin or length then this symbol will be
2284@@ -8181,7 +8180,7 @@ lang_process (void)
2285 files = file_chain;
2286 inputfiles = input_file_chain;
2287 if (plugin_call_all_symbols_read ())
2288- einfo (_("%F%P: %s: plugin reported error after all symbols read\n"),
2289+ fatal (_("%P: %s: plugin reported error after all symbols read\n"),
2290 plugin_error_plugin ());
2291 link_info.lto_all_symbols_read = true;
2292 /* Open any newly added files, updating the file chains. */
2293@@ -8758,9 +8757,7 @@ void
2294 lang_startup (const char *name)
2295 {
2296 if (first_file->filename != NULL)
2297- {
2298- einfo (_("%F%P: multiple STARTUP files\n"));
2299- }
2300+ fatal (_("%P: multiple STARTUP files\n"));
2301 first_file->filename = name;
2302 first_file->local_sym_name = name;
2303 first_file->flags.real = true;
2304@@ -8984,7 +8981,7 @@ lang_record_phdrs (void)
2305 break;
2306 }
2307 if (last == NULL)
2308- einfo (_("%F%P: no sections assigned to phdrs\n"));
2309+ fatal (_("%P: no sections assigned to phdrs\n"));
2310 }
2311 pl = last;
2312 }
2313@@ -9022,7 +9019,7 @@ lang_record_phdrs (void)
2314 if (!bfd_record_phdr (link_info.output_bfd, l->type,
2315 l->flags != NULL, flags, l->at != NULL,
2316 at, l->filehdr, l->phdrs, c, secs))
2317- einfo (_("%F%P: bfd_record_phdr failed: %E\n"));
2318+ fatal (_("%P: bfd_record_phdr failed: %E\n"));
2319 }
2320
2321 free (secs);
2322diff --git a/ld/ldlex.l b/ld/ldlex.l
2323index e113c908..7cbade08 100644
2324--- a/ld/ldlex.l
2325+++ b/ld/ldlex.l
2326@@ -504,9 +504,7 @@ void
2327 lex_push_file (FILE *file, const char *name, unsigned int sysrooted)
2328 {
2329 if (include_stack_ptr >= MAX_INCLUDE_DEPTH)
2330- {
2331- einfo (_("%F:includes nested too deeply\n"));
2332- }
2333+ fatal (_("%P: includes nested too deeply\n"));
2334 file_name_stack[include_stack_ptr] = name;
2335 lineno_stack[include_stack_ptr] = lineno;
2336 sysrooted_stack[include_stack_ptr] = input_flags.sysrooted;
2337@@ -568,9 +566,7 @@ lex_redirect (const char *string, const char *fake_filename, unsigned int count)
2338
2339 yy_init = 0;
2340 if (include_stack_ptr >= MAX_INCLUDE_DEPTH)
2341- {
2342- einfo (_("%F: macros nested too deeply\n"));
2343- }
2344+ fatal (_("%P: macros nested too deeply\n"));
2345 file_name_stack[include_stack_ptr] = fake_filename;
2346 lineno_stack[include_stack_ptr] = lineno;
2347 include_stack[include_stack_ptr] = YY_CURRENT_BUFFER;
2348@@ -674,7 +670,7 @@ yy_input (char *buf, int max_size)
2349 {
2350 result = fread (buf, 1, max_size, yyin);
2351 if (result < max_size && ferror (yyin))
2352- einfo (_("%F%P: read in flex scanner failed\n"));
2353+ fatal (_("%P: read in flex scanner failed\n"));
2354 }
2355 }
2356 return result;
2357@@ -711,7 +707,7 @@ comment (void)
2358
2359 if (c == 0)
2360 {
2361- einfo (_("%F%P: EOF in comment\n"));
2362+ fatal (_("%P: EOF in comment\n"));
2363 break;
2364 }
2365 }
2366@@ -732,7 +728,7 @@ lex_warn_invalid (char *where, char *what)
2367 if (ldfile_assumed_script)
2368 {
2369 bfd_set_error (bfd_error_file_not_recognized);
2370- einfo (_("%F%s: file not recognized: %E\n"), ldlex_filename ());
2371+ fatal (_("%s: file not recognized: %E\n"), ldlex_filename ());
2372 }
2373
2374 if (! ISPRINT (*what))
2375diff --git a/ld/ldmain.c b/ld/ldmain.c
2376index 3cd5516c..878d9536 100644
2377--- a/ld/ldmain.c
2378+++ b/ld/ldmain.c
2379@@ -192,7 +192,7 @@ write_dependency_file (void)
2380 out = fopen (config.dependency_file, FOPEN_WT);
2381 if (out == NULL)
2382 {
2383- einfo (_("%F%P: cannot open dependency file %s: %E\n"),
2384+ fatal (_("%P: cannot open dependency file %s: %E\n"),
2385 config.dependency_file);
2386 }
2387
2388@@ -265,7 +265,7 @@ main (int argc, char **argv)
2389 expandargv (&argc, &argv);
2390
2391 if (bfd_init () != BFD_INIT_MAGIC)
2392- einfo (_("%F%P: fatal error: libbfd ABI mismatch\n"));
2393+ fatal (_("%P: fatal error: libbfd ABI mismatch\n"));
2394
2395 bfd_set_error_program_name (program_name);
2396
2397@@ -467,13 +467,13 @@ main (int argc, char **argv)
2398 xexit (0);
2399
2400 if (link_info.inhibit_common_definition && !bfd_link_dll (&link_info))
2401- einfo (_("%F%P: --no-define-common may not be used without -shared\n"));
2402+ fatal (_("%P: --no-define-common may not be used without -shared\n"));
2403
2404 if (!lang_has_input_file)
2405 {
2406 if (version_printed || command_line.print_output_format)
2407 xexit (0);
2408- einfo (_("%F%P: no input files\n"));
2409+ fatal (_("%P: no input files\n"));
2410 }
2411
2412 if (verbose)
2413@@ -493,7 +493,7 @@ main (int argc, char **argv)
2414 if (config.map_file == (FILE *) NULL)
2415 {
2416 bfd_set_error (bfd_error_system_call);
2417- einfo (_("%F%P: cannot open map file %s: %E\n"),
2418+ einfo (_("%P: cannot open map file %s: %E\n"),
2419 config.map_filename);
2420 }
2421 }
2422@@ -568,7 +568,7 @@ main (int argc, char **argv)
2423 bfd *obfd = link_info.output_bfd;
2424 link_info.output_bfd = NULL;
2425 if (!bfd_close (obfd))
2426- einfo (_("%F%P: %s: final close failed: %E\n"), output_filename);
2427+ fatal (_("%P: %s: final close failed: %E\n"), output_filename);
2428
2429 /* If the --force-exe-suffix is enabled, and we're making an
2430 executable file and it doesn't end in .exe, copy it to one
2431@@ -595,10 +595,10 @@ main (int argc, char **argv)
2432 dst = fopen (dst_name, FOPEN_WB);
2433
2434 if (!src)
2435- einfo (_("%F%P: unable to open for source of copy `%s'\n"),
2436+ fatal (_("%P: unable to open for source of copy `%s'\n"),
2437 output_filename);
2438 if (!dst)
2439- einfo (_("%F%P: unable to open for destination of copy `%s'\n"),
2440+ fatal (_("%P: unable to open for destination of copy `%s'\n"),
2441 dst_name);
2442 while ((l = fread (buf, 1, bsize, src)) > 0)
2443 {
2444@@ -709,7 +709,7 @@ get_emulation (int argc, char **argv)
2445 i++;
2446 }
2447 else
2448- einfo (_("%F%P: missing argument to -m\n"));
2449+ fatal (_("%P: missing argument to -m\n"));
2450 }
2451 else if (strcmp (argv[i], "-mips1") == 0
2452 || strcmp (argv[i], "-mips2") == 0
2453@@ -763,11 +763,11 @@ add_ysym (const char *name)
2454 bfd_hash_newfunc,
2455 sizeof (struct bfd_hash_entry),
2456 61))
2457- einfo (_("%F%P: bfd_hash_table_init failed: %E\n"));
2458+ fatal (_("%P: bfd_hash_table_init failed: %E\n"));
2459 }
2460
2461 if (bfd_hash_lookup (link_info.notice_hash, name, true, true) == NULL)
2462- einfo (_("%F%P: bfd_hash_lookup failed: %E\n"));
2463+ fatal (_("%P: bfd_hash_lookup failed: %E\n"));
2464 }
2465
2466 void
2467@@ -780,11 +780,11 @@ add_ignoresym (struct bfd_link_info *info, const char *name)
2468 bfd_hash_newfunc,
2469 sizeof (struct bfd_hash_entry),
2470 61))
2471- einfo (_("%F%P: bfd_hash_table_init failed: %E\n"));
2472+ fatal (_("%P: bfd_hash_table_init failed: %E\n"));
2473 }
2474
2475 if (bfd_hash_lookup (info->ignore_hash, name, true, true) == NULL)
2476- einfo (_("%F%P: bfd_hash_lookup failed: %E\n"));
2477+ fatal (_("%P: bfd_hash_lookup failed: %E\n"));
2478 }
2479
2480 /* Record a symbol to be wrapped, from the --wrap option. */
2481@@ -800,11 +800,11 @@ add_wrap (const char *name)
2482 bfd_hash_newfunc,
2483 sizeof (struct bfd_hash_entry),
2484 61))
2485- einfo (_("%F%P: bfd_hash_table_init failed: %E\n"));
2486+ fatal (_("%P: bfd_hash_table_init failed: %E\n"));
2487 }
2488
2489 if (bfd_hash_lookup (link_info.wrap_hash, name, true, true) == NULL)
2490- einfo (_("%F%P: bfd_hash_lookup failed: %E\n"));
2491+ fatal (_("%P: bfd_hash_lookup failed: %E\n"));
2492 }
2493
2494 /* Handle the -retain-symbols-file option. */
2495@@ -832,7 +832,7 @@ add_keepsyms_file (const char *filename)
2496 xmalloc (sizeof (struct bfd_hash_table));
2497 if (!bfd_hash_table_init (link_info.keep_hash, bfd_hash_newfunc,
2498 sizeof (struct bfd_hash_entry)))
2499- einfo (_("%F%P: bfd_hash_table_init failed: %E\n"));
2500+ fatal (_("%P: bfd_hash_table_init failed: %E\n"));
2501
2502 bufsize = 100;
2503 buf = (char *) xmalloc (bufsize);
2504@@ -862,7 +862,7 @@ add_keepsyms_file (const char *filename)
2505 buf[len] = '\0';
2506
2507 if (bfd_hash_lookup (link_info.keep_hash, buf, true, true) == NULL)
2508- einfo (_("%F%P: bfd_hash_lookup for insertion failed: %E\n"));
2509+ fatal (_("%P: bfd_hash_lookup for insertion failed: %E\n"));
2510 }
2511 }
2512
2513@@ -1269,7 +1269,7 @@ constructor_callback (struct bfd_link_info *info,
2514 if (bfd_reloc_type_lookup (info->output_bfd, BFD_RELOC_CTOR) == NULL
2515 && (bfd_link_relocatable (info)
2516 || bfd_reloc_type_lookup (abfd, BFD_RELOC_CTOR) == NULL))
2517- einfo (_("%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n"));
2518+ fatal (_("%P: BFD backend error: BFD_RELOC_CTOR unsupported\n"));
2519
2520 s = set_name;
2521 if (bfd_get_symbol_leading_char (abfd) != '\0')
2522@@ -1281,7 +1281,7 @@ constructor_callback (struct bfd_link_info *info,
2523
2524 h = bfd_link_hash_lookup (info->hash, set_name, true, true, true);
2525 if (h == (struct bfd_link_hash_entry *) NULL)
2526- einfo (_("%F%P: bfd_link_hash_lookup failed: %E\n"));
2527+ fatal (_("%P: bfd_link_hash_lookup failed: %E\n"));
2528 if (h->type == bfd_link_hash_new)
2529 {
2530 h->type = bfd_link_hash_undefined;
2531@@ -1314,7 +1314,7 @@ symbol_warning (const char *warning, const char *symbol, bfd *abfd)
2532 struct warning_callback_info cinfo;
2533
2534 if (!bfd_generic_link_read_symbols (abfd))
2535- einfo (_("%F%P: %pB: could not read symbols: %E\n"), abfd);
2536+ fatal (_("%P: %pB: could not read symbols: %E\n"), abfd);
2537
2538 cinfo.found = false;
2539 cinfo.warning = warning;
2540@@ -1376,14 +1376,14 @@ warning_find_reloc (bfd *abfd, asection *sec, void *iarg)
2541
2542 relsize = bfd_get_reloc_upper_bound (abfd, sec);
2543 if (relsize < 0)
2544- einfo (_("%F%P: %pB: could not read relocs: %E\n"), abfd);
2545+ fatal (_("%P: %pB: could not read relocs: %E\n"), abfd);
2546 if (relsize == 0)
2547 return;
2548
2549 relpp = (arelent **) xmalloc (relsize);
2550 relcount = bfd_canonicalize_reloc (abfd, sec, relpp, info->asymbols);
2551 if (relcount < 0)
2552- einfo (_("%F%P: %pB: could not read relocs: %E\n"), abfd);
2553+ fatal (_("%P: %pB: could not read relocs: %E\n"), abfd);
2554
2555 p = relpp;
2556 pend = p + relcount;
2557diff --git a/ld/ldmisc.c b/ld/ldmisc.c
2558index 3c862ea4..d1257214 100644
2559--- a/ld/ldmisc.c
2560+++ b/ld/ldmisc.c
2561@@ -70,7 +70,7 @@
2562 void
2563 vfinfo (FILE *fp, const char *fmt, va_list ap, bool is_warning)
2564 {
2565- bool fatal = false;
2566+ bool isfatal = false;
2567 const char *scan;
2568 int arg_type;
2569 unsigned int arg_count = 0;
2570@@ -282,7 +282,7 @@ vfinfo (FILE *fp, const char *fmt, va_list ap, bool is_warning)
2571
2572 case 'F':
2573 /* Error is fatal. */
2574- fatal = true;
2575+ isfatal = true;
2576 break;
2577
2578 case 'P':
2579@@ -324,7 +324,7 @@ vfinfo (FILE *fp, const char *fmt, va_list ap, bool is_warning)
2580 if (abfd != NULL)
2581 {
2582 if (!bfd_generic_link_read_symbols (abfd))
2583- einfo (_("%F%P: %pB: could not read symbols: %E\n"), abfd);
2584+ fatal (_("%P: %pB: could not read symbols: %E\n"), abfd);
2585
2586 asymbols = bfd_get_outsymbols (abfd);
2587 }
2588@@ -587,7 +587,7 @@ vfinfo (FILE *fp, const char *fmt, va_list ap, bool is_warning)
2589 if (is_warning && config.fatal_warnings)
2590 config.make_executable = false;
2591
2592- if (fatal)
2593+ if (isfatal)
2594 xexit (1);
2595 }
2596
2597@@ -620,10 +620,25 @@ einfo (const char *fmt, ...)
2598 fflush (stderr);
2599 }
2600
2601+/* Fatal error. */
2602+
2603+void
2604+fatal (const char *fmt, ...)
2605+{
2606+ va_list arg;
2607+
2608+ fflush (stdout);
2609+ va_start (arg, fmt);
2610+ vfinfo (stderr, fmt, arg, true);
2611+ va_end (arg);
2612+ fflush (stderr);
2613+ xexit (1);
2614+}
2615+
2616 void
2617 info_assert (const char *file, unsigned int line)
2618 {
2619- einfo (_("%F%P: internal error %s %d\n"), file, line);
2620+ fatal (_("%P: internal error %s %d\n"), file, line);
2621 }
2622
2623 /* ('m' for map) Format info message and print on map. */
2624@@ -692,6 +707,5 @@ ld_abort (const char *file, int line, const char *fn)
2625 else
2626 einfo (_("%P: internal error: aborting at %s:%d\n"),
2627 file, line);
2628- einfo (_("%F%P: please report this bug\n"));
2629- xexit (1);
2630+ fatal (_("%P: please report this bug\n"));
2631 }
2632diff --git a/ld/ldmisc.h b/ld/ldmisc.h
2633index e8b982fe..f763ab8f 100644
2634--- a/ld/ldmisc.h
2635+++ b/ld/ldmisc.h
2636@@ -23,6 +23,7 @@
2637
2638 extern void vfinfo (FILE *fp, const char *fmt, va_list arg, bool is_warning);
2639 extern void einfo (const char *, ...);
2640+extern void fatal (const char *, ...) ATTRIBUTE_NORETURN;
2641 extern void minfo (const char *, ...);
2642 extern void info_msg (const char *, ...);
2643 extern void lfinfo (FILE *, const char *, ...);
2644diff --git a/ld/ldwrite.c b/ld/ldwrite.c
2645index 46fb33c8..ace5e564 100644
2646--- a/ld/ldwrite.c
2647+++ b/ld/ldwrite.c
2648@@ -57,14 +57,14 @@ build_link_order (lang_statement_union_type *statement)
2649
2650 link_order = bfd_new_link_order (link_info.output_bfd, output_section);
2651 if (link_order == NULL)
2652- einfo (_("%F%P: bfd_new_link_order failed: %E\n"));
2653+ fatal (_("%P: bfd_new_link_order failed: %E\n"));
2654
2655 link_order->type = bfd_data_link_order;
2656 link_order->offset = statement->data_statement.output_offset;
2657 link_order->u.data.contents = bfd_alloc (link_info.output_bfd,
2658 QUAD_SIZE);
2659 if (link_order->u.data.contents == NULL)
2660- einfo (_("%F%P: bfd_new_link_order failed: %E\n"));
2661+ fatal (_("%P: bfd_new_link_order failed: %E\n"));
2662
2663 value = statement->data_statement.value;
2664
2665@@ -170,7 +170,7 @@ build_link_order (lang_statement_union_type *statement)
2666
2667 link_order = bfd_new_link_order (link_info.output_bfd, output_section);
2668 if (link_order == NULL)
2669- einfo (_("%F%P: bfd_new_link_order failed: %E\n"));
2670+ fatal (_("%P: bfd_new_link_order failed: %E\n"));
2671
2672 link_order->offset = rs->output_offset;
2673 link_order->size = bfd_get_reloc_size (rs->howto);
2674@@ -178,7 +178,7 @@ build_link_order (lang_statement_union_type *statement)
2675 link_order->u.reloc.p = (struct bfd_link_order_reloc *)
2676 bfd_alloc (link_info.output_bfd, sizeof (struct bfd_link_order_reloc));
2677 if (link_order->u.reloc.p == NULL)
2678- einfo (_("%F%P: bfd_new_link_order failed: %E\n"));
2679+ fatal (_("%P: bfd_new_link_order failed: %E\n"));
2680
2681 link_order->u.reloc.p->reloc = rs->reloc;
2682 link_order->u.reloc.p->addend = rs->addend_value;
2683@@ -224,7 +224,7 @@ build_link_order (lang_statement_union_type *statement)
2684 link_order = bfd_new_link_order (link_info.output_bfd,
2685 output_section);
2686 if (link_order == NULL)
2687- einfo (_("%F%P: bfd_new_link_order failed: %E\n"));
2688+ fatal (_("%P: bfd_new_link_order failed: %E\n"));
2689
2690 if ((i->flags & SEC_NEVER_LOAD) != 0
2691 && (i->flags & SEC_DEBUGGING) == 0)
2692@@ -265,7 +265,7 @@ build_link_order (lang_statement_union_type *statement)
2693 link_order = bfd_new_link_order (link_info.output_bfd,
2694 output_section);
2695 if (link_order == NULL)
2696- einfo (_("%F%P: bfd_new_link_order failed: %E\n"));
2697+ fatal (_("%P: bfd_new_link_order failed: %E\n"));
2698 link_order->type = bfd_data_link_order;
2699 link_order->size = statement->padding_statement.size;
2700 link_order->offset = statement->padding_statement.output_offset;
2701@@ -334,8 +334,7 @@ clone_section (bfd *abfd, asection *s, const char *name, int *count)
2702 if (startswith (name, ".stab")
2703 || strcmp (name, "$GDB_SYMBOLS$") == 0)
2704 {
2705- einfo (_ ("%F%P: cannot create split section name for %s\n"), name);
2706- /* Silence gcc warnings. einfo exits, so we never reach here. */
2707+ fatal (_ ("%P: cannot create split section name for %s\n"), name);
2708 return NULL;
2709 }
2710 tname[5] = 0;
2711@@ -346,8 +345,7 @@ clone_section (bfd *abfd, asection *s, const char *name, int *count)
2712 || (h = bfd_link_hash_lookup (link_info.hash,
2713 sname, true, true, false)) == NULL)
2714 {
2715- einfo (_("%F%P: clone section failed: %E\n"));
2716- /* Silence gcc warnings. einfo exits, so we never reach here. */
2717+ fatal (_("%P: clone section failed: %E\n"));
2718 return NULL;
2719 }
2720 free (tname);
2721@@ -554,7 +552,7 @@ ldwrite (void)
2722 out. */
2723
2724 if (bfd_get_error () != bfd_error_no_error)
2725- einfo (_("%F%P: final link failed: %E\n"));
2726+ fatal (_("%P: final link failed: %E\n"));
2727 else
2728 xexit (1);
2729 }
2730diff --git a/ld/lexsup.c b/ld/lexsup.c
2731index e9939000..00346348 100644
2732--- a/ld/lexsup.c
2733+++ b/ld/lexsup.c
2734@@ -810,7 +810,8 @@ parse_args (unsigned argc, char **argv)
2735 && optc != argv[last_optind][1])
2736 {
2737 if (optarg)
2738- einfo (_("%F%P: Error: unable to disambiguate: %s (did you mean -%s ?)\n"),
2739+ fatal (_("%P: Error: unable to disambiguate: "
2740+ "%s (did you mean -%s ?)\n"),
2741 argv[last_optind], argv[last_optind]);
2742 else
2743 einfo (_("%P: Warning: grouped short command line options are deprecated: %s\n"), argv[last_optind]);
2744@@ -850,7 +851,7 @@ parse_args (unsigned argc, char **argv)
2745 /* Fall through. */
2746
2747 default:
2748- einfo (_("%F%P: use the --help option for usage information\n"));
2749+ fatal (_("%P: use the --help option for usage information\n"));
2750 break;
2751
2752 case 1: /* File name. */
2753@@ -869,7 +870,7 @@ parse_args (unsigned argc, char **argv)
2754 || strcmp (optarg, "default") == 0)
2755 input_flags.dynamic = true;
2756 else
2757- einfo (_("%F%P: unrecognized -a option `%s'\n"), optarg);
2758+ fatal (_("%P: unrecognized -a option `%s'\n"), optarg);
2759 break;
2760 case OPTION_ASSERT:
2761 /* FIXME: We just ignore these, but we should handle them. */
2762@@ -882,7 +883,7 @@ parse_args (unsigned argc, char **argv)
2763 else if (strcmp (optarg, "pure-text") == 0)
2764 ;
2765 else
2766- einfo (_("%F%P: unrecognized -assert option `%s'\n"), optarg);
2767+ fatal (_("%P: unrecognized -assert option `%s'\n"), optarg);
2768 break;
2769 case 'A':
2770 ldfile_add_arch (optarg);
2771@@ -926,8 +927,7 @@ parse_args (unsigned argc, char **argv)
2772
2773 style = cplus_demangle_name_to_style (optarg);
2774 if (style == unknown_demangling)
2775- einfo (_("%F%P: unknown demangling style `%s'\n"),
2776- optarg);
2777+ fatal (_("%P: unknown demangling style `%s'\n"), optarg);
2778
2779 cplus_demangle_set_style (style);
2780 }
2781@@ -1034,7 +1034,7 @@ parse_args (unsigned argc, char **argv)
2782 char *end;
2783 g_switch_value = strtoul (optarg, &end, 0);
2784 if (*end)
2785- einfo (_("%F%P: invalid number `%s'\n"), optarg);
2786+ fatal (_("%P: invalid number `%s'\n"), optarg);
2787 }
2788 break;
2789 case 'g':
2790@@ -1130,7 +1130,7 @@ parse_args (unsigned argc, char **argv)
2791 link_info.unresolved_syms_in_shared_libs = RM_IGNORE;
2792 }
2793 else
2794- einfo (_("%F%P: bad --unresolved-symbols option: %s\n"), optarg);
2795+ fatal (_("%P: bad --unresolved-symbols option: %s\n"), optarg);
2796 break;
2797 case OPTION_WARN_UNRESOLVED_SYMBOLS:
2798 link_info.warn_unresolved_syms = true;
2799@@ -1217,7 +1217,7 @@ parse_args (unsigned argc, char **argv)
2800 break;
2801 case OPTION_PLUGIN_OPT:
2802 if (plugin_opt_plugin_arg (optarg))
2803- einfo (_("%F%P: bad -plugin-opt option\n"));
2804+ fatal (_("%P: bad -plugin-opt option\n"));
2805 break;
2806 #endif /* BFD_SUPPORTS_PLUGINS */
2807 case 'q':
2808@@ -1234,11 +1234,11 @@ parse_args (unsigned argc, char **argv)
2809 an error message here. We cannot just make this a warning,
2810 increment optind, and continue because getopt is too confused
2811 and will seg-fault the next time around. */
2812- einfo(_("%F%P: unrecognised option: %s\n"), argv[optind]);
2813+ fatal(_("%P: unrecognised option: %s\n"), argv[optind]);
2814
2815 if (bfd_link_pic (&link_info))
2816- einfo (_("%F%P: -r and %s may not be used together\n"),
2817- bfd_link_dll (&link_info) ? "-shared" : "-pie");
2818+ fatal (_("%P: -r and %s may not be used together\n"),
2819+ bfd_link_dll (&link_info) ? "-shared" : "-pie");
2820
2821 link_info.type = type_relocatable;
2822 config.build_constructors = false;
2823@@ -1347,7 +1347,7 @@ parse_args (unsigned argc, char **argv)
2824 if (config.has_shared)
2825 {
2826 if (bfd_link_relocatable (&link_info))
2827- einfo (_("%F%P: -r and %s may not be used together\n"),
2828+ fatal (_("%P: -r and %s may not be used together\n"),
2829 "-shared");
2830
2831 link_info.type = type_dll;
2832@@ -1359,7 +1359,7 @@ parse_args (unsigned argc, char **argv)
2833 link_info.unresolved_syms_in_shared_libs = RM_IGNORE;
2834 }
2835 else
2836- einfo (_("%F%P: -shared not supported\n"));
2837+ fatal (_("%P: -shared not supported\n"));
2838 break;
2839 case OPTION_NO_PIE:
2840 link_info.type = type_pde;
2841@@ -1368,12 +1368,12 @@ parse_args (unsigned argc, char **argv)
2842 if (config.has_shared)
2843 {
2844 if (bfd_link_relocatable (&link_info))
2845- einfo (_("%F%P: -r and %s may not be used together\n"), "-pie");
2846+ fatal (_("%P: -r and %s may not be used together\n"), "-pie");
2847
2848 link_info.type = type_pie;
2849 }
2850 else
2851- einfo (_("%F%P: -pie not supported\n"));
2852+ fatal (_("%P: -pie not supported\n"));
2853 break;
2854 case 'h': /* Used on Solaris. */
2855 case OPTION_SONAME:
2856@@ -1390,7 +1390,7 @@ parse_args (unsigned argc, char **argv)
2857 else if (strcmp (optarg, N_("ascending")) == 0)
2858 config.sort_common = sort_ascending;
2859 else
2860- einfo (_("%F%P: invalid common section sorting option: %s\n"),
2861+ fatal (_("%P: invalid common section sorting option: %s\n"),
2862 optarg);
2863 break;
2864 case OPTION_SORT_SECTION:
2865@@ -1399,8 +1399,7 @@ parse_args (unsigned argc, char **argv)
2866 else if (strcmp (optarg, N_("alignment")) == 0)
2867 sort_section = by_alignment;
2868 else
2869- einfo (_("%F%P: invalid section sorting option: %s\n"),
2870- optarg);
2871+ fatal (_("%P: invalid section sorting option: %s\n"), optarg);
2872 break;
2873 case OPTION_STATS:
2874 config.stats = true;
2875@@ -1436,14 +1435,14 @@ parse_args (unsigned argc, char **argv)
2876 /* Check for <something>=<somthing>... */
2877 optarg2 = strchr (optarg, '=');
2878 if (optarg2 == NULL)
2879- einfo (_("%F%P: invalid argument to option"
2880+ fatal (_("%P: invalid argument to option"
2881 " \"--section-start\"\n"));
2882
2883 optarg2++;
2884
2885 /* So far so good. Are all the args present? */
2886 if ((*optarg == '\0') || (*optarg2 == '\0'))
2887- einfo (_("%F%P: missing argument(s) to option"
2888+ fatal (_("%P: missing argument(s) to option"
2889 " \"--section-start\"\n"));
2890
2891 /* We must copy the section name as set_section_start
2892@@ -1487,8 +1486,8 @@ parse_args (unsigned argc, char **argv)
2893 /* Fall through. */
2894 case OPTION_UR:
2895 if (bfd_link_pic (&link_info))
2896- einfo (_("%F%P: -r and %s may not be used together\n"),
2897- bfd_link_dll (&link_info) ? "-shared" : "-pie");
2898+ fatal (_("%P: -r and %s may not be used together\n"),
2899+ bfd_link_dll (&link_info) ? "-shared" : "-pie");
2900
2901 link_info.type = type_relocatable;
2902 config.build_constructors = true;
2903@@ -1518,7 +1517,7 @@ parse_args (unsigned argc, char **argv)
2904 char *end;
2905 int level ATTRIBUTE_UNUSED = strtoul (optarg, &end, 0);
2906 if (*end)
2907- einfo (_("%F%P: invalid number `%s'\n"), optarg);
2908+ fatal (_("%P: invalid number `%s'\n"), optarg);
2909 #if BFD_SUPPORTS_PLUGINS
2910 report_plugin_symbols = level > 1;
2911 #endif /* BFD_SUPPORTS_PLUGINS */
2912@@ -1713,7 +1712,7 @@ parse_args (unsigned argc, char **argv)
2913 break;
2914 case ')':
2915 if (! ingroup)
2916- einfo (_("%F%P: group ended before it began (--help for usage)\n"));
2917+ fatal (_("%P: group ended before it began (--help for usage)\n"));
2918
2919 lang_leave_group ();
2920 ingroup--;
2921@@ -1729,7 +1728,7 @@ parse_args (unsigned argc, char **argv)
2922
2923 case OPTION_REMAP_INPUTS_FILE:
2924 if (! ldfile_add_remap_file (optarg))
2925- einfo (_("%F%P: failed to add remap file %s\n"), optarg);
2926+ fatal (_("%P: failed to add remap file %s\n"), optarg);
2927 break;
2928
2929 case OPTION_REMAP_INPUTS:
2930@@ -1738,7 +1737,7 @@ parse_args (unsigned argc, char **argv)
2931 if (optarg2 == NULL)
2932 /* FIXME: Should we allow --remap-inputs=@myfile as a synonym
2933 for --remap-inputs-file=myfile ? */
2934- einfo (_("%F%P: invalid argument to option --remap-inputs\n"));
2935+ fatal (_("%P: invalid argument to option --remap-inputs\n"));
2936 size_t len = optarg2 - optarg;
2937 char * pattern = xmalloc (len + 1);
2938 memcpy (pattern, optarg, len);
2939@@ -1759,8 +1758,7 @@ parse_args (unsigned argc, char **argv)
2940 char *end;
2941 bfd_size_type cache_size = strtoul (optarg, &end, 0);
2942 if (*end != '\0')
2943- einfo (_("%F%P: invalid cache memory size: %s\n"),
2944- optarg);
2945+ fatal (_("%P: invalid cache memory size: %s\n"), optarg);
2946 link_info.max_cache_size = cache_size;
2947 }
2948 break;
2949@@ -1785,7 +1783,7 @@ parse_args (unsigned argc, char **argv)
2950
2951 case OPTION_POP_STATE:
2952 if (input_flags.pushed == NULL)
2953- einfo (_("%F%P: no state pushed before popping\n"));
2954+ fatal (_("%P: no state pushed before popping\n"));
2955 else
2956 {
2957 struct lang_input_statement_flags *oldp = input_flags.pushed;
2958@@ -1808,7 +1806,7 @@ parse_args (unsigned argc, char **argv)
2959 else if (strcasecmp (optarg, "discard") == 0)
2960 config.orphan_handling = orphan_handling_discard;
2961 else
2962- einfo (_("%F%P: invalid argument to option"
2963+ fatal (_("%P: invalid argument to option"
2964 " \"--orphan-handling\"\n"));
2965 break;
2966
2967@@ -1853,7 +1851,7 @@ parse_args (unsigned argc, char **argv)
2968 else if (strcmp (optarg, "share-duplicated") == 0)
2969 config.ctf_share_duplicated = true;
2970 else
2971- einfo (_("%F%P: bad --ctf-share-types option: %s\n"), optarg);
2972+ fatal (_("%P: bad --ctf-share-types option: %s\n"), optarg);
2973 break;
2974 }
2975 }
2976@@ -2048,7 +2046,7 @@ parse_args (unsigned argc, char **argv)
2977 if (config.no_section_header)
2978 {
2979 if (bfd_link_relocatable (&link_info))
2980- einfo (_("%F%P: -r and -z nosectionheader may not be used together\n"));
2981+ fatal (_("%P: -r and -z nosectionheader may not be used together\n"));
2982
2983 link_info.strip = strip_all;
2984 }
2985@@ -2056,9 +2054,9 @@ parse_args (unsigned argc, char **argv)
2986 if (!bfd_link_dll (&link_info))
2987 {
2988 if (command_line.filter_shlib)
2989- einfo (_("%F%P: -F may not be used without -shared\n"));
2990+ fatal (_("%P: -F may not be used without -shared\n"));
2991 if (command_line.auxiliary_filters)
2992- einfo (_("%F%P: -f may not be used without -shared\n"));
2993+ fatal (_("%P: -f may not be used without -shared\n"));
2994 }
2995
2996 /* Treat ld -r -s as ld -r -S -x (i.e., strip all local symbols). I
2997@@ -2099,7 +2097,7 @@ set_section_start (char *sect, char *valstr)
2998 const char *end;
2999 bfd_vma val = bfd_scan_vma (valstr, &end, 16);
3000 if (*end)
3001- einfo (_("%F%P: invalid hex number `%s'\n"), valstr);
3002+ fatal (_("%P: invalid hex number `%s'\n"), valstr);
3003 lang_section_start (sect, exp_intop (val), NULL);
3004 }
3005
3006@@ -2112,7 +2110,7 @@ set_segment_start (const char *section, char *valstr)
3007
3008 bfd_vma val = bfd_scan_vma (valstr, &end, 16);
3009 if (*end)
3010- einfo (_("%F%P: invalid hex number `%s'\n"), valstr);
3011+ fatal (_("%P: invalid hex number `%s'\n"), valstr);
3012 /* If we already have an entry for this segment, update the existing
3013 value. */
3014 name = section + 1;
3015diff --git a/ld/mri.c b/ld/mri.c
3016index 766f3174..7c8e59fa 100644
3017--- a/ld/mri.c
3018+++ b/ld/mri.c
3019@@ -288,7 +288,7 @@ mri_format (const char *name)
3020 lang_add_output_format ("srec", NULL, NULL, 1);
3021
3022 else
3023- einfo (_("%F%P: unknown format type %s\n"), name);
3024+ fatal (_("%P: unknown format type %s\n"), name);
3025 }
3026
3027 void
3028diff --git a/ld/pe-dll.c b/ld/pe-dll.c
3029index 95eef84f..800d00c8 100644
3030--- a/ld/pe-dll.c
3031+++ b/ld/pe-dll.c
3032@@ -756,7 +756,7 @@ process_def_file_and_drectve (bfd *abfd ATTRIBUTE_UNUSED, struct bfd_link_info *
3033
3034 if (!bfd_generic_link_read_symbols (b))
3035 {
3036- einfo (_("%F%P: %pB: could not read symbols: %E\n"), b);
3037+ fatal (_("%P: %pB: could not read symbols: %E\n"), b);
3038 return;
3039 }
3040
3041@@ -1048,7 +1048,7 @@ build_filler_bfd (bool include_edata)
3042 bfd_get_arch (link_info.output_bfd),
3043 bfd_get_mach (link_info.output_bfd)))
3044 {
3045- einfo (_("%F%P: can not create BFD: %E\n"));
3046+ fatal (_("%P: can not create BFD: %E\n"));
3047 return;
3048 }
3049
3050@@ -1326,7 +1326,7 @@ pe_walk_relocs (struct bfd_link_info *info,
3051
3052 if (!bfd_generic_link_read_symbols (b))
3053 {
3054- einfo (_("%F%P: %pB: could not read symbols: %E\n"), b);
3055+ fatal (_("%P: %pB: could not read symbols: %E\n"), b);
3056 return;
3057 }
3058
3059@@ -1407,7 +1407,7 @@ pe_find_data_imports (const char *symhead,
3060 if (!bfd_hash_table_init (import_hash,
3061 bfd_hash_newfunc,
3062 sizeof (struct bfd_hash_entry)))
3063- einfo (_("%F%P: bfd_hash_table_init failed: %E\n"));
3064+ fatal (_("%P: bfd_hash_table_init failed: %E\n"));
3065 }
3066 else
3067 import_hash = NULL;
3068@@ -1447,7 +1447,7 @@ pe_find_data_imports (const char *symhead,
3069
3070 if (!bfd_generic_link_read_symbols (b))
3071 {
3072- einfo (_("%F%P: %pB: could not read symbols: %E\n"), b);
3073+ fatal (_("%P: %pB: could not read symbols: %E\n"), b);
3074 return;
3075 }
3076
3077@@ -1549,7 +1549,7 @@ generate_reloc (bfd *abfd, struct bfd_link_info *info)
3078
3079 if (!bfd_generic_link_read_symbols (b))
3080 {
3081- einfo (_("%F%P: %pB: could not read symbols: %E\n"), b);
3082+ fatal (_("%P: %pB: could not read symbols: %E\n"), b);
3083 return;
3084 }
3085
3086diff --git a/ld/plugin.c b/ld/plugin.c
3087index e9828690..0a99d406 100644
3088--- a/ld/plugin.c
3089+++ b/ld/plugin.c
3090@@ -252,7 +252,7 @@ plugin_opt_plugin (const char *plugin)
3091 newplug->name = plugin;
3092 newplug->dlhandle = dlopen (plugin, RTLD_NOW);
3093 if (!newplug->dlhandle)
3094- einfo (_("%F%P: %s: error loading plugin: %s\n"), plugin, dlerror ());
3095+ fatal (_("%P: %s: error loading plugin: %s\n"), plugin, dlerror ());
3096
3097 /* Check if plugin has been loaded already. */
3098 while (curplug)
3099@@ -345,7 +345,7 @@ plugin_get_ir_dummy_bfd (const char *name, bfd *srctemplate)
3100 }
3101 }
3102 report_error:
3103- einfo (_("%F%P: could not create dummy IR bfd: %E\n"));
3104+ fatal (_("%P: could not create dummy IR bfd: %E\n"));
3105 return NULL;
3106 }
3107
3108@@ -426,7 +426,7 @@ asymbol_from_plugin_symbol (bfd *abfd, asymbol *asym,
3109 unsigned char visibility;
3110
3111 if (!elfsym)
3112- einfo (_("%F%P: %s: non-ELF symbol in ELF BFD!\n"), asym->name);
3113+ fatal (_("%P: %s: non-ELF symbol in ELF BFD!\n"), asym->name);
3114
3115 if (ldsym->def == LDPK_COMMON)
3116 {
3117@@ -437,7 +437,7 @@ asymbol_from_plugin_symbol (bfd *abfd, asymbol *asym,
3118 switch (ldsym->visibility)
3119 {
3120 default:
3121- einfo (_("%F%P: unknown ELF symbol visibility: %d!\n"),
3122+ fatal (_("%P: unknown ELF symbol visibility: %d!\n"),
3123 ldsym->visibility);
3124 return LDPS_ERR;
3125
3126@@ -555,7 +555,7 @@ get_view (const void *handle, const void **viewp)
3127
3128 /* FIXME: einfo should support %lld. */
3129 if ((off_t) size != input->filesize)
3130- einfo (_("%F%P: unsupported input file size: %s (%ld bytes)\n"),
3131+ fatal (_("%P: unsupported input file size: %s (%ld bytes)\n"),
3132 input->name, (long) input->filesize);
3133
3134 /* Check the cached view buffer. */
3135@@ -826,7 +826,7 @@ get_symbols (const void *handle, int nsyms, struct ld_plugin_symbol *syms,
3136 && blhe->type != bfd_link_hash_common)
3137 {
3138 /* We should not have a new, indirect or warning symbol here. */
3139- einfo (_("%F%P: %s: plugin symbol table corrupt (sym type %d)\n"),
3140+ fatal (_("%P: %s: plugin symbol table corrupt (sym type %d)\n"),
3141 called_plugin->name, blhe->type);
3142 }
3143
3144@@ -978,13 +978,14 @@ message (int level, const char *format, ...)
3145 case LDPL_ERROR:
3146 default:
3147 {
3148- char *newfmt = concat (level == LDPL_FATAL ? "%F" : "%X",
3149- _("%P: error: "), format, "\n",
3150+ char *newfmt = concat (_("%X%P: error: "), format, "\n",
3151 (const char *) NULL);
3152 fflush (stdout);
3153 vfinfo (stderr, newfmt, args, true);
3154 fflush (stderr);
3155 free (newfmt);
3156+ if (level == LDPL_FATAL)
3157+ fatal ("");
3158 }
3159 break;
3160 }
3161@@ -1127,14 +1128,14 @@ plugin_load_plugins (void)
3162 if (!onloadfn)
3163 onloadfn = (ld_plugin_onload) dlsym (curplug->dlhandle, "_onload");
3164 if (!onloadfn)
3165- einfo (_("%F%P: %s: error loading plugin: %s\n"),
3166+ fatal (_("%P: %s: error loading plugin: %s\n"),
3167 curplug->name, dlerror ());
3168 set_tv_plugin_args (curplug, &my_tv[tv_header_size]);
3169 called_plugin = curplug;
3170 rv = (*onloadfn) (my_tv);
3171 called_plugin = NULL;
3172 if (rv != LDPS_OK)
3173- einfo (_("%F%P: %s: plugin error: %d\n"), curplug->name, rv);
3174+ fatal (_("%P: %s: plugin error: %d\n"), curplug->name, rv);
3175 curplug = curplug->next;
3176 }
3177
3178@@ -1193,7 +1194,7 @@ plugin_strdup (bfd *abfd, const char *str)
3179 strlength = strlen (str) + 1;
3180 copy = bfd_alloc (abfd, strlength);
3181 if (copy == NULL)
3182- einfo (_("%F%P: plugin_strdup failed to allocate memory: %s\n"),
3183+ fatal (_("%P: plugin_strdup failed to allocate memory: %s\n"),
3184 bfd_get_error ());
3185 memcpy (copy, str, strlength);
3186 return copy;
3187@@ -1230,7 +1231,7 @@ plugin_object_p (bfd *ibfd, bool known_used)
3188
3189 input = bfd_alloc (abfd, sizeof (*input));
3190 if (input == NULL)
3191- einfo (_("%F%P: plugin failed to allocate memory for input: %s\n"),
3192+ fatal (_("%P: plugin failed to allocate memory for input: %s\n"),
3193 bfd_get_error ());
3194
3195 if (!bfd_plugin_open_input (ibfd, &file))
3196@@ -1258,7 +1259,7 @@ plugin_object_p (bfd *ibfd, bool known_used)
3197 claimed = 0;
3198
3199 if (plugin_call_claim_file (&file, &claimed, known_used))
3200- einfo (_("%F%P: %s: plugin reported error claiming file\n"),
3201+ fatal (_("%P: %s: plugin reported error claiming file\n"),
3202 plugin_error_plugin ());
3203
3204 if (input->fd != -1
3205--
32062.43.0
3207
diff --git a/meta/recipes-devtools/binutils/binutils/0020-CVE-2025-1153-2.patch b/meta/recipes-devtools/binutils/binutils/0020-CVE-2025-1153-2.patch
new file mode 100644
index 0000000000..2b473914b7
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/0020-CVE-2025-1153-2.patch
@@ -0,0 +1,840 @@
1From 31e9e2e8d1090da0c1da97a70005d8841fff8ddd Mon Sep 17 00:00:00 2001
2From: Alan Modra <amodra@gmail.com>
3Date: Sun, 16 Feb 2025 23:34:55 +1030
4Subject: [PATCH] PR 32603, more ld -w misbehaviour
5
6Commit 8d97c1a53f3d claimed to replace all einfo calls using %F with
7a call to fatal. It did so only for the ld/ directory. This patch
8adds a "fatal" to linker callbacks, and replaces those calls in bfd/
9too.
10
11Upstream-Status: Backport [https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=31e9e2e8d1090da0c1da97a70005d8841fff8ddd]
12CVE: CVE-2025-1153
13
14Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
15---
16 bfd/archive.c | 4 ++--
17 bfd/coff-aarch64.c | 4 +---
18 bfd/coffgen.c | 2 +-
19 bfd/elf-ifunc.c | 4 ++--
20 bfd/elf-m10300.c | 4 ++--
21 bfd/elf-properties.c | 4 ++--
22 bfd/elf.c | 4 ++--
23 bfd/elf32-arm.c | 2 +-
24 bfd/elf32-avr.c | 4 ++--
25 bfd/elf32-csky.c | 2 +-
26 bfd/elf32-frv.c | 4 ++--
27 bfd/elf32-hppa.c | 6 ++---
28 bfd/elf32-i386.c | 4 ++--
29 bfd/elf32-m68hc11.c | 2 +-
30 bfd/elf32-m68hc12.c | 2 +-
31 bfd/elf32-metag.c | 2 +-
32 bfd/elf32-spu.c | 5 ++--
33 bfd/elf64-ia64-vms.c | 4 ++--
34 bfd/elf64-ppc.c | 4 ++--
35 bfd/elf64-x86-64.c | 14 +++++------
36 bfd/elflink.c | 8 +++----
37 bfd/elfnn-aarch64.c | 6 ++---
38 bfd/elfnn-ia64.c | 4 ++--
39 bfd/elfnn-kvx.c | 2 +-
40 bfd/elfnn-loongarch.c | 4 ++--
41 bfd/elfxx-aarch64.c | 6 ++---
42 bfd/elfxx-sparc.c | 4 ++--
43 bfd/elfxx-x86.c | 56 +++++++++++++++++++++----------------------
44 bfd/linker.c | 2 +-
45 bfd/reloc.c | 4 ++--
46 bfd/reloc16.c | 4 ++--
47 bfd/xcofflink.c | 2 +-
48 include/bfdlink.h | 3 +++
49 ld/ldmain.c | 1 +
50 34 files changed, 94 insertions(+), 93 deletions(-)
51
52diff --git a/bfd/archive.c b/bfd/archive.c
53index 9f3fbce9..0f617276 100644
54--- a/bfd/archive.c
55+++ b/bfd/archive.c
56@@ -749,8 +749,8 @@ _bfd_get_elt_at_filepos (bfd *archive, file_ptr filepos,
57 case bfd_error_system_call:
58 if (info != NULL)
59 {
60- info->callbacks->einfo
61- (_("%F%P: %pB(%s): error opening thin archive member: %E\n"),
62+ info->callbacks->fatal
63+ (_("%P: %pB(%s): error opening thin archive member: %E\n"),
64 archive, filename);
65 break;
66 }
67diff --git a/bfd/coff-aarch64.c b/bfd/coff-aarch64.c
68index 825963c0..53f539e0 100644
69--- a/bfd/coff-aarch64.c
70+++ b/bfd/coff-aarch64.c
71@@ -876,10 +876,8 @@ coff_pe_aarch64_relocate_section (bfd *output_bfd,
72 }
73
74 default:
75- info->callbacks->einfo (_("%F%P: Unhandled relocation type %u\n"),
76+ info->callbacks->fatal (_("%P: Unhandled relocation type %u\n"),
77 rel->r_type);
78- BFD_FAIL ();
79- return false;
80 }
81 }
82
83diff --git a/bfd/coffgen.c b/bfd/coffgen.c
84index cc1c6557..3270cd2f 100644
85--- a/bfd/coffgen.c
86+++ b/bfd/coffgen.c
87@@ -2793,7 +2793,7 @@ _bfd_coff_section_already_linked (bfd *abfd,
88
89 /* This is the first section with this name. Record it. */
90 if (!bfd_section_already_linked_table_insert (already_linked_list, sec))
91- info->callbacks->einfo (_("%F%P: already_linked_table: %E\n"));
92+ info->callbacks->fatal (_("%P: already_linked_table: %E\n"));
93 return false;
94 }
95
96diff --git a/bfd/elf-ifunc.c b/bfd/elf-ifunc.c
97index 42a3bcdf..58a1ca5e 100644
98--- a/bfd/elf-ifunc.c
99+++ b/bfd/elf-ifunc.c
100@@ -139,9 +139,9 @@ _bfd_elf_allocate_ifunc_dyn_relocs (struct bfd_link_info *info,
101 || info->export_dynamic)
102 && h->pointer_equality_needed)
103 {
104- info->callbacks->einfo
105+ info->callbacks->fatal
106 /* xgettext:c-format */
107- (_("%F%P: dynamic STT_GNU_IFUNC symbol `%s' with pointer "
108+ (_("%P: dynamic STT_GNU_IFUNC symbol `%s' with pointer "
109 "equality in `%pB' can not be used when making an "
110 "executable; recompile with -fPIE and relink with -pie\n"),
111 h->root.root.string,
112diff --git a/bfd/elf-m10300.c b/bfd/elf-m10300.c
113index 24ea43a7..cf6bb13b 100644
114--- a/bfd/elf-m10300.c
115+++ b/bfd/elf-m10300.c
116@@ -2646,8 +2646,8 @@ mn10300_elf_relax_section (bfd *abfd,
117 bfd_vma align_gap_adjustment;
118
119 if (bfd_link_relocatable (link_info))
120- (*link_info->callbacks->einfo)
121- (_("%P%F: --relax and -r may not be used together\n"));
122+ link_info->callbacks->fatal
123+ (_("%P: --relax and -r may not be used together\n"));
124
125 /* Assume nothing changes. */
126 *again = false;
127diff --git a/bfd/elf-properties.c b/bfd/elf-properties.c
128index ee8bd37f..a4591472 100644
129--- a/bfd/elf-properties.c
130+++ b/bfd/elf-properties.c
131@@ -665,11 +665,11 @@ _bfd_elf_link_setup_gnu_properties (struct bfd_link_info *info)
132 | SEC_HAS_CONTENTS
133 | SEC_DATA));
134 if (sec == NULL)
135- info->callbacks->einfo (_("%F%P: failed to create GNU property section\n"));
136+ info->callbacks->fatal (_("%P: failed to create GNU property section\n"));
137
138 if (!bfd_set_section_alignment (sec,
139 elfclass == ELFCLASS64 ? 3 : 2))
140- info->callbacks->einfo (_("%F%pA: failed to align section\n"),
141+ info->callbacks->fatal (_("%pA: failed to align section\n"),
142 sec);
143
144 elf_section_type (sec) = SHT_NOTE;
145diff --git a/bfd/elf.c b/bfd/elf.c
146index 8bffd3c5..8e4e1e7f 100644
147--- a/bfd/elf.c
148+++ b/bfd/elf.c
149@@ -5188,8 +5188,8 @@ _bfd_elf_map_sections_to_segments (bfd *abfd,
150 && need_layout != NULL
151 && bed->size_relative_relocs
152 && !bed->size_relative_relocs (info, need_layout))
153- info->callbacks->einfo
154- (_("%F%P: failed to size relative relocations\n"));
155+ info->callbacks->fatal
156+ (_("%P: failed to size relative relocations\n"));
157 }
158
159 if (no_user_phdrs && bfd_count_sections (abfd) != 0)
160diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
161index 4ad7c354..b4a822f1 100644
162--- a/bfd/elf32-arm.c
163+++ b/bfd/elf32-arm.c
164@@ -5053,7 +5053,7 @@ arm_build_one_stub (struct bfd_hash_entry *gen_entry,
165 section. The user should fix his linker script. */
166 if (stub_entry->target_section->output_section == NULL
167 && info->non_contiguous_regions)
168- info->callbacks->einfo (_("%F%P: Could not assign `%pA' to an output section. "
169+ info->callbacks->fatal (_("%P: Could not assign `%pA' to an output section. "
170 "Retry without --enable-non-contiguous-regions.\n"),
171 stub_entry->target_section);
172
173diff --git a/bfd/elf32-avr.c b/bfd/elf32-avr.c
174index 20e03bd7..912f7533 100644
175--- a/bfd/elf32-avr.c
176+++ b/bfd/elf32-avr.c
177@@ -2484,8 +2484,8 @@ elf32_avr_relax_section (bfd *abfd,
178 shrinkable = false;
179
180 if (bfd_link_relocatable (link_info))
181- (*link_info->callbacks->einfo)
182- (_("%P%F: --relax and -r may not be used together\n"));
183+ link_info->callbacks->fatal
184+ (_("%P: --relax and -r may not be used together\n"));
185
186 htab = avr_link_hash_table (link_info);
187 if (htab == NULL)
188diff --git a/bfd/elf32-csky.c b/bfd/elf32-csky.c
189index 9479705d..edff65a9 100644
190--- a/bfd/elf32-csky.c
191+++ b/bfd/elf32-csky.c
192@@ -3728,7 +3728,7 @@ csky_build_one_stub (struct bfd_hash_entry *gen_entry,
193 section. The user should fix his linker script. */
194 if (stub_entry->target_section->output_section == NULL
195 && info->non_contiguous_regions)
196- info->callbacks->einfo (_("%F%P: Could not assign `%pA' to an output section. "
197+ info->callbacks->fatal (_("%P: Could not assign `%pA' to an output section. "
198 "Retry without --enable-non-contiguous-regions.\n"),
199 stub_entry->target_section);
200
201diff --git a/bfd/elf32-frv.c b/bfd/elf32-frv.c
202index 5b66b074..245db7c2 100644
203--- a/bfd/elf32-frv.c
204+++ b/bfd/elf32-frv.c
205@@ -5617,8 +5617,8 @@ elf32_frvfdpic_relax_section (bfd *abfd ATTRIBUTE_UNUSED, asection *sec,
206 struct _frvfdpic_dynamic_got_plt_info gpinfo;
207
208 if (bfd_link_relocatable (info))
209- (*info->callbacks->einfo)
210- (_("%P%F: --relax and -r may not be used together\n"));
211+ info->callbacks->fatal
212+ (_("%P: --relax and -r may not be used together\n"));
213
214 /* If we return early, we didn't change anything. */
215 *again = false;
216diff --git a/bfd/elf32-hppa.c b/bfd/elf32-hppa.c
217index c2a7ad98..f1e67a06 100644
218--- a/bfd/elf32-hppa.c
219+++ b/bfd/elf32-hppa.c
220@@ -729,7 +729,7 @@ hppa_build_one_stub (struct bfd_hash_entry *bh, void *in_arg)
221 section. The user should fix his linker script. */
222 if (hsh->target_section->output_section == NULL
223 && info->non_contiguous_regions)
224- info->callbacks->einfo (_("%F%P: Could not assign `%pA' to an output "
225+ info->callbacks->fatal (_("%P: Could not assign `%pA' to an output "
226 "section. Retry without "
227 "--enable-non-contiguous-regions.\n"),
228 hsh->target_section);
229@@ -758,7 +758,7 @@ hppa_build_one_stub (struct bfd_hash_entry *bh, void *in_arg)
230 section. The user should fix his linker script. */
231 if (hsh->target_section->output_section == NULL
232 && info->non_contiguous_regions)
233- info->callbacks->einfo (_("%F%P: Could not assign `%pA' to an output "
234+ info->callbacks->fatal (_("%P: Could not assign `%pA' to an output "
235 "section. Retry without "
236 "--enable-non-contiguous-regions.\n"),
237 hsh->target_section);
238@@ -839,7 +839,7 @@ hppa_build_one_stub (struct bfd_hash_entry *bh, void *in_arg)
239 section. The user should fix his linker script. */
240 if (hsh->target_section->output_section == NULL
241 && info->non_contiguous_regions)
242- info->callbacks->einfo (_("%F%P: Could not assign `%pA' to an output "
243+ info->callbacks->fatal (_("%P: Could not assign `%pA' to an output "
244 "section. Retry without "
245 "--enable-non-contiguous-regions.\n"),
246 hsh->target_section);
247diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c
248index e2f88a11..1637e39f 100644
249--- a/bfd/elf32-i386.c
250+++ b/bfd/elf32-i386.c
251@@ -4092,8 +4092,8 @@ elf_i386_finish_dynamic_sections (bfd *output_bfd,
252 {
253 if (bfd_is_abs_section (htab->elf.splt->output_section))
254 {
255- info->callbacks->einfo
256- (_("%F%P: discarded output section: `%pA'\n"),
257+ info->callbacks->fatal
258+ (_("%P: discarded output section: `%pA'\n"),
259 htab->elf.splt);
260 return false;
261 }
262diff --git a/bfd/elf32-m68hc11.c b/bfd/elf32-m68hc11.c
263index 5fc611f5..6f705718 100644
264--- a/bfd/elf32-m68hc11.c
265+++ b/bfd/elf32-m68hc11.c
266@@ -419,7 +419,7 @@ m68hc11_elf_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
267 section. The user should fix his linker script. */
268 if (stub_entry->target_section->output_section == NULL
269 && info->non_contiguous_regions)
270- info->callbacks->einfo (_("%F%P: Could not assign `%pA' to an output section. "
271+ info->callbacks->fatal (_("%P: Could not assign `%pA' to an output section. "
272 "Retry without --enable-non-contiguous-regions.\n"),
273 stub_entry->target_section);
274
275diff --git a/bfd/elf32-m68hc12.c b/bfd/elf32-m68hc12.c
276index 1be174c0..bdfb9ca5 100644
277--- a/bfd/elf32-m68hc12.c
278+++ b/bfd/elf32-m68hc12.c
279@@ -539,7 +539,7 @@ m68hc12_elf_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
280 section. The user should fix his linker script. */
281 if (stub_entry->target_section->output_section == NULL
282 && info->non_contiguous_regions)
283- info->callbacks->einfo (_("%F%P: Could not assign `%pA' to an output section. "
284+ info->callbacks->fatal (_("%P: Could not assign `%pA' to an output section. "
285 "Retry without --enable-non-contiguous-regions.\n"),
286 stub_entry->target_section);
287
288diff --git a/bfd/elf32-metag.c b/bfd/elf32-metag.c
289index de14dfe5..49f93cc7 100644
290--- a/bfd/elf32-metag.c
291+++ b/bfd/elf32-metag.c
292@@ -3342,7 +3342,7 @@ metag_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
293 section. The user should fix his linker script. */
294 if (hsh->target_section->output_section == NULL
295 && info->non_contiguous_regions)
296- info->callbacks->einfo (_("%F%P: Could not assign `%pA' to an output section. "
297+ info->callbacks->fatal (_("%P: Could not assign `%pA' to an output section. "
298 "Retry without --enable-non-contiguous-regions.\n"),
299 hsh->target_section);
300
301diff --git a/bfd/elf32-spu.c b/bfd/elf32-spu.c
302index 881d4d8e..dd5d5fbe 100644
303--- a/bfd/elf32-spu.c
304+++ b/bfd/elf32-spu.c
305@@ -4689,8 +4689,7 @@ spu_elf_auto_overlay (struct bfd_link_info *info)
306 file_err:
307 bfd_set_error (bfd_error_system_call);
308 err_exit:
309- info->callbacks->einfo (_("%F%P: auto overlay error: %E\n"));
310- xexit (1);
311+ info->callbacks->fatal (_("%P: auto overlay error: %E\n"));
312 }
313
314 /* Provide an estimate of total stack required. */
315@@ -4743,7 +4742,7 @@ spu_elf_final_link (bfd *output_bfd, struct bfd_link_info *info)
316 info->callbacks->einfo (_("%X%P: stack/lrlive analysis error: %E\n"));
317
318 if (!spu_elf_build_stubs (info))
319- info->callbacks->einfo (_("%F%P: can not build overlay stubs: %E\n"));
320+ info->callbacks->fatal (_("%P: can not build overlay stubs: %E\n"));
321
322 return bfd_elf_final_link (output_bfd, info);
323 }
324diff --git a/bfd/elf64-ia64-vms.c b/bfd/elf64-ia64-vms.c
325index 2f37e90c..b1eaaac0 100644
326--- a/bfd/elf64-ia64-vms.c
327+++ b/bfd/elf64-ia64-vms.c
328@@ -361,8 +361,8 @@ elf64_ia64_relax_section (bfd *abfd, asection *sec,
329 *again = false;
330
331 if (bfd_link_relocatable (link_info))
332- (*link_info->callbacks->einfo)
333- (_("%P%F: --relax and -r may not be used together\n"));
334+ link_info->callbacks->fatal
335+ (_("%P: --relax and -r may not be used together\n"));
336
337 /* Don't even try to relax for non-ELF outputs. */
338 if (!is_elf_hash_table (link_info->hash))
339diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
340index 720d6ac9..7b798732 100644
341--- a/bfd/elf64-ppc.c
342+++ b/bfd/elf64-ppc.c
343@@ -12289,7 +12289,7 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
344 if (stub_entry->target_section != NULL
345 && stub_entry->target_section->output_section == NULL
346 && info->non_contiguous_regions)
347- info->callbacks->einfo (_("%F%P: Could not assign `%pA' to an output section. "
348+ info->callbacks->fatal (_("%P: Could not assign `%pA' to an output section. "
349 "Retry without --enable-non-contiguous-regions.\n"),
350 stub_entry->target_section);
351
352@@ -12297,7 +12297,7 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
353 if (stub_entry->group->stub_sec != NULL
354 && stub_entry->group->stub_sec->output_section == NULL
355 && info->non_contiguous_regions)
356- info->callbacks->einfo (_("%F%P: Could not assign `%pA' to an output section. "
357+ info->callbacks->fatal (_("%P: Could not assign `%pA' to an output section. "
358 "Retry without --enable-non-contiguous-regions.\n"),
359 stub_entry->group->stub_sec);
360
361diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c
362index c3fb375c..a22d57d7 100644
363--- a/bfd/elf64-x86-64.c
364+++ b/bfd/elf64-x86-64.c
365@@ -3706,8 +3706,8 @@ elf_x86_64_relocate_section (bfd *output_bfd,
366 || (roff - 3 + 22) > input_section->size)
367 {
368 corrupt_input:
369- info->callbacks->einfo
370- (_("%F%P: corrupt input: %pB\n"),
371+ info->callbacks->fatal
372+ (_("%P: corrupt input: %pB\n"),
373 input_bfd);
374 return false;
375 }
376@@ -4679,7 +4679,7 @@ elf_x86_64_finish_dynamic_symbol (bfd *output_bfd,
377 /* Check PC-relative offset overflow in PLT entry. */
378 if ((plt_got_pcrel_offset + 0x80000000) > 0xffffffff)
379 /* xgettext:c-format */
380- info->callbacks->einfo (_("%F%pB: PC-relative offset overflow in PLT entry for `%s'\n"),
381+ info->callbacks->fatal (_("%pB: PC-relative offset overflow in PLT entry for `%s'\n"),
382 output_bfd, h->root.root.string);
383
384 bfd_put_32 (output_bfd, plt_got_pcrel_offset,
385@@ -4752,7 +4752,7 @@ elf_x86_64_finish_dynamic_symbol (bfd *output_bfd,
386 will overflow first. */
387 if (plt0_offset > 0x80000000)
388 /* xgettext:c-format */
389- info->callbacks->einfo (_("%F%pB: branch displacement overflow in PLT entry for `%s'\n"),
390+ info->callbacks->fatal (_("%pB: branch displacement overflow in PLT entry for `%s'\n"),
391 output_bfd, h->root.root.string);
392 bfd_put_32 (output_bfd, - plt0_offset,
393 (plt->contents + h->plt.offset
394@@ -4805,7 +4805,7 @@ elf_x86_64_finish_dynamic_symbol (bfd *output_bfd,
395 if ((got_after_plt && got_pcrel_offset < 0)
396 || (!got_after_plt && got_pcrel_offset > 0))
397 /* xgettext:c-format */
398- info->callbacks->einfo (_("%F%pB: PC-relative offset overflow in GOT PLT entry for `%s'\n"),
399+ info->callbacks->fatal (_("%pB: PC-relative offset overflow in GOT PLT entry for `%s'\n"),
400 output_bfd, h->root.root.string);
401
402 bfd_put_32 (output_bfd, got_pcrel_offset,
403@@ -5092,8 +5092,8 @@ elf_x86_64_finish_dynamic_sections (bfd *output_bfd,
404 {
405 if (bfd_is_abs_section (htab->elf.splt->output_section))
406 {
407- info->callbacks->einfo
408- (_("%F%P: discarded output section: `%pA'\n"),
409+ info->callbacks->fatal
410+ (_("%P: discarded output section: `%pA'\n"),
411 htab->elf.splt);
412 return false;
413 }
414diff --git a/bfd/elflink.c b/bfd/elflink.c
415index 8af6898a..dba176cc 100644
416--- a/bfd/elflink.c
417+++ b/bfd/elflink.c
418@@ -12891,8 +12891,8 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info)
419 if (info->enable_dt_relr
420 && bed->finish_relative_relocs
421 && !bed->finish_relative_relocs (info))
422- info->callbacks->einfo
423- (_("%F%P: %pB: failed to finish relative relocations\n"), abfd);
424+ info->callbacks->fatal
425+ (_("%P: %pB: failed to finish relative relocations\n"), abfd);
426
427 /* Since ELF permits relocations to be against local symbols, we
428 must have the local symbols available when we do the relocations.
429@@ -14087,7 +14087,7 @@ _bfd_elf_gc_mark_extra_sections (struct bfd_link_info *info,
430 else if (strcmp (bfd_section_name (isec),
431 "__patchable_function_entries") == 0
432 && elf_linked_to_section (isec) == NULL)
433- info->callbacks->einfo (_("%F%P: %pB(%pA): error: "
434+ info->callbacks->fatal (_("%P: %pB(%pA): error: "
435 "need linked-to section "
436 "for --gc-sections\n"),
437 isec->owner, isec);
438@@ -15264,7 +15264,7 @@ _bfd_elf_section_already_linked (bfd *abfd,
439
440 /* This is the first section with this name. Record it. */
441 if (!bfd_section_already_linked_table_insert (already_linked_list, sec))
442- info->callbacks->einfo (_("%F%P: already_linked_table: %E\n"));
443+ info->callbacks->fatal (_("%P: already_linked_table: %E\n"));
444 return sec->output_section == bfd_abs_section_ptr;
445 }
446
447diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c
448index 109517db..0f454d23 100644
449--- a/bfd/elfnn-aarch64.c
450+++ b/bfd/elfnn-aarch64.c
451@@ -3272,7 +3272,7 @@ aarch64_build_one_stub (struct bfd_hash_entry *gen_entry,
452 section. The user should fix his linker script. */
453 if (stub_entry->target_section->output_section == NULL
454 && info->non_contiguous_regions)
455- info->callbacks->einfo (_("%F%P: Could not assign `%pA' to an output section. "
456+ info->callbacks->fatal (_("%P: Could not assign `%pA' to an output section. "
457 "Retry without "
458 "--enable-non-contiguous-regions.\n"),
459 stub_entry->target_section);
460@@ -9008,9 +9008,9 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
461 asection *s = p->sec->output_section;
462 if (s != NULL && (s->flags & SEC_READONLY) != 0)
463 {
464- info->callbacks->einfo
465+ info->callbacks->fatal
466 /* xgettext:c-format */
467- (_ ("%F%P: %pB: copy relocation against non-copyable "
468+ (_ ("%P: %pB: copy relocation against non-copyable "
469 "protected symbol `%s'\n"),
470 p->sec->owner, h->root.root.string);
471 return false;
472diff --git a/bfd/elfnn-ia64.c b/bfd/elfnn-ia64.c
473index 7081ba1b..41d9e6fe 100644
474--- a/bfd/elfnn-ia64.c
475+++ b/bfd/elfnn-ia64.c
476@@ -361,8 +361,8 @@ elfNN_ia64_relax_section (bfd *abfd, asection *sec,
477 *again = false;
478
479 if (bfd_link_relocatable (link_info))
480- (*link_info->callbacks->einfo)
481- (_("%P%F: --relax and -r may not be used together\n"));
482+ link_info->callbacks->fatal
483+ (_("%P: --relax and -r may not be used together\n"));
484
485 /* Don't even try to relax for non-ELF outputs. */
486 if (!is_elf_hash_table (link_info->hash))
487diff --git a/bfd/elfnn-kvx.c b/bfd/elfnn-kvx.c
488index ae5ed6bf..b752891b 100644
489--- a/bfd/elfnn-kvx.c
490+++ b/bfd/elfnn-kvx.c
491@@ -927,7 +927,7 @@ kvx_build_one_stub (struct bfd_hash_entry *gen_entry,
492 section. The user should fix his linker script. */
493 if (stub_entry->target_section->output_section == NULL
494 && info->non_contiguous_regions)
495- info->callbacks->einfo (_("%F%P: Could not assign '%pA' to an output section. "
496+ info->callbacks->fatal (_("%P: Could not assign '%pA' to an output section. "
497 "Retry without "
498 "--enable-non-contiguous-regions.\n"),
499 stub_entry->target_section);
500diff --git a/bfd/elfnn-loongarch.c b/bfd/elfnn-loongarch.c
501index a7daea67..a8c4226d 100644
502--- a/bfd/elfnn-loongarch.c
503+++ b/bfd/elfnn-loongarch.c
504@@ -1445,9 +1445,9 @@ local_allocate_ifunc_dyn_relocs (struct bfd_link_info *info,
505 || info->export_dynamic)
506 && h->pointer_equality_needed)
507 {
508- info->callbacks->einfo
509+ info->callbacks->fatal
510 /* xgettext:c-format. */
511- (_("%F%P: dynamic STT_GNU_IFUNC symbol `%s' with pointer "
512+ (_("%P: dynamic STT_GNU_IFUNC symbol `%s' with pointer "
513 "equality in `%pB' can not be used when making an "
514 "executable; recompile with -fPIE and relink with -pie\n"),
515 h->root.root.string,
516diff --git a/bfd/elfxx-aarch64.c b/bfd/elfxx-aarch64.c
517index d1279adc..161c8a52 100644
518--- a/bfd/elfxx-aarch64.c
519+++ b/bfd/elfxx-aarch64.c
520@@ -754,12 +754,12 @@ _bfd_aarch64_elf_link_setup_gnu_properties (struct bfd_link_info *info,
521 | SEC_HAS_CONTENTS
522 | SEC_DATA));
523 if (sec == NULL)
524- info->callbacks->einfo (
525- _("%F%P: failed to create GNU property section\n"));
526+ info->callbacks->fatal (
527+ _("%P: failed to create GNU property section\n"));
528
529 align = (bfd_get_mach (ebfd) & bfd_mach_aarch64_ilp32) ? 2 : 3;
530 if (!bfd_set_section_alignment (sec, align))
531- info->callbacks->einfo (_("%F%pA: failed to align section\n"),
532+ info->callbacks->fatal (_("%pA: failed to align section\n"),
533 sec);
534
535 elf_section_type (sec) = SHT_NOTE;
536diff --git a/bfd/elfxx-sparc.c b/bfd/elfxx-sparc.c
537index 6f5062bb..95b1928d 100644
538--- a/bfd/elfxx-sparc.c
539+++ b/bfd/elfxx-sparc.c
540@@ -2680,8 +2680,8 @@ _bfd_sparc_elf_relax_section (bfd *abfd ATTRIBUTE_UNUSED,
541 bool *again)
542 {
543 if (bfd_link_relocatable (link_info))
544- (*link_info->callbacks->einfo)
545- (_("%P%F: --relax and -r may not be used together\n"));
546+ link_info->callbacks->fatal
547+ (_("%P: --relax and -r may not be used together\n"));
548
549 *again = false;
550 sec_do_relax (section) = 1;
551diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c
552index 8c261cf8..606c8905 100644
553--- a/bfd/elfxx-x86.c
554+++ b/bfd/elfxx-x86.c
555@@ -531,9 +531,9 @@ elf_x86_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
556 asection *s = p->sec->output_section;
557 if (s != NULL && (s->flags & SEC_READONLY) != 0)
558 {
559- info->callbacks->einfo
560+ info->callbacks->fatal
561 /* xgettext:c-format */
562- (_("%F%P: %pB: copy relocation against non-copyable "
563+ (_("%P: %pB: copy relocation against non-copyable "
564 "protected symbol `%s' in %pB\n"),
565 p->sec->owner, h->root.root.string,
566 h->root.u.def.section->owner);
567@@ -1030,9 +1030,9 @@ elf_x86_relative_reloc_record_add
568
569 if (relative_reloc->data == NULL)
570 {
571- info->callbacks->einfo
572+ info->callbacks->fatal
573 /* xgettext:c-format */
574- (_("%F%P: %pB: failed to allocate relative reloc record\n"),
575+ (_("%P: %pB: failed to allocate relative reloc record\n"),
576 info->output_bfd);
577 return false;
578 }
579@@ -1388,9 +1388,9 @@ elf64_dt_relr_bitmap_add
580
581 if (bitmap->u.elf64 == NULL)
582 {
583- info->callbacks->einfo
584+ info->callbacks->fatal
585 /* xgettext:c-format */
586- (_("%F%P: %pB: failed to allocate 64-bit DT_RELR bitmap\n"),
587+ (_("%P: %pB: failed to allocate 64-bit DT_RELR bitmap\n"),
588 info->output_bfd);
589 }
590
591@@ -1424,9 +1424,9 @@ elf32_dt_relr_bitmap_add
592
593 if (bitmap->u.elf32 == NULL)
594 {
595- info->callbacks->einfo
596+ info->callbacks->fatal
597 /* xgettext:c-format */
598- (_("%F%P: %pB: failed to allocate 32-bit DT_RELR bitmap\n"),
599+ (_("%P: %pB: failed to allocate 32-bit DT_RELR bitmap\n"),
600 info->output_bfd);
601 }
602
603@@ -1750,9 +1750,9 @@ elf_x86_compute_dl_relr_bitmap
604 *need_layout = true;
605 }
606 else
607- info->callbacks->einfo
608+ info->callbacks->fatal
609 /* xgettext:c-format */
610- (_("%F%P: %pB: size of compact relative reloc section is "
611+ (_("%P: %pB: size of compact relative reloc section is "
612 "changed: new (%lu) != old (%lu)\n"),
613 info->output_bfd, htab->dt_relr_bitmap.count,
614 dt_relr_bitmap_count);
615@@ -1772,9 +1772,9 @@ elf_x86_write_dl_relr_bitmap (struct bfd_link_info *info,
616
617 contents = (unsigned char *) bfd_alloc (sec->owner, size);
618 if (contents == NULL)
619- info->callbacks->einfo
620+ info->callbacks->fatal
621 /* xgettext:c-format */
622- (_("%F%P: %pB: failed to allocate compact relative reloc section\n"),
623+ (_("%P: %pB: failed to allocate compact relative reloc section\n"),
624 info->output_bfd);
625
626 /* Cache the section contents for elf_link_input_bfd. */
627@@ -2219,9 +2219,9 @@ _bfd_elf_x86_valid_reloc_p (asection *input_section,
628 else
629 name = bfd_elf_sym_name (input_section->owner, symtab_hdr,
630 sym, NULL);
631- info->callbacks->einfo
632+ info->callbacks->fatal
633 /* xgettext:c-format */
634- (_("%F%P: %pB: relocation %s against absolute symbol "
635+ (_("%P: %pB: relocation %s against absolute symbol "
636 "`%s' in section `%pA' is disallowed\n"),
637 input_section->owner, internal_reloc.howto->name, name,
638 input_section);
639@@ -3429,9 +3429,9 @@ _bfd_x86_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
640 s = p->sec->output_section;
641 if (s != NULL && (s->flags & SEC_READONLY) != 0)
642 {
643- info->callbacks->einfo
644+ info->callbacks->fatal
645 /* xgettext:c-format */
646- (_("%F%P: %pB: copy relocation against non-copyable "
647+ (_("%P: %pB: copy relocation against non-copyable "
648 "protected symbol `%s' in %pB\n"),
649 p->sec->owner, h->root.root.string,
650 h->root.u.def.section->owner);
651@@ -4138,12 +4138,12 @@ _bfd_x86_elf_link_setup_gnu_properties
652 | SEC_HAS_CONTENTS
653 | SEC_DATA));
654 if (sec == NULL)
655- info->callbacks->einfo (_("%F%P: failed to create GNU property section\n"));
656+ info->callbacks->fatal (_("%P: failed to create GNU property section\n"));
657
658 if (!bfd_set_section_alignment (sec, class_align))
659 {
660 error_alignment:
661- info->callbacks->einfo (_("%F%pA: failed to align section\n"),
662+ info->callbacks->fatal (_("%pA: failed to align section\n"),
663 sec);
664 }
665
666@@ -4404,7 +4404,7 @@ _bfd_x86_elf_link_setup_gnu_properties
667 && !elf_vxworks_create_dynamic_sections (dynobj, info,
668 &htab->srelplt2))
669 {
670- info->callbacks->einfo (_("%F%P: failed to create VxWorks dynamic sections\n"));
671+ info->callbacks->fatal (_("%P: failed to create VxWorks dynamic sections\n"));
672 return pbfd;
673 }
674
675@@ -4413,7 +4413,7 @@ _bfd_x86_elf_link_setup_gnu_properties
676 don't need to do it in check_relocs. */
677 if (htab->elf.sgot == NULL
678 && !_bfd_elf_create_got_section (dynobj, info))
679- info->callbacks->einfo (_("%F%P: failed to create GOT sections\n"));
680+ info->callbacks->fatal (_("%P: failed to create GOT sections\n"));
681
682 got_align = (bed->target_id == X86_64_ELF_DATA) ? 3 : 2;
683
684@@ -4431,7 +4431,7 @@ _bfd_x86_elf_link_setup_gnu_properties
685 /* Create the ifunc sections here so that check_relocs can be
686 simplified. */
687 if (!_bfd_elf_create_ifunc_sections (dynobj, info))
688- info->callbacks->einfo (_("%F%P: failed to create ifunc sections\n"));
689+ info->callbacks->fatal (_("%P: failed to create ifunc sections\n"));
690
691 plt_alignment = bfd_log2 (htab->plt.plt_entry_size);
692
693@@ -4468,7 +4468,7 @@ _bfd_x86_elf_link_setup_gnu_properties
694 ".plt.got",
695 pltflags);
696 if (sec == NULL)
697- info->callbacks->einfo (_("%F%P: failed to create GOT PLT section\n"));
698+ info->callbacks->fatal (_("%P: failed to create GOT PLT section\n"));
699
700 if (!bfd_set_section_alignment (sec, non_lazy_plt_alignment))
701 goto error_alignment;
702@@ -4487,7 +4487,7 @@ _bfd_x86_elf_link_setup_gnu_properties
703 ".plt.sec",
704 pltflags);
705 if (sec == NULL)
706- info->callbacks->einfo (_("%F%P: failed to create IBT-enabled PLT section\n"));
707+ info->callbacks->fatal (_("%P: failed to create IBT-enabled PLT section\n"));
708
709 if (!bfd_set_section_alignment (sec, plt_alignment))
710 goto error_alignment;
711@@ -4507,7 +4507,7 @@ _bfd_x86_elf_link_setup_gnu_properties
712 ".eh_frame",
713 flags);
714 if (sec == NULL)
715- info->callbacks->einfo (_("%F%P: failed to create PLT .eh_frame section\n"));
716+ info->callbacks->fatal (_("%P: failed to create PLT .eh_frame section\n"));
717
718 if (!bfd_set_section_alignment (sec, class_align))
719 goto error_alignment;
720@@ -4520,7 +4520,7 @@ _bfd_x86_elf_link_setup_gnu_properties
721 ".eh_frame",
722 flags);
723 if (sec == NULL)
724- info->callbacks->einfo (_("%F%P: failed to create GOT PLT .eh_frame section\n"));
725+ info->callbacks->fatal (_("%P: failed to create GOT PLT .eh_frame section\n"));
726
727 if (!bfd_set_section_alignment (sec, class_align))
728 goto error_alignment;
729@@ -4534,7 +4534,7 @@ _bfd_x86_elf_link_setup_gnu_properties
730 ".eh_frame",
731 flags);
732 if (sec == NULL)
733- info->callbacks->einfo (_("%F%P: failed to create the second PLT .eh_frame section\n"));
734+ info->callbacks->fatal (_("%P: failed to create the second PLT .eh_frame section\n"));
735
736 if (!bfd_set_section_alignment (sec, class_align))
737 goto error_alignment;
738@@ -4554,7 +4554,7 @@ _bfd_x86_elf_link_setup_gnu_properties
739 ".sframe",
740 flags);
741 if (sec == NULL)
742- info->callbacks->einfo (_("%F%P: failed to create PLT .sframe section\n"));
743+ info->callbacks->fatal (_("%P: failed to create PLT .sframe section\n"));
744
745 // FIXME check this
746 // if (!bfd_set_section_alignment (sec, class_align))
747@@ -4569,7 +4569,7 @@ _bfd_x86_elf_link_setup_gnu_properties
748 ".sframe",
749 flags);
750 if (sec == NULL)
751- info->callbacks->einfo (_("%F%P: failed to create second PLT .sframe section\n"));
752+ info->callbacks->fatal (_("%P: failed to create second PLT .sframe section\n"));
753
754 htab->plt_second_sframe = sec;
755 }
756diff --git a/bfd/linker.c b/bfd/linker.c
757index 0821db55..5b912221 100644
758--- a/bfd/linker.c
759+++ b/bfd/linker.c
760@@ -2982,7 +2982,7 @@ _bfd_generic_section_already_linked (bfd *abfd ATTRIBUTE_UNUSED,
761
762 /* This is the first section with this name. Record it. */
763 if (!bfd_section_already_linked_table_insert (already_linked_list, sec))
764- info->callbacks->einfo (_("%F%P: already_linked_table: %E\n"));
765+ info->callbacks->fatal (_("%P: already_linked_table: %E\n"));
766 return false;
767 }
768
769diff --git a/bfd/reloc.c b/bfd/reloc.c
770index 7583b7fd..1fee86f1 100644
771--- a/bfd/reloc.c
772+++ b/bfd/reloc.c
773@@ -8465,8 +8465,8 @@ bfd_generic_relax_section (bfd *abfd ATTRIBUTE_UNUSED,
774 bool *again)
775 {
776 if (bfd_link_relocatable (link_info))
777- (*link_info->callbacks->einfo)
778- (_("%P%F: --relax and -r may not be used together\n"));
779+ link_info->callbacks->fatal
780+ (_("%P: --relax and -r may not be used together\n"));
781
782 *again = false;
783 return true;
784diff --git a/bfd/reloc16.c b/bfd/reloc16.c
785index ff5412dc..a16d6b20 100644
786--- a/bfd/reloc16.c
787+++ b/bfd/reloc16.c
788@@ -151,8 +151,8 @@ bfd_coff_reloc16_relax_section (bfd *abfd,
789 long reloc_count;
790
791 if (bfd_link_relocatable (link_info))
792- (*link_info->callbacks->einfo)
793- (_("%P%F: --relax and -r may not be used together\n"));
794+ link_info->callbacks->fatal
795+ (_("%P: --relax and -r may not be used together\n"));
796
797 /* We only do global relaxation once. It is not safe to do it multiple
798 times (see discussion of the "shrinks" array below). */
799diff --git a/bfd/xcofflink.c b/bfd/xcofflink.c
800index 6ef9abcd..9b01cc37 100644
801--- a/bfd/xcofflink.c
802+++ b/bfd/xcofflink.c
803@@ -4681,7 +4681,7 @@ xcoff_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
804 if (hstub->target_section != NULL
805 && hstub->target_section->output_section == NULL
806 && info->non_contiguous_regions)
807- info->callbacks->einfo (_("%F%P: Could not assign `%pA' to an output section. "
808+ info->callbacks->fatal (_("%P: Could not assign `%pA' to an output section. "
809 "Retry without --enable-non-contiguous-regions.\n"),
810 hstub->target_section);
811
812diff --git a/include/bfdlink.h b/include/bfdlink.h
813index eac07d78..0d03fa70 100644
814--- a/include/bfdlink.h
815+++ b/include/bfdlink.h
816@@ -868,6 +868,9 @@ struct bfd_link_callbacks
817 (struct bfd_link_info *, struct bfd_link_hash_entry *h,
818 struct bfd_link_hash_entry *inh,
819 bfd *abfd, asection *section, bfd_vma address, flagword flags);
820+ /* Fatal error. */
821+ void (*fatal)
822+ (const char *fmt, ...) ATTRIBUTE_NORETURN;
823 /* Error or warning link info message. */
824 void (*einfo)
825 (const char *fmt, ...);
826diff --git a/ld/ldmain.c b/ld/ldmain.c
827index 878d9536..a61086c3 100644
828--- a/ld/ldmain.c
829+++ b/ld/ldmain.c
830@@ -146,6 +146,7 @@ static struct bfd_link_callbacks link_callbacks =
831 reloc_dangerous,
832 unattached_reloc,
833 notice,
834+ fatal,
835 einfo,
836 info_msg,
837 minfo,
838--
8392.43.0
840
diff --git a/meta/recipes-devtools/binutils/binutils/0021-CVE-2025-1153-3.patch b/meta/recipes-devtools/binutils/binutils/0021-CVE-2025-1153-3.patch
new file mode 100644
index 0000000000..8aef77d2f8
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/0021-CVE-2025-1153-3.patch
@@ -0,0 +1,3756 @@
1From fe459e33c676883b5f28cc96c00e242973d906a9 Mon Sep 17 00:00:00 2001
2From: Alan Modra <amodra@gmail.com>
3Date: Thu, 24 Apr 2025 10:01:29 +0930
4Subject: [PATCH] PR 32603, revert message changes
5
6This puts back %F into translated fatal error messages
7(and reverts a few other small changes), to not disturb
8translation work
9
10Upstream-Status: Backport [https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=fe459e33c676883b5f28cc96c00e242973d906a9]
11CVE: CVE-2025-1153
12
13Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
14---
15 bfd/archive.c | 2 +-
16 bfd/coff-aarch64.c | 2 +-
17 bfd/coffgen.c | 2 +-
18 bfd/elf-ifunc.c | 2 +-
19 bfd/elf-m10300.c | 2 +-
20 bfd/elf-properties.c | 4 +-
21 bfd/elf.c | 2 +-
22 bfd/elf32-arm.c | 2 +-
23 bfd/elf32-avr.c | 2 +-
24 bfd/elf32-csky.c | 2 +-
25 bfd/elf32-frv.c | 2 +-
26 bfd/elf32-hppa.c | 6 +--
27 bfd/elf32-i386.c | 2 +-
28 bfd/elf32-m68hc11.c | 2 +-
29 bfd/elf32-m68hc12.c | 2 +-
30 bfd/elf32-metag.c | 2 +-
31 bfd/elf32-spu.c | 4 +-
32 bfd/elf64-ia64-vms.c | 2 +-
33 bfd/elf64-ppc.c | 4 +-
34 bfd/elf64-x86-64.c | 10 ++---
35 bfd/elflink.c | 6 +--
36 bfd/elfnn-aarch64.c | 4 +-
37 bfd/elfnn-ia64.c | 2 +-
38 bfd/elfnn-kvx.c | 2 +-
39 bfd/elfnn-loongarch.c | 2 +-
40 bfd/elfxx-aarch64.c | 4 +-
41 bfd/elfxx-sparc.c | 2 +-
42 bfd/elfxx-x86.c | 42 +++++++++---------
43 bfd/linker.c | 2 +-
44 bfd/reloc.c | 2 +-
45 bfd/reloc16.c | 2 +-
46 bfd/xcofflink.c | 2 +-
47 ld/emulparams/call_nop.sh | 6 +--
48 ld/emulparams/cet.sh | 2 +-
49 ld/emulparams/elf32mcore.sh | 2 +-
50 ld/emulparams/x86-64-lam.sh | 6 +--
51 ld/emulparams/x86-64-level.sh | 2 +-
52 ld/emultempl/aarch64elf.em | 6 +--
53 ld/emultempl/aix.em | 41 +++++++++---------
54 ld/emultempl/armelf.em | 10 ++---
55 ld/emultempl/avrelf.em | 2 +-
56 ld/emultempl/beos.em | 18 ++++----
57 ld/emultempl/cr16elf.em | 4 +-
58 ld/emultempl/cskyelf.em | 4 +-
59 ld/emultempl/elf.em | 14 +++---
60 ld/emultempl/hppaelf.em | 4 +-
61 ld/emultempl/kvxelf.em | 4 +-
62 ld/emultempl/loongarchelf.em | 2 +-
63 ld/emultempl/m68hc1xelf.em | 2 +-
64 ld/emultempl/m68kelf.em | 4 +-
65 ld/emultempl/metagelf.em | 4 +-
66 ld/emultempl/mipself.em | 2 +-
67 ld/emultempl/mmix-elfnmmo.em | 2 +-
68 ld/emultempl/nds32elf.em | 6 +--
69 ld/emultempl/nto.em | 10 ++---
70 ld/emultempl/pe.em | 20 ++++-----
71 ld/emultempl/pep.em | 16 +++----
72 ld/emultempl/ppc32elf.em | 4 +-
73 ld/emultempl/ppc64elf.em | 10 ++---
74 ld/emultempl/riscvelf.em | 2 +-
75 ld/emultempl/s390.em | 2 +-
76 ld/emultempl/scoreelf.em | 2 +-
77 ld/emultempl/spuelf.em | 20 ++++-----
78 ld/emultempl/tic6xdsbt.em | 6 +--
79 ld/emultempl/ticoff.em | 2 +-
80 ld/emultempl/v850elf.em | 2 +-
81 ld/emultempl/vms.em | 2 +-
82 ld/emultempl/xtensaelf.em | 12 ++---
83 ld/emultempl/z80.em | 2 +-
84 ld/ldcref.c | 8 ++--
85 ld/ldelf.c | 30 ++++++-------
86 ld/ldelfgen.c | 14 +++---
87 ld/ldexp.c | 42 +++++++++---------
88 ld/ldfile.c | 14 +++---
89 ld/ldgram.y | 6 +--
90 ld/ldlang.c | 82 +++++++++++++++++------------------
91 ld/ldlex.l | 10 ++---
92 ld/ldmain.c | 44 +++++++++----------
93 ld/ldmisc.c | 6 +--
94 ld/ldwrite.c | 18 ++++----
95 ld/lexsup.c | 64 +++++++++++++--------------
96 ld/mri.c | 2 +-
97 ld/pe-dll.c | 12 ++---
98 ld/plugin.c | 27 ++++++------
99 84 files changed, 384 insertions(+), 384 deletions(-)
100
101diff --git a/bfd/archive.c b/bfd/archive.c
102index 0f617276..0596a304 100644
103--- a/bfd/archive.c
104+++ b/bfd/archive.c
105@@ -750,7 +750,7 @@ _bfd_get_elt_at_filepos (bfd *archive, file_ptr filepos,
106 if (info != NULL)
107 {
108 info->callbacks->fatal
109- (_("%P: %pB(%s): error opening thin archive member: %E\n"),
110+ (_("%F%P: %pB(%s): error opening thin archive member: %E\n"),
111 archive, filename);
112 break;
113 }
114diff --git a/bfd/coff-aarch64.c b/bfd/coff-aarch64.c
115index 53f539e0..06007e6d 100644
116--- a/bfd/coff-aarch64.c
117+++ b/bfd/coff-aarch64.c
118@@ -876,7 +876,7 @@ coff_pe_aarch64_relocate_section (bfd *output_bfd,
119 }
120
121 default:
122- info->callbacks->fatal (_("%P: Unhandled relocation type %u\n"),
123+ info->callbacks->fatal (_("%F%P: Unhandled relocation type %u\n"),
124 rel->r_type);
125 }
126 }
127diff --git a/bfd/coffgen.c b/bfd/coffgen.c
128index 3270cd2f..5e24210d 100644
129--- a/bfd/coffgen.c
130+++ b/bfd/coffgen.c
131@@ -2793,7 +2793,7 @@ _bfd_coff_section_already_linked (bfd *abfd,
132
133 /* This is the first section with this name. Record it. */
134 if (!bfd_section_already_linked_table_insert (already_linked_list, sec))
135- info->callbacks->fatal (_("%P: already_linked_table: %E\n"));
136+ info->callbacks->fatal (_("%F%P: already_linked_table: %E\n"));
137 return false;
138 }
139
140diff --git a/bfd/elf-ifunc.c b/bfd/elf-ifunc.c
141index 58a1ca5e..cb623563 100644
142--- a/bfd/elf-ifunc.c
143+++ b/bfd/elf-ifunc.c
144@@ -141,7 +141,7 @@ _bfd_elf_allocate_ifunc_dyn_relocs (struct bfd_link_info *info,
145 {
146 info->callbacks->fatal
147 /* xgettext:c-format */
148- (_("%P: dynamic STT_GNU_IFUNC symbol `%s' with pointer "
149+ (_("%F%P: dynamic STT_GNU_IFUNC symbol `%s' with pointer "
150 "equality in `%pB' can not be used when making an "
151 "executable; recompile with -fPIE and relink with -pie\n"),
152 h->root.root.string,
153diff --git a/bfd/elf-m10300.c b/bfd/elf-m10300.c
154index cf6bb13b..129485fa 100644
155--- a/bfd/elf-m10300.c
156+++ b/bfd/elf-m10300.c
157@@ -2647,7 +2647,7 @@ mn10300_elf_relax_section (bfd *abfd,
158
159 if (bfd_link_relocatable (link_info))
160 link_info->callbacks->fatal
161- (_("%P: --relax and -r may not be used together\n"));
162+ (_("%P%F: --relax and -r may not be used together\n"));
163
164 /* Assume nothing changes. */
165 *again = false;
166diff --git a/bfd/elf-properties.c b/bfd/elf-properties.c
167index a4591472..2e8cc8af 100644
168--- a/bfd/elf-properties.c
169+++ b/bfd/elf-properties.c
170@@ -665,11 +665,11 @@ _bfd_elf_link_setup_gnu_properties (struct bfd_link_info *info)
171 | SEC_HAS_CONTENTS
172 | SEC_DATA));
173 if (sec == NULL)
174- info->callbacks->fatal (_("%P: failed to create GNU property section\n"));
175+ info->callbacks->fatal (_("%F%P: failed to create GNU property section\n"));
176
177 if (!bfd_set_section_alignment (sec,
178 elfclass == ELFCLASS64 ? 3 : 2))
179- info->callbacks->fatal (_("%pA: failed to align section\n"),
180+ info->callbacks->fatal (_("%F%pA: failed to align section\n"),
181 sec);
182
183 elf_section_type (sec) = SHT_NOTE;
184diff --git a/bfd/elf.c b/bfd/elf.c
185index 8e4e1e7f..883aef5e 100644
186--- a/bfd/elf.c
187+++ b/bfd/elf.c
188@@ -5189,7 +5189,7 @@ _bfd_elf_map_sections_to_segments (bfd *abfd,
189 && bed->size_relative_relocs
190 && !bed->size_relative_relocs (info, need_layout))
191 info->callbacks->fatal
192- (_("%P: failed to size relative relocations\n"));
193+ (_("%F%P: failed to size relative relocations\n"));
194 }
195
196 if (no_user_phdrs && bfd_count_sections (abfd) != 0)
197diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
198index b4a822f1..bb413bb9 100644
199--- a/bfd/elf32-arm.c
200+++ b/bfd/elf32-arm.c
201@@ -5053,7 +5053,7 @@ arm_build_one_stub (struct bfd_hash_entry *gen_entry,
202 section. The user should fix his linker script. */
203 if (stub_entry->target_section->output_section == NULL
204 && info->non_contiguous_regions)
205- info->callbacks->fatal (_("%P: Could not assign `%pA' to an output section. "
206+ info->callbacks->fatal (_("%F%P: Could not assign `%pA' to an output section. "
207 "Retry without --enable-non-contiguous-regions.\n"),
208 stub_entry->target_section);
209
210diff --git a/bfd/elf32-avr.c b/bfd/elf32-avr.c
211index 912f7533..fd9f18dd 100644
212--- a/bfd/elf32-avr.c
213+++ b/bfd/elf32-avr.c
214@@ -2485,7 +2485,7 @@ elf32_avr_relax_section (bfd *abfd,
215
216 if (bfd_link_relocatable (link_info))
217 link_info->callbacks->fatal
218- (_("%P: --relax and -r may not be used together\n"));
219+ (_("%P%F: --relax and -r may not be used together\n"));
220
221 htab = avr_link_hash_table (link_info);
222 if (htab == NULL)
223diff --git a/bfd/elf32-csky.c b/bfd/elf32-csky.c
224index edff65a9..3ec0622e 100644
225--- a/bfd/elf32-csky.c
226+++ b/bfd/elf32-csky.c
227@@ -3728,7 +3728,7 @@ csky_build_one_stub (struct bfd_hash_entry *gen_entry,
228 section. The user should fix his linker script. */
229 if (stub_entry->target_section->output_section == NULL
230 && info->non_contiguous_regions)
231- info->callbacks->fatal (_("%P: Could not assign `%pA' to an output section. "
232+ info->callbacks->fatal (_("%F%P: Could not assign `%pA' to an output section. "
233 "Retry without --enable-non-contiguous-regions.\n"),
234 stub_entry->target_section);
235
236diff --git a/bfd/elf32-frv.c b/bfd/elf32-frv.c
237index 245db7c2..cac2663e 100644
238--- a/bfd/elf32-frv.c
239+++ b/bfd/elf32-frv.c
240@@ -5618,7 +5618,7 @@ elf32_frvfdpic_relax_section (bfd *abfd ATTRIBUTE_UNUSED, asection *sec,
241
242 if (bfd_link_relocatable (info))
243 info->callbacks->fatal
244- (_("%P: --relax and -r may not be used together\n"));
245+ (_("%P%F: --relax and -r may not be used together\n"));
246
247 /* If we return early, we didn't change anything. */
248 *again = false;
249diff --git a/bfd/elf32-hppa.c b/bfd/elf32-hppa.c
250index f1e67a06..0d0682de 100644
251--- a/bfd/elf32-hppa.c
252+++ b/bfd/elf32-hppa.c
253@@ -729,7 +729,7 @@ hppa_build_one_stub (struct bfd_hash_entry *bh, void *in_arg)
254 section. The user should fix his linker script. */
255 if (hsh->target_section->output_section == NULL
256 && info->non_contiguous_regions)
257- info->callbacks->fatal (_("%P: Could not assign `%pA' to an output "
258+ info->callbacks->fatal (_("%F%P: Could not assign `%pA' to an output "
259 "section. Retry without "
260 "--enable-non-contiguous-regions.\n"),
261 hsh->target_section);
262@@ -758,7 +758,7 @@ hppa_build_one_stub (struct bfd_hash_entry *bh, void *in_arg)
263 section. The user should fix his linker script. */
264 if (hsh->target_section->output_section == NULL
265 && info->non_contiguous_regions)
266- info->callbacks->fatal (_("%P: Could not assign `%pA' to an output "
267+ info->callbacks->fatal (_("%F%P: Could not assign `%pA' to an output "
268 "section. Retry without "
269 "--enable-non-contiguous-regions.\n"),
270 hsh->target_section);
271@@ -839,7 +839,7 @@ hppa_build_one_stub (struct bfd_hash_entry *bh, void *in_arg)
272 section. The user should fix his linker script. */
273 if (hsh->target_section->output_section == NULL
274 && info->non_contiguous_regions)
275- info->callbacks->fatal (_("%P: Could not assign `%pA' to an output "
276+ info->callbacks->fatal (_("%F%P: Could not assign `%pA' to an output "
277 "section. Retry without "
278 "--enable-non-contiguous-regions.\n"),
279 hsh->target_section);
280diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c
281index 1637e39f..42b96134 100644
282--- a/bfd/elf32-i386.c
283+++ b/bfd/elf32-i386.c
284@@ -4093,7 +4093,7 @@ elf_i386_finish_dynamic_sections (bfd *output_bfd,
285 if (bfd_is_abs_section (htab->elf.splt->output_section))
286 {
287 info->callbacks->fatal
288- (_("%P: discarded output section: `%pA'\n"),
289+ (_("%F%P: discarded output section: `%pA'\n"),
290 htab->elf.splt);
291 return false;
292 }
293diff --git a/bfd/elf32-m68hc11.c b/bfd/elf32-m68hc11.c
294index 6f705718..4b127ac7 100644
295--- a/bfd/elf32-m68hc11.c
296+++ b/bfd/elf32-m68hc11.c
297@@ -419,7 +419,7 @@ m68hc11_elf_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
298 section. The user should fix his linker script. */
299 if (stub_entry->target_section->output_section == NULL
300 && info->non_contiguous_regions)
301- info->callbacks->fatal (_("%P: Could not assign `%pA' to an output section. "
302+ info->callbacks->fatal (_("%F%P: Could not assign `%pA' to an output section. "
303 "Retry without --enable-non-contiguous-regions.\n"),
304 stub_entry->target_section);
305
306diff --git a/bfd/elf32-m68hc12.c b/bfd/elf32-m68hc12.c
307index bdfb9ca5..9a2f4638 100644
308--- a/bfd/elf32-m68hc12.c
309+++ b/bfd/elf32-m68hc12.c
310@@ -539,7 +539,7 @@ m68hc12_elf_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
311 section. The user should fix his linker script. */
312 if (stub_entry->target_section->output_section == NULL
313 && info->non_contiguous_regions)
314- info->callbacks->fatal (_("%P: Could not assign `%pA' to an output section. "
315+ info->callbacks->fatal (_("%F%P: Could not assign `%pA' to an output section. "
316 "Retry without --enable-non-contiguous-regions.\n"),
317 stub_entry->target_section);
318
319diff --git a/bfd/elf32-metag.c b/bfd/elf32-metag.c
320index 49f93cc7..94be520e 100644
321--- a/bfd/elf32-metag.c
322+++ b/bfd/elf32-metag.c
323@@ -3342,7 +3342,7 @@ metag_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
324 section. The user should fix his linker script. */
325 if (hsh->target_section->output_section == NULL
326 && info->non_contiguous_regions)
327- info->callbacks->fatal (_("%P: Could not assign `%pA' to an output section. "
328+ info->callbacks->fatal (_("%F%P: Could not assign `%pA' to an output section. "
329 "Retry without --enable-non-contiguous-regions.\n"),
330 hsh->target_section);
331
332diff --git a/bfd/elf32-spu.c b/bfd/elf32-spu.c
333index dd5d5fbe..c535b1f1 100644
334--- a/bfd/elf32-spu.c
335+++ b/bfd/elf32-spu.c
336@@ -4689,7 +4689,7 @@ spu_elf_auto_overlay (struct bfd_link_info *info)
337 file_err:
338 bfd_set_error (bfd_error_system_call);
339 err_exit:
340- info->callbacks->fatal (_("%P: auto overlay error: %E\n"));
341+ info->callbacks->fatal (_("%F%P: auto overlay error: %E\n"));
342 }
343
344 /* Provide an estimate of total stack required. */
345@@ -4742,7 +4742,7 @@ spu_elf_final_link (bfd *output_bfd, struct bfd_link_info *info)
346 info->callbacks->einfo (_("%X%P: stack/lrlive analysis error: %E\n"));
347
348 if (!spu_elf_build_stubs (info))
349- info->callbacks->fatal (_("%P: can not build overlay stubs: %E\n"));
350+ info->callbacks->fatal (_("%F%P: can not build overlay stubs: %E\n"));
351
352 return bfd_elf_final_link (output_bfd, info);
353 }
354diff --git a/bfd/elf64-ia64-vms.c b/bfd/elf64-ia64-vms.c
355index b1eaaac0..3c29e0d6 100644
356--- a/bfd/elf64-ia64-vms.c
357+++ b/bfd/elf64-ia64-vms.c
358@@ -362,7 +362,7 @@ elf64_ia64_relax_section (bfd *abfd, asection *sec,
359
360 if (bfd_link_relocatable (link_info))
361 link_info->callbacks->fatal
362- (_("%P: --relax and -r may not be used together\n"));
363+ (_("%P%F: --relax and -r may not be used together\n"));
364
365 /* Don't even try to relax for non-ELF outputs. */
366 if (!is_elf_hash_table (link_info->hash))
367diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
368index 7b798732..68d681a5 100644
369--- a/bfd/elf64-ppc.c
370+++ b/bfd/elf64-ppc.c
371@@ -12289,7 +12289,7 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
372 if (stub_entry->target_section != NULL
373 && stub_entry->target_section->output_section == NULL
374 && info->non_contiguous_regions)
375- info->callbacks->fatal (_("%P: Could not assign `%pA' to an output section. "
376+ info->callbacks->fatal (_("%F%P: Could not assign `%pA' to an output section. "
377 "Retry without --enable-non-contiguous-regions.\n"),
378 stub_entry->target_section);
379
380@@ -12297,7 +12297,7 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
381 if (stub_entry->group->stub_sec != NULL
382 && stub_entry->group->stub_sec->output_section == NULL
383 && info->non_contiguous_regions)
384- info->callbacks->fatal (_("%P: Could not assign `%pA' to an output section. "
385+ info->callbacks->fatal (_("%F%P: Could not assign `%pA' to an output section. "
386 "Retry without --enable-non-contiguous-regions.\n"),
387 stub_entry->group->stub_sec);
388
389diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c
390index a22d57d7..41341cd8 100644
391--- a/bfd/elf64-x86-64.c
392+++ b/bfd/elf64-x86-64.c
393@@ -3707,7 +3707,7 @@ elf_x86_64_relocate_section (bfd *output_bfd,
394 {
395 corrupt_input:
396 info->callbacks->fatal
397- (_("%P: corrupt input: %pB\n"),
398+ (_("%F%P: corrupt input: %pB\n"),
399 input_bfd);
400 return false;
401 }
402@@ -4679,7 +4679,7 @@ elf_x86_64_finish_dynamic_symbol (bfd *output_bfd,
403 /* Check PC-relative offset overflow in PLT entry. */
404 if ((plt_got_pcrel_offset + 0x80000000) > 0xffffffff)
405 /* xgettext:c-format */
406- info->callbacks->fatal (_("%pB: PC-relative offset overflow in PLT entry for `%s'\n"),
407+ info->callbacks->fatal (_("%F%pB: PC-relative offset overflow in PLT entry for `%s'\n"),
408 output_bfd, h->root.root.string);
409
410 bfd_put_32 (output_bfd, plt_got_pcrel_offset,
411@@ -4752,7 +4752,7 @@ elf_x86_64_finish_dynamic_symbol (bfd *output_bfd,
412 will overflow first. */
413 if (plt0_offset > 0x80000000)
414 /* xgettext:c-format */
415- info->callbacks->fatal (_("%pB: branch displacement overflow in PLT entry for `%s'\n"),
416+ info->callbacks->fatal (_("%F%pB: branch displacement overflow in PLT entry for `%s'\n"),
417 output_bfd, h->root.root.string);
418 bfd_put_32 (output_bfd, - plt0_offset,
419 (plt->contents + h->plt.offset
420@@ -4805,7 +4805,7 @@ elf_x86_64_finish_dynamic_symbol (bfd *output_bfd,
421 if ((got_after_plt && got_pcrel_offset < 0)
422 || (!got_after_plt && got_pcrel_offset > 0))
423 /* xgettext:c-format */
424- info->callbacks->fatal (_("%pB: PC-relative offset overflow in GOT PLT entry for `%s'\n"),
425+ info->callbacks->fatal (_("%F%pB: PC-relative offset overflow in GOT PLT entry for `%s'\n"),
426 output_bfd, h->root.root.string);
427
428 bfd_put_32 (output_bfd, got_pcrel_offset,
429@@ -5093,7 +5093,7 @@ elf_x86_64_finish_dynamic_sections (bfd *output_bfd,
430 if (bfd_is_abs_section (htab->elf.splt->output_section))
431 {
432 info->callbacks->fatal
433- (_("%P: discarded output section: `%pA'\n"),
434+ (_("%F%P: discarded output section: `%pA'\n"),
435 htab->elf.splt);
436 return false;
437 }
438diff --git a/bfd/elflink.c b/bfd/elflink.c
439index dba176cc..0c3ea0a3 100644
440--- a/bfd/elflink.c
441+++ b/bfd/elflink.c
442@@ -12892,7 +12892,7 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info)
443 && bed->finish_relative_relocs
444 && !bed->finish_relative_relocs (info))
445 info->callbacks->fatal
446- (_("%P: %pB: failed to finish relative relocations\n"), abfd);
447+ (_("%F%P: %pB: failed to finish relative relocations\n"), abfd);
448
449 /* Since ELF permits relocations to be against local symbols, we
450 must have the local symbols available when we do the relocations.
451@@ -14087,7 +14087,7 @@ _bfd_elf_gc_mark_extra_sections (struct bfd_link_info *info,
452 else if (strcmp (bfd_section_name (isec),
453 "__patchable_function_entries") == 0
454 && elf_linked_to_section (isec) == NULL)
455- info->callbacks->fatal (_("%P: %pB(%pA): error: "
456+ info->callbacks->fatal (_("%F%P: %pB(%pA): error: "
457 "need linked-to section "
458 "for --gc-sections\n"),
459 isec->owner, isec);
460@@ -15264,7 +15264,7 @@ _bfd_elf_section_already_linked (bfd *abfd,
461
462 /* This is the first section with this name. Record it. */
463 if (!bfd_section_already_linked_table_insert (already_linked_list, sec))
464- info->callbacks->fatal (_("%P: already_linked_table: %E\n"));
465+ info->callbacks->fatal (_("%F%P: already_linked_table: %E\n"));
466 return sec->output_section == bfd_abs_section_ptr;
467 }
468
469diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c
470index 0f454d23..d7a85ef0 100644
471--- a/bfd/elfnn-aarch64.c
472+++ b/bfd/elfnn-aarch64.c
473@@ -3272,7 +3272,7 @@ aarch64_build_one_stub (struct bfd_hash_entry *gen_entry,
474 section. The user should fix his linker script. */
475 if (stub_entry->target_section->output_section == NULL
476 && info->non_contiguous_regions)
477- info->callbacks->fatal (_("%P: Could not assign `%pA' to an output section. "
478+ info->callbacks->fatal (_("%F%P: Could not assign `%pA' to an output section. "
479 "Retry without "
480 "--enable-non-contiguous-regions.\n"),
481 stub_entry->target_section);
482@@ -9010,7 +9010,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
483 {
484 info->callbacks->fatal
485 /* xgettext:c-format */
486- (_ ("%P: %pB: copy relocation against non-copyable "
487+ (_ ("%F%P: %pB: copy relocation against non-copyable "
488 "protected symbol `%s'\n"),
489 p->sec->owner, h->root.root.string);
490 return false;
491diff --git a/bfd/elfnn-ia64.c b/bfd/elfnn-ia64.c
492index 41d9e6fe..8d576c81 100644
493--- a/bfd/elfnn-ia64.c
494+++ b/bfd/elfnn-ia64.c
495@@ -362,7 +362,7 @@ elfNN_ia64_relax_section (bfd *abfd, asection *sec,
496
497 if (bfd_link_relocatable (link_info))
498 link_info->callbacks->fatal
499- (_("%P: --relax and -r may not be used together\n"));
500+ (_("%P%F: --relax and -r may not be used together\n"));
501
502 /* Don't even try to relax for non-ELF outputs. */
503 if (!is_elf_hash_table (link_info->hash))
504diff --git a/bfd/elfnn-kvx.c b/bfd/elfnn-kvx.c
505index b752891b..9bbbc929 100644
506--- a/bfd/elfnn-kvx.c
507+++ b/bfd/elfnn-kvx.c
508@@ -927,7 +927,7 @@ kvx_build_one_stub (struct bfd_hash_entry *gen_entry,
509 section. The user should fix his linker script. */
510 if (stub_entry->target_section->output_section == NULL
511 && info->non_contiguous_regions)
512- info->callbacks->fatal (_("%P: Could not assign '%pA' to an output section. "
513+ info->callbacks->fatal (_("%F%P: Could not assign '%pA' to an output section. "
514 "Retry without "
515 "--enable-non-contiguous-regions.\n"),
516 stub_entry->target_section);
517diff --git a/bfd/elfnn-loongarch.c b/bfd/elfnn-loongarch.c
518index a8c4226d..12ee56a9 100644
519--- a/bfd/elfnn-loongarch.c
520+++ b/bfd/elfnn-loongarch.c
521@@ -1447,7 +1447,7 @@ local_allocate_ifunc_dyn_relocs (struct bfd_link_info *info,
522 {
523 info->callbacks->fatal
524 /* xgettext:c-format. */
525- (_("%P: dynamic STT_GNU_IFUNC symbol `%s' with pointer "
526+ (_("%F%P: dynamic STT_GNU_IFUNC symbol `%s' with pointer "
527 "equality in `%pB' can not be used when making an "
528 "executable; recompile with -fPIE and relink with -pie\n"),
529 h->root.root.string,
530diff --git a/bfd/elfxx-aarch64.c b/bfd/elfxx-aarch64.c
531index 161c8a52..2aa7dd54 100644
532--- a/bfd/elfxx-aarch64.c
533+++ b/bfd/elfxx-aarch64.c
534@@ -755,11 +755,11 @@ _bfd_aarch64_elf_link_setup_gnu_properties (struct bfd_link_info *info,
535 | SEC_DATA));
536 if (sec == NULL)
537 info->callbacks->fatal (
538- _("%P: failed to create GNU property section\n"));
539+ _("%F%P: failed to create GNU property section\n"));
540
541 align = (bfd_get_mach (ebfd) & bfd_mach_aarch64_ilp32) ? 2 : 3;
542 if (!bfd_set_section_alignment (sec, align))
543- info->callbacks->fatal (_("%pA: failed to align section\n"),
544+ info->callbacks->fatal (_("%F%pA: failed to align section\n"),
545 sec);
546
547 elf_section_type (sec) = SHT_NOTE;
548diff --git a/bfd/elfxx-sparc.c b/bfd/elfxx-sparc.c
549index 95b1928d..76057d3b 100644
550--- a/bfd/elfxx-sparc.c
551+++ b/bfd/elfxx-sparc.c
552@@ -2681,7 +2681,7 @@ _bfd_sparc_elf_relax_section (bfd *abfd ATTRIBUTE_UNUSED,
553 {
554 if (bfd_link_relocatable (link_info))
555 link_info->callbacks->fatal
556- (_("%P: --relax and -r may not be used together\n"));
557+ (_("%P%F: --relax and -r may not be used together\n"));
558
559 *again = false;
560 sec_do_relax (section) = 1;
561diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c
562index 606c8905..803d6a54 100644
563--- a/bfd/elfxx-x86.c
564+++ b/bfd/elfxx-x86.c
565@@ -533,7 +533,7 @@ elf_x86_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
566 {
567 info->callbacks->fatal
568 /* xgettext:c-format */
569- (_("%P: %pB: copy relocation against non-copyable "
570+ (_("%F%P: %pB: copy relocation against non-copyable "
571 "protected symbol `%s' in %pB\n"),
572 p->sec->owner, h->root.root.string,
573 h->root.u.def.section->owner);
574@@ -1032,7 +1032,7 @@ elf_x86_relative_reloc_record_add
575 {
576 info->callbacks->fatal
577 /* xgettext:c-format */
578- (_("%P: %pB: failed to allocate relative reloc record\n"),
579+ (_("%F%P: %pB: failed to allocate relative reloc record\n"),
580 info->output_bfd);
581 return false;
582 }
583@@ -1390,7 +1390,7 @@ elf64_dt_relr_bitmap_add
584 {
585 info->callbacks->fatal
586 /* xgettext:c-format */
587- (_("%P: %pB: failed to allocate 64-bit DT_RELR bitmap\n"),
588+ (_("%F%P: %pB: failed to allocate 64-bit DT_RELR bitmap\n"),
589 info->output_bfd);
590 }
591
592@@ -1426,7 +1426,7 @@ elf32_dt_relr_bitmap_add
593 {
594 info->callbacks->fatal
595 /* xgettext:c-format */
596- (_("%P: %pB: failed to allocate 32-bit DT_RELR bitmap\n"),
597+ (_("%F%P: %pB: failed to allocate 32-bit DT_RELR bitmap\n"),
598 info->output_bfd);
599 }
600
601@@ -1563,7 +1563,7 @@ elf_x86_size_or_finish_relative_reloc
602 if (!bfd_malloc_and_get_section (sec->owner,
603 sec,
604 &contents))
605- info->callbacks->einfo
606+ info->callbacks->fatal
607 /* xgettext:c-format */
608 (_("%F%P: %pB: failed to allocate memory for section `%pA'\n"),
609 info->output_bfd, sec);
610@@ -1752,7 +1752,7 @@ elf_x86_compute_dl_relr_bitmap
611 else
612 info->callbacks->fatal
613 /* xgettext:c-format */
614- (_("%P: %pB: size of compact relative reloc section is "
615+ (_("%F%P: %pB: size of compact relative reloc section is "
616 "changed: new (%lu) != old (%lu)\n"),
617 info->output_bfd, htab->dt_relr_bitmap.count,
618 dt_relr_bitmap_count);
619@@ -1774,7 +1774,7 @@ elf_x86_write_dl_relr_bitmap (struct bfd_link_info *info,
620 if (contents == NULL)
621 info->callbacks->fatal
622 /* xgettext:c-format */
623- (_("%P: %pB: failed to allocate compact relative reloc section\n"),
624+ (_("%F%P: %pB: failed to allocate compact relative reloc section\n"),
625 info->output_bfd);
626
627 /* Cache the section contents for elf_link_input_bfd. */
628@@ -2221,7 +2221,7 @@ _bfd_elf_x86_valid_reloc_p (asection *input_section,
629 sym, NULL);
630 info->callbacks->fatal
631 /* xgettext:c-format */
632- (_("%P: %pB: relocation %s against absolute symbol "
633+ (_("%F%P: %pB: relocation %s against absolute symbol "
634 "`%s' in section `%pA' is disallowed\n"),
635 input_section->owner, internal_reloc.howto->name, name,
636 input_section);
637@@ -3431,7 +3431,7 @@ _bfd_x86_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
638 {
639 info->callbacks->fatal
640 /* xgettext:c-format */
641- (_("%P: %pB: copy relocation against non-copyable "
642+ (_("%F%P: %pB: copy relocation against non-copyable "
643 "protected symbol `%s' in %pB\n"),
644 p->sec->owner, h->root.root.string,
645 h->root.u.def.section->owner);
646@@ -4138,12 +4138,12 @@ _bfd_x86_elf_link_setup_gnu_properties
647 | SEC_HAS_CONTENTS
648 | SEC_DATA));
649 if (sec == NULL)
650- info->callbacks->fatal (_("%P: failed to create GNU property section\n"));
651+ info->callbacks->fatal (_("%F%P: failed to create GNU property section\n"));
652
653 if (!bfd_set_section_alignment (sec, class_align))
654 {
655 error_alignment:
656- info->callbacks->fatal (_("%pA: failed to align section\n"),
657+ info->callbacks->fatal (_("%F%pA: failed to align section\n"),
658 sec);
659 }
660
661@@ -4404,7 +4404,7 @@ _bfd_x86_elf_link_setup_gnu_properties
662 && !elf_vxworks_create_dynamic_sections (dynobj, info,
663 &htab->srelplt2))
664 {
665- info->callbacks->fatal (_("%P: failed to create VxWorks dynamic sections\n"));
666+ info->callbacks->fatal (_("%F%P: failed to create VxWorks dynamic sections\n"));
667 return pbfd;
668 }
669
670@@ -4413,7 +4413,7 @@ _bfd_x86_elf_link_setup_gnu_properties
671 don't need to do it in check_relocs. */
672 if (htab->elf.sgot == NULL
673 && !_bfd_elf_create_got_section (dynobj, info))
674- info->callbacks->fatal (_("%P: failed to create GOT sections\n"));
675+ info->callbacks->fatal (_("%F%P: failed to create GOT sections\n"));
676
677 got_align = (bed->target_id == X86_64_ELF_DATA) ? 3 : 2;
678
679@@ -4431,7 +4431,7 @@ _bfd_x86_elf_link_setup_gnu_properties
680 /* Create the ifunc sections here so that check_relocs can be
681 simplified. */
682 if (!_bfd_elf_create_ifunc_sections (dynobj, info))
683- info->callbacks->fatal (_("%P: failed to create ifunc sections\n"));
684+ info->callbacks->fatal (_("%F%P: failed to create ifunc sections\n"));
685
686 plt_alignment = bfd_log2 (htab->plt.plt_entry_size);
687
688@@ -4468,7 +4468,7 @@ _bfd_x86_elf_link_setup_gnu_properties
689 ".plt.got",
690 pltflags);
691 if (sec == NULL)
692- info->callbacks->fatal (_("%P: failed to create GOT PLT section\n"));
693+ info->callbacks->fatal (_("%F%P: failed to create GOT PLT section\n"));
694
695 if (!bfd_set_section_alignment (sec, non_lazy_plt_alignment))
696 goto error_alignment;
697@@ -4487,7 +4487,7 @@ _bfd_x86_elf_link_setup_gnu_properties
698 ".plt.sec",
699 pltflags);
700 if (sec == NULL)
701- info->callbacks->fatal (_("%P: failed to create IBT-enabled PLT section\n"));
702+ info->callbacks->fatal (_("%F%P: failed to create IBT-enabled PLT section\n"));
703
704 if (!bfd_set_section_alignment (sec, plt_alignment))
705 goto error_alignment;
706@@ -4507,7 +4507,7 @@ _bfd_x86_elf_link_setup_gnu_properties
707 ".eh_frame",
708 flags);
709 if (sec == NULL)
710- info->callbacks->fatal (_("%P: failed to create PLT .eh_frame section\n"));
711+ info->callbacks->fatal (_("%F%P: failed to create PLT .eh_frame section\n"));
712
713 if (!bfd_set_section_alignment (sec, class_align))
714 goto error_alignment;
715@@ -4520,7 +4520,7 @@ _bfd_x86_elf_link_setup_gnu_properties
716 ".eh_frame",
717 flags);
718 if (sec == NULL)
719- info->callbacks->fatal (_("%P: failed to create GOT PLT .eh_frame section\n"));
720+ info->callbacks->fatal (_("%F%P: failed to create GOT PLT .eh_frame section\n"));
721
722 if (!bfd_set_section_alignment (sec, class_align))
723 goto error_alignment;
724@@ -4534,7 +4534,7 @@ _bfd_x86_elf_link_setup_gnu_properties
725 ".eh_frame",
726 flags);
727 if (sec == NULL)
728- info->callbacks->fatal (_("%P: failed to create the second PLT .eh_frame section\n"));
729+ info->callbacks->fatal (_("%F%P: failed to create the second PLT .eh_frame section\n"));
730
731 if (!bfd_set_section_alignment (sec, class_align))
732 goto error_alignment;
733@@ -4554,7 +4554,7 @@ _bfd_x86_elf_link_setup_gnu_properties
734 ".sframe",
735 flags);
736 if (sec == NULL)
737- info->callbacks->fatal (_("%P: failed to create PLT .sframe section\n"));
738+ info->callbacks->fatal (_("%F%P: failed to create PLT .sframe section\n"));
739
740 // FIXME check this
741 // if (!bfd_set_section_alignment (sec, class_align))
742@@ -4569,7 +4569,7 @@ _bfd_x86_elf_link_setup_gnu_properties
743 ".sframe",
744 flags);
745 if (sec == NULL)
746- info->callbacks->fatal (_("%P: failed to create second PLT .sframe section\n"));
747+ info->callbacks->fatal (_("%F%P: failed to create second PLT .sframe section\n"));
748
749 htab->plt_second_sframe = sec;
750 }
751diff --git a/bfd/linker.c b/bfd/linker.c
752index 5b912221..7940e587 100644
753--- a/bfd/linker.c
754+++ b/bfd/linker.c
755@@ -2982,7 +2982,7 @@ _bfd_generic_section_already_linked (bfd *abfd ATTRIBUTE_UNUSED,
756
757 /* This is the first section with this name. Record it. */
758 if (!bfd_section_already_linked_table_insert (already_linked_list, sec))
759- info->callbacks->fatal (_("%P: already_linked_table: %E\n"));
760+ info->callbacks->fatal (_("%F%P: already_linked_table: %E\n"));
761 return false;
762 }
763
764diff --git a/bfd/reloc.c b/bfd/reloc.c
765index 1fee86f1..433f8e74 100644
766--- a/bfd/reloc.c
767+++ b/bfd/reloc.c
768@@ -8466,7 +8466,7 @@ bfd_generic_relax_section (bfd *abfd ATTRIBUTE_UNUSED,
769 {
770 if (bfd_link_relocatable (link_info))
771 link_info->callbacks->fatal
772- (_("%P: --relax and -r may not be used together\n"));
773+ (_("%P%F: --relax and -r may not be used together\n"));
774
775 *again = false;
776 return true;
777diff --git a/bfd/reloc16.c b/bfd/reloc16.c
778index a16d6b20..b45ac263 100644
779--- a/bfd/reloc16.c
780+++ b/bfd/reloc16.c
781@@ -152,7 +152,7 @@ bfd_coff_reloc16_relax_section (bfd *abfd,
782
783 if (bfd_link_relocatable (link_info))
784 link_info->callbacks->fatal
785- (_("%P: --relax and -r may not be used together\n"));
786+ (_("%P%F: --relax and -r may not be used together\n"));
787
788 /* We only do global relaxation once. It is not safe to do it multiple
789 times (see discussion of the "shrinks" array below). */
790diff --git a/bfd/xcofflink.c b/bfd/xcofflink.c
791index 9b01cc37..e0165d20 100644
792--- a/bfd/xcofflink.c
793+++ b/bfd/xcofflink.c
794@@ -4681,7 +4681,7 @@ xcoff_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
795 if (hstub->target_section != NULL
796 && hstub->target_section->output_section == NULL
797 && info->non_contiguous_regions)
798- info->callbacks->fatal (_("%P: Could not assign `%pA' to an output section. "
799+ info->callbacks->fatal (_("%F%P: Could not assign `%pA' to an output section. "
800 "Retry without --enable-non-contiguous-regions.\n"),
801 hstub->target_section);
802
803diff --git a/ld/emulparams/call_nop.sh b/ld/emulparams/call_nop.sh
804index 7dd6dfb1..450d05ab 100644
805--- a/ld/emulparams/call_nop.sh
806+++ b/ld/emulparams/call_nop.sh
807@@ -20,7 +20,7 @@ PARSE_AND_LIST_ARGS_CASE_Z_CALL_NOP='
808 char *end;
809 params.call_nop_byte = strtoul (optarg + 16 , &end, 0);
810 if (*end)
811- fatal (_("%P: invalid number for -z call-nop=prefix-: %s\n"),
812+ fatal (_("%F%P: invalid number for -z call-nop=prefix-: %s\n"),
813 optarg + 16);
814 params.call_nop_as_suffix = false;
815 }
816@@ -29,12 +29,12 @@ PARSE_AND_LIST_ARGS_CASE_Z_CALL_NOP='
817 char *end;
818 params.call_nop_byte = strtoul (optarg + 16, &end, 0);
819 if (*end)
820- fatal (_("%P: invalid number for -z call-nop=suffix-: %s\n"),
821+ fatal (_("%F%P: invalid number for -z call-nop=suffix-: %s\n"),
822 optarg + 16);
823 params.call_nop_as_suffix = true;
824 }
825 else
826- fatal (_("%P: unsupported option: -z %s\n"), optarg);
827+ fatal (_("%F%P: unsupported option: -z %s\n"), optarg);
828 }
829 '
830
831diff --git a/ld/emulparams/cet.sh b/ld/emulparams/cet.sh
832index e463441d..824bcf0e 100644
833--- a/ld/emulparams/cet.sh
834+++ b/ld/emulparams/cet.sh
835@@ -29,7 +29,7 @@ PARSE_AND_LIST_ARGS_CASE_Z_CET='
836 | prop_report_ibt
837 | prop_report_shstk);
838 else
839- fatal (_("%P: invalid option for -z cet-report=: %s\n"),
840+ fatal (_("%F%P: invalid option for -z cet-report=: %s\n"),
841 optarg + 11);
842 }
843 '
844diff --git a/ld/emulparams/elf32mcore.sh b/ld/emulparams/elf32mcore.sh
845index 275a796f..99261ca8 100644
846--- a/ld/emulparams/elf32mcore.sh
847+++ b/ld/emulparams/elf32mcore.sh
848@@ -46,6 +46,6 @@ PARSE_AND_LIST_ARGS_CASES='
849 case OPTION_BASE_FILE:
850 link_info.base_file = fopen (optarg, FOPEN_WB);
851 if (link_info.base_file == NULL)
852- fatal (_("%P: cannot open base file %s\n"), optarg);
853+ fatal (_("%F%P: cannot open base file %s\n"), optarg);
854 break;
855 '
856diff --git a/ld/emulparams/x86-64-lam.sh b/ld/emulparams/x86-64-lam.sh
857index 6e629ebb..8675a01f 100644
858--- a/ld/emulparams/x86-64-lam.sh
859+++ b/ld/emulparams/x86-64-lam.sh
860@@ -25,7 +25,7 @@ PARSE_AND_LIST_ARGS_CASE_Z_LAM='
861 else if (strcmp (optarg + 15, "error") == 0)
862 params.lam_u48_report = prop_report_error;
863 else
864- fatal (_("%P: invalid option for -z lam-u48-report=: %s\n"),
865+ fatal (_("%F%P: invalid option for -z lam-u48-report=: %s\n"),
866 optarg + 15);
867 }
868 else if (strcmp (optarg, "lam-u57") == 0)
869@@ -39,7 +39,7 @@ PARSE_AND_LIST_ARGS_CASE_Z_LAM='
870 else if (strcmp (optarg + 15, "error") == 0)
871 params.lam_u57_report = prop_report_error;
872 else
873- fatal (_("%P: invalid option for -z lam-u57-report=: %s\n"),
874+ fatal (_("%F%P: invalid option for -z lam-u57-report=: %s\n"),
875 optarg + 15);
876 }
877 else if (strncmp (optarg, "lam-report=", 11) == 0)
878@@ -60,7 +60,7 @@ PARSE_AND_LIST_ARGS_CASE_Z_LAM='
879 params.lam_u57_report = prop_report_error;
880 }
881 else
882- fatal (_("%P: invalid option for -z lam-report=: %s\n"),
883+ fatal (_("%F%P: invalid option for -z lam-report=: %s\n"),
884 optarg + 11);
885 }
886 '
887diff --git a/ld/emulparams/x86-64-level.sh b/ld/emulparams/x86-64-level.sh
888index 7e27cf1e..3002a1f7 100644
889--- a/ld/emulparams/x86-64-level.sh
890+++ b/ld/emulparams/x86-64-level.sh
891@@ -10,7 +10,7 @@ PARSE_AND_LIST_ARGS_CASE_Z_X86_64_LEVEL='
892 char *end;
893 unsigned int level = strtoul (optarg + 8 , &end, 10);
894 if (*end != '\0' || level < 2 || level > 4)
895- fatal (_("%P: invalid x86-64 ISA level: %s\n"), optarg);
896+ fatal (_("%F%P: invalid x86-64 ISA level: %s\n"), optarg);
897 params.isa_level = level;
898 }
899 '
900diff --git a/ld/emultempl/aarch64elf.em b/ld/emultempl/aarch64elf.em
901index a6637718..1cdd433d 100644
902--- a/ld/emultempl/aarch64elf.em
903+++ b/ld/emultempl/aarch64elf.em
904@@ -316,7 +316,7 @@ aarch64_elf_create_output_section_statements (void)
905 These will only be created if the output format is an arm format,
906 hence we do not support linking and changing output formats at the
907 same time. Use a link followed by objcopy to change output formats. */
908- fatal (_("%P: error: cannot change output format "
909+ fatal (_("%F%P: error: cannot change output format "
910 "whilst linking %s binaries\n"), "AArch64");
911 return;
912 }
913@@ -342,7 +342,7 @@ aarch64_elf_create_output_section_statements (void)
914 bfd_get_arch (link_info.output_bfd),
915 bfd_get_mach (link_info.output_bfd)))
916 {
917- fatal (_("%P: can not create BFD: %E\n"));
918+ fatal (_("%F%P: can not create BFD: %E\n"));
919 return;
920 }
921
922@@ -468,7 +468,7 @@ PARSE_AND_LIST_ARGS_CASES='
923
924 group_size = bfd_scan_vma (optarg, &end, 0);
925 if (*end)
926- fatal (_("%P: invalid number `%s'\''\n"), optarg);
927+ fatal (_("%F%P: invalid number `%s'\''\n"), optarg);
928 }
929 break;
930 '
931diff --git a/ld/emultempl/aix.em b/ld/emultempl/aix.em
932index 29acdbc9..85bd45fa 100644
933--- a/ld/emultempl/aix.em
934+++ b/ld/emultempl/aix.em
935@@ -335,7 +335,7 @@ read_file_list (const char *filename)
936 f = fopen (filename, FOPEN_RT);
937 if (f == NULL)
938 {
939- fatal (_("%P: cannot open %s\n"), filename);
940+ fatal (_("%F%P: cannot open %s\n"), filename);
941 return;
942 }
943 if (fseek (f, 0L, SEEK_END) == -1)
944@@ -383,7 +383,7 @@ read_file_list (const char *filename)
945
946 error:
947 fclose (f);
948- fatal (_("%P: cannot read %s\n"), optarg);
949+ fatal (_("%F%P: cannot read %s\n"), optarg);
950 }
951
952 static bool
953@@ -734,7 +734,7 @@ gld${EMULATION_NAME}_after_open (void)
954 size = (p->count + 2) * 4;
955 if (!bfd_xcoff_link_record_set (link_info.output_bfd, &link_info,
956 p->h, size))
957- fatal (_("%P: bfd_xcoff_link_record_set failed: %E\n"));
958+ fatal (_("%F%P: bfd_xcoff_link_record_set failed: %E\n"));
959 }
960 }
961
962@@ -764,9 +764,9 @@ gld${EMULATION_NAME}_before_allocation (void)
963
964 h = bfd_link_hash_lookup (link_info.hash, el->name, false, false, false);
965 if (h == NULL)
966- fatal (_("%P: bfd_link_hash_lookup of export symbol failed: %E\n"));
967+ fatal (_("%F%P: bfd_link_hash_lookup of export symbol failed: %E\n"));
968 if (!bfd_xcoff_export_symbol (link_info.output_bfd, &link_info, h))
969- fatal (_("%P: bfd_xcoff_export_symbol failed: %E\n"));
970+ fatal (_("%F%P: bfd_xcoff_export_symbol failed: %E\n"));
971 }
972
973 /* Track down all relocations called for by the linker script (these
974@@ -849,7 +849,7 @@ gld${EMULATION_NAME}_before_allocation (void)
975 (link_info.output_bfd, &link_info, libpath, entry_symbol.name,
976 file_align, maxstack, maxdata, gc && !unix_ld,
977 modtype, textro, flags, special_sections, rtld))
978- fatal (_("%P: failed to set dynamic section sizes: %E\n"));
979+ fatal (_("%F%P: failed to set dynamic section sizes: %E\n"));
980
981 /* Look through the special sections, and put them in the right
982 place in the link ordering. This is especially magic. */
983@@ -871,8 +871,8 @@ gld${EMULATION_NAME}_before_allocation (void)
984 is = NULL;
985 os = lang_output_section_get (sec->output_section);
986 if (os == NULL)
987- fatal (_("%P: can't find output section %pA\n"),
988- sec->output_section);
989+ fatal (_("%F%P: can't find output section %s\n"),
990+ sec->output_section->name);
991
992 for (pls = &os->children.head; *pls != NULL; pls = &(*pls)->header.next)
993 {
994@@ -908,7 +908,8 @@ gld${EMULATION_NAME}_before_allocation (void)
995
996 if (is == NULL)
997 {
998- fatal (_("%P: can't find %pA in output section\n"), sec);
999+ fatal (_("%F%P: can't find %s in output section\n"),
1000+ bfd_section_name (sec));
1001 }
1002
1003 /* Now figure out where the section should go. */
1004@@ -1161,7 +1162,7 @@ gld${EMULATION_NAME}_after_allocation (void)
1005
1006 /* Now that everything is in place, finalize the dynamic sections. */
1007 if (!bfd_xcoff_build_dynamic_sections (link_info.output_bfd, &link_info))
1008- fatal (_("%P: failed to layout dynamic sections: %E\n"));
1009+ fatal (_("%F%P: failed to layout dynamic sections: %E\n"));
1010
1011 if (!bfd_link_relocatable (&link_info))
1012 {
1013@@ -1312,7 +1313,7 @@ gld${EMULATION_NAME}_read_file (const char *filename, bool import)
1014 if (f == NULL)
1015 {
1016 bfd_set_error (bfd_error_system_call);
1017- fatal ("%P: %s: %E\n", filename);
1018+ fatal ("%F%P: %s: %E\n", filename);
1019 return;
1020 }
1021
1022@@ -1374,7 +1375,7 @@ gld${EMULATION_NAME}_read_file (const char *filename, bool import)
1023 obstack_free (o, obstack_base (o));
1024 }
1025 else if (*s == '(')
1026- fatal (_("%P:%s:%d: #! ([member]) is not supported "
1027+ fatal (_("%F%P:%s:%d: #! ([member]) is not supported "
1028 "in import files\n"),
1029 filename, lineno);
1030 else
1031@@ -1391,7 +1392,7 @@ gld${EMULATION_NAME}_read_file (const char *filename, bool import)
1032 *s = '\0';
1033 if (!bfd_xcoff_split_import_path (link_info.output_bfd,
1034 start, &imppath, &impfile))
1035- fatal (_("%P: could not parse import path: %E\n"));
1036+ fatal (_("%F%P: could not parse import path: %E\n"));
1037 while (ISSPACE (cs))
1038 {
1039 ++s;
1040@@ -1546,10 +1547,10 @@ gld${EMULATION_NAME}_find_relocs (lang_statement_union_type *s)
1041
1042 rs = &s->reloc_statement;
1043 if (rs->name == NULL)
1044- fatal (_("%P: only relocations against symbols are permitted\n"));
1045+ fatal (_("%F%P: only relocations against symbols are permitted\n"));
1046 if (!bfd_xcoff_link_count_reloc (link_info.output_bfd, &link_info,
1047 rs->name))
1048- fatal (_("%P: bfd_xcoff_link_count_reloc failed: %E\n"));
1049+ fatal (_("%F%P: bfd_xcoff_link_count_reloc failed: %E\n"));
1050 }
1051
1052 if (s->header.type == lang_assignment_statement_enum)
1053@@ -1578,7 +1579,7 @@ gld${EMULATION_NAME}_find_exp_assignment (etree_type *exp)
1054 if (!bfd_xcoff_record_link_assignment (link_info.output_bfd,
1055 &link_info,
1056 exp->assign.dst))
1057- fatal (_("%P: failed to record assignment to %s: %E\n"),
1058+ fatal (_("%F%P: failed to record assignment to %s: %E\n"),
1059 exp->assign.dst);
1060 }
1061 gld${EMULATION_NAME}_find_exp_assignment (exp->assign.src);
1062@@ -1673,7 +1674,7 @@ gld${EMULATION_NAME}_create_output_section_statements (void)
1063 bfd_get_arch (link_info.output_bfd),
1064 bfd_get_mach (link_info.output_bfd)))
1065 {
1066- fatal (_("%P: can not create stub BFD: %E\n"));
1067+ fatal (_("%F%P: can not create stub BFD: %E\n"));
1068 return;
1069 }
1070
1071@@ -1683,7 +1684,7 @@ gld${EMULATION_NAME}_create_output_section_statements (void)
1072
1073 /* Pass linker params to the back-end. */
1074 if (!bfd_xcoff_link_init (&link_info, &params))
1075- fatal (_("%P: can not init BFD: %E\n"));
1076+ fatal (_("%F%P: can not init BFD: %E\n"));
1077
1078 /* __rtinit */
1079 if (link_info.init_function != NULL
1080@@ -1700,7 +1701,7 @@ gld${EMULATION_NAME}_create_output_section_statements (void)
1081 bfd_get_arch (link_info.output_bfd),
1082 bfd_get_mach (link_info.output_bfd)))
1083 {
1084- fatal (_("%P: can not create BFD: %E\n"));
1085+ fatal (_("%F%P: can not create BFD: %E\n"));
1086 return;
1087 }
1088
1089@@ -1710,7 +1711,7 @@ gld${EMULATION_NAME}_create_output_section_statements (void)
1090 link_info.fini_function,
1091 rtld))
1092 {
1093- fatal (_("%P: can not create BFD: %E\n"));
1094+ fatal (_("%F%P: can not create BFD: %E\n"));
1095 return;
1096 }
1097
1098diff --git a/ld/emultempl/armelf.em b/ld/emultempl/armelf.em
1099index 504fb0cd..4240f4e7 100644
1100--- a/ld/emultempl/armelf.em
1101+++ b/ld/emultempl/armelf.em
1102@@ -521,7 +521,7 @@ arm_elf_create_output_section_statements (void)
1103 These will only be created if the output format is an arm format,
1104 hence we do not support linking and changing output formats at the
1105 same time. Use a link followed by objcopy to change output formats. */
1106- fatal (_("%P: error: cannot change output format "
1107+ fatal (_("%F%P: error: cannot change output format "
1108 "whilst linking %s binaries\n"), "ARM");
1109 return;
1110 }
1111@@ -532,10 +532,10 @@ arm_elf_create_output_section_statements (void)
1112 bfd_get_target (link_info.output_bfd));
1113
1114 if (params.in_implib_bfd == NULL)
1115- fatal (_("%P: %s: can't open: %E\n"), in_implib_filename);
1116+ fatal (_("%F%P: %s: can't open: %E\n"), in_implib_filename);
1117
1118 if (!bfd_check_format (params.in_implib_bfd, bfd_object))
1119- fatal (_("%P: %s: not a relocatable file: %E\n"), in_implib_filename);
1120+ fatal (_("%F%P: %s: not a relocatable file: %E\n"), in_implib_filename);
1121 }
1122
1123 bfd_elf32_arm_set_target_params (link_info.output_bfd, &link_info, &params);
1124@@ -549,7 +549,7 @@ arm_elf_create_output_section_statements (void)
1125 bfd_get_arch (link_info.output_bfd),
1126 bfd_get_mach (link_info.output_bfd)))
1127 {
1128- fatal (_("%P: can not create BFD: %E\n"));
1129+ fatal (_("%F%P: can not create BFD: %E\n"));
1130 return;
1131 }
1132
1133@@ -734,7 +734,7 @@ PARSE_AND_LIST_ARGS_CASES='
1134
1135 group_size = bfd_scan_vma (optarg, &end, 0);
1136 if (*end)
1137- fatal (_("%P: invalid number `%s'\''\n"), optarg);
1138+ fatal (_("%F%P: invalid number `%s'\''\n"), optarg);
1139 }
1140 break;
1141
1142diff --git a/ld/emultempl/avrelf.em b/ld/emultempl/avrelf.em
1143index dd5b57d1..854c57bb 100644
1144--- a/ld/emultempl/avrelf.em
1145+++ b/ld/emultempl/avrelf.em
1146@@ -116,7 +116,7 @@ avr_elf_create_output_section_statements (void)
1147
1148 if (bfd_get_flavour (link_info.output_bfd) != bfd_target_elf_flavour)
1149 {
1150- fatal (_("%P: error: cannot change output format "
1151+ fatal (_("%F%P: error: cannot change output format "
1152 "whilst linking %s binaries\n"), "AVR");
1153 return;
1154 }
1155diff --git a/ld/emultempl/beos.em b/ld/emultempl/beos.em
1156index 81878b02..e936b4f5 100644
1157--- a/ld/emultempl/beos.em
1158+++ b/ld/emultempl/beos.em
1159@@ -227,7 +227,7 @@ set_pe_subsystem (void)
1160 return;
1161 }
1162 }
1163- fatal (_("%P: invalid subsystem type %s\n"), optarg);
1164+ fatal (_("%F%P: invalid subsystem type %s\n"), optarg);
1165 }
1166
1167
1168@@ -237,7 +237,7 @@ set_pe_value (char *name)
1169 char *end;
1170 set_pe_name (name, strtoul (optarg, &end, 0));
1171 if (end == optarg)
1172- fatal (_("%P: invalid hex number for PE parameter '%s'\n"), optarg);
1173+ fatal (_("%F%P: invalid hex number for PE parameter '%s'\n"), optarg);
1174
1175 optarg = end;
1176 }
1177@@ -252,7 +252,7 @@ set_pe_stack_heap (char *resname, char *comname)
1178 set_pe_value (comname);
1179 }
1180 else if (*optarg)
1181- fatal (_("%P: strange hex info for PE parameter '%s'\n"), optarg);
1182+ fatal (_("%F%P: strange hex info for PE parameter '%s'\n"), optarg);
1183 }
1184
1185
1186@@ -267,7 +267,7 @@ gld${EMULATION_NAME}_handle_option (int optc)
1187 case OPTION_BASE_FILE:
1188 link_info.base_file = fopen (optarg, FOPEN_WB);
1189 if (link_info.base_file == NULL)
1190- fatal (_("%P: cannot open base file %s\n"), optarg);
1191+ fatal (_("%F%P: cannot open base file %s\n"), optarg);
1192 break;
1193
1194 /* PE options */
1195@@ -376,7 +376,7 @@ gld${EMULATION_NAME}_after_open (void)
1196 FIXME: This should be done via a function, rather than by
1197 including an internal BFD header. */
1198 if (!obj_pe (link_info.output_bfd))
1199- fatal (_("%P: PE operations on non PE file\n"));
1200+ fatal (_("%F%P: PE operations on non PE file\n"));
1201
1202 pe_data(link_info.output_bfd)->pe_opthdr = pe;
1203 pe_data(link_info.output_bfd)->dll = init[DLLOFF].value;
1204@@ -425,12 +425,12 @@ sort_by_file_name (const void *a, const void *b)
1205
1206 if (!bfd_get_section_contents (sa->owner, sa, &a_sec, (file_ptr) 0,
1207 (bfd_size_type) sizeof (a_sec)))
1208- fatal (_("%P: %pB: can't read contents of section .idata: %E\n"),
1209+ fatal (_("%F%P: %pB: can't read contents of section .idata: %E\n"),
1210 sa->owner);
1211
1212 if (!bfd_get_section_contents (sb->owner, sb, &b_sec, (file_ptr) 0,
1213 (bfd_size_type) sizeof (b_sec)))
1214- fatal (_("%P: %pB: can't read contents of section .idata: %E\n"),
1215+ fatal (_("%F%P: %pB: can't read contents of section .idata: %E\n"),
1216 sb->owner);
1217
1218 i = a_sec < b_sec ? -1 : 0;
1219@@ -662,7 +662,7 @@ gld${EMULATION_NAME}_place_orphan (asection *s,
1220 /* Everything from the '\$' on gets deleted so don't allow '\$' as the
1221 first character. */
1222 if (*secname == '\$')
1223- fatal (_("%P: section %s has '\$' as first character\n"), secname);
1224+ fatal (_("%F%P: section %s has '\$' as first character\n"), secname);
1225 if (strchr (secname + 1, '\$') == NULL)
1226 return NULL;
1227
1228@@ -692,7 +692,7 @@ gld${EMULATION_NAME}_place_orphan (asection *s,
1229 }
1230 ps[0] = 0;
1231 if (l == NULL)
1232- fatal (_("%P: *(%s\$) missing from linker script\n"), output_secname);
1233+ fatal (_("%F%P: *(%s\$) missing from linker script\n"), output_secname);
1234
1235 /* Link the input section in and we're done for now.
1236 The sections still have to be sorted, but that has to wait until
1237diff --git a/ld/emultempl/cr16elf.em b/ld/emultempl/cr16elf.em
1238index 5464edf1..cd24728c 100644
1239--- a/ld/emultempl/cr16elf.em
1240+++ b/ld/emultempl/cr16elf.em
1241@@ -58,7 +58,7 @@ cr16_elf_after_open (void)
1242 COFF and ELF. */
1243 if (bfd_get_flavour (abfd) != bfd_target_coff_flavour
1244 && bfd_get_flavour (abfd) != bfd_target_elf_flavour)
1245- fatal (_("%P: %pB: all input objects must be COFF or ELF "
1246+ fatal (_("%F%P: %pB: all input objects must be COFF or ELF "
1247 "for --embedded-relocs\n"));
1248
1249 datasec = bfd_get_section_by_name (abfd, ".data.rel");
1250@@ -82,7 +82,7 @@ cr16_elf_after_open (void)
1251 | SEC_IN_MEMORY))
1252 || !bfd_set_section_alignment (relsec, 2)
1253 || !bfd_set_section_size (relsec, datasec->reloc_count * 8))
1254- fatal (_("%P: %pB: can not create .emreloc section: %E\n"));
1255+ fatal (_("%F%P: %pB: can not create .emreloc section: %E\n"));
1256 }
1257
1258 /* Double check that all other data sections are empty, as is
1259diff --git a/ld/emultempl/cskyelf.em b/ld/emultempl/cskyelf.em
1260index 9c91d7ac..b4896c45 100644
1261--- a/ld/emultempl/cskyelf.em
1262+++ b/ld/emultempl/cskyelf.em
1263@@ -151,7 +151,7 @@ csky_elf_create_output_section_statements (void)
1264 bfd_get_arch (link_info.output_bfd),
1265 bfd_get_mach (link_info.output_bfd)))
1266 {
1267- fatal (_("%P: can not create BFD: %E\n"));
1268+ fatal (_("%F%P: can not create BFD: %E\n"));
1269 return;
1270 }
1271
1272@@ -324,7 +324,7 @@ PARSE_AND_LIST_ARGS_CASES='
1273
1274 group_size = bfd_scan_vma (optarg, &end, 0);
1275 if (*end)
1276- fatal (_("%P: invalid number `%s'\''\n"), optarg);
1277+ fatal (_("%F%P: invalid number `%s'\''\n"), optarg);
1278 }
1279 break;
1280 '
1281diff --git a/ld/emultempl/elf.em b/ld/emultempl/elf.em
1282index 5cc38194..fbbff87f 100644
1283--- a/ld/emultempl/elf.em
1284+++ b/ld/emultempl/elf.em
1285@@ -667,12 +667,12 @@ gld${EMULATION_NAME}_handle_option (int optc)
1286 {
1287 #ifndef HAVE_ZSTD
1288 if (config.compress_debug == COMPRESS_DEBUG_ZSTD)
1289- fatal (_("%P: --compress-debug-sections=zstd: ld is not built "
1290+ fatal (_("%F%P: --compress-debug-sections=zstd: ld is not built "
1291 "with zstd support\n"));
1292 #endif
1293 }
1294 if (config.compress_debug == COMPRESS_UNKNOWN)
1295- fatal (_("%P: invalid --compress-debug-sections option: \`%s'\n"),
1296+ fatal (_("%F%P: invalid --compress-debug-sections option: \`%s'\n"),
1297 optarg);
1298 break;
1299 EOF
1300@@ -727,7 +727,7 @@ fragment <<EOF
1301 link_info.emit_gnu_hash = true;
1302 }
1303 else
1304- fatal (_("%P: invalid hash style \`%s'\n"), optarg);
1305+ fatal (_("%F%P: invalid hash style \`%s'\n"), optarg);
1306 break;
1307
1308 EOF
1309@@ -747,7 +747,7 @@ fragment <<EOF
1310 link_info.maxpagesize = strtoul (optarg + 14, &end, 0);
1311 if (*end
1312 || (link_info.maxpagesize & (link_info.maxpagesize - 1)) != 0)
1313- fatal (_("%P: invalid maximum page size \`%s'\n"),
1314+ fatal (_("%F%P: invalid maximum page size \`%s'\n"),
1315 optarg + 14);
1316 link_info.maxpagesize_is_set = true;
1317 }
1318@@ -757,7 +757,7 @@ fragment <<EOF
1319 link_info.commonpagesize = strtoul (optarg + 17, &end, 0);
1320 if (*end
1321 || (link_info.commonpagesize & (link_info.commonpagesize - 1)) != 0)
1322- fatal (_("%P: invalid common page size \`%s'\n"),
1323+ fatal (_("%F%P: invalid common page size \`%s'\n"),
1324 optarg + 17);
1325 link_info.commonpagesize_is_set = true;
1326 }
1327@@ -766,7 +766,7 @@ fragment <<EOF
1328 char *end;
1329 link_info.stacksize = strtoul (optarg + 11, &end, 0);
1330 if (*end || link_info.stacksize < 0)
1331- fatal (_("%P: invalid stack size \`%s'\n"), optarg + 11);
1332+ fatal (_("%F%P: invalid stack size \`%s'\n"), optarg + 11);
1333 if (!link_info.stacksize)
1334 /* Use -1 for explicit no-stack, because zero means
1335 'default'. */
1336@@ -805,7 +805,7 @@ fragment <<EOF
1337 else if (strcmp (optarg, "start-stop-visibility=protected") == 0)
1338 link_info.start_stop_visibility = STV_PROTECTED;
1339 else
1340- fatal (_("%P: invalid visibility in \`-z %s'; "
1341+ fatal (_("%F%P: invalid visibility in \`-z %s'; "
1342 "must be default, internal, hidden, or protected"),
1343 optarg);
1344 }
1345diff --git a/ld/emultempl/hppaelf.em b/ld/emultempl/hppaelf.em
1346index f0284ea3..e8e98a49 100644
1347--- a/ld/emultempl/hppaelf.em
1348+++ b/ld/emultempl/hppaelf.em
1349@@ -82,7 +82,7 @@ hppaelf_create_output_section_statements (void)
1350 bfd_get_arch (link_info.output_bfd),
1351 bfd_get_mach (link_info.output_bfd)))
1352 {
1353- fatal (_("%P: can not create BFD: %E\n"));
1354+ fatal (_("%F%P: can not create BFD: %E\n"));
1355 return;
1356 }
1357
1358@@ -351,7 +351,7 @@ PARSE_AND_LIST_ARGS_CASES='
1359 const char *end;
1360 group_size = bfd_scan_vma (optarg, &end, 0);
1361 if (*end)
1362- fatal (_("%P: invalid number `%s'\''\n"), optarg);
1363+ fatal (_("%F%P: invalid number `%s'\''\n"), optarg);
1364 }
1365 break;
1366 '
1367diff --git a/ld/emultempl/kvxelf.em b/ld/emultempl/kvxelf.em
1368index 1ffbd1db..81713678 100644
1369--- a/ld/emultempl/kvxelf.em
1370+++ b/ld/emultempl/kvxelf.em
1371@@ -36,7 +36,7 @@ EOF
1372 if test x"${EMULATION_NAME}" != x"elf64kvx_linux"; then
1373 fragment <<EOF
1374 if (bfd_link_pie (&link_info))
1375- fatal (_(":%P: -pie not supported\n"));
1376+ fatal (_("%F:%P: -pie not supported\n"));
1377 EOF
1378 fi
1379 fragment <<EOF
1380@@ -299,7 +299,7 @@ kvx_elf_create_output_section_statements (void)
1381 ldlang_add_file (stub_file);
1382
1383 if (!kvx_elf${ELFSIZE}_init_stub_bfd (&link_info, stub_file->the_bfd))
1384- einfo ("%P: can not init BFD: %E\n");
1385+ fatal ("%F%P: can not init BFD: %E\n");
1386 }
1387
1388
1389diff --git a/ld/emultempl/loongarchelf.em b/ld/emultempl/loongarchelf.em
1390index 5a3d7b79..153094b0 100644
1391--- a/ld/emultempl/loongarchelf.em
1392+++ b/ld/emultempl/loongarchelf.em
1393@@ -71,7 +71,7 @@ gld${EMULATION_NAME}_after_allocation (void)
1394 if (!_bfd_elf_map_sections_to_segments (link_info.output_bfd,
1395 &link_info,
1396 NULL))
1397- fatal (_("%P: map sections to segments failed: %E\n"));
1398+ fatal (_("%F%P: map sections to segments failed: %E\n"));
1399 }
1400
1401 /* Adjust program header size and .eh_frame_hdr size before
1402diff --git a/ld/emultempl/m68hc1xelf.em b/ld/emultempl/m68hc1xelf.em
1403index 36f5f068..fe6dd85b 100644
1404--- a/ld/emultempl/m68hc1xelf.em
1405+++ b/ld/emultempl/m68hc1xelf.em
1406@@ -159,7 +159,7 @@ m68hc11elf_create_output_section_statements (void)
1407 bfd_get_arch (link_info.output_bfd),
1408 bfd_get_mach (link_info.output_bfd)))
1409 {
1410- fatal (_("%P: can not create BFD: %E\n"));
1411+ fatal (_("%F%P: can not create BFD: %E\n"));
1412 return;
1413 }
1414
1415diff --git a/ld/emultempl/m68kelf.em b/ld/emultempl/m68kelf.em
1416index f9a5bec2..e6eed5cc 100644
1417--- a/ld/emultempl/m68kelf.em
1418+++ b/ld/emultempl/m68kelf.em
1419@@ -82,7 +82,7 @@ m68k_elf_after_open (void)
1420 asection *datasec;
1421
1422 if (bfd_get_flavour (abfd) != bfd_target_elf_flavour)
1423- fatal (_("%P: %pB: all input objects must be ELF "
1424+ fatal (_("%F%P: %pB: all input objects must be ELF "
1425 "for --embedded-relocs\n"));
1426
1427 datasec = bfd_get_section_by_name (abfd, ".data");
1428@@ -106,7 +106,7 @@ m68k_elf_after_open (void)
1429 if (relsec == NULL
1430 || !bfd_set_section_alignment (relsec, 2)
1431 || !bfd_set_section_size (relsec, datasec->reloc_count * 12))
1432- fatal (_("%P: %pB: can not create .emreloc section: %E\n"));
1433+ fatal (_("%F%P: %pB: can not create .emreloc section: %E\n"));
1434 }
1435
1436 /* Double check that all other data sections are empty, as is
1437diff --git a/ld/emultempl/metagelf.em b/ld/emultempl/metagelf.em
1438index 313d7ed5..95655ad0 100644
1439--- a/ld/emultempl/metagelf.em
1440+++ b/ld/emultempl/metagelf.em
1441@@ -59,7 +59,7 @@ metagelf_create_output_section_statements (void)
1442 bfd_get_arch (link_info.output_bfd),
1443 bfd_get_mach (link_info.output_bfd)))
1444 {
1445- fatal (_("%P: can not create BFD: %E\n"));
1446+ fatal (_("%F%P: can not create BFD: %E\n"));
1447 return;
1448 }
1449
1450@@ -309,7 +309,7 @@ PARSE_AND_LIST_ARGS_CASES='
1451 const char *end;
1452 group_size = bfd_scan_vma (optarg, &end, 0);
1453 if (*end)
1454- fatal (_("%P: invalid number `%s'\''\n"), optarg);
1455+ fatal (_("%F%P: invalid number `%s'\''\n"), optarg);
1456 }
1457 break;
1458 '
1459diff --git a/ld/emultempl/mipself.em b/ld/emultempl/mipself.em
1460index 2a22ba49..a4f158b7 100644
1461--- a/ld/emultempl/mipself.em
1462+++ b/ld/emultempl/mipself.em
1463@@ -152,7 +152,7 @@ mips_add_stub_section (const char *stub_sec_name, asection *input_section,
1464 bfd_get_arch (link_info.output_bfd),
1465 bfd_get_mach (link_info.output_bfd)))
1466 {
1467- fatal (_("%P: can not create BFD: %E\n"));
1468+ fatal (_("%F%P: can not create BFD: %E\n"));
1469 return NULL;
1470 }
1471 stub_bfd->flags |= BFD_LINKER_CREATED;
1472diff --git a/ld/emultempl/mmix-elfnmmo.em b/ld/emultempl/mmix-elfnmmo.em
1473index 03186363..c4288d82 100644
1474--- a/ld/emultempl/mmix-elfnmmo.em
1475+++ b/ld/emultempl/mmix-elfnmmo.em
1476@@ -113,7 +113,7 @@ mmix_after_allocation (void)
1477 bfd_set_section_vma (sec, 0);
1478
1479 if (!_bfd_mmix_after_linker_allocation (link_info.output_bfd, &link_info))
1480- fatal (_("%P: can't finalize linker-allocated global registers\n"));
1481+ fatal (_("%F%P: can't finalize linker-allocated global registers\n"));
1482 }
1483 EOF
1484
1485diff --git a/ld/emultempl/nds32elf.em b/ld/emultempl/nds32elf.em
1486index 36260573..8598d0a8 100644
1487--- a/ld/emultempl/nds32elf.em
1488+++ b/ld/emultempl/nds32elf.em
1489@@ -44,7 +44,7 @@ nds32_elf_create_output_section_statements (void)
1490 if (strstr (bfd_get_target (link_info.output_bfd), "nds32") == NULL)
1491 {
1492 /* Check the output target is nds32. */
1493- fatal (_("%P: error: cannot change output format whilst "
1494+ fatal (_("%F%P: error: cannot change output format whilst "
1495 "linking %s binaries\n"), "NDS32");
1496 return;
1497 }
1498@@ -96,7 +96,7 @@ nds32_elf_after_open (void)
1499 && abi_ver != (elf_elfheader (abfd)->e_flags & EF_NDS_ABI))
1500 {
1501 /* Incompatible objects. */
1502- fatal (_("%P: %pB: ABI version of object files mismatched\n"),
1503+ fatal (_("%F%P: %pB: ABI version of object files mismatched\n"),
1504 abfd);
1505 }
1506 }
1507@@ -195,7 +195,7 @@ PARSE_AND_LIST_ARGS_CASES='
1508 {
1509 sym_ld_script = fopen (optarg, FOPEN_WT);
1510 if(sym_ld_script == NULL)
1511- fatal (_("%P: cannot open map file %s: %E\n"), optarg);
1512+ fatal (_("%F%P: cannot open map file %s: %E\n"), optarg);
1513 }
1514 break;
1515 case OPTION_HYPER_RELAX:
1516diff --git a/ld/emultempl/nto.em b/ld/emultempl/nto.em
1517index 609d0217..bed2d374 100644
1518--- a/ld/emultempl/nto.em
1519+++ b/ld/emultempl/nto.em
1520@@ -51,7 +51,7 @@ nto_create_QNX_note_section(int type)
1521 is called before this function, stub_file should already be defined. */
1522 if (!stub_file)
1523 {
1524- fatal (_("%P: cannot create .note section in stub BFD.\n"));
1525+ fatal (_("%F%P: cannot create .note section in stub BFD.\n"));
1526 return NULL;
1527 }
1528
1529@@ -60,7 +60,7 @@ nto_create_QNX_note_section(int type)
1530 note_sec = bfd_make_section_anyway_with_flags (stub_file->the_bfd, ".note", flags);
1531 if (! note_sec)
1532 {
1533- fatal (_("%P: failed to create .note section\n"));
1534+ fatal (_("%F%P: failed to create .note section\n"));
1535 return NULL;
1536 }
1537
1538@@ -101,7 +101,7 @@ nto_lookup_QNX_note_section(int type)
1539 sec->contents = xmalloc(sec->size);
1540 if (!bfd_get_section_contents (sec->owner, sec, sec->contents, (file_ptr) 0,
1541 sec->size))
1542- fatal (_("%P: %pB: can't read contents of section .note: %E\n"),
1543+ fatal (_("%F%P: %pB: can't read contents of section .note: %E\n"),
1544 sec->owner);
1545
1546 e_note = (Elf_External_Note *) sec->contents;
1547@@ -144,7 +144,7 @@ nto_add_note_section (void) {
1548
1549 if (nto_lazy_stack && !link_info.stacksize)
1550 {
1551- fatal (_("%P: error: --lazy-stack must follow -zstack-size=<size>\n"));
1552+ fatal (_("%F%P: error: --lazy-stack must follow -zstack-size=<size>\n"));
1553 return;
1554 }
1555
1556@@ -216,7 +216,7 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}'
1557 char *end;
1558 link_info.stacksize = strtoul (optarg, &end, 0);
1559 if (*end || link_info.stacksize < 0)
1560- fatal (_("%P: invalid stack size `%s'\''\n"), optarg + 11);
1561+ fatal (_("%F%P: invalid stack size `%s'\''\n"), optarg + 11);
1562 if (!link_info.stacksize)
1563 /* Use -1 for explicit no-stack, because zero means
1564 'default'. */
1565diff --git a/ld/emultempl/pe.em b/ld/emultempl/pe.em
1566index 4cb1488e..3eeaffec 100644
1567--- a/ld/emultempl/pe.em
1568+++ b/ld/emultempl/pe.em
1569@@ -726,7 +726,7 @@ set_pe_subsystem (void)
1570
1571 if (v[i].name == NULL)
1572 {
1573- fatal (_("%P: invalid subsystem type %s\n"), optarg);
1574+ fatal (_("%F%P: invalid subsystem type %s\n"), optarg);
1575 return;
1576 }
1577
1578@@ -747,7 +747,7 @@ set_pe_value (char *name)
1579 set_pe_name (name, strtoul (optarg, &end, 0));
1580
1581 if (end == optarg)
1582- fatal (_("%P: invalid hex number for PE parameter '%s'\n"), optarg);
1583+ fatal (_("%F%P: invalid hex number for PE parameter '%s'\n"), optarg);
1584
1585 optarg = end;
1586 }
1587@@ -764,7 +764,7 @@ set_pe_stack_heap (char *resname, char *comname)
1588 set_pe_value (comname);
1589 }
1590 else if (*optarg)
1591- fatal (_("%P: strange hex info for PE parameter '%s'\n"), optarg);
1592+ fatal (_("%F%P: strange hex info for PE parameter '%s'\n"), optarg);
1593 }
1594
1595 #define DEFAULT_BUILD_ID_STYLE "md5"
1596@@ -780,7 +780,7 @@ gld${EMULATION_NAME}_handle_option (int optc)
1597 case OPTION_BASE_FILE:
1598 link_info.base_file = fopen (optarg, FOPEN_WB);
1599 if (link_info.base_file == NULL)
1600- fatal (_("%P: cannot open base file %s\n"), optarg);
1601+ fatal (_("%F%P: cannot open base file %s\n"), optarg);
1602 break;
1603
1604 /* PE options. */
1605@@ -1309,7 +1309,7 @@ make_runtime_ref (void)
1606 = bfd_wrapped_link_hash_lookup (link_info.output_bfd, &link_info,
1607 rr, true, false, true);
1608 if (!h)
1609- fatal (_("%P: bfd_link_hash_lookup failed: %E\n"));
1610+ fatal (_("%F%P: bfd_link_hash_lookup failed: %E\n"));
1611 else
1612 {
1613 if (h->type == bfd_link_hash_new)
1614@@ -1607,7 +1607,7 @@ gld${EMULATION_NAME}_after_open (void)
1615 if (bfd_get_flavour (link_info.output_bfd) != bfd_target_coff_flavour
1616 || coff_data (link_info.output_bfd) == NULL
1617 || !obj_pe (link_info.output_bfd))
1618- fatal (_("%P: cannot perform PE operations on non PE output file '%pB'\n"),
1619+ fatal (_("%F%P: cannot perform PE operations on non PE output file '%pB'\n"),
1620 link_info.output_bfd);
1621
1622 pe_data (link_info.output_bfd)->pe_opthdr = pe;
1623@@ -1680,7 +1680,7 @@ gld${EMULATION_NAME}_after_open (void)
1624 These will only be created if the output format is an arm format,
1625 hence we do not support linking and changing output formats at the
1626 same time. Use a link followed by objcopy to change output formats. */
1627- fatal (_("%P: error: cannot change output format "
1628+ fatal (_("%F%P: error: cannot change output format "
1629 "whilst linking %s binaries\n"), "ARM");
1630 return;
1631 }
1632@@ -1740,7 +1740,7 @@ gld${EMULATION_NAME}_after_open (void)
1633
1634 if (!bfd_generic_link_read_symbols (is->the_bfd))
1635 {
1636- fatal (_("%P: %pB: could not read symbols: %E\n"),
1637+ fatal (_("%F%P: %pB: could not read symbols: %E\n"),
1638 is->the_bfd);
1639 return;
1640 }
1641@@ -1912,7 +1912,7 @@ gld${EMULATION_NAME}_after_open (void)
1642
1643 if (!bfd_generic_link_read_symbols (is->the_bfd))
1644 {
1645- fatal (_("%P: %pB: could not read symbols: %E\n"),
1646+ fatal (_("%F%P: %pB: could not read symbols: %E\n"),
1647 is->the_bfd);
1648 return;
1649 }
1650@@ -2023,7 +2023,7 @@ gld${EMULATION_NAME}_unrecognized_file (lang_input_statement_type *entry ATTRIBU
1651
1652 h = bfd_link_hash_lookup (link_info.hash, buf, true, true, true);
1653 if (h == (struct bfd_link_hash_entry *) NULL)
1654- fatal (_("%P: bfd_link_hash_lookup failed: %E\n"));
1655+ fatal (_("%F%P: bfd_link_hash_lookup failed: %E\n"));
1656 if (h->type == bfd_link_hash_new)
1657 {
1658 h->type = bfd_link_hash_undefined;
1659diff --git a/ld/emultempl/pep.em b/ld/emultempl/pep.em
1660index 2d033dd3..ac0e192f 100644
1661--- a/ld/emultempl/pep.em
1662+++ b/ld/emultempl/pep.em
1663@@ -698,7 +698,7 @@ set_pep_subsystem (void)
1664
1665 if (v[i].name == NULL)
1666 {
1667- fatal (_("%P: invalid subsystem type %s\n"), optarg);
1668+ fatal (_("%F%P: invalid subsystem type %s\n"), optarg);
1669 return;
1670 }
1671
1672@@ -719,7 +719,7 @@ set_pep_value (char *name)
1673 set_pep_name (name, (bfd_vma) strtoull (optarg, &end, 0));
1674
1675 if (end == optarg)
1676- fatal (_("%P: invalid hex number for PE parameter '%s'\n"), optarg);
1677+ fatal (_("%F%P: invalid hex number for PE parameter '%s'\n"), optarg);
1678
1679 optarg = end;
1680 }
1681@@ -736,7 +736,7 @@ set_pep_stack_heap (char *resname, char *comname)
1682 set_pep_value (comname);
1683 }
1684 else if (*optarg)
1685- fatal (_("%P: strange hex info for PE parameter '%s'\n"), optarg);
1686+ fatal (_("%F%P: strange hex info for PE parameter '%s'\n"), optarg);
1687 }
1688
1689 #define DEFAULT_BUILD_ID_STYLE "md5"
1690@@ -753,7 +753,7 @@ gld${EMULATION_NAME}_handle_option (int optc)
1691 case OPTION_BASE_FILE:
1692 link_info.base_file = fopen (optarg, FOPEN_WB);
1693 if (link_info.base_file == NULL)
1694- fatal (_("%P: cannot open base file %s\n"), optarg);
1695+ fatal (_("%F%P: cannot open base file %s\n"), optarg);
1696 break;
1697
1698 /* PE options. */
1699@@ -1306,7 +1306,7 @@ make_runtime_ref (void)
1700 = bfd_wrapped_link_hash_lookup (link_info.output_bfd, &link_info,
1701 rr, true, false, true);
1702 if (!h)
1703- fatal (_("%P: bfd_link_hash_lookup failed: %E\n"));
1704+ fatal (_("%F%P: bfd_link_hash_lookup failed: %E\n"));
1705 else
1706 {
1707 if (h->type == bfd_link_hash_new)
1708@@ -1606,7 +1606,7 @@ gld${EMULATION_NAME}_after_open (void)
1709 if (bfd_get_flavour (link_info.output_bfd) != bfd_target_coff_flavour
1710 || coff_data (link_info.output_bfd) == NULL
1711 || !obj_pe (link_info.output_bfd))
1712- fatal (_("%P: cannot perform PE operations on non PE output file '%pB'\n"),
1713+ fatal (_("%F%P: cannot perform PE operations on non PE output file '%pB'\n"),
1714 link_info.output_bfd);
1715
1716 pe_data (link_info.output_bfd)->pe_opthdr = pep;
1717@@ -1718,7 +1718,7 @@ gld${EMULATION_NAME}_after_open (void)
1718
1719 if (!bfd_generic_link_read_symbols (is->the_bfd))
1720 {
1721- fatal (_("%P: %pB: could not read symbols: %E\n"),
1722+ fatal (_("%F%P: %pB: could not read symbols: %E\n"),
1723 is->the_bfd);
1724 return;
1725 }
1726@@ -1907,7 +1907,7 @@ gld${EMULATION_NAME}_unrecognized_file (lang_input_statement_type *entry ATTRIBU
1727
1728 h = bfd_link_hash_lookup (link_info.hash, buf, true, true, true);
1729 if (h == (struct bfd_link_hash_entry *) NULL)
1730- fatal (_("%P: bfd_link_hash_lookup failed: %E\n"));
1731+ fatal (_("%F%P: bfd_link_hash_lookup failed: %E\n"));
1732 if (h->type == bfd_link_hash_new)
1733 {
1734 h->type = bfd_link_hash_undefined;
1735diff --git a/ld/emultempl/ppc32elf.em b/ld/emultempl/ppc32elf.em
1736index ffacadc6..73bad022 100644
1737--- a/ld/emultempl/ppc32elf.em
1738+++ b/ld/emultempl/ppc32elf.em
1739@@ -386,7 +386,7 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}'
1740 char *end;
1741 unsigned long val = strtoul (optarg, &end, 0);
1742 if (*end || val > 5)
1743- fatal (_("%P: invalid --plt-align `%s'\''\n"), optarg);
1744+ fatal (_("%F%P: invalid --plt-align `%s'\''\n"), optarg);
1745 params.plt_stub_align = val;
1746 }
1747 else
1748@@ -419,7 +419,7 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}'
1749 if (*end
1750 || (params.pagesize < 4096 && params.pagesize != 0)
1751 || params.pagesize != (params.pagesize & -params.pagesize))
1752- fatal (_("%P: invalid pagesize `%s'\''\n"), optarg);
1753+ fatal (_("%F%P: invalid pagesize `%s'\''\n"), optarg);
1754 }
1755 break;
1756
1757diff --git a/ld/emultempl/ppc64elf.em b/ld/emultempl/ppc64elf.em
1758index 92bf4f58..a884f6b5 100644
1759--- a/ld/emultempl/ppc64elf.em
1760+++ b/ld/emultempl/ppc64elf.em
1761@@ -91,7 +91,7 @@ ppc_create_output_section_statements (void)
1762 bfd_get_arch (link_info.output_bfd),
1763 bfd_get_mach (link_info.output_bfd)))
1764 {
1765- fatal (_("%P: can not create BFD: %E\n"));
1766+ fatal (_("%F%P: can not create BFD: %E\n"));
1767 return;
1768 }
1769
1770@@ -101,7 +101,7 @@ ppc_create_output_section_statements (void)
1771 if (params.save_restore_funcs < 0)
1772 params.save_restore_funcs = !bfd_link_relocatable (&link_info);
1773 if (!ppc64_elf_init_stub_bfd (&link_info, &params))
1774- fatal (_("%P: can not init BFD: %E\n"));
1775+ fatal (_("%F%P: can not init BFD: %E\n"));
1776 }
1777
1778 /* Called after opening files but before mapping sections. */
1779@@ -860,7 +860,7 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}'
1780 const char *end;
1781 params.group_size = bfd_scan_vma (optarg, &end, 0);
1782 if (*end)
1783- fatal (_("%P: invalid number `%s'\''\n"), optarg);
1784+ fatal (_("%F%P: invalid number `%s'\''\n"), optarg);
1785 }
1786 break;
1787
1788@@ -886,7 +886,7 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}'
1789 char *end;
1790 long val = strtol (optarg, &end, 0);
1791 if (*end || (unsigned long) val + 8 > 16)
1792- fatal (_("%P: invalid --plt-align `%s'\''\n"), optarg);
1793+ fatal (_("%F%P: invalid --plt-align `%s'\''\n"), optarg);
1794 params.plt_stub_align = val;
1795 }
1796 else
1797@@ -915,7 +915,7 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}'
1798 else if (strcasecmp (optarg, "no") == 0)
1799 params.power10_stubs = 0;
1800 else
1801- fatal (_("%P: invalid --power10-stubs argument `%s'\''\n"),
1802+ fatal (_("%F%P: invalid --power10-stubs argument `%s'\''\n"),
1803 optarg);
1804 }
1805 else
1806diff --git a/ld/emultempl/riscvelf.em b/ld/emultempl/riscvelf.em
1807index 006e4edb..d5012b33 100644
1808--- a/ld/emultempl/riscvelf.em
1809+++ b/ld/emultempl/riscvelf.em
1810@@ -141,7 +141,7 @@ riscv_create_output_section_statements (void)
1811 These will only be created if the output format is a RISC-V format,
1812 hence we do not support linking and changing output formats at the
1813 same time. Use a link followed by objcopy to change output formats. */
1814- fatal (_("%P: error: cannot change output format"
1815+ fatal (_("%F%P: error: cannot change output format"
1816 " whilst linking %s binaries\n"), "RISC-V");
1817 return;
1818 }
1819diff --git a/ld/emultempl/s390.em b/ld/emultempl/s390.em
1820index 0a93d76b..bb589069 100644
1821--- a/ld/emultempl/s390.em
1822+++ b/ld/emultempl/s390.em
1823@@ -34,7 +34,7 @@ static void
1824 s390_elf_create_output_section_statements (void)
1825 {
1826 if (!bfd_elf_s390_set_options (&link_info, &params))
1827- fatal (_("%P: can not init BFD: %E\n"));
1828+ fatal (_("%F%P: can not init BFD: %E\n"));
1829 }
1830
1831 EOF
1832diff --git a/ld/emultempl/scoreelf.em b/ld/emultempl/scoreelf.em
1833index 6413f330..e420a7bd 100644
1834--- a/ld/emultempl/scoreelf.em
1835+++ b/ld/emultempl/scoreelf.em
1836@@ -62,7 +62,7 @@ score_elf_after_open (void)
1837 These will only be created if the output format is an score format,
1838 hence we do not support linking and changing output formats at the
1839 same time. Use a link followed by objcopy to change output formats. */
1840- fatal (_("%P: error: cannot change output format "
1841+ fatal (_("%F%P: error: cannot change output format "
1842 "whilst linking %s binaries\n"), "S+core");
1843 return;
1844 }
1845diff --git a/ld/emultempl/spuelf.em b/ld/emultempl/spuelf.em
1846index c694b828..800cca30 100644
1847--- a/ld/emultempl/spuelf.em
1848+++ b/ld/emultempl/spuelf.em
1849@@ -202,7 +202,7 @@ spu_elf_load_ovl_mgr (void)
1850 /* User supplied __ovly_load. */
1851 }
1852 else if (mgr_stream->start == mgr_stream->end)
1853- fatal (_("%P: no built-in overlay manager\n"));
1854+ fatal (_("%F%P: no built-in overlay manager\n"));
1855 else
1856 {
1857 lang_input_statement_type *ovl_is;
1858@@ -379,7 +379,7 @@ spu_elf_open_overlay_script (void)
1859 if (script == NULL)
1860 {
1861 file_err:
1862- fatal (_("%P: can not open script: %E\n"));
1863+ fatal (_("%F%P: can not open script: %E\n"));
1864 }
1865 return script;
1866 }
1867@@ -719,7 +719,7 @@ PARSE_AND_LIST_ARGS_CASES='
1868 if (*end == 0)
1869 break;
1870 }
1871- fatal (_("%P: invalid --local-store address range `%s'\''\n"), optarg);
1872+ fatal (_("%F%P: invalid --local-store address range `%s'\''\n"), optarg);
1873 }
1874 break;
1875
1876@@ -755,12 +755,12 @@ PARSE_AND_LIST_ARGS_CASES='
1877 if (!num_lines_set)
1878 params.num_lines = 32;
1879 else if ((params.num_lines & -params.num_lines) != params.num_lines)
1880- fatal (_("%P: invalid --num-lines/--num-regions `%u'\''\n"),
1881+ fatal (_("%F%P: invalid --num-lines/--num-regions `%u'\''\n"),
1882 params.num_lines);
1883 if (!line_size_set)
1884 params.line_size = 1024;
1885 else if ((params.line_size & -params.line_size) != params.line_size)
1886- fatal (_("%P: invalid --line-size/--region-size `%u'\''\n"),
1887+ fatal (_("%F%P: invalid --line-size/--region-size `%u'\''\n"),
1888 params.line_size);
1889 break;
1890
1891@@ -781,7 +781,7 @@ PARSE_AND_LIST_ARGS_CASES='
1892 && (params.ovly_flavour != ovly_soft_icache
1893 || (params.num_lines & -params.num_lines) == params.num_lines))
1894 break;
1895- fatal (_("%P: invalid --num-lines/--num-regions `%s'\''\n"), optarg);
1896+ fatal (_("%F%P: invalid --num-lines/--num-regions `%s'\''\n"), optarg);
1897 }
1898 break;
1899
1900@@ -794,7 +794,7 @@ PARSE_AND_LIST_ARGS_CASES='
1901 && (params.ovly_flavour != ovly_soft_icache
1902 || (params.line_size & -params.line_size) == params.line_size))
1903 break;
1904- fatal (_("%P: invalid --line-size/--region-size `%s'\''\n"), optarg);
1905+ fatal (_("%F%P: invalid --line-size/--region-size `%s'\''\n"), optarg);
1906 }
1907 break;
1908
1909@@ -803,7 +803,7 @@ PARSE_AND_LIST_ARGS_CASES='
1910 char *end;
1911 params.auto_overlay_fixed = strtoul (optarg, &end, 0);
1912 if (*end != 0)
1913- fatal (_("%P: invalid --fixed-space value `%s'\''\n"), optarg);
1914+ fatal (_("%F%P: invalid --fixed-space value `%s'\''\n"), optarg);
1915 }
1916 break;
1917
1918@@ -812,7 +812,7 @@ PARSE_AND_LIST_ARGS_CASES='
1919 char *end;
1920 params.auto_overlay_reserved = strtoul (optarg, &end, 0);
1921 if (*end != 0)
1922- fatal (_("%P: invalid --reserved-space value `%s'\''\n"), optarg);
1923+ fatal (_("%F%P: invalid --reserved-space value `%s'\''\n"), optarg);
1924 }
1925 break;
1926
1927@@ -821,7 +821,7 @@ PARSE_AND_LIST_ARGS_CASES='
1928 char *end;
1929 params.extra_stack_space = strtol (optarg, &end, 0);
1930 if (*end != 0)
1931- fatal (_("%P: invalid --extra-stack-space value `%s'\''\n"), optarg);
1932+ fatal (_("%F%P: invalid --extra-stack-space value `%s'\''\n"), optarg);
1933 }
1934 break;
1935
1936diff --git a/ld/emultempl/tic6xdsbt.em b/ld/emultempl/tic6xdsbt.em
1937index a830be7e..7d3b97cc 100644
1938--- a/ld/emultempl/tic6xdsbt.em
1939+++ b/ld/emultempl/tic6xdsbt.em
1940@@ -59,7 +59,7 @@ tic6x_after_open (void)
1941 if (is_tic6x_target ())
1942 {
1943 if (params.dsbt_index >= params.dsbt_size)
1944- fatal (_("%P: invalid --dsbt-index %d, outside DSBT size\n"),
1945+ fatal (_("%F%P: invalid --dsbt-index %d, outside DSBT size\n"),
1946 params.dsbt_index);
1947 elf32_tic6x_setup (&link_info, &params);
1948 }
1949@@ -190,7 +190,7 @@ PARSE_AND_LIST_ARGS_CASES='
1950 if (*end == 0
1951 && params.dsbt_index >= 0 && params.dsbt_index < 0x7fff)
1952 break;
1953- fatal (_("%P: invalid --dsbt-index %s\n"), optarg);
1954+ fatal (_("%F%P: invalid --dsbt-index %s\n"), optarg);
1955 }
1956 break;
1957 case OPTION_DSBT_SIZE:
1958@@ -200,7 +200,7 @@ PARSE_AND_LIST_ARGS_CASES='
1959 if (*end == 0
1960 && params.dsbt_size >= 0 && params.dsbt_size < 0x7fff)
1961 break;
1962- fatal (_("%P: invalid --dsbt-size %s\n"), optarg);
1963+ fatal (_("%F%P: invalid --dsbt-size %s\n"), optarg);
1964 }
1965 break;
1966 case OPTION_NO_MERGE_EXIDX_ENTRIES:
1967diff --git a/ld/emultempl/ticoff.em b/ld/emultempl/ticoff.em
1968index bbf30f4a..5d0feede 100644
1969--- a/ld/emultempl/ticoff.em
1970+++ b/ld/emultempl/ticoff.em
1971@@ -88,7 +88,7 @@ gld${EMULATION_NAME}_handle_option (int optc)
1972 lang_add_output_format (buf, NULL, NULL, 0);
1973 }
1974 else
1975- fatal (_("%P: invalid COFF format version %s\n"), optarg);
1976+ fatal (_("%F%P: invalid COFF format version %s\n"), optarg);
1977 break;
1978 }
1979 return false;
1980diff --git a/ld/emultempl/v850elf.em b/ld/emultempl/v850elf.em
1981index 49ad2cc8..925e3994 100644
1982--- a/ld/emultempl/v850elf.em
1983+++ b/ld/emultempl/v850elf.em
1984@@ -63,7 +63,7 @@ v850_create_output_section_statements (void)
1985 These will only be created if the output format is an arm format,
1986 hence we do not support linking and changing output formats at the
1987 same time. Use a link followed by objcopy to change output formats. */
1988- fatal (_("%P: error: cannot change output format"
1989+ fatal (_("%F%P: error: cannot change output format"
1990 " whilst linking %s binaries\n"), "V850");
1991 return;
1992 }
1993diff --git a/ld/emultempl/vms.em b/ld/emultempl/vms.em
1994index 4ca2c942..1c7b426c 100644
1995--- a/ld/emultempl/vms.em
1996+++ b/ld/emultempl/vms.em
1997@@ -201,7 +201,7 @@ gld${EMULATION_NAME}_before_allocation (void)
1998 && bed->elf_backend_size_dynamic_sections
1999 && ! (*bed->elf_backend_size_dynamic_sections) (link_info.output_bfd,
2000 &link_info))
2001- fatal (_("%P: failed to set dynamic section sizes: %E\n"));
2002+ fatal (_("%F%P: failed to set dynamic section sizes: %E\n"));
2003
2004 before_allocation_default ();
2005 }
2006diff --git a/ld/emultempl/xtensaelf.em b/ld/emultempl/xtensaelf.em
2007index 208f730d..751e7762 100644
2008--- a/ld/emultempl/xtensaelf.em
2009+++ b/ld/emultempl/xtensaelf.em
2010@@ -388,7 +388,7 @@ check_xtensa_info (bfd *abfd, asection *info_sec)
2011
2012 data = xmalloc (info_sec->size);
2013 if (! bfd_get_section_contents (abfd, info_sec, data, 0, info_sec->size))
2014- fatal (_("%P: %pB: cannot read contents of section %pA\n"), abfd, info_sec);
2015+ fatal (_("%F%P: %pB: cannot read contents of section %pA\n"), abfd, info_sec);
2016
2017 if (info_sec->size > 24
2018 && info_sec->size >= 24 + bfd_get_32 (abfd, data + 4)
2019@@ -429,13 +429,13 @@ elf_xtensa_before_allocation (void)
2020 if (is_big_endian
2021 && link_info.output_bfd->xvec->byteorder == BFD_ENDIAN_LITTLE)
2022 {
2023- fatal (_("%P: little endian output does not match "
2024+ fatal (_("%F%P: little endian output does not match "
2025 "Xtensa configuration\n"));
2026 }
2027 if (!is_big_endian
2028 && link_info.output_bfd->xvec->byteorder == BFD_ENDIAN_BIG)
2029 {
2030- fatal (_("%P: big endian output does not match "
2031+ fatal (_("%F%P: big endian output does not match "
2032 "Xtensa configuration\n"));
2033 }
2034
2035@@ -454,7 +454,7 @@ elf_xtensa_before_allocation (void)
2036 cannot go any further if there are any mismatches. */
2037 if ((is_big_endian && f->the_bfd->xvec->byteorder == BFD_ENDIAN_LITTLE)
2038 || (!is_big_endian && f->the_bfd->xvec->byteorder == BFD_ENDIAN_BIG))
2039- fatal (_("%P: cross-endian linking for %pB not supported\n"),
2040+ fatal (_("%F%P: cross-endian linking for %pB not supported\n"),
2041 f->the_bfd);
2042
2043 if (! first_bfd)
2044@@ -485,7 +485,7 @@ elf_xtensa_before_allocation (void)
2045 info_sec = bfd_make_section_with_flags (first_bfd, ".xtensa.info",
2046 SEC_HAS_CONTENTS | SEC_READONLY);
2047 if (! info_sec)
2048- fatal (_("%P: failed to create .xtensa.info section\n"));
2049+ fatal (_("%F%P: failed to create .xtensa.info section\n"));
2050 }
2051 if (info_sec)
2052 {
2053@@ -1224,7 +1224,7 @@ ld_build_required_section_dependence (lang_statement_union_type *s)
2054 lang_statement_union_type *l = iter_stack_current (&stack);
2055
2056 if (l == NULL && link_info.non_contiguous_regions)
2057- fatal (_("%P: Relaxation not supported with "
2058+ fatal (_("%F%P: Relaxation not supported with "
2059 "--enable-non-contiguous-regions.\n"));
2060
2061 if (l->header.type == lang_input_section_enum)
2062diff --git a/ld/emultempl/z80.em b/ld/emultempl/z80.em
2063index 555f6024..06cfa72e 100644
2064--- a/ld/emultempl/z80.em
2065+++ b/ld/emultempl/z80.em
2066@@ -48,7 +48,7 @@ z80_after_open (void)
2067 const bfd_arch_info_type *info;
2068 info = bfd_arch_get_compatible (link_info.output_bfd, abfd, false);
2069 if (info == NULL)
2070- fatal (_("%P: %pB: Instruction sets of object files incompatible\n"),
2071+ fatal (_("%F%P: %pB: Instruction sets of object files incompatible\n"),
2072 abfd);
2073 else
2074 bfd_set_arch_info (link_info.output_bfd, info);
2075diff --git a/ld/ldcref.c b/ld/ldcref.c
2076index 572d4f4d..68dd2a5f 100644
2077--- a/ld/ldcref.c
2078+++ b/ld/ldcref.c
2079@@ -514,7 +514,7 @@ check_local_sym_xref (lang_input_statement_type *statement)
2080 return;
2081
2082 if (!bfd_generic_link_read_symbols (abfd))
2083- fatal (_("%P: %pB: could not read symbols: %E\n"), abfd);
2084+ fatal (_("%F%P: %pB: could not read symbols: %E\n"), abfd);
2085
2086 for (syms = bfd_get_outsymbols (abfd); *syms; ++syms)
2087 {
2088@@ -625,7 +625,7 @@ check_refs (const char *name,
2089 BFD might contain a prohibited cross reference. */
2090
2091 if (!bfd_generic_link_read_symbols (abfd))
2092- fatal (_("%P: %pB: could not read symbols: %E\n"), abfd);
2093+ fatal (_("%F%P: %pB: could not read symbols: %E\n"), abfd);
2094
2095 info.sym_name = name;
2096 info.global = global;
2097@@ -687,14 +687,14 @@ check_reloc_refs (bfd *abfd, asection *sec, void *iarg)
2098
2099 relsize = bfd_get_reloc_upper_bound (abfd, sec);
2100 if (relsize < 0)
2101- fatal (_("%P: %pB: could not read relocs: %E\n"), abfd);
2102+ fatal (_("%F%P: %pB: could not read relocs: %E\n"), abfd);
2103 if (relsize == 0)
2104 return;
2105
2106 relpp = (arelent **) xmalloc (relsize);
2107 relcount = bfd_canonicalize_reloc (abfd, sec, relpp, info->asymbols);
2108 if (relcount < 0)
2109- fatal (_("%P: %pB: could not read relocs: %E\n"), abfd);
2110+ fatal (_("%F%P: %pB: could not read relocs: %E\n"), abfd);
2111
2112 p = relpp;
2113 pend = p + relcount;
2114diff --git a/ld/ldelf.c b/ld/ldelf.c
2115index fb95b7a9..d8c0817b 100644
2116--- a/ld/ldelf.c
2117+++ b/ld/ldelf.c
2118@@ -94,7 +94,7 @@ ldelf_after_parse (void)
2119 else if (!link_info.maxpagesize_is_set)
2120 link_info.maxpagesize = link_info.commonpagesize;
2121 else
2122- fatal (_("%P: common page size (0x%v) > maximum page size (0x%v)\n"),
2123+ fatal (_("%F%P: common page size (0x%v) > maximum page size (0x%v)\n"),
2124 link_info.commonpagesize, link_info.maxpagesize);
2125 }
2126 }
2127@@ -120,7 +120,7 @@ ldelf_load_symbols (lang_input_statement_type *entry)
2128
2129 if (entry->flags.just_syms
2130 && (bfd_get_file_flags (entry->the_bfd) & DYNAMIC) != 0)
2131- fatal (_("%P: %pB: --just-symbols may not be used on DSO\n"),
2132+ fatal (_("%F%P: %pB: --just-symbols may not be used on DSO\n"),
2133 entry->the_bfd);
2134
2135 if (link_class == 0
2136@@ -320,7 +320,7 @@ ldelf_try_needed (struct dt_needed *needed, int force, int is_linux)
2137 struct bfd_link_needed_list *needs;
2138
2139 if (! bfd_elf_get_bfd_needed_list (abfd, &needs))
2140- fatal (_("%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n"), abfd);
2141+ fatal (_("%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n"), abfd);
2142
2143 if (needs != NULL)
2144 {
2145@@ -368,7 +368,7 @@ ldelf_try_needed (struct dt_needed *needed, int force, int is_linux)
2146 can only check that using stat. */
2147
2148 if (bfd_stat (abfd, &global_stat) != 0)
2149- fatal (_("%P: %pB: bfd_stat failed: %E\n"), abfd);
2150+ fatal (_("%F%P: %pB: bfd_stat failed: %E\n"), abfd);
2151
2152 /* First strip off everything before the last '/'. */
2153 soname = lbasename (bfd_get_filename (abfd));
2154@@ -407,7 +407,7 @@ ldelf_try_needed (struct dt_needed *needed, int force, int is_linux)
2155
2156 /* Add this file into the symbol table. */
2157 if (! bfd_link_add_symbols (abfd, &link_info))
2158- fatal (_("%P: %pB: error adding symbols: %E\n"), abfd);
2159+ fatal (_("%F%P: %pB: error adding symbols: %E\n"), abfd);
2160
2161 return true;
2162 }
2163@@ -1205,7 +1205,7 @@ ldelf_handle_dt_needed (struct elf_link_hash_table *htab,
2164 && elf_dt_name (abfd) != NULL)
2165 {
2166 if (bfd_elf_add_dt_needed_tag (abfd, &link_info) < 0)
2167- fatal (_("%P: failed to add DT_NEEDED dynamic tag\n"));
2168+ fatal (_("%F%P: failed to add DT_NEEDED dynamic tag\n"));
2169 }
2170
2171 link_info.input_bfds_tail = save_input_bfd_tail;
2172@@ -1256,7 +1256,7 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd,
2173 bfd_get_target (link_info.output_bfd));
2174
2175 if (link_info.out_implib_bfd == NULL)
2176- fatal (_("%P: %s: can't open for writing: %E\n"),
2177+ fatal (_("%F%P: %s: can't open for writing: %E\n"),
2178 command_line.out_implib_filename);
2179 }
2180
2181@@ -1311,7 +1311,7 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd,
2182 && (elf_tdata (abfd)->elf_header->e_type == ET_EXEC
2183 || (elf_tdata (abfd)->elf_header->e_type == ET_DYN
2184 && elf_tdata (abfd)->is_pie)))
2185- fatal (_("%P: cannot use executable file '%pB' as input to a link\n"),
2186+ fatal (_("%F%P: cannot use executable file '%pB' as input to a link\n"),
2187 abfd);
2188 }
2189
2190@@ -1365,7 +1365,7 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd,
2191 }
2192 else if (seen_type != type)
2193 {
2194- fatal (_("%P: compact frame descriptions incompatible with"
2195+ fatal (_("%F%P: compact frame descriptions incompatible with"
2196 " DWARF2 .eh_frame from %pB\n"),
2197 type == DWARF2_EH_HDR ? abfd : elfbfd);
2198 break;
2199@@ -1407,7 +1407,7 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd,
2200
2201 if (link_info.eh_frame_hdr_type == COMPACT_EH_HDR)
2202 if (!bfd_elf_parse_eh_frame_entries (NULL, &link_info))
2203- fatal (_("%P: failed to parse EH frame entries\n"));
2204+ fatal (_("%F%P: failed to parse EH frame entries\n"));
2205
2206 ldelf_handle_dt_needed (htab, use_libpath, native, is_linux,
2207 is_freebsd, elfsize, prefix);
2208@@ -1664,7 +1664,7 @@ ldelf_find_exp_assignment (etree_type *exp)
2209 &link_info,
2210 exp->assign.dst, provide,
2211 exp->assign.hidden))
2212- fatal (_("%P: failed to record assignment to %s: %E\n"),
2213+ fatal (_("%F%P: failed to record assignment to %s: %E\n"),
2214 exp->assign.dst);
2215 }
2216 ldelf_find_exp_assignment (exp->assign.src);
2217@@ -1844,7 +1844,7 @@ ldelf_before_allocation (char *audit, char *depaudit,
2218 command_line.filter_shlib, audit, depaudit,
2219 (const char * const *) command_line.auxiliary_filters,
2220 &link_info, &sinterp)))
2221- fatal (_("%P: failed to set dynamic section sizes: %E\n"));
2222+ fatal (_("%F%P: failed to set dynamic section sizes: %E\n"));
2223
2224 if (sinterp != NULL)
2225 {
2226@@ -1881,8 +1881,8 @@ ldelf_before_allocation (char *audit, char *depaudit,
2227 msg = (char *) xmalloc ((size_t) (sz + 1));
2228 if (! bfd_get_section_contents (is->the_bfd, s, msg,
2229 (file_ptr) 0, sz))
2230- fatal (_("%P: %pB: can't read contents of section %pA: %E\n"),
2231- is->the_bfd, s);
2232+ fatal (_("%F%P: %pB: can't read contents of section .gnu.warning: %E\n"),
2233+ is->the_bfd);
2234 msg[sz] = '\0';
2235 (*link_info.callbacks->warning) (&link_info, msg,
2236 (const char *) NULL, is->the_bfd,
2237@@ -1909,7 +1909,7 @@ ldelf_before_allocation (char *audit, char *depaudit,
2238 before_allocation_default ();
2239
2240 if (!bfd_elf_size_dynsym_hash_dynstr (link_info.output_bfd, &link_info))
2241- fatal (_("%P: failed to set dynamic section sizes: %E\n"));
2242+ fatal (_("%F%P: failed to set dynamic section sizes: %E\n"));
2243
2244 if (ehdr_start != NULL)
2245 {
2246diff --git a/ld/ldelfgen.c b/ld/ldelfgen.c
2247index 1b1e49ce..cceefc6d 100644
2248--- a/ld/ldelfgen.c
2249+++ b/ld/ldelfgen.c
2250@@ -282,7 +282,7 @@ ldelf_map_segments (bool need_layout)
2251 if (os_info->ordered != os_info->count
2252 && bfd_link_relocatable (&link_info))
2253 {
2254- fatal (_("%P: "
2255+ fatal (_("%F%P: "
2256 "%pA has both ordered and unordered sections\n"),
2257 os->bfd_section);
2258 return;
2259@@ -307,7 +307,7 @@ ldelf_map_segments (bool need_layout)
2260 if (!_bfd_elf_map_sections_to_segments (link_info.output_bfd,
2261 &link_info,
2262 &need_layout))
2263- fatal (_("%P: map sections to segments failed: %E\n"));
2264+ fatal (_("%F%P: map sections to segments failed: %E\n"));
2265
2266 if (phdr_size != elf_program_header_size (link_info.output_bfd))
2267 {
2268@@ -327,7 +327,7 @@ ldelf_map_segments (bool need_layout)
2269 while (need_layout && --tries);
2270
2271 if (tries == 0)
2272- fatal (_("%P: looping in map_segments\n"));
2273+ fatal (_("%F%P: looping in map_segments\n"));
2274
2275 if (bfd_get_flavour (link_info.output_bfd) == bfd_target_elf_flavour
2276 && lang_phdr_list == NULL)
2277@@ -338,7 +338,7 @@ ldelf_map_segments (bool need_layout)
2278 = get_elf_backend_data (link_info.output_bfd);
2279 if (bed->elf_backend_strip_zero_sized_dynamic_sections
2280 && !bed->elf_backend_strip_zero_sized_dynamic_sections (&link_info))
2281- fatal (_("%P: failed to strip zero-sized dynamic sections\n"));
2282+ fatal (_("%F%P: failed to strip zero-sized dynamic sections\n"));
2283 }
2284 }
2285
2286@@ -416,7 +416,7 @@ ldelf_acquire_strings_for_ctf
2287 {
2288 if (ctf_link_add_strtab (ctf_output, ldelf_ctf_strtab_iter_cb,
2289 &args) < 0)
2290- fatal (_("%P: warning: CTF strtab association failed; strings will "
2291+ fatal (_("%F%P: warning: CTF strtab association failed; strings will "
2292 "not be shared: %s\n"),
2293 ctf_errmsg (ctf_errno (ctf_output)));
2294 }
2295@@ -443,7 +443,7 @@ ldelf_new_dynsym_for_ctf (struct ctf_dict *ctf_output, int symidx,
2296 lsym.st_value = sym->st_value;
2297 if (ctf_link_add_linker_symbol (ctf_output, &lsym) < 0)
2298 {
2299- fatal (_("%P: warning: CTF symbol addition failed; CTF will "
2300+ fatal (_("%F%P: warning: CTF symbol addition failed; CTF will "
2301 "not be tied to symbols: %s\n"),
2302 ctf_errmsg (ctf_errno (ctf_output)));
2303 }
2304@@ -453,7 +453,7 @@ ldelf_new_dynsym_for_ctf (struct ctf_dict *ctf_output, int symidx,
2305 /* Shuffle all the symbols. */
2306
2307 if (ctf_link_shuffle_syms (ctf_output) < 0)
2308- fatal (_("%P: warning: CTF symbol shuffling failed; CTF will "
2309+ fatal (_("%F%P: warning: CTF symbol shuffling failed; CTF will "
2310 "not be tied to symbols: %s\n"),
2311 ctf_errmsg (ctf_errno (ctf_output)));
2312 }
2313diff --git a/ld/ldexp.c b/ld/ldexp.c
2314index 45dffbc6..86f82a09 100644
2315--- a/ld/ldexp.c
2316+++ b/ld/ldexp.c
2317@@ -282,7 +282,7 @@ definedness_newfunc (struct bfd_hash_entry *entry,
2318 bfd_hash_allocate (table, sizeof (struct definedness_hash_entry));
2319
2320 if (ret == NULL)
2321- fatal (_("%P: bfd_hash_allocate failed creating symbol %s\n"), name);
2322+ fatal (_("%F%P: bfd_hash_allocate failed creating symbol %s\n"), name);
2323
2324 ret->by_object = 0;
2325 ret->iteration = 0;
2326@@ -313,7 +313,7 @@ update_definedness (const char *name, struct bfd_link_hash_entry *h)
2327 bfd_hash_lookup (&definedness_table, name, true, false);
2328
2329 if (defentry == NULL)
2330- fatal (_("%P: bfd_hash_lookup failed creating symbol %s\n"), name);
2331+ fatal (_("%F%P: bfd_hash_lookup failed creating symbol %s\n"), name);
2332
2333 /* If the symbol was already defined, and not by a script, then it
2334 must be defined by an object file or by the linker target code. */
2335@@ -638,7 +638,7 @@ fold_binary (etree_type *tree)
2336 expld.result.value = ((bfd_signed_vma) lhs.value
2337 % (bfd_signed_vma) expld.result.value);
2338 else if (expld.phase != lang_mark_phase_enum)
2339- fatal (_("%P:%pS %% by zero\n"), tree->binary.rhs);
2340+ fatal (_("%F%P:%pS %% by zero\n"), tree->binary.rhs);
2341 arith_result_section (&lhs);
2342 break;
2343
2344@@ -647,7 +647,7 @@ fold_binary (etree_type *tree)
2345 expld.result.value = ((bfd_signed_vma) lhs.value
2346 / (bfd_signed_vma) expld.result.value);
2347 else if (expld.phase != lang_mark_phase_enum)
2348- fatal (_("%P:%pS / by zero\n"), tree->binary.rhs);
2349+ fatal (_("%F%P:%pS / by zero\n"), tree->binary.rhs);
2350 arith_result_section (&lhs);
2351 break;
2352
2353@@ -761,7 +761,7 @@ fold_name (etree_type *tree)
2354 if (!h)
2355 {
2356 if (expld.phase != lang_first_phase_enum)
2357- fatal (_("%P: bfd_link_hash_lookup failed: %E\n"));
2358+ fatal (_("%F%P: bfd_link_hash_lookup failed: %E\n"));
2359 }
2360 else if (h->type == bfd_link_hash_defined
2361 || h->type == bfd_link_hash_defweak)
2362@@ -789,7 +789,7 @@ fold_name (etree_type *tree)
2363 else if (expld.phase == lang_final_phase_enum
2364 || (expld.phase != lang_mark_phase_enum
2365 && expld.assigning_to_dot))
2366- fatal (_("%P:%pS: undefined symbol `%s'"
2367+ fatal (_("%F%P:%pS: undefined symbol `%s'"
2368 " referenced in expression\n"),
2369 tree, tree->name.name);
2370 else if (h->type == bfd_link_hash_new)
2371@@ -827,7 +827,7 @@ fold_name (etree_type *tree)
2372 if (os == NULL)
2373 {
2374 if (expld.phase == lang_final_phase_enum)
2375- fatal (_("%P:%pS: undefined section `%s'"
2376+ fatal (_("%F%P:%pS: undefined section `%s'"
2377 " referenced in expression\n"),
2378 tree, tree->name.name);
2379 }
2380@@ -845,7 +845,7 @@ fold_name (etree_type *tree)
2381 if (os == NULL)
2382 {
2383 if (expld.phase == lang_final_phase_enum)
2384- fatal (_("%P:%pS: undefined section `%s'"
2385+ fatal (_("%F%P:%pS: undefined section `%s'"
2386 " referenced in expression\n"),
2387 tree, tree->name.name);
2388 }
2389@@ -873,7 +873,7 @@ fold_name (etree_type *tree)
2390 if (os == NULL)
2391 {
2392 if (expld.phase == lang_final_phase_enum)
2393- fatal (_("%P:%pS: undefined section `%s'"
2394+ fatal (_("%F%P:%pS: undefined section `%s'"
2395 " referenced in expression\n"),
2396 tree, tree->name.name);
2397 new_number (0);
2398@@ -912,7 +912,7 @@ fold_name (etree_type *tree)
2399 if (mem != NULL)
2400 new_number (mem->length);
2401 else
2402- fatal (_("%P:%pS: undefined MEMORY region `%s'"
2403+ fatal (_("%F%P:%pS: undefined MEMORY region `%s'"
2404 " referenced in expression\n"),
2405 tree, tree->name.name);
2406 }
2407@@ -926,7 +926,7 @@ fold_name (etree_type *tree)
2408 if (mem != NULL)
2409 new_rel_from_abs (mem->origin);
2410 else
2411- fatal (_("%P:%pS: undefined MEMORY region `%s'"
2412+ fatal (_("%F%P:%pS: undefined MEMORY region `%s'"
2413 " referenced in expression\n"),
2414 tree, tree->name.name);
2415 }
2416@@ -938,7 +938,7 @@ fold_name (etree_type *tree)
2417 else if (strcmp (tree->name.name, "COMMONPAGESIZE") == 0)
2418 new_number (link_info.commonpagesize);
2419 else
2420- fatal (_("%P:%pS: unknown constant `%s' referenced in expression\n"),
2421+ fatal (_("%F%P:%pS: unknown constant `%s' referenced in expression\n"),
2422 tree, tree->name.name);
2423 break;
2424
2425@@ -1086,7 +1086,7 @@ exp_fold_tree_1 (etree_type *tree)
2426 if (tree->assign.dst[0] == '.' && tree->assign.dst[1] == 0)
2427 {
2428 if (tree->type.node_class != etree_assign)
2429- fatal (_("%P:%pS can not PROVIDE assignment to"
2430+ fatal (_("%F%P:%pS can not PROVIDE assignment to"
2431 " location counter\n"), tree);
2432 if (expld.phase != lang_first_phase_enum)
2433 {
2434@@ -1119,11 +1119,11 @@ exp_fold_tree_1 (etree_type *tree)
2435 || expld.section == bfd_und_section_ptr)
2436 {
2437 if (expld.phase != lang_mark_phase_enum)
2438- fatal (_("%P:%pS invalid assignment to"
2439+ fatal (_("%F%P:%pS invalid assignment to"
2440 " location counter\n"), tree);
2441 }
2442 else if (expld.dotp == NULL)
2443- fatal (_("%P:%pS assignment to location counter"
2444+ fatal (_("%F%P:%pS assignment to location counter"
2445 " invalid outside of SECTIONS\n"), tree);
2446
2447 /* After allocation, assignment to dot should not be
2448@@ -1142,7 +1142,7 @@ exp_fold_tree_1 (etree_type *tree)
2449 nextdot += expld.section->vma;
2450 if (nextdot < expld.dot
2451 && expld.section != bfd_abs_section_ptr)
2452- fatal (_("%P:%pS cannot move location counter backwards"
2453+ fatal (_("%F%P:%pS cannot move location counter backwards"
2454 " (from %V to %V)\n"),
2455 tree, expld.dot, nextdot);
2456 else
2457@@ -1202,7 +1202,7 @@ exp_fold_tree_1 (etree_type *tree)
2458 h = bfd_link_hash_lookup (link_info.hash, tree->assign.dst,
2459 true, false, true);
2460 if (h == NULL)
2461- fatal (_("%P:%s: hash creation failed\n"),
2462+ fatal (_("%F%P:%s: hash creation failed\n"),
2463 tree->assign.dst);
2464 }
2465
2466@@ -1578,7 +1578,7 @@ exp_get_vma (etree_type *tree, lang_output_section_statement_type *os,
2467 if (expld.result.valid_p)
2468 return expld.result.value;
2469 else if (name != NULL && expld.phase != lang_mark_phase_enum)
2470- fatal (_("%P:%pS: nonconstant expression for %s\n"),
2471+ fatal (_("%F%P:%pS: nonconstant expression for %s\n"),
2472 tree, name);
2473 }
2474 return def;
2475@@ -1621,7 +1621,7 @@ exp_get_fill (etree_type *tree, fill_type *def, char *name)
2476 if (!expld.result.valid_p)
2477 {
2478 if (name != NULL && expld.phase != lang_mark_phase_enum)
2479- fatal (_("%P:%pS: nonconstant expression for %s\n"),
2480+ fatal (_("%F%P:%pS: nonconstant expression for %s\n"),
2481 tree, name);
2482 return def;
2483 }
2484@@ -1681,7 +1681,7 @@ exp_get_abs_int (etree_type *tree, int def, char *name)
2485 }
2486 else if (name != NULL && expld.phase != lang_mark_phase_enum)
2487 {
2488- fatal (_("%P:%pS: nonconstant expression for %s\n"),
2489+ fatal (_("%F%P:%pS: nonconstant expression for %s\n"),
2490 tree, name);
2491 }
2492 }
2493@@ -1707,7 +1707,7 @@ ldexp_init (void)
2494 definedness_newfunc,
2495 sizeof (struct definedness_hash_entry),
2496 13))
2497- fatal (_("%P: can not create hash table: %E\n"));
2498+ fatal (_("%F%P: can not create hash table: %E\n"));
2499 }
2500
2501 /* Convert absolute symbols defined by a script from "dot" (also
2502diff --git a/ld/ldfile.c b/ld/ldfile.c
2503index ddab0d37..040a8886 100644
2504--- a/ld/ldfile.c
2505+++ b/ld/ldfile.c
2506@@ -183,7 +183,7 @@ ldfile_add_remap_file (const char * file)
2507
2508 if (*p == '\0')
2509 {
2510- fatal ("%P: malformed remap file entry: %s\n", line);
2511+ fatal ("%F%P: malformed remap file entry: %s\n", line);
2512 continue;
2513 }
2514
2515@@ -195,7 +195,7 @@ ldfile_add_remap_file (const char * file)
2516
2517 if (*p == '\0')
2518 {
2519- fatal ("%P: malformed remap file entry: %s\n", line);
2520+ fatal ("%F%P: malformed remap file entry: %s\n", line);
2521 continue;
2522 }
2523
2524@@ -365,7 +365,7 @@ ldfile_try_open_bfd (const char *attempt,
2525 if (entry->the_bfd == NULL)
2526 {
2527 if (bfd_get_error () == bfd_error_invalid_target)
2528- fatal (_("%P: invalid BFD target `%s'\n"), entry->target);
2529+ fatal (_("%F%P: invalid BFD target `%s'\n"), entry->target);
2530 return false;
2531 }
2532
2533@@ -508,7 +508,7 @@ ldfile_try_open_bfd (const char *attempt,
2534
2535 if (!entry->flags.dynamic && (entry->the_bfd->flags & DYNAMIC) != 0)
2536 {
2537- fatal (_("%P: attempted static link of dynamic object `%s'\n"),
2538+ fatal (_("%F%P: attempted static link of dynamic object `%s'\n"),
2539 attempt);
2540 bfd_close (entry->the_bfd);
2541 entry->the_bfd = NULL;
2542@@ -919,7 +919,7 @@ ldfile_open_command_file_1 (const char *name, enum script_open_style open_how)
2543 if ((open_how != script_nonT || script->open_how != script_nonT)
2544 && strcmp (name, script->name) == 0)
2545 {
2546- fatal (_("%P: error: linker script file '%s'"
2547+ fatal (_("%F%P: error: linker script file '%s'"
2548 " appears multiple times\n"), name);
2549 return;
2550 }
2551@@ -941,7 +941,7 @@ ldfile_open_command_file_1 (const char *name, enum script_open_style open_how)
2552 if (ldlex_input_stack == NULL)
2553 {
2554 bfd_set_error (bfd_error_system_call);
2555- fatal (_("%P: cannot open linker script file %s: %E\n"), name);
2556+ fatal (_("%F%P: cannot open linker script file %s: %E\n"), name);
2557 return;
2558 }
2559
2560@@ -1012,5 +1012,5 @@ ldfile_set_output_arch (const char *string, enum bfd_architecture defarch)
2561 else if (defarch != bfd_arch_unknown)
2562 ldfile_output_architecture = defarch;
2563 else
2564- fatal (_("%P: cannot represent machine `%s'\n"), string);
2565+ fatal (_("%F%P: cannot represent machine `%s'\n"), string);
2566 }
2567diff --git a/ld/ldgram.y b/ld/ldgram.y
2568index c2f1e298..81bb8fd8 100644
2569--- a/ld/ldgram.y
2570+++ b/ld/ldgram.y
2571@@ -209,7 +209,7 @@ mri_script_command:
2572 CHIP exp
2573 | CHIP exp ',' exp
2574 | NAME {
2575- fatal (_("%P: unrecognised keyword in MRI style script '%s'\n"), $1);
2576+ fatal(_("%F%P: unrecognised keyword in MRI style script '%s'\n"),$1);
2577 }
2578 | LIST {
2579 config.map_filename = "-";
2580@@ -1547,7 +1547,7 @@ yyerror (const char *arg)
2581 einfo (_("%P:%s: file format not recognized; treating as linker script\n"),
2582 ldlex_filename ());
2583 if (error_index > 0 && error_index < ERROR_NAME_MAX)
2584- fatal (_("%P:%pS: %s in %s\n"), NULL, arg, error_names[error_index - 1]);
2585+ fatal (_("%F%P:%pS: %s in %s\n"), NULL, arg, error_names[error_index - 1]);
2586 else
2587- fatal ("%P:%pS: %s\n", NULL, arg);
2588+ fatal ("%F%P:%pS: %s\n", NULL, arg);
2589 }
2590diff --git a/ld/ldlang.c b/ld/ldlang.c
2591index 9bf5fcbe..57d9a777 100644
2592--- a/ld/ldlang.c
2593+++ b/ld/ldlang.c
2594@@ -1325,7 +1325,7 @@ output_section_statement_table_init (void)
2595 output_section_statement_newfunc,
2596 sizeof (struct out_section_hash_entry),
2597 61))
2598- fatal (_("%P: can not create hash table: %E\n"));
2599+ fatal (_("%F%P: can not create hash table: %E\n"));
2600 }
2601
2602 static void
2603@@ -1453,7 +1453,7 @@ lang_memory_region_alias (const char *alias, const char *region_name)
2604 the default memory region. */
2605 if (strcmp (region_name, DEFAULT_MEMORY_REGION) == 0
2606 || strcmp (alias, DEFAULT_MEMORY_REGION) == 0)
2607- fatal (_("%P:%pS: error: alias for default memory region\n"), NULL);
2608+ fatal (_("%F%P:%pS: error: alias for default memory region\n"), NULL);
2609
2610 /* Look for the target region and check if the alias is not already
2611 in use. */
2612@@ -1464,14 +1464,14 @@ lang_memory_region_alias (const char *alias, const char *region_name)
2613 if (region == NULL && strcmp (n->name, region_name) == 0)
2614 region = r;
2615 if (strcmp (n->name, alias) == 0)
2616- fatal (_("%P:%pS: error: redefinition of memory region "
2617+ fatal (_("%F%P:%pS: error: redefinition of memory region "
2618 "alias `%s'\n"),
2619 NULL, alias);
2620 }
2621
2622 /* Check if the target region exists. */
2623 if (region == NULL)
2624- fatal (_("%P:%pS: error: memory region `%s' "
2625+ fatal (_("%F%P:%pS: error: memory region `%s' "
2626 "for alias `%s' does not exist\n"),
2627 NULL, region_name, alias);
2628
2629@@ -1532,7 +1532,7 @@ lang_output_section_statement_lookup (const char *name,
2630 if (entry == NULL)
2631 {
2632 if (create)
2633- fatal (_("%P: failed creating section `%s': %E\n"), name);
2634+ fatal (_("%F%P: failed creating section `%s': %E\n"), name);
2635 return NULL;
2636 }
2637
2638@@ -2426,7 +2426,7 @@ static void
2639 init_os (lang_output_section_statement_type *s, flagword flags)
2640 {
2641 if (strcmp (s->name, DISCARD_SECTION_NAME) == 0)
2642- fatal (_("%P: illegal use of `%s' section\n"), DISCARD_SECTION_NAME);
2643+ fatal (_("%F%P: illegal use of `%s' section\n"), DISCARD_SECTION_NAME);
2644
2645 if (!s->dup_output)
2646 s->bfd_section = bfd_get_section_by_name (link_info.output_bfd, s->name);
2647@@ -2435,7 +2435,7 @@ init_os (lang_output_section_statement_type *s, flagword flags)
2648 s->name, flags);
2649 if (s->bfd_section == NULL)
2650 {
2651- fatal (_("%P: output format %s cannot represent section"
2652+ fatal (_("%F%P: output format %s cannot represent section"
2653 " called %s: %E\n"),
2654 link_info.output_bfd->xvec->name, s->name);
2655 }
2656@@ -3027,7 +3027,7 @@ load_symbols (lang_input_statement_type *entry,
2657 }
2658 else if (err != bfd_error_file_not_recognized
2659 || place == NULL)
2660- fatal (_("%P: %pB: file not recognized: %E\n"), entry->the_bfd);
2661+ fatal (_("%F%P: %pB: file not recognized: %E\n"), entry->the_bfd);
2662
2663 bfd_close (entry->the_bfd);
2664 entry->the_bfd = NULL;
2665@@ -3100,7 +3100,7 @@ load_symbols (lang_input_statement_type *entry,
2666
2667 if (!bfd_check_format (member, bfd_object))
2668 {
2669- fatal (_("%P: %pB: member %pB in archive is not an object\n"),
2670+ fatal (_("%F%P: %pB: member %pB in archive is not an object\n"),
2671 entry->the_bfd, member);
2672 loaded = false;
2673 }
2674@@ -3115,7 +3115,7 @@ load_symbols (lang_input_statement_type *entry,
2675 substitute BFD for us. */
2676 if (!bfd_link_add_symbols (subsbfd, &link_info))
2677 {
2678- fatal (_("%P: %pB: error adding symbols: %E\n"), member);
2679+ fatal (_("%F%P: %pB: error adding symbols: %E\n"), member);
2680 loaded = false;
2681 }
2682 }
2683@@ -3129,7 +3129,7 @@ load_symbols (lang_input_statement_type *entry,
2684 if (bfd_link_add_symbols (entry->the_bfd, &link_info))
2685 entry->flags.loaded = true;
2686 else
2687- fatal (_("%P: %pB: error adding symbols: %E\n"), entry->the_bfd);
2688+ fatal (_("%F%P: %pB: error adding symbols: %E\n"), entry->the_bfd);
2689
2690 return entry->flags.loaded;
2691 }
2692@@ -3370,7 +3370,7 @@ open_output (const char *name)
2693 {
2694 char *in = lrealpath (f->local_sym_name);
2695 if (filename_cmp (in, out) == 0)
2696- fatal (_("%P: input file '%s' is the same as output file\n"),
2697+ fatal (_("%F%P: input file '%s' is the same as output file\n"),
2698 f->filename);
2699 free (in);
2700 }
2701@@ -3432,23 +3432,23 @@ open_output (const char *name)
2702 if (link_info.output_bfd == NULL)
2703 {
2704 if (bfd_get_error () == bfd_error_invalid_target)
2705- fatal (_("%P: target %s not found\n"), output_target);
2706+ fatal (_("%F%P: target %s not found\n"), output_target);
2707
2708- fatal (_("%P: cannot open output file %s: %E\n"), name);
2709+ fatal (_("%F%P: cannot open output file %s: %E\n"), name);
2710 }
2711
2712 delete_output_file_on_failure = true;
2713
2714 if (!bfd_set_format (link_info.output_bfd, bfd_object))
2715- fatal (_("%P: %s: can not make object file: %E\n"), name);
2716+ fatal (_("%F%P: %s: can not make object file: %E\n"), name);
2717 if (!bfd_set_arch_mach (link_info.output_bfd,
2718 ldfile_output_architecture,
2719 ldfile_output_machine))
2720- fatal (_("%P: %s: can not set architecture: %E\n"), name);
2721+ fatal (_("%F%P: %s: can not set architecture: %E\n"), name);
2722
2723 link_info.hash = bfd_link_hash_table_create (link_info.output_bfd);
2724 if (link_info.hash == NULL)
2725- fatal (_("%P: can not create hash table: %E\n"));
2726+ fatal (_("%F%P: can not create hash table: %E\n"));
2727
2728 bfd_set_gp_size (link_info.output_bfd, g_switch_value);
2729 }
2730@@ -3973,7 +3973,7 @@ insert_undefined (const char *name)
2731
2732 h = bfd_link_hash_lookup (link_info.hash, name, true, false, true);
2733 if (h == NULL)
2734- fatal (_("%P: bfd_link_hash_lookup failed: %E\n"));
2735+ fatal (_("%F%P: bfd_link_hash_lookup failed: %E\n"));
2736 if (h->type == bfd_link_hash_new)
2737 {
2738 h->type = bfd_link_hash_undefined;
2739@@ -4259,7 +4259,7 @@ map_input_to_output_sections
2740 else if (strcmp (name, "SHT_PREINIT_ARRAY") == 0)
2741 type = SHT_PREINIT_ARRAY;
2742 else
2743- fatal (_ ("%P: invalid type for output section `%s'\n"),
2744+ fatal (_ ("%F%P: invalid type for output section `%s'\n"),
2745 os->name);
2746 }
2747 else
2748@@ -4268,7 +4268,7 @@ map_input_to_output_sections
2749 if (expld.result.valid_p)
2750 type = expld.result.value;
2751 else
2752- fatal (_ ("%P: invalid type for output section `%s'\n"),
2753+ fatal (_ ("%F%P: invalid type for output section `%s'\n"),
2754 os->name);
2755 }
2756 break;
2757@@ -4417,7 +4417,7 @@ process_insert_statements (lang_statement_union_type **start)
2758 }
2759 if (where == NULL)
2760 {
2761- fatal (_("%P: %s not found for insert\n"), i->where);
2762+ fatal (_("%F%P: %s not found for insert\n"), i->where);
2763 return;
2764 }
2765
2766@@ -5499,12 +5499,12 @@ size_input_section
2767 if (dot + TO_ADDR (i->size) > end)
2768 {
2769 if (i->flags & SEC_LINKER_CREATED)
2770- fatal (_("%P: Output section `%pA' not large enough for "
2771+ fatal (_("%F%P: Output section `%pA' not large enough for "
2772 "the linker-created stubs section `%pA'.\n"),
2773 i->output_section, i);
2774
2775 if (i->rawsize && i->rawsize != i->size)
2776- fatal (_("%P: Relaxation not supported with "
2777+ fatal (_("%F%P: Relaxation not supported with "
2778 "--enable-non-contiguous-regions (section `%pA' "
2779 "would overflow `%pA' after it changed size).\n"),
2780 i, i->output_section);
2781@@ -5860,7 +5860,7 @@ lang_size_sections_1
2782 dot += expld.result.section->vma;
2783 }
2784 else if (expld.phase != lang_mark_phase_enum)
2785- fatal (_("%P:%pS: non constant or forward reference"
2786+ fatal (_("%F%P:%pS: non constant or forward reference"
2787 " address expression for section %s\n"),
2788 os->addr_tree, os->name);
2789 }
2790@@ -5943,7 +5943,7 @@ lang_size_sections_1
2791 overridden by the using the --no-check-sections
2792 switch. */
2793 if (command_line.check_section_addresses)
2794- fatal (_("%P: error: no memory region specified"
2795+ fatal (_("%F%P: error: no memory region specified"
2796 " for loadable section `%s'\n"),
2797 bfd_section_name (os->bfd_section));
2798 else
2799@@ -6250,7 +6250,7 @@ lang_size_sections_1
2800 bool again;
2801
2802 if (!bfd_relax_section (i->owner, i, &link_info, &again))
2803- fatal (_("%P: can't relax section: %E\n"));
2804+ fatal (_("%F%P: can't relax section: %E\n"));
2805 if (again)
2806 *relax = true;
2807 }
2808@@ -6659,7 +6659,7 @@ lang_do_assignments_1 (lang_statement_union_type *s,
2809 s->data_statement.value += expld.result.section->vma;
2810 }
2811 else if (expld.phase == lang_final_phase_enum)
2812- fatal (_("%P: invalid data statement\n"));
2813+ fatal (_("%F%P: invalid data statement\n"));
2814 {
2815 unsigned int size;
2816 switch (s->data_statement.type)
2817@@ -6692,7 +6692,7 @@ lang_do_assignments_1 (lang_statement_union_type *s,
2818 if (expld.result.valid_p)
2819 s->reloc_statement.addend_value = expld.result.value;
2820 else if (expld.phase == lang_final_phase_enum)
2821- fatal (_("%P: invalid reloc statement\n"));
2822+ fatal (_("%F%P: invalid reloc statement\n"));
2823 dot += TO_ADDR (bfd_get_reloc_size (s->reloc_statement.howto));
2824 break;
2825
2826@@ -7110,7 +7110,7 @@ lang_end (void)
2827 break;
2828 }
2829 if (!sym)
2830- fatal (_("%P: --gc-sections requires a defined symbol root "
2831+ fatal (_("%F%P: --gc-sections requires a defined symbol root "
2832 "specified by -e or -u\n"));
2833 }
2834
2835@@ -7135,7 +7135,7 @@ lang_end (void)
2836 + bfd_section_vma (h->u.def.section->output_section)
2837 + h->u.def.section->output_offset);
2838 if (!bfd_set_start_address (link_info.output_bfd, val))
2839- fatal (_("%P: %s: can't set start address\n"), entry_symbol.name);
2840+ fatal (_("%F%P: %s: can't set start address\n"), entry_symbol.name);
2841 }
2842 else
2843 {
2844@@ -7148,7 +7148,7 @@ lang_end (void)
2845 if (*send == '\0')
2846 {
2847 if (!bfd_set_start_address (link_info.output_bfd, val))
2848- fatal (_("%P: can't set start address\n"));
2849+ fatal (_("%F%P: can't set start address\n"));
2850 }
2851 /* BZ 2004952: Only use the start of the entry section for executables. */
2852 else if bfd_link_executable (&link_info)
2853@@ -7167,7 +7167,7 @@ lang_end (void)
2854 bfd_section_vma (ts));
2855 if (!bfd_set_start_address (link_info.output_bfd,
2856 bfd_section_vma (ts)))
2857- fatal (_("%P: can't set start address\n"));
2858+ fatal (_("%F%P: can't set start address\n"));
2859 }
2860 else
2861 {
2862@@ -7236,7 +7236,7 @@ lang_check (void)
2863 != bfd_get_flavour (link_info.output_bfd)))
2864 && (bfd_get_file_flags (input_bfd) & HAS_RELOC) != 0)
2865 {
2866- fatal (_("%P: relocatable linking with relocations from"
2867+ fatal (_("%F%P: relocatable linking with relocations from"
2868 " format %s (%pB) to format %s (%pB) is not supported\n"),
2869 bfd_get_target (input_bfd), input_bfd,
2870 bfd_get_target (link_info.output_bfd), link_info.output_bfd);
2871@@ -7340,7 +7340,7 @@ lang_one_common (struct bfd_link_hash_entry *h, void *info)
2872
2873 section = h->u.c.p->section;
2874 if (!bfd_define_common_symbol (link_info.output_bfd, &link_info, h))
2875- fatal (_("%P: could not define common symbol `%pT': %E\n"),
2876+ fatal (_("%F%P: could not define common symbol `%pT': %E\n"),
2877 h->root.string);
2878
2879 if (config.map_file != NULL)
2880@@ -7518,7 +7518,7 @@ lang_set_flags (lang_memory_region_type *ptr, const char *flags, int invert)
2881 break;
2882
2883 default:
2884- fatal (_("%P: invalid character %c (%d) in flags\n"),
2885+ fatal (_("%F%P: invalid character %c (%d) in flags\n"),
2886 *flags, *flags);
2887 break;
2888 }
2889@@ -7630,7 +7630,7 @@ lang_enter_output_section_statement (const char *output_section_statement_name,
2890
2891 os->align_lma_with_input = align_with_input == ALIGN_WITH_INPUT;
2892 if (os->align_lma_with_input && align != NULL)
2893- fatal (_("%P:%pS: error: align with input and explicit align specified\n"),
2894+ fatal (_("%F%P:%pS: error: align with input and explicit align specified\n"),
2895 NULL);
2896
2897 os->subsection_alignment = subalign;
2898@@ -8142,7 +8142,7 @@ lang_process (void)
2899 lang_place_undefineds ();
2900
2901 if (!bfd_section_already_linked_table_init ())
2902- fatal (_("%P: can not create hash table: %E\n"));
2903+ fatal (_("%F%P: can not create hash table: %E\n"));
2904
2905 /* A first pass through the memory regions ensures that if any region
2906 references a symbol for its origin or length then this symbol will be
2907@@ -8180,7 +8180,7 @@ lang_process (void)
2908 files = file_chain;
2909 inputfiles = input_file_chain;
2910 if (plugin_call_all_symbols_read ())
2911- fatal (_("%P: %s: plugin reported error after all symbols read\n"),
2912+ fatal (_("%F%P: %s: plugin reported error after all symbols read\n"),
2913 plugin_error_plugin ());
2914 link_info.lto_all_symbols_read = true;
2915 /* Open any newly added files, updating the file chains. */
2916@@ -8757,7 +8757,7 @@ void
2917 lang_startup (const char *name)
2918 {
2919 if (first_file->filename != NULL)
2920- fatal (_("%P: multiple STARTUP files\n"));
2921+ fatal (_("%F%P: multiple STARTUP files\n"));
2922 first_file->filename = name;
2923 first_file->local_sym_name = name;
2924 first_file->flags.real = true;
2925@@ -8981,7 +8981,7 @@ lang_record_phdrs (void)
2926 break;
2927 }
2928 if (last == NULL)
2929- fatal (_("%P: no sections assigned to phdrs\n"));
2930+ fatal (_("%F%P: no sections assigned to phdrs\n"));
2931 }
2932 pl = last;
2933 }
2934@@ -9019,7 +9019,7 @@ lang_record_phdrs (void)
2935 if (!bfd_record_phdr (link_info.output_bfd, l->type,
2936 l->flags != NULL, flags, l->at != NULL,
2937 at, l->filehdr, l->phdrs, c, secs))
2938- fatal (_("%P: bfd_record_phdr failed: %E\n"));
2939+ fatal (_("%F%P: bfd_record_phdr failed: %E\n"));
2940 }
2941
2942 free (secs);
2943diff --git a/ld/ldlex.l b/ld/ldlex.l
2944index 7cbade08..0a7d63e6 100644
2945--- a/ld/ldlex.l
2946+++ b/ld/ldlex.l
2947@@ -504,7 +504,7 @@ void
2948 lex_push_file (FILE *file, const char *name, unsigned int sysrooted)
2949 {
2950 if (include_stack_ptr >= MAX_INCLUDE_DEPTH)
2951- fatal (_("%P: includes nested too deeply\n"));
2952+ fatal (_("%F:includes nested too deeply\n"));
2953 file_name_stack[include_stack_ptr] = name;
2954 lineno_stack[include_stack_ptr] = lineno;
2955 sysrooted_stack[include_stack_ptr] = input_flags.sysrooted;
2956@@ -566,7 +566,7 @@ lex_redirect (const char *string, const char *fake_filename, unsigned int count)
2957
2958 yy_init = 0;
2959 if (include_stack_ptr >= MAX_INCLUDE_DEPTH)
2960- fatal (_("%P: macros nested too deeply\n"));
2961+ fatal (_("%F: macros nested too deeply\n"));
2962 file_name_stack[include_stack_ptr] = fake_filename;
2963 lineno_stack[include_stack_ptr] = lineno;
2964 include_stack[include_stack_ptr] = YY_CURRENT_BUFFER;
2965@@ -670,7 +670,7 @@ yy_input (char *buf, int max_size)
2966 {
2967 result = fread (buf, 1, max_size, yyin);
2968 if (result < max_size && ferror (yyin))
2969- fatal (_("%P: read in flex scanner failed\n"));
2970+ fatal (_("%F%P: read in flex scanner failed\n"));
2971 }
2972 }
2973 return result;
2974@@ -707,7 +707,7 @@ comment (void)
2975
2976 if (c == 0)
2977 {
2978- fatal (_("%P: EOF in comment\n"));
2979+ fatal (_("%F%P: EOF in comment\n"));
2980 break;
2981 }
2982 }
2983@@ -728,7 +728,7 @@ lex_warn_invalid (char *where, char *what)
2984 if (ldfile_assumed_script)
2985 {
2986 bfd_set_error (bfd_error_file_not_recognized);
2987- fatal (_("%s: file not recognized: %E\n"), ldlex_filename ());
2988+ fatal (_("%F%s: file not recognized: %E\n"), ldlex_filename ());
2989 }
2990
2991 if (! ISPRINT (*what))
2992diff --git a/ld/ldmain.c b/ld/ldmain.c
2993index a61086c3..8250ae08 100644
2994--- a/ld/ldmain.c
2995+++ b/ld/ldmain.c
2996@@ -193,7 +193,7 @@ write_dependency_file (void)
2997 out = fopen (config.dependency_file, FOPEN_WT);
2998 if (out == NULL)
2999 {
3000- fatal (_("%P: cannot open dependency file %s: %E\n"),
3001+ fatal (_("%F%P: cannot open dependency file %s: %E\n"),
3002 config.dependency_file);
3003 }
3004
3005@@ -266,7 +266,7 @@ main (int argc, char **argv)
3006 expandargv (&argc, &argv);
3007
3008 if (bfd_init () != BFD_INIT_MAGIC)
3009- fatal (_("%P: fatal error: libbfd ABI mismatch\n"));
3010+ fatal (_("%F%P: fatal error: libbfd ABI mismatch\n"));
3011
3012 bfd_set_error_program_name (program_name);
3013
3014@@ -468,13 +468,13 @@ main (int argc, char **argv)
3015 xexit (0);
3016
3017 if (link_info.inhibit_common_definition && !bfd_link_dll (&link_info))
3018- fatal (_("%P: --no-define-common may not be used without -shared\n"));
3019+ fatal (_("%F%P: --no-define-common may not be used without -shared\n"));
3020
3021 if (!lang_has_input_file)
3022 {
3023 if (version_printed || command_line.print_output_format)
3024 xexit (0);
3025- fatal (_("%P: no input files\n"));
3026+ fatal (_("%F%P: no input files\n"));
3027 }
3028
3029 if (verbose)
3030@@ -494,7 +494,7 @@ main (int argc, char **argv)
3031 if (config.map_file == (FILE *) NULL)
3032 {
3033 bfd_set_error (bfd_error_system_call);
3034- einfo (_("%P: cannot open map file %s: %E\n"),
3035+ fatal (_("%F%P: cannot open map file %s: %E\n"),
3036 config.map_filename);
3037 }
3038 }
3039@@ -569,7 +569,7 @@ main (int argc, char **argv)
3040 bfd *obfd = link_info.output_bfd;
3041 link_info.output_bfd = NULL;
3042 if (!bfd_close (obfd))
3043- fatal (_("%P: %s: final close failed: %E\n"), output_filename);
3044+ fatal (_("%F%P: %s: final close failed: %E\n"), output_filename);
3045
3046 /* If the --force-exe-suffix is enabled, and we're making an
3047 executable file and it doesn't end in .exe, copy it to one
3048@@ -596,10 +596,10 @@ main (int argc, char **argv)
3049 dst = fopen (dst_name, FOPEN_WB);
3050
3051 if (!src)
3052- fatal (_("%P: unable to open for source of copy `%s'\n"),
3053+ fatal (_("%F%P: unable to open for source of copy `%s'\n"),
3054 output_filename);
3055 if (!dst)
3056- fatal (_("%P: unable to open for destination of copy `%s'\n"),
3057+ fatal (_("%F%P: unable to open for destination of copy `%s'\n"),
3058 dst_name);
3059 while ((l = fread (buf, 1, bsize, src)) > 0)
3060 {
3061@@ -710,7 +710,7 @@ get_emulation (int argc, char **argv)
3062 i++;
3063 }
3064 else
3065- fatal (_("%P: missing argument to -m\n"));
3066+ fatal (_("%F%P: missing argument to -m\n"));
3067 }
3068 else if (strcmp (argv[i], "-mips1") == 0
3069 || strcmp (argv[i], "-mips2") == 0
3070@@ -764,11 +764,11 @@ add_ysym (const char *name)
3071 bfd_hash_newfunc,
3072 sizeof (struct bfd_hash_entry),
3073 61))
3074- fatal (_("%P: bfd_hash_table_init failed: %E\n"));
3075+ fatal (_("%F%P: bfd_hash_table_init failed: %E\n"));
3076 }
3077
3078 if (bfd_hash_lookup (link_info.notice_hash, name, true, true) == NULL)
3079- fatal (_("%P: bfd_hash_lookup failed: %E\n"));
3080+ fatal (_("%F%P: bfd_hash_lookup failed: %E\n"));
3081 }
3082
3083 void
3084@@ -781,11 +781,11 @@ add_ignoresym (struct bfd_link_info *info, const char *name)
3085 bfd_hash_newfunc,
3086 sizeof (struct bfd_hash_entry),
3087 61))
3088- fatal (_("%P: bfd_hash_table_init failed: %E\n"));
3089+ fatal (_("%F%P: bfd_hash_table_init failed: %E\n"));
3090 }
3091
3092 if (bfd_hash_lookup (info->ignore_hash, name, true, true) == NULL)
3093- fatal (_("%P: bfd_hash_lookup failed: %E\n"));
3094+ fatal (_("%F%P: bfd_hash_lookup failed: %E\n"));
3095 }
3096
3097 /* Record a symbol to be wrapped, from the --wrap option. */
3098@@ -801,11 +801,11 @@ add_wrap (const char *name)
3099 bfd_hash_newfunc,
3100 sizeof (struct bfd_hash_entry),
3101 61))
3102- fatal (_("%P: bfd_hash_table_init failed: %E\n"));
3103+ fatal (_("%F%P: bfd_hash_table_init failed: %E\n"));
3104 }
3105
3106 if (bfd_hash_lookup (link_info.wrap_hash, name, true, true) == NULL)
3107- fatal (_("%P: bfd_hash_lookup failed: %E\n"));
3108+ fatal (_("%F%P: bfd_hash_lookup failed: %E\n"));
3109 }
3110
3111 /* Handle the -retain-symbols-file option. */
3112@@ -833,7 +833,7 @@ add_keepsyms_file (const char *filename)
3113 xmalloc (sizeof (struct bfd_hash_table));
3114 if (!bfd_hash_table_init (link_info.keep_hash, bfd_hash_newfunc,
3115 sizeof (struct bfd_hash_entry)))
3116- fatal (_("%P: bfd_hash_table_init failed: %E\n"));
3117+ fatal (_("%F%P: bfd_hash_table_init failed: %E\n"));
3118
3119 bufsize = 100;
3120 buf = (char *) xmalloc (bufsize);
3121@@ -863,7 +863,7 @@ add_keepsyms_file (const char *filename)
3122 buf[len] = '\0';
3123
3124 if (bfd_hash_lookup (link_info.keep_hash, buf, true, true) == NULL)
3125- fatal (_("%P: bfd_hash_lookup for insertion failed: %E\n"));
3126+ fatal (_("%F%P: bfd_hash_lookup for insertion failed: %E\n"));
3127 }
3128 }
3129
3130@@ -1270,7 +1270,7 @@ constructor_callback (struct bfd_link_info *info,
3131 if (bfd_reloc_type_lookup (info->output_bfd, BFD_RELOC_CTOR) == NULL
3132 && (bfd_link_relocatable (info)
3133 || bfd_reloc_type_lookup (abfd, BFD_RELOC_CTOR) == NULL))
3134- fatal (_("%P: BFD backend error: BFD_RELOC_CTOR unsupported\n"));
3135+ fatal (_("%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n"));
3136
3137 s = set_name;
3138 if (bfd_get_symbol_leading_char (abfd) != '\0')
3139@@ -1282,7 +1282,7 @@ constructor_callback (struct bfd_link_info *info,
3140
3141 h = bfd_link_hash_lookup (info->hash, set_name, true, true, true);
3142 if (h == (struct bfd_link_hash_entry *) NULL)
3143- fatal (_("%P: bfd_link_hash_lookup failed: %E\n"));
3144+ fatal (_("%F%P: bfd_link_hash_lookup failed: %E\n"));
3145 if (h->type == bfd_link_hash_new)
3146 {
3147 h->type = bfd_link_hash_undefined;
3148@@ -1315,7 +1315,7 @@ symbol_warning (const char *warning, const char *symbol, bfd *abfd)
3149 struct warning_callback_info cinfo;
3150
3151 if (!bfd_generic_link_read_symbols (abfd))
3152- fatal (_("%P: %pB: could not read symbols: %E\n"), abfd);
3153+ fatal (_("%F%P: %pB: could not read symbols: %E\n"), abfd);
3154
3155 cinfo.found = false;
3156 cinfo.warning = warning;
3157@@ -1377,14 +1377,14 @@ warning_find_reloc (bfd *abfd, asection *sec, void *iarg)
3158
3159 relsize = bfd_get_reloc_upper_bound (abfd, sec);
3160 if (relsize < 0)
3161- fatal (_("%P: %pB: could not read relocs: %E\n"), abfd);
3162+ fatal (_("%F%P: %pB: could not read relocs: %E\n"), abfd);
3163 if (relsize == 0)
3164 return;
3165
3166 relpp = (arelent **) xmalloc (relsize);
3167 relcount = bfd_canonicalize_reloc (abfd, sec, relpp, info->asymbols);
3168 if (relcount < 0)
3169- fatal (_("%P: %pB: could not read relocs: %E\n"), abfd);
3170+ fatal (_("%F%P: %pB: could not read relocs: %E\n"), abfd);
3171
3172 p = relpp;
3173 pend = p + relcount;
3174diff --git a/ld/ldmisc.c b/ld/ldmisc.c
3175index d1257214..1d9d0cf2 100644
3176--- a/ld/ldmisc.c
3177+++ b/ld/ldmisc.c
3178@@ -324,7 +324,7 @@ vfinfo (FILE *fp, const char *fmt, va_list ap, bool is_warning)
3179 if (abfd != NULL)
3180 {
3181 if (!bfd_generic_link_read_symbols (abfd))
3182- fatal (_("%P: %pB: could not read symbols: %E\n"), abfd);
3183+ fatal (_("%F%P: %pB: could not read symbols: %E\n"), abfd);
3184
3185 asymbols = bfd_get_outsymbols (abfd);
3186 }
3187@@ -638,7 +638,7 @@ fatal (const char *fmt, ...)
3188 void
3189 info_assert (const char *file, unsigned int line)
3190 {
3191- fatal (_("%P: internal error %s %d\n"), file, line);
3192+ fatal (_("%F%P: internal error %s %d\n"), file, line);
3193 }
3194
3195 /* ('m' for map) Format info message and print on map. */
3196@@ -707,5 +707,5 @@ ld_abort (const char *file, int line, const char *fn)
3197 else
3198 einfo (_("%P: internal error: aborting at %s:%d\n"),
3199 file, line);
3200- fatal (_("%P: please report this bug\n"));
3201+ fatal (_("%F%P: please report this bug\n"));
3202 }
3203diff --git a/ld/ldwrite.c b/ld/ldwrite.c
3204index ace5e564..216d3583 100644
3205--- a/ld/ldwrite.c
3206+++ b/ld/ldwrite.c
3207@@ -57,14 +57,14 @@ build_link_order (lang_statement_union_type *statement)
3208
3209 link_order = bfd_new_link_order (link_info.output_bfd, output_section);
3210 if (link_order == NULL)
3211- fatal (_("%P: bfd_new_link_order failed: %E\n"));
3212+ fatal (_("%F%P: bfd_new_link_order failed: %E\n"));
3213
3214 link_order->type = bfd_data_link_order;
3215 link_order->offset = statement->data_statement.output_offset;
3216 link_order->u.data.contents = bfd_alloc (link_info.output_bfd,
3217 QUAD_SIZE);
3218 if (link_order->u.data.contents == NULL)
3219- fatal (_("%P: bfd_new_link_order failed: %E\n"));
3220+ fatal (_("%F%P: bfd_new_link_order failed: %E\n"));
3221
3222 value = statement->data_statement.value;
3223
3224@@ -170,7 +170,7 @@ build_link_order (lang_statement_union_type *statement)
3225
3226 link_order = bfd_new_link_order (link_info.output_bfd, output_section);
3227 if (link_order == NULL)
3228- fatal (_("%P: bfd_new_link_order failed: %E\n"));
3229+ fatal (_("%F%P: bfd_new_link_order failed: %E\n"));
3230
3231 link_order->offset = rs->output_offset;
3232 link_order->size = bfd_get_reloc_size (rs->howto);
3233@@ -178,7 +178,7 @@ build_link_order (lang_statement_union_type *statement)
3234 link_order->u.reloc.p = (struct bfd_link_order_reloc *)
3235 bfd_alloc (link_info.output_bfd, sizeof (struct bfd_link_order_reloc));
3236 if (link_order->u.reloc.p == NULL)
3237- fatal (_("%P: bfd_new_link_order failed: %E\n"));
3238+ fatal (_("%F%P: bfd_new_link_order failed: %E\n"));
3239
3240 link_order->u.reloc.p->reloc = rs->reloc;
3241 link_order->u.reloc.p->addend = rs->addend_value;
3242@@ -224,7 +224,7 @@ build_link_order (lang_statement_union_type *statement)
3243 link_order = bfd_new_link_order (link_info.output_bfd,
3244 output_section);
3245 if (link_order == NULL)
3246- fatal (_("%P: bfd_new_link_order failed: %E\n"));
3247+ fatal (_("%F%P: bfd_new_link_order failed: %E\n"));
3248
3249 if ((i->flags & SEC_NEVER_LOAD) != 0
3250 && (i->flags & SEC_DEBUGGING) == 0)
3251@@ -265,7 +265,7 @@ build_link_order (lang_statement_union_type *statement)
3252 link_order = bfd_new_link_order (link_info.output_bfd,
3253 output_section);
3254 if (link_order == NULL)
3255- fatal (_("%P: bfd_new_link_order failed: %E\n"));
3256+ fatal (_("%F%P: bfd_new_link_order failed: %E\n"));
3257 link_order->type = bfd_data_link_order;
3258 link_order->size = statement->padding_statement.size;
3259 link_order->offset = statement->padding_statement.output_offset;
3260@@ -334,7 +334,7 @@ clone_section (bfd *abfd, asection *s, const char *name, int *count)
3261 if (startswith (name, ".stab")
3262 || strcmp (name, "$GDB_SYMBOLS$") == 0)
3263 {
3264- fatal (_ ("%P: cannot create split section name for %s\n"), name);
3265+ fatal (_ ("%F%P: cannot create split section name for %s\n"), name);
3266 return NULL;
3267 }
3268 tname[5] = 0;
3269@@ -345,7 +345,7 @@ clone_section (bfd *abfd, asection *s, const char *name, int *count)
3270 || (h = bfd_link_hash_lookup (link_info.hash,
3271 sname, true, true, false)) == NULL)
3272 {
3273- fatal (_("%P: clone section failed: %E\n"));
3274+ fatal (_("%F%P: clone section failed: %E\n"));
3275 return NULL;
3276 }
3277 free (tname);
3278@@ -552,7 +552,7 @@ ldwrite (void)
3279 out. */
3280
3281 if (bfd_get_error () != bfd_error_no_error)
3282- fatal (_("%P: final link failed: %E\n"));
3283+ fatal (_("%F%P: final link failed: %E\n"));
3284 else
3285 xexit (1);
3286 }
3287diff --git a/ld/lexsup.c b/ld/lexsup.c
3288index 00346348..2b17499c 100644
3289--- a/ld/lexsup.c
3290+++ b/ld/lexsup.c
3291@@ -810,7 +810,7 @@ parse_args (unsigned argc, char **argv)
3292 && optc != argv[last_optind][1])
3293 {
3294 if (optarg)
3295- fatal (_("%P: Error: unable to disambiguate: "
3296+ fatal (_("%F%P: Error: unable to disambiguate: "
3297 "%s (did you mean -%s ?)\n"),
3298 argv[last_optind], argv[last_optind]);
3299 else
3300@@ -851,7 +851,7 @@ parse_args (unsigned argc, char **argv)
3301 /* Fall through. */
3302
3303 default:
3304- fatal (_("%P: use the --help option for usage information\n"));
3305+ fatal (_("%F%P: use the --help option for usage information\n"));
3306 break;
3307
3308 case 1: /* File name. */
3309@@ -870,7 +870,7 @@ parse_args (unsigned argc, char **argv)
3310 || strcmp (optarg, "default") == 0)
3311 input_flags.dynamic = true;
3312 else
3313- fatal (_("%P: unrecognized -a option `%s'\n"), optarg);
3314+ fatal (_("%F%P: unrecognized -a option `%s'\n"), optarg);
3315 break;
3316 case OPTION_ASSERT:
3317 /* FIXME: We just ignore these, but we should handle them. */
3318@@ -883,7 +883,7 @@ parse_args (unsigned argc, char **argv)
3319 else if (strcmp (optarg, "pure-text") == 0)
3320 ;
3321 else
3322- fatal (_("%P: unrecognized -assert option `%s'\n"), optarg);
3323+ fatal (_("%F%P: unrecognized -assert option `%s'\n"), optarg);
3324 break;
3325 case 'A':
3326 ldfile_add_arch (optarg);
3327@@ -927,7 +927,7 @@ parse_args (unsigned argc, char **argv)
3328
3329 style = cplus_demangle_name_to_style (optarg);
3330 if (style == unknown_demangling)
3331- fatal (_("%P: unknown demangling style `%s'\n"), optarg);
3332+ fatal (_("%F%P: unknown demangling style `%s'\n"), optarg);
3333
3334 cplus_demangle_set_style (style);
3335 }
3336@@ -1034,7 +1034,7 @@ parse_args (unsigned argc, char **argv)
3337 char *end;
3338 g_switch_value = strtoul (optarg, &end, 0);
3339 if (*end)
3340- fatal (_("%P: invalid number `%s'\n"), optarg);
3341+ fatal (_("%F%P: invalid number `%s'\n"), optarg);
3342 }
3343 break;
3344 case 'g':
3345@@ -1130,7 +1130,7 @@ parse_args (unsigned argc, char **argv)
3346 link_info.unresolved_syms_in_shared_libs = RM_IGNORE;
3347 }
3348 else
3349- fatal (_("%P: bad --unresolved-symbols option: %s\n"), optarg);
3350+ fatal (_("%F%P: bad --unresolved-symbols option: %s\n"), optarg);
3351 break;
3352 case OPTION_WARN_UNRESOLVED_SYMBOLS:
3353 link_info.warn_unresolved_syms = true;
3354@@ -1217,7 +1217,7 @@ parse_args (unsigned argc, char **argv)
3355 break;
3356 case OPTION_PLUGIN_OPT:
3357 if (plugin_opt_plugin_arg (optarg))
3358- fatal (_("%P: bad -plugin-opt option\n"));
3359+ fatal (_("%F%P: bad -plugin-opt option\n"));
3360 break;
3361 #endif /* BFD_SUPPORTS_PLUGINS */
3362 case 'q':
3363@@ -1234,10 +1234,10 @@ parse_args (unsigned argc, char **argv)
3364 an error message here. We cannot just make this a warning,
3365 increment optind, and continue because getopt is too confused
3366 and will seg-fault the next time around. */
3367- fatal(_("%P: unrecognised option: %s\n"), argv[optind]);
3368+ fatal(_("%F%P: unrecognised option: %s\n"), argv[optind]);
3369
3370 if (bfd_link_pic (&link_info))
3371- fatal (_("%P: -r and %s may not be used together\n"),
3372+ fatal (_("%F%P: -r and %s may not be used together\n"),
3373 bfd_link_dll (&link_info) ? "-shared" : "-pie");
3374
3375 link_info.type = type_relocatable;
3376@@ -1347,7 +1347,7 @@ parse_args (unsigned argc, char **argv)
3377 if (config.has_shared)
3378 {
3379 if (bfd_link_relocatable (&link_info))
3380- fatal (_("%P: -r and %s may not be used together\n"),
3381+ fatal (_("%F%P: -r and %s may not be used together\n"),
3382 "-shared");
3383
3384 link_info.type = type_dll;
3385@@ -1359,7 +1359,7 @@ parse_args (unsigned argc, char **argv)
3386 link_info.unresolved_syms_in_shared_libs = RM_IGNORE;
3387 }
3388 else
3389- fatal (_("%P: -shared not supported\n"));
3390+ fatal (_("%F%P: -shared not supported\n"));
3391 break;
3392 case OPTION_NO_PIE:
3393 link_info.type = type_pde;
3394@@ -1368,12 +1368,12 @@ parse_args (unsigned argc, char **argv)
3395 if (config.has_shared)
3396 {
3397 if (bfd_link_relocatable (&link_info))
3398- fatal (_("%P: -r and %s may not be used together\n"), "-pie");
3399+ fatal (_("%F%P: -r and %s may not be used together\n"), "-pie");
3400
3401 link_info.type = type_pie;
3402 }
3403 else
3404- fatal (_("%P: -pie not supported\n"));
3405+ fatal (_("%F%P: -pie not supported\n"));
3406 break;
3407 case 'h': /* Used on Solaris. */
3408 case OPTION_SONAME:
3409@@ -1390,7 +1390,7 @@ parse_args (unsigned argc, char **argv)
3410 else if (strcmp (optarg, N_("ascending")) == 0)
3411 config.sort_common = sort_ascending;
3412 else
3413- fatal (_("%P: invalid common section sorting option: %s\n"),
3414+ fatal (_("%F%P: invalid common section sorting option: %s\n"),
3415 optarg);
3416 break;
3417 case OPTION_SORT_SECTION:
3418@@ -1399,7 +1399,7 @@ parse_args (unsigned argc, char **argv)
3419 else if (strcmp (optarg, N_("alignment")) == 0)
3420 sort_section = by_alignment;
3421 else
3422- fatal (_("%P: invalid section sorting option: %s\n"), optarg);
3423+ fatal (_("%F%P: invalid section sorting option: %s\n"), optarg);
3424 break;
3425 case OPTION_STATS:
3426 config.stats = true;
3427@@ -1435,14 +1435,14 @@ parse_args (unsigned argc, char **argv)
3428 /* Check for <something>=<somthing>... */
3429 optarg2 = strchr (optarg, '=');
3430 if (optarg2 == NULL)
3431- fatal (_("%P: invalid argument to option"
3432+ fatal (_("%F%P: invalid argument to option"
3433 " \"--section-start\"\n"));
3434
3435 optarg2++;
3436
3437 /* So far so good. Are all the args present? */
3438 if ((*optarg == '\0') || (*optarg2 == '\0'))
3439- fatal (_("%P: missing argument(s) to option"
3440+ fatal (_("%F%P: missing argument(s) to option"
3441 " \"--section-start\"\n"));
3442
3443 /* We must copy the section name as set_section_start
3444@@ -1486,7 +1486,7 @@ parse_args (unsigned argc, char **argv)
3445 /* Fall through. */
3446 case OPTION_UR:
3447 if (bfd_link_pic (&link_info))
3448- fatal (_("%P: -r and %s may not be used together\n"),
3449+ fatal (_("%F%P: -r and %s may not be used together\n"),
3450 bfd_link_dll (&link_info) ? "-shared" : "-pie");
3451
3452 link_info.type = type_relocatable;
3453@@ -1517,7 +1517,7 @@ parse_args (unsigned argc, char **argv)
3454 char *end;
3455 int level ATTRIBUTE_UNUSED = strtoul (optarg, &end, 0);
3456 if (*end)
3457- fatal (_("%P: invalid number `%s'\n"), optarg);
3458+ fatal (_("%F%P: invalid number `%s'\n"), optarg);
3459 #if BFD_SUPPORTS_PLUGINS
3460 report_plugin_symbols = level > 1;
3461 #endif /* BFD_SUPPORTS_PLUGINS */
3462@@ -1712,7 +1712,7 @@ parse_args (unsigned argc, char **argv)
3463 break;
3464 case ')':
3465 if (! ingroup)
3466- fatal (_("%P: group ended before it began (--help for usage)\n"));
3467+ fatal (_("%F%P: group ended before it began (--help for usage)\n"));
3468
3469 lang_leave_group ();
3470 ingroup--;
3471@@ -1728,7 +1728,7 @@ parse_args (unsigned argc, char **argv)
3472
3473 case OPTION_REMAP_INPUTS_FILE:
3474 if (! ldfile_add_remap_file (optarg))
3475- fatal (_("%P: failed to add remap file %s\n"), optarg);
3476+ fatal (_("%F%P: failed to add remap file %s\n"), optarg);
3477 break;
3478
3479 case OPTION_REMAP_INPUTS:
3480@@ -1737,7 +1737,7 @@ parse_args (unsigned argc, char **argv)
3481 if (optarg2 == NULL)
3482 /* FIXME: Should we allow --remap-inputs=@myfile as a synonym
3483 for --remap-inputs-file=myfile ? */
3484- fatal (_("%P: invalid argument to option --remap-inputs\n"));
3485+ fatal (_("%F%P: invalid argument to option --remap-inputs\n"));
3486 size_t len = optarg2 - optarg;
3487 char * pattern = xmalloc (len + 1);
3488 memcpy (pattern, optarg, len);
3489@@ -1758,7 +1758,7 @@ parse_args (unsigned argc, char **argv)
3490 char *end;
3491 bfd_size_type cache_size = strtoul (optarg, &end, 0);
3492 if (*end != '\0')
3493- fatal (_("%P: invalid cache memory size: %s\n"), optarg);
3494+ fatal (_("%F%P: invalid cache memory size: %s\n"), optarg);
3495 link_info.max_cache_size = cache_size;
3496 }
3497 break;
3498@@ -1783,7 +1783,7 @@ parse_args (unsigned argc, char **argv)
3499
3500 case OPTION_POP_STATE:
3501 if (input_flags.pushed == NULL)
3502- fatal (_("%P: no state pushed before popping\n"));
3503+ fatal (_("%F%P: no state pushed before popping\n"));
3504 else
3505 {
3506 struct lang_input_statement_flags *oldp = input_flags.pushed;
3507@@ -1806,7 +1806,7 @@ parse_args (unsigned argc, char **argv)
3508 else if (strcasecmp (optarg, "discard") == 0)
3509 config.orphan_handling = orphan_handling_discard;
3510 else
3511- fatal (_("%P: invalid argument to option"
3512+ fatal (_("%F%P: invalid argument to option"
3513 " \"--orphan-handling\"\n"));
3514 break;
3515
3516@@ -1851,7 +1851,7 @@ parse_args (unsigned argc, char **argv)
3517 else if (strcmp (optarg, "share-duplicated") == 0)
3518 config.ctf_share_duplicated = true;
3519 else
3520- fatal (_("%P: bad --ctf-share-types option: %s\n"), optarg);
3521+ fatal (_("%F%P: bad --ctf-share-types option: %s\n"), optarg);
3522 break;
3523 }
3524 }
3525@@ -2046,7 +2046,7 @@ parse_args (unsigned argc, char **argv)
3526 if (config.no_section_header)
3527 {
3528 if (bfd_link_relocatable (&link_info))
3529- fatal (_("%P: -r and -z nosectionheader may not be used together\n"));
3530+ fatal (_("%F%P: -r and -z nosectionheader may not be used together\n"));
3531
3532 link_info.strip = strip_all;
3533 }
3534@@ -2054,9 +2054,9 @@ parse_args (unsigned argc, char **argv)
3535 if (!bfd_link_dll (&link_info))
3536 {
3537 if (command_line.filter_shlib)
3538- fatal (_("%P: -F may not be used without -shared\n"));
3539+ fatal (_("%F%P: -F may not be used without -shared\n"));
3540 if (command_line.auxiliary_filters)
3541- fatal (_("%P: -f may not be used without -shared\n"));
3542+ fatal (_("%F%P: -f may not be used without -shared\n"));
3543 }
3544
3545 /* Treat ld -r -s as ld -r -S -x (i.e., strip all local symbols). I
3546@@ -2097,7 +2097,7 @@ set_section_start (char *sect, char *valstr)
3547 const char *end;
3548 bfd_vma val = bfd_scan_vma (valstr, &end, 16);
3549 if (*end)
3550- fatal (_("%P: invalid hex number `%s'\n"), valstr);
3551+ fatal (_("%F%P: invalid hex number `%s'\n"), valstr);
3552 lang_section_start (sect, exp_intop (val), NULL);
3553 }
3554
3555@@ -2110,7 +2110,7 @@ set_segment_start (const char *section, char *valstr)
3556
3557 bfd_vma val = bfd_scan_vma (valstr, &end, 16);
3558 if (*end)
3559- fatal (_("%P: invalid hex number `%s'\n"), valstr);
3560+ fatal (_("%F%P: invalid hex number `%s'\n"), valstr);
3561 /* If we already have an entry for this segment, update the existing
3562 value. */
3563 name = section + 1;
3564diff --git a/ld/mri.c b/ld/mri.c
3565index 7c8e59fa..aea2bd44 100644
3566--- a/ld/mri.c
3567+++ b/ld/mri.c
3568@@ -288,7 +288,7 @@ mri_format (const char *name)
3569 lang_add_output_format ("srec", NULL, NULL, 1);
3570
3571 else
3572- fatal (_("%P: unknown format type %s\n"), name);
3573+ fatal (_("%F%P: unknown format type %s\n"), name);
3574 }
3575
3576 void
3577diff --git a/ld/pe-dll.c b/ld/pe-dll.c
3578index 800d00c8..ae294986 100644
3579--- a/ld/pe-dll.c
3580+++ b/ld/pe-dll.c
3581@@ -756,7 +756,7 @@ process_def_file_and_drectve (bfd *abfd ATTRIBUTE_UNUSED, struct bfd_link_info *
3582
3583 if (!bfd_generic_link_read_symbols (b))
3584 {
3585- fatal (_("%P: %pB: could not read symbols: %E\n"), b);
3586+ fatal (_("%F%P: %pB: could not read symbols: %E\n"), b);
3587 return;
3588 }
3589
3590@@ -1048,7 +1048,7 @@ build_filler_bfd (bool include_edata)
3591 bfd_get_arch (link_info.output_bfd),
3592 bfd_get_mach (link_info.output_bfd)))
3593 {
3594- fatal (_("%P: can not create BFD: %E\n"));
3595+ fatal (_("%F%P: can not create BFD: %E\n"));
3596 return;
3597 }
3598
3599@@ -1326,7 +1326,7 @@ pe_walk_relocs (struct bfd_link_info *info,
3600
3601 if (!bfd_generic_link_read_symbols (b))
3602 {
3603- fatal (_("%P: %pB: could not read symbols: %E\n"), b);
3604+ fatal (_("%F%P: %pB: could not read symbols: %E\n"), b);
3605 return;
3606 }
3607
3608@@ -1407,7 +1407,7 @@ pe_find_data_imports (const char *symhead,
3609 if (!bfd_hash_table_init (import_hash,
3610 bfd_hash_newfunc,
3611 sizeof (struct bfd_hash_entry)))
3612- fatal (_("%P: bfd_hash_table_init failed: %E\n"));
3613+ fatal (_("%F%P: bfd_hash_table_init failed: %E\n"));
3614 }
3615 else
3616 import_hash = NULL;
3617@@ -1447,7 +1447,7 @@ pe_find_data_imports (const char *symhead,
3618
3619 if (!bfd_generic_link_read_symbols (b))
3620 {
3621- fatal (_("%P: %pB: could not read symbols: %E\n"), b);
3622+ fatal (_("%F%P: %pB: could not read symbols: %E\n"), b);
3623 return;
3624 }
3625
3626@@ -1549,7 +1549,7 @@ generate_reloc (bfd *abfd, struct bfd_link_info *info)
3627
3628 if (!bfd_generic_link_read_symbols (b))
3629 {
3630- fatal (_("%P: %pB: could not read symbols: %E\n"), b);
3631+ fatal (_("%F%P: %pB: could not read symbols: %E\n"), b);
3632 return;
3633 }
3634
3635diff --git a/ld/plugin.c b/ld/plugin.c
3636index 0a99d406..27f69b97 100644
3637--- a/ld/plugin.c
3638+++ b/ld/plugin.c
3639@@ -252,7 +252,7 @@ plugin_opt_plugin (const char *plugin)
3640 newplug->name = plugin;
3641 newplug->dlhandle = dlopen (plugin, RTLD_NOW);
3642 if (!newplug->dlhandle)
3643- fatal (_("%P: %s: error loading plugin: %s\n"), plugin, dlerror ());
3644+ fatal (_("%F%P: %s: error loading plugin: %s\n"), plugin, dlerror ());
3645
3646 /* Check if plugin has been loaded already. */
3647 while (curplug)
3648@@ -345,7 +345,7 @@ plugin_get_ir_dummy_bfd (const char *name, bfd *srctemplate)
3649 }
3650 }
3651 report_error:
3652- fatal (_("%P: could not create dummy IR bfd: %E\n"));
3653+ fatal (_("%F%P: could not create dummy IR bfd: %E\n"));
3654 return NULL;
3655 }
3656
3657@@ -426,7 +426,7 @@ asymbol_from_plugin_symbol (bfd *abfd, asymbol *asym,
3658 unsigned char visibility;
3659
3660 if (!elfsym)
3661- fatal (_("%P: %s: non-ELF symbol in ELF BFD!\n"), asym->name);
3662+ fatal (_("%F%P: %s: non-ELF symbol in ELF BFD!\n"), asym->name);
3663
3664 if (ldsym->def == LDPK_COMMON)
3665 {
3666@@ -437,7 +437,7 @@ asymbol_from_plugin_symbol (bfd *abfd, asymbol *asym,
3667 switch (ldsym->visibility)
3668 {
3669 default:
3670- fatal (_("%P: unknown ELF symbol visibility: %d!\n"),
3671+ fatal (_("%F%P: unknown ELF symbol visibility: %d!\n"),
3672 ldsym->visibility);
3673 return LDPS_ERR;
3674
3675@@ -555,7 +555,7 @@ get_view (const void *handle, const void **viewp)
3676
3677 /* FIXME: einfo should support %lld. */
3678 if ((off_t) size != input->filesize)
3679- fatal (_("%P: unsupported input file size: %s (%ld bytes)\n"),
3680+ fatal (_("%F%P: unsupported input file size: %s (%ld bytes)\n"),
3681 input->name, (long) input->filesize);
3682
3683 /* Check the cached view buffer. */
3684@@ -826,7 +826,7 @@ get_symbols (const void *handle, int nsyms, struct ld_plugin_symbol *syms,
3685 && blhe->type != bfd_link_hash_common)
3686 {
3687 /* We should not have a new, indirect or warning symbol here. */
3688- fatal (_("%P: %s: plugin symbol table corrupt (sym type %d)\n"),
3689+ fatal (_("%F%P: %s: plugin symbol table corrupt (sym type %d)\n"),
3690 called_plugin->name, blhe->type);
3691 }
3692
3693@@ -978,14 +978,13 @@ message (int level, const char *format, ...)
3694 case LDPL_ERROR:
3695 default:
3696 {
3697- char *newfmt = concat (_("%X%P: error: "), format, "\n",
3698+ char *newfmt = concat (level == LDPL_FATAL ? "%F" : "%X",
3699+ _("%P: error: "), format, "\n",
3700 (const char *) NULL);
3701 fflush (stdout);
3702 vfinfo (stderr, newfmt, args, true);
3703 fflush (stderr);
3704 free (newfmt);
3705- if (level == LDPL_FATAL)
3706- fatal ("");
3707 }
3708 break;
3709 }
3710@@ -1128,14 +1127,14 @@ plugin_load_plugins (void)
3711 if (!onloadfn)
3712 onloadfn = (ld_plugin_onload) dlsym (curplug->dlhandle, "_onload");
3713 if (!onloadfn)
3714- fatal (_("%P: %s: error loading plugin: %s\n"),
3715+ fatal (_("%F%P: %s: error loading plugin: %s\n"),
3716 curplug->name, dlerror ());
3717 set_tv_plugin_args (curplug, &my_tv[tv_header_size]);
3718 called_plugin = curplug;
3719 rv = (*onloadfn) (my_tv);
3720 called_plugin = NULL;
3721 if (rv != LDPS_OK)
3722- fatal (_("%P: %s: plugin error: %d\n"), curplug->name, rv);
3723+ fatal (_("%F%P: %s: plugin error: %d\n"), curplug->name, rv);
3724 curplug = curplug->next;
3725 }
3726
3727@@ -1194,7 +1193,7 @@ plugin_strdup (bfd *abfd, const char *str)
3728 strlength = strlen (str) + 1;
3729 copy = bfd_alloc (abfd, strlength);
3730 if (copy == NULL)
3731- fatal (_("%P: plugin_strdup failed to allocate memory: %s\n"),
3732+ fatal (_("%F%P: plugin_strdup failed to allocate memory: %s\n"),
3733 bfd_get_error ());
3734 memcpy (copy, str, strlength);
3735 return copy;
3736@@ -1231,7 +1230,7 @@ plugin_object_p (bfd *ibfd, bool known_used)
3737
3738 input = bfd_alloc (abfd, sizeof (*input));
3739 if (input == NULL)
3740- fatal (_("%P: plugin failed to allocate memory for input: %s\n"),
3741+ fatal (_("%F%P: plugin failed to allocate memory for input: %s\n"),
3742 bfd_get_error ());
3743
3744 if (!bfd_plugin_open_input (ibfd, &file))
3745@@ -1259,7 +1258,7 @@ plugin_object_p (bfd *ibfd, bool known_used)
3746 claimed = 0;
3747
3748 if (plugin_call_claim_file (&file, &claimed, known_used))
3749- fatal (_("%P: %s: plugin reported error claiming file\n"),
3750+ fatal (_("%F%P: %s: plugin reported error claiming file\n"),
3751 plugin_error_plugin ());
3752
3753 if (input->fd != -1
3754--
37552.43.0
3756
diff --git a/meta/recipes-devtools/binutils/binutils/0022-CVE-2025-5244.patch b/meta/recipes-devtools/binutils/binutils/0022-CVE-2025-5244.patch
new file mode 100644
index 0000000000..e8855a4b4b
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/0022-CVE-2025-5244.patch
@@ -0,0 +1,25 @@
1From: Alan Modra <amodra@gmail.com>
2Date: Thu, 10 Apr 2025 19:41:49 +0930
3
4Upstream-Status: Backport [https://sourceware.org/git/?p=binutils-gdb.git;a=patch;h=d1458933830456e54223d9fc61f0d9b3a19256f5]
5CVE: CVE-2025-5244
6
7PR32858 ld segfault on fuzzed object
8We missed one place where it is necessary to check for empty groups.
9
10Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
11
12diff --git a/bfd/elflink.c b/bfd/elflink.c
13index a76e8e38da7..549b7b7dd92 100644
14--- a/bfd/elflink.c
15+++ b/bfd/elflink.c
16@@ -14408,7 +14408,8 @@ elf_gc_sweep (bfd *abfd, struct bfd_link_info *info)
17 if (o->flags & SEC_GROUP)
18 {
19 asection *first = elf_next_in_group (o);
20- o->gc_mark = first->gc_mark;
21+ if (first != NULL)
22+ o->gc_mark = first->gc_mark;
23 }
24
25 if (o->gc_mark)
diff --git a/meta/recipes-devtools/binutils/binutils/0022-CVE-2025-5245.patch b/meta/recipes-devtools/binutils/binutils/0022-CVE-2025-5245.patch
new file mode 100644
index 0000000000..d4b7d55966
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/0022-CVE-2025-5245.patch
@@ -0,0 +1,38 @@
1From: Alan Modra <amodra@gmail.com>
2Date: Tue, 1 Apr 2025 22:36:54 +1030
3
4PR32829, SEGV on objdump function debug_type_samep
5u.kenum is always non-NULL, see debug_make_enum_type.
6
7Upstream-Status: Backport [https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=6c3458a8b7ee7d39f070c7b2350851cb2110c65a]
8CVE: CVE-2025-5245
9
10Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
11
12diff --git a/binutils/debug.c b/binutils/debug.c
13index dcc8ccde..465b18e7 100644
14--- a/binutils/debug.c
15+++ b/binutils/debug.c
16@@ -2554,9 +2554,6 @@ debug_write_type (struct debug_handle *info,
17 case DEBUG_KIND_UNION_CLASS:
18 return debug_write_class_type (info, fns, fhandle, type, tag);
19 case DEBUG_KIND_ENUM:
20- if (type->u.kenum == NULL)
21- return (*fns->enum_type) (fhandle, tag, (const char **) NULL,
22- (bfd_signed_vma *) NULL);
23 return (*fns->enum_type) (fhandle, tag, type->u.kenum->names,
24 type->u.kenum->values);
25 case DEBUG_KIND_POINTER:
26@@ -3097,9 +3094,9 @@ debug_type_samep (struct debug_handle *info, struct debug_type_s *t1,
27 break;
28
29 case DEBUG_KIND_ENUM:
30- if (t1->u.kenum == NULL)
31- ret = t2->u.kenum == NULL;
32- else if (t2->u.kenum == NULL)
33+ if (t1->u.kenum->names == NULL)
34+ ret = t2->u.kenum->names == NULL;
35+ else if (t2->u.kenum->names == NULL)
36 ret = false;
37 else
38 {
diff --git a/meta/recipes-devtools/binutils/binutils/CVE-2025-1179-pre.patch b/meta/recipes-devtools/binutils/binutils/CVE-2025-1179-pre.patch
new file mode 100644
index 0000000000..b5bf27ec6d
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/CVE-2025-1179-pre.patch
@@ -0,0 +1,1086 @@
1From 1d68a49ac5d71b648304f69af978fce0f4413800 Mon Sep 17 00:00:00 2001
2From: "H.J. Lu" <hjl.tools@gmail.com>
3Date: Tue, 23 Jul 2024 23:39:50 -0700
4Subject: [PATCH 1/2] x86: Improve TLS transition error check
5
6Provide detailed TLS transition errors when unsupported instructions are
7used. Treat R_X86_64_CODE_4_GOTTPOFF and R_X86_64_CODE_6_GOTTPOFF as
8R_X86_64_GOTTPOFF when performing TLS transition.
9
10bfd/
11
12 PR ld/32017
13 * elf32-i386.c (elf_i386_check_tls_transition): Return different
14 enums for different errors.
15 (elf_i386_tls_transition): Change argument from r_symndx to sym.
16 Call _bfd_x86_elf_link_report_tls_transition_error to report TLS
17 transition errors.
18 (elf_i386_scan_relocs): Pass isym instead of r_symndx to
19 elf_i386_tls_transition.
20 (elf_i386_relocate_section): Pass sym instead of r_symndx to
21 elf_i386_tls_transition.
22 * elf64-x86-64.c (elf_x86_64_check_tls_transition): Return
23 different enums for different errors.
24 (elf_x86_64_tls_transition): Change argument from r_symndx to sym.
25 Treat R_X86_64_CODE_4_GOTTPOFF and R_X86_64_CODE_6_GOTTPOFF as
26 R_X86_64_GOTTPOFF. Call
27 _bfd_x86_elf_link_report_tls_transition_error to report TLS
28 transition errors.
29 (elf_x86_64_scan_relocs): Pass isym instead of r_symndx to
30 elf_x86_64_tls_transition.
31 (elf_x86_64_relocate_section): Pass sym instead of r_symndx to
32 elf_x86_64_tls_transition.
33 * elfxx-x86.c (_bfd_x86_elf_link_report_tls_transition_error): New.
34 * elfxx-x86.h (elf_x86_tls_error_type): Likewise.
35 (_bfd_x86_elf_link_report_tls_transition_error): Likewise.
36
37ld/
38
39 PR ld/32017
40 * testsuite/ld-i386/i386.exp: Run tlsgdesc1 and tlsgdesc2.
41 * testsuite/ld-i386/tlsie2.d: Updated.
42 * testsuite/ld-i386/tlsie3.d: Likewise.
43 * testsuite/ld-i386/tlsie4.d: Likewise.
44 * testsuite/ld-i386/tlsie5.d: Likewise.
45 * testsuite/ld-x86-64/tlsie2.d: Likewise.
46 * testsuite/ld-x86-64/tlsie3.d: Likewise.
47 * testsuite/ld-i386/tlsgdesc1.d: New file.
48 * testsuite/ld-i386/tlsgdesc1.s: Likewise.
49 * testsuite/ld-i386/tlsgdesc2.d: Likewise.
50 * testsuite/ld-i386/tlsgdesc2.s: Likewise.
51 * testsuite/ld-x86-64/tlsdesc3.d: Likewise.
52 * testsuite/ld-x86-64/tlsdesc3.s: Likewise.
53 * testsuite/ld-x86-64/tlsdesc4.d: Likewise.
54 * testsuite/ld-x86-64/tlsdesc4.s: Likewise.
55 * testsuite/ld-x86-64/tlsie5.d: Likewise.
56 * testsuite/ld-x86-64/tlsie5.s: Likewise.
57 * testsuite/ld-x86-64/x86-64.exp: Run tlsie5, tlsdesc3 and
58 tlsdesc4.
59
60(cherry picked from commit:1d68a49ac5d71b648304f69af978fce0f4413800)
61Upstream-Status: Submitted [https://sourceware.org/pipermail/binutils/2025-May/141322.html]
62CVE: CVE-2025-1179
63
64Signed-off-by: Harish Sadineni <Harish.Sadineni@windriver.com>
65---
66 bfd/elf32-i386.c | 118 +++++++++++++-------------
67 bfd/elf64-x86-64.c | 133 ++++++++++++++++--------------
68 bfd/elfxx-x86.c | 85 +++++++++++++++++++
69 bfd/elfxx-x86.h | 18 ++++
70 ld/testsuite/ld-i386/i386.exp | 2 +
71 ld/testsuite/ld-i386/tlsgdesc1.d | 4 +
72 ld/testsuite/ld-i386/tlsgdesc1.s | 11 +++
73 ld/testsuite/ld-i386/tlsgdesc2.d | 4 +
74 ld/testsuite/ld-i386/tlsgdesc2.s | 11 +++
75 ld/testsuite/ld-i386/tlsie2.d | 2 +-
76 ld/testsuite/ld-i386/tlsie3.d | 2 +-
77 ld/testsuite/ld-i386/tlsie4.d | 2 +-
78 ld/testsuite/ld-i386/tlsie5.d | 2 +-
79 ld/testsuite/ld-x86-64/tlsdesc3.d | 4 +
80 ld/testsuite/ld-x86-64/tlsdesc3.s | 13 +++
81 ld/testsuite/ld-x86-64/tlsdesc4.d | 4 +
82 ld/testsuite/ld-x86-64/tlsdesc4.s | 13 +++
83 ld/testsuite/ld-x86-64/tlsie2.d | 2 +-
84 ld/testsuite/ld-x86-64/tlsie3.d | 2 +-
85 ld/testsuite/ld-x86-64/tlsie5.d | 4 +
86 ld/testsuite/ld-x86-64/tlsie5.s | 12 +++
87 ld/testsuite/ld-x86-64/x86-64.exp | 3 +
88 22 files changed, 319 insertions(+), 132 deletions(-)
89 create mode 100644 ld/testsuite/ld-i386/tlsgdesc1.d
90 create mode 100644 ld/testsuite/ld-i386/tlsgdesc1.s
91 create mode 100644 ld/testsuite/ld-i386/tlsgdesc2.d
92 create mode 100644 ld/testsuite/ld-i386/tlsgdesc2.s
93 create mode 100644 ld/testsuite/ld-x86-64/tlsdesc3.d
94 create mode 100644 ld/testsuite/ld-x86-64/tlsdesc3.s
95 create mode 100644 ld/testsuite/ld-x86-64/tlsdesc4.d
96 create mode 100644 ld/testsuite/ld-x86-64/tlsdesc4.s
97 create mode 100644 ld/testsuite/ld-x86-64/tlsie5.d
98 create mode 100644 ld/testsuite/ld-x86-64/tlsie5.s
99
100diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c
101index e2f88a11487..18a28d2491c 100644
102--- a/bfd/elf32-i386.c
103+++ b/bfd/elf32-i386.c
104@@ -839,7 +839,7 @@ static const struct elf_x86_non_lazy_plt_layout elf_i386_non_lazy_ibt_plt =
105 /* Return TRUE if the TLS access code sequence support transition
106 from R_TYPE. */
107
108-static bool
109+static enum elf_x86_tls_error_type
110 elf_i386_check_tls_transition (asection *sec,
111 bfd_byte *contents,
112 Elf_Internal_Shdr *symtab_hdr,
113@@ -861,7 +861,7 @@ elf_i386_check_tls_transition (asection *sec,
114 case R_386_TLS_GD:
115 case R_386_TLS_LDM:
116 if (offset < 2 || (rel + 1) >= relend)
117- return false;
118+ return elf_x86_tls_error_yes;
119
120 indirect_call = false;
121 call = contents + offset + 4;
122@@ -884,19 +884,19 @@ elf_i386_check_tls_transition (asection *sec,
123 can transit to different access model. */
124 if ((offset + 10) > sec->size
125 || (type != 0x8d && type != 0x04))
126- return false;
127+ return elf_x86_tls_error_yes;
128
129 if (type == 0x04)
130 {
131 /* leal foo@tlsgd(,%ebx,1), %eax
132 call ___tls_get_addr@PLT */
133 if (offset < 3)
134- return false;
135+ return elf_x86_tls_error_yes;
136
137 if (*(call - 7) != 0x8d
138 || val != 0x1d
139 || call[0] != 0xe8)
140- return false;
141+ return elf_x86_tls_error_yes;
142 }
143 else
144 {
145@@ -914,7 +914,7 @@ elf_i386_check_tls_transition (asection *sec,
146 is used to pass parameter to ___tls_get_addr. */
147 reg = val & 7;
148 if ((val & 0xf8) != 0x80 || reg == 4 || reg == 0)
149- return false;
150+ return elf_x86_tls_error_yes;
151
152 indirect_call = call[0] == 0xff;
153 if (!(reg == 3 && call[0] == 0xe8 && call[5] == 0x90)
154@@ -922,7 +922,7 @@ elf_i386_check_tls_transition (asection *sec,
155 && !(indirect_call
156 && (call[1] & 0xf8) == 0x90
157 && (call[1] & 0x7) == reg))
158- return false;
159+ return elf_x86_tls_error_yes;
160 }
161 }
162 else
163@@ -937,13 +937,13 @@ elf_i386_check_tls_transition (asection *sec,
164 addr32 call ___tls_get_addr
165 can transit to different access model. */
166 if (type != 0x8d || (offset + 9) > sec->size)
167- return false;
168+ return elf_x86_tls_error_yes;
169
170 /* %eax can't be used as the GOT base register since it is
171 used to pass parameter to ___tls_get_addr. */
172 reg = val & 7;
173 if ((val & 0xf8) != 0x80 || reg == 4 || reg == 0)
174- return false;
175+ return elf_x86_tls_error_yes;
176
177 indirect_call = call[0] == 0xff;
178 if (!(reg == 3 && call[0] == 0xe8)
179@@ -951,23 +951,27 @@ elf_i386_check_tls_transition (asection *sec,
180 && !(indirect_call
181 && (call[1] & 0xf8) == 0x90
182 && (call[1] & 0x7) == reg))
183- return false;
184+ return elf_x86_tls_error_yes;
185 }
186
187 r_symndx = ELF32_R_SYM (rel[1].r_info);
188 if (r_symndx < symtab_hdr->sh_info)
189- return false;
190+ return elf_x86_tls_error_yes;
191
192 h = sym_hashes[r_symndx - symtab_hdr->sh_info];
193 if (h == NULL
194 || !((struct elf_x86_link_hash_entry *) h)->tls_get_addr)
195- return false;
196+ return elf_x86_tls_error_yes;
197 else if (indirect_call)
198- return (ELF32_R_TYPE (rel[1].r_info) == R_386_GOT32X
199- || ELF32_R_TYPE (rel[1].r_info) == R_386_GOT32);
200+ return ((ELF32_R_TYPE (rel[1].r_info) == R_386_GOT32X
201+ || ELF32_R_TYPE (rel[1].r_info) == R_386_GOT32)
202+ ? elf_x86_tls_error_none
203+ : elf_x86_tls_error_yes);
204 else
205- return (ELF32_R_TYPE (rel[1].r_info) == R_386_PC32
206- || ELF32_R_TYPE (rel[1].r_info) == R_386_PLT32);
207+ return ((ELF32_R_TYPE (rel[1].r_info) == R_386_PC32
208+ || ELF32_R_TYPE (rel[1].r_info) == R_386_PLT32)
209+ ? elf_x86_tls_error_none
210+ : elf_x86_tls_error_yes);
211
212 case R_386_TLS_IE:
213 /* Check transition from IE access model:
214@@ -977,20 +981,23 @@ elf_i386_check_tls_transition (asection *sec,
215 */
216
217 if (offset < 1 || (offset + 4) > sec->size)
218- return false;
219+ return elf_x86_tls_error_yes;
220
221 /* Check "movl foo@tpoff(%rip), %eax" first. */
222 val = bfd_get_8 (abfd, contents + offset - 1);
223 if (val == 0xa1)
224- return true;
225+ return elf_x86_tls_error_none;
226
227 if (offset < 2)
228- return false;
229+ return elf_x86_tls_error_yes;
230
231 /* Check movl|addl foo@tpoff(%rip), %reg. */
232 type = bfd_get_8 (abfd, contents + offset - 2);
233- return ((type == 0x8b || type == 0x03)
234- && (val & 0xc7) == 0x05);
235+ if (type != 0x8b && type != 0x03)
236+ return elf_x86_tls_error_add_mov;
237+ return ((val & 0xc7) == 0x05
238+ ? elf_x86_tls_error_none
239+ : elf_x86_tls_error_yes);
240
241 case R_386_TLS_GOTIE:
242 case R_386_TLS_IE_32:
243@@ -1001,14 +1008,16 @@ elf_i386_check_tls_transition (asection *sec,
244 */
245
246 if (offset < 2 || (offset + 4) > sec->size)
247- return false;
248+ return elf_x86_tls_error_yes;
249
250 val = bfd_get_8 (abfd, contents + offset - 1);
251 if ((val & 0xc0) != 0x80 || (val & 7) == 4)
252- return false;
253+ return elf_x86_tls_error_yes;
254
255 type = bfd_get_8 (abfd, contents + offset - 2);
256- return type == 0x8b || type == 0x2b || type == 0x03;
257+ return (type == 0x8b || type == 0x2b || type == 0x03
258+ ? elf_x86_tls_error_none
259+ : elf_x86_tls_error_add_sub_mov);
260
261 case R_386_TLS_GOTDESC:
262 /* Check transition from GDesc access model:
263@@ -1019,13 +1028,15 @@ elf_i386_check_tls_transition (asection *sec,
264 going to be eax. */
265
266 if (offset < 2 || (offset + 4) > sec->size)
267- return false;
268+ return elf_x86_tls_error_yes;
269
270 if (bfd_get_8 (abfd, contents + offset - 2) != 0x8d)
271- return false;
272+ return elf_x86_tls_error_lea;
273
274 val = bfd_get_8 (abfd, contents + offset - 1);
275- return (val & 0xc7) == 0x83;
276+ return ((val & 0xc7) == 0x83
277+ ? elf_x86_tls_error_none
278+ : elf_x86_tls_error_yes);
279
280 case R_386_TLS_DESC_CALL:
281 /* Check transition from GDesc access model:
282@@ -1035,10 +1046,12 @@ elf_i386_check_tls_transition (asection *sec,
283 {
284 /* Make sure that it's a call *x@tlsdesc(%eax). */
285 call = contents + offset;
286- return call[0] == 0xff && call[1] == 0x10;
287+ return (call[0] == 0xff && call[1] == 0x10
288+ ? elf_x86_tls_error_none
289+ : elf_x86_tls_error_indirect_call);
290 }
291
292- return false;
293+ return elf_x86_tls_error_yes;
294
295 default:
296 abort ();
297@@ -1057,7 +1070,7 @@ elf_i386_tls_transition (struct bfd_link_info *info, bfd *abfd,
298 const Elf_Internal_Rela *rel,
299 const Elf_Internal_Rela *relend,
300 struct elf_link_hash_entry *h,
301- unsigned long r_symndx,
302+ Elf_Internal_Sym *sym,
303 bool from_relocate_section)
304 {
305 unsigned int from_type = *r_type;
306@@ -1142,43 +1155,24 @@ elf_i386_tls_transition (struct bfd_link_info *info, bfd *abfd,
307 return true;
308
309 /* Check if the transition can be performed. */
310+ enum elf_x86_tls_error_type tls_error;
311 if (check
312- && ! elf_i386_check_tls_transition (sec, contents,
313- symtab_hdr, sym_hashes,
314- from_type, rel, relend))
315+ && ((tls_error = elf_i386_check_tls_transition (sec, contents,
316+ symtab_hdr,
317+ sym_hashes,
318+ from_type, rel,
319+ relend))
320+ != elf_x86_tls_error_none))
321 {
322 reloc_howto_type *from, *to;
323- const char *name;
324
325 from = elf_i386_rtype_to_howto (from_type);
326 to = elf_i386_rtype_to_howto (to_type);
327
328- if (h)
329- name = h->root.root.string;
330- else
331- {
332- struct elf_x86_link_hash_table *htab;
333-
334- htab = elf_x86_hash_table (info, I386_ELF_DATA);
335- if (htab == NULL)
336- name = "*unknown*";
337- else
338- {
339- Elf_Internal_Sym *isym;
340-
341- isym = bfd_sym_from_r_symndx (&htab->elf.sym_cache,
342- abfd, r_symndx);
343- name = bfd_elf_sym_name (abfd, symtab_hdr, isym, NULL);
344- }
345- }
346+ _bfd_x86_elf_link_report_tls_transition_error
347+ (info, abfd, sec, symtab_hdr, h, sym, rel, from->name,
348+ to->name, tls_error);
349
350- _bfd_error_handler
351- /* xgettext:c-format */
352- (_("%pB: TLS transition from %s to %s against `%s'"
353- " at %#" PRIx64 " in section `%pA' failed"),
354- abfd, from->name, to->name, name,
355- (uint64_t) rel->r_offset, sec);
356- bfd_set_error (bfd_error_bad_value);
357 return false;
358 }
359
360@@ -1600,7 +1594,7 @@ elf_i386_scan_relocs (bfd *abfd,
361 if (! elf_i386_tls_transition (info, abfd, sec, contents,
362 symtab_hdr, sym_hashes,
363 &r_type, GOT_UNKNOWN,
364- rel, rel_end, h, r_symndx, false))
365+ rel, rel_end, h, isym, false))
366 goto error_return;
367
368 /* Check if _GLOBAL_OFFSET_TABLE_ is referenced. */
369@@ -2875,7 +2869,7 @@ elf_i386_relocate_section (bfd *output_bfd,
370 input_section, contents,
371 symtab_hdr, sym_hashes,
372 &r_type_tls, tls_type, rel,
373- relend, h, r_symndx, true))
374+ relend, h, sym, true))
375 return false;
376
377 expected_tls_le = htab->elf.target_os == is_solaris
378@@ -3365,7 +3359,7 @@ elf_i386_relocate_section (bfd *output_bfd,
379 input_section, contents,
380 symtab_hdr, sym_hashes,
381 &r_type, GOT_UNKNOWN, rel,
382- relend, h, r_symndx, true))
383+ relend, h, sym, true))
384 return false;
385
386 if (r_type != R_386_TLS_LDM)
387diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c
388index 2ed120af780..f116e423f61 100644
389--- a/bfd/elf64-x86-64.c
390+++ b/bfd/elf64-x86-64.c
391@@ -1120,7 +1120,7 @@ elf32_x86_64_elf_object_p (bfd *abfd)
392 /* Return TRUE if the TLS access code sequence support transition
393 from R_TYPE. */
394
395-static bool
396+static enum elf_x86_tls_error_type
397 elf_x86_64_check_tls_transition (bfd *abfd,
398 struct bfd_link_info *info,
399 asection *sec,
400@@ -1147,7 +1147,7 @@ elf_x86_64_check_tls_transition (bfd *abfd,
401 case R_X86_64_TLSGD:
402 case R_X86_64_TLSLD:
403 if ((rel + 1) >= relend)
404- return false;
405+ return elf_x86_tls_error_yes;
406
407 if (r_type == R_X86_64_TLSGD)
408 {
409@@ -1184,7 +1184,7 @@ elf_x86_64_check_tls_transition (bfd *abfd,
410 static const unsigned char leaq[] = { 0x66, 0x48, 0x8d, 0x3d };
411
412 if ((offset + 12) > sec->size)
413- return false;
414+ return elf_x86_tls_error_yes;
415
416 call = contents + offset + 4;
417 if (call[0] != 0x66
418@@ -1208,20 +1208,20 @@ elf_x86_64_check_tls_transition (bfd *abfd,
419 || call[14] != 0xd0
420 || !((call[10] == 0x48 && call[12] == 0xd8)
421 || (call[10] == 0x4c && call[12] == 0xf8)))
422- return false;
423+ return elf_x86_tls_error_yes;
424 largepic = true;
425 }
426 else if (ABI_64_P (abfd))
427 {
428 if (offset < 4
429 || memcmp (contents + offset - 4, leaq, 4) != 0)
430- return false;
431+ return elf_x86_tls_error_yes;
432 }
433 else
434 {
435 if (offset < 3
436 || memcmp (contents + offset - 3, leaq + 1, 3) != 0)
437- return false;
438+ return elf_x86_tls_error_yes;
439 }
440 indirect_call = call[2] == 0xff;
441 }
442@@ -1250,10 +1250,10 @@ elf_x86_64_check_tls_transition (bfd *abfd,
443 static const unsigned char lea[] = { 0x48, 0x8d, 0x3d };
444
445 if (offset < 3 || (offset + 9) > sec->size)
446- return false;
447+ return elf_x86_tls_error_yes;
448
449 if (memcmp (contents + offset - 3, lea, 3) != 0)
450- return false;
451+ return elf_x86_tls_error_yes;
452
453 call = contents + offset + 4;
454 if (!(call[0] == 0xe8
455@@ -1268,7 +1268,7 @@ elf_x86_64_check_tls_transition (bfd *abfd,
456 || call[14] != 0xd0
457 || !((call[10] == 0x48 && call[12] == 0xd8)
458 || (call[10] == 0x4c && call[12] == 0xf8)))
459- return false;
460+ return elf_x86_tls_error_yes;
461 largepic = true;
462 }
463 indirect_call = call[0] == 0xff;
464@@ -1276,22 +1276,30 @@ elf_x86_64_check_tls_transition (bfd *abfd,
465
466 r_symndx = htab->r_sym (rel[1].r_info);
467 if (r_symndx < symtab_hdr->sh_info)
468- return false;
469+ return elf_x86_tls_error_yes;
470
471 h = sym_hashes[r_symndx - symtab_hdr->sh_info];
472 if (h == NULL
473 || !((struct elf_x86_link_hash_entry *) h)->tls_get_addr)
474- return false;
475+ return elf_x86_tls_error_yes;
476 else
477 {
478 r_type = (ELF32_R_TYPE (rel[1].r_info)
479 & ~R_X86_64_converted_reloc_bit);
480 if (largepic)
481- return r_type == R_X86_64_PLTOFF64;
482+ return (r_type == R_X86_64_PLTOFF64
483+ ? elf_x86_tls_error_none
484+ : elf_x86_tls_error_yes);
485 else if (indirect_call)
486- return (r_type == R_X86_64_GOTPCRELX || r_type == R_X86_64_GOTPCREL);
487+ return ((r_type == R_X86_64_GOTPCRELX
488+ || r_type == R_X86_64_GOTPCREL)
489+ ? elf_x86_tls_error_none
490+ : elf_x86_tls_error_yes);
491 else
492- return (r_type == R_X86_64_PC32 || r_type == R_X86_64_PLT32);
493+ return ((r_type == R_X86_64_PC32
494+ || r_type == R_X86_64_PLT32)
495+ ? elf_x86_tls_error_none
496+ : elf_x86_tls_error_yes);
497 }
498
499 case R_X86_64_CODE_4_GOTTPOFF:
500@@ -1303,7 +1311,7 @@ elf_x86_64_check_tls_transition (bfd *abfd,
501 if (offset < 4
502 || (offset + 4) > sec->size
503 || contents[offset - 4] != 0xd5)
504- return false;
505+ return elf_x86_tls_error_yes;
506
507 goto check_gottpoff;
508
509@@ -1315,14 +1323,16 @@ elf_x86_64_check_tls_transition (bfd *abfd,
510 if (offset < 6
511 || (offset + 4) > sec->size
512 || contents[offset - 6] != 0x62)
513- return false;
514+ return elf_x86_tls_error_yes;
515
516 val = bfd_get_8 (abfd, contents + offset - 2);
517 if (val != 0x01 && val != 0x03)
518- return false;
519+ return elf_x86_tls_error_add;
520
521 val = bfd_get_8 (abfd, contents + offset - 1);
522- return (val & 0xc7) == 5;
523+ return ((val & 0xc7) == 5
524+ ? elf_x86_tls_error_none
525+ : elf_x86_tls_error_yes);
526
527 case R_X86_64_GOTTPOFF:
528 /* Check transition from IE access model:
529@@ -1338,25 +1348,27 @@ elf_x86_64_check_tls_transition (bfd *abfd,
530 {
531 /* X32 may have 0x44 REX prefix or no REX prefix. */
532 if (ABI_64_P (abfd))
533- return false;
534+ return elf_x86_tls_error_yes;
535 }
536 }
537 else
538 {
539 /* X32 may not have any REX prefix. */
540 if (ABI_64_P (abfd))
541- return false;
542+ return elf_x86_tls_error_yes;
543 if (offset < 2 || (offset + 3) > sec->size)
544- return false;
545+ return elf_x86_tls_error_yes;
546 }
547
548 check_gottpoff:
549 val = bfd_get_8 (abfd, contents + offset - 2);
550 if (val != 0x8b && val != 0x03)
551- return false;
552+ return elf_x86_tls_error_add_mov;
553
554 val = bfd_get_8 (abfd, contents + offset - 1);
555- return (val & 0xc7) == 5;
556+ return ((val & 0xc7) == 5
557+ ? elf_x86_tls_error_none
558+ : elf_x86_tls_error_yes);
559
560 case R_X86_64_CODE_4_GOTPC32_TLSDESC:
561 /* Check transition from GDesc access model:
562@@ -1366,7 +1378,7 @@ elf_x86_64_check_tls_transition (bfd *abfd,
563 if (offset < 4
564 || (offset + 4) > sec->size
565 || contents[offset - 4] != 0xd5)
566- return false;
567+ return elf_x86_tls_error_yes;
568
569 goto check_tlsdesc;
570
571@@ -1380,19 +1392,21 @@ elf_x86_64_check_tls_transition (bfd *abfd,
572 going to be rax. */
573
574 if (offset < 3 || (offset + 4) > sec->size)
575- return false;
576+ return elf_x86_tls_error_yes;
577
578 val = bfd_get_8 (abfd, contents + offset - 3);
579 val &= 0xfb;
580 if (val != 0x48 && (ABI_64_P (abfd) || val != 0x40))
581- return false;
582+ return elf_x86_tls_error_yes;
583
584 check_tlsdesc:
585 if (bfd_get_8 (abfd, contents + offset - 2) != 0x8d)
586- return false;
587+ return elf_x86_tls_error_lea;
588
589 val = bfd_get_8 (abfd, contents + offset - 1);
590- return (val & 0xc7) == 0x05;
591+ return ((val & 0xc7) == 0x05
592+ ? elf_x86_tls_error_none
593+ : elf_x86_tls_error_yes);
594
595 case R_X86_64_TLSDESC_CALL:
596 /* Check transition from GDesc access model:
597@@ -1411,14 +1425,16 @@ elf_x86_64_check_tls_transition (bfd *abfd,
598 {
599 prefix = 1;
600 if (offset + 3 > sec->size)
601- return false;
602+ return elf_x86_tls_error_yes;
603 }
604 }
605 /* Make sure that it's a call *x@tlsdesc(%rax). */
606- return call[prefix] == 0xff && call[1 + prefix] == 0x10;
607+ return (call[prefix] == 0xff && call[1 + prefix] == 0x10
608+ ? elf_x86_tls_error_none
609+ : elf_x86_tls_error_indirect_call);
610 }
611
612- return false;
613+ return elf_x86_tls_error_yes;
614
615 default:
616 abort ();
617@@ -1437,7 +1453,7 @@ elf_x86_64_tls_transition (struct bfd_link_info *info, bfd *abfd,
618 const Elf_Internal_Rela *rel,
619 const Elf_Internal_Rela *relend,
620 struct elf_link_hash_entry *h,
621- unsigned long r_symndx,
622+ Elf_Internal_Sym *sym,
623 bool from_relocate_section)
624 {
625 unsigned int from_type = *r_type;
626@@ -1488,7 +1504,12 @@ elf_x86_64_tls_transition (struct bfd_link_info *info, bfd *abfd,
627 /* We checked the transition before when we were called from
628 elf_x86_64_scan_relocs. We only want to check the new
629 transition which hasn't been checked before. */
630- check = new_to_type != to_type && from_type == to_type;
631+ check = (new_to_type != to_type
632+ && (from_type == to_type
633+ || (from_type == R_X86_64_CODE_4_GOTTPOFF
634+ && to_type == R_X86_64_GOTTPOFF)
635+ || (from_type == R_X86_64_CODE_6_GOTTPOFF
636+ && to_type == R_X86_64_GOTTPOFF)));
637 to_type = new_to_type;
638 }
639
640@@ -1512,13 +1533,18 @@ elf_x86_64_tls_transition (struct bfd_link_info *info, bfd *abfd,
641 return true;
642
643 /* Check if the transition can be performed. */
644+ enum elf_x86_tls_error_type tls_error;
645 if (check
646- && ! elf_x86_64_check_tls_transition (abfd, info, sec, contents,
647- symtab_hdr, sym_hashes,
648- from_type, rel, relend))
649+ && ((tls_error = elf_x86_64_check_tls_transition (abfd, info, sec,
650+ contents,
651+ symtab_hdr,
652+ sym_hashes,
653+ from_type, rel,
654+ relend))
655+ != elf_x86_tls_error_none))
656+
657 {
658 reloc_howto_type *from, *to;
659- const char *name;
660
661 from = elf_x86_64_rtype_to_howto (abfd, from_type);
662 to = elf_x86_64_rtype_to_howto (abfd, to_type);
663@@ -1526,31 +1552,10 @@ elf_x86_64_tls_transition (struct bfd_link_info *info, bfd *abfd,
664 if (from == NULL || to == NULL)
665 return false;
666
667- if (h)
668- name = h->root.root.string;
669- else
670- {
671- struct elf_x86_link_hash_table *htab;
672-
673- htab = elf_x86_hash_table (info, X86_64_ELF_DATA);
674- if (htab == NULL)
675- name = "*unknown*";
676- else
677- {
678- Elf_Internal_Sym *isym;
679+ _bfd_x86_elf_link_report_tls_transition_error
680+ (info, abfd, sec, symtab_hdr, h, sym, rel, from->name,
681+ to->name, tls_error);
682
683- isym = bfd_sym_from_r_symndx (&htab->elf.sym_cache,
684- abfd, r_symndx);
685- name = bfd_elf_sym_name (abfd, symtab_hdr, isym, NULL);
686- }
687- }
688-
689- _bfd_error_handler
690- /* xgettext:c-format */
691- (_("%pB: TLS transition from %s to %s against `%s' at %#" PRIx64
692- " in section `%pA' failed"),
693- abfd, from->name, to->name, name, (uint64_t) rel->r_offset, sec);
694- bfd_set_error (bfd_error_bad_value);
695 return false;
696 }
697
698@@ -2198,7 +2203,7 @@ elf_x86_64_scan_relocs (bfd *abfd, struct bfd_link_info *info,
699 if (! elf_x86_64_tls_transition (info, abfd, sec, contents,
700 symtab_hdr, sym_hashes,
701 &r_type, GOT_UNKNOWN,
702- rel, rel_end, h, r_symndx, false))
703+ rel, rel_end, h, isym, false))
704 goto error_return;
705
706 /* Check if _GLOBAL_OFFSET_TABLE_ is referenced. */
707@@ -3648,7 +3653,7 @@ elf_x86_64_relocate_section (bfd *output_bfd,
708 input_section, contents,
709 symtab_hdr, sym_hashes,
710 &r_type_tls, tls_type, rel,
711- relend, h, r_symndx, true))
712+ relend, h, sym, true))
713 return false;
714
715 if (r_type_tls == R_X86_64_TPOFF32)
716@@ -4308,7 +4313,7 @@ elf_x86_64_relocate_section (bfd *output_bfd,
717 input_section, contents,
718 symtab_hdr, sym_hashes,
719 &r_type, GOT_UNKNOWN, rel,
720- relend, h, r_symndx, true))
721+ relend, h, sym, true))
722 return false;
723
724 if (r_type != R_X86_64_TLSLD)
725diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c
726index 508fd771da3..b17dad759c8 100644
727--- a/bfd/elfxx-x86.c
728+++ b/bfd/elfxx-x86.c
729@@ -3202,6 +3202,91 @@ _bfd_x86_elf_link_report_relative_reloc
730 asect, abfd);
731 }
732
733+/* Report TLS transition error. */
734+
735+void
736+_bfd_x86_elf_link_report_tls_transition_error
737+ (struct bfd_link_info *info, bfd *abfd, asection *asect,
738+ Elf_Internal_Shdr *symtab_hdr, struct elf_link_hash_entry *h,
739+ Elf_Internal_Sym *sym, const Elf_Internal_Rela *rel,
740+ const char *from_reloc_name, const char *to_reloc_name,
741+ enum elf_x86_tls_error_type tls_error)
742+{
743+ const char *name;
744+
745+ if (h)
746+ name = h->root.root.string;
747+ else
748+ {
749+ const struct elf_backend_data *bed
750+ = get_elf_backend_data (abfd);
751+ struct elf_x86_link_hash_table *htab
752+ = elf_x86_hash_table (info, bed->target_id);
753+ if (htab == NULL)
754+ name = "*unknown*";
755+ else
756+ name = bfd_elf_sym_name (abfd, symtab_hdr, sym, NULL);
757+ }
758+
759+ switch (tls_error)
760+ {
761+ case elf_x86_tls_error_yes:
762+ info->callbacks->einfo
763+ /* xgettext:c-format */
764+ (_("%pB: TLS transition from %s to %s against `%s' at 0x%v in "
765+ "section `%pA' failed"),
766+ abfd, from_reloc_name, to_reloc_name, name, rel->r_offset,
767+ asect);
768+ break;
769+
770+ case elf_x86_tls_error_add:
771+ info->callbacks->einfo
772+ /* xgettext:c-format */
773+ (_("%pB(%pA+0x%v): relocation %s against `%s' must be used "
774+ "in ADD only"),
775+ abfd, asect, rel->r_offset, from_reloc_name, name);
776+ break;
777+
778+ case elf_x86_tls_error_add_mov:
779+ info->callbacks->einfo
780+ /* xgettext:c-format */
781+ (_("%pB(%pA+0x%v): relocation %s against `%s' must be used "
782+ "in ADD or MOV only"),
783+ abfd, asect, rel->r_offset, from_reloc_name, name);
784+ break;
785+
786+ case elf_x86_tls_error_add_sub_mov:
787+ info->callbacks->einfo
788+ /* xgettext:c-format */
789+ (_("%pB(%pA+0x%v): relocation %s against `%s' must be used "
790+ "in ADD, SUB or MOV only"),
791+ abfd, asect, rel->r_offset, from_reloc_name, name);
792+ break;
793+
794+ case elf_x86_tls_error_indirect_call:
795+ info->callbacks->einfo
796+ /* xgettext:c-format */
797+ (_("%pB(%pA+0x%v): relocation %s against `%s' must be used "
798+ "in indirect CALL only"),
799+ abfd, asect, rel->r_offset, from_reloc_name, name);
800+ break;
801+
802+ case elf_x86_tls_error_lea:
803+ info->callbacks->einfo
804+ /* xgettext:c-format */
805+ (_("%pB(%pA+0x%v): relocation %s against `%s' must be used "
806+ "in LEA only"),
807+ abfd, asect, rel->r_offset, from_reloc_name, name);
808+ break;
809+
810+ default:
811+ abort ();
812+ break;
813+ }
814+
815+ bfd_set_error (bfd_error_bad_value);
816+}
817+
818 /* Return TRUE if symbol should be hashed in the `.gnu.hash' section. */
819
820 bool
821diff --git a/bfd/elfxx-x86.h b/bfd/elfxx-x86.h
822index 110bcb9ad71..02e2efa6c56 100644
823--- a/bfd/elfxx-x86.h
824+++ b/bfd/elfxx-x86.h
825@@ -767,6 +767,18 @@ struct elf_x86_plt
826 long count;
827 };
828
829+enum elf_x86_tls_error_type
830+{
831+ elf_x86_tls_error_none,
832+ elf_x86_tls_error_add,
833+ elf_x86_tls_error_add_mov,
834+ elf_x86_tls_error_add_sub_mov,
835+ elf_x86_tls_error_indirect_call,
836+ elf_x86_tls_error_lea,
837+ elf_x86_tls_error_yes
838+};
839+
840+
841 /* Set if a relocation is converted from a GOTPCREL relocation. */
842 #define R_X86_64_converted_reloc_bit (1 << 7)
843
844@@ -908,6 +920,12 @@ extern void _bfd_x86_elf_link_fixup_ifunc_symbol
845 extern void _bfd_x86_elf_link_report_relative_reloc
846 (struct bfd_link_info *, asection *, struct elf_link_hash_entry *,
847 Elf_Internal_Sym *, const char *, const void *);
848+extern void _bfd_x86_elf_link_report_tls_transition_error
849+ (struct bfd_link_info *, bfd *, asection *, Elf_Internal_Shdr *,
850+ struct elf_link_hash_entry *, Elf_Internal_Sym *,
851+ const Elf_Internal_Rela *, const char *, const char *,
852+ enum elf_x86_tls_error_type);
853+
854
855 #define bfd_elf64_mkobject \
856 _bfd_x86_elf_mkobject
857diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp
858index 18d1c9198ca..a8db2c713f3 100644
859--- a/ld/testsuite/ld-i386/i386.exp
860+++ b/ld/testsuite/ld-i386/i386.exp
861@@ -541,6 +541,8 @@ run_dump_test "tlsdesc2"
862 run_dump_test "report-reloc-1"
863 run_dump_test "pr27998a"
864 run_dump_test "pr27998b"
865+run_dump_test "tlsgdesc1"
866+run_dump_test "tlsgdesc2"
867
868 proc undefined_weak {cflags ldflags} {
869 set testname "Undefined weak symbol"
870diff --git a/ld/testsuite/ld-i386/tlsgdesc1.d b/ld/testsuite/ld-i386/tlsgdesc1.d
871new file mode 100644
872index 00000000000..2a70e81c444
873--- /dev/null
874+++ b/ld/testsuite/ld-i386/tlsgdesc1.d
875@@ -0,0 +1,4 @@
876+#name: TLS GDesc->LE transition check (LEA)
877+#as: --32
878+#ld: -melf_i386
879+#error: .*: relocation R_386_TLS_GOTDESC against `foo' must be used in LEA only
880diff --git a/ld/testsuite/ld-i386/tlsgdesc1.s b/ld/testsuite/ld-i386/tlsgdesc1.s
881new file mode 100644
882index 00000000000..c30f7523462
883--- /dev/null
884+++ b/ld/testsuite/ld-i386/tlsgdesc1.s
885@@ -0,0 +1,11 @@
886+ .text
887+ .globl _start
888+_start:
889+ movl foo@tlsdesc(%ebx), %eax
890+ call *foo@tlscall(%eax)
891+ .section .tdata,"awT",@progbits
892+ .align 4
893+ .type foo, @object
894+ .size foo, 4
895+foo:
896+ .long 100
897diff --git a/ld/testsuite/ld-i386/tlsgdesc2.d b/ld/testsuite/ld-i386/tlsgdesc2.d
898new file mode 100644
899index 00000000000..2e6a66d372c
900--- /dev/null
901+++ b/ld/testsuite/ld-i386/tlsgdesc2.d
902@@ -0,0 +1,4 @@
903+#name: TLS GDesc->LE transition check (indirect CALL)
904+#as: --32
905+#ld: -melf_i386
906+#error: .*: relocation R_386_TLS_DESC_CALL against `foo' must be used in indirect CALL only
907diff --git a/ld/testsuite/ld-i386/tlsgdesc2.s b/ld/testsuite/ld-i386/tlsgdesc2.s
908new file mode 100644
909index 00000000000..7d9d556e2ab
910--- /dev/null
911+++ b/ld/testsuite/ld-i386/tlsgdesc2.s
912@@ -0,0 +1,11 @@
913+ .text
914+ .globl _start
915+_start:
916+ leal foo@tlsdesc(%ebx), %eax
917+ jmp *foo@tlscall(%eax)
918+ .section .tdata,"awT",@progbits
919+ .align 4
920+ .type foo, @object
921+ .size foo, 4
922+foo:
923+ .long 100
924diff --git a/ld/testsuite/ld-i386/tlsie2.d b/ld/testsuite/ld-i386/tlsie2.d
925index ebb85fde7e7..9f9e63029d6 100644
926--- a/ld/testsuite/ld-i386/tlsie2.d
927+++ b/ld/testsuite/ld-i386/tlsie2.d
928@@ -1,4 +1,4 @@
929 #name: TLS IE->LE transition check (R_386_TLS_GOTIE with %eax)
930 #as: --32
931 #ld: -melf_i386
932-#error: .*TLS transition from R_386_TLS_GOTIE to R_386_TLS_LE_32 against `foo'.*failed.*
933+#error: .*: relocation R_386_TLS_GOTIE against `foo' must be used in ADD, SUB or MOV only
934diff --git a/ld/testsuite/ld-i386/tlsie3.d b/ld/testsuite/ld-i386/tlsie3.d
935index d993f303c25..506f1a02605 100644
936--- a/ld/testsuite/ld-i386/tlsie3.d
937+++ b/ld/testsuite/ld-i386/tlsie3.d
938@@ -1,4 +1,4 @@
939 #name: TLS IE->LE transition check (R_386_TLS_GOTIE)
940 #as: --32
941 #ld: -melf_i386
942-#error: .*TLS transition from R_386_TLS_GOTIE to R_386_TLS_LE_32 against `foo'.*failed.*
943+#error: .*: relocation R_386_TLS_GOTIE against `foo' must be used in ADD, SUB or MOV only
944diff --git a/ld/testsuite/ld-i386/tlsie4.d b/ld/testsuite/ld-i386/tlsie4.d
945index 3ca8fddf5dd..a516d002660 100644
946--- a/ld/testsuite/ld-i386/tlsie4.d
947+++ b/ld/testsuite/ld-i386/tlsie4.d
948@@ -1,4 +1,4 @@
949 #name: TLS IE->LE transition check (R_386_TLS_IE with %eax)
950 #as: --32
951 #ld: -melf_i386
952-#error: .*TLS transition from R_386_TLS_IE to R_386_TLS_LE_32 against `foo'.*failed.*
953+#error: .*: relocation R_386_TLS_IE against `foo' must be used in ADD or MOV only
954diff --git a/ld/testsuite/ld-i386/tlsie5.d b/ld/testsuite/ld-i386/tlsie5.d
955index 3febeb159a9..d3447182e19 100644
956--- a/ld/testsuite/ld-i386/tlsie5.d
957+++ b/ld/testsuite/ld-i386/tlsie5.d
958@@ -1,4 +1,4 @@
959 #name: TLS IE->LE transition check (R_386_TLS_IE)
960 #as: --32
961 #ld: -melf_i386
962-#error: .*TLS transition from R_386_TLS_IE to R_386_TLS_LE_32 against `foo'.*failed.*
963+#error: .*: relocation R_386_TLS_IE against `foo' must be used in ADD or MOV only
964diff --git a/ld/testsuite/ld-x86-64/tlsdesc3.d b/ld/testsuite/ld-x86-64/tlsdesc3.d
965new file mode 100644
966index 00000000000..bbf22ebeafe
967--- /dev/null
968+++ b/ld/testsuite/ld-x86-64/tlsdesc3.d
969@@ -0,0 +1,4 @@
970+#name: TLS GDesc->LE transition check (LEA)
971+#as: --64
972+#ld: -melf_x86_64
973+#error: .*: relocation R_X86_64_GOTPC32_TLSDESC against `foo' must be used in LEA only
974diff --git a/ld/testsuite/ld-x86-64/tlsdesc3.s b/ld/testsuite/ld-x86-64/tlsdesc3.s
975new file mode 100644
976index 00000000000..45310654ffc
977--- /dev/null
978+++ b/ld/testsuite/ld-x86-64/tlsdesc3.s
979@@ -0,0 +1,13 @@
980+ .text
981+ .globl _start
982+ .type _start,@function
983+_start:
984+ movq foo@tlsdesc(%rip), %rax
985+ call *foo@tlscall(%rax)
986+ .globl foo
987+ .section .tdata,"awT",@progbits
988+ .align 8
989+ .type foo, @object
990+ .size foo, 8
991+foo:
992+ .quad 100
993diff --git a/ld/testsuite/ld-x86-64/tlsdesc4.d b/ld/testsuite/ld-x86-64/tlsdesc4.d
994new file mode 100644
995index 00000000000..b50115c7178
996--- /dev/null
997+++ b/ld/testsuite/ld-x86-64/tlsdesc4.d
998@@ -0,0 +1,4 @@
999+#name: TLS GDesc->LE transition check (indirect CALL)
1000+#as: --64
1001+#ld: -melf_x86_64
1002+#error: .*: relocation R_X86_64_TLSDESC_CALL against `foo' must be used in indirect CALL only
1003diff --git a/ld/testsuite/ld-x86-64/tlsdesc4.s b/ld/testsuite/ld-x86-64/tlsdesc4.s
1004new file mode 100644
1005index 00000000000..b3d6c12d4fc
1006--- /dev/null
1007+++ b/ld/testsuite/ld-x86-64/tlsdesc4.s
1008@@ -0,0 +1,13 @@
1009+ .text
1010+ .globl _start
1011+ .type _start,@function
1012+_start:
1013+ leaq foo@tlsdesc(%rip), %rax
1014+ jmp *foo@tlscall(%rax)
1015+ .globl foo
1016+ .section .tdata,"awT",@progbits
1017+ .align 8
1018+ .type foo, @object
1019+ .size foo, 8
1020+foo:
1021+ .quad 100
1022diff --git a/ld/testsuite/ld-x86-64/tlsie2.d b/ld/testsuite/ld-x86-64/tlsie2.d
1023index 97dcc288a3d..bf8a8198b5b 100644
1024--- a/ld/testsuite/ld-x86-64/tlsie2.d
1025+++ b/ld/testsuite/ld-x86-64/tlsie2.d
1026@@ -1,4 +1,4 @@
1027 #name: TLS IE->LE transition check
1028 #as: --64
1029 #ld: -melf_x86_64
1030-#error: .*TLS transition from R_X86_64_GOTTPOFF to R_X86_64_TPOFF32 against `foo'.*failed.*
1031+#error: .*: relocation R_X86_64_GOTTPOFF against `foo' must be used in ADD or MOV only
1032diff --git a/ld/testsuite/ld-x86-64/tlsie3.d b/ld/testsuite/ld-x86-64/tlsie3.d
1033index 8c982a69838..49d8464fbaf 100644
1034--- a/ld/testsuite/ld-x86-64/tlsie3.d
1035+++ b/ld/testsuite/ld-x86-64/tlsie3.d
1036@@ -1,4 +1,4 @@
1037 #name: TLS IE->LE transition check (%r12)
1038 #as: --64
1039 #ld: -melf_x86_64
1040-#error: .*TLS transition from R_X86_64_GOTTPOFF to R_X86_64_TPOFF32 against `foo'.*failed.*
1041+#error: .*: relocation R_X86_64_GOTTPOFF against `foo' must be used in ADD or MOV only
1042diff --git a/ld/testsuite/ld-x86-64/tlsie5.d b/ld/testsuite/ld-x86-64/tlsie5.d
1043new file mode 100644
1044index 00000000000..29de1cebf8e
1045--- /dev/null
1046+++ b/ld/testsuite/ld-x86-64/tlsie5.d
1047@@ -0,0 +1,4 @@
1048+#name: TLS IE->LE transition check (APX)
1049+#as: --64
1050+#ld: -melf_x86_64
1051+#error: .*: relocation R_X86_64_CODE_6_GOTTPOFF against `foo' must be used in ADD only
1052diff --git a/ld/testsuite/ld-x86-64/tlsie5.s b/ld/testsuite/ld-x86-64/tlsie5.s
1053new file mode 100644
1054index 00000000000..c39e46fd97b
1055--- /dev/null
1056+++ b/ld/testsuite/ld-x86-64/tlsie5.s
1057@@ -0,0 +1,12 @@
1058+ .text
1059+ .globl _start
1060+_start:
1061+ xorq %rax, foo@GOTTPOFF(%rip), %rax
1062+ movq (%rax), %rax
1063+ .globl foo
1064+ .section .tdata,"awT",@progbits
1065+ .align 4
1066+ .type foo, @object
1067+ .size foo, 4
1068+foo:
1069+ .long 100
1070diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp
1071index 2a40f0b095b..811813466f8 100644
1072--- a/ld/testsuite/ld-x86-64/x86-64.exp
1073+++ b/ld/testsuite/ld-x86-64/x86-64.exp
1074@@ -741,6 +741,9 @@ run_dump_test "pr27016b"
1075 run_dump_test "report-reloc-1"
1076 run_dump_test "report-reloc-1-x32"
1077 run_dump_test "pr29820"
1078+run_dump_test "tlsie5"
1079+run_dump_test "tlsdesc3"
1080+run_dump_test "tlsdesc4"
1081
1082 proc undefined_weak {cflags ldflags} {
1083 set testname "Undefined weak symbol"
1084--
10852.49.0
1086
diff --git a/meta/recipes-devtools/binutils/binutils/CVE-2025-1179.patch b/meta/recipes-devtools/binutils/binutils/CVE-2025-1179.patch
new file mode 100644
index 0000000000..89312d8501
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/CVE-2025-1179.patch
@@ -0,0 +1,269 @@
1From 67e30b15212adc1502b898a1ca224fdf65dc110d Mon Sep 17 00:00:00 2001
2From: "H.J. Lu" <hjl.tools@gmail.com>
3Date: Thu, 29 Aug 2024 08:47:00 -0700
4Subject: [PATCH] x86: Check invalid TLS descriptor call TLS descriptor
5 call,
6
7call *x@tlsdesc(%rax)
8
9or
10
11call *x@tlsdesc(%eax)
12
13calls _dl_tlsdesc_return which expects that RAX/EAX points to the TLS
14descriptor. Update x86 linker to issue an error with or without TLS
15transition.
16
17bfd/
18
19 PR ld/32123
20 * elf32-i386.c (elf_i386_check_tls_transition): Move
21 R_386_TLS_DESC_CALL to ...
22 (elf_i386_tls_transition): Here.
23 * elf64-x86-64.c (elf_x86_64_check_tls_transition): Move.
24 R_X86_64_TLSDESC_CALL check to ...
25 (elf_x86_64_tls_transition): Here.
26
27ld/
28
29 PR ld/32123
30 * testsuite/ld-i386/i386.exp: Run tlsgdesc3.
31 * testsuite/ld-i386/tlsgdesc3.d: New file.
32 * testsuite/ld-x86-64/tlsdesc5.d: Likewise.
33 * testsuite/ld-x86-64/x86-64.exp: Run tlsdesc5.
34
35(cherry picked from commit:67e30b15212adc1502b898a1ca224fdf65dc110d)
36Upstream-Status: Submitted [https://sourceware.org/pipermail/binutils/2025-May/141321.html]
37CVE: CVE-2025-1179
38
39Signed-off-by: Harish Sadineni <Harish.Sadineni@windriver.com>
40---
41 bfd/elf32-i386.c | 44 +++++++++++++------
42 bfd/elf64-x86-64.c | 71 +++++++++++++++++++------------
43 ld/testsuite/ld-i386/i386.exp | 1 +
44 ld/testsuite/ld-i386/tlsgdesc3.d | 5 +++
45 ld/testsuite/ld-x86-64/tlsdesc5.d | 5 +++
46 ld/testsuite/ld-x86-64/x86-64.exp | 1 +
47 6 files changed, 86 insertions(+), 41 deletions(-)
48 create mode 100644 ld/testsuite/ld-i386/tlsgdesc3.d
49 create mode 100644 ld/testsuite/ld-x86-64/tlsdesc5.d
50
51diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c
52index 18a28d2491c..9dea465f721 100644
53--- a/bfd/elf32-i386.c
54+++ b/bfd/elf32-i386.c
55@@ -1039,19 +1039,8 @@ elf_i386_check_tls_transition (asection *sec,
56 : elf_x86_tls_error_yes);
57
58 case R_386_TLS_DESC_CALL:
59- /* Check transition from GDesc access model:
60- call *x@tlsdesc(%eax)
61- */
62- if (offset + 2 <= sec->size)
63- {
64- /* Make sure that it's a call *x@tlsdesc(%eax). */
65- call = contents + offset;
66- return (call[0] == 0xff && call[1] == 0x10
67- ? elf_x86_tls_error_none
68- : elf_x86_tls_error_indirect_call);
69- }
70-
71- return elf_x86_tls_error_yes;
72+ /* It has been checked in elf_i386_tls_transition. */
73+ return elf_x86_tls_error_none;
74
75 default:
76 abort ();
77@@ -1077,6 +1066,8 @@ elf_i386_tls_transition (struct bfd_link_info *info, bfd *abfd,
78 unsigned int to_type = from_type;
79 bool check = true;
80 unsigned int to_le_type, to_ie_type;
81+ bfd_vma offset;
82+ bfd_byte *call;
83
84 /* Skip TLS transition for functions. */
85 if (h != NULL
86@@ -1098,9 +1089,34 @@ elf_i386_tls_transition (struct bfd_link_info *info, bfd *abfd,
87
88 switch (from_type)
89 {
90+ case R_386_TLS_DESC_CALL:
91+ /* Check valid GDesc call:
92+ call *x@tlsdesc(%eax)
93+ */
94+ offset = rel->r_offset;
95+ call = NULL;
96+ if (offset + 2 <= sec->size)
97+ {
98+ /* Make sure that it's a call *x@tlsdesc(%eax). */
99+ call = contents + offset;
100+ if (call[0] != 0xff || call[1] != 0x10)
101+ call = NULL;
102+ }
103+
104+ if (call == NULL)
105+ {
106+ _bfd_x86_elf_link_report_tls_transition_error
107+ (info, abfd, sec, symtab_hdr, h, sym, rel,
108+ "R_386_TLS_DESC_CALL", NULL,
109+ elf_x86_tls_error_indirect_call);
110+
111+ return false;
112+ }
113+
114+ /* Fall through. */
115+
116 case R_386_TLS_GD:
117 case R_386_TLS_GOTDESC:
118- case R_386_TLS_DESC_CALL:
119 case R_386_TLS_IE_32:
120 case R_386_TLS_IE:
121 case R_386_TLS_GOTIE:
122diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c
123index f116e423f61..7af2e607b02 100644
124--- a/bfd/elf64-x86-64.c
125+++ b/bfd/elf64-x86-64.c
126@@ -1409,32 +1409,8 @@ elf_x86_64_check_tls_transition (bfd *abfd,
127 : elf_x86_tls_error_yes);
128
129 case R_X86_64_TLSDESC_CALL:
130- /* Check transition from GDesc access model:
131- call *x@tlsdesc(%rax) <--- LP64 mode.
132- call *x@tlsdesc(%eax) <--- X32 mode.
133- */
134- if (offset + 2 <= sec->size)
135- {
136- unsigned int prefix;
137- call = contents + offset;
138- prefix = 0;
139- if (!ABI_64_P (abfd))
140- {
141- /* Check for call *x@tlsdesc(%eax). */
142- if (call[0] == 0x67)
143- {
144- prefix = 1;
145- if (offset + 3 > sec->size)
146- return elf_x86_tls_error_yes;
147- }
148- }
149- /* Make sure that it's a call *x@tlsdesc(%rax). */
150- return (call[prefix] == 0xff && call[1 + prefix] == 0x10
151- ? elf_x86_tls_error_none
152- : elf_x86_tls_error_indirect_call);
153- }
154-
155- return elf_x86_tls_error_yes;
156+ /* It has been checked in elf_x86_64_tls_transition. */
157+ return elf_x86_tls_error_none;
158
159 default:
160 abort ();
161@@ -1459,6 +1435,8 @@ elf_x86_64_tls_transition (struct bfd_link_info *info, bfd *abfd,
162 unsigned int from_type = *r_type;
163 unsigned int to_type = from_type;
164 bool check = true;
165+ bfd_vma offset;
166+ bfd_byte *call;
167
168 /* Skip TLS transition for functions. */
169 if (h != NULL
170@@ -1468,10 +1446,49 @@ elf_x86_64_tls_transition (struct bfd_link_info *info, bfd *abfd,
171
172 switch (from_type)
173 {
174+ case R_X86_64_TLSDESC_CALL:
175+ /* Check valid GDesc call:
176+ call *x@tlsdesc(%rax) <--- LP64 mode.
177+ call *x@tlsdesc(%eax) <--- X32 mode.
178+ */
179+ offset = rel->r_offset;
180+ call = NULL;
181+ if (offset + 2 <= sec->size)
182+ {
183+ unsigned int prefix;
184+ call = contents + offset;
185+ prefix = 0;
186+ if (!ABI_64_P (abfd))
187+ {
188+ /* Check for call *x@tlsdesc(%eax). */
189+ if (call[0] == 0x67)
190+ {
191+ prefix = 1;
192+ if (offset + 3 > sec->size)
193+ call = NULL;
194+ }
195+ }
196+
197+ /* Make sure that it's a call *x@tlsdesc(%rax). */
198+ if (call != NULL
199+ && (call[prefix] != 0xff || call[1 + prefix] != 0x10))
200+ call = NULL;
201+ }
202+
203+ if (call == NULL)
204+ {
205+ _bfd_x86_elf_link_report_tls_transition_error
206+ (info, abfd, sec, symtab_hdr, h, sym, rel,
207+ "R_X86_64_TLSDESC_CALL", NULL,
208+ elf_x86_tls_error_indirect_call);
209+ return false;
210+ }
211+
212+ /* Fall through. */
213+
214 case R_X86_64_TLSGD:
215 case R_X86_64_GOTPC32_TLSDESC:
216 case R_X86_64_CODE_4_GOTPC32_TLSDESC:
217- case R_X86_64_TLSDESC_CALL:
218 case R_X86_64_GOTTPOFF:
219 case R_X86_64_CODE_4_GOTTPOFF:
220 case R_X86_64_CODE_6_GOTTPOFF:
221diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp
222index a8db2c713f3..41e8725d059 100644
223--- a/ld/testsuite/ld-i386/i386.exp
224+++ b/ld/testsuite/ld-i386/i386.exp
225@@ -543,6 +543,7 @@ run_dump_test "pr27998a"
226 run_dump_test "pr27998b"
227 run_dump_test "tlsgdesc1"
228 run_dump_test "tlsgdesc2"
229+run_dump_test "tlsgdesc3"
230
231 proc undefined_weak {cflags ldflags} {
232 set testname "Undefined weak symbol"
233diff --git a/ld/testsuite/ld-i386/tlsgdesc3.d b/ld/testsuite/ld-i386/tlsgdesc3.d
234new file mode 100644
235index 00000000000..f2c29d880f2
236--- /dev/null
237+++ b/ld/testsuite/ld-i386/tlsgdesc3.d
238@@ -0,0 +1,5 @@
239+#source: tlsgdesc2.s
240+#name: TLS GDesc call (indirect CALL)
241+#as: --32
242+#ld: -shared -melf_i386
243+#error: .*: relocation R_386_TLS_DESC_CALL against `foo' must be used in indirect CALL with EAX register only
244diff --git a/ld/testsuite/ld-x86-64/tlsdesc5.d b/ld/testsuite/ld-x86-64/tlsdesc5.d
245new file mode 100644
246index 00000000000..6a0158b44b7
247--- /dev/null
248+++ b/ld/testsuite/ld-x86-64/tlsdesc5.d
249@@ -0,0 +1,5 @@
250+#source: tlsdesc4.s
251+#name: TLS GDesc call (indirect CALL)
252+#as: --64
253+#ld: -shared -melf_x86_64
254+#error: .*: relocation R_X86_64_TLSDESC_CALL against `foo' must be used in indirect CALL with RAX register only
255diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp
256index 811813466f8..82b0520c52a 100644
257--- a/ld/testsuite/ld-x86-64/x86-64.exp
258+++ b/ld/testsuite/ld-x86-64/x86-64.exp
259@@ -744,6 +744,7 @@ run_dump_test "pr29820"
260 run_dump_test "tlsie5"
261 run_dump_test "tlsdesc3"
262 run_dump_test "tlsdesc4"
263+run_dump_test "tlsdesc5"
264
265 proc undefined_weak {cflags ldflags} {
266 set testname "Undefined weak symbol"
267--
2682.49.0
269
diff --git a/meta/recipes-devtools/cmake/cmake-native_3.28.3.bb b/meta/recipes-devtools/cmake/cmake-native_3.28.3.bb
index 546d117156..376da3254b 100644
--- a/meta/recipes-devtools/cmake/cmake-native_3.28.3.bb
+++ b/meta/recipes-devtools/cmake/cmake-native_3.28.3.bb
@@ -51,7 +51,7 @@ do_compile() {
51do_install() { 51do_install() {
52 oe_runmake 'DESTDIR=${D}' install 52 oe_runmake 'DESTDIR=${D}' install
53 53
54 # The following codes are here because eSDK needs to provide compatibilty 54 # The following codes are here because eSDK needs to provide compatibility
55 # for SDK. That is, eSDK could also be used like traditional SDK. 55 # for SDK. That is, eSDK could also be used like traditional SDK.
56 mkdir -p ${D}${datadir}/cmake 56 mkdir -p ${D}${datadir}/cmake
57 install -m 644 ${WORKDIR}/OEToolchainConfig.cmake ${D}${datadir}/cmake/ 57 install -m 644 ${WORKDIR}/OEToolchainConfig.cmake ${D}${datadir}/cmake/
diff --git a/meta/recipes-devtools/cmake/cmake/0001-ctest-Allow-arbitrary-characters-in-test-names-of-CT.patch b/meta/recipes-devtools/cmake/cmake/0001-ctest-Allow-arbitrary-characters-in-test-names-of-CT.patch
new file mode 100644
index 0000000000..77c1d6378d
--- /dev/null
+++ b/meta/recipes-devtools/cmake/cmake/0001-ctest-Allow-arbitrary-characters-in-test-names-of-CT.patch
@@ -0,0 +1,205 @@
1From 49576cf1df618609be4aa1000749ad087c143df0 Mon Sep 17 00:00:00 2001
2From: John Drouhard <john@drouhard.dev>
3Date: Thu, 9 Jan 2025 20:34:42 -0600
4Subject: [PATCH] ctest: Allow arbitrary characters in test names of
5 CTestCostData.txt
6
7This changes the way lines in CTestCostData.txt are parsed to allow for
8spaces in the test name.
9
10It does so by looking for space characters from the end; and once two
11have been found, assumes everything from the beginning up to that
12second-to-last-space is the test name.
13
14Additionally, parsing the file should be much more efficient since there
15is no string or vector heap allocation per line. The std::string used by
16the parse function to convert the int and float should be within most
17standard libraries' small string optimization.
18
19Fixes: #26594
20
21Upstream-Status: Backport [4.0.0, 040da7d83216ace59710407e8ce35d5fd38e1340]
22Signed-off-by: Moritz Haase <Moritz.Haase@bmw.de>
23---
24 Source/CTest/cmCTestMultiProcessHandler.cxx | 80 +++++++++++++++------
25 Source/CTest/cmCTestMultiProcessHandler.h | 3 +-
26 Tests/CTestTestScheduler/CMakeLists.txt | 4 +-
27 3 files changed, 64 insertions(+), 23 deletions(-)
28
29diff --git a/Source/CTest/cmCTestMultiProcessHandler.cxx b/Source/CTest/cmCTestMultiProcessHandler.cxx
30index ca07a081eafced40697d82b08c0e2a504939fc4d..59a101454b84367d219e79a01ff72702df0dfa7f 100644
31--- a/Source/CTest/cmCTestMultiProcessHandler.cxx
32+++ b/Source/CTest/cmCTestMultiProcessHandler.cxx
33@@ -20,6 +20,7 @@
34
35 #include <cm/memory>
36 #include <cm/optional>
37+#include <cm/string_view>
38 #include <cmext/algorithm>
39
40 #include <cm3p/json/value.h>
41@@ -43,6 +44,51 @@
42 #include "cmUVSignalHackRAII.h" // IWYU pragma: keep
43 #include "cmWorkingDirectory.h"
44
45+namespace {
46+
47+struct CostEntry
48+{
49+ cm::string_view name;
50+ int prevRuns;
51+ float cost;
52+};
53+
54+cm::optional<CostEntry> splitCostLine(cm::string_view line)
55+{
56+ std::string part;
57+ cm::string_view::size_type pos1 = line.size();
58+ cm::string_view::size_type pos2 = line.find_last_of(' ', pos1);
59+ auto findNext = [line, &part, &pos1, &pos2]() -> bool {
60+ if (pos2 != cm::string_view::npos) {
61+ cm::string_view sub = line.substr(pos2 + 1, pos1 - pos2 - 1);
62+ part.assign(sub.begin(), sub.end());
63+ pos1 = pos2;
64+ if (pos1 > 0) {
65+ pos2 = line.find_last_of(' ', pos1 - 1);
66+ }
67+ return true;
68+ }
69+ return false;
70+ };
71+
72+ // parse the cost
73+ if (!findNext()) {
74+ return cm::nullopt;
75+ }
76+ float cost = static_cast<float>(atof(part.c_str()));
77+
78+ // parse the previous runs
79+ if (!findNext()) {
80+ return cm::nullopt;
81+ }
82+ int prev = atoi(part.c_str());
83+
84+ // from start to the last found space is the name
85+ return CostEntry{ line.substr(0, pos1), prev, cost };
86+}
87+
88+}
89+
90 namespace cmsys {
91 class RegularExpression;
92 }
93@@ -697,24 +743,21 @@ void cmCTestMultiProcessHandler::UpdateCostData()
94 if (line == "---") {
95 break;
96 }
97- std::vector<std::string> parts = cmSystemTools::SplitString(line, ' ');
98 // Format: <name> <previous_runs> <avg_cost>
99- if (parts.size() < 3) {
100+ cm::optional<CostEntry> entry = splitCostLine(line);
101+ if (!entry) {
102 break;
103 }
104
105- std::string name = parts[0];
106- int prev = atoi(parts[1].c_str());
107- float cost = static_cast<float>(atof(parts[2].c_str()));
108-
109- int index = this->SearchByName(name);
110+ int index = this->SearchByName(entry->name);
111 if (index == -1) {
112 // This test is not in memory. We just rewrite the entry
113- fout << name << " " << prev << " " << cost << "\n";
114+ fout << entry->name << " " << entry->prevRuns << " " << entry->cost
115+ << "\n";
116 } else {
117 // Update with our new average cost
118- fout << name << " " << this->Properties[index]->PreviousRuns << " "
119- << this->Properties[index]->Cost << "\n";
120+ fout << entry->name << " " << this->Properties[index]->PreviousRuns
121+ << " " << this->Properties[index]->Cost << "\n";
122 temp.erase(index);
123 }
124 }
125@@ -750,28 +793,25 @@ void cmCTestMultiProcessHandler::ReadCostData()
126 break;
127 }
128
129- std::vector<std::string> parts = cmSystemTools::SplitString(line, ' ');
130+ // Format: <name> <previous_runs> <avg_cost>
131+ cm::optional<CostEntry> entry = splitCostLine(line);
132
133 // Probably an older version of the file, will be fixed next run
134- if (parts.size() < 3) {
135+ if (!entry) {
136 fin.close();
137 return;
138 }
139
140- std::string name = parts[0];
141- int prev = atoi(parts[1].c_str());
142- float cost = static_cast<float>(atof(parts[2].c_str()));
143-
144- int index = this->SearchByName(name);
145+ int index = this->SearchByName(entry->name);
146 if (index == -1) {
147 continue;
148 }
149
150- this->Properties[index]->PreviousRuns = prev;
151+ this->Properties[index]->PreviousRuns = entry->prevRuns;
152 // When not running in parallel mode, don't use cost data
153 if (this->ParallelLevel > 1 && this->Properties[index] &&
154 this->Properties[index]->Cost == 0) {
155- this->Properties[index]->Cost = cost;
156+ this->Properties[index]->Cost = entry->cost;
157 }
158 }
159 // Next part of the file is the failed tests
160@@ -784,7 +824,7 @@ void cmCTestMultiProcessHandler::ReadCostData()
161 }
162 }
163
164-int cmCTestMultiProcessHandler::SearchByName(std::string const& name)
165+int cmCTestMultiProcessHandler::SearchByName(cm::string_view name)
166 {
167 int index = -1;
168
169diff --git a/Source/CTest/cmCTestMultiProcessHandler.h b/Source/CTest/cmCTestMultiProcessHandler.h
170index 3b4e9c59ad1871168d8528be0586831e2416ae36..8d33dabcf0d9fc6e11459105c65eadaa1de33e42 100644
171--- a/Source/CTest/cmCTestMultiProcessHandler.h
172+++ b/Source/CTest/cmCTestMultiProcessHandler.h
173@@ -12,6 +12,7 @@
174 #include <vector>
175
176 #include <cm/optional>
177+#include <cm/string_view>
178
179 #include <cm3p/uv.h>
180
181@@ -113,7 +114,7 @@ protected:
182 void UpdateCostData();
183 void ReadCostData();
184 // Return index of a test based on its name
185- int SearchByName(std::string const& name);
186+ int SearchByName(cm::string_view name);
187
188 void CreateTestCostList();
189
190diff --git a/Tests/CTestTestScheduler/CMakeLists.txt b/Tests/CTestTestScheduler/CMakeLists.txt
191index 91d565d4020aafda6d49462cd8616d168d5844b6..daf6ce2b23d8c048334ae1047759130b246dccef 100644
192--- a/Tests/CTestTestScheduler/CMakeLists.txt
193+++ b/Tests/CTestTestScheduler/CMakeLists.txt
194@@ -1,9 +1,9 @@
195-cmake_minimum_required (VERSION 3.5)
196+cmake_minimum_required(VERSION 3.19)
197 project (CTestTestScheduler)
198 include (CTest)
199
200 add_executable (Sleep sleep.c)
201
202 foreach (time RANGE 1 4)
203- add_test (TestSleep${time} Sleep ${time})
204+ add_test ("TestSleep ${time}" Sleep ${time})
205 endforeach ()
diff --git a/meta/recipes-devtools/cmake/cmake_3.28.3.bb b/meta/recipes-devtools/cmake/cmake_3.28.3.bb
index 6a9a3266df..63d483801a 100644
--- a/meta/recipes-devtools/cmake/cmake_3.28.3.bb
+++ b/meta/recipes-devtools/cmake/cmake_3.28.3.bb
@@ -5,6 +5,7 @@ inherit cmake bash-completion
5DEPENDS += "curl expat zlib libarchive xz ncurses bzip2" 5DEPENDS += "curl expat zlib libarchive xz ncurses bzip2"
6 6
7SRC_URI:append:class-nativesdk = " \ 7SRC_URI:append:class-nativesdk = " \
8 file://0001-ctest-Allow-arbitrary-characters-in-test-names-of-CT.patch \
8 file://OEToolchainConfig.cmake \ 9 file://OEToolchainConfig.cmake \
9 file://SDKToolchainConfig.cmake.template \ 10 file://SDKToolchainConfig.cmake.template \
10 file://cmake-setup.py \ 11 file://cmake-setup.py \
diff --git a/meta/recipes-devtools/gcc/gcc-13.3.inc b/meta/recipes-devtools/gcc/gcc-13.4.inc
index 8b6c2a5938..eefae13530 100644
--- a/meta/recipes-devtools/gcc/gcc-13.3.inc
+++ b/meta/recipes-devtools/gcc/gcc-13.4.inc
@@ -2,11 +2,11 @@ require gcc-common.inc
2 2
3# Third digit in PV should be incremented after a minor release 3# Third digit in PV should be incremented after a minor release
4 4
5PV = "13.3.0" 5PV = "13.4.0"
6 6
7# BINV should be incremented to a revision after a minor gcc release 7# BINV should be incremented to a revision after a minor gcc release
8 8
9BINV = "13.3.0" 9BINV = "13.4.0"
10 10
11FILESEXTRAPATHS =. "${FILE_DIRNAME}/gcc:${FILE_DIRNAME}/gcc/backport:" 11FILESEXTRAPATHS =. "${FILE_DIRNAME}/gcc:${FILE_DIRNAME}/gcc/backport:"
12 12
@@ -66,10 +66,8 @@ SRC_URI = "${BASEURI} \
66 file://0024-Avoid-hardcoded-build-paths-into-ppc-libgcc.patch \ 66 file://0024-Avoid-hardcoded-build-paths-into-ppc-libgcc.patch \
67 file://0025-gcc-testsuite-tweaks-for-mips-OE.patch \ 67 file://0025-gcc-testsuite-tweaks-for-mips-OE.patch \
68 file://0027-Fix-gcc-vect-module-testcases.patch \ 68 file://0027-Fix-gcc-vect-module-testcases.patch \
69 file://0028-gcc-Fix-c-tweak-for-Wrange-loop-construct.patch \
70 file://gcc.git-ab884fffe3fc82a710bea66ad651720d71c938b8.patch \
71" 69"
72SRC_URI[sha256sum] = "0845e9621c9543a13f484e94584a49ffc0129970e9914624235fc1d061a0c083" 70SRC_URI[sha256sum] = "9c4ce6dbb040568fdc545588ac03c5cbc95a8dbf0c7aa490170843afb59ca8f5"
73 71
74S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/${SOURCEDIR}" 72S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/${SOURCEDIR}"
75B = "${WORKDIR}/gcc-${PV}/build.${HOST_SYS}.${TARGET_SYS}" 73B = "${WORKDIR}/gcc-${PV}/build.${HOST_SYS}.${TARGET_SYS}"
diff --git a/meta/recipes-devtools/gcc/gcc-cross-canadian_13.3.bb b/meta/recipes-devtools/gcc/gcc-cross-canadian_13.4.bb
index bf53c5cd78..bf53c5cd78 100644
--- a/meta/recipes-devtools/gcc/gcc-cross-canadian_13.3.bb
+++ b/meta/recipes-devtools/gcc/gcc-cross-canadian_13.4.bb
diff --git a/meta/recipes-devtools/gcc/gcc-cross_13.3.bb b/meta/recipes-devtools/gcc/gcc-cross_13.4.bb
index b43cca0c52..b43cca0c52 100644
--- a/meta/recipes-devtools/gcc/gcc-cross_13.3.bb
+++ b/meta/recipes-devtools/gcc/gcc-cross_13.4.bb
diff --git a/meta/recipes-devtools/gcc/gcc-crosssdk_13.3.bb b/meta/recipes-devtools/gcc/gcc-crosssdk_13.4.bb
index 40a6c4feff..40a6c4feff 100644
--- a/meta/recipes-devtools/gcc/gcc-crosssdk_13.3.bb
+++ b/meta/recipes-devtools/gcc/gcc-crosssdk_13.4.bb
diff --git a/meta/recipes-devtools/gcc/gcc-runtime_13.3.bb b/meta/recipes-devtools/gcc/gcc-runtime_13.4.bb
index dd430b57eb..dd430b57eb 100644
--- a/meta/recipes-devtools/gcc/gcc-runtime_13.3.bb
+++ b/meta/recipes-devtools/gcc/gcc-runtime_13.4.bb
diff --git a/meta/recipes-devtools/gcc/gcc-sanitizers_13.3.bb b/meta/recipes-devtools/gcc/gcc-sanitizers_13.4.bb
index 8bda2ccad6..8bda2ccad6 100644
--- a/meta/recipes-devtools/gcc/gcc-sanitizers_13.3.bb
+++ b/meta/recipes-devtools/gcc/gcc-sanitizers_13.4.bb
diff --git a/meta/recipes-devtools/gcc/gcc-source_13.3.bb b/meta/recipes-devtools/gcc/gcc-source_13.4.bb
index b890fa33ea..b890fa33ea 100644
--- a/meta/recipes-devtools/gcc/gcc-source_13.3.bb
+++ b/meta/recipes-devtools/gcc/gcc-source_13.4.bb
diff --git a/meta/recipes-devtools/gcc/gcc/0028-gcc-Fix-c-tweak-for-Wrange-loop-construct.patch b/meta/recipes-devtools/gcc/gcc/0028-gcc-Fix-c-tweak-for-Wrange-loop-construct.patch
deleted file mode 100644
index 745b38f7f1..0000000000
--- a/meta/recipes-devtools/gcc/gcc/0028-gcc-Fix-c-tweak-for-Wrange-loop-construct.patch
+++ /dev/null
@@ -1,113 +0,0 @@
1From 66aa69e2add2b8641a652768b0eac30f00427145 Mon Sep 17 00:00:00 2001
2From: Sunil Dora <sunilkumar.dora@windriver.com>
3Date: Wed, 11 Dec 2024 09:48:16 -0800
4Subject: [PATCH] gcc: Fix c++: tweak for Wrange-loop-construct
5
6This commit updates the warning to use a check for "trivially constructible" instead of
7"trivially copyable." The original check was incorrect, as "trivially copyable" only applies
8to types that can be copied trivially, whereas "trivially constructible" is the correct check
9for types that can be trivially default-constructed.
10
11This change ensures the warning is more accurate and aligns with the proper type traits.
12
13LLVM accepted a similar fix:
14https://github.com/llvm/llvm-project/issues/47355
15
16PR c++/116731 [https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116731]
17
18Upstream-Status: Backport [https://gcc.gnu.org/g:179dc0f0fe01012675c1b430591b9891ce96c26e]
19
20Signed-off-by: Marek Polacek <polacek@redhat.com>
21Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
22---
23 gcc/cp/parser.cc | 7 ++-
24 .../g++.dg/warn/Wrange-loop-construct3.C | 57 +++++++++++++++++++
25 2 files changed, 61 insertions(+), 3 deletions(-)
26 create mode 100644 gcc/testsuite/g++.dg/warn/Wrange-loop-construct3.C
27
28diff --git a/gcc/cp/parser.cc b/gcc/cp/parser.cc
29index 4e67da6ff..5dd94357d 100644
30--- a/gcc/cp/parser.cc
31+++ b/gcc/cp/parser.cc
32@@ -13854,11 +13854,12 @@ warn_for_range_copy (tree decl, tree expr)
33 else if (!CP_TYPE_CONST_P (type))
34 return;
35
36- /* Since small trivially copyable types are cheap to copy, we suppress the
37- warning for them. 64B is a common size of a cache line. */
38+ /* Since small trivially constructible types are cheap to construct, we
39+ suppress the warning for them. 64B is a common size of a cache line. */
40+ tree list = build_tree_list (NULL_TREE, TREE_TYPE (expr));
41 if (TREE_CODE (TYPE_SIZE_UNIT (type)) != INTEGER_CST
42 || (tree_to_uhwi (TYPE_SIZE_UNIT (type)) <= 64
43- && trivially_copyable_p (type)))
44+ && is_trivially_xible (INIT_EXPR, type, list)))
45 return;
46
47 /* If we can initialize a reference directly, suggest that to avoid the
48diff --git a/gcc/testsuite/g++.dg/warn/Wrange-loop-construct3.C b/gcc/testsuite/g++.dg/warn/Wrange-loop-construct3.C
49new file mode 100644
50index 000000000..3d9d0c908
51--- /dev/null
52+++ b/gcc/testsuite/g++.dg/warn/Wrange-loop-construct3.C
53@@ -0,0 +1,57 @@
54+// PR c++/116731
55+// { dg-do compile { target c++11 } }
56+// { dg-options "-Wrange-loop-construct" }
57+
58+void
59+f0 ()
60+{
61+ struct S {
62+ char a[64];
63+ S& operator=(const S&) { return *this; };
64+ };
65+
66+ S arr[8];
67+ for (const auto r : arr)
68+ (void) r;
69+}
70+
71+void
72+f1 ()
73+{
74+ struct S {
75+ char a[65];
76+ S& operator=(const S&) { return *this; };
77+ };
78+
79+ S arr[8];
80+ for (const auto r : arr) // { dg-warning "creates a copy" }
81+ (void) r;
82+}
83+
84+void
85+f2 ()
86+{
87+ struct S {
88+ char a[64];
89+ S& operator=(const S&) { return *this; };
90+ ~S() { }
91+ };
92+
93+ S arr[8];
94+ for (const auto r : arr) // { dg-warning "creates a copy" }
95+ (void) r;
96+}
97+
98+void
99+f3 ()
100+{
101+ struct S {
102+ char a[65];
103+ S& operator=(const S&) { return *this; };
104+ ~S() { }
105+ };
106+
107+ S arr[8];
108+ for (const auto r : arr) // { dg-warning "creates a copy" }
109+ (void) r;
110+}
111--
1122.43.0
113
diff --git a/meta/recipes-devtools/gcc/gcc/gcc.git-ab884fffe3fc82a710bea66ad651720d71c938b8.patch b/meta/recipes-devtools/gcc/gcc/gcc.git-ab884fffe3fc82a710bea66ad651720d71c938b8.patch
deleted file mode 100644
index e5abdcc703..0000000000
--- a/meta/recipes-devtools/gcc/gcc/gcc.git-ab884fffe3fc82a710bea66ad651720d71c938b8.patch
+++ /dev/null
@@ -1,549 +0,0 @@
1From ab884fffe3fc82a710bea66ad651720d71c938b8 Mon Sep 17 00:00:00 2001
2From: Jonathan Wakely <jwakely@redhat.com>
3Date: Tue, 30 Apr 2024 09:52:13 +0100
4Subject: [PATCH] libstdc++: Fix std::chrono::tzdb to work with vanguard format
5
6I found some issues in the std::chrono::tzdb parser by testing the
7tzdata "vanguard" format, which uses new features that aren't enabled in
8the "main" and "rearguard" data formats.
9
10Since 2024a the keyword "minimum" is no longer valid for the FROM and TO
11fields in a Rule line, which means that "m" is now a valid abbreviation
12for "maximum". Previously we expected either "mi" or "ma". For backwards
13compatibility, a FROM field beginning with "mi" is still supported and
14is treated as 1900. The "maximum" keyword is only allowed in TO now,
15because it makes no sense in FROM. To support these changes the
16minmax_year and minmax_year2 classes for parsing FROM and TO are
17replaced with a single years_from_to class that reads both fields.
18
19The vanguard format makes use of %z in Zone FORMAT fields, which caused
20an exception to be thrown from ZoneInfo::set_abbrev because no % or /
21characters were expected when a Zone doesn't use a named Rule. The
22ZoneInfo::to(sys_info&) function now uses format_abbrev_str to replace
23any %z with the current offset. Although format_abbrev_str also checks
24for %s and STD/DST formats, those only make sense when a named Rule is
25in effect, so won't occur when ZoneInfo::to(sys_info&) is used.
26
27Since making this change on trunk, the tzdata-2024b release started
28using %z in the main format, not just vanguard. This makes a backport to
29release branches necessary (see PR 116657).
30
31This change also implements a feature that has always been missing from
32time_zone::_M_get_sys_info: finding the Rule that is active before the
33specified time point, so that we can correctly handle %s in the FORMAT
34for the first new sys_info that gets created. This requires implementing
35a poorly documented feature of zic, to get the LETTERS field from a
36later transition, as described at
37https://mm.icann.org/pipermail/tz/2024-April/058891.html
38In order for this to work we need to be able to distinguish an empty
39letters field (as used by CE%sT where the variable part is either empty
40or "S") from "the letters field is not known for this transition". The
41tzdata file uses "-" for an empty letters field, which libstdc++ was
42previously replacing with "" when the Rule was parsed. Instead, we now
43preserve the "-" in the Rule object, so that "" can be used for the case
44where we don't know the letters (and so need to decide it).
45
46(cherry picked from commit 0ca8d56f2085715f27ee536c6c344bc47af49cdd)
47
48Upstream-Status: Backport [https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=5ceea2ac106d6dd1aa8175670b15a801316cf1c9]
49
50Signed-off-by: Markus Volk <f_l_k@t-online.de>
51---
52 libstdc++-v3/src/c++20/tzdb.cc | 265 +++++++++++-------
53 .../std/time/time_zone/sys_info_abbrev.cc | 106 +++++++
54 libstdc++-v3/testsuite/std/time/tzdb/1.cc | 6 +-
55 3 files changed, 274 insertions(+), 103 deletions(-)
56 create mode 100644 libstdc++-v3/testsuite/std/time/time_zone/sys_info_abbrev.cc
57
58diff --git a/libstdc++-v3/src/c++20/tzdb.cc b/libstdc++-v3/src/c++20/tzdb.cc
59index c7c7cc9deee6..7e8cce7ce8cf 100644
60--- a/libstdc++-v3/src/c++20/tzdb.cc
61+++ b/libstdc++-v3/src/c++20/tzdb.cc
62@@ -342,51 +342,103 @@ namespace std::chrono
63 friend istream& operator>>(istream&, on_day&);
64 };
65
66- // Wrapper for chrono::year that reads a year, or one of the keywords
67- // "minimum" or "maximum", or an unambiguous prefix of a keyword.
68- struct minmax_year
69+ // Wrapper for two chrono::year values, which reads the FROM and TO
70+ // fields of a Rule line. The FROM field is a year and TO is a year or
71+ // one of the keywords "maximum" or "only" (or an abbreviation of those).
72+ // For backwards compatibility, the keyword "minimum" is recognized
73+ // for FROM and interpreted as 1900.
74+ struct years_from_to
75 {
76- year& y;
77+ year& from;
78+ year& to;
79
80- friend istream& operator>>(istream& in, minmax_year&& y)
81+ friend istream& operator>>(istream& in, years_from_to&& yy)
82 {
83- if (ws(in).peek() == 'm') // keywords "minimum" or "maximum"
84+ string s;
85+ auto c = ws(in).peek();
86+ if (c == 'm') [[unlikely]] // keyword "minimum"
87 {
88- string s;
89- in >> s; // extract the rest of the word, but only look at s[1]
90- if (s[1] == 'a')
91- y.y = year::max();
92- else if (s[1] == 'i')
93- y.y = year::min();
94- else
95- in.setstate(ios::failbit);
96+ in >> s; // extract the rest of the word
97+ yy.from = year(1900);
98+ }
99+ else if (int num = 0; in >> num) [[likely]]
100+ yy.from = year{num};
101+
102+ c = ws(in).peek();
103+ if (c == 'm') // keyword "maximum"
104+ {
105+ in >> s; // extract the rest of the word
106+ yy.to = year::max();
107+ }
108+ else if (c == 'o') // keyword "only"
109+ {
110+ in >> s; // extract the rest of the word
111+ yy.to = yy.from;
112 }
113 else if (int num = 0; in >> num)
114- y.y = year{num};
115+ yy.to = year{num};
116+
117 return in;
118 }
119 };
120
121- // As above for minmax_year, but also supports the keyword "only",
122- // meaning that the TO year is the same as the FROM year.
123- struct minmax_year2
124+ bool
125+ select_std_or_dst_abbrev(string& abbrev, minutes save)
126 {
127- minmax_year to;
128- year from;
129+ if (size_t pos = abbrev.find('/'); pos != string::npos)
130+ {
131+ // Select one of "STD/DST" for standard or daylight.
132+ if (save == 0min)
133+ abbrev.erase(pos);
134+ else
135+ abbrev.erase(0, pos + 1);
136+ return true;
137+ }
138+ return false;
139+ }
140
141- friend istream& operator>>(istream& in, minmax_year2&& y)
142- {
143- if (ws(in).peek() == 'o') // keyword "only"
144- {
145- string s;
146- in >> s; // extract the whole keyword
147- y.to.y = y.from;
148- }
149- else
150- in >> std::move(y.to);
151- return in;
152- }
153- };
154+ // Set the sys_info::abbrev string by expanding any placeholders.
155+ void
156+ format_abbrev_str(sys_info& info, string_view letters = {})
157+ {
158+ if (size_t pos = info.abbrev.find('%'); pos != string::npos)
159+ {
160+ if (info.abbrev[pos + 1] == 's')
161+ {
162+ // Expand "%s" to the variable part, given by Rule::letters.
163+ if (letters == "-")
164+ info.abbrev.erase(pos, 2);
165+ else
166+ info.abbrev.replace(pos, 2, letters);
167+ }
168+ else if (info.abbrev[pos + 1] == 'z')
169+ {
170+ // Expand "%z" to the UT offset as +/-hh, +/-hhmm, or +/-hhmmss.
171+ hh_mm_ss<seconds> t(info.offset);
172+ string z(1, "+-"[t.is_negative()]);
173+ long val = t.hours().count();
174+ int digits = 2;
175+ if (int m = t.minutes().count())
176+ {
177+ digits = 4;
178+ val *= 100;
179+ val += m;
180+ if (int s = t.seconds().count())
181+ {
182+ digits = 6;
183+ val *= 100;
184+ val += s;
185+ }
186+ }
187+ auto sval = std::to_string(val);
188+ z += string(digits - sval.size(), '0');
189+ z += sval;
190+ info.abbrev.replace(pos, 2, z);
191+ }
192+ }
193+ else
194+ select_std_or_dst_abbrev(info.abbrev, info.save);
195+ }
196
197 // A time zone information record.
198 // Zone NAME STDOFF RULES FORMAT [UNTIL]
199@@ -462,6 +514,7 @@ namespace std::chrono
200 info.offset = offset();
201 info.save = minutes(m_save);
202 info.abbrev = format();
203+ format_abbrev_str(info); // expand %z
204 return true;
205 }
206
207@@ -469,12 +522,9 @@ namespace std::chrono
208 friend class time_zone;
209
210 void
211- set_abbrev(const string& abbrev)
212+ set_abbrev(string abbrev)
213 {
214- // In practice, the FORMAT field never needs expanding here.
215- if (abbrev.find_first_of("/%") != abbrev.npos)
216- __throw_runtime_error("std::chrono::time_zone: invalid data");
217- m_buf = abbrev;
218+ m_buf = std::move(abbrev);
219 m_pos = 0;
220 m_expanded = true;
221 }
222@@ -544,9 +594,7 @@ namespace std::chrono
223
224 // Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
225
226- in >> quoted(rule.name)
227- >> minmax_year{rule.from}
228- >> minmax_year2{rule.to, rule.from};
229+ in >> quoted(rule.name) >> years_from_to{rule.from, rule.to};
230
231 if (char type; in >> type && type != '-')
232 in.setstate(ios::failbit);
233@@ -557,7 +605,7 @@ namespace std::chrono
234 if (save_time.indicator != at_time::Wall)
235 {
236 // We don't actually store the save_time.indicator, because we
237- // assume that it's always deducable from the actual offset value.
238+ // assume that it's always deducible from the offset value.
239 auto expected = save_time.time == 0s
240 ? at_time::Standard
241 : at_time::Daylight;
242@@ -567,8 +615,6 @@ namespace std::chrono
243 rule.save = save_time.time;
244
245 in >> rule.letters;
246- if (rule.letters == "-")
247- rule.letters.clear();
248 return in;
249 }
250
251@@ -719,58 +765,6 @@ namespace std::chrono
252 #endif // TZDB_DISABLED
253 };
254
255-#ifndef TZDB_DISABLED
256- namespace
257- {
258- bool
259- select_std_or_dst_abbrev(string& abbrev, minutes save)
260- {
261- if (size_t pos = abbrev.find('/'); pos != string::npos)
262- {
263- // Select one of "STD/DST" for standard or daylight.
264- if (save == 0min)
265- abbrev.erase(pos);
266- else
267- abbrev.erase(0, pos + 1);
268- return true;
269- }
270- return false;
271- }
272-
273- // Set the sys_info::abbrev string by expanding any placeholders.
274- void
275- format_abbrev_str(sys_info& info, string_view letters = {})
276- {
277- if (size_t pos = info.abbrev.find("%s"); pos != string::npos)
278- {
279- // Expand "%s" to the variable part, given by Rule::letters.
280- info.abbrev.replace(pos, 2, letters);
281- }
282- else if (size_t pos = info.abbrev.find("%z"); pos != string::npos)
283- {
284- // Expand "%z" to the UT offset as +/-hh, +/-hhmm, or +/-hhmmss.
285- hh_mm_ss<seconds> t(info.offset);
286- string z(1, "+-"[t.is_negative()]);
287- long val = t.hours().count();
288- if (minutes m = t.minutes(); m != m.zero())
289- {
290- val *= 100;
291- val += m.count();
292- if (seconds s = t.seconds(); s != s.zero())
293- {
294- val *= 100;
295- val += s.count();
296- }
297- }
298- z += std::to_string(val);
299- info.abbrev.replace(pos, 2, z);
300- }
301- else
302- select_std_or_dst_abbrev(info.abbrev, info.save);
303- }
304- }
305-#endif // TZDB_DISABLED
306-
307 // Implementation of std::chrono::time_zone::get_info(const sys_time<D>&)
308 sys_info
309 time_zone::_M_get_sys_info(sys_seconds tp) const
310@@ -839,12 +833,72 @@ namespace std::chrono
311 info.abbrev = ri.format();
312
313 string_view letters;
314- if (i != infos.begin())
315+ if (i != infos.begin() && i[-1].expanded())
316+ letters = i[-1].next_letters();
317+
318+ if (letters.empty())
319 {
320- if (i[-1].expanded())
321- letters = i[-1].next_letters();
322- // XXX else need to find Rule active before this time and use it
323- // to know the initial offset, save, and letters.
324+ sys_seconds t = info.begin - seconds(1);
325+ const year_month_day date(chrono::floor<days>(t));
326+
327+ // Try to find a Rule active before this time, to get initial
328+ // SAVE and LETTERS values. There may not be a Rule for the period
329+ // before the first DST transition, so find the earliest DST->STD
330+ // transition and use the LETTERS from that.
331+ const Rule* active_rule = nullptr;
332+ sys_seconds active_rule_start = sys_seconds::min();
333+ const Rule* first_std = nullptr;
334+ for (const auto& rule : rules)
335+ {
336+ if (rule.save == minutes(0))
337+ {
338+ if (!first_std)
339+ first_std = &rule;
340+ else if (rule.from < first_std->from)
341+ first_std = &rule;
342+ else if (rule.from == first_std->from)
343+ {
344+ if (rule.start_time(rule.from, {})
345+ < first_std->start_time(first_std->from, {}))
346+ first_std = &rule;
347+ }
348+ }
349+
350+ year y = date.year();
351+
352+ if (y > rule.to) // rule no longer applies at time t
353+ continue;
354+ if (y < rule.from) // rule doesn't apply yet at time t
355+ continue;
356+
357+ sys_seconds rule_start;
358+
359+ seconds offset{}; // appropriate for at_time::Universal
360+ if (rule.when.indicator == at_time::Wall)
361+ offset = info.offset;
362+ else if (rule.when.indicator == at_time::Standard)
363+ offset = ri.offset();
364+
365+ // Time the rule takes effect this year:
366+ rule_start = rule.start_time(y, offset);
367+
368+ if (rule_start >= t && rule.from < y)
369+ {
370+ // Try this rule in the previous year.
371+ rule_start = rule.start_time(--y, offset);
372+ }
373+
374+ if (active_rule_start < rule_start && rule_start < t)
375+ {
376+ active_rule_start = rule_start;
377+ active_rule = &rule;
378+ }
379+ }
380+
381+ if (active_rule)
382+ letters = active_rule->letters;
383+ else if (first_std)
384+ letters = first_std->letters;
385 }
386
387 const Rule* curr_rule = nullptr;
388@@ -2069,9 +2123,11 @@ namespace std::chrono
389 istringstream in2(std::move(rules));
390 in2 >> rules_time;
391 inf.m_save = duration_cast<minutes>(rules_time.time);
392+ // If the FORMAT is "STD/DST" then we can choose the right one
393+ // now, so that we store a shorter string.
394 select_std_or_dst_abbrev(fmt, inf.m_save);
395 }
396- inf.set_abbrev(fmt);
397+ inf.set_abbrev(std::move(fmt));
398 }
399
400 // YEAR [MONTH [DAY [TIME]]]
401@@ -2082,7 +2138,12 @@ namespace std::chrono
402 abbrev_month m{January};
403 int d = 1;
404 at_time t{};
405+ // XXX DAY should support ON format, e.g. lastSun or Sun>=8
406 in >> m >> d >> t;
407+ // XXX UNTIL field should be interpreted
408+ // "using the rules in effect just before the transition"
409+ // so might need to store as year_month_day and hh_mm_ss and only
410+ // convert to a sys_time once we know the offset in effect.
411 inf.m_until = sys_days(year(y)/m.m/day(d)) + seconds(t.time);
412 }
413 else
414diff --git a/libstdc++-v3/testsuite/std/time/time_zone/sys_info_abbrev.cc b/libstdc++-v3/testsuite/std/time/time_zone/sys_info_abbrev.cc
415new file mode 100644
416index 000000000000..f1a8fff02f58
417--- /dev/null
418+++ b/libstdc++-v3/testsuite/std/time/time_zone/sys_info_abbrev.cc
419@@ -0,0 +1,106 @@
420+// { dg-do run { target c++20 } }
421+// { dg-require-effective-target tzdb }
422+// { dg-require-effective-target cxx11_abi }
423+// { dg-xfail-run-if "no weak override on AIX" { powerpc-ibm-aix* } }
424+
425+#include <chrono>
426+#include <fstream>
427+#include <testsuite_hooks.h>
428+
429+static bool override_used = false;
430+
431+namespace __gnu_cxx
432+{
433+ const char* zoneinfo_dir_override() {
434+ override_used = true;
435+ return "./";
436+ }
437+}
438+
439+using namespace std::chrono;
440+
441+void
442+test_format()
443+{
444+ std::ofstream("tzdata.zi") << R"(# version test_1
445+Zone Africa/Bissau -1:2:20 - LMT 1912 Ja 1 1u
446+ -1 - %z 1975
447+ 0 - GMT
448+Zon Some/Zone 1:2:3 - %z 1900
449+ 1:23:45 - %z 1950
450+Zo Another/Zone 1:2:3 - AZ0 1901
451+ 1 Roolz A%sZ 2000
452+ 1 Roolz SAZ/DAZ 2005
453+ 1 Roolz %z
454+Rule Roolz 1950 max - April 1 2 1 D
455+Rul Roolz 1950 max - Oct 1 1 0 S
456+Z Strange/Zone 1 - X%sX 1980
457+ 1 - FOO/BAR 1990
458+ 2:00 - %zzz 1995
459+ 0:9 - %zzz 1996
460+ 0:8:7 - %zzz 1997
461+ 0:6:5.5 - %zzz 1998
462+)";
463+
464+ const auto& db = reload_tzdb();
465+ VERIFY( override_used ); // If this fails then XFAIL for the target.
466+ VERIFY( db.version == "test_1" );
467+
468+ // Test formatting %z as
469+ auto tz = locate_zone("Africa/Bissau");
470+ auto inf = tz->get_info(sys_days(1974y/1/1));
471+ VERIFY( inf.abbrev == "-01" );
472+
473+ tz = locate_zone("Some/Zone");
474+ inf = tz->get_info(sys_days(1899y/1/1));
475+ VERIFY( inf.abbrev == "+010203" );
476+ inf = tz->get_info(sys_days(1955y/1/1));
477+ VERIFY( inf.abbrev == "+012345" );
478+
479+ tz = locate_zone("Another/Zone");
480+ // Test formatting %s as the LETTER/S field from the active Rule.
481+ inf = tz->get_info(sys_days(1910y/January/1));
482+ VERIFY( inf.abbrev == "ASZ" );
483+ inf = tz->get_info(sys_days(1950y/January/1));
484+ VERIFY( inf.abbrev == "ASZ" );
485+ inf = tz->get_info(sys_days(1950y/June/1));
486+ VERIFY( inf.abbrev == "ADZ" );
487+ inf = tz->get_info(sys_days(1999y/January/1));
488+ VERIFY( inf.abbrev == "ASZ" );
489+ inf = tz->get_info(sys_days(1999y/July/1));
490+ VERIFY( inf.abbrev == "ADZ" );
491+ // Test formatting STD/DST according to the active Rule.
492+ inf = tz->get_info(sys_days(2000y/January/2));
493+ VERIFY( inf.abbrev == "SAZ" );
494+ inf = tz->get_info(sys_days(2001y/January/1));
495+ VERIFY( inf.abbrev == "SAZ" );
496+ inf = tz->get_info(sys_days(2001y/July/1));
497+ VERIFY( inf.abbrev == "DAZ" );
498+ // Test formatting %z as the offset determined by the active Rule.
499+ inf = tz->get_info(sys_days(2005y/January/2));
500+ VERIFY( inf.abbrev == "+01" );
501+ inf = tz->get_info(sys_days(2006y/January/1));
502+ VERIFY( inf.abbrev == "+01" );
503+ inf = tz->get_info(sys_days(2006y/July/1));
504+ VERIFY( inf.abbrev == "+02" );
505+
506+ // Test formatting %z, %s and S/D for a Zone with no associated Rules.
507+ tz = locate_zone("Strange/Zone");
508+ inf = tz->get_info(sys_days(1979y/January/1));
509+ VERIFY( inf.abbrev == "XX" ); // No Rule means nothing to use for %s.
510+ inf = tz->get_info(sys_days(1981y/July/1));
511+ VERIFY( inf.abbrev == "FOO" ); // Always standard time means first string.
512+ inf = tz->get_info(sys_days(1994y/July/1));
513+ VERIFY( inf.abbrev == "+02zz" );
514+ inf = tz->get_info(sys_days(1995y/July/1));
515+ VERIFY( inf.abbrev == "+0009zz" );
516+ inf = tz->get_info(sys_days(1996y/July/1));
517+ VERIFY( inf.abbrev == "+000807zz" );
518+ inf = tz->get_info(sys_days(1997y/July/1));
519+ VERIFY( inf.abbrev == "+000606zz" );
520+}
521+
522+int main()
523+{
524+ test_format();
525+}
526diff --git a/libstdc++-v3/testsuite/std/time/tzdb/1.cc b/libstdc++-v3/testsuite/std/time/tzdb/1.cc
527index 796f3a8b4256..7a31c1c20ba7 100644
528--- a/libstdc++-v3/testsuite/std/time/tzdb/1.cc
529+++ b/libstdc++-v3/testsuite/std/time/tzdb/1.cc
530@@ -39,11 +39,15 @@ test_locate()
531 const tzdb& db = get_tzdb();
532 const time_zone* tz = db.locate_zone("GMT");
533 VERIFY( tz != nullptr );
534- VERIFY( tz->name() == "Etc/GMT" );
535 VERIFY( tz == std::chrono::locate_zone("GMT") );
536 VERIFY( tz == db.locate_zone("Etc/GMT") );
537 VERIFY( tz == db.locate_zone("Etc/GMT+0") );
538
539+ // Since 2022f GMT is now a Zone and Etc/GMT a link instead of vice versa,
540+ // but only when using the vanguard format. As of 2024a, the main and
541+ // rearguard formats still have Etc/GMT as a Zone and GMT as a link.
542+ VERIFY( tz->name() == "GMT" || tz->name() == "Etc/GMT" );
543+
544 VERIFY( db.locate_zone(db.current_zone()->name()) == db.current_zone() );
545 }
546
547--
5482.43.5
549
diff --git a/meta/recipes-devtools/gcc/gcc_13.3.bb b/meta/recipes-devtools/gcc/gcc_13.4.bb
index 255fe552bd..255fe552bd 100644
--- a/meta/recipes-devtools/gcc/gcc_13.3.bb
+++ b/meta/recipes-devtools/gcc/gcc_13.4.bb
diff --git a/meta/recipes-devtools/gcc/libgcc-initial_13.3.bb b/meta/recipes-devtools/gcc/libgcc-initial_13.4.bb
index a259082b47..a259082b47 100644
--- a/meta/recipes-devtools/gcc/libgcc-initial_13.3.bb
+++ b/meta/recipes-devtools/gcc/libgcc-initial_13.4.bb
diff --git a/meta/recipes-devtools/gcc/libgcc_13.3.bb b/meta/recipes-devtools/gcc/libgcc_13.4.bb
index fdcd6cc0da..fdcd6cc0da 100644
--- a/meta/recipes-devtools/gcc/libgcc_13.3.bb
+++ b/meta/recipes-devtools/gcc/libgcc_13.4.bb
diff --git a/meta/recipes-devtools/gcc/libgfortran_13.3.bb b/meta/recipes-devtools/gcc/libgfortran_13.4.bb
index 71dd8b4bdc..71dd8b4bdc 100644
--- a/meta/recipes-devtools/gcc/libgfortran_13.3.bb
+++ b/meta/recipes-devtools/gcc/libgfortran_13.4.bb
diff --git a/meta/recipes-devtools/go/go-binary-native_1.22.12.bb b/meta/recipes-devtools/go/go-binary-native_1.22.12.bb
index 747737ff94..b15b60a691 100644
--- a/meta/recipes-devtools/go/go-binary-native_1.22.12.bb
+++ b/meta/recipes-devtools/go/go-binary-native_1.22.12.bb
@@ -17,6 +17,7 @@ UPSTREAM_CHECK_URI = "https://golang.org/dl/"
17UPSTREAM_CHECK_REGEX = "go(?P<pver>\d+(\.\d+)+)\.linux" 17UPSTREAM_CHECK_REGEX = "go(?P<pver>\d+(\.\d+)+)\.linux"
18 18
19CVE_PRODUCT = "golang:go" 19CVE_PRODUCT = "golang:go"
20CVE_STATUS[CVE-2024-3566] = "not-applicable-platform: Issue only applies on Windows"
20 21
21S = "${WORKDIR}/go" 22S = "${WORKDIR}/go"
22 23
diff --git a/meta/recipes-devtools/go/go-common.inc b/meta/recipes-devtools/go/go-common.inc
index db165792dc..a39dea6c1c 100644
--- a/meta/recipes-devtools/go/go-common.inc
+++ b/meta/recipes-devtools/go/go-common.inc
@@ -21,6 +21,7 @@ UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)\.src\.tar"
21 21
22# all recipe variants are created from the same product 22# all recipe variants are created from the same product
23CVE_PRODUCT = "golang:go" 23CVE_PRODUCT = "golang:go"
24CVE_STATUS[CVE-2024-3566] = "not-applicable-platform: Issue only applies on Windows"
24 25
25INHIBIT_PACKAGE_DEBUG_SPLIT = "1" 26INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
26SSTATE_SCAN_CMD = "true" 27SSTATE_SCAN_CMD = "true"
diff --git a/meta/recipes-devtools/python/python3-requests_2.32.3.bb b/meta/recipes-devtools/python/python3-requests_2.32.4.bb
index 36ff75f87d..b86ecfba52 100644
--- a/meta/recipes-devtools/python/python3-requests_2.32.3.bb
+++ b/meta/recipes-devtools/python/python3-requests_2.32.4.bb
@@ -7,7 +7,7 @@ SRC_URI:append:class-nativesdk = " \
7 file://environment.d-python3-requests.sh \ 7 file://environment.d-python3-requests.sh \
8" 8"
9 9
10SRC_URI[sha256sum] = "55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760" 10SRC_URI[sha256sum] = "27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422"
11 11
12inherit pypi python_setuptools_build_meta 12inherit pypi python_setuptools_build_meta
13 13
diff --git a/meta/recipes-devtools/python/python3-setuptools/CVE-2025-47273-pre1.patch b/meta/recipes-devtools/python/python3-setuptools/CVE-2025-47273-pre1.patch
new file mode 100644
index 0000000000..72bcaea435
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-setuptools/CVE-2025-47273-pre1.patch
@@ -0,0 +1,54 @@
1From d8390feaa99091d1ba9626bec0e4ba7072fc507a Mon Sep 17 00:00:00 2001
2From: "Jason R. Coombs" <jaraco@jaraco.com>
3Date: Sat, 19 Apr 2025 12:49:55 -0400
4Subject: [PATCH] Extract _resolve_download_filename with test.
5
6Upstream-Status: Backport [https://github.com/pypa/setuptools/commit/d8390feaa99091d1ba9626bec0e4ba7072fc507a]
7CVE: CVE-2025-47273 #Dependency Patch
8Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
9---
10 setuptools/package_index.py | 20 ++++++++++++++++----
11 1 file changed, 16 insertions(+), 4 deletions(-)
12
13diff --git a/setuptools/package_index.py b/setuptools/package_index.py
14index 00a972d..d460fcb 100644
15--- a/setuptools/package_index.py
16+++ b/setuptools/package_index.py
17@@ -815,9 +815,16 @@ class PackageIndex(Environment):
18 else:
19 raise DistutilsError("Download error for %s: %s" % (url, v)) from v
20
21- def _download_url(self, url, tmpdir):
22- # Determine download filename
23- #
24+ @staticmethod
25+ def _resolve_download_filename(url, tmpdir):
26+ """
27+ >>> du = PackageIndex._resolve_download_filename
28+ >>> root = getfixture('tmp_path')
29+ >>> url = 'https://files.pythonhosted.org/packages/a9/5a/0db.../setuptools-78.1.0.tar.gz'
30+ >>> import pathlib
31+ >>> str(pathlib.Path(du(url, root)).relative_to(root))
32+ 'setuptools-78.1.0.tar.gz'
33+ """
34 name, fragment = egg_info_for_url(url)
35 if name:
36 while '..' in name:
37@@ -828,8 +835,13 @@ class PackageIndex(Environment):
38 if name.endswith('.egg.zip'):
39 name = name[:-4] # strip the extra .zip before download
40
41- filename = os.path.join(tmpdir, name)
42+ return os.path.join(tmpdir, name)
43
44+ def _download_url(self, url, tmpdir):
45+ """
46+ Determine the download filename.
47+ """
48+ filename = self._resolve_download_filename(url, tmpdir)
49 return self._download_vcs(url, filename) or self._download_other(url, filename)
50
51 @staticmethod
52--
532.25.1
54
diff --git a/meta/recipes-devtools/python/python3-setuptools/CVE-2025-47273.patch b/meta/recipes-devtools/python/python3-setuptools/CVE-2025-47273.patch
new file mode 100644
index 0000000000..be6617e0f6
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-setuptools/CVE-2025-47273.patch
@@ -0,0 +1,59 @@
1From 250a6d17978f9f6ac3ac887091f2d32886fbbb0b Mon Sep 17 00:00:00 2001
2From: "Jason R. Coombs" <jaraco@jaraco.com>
3Date: Sat, 19 Apr 2025 13:03:47 -0400
4Subject: [PATCH] Add a check to ensure the name resolves relative to the
5 tmpdir.
6
7Closes #4946
8
9Upstream-Status: Backport [https://github.com/pypa/setuptools/commit/250a6d17978f9f6ac3ac887091f2d32886fbbb0b]
10CVE: CVE-2025-47273
11Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
12---
13 setuptools/package_index.py | 18 ++++++++++++++++--
14 1 file changed, 16 insertions(+), 2 deletions(-)
15
16diff --git a/setuptools/package_index.py b/setuptools/package_index.py
17index d460fcb..6c7874d 100644
18--- a/setuptools/package_index.py
19+++ b/setuptools/package_index.py
20@@ -818,12 +818,20 @@ class PackageIndex(Environment):
21 @staticmethod
22 def _resolve_download_filename(url, tmpdir):
23 """
24+ >>> import pathlib
25 >>> du = PackageIndex._resolve_download_filename
26 >>> root = getfixture('tmp_path')
27 >>> url = 'https://files.pythonhosted.org/packages/a9/5a/0db.../setuptools-78.1.0.tar.gz'
28- >>> import pathlib
29 >>> str(pathlib.Path(du(url, root)).relative_to(root))
30 'setuptools-78.1.0.tar.gz'
31+
32+ Ensures the target is always in tmpdir.
33+
34+ >>> url = 'https://anyhost/%2fhome%2fuser%2f.ssh%2fauthorized_keys'
35+ >>> du(url, root)
36+ Traceback (most recent call last):
37+ ...
38+ ValueError: Invalid filename...
39 """
40 name, fragment = egg_info_for_url(url)
41 if name:
42@@ -835,7 +843,13 @@ class PackageIndex(Environment):
43 if name.endswith('.egg.zip'):
44 name = name[:-4] # strip the extra .zip before download
45
46- return os.path.join(tmpdir, name)
47+ filename = os.path.join(tmpdir, name)
48+
49+ # ensure path resolves within the tmpdir
50+ if not filename.startswith(str(tmpdir)):
51+ raise ValueError(f"Invalid filename {filename}")
52+
53+ return filename
54
55 def _download_url(self, url, tmpdir):
56 """
57--
582.25.1
59
diff --git a/meta/recipes-devtools/python/python3-setuptools_69.1.1.bb b/meta/recipes-devtools/python/python3-setuptools_69.1.1.bb
index 7663101f23..46b2f0ab00 100644
--- a/meta/recipes-devtools/python/python3-setuptools_69.1.1.bb
+++ b/meta/recipes-devtools/python/python3-setuptools_69.1.1.bb
@@ -13,6 +13,8 @@ SRC_URI:append:class-native = " file://0001-conditionally-do-not-fetch-code-by-e
13SRC_URI += " \ 13SRC_URI += " \
14 file://0001-_distutils-sysconfig.py-make-it-possible-to-substite.patch \ 14 file://0001-_distutils-sysconfig.py-make-it-possible-to-substite.patch \
15 file://CVE-2024-6345.patch \ 15 file://CVE-2024-6345.patch \
16 file://CVE-2025-47273-pre1.patch \
17 file://CVE-2025-47273.patch \
16" 18"
17 19
18SRC_URI[sha256sum] = "5c0806c7d9af348e6dd3777b4f4dbb42c7ad85b190104837488eab9a7c945cf8" 20SRC_URI[sha256sum] = "5c0806c7d9af348e6dd3777b4f4dbb42c7ad85b190104837488eab9a7c945cf8"
diff --git a/meta/recipes-devtools/python/python3/0001-Avoid-shebang-overflow-on-python-config.py.patch b/meta/recipes-devtools/python/python3/0001-Avoid-shebang-overflow-on-python-config.py.patch
index 6e4930b9ec..a8f98d873e 100644
--- a/meta/recipes-devtools/python/python3/0001-Avoid-shebang-overflow-on-python-config.py.patch
+++ b/meta/recipes-devtools/python/python3/0001-Avoid-shebang-overflow-on-python-config.py.patch
@@ -19,7 +19,7 @@ diff --git a/Makefile.pre.in b/Makefile.pre.in
19index 2d235d2..1ac2263 100644 19index 2d235d2..1ac2263 100644
20--- a/Makefile.pre.in 20--- a/Makefile.pre.in
21+++ b/Makefile.pre.in 21+++ b/Makefile.pre.in
22@@ -2355,6 +2355,8 @@ python-config: $(srcdir)/Misc/python-config.in Misc/python-config.sh 22@@ -2356,6 +2356,8 @@ python-config: $(srcdir)/Misc/python-config.in Misc/python-config.sh
23 @ # Substitution happens here, as the completely-expanded BINDIR 23 @ # Substitution happens here, as the completely-expanded BINDIR
24 @ # is not available in configure 24 @ # is not available in configure
25 sed -e "s,@EXENAME@,$(EXENAME)," < $(srcdir)/Misc/python-config.in >python-config.py 25 sed -e "s,@EXENAME@,$(EXENAME)," < $(srcdir)/Misc/python-config.in >python-config.py
diff --git a/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch b/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch
index 1b9f3565d3..c42a56bcb3 100644
--- a/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch
+++ b/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch
@@ -17,7 +17,7 @@ diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py
17index 6258b68..d59ec6e 100644 17index 6258b68..d59ec6e 100644
18--- a/Lib/sysconfig.py 18--- a/Lib/sysconfig.py
19+++ b/Lib/sysconfig.py 19+++ b/Lib/sysconfig.py
20@@ -668,6 +668,11 @@ def _init_config_vars(): 20@@ -675,6 +675,11 @@ def _init_config_vars():
21 _CONFIG_VARS['VPATH'] = sys._vpath 21 _CONFIG_VARS['VPATH'] = sys._vpath
22 if os.name == 'posix': 22 if os.name == 'posix':
23 _init_posix(_CONFIG_VARS) 23 _init_posix(_CONFIG_VARS)
diff --git a/meta/recipes-devtools/python/python3/0001-Skip-failing-tests-due-to-load-variability-on-YP-AB.patch b/meta/recipes-devtools/python/python3/0001-Skip-failing-tests-due-to-load-variability-on-YP-AB.patch
index ec3bb9cbbd..051ec2c635 100644
--- a/meta/recipes-devtools/python/python3/0001-Skip-failing-tests-due-to-load-variability-on-YP-AB.patch
+++ b/meta/recipes-devtools/python/python3/0001-Skip-failing-tests-due-to-load-variability-on-YP-AB.patch
@@ -26,7 +26,7 @@ diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.
26index 3b4415b..1f94dec 100644 26index 3b4415b..1f94dec 100644
27--- a/Lib/test/_test_multiprocessing.py 27--- a/Lib/test/_test_multiprocessing.py
28+++ b/Lib/test/_test_multiprocessing.py 28+++ b/Lib/test/_test_multiprocessing.py
29@@ -688,6 +688,7 @@ class _TestProcess(BaseTestCase): 29@@ -692,6 +692,7 @@ class _TestProcess(BaseTestCase):
30 close_queue(q) 30 close_queue(q)
31 31
32 @support.requires_resource('walltime') 32 @support.requires_resource('walltime')
@@ -34,7 +34,7 @@ index 3b4415b..1f94dec 100644
34 def test_many_processes(self): 34 def test_many_processes(self):
35 if self.TYPE == 'threads': 35 if self.TYPE == 'threads':
36 self.skipTest('test not appropriate for {}'.format(self.TYPE)) 36 self.skipTest('test not appropriate for {}'.format(self.TYPE))
37@@ -2211,6 +2212,7 @@ class _TestBarrier(BaseTestCase): 37@@ -2223,6 +2224,7 @@ class _TestBarrier(BaseTestCase):
38 except threading.BrokenBarrierError: 38 except threading.BrokenBarrierError:
39 results.append(True) 39 results.append(True)
40 40
@@ -42,7 +42,7 @@ index 3b4415b..1f94dec 100644
42 def test_timeout(self): 42 def test_timeout(self):
43 """ 43 """
44 Test wait(timeout) 44 Test wait(timeout)
45@@ -5208,6 +5210,7 @@ class TestWait(unittest.TestCase): 45@@ -5220,6 +5222,7 @@ class TestWait(unittest.TestCase):
46 time.sleep(period) 46 time.sleep(period)
47 47
48 @support.requires_resource('walltime') 48 @support.requires_resource('walltime')
diff --git a/meta/recipes-devtools/python/python3/0001-ctypes-correct-gcc-check-in-test.patch b/meta/recipes-devtools/python/python3/0001-ctypes-correct-gcc-check-in-test.patch
deleted file mode 100644
index 3dd762e519..0000000000
--- a/meta/recipes-devtools/python/python3/0001-ctypes-correct-gcc-check-in-test.patch
+++ /dev/null
@@ -1,53 +0,0 @@
1From 2e2a0c8593a38f2020cc2baeeaa7972eb86773f9 Mon Sep 17 00:00:00 2001
2From: Peter Marko <peter.marko@siemens.com>
3Date: Sat, 8 Feb 2025 23:57:17 +0100
4Subject: [PATCH] ctypes: correct gcc check in test
5
6In case gcc is not available, it will throw exception and test fails.
7So chatch the exception to skip the test correctly.
8
9======================================================================
10ERROR: test_null_dlsym (test.test_ctypes.test_dlerror.TestNullDlsym.test_null_dlsym)
11----------------------------------------------------------------------
12Traceback (most recent call last):
13 File "/usr/lib/python3.12/test/test_ctypes/test_dlerror.py", line 61, in test_null_dlsym
14 retcode = subprocess.call(["gcc", "--version"],
15 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
16 File "/usr/lib/python3.12/subprocess.py", line 391, in call
17 with Popen(*popenargs, **kwargs) as p:
18 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
19 File "/usr/lib/python3.12/subprocess.py", line 1028, in __init__
20 self._execute_child(args, executable, preexec_fn, close_fds,
21 File "/usr/lib/python3.12/subprocess.py", line 1963, in _execute_child
22 raise child_exception_type(errno_num, err_msg, err_filename)
23FileNotFoundError: [Errno 2] No such file or directory: 'gcc'
24
25Upstream-Status: Submitted [https://github.com/python/cpython/pull/129872]
26Signed-off-by: Peter Marko <peter.marko@siemens.com>
27---
28 Lib/test/test_ctypes/test_dlerror.py | 11 +++++++----
29 1 file changed, 7 insertions(+), 4 deletions(-)
30
31diff --git a/Lib/test/test_ctypes/test_dlerror.py b/Lib/test/test_ctypes/test_dlerror.py
32index 6bf492399cb..56eb7622b4d 100644
33--- a/Lib/test/test_ctypes/test_dlerror.py
34+++ b/Lib/test/test_ctypes/test_dlerror.py
35@@ -58,11 +58,14 @@ def test_null_dlsym(self):
36 import subprocess
37 import tempfile
38
39- retcode = subprocess.call(["gcc", "--version"],
40- stdout=subprocess.DEVNULL,
41- stderr=subprocess.DEVNULL)
42- if retcode != 0:
43+ try:
44+ retcode = subprocess.call(["gcc", "--version"],
45+ stdout=subprocess.DEVNULL,
46+ stderr=subprocess.DEVNULL)
47+ except:
48 self.skipTest("gcc is missing")
49+ if retcode != 0:
50+ self.skipTest("gcc is not working")
51
52 pipe_r, pipe_w = os.pipe()
53 self.addCleanup(os.close, pipe_r)
diff --git a/meta/recipes-devtools/python/python3/0001-gh-107811-tarfile-treat-overflow-in-UID-GID-as-failu.patch b/meta/recipes-devtools/python/python3/0001-gh-107811-tarfile-treat-overflow-in-UID-GID-as-failu.patch
index 5c74443e62..1cffdd6e05 100644
--- a/meta/recipes-devtools/python/python3/0001-gh-107811-tarfile-treat-overflow-in-UID-GID-as-failu.patch
+++ b/meta/recipes-devtools/python/python3/0001-gh-107811-tarfile-treat-overflow-in-UID-GID-as-failu.patch
@@ -16,7 +16,7 @@ diff --git a/Lib/tarfile.py b/Lib/tarfile.py
16index 0a0f31e..4dfb67d 100755 16index 0a0f31e..4dfb67d 100755
17--- a/Lib/tarfile.py 17--- a/Lib/tarfile.py
18+++ b/Lib/tarfile.py 18+++ b/Lib/tarfile.py
19@@ -2590,7 +2590,8 @@ class TarFile(object): 19@@ -2685,7 +2685,8 @@ class TarFile(object):
20 os.lchown(targetpath, u, g) 20 os.lchown(targetpath, u, g)
21 else: 21 else:
22 os.chown(targetpath, u, g) 22 os.chown(targetpath, u, g)
diff --git a/meta/recipes-devtools/python/python3/0001-skip-no_stdout_fileno-test-due-to-load-variability.patch b/meta/recipes-devtools/python/python3/0001-skip-no_stdout_fileno-test-due-to-load-variability.patch
index e105f36eca..4920cb9ad9 100644
--- a/meta/recipes-devtools/python/python3/0001-skip-no_stdout_fileno-test-due-to-load-variability.patch
+++ b/meta/recipes-devtools/python/python3/0001-skip-no_stdout_fileno-test-due-to-load-variability.patch
@@ -19,7 +19,7 @@ diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py
19index c71c568..e41ab5e 100644 19index c71c568..e41ab5e 100644
20--- a/Lib/test/test_builtin.py 20--- a/Lib/test/test_builtin.py
21+++ b/Lib/test/test_builtin.py 21+++ b/Lib/test/test_builtin.py
22@@ -2352,6 +2352,7 @@ class PtyTests(unittest.TestCase): 22@@ -2375,6 +2375,7 @@ class PtyTests(unittest.TestCase):
23 # Check stdin/stdout error handler is used when invoking PyOS_Readline() 23 # Check stdin/stdout error handler is used when invoking PyOS_Readline()
24 self.check_input_tty("prompté", b"quux\xe9", "ascii") 24 self.check_input_tty("prompté", b"quux\xe9", "ascii")
25 25
diff --git a/meta/recipes-devtools/python/python3/0001-test_storlines-skip-due-to-load-variability.patch b/meta/recipes-devtools/python/python3/0001-test_storlines-skip-due-to-load-variability.patch
index 22aabbb2ed..88cd93a51f 100644
--- a/meta/recipes-devtools/python/python3/0001-test_storlines-skip-due-to-load-variability.patch
+++ b/meta/recipes-devtools/python/python3/0001-test_storlines-skip-due-to-load-variability.patch
@@ -19,7 +19,7 @@ diff --git a/Lib/test/test_ftplib.py b/Lib/test/test_ftplib.py
19index 4c4a449..b8c79a4 100644 19index 4c4a449..b8c79a4 100644
20--- a/Lib/test/test_ftplib.py 20--- a/Lib/test/test_ftplib.py
21+++ b/Lib/test/test_ftplib.py 21+++ b/Lib/test/test_ftplib.py
22@@ -626,6 +626,7 @@ class TestFTPClass(TestCase): 22@@ -629,6 +629,7 @@ class TestFTPClass(TestCase):
23 self.client.storbinary('stor', f, rest=r) 23 self.client.storbinary('stor', f, rest=r)
24 self.assertEqual(self.server.handler_instance.rest, str(r)) 24 self.assertEqual(self.server.handler_instance.rest, str(r))
25 25
diff --git a/meta/recipes-devtools/python/python3/makerace.patch b/meta/recipes-devtools/python/python3/makerace.patch
index 862b648685..fbe12a5fca 100644
--- a/meta/recipes-devtools/python/python3/makerace.patch
+++ b/meta/recipes-devtools/python/python3/makerace.patch
@@ -20,7 +20,7 @@ diff --git a/Makefile.pre.in b/Makefile.pre.in
20index dce36a5..2d235d2 100644 20index dce36a5..2d235d2 100644
21--- a/Makefile.pre.in 21--- a/Makefile.pre.in
22+++ b/Makefile.pre.in 22+++ b/Makefile.pre.in
23@@ -2266,7 +2266,7 @@ COMPILEALL_OPTS=-j0 23@@ -2267,7 +2267,7 @@ COMPILEALL_OPTS=-j0
24 TEST_MODULES=@TEST_MODULES@ 24 TEST_MODULES=@TEST_MODULES@
25 25
26 .PHONY: libinstall 26 .PHONY: libinstall
diff --git a/meta/recipes-devtools/python/python3_3.12.9.bb b/meta/recipes-devtools/python/python3_3.12.11.bb
index 8e03ff5f2b..706dabb5cd 100644
--- a/meta/recipes-devtools/python/python3_3.12.9.bb
+++ b/meta/recipes-devtools/python/python3_3.12.11.bb
@@ -34,14 +34,13 @@ SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz \
34 file://0001-test_deadlock-skip-problematic-test.patch \ 34 file://0001-test_deadlock-skip-problematic-test.patch \
35 file://0001-test_active_children-skip-problematic-test.patch \ 35 file://0001-test_active_children-skip-problematic-test.patch \
36 file://0001-test_readline-skip-limited-history-test.patch \ 36 file://0001-test_readline-skip-limited-history-test.patch \
37 file://0001-ctypes-correct-gcc-check-in-test.patch \
38 " 37 "
39 38
40SRC_URI:append:class-native = " \ 39SRC_URI:append:class-native = " \
41 file://0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch \ 40 file://0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch \
42 " 41 "
43 42
44SRC_URI[sha256sum] = "7220835d9f90b37c006e9842a8dff4580aaca4318674f947302b8d28f3f81112" 43SRC_URI[sha256sum] = "c30bb24b7f1e9a19b11b55a546434f74e739bb4c271a3e3a80ff4380d49f7adb"
45 44
46# exclude pre-releases for both python 2.x and 3.x 45# exclude pre-releases for both python 2.x and 3.x
47UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P<pver>\d+(\.\d+)+).tar" 46UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P<pver>\d+(\.\d+)+).tar"
diff --git a/meta/recipes-devtools/ruby/ruby/CVE-2025-27221-0001.patch b/meta/recipes-devtools/ruby/ruby/CVE-2025-27221-0001.patch
new file mode 100644
index 0000000000..95802d04f9
--- /dev/null
+++ b/meta/recipes-devtools/ruby/ruby/CVE-2025-27221-0001.patch
@@ -0,0 +1,57 @@
1From 3675494839112b64d5f082a9068237b277ed1495 Mon Sep 17 00:00:00 2001
2From: Hiroshi SHIBATA <hsbt@ruby-lang.org>
3Date: Fri, 21 Feb 2025 16:29:36 +0900
4Subject: [PATCH] Truncate userinfo with URI#join, URI#merge and URI#+
5
6CVE: CVE-2025-27221
7
8Upstream-Status: Backport [https://github.com/ruby/uri/commit/3675494839112b64d5f082a9068237b277ed1495]
9
10Signed-off-by: Divya Chellam <divya.chellam@windriver.com>
11---
12 lib/uri/generic.rb | 6 +++++-
13 test/uri/test_generic.rb | 11 +++++++++++
14 2 files changed, 16 insertions(+), 1 deletion(-)
15
16diff --git a/lib/uri/generic.rb b/lib/uri/generic.rb
17index f3540a2..ecc78c5 100644
18--- a/lib/uri/generic.rb
19+++ b/lib/uri/generic.rb
20@@ -1141,7 +1141,11 @@ module URI
21 end
22
23 # RFC2396, Section 5.2, 7)
24- base.set_userinfo(rel.userinfo) if rel.userinfo
25+ if rel.userinfo
26+ base.set_userinfo(rel.userinfo)
27+ else
28+ base.set_userinfo(nil)
29+ end
30 base.set_host(rel.host) if rel.host
31 base.set_port(rel.port) if rel.port
32 base.query = rel.query if rel.query
33diff --git a/test/uri/test_generic.rb b/test/uri/test_generic.rb
34index e661937..17ba2b6 100644
35--- a/test/uri/test_generic.rb
36+++ b/test/uri/test_generic.rb
37@@ -164,6 +164,17 @@ class URI::TestGeneric < Test::Unit::TestCase
38 # must be empty string to identify as path-abempty, not path-absolute
39 assert_equal('', url.host)
40 assert_equal('http:////example.com', url.to_s)
41+
42+ # sec-2957667
43+ url = URI.parse('http://user:pass@example.com').merge('//example.net')
44+ assert_equal('http://example.net', url.to_s)
45+ assert_nil(url.userinfo)
46+ url = URI.join('http://user:pass@example.com', '//example.net')
47+ assert_equal('http://example.net', url.to_s)
48+ assert_nil(url.userinfo)
49+ url = URI.parse('http://user:pass@example.com') + '//example.net'
50+ assert_equal('http://example.net', url.to_s)
51+ assert_nil(url.userinfo)
52 end
53
54 def test_parse_scheme_with_symbols
55--
562.40.0
57
diff --git a/meta/recipes-devtools/ruby/ruby/CVE-2025-27221-0002.patch b/meta/recipes-devtools/ruby/ruby/CVE-2025-27221-0002.patch
new file mode 100644
index 0000000000..4435b87c34
--- /dev/null
+++ b/meta/recipes-devtools/ruby/ruby/CVE-2025-27221-0002.patch
@@ -0,0 +1,73 @@
1From 2789182478f42ccbb62197f952eb730e4f02bfc5 Mon Sep 17 00:00:00 2001
2From: Hiroshi SHIBATA <hsbt@ruby-lang.org>
3Date: Fri, 21 Feb 2025 18:16:28 +0900
4Subject: [PATCH] Fix merger of URI with authority component
5
6https://hackerone.com/reports/2957667
7
8Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>
9
10CVE: CVE-2025-27221
11
12Upstream-Status: Backport [https://github.com/ruby/uri/commit/2789182478f42ccbb62197f952eb730e4f02bfc5]
13
14Signed-off-by: Divya Chellam <divya.chellam@windriver.com>
15---
16 lib/uri/generic.rb | 19 +++++++------------
17 test/uri/test_generic.rb | 7 +++++++
18 2 files changed, 14 insertions(+), 12 deletions(-)
19
20diff --git a/lib/uri/generic.rb b/lib/uri/generic.rb
21index ecc78c5..2c0a88d 100644
22--- a/lib/uri/generic.rb
23+++ b/lib/uri/generic.rb
24@@ -1133,21 +1133,16 @@ module URI
25 base.fragment=(nil)
26
27 # RFC2396, Section 5.2, 4)
28- if !authority
29- base.set_path(merge_path(base.path, rel.path)) if base.path && rel.path
30- else
31- # RFC2396, Section 5.2, 4)
32- base.set_path(rel.path) if rel.path
33+ if authority
34+ base.set_userinfo(rel.userinfo)
35+ base.set_host(rel.host)
36+ base.set_port(rel.port || base.default_port)
37+ base.set_path(rel.path)
38+ elsif base.path && rel.path
39+ base.set_path(merge_path(base.path, rel.path))
40 end
41
42 # RFC2396, Section 5.2, 7)
43- if rel.userinfo
44- base.set_userinfo(rel.userinfo)
45- else
46- base.set_userinfo(nil)
47- end
48- base.set_host(rel.host) if rel.host
49- base.set_port(rel.port) if rel.port
50 base.query = rel.query if rel.query
51 base.fragment=(rel.fragment) if rel.fragment
52
53diff --git a/test/uri/test_generic.rb b/test/uri/test_generic.rb
54index 17ba2b6..1a70dd4 100644
55--- a/test/uri/test_generic.rb
56+++ b/test/uri/test_generic.rb
57@@ -267,6 +267,13 @@ class URI::TestGeneric < Test::Unit::TestCase
58 assert_equal(u0, u1)
59 end
60
61+ def test_merge_authority
62+ u = URI.parse('http://user:pass@example.com:8080')
63+ u0 = URI.parse('http://new.example.org/path')
64+ u1 = u.merge('//new.example.org/path')
65+ assert_equal(u0, u1)
66+ end
67+
68 def test_route
69 url = URI.parse('http://hoge/a.html').route_to('http://hoge/b.html')
70 assert_equal('b.html', url.to_s)
71--
722.40.0
73
diff --git a/meta/recipes-devtools/ruby/ruby_3.3.5.bb b/meta/recipes-devtools/ruby/ruby_3.3.5.bb
index c91c51657f..b37f0d03e7 100644
--- a/meta/recipes-devtools/ruby/ruby_3.3.5.bb
+++ b/meta/recipes-devtools/ruby/ruby_3.3.5.bb
@@ -28,6 +28,8 @@ SRC_URI = "http://cache.ruby-lang.org/pub/ruby/${SHRT_VER}/ruby-${PV}.tar.gz \
28 file://0001-vm_dump.c-Define-REG_S1-and-REG_S2-for-musl-riscv.patch \ 28 file://0001-vm_dump.c-Define-REG_S1-and-REG_S2-for-musl-riscv.patch \
29 file://CVE-2025-27219.patch \ 29 file://CVE-2025-27219.patch \
30 file://CVE-2025-27220.patch \ 30 file://CVE-2025-27220.patch \
31 file://CVE-2025-27221-0001.patch \
32 file://CVE-2025-27221-0002.patch \
31 " 33 "
32UPSTREAM_CHECK_URI = "https://www.ruby-lang.org/en/downloads/" 34UPSTREAM_CHECK_URI = "https://www.ruby-lang.org/en/downloads/"
33 35
diff --git a/meta/recipes-extended/ghostscript/ghostscript_10.05.0.bb b/meta/recipes-extended/ghostscript/ghostscript_10.05.1.bb
index 1d05945c30..bd34058517 100644
--- a/meta/recipes-extended/ghostscript/ghostscript_10.05.0.bb
+++ b/meta/recipes-extended/ghostscript/ghostscript_10.05.1.bb
@@ -27,7 +27,7 @@ SRC_URI = "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/downlo
27 file://avoid-host-contamination.patch \ 27 file://avoid-host-contamination.patch \
28 " 28 "
29 29
30SRC_URI[sha256sum] = "56e77833de683825c420d0af8cb90aa8ba7da71ea6fb5624290cbc1b53fe7942" 30SRC_URI[sha256sum] = "121861b6d29b2461dec6575c9f3cab665b810bd408d4ec02c86719fa708b0a49"
31 31
32PACKAGECONFIG ??= "" 32PACKAGECONFIG ??= ""
33PACKAGECONFIG[gtk] = "--enable-gtk,--disable-gtk,gtk+3" 33PACKAGECONFIG[gtk] = "--enable-gtk,--disable-gtk,gtk+3"
diff --git a/meta/recipes-extended/iputils/iputils/CVE-2025-47268.patch b/meta/recipes-extended/iputils/iputils/CVE-2025-47268.patch
new file mode 100644
index 0000000000..dd31b79031
--- /dev/null
+++ b/meta/recipes-extended/iputils/iputils/CVE-2025-47268.patch
@@ -0,0 +1,143 @@
1From 070cfacd7348386173231fb16fad4983d4e6ae40 Mon Sep 17 00:00:00 2001
2From: Petr Vorel <pvorel@suse.cz>
3Date: Mon, 5 May 2025 23:55:57 +0200
4Subject: [PATCH] ping: Fix signed 64-bit integer overflow in RTT calculation
5
6Crafted ICMP Echo Reply packet can cause signed integer overflow in
7
81) triptime calculation:
9triptime = tv->tv_sec * 1000000 + tv->tv_usec;
10
112) tsum2 increment which uses triptime
12rts->tsum2 += (double)((long long)triptime * (long long)triptime);
13
143) final tmvar:
15tmvar = (rts->tsum2 / total) - (tmavg * tmavg)
16
17 $ export CFLAGS="-O1 -g -fsanitize=address,undefined -fno-omit-frame-pointer"
18 $ export LDFLAGS="-fsanitize=address,undefined -fno-omit-frame-pointer"
19 $ meson setup .. -Db_sanitize=address,undefined
20 $ ninja
21 $ ./ping/ping -c2 127.0.0.1
22
23 PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
24 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.061 ms
25 ../ping/ping_common.c:757:25: runtime error: signed integer overflow: -2513732689199106 * 1000000 cannot be represented in type 'long int'
26 ../ping/ping_common.c:757:12: runtime error: signed integer overflow: -4975495174606980224 + -6510615555425289427 cannot be represented in type 'long int'
27 ../ping/ping_common.c:769:47: runtime error: signed integer overflow: 6960633343677281965 * 6960633343677281965 cannot be represented in type 'long int'
28 24 bytes from 127.0.0.1: icmp_seq=1 ttl=64 (truncated)
29 ./ping/ping: Warning: time of day goes back (-7256972569576721377us), taking countermeasures
30 ./ping/ping: Warning: time of day goes back (-7256972569576721232us), taking countermeasures
31 24 bytes from 127.0.0.1: icmp_seq=1 ttl=64 (truncated)
32 ../ping/ping_common.c:265:16: runtime error: signed integer overflow: 6960633343677281965 * 2 cannot be represented in type 'long int'
33 64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.565 ms
34
35 --- 127.0.0.1 ping statistics ---
36 2 packets transmitted, 2 received, +2 duplicates, 0% packet loss, time 1002ms
37 ../ping/ping_common.c:940:42: runtime error: signed integer overflow: 1740158335919320832 * 1740158335919320832 cannot be represented in type 'long int'
38 rtt min/avg/max/mdev = 0.000/1740158335919320.832/6960633343677281.965/-1623514645242292.-224 ms
39
40To fix the overflow check allowed ranges of struct timeval members:
41* tv_sec <0, LONG_MAX/1000000>
42* tv_usec <0, 999999>
43
44Fix includes 2 new error messages (needs translation).
45Also existing message "time of day goes back ..." needed to be modified
46as it now prints tv->tv_sec which is a second (needs translation update).
47
48After fix:
49
50 $ ./ping/ping -c2 127.0.0.1
51 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.057 ms
52 ./ping/ping: Warning: invalid tv_usec -6510615555424928611 us
53 ./ping/ping: Warning: time of day goes back (-3985394643238914 s), taking countermeasures
54 ./ping/ping: Warning: invalid tv_usec -6510615555424928461 us
55 ./ping/ping: Warning: time of day goes back (-3985394643238914 s), taking countermeasures
56 24 bytes from 127.0.0.1: icmp_seq=1 ttl=64 (truncated)
57 ./ping/ping: Warning: invalid tv_usec -6510615555425884541 us
58 ./ping/ping: Warning: time of day goes back (-4243165695442945 s), taking countermeasures
59 24 bytes from 127.0.0.1: icmp_seq=1 ttl=64 (truncated)
60 64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.111 ms
61
62 --- 127.0.0.1 ping statistics ---
63 2 packets transmitted, 2 received, +2 duplicates, 0% packet loss, time 101ms
64 rtt min/avg/max/mdev = 0.000/0.042/0.111/0.046 ms
65
66Fixes: https://github.com/iputils/iputils/issues/584
67Fixes: CVE-2025-472
68Link: https://github.com/Zephkek/ping-rtt-overflow/
69Co-developed-by: Cyril Hrubis <chrubis@suse.cz>
70Reported-by: Mohamed Maatallah <hotelsmaatallahrecemail@gmail.com>
71Reviewed-by: Mohamed Maatallah <hotelsmaatallahrecemail@gmail.com>
72Reviewed-by: Cyril Hrubis <chrubis@suse.cz>
73Reviewed-by: Noah Meyerhans <noahm@debian.org>
74Signed-off-by: Petr Vorel <pvorel@suse.cz>
75
76CVE: CVE-2025-47268
77
78Upstream-Status: Backport
79[https://github.com/iputils/iputils/commit/070cfacd7348386173231fb16fad4983d4e6ae40]
80
81Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
82---
83 iputils_common.h | 3 +++
84 ping/ping_common.c | 22 +++++++++++++++++++---
85 2 files changed, 22 insertions(+), 3 deletions(-)
86
87diff --git a/iputils_common.h b/iputils_common.h
88index 49e790d..829a749 100644
89--- a/iputils_common.h
90+++ b/iputils_common.h
91@@ -10,6 +10,9 @@
92 !!__builtin_types_compatible_p(__typeof__(arr), \
93 __typeof__(&arr[0]))])) * 0)
94
95+/* 1000001 = 1000000 tv_sec + 1 tv_usec */
96+#define TV_SEC_MAX_VAL (LONG_MAX/1000001)
97+
98 #ifdef __GNUC__
99 # define iputils_attribute_format(t, n, m) __attribute__((__format__ (t, n, m)))
100 #else
101diff --git a/ping/ping_common.c b/ping/ping_common.c
102index dadd2a4..4e99d89 100644
103--- a/ping/ping_common.c
104+++ b/ping/ping_common.c
105@@ -754,16 +754,32 @@ int gather_statistics(struct ping_rts *rts, uint8_t *icmph, int icmplen,
106
107 restamp:
108 tvsub(tv, &tmp_tv);
109- triptime = tv->tv_sec * 1000000 + tv->tv_usec;
110- if (triptime < 0) {
111- error(0, 0, _("Warning: time of day goes back (%ldus), taking countermeasures"), triptime);
112+
113+ if (tv->tv_usec >= 1000000) {
114+ error(0, 0, _("Warning: invalid tv_usec %ld us"), tv->tv_usec);
115+ tv->tv_usec = 999999;
116+ }
117+
118+ if (tv->tv_usec < 0) {
119+ error(0, 0, _("Warning: invalid tv_usec %ld us"), tv->tv_usec);
120+ tv->tv_usec = 0;
121+ }
122+
123+ if (tv->tv_sec > TV_SEC_MAX_VAL) {
124+ error(0, 0, _("Warning: invalid tv_sec %ld s"), tv->tv_sec);
125+ triptime = 0;
126+ } else if (tv->tv_sec < 0) {
127+ error(0, 0, _("Warning: time of day goes back (%ld s), taking countermeasures"), tv->tv_sec);
128 triptime = 0;
129 if (!rts->opt_latency) {
130 gettimeofday(tv, NULL);
131 rts->opt_latency = 1;
132 goto restamp;
133 }
134+ } else {
135+ triptime = tv->tv_sec * 1000000 + tv->tv_usec;
136 }
137+
138 if (!csfailed) {
139 rts->tsum += triptime;
140 rts->tsum2 += (double)((long long)triptime * (long long)triptime);
141--
1422.34.1
143
diff --git a/meta/recipes-extended/iputils/iputils_20240117.bb b/meta/recipes-extended/iputils/iputils_20240117.bb
index 3880689742..5ff5af8847 100644
--- a/meta/recipes-extended/iputils/iputils_20240117.bb
+++ b/meta/recipes-extended/iputils/iputils_20240117.bb
@@ -10,7 +10,9 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=627cc07ec86a45951d43e30658bbd819"
10 10
11DEPENDS = "gnutls" 11DEPENDS = "gnutls"
12 12
13SRC_URI = "git://github.com/iputils/iputils;branch=master;protocol=https" 13SRC_URI = "git://github.com/iputils/iputils;branch=master;protocol=https \
14 file://CVE-2025-47268.patch \
15 "
14SRCREV = "8372f355bdf7a9b0c79338dd8ef8464c00a5c4e2" 16SRCREV = "8372f355bdf7a9b0c79338dd8ef8464c00a5c4e2"
15 17
16S = "${WORKDIR}/git" 18S = "${WORKDIR}/git"
diff --git a/meta/recipes-extended/net-tools/net-tools/CVE-2025-46836-01.patch b/meta/recipes-extended/net-tools/net-tools/CVE-2025-46836-01.patch
new file mode 100644
index 0000000000..0d55512497
--- /dev/null
+++ b/meta/recipes-extended/net-tools/net-tools/CVE-2025-46836-01.patch
@@ -0,0 +1,91 @@
1From 7a8f42fb20013a1493d8cae1c43436f85e656f2d Mon Sep 17 00:00:00 2001
2From: Zephkeks <zephyrofficialdiscord@gmail.com>
3Date: Tue, 13 May 2025 11:04:17 +0200
4Subject: [PATCH] CVE-2025-46836: interface.c: Stack-based Buffer Overflow in
5 get_name()
6
7Coordinated as GHSA-pfwf-h6m3-63wf
8
9CVE: CVE-2025-46836
10Upstream-Status: Backport [https://sourceforge.net/p/net-tools/code/ci/7a8f42fb20013a1493d8cae1c43436f85e656f2d/]
11Signed-off-by: Peter Marko <peter.marko@siemens.com>
12---
13 lib/interface.c | 63 ++++++++++++++++++++++++++++++-------------------
14 1 file changed, 39 insertions(+), 24 deletions(-)
15
16diff --git a/lib/interface.c b/lib/interface.c
17index 71d4163..a054f12 100644
18--- a/lib/interface.c
19+++ b/lib/interface.c
20@@ -211,32 +211,47 @@ out:
21 }
22
23 static const char *get_name(char *name, const char *p)
24+/* Safe version — guarantees at most IFNAMSIZ‑1 bytes are copied
25+ and the destination buffer is always NUL‑terminated. */
26 {
27- while (isspace(*p))
28- p++;
29- while (*p) {
30- if (isspace(*p))
31- break;
32- if (*p == ':') { /* could be an alias */
33- const char *dot = p++;
34- while (*p && isdigit(*p)) p++;
35- if (*p == ':') {
36- /* Yes it is, backup and copy it. */
37- p = dot;
38- *name++ = *p++;
39- while (*p && isdigit(*p)) {
40- *name++ = *p++;
41- }
42- } else {
43- /* No, it isn't */
44- p = dot;
45- }
46- p++;
47- break;
48- }
49- *name++ = *p++;
50+ char *dst = name; /* current write ptr */
51+ const char *end = name + IFNAMSIZ - 1; /* last byte we may write */
52+
53+ /* Skip leading white‑space. */
54+ while (isspace((unsigned char)*p))
55+ ++p;
56+
57+ /* Copy until white‑space, end of string, or buffer full. */
58+ while (*p && !isspace((unsigned char)*p) && dst < end) {
59+ if (*p == ':') { /* possible alias veth0:123: */
60+ const char *dot = p; /* remember the colon */
61+ ++p;
62+ while (*p && isdigit((unsigned char)*p))
63+ ++p;
64+
65+ if (*p == ':') { /* confirmed alias */
66+ p = dot; /* rewind and copy it all */
67+
68+ /* copy the colon */
69+ if (dst < end)
70+ *dst++ = *p++;
71+
72+ /* copy the digits */
73+ while (*p && isdigit((unsigned char)*p) && dst < end)
74+ *dst++ = *p++;
75+
76+ if (*p == ':') /* consume trailing colon */
77+ ++p;
78+ } else { /* if so treat as normal */
79+ p = dot;
80+ }
81+ break; /* interface name ends here */
82+ }
83+
84+ *dst++ = *p++; /* ordinary character copy */
85 }
86- *name++ = '\0';
87+
88+ *dst = '\0'; /* always NUL‑terminate */
89 return p;
90 }
91
diff --git a/meta/recipes-extended/net-tools/net-tools/CVE-2025-46836-02.patch b/meta/recipes-extended/net-tools/net-tools/CVE-2025-46836-02.patch
new file mode 100644
index 0000000000..d2c3673a24
--- /dev/null
+++ b/meta/recipes-extended/net-tools/net-tools/CVE-2025-46836-02.patch
@@ -0,0 +1,31 @@
1From ddb0e375fb9ca95bb69335540b85bbdaa2714348 Mon Sep 17 00:00:00 2001
2From: Bernd Eckenfels <net-tools@lina.inka.de>
3Date: Sat, 17 May 2025 21:53:23 +0200
4Subject: [PATCH] Interface statistic regression after 7a8f42fb2
5
6CVE: CVE-2025-46836
7Upstream-Status: Backport [https://sourceforge.net/p/net-tools/code/ci/ddb0e375fb9ca95bb69335540b85bbdaa2714348/]
8Signed-off-by: Peter Marko <peter.marko@siemens.com>
9---
10 lib/interface.c | 5 ++---
11 1 file changed, 2 insertions(+), 3 deletions(-)
12
13diff --git a/lib/interface.c b/lib/interface.c
14index a054f12..ca4adf1 100644
15--- a/lib/interface.c
16+++ b/lib/interface.c
17@@ -239,12 +239,11 @@ static const char *get_name(char *name, const char *p)
18 /* copy the digits */
19 while (*p && isdigit((unsigned char)*p) && dst < end)
20 *dst++ = *p++;
21-
22- if (*p == ':') /* consume trailing colon */
23- ++p;
24 } else { /* if so treat as normal */
25 p = dot;
26 }
27+ if (*p == ':') /* consume trailing colon */
28+ ++p;
29 break; /* interface name ends here */
30 }
31
diff --git a/meta/recipes-extended/net-tools/net-tools_2.10.bb b/meta/recipes-extended/net-tools/net-tools_2.10.bb
index 33304297ec..c4d298181a 100644
--- a/meta/recipes-extended/net-tools/net-tools_2.10.bb
+++ b/meta/recipes-extended/net-tools/net-tools_2.10.bb
@@ -11,6 +11,8 @@ SRC_URI = "git://git.code.sf.net/p/net-tools/code;protocol=https;branch=master \
11 file://net-tools-config.h \ 11 file://net-tools-config.h \
12 file://net-tools-config.make \ 12 file://net-tools-config.make \
13 file://Add_missing_headers.patch \ 13 file://Add_missing_headers.patch \
14 file://CVE-2025-46836-01.patch \
15 file://CVE-2025-46836-02.patch \
14" 16"
15 17
16S = "${WORKDIR}/git" 18S = "${WORKDIR}/git"
diff --git a/meta/recipes-extended/screen/screen/CVE-2025-46802.patch b/meta/recipes-extended/screen/screen/CVE-2025-46802.patch
new file mode 100644
index 0000000000..e46affc480
--- /dev/null
+++ b/meta/recipes-extended/screen/screen/CVE-2025-46802.patch
@@ -0,0 +1,146 @@
1From 049b26b22e197ba3be9c46e5c193032e01a4724a Mon Sep 17 00:00:00 2001
2From: Matthias Gerstner <matthias.gerstner@suse.de>
3Date: Mon, 12 May 2025 15:15:38 +0200
4Subject: [PATCH] fix CVE-2025-46802: attacher.c - prevent temporary 0666 mode
5 on PTYs
6
7This temporary chmod of the PTY to mode 0666 is most likely a remnant of
8past times, before the PTY file descriptor was passed to the target
9session via the UNIX domain socket.
10
11This chmod() causes a race condition during which any other user in the
12system can open the PTY for reading and writing, and thus allows PTY
13hijacking.
14
15Simply remove this logic completely.
16
17CVE: CVE-2025-46802
18
19Upstream-Status: Backport [https://cgit.git.savannah.gnu.org/cgit/screen.git/commit/?id=049b26b22e197ba3be9c46e5c193032e01a4724a]
20
21Signed-off-by: Divya Chellam <divya.chellam@windriver.com>
22---
23 attacher.c | 27 ---------------------------
24 screen.c | 19 -------------------
25 2 files changed, 46 deletions(-)
26
27diff --git a/attacher.c b/attacher.c
28index c35ae7a..16b151e 100644
29--- a/attacher.c
30+++ b/attacher.c
31@@ -73,7 +73,6 @@ extern int MasterPid, attach_fd;
32 #ifdef MULTIUSER
33 extern char *multi;
34 extern int multiattach, multi_uid, own_uid;
35-extern int tty_mode, tty_oldmode;
36 # ifndef USE_SETEUID
37 static int multipipe[2];
38 # endif
39@@ -160,9 +159,6 @@ int how;
40
41 if (pipe(multipipe))
42 Panic(errno, "pipe");
43- if (chmod(attach_tty, 0666))
44- Panic(errno, "chmod %s", attach_tty);
45- tty_oldmode = tty_mode;
46 eff_uid = -1; /* make UserContext fork */
47 real_uid = multi_uid;
48 if ((ret = UserContext()) <= 0)
49@@ -174,11 +170,6 @@ int how;
50 Panic(errno, "UserContext");
51 close(multipipe[1]);
52 read(multipipe[0], &dummy, 1);
53- if (tty_oldmode >= 0)
54- {
55- chmod(attach_tty, tty_oldmode);
56- tty_oldmode = -1;
57- }
58 ret = UserStatus();
59 #ifdef LOCK
60 if (ret == SIG_LOCK)
61@@ -224,9 +215,6 @@ int how;
62 xseteuid(multi_uid);
63 xseteuid(own_uid);
64 #endif
65- if (chmod(attach_tty, 0666))
66- Panic(errno, "chmod %s", attach_tty);
67- tty_oldmode = tty_mode;
68 }
69 # endif /* USE_SETEUID */
70 #endif /* MULTIUSER */
71@@ -423,13 +411,6 @@ int how;
72 ContinuePlease = 0;
73 # ifndef USE_SETEUID
74 close(multipipe[1]);
75-# else
76- xseteuid(own_uid);
77- if (tty_oldmode >= 0)
78- if (chmod(attach_tty, tty_oldmode))
79- Panic(errno, "chmod %s", attach_tty);
80- tty_oldmode = -1;
81- xseteuid(real_uid);
82 # endif
83 }
84 #endif
85@@ -505,14 +486,6 @@ AttacherFinit SIGDEFARG
86 close(s);
87 }
88 }
89-#ifdef MULTIUSER
90- if (tty_oldmode >= 0)
91- {
92- if (setuid(own_uid))
93- Panic(errno, "setuid");
94- chmod(attach_tty, tty_oldmode);
95- }
96-#endif
97 exit(0);
98 SIGRETURN;
99 }
100diff --git a/screen.c b/screen.c
101index 7653cd1..1a23e1a 100644
102--- a/screen.c
103+++ b/screen.c
104@@ -230,8 +230,6 @@ char *multi_home;
105 int multi_uid;
106 int own_uid;
107 int multiattach;
108-int tty_mode;
109-int tty_oldmode = -1;
110 #endif
111
112 char HostName[MAXSTR];
113@@ -1009,9 +1007,6 @@ int main(int ac, char** av)
114
115 /* ttyname implies isatty */
116 SetTtyname(true, &st);
117-#ifdef MULTIUSER
118- tty_mode = (int)st.st_mode & 0777;
119-#endif
120
121 fl = fcntl(0, F_GETFL, 0);
122 if (fl != -1 && (fl & (O_RDWR|O_RDONLY|O_WRONLY)) == O_RDWR)
123@@ -2170,20 +2165,6 @@ DEFINE_VARARGS_FN(Panic)
124 if (D_userpid)
125 Kill(D_userpid, SIG_BYE);
126 }
127-#ifdef MULTIUSER
128- if (tty_oldmode >= 0) {
129-
130-# ifdef USE_SETEUID
131- if (setuid(own_uid))
132- xseteuid(own_uid); /* may be a loop. sigh. */
133-# else
134- setuid(own_uid);
135-# endif
136-
137- debug1("Panic: changing back modes from %s\n", attach_tty);
138- chmod(attach_tty, tty_oldmode);
139- }
140-#endif
141 eexit(1);
142 }
143
144--
1452.40.0
146
diff --git a/meta/recipes-extended/screen/screen/CVE-2025-46804.patch b/meta/recipes-extended/screen/screen/CVE-2025-46804.patch
new file mode 100644
index 0000000000..918c2c5ce9
--- /dev/null
+++ b/meta/recipes-extended/screen/screen/CVE-2025-46804.patch
@@ -0,0 +1,131 @@
1From e0eef5aac453fa98a2664416a56c50ad1d00cb30 Mon Sep 17 00:00:00 2001
2From: Matthias Gerstner <matthias.gerstner@suse.de>
3Date: Mon, 12 May 2025 15:26:11 +0200
4Subject: [PATCH] fix CVE-2025-46804: avoid file existence test information
5 leaks
6
7In setuid-root context the current error messages give away whether
8certain paths not accessible by the real user exist and what type they
9have. To prevent this only output generic error messages in setuid-root
10context.
11
12In some situations, when an error is pertaining a directory and the
13directory is owner by the real user then we can still output more
14detailed diagnostics.
15
16This change can lead to less helpful error messages when Screen is
17install setuid-root. More complex changes would be needed to avoid this
18(e.g. only open the `SocketPath` with raised privileges when
19multi-attach is requested).
20
21There might still be lingering some code paths that allow such
22information leaks, since `SocketPath` is a global variable that is used
23across the code base. The majority of issues should be caught with this
24fix, however.
25
26CVE: CVE-2025-46804
27
28Upstream-Status: Backport [https://cgit.git.savannah.gnu.org/cgit/screen.git/commit/?id=e0eef5aac453fa98a2664416a56c50ad1d00cb30]
29
30Signed-off-by: Divya Chellam <divya.chellam@windriver.com>
31---
32 screen.c | 45 ++++++++++++++++++++++++++++++++++-----------
33 socket.c | 9 +++++++--
34 2 files changed, 41 insertions(+), 13 deletions(-)
35
36diff --git a/screen.c b/screen.c
37index 1a23e1a..6eec151 100644
38--- a/screen.c
39+++ b/screen.c
40@@ -1122,15 +1122,28 @@ int main(int ac, char** av)
41 #endif
42 }
43
44- if (stat(SockPath, &st) == -1)
45- Panic(errno, "Cannot access %s", SockPath);
46- else
47- if (!S_ISDIR(st.st_mode))
48+ if (stat(SockPath, &st) == -1) {
49+ if (eff_uid == real_uid) {
50+ Panic(errno, "Cannot access %s", SockPath);
51+ } else {
52+ Panic(0, "Error accessing %s", SockPath);
53+ }
54+ } else if (!S_ISDIR(st.st_mode)) {
55+ if (eff_uid == real_uid || st.st_uid == real_uid) {
56 Panic(0, "%s is not a directory.", SockPath);
57+ } else {
58+ Panic(0, "Error accessing %s", SockPath);
59+ }
60+ }
61 #ifdef MULTIUSER
62 if (multi) {
63- if ((int)st.st_uid != multi_uid)
64- Panic(0, "%s is not the owner of %s.", multi, SockPath);
65+ if ((int)st.st_uid != multi_uid) {
66+ if (eff_uid == real_uid || st.st_uid == real_uid) {
67+ Panic(0, "%s is not the owner of %s.", multi, SockPath);
68+ } else {
69+ Panic(0, "Error accessing %s", SockPath);
70+ }
71+ }
72 }
73 else
74 #endif
75@@ -1144,9 +1157,13 @@ int main(int ac, char** av)
76 Panic(0, "You are not the owner of %s.", SockPath);
77 #endif
78 }
79-
80- if ((st.st_mode & 0777) != 0700)
81- Panic(0, "Directory %s must have mode 700.", SockPath);
82+ if ((st.st_mode & 0777) != 0700) {
83+ if (eff_uid == real_uid || st.st_uid == real_uid) {
84+ Panic(0, "Directory %s must have mode 700.", SockPath);
85+ } else {
86+ Panic(0, "Error accessing %s", SockPath);
87+ }
88+ }
89 if (SockMatch && index(SockMatch, '/'))
90 Panic(0, "Bad session name '%s'", SockMatch);
91 SockName = SockPath + strlen(SockPath) + 1;
92@@ -1184,8 +1201,14 @@ int main(int ac, char** av)
93 else
94 exit(9 + (fo || oth ? 1 : 0) + fo);
95 }
96- if (fo == 0)
97- Panic(0, "No Sockets found in %s.\n", SockPath);
98+ if (fo == 0) {
99+ if (eff_uid == real_uid || st.st_uid == real_uid) {
100+ Panic(0, "No Sockets found in %s.\n", SockPath);
101+ } else {
102+ Panic(0, "Error accessing %s", SockPath);
103+ }
104+ }
105+
106 Msg(0, "%d Socket%s in %s.", fo, fo > 1 ? "s" : "", SockPath);
107 eexit(0);
108 }
109diff --git a/socket.c b/socket.c
110index 54d8cb8..6c3502f 100644
111--- a/socket.c
112+++ b/socket.c
113@@ -169,8 +169,13 @@ bool *is_sock;
114 xsetegid(real_gid);
115 #endif
116
117- if ((dirp = opendir(SockPath)) == 0)
118- Panic(errno, "Cannot opendir %s", SockPath);
119+ if ((dirp = opendir(SockPath)) == 0) {
120+ if (eff_uid == real_uid) {
121+ Panic(errno, "Cannot opendir %s", SockPath);
122+ } else {
123+ Panic(0, "Error accessing %s", SockPath);
124+ }
125+ }
126
127 slist = 0;
128 slisttail = &slist;
129--
1302.40.0
131
diff --git a/meta/recipes-extended/screen/screen/CVE-2025-46805.patch b/meta/recipes-extended/screen/screen/CVE-2025-46805.patch
new file mode 100644
index 0000000000..e0207b6072
--- /dev/null
+++ b/meta/recipes-extended/screen/screen/CVE-2025-46805.patch
@@ -0,0 +1,101 @@
1From aa9f51f996a22470b8461d2b6a32e62c7ec30ed5 Mon Sep 17 00:00:00 2001
2From: Axel Beckert <abe@debian.org>
3Date: Mon, 19 May 2025 00:42:42 +0200
4Subject: fix CVE-2025-46805: socket.c - don't send signals with root
5
6Gbp-Pq: fix-CVE-2025-46805-socket.c-don-t-send-signals-with-.patch.
7
8Upstream-Status: Backport [import from ubuntu https://git.launchpad.net/ubuntu/+source/screen/patch/?id=aa9f51f996a22470b8461d2b6a32e62c7ec30ed5
9Upstream commit https://git.savannah.gnu.org/cgit/screen.git/commit/?id=161f85b98b7e1d5e4893aeed20f4cdb5e3dfaaa4]
10CVE: CVE-2025-46805
11Signed-off-by: Ashish Sharma <asharma@mvista.com>
12
13 socket.c | 21 +++++++++++++--------
14 1 file changed, 13 insertions(+), 8 deletions(-)
15
16diff --git a/socket.c b/socket.c
17index e268e3d..11b5e59 100644
18--- a/socket.c
19+++ b/socket.c
20@@ -832,6 +832,11 @@ int pid;
21 return UserStatus();
22 }
23
24+static void KillUnpriv(pid_t pid, int sig) {
25+ UserContext();
26+ UserReturn(kill(pid, sig));
27+}
28+
29 #ifdef hpux
30 /*
31 * From: "F. K. Bruner" <napalm@ugcs.caltech.edu>
32@@ -917,14 +922,14 @@ struct win *wi;
33 {
34 Msg(errno, "Could not perform necessary sanity checks on pts device.");
35 close(i);
36- Kill(pid, SIG_BYE);
37+ KillUnpriv(pid, SIG_BYE);
38 return -1;
39 }
40 if (strcmp(ttyname_in_ns, m->m_tty))
41 {
42 Msg(errno, "Attach: passed fd does not match tty: %s - %s!", ttyname_in_ns, m->m_tty[0] != '\0' ? m->m_tty : "(null)");
43 close(i);
44- Kill(pid, SIG_BYE);
45+ KillUnpriv(pid, SIG_BYE);
46 return -1;
47 }
48 /* m->m_tty so far contains the actual name of the pts device in the
49@@ -941,19 +946,19 @@ struct win *wi;
50 {
51 Msg(errno, "Attach: passed fd does not match tty: %s - %s!", m->m_tty, myttyname ? myttyname : "NULL");
52 close(i);
53- Kill(pid, SIG_BYE);
54+ KillUnpriv(pid, SIG_BYE);
55 return -1;
56 }
57 }
58 else if ((i = secopen(m->m_tty, O_RDWR | O_NONBLOCK, 0)) < 0)
59 {
60 Msg(errno, "Attach: Could not open %s!", m->m_tty);
61- Kill(pid, SIG_BYE);
62+ KillUnpriv(pid, SIG_BYE);
63 return -1;
64 }
65 #ifdef MULTIUSER
66 if (attach)
67- Kill(pid, SIGCONT);
68+ KillUnpriv(pid, SIGCONT);
69 #endif
70
71 #if defined(ultrix) || defined(pyr) || defined(NeXT)
72@@ -966,7 +971,7 @@ struct win *wi;
73 {
74 write(i, "Attaching from inside of screen?\n", 33);
75 close(i);
76- Kill(pid, SIG_BYE);
77+ KillUnpriv(pid, SIG_BYE);
78 Msg(0, "Attach msg ignored: coming from inside.");
79 return -1;
80 }
81@@ -977,7 +982,7 @@ struct win *wi;
82 {
83 write(i, "Access to session denied.\n", 26);
84 close(i);
85- Kill(pid, SIG_BYE);
86+ KillUnpriv(pid, SIG_BYE);
87 Msg(0, "Attach: access denied for user %s.", user);
88 return -1;
89 }
90@@ -1295,7 +1300,7 @@ ReceiveMsg()
91 Msg(0, "Query attempt with bad pid(%d)!", m.m.command.apid);
92 }
93 else {
94- Kill(m.m.command.apid,
95+ KillUnpriv(m.m.command.apid,
96 (queryflag >= 0)
97 ? SIGCONT
98 : SIG_BYE); /* Send SIG_BYE if an error happened */
99--
100cgit v1.2.3
101
diff --git a/meta/recipes-extended/screen/screen_4.9.1.bb b/meta/recipes-extended/screen/screen_4.9.1.bb
index 7b040e6b57..706351a593 100644
--- a/meta/recipes-extended/screen/screen_4.9.1.bb
+++ b/meta/recipes-extended/screen/screen_4.9.1.bb
@@ -21,6 +21,9 @@ SRC_URI = "${GNU_MIRROR}/screen/screen-${PV}.tar.gz \
21 file://0002-comm.h-now-depends-on-term.h.patch \ 21 file://0002-comm.h-now-depends-on-term.h.patch \
22 file://0001-fix-for-multijob-build.patch \ 22 file://0001-fix-for-multijob-build.patch \
23 file://0001-Remove-more-compatibility-stuff.patch \ 23 file://0001-Remove-more-compatibility-stuff.patch \
24 file://CVE-2025-46805.patch \
25 file://CVE-2025-46802.patch \
26 file://CVE-2025-46804.patch \
24 " 27 "
25 28
26SRC_URI[sha256sum] = "26cef3e3c42571c0d484ad6faf110c5c15091fbf872b06fa7aa4766c7405ac69" 29SRC_URI[sha256sum] = "26cef3e3c42571c0d484ad6faf110c5c15091fbf872b06fa7aa4766c7405ac69"
diff --git a/meta/recipes-gnome/gtk+/gtk4_4.14.1.bb b/meta/recipes-gnome/gtk+/gtk4_4.14.1.bb
index 497be6805a..aae69271ac 100644
--- a/meta/recipes-gnome/gtk+/gtk4_4.14.1.bb
+++ b/meta/recipes-gnome/gtk+/gtk4_4.14.1.bb
@@ -16,6 +16,7 @@ DEPENDS = " \
16 graphene \ 16 graphene \
17 harfbuzz \ 17 harfbuzz \
18 jpeg \ 18 jpeg \
19 libdrm \
19 libepoxy \ 20 libepoxy \
20 libpng \ 21 libpng \
21 librsvg \ 22 librsvg \
diff --git a/meta/recipes-kernel/linux/linux-yocto-rt_6.6.bb b/meta/recipes-kernel/linux/linux-yocto-rt_6.6.bb
index 05bd9b8386..d855ee3f8a 100644
--- a/meta/recipes-kernel/linux/linux-yocto-rt_6.6.bb
+++ b/meta/recipes-kernel/linux/linux-yocto-rt_6.6.bb
@@ -14,13 +14,13 @@ python () {
14 raise bb.parse.SkipRecipe("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it") 14 raise bb.parse.SkipRecipe("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it")
15} 15}
16 16
17SRCREV_machine ?= "60a86cf65a4bf973b04926050eb05d0e8132690d" 17SRCREV_machine ?= "1933814ca46d38977965bbfe58ee3a1f8aacfb36"
18SRCREV_meta ?= "917317e6b8a757306a04d6d76dd1f5a1a5591ecd" 18SRCREV_meta ?= "8e66f449e449f9ae2809b6c395ed7089aa37d7a3"
19 19
20SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine;protocol=https \ 20SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine;protocol=https \
21 git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-6.6;destsuffix=${KMETA};protocol=https" 21 git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-6.6;destsuffix=${KMETA};protocol=https"
22 22
23LINUX_VERSION ?= "6.6.84" 23LINUX_VERSION ?= "6.6.92"
24 24
25LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" 25LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
26 26
diff --git a/meta/recipes-kernel/linux/linux-yocto-tiny_6.6.bb b/meta/recipes-kernel/linux/linux-yocto-tiny_6.6.bb
index 3296a4300a..382a74f648 100644
--- a/meta/recipes-kernel/linux/linux-yocto-tiny_6.6.bb
+++ b/meta/recipes-kernel/linux/linux-yocto-tiny_6.6.bb
@@ -8,7 +8,7 @@ require recipes-kernel/linux/linux-yocto.inc
8# CVE exclusions 8# CVE exclusions
9include recipes-kernel/linux/cve-exclusion_6.6.inc 9include recipes-kernel/linux/cve-exclusion_6.6.inc
10 10
11LINUX_VERSION ?= "6.6.84" 11LINUX_VERSION ?= "6.6.92"
12LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" 12LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
13 13
14DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}" 14DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
@@ -17,8 +17,8 @@ DEPENDS += "openssl-native util-linux-native"
17KMETA = "kernel-meta" 17KMETA = "kernel-meta"
18KCONF_BSP_AUDIT_LEVEL = "2" 18KCONF_BSP_AUDIT_LEVEL = "2"
19 19
20SRCREV_machine ?= "36c0e5585c944c19d71f496c306d8229565629a5" 20SRCREV_machine ?= "c72b190dc393b310be436153c864144694b184a6"
21SRCREV_meta ?= "917317e6b8a757306a04d6d76dd1f5a1a5591ecd" 21SRCREV_meta ?= "8e66f449e449f9ae2809b6c395ed7089aa37d7a3"
22 22
23PV = "${LINUX_VERSION}+git" 23PV = "${LINUX_VERSION}+git"
24 24
diff --git a/meta/recipes-kernel/linux/linux-yocto_6.6.bb b/meta/recipes-kernel/linux/linux-yocto_6.6.bb
index 98d820d195..c1bb736e04 100644
--- a/meta/recipes-kernel/linux/linux-yocto_6.6.bb
+++ b/meta/recipes-kernel/linux/linux-yocto_6.6.bb
@@ -18,25 +18,25 @@ KBRANCH:qemux86-64 ?= "v6.6/standard/base"
18KBRANCH:qemuloongarch64 ?= "v6.6/standard/base" 18KBRANCH:qemuloongarch64 ?= "v6.6/standard/base"
19KBRANCH:qemumips64 ?= "v6.6/standard/mti-malta64" 19KBRANCH:qemumips64 ?= "v6.6/standard/mti-malta64"
20 20
21SRCREV_machine:qemuarm ?= "1411061244e285c0f16dcc35ec34b7a13d7b5708" 21SRCREV_machine:qemuarm ?= "1d95b0a9486ae02a4eb38df55b94cb64485bd4c0"
22SRCREV_machine:qemuarm64 ?= "cc8c55d771998fb779d3c5990c250a78e223f397" 22SRCREV_machine:qemuarm64 ?= "8cd580eb06e43c9a4e9c26e1dd954a334f656fbd"
23SRCREV_machine:qemuloongarch64 ?= "8dd317512c57f68aa212eaf0dcf078fb39afc1bd" 23SRCREV_machine:qemuloongarch64 ?= "6032c9c1ac18edd7c8eadd6f9f655556b5f5e77c"
24SRCREV_machine:qemumips ?= "25bda2f47225cf6d74293ba1a0b9583c33b9865d" 24SRCREV_machine:qemumips ?= "a3bbede9b1c6dbd0b51132b8447adbbde1f46f85"
25SRCREV_machine:qemuppc ?= "7fd13b08104048b99d66947f682cb5a95360ba65" 25SRCREV_machine:qemuppc ?= "a5bba7e08dbb26c0dc7d7ec0624e903b7c6bac94"
26SRCREV_machine:qemuriscv64 ?= "8dd317512c57f68aa212eaf0dcf078fb39afc1bd" 26SRCREV_machine:qemuriscv64 ?= "6032c9c1ac18edd7c8eadd6f9f655556b5f5e77c"
27SRCREV_machine:qemuriscv32 ?= "8dd317512c57f68aa212eaf0dcf078fb39afc1bd" 27SRCREV_machine:qemuriscv32 ?= "6032c9c1ac18edd7c8eadd6f9f655556b5f5e77c"
28SRCREV_machine:qemux86 ?= "8dd317512c57f68aa212eaf0dcf078fb39afc1bd" 28SRCREV_machine:qemux86 ?= "6032c9c1ac18edd7c8eadd6f9f655556b5f5e77c"
29SRCREV_machine:qemux86-64 ?= "8dd317512c57f68aa212eaf0dcf078fb39afc1bd" 29SRCREV_machine:qemux86-64 ?= "6032c9c1ac18edd7c8eadd6f9f655556b5f5e77c"
30SRCREV_machine:qemumips64 ?= "23fd476a33f79745b2a4c86a2cffcf653564c649" 30SRCREV_machine:qemumips64 ?= "a1ed8408c3b0bc729270cc2bd2c9dd0056ab9271"
31SRCREV_machine ?= "8dd317512c57f68aa212eaf0dcf078fb39afc1bd" 31SRCREV_machine ?= "6032c9c1ac18edd7c8eadd6f9f655556b5f5e77c"
32SRCREV_meta ?= "917317e6b8a757306a04d6d76dd1f5a1a5591ecd" 32SRCREV_meta ?= "8e66f449e449f9ae2809b6c395ed7089aa37d7a3"
33 33
34# set your preferred provider of linux-yocto to 'linux-yocto-upstream', and you'll 34# set your preferred provider of linux-yocto to 'linux-yocto-upstream', and you'll
35# get the <version>/base branch, which is pure upstream -stable, and the same 35# get the <version>/base branch, which is pure upstream -stable, and the same
36# meta SRCREV as the linux-yocto-standard builds. Select your version using the 36# meta SRCREV as the linux-yocto-standard builds. Select your version using the
37# normal PREFERRED_VERSION settings. 37# normal PREFERRED_VERSION settings.
38BBCLASSEXTEND = "devupstream:target" 38BBCLASSEXTEND = "devupstream:target"
39SRCREV_machine:class-devupstream ?= "4b6a8fa777d29785c7ddb51dcbb2b5411deefaca" 39SRCREV_machine:class-devupstream ?= "ffaf6178137b9cdcc9742d6677b70be164dfeb8c"
40PN:class-devupstream = "linux-yocto-upstream" 40PN:class-devupstream = "linux-yocto-upstream"
41KBRANCH:class-devupstream = "v6.6/base" 41KBRANCH:class-devupstream = "v6.6/base"
42 42
@@ -44,7 +44,7 @@ SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;name=machine;branch=${KBRA
44 git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-6.6;destsuffix=${KMETA};protocol=https" 44 git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-6.6;destsuffix=${KMETA};protocol=https"
45 45
46LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" 46LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
47LINUX_VERSION ?= "6.6.84" 47LINUX_VERSION ?= "6.6.92"
48 48
49PV = "${LINUX_VERSION}+git" 49PV = "${LINUX_VERSION}+git"
50 50
diff --git a/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-32230.patch b/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-32230.patch
deleted file mode 100644
index 0f30c9ecf5..0000000000
--- a/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-32230.patch
+++ /dev/null
@@ -1,36 +0,0 @@
1From 96449cfeaeb95fcfd7a2b8d9ccf7719e97471ed1 Mon Sep 17 00:00:00 2001
2From: Michael Niedermayer <michael@niedermayer.cc>
3Date: Mon, 8 Apr 2024 18:38:42 +0200
4Subject: [PATCH] avcodec/mpegvideo_enc: Fix 1 line and one column images
5
6Fixes: Ticket10952
7Fixes: poc21ffmpeg
8Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
9
10CVE: CVE-2024-32230
11
12Upstream-Status: Backport [https://git.videolan.org/?p=ffmpeg.git;a=commitdiff;h=96449cfeaeb95fcfd7a2b8d9ccf7719e97471ed1]
13
14Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
15---
16 libavcodec/mpegvideo_enc.c | 4 ++--
17 1 file changed, 2 insertions(+), 2 deletions(-)
18
19diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c
20index e460ca4..fb4aaa2 100644
21--- a/libavcodec/mpegvideo_enc.c
22+++ b/libavcodec/mpegvideo_enc.c
23@@ -1198,8 +1198,8 @@ static int load_input_picture(MpegEncContext *s, const AVFrame *pic_arg)
24 int dst_stride = i ? s->uvlinesize : s->linesize;
25 int h_shift = i ? s->chroma_x_shift : 0;
26 int v_shift = i ? s->chroma_y_shift : 0;
27- int w = s->width >> h_shift;
28- int h = s->height >> v_shift;
29+ int w = AV_CEIL_RSHIFT(s->width , h_shift);
30+ int h = AV_CEIL_RSHIFT(s->height, v_shift);
31 const uint8_t *src = pic_arg->data[i];
32 uint8_t *dst = pic->f->data[i];
33 int vpad = 16;
34--
352.40.0
36
diff --git a/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-35366.patch b/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-35366.patch
deleted file mode 100644
index f7f16a5b92..0000000000
--- a/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-35366.patch
+++ /dev/null
@@ -1,35 +0,0 @@
1From 0bed22d597b78999151e3bde0768b7fe763fc2a6 Mon Sep 17 00:00:00 2001
2From: Michael Niedermayer <michael@niedermayer.cc>
3Date: Tue, 26 Mar 2024 00:39:49 +0100
4Subject: [PATCH] avformat/sbgdec: Check for negative duration
5
6Fixes: signed integer overflow: 9223372036854775807 - -8000000 cannot be represented in type 'long'
7Fixes: 62276/clusterfuzz-testcase-minimized-ffmpeg_dem_SBG_fuzzer-5133181743136768
8
9Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
10Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
11
12CVE: CVE-2024-35366
13
14Upstream-Status: Backport [https://github.com/ffmpeg/ffmpeg/commit/0bed22d597b78999151e3bde0768b7fe763fc2a6]
15
16Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
17---
18 libavformat/sbgdec.c | 2 +-
19 1 file changed, 1 insertion(+), 1 deletion(-)
20
21diff --git a/libavformat/sbgdec.c b/libavformat/sbgdec.c
22index b2662ea..281fe62 100644
23--- a/libavformat/sbgdec.c
24+++ b/libavformat/sbgdec.c
25@@ -386,7 +386,7 @@ static int parse_options(struct sbg_parser *p)
26 case 'L':
27 FORWARD_ERROR(parse_optarg(p, opt, &oarg));
28 r = str_to_time(oarg.s, &p->scs.opt_duration);
29- if (oarg.e != oarg.s + r) {
30+ if (oarg.e != oarg.s + r || p->scs.opt_duration < 0) {
31 snprintf(p->err_msg, sizeof(p->err_msg),
32 "syntax error for option -L");
33 return AVERROR_INVALIDDATA;
34--
352.40.0
diff --git a/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-36613.patch b/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-36613.patch
deleted file mode 100644
index 0061b7ad98..0000000000
--- a/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-36613.patch
+++ /dev/null
@@ -1,37 +0,0 @@
1From 50d8e4f27398fd5778485a827d7a2817921f8540 Mon Sep 17 00:00:00 2001
2From: Michael Niedermayer <michael@niedermayer.cc>
3Date: Sat, 30 Sep 2023 00:51:29 +0200
4Subject: [PATCH] avformat/dxa: Adjust order of operations around block align
5
6Fixes: 51896/clusterfuzz-testcase-minimized-ffmpeg_dem_DXA_fuzzer-5730576523198464
7Fixes: signed integer overflow: 2147483566 + 82 cannot be represented in type 'int'
8
9Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
10Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
11(cherry picked from commit 50d8e4f27398fd5778485a827d7a2817921f8540)
12Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
13
14CVE: CVE-2024-36613
15
16Upstream-Status: Backport [https://github.com/ffmpeg/ffmpeg/commit/50d8e4f27398fd5778485a827d7a2817921f8540]
17
18Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
19---
20 libavformat/dxa.c | 2 +-
21 1 file changed, 1 insertion(+), 1 deletion(-)
22
23diff --git a/libavformat/dxa.c b/libavformat/dxa.c
24index 474b852..b4d9d00 100644
25--- a/libavformat/dxa.c
26+++ b/libavformat/dxa.c
27@@ -122,7 +122,7 @@ static int dxa_read_header(AVFormatContext *s)
28 if(ast->codecpar->block_align) {
29 if (c->bpc > INT_MAX - ast->codecpar->block_align + 1)
30 return AVERROR_INVALIDDATA;
31- c->bpc = ((c->bpc + ast->codecpar->block_align - 1) / ast->codecpar->block_align) * ast->codecpar->block_align;
32+ c->bpc = ((c->bpc - 1 + ast->codecpar->block_align) / ast->codecpar->block_align) * ast->codecpar->block_align;
33 }
34 c->bytes_left = fsize;
35 c->wavpos = avio_tell(pb);
36--
372.40.0
diff --git a/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-36616.patch b/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-36616.patch
deleted file mode 100644
index 3f02c45b33..0000000000
--- a/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-36616.patch
+++ /dev/null
@@ -1,35 +0,0 @@
1From 86f73277bf014e2ce36dd2594f1e0fb8b3bd6661 Mon Sep 17 00:00:00 2001
2From: Michael Niedermayer <michael@niedermayer.cc>
3Date: Tue, 26 Mar 2024 01:00:13 +0100
4Subject: [PATCH] avformat/westwood_vqa: Fix 2g packets
5
6Fixes: signed integer overflow: 2147483424 * 2 cannot be represented in type 'int'
7Fixes: 62276/clusterfuzz-testcase-minimized-ffmpeg_dem_WSVQA_fuzzer-4576211411795968
8
9Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
10Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
11
12CVE: CVE-2024-36616
13
14Upstream-Status: Backport [https://github.com/ffmpeg/ffmpeg/commit/86f73277bf014e2ce36dd2594f1e0fb8b3bd6661]
15
16Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
17---
18 libavformat/westwood_vqa.c | 2 +-
19 1 file changed, 1 insertion(+), 1 deletion(-)
20
21diff --git a/libavformat/westwood_vqa.c b/libavformat/westwood_vqa.c
22index 03b2d9e..024f5d3 100644
23--- a/libavformat/westwood_vqa.c
24+++ b/libavformat/westwood_vqa.c
25@@ -262,7 +262,7 @@ static int wsvqa_read_packet(AVFormatContext *s,
26 break;
27 case SND2_TAG:
28 /* 2 samples/byte, 1 or 2 samples per frame depending on stereo */
29- pkt->duration = (chunk_size * 2) / wsvqa->channels;
30+ pkt->duration = (chunk_size * 2LL) / wsvqa->channels;
31 break;
32 }
33 break;
34--
352.40.0
diff --git a/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-36617.patch b/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-36617.patch
deleted file mode 100644
index 5d751213e3..0000000000
--- a/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-36617.patch
+++ /dev/null
@@ -1,36 +0,0 @@
1From d973fcbcc2f944752ff10e6a76b0b2d9329937a7 Mon Sep 17 00:00:00 2001
2From: Michael Niedermayer <michael@niedermayer.cc>
3Date: Sat, 30 Sep 2023 00:38:17 +0200
4Subject: [PATCH] avformat/cafdec: dont seek beyond 64bit
5
6Fixes: signed integer overflow: 64 + 9223372036854775807 cannot be represented in type 'long long'
7Fixes: 51896/clusterfuzz-testcase-minimized-ffmpeg_dem_CAF_fuzzer-6418242730328064
8Fixes: 62276/clusterfuzz-testcase-minimized-ffmpeg_dem_CAF_fuzzer-6418242730328064
9
10Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
11Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12
13CVE: CVE-2024-36617
14
15Upstream-Status: Backport [https://github.com/ffmpeg/ffmpeg/commit/d973fcbcc2f944752ff10e6a76b0b2d9329937a7]
16
17Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
18---
19 libavformat/cafdec.c | 2 +-
20 1 file changed, 1 insertion(+), 1 deletion(-)
21
22diff --git a/libavformat/cafdec.c b/libavformat/cafdec.c
23index f5ba0f4..e92e327 100644
24--- a/libavformat/cafdec.c
25+++ b/libavformat/cafdec.c
26@@ -271,7 +271,7 @@ static int read_pakt_chunk(AVFormatContext *s, int64_t size)
27 }
28 }
29
30- if (avio_tell(pb) - ccount > size) {
31+ if (avio_tell(pb) - ccount > size || size > INT64_MAX - ccount) {
32 av_log(s, AV_LOG_ERROR, "error reading packet table\n");
33 return AVERROR_INVALIDDATA;
34 }
35--
362.40.0
diff --git a/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-36619.patch b/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-36619.patch
deleted file mode 100644
index 63d08eabcc..0000000000
--- a/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-36619.patch
+++ /dev/null
@@ -1,36 +0,0 @@
1From 28c7094b25b689185155a6833caf2747b94774a4 Mon Sep 17 00:00:00 2001
2From: Michael Niedermayer <michael@niedermayer.cc>
3Date: Thu, 4 Apr 2024 00:15:27 +0200
4Subject: [PATCH] avcodec/wavarc: fix signed integer overflow in block type
5 6/19
6
7Fixes: signed integer overflow: -2088796289 + -91276551 cannot be represented in type 'int'
8Fixes: 67772/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_WAVARC_fuzzer-6533568953122816
9
10Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
11Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12
13CVE: CVE-2024-36619
14
15Upstream-Status: Backport [https://github.com/ffmpeg/ffmpeg/commit/28c7094b25b689185155a6833caf2747b94774a4]
16
17Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
18---
19 libavcodec/wavarc.c | 2 +-
20 1 file changed, 1 insertion(+), 1 deletion(-)
21
22diff --git a/libavcodec/wavarc.c b/libavcodec/wavarc.c
23index 09ed4d4..51d91a4 100644
24--- a/libavcodec/wavarc.c
25+++ b/libavcodec/wavarc.c
26@@ -648,7 +648,7 @@ static int decode_5elp(AVCodecContext *avctx,
27 for (int o = 0; o < order; o++)
28 sum += s->filter[ch][o] * (unsigned)samples[n + 70 - o - 1];
29
30- samples[n + 70] += ac_out[n] + (sum >> 4);
31+ samples[n + 70] += ac_out[n] + (unsigned)(sum >> 4);
32 }
33
34 for (int n = 0; n < 70; n++)
35--
362.40.0
diff --git a/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-7055.patch b/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-7055.patch
deleted file mode 100644
index afd857ceac..0000000000
--- a/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-7055.patch
+++ /dev/null
@@ -1,38 +0,0 @@
1From 587acd0d4020859e67d1f07aeff2c885797ebcce Mon Sep 17 00:00:00 2001
2From: Michael Niedermayer <michael@niedermayer.cc>
3Date: Thu, 18 Jul 2024 21:12:54 +0200
4Subject: [PATCH] avcodec/pnmdec: Use 64bit for input size check
5
6Fixes: out of array read
7Fixes: poc3
8
9Reported-by: VulDB CNA Team
10Found-by: CookedMelon
11Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12(cherry picked from commit 3faadbe2a27e74ff5bb5f7904ec27bb1f5287dc8)
13Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
14
15CVE: CVE-2024-7055
16
17Upstream-Status: Backport [https://git.videolan.org/?p=ffmpeg.git;a=commitdiff;h=587acd0d4020859e67d1f07aeff2c885797ebcce]
18
19Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
20---
21 libavcodec/pnmdec.c | 2 +-
22 1 file changed, 1 insertion(+), 1 deletion(-)
23
24diff --git a/libavcodec/pnmdec.c b/libavcodec/pnmdec.c
25index acd77ea..40cc2ae 100644
26--- a/libavcodec/pnmdec.c
27+++ b/libavcodec/pnmdec.c
28@@ -264,7 +264,7 @@ static int pnm_decode_frame(AVCodecContext *avctx, AVFrame *p,
29 break;
30 case AV_PIX_FMT_GBRPF32:
31 if (!s->half) {
32- if (avctx->width * avctx->height * 12 > s->bytestream_end - s->bytestream)
33+ if (avctx->width * avctx->height * 12LL > s->bytestream_end - s->bytestream)
34 return AVERROR_INVALIDDATA;
35 scale = 1.f / s->scale;
36 if (s->endian) {
37--
382.40.0
diff --git a/meta/recipes-multimedia/ffmpeg/ffmpeg/vulkan_av1_stable_API.patch b/meta/recipes-multimedia/ffmpeg/ffmpeg/vulkan_av1_stable_API.patch
index 74db148b3b..be6c6b7416 100644
--- a/meta/recipes-multimedia/ffmpeg/ffmpeg/vulkan_av1_stable_API.patch
+++ b/meta/recipes-multimedia/ffmpeg/ffmpeg/vulkan_av1_stable_API.patch
@@ -6,6 +6,9 @@ Subject: [PATCH] vulkan_av1: port to the new stable API
6Co-Authored-by: Dave Airlie <airlied@redhat.com> 6Co-Authored-by: Dave Airlie <airlied@redhat.com>
7Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> 7Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
8Upstream-Status: Backport [https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/ecdc94b97f809d5f2b88640842fd0541951ad295] 8Upstream-Status: Backport [https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/ecdc94b97f809d5f2b88640842fd0541951ad295]
9
10Comment: Patch is refreshed as per codebase of 6.1.2
11Signed-off-by: Divyanshu Rathore <divyanshu.rathore@kpit.com>
9--- 12---
10 configure | 4 +- 13 configure | 4 +-
11 libavcodec/Makefile | 5 +- 14 libavcodec/Makefile | 5 +-
@@ -26,7 +29,7 @@ diff --git a/configure b/configure
26index e853deb51d..9fa639fca6 100755 29index e853deb51d..9fa639fca6 100755
27--- a/configure 30--- a/configure
28+++ b/configure 31+++ b/configure
29@@ -7300,8 +7300,8 @@ enabled vdpau && 32@@ -7160,8 +7160,8 @@ enabled crystalhd && check_lib crystalhd
30 "in maintaining it." 33 "in maintaining it."
31 34
32 if enabled vulkan; then 35 if enabled vulkan; then
@@ -41,21 +44,19 @@ diff --git a/libavcodec/Makefile b/libavcodec/Makefile
41index 7ef2e03ca6..9ce6d445c1 100644 44index 7ef2e03ca6..9ce6d445c1 100644
42--- a/libavcodec/Makefile 45--- a/libavcodec/Makefile
43+++ b/libavcodec/Makefile 46+++ b/libavcodec/Makefile
44@@ -1258,8 +1258,7 @@ SKIPHEADERS += %_tablegen.h \ 47@@ -1284,7 +1284,6 @@ SKIPHEADERS +
45 aacenc_quantization.h \ 48 aacenc_quantization.h \
46 aacenc_quantization_misc.h \ 49 aacenc_quantization_misc.h \
47 bitstream_template.h \ 50 bitstream_template.h \
48- vulkan_video_codec_av1std.h \ 51- vulkan_video_codec_av1std_mesa.h \
49- $(ARCH)/vpx_arith.h \ 52 $(ARCH)/vpx_arith.h \
50+ $(ARCH)/vpx_arith.h \
51 53
52 SKIPHEADERS-$(CONFIG_AMF) += amfenc.h 54 SKIPHEADERS-$(CONFIG_AMF) += amfenc.h
53 SKIPHEADERS-$(CONFIG_D3D11VA) += d3d11va.h dxva2_internal.h 55@@ -1306,7 +1305,7 @@ SKIPHEADERS-$(CONFIG_XVMC) +
54@@ -1280,7 +1279,7 @@ SKIPHEADERS-$(CONFIG_QSVENC) += qsvenc.h
55 SKIPHEADERS-$(CONFIG_VAAPI) += vaapi_decode.h vaapi_hevc.h vaapi_encode.h 56 SKIPHEADERS-$(CONFIG_VAAPI) += vaapi_decode.h vaapi_hevc.h vaapi_encode.h
56 SKIPHEADERS-$(CONFIG_VDPAU) += vdpau.h vdpau_internal.h 57 SKIPHEADERS-$(CONFIG_VDPAU) += vdpau.h vdpau_internal.h
57 SKIPHEADERS-$(CONFIG_VIDEOTOOLBOX) += videotoolbox.h vt_internal.h 58 SKIPHEADERS-$(CONFIG_VIDEOTOOLBOX) += videotoolbox.h vt_internal.h
58-SKIPHEADERS-$(CONFIG_VULKAN) += vulkan.h vulkan_video.h vulkan_decode.h vulkan_video_codec_av1std_decode.h 59-SKIPHEADERS-$(CONFIG_VULKAN) += vulkan.h vulkan_video.h vulkan_decode.h vulkan_video_codec_av1std_decode_mesa.h
59+SKIPHEADERS-$(CONFIG_VULKAN) += vulkan.h vulkan_video.h vulkan_decode.h 60+SKIPHEADERS-$(CONFIG_VULKAN) += vulkan.h vulkan_video.h vulkan_decode.h
60 SKIPHEADERS-$(CONFIG_V4L2_M2M) += v4l2_buffers.h v4l2_context.h v4l2_m2m.h 61 SKIPHEADERS-$(CONFIG_V4L2_M2M) += v4l2_buffers.h v4l2_context.h v4l2_m2m.h
61 SKIPHEADERS-$(CONFIG_ZLIB) += zlib_wrapper.h 62 SKIPHEADERS-$(CONFIG_ZLIB) += zlib_wrapper.h
@@ -866,19 +867,19 @@ diff --git a/libavcodec/vulkan_video.h b/libavcodec/vulkan_video.h
866index bb69e920bb..01a1de7d9d 100644 867index bb69e920bb..01a1de7d9d 100644
867--- a/libavcodec/vulkan_video.h 868--- a/libavcodec/vulkan_video.h
868+++ b/libavcodec/vulkan_video.h 869+++ b/libavcodec/vulkan_video.h
869@@ -22,8 +22,6 @@ 870@@ -23,8 +23,6 @@
870 #include "vulkan.h" 871 #include "vulkan.h"
871 872
872 #include <vk_video/vulkan_video_codecs_common.h> 873 #include <vk_video/vulkan_video_codecs_common.h>
873-#include "vulkan_video_codec_av1std.h" 874-#include "vulkan_video_codec_av1std_mesa.h"
874-#include "vulkan_video_codec_av1std_decode.h" 875-#include "vulkan_video_codec_av1std_decode_mesa.h"
875 876
876 #define CODEC_VER_MAJ(ver) (ver >> 22) 877 #define CODEC_VER_MAJ(ver) (ver >> 22)
877 #define CODEC_VER_MIN(ver) ((ver >> 12) & ((1 << 10) - 1)) 878 #define CODEC_VER_MIN(ver) ((ver >> 12) & ((1 << 10) - 1))
878diff --git a/libavcodec/vulkan_video_codec_av1std_decode.h b/libavcodec/vulkan_video_codec_av1std_decode.h 879diff --git a/libavcodec/vulkan_video_codec_av1std_decode_mesa.h b/libavcodec/vulkan_video_codec_av1std_decode_mesa.h
879deleted file mode 100644 880deleted file mode 100644
880index e2f37b4e6e..0000000000 881index e2f37b4e6e..0000000000
881--- a/libavcodec/vulkan_video_codec_av1std_decode.h 882--- a/libavcodec/vulkan_video_codec_av1std_decode_mesa.h
882+++ /dev/null 883+++ /dev/null
883@@ -1,36 +0,0 @@ 884@@ -1,36 +0,0 @@
884-/* Copyright 2023 Lynne 885-/* Copyright 2023 Lynne
@@ -897,8 +898,8 @@ index e2f37b4e6e..0000000000
897- * limitations under the License. 898- * limitations under the License.
898- */ 899- */
899- 900-
900-#ifndef VULKAN_VIDEO_CODEC_AV1STD_DECODE_H_ 901-#ifndef VULKAN_VIDEO_CODEC_AV1STD_DECODE_MESA_H_
901-#define VULKAN_VIDEO_CODEC_AV1STD_DECODE_H_ 1 902-#define VULKAN_VIDEO_CODEC_AV1STD_DECODE_MESA_H_ 1
902- 903-
903-/* 904-/*
904-** This header is NOT YET generated from the Khronos Vulkan XML API Registry. 905-** This header is NOT YET generated from the Khronos Vulkan XML API Registry.
@@ -917,10 +918,10 @@ index e2f37b4e6e..0000000000
917-#endif 918-#endif
918- 919-
919-#endif 920-#endif
920diff --git a/libavcodec/vulkan_video_codec_av1std.h b/libavcodec/vulkan_video_codec_av1std.h 921diff --git a/libavcodec/vulkan_video_codec_av1std_mesa.h b/libavcodec/vulkan_video_codec_av1std_mesa.h
921deleted file mode 100644 922deleted file mode 100644
922index c91589eee2..0000000000 923index c91589eee2..0000000000
923--- a/libavcodec/vulkan_video_codec_av1std.h 924--- a/libavcodec/vulkan_video_codec_av1std_mesa.h
924+++ /dev/null 925+++ /dev/null
925@@ -1,403 +0,0 @@ 926@@ -1,403 +0,0 @@
926-/* Copyright 2023 Lynne 927-/* Copyright 2023 Lynne
@@ -939,8 +940,8 @@ index c91589eee2..0000000000
939- * limitations under the License. 940- * limitations under the License.
940- */ 941- */
941- 942-
942-#ifndef VULKAN_VIDEO_CODEC_AV1STD_H_ 943-#ifndef VULKAN_VIDEO_CODEC_AV1STD_MESA_H_
943-#define VULKAN_VIDEO_CODEC_AV1STD_H_ 1 944-#define VULKAN_VIDEO_CODEC_AV1STD_MESA_H_ 1
944- 945-
945-/* 946-/*
946-** This header is NOT YET generated from the Khronos Vulkan XML API Registry. 947-** This header is NOT YET generated from the Khronos Vulkan XML API Registry.
@@ -1379,4 +1380,3 @@ diff --git a/libavcodec/vulkan_video.c b/libavcodec/vulkan_video.c
1379 1380
1380-- 1381--
13812.25.1 13822.25.1
1382
diff --git a/meta/recipes-multimedia/ffmpeg/ffmpeg_6.1.1.bb b/meta/recipes-multimedia/ffmpeg/ffmpeg_6.1.2.bb
index 3d766c3fc7..a789980dde 100644
--- a/meta/recipes-multimedia/ffmpeg/ffmpeg_6.1.1.bb
+++ b/meta/recipes-multimedia/ffmpeg/ffmpeg_6.1.2.bb
@@ -31,21 +31,14 @@ SRC_URI = " \
31 file://CVE-2024-31578.patch \ 31 file://CVE-2024-31578.patch \
32 file://CVE-2024-31582.patch \ 32 file://CVE-2024-31582.patch \
33 file://CVE-2023-50008.patch \ 33 file://CVE-2023-50008.patch \
34 file://CVE-2024-32230.patch \
35 file://CVE-2023-49501.patch \ 34 file://CVE-2023-49501.patch \
36 file://CVE-2024-28661.patch \ 35 file://CVE-2024-28661.patch \
37 file://CVE-2023-50007.patch \ 36 file://CVE-2023-50007.patch \
38 file://CVE-2023-49528.patch \ 37 file://CVE-2023-49528.patch \
39 file://CVE-2024-7055.patch \
40 file://CVE-2024-35366.patch \
41 file://CVE-2024-35367.patch \ 38 file://CVE-2024-35367.patch \
42 file://CVE-2024-35368.patch \ 39 file://CVE-2024-35368.patch \
43 file://CVE-2024-35365.patch \ 40 file://CVE-2024-35365.patch \
44 file://CVE-2024-36613.patch \
45 file://CVE-2024-36616.patch \
46 file://CVE-2024-36617.patch \
47 file://CVE-2024-36618.patch \ 41 file://CVE-2024-36618.patch \
48 file://CVE-2024-36619.patch \
49 file://CVE-2024-35369.patch \ 42 file://CVE-2024-35369.patch \
50 file://CVE-2025-25473.patch \ 43 file://CVE-2025-25473.patch \
51 file://CVE-2025-22919.patch \ 44 file://CVE-2025-22919.patch \
@@ -53,7 +46,7 @@ SRC_URI = " \
53 file://CVE-2025-0518.patch \ 46 file://CVE-2025-0518.patch \
54" 47"
55 48
56SRC_URI[sha256sum] = "8684f4b00f94b85461884c3719382f1261f0d9eb3d59640a1f4ac0873616f968" 49SRC_URI[sha256sum] = "3b624649725ecdc565c903ca6643d41f33bd49239922e45c9b1442c63dca4e38"
57 50
58# https://nvd.nist.gov/vuln/detail/CVE-2023-39018 51# https://nvd.nist.gov/vuln/detail/CVE-2023-39018
59# https://github.com/bramp/ffmpeg-cli-wrapper/issues/291 52# https://github.com/bramp/ffmpeg-cli-wrapper/issues/291
@@ -62,6 +55,10 @@ SRC_URI[sha256sum] = "8684f4b00f94b85461884c3719382f1261f0d9eb3d59640a1f4ac08736
62CVE_STATUS[CVE-2023-39018] = "cpe-incorrect: This issue belongs to ffmpeg-cli-wrapper \ 55CVE_STATUS[CVE-2023-39018] = "cpe-incorrect: This issue belongs to ffmpeg-cli-wrapper \
63(Java wrapper around the FFmpeg CLI) and not ffmepg itself." 56(Java wrapper around the FFmpeg CLI) and not ffmepg itself."
64 57
58# Introduced: https://git.ffmpeg.org/gitweb/ffmpeg.git/commit/19f7dae81ab2c19643b97da7556383ee3f721e78
59# Fixed: https://git.ffmpeg.org/gitweb/ffmpeg.git/commit/43be8d07281caca2e88bfd8ee2333633e1fb1a13
60CVE_STATUS[CVE-2025-1373] = "fixed-version: Vulnerable code not present in any release"
61
65# Build fails when thumb is enabled: https://bugzilla.yoctoproject.org/show_bug.cgi?id=7717 62# Build fails when thumb is enabled: https://bugzilla.yoctoproject.org/show_bug.cgi?id=7717
66ARM_INSTRUCTION_SET:armv4 = "arm" 63ARM_INSTRUCTION_SET:armv4 = "arm"
67ARM_INSTRUCTION_SET:armv5 = "arm" 64ARM_INSTRUCTION_SET:armv5 = "arm"
diff --git a/meta/recipes-multimedia/libpng/files/run-ptest b/meta/recipes-multimedia/libpng/files/run-ptest
new file mode 100644
index 0000000000..85051a59f5
--- /dev/null
+++ b/meta/recipes-multimedia/libpng/files/run-ptest
@@ -0,0 +1,7 @@
1#!/bin/sh
2
3set -eux
4
5cd src
6
7make check-TESTS
diff --git a/meta/recipes-multimedia/libpng/libpng_1.6.42.bb b/meta/recipes-multimedia/libpng/libpng_1.6.42.bb
index 673133bb4a..4c21e8d597 100644
--- a/meta/recipes-multimedia/libpng/libpng_1.6.42.bb
+++ b/meta/recipes-multimedia/libpng/libpng_1.6.42.bb
@@ -10,7 +10,10 @@ DEPENDS = "zlib"
10 10
11LIBV = "16" 11LIBV = "16"
12 12
13SRC_URI = "${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}${LIBV}/${PV}/${BP}.tar.xz" 13SRC_URI = "${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}${LIBV}/${PV}/${BP}.tar.xz \
14 file://run-ptest \
15"
16
14SRC_URI[sha256sum] = "c919dbc11f4c03b05aba3f8884d8eb7adfe3572ad228af972bb60057bdb48450" 17SRC_URI[sha256sum] = "c919dbc11f4c03b05aba3f8884d8eb7adfe3572ad228af972bb60057bdb48450"
15 18
16MIRRORS += "${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}${LIBV}/ ${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}${LIBV}/older-releases/" 19MIRRORS += "${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}${LIBV}/ ${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}${LIBV}/older-releases/"
@@ -19,7 +22,7 @@ UPSTREAM_CHECK_URI = "http://libpng.org/pub/png/libpng.html"
19 22
20BINCONFIG = "${bindir}/libpng-config ${bindir}/libpng16-config" 23BINCONFIG = "${bindir}/libpng-config ${bindir}/libpng16-config"
21 24
22inherit autotools binconfig-disabled pkgconfig 25inherit autotools binconfig-disabled pkgconfig ptest
23 26
24# Work around missing symbols 27# Work around missing symbols
25ARMNEON = "${@bb.utils.contains("TUNE_FEATURES", "neon", "--enable-arm-neon=on", "--enable-arm-neon=off", d)}" 28ARMNEON = "${@bb.utils.contains("TUNE_FEATURES", "neon", "--enable-arm-neon=on", "--enable-arm-neon=off", d)}"
@@ -30,4 +33,39 @@ PACKAGES =+ "${PN}-tools"
30 33
31FILES:${PN}-tools = "${bindir}/png-fix-itxt ${bindir}/pngfix ${bindir}/pngcp" 34FILES:${PN}-tools = "${bindir}/png-fix-itxt ${bindir}/pngfix ${bindir}/pngcp"
32 35
36RDEPENDS:${PN}-ptest += "make bash gawk"
37
38do_install_ptest() {
39 # Install test scripts to ptest path
40 install -d ${D}${PTEST_PATH}/src/tests
41 install -m 755 ${S}/tests/* ${D}${PTEST_PATH}/src/tests
42 install -m 755 ${S}/test-driver ${D}${PTEST_PATH}/src
43 install -d ${D}${PTEST_PATH}/src/tests/scripts
44 install -m 755 ${S}/scripts/*.awk ${D}${PTEST_PATH}/src/tests/scripts
45 install -m 644 ${S}/scripts/pnglib* ${S}/scripts/*.c ${S}/scripts/*.def ${S}/scripts/macro.lst ${D}${PTEST_PATH}/src/tests/scripts
46 install -m 644 ${S}/scripts/pnglibconf.h.prebuilt ${D}${PTEST_PATH}/src/tests/scripts/pnglibconf.h
47 install -d ${D}${PTEST_PATH}/src/contrib/tools
48 install -m 755 ${S}/contrib/tools/*.sh ${D}${PTEST_PATH}/src/contrib/tools
49 install -m 644 ${S}/contrib/tools/*.c ${S}/contrib/tools/*.h ${D}${PTEST_PATH}/src/contrib/tools
50
51 # Install .libs directory binaries to ptest path
52 install -m 755 ${B}/.libs/pngtest ${B}/.libs/pngstest ${B}/.libs/pngimage ${B}/.libs/pngunknown ${B}/.libs/pngvalid ${D}${PTEST_PATH}/src
53
54 # Copy png files to ptest path
55 cd ${S} && find contrib -name '*.png' | cpio -pd ${D}${PTEST_PATH}/src
56
57 # Install Makefile and png files
58 install -m 644 ${S}/pngtest.png ${D}${PTEST_PATH}/src
59 install -m 644 ${S}/*.png ${S}/*.h ${S}/*.c ${S}/*.dfa ${B}/pnglibconf.out ${S}/Makefile.am ${S}/Makefile.in ${D}${PTEST_PATH}/src/tests
60
61 sed -e 's/^abs_srcdir = ..*/abs_srcdir = \.\./' \
62 -e 's/^top_srcdir = ..*/top_srcdir = \.\./' \
63 -e 's/^srcdir = ..*/srcdir = \./' \
64 -e 's/^Makefile: ..*/Makefile: /' \
65 -e 's/check-TESTS: $(check_PROGRAMS)/check-TESTS:/g' \
66 ${B}/Makefile > ${D}${PTEST_PATH}/src/Makefile
67
68 sed -e 's|#!/bin/awk|#!/usr/bin/awk|g' -i ${D}${PTEST_PATH}/src/tests/scripts/*.awk
69}
70
33BBCLASSEXTEND = "native nativesdk" 71BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/libatomic-ops/libatomic-ops_7.8.2.bb b/meta/recipes-support/libatomic-ops/libatomic-ops_7.8.2.bb
index 824400e743..6269133408 100644
--- a/meta/recipes-support/libatomic-ops/libatomic-ops_7.8.2.bb
+++ b/meta/recipes-support/libatomic-ops/libatomic-ops_7.8.2.bb
@@ -1,6 +1,6 @@
1SUMMARY = "A library for atomic integer operations" 1SUMMARY = "A library for atomic integer operations"
2DESCRIPTION = "Package provides semi-portable access to hardware-provided atomic memory update operations on a number of architectures." 2DESCRIPTION = "Package provides semi-portable access to hardware-provided atomic memory update operations on a number of architectures."
3HOMEPAGE = "https://github.com/ivmai/libatomic_ops/" 3HOMEPAGE = "https://github.com/bdwgc/libatomic_ops/"
4SECTION = "optional" 4SECTION = "optional"
5PROVIDES += "libatomics-ops" 5PROVIDES += "libatomics-ops"
6LICENSE = "GPL-2.0-only & MIT" 6LICENSE = "GPL-2.0-only & MIT"
@@ -9,7 +9,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
9 " 9 "
10 10
11SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/libatomic_ops-${PV}.tar.gz" 11SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/libatomic_ops-${PV}.tar.gz"
12GITHUB_BASE_URI = "https://github.com/ivmai/libatomic_ops/releases" 12GITHUB_BASE_URI = "https://github.com/bdwgc/libatomic_ops/releases"
13 13
14SRC_URI[sha256sum] = "d305207fe207f2b3fb5cb4c019da12b44ce3fcbc593dfd5080d867b1a2419b51" 14SRC_URI[sha256sum] = "d305207fe207f2b3fb5cb4c019da12b44ce3fcbc593dfd5080d867b1a2419b51"
15 15
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52530.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52530.patch
new file mode 100644
index 0000000000..bd62a748eb
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52530.patch
@@ -0,0 +1,149 @@
1From 04df03bc092ac20607f3e150936624d4f536e68b Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Mon, 8 Jul 2024 12:33:15 -0500
4Subject: [PATCH] headers: Strictly don't allow NUL bytes
5
6In the past (2015) this was allowed for some problematic sites. However Chromium also does not allow NUL bytes in either header names or values these days. So this should no longer be a problem.
7
8Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/04df03bc092ac20607f3e150936624d4f536e68b]
9CVE: CVE-2024-52530
10Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
11---
12 libsoup/soup-headers.c | 15 +++------
13 tests/header-parsing-test.c | 62 +++++++++++++++++--------------------
14 2 files changed, 32 insertions(+), 45 deletions(-)
15
16diff --git a/libsoup/soup-headers.c b/libsoup/soup-headers.c
17index a0cf351ac..f30ee467a 100644
18--- a/libsoup/soup-headers.c
19+++ b/libsoup/soup-headers.c
20@@ -51,13 +51,14 @@ soup_headers_parse (const char *str, int len, SoupMessageHeaders *dest)
21 * ignorable trailing whitespace.
22 */
23
24+ /* No '\0's are allowed */
25+ if (memchr (str, '\0', len))
26+ return FALSE;
27+
28 /* Skip over the Request-Line / Status-Line */
29 headers_start = memchr (str, '\n', len);
30 if (!headers_start)
31 return FALSE;
32- /* No '\0's in the Request-Line / Status-Line */
33- if (memchr (str, '\0', headers_start - str))
34- return FALSE;
35
36 /* We work on a copy of the headers, which we can write '\0's
37 * into, so that we don't have to individually g_strndup and
38@@ -69,14 +70,6 @@ soup_headers_parse (const char *str, int len, SoupMessageHeaders *dest)
39 headers_copy[copy_len] = '\0';
40 value_end = headers_copy;
41
42- /* There shouldn't be any '\0's in the headers already, but
43- * this is the web we're talking about.
44- */
45- while ((p = memchr (headers_copy, '\0', copy_len))) {
46- memmove (p, p + 1, copy_len - (p - headers_copy));
47- copy_len--;
48- }
49-
50 while (*(value_end + 1)) {
51 name = value_end + 1;
52 name_end = strchr (name, ':');
53diff --git a/tests/header-parsing-test.c b/tests/header-parsing-test.c
54index edf8eebb3..715c2c6f2 100644
55--- a/tests/header-parsing-test.c
56+++ b/tests/header-parsing-test.c
57@@ -358,24 +358,6 @@ static struct RequestTest {
58 }
59 },
60
61- { "NUL in header name", "760832",
62- "GET / HTTP/1.1\r\nHost\x00: example.com\r\n", 36,
63- SOUP_STATUS_OK,
64- "GET", "/", SOUP_HTTP_1_1,
65- { { "Host", "example.com" },
66- { NULL }
67- }
68- },
69-
70- { "NUL in header value", "760832",
71- "GET / HTTP/1.1\r\nHost: example\x00" "com\r\n", 35,
72- SOUP_STATUS_OK,
73- "GET", "/", SOUP_HTTP_1_1,
74- { { "Host", "examplecom" },
75- { NULL }
76- }
77- },
78-
79 /************************/
80 /*** INVALID REQUESTS ***/
81 /************************/
82@@ -448,6 +430,21 @@ static struct RequestTest {
83 SOUP_STATUS_EXPECTATION_FAILED,
84 NULL, NULL, -1,
85 { { NULL } }
86+ },
87+
88+ // https://gitlab.gnome.org/GNOME/libsoup/-/issues/377
89+ { "NUL in header name", NULL,
90+ "GET / HTTP/1.1\r\nHost\x00: example.com\r\n", 36,
91+ SOUP_STATUS_BAD_REQUEST,
92+ NULL, NULL, -1,
93+ { { NULL } }
94+ },
95+
96+ { "NUL in header value", NULL,
97+ "HTTP/1.1 200 OK\r\nFoo: b\x00" "ar\r\n", 28,
98+ SOUP_STATUS_BAD_REQUEST,
99+ NULL, NULL, -1,
100+ { { NULL } }
101 }
102 };
103 static const int num_reqtests = G_N_ELEMENTS (reqtests);
104@@ -620,22 +617,6 @@ static struct ResponseTest {
105 { NULL } }
106 },
107
108- { "NUL in header name", "760832",
109- "HTTP/1.1 200 OK\r\nF\x00oo: bar\r\n", 28,
110- SOUP_HTTP_1_1, SOUP_STATUS_OK, "OK",
111- { { "Foo", "bar" },
112- { NULL }
113- }
114- },
115-
116- { "NUL in header value", "760832",
117- "HTTP/1.1 200 OK\r\nFoo: b\x00" "ar\r\n", 28,
118- SOUP_HTTP_1_1, SOUP_STATUS_OK, "OK",
119- { { "Foo", "bar" },
120- { NULL }
121- }
122- },
123-
124 /********************************/
125 /*** VALID CONTINUE RESPONSES ***/
126 /********************************/
127@@ -768,6 +749,19 @@ static struct ResponseTest {
128 { { NULL }
129 }
130 },
131+
132+ // https://gitlab.gnome.org/GNOME/libsoup/-/issues/377
133+ { "NUL in header name", NULL,
134+ "HTTP/1.1 200 OK\r\nF\x00oo: bar\r\n", 28,
135+ -1, 0, NULL,
136+ { { NULL } }
137+ },
138+
139+ { "NUL in header value", "760832",
140+ "HTTP/1.1 200 OK\r\nFoo: b\x00" "ar\r\n", 28,
141+ -1, 0, NULL,
142+ { { NULL } }
143+ },
144 };
145 static const int num_resptests = G_N_ELEMENTS (resptests);
146
147--
148GitLab
149
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52531-1.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52531-1.patch
new file mode 100644
index 0000000000..d56ad0ff5e
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52531-1.patch
@@ -0,0 +1,131 @@
1From a35222dd0bfab2ac97c10e86b95f762456628283 Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Tue, 27 Aug 2024 13:53:26 -0500
4Subject: [PATCH 1/2] headers: Be more robust against invalid input when
5 parsing params
6
7If you pass invalid input to a function such as soup_header_parse_param_list_strict()
8it can cause an overflow if it decodes the input to UTF-8.
9
10This should never happen with valid UTF-8 input which libsoup's client API
11ensures, however it's server API does not currently.
12
13Upstream-Status: Backport [import from ubuntu https://git.launchpad.net/ubuntu/+source/libsoup2.4/tree/debian/patches/CVE-2024-52531-1.patch?h=ubuntu/jammy-security
14Upstream commit https://gitlab.gnome.org/GNOME/libsoup/-/commit/a35222dd0bfab2ac97c10e86b95f762456628283]
15CVE: CVE-2024-52531
16Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
17---
18 libsoup/soup-headers.c | 46 ++++++++++++++++++++++--------------------
19 1 file changed, 24 insertions(+), 22 deletions(-)
20
21Index: libsoup2.4-2.74.2/libsoup/soup-headers.c
22===================================================================
23--- libsoup2.4-2.74.2.orig/libsoup/soup-headers.c
24+++ libsoup2.4-2.74.2/libsoup/soup-headers.c
25@@ -643,8 +643,9 @@ soup_header_contains (const char *header
26 }
27
28 static void
29-decode_quoted_string (char *quoted_string)
30+decode_quoted_string_inplace (GString *quoted_gstring)
31 {
32+ char *quoted_string = quoted_gstring->str;
33 char *src, *dst;
34
35 src = quoted_string + 1;
36@@ -658,10 +659,11 @@ decode_quoted_string (char *quoted_strin
37 }
38
39 static gboolean
40-decode_rfc5987 (char *encoded_string)
41+decode_rfc5987_inplace (GString *encoded_gstring)
42 {
43 char *q, *decoded;
44 gboolean iso_8859_1 = FALSE;
45+ const char *encoded_string = encoded_gstring->str;
46
47 q = strchr (encoded_string, '\'');
48 if (!q)
49@@ -690,14 +692,7 @@ decode_rfc5987 (char *encoded_string)
50 decoded = utf8;
51 }
52
53- /* If encoded_string was UTF-8, then each 3-character %-escape
54- * will be converted to a single byte, and so decoded is
55- * shorter than encoded_string. If encoded_string was
56- * iso-8859-1, then each 3-character %-escape will be
57- * converted into at most 2 bytes in UTF-8, and so it's still
58- * shorter.
59- */
60- strcpy (encoded_string, decoded);
61+ g_string_assign (encoded_gstring, decoded);
62 g_free (decoded);
63 return TRUE;
64 }
65@@ -707,15 +702,17 @@ parse_param_list (const char *header, ch
66 {
67 GHashTable *params;
68 GSList *list, *iter;
69- char *item, *eq, *name_end, *value;
70- gboolean override, duplicated;
71
72 params = g_hash_table_new_full (soup_str_case_hash,
73 soup_str_case_equal,
74- g_free, NULL);
75+ g_free, g_free);
76
77 list = parse_list (header, delim);
78 for (iter = list; iter; iter = iter->next) {
79+ char *item, *eq, *name_end;
80+ gboolean override, duplicated;
81+ GString *parsed_value = NULL;
82+
83 item = iter->data;
84 override = FALSE;
85
86@@ -730,19 +727,19 @@ parse_param_list (const char *header, ch
87
88 *name_end = '\0';
89
90- value = (char *)skip_lws (eq + 1);
91+ parsed_value = g_string_new ((char *)skip_lws (eq + 1));
92
93 if (name_end[-1] == '*' && name_end > item + 1) {
94 name_end[-1] = '\0';
95- if (!decode_rfc5987 (value)) {
96+ if (!decode_rfc5987_inplace (parsed_value)) {
97+ g_string_free (parsed_value, TRUE);
98 g_free (item);
99 continue;
100 }
101 override = TRUE;
102- } else if (*value == '"')
103- decode_quoted_string (value);
104- } else
105- value = NULL;
106+ } else if (parsed_value->str[0] == '"')
107+ decode_quoted_string_inplace (parsed_value);
108+ }
109
110 duplicated = g_hash_table_lookup_extended (params, item, NULL, NULL);
111
112@@ -750,11 +747,16 @@ parse_param_list (const char *header, ch
113 soup_header_free_param_list (params);
114 params = NULL;
115 g_slist_foreach (iter, (GFunc)g_free, NULL);
116+ if (parsed_value)
117+ g_string_free (parsed_value, TRUE);
118 break;
119- } else if (override || !duplicated)
120- g_hash_table_replace (params, item, value);
121- else
122+ } else if (override || !duplicated) {
123+ g_hash_table_replace (params, item, parsed_value ? g_string_free (parsed_value, FALSE) : NULL);
124+ } else {
125+ if (parsed_value)
126+ g_string_free (parsed_value, TRUE);
127 g_free (item);
128+ }
129 }
130
131 g_slist_free (list);
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52531-2.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52531-2.patch
new file mode 100644
index 0000000000..19b1872866
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52531-2.patch
@@ -0,0 +1,36 @@
1From 825fda3425546847b42ad5270544e9388ff349fe Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Tue, 27 Aug 2024 13:52:08 -0500
4Subject: [PATCH 2/2] tests: Add test for passing invalid UTF-8 to
5 soup_header_parse_semi_param_list()
6
7Upstream-Status: Backport [import from ubuntu https://git.launchpad.net/ubuntu/+source/libsoup2.4/tree/debian/patches/CVE-2024-52531-2.patch?h=ubuntu/jammy-security
8Upstream commit https://gitlab.gnome.org/GNOME/libsoup/-/commit/825fda3425546847b42ad5270544e9388ff349fe]
9CVE: CVE-2024-52531
10Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
11---
12 tests/header-parsing-test.c | 11 +++++++++++
13 1 file changed, 11 insertions(+)
14
15Index: libsoup2.4-2.74.2/tests/header-parsing-test.c
16===================================================================
17--- libsoup2.4-2.74.2.orig/tests/header-parsing-test.c
18+++ libsoup2.4-2.74.2/tests/header-parsing-test.c
19@@ -825,6 +825,17 @@ static struct ParamListTest {
20 { "filename", "t\xC3\xA9st.txt" },
21 },
22 },
23+
24+ /* This tests invalid UTF-8 data which *should* never be passed here but it was designed to be robust against it. */
25+ { TRUE,
26+ "invalid*=\x69\x27\x27\x93\x93\x93\x93\xff\x61\x61\x61\x61\x61\x61\x61\x62\x63\x64\x65\x0a; filename*=iso-8859-1''\x69\x27\x27\x93\x93\x93\x93\xff\x61\x61\x61\x61\x61\x61\x61\x62\x63\x64\x65\x0a; foo",
27+ {
28+ { "filename", "i''\302\223\302\223\302\223\302\223\303\277aaaaaaabcde" },
29+ { "invalid", "\302\223\302\223\302\223\302\223\303\277aaaaaaabcde" },
30+ { "foo", NULL },
31+
32+ },
33+ }
34 };
35 static const int num_paramlisttests = G_N_ELEMENTS (paramlisttests);
36
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52532-1.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52532-1.patch
new file mode 100644
index 0000000000..68eb942762
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52532-1.patch
@@ -0,0 +1,36 @@
1From 6adc0e3eb74c257ed4e2a23eb4b2774fdb0d67be Mon Sep 17 00:00:00 2001
2From: Ignacio Casal Quinteiro <qignacio@amazon.com>
3Date: Wed, 11 Sep 2024 11:52:11 +0200
4Subject: [PATCH] websocket: process the frame as soon as we read data
5
6Otherwise we can enter in a read loop because we were not
7validating the data until the all the data was read.
8
9Fixes #391
10
11Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/6adc0e3eb74c257ed4e2a23eb4b2774fdb0d67be]
12CVE: CVE-2024-52532
13Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
14---
15 libsoup/soup-websocket-connection.c | 4 ++--
16 1 file changed, 2 insertions(+), 2 deletions(-)
17
18diff --git a/libsoup/soup-websocket-connection.c b/libsoup/soup-websocket-connection.c
19index a4095e1..9d5f4f8 100644
20--- a/libsoup/soup-websocket-connection.c
21+++ b/libsoup/soup-websocket-connection.c
22@@ -1140,9 +1140,9 @@ soup_websocket_connection_read (SoupWebsocketConnection *self)
23 }
24
25 pv->incoming->len = len + count;
26- } while (count > 0);
27
28- process_incoming (self);
29+ process_incoming (self);
30+ } while (count > 0 && !pv->close_sent && !pv->io_closing);
31
32 if (end) {
33 if (!pv->close_sent || !pv->close_received) {
34--
352.25.1
36
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52532-2.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52532-2.patch
new file mode 100644
index 0000000000..e4e2d03d58
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52532-2.patch
@@ -0,0 +1,42 @@
1From 29b96fab2512666d7241e46c98cc45b60b795c0c Mon Sep 17 00:00:00 2001
2From: Ignacio Casal Quinteiro <qignacio@amazon.com>
3Date: Wed, 2 Oct 2024 11:17:19 +0200
4Subject: [PATCH] websocket-test: disconnect error copy after the test ends
5
6Otherwise the server will have already sent a few more wrong
7bytes and the client will continue getting errors to copy
8but the error is already != NULL and it will assert
9
10Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/29b96fab2512666d7241e46c98cc45b60b795c0c]
11CVE: CVE-2024-52532
12Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
13---
14 tests/websocket-test.c | 4 +++-
15 1 file changed, 3 insertions(+), 1 deletion(-)
16
17diff --git a/tests/websocket-test.c b/tests/websocket-test.c
18index 06c443bb5..6a48c1f9b 100644
19--- a/tests/websocket-test.c
20+++ b/tests/websocket-test.c
21@@ -1539,8 +1539,9 @@ test_receive_invalid_encode_length_64 (Test *test,
22 GError *error = NULL;
23 InvalidEncodeLengthTest context = { test, NULL };
24 guint i;
25+ guint error_id;
26
27- g_signal_connect (test->client, "error", G_CALLBACK (on_error_copy), &error);
28+ error_id = g_signal_connect (test->client, "error", G_CALLBACK (on_error_copy), &error);
29 g_signal_connect (test->client, "message", G_CALLBACK (on_binary_message), &received);
30
31 /* We use 127(\x7f) as payload length with 65535 extended length */
32@@ -1553,6 +1554,7 @@ test_receive_invalid_encode_length_64 (Test *test,
33 WAIT_UNTIL (error != NULL || received != NULL);
34 g_assert_error (error, SOUP_WEBSOCKET_ERROR, SOUP_WEBSOCKET_CLOSE_PROTOCOL_ERROR);
35 g_clear_error (&error);
36+ g_signal_handler_disconnect (test->client, error_id);
37 g_assert_null (received);
38
39 g_thread_join (thread);
40--
41GitLab
42
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52532-3.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52532-3.patch
new file mode 100644
index 0000000000..edcca86e8c
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52532-3.patch
@@ -0,0 +1,46 @@
1From 4c9e75c6676a37b6485620c332e568e1a3f530ff Mon Sep 17 00:00:00 2001
2From: Simon McVittie <smcv@debian.org>
3Date: Wed, 13 Nov 2024 14:14:23 +0000
4Subject: [PATCH] websocket-test: Disconnect error signal in another place
5
6This is the same change as commit 29b96fab "websocket-test: disconnect
7error copy after the test ends", and is done for the same reason, but
8replicating it into a different function.
9
10Fixes: 6adc0e3e "websocket: process the frame as soon as we read data"
11Resolves: https://gitlab.gnome.org/GNOME/libsoup/-/issues/399
12Signed-off-by: Simon McVittie <smcv@debian.org>
13
14Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/4c9e75c6676a37b6485620c332e568e1a3f530ff]
15CVE: CVE-2024-52532
16Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
17---
18 tests/websocket-test.c | 4 +++-
19 1 file changed, 3 insertions(+), 1 deletion(-)
20
21diff --git a/tests/websocket-test.c b/tests/websocket-test.c
22index 6a48c1f9..723f2857 100644
23--- a/tests/websocket-test.c
24+++ b/tests/websocket-test.c
25@@ -1508,8 +1508,9 @@ test_receive_invalid_encode_length_16 (Test *test,
26 GError *error = NULL;
27 InvalidEncodeLengthTest context = { test, NULL };
28 guint i;
29+ guint error_id;
30
31- g_signal_connect (test->client, "error", G_CALLBACK (on_error_copy), &error);
32+ error_id = g_signal_connect (test->client, "error", G_CALLBACK (on_error_copy), &error);
33 g_signal_connect (test->client, "message", G_CALLBACK (on_binary_message), &received);
34
35 /* We use 126(~) as payload length with 125 extended length */
36@@ -1522,6 +1523,7 @@ test_receive_invalid_encode_length_16 (Test *test,
37 WAIT_UNTIL (error != NULL || received != NULL);
38 g_assert_error (error, SOUP_WEBSOCKET_ERROR, SOUP_WEBSOCKET_CLOSE_PROTOCOL_ERROR);
39 g_clear_error (&error);
40+ g_signal_handler_disconnect (test->client, error_id);
41 g_assert_null (received);
42
43 g_thread_join (thread);
44--
45GitLab
46
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-2784.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-2784.patch
new file mode 100644
index 0000000000..106f907168
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-2784.patch
@@ -0,0 +1,56 @@
1From 2eacbd762332795e00692ddab2515c6da23198d3 Mon Sep 17 00:00:00 2001
2From: Changqing Li <changqing.li@windriver.com>
3Date: Mon, 12 May 2025 14:06:41 +0800
4Subject: [PATCH] sniffer: Add better coverage of skip_insignificant_space()
5
6CVE: CVE-2025-2784
7Upstream-Status: Backport
8[https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/435/diffs?commit_id=242a10fbb12dbdc12d254bd8fc8669a0ac055304;
9 https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/442/diffs?commit_id=c415ad0b6771992e66c70edf373566c6e247089d]
10
11Test code is not added since it uses some functions not defined in
12version 2.74. These tests are not used now, so just ignore them.
13
14Signed-off-by: Changqing Li <changqing.li@windriver.com>
15---
16 libsoup/soup-content-sniffer.c | 9 +++----
17 1 files changed, 3 insertions(+), 4 deletions(-)
18
19diff --git a/libsoup/soup-content-sniffer.c b/libsoup/soup-content-sniffer.c
20index 5f2896e..9554636 100644
21--- a/libsoup/soup-content-sniffer.c
22+++ b/libsoup/soup-content-sniffer.c
23@@ -612,8 +612,10 @@ sniff_text_or_binary (SoupContentSniffer *sniffer, SoupBuffer *buffer)
24 }
25
26 static gboolean
27-skip_insignificant_space (const char *resource, int *pos, int resource_length)
28+skip_insignificant_space (const char *resource, gsize *pos, gsize resource_length)
29 {
30+ if (*pos >= resource_length)
31+ return TRUE;
32 while ((resource[*pos] == '\x09') ||
33 (resource[*pos] == '\x20') ||
34 (resource[*pos] == '\x0A') ||
35@@ -632,7 +634,7 @@ sniff_feed_or_html (SoupContentSniffer *sniffer, SoupBuffer *buffer)
36 {
37 const char *resource = (const char *)buffer->data;
38 int resource_length = MIN (512, buffer->length);
39- int pos = 0;
40+ gsize pos = 0;
41
42 if (resource_length < 3)
43 goto text_html;
44@@ -642,9 +644,6 @@ sniff_feed_or_html (SoupContentSniffer *sniffer, SoupBuffer *buffer)
45 pos = 3;
46
47 look_for_tag:
48- if (pos > resource_length)
49- goto text_html;
50-
51 if (skip_insignificant_space (resource, &pos, resource_length))
52 goto text_html;
53
54--
552.34.1
56
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32050.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32050.patch
new file mode 100644
index 0000000000..c032846ef0
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32050.patch
@@ -0,0 +1,29 @@
1From 5709dfffb6fdc5b66ce001bf82a755ad8ad1d992 Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Mon, 28 Oct 2024 12:29:48 -0500
4Subject: [PATCH] Fix using int instead of size_t for strcspn return
5
6CVE: CVE-2025-32050
7Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/9bb0a55de55c6940ced811a64fbca82fe93a9323]
8
9Signed-off-by: Changqing Li <changqing.li@windriver.com>
10---
11 libsoup/soup-headers.c | 2 +-
12 1 file changed, 1 insertion(+), 1 deletion(-)
13
14diff --git a/libsoup/soup-headers.c b/libsoup/soup-headers.c
15index 9707ca0..67905b2 100644
16--- a/libsoup/soup-headers.c
17+++ b/libsoup/soup-headers.c
18@@ -902,7 +902,7 @@ append_param_quoted (GString *string,
19 const char *name,
20 const char *value)
21 {
22- int len;
23+ gsize len;
24
25 g_string_append (string, name);
26 g_string_append (string, "=\"");
27--
282.34.1
29
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32052.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32052.patch
new file mode 100644
index 0000000000..34bc8113a4
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32052.patch
@@ -0,0 +1,32 @@
1From f4a67a9a3033586edaee715d40d5992e02d32893 Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Sat, 16 Nov 2024 12:07:30 -0600
4Subject: [PATCH] Fix heap buffer overflow in soup_content_sniffer_sniff
5
6Co-Author: Ar Jun <pkillarjun@protonmail.com>
7
8CVE: CVE-2025-32052
9Upstream-Status: Backport
10[https://gitlab.gnome.org/GNOME/libsoup/-/commit/f182429e5b1fc034050510da20c93256c4fa9652#500da7cfde649872c49169be34b03a1c42a53ddb]
11
12Signed-off-by: Changqing Li <changqing.li@windriver.com>
13---
14 libsoup/soup-content-sniffer.c | 2 +-
15 1 file changed, 1 insertion(+), 1 deletion(-)
16
17diff --git a/libsoup/soup-content-sniffer.c b/libsoup/soup-content-sniffer.c
18index 9554636..eac9e7b 100644
19--- a/libsoup/soup-content-sniffer.c
20+++ b/libsoup/soup-content-sniffer.c
21@@ -504,7 +504,7 @@ sniff_unknown (SoupContentSniffer *sniffer, SoupBuffer *buffer,
22 guint index_pattern = 0;
23 gboolean skip_row = FALSE;
24
25- while ((index_stream < resource_length) &&
26+ while ((index_stream < resource_length - 1) &&
27 (index_pattern <= type_row->pattern_length)) {
28 /* Skip insignificant white space ("WS" in the spec) */
29 if (type_row->pattern[index_pattern] == ' ') {
30--
312.34.1
32
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32053.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32053.patch
new file mode 100644
index 0000000000..0d829d6200
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32053.patch
@@ -0,0 +1,39 @@
1From d9bcffd6cd5e8ec32889a594f7348d67a5101b3a Mon Sep 17 00:00:00 2001
2From: Changqing Li <changqing.li@windriver.com>
3Date: Mon, 12 May 2025 13:58:42 +0800
4Subject: [PATCH] Fix heap buffer overflow in
5 soup-content-sniffer.c:sniff_feed_or_html()
6
7CVE: CVE-2025-32053
8Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/eaed42ca8d40cd9ab63764e3d63641180505f40a]
9
10Signed-off-by: Changqing Li <changqing.li@windriver.com>
11---
12 libsoup/soup-content-sniffer.c | 4 ++--
13 1 file changed, 2 insertions(+), 2 deletions(-)
14
15diff --git a/libsoup/soup-content-sniffer.c b/libsoup/soup-content-sniffer.c
16index 967ec61..5f2896e 100644
17--- a/libsoup/soup-content-sniffer.c
18+++ b/libsoup/soup-content-sniffer.c
19@@ -620,7 +620,7 @@ skip_insignificant_space (const char *resource, int *pos, int resource_length)
20 (resource[*pos] == '\x0D')) {
21 *pos = *pos + 1;
22
23- if (*pos > resource_length)
24+ if (*pos >= resource_length)
25 return TRUE;
26 }
27
28@@ -682,7 +682,7 @@ sniff_feed_or_html (SoupContentSniffer *sniffer, SoupBuffer *buffer)
29 do {
30 pos++;
31
32- if (pos > resource_length)
33+ if ((pos + 1) > resource_length)
34 goto text_html;
35 } while (resource[pos] != '>');
36
37--
382.34.1
39
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32906-1.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32906-1.patch
new file mode 100644
index 0000000000..916a41a71f
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32906-1.patch
@@ -0,0 +1,61 @@
1From 1f509f31b6f8420a3661c3f990424ab7b9164931 Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Tue, 11 Feb 2025 14:36:26 -0600
4Subject: [PATCH] headers: Handle parsing edge case
5
6This version number is specifically crafted to pass sanity checks allowing it to go one byte out of bounds.
7
8Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/1f509f31b6f8420a3661c3f990424ab7b9164931]
9CVE: CVE-2025-32906 #Dependency Patch
10Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
11---
12 libsoup/soup-headers.c | 2 +-
13 tests/header-parsing-test.c | 12 ++++++++++++
14 2 files changed, 13 insertions(+), 1 deletion(-)
15
16diff --git a/libsoup/soup-headers.c b/libsoup/soup-headers.c
17index 85385cea..9d6d00a3 100644
18--- a/libsoup/soup-headers.c
19+++ b/libsoup/soup-headers.c
20@@ -225,7 +225,7 @@ soup_headers_parse_request (const char *str,
21 !g_ascii_isdigit (version[5]))
22 return SOUP_STATUS_BAD_REQUEST;
23 major_version = strtoul (version + 5, &p, 10);
24- if (*p != '.' || !g_ascii_isdigit (p[1]))
25+ if (p + 1 >= str + len || *p != '.' || !g_ascii_isdigit (p[1]))
26 return SOUP_STATUS_BAD_REQUEST;
27 minor_version = strtoul (p + 1, &p, 10);
28 version_end = p;
29diff --git a/tests/header-parsing-test.c b/tests/header-parsing-test.c
30index 07ea2866..10ddb684 100644
31--- a/tests/header-parsing-test.c
32+++ b/tests/header-parsing-test.c
33@@ -6,6 +6,10 @@ typedef struct {
34 const char *name, *value;
35 } Header;
36
37+static char unterminated_http_version[] = {
38+ 'G','E','T',' ','/',' ','H','T','T','P','/','1', '0', '0', '.'
39+};
40+
41 static struct RequestTest {
42 const char *description;
43 const char *bugref;
44@@ -383,6 +387,14 @@ static struct RequestTest {
45 { { NULL } }
46 },
47
48+ /* This couldn't be a C string as going one byte over would have been safe. */
49+ { "Long HTTP version terminating at missing minor version", "https://gitlab.gnome.org/GNOME/libsoup/-/issues/404",
50+ unterminated_http_version, sizeof (unterminated_http_version),
51+ SOUP_STATUS_BAD_REQUEST,
52+ NULL, NULL, -1,
53+ { { NULL } }
54+ },
55+
56 { "Non-HTTP request", NULL,
57 "GET / SOUP/1.1\r\nHost: example.com\r\n", -1,
58 SOUP_STATUS_BAD_REQUEST,
59--
60GitLab
61
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32906-2.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32906-2.patch
new file mode 100644
index 0000000000..5baad15648
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32906-2.patch
@@ -0,0 +1,83 @@
1From af5b9a4a3945c52b940d5ac181ef51bb12011f1f Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Wed, 12 Feb 2025 11:30:02 -0600
4Subject: [PATCH] headers: Handle parsing only newlines
5
6Closes #404
7Closes #407
8
9Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/af5b9a4a3945c52b940d5ac181ef51bb12011f1f]
10CVE: CVE-2025-32906
11Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
12---
13 libsoup/soup-headers.c | 4 ++--
14 tests/header-parsing-test.c | 13 ++++++++++++-
15 2 files changed, 14 insertions(+), 3 deletions(-)
16
17diff --git a/libsoup/soup-headers.c b/libsoup/soup-headers.c
18index 9d6d00a3..52ef2ece 100644
19--- a/libsoup/soup-headers.c
20+++ b/libsoup/soup-headers.c
21@@ -186,7 +186,7 @@ soup_headers_parse_request (const char *str,
22 /* RFC 2616 4.1 "servers SHOULD ignore any empty line(s)
23 * received where a Request-Line is expected."
24 */
25- while ((*str == '\r' || *str == '\n') && len > 0) {
26+ while (len > 0 && (*str == '\r' || *str == '\n')) {
27 str++;
28 len--;
29 }
30@@ -371,7 +371,7 @@ soup_headers_parse_response (const char *str,
31 * after a response, which we then see prepended to the next
32 * response on that connection.
33 */
34- while ((*str == '\r' || *str == '\n') && len > 0) {
35+ while (len > 0 && (*str == '\r' || *str == '\n')) {
36 str++;
37 len--;
38 }
39diff --git a/tests/header-parsing-test.c b/tests/header-parsing-test.c
40index 10ddb684..4faafbd6 100644
41--- a/tests/header-parsing-test.c
42+++ b/tests/header-parsing-test.c
43@@ -6,10 +6,15 @@ typedef struct {
44 const char *name, *value;
45 } Header;
46
47+/* These are not C strings to ensure going one byte over is not safe. */
48 static char unterminated_http_version[] = {
49 'G','E','T',' ','/',' ','H','T','T','P','/','1', '0', '0', '.'
50 };
51
52+static char only_newlines[] = {
53+ '\n', '\n', '\n', '\n'
54+};
55+
56 static struct RequestTest {
57 const char *description;
58 const char *bugref;
59@@ -387,7 +392,6 @@ static struct RequestTest {
60 { { NULL } }
61 },
62
63- /* This couldn't be a C string as going one byte over would have been safe. */
64 { "Long HTTP version terminating at missing minor version", "https://gitlab.gnome.org/GNOME/libsoup/-/issues/404",
65 unterminated_http_version, sizeof (unterminated_http_version),
66 SOUP_STATUS_BAD_REQUEST,
67@@ -457,6 +461,13 @@ static struct RequestTest {
68 SOUP_STATUS_BAD_REQUEST,
69 NULL, NULL, -1,
70 { { NULL } }
71+ },
72+
73+ { "Only newlines", NULL,
74+ only_newlines, sizeof (only_newlines),
75+ SOUP_STATUS_BAD_REQUEST,
76+ NULL, NULL, -1,
77+ { { NULL } }
78 }
79 };
80 static const int num_reqtests = G_N_ELEMENTS (reqtests);
81--
82GitLab
83
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32907.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32907.patch
new file mode 100644
index 0000000000..41dd3ff3f4
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32907.patch
@@ -0,0 +1,39 @@
1From 8158b4084dcba2a233dfcb7359c53ab2840148f7 Mon Sep 17 00:00:00 2001
2From: Milan Crha <mcrha@redhat.com>
3Date: Tue, 15 Apr 2025 12:17:39 +0200
4Subject: [PATCH 1/2] soup-message-headers: Correct merge of ranges
5
6It had been skipping every second range, which generated an array
7of a lot of insane ranges, causing large memory usage by the server.
8
9Closes #428
10
11Part-of: <https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/452>
12
13CVE: CVE-2025-32907
14Upstream-Status: Backport
15[https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/452/diffs?commit_id=9bb92f7a685e31e10e9e8221d0342280432ce836]
16
17Test part not applied since test codes use some functions not in this
18version
19
20Signed-off-by: Changqing Li <changqing.li@windriver.com>
21---
22 libsoup/soup-message-headers.c | 1 +
23 1 files changed, 1 insertions(+)
24
25diff --git a/libsoup/soup-message-headers.c b/libsoup/soup-message-headers.c
26index 78b2455..00b9763 100644
27--- a/libsoup/soup-message-headers.c
28+++ b/libsoup/soup-message-headers.c
29@@ -1024,6 +1024,7 @@ soup_message_headers_get_ranges_internal (SoupMessageHeaders *hdrs,
30 if (cur->start <= prev->end) {
31 prev->end = MAX (prev->end, cur->end);
32 g_array_remove_index (array, i);
33+ i--;
34 }
35 }
36 }
37--
382.34.1
39
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32909.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32909.patch
new file mode 100644
index 0000000000..046f20203f
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32909.patch
@@ -0,0 +1,36 @@
1From ba4c3a6f988beff59e45801ab36067293d24ce92 Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Wed, 8 Jan 2025 16:30:17 -0600
4Subject: [PATCH] content-sniffer: Handle sniffing resource shorter than 4
5 bytes
6
7Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/ba4c3a6f988beff59e45801ab36067293d24ce92]
8CVE: CVE-2025-32909
9Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
10---
11 libsoup/soup-content-sniffer.c | 7 ++++++-
12 1 file changed, 6 insertions(+), 1 deletion(-)
13
14diff --git a/libsoup/soup-content-sniffer.c b/libsoup/soup-content-sniffer.c
15index 967ec61..a1f23c2 100644
16--- a/libsoup/soup-content-sniffer.c
17+++ b/libsoup/soup-content-sniffer.c
18@@ -227,9 +227,14 @@ sniff_mp4 (SoupContentSniffer *sniffer, SoupBuffer *buffer)
19 {
20 const char *resource = (const char *)buffer->data;
21 guint resource_length = MIN (512, buffer->length);
22- guint32 box_size = *((guint32*)resource);
23+ guint32 box_size;
24 guint i;
25
26+ if (resource_length < sizeof (guint32))
27+ return FALSE;
28+
29+ box_size = *((guint32*)resource);
30+
31 #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
32 box_size = ((box_size >> 24) |
33 ((box_size << 8) & 0x00FF0000) |
34--
352.25.1
36
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32910-1.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32910-1.patch
new file mode 100644
index 0000000000..847c76c2b7
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32910-1.patch
@@ -0,0 +1,36 @@
1From: Patrick Griffis <pgriffis@igalia.com>
2Date: Sun, 8 Dec 2024 20:00:35 -0600
3Subject: auth-digest: Handle missing realm in authenticate header
4
5(cherry picked from commit e40df6d48a1cbab56f5d15016cc861a503423cfe)
6
7Upstream-Status: Backport [import from debian https://salsa.debian.org/gnome-team/libsoup/-/blob/debian/bullseye/debian/patches/CVE-2025-32910-1.patch?ref_type=heads
8Upstream commit https://gitlab.gnome.org/GNOME/libsoup/-/commit/e40df6d48a1cbab56f5d15016cc861a503423cfe]
9CVE: CVE-2025-32910
10Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
11
12Remove test code for fixing do_compile failure of libsoup-2.4, test codes include
13new type added in 3.x version
14../libsoup-2.74.3/tests/auth-test.c:1554:39: error: unknown type name 'SoupServerMessage'; did you mean 'SoupServerClass'?
15 1554 | SoupServerMessage *msg,
16 | ^~~~~~~~~~~~~~~~~
17
18Signed-off-by: Changqing Li <changqing.li@windriver.com>
19---
20 libsoup/soup-auth-digest.c | 3 +++
21 1 files changed, 3 insertions(+)
22
23diff --git a/libsoup/soup-auth-digest.c b/libsoup/soup-auth-digest.c
24index e8ba990..263a15a 100644
25--- a/libsoup/soup-auth-digest.c
26+++ b/libsoup/soup-auth-digest.c
27@@ -142,6 +142,9 @@ soup_auth_digest_update (SoupAuth *auth, SoupMessage *msg,
28 guint qop_options;
29 gboolean ok = TRUE;
30
31+ if (!soup_auth_get_realm (auth))
32+ return FALSE;
33+
34 g_free (priv->domain);
35 g_free (priv->nonce);
36 g_free (priv->opaque);
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32910-2.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32910-2.patch
new file mode 100644
index 0000000000..a2168177a4
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32910-2.patch
@@ -0,0 +1,106 @@
1From: Patrick Griffis <pgriffis@igalia.com>
2Date: Thu, 26 Dec 2024 18:18:35 -0600
3Subject: auth-digest: Handle missing nonce
4
5(cherry picked from commit 405a8a34597a44bd58c4759e7d5e23f02c3b556a)
6
7Upstream-Status: Backport [import from debian https://salsa.debian.org/gnome-team/libsoup/-/blob/debian/bullseye/debian/patches/CVE-2025-32910-2.patch?ref_type=heads
8Upstream commit https://gitlab.gnome.org/GNOME/libsoup/-/commit/405a8a34597a44bd58c4759e7d5e23f02c3b556a]
9CVE: CVE-2025-32910
10Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
11
12Remove test code for fixing do_compile failure of libsoup-2.4, test codes include
13new type added in 3.x version
14../libsoup-2.74.3/tests/auth-test.c:1554:39: error: unknown type name 'SoupServerMessage'; did you mean 'SoupServerClass'?
15 1554 | SoupServerMessage *msg,
16 | ^~~~~~~~~~~~~~~~~
17
18Signed-off-by: Changqing Li <changqing.li@windriver.com>
19---
20 libsoup/soup-auth-digest.c | 45 +++++++++++++++++++++++++++++++++++----------
21 1 files changed, 35 insertions(+), 10 deletions(-)
22
23diff --git a/libsoup/soup-auth-digest.c b/libsoup/soup-auth-digest.c
24index 263a15a..393adb6 100644
25--- a/libsoup/soup-auth-digest.c
26+++ b/libsoup/soup-auth-digest.c
27@@ -132,6 +132,19 @@ soup_auth_digest_get_qop (SoupAuthDigestQop qop)
28 return g_string_free (out, FALSE);
29 }
30
31+static gboolean
32+validate_params (SoupAuthDigest *auth_digest)
33+{
34+ SoupAuthDigestPrivate *priv = soup_auth_digest_get_instance_private (auth_digest);
35+
36+ if (priv->qop || priv->algorithm == SOUP_AUTH_DIGEST_ALGORITHM_MD5_SESS) {
37+ if (!priv->nonce)
38+ return FALSE;
39+ }
40+
41+ return TRUE;
42+}
43+
44 static gboolean
45 soup_auth_digest_update (SoupAuth *auth, SoupMessage *msg,
46 GHashTable *auth_params)
47@@ -169,16 +182,21 @@ soup_auth_digest_update (SoupAuth *auth, SoupMessage *msg,
48 if (priv->algorithm == -1)
49 ok = FALSE;
50
51- stale = g_hash_table_lookup (auth_params, "stale");
52- if (stale && !g_ascii_strcasecmp (stale, "TRUE") && *priv->hex_urp)
53- recompute_hex_a1 (priv);
54- else {
55- g_free (priv->user);
56- priv->user = NULL;
57- g_free (priv->cnonce);
58- priv->cnonce = NULL;
59- memset (priv->hex_urp, 0, sizeof (priv->hex_urp));
60- memset (priv->hex_a1, 0, sizeof (priv->hex_a1));
61+ if (!validate_params (auth_digest))
62+ ok = FALSE;
63+
64+ if (ok) {
65+ stale = g_hash_table_lookup (auth_params, "stale");
66+ if (stale && !g_ascii_strcasecmp (stale, "TRUE") && *priv->hex_urp)
67+ recompute_hex_a1 (priv);
68+ else {
69+ g_free (priv->user);
70+ priv->user = NULL;
71+ g_free (priv->cnonce);
72+ priv->cnonce = NULL;
73+ memset (priv->hex_urp, 0, sizeof (priv->hex_urp));
74+ memset (priv->hex_a1, 0, sizeof (priv->hex_a1));
75+ }
76 }
77
78 return ok;
79@@ -269,6 +287,8 @@ soup_auth_digest_compute_hex_a1 (const char *hex_urp,
80
81 /* In MD5-sess, A1 is hex_urp:nonce:cnonce */
82
83+ g_assert (nonce && cnonce);
84+
85 checksum = g_checksum_new (G_CHECKSUM_MD5);
86 g_checksum_update (checksum, (guchar *)hex_urp, strlen (hex_urp));
87 g_checksum_update (checksum, (guchar *)":", 1);
88@@ -359,6 +379,8 @@ soup_auth_digest_compute_response (const char *method,
89 if (qop) {
90 char tmp[9];
91
92+ g_assert (cnonce);
93+
94 g_snprintf (tmp, 9, "%.8x", nc);
95 g_checksum_update (checksum, (guchar *)tmp, strlen (tmp));
96 g_checksum_update (checksum, (guchar *)":", 1);
97@@ -422,6 +444,9 @@ soup_auth_digest_get_authorization (SoupAuth *auth, SoupMessage *msg)
98 g_return_val_if_fail (uri != NULL, NULL);
99 url = soup_uri_to_string (uri, TRUE);
100
101+ g_assert (priv->nonce);
102+ g_assert (!priv->qop || priv->cnonce);
103+
104 soup_auth_digest_compute_response (msg->method, url, priv->hex_a1,
105 priv->qop, priv->nonce,
106 priv->cnonce, priv->nc,
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32910-3.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32910-3.patch
new file mode 100644
index 0000000000..ab0f650804
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32910-3.patch
@@ -0,0 +1,26 @@
1From: Patrick Griffis <pgriffis@igalia.com>
2Date: Fri, 27 Dec 2024 13:52:52 -0600
3Subject: auth-digest: Fix leak
4
5(cherry picked from commit ea16eeacb052e423eb5c3b0b705e5eab34b13832)
6
7Upstream-Status: Backport [import from debian https://salsa.debian.org/gnome-team/libsoup/-/blob/debian/bullseye/debian/patches/CVE-2025-32910-3.patch?ref_type=heads
8Upstream commit https://gitlab.gnome.org/GNOME/libsoup/-/commit/ea16eeacb052e423eb5c3b0b705e5eab34b13832]
9CVE: CVE-2025-32910
10Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
11---
12 libsoup/soup-auth-digest.c | 1 +
13 1 file changed, 1 insertion(+)
14
15diff --git a/libsoup/soup-auth-digest.c b/libsoup/soup-auth-digest.c
16index 393adb6..a1db188 100644
17--- a/libsoup/soup-auth-digest.c
18+++ b/libsoup/soup-auth-digest.c
19@@ -66,6 +66,7 @@ soup_auth_digest_finalize (GObject *object)
20 g_free (priv->nonce);
21 g_free (priv->domain);
22 g_free (priv->cnonce);
23+ g_free (priv->opaque);
24
25 memset (priv->hex_urp, 0, sizeof (priv->hex_urp));
26 memset (priv->hex_a1, 0, sizeof (priv->hex_a1));
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32911_CVE-2025-32913-1.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32911_CVE-2025-32913-1.patch
new file mode 100644
index 0000000000..4652635294
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32911_CVE-2025-32913-1.patch
@@ -0,0 +1,72 @@
1From 7b4ef0e004ece3a308ccfaa714c284f4c96ade34 Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Fri, 27 Dec 2024 17:53:50 -0600
4Subject: [PATCH] soup_message_headers_get_content_disposition: Fix NULL deref
5
6Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/7b4ef0e004ece3a308ccfaa714c284f4c96ade34]
7CVE: CVE-2025-32911 CVE-2025-32913 #Dependency Patch
8Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
9---
10 libsoup/soup-message-headers.c | 13 +++++++++----
11 tests/header-parsing-test.c | 14 ++++++++++++++
12 2 files changed, 23 insertions(+), 4 deletions(-)
13
14diff --git a/libsoup/soup-message-headers.c b/libsoup/soup-message-headers.c
15index 56cc1e9d..04f4c302 100644
16--- a/libsoup/soup-message-headers.c
17+++ b/libsoup/soup-message-headers.c
18@@ -1660,10 +1660,15 @@ soup_message_headers_get_content_disposition (SoupMessageHeaders *hdrs,
19 */
20 if (params && g_hash_table_lookup_extended (*params, "filename",
21 &orig_key, &orig_value)) {
22- char *filename = strrchr (orig_value, '/');
23-
24- if (filename)
25- g_hash_table_insert (*params, g_strdup (orig_key), filename + 1);
26+ if (orig_value) {
27+ char *filename = strrchr (orig_value, '/');
28+
29+ if (filename)
30+ g_hash_table_insert (*params, g_strdup (orig_key), filename + 1);
31+ } else {
32+ /* filename with no value isn't valid. */
33+ g_hash_table_remove (*params, "filename");
34+ }
35 }
36 return TRUE;
37 }
38diff --git a/tests/header-parsing-test.c b/tests/header-parsing-test.c
39index 5e423d2b..d0b360c8 100644
40--- a/tests/header-parsing-test.c
41+++ b/tests/header-parsing-test.c
42@@ -1039,6 +1039,7 @@ do_param_list_tests (void)
43 #define RFC5987_TEST_HEADER_FALLBACK "attachment; filename*=Unknown''t%FF%FF%FFst.txt; filename=\"test.txt\""
44 #define RFC5987_TEST_HEADER_NO_TYPE "filename=\"test.txt\""
45 #define RFC5987_TEST_HEADER_NO_TYPE_2 "filename=\"test.txt\"; foo=bar"
46+#define RFC5987_TEST_HEADER_EMPTY_FILENAME ";filename"
47
48 static void
49 do_content_disposition_tests (void)
50@@ -1139,6 +1140,19 @@ do_content_disposition_tests (void)
51 g_assert_cmpstr (parameter2, ==, "bar");
52 g_hash_table_destroy (params);
53
54+ /* Empty filename */
55+ soup_message_headers_clear (hdrs);
56+ soup_message_headers_append (hdrs, "Content-Disposition",
57+ RFC5987_TEST_HEADER_EMPTY_FILENAME);
58+ if (!soup_message_headers_get_content_disposition (hdrs,
59+ &disposition,
60+ &params)) {
61+ soup_test_assert (FALSE, "empty filename decoding FAILED");
62+ return;
63+ }
64+ g_assert_false (g_hash_table_contains (params, "filename"));
65+ g_hash_table_destroy (params);
66+
67 soup_message_headers_free (hdrs);
68
69 /* Ensure that soup-multipart always quotes filename */
70--
71GitLab
72
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32911_CVE-2025-32913-2.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32911_CVE-2025-32913-2.patch
new file mode 100644
index 0000000000..5d9f33c736
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32911_CVE-2025-32913-2.patch
@@ -0,0 +1,44 @@
1From f4a761fb66512fff59798765e8ac5b9e57dceef0 Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Fri, 27 Dec 2024 18:00:39 -0600
4Subject: [PATCH] soup_message_headers_get_content_disposition: strdup
5 truncated filenames
6
7This table frees the strings it contains.
8
9Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/f4a761fb66512fff59798765e8ac5b9e57dceef0]
10CVE: CVE-2025-32911 CVE-2025-32913
11Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
12---
13 libsoup/soup-message-headers.c | 2 +-
14 tests/header-parsing-test.c | 1 +
15 2 files changed, 2 insertions(+), 1 deletion(-)
16
17diff --git a/libsoup/soup-message-headers.c b/libsoup/soup-message-headers.c
18index 04f4c302..ee7a3cb1 100644
19--- a/libsoup/soup-message-headers.c
20+++ b/libsoup/soup-message-headers.c
21@@ -1664,7 +1664,7 @@ soup_message_headers_get_content_disposition (SoupMessageHeaders *hdrs,
22 char *filename = strrchr (orig_value, '/');
23
24 if (filename)
25- g_hash_table_insert (*params, g_strdup (orig_key), filename + 1);
26+ g_hash_table_insert (*params, g_strdup (orig_key), g_strdup (filename + 1));
27 } else {
28 /* filename with no value isn't valid. */
29 g_hash_table_remove (*params, "filename");
30diff --git a/tests/header-parsing-test.c b/tests/header-parsing-test.c
31index d0b360c8..07ea2866 100644
32--- a/tests/header-parsing-test.c
33+++ b/tests/header-parsing-test.c
34@@ -1150,6 +1150,7 @@ do_content_disposition_tests (void)
35 soup_test_assert (FALSE, "empty filename decoding FAILED");
36 return;
37 }
38+ g_free (disposition);
39 g_assert_false (g_hash_table_contains (params, "filename"));
40 g_hash_table_destroy (params);
41
42--
43GitLab
44
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32912-1.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32912-1.patch
new file mode 100644
index 0000000000..906a889c13
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32912-1.patch
@@ -0,0 +1,33 @@
1From cd077513f267e43ce4b659eb18a1734d8a369992 Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Wed, 5 Feb 2025 14:03:05 -0600
4Subject: [PATCH 1/2] auth-digest: Handle missing nonce
5
6Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/cd077513f267e43ce4b659eb18a1734d8a369992]
7CVE: CVE-2025-32912
8Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
9
10The test codes is based on CVE-2025-32910, test code in CVE-2025-32910
11is removed for fixing do_compile failure. So also remove this test code
12
13Signed-off-by: Changqing Li <changqing.li@windriver.com>
14---
15 libsoup/soup-auth-digest.c | 2 +-
16 1 files changed, 1 insertions(+), 1 deletion(-)
17
18diff --git a/libsoup/soup-auth-digest.c b/libsoup/soup-auth-digest.c
19index a1db188..f0edb81 100644
20--- a/libsoup/soup-auth-digest.c
21+++ b/libsoup/soup-auth-digest.c
22@@ -156,7 +156,7 @@ soup_auth_digest_update (SoupAuth *auth, SoupMessage *msg,
23 guint qop_options;
24 gboolean ok = TRUE;
25
26- if (!soup_auth_get_realm (auth))
27+ if (!soup_auth_get_realm (auth) || !g_hash_table_contains (auth_params, "nonce"))
28 return FALSE;
29
30 g_free (priv->domain);
31--
322.25.1
33
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32912-2.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32912-2.patch
new file mode 100644
index 0000000000..4898068115
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32912-2.patch
@@ -0,0 +1,30 @@
1From 910ebdcd3dd82386717a201c13c834f3a63eed7f Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Sat, 8 Feb 2025 12:30:13 -0600
4Subject: [PATCH 2/2] digest-auth: Handle NULL nonce
5
6`contains` only handles a missing nonce, `lookup` handles both missing and empty.
7
8Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/910ebdcd3dd82386717a201c13c834f3a63eed7f]
9CVE: CVE-2025-32912
10Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
11---
12 libsoup/soup-auth-digest.c | 2 +-
13 1 file changed, 1 insertion(+), 1 deletion(-)
14
15diff --git a/libsoup/soup-auth-digest.c b/libsoup/soup-auth-digest.c
16index f0edb81..c49ffd9 100644
17--- a/libsoup/soup-auth-digest.c
18+++ b/libsoup/soup-auth-digest.c
19@@ -156,7 +156,7 @@ soup_auth_digest_update (SoupAuth *auth, SoupMessage *msg,
20 guint qop_options;
21 gboolean ok = TRUE;
22
23- if (!soup_auth_get_realm (auth) || !g_hash_table_contains (auth_params, "nonce"))
24+ if (!soup_auth_get_realm (auth) || !g_hash_table_lookup (auth_params, "nonce"))
25 return FALSE;
26
27 g_free (priv->domain);
28--
292.25.1
30
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32914.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32914.patch
new file mode 100644
index 0000000000..e6d4607b5e
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32914.patch
@@ -0,0 +1,137 @@
1From: Milan Crha <mcrha@redhat.com>
2Date: Tue, 15 Apr 2025 09:03:00 +0200
3Subject: multipart: Fix read out of buffer bounds under
4 soup_multipart_new_from_message()
5
6This is CVE-2025-32914, special crafted input can cause read out of buffer bounds
7of the body argument.
8
9Closes #436
10
11(cherry picked from commit 5bfcf8157597f2d327050114fb37ff600004dbcf)
12
13Upstream-Status: Backport [import from debian https://salsa.debian.org/gnome-team/libsoup/-/blob/debian/bullseye/debian/patches/CVE-2025-32914.patch?ref_type=heads
14Upstream commit https://gitlab.gnome.org/GNOME/libsoup/-/commit/5bfcf8157597f2d327050114fb37ff600004dbcf]
15CVE: CVE-2025-32914
16Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
17---
18 libsoup/soup-multipart.c | 2 +-
19 tests/multipart-test.c | 85 ++++++++++++++++++++++++++++++++++++++++++++++++
20 2 files changed, 86 insertions(+), 1 deletion(-)
21
22diff --git a/libsoup/soup-multipart.c b/libsoup/soup-multipart.c
23index a7e550f..dd93973 100644
24--- a/libsoup/soup-multipart.c
25+++ b/libsoup/soup-multipart.c
26@@ -181,7 +181,7 @@ soup_multipart_new_from_message (SoupMessageHeaders *headers,
27 return NULL;
28 }
29
30- split = strstr (start, "\r\n\r\n");
31+ split = g_strstr_len (start, body_end - start, "\r\n\r\n");
32 if (!split || split > end) {
33 soup_multipart_free (multipart);
34 soup_buffer_free (flattened);
35diff --git a/tests/multipart-test.c b/tests/multipart-test.c
36index 64a5ebf..834b181 100644
37--- a/tests/multipart-test.c
38+++ b/tests/multipart-test.c
39@@ -479,6 +479,89 @@ test_multipart (gconstpointer data)
40 g_main_loop_unref (loop);
41 }
42
43+static void
44+test_multipart_bounds_good (void)
45+{
46+ #define TEXT "line1\r\nline2"
47+ SoupMultipart *multipart;
48+ SoupMessageHeaders *headers, *set_headers = NULL;
49+ //GBytes *bytes, *set_bytes = NULL;
50+ GBytes *bytes;
51+ const char *raw_data = "--123\r\nContent-Type: text/plain;\r\n\r\n" TEXT "\r\n--123--\r\n";
52+ gboolean success;
53+ SoupMessageBody *body = soup_message_body_new ();
54+ SoupBuffer *set_buffer = NULL;
55+ gconstpointer data;
56+ gsize size;
57+
58+ headers = soup_message_headers_new (SOUP_MESSAGE_HEADERS_MULTIPART);
59+ soup_message_headers_append (headers, "Content-Type", "multipart/mixed; boundary=\"123\"");
60+
61+ bytes = g_bytes_new (raw_data, strlen (raw_data));
62+
63+ data = g_bytes_get_data(bytes, NULL);
64+ size = g_bytes_get_size(bytes);
65+
66+ soup_message_body_append(body, SOUP_MEMORY_STATIC, data, size);
67+
68+ //multipart = soup_multipart_new_from_message (headers, bytes);
69+ multipart = soup_multipart_new_from_message (headers, body);
70+
71+ soup_message_body_free (body);
72+
73+ g_assert_nonnull (multipart);
74+ g_assert_cmpint (soup_multipart_get_length (multipart), ==, 1);
75+ success = soup_multipart_get_part (multipart, 0, &set_headers, &set_buffer);
76+ g_assert_true (success);
77+ g_assert_nonnull (set_headers);
78+ //g_assert_nonnull (set_bytes);
79+ g_assert_nonnull (set_buffer);
80+ //g_assert_cmpint (strlen (TEXT), ==, g_bytes_get_size (set_bytes));
81+ g_assert_cmpint (strlen (TEXT), ==, set_buffer->length);
82+ g_assert_cmpstr ("text/plain", ==, soup_message_headers_get_content_type (set_headers, NULL));
83+ //g_assert_cmpmem (TEXT, strlen (TEXT), g_bytes_get_data (set_bytes, NULL), g_bytes_get_size (set_bytes));
84+ g_assert_cmpmem(TEXT, strlen(TEXT), set_buffer->data, set_buffer->length);
85+
86+ soup_message_headers_free (headers);
87+ g_bytes_unref (bytes);
88+
89+ soup_multipart_free (multipart);
90+
91+ #undef TEXT
92+}
93+
94+static void
95+test_multipart_bounds_bad (void)
96+{
97+ SoupMultipart *multipart;
98+ SoupMessageHeaders *headers;
99+ GBytes *bytes;
100+ const char *raw_data = "--123\r\nContent-Type: text/plain;\r\nline1\r\nline2\r\n--123--\r\n";
101+ SoupMessageBody *body = soup_message_body_new ();
102+ gconstpointer data;
103+ gsize size;
104+
105+ headers = soup_message_headers_new (SOUP_MESSAGE_HEADERS_MULTIPART);
106+ soup_message_headers_append (headers, "Content-Type", "multipart/mixed; boundary=\"123\"");
107+
108+ bytes = g_bytes_new (raw_data, strlen (raw_data));
109+
110+ data = g_bytes_get_data(bytes, NULL);
111+ size = g_bytes_get_size(bytes);
112+
113+ soup_message_body_append(body, SOUP_MEMORY_STATIC, data, size);
114+
115+ /* it did read out of raw_data/bytes bounds */
116+ //multipart = soup_multipart_new_from_message (headers, bytes);
117+ multipart = soup_multipart_new_from_message (headers, body);
118+ g_assert_null (multipart);
119+
120+ soup_message_body_free (body);
121+
122+ soup_message_headers_free (headers);
123+ g_bytes_unref (bytes);
124+}
125+
126 int
127 main (int argc, char **argv)
128 {
129@@ -508,6 +591,8 @@ main (int argc, char **argv)
130 g_test_add_data_func ("/multipart/sync", GINT_TO_POINTER (SYNC_MULTIPART), test_multipart);
131 g_test_add_data_func ("/multipart/async", GINT_TO_POINTER (ASYNC_MULTIPART), test_multipart);
132 g_test_add_data_func ("/multipart/async-small-reads", GINT_TO_POINTER (ASYNC_MULTIPART_SMALL_READS), test_multipart);
133+ g_test_add_func ("/multipart/bounds-good", test_multipart_bounds_good);
134+ g_test_add_func ("/multipart/bounds-bad", test_multipart_bounds_bad);
135
136 ret = g_test_run ();
137
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-4476.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-4476.patch
new file mode 100644
index 0000000000..874f62e7ad
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-4476.patch
@@ -0,0 +1,38 @@
1From 52a0f9234d384b9dab368835b22e5a5a01542168 Mon Sep 17 00:00:00 2001
2From: Changqing Li <changqing.li@windriver.com>
3Date: Fri, 16 May 2025 14:16:10 +0800
4Subject: [PATCH] auth-digest: fix crash in
5 soup_auth_digest_get_protection_space()
6
7We need to validate the Domain parameter in the WWW-Authenticate header.
8
9Unfortunately this crash only occurs when listening on default ports 80
10and 443, so there's no good way to test for this. The test would require
11running as root.
12
13Fixes #440
14
15CVE: CVE-2025-4476
16Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/e64c221f9c7d09b48b610c5626b3b8c400f0907c?merge_request_iid=457]
17
18Signed-off-by: Changqing Li <changqing.li@windriver.com>
19---
20 libsoup/soup-auth-digest.c | 2 +-
21 1 file changed, 1 insertion(+), 1 deletion(-)
22
23diff --git a/libsoup/soup-auth-digest.c b/libsoup/soup-auth-digest.c
24index f1621ec..a2dc560 100644
25--- a/libsoup/soup-auth-digest.c
26+++ b/libsoup/soup-auth-digest.c
27@@ -229,7 +229,7 @@ soup_auth_digest_get_protection_space (SoupAuth *auth, SoupURI *source_uri)
28 uri = soup_uri_new (d);
29 if (uri && uri->scheme == source_uri->scheme &&
30 uri->port == source_uri->port &&
31- !strcmp (uri->host, source_uri->host))
32+ !g_strcmp0 (uri->host, source_uri->host))
33 dir = g_strdup (uri->path);
34 else
35 dir = NULL;
36--
372.34.1
38
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-46420.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-46420.patch
new file mode 100644
index 0000000000..37ab16dc05
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-46420.patch
@@ -0,0 +1,60 @@
1From c9083869ec2a3037e6df4bd86b45c419ba295f8e Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Thu, 26 Dec 2024 18:31:42 -0600
4Subject: [PATCH] soup_header_parse_quality_list: Fix leak
5
6When iterating over the parsed list we now steal the allocated strings that we want and then free_full the list which may contain remaining strings.
7
8Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/c9083869ec2a3037e6df4bd86b45c419ba295f8e]
9CVE: CVE-2025-46420
10Signed-off-by: Ashish Sharma <asharma@mvista.com>
11
12 libsoup/soup-headers.c | 11 +++++------
13 1 file changed, 5 insertions(+), 6 deletions(-)
14
15diff --git a/libsoup/soup-headers.c b/libsoup/soup-headers.c
16index a5f7a7f6..85385cea 100644
17--- a/libsoup/soup-headers.c
18+++ b/libsoup/soup-headers.c
19@@ -530,7 +530,7 @@ soup_header_parse_quality_list (const char *header, GSList **unacceptable)
20 GSList *unsorted;
21 QualityItem *array;
22 GSList *sorted, *iter;
23- char *item, *semi;
24+ char *semi;
25 const char *param, *equal, *value;
26 double qval;
27 int n;
28@@ -543,9 +543,8 @@ soup_header_parse_quality_list (const char *header, GSList **unacceptable)
29 unsorted = soup_header_parse_list (header);
30 array = g_new0 (QualityItem, g_slist_length (unsorted));
31 for (iter = unsorted, n = 0; iter; iter = iter->next) {
32- item = iter->data;
33 qval = 1.0;
34- for (semi = strchr (item, ';'); semi; semi = strchr (semi + 1, ';')) {
35+ for (semi = strchr (iter->data, ';'); semi; semi = strchr (semi + 1, ';')) {
36 param = skip_lws (semi + 1);
37 if (*param != 'q')
38 continue;
39@@ -577,15 +576,15 @@ soup_header_parse_quality_list (const char *header, GSList **unacceptable)
40 if (qval == 0.0) {
41 if (unacceptable) {
42 *unacceptable = g_slist_prepend (*unacceptable,
43- item);
44+ g_steal_pointer (&iter->data));
45 }
46 } else {
47- array[n].item = item;
48+ array[n].item = g_steal_pointer (&iter->data);
49 array[n].qval = qval;
50 n++;
51 }
52 }
53- g_slist_free (unsorted);
54+ g_slist_free_full (unsorted, g_free);
55
56 qsort (array, n, sizeof (QualityItem), sort_by_qval);
57 sorted = NULL;
58--
59GitLab
60
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-46421.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-46421.patch
new file mode 100644
index 0000000000..26067c4bb8
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-46421.patch
@@ -0,0 +1,47 @@
1From 5eb225f02bb35de56cfeedd87bde716bf1cb750b Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Wed, 5 Feb 2025 16:18:10 -0600
4Subject: [PATCH] session: Strip authentication credentails on
5 cross-origin redirect
6
7This should match the behavior of Firefox and Safari but not of Chromium.
8
9CVE: CVE-2025-46421
10Upstream-Status: Backport
11[https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/436/diffs?commit_id=3e5c26415811f19e7737238bb23305ffaf96f66b]
12
13Test code not added since it included some headers not in version 2.74.3
14
15Signed-off-by: Changqing Li <changqing.li@windriver.com>
16---
17 libsoup/soup-session.c | 8 +++++++-
18 1 files changed, 7 insertions(+), 1 deletion(-)
19
20diff --git a/libsoup/soup-session.c b/libsoup/soup-session.c
21index 83421ef..8d6ac61 100644
22--- a/libsoup/soup-session.c
23+++ b/libsoup/soup-session.c
24@@ -1189,12 +1189,18 @@ soup_session_redirect_message (SoupSession *session, SoupMessage *msg)
25 SOUP_ENCODING_NONE);
26 }
27
28+ /* Strip all credentials on cross-origin redirect. */
29+ if (!soup_uri_host_equal (soup_message_get_uri (msg), new_uri)) {
30+ soup_message_headers_remove (msg->request_headers, "Authorization");
31+ soup_message_set_auth (msg, NULL);
32+ }
33+
34 soup_message_set_uri (msg, new_uri);
35 soup_uri_free (new_uri);
36
37 soup_session_requeue_message (session, msg);
38 return TRUE;
39-}
40+}
41
42 static void
43 redirect_handler (SoupMessage *msg, gpointer user_data)
44
45--
462.34.1
47
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-4948.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-4948.patch
new file mode 100644
index 0000000000..b15b8c763d
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-4948.patch
@@ -0,0 +1,38 @@
1From dfdc9b3cc73e6fe88cc12792ba00e14642572339 Mon Sep 17 00:00:00 2001
2From: Milan Crha <mcrha@redhat.com>
3Date: Thu, 15 May 2025 17:49:11 +0200
4Subject: [PATCH] soup-multipart: Verify boundary limits for multipart body
5
6It could happen that the boundary started at a place which resulted into
7a negative number, which in an unsigned integer is a very large value.
8Check the body size is not a negative value before setting it.
9
10Closes https://gitlab.gnome.org/GNOME/libsoup/-/issues/449
11
12Part-of: <https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/463>
13
14CVE: CVE-2025-4948
15Upstream-Status: Backport
16[https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/463/diffs?commit_id=f2f28afe0b3b2b3009ab67d6874457ec6bac70c0]
17
18Signed-off-by: Changqing Li <changqing.li@windriver.com>
19---
20 libsoup/soup-multipart.c | 2 +-
21 1 file changed, 1 insertion(+), 1 deletion(-)
22
23diff --git a/libsoup/soup-multipart.c b/libsoup/soup-multipart.c
24index dd93973..ce2fc10 100644
25--- a/libsoup/soup-multipart.c
26+++ b/libsoup/soup-multipart.c
27@@ -214,7 +214,7 @@ soup_multipart_new_from_message (SoupMessageHeaders *headers,
28 */
29 part_body = soup_buffer_new_subbuffer (flattened,
30 split - flattened->data,
31- end - 2 - split);
32+ end - 2 >= split ? end - 2 - split : 0);
33 g_ptr_array_add (multipart->bodies, part_body);
34
35 start = end;
36--
372.34.1
38
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-4969.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-4969.patch
new file mode 100644
index 0000000000..d45b2a2cb0
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-4969.patch
@@ -0,0 +1,76 @@
1From 07b94e27afafebf31ef3cd868866a1e383750086 Mon Sep 17 00:00:00 2001
2From: Milan Crha <mcrha@redhat.com>
3Date: Mon, 19 May 2025 17:48:27 +0200
4Subject: [PATCH] soup-multipart: Verify array bounds before accessing its
5 members
6
7The boundary could be at a place which, calculated, pointed
8before the beginning of the array. Check the bounds, to avoid
9read out of the array bounds.
10
11Closes https://gitlab.gnome.org/GNOME/libsoup/-/issues/447
12
13Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/07b94e27afafebf31ef3cd868866a1e383750086]
14CVE: CVE-2025-4969
15Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
16---
17 libsoup/soup-multipart.c | 2 +-
18 tests/multipart-test.c | 22 ++++++++++++++++++++++
19 2 files changed, 23 insertions(+), 1 deletion(-)
20
21diff --git a/libsoup/soup-multipart.c b/libsoup/soup-multipart.c
22index dd93973..b3611db 100644
23--- a/libsoup/soup-multipart.c
24+++ b/libsoup/soup-multipart.c
25@@ -108,7 +108,7 @@ find_boundary (const char *start, const char *end,
26 continue;
27
28 /* Check that it's at start of line */
29- if (!(b == start || (b[-1] == '\n' && b[-2] == '\r')))
30+ if (!(b == start || (b - start >= 2 && b[-1] == '\n' && b[-2] == '\r')))
31 continue;
32
33 /* Check for "--" or "\r\n" after boundary */
34diff --git a/tests/multipart-test.c b/tests/multipart-test.c
35index 834b181..980eb68 100644
36--- a/tests/multipart-test.c
37+++ b/tests/multipart-test.c
38@@ -562,6 +562,27 @@ test_multipart_bounds_bad (void)
39 g_bytes_unref (bytes);
40 }
41
42+static void
43+test_multipart_bounds_bad_2 (void)
44+{
45+ SoupMultipart *multipart;
46+ SoupMessageHeaders *headers;
47+ GBytes *bytes;
48+ const char *raw_data = "\n--123\r\nline\r\n--123--\r";
49+
50+ headers = soup_message_headers_new (SOUP_MESSAGE_HEADERS_MULTIPART);
51+ soup_message_headers_append (headers, "Content-Type", "multipart/mixed; boundary=\"123\"");
52+
53+ bytes = g_bytes_new (raw_data, strlen (raw_data));
54+
55+ multipart = soup_multipart_new_from_message (headers, bytes);
56+ g_assert_nonnull (multipart);
57+
58+ soup_multipart_free (multipart);
59+ soup_message_headers_free (headers);
60+ g_bytes_unref (bytes);
61+}
62+
63 int
64 main (int argc, char **argv)
65 {
66@@ -593,6 +614,7 @@ main (int argc, char **argv)
67 g_test_add_data_func ("/multipart/async-small-reads", GINT_TO_POINTER (ASYNC_MULTIPART_SMALL_READS), test_multipart);
68 g_test_add_func ("/multipart/bounds-good", test_multipart_bounds_good);
69 g_test_add_func ("/multipart/bounds-bad", test_multipart_bounds_bad);
70+ g_test_add_func ("/multipart/bounds-bad-2", test_multipart_bounds_bad_2);
71
72 ret = g_test_run ();
73
74--
752.49.0
76
diff --git a/meta/recipes-support/libsoup/libsoup-2.4_2.74.3.bb b/meta/recipes-support/libsoup/libsoup-2.4_2.74.3.bb
index ee20530b64..0da309ebd8 100644
--- a/meta/recipes-support/libsoup/libsoup-2.4_2.74.3.bb
+++ b/meta/recipes-support/libsoup/libsoup-2.4_2.74.3.bb
@@ -12,7 +12,35 @@ DEPENDS = "glib-2.0 glib-2.0-native libxml2 sqlite3 libpsl"
12SHRT_VER = "${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}" 12SHRT_VER = "${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}"
13 13
14SRC_URI = "${GNOME_MIRROR}/libsoup/${SHRT_VER}/libsoup-${PV}.tar.xz \ 14SRC_URI = "${GNOME_MIRROR}/libsoup/${SHRT_VER}/libsoup-${PV}.tar.xz \
15 file://0001-Fix-build-with-libxml2-2.12.0-and-clang-17.patch" 15 file://0001-Fix-build-with-libxml2-2.12.0-and-clang-17.patch \
16 file://CVE-2024-52530.patch \
17 file://CVE-2024-52531-1.patch \
18 file://CVE-2024-52531-2.patch \
19 file://CVE-2024-52532-1.patch \
20 file://CVE-2024-52532-2.patch \
21 file://CVE-2024-52532-3.patch \
22 file://CVE-2025-32906-1.patch \
23 file://CVE-2025-32906-2.patch \
24 file://CVE-2025-32909.patch \
25 file://CVE-2025-46420.patch \
26 file://CVE-2025-32910-1.patch \
27 file://CVE-2025-32910-2.patch \
28 file://CVE-2025-32910-3.patch \
29 file://CVE-2025-32911_CVE-2025-32913-1.patch \
30 file://CVE-2025-32911_CVE-2025-32913-2.patch \
31 file://CVE-2025-32912-1.patch \
32 file://CVE-2025-32912-2.patch \
33 file://CVE-2025-32914.patch \
34 file://CVE-2025-4969.patch \
35 file://CVE-2025-32907.patch \
36 file://CVE-2025-32053.patch \
37 file://CVE-2025-32052.patch \
38 file://CVE-2025-32050.patch \
39 file://CVE-2025-46421.patch \
40 file://CVE-2025-4948.patch \
41 file://CVE-2025-4476.patch \
42 file://CVE-2025-2784.patch \
43"
16SRC_URI[sha256sum] = "e4b77c41cfc4c8c5a035fcdc320c7bc6cfb75ef7c5a034153df1413fa1d92f13" 44SRC_URI[sha256sum] = "e4b77c41cfc4c8c5a035fcdc320c7bc6cfb75ef7c5a034153df1413fa1d92f13"
17 45
18CVE_PRODUCT = "libsoup" 46CVE_PRODUCT = "libsoup"
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-2784.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-2784.patch
new file mode 100644
index 0000000000..b2e1c12d48
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-2784.patch
@@ -0,0 +1,137 @@
1From dd10ae267e33bcc35646610d7cc1841da77d05e7 Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Wed, 5 Feb 2025 14:39:42 -0600
4Subject: [PATCH] Fix CVE-2025-2784
5
6CVE: CVE-2025-2784
7Upstream-Status: Backport
8[https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/435/diffs?commit_id=242a10fbb12dbdc12d254bd8fc8669a0ac055304
9https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/442/diffs?commit_id=c415ad0b6771992e66c70edf373566c6e247089d]
10
11Signed-off-by: Changqing Li <changqing.li@windriver.com>
12---
13 .../content-sniffer/soup-content-sniffer.c | 10 ++--
14 tests/meson.build | 4 +-
15 tests/sniffing-test.c | 48 +++++++++++++++++++
16 3 files changed, 56 insertions(+), 6 deletions(-)
17
18diff --git a/libsoup/content-sniffer/soup-content-sniffer.c b/libsoup/content-sniffer/soup-content-sniffer.c
19index aeee2e2..a5e18d5 100644
20--- a/libsoup/content-sniffer/soup-content-sniffer.c
21+++ b/libsoup/content-sniffer/soup-content-sniffer.c
22@@ -638,8 +638,11 @@ sniff_text_or_binary (SoupContentSniffer *sniffer, GBytes *buffer)
23 }
24
25 static gboolean
26-skip_insignificant_space (const char *resource, int *pos, int resource_length)
27+skip_insignificant_space (const char *resource, gsize *pos, gsize resource_length)
28 {
29+ if (*pos >= resource_length)
30+ return TRUE;
31+
32 while ((resource[*pos] == '\x09') ||
33 (resource[*pos] == '\x20') ||
34 (resource[*pos] == '\x0A') ||
35@@ -659,7 +662,7 @@ sniff_feed_or_html (SoupContentSniffer *sniffer, GBytes *buffer)
36 gsize resource_length;
37 const char *resource = g_bytes_get_data (buffer, &resource_length);
38 resource_length = MIN (512, resource_length);
39- int pos = 0;
40+ gsize pos = 0;
41
42 if (resource_length < 3)
43 goto text_html;
44@@ -669,9 +672,6 @@ sniff_feed_or_html (SoupContentSniffer *sniffer, GBytes *buffer)
45 pos = 3;
46
47 look_for_tag:
48- if (pos > resource_length)
49- goto text_html;
50-
51 if (skip_insignificant_space (resource, &pos, resource_length))
52 goto text_html;
53
54diff --git a/tests/meson.build b/tests/meson.build
55index 7ef7ac5..95b13b8 100644
56--- a/tests/meson.build
57+++ b/tests/meson.build
58@@ -95,7 +95,9 @@ tests = [
59 {'name': 'server-auth'},
60 {'name': 'server-mem-limit'},
61 {'name': 'server'},
62- {'name': 'sniffing'},
63+ {'name': 'sniffing',
64+ 'depends': [test_resources],
65+ },
66 {'name': 'ssl',
67 'dependencies': [gnutls_dep],
68 'depends': mock_pkcs11_module,
69diff --git a/tests/sniffing-test.c b/tests/sniffing-test.c
70index 6116719..7857732 100644
71--- a/tests/sniffing-test.c
72+++ b/tests/sniffing-test.c
73@@ -342,6 +342,52 @@ test_disabled (gconstpointer data)
74 g_uri_unref (uri);
75 }
76
77+static const gsize MARKUP_LENGTH = strlen ("<!--") + strlen ("-->");
78+
79+static void
80+do_skip_whitespace_test (void)
81+{
82+ SoupContentSniffer *sniffer = soup_content_sniffer_new ();
83+ SoupMessage *msg = soup_message_new (SOUP_METHOD_GET, "http://example.org");
84+ const char *test_cases[] = {
85+ "",
86+ "<rdf:RDF",
87+ "<rdf:RDFxmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"",
88+ "<rdf:RDFxmlns=\"http://purl.org/rss/1.0/\"",
89+ };
90+
91+ soup_message_headers_set_content_type (soup_message_get_response_headers (msg), "text/html", NULL);
92+
93+ for (guint i = 0; i < G_N_ELEMENTS (test_cases); i++) {
94+ const char *trailing_data = test_cases[i];
95+ gsize leading_zeros = 512 - MARKUP_LENGTH - strlen (trailing_data);
96+ gsize testsize = MARKUP_LENGTH + leading_zeros + strlen (trailing_data);
97+ guint8 *data = g_malloc0 (testsize);
98+ guint8 *p = data;
99+ char *content_type;
100+ GBytes *buffer;
101+
102+ // Format of <!--[0x00 * $leading_zeros]-->$trailing_data
103+ memcpy (p, "<!--", strlen ("<!--"));
104+ p += strlen ("<!--");
105+ p += leading_zeros;
106+ memcpy (p, "-->", strlen ("-->"));
107+ p += strlen ("-->");
108+ if (strlen (trailing_data))
109+ memcpy (p, trailing_data, strlen (trailing_data));
110+ // Purposefully not NUL terminated.
111+
112+ buffer = g_bytes_new_take (g_steal_pointer (&data), testsize);
113+ content_type = soup_content_sniffer_sniff (sniffer, msg, buffer, NULL);
114+
115+ g_free (content_type);
116+ g_bytes_unref (buffer);
117+ }
118+
119+ g_object_unref (msg);
120+ g_object_unref (sniffer);
121+}
122+
123 int
124 main (int argc, char **argv)
125 {
126@@ -517,6 +563,8 @@ main (int argc, char **argv)
127 "/text_or_binary/home.gif",
128 test_disabled);
129
130+ g_test_add_func ("/sniffing/whitespace", do_skip_whitespace_test);
131+
132 ret = g_test_run ();
133
134 g_uri_unref (base_uri);
135--
1362.34.1
137
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32050.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32050.patch
new file mode 100644
index 0000000000..e5a4d747a1
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32050.patch
@@ -0,0 +1,29 @@
1From 30c86c9a284cf6f366ac87df0bca3e18a5de8671 Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Mon, 28 Oct 2024 12:29:48 -0500
4Subject: [PATCH] Fix using int instead of size_t for strcspn return
5
6CVE: CVE-2025-32050
7Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/9bb0a55de55c6940ced811a64fbca82fe93a9323]
8
9Signed-off-by: Changqing Li <changqing.li@windriver.com>
10---
11 libsoup/soup-headers.c | 2 +-
12 1 file changed, 1 insertion(+), 1 deletion(-)
13
14diff --git a/libsoup/soup-headers.c b/libsoup/soup-headers.c
15index 5fb32c2..52ef2ec 100644
16--- a/libsoup/soup-headers.c
17+++ b/libsoup/soup-headers.c
18@@ -906,7 +906,7 @@ append_param_quoted (GString *string,
19 const char *name,
20 const char *value)
21 {
22- int len;
23+ gsize len;
24
25 g_string_append (string, name);
26 g_string_append (string, "=\"");
27--
282.34.1
29
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32051-1.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32051-1.patch
new file mode 100644
index 0000000000..efeda48b11
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32051-1.patch
@@ -0,0 +1,29 @@
1From dc5db30989f385303c79ec3188c52e33f6f5886e Mon Sep 17 00:00:00 2001
2From: Ar Jun <pkillarjun@protonmail.com>
3Date: Sat, 16 Nov 2024 11:50:09 -0600
4Subject: [PATCH 1/2] Fix possible NULL deref in soup_uri_decode_data_uri
5
6CVE: CVE-2025-32051
7Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/0713ba4a719da938dc8facc89fca99cd0aa3069f]
8
9Signed-off-by: Changqing Li <changqing.li@windriver.com>
10---
11 libsoup/soup-uri-utils.c | 2 ++
12 1 file changed, 2 insertions(+)
13
14diff --git a/libsoup/soup-uri-utils.c b/libsoup/soup-uri-utils.c
15index be2b79b..0251279 100644
16--- a/libsoup/soup-uri-utils.c
17+++ b/libsoup/soup-uri-utils.c
18@@ -303,6 +303,8 @@ soup_uri_decode_data_uri (const char *uri,
19
20 uri_string = g_uri_to_string (soup_uri);
21 g_uri_unref (soup_uri);
22+ if (!uri_string)
23+ return NULL;
24
25 start = uri_string + 5;
26 comma = strchr (start, ',');
27--
282.34.1
29
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32051-2.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32051-2.patch
new file mode 100644
index 0000000000..24c184bb86
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32051-2.patch
@@ -0,0 +1,57 @@
1From 7d1557a60145927806c88d321e8322a9d9f49bb2 Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Fri, 22 Nov 2024 13:39:51 -0600
4Subject: [PATCH 2/2] soup_uri_decode_data_uri(): Handle URIs with a path
5 starting with //
6
7CVE: CVE-2025-32051
8Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/79cfd65c9bd8024cd45dd725c284766329873709]
9
10Signed-off-by: Changqing Li <changqing.li@windriver.com>
11---
12 libsoup/soup-uri-utils.c | 8 ++++++++
13 tests/uri-parsing-test.c | 2 ++
14 2 files changed, 10 insertions(+)
15
16diff --git a/libsoup/soup-uri-utils.c b/libsoup/soup-uri-utils.c
17index 0251279..1ff11cd 100644
18--- a/libsoup/soup-uri-utils.c
19+++ b/libsoup/soup-uri-utils.c
20@@ -286,6 +286,7 @@ soup_uri_decode_data_uri (const char *uri,
21 gboolean base64 = FALSE;
22 char *uri_string;
23 GBytes *bytes;
24+ const char *path;
25
26 g_return_val_if_fail (uri != NULL, NULL);
27
28@@ -301,6 +302,13 @@ soup_uri_decode_data_uri (const char *uri,
29 if (content_type)
30 *content_type = NULL;
31
32+ /* g_uri_to_string() is picky about paths that start with `//` and will assert. */
33+ path = g_uri_get_path (soup_uri);
34+ if (path[0] == '/' && path[1] == '/') {
35+ g_uri_unref (soup_uri);
36+ return NULL;
37+ }
38+
39 uri_string = g_uri_to_string (soup_uri);
40 g_uri_unref (soup_uri);
41 if (!uri_string)
42diff --git a/tests/uri-parsing-test.c b/tests/uri-parsing-test.c
43index 1f16273..418391e 100644
44--- a/tests/uri-parsing-test.c
45+++ b/tests/uri-parsing-test.c
46@@ -141,6 +141,8 @@ static struct {
47 { "data:text/plain;base64,aGVsbG8=", "hello", "text/plain" },
48 { "data:text/plain;base64,invalid=", "", "text/plain" },
49 { "data:,", "", CONTENT_TYPE_DEFAULT },
50+ { "data:.///", NULL, NULL },
51+ { "data:/.//", NULL, NULL },
52 };
53
54 static void
55--
562.34.1
57
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32052.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32052.patch
new file mode 100644
index 0000000000..78b712070b
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32052.patch
@@ -0,0 +1,31 @@
1From 779bcb279b1dc4eb8bcb22c5e727b1174630c3fc Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Sat, 16 Nov 2024 12:07:30 -0600
4Subject: [PATCH] Fix heap buffer overflow in soup_content_sniffer_sniff
5
6Co-Author: Ar Jun <pkillarjun@protonmail.com>
7
8CVE: CVE-2025-32052
9Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/f182429e5b1fc034050510da20c93256c4fa9652]
10
11Signed-off-by: Changqing Li <changqing.li@windriver.com>
12---
13 libsoup/content-sniffer/soup-content-sniffer.c | 2 +-
14 1 file changed, 1 insertion(+), 1 deletion(-)
15
16diff --git a/libsoup/content-sniffer/soup-content-sniffer.c b/libsoup/content-sniffer/soup-content-sniffer.c
17index 23d5aaa..aeee2e2 100644
18--- a/libsoup/content-sniffer/soup-content-sniffer.c
19+++ b/libsoup/content-sniffer/soup-content-sniffer.c
20@@ -529,7 +529,7 @@ sniff_unknown (SoupContentSniffer *sniffer, GBytes *buffer,
21 guint index_pattern = 0;
22 gboolean skip_row = FALSE;
23
24- while ((index_stream < resource_length) &&
25+ while ((index_stream < resource_length - 1) &&
26 (index_pattern <= type_row->pattern_length)) {
27 /* Skip insignificant white space ("WS" in the spec) */
28 if (type_row->pattern[index_pattern] == ' ') {
29--
302.34.1
31
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32053.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32053.patch
new file mode 100644
index 0000000000..93fa69e06c
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32053.patch
@@ -0,0 +1,40 @@
1From 819dbc0fcf174b8182cdb279f7be15ea1cde649f Mon Sep 17 00:00:00 2001
2From: Ar Jun <pkillarjun@protonmail.com>
3Date: Mon, 18 Nov 2024 14:59:51 -0600
4Subject: [PATCH] Fix heap buffer overflow in
5 soup-content-sniffer.c:sniff_feed_or_html()
6
7CVE: CVE-2025-32053
8Upstream-Status: Backport
9[https://gitlab.gnome.org/GNOME/libsoup/-/commit/eaed42ca8d40cd9ab63764e3d63641180505f40a]
10
11Signed-off-by: Changqing Li <changqing.li@windriver.com>
12---
13 libsoup/content-sniffer/soup-content-sniffer.c | 4 ++--
14 1 file changed, 2 insertions(+), 2 deletions(-)
15
16diff --git a/libsoup/content-sniffer/soup-content-sniffer.c b/libsoup/content-sniffer/soup-content-sniffer.c
17index 2351c3f..23d5aaa 100644
18--- a/libsoup/content-sniffer/soup-content-sniffer.c
19+++ b/libsoup/content-sniffer/soup-content-sniffer.c
20@@ -646,7 +646,7 @@ skip_insignificant_space (const char *resource, int *pos, int resource_length)
21 (resource[*pos] == '\x0D')) {
22 *pos = *pos + 1;
23
24- if (*pos > resource_length)
25+ if (*pos >= resource_length)
26 return TRUE;
27 }
28
29@@ -709,7 +709,7 @@ sniff_feed_or_html (SoupContentSniffer *sniffer, GBytes *buffer)
30 do {
31 pos++;
32
33- if (pos > resource_length)
34+ if ((pos + 1) > resource_length)
35 goto text_html;
36 } while (resource[pos] != '>');
37
38--
392.34.1
40
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32907-1.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32907-1.patch
new file mode 100644
index 0000000000..026a38c39a
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32907-1.patch
@@ -0,0 +1,200 @@
1From 4741bc288ece52f5dbaebc568e72ce14da3e2757 Mon Sep 17 00:00:00 2001
2From: Milan Crha <mcrha@redhat.com>
3Date: Tue, 15 Apr 2025 12:17:39 +0200
4Subject: [PATCH 1/2] soup-message-headers: Correct merge of ranges
5
6It had been skipping every second range, which generated an array
7of a lot of insane ranges, causing large memory usage by the server.
8
9Closes #428
10
11Part-of: <https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/452>
12
13CVE: CVE-2025-32907
14Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/452/commits]
15
16Signed-off-by: Changqing Li <changqing.li@windriver.com>
17---
18 libsoup/soup-message-headers.c | 1 +
19 tests/meson.build | 1 +
20 tests/server-mem-limit-test.c | 144 +++++++++++++++++++++++++++++++++
21 3 files changed, 146 insertions(+)
22 create mode 100644 tests/server-mem-limit-test.c
23
24diff --git a/libsoup/soup-message-headers.c b/libsoup/soup-message-headers.c
25index 95e2c31..d69d6e8 100644
26--- a/libsoup/soup-message-headers.c
27+++ b/libsoup/soup-message-headers.c
28@@ -1210,6 +1210,7 @@ soup_message_headers_get_ranges_internal (SoupMessageHeaders *hdrs,
29 if (cur->start <= prev->end) {
30 prev->end = MAX (prev->end, cur->end);
31 g_array_remove_index (array, i);
32+ i--;
33 }
34 }
35 }
36diff --git a/tests/meson.build b/tests/meson.build
37index 9bf88be..7ef7ac5 100644
38--- a/tests/meson.build
39+++ b/tests/meson.build
40@@ -93,6 +93,7 @@ tests = [
41 {'name': 'samesite'},
42 {'name': 'session'},
43 {'name': 'server-auth'},
44+ {'name': 'server-mem-limit'},
45 {'name': 'server'},
46 {'name': 'sniffing'},
47 {'name': 'ssl',
48diff --git a/tests/server-mem-limit-test.c b/tests/server-mem-limit-test.c
49new file mode 100644
50index 0000000..98f1c40
51--- /dev/null
52+++ b/tests/server-mem-limit-test.c
53@@ -0,0 +1,144 @@
54+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */
55+/*
56+ * Copyright (C) 2025 Red Hat <www.redhat.com>
57+ */
58+
59+#include "test-utils.h"
60+
61+#include <sys/resource.h>
62+
63+/*
64+ This test limits memory usage to trigger too large buffer allocation crash.
65+ As restoring the limits back to what it was does not always work, it's split
66+ out of the server-test.c test with copied minimal server code.
67+ */
68+
69+typedef struct {
70+ SoupServer *server;
71+ GUri *base_uri, *ssl_base_uri;
72+ GSList *handlers;
73+} ServerData;
74+
75+static void
76+server_setup_nohandler (ServerData *sd, gconstpointer test_data)
77+{
78+ sd->server = soup_test_server_new (SOUP_TEST_SERVER_IN_THREAD);
79+ sd->base_uri = soup_test_server_get_uri (sd->server, "http", NULL);
80+ if (tls_available)
81+ sd->ssl_base_uri = soup_test_server_get_uri (sd->server, "https", NULL);
82+}
83+
84+static void
85+server_add_handler (ServerData *sd,
86+ const char *path,
87+ SoupServerCallback callback,
88+ gpointer user_data,
89+ GDestroyNotify destroy)
90+{
91+ soup_server_add_handler (sd->server, path, callback, user_data, destroy);
92+ sd->handlers = g_slist_prepend (sd->handlers, g_strdup (path));
93+}
94+
95+static void
96+server_setup (ServerData *sd, gconstpointer test_data)
97+{
98+ server_setup_nohandler (sd, test_data);
99+}
100+
101+static void
102+server_teardown (ServerData *sd, gconstpointer test_data)
103+{
104+ GSList *iter;
105+
106+ for (iter = sd->handlers; iter; iter = iter->next)
107+ soup_server_remove_handler (sd->server, iter->data);
108+ g_slist_free_full (sd->handlers, g_free);
109+
110+ g_clear_pointer (&sd->server, soup_test_server_quit_unref);
111+ g_clear_pointer (&sd->base_uri, g_uri_unref);
112+ g_clear_pointer (&sd->ssl_base_uri, g_uri_unref);
113+}
114+
115+static void
116+server_file_callback (SoupServer *server,
117+ SoupServerMessage *msg,
118+ const char *path,
119+ GHashTable *query,
120+ gpointer data)
121+{
122+ void *mem;
123+
124+ g_assert_cmpstr (path, ==, "/file");
125+ g_assert_cmpstr (soup_server_message_get_method (msg), ==, SOUP_METHOD_GET);
126+
127+ mem = g_malloc0 (sizeof (char) * 1024 * 1024);
128+ /* fedora-scan CI claims a warning about possibly leaked `mem` variable, thus use
129+ the copy and free it explicitly, to workaround the false positive; the g_steal_pointer()
130+ did not help for the malloc-ed memory */
131+ soup_server_message_set_response (msg, "application/octet-stream", SOUP_MEMORY_COPY, mem, sizeof (char) * 1024 *1024);
132+ soup_server_message_set_status (msg, SOUP_STATUS_OK, NULL);
133+ g_free (mem);
134+}
135+
136+static void
137+do_ranges_overlaps_test (ServerData *sd, gconstpointer test_data)
138+{
139+ SoupSession *session;
140+ SoupMessage *msg;
141+ GString *range;
142+ GUri *uri;
143+ const char *chunk = ",0,0,0,0,0,0,0,0,0,0,0";
144+
145+ g_test_bug ("428");
146+
147+ #ifdef G_OS_WIN32
148+ g_test_skip ("Cannot run under windows");
149+ return;
150+ #endif
151+
152+ range = g_string_sized_new (99 * 1024);
153+ g_string_append (range, "bytes=1024");
154+ while (range->len < 99 * 1024)
155+ g_string_append (range, chunk);
156+
157+ session = soup_test_session_new (NULL);
158+ server_add_handler (sd, "/file", server_file_callback, NULL, NULL);
159+
160+ uri = g_uri_parse_relative (sd->base_uri, "/file", SOUP_HTTP_URI_FLAGS, NULL);
161+
162+ msg = soup_message_new_from_uri ("GET", uri);
163+ soup_message_headers_append (soup_message_get_request_headers (msg), "Range", range->str);
164+
165+ soup_test_session_send_message (session, msg);
166+
167+ soup_test_assert_message_status (msg, SOUP_STATUS_PARTIAL_CONTENT);
168+
169+ g_object_unref (msg);
170+
171+ g_string_free (range, TRUE);
172+ g_uri_unref (uri);
173+
174+ soup_test_session_abort_unref (session);
175+}
176+
177+int
178+main (int argc, char **argv)
179+{
180+ int ret;
181+
182+ test_init (argc, argv, NULL);
183+
184+ #ifndef G_OS_WIN32
185+ struct rlimit new_rlimit = { 1024 * 1024 * 64, 1024 * 1024 * 64 };
186+ /* limit memory usage, to trigger too large memory allocation abort */
187+ g_assert_cmpint (setrlimit (RLIMIT_DATA, &new_rlimit), ==, 0);
188+ #endif
189+
190+ g_test_add ("/server-mem/range-overlaps", ServerData, NULL,
191+ server_setup, do_ranges_overlaps_test, server_teardown);
192+
193+ ret = g_test_run ();
194+
195+ test_cleanup ();
196+ return ret;
197+}
198--
1992.34.1
200
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32907-2.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32907-2.patch
new file mode 100644
index 0000000000..c1b6a1feba
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32907-2.patch
@@ -0,0 +1,68 @@
1From 85716d2769b3e1acda024d2c7cbfb68139c5d90b Mon Sep 17 00:00:00 2001
2From: Milan Crha <mcrha@redhat.com>
3Date: Tue, 13 May 2025 14:20:46 +0200
4Subject: [PATCH 2/2] server-mem-limit-test: Limit memory usage only when not
5 built witha sanitizer
6
7A build with -Db_sanitize=address crashes with failed mmap(), which is done
8inside libasan. The test requires 20.0TB of virtual memory when running with
9the sanitizer, which is beyond unsigned integer limits and may not trigger
10the bug anyway.
11
12Part-of: <https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/452>
13
14CVE: CVE-2025-32907
15Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/452/commits]
16
17Signed-off-by: Changqing Li <changqing.li@windriver.com>
18---
19 meson.build | 4 ++++
20 tests/server-mem-limit-test.c | 13 +++++++++----
21 2 files changed, 13 insertions(+), 4 deletions(-)
22
23diff --git a/meson.build b/meson.build
24index 73a9fa0..a9531a4 100644
25--- a/meson.build
26+++ b/meson.build
27@@ -374,6 +374,10 @@ configinc = include_directories('.')
28
29 prefix = get_option('prefix')
30
31+if get_option('b_sanitize') != 'none'
32+ cdata.set_quoted('B_SANITIZE_OPTION', get_option('b_sanitize'))
33+endif
34+
35 cdata.set_quoted('PACKAGE_VERSION', soup_version)
36 cdata.set_quoted('LOCALEDIR', join_paths(prefix, get_option('localedir')))
37 cdata.set_quoted('GETTEXT_PACKAGE', libsoup_api_name)
38diff --git a/tests/server-mem-limit-test.c b/tests/server-mem-limit-test.c
39index 98f1c40..65dc875 100644
40--- a/tests/server-mem-limit-test.c
41+++ b/tests/server-mem-limit-test.c
42@@ -126,14 +126,19 @@ main (int argc, char **argv)
43 {
44 int ret;
45
46- test_init (argc, argv, NULL);
47-
48- #ifndef G_OS_WIN32
49- struct rlimit new_rlimit = { 1024 * 1024 * 64, 1024 * 1024 * 64 };
50+ /* a build with an address sanitizer may crash on mmap() with the limit,
51+ thus skip the limit set in such case, even it may not necessarily
52+ trigger the bug if it regresses */
53+ #if !defined(G_OS_WIN32) && !defined(B_SANITIZE_OPTION)
54+ struct rlimit new_rlimit = { 1024UL * 1024UL * 1024UL * 2UL, 1024UL * 1024UL * 1024UL * 2UL };
55 /* limit memory usage, to trigger too large memory allocation abort */
56 g_assert_cmpint (setrlimit (RLIMIT_DATA, &new_rlimit), ==, 0);
57+ #else
58+ g_message ("server-mem-limit-test: Running without memory limit");
59 #endif
60
61+ test_init (argc, argv, NULL);
62+
63 g_test_add ("/server-mem/range-overlaps", ServerData, NULL,
64 server_setup, do_ranges_overlaps_test, server_teardown);
65
66--
672.34.1
68
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32908-1.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32908-1.patch
new file mode 100644
index 0000000000..8ad0e16d45
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32908-1.patch
@@ -0,0 +1,89 @@
1From 56b8eb061a02c4e99644d6f1e62e601d0d814beb Mon Sep 17 00:00:00 2001
2From: Milan Crha <mcrha@redhat.com>
3Date: Tue, 15 Apr 2025 09:59:05 +0200
4Subject: [PATCH 1/2] soup-server-http2: Check validity of the constructed
5 connection URI
6
7The HTTP/2 pseudo-headers can contain invalid values, which the GUri rejects
8and returns NULL, but the soup-server did not check the validity and could
9abort the server itself later in the code.
10
11Closes #429
12
13CVE: CVE-2025-32908
14Upstream-Status: Backport
15[https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/451/diffs?commit_id=a792b23ab87cacbf4dd9462bf7b675fa678efbae]
16
17Signed-off-by: Changqing Li <changqing.li@windriver.com>
18---
19 .../http2/soup-server-message-io-http2.c | 4 +++
20 tests/http2-test.c | 28 +++++++++++++++++++
21 2 files changed, 32 insertions(+)
22
23diff --git a/libsoup/server/http2/soup-server-message-io-http2.c b/libsoup/server/http2/soup-server-message-io-http2.c
24index 943ecfd..f1fe2d5 100644
25--- a/libsoup/server/http2/soup-server-message-io-http2.c
26+++ b/libsoup/server/http2/soup-server-message-io-http2.c
27@@ -771,9 +771,13 @@ on_frame_recv_callback (nghttp2_session *session,
28 char *uri_string;
29 GUri *uri;
30
31+ if (msg_io->scheme == NULL || msg_io->authority == NULL || msg_io->path == NULL)
32+ return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
33 uri_string = g_strdup_printf ("%s://%s%s", msg_io->scheme, msg_io->authority, msg_io->path);
34 uri = g_uri_parse (uri_string, SOUP_HTTP_URI_FLAGS, NULL);
35 g_free (uri_string);
36+ if (uri == NULL)
37+ return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
38 soup_server_message_set_uri (msg_io->msg, uri);
39 g_uri_unref (uri);
40
41diff --git a/tests/http2-test.c b/tests/http2-test.c
42index ef097f4..df86d9b 100644
43--- a/tests/http2-test.c
44+++ b/tests/http2-test.c
45@@ -1241,6 +1241,30 @@ do_connection_closed_test (Test *test, gconstpointer data)
46 g_uri_unref (uri);
47 }
48
49+static void
50+do_broken_pseudo_header_test (Test *test, gconstpointer data)
51+{
52+ char *path;
53+ SoupMessage *msg;
54+ GUri *uri;
55+ GBytes *body = NULL;
56+ GError *error = NULL;
57+
58+ uri = g_uri_parse_relative (base_uri, "/ag", SOUP_HTTP_URI_FLAGS, NULL);
59+
60+ /* an ugly cheat to construct a broken URI, which can be sent from other libs */
61+ path = (char *) g_uri_get_path (uri);
62+ path[1] = '%';
63+
64+ msg = soup_message_new_from_uri (SOUP_METHOD_GET, uri);
65+ body = soup_test_session_async_send (test->session, msg, NULL, &error);
66+ g_assert_error (error, G_IO_ERROR, G_IO_ERROR_PARTIAL_INPUT);
67+ g_assert_null (body);
68+ g_clear_error (&error);
69+ g_object_unref (msg);
70+ g_uri_unref (uri);
71+}
72+
73 static gboolean
74 unpause_message (SoupServerMessage *msg)
75 {
76@@ -1549,6 +1573,10 @@ main (int argc, char **argv)
77 setup_session,
78 do_connection_closed_test,
79 teardown_session);
80+ g_test_add ("/http2/broken-pseudo-header", Test, NULL,
81+ setup_session,
82+ do_broken_pseudo_header_test,
83+ teardown_session);
84
85 ret = g_test_run ();
86
87--
882.34.1
89
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32908-2.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32908-2.patch
new file mode 100644
index 0000000000..b53c7efb7b
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32908-2.patch
@@ -0,0 +1,53 @@
1From aad0dcf22ee9fdfefa6b72055268240cceccfe4c Mon Sep 17 00:00:00 2001
2From: Milan Crha <mcrha@redhat.com>
3Date: Mon, 28 Apr 2025 10:55:42 +0200
4Subject: [PATCH 2/2] soup-server-http2: Correct check of the validity of the
5 constructed connection URI
6
7RFC 5740: the CONNECT has unset the "scheme" and "path", thus allow them unset.
8
9The commit a792b23ab87cacbf4dd9462bf7b675fa678efbae also missed to decrement
10the `io->in_callback` in the early returns.
11
12Related to #429
13
14CVE: CVE-2025-32908
15Upstream-Status: Backport
16[https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/453/diffs?commit_id=527428a033df573ef4558ce1106e080fd9ec5c71]
17
18Signed-off-by: Changqing Li <changqing.li@windriver.com>
19---
20 .../server/http2/soup-server-message-io-http2.c | 15 ++++++++++-----
21 1 file changed, 10 insertions(+), 5 deletions(-)
22
23diff --git a/libsoup/server/http2/soup-server-message-io-http2.c b/libsoup/server/http2/soup-server-message-io-http2.c
24index f1fe2d5..913afb4 100644
25--- a/libsoup/server/http2/soup-server-message-io-http2.c
26+++ b/libsoup/server/http2/soup-server-message-io-http2.c
27@@ -771,13 +771,18 @@ on_frame_recv_callback (nghttp2_session *session,
28 char *uri_string;
29 GUri *uri;
30
31- if (msg_io->scheme == NULL || msg_io->authority == NULL || msg_io->path == NULL)
32- return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
33- uri_string = g_strdup_printf ("%s://%s%s", msg_io->scheme, msg_io->authority, msg_io->path);
34+ if (msg_io->authority == NULL) {
35+ io->in_callback--;
36+ return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
37+ }
38+ /* RFC 5740: the CONNECT has unset the "scheme" and "path", but the GUri requires the scheme, thus let it be "(null)" */
39+ uri_string = g_strdup_printf ("%s://%s%s", msg_io->scheme, msg_io->authority, msg_io->path == NULL ? "" : msg_io->path);
40 uri = g_uri_parse (uri_string, SOUP_HTTP_URI_FLAGS, NULL);
41 g_free (uri_string);
42- if (uri == NULL)
43- return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
44+ if (uri == NULL) {
45+ io->in_callback--;
46+ return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
47+ }
48 soup_server_message_set_uri (msg_io->msg, uri);
49 g_uri_unref (uri);
50
51--
522.34.1
53
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32914.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32914.patch
new file mode 100644
index 0000000000..0ada9f3134
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32914.patch
@@ -0,0 +1,111 @@
1From 5bfcf8157597f2d327050114fb37ff600004dbcf Mon Sep 17 00:00:00 2001
2From: Milan Crha <mcrha@redhat.com>
3Date: Tue, 15 Apr 2025 09:03:00 +0200
4Subject: [PATCH] multipart: Fix read out of buffer bounds under
5 soup_multipart_new_from_message()
6
7This is CVE-2025-32914, special crafted input can cause read out of buffer bounds
8of the body argument.
9
10Closes #436
11
12Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/5bfcf8157597f2d327050114fb37ff600004dbcf]
13CVE: CVE-2025-32914
14Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
15---
16 libsoup/soup-multipart.c | 2 +-
17 tests/multipart-test.c | 58 ++++++++++++++++++++++++++++++++++++++++
18 2 files changed, 59 insertions(+), 1 deletion(-)
19
20diff --git a/libsoup/soup-multipart.c b/libsoup/soup-multipart.c
21index 2421c91f8..102ce3722 100644
22--- a/libsoup/soup-multipart.c
23+++ b/libsoup/soup-multipart.c
24@@ -173,7 +173,7 @@ soup_multipart_new_from_message (SoupMessageHeaders *headers,
25 return NULL;
26 }
27
28- split = strstr (start, "\r\n\r\n");
29+ split = g_strstr_len (start, body_end - start, "\r\n\r\n");
30 if (!split || split > end) {
31 soup_multipart_free (multipart);
32 return NULL;
33diff --git a/tests/multipart-test.c b/tests/multipart-test.c
34index 2c0e7e969..f5b986889 100644
35--- a/tests/multipart-test.c
36+++ b/tests/multipart-test.c
37@@ -471,6 +471,62 @@ test_multipart (gconstpointer data)
38 loop = NULL;
39 }
40
41+static void
42+test_multipart_bounds_good (void)
43+{
44+ #define TEXT "line1\r\nline2"
45+ SoupMultipart *multipart;
46+ SoupMessageHeaders *headers, *set_headers = NULL;
47+ GBytes *bytes, *set_bytes = NULL;
48+ const char *raw_data = "--123\r\nContent-Type: text/plain;\r\n\r\n" TEXT "\r\n--123--\r\n";
49+ gboolean success;
50+
51+ headers = soup_message_headers_new (SOUP_MESSAGE_HEADERS_MULTIPART);
52+ soup_message_headers_append (headers, "Content-Type", "multipart/mixed; boundary=\"123\"");
53+
54+ bytes = g_bytes_new (raw_data, strlen (raw_data));
55+
56+ multipart = soup_multipart_new_from_message (headers, bytes);
57+
58+ g_assert_nonnull (multipart);
59+ g_assert_cmpint (soup_multipart_get_length (multipart), ==, 1);
60+ success = soup_multipart_get_part (multipart, 0, &set_headers, &set_bytes);
61+ g_assert_true (success);
62+ g_assert_nonnull (set_headers);
63+ g_assert_nonnull (set_bytes);
64+ g_assert_cmpint (strlen (TEXT), ==, g_bytes_get_size (set_bytes));
65+ g_assert_cmpstr ("text/plain", ==, soup_message_headers_get_content_type (set_headers, NULL));
66+ g_assert_cmpmem (TEXT, strlen (TEXT), g_bytes_get_data (set_bytes, NULL), g_bytes_get_size (set_bytes));
67+
68+ soup_message_headers_unref (headers);
69+ g_bytes_unref (bytes);
70+
71+ soup_multipart_free (multipart);
72+
73+ #undef TEXT
74+}
75+
76+static void
77+test_multipart_bounds_bad (void)
78+{
79+ SoupMultipart *multipart;
80+ SoupMessageHeaders *headers;
81+ GBytes *bytes;
82+ const char *raw_data = "--123\r\nContent-Type: text/plain;\r\nline1\r\nline2\r\n--123--\r\n";
83+
84+ headers = soup_message_headers_new (SOUP_MESSAGE_HEADERS_MULTIPART);
85+ soup_message_headers_append (headers, "Content-Type", "multipart/mixed; boundary=\"123\"");
86+
87+ bytes = g_bytes_new (raw_data, strlen (raw_data));
88+
89+ /* it did read out of raw_data/bytes bounds */
90+ multipart = soup_multipart_new_from_message (headers, bytes);
91+ g_assert_null (multipart);
92+
93+ soup_message_headers_unref (headers);
94+ g_bytes_unref (bytes);
95+}
96+
97 int
98 main (int argc, char **argv)
99 {
100@@ -498,6 +554,8 @@ main (int argc, char **argv)
101 g_test_add_data_func ("/multipart/sync", GINT_TO_POINTER (SYNC_MULTIPART), test_multipart);
102 g_test_add_data_func ("/multipart/async", GINT_TO_POINTER (ASYNC_MULTIPART), test_multipart);
103 g_test_add_data_func ("/multipart/async-small-reads", GINT_TO_POINTER (ASYNC_MULTIPART_SMALL_READS), test_multipart);
104+ g_test_add_func ("/multipart/bounds-good", test_multipart_bounds_good);
105+ g_test_add_func ("/multipart/bounds-bad", test_multipart_bounds_bad);
106
107 ret = g_test_run ();
108
109--
110GitLab
111
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-4476.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-4476.patch
new file mode 100644
index 0000000000..cd5619d620
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-4476.patch
@@ -0,0 +1,38 @@
1From e64c221f9c7d09b48b610c5626b3b8c400f0907c Mon Sep 17 00:00:00 2001
2From: Michael Catanzaro <mcatanzaro@redhat.com>
3Date: Thu, 8 May 2025 09:27:01 -0500
4Subject: [PATCH] auth-digest: fix crash in
5 soup_auth_digest_get_protection_space()
6
7We need to validate the Domain parameter in the WWW-Authenticate header.
8
9Unfortunately this crash only occurs when listening on default ports 80
10and 443, so there's no good way to test for this. The test would require
11running as root.
12
13Fixes #440
14
15Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/e64c221f9c7d09b48b610c5626b3b8c400f0907c]
16CVE: CVE-2025-4476
17Signed-off-by: Ashish Sharma <asharma@mvista.com>
18
19
20 libsoup/auth/soup-auth-digest.c | 2 +-
21 1 file changed, 1 insertion(+), 1 deletion(-)
22
23diff --git a/libsoup/auth/soup-auth-digest.c b/libsoup/auth/soup-auth-digest.c
24index d8bb2910..292f2045 100644
25--- a/libsoup/auth/soup-auth-digest.c
26+++ b/libsoup/auth/soup-auth-digest.c
27@@ -220,7 +220,7 @@ soup_auth_digest_get_protection_space (SoupAuth *auth, GUri *source_uri)
28 if (uri &&
29 g_strcmp0 (g_uri_get_scheme (uri), g_uri_get_scheme (source_uri)) == 0 &&
30 g_uri_get_port (uri) == g_uri_get_port (source_uri) &&
31- !strcmp (g_uri_get_host (uri), g_uri_get_host (source_uri)))
32+ !g_strcmp0 (g_uri_get_host (uri), g_uri_get_host (source_uri)))
33 dir = g_strdup (g_uri_get_path (uri));
34 else
35 dir = NULL;
36--
37GitLab
38
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-46421.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-46421.patch
new file mode 100644
index 0000000000..72683d8fce
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-46421.patch
@@ -0,0 +1,139 @@
1From 85c5227eef7370832044eb918e8a99c0bcbab86f Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Wed, 5 Feb 2025 16:18:10 -0600
4Subject: [PATCH] session: Strip authentication credentails on cross-origin
5 redirect
6
7This should match the behavior of Firefox and Safari but not of Chromium.
8
9CVE: CVE-2025-46421
10Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/436/diffs?commit_id=3e5c26415811f19e7737238bb23305ffaf96f66b]
11
12Signed-off-by: Changqing Li <changqing.li@windriver.com>
13---
14 libsoup/soup-session.c | 6 ++++
15 tests/auth-test.c | 77 ++++++++++++++++++++++++++++++++++++++++++
16 2 files changed, 83 insertions(+)
17
18diff --git a/libsoup/soup-session.c b/libsoup/soup-session.c
19index 631bec0..9f00b05 100644
20--- a/libsoup/soup-session.c
21+++ b/libsoup/soup-session.c
22@@ -1230,6 +1230,12 @@ soup_session_redirect_message (SoupSession *session,
23 SOUP_ENCODING_NONE);
24 }
25
26+ /* Strip all credentials on cross-origin redirect. */
27+ if (!soup_uri_host_equal (soup_message_get_uri (msg), new_uri)) {
28+ soup_message_headers_remove_common (soup_message_get_request_headers (msg), SOUP_HEADER_AUTHORIZATION);
29+ soup_message_set_auth (msg, NULL);
30+ }
31+
32 soup_message_set_request_host_from_uri (msg, new_uri);
33 soup_message_set_uri (msg, new_uri);
34 g_uri_unref (new_uri);
35diff --git a/tests/auth-test.c b/tests/auth-test.c
36index 484097f..7c3b551 100644
37--- a/tests/auth-test.c
38+++ b/tests/auth-test.c
39@@ -1,6 +1,7 @@
40 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */
41
42 #include "test-utils.h"
43+#include "soup-uri-utils-private.h"
44
45 static const char *base_uri;
46 static GMainLoop *loop;
47@@ -1916,6 +1917,81 @@ do_missing_params_test (gconstpointer auth_header)
48 soup_test_server_quit_unref (server);
49 }
50
51+static void
52+redirect_server_callback (SoupServer *server,
53+ SoupServerMessage *msg,
54+ const char *path,
55+ GHashTable *query,
56+ gpointer user_data)
57+{
58+ static gboolean redirected = FALSE;
59+
60+ if (!redirected) {
61+ char *redirect_uri = g_uri_to_string (user_data);
62+ soup_server_message_set_redirect (msg, SOUP_STATUS_MOVED_PERMANENTLY, redirect_uri);
63+ g_free (redirect_uri);
64+ redirected = TRUE;
65+ return;
66+ }
67+
68+ g_assert_not_reached ();
69+}
70+
71+static gboolean
72+auth_for_redirect_callback (SoupMessage *msg, SoupAuth *auth, gboolean retrying, gpointer user_data)
73+{
74+ GUri *known_server_uri = user_data;
75+
76+ if (!soup_uri_host_equal (known_server_uri, soup_message_get_uri (msg)))
77+ return FALSE;
78+
79+ soup_auth_authenticate (auth, "user", "good-basic");
80+
81+ return TRUE;
82+}
83+
84+static void
85+do_strip_on_crossorigin_redirect (void)
86+{
87+ SoupSession *session;
88+ SoupMessage *msg;
89+ SoupServer *server1, *server2;
90+ SoupAuthDomain *auth_domain;
91+ GUri *uri;
92+ gint status;
93+
94+ server1 = soup_test_server_new (SOUP_TEST_SERVER_IN_THREAD);
95+ server2 = soup_test_server_new (SOUP_TEST_SERVER_IN_THREAD);
96+
97+ /* Both servers have the same credentials. */
98+ auth_domain = soup_auth_domain_basic_new ("realm", "auth-test", "auth-callback", server_basic_auth_callback, NULL);
99+ soup_auth_domain_add_path (auth_domain, "/");
100+ soup_server_add_auth_domain (server1, auth_domain);
101+ soup_server_add_auth_domain (server2, auth_domain);
102+ g_object_unref (auth_domain);
103+
104+ /* Server 1 asks for auth, then redirects to Server 2. */
105+ soup_server_add_handler (server1, NULL,
106+ redirect_server_callback,
107+ soup_test_server_get_uri (server2, "http", NULL), (GDestroyNotify)g_uri_unref);
108+ /* Server 2 requires auth. */
109+ soup_server_add_handler (server2, NULL, server_callback, NULL, NULL);
110+
111+ session = soup_test_session_new (NULL);
112+ uri = soup_test_server_get_uri (server1, "http", NULL);
113+ msg = soup_message_new_from_uri ("GET", uri);
114+ /* The client only sends credentials for the host it knows. */
115+ g_signal_connect (msg, "authenticate", G_CALLBACK (auth_for_redirect_callback), uri);
116+
117+ status = soup_test_session_send_message (session, msg);
118+
119+ g_assert_cmpint (status, ==, SOUP_STATUS_UNAUTHORIZED);
120+
121+ g_uri_unref (uri);
122+ soup_test_server_quit_unref (server1);
123+ soup_test_server_quit_unref (server2);
124+}
125+
126 int
127 main (int argc, char **argv)
128 {
129@@ -1949,6 +2025,7 @@ main (int argc, char **argv)
130 g_test_add_func ("/auth/auth-uri", do_auth_uri_test);
131 g_test_add_func ("/auth/cancel-request-on-authenticate", do_cancel_request_on_authenticate);
132 g_test_add_func ("/auth/multiple-algorithms", do_multiple_digest_algorithms);
133+ g_test_add_func ("/auth/strip-on-crossorigin-redirect", do_strip_on_crossorigin_redirect);
134 g_test_add_data_func ("/auth/missing-params/realm", "Digest qop=\"auth\"", do_missing_params_test);
135 g_test_add_data_func ("/auth/missing-params/nonce", "Digest realm=\"auth-test\", qop=\"auth,auth-int\", opaque=\"5ccc069c403ebaf9f0171e9517f40e41\"", do_missing_params_test);
136 g_test_add_data_func ("/auth/missing-params/nonce-md5-sess", "Digest realm=\"auth-test\", qop=\"auth,auth-int\", opaque=\"5ccc069c403ebaf9f0171e9517f40e41\" algorithm=\"MD5-sess\"", do_missing_params_test);
137--
1382.34.1
139
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-4948.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-4948.patch
new file mode 100644
index 0000000000..07c85f5381
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-4948.patch
@@ -0,0 +1,97 @@
1From a23ce8f8e60e79990e26376c8b0d40841aed4b81 Mon Sep 17 00:00:00 2001
2From: Milan Crha <mcrha@redhat.com>
3Date: Thu, 15 May 2025 17:49:11 +0200
4Subject: [PATCH] soup-multipart: Verify boundary limits for multipart body
5
6It could happen that the boundary started at a place which resulted into
7a negative number, which in an unsigned integer is a very large value.
8Check the body size is not a negative value before setting it.
9
10Closes https://gitlab.gnome.org/GNOME/libsoup/-/issues/449
11
12Part-of: <https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/463>
13
14CVE: CVE-2025-4948
15Upstream-Status: Backport
16[https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/463/diffs?commit_id=f2f28afe0b3b2b3009ab67d6874457ec6bac70c0]
17
18Signed-off-by: Changqing Li <changqing.li@windriver.com>
19---
20 libsoup/soup-multipart.c | 2 +-
21 tests/multipart-test.c | 40 ++++++++++++++++++++++++++++++++++++++++
22 2 files changed, 41 insertions(+), 1 deletion(-)
23
24diff --git a/libsoup/soup-multipart.c b/libsoup/soup-multipart.c
25index e1c442e..27257e4 100644
26--- a/libsoup/soup-multipart.c
27+++ b/libsoup/soup-multipart.c
28@@ -204,7 +204,7 @@ soup_multipart_new_from_message (SoupMessageHeaders *headers,
29 */
30 part_body = g_bytes_new_from_bytes (body, // FIXME
31 split - body_data,
32- end - 2 - split);
33+ end - 2 >= split ? end - 2 - split : 0);
34 g_ptr_array_add (multipart->bodies, part_body);
35
36 start = end;
37diff --git a/tests/multipart-test.c b/tests/multipart-test.c
38index 84852e2..2ae888c 100644
39--- a/tests/multipart-test.c
40+++ b/tests/multipart-test.c
41@@ -548,6 +548,45 @@ test_multipart_bounds_bad_2 (void)
42 g_bytes_unref (bytes);
43 }
44
45+static void
46+test_multipart_too_large (void)
47+{
48+ const char *raw_body =
49+ "-------------------\r\n"
50+ "-\n"
51+ "Cont\"\r\n"
52+ "Content-Tynt----e:n\x8erQK\r\n"
53+ "Content-Disposition: name= form-; name=\"file\"; filename=\"ype:i/ -d; ----\xae\r\n"
54+ "Content-Typimag\x01/png--\\\n"
55+ "\r\n"
56+ "---:\n\r\n"
57+ "\r\n"
58+ "-------------------------------------\r\n"
59+ "---------\r\n"
60+ "----------------------";
61+ GBytes *body;
62+ GHashTable *params;
63+ SoupMessageHeaders *headers;
64+ SoupMultipart *multipart;
65+
66+ params = g_hash_table_new (g_str_hash, g_str_equal);
67+ g_hash_table_insert (params, (gpointer) "boundary", (gpointer) "-----------------");
68+ headers = soup_message_headers_new (SOUP_MESSAGE_HEADERS_MULTIPART);
69+ soup_message_headers_set_content_type (headers, "multipart/form-data", params);
70+ g_hash_table_unref (params);
71+
72+ body = g_bytes_new_static (raw_body, strlen (raw_body));
73+ multipart = soup_multipart_new_from_message (headers, body);
74+ soup_message_headers_unref (headers);
75+ g_bytes_unref (body);
76+
77+ g_assert_nonnull (multipart);
78+ g_assert_cmpint (soup_multipart_get_length (multipart), ==, 1);
79+ g_assert_true (soup_multipart_get_part (multipart, 0, &headers, &body));
80+ g_assert_cmpint (g_bytes_get_size (body), ==, 0);
81+ soup_multipart_free (multipart);
82+}
83+
84 int
85 main (int argc, char **argv)
86 {
87@@ -578,6 +617,7 @@ main (int argc, char **argv)
88 g_test_add_func ("/multipart/bounds-good", test_multipart_bounds_good);
89 g_test_add_func ("/multipart/bounds-bad", test_multipart_bounds_bad);
90 g_test_add_func ("/multipart/bounds-bad-2", test_multipart_bounds_bad_2);
91+ g_test_add_func ("/multipart/too-large", test_multipart_too_large);
92
93 ret = g_test_run ();
94
95--
962.34.1
97
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-4969.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-4969.patch
new file mode 100644
index 0000000000..70c5fd5593
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-4969.patch
@@ -0,0 +1,76 @@
1From 07b94e27afafebf31ef3cd868866a1e383750086 Mon Sep 17 00:00:00 2001
2From: Milan Crha <mcrha@redhat.com>
3Date: Mon, 19 May 2025 17:48:27 +0200
4Subject: [PATCH] soup-multipart: Verify array bounds before accessing its
5 members
6
7The boundary could be at a place which, calculated, pointed
8before the beginning of the array. Check the bounds, to avoid
9read out of the array bounds.
10
11Closes https://gitlab.gnome.org/GNOME/libsoup/-/issues/447
12
13Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/07b94e27afafebf31ef3cd868866a1e383750086]
14CVE: CVE-2025-4969
15Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
16---
17 libsoup/soup-multipart.c | 2 +-
18 tests/multipart-test.c | 22 ++++++++++++++++++++++
19 2 files changed, 23 insertions(+), 1 deletion(-)
20
21diff --git a/libsoup/soup-multipart.c b/libsoup/soup-multipart.c
22index 102ce37..e1c442e 100644
23--- a/libsoup/soup-multipart.c
24+++ b/libsoup/soup-multipart.c
25@@ -104,7 +104,7 @@ find_boundary (const char *start, const char *end,
26 continue;
27
28 /* Check that it's at start of line */
29- if (!(b == start || (b[-1] == '\n' && b[-2] == '\r')))
30+ if (!(b == start || (b - start >= 2 && b[-1] == '\n' && b[-2] == '\r')))
31 continue;
32
33 /* Check for "--" or "\r\n" after boundary */
34diff --git a/tests/multipart-test.c b/tests/multipart-test.c
35index ab5f41c..84852e2 100644
36--- a/tests/multipart-test.c
37+++ b/tests/multipart-test.c
38@@ -527,6 +527,27 @@ test_multipart_bounds_bad (void)
39 g_bytes_unref (bytes);
40 }
41
42+static void
43+test_multipart_bounds_bad_2 (void)
44+{
45+ SoupMultipart *multipart;
46+ SoupMessageHeaders *headers;
47+ GBytes *bytes;
48+ const char *raw_data = "\n--123\r\nline\r\n--123--\r";
49+
50+ headers = soup_message_headers_new (SOUP_MESSAGE_HEADERS_MULTIPART);
51+ soup_message_headers_append (headers, "Content-Type", "multipart/mixed; boundary=\"123\"");
52+
53+ bytes = g_bytes_new (raw_data, strlen (raw_data));
54+
55+ multipart = soup_multipart_new_from_message (headers, bytes);
56+ g_assert_nonnull (multipart);
57+
58+ soup_multipart_free (multipart);
59+ soup_message_headers_unref (headers);
60+ g_bytes_unref (bytes);
61+}
62+
63 int
64 main (int argc, char **argv)
65 {
66@@ -556,6 +577,7 @@ main (int argc, char **argv)
67 g_test_add_data_func ("/multipart/async-small-reads", GINT_TO_POINTER (ASYNC_MULTIPART_SMALL_READS), test_multipart);
68 g_test_add_func ("/multipart/bounds-good", test_multipart_bounds_good);
69 g_test_add_func ("/multipart/bounds-bad", test_multipart_bounds_bad);
70+ g_test_add_func ("/multipart/bounds-bad-2", test_multipart_bounds_bad_2);
71
72 ret = g_test_run ();
73
74--
752.49.0
76
diff --git a/meta/recipes-support/libsoup/libsoup_3.4.4.bb b/meta/recipes-support/libsoup/libsoup_3.4.4.bb
index 63e9afa6fc..37319f007f 100644
--- a/meta/recipes-support/libsoup/libsoup_3.4.4.bb
+++ b/meta/recipes-support/libsoup/libsoup_3.4.4.bb
@@ -29,7 +29,22 @@ SRC_URI = "${GNOME_MIRROR}/libsoup/${SHRT_VER}/libsoup-${PV}.tar.xz \
29 file://CVE-2025-32906-1.patch \ 29 file://CVE-2025-32906-1.patch \
30 file://CVE-2025-32906-2.patch \ 30 file://CVE-2025-32906-2.patch \
31 file://CVE-2025-46420.patch \ 31 file://CVE-2025-46420.patch \
32 " 32 file://CVE-2025-32914.patch \
33 file://CVE-2025-4476.patch \
34 file://CVE-2025-4969.patch \
35 file://CVE-2025-32908-1.patch \
36 file://CVE-2025-32908-2.patch \
37 file://CVE-2025-32907-1.patch \
38 file://CVE-2025-32907-2.patch \
39 file://CVE-2025-32053.patch \
40 file://CVE-2025-32052.patch \
41 file://CVE-2025-32051-1.patch \
42 file://CVE-2025-32051-2.patch \
43 file://CVE-2025-32050.patch \
44 file://CVE-2025-46421.patch \
45 file://CVE-2025-4948.patch \
46 file://CVE-2025-2784.patch \
47"
33SRC_URI[sha256sum] = "291c67725f36ed90ea43efff25064b69c5a2d1981488477c05c481a3b4b0c5aa" 48SRC_URI[sha256sum] = "291c67725f36ed90ea43efff25064b69c5a2d1981488477c05c481a3b4b0c5aa"
34 49
35PROVIDES = "libsoup-3.0" 50PROVIDES = "libsoup-3.0"
diff --git a/scripts/install-buildtools b/scripts/install-buildtools
index e4d472023d..b699b34270 100755
--- a/scripts/install-buildtools
+++ b/scripts/install-buildtools
@@ -57,8 +57,8 @@ logger = scriptutils.logger_create(PROGNAME, stream=sys.stdout)
57 57
58DEFAULT_INSTALL_DIR = os.path.join(os.path.split(scripts_path)[0],'buildtools') 58DEFAULT_INSTALL_DIR = os.path.join(os.path.split(scripts_path)[0],'buildtools')
59DEFAULT_BASE_URL = 'https://downloads.yoctoproject.org/releases/yocto' 59DEFAULT_BASE_URL = 'https://downloads.yoctoproject.org/releases/yocto'
60DEFAULT_RELEASE = 'yocto-5.0.7' 60DEFAULT_RELEASE = 'yocto-5.0.10'
61DEFAULT_INSTALLER_VERSION = '5.0.7' 61DEFAULT_INSTALLER_VERSION = '5.0.10'
62DEFAULT_BUILDDATE = '202110XX' 62DEFAULT_BUILDDATE = '202110XX'
63 63
64# Python version sanity check 64# Python version sanity check