diff options
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 | |||
23 | from bb.fetch2 import FetchMethod | 23 | from bb.fetch2 import FetchMethod |
24 | from bb.fetch2 import FetchError | 24 | from bb.fetch2 import FetchError |
25 | from bb.fetch2 import logger | 25 | from bb.fetch2 import logger |
26 | from bb.fetch2 import runfetchcmd | ||
27 | 26 | ||
28 | class GCP(FetchMethod): | 27 | class 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: | |||
429 | Submitting documentation changes | 429 | Submitting documentation changes |
430 | ================================ | 430 | ================================ |
431 | 431 | ||
432 | Please see the top level README file in this repository for details of where | 432 | Please refer to our contributor guide here: https://docs.yoctoproject.org/contributor-guide/ |
433 | to send patches. | 433 | for full details on how to submit changes. |
434 | |||
435 | As a quick guide, patches should be sent to docs@lists.yoctoproject.org | ||
436 | The git command to do that would be: | ||
437 | |||
438 | git send-email -M -1 --to docs@lists.yoctoproject.org | ||
439 | |||
440 | The 'To' header can be set as default for this repository: | ||
441 | |||
442 | git config sendemail.to docs@lists.yoctoproject.org | ||
443 | |||
444 | Now you can just do 'git send-email origin/master..' to send all local patches. | ||
445 | |||
446 | Read the other sections in this document and documentation/standards.md for | ||
447 | rules to follow when contributing to the documentation. | ||
448 | |||
449 | Git repository: https://git.yoctoproject.org/yocto-docs | ||
450 | Mailing 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 | ||
68 | If your build host does not meet any of these three listed version | 68 | If your build host does not satisfy all of the above version |
69 | requirements, you can take steps to prepare the system so that you | 69 | requirements, you can take steps to prepare the system so that you |
70 | can still use the Yocto Project. See the | 70 | can 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 |
83 | established after you run the OpenEmbedded build environment setup | 83 | established after you run the OpenEmbedded build environment setup |
84 | script (i.e. :ref:`ref-manual/structure:\`\`oe-init-build-env\`\``). | 84 | script (i.e. :ref:`ref-manual/structure:``oe-init-build-env```). |
85 | Adding the root directory allows the :term:`OpenEmbedded Build System` | 85 | Adding the root directory allows the :term:`OpenEmbedded Build System` |
86 | to recognize the BSP | 86 | to recognize the BSP |
87 | layer and from it build an image. Here is an example:: | 87 | layer 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 | |||
674 | located in the BSP Layer for your target device (e.g. the | 674 | located 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 | ||
677 | Suppose you are using the ``linux-yocto_4.4.bb`` recipe to build the | 677 | Suppose you are using the ``linux-yocto_6.12.bb`` recipe to build the |
678 | kernel. In other words, you have selected the kernel in your | 678 | kernel. 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` |
681 | statements as follows:: | 681 | statements 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 | ||
691 | You would use the ``linux-yocto_4.4.bbappend`` file to append specific | 691 | You would use the ``linux-yocto_6.12.bbappend`` file to append specific |
692 | BSP settings to the kernel, thus configuring the kernel for your | 692 | BSP settings to the kernel, thus configuring the kernel for your |
693 | particular BSP. | 693 | particular BSP. |
694 | 694 | ||
@@ -698,14 +698,19 @@ in the Yocto Project Linux Kernel Development Manual. | |||
698 | 698 | ||
699 | An alternate scenario is when you create your own kernel recipe for the | 699 | An alternate scenario is when you create your own kernel recipe for the |
700 | BSP. A good example of this is the Raspberry Pi BSP. If you examine the | 700 | BSP. 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 |
702 | Raspberry 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 | |
708 | The directory contains three kernel recipes and a common include file. | 713 | linux-raspberrypi-v7.inc |
709 | 714 | ||
710 | Developing a Board Support Package (BSP) | 715 | Developing 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 | # |
15 | import os | 15 | import os |
16 | import re | ||
16 | import sys | 17 | import sys |
17 | import datetime | 18 | import datetime |
18 | try: | 19 | try: |
@@ -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 | |||
178 | from sphinx.search import SearchEnglish | ||
179 | from sphinx.search import languages | ||
180 | class DashFriendlySearchEnglish(SearchEnglish): | ||
181 | |||
182 | # Accept words that can include hyphens | ||
183 | _word_re = re.compile(r'[\w\-]+') | ||
184 | |||
185 | js_splitter_code = r""" | ||
186 | function splitQuery(query) { | ||
187 | return query | ||
188 | .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}-]+/gu) | ||
189 | .filter(term => term.length > 0); | ||
190 | } | ||
191 | """ | ||
192 | |||
193 | languages['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 |
177 | from sphinx.builders.epub3 import Epub3Builder | 196 | from sphinx.builders.epub3 import Epub3Builder |
178 | Epub3Builder.supported_image_types = ['image/png', 'image/gif', 'image/jpeg'] | 197 | Epub3Builder.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 | |||
780 | After generating updated patches (v2, v3, and so on) via ``git | ||
781 | format-patch``, ideally developers will add a patch version changelog | ||
782 | to each patch that describes what has changed between each revision of | ||
783 | the patch. Add patch version changelogs after the ``---`` marker in the | ||
784 | patch, indicating that this information is part of this patch, but is not | ||
785 | suitable for inclusion in the commit message (i.e. the git history) itself. | ||
786 | Providing a patch version changelog makes it easier for maintainers and | ||
787 | reviewers to succinctly understand what changed in all versions of the | ||
788 | patch, without having to consult alternate sources of information, such as | ||
789 | searching 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 | |||
779 | Lastly please ensure that you also test your revised changes. In particular | 811 | Lastly please ensure that you also test your revised changes. In particular |
780 | please don't just edit the patch file written out by ``git format-patch`` and | 812 | please don't just edit the patch file written out by ``git format-patch`` and |
781 | resend it. | 813 | resend 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 | |||
56 | included in a build. | 56 | included in a build. |
57 | 57 | ||
58 | You can find a complete description of the ``devtool add`` command in | 58 | You can find a complete description of the ``devtool add`` command in |
59 | the ":ref:`sdk-manual/extensible:a closer look at \`\`devtool add\`\``" section | 59 | the ":ref:`sdk-manual/extensible:a closer look at ``devtool add```" section |
60 | in the Yocto Project Application Development and the Extensible Software | 60 | in the Yocto Project Application Development and the Extensible Software |
61 | Development Kit (eSDK) manual. | 61 | Development 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 | ||
33 | Upon building an image, you will then get: | 33 | Upon 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 | 35 | recipes. |
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 | ||
44 | The :ref:`ref-classes-create-spdx` class offers options to include | 37 | The :ref:`ref-classes-create-spdx` class offers options to include |
45 | more information in the output :term:`SPDX` data: | 38 | more information in the output :term:`SPDX` data: |
@@ -56,7 +49,7 @@ more information in the output :term:`SPDX` data: | |||
56 | 49 | ||
57 | Though the toplevel :term:`SPDX` output is available in | 50 | Though 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 |
59 | generated files are available in ``tmp/deploy/spdx/MACHINE`` too, such as: | 52 | generated 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 | ||
334 | If for some reason you choose not to upgrade recipes using | 334 | If 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 |
336 | by :ref:`dev-manual/upgrading-recipes:Using \`\`devtool upgrade\`\``, | 336 | by :ref:`dev-manual/upgrading-recipes:Using ``devtool upgrade```, |
337 | you can manually edit the recipe files to upgrade the versions. | 337 | you 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 | ||
678 | Patching the kernel involves changing or adding configurations to an | 678 | Patching 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 |
686 | modified image causes the added messages to appear on the emulator's | 686 | modified image causes the added messages to appear on the emulator's |
687 | console. The example is a continuation of the setup procedure found in | 687 | console. The example is a continuation of the setup procedure found in |
688 | the ":ref:`kernel-dev/common:getting ready to develop using \`\`devtool\`\``" Section. | 688 | the ":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 | ||
1196 | It is simple to create a configuration fragment. One method is to use | 1196 | It 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 | |||
1286 | fragment. | 1286 | fragment. |
1287 | 1287 | ||
1288 | In order to run this task, you must have an existing ``.config`` file. | 1288 | In order to run this task, you must have an existing ``.config`` file. |
1289 | See the ":ref:`kernel-dev/common:using \`\`menuconfig\`\``" section for | 1289 | See the ":ref:`kernel-dev/common:using ``menuconfig```" section for |
1290 | information on how to create a configuration file. | 1290 | information on how to create a configuration file. |
1291 | 1291 | ||
1292 | Here is sample output from the :ref:`ref-tasks-kernel_configcheck` task: | 1292 | Here is sample output from the :ref:`ref-tasks-kernel_configcheck` task: |
@@ -1359,7 +1359,7 @@ and | |||
1359 | tasks until they produce no warnings. | 1359 | tasks until they produce no warnings. |
1360 | 1360 | ||
1361 | For more information on how to use the ``menuconfig`` tool, see the | 1361 | For 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 | ||
1364 | Fine-Tuning the Kernel Configuration File | 1364 | Fine-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 @@ | |||
1 | Release notes for Yocto-4.0.26 (Kirkstone) | ||
2 | ------------------------------------------ | ||
3 | |||
4 | Security 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 | |||
110 | Fixes 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 | |||
148 | Known Issues in Yocto-4.0.26 | ||
149 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
150 | |||
151 | - N/A | ||
152 | |||
153 | |||
154 | Contributors to Yocto-4.0.26 | ||
155 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
156 | |||
157 | Thanks 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 | |||
194 | Repositories / Downloads for Yocto-4.0.26 | ||
195 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
196 | |||
197 | poky | ||
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 | |||
209 | openembedded-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 | |||
221 | meta-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 | |||
233 | meta-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 | |||
245 | bitbake | ||
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 | |||
257 | yocto-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 @@ | |||
1 | Release notes for Yocto-4.0.27 (Kirkstone) | ||
2 | ------------------------------------------ | ||
3 | |||
4 | Security 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 | |||
33 | Fixes 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 | |||
54 | Known Issues in Yocto-4.0.27 | ||
55 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
56 | |||
57 | - N/A | ||
58 | |||
59 | |||
60 | Contributors 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 | |||
84 | Repositories / Downloads for Yocto-4.0.27 | ||
85 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
86 | |||
87 | poky | ||
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 | |||
99 | openembedded-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 | |||
111 | meta-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 | |||
123 | meta-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 | |||
135 | bitbake | ||
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 | |||
147 | yocto-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 | |||
3 | Release notes for Yocto-5.0.10 (Scarthgap) | ||
4 | ------------------------------------------ | ||
5 | |||
6 | Security 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 | |||
35 | Fixes 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 | |||
98 | Known 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 | |||
106 | Contributors to Yocto-5.0.10 | ||
107 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
108 | |||
109 | Thanks 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 | |||
151 | Repositories / Downloads for Yocto-5.0.10 | ||
152 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
153 | |||
154 | poky | ||
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 | |||
166 | openembedded-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 | |||
178 | meta-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 | |||
190 | bitbake | ||
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 | |||
202 | yocto-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 | |||
3 | Release notes for Yocto-5.0.9 (Scarthgap) | ||
4 | ----------------------------------------- | ||
5 | |||
6 | Security 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 | |||
74 | Fixes 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 | |||
112 | Known Issues in Yocto-5.0.9 | ||
113 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
114 | |||
115 | - N/A | ||
116 | |||
117 | Contributors to Yocto-5.0.9 | ||
118 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
119 | |||
120 | Thanks 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 | |||
149 | Repositories / Downloads for Yocto-5.0.9 | ||
150 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
151 | |||
152 | poky | ||
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 | |||
164 | openembedded-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 | |||
176 | meta-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 | |||
188 | bitbake | ||
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 | |||
200 | yocto-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 | ||
99 | The term "package" is sometimes used to refer to recipes. However, since | 99 | The term "package" is sometimes used to refer to recipes. However, since |
100 | the word "package" is used for the packaged output from the OpenEmbedded | 100 | the word "package" is used for the packaged output from the OpenEmbedded |
101 | build system (i.e. ``.ipk`` or ``.deb`` files), this document avoids | 101 | build system (i.e. ``.ipk``, ``.deb`` or ``.rpm`` files), this document avoids |
102 | using the term "package" when referring to recipes. | 102 | using the term "package" when referring to recipes. |
103 | 103 | ||
104 | Classes | 104 | Classes |
@@ -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 | |||
352 | provide Metadata for the software, machine, and policies. | 352 | provide Metadata for the software, machine, and policies. |
353 | 353 | ||
354 | In general, there are three types of layer input. You can see them below | 354 | In general, there are three types of layer input. You can see them below |
355 | the "User Configuration" box in the `general workflow | 355 | the "User Configuration" box in the :ref:`general workflow |
356 | figure <overview-manual/concepts:openembedded build system concepts>`: | 356 | figure <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. | |||
420 | Distro Layer | 420 | Distro Layer |
421 | ~~~~~~~~~~~~ | 421 | ~~~~~~~~~~~~ |
422 | 422 | ||
423 | The distribution layer provides policy configurations for your | 423 | A distribution layer provides policy configurations for your |
424 | distribution. Best practices dictate that you isolate these types of | 424 | distribution. Best practices dictate that you isolate these types of |
425 | configurations into their own layer. Settings you provide in | 425 | configurations 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 |
427 | in your ``conf/local.conf`` file in the :term:`Build Directory`. | 427 | in your ``conf/local.conf`` file in the :term:`Build Directory`. |
428 | 428 | ||
429 | The following list provides some explanation and references for what you | 429 | The following list provides some explanation and references for what you |
430 | typically find in the distribution layer: | 430 | typically 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: | |||
454 | BSP Layer | 454 | BSP Layer |
455 | ~~~~~~~~~ | 455 | ~~~~~~~~~ |
456 | 456 | ||
457 | The BSP Layer provides machine configurations that target specific | 457 | A BSP layer provides machine configurations that target specific |
458 | hardware. Everything in this layer is specific to the machine for which | 458 | hardware. Everything in this layer is specific to the machine for which |
459 | you are building the image or the SDK. A common structure or form is | 459 | you are building the image or the SDK. A common structure or form is |
460 | defined for BSP layers. You can learn more about this structure in the | 460 | defined 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 | ||
468 | The BSP Layer's configuration directory contains configuration files for | 468 | A BSP layer's configuration directory contains configuration files for |
469 | the machine (``conf/machine/machine.conf``) and, of course, the layer | 469 | the 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 | ||
483 | Software Layer | 483 | Software Layer |
484 | ~~~~~~~~~~~~~~ | 484 | ~~~~~~~~~~~~~~ |
485 | 485 | ||
486 | The software layer provides the Metadata for additional software | 486 | A software layer provides the Metadata for additional software |
487 | packages used during the build. This layer does not include Metadata | 487 | packages used during the build. This layer does not include Metadata |
488 | that is specific to the distribution or the machine, which are found in | 488 | that is specific to the distribution or the machine, which are found in |
489 | their respective layers. | 489 | their respective layers. |
490 | 490 | ||
491 | This layer contains any recipes, append files, and patches, that your | 491 | This layer contains any recipes, append files, and patches that your |
492 | project needs. | 492 | project needs. |
493 | 493 | ||
494 | Sources | 494 | Sources |
@@ -560,9 +560,8 @@ source tree used by the group). | |||
560 | 560 | ||
561 | The canonical method through which to include a local project is to use the | 561 | The 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 |
563 | either the ``local.conf`` or a recipe's append file to override or set the | 563 | either ``local.conf`` or a recipe's append file to override or set the |
564 | recipe to point to the local directory on your disk to pull in the whole | 564 | recipe to point to the local directory from which to fetch the source. |
565 | source tree. | ||
566 | 565 | ||
567 | Source Control Managers (Optional) | 566 | Source 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 | ||
958 | To add a custom package variant of the ``${PN}`` recipe named | 957 | To 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 | ||
2046 | Although applied differently, the :ref:`ref-classes-nativesdk` class is used with both | 2048 | Although applied differently, the :ref:`ref-classes-nativesdk` class is used with both |
2047 | methods. The advantage of the second method is that you do not need to | 2049 | methods. 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`" |
436 | section in the Yocto Project Application Development and the Extensible | 436 | section in the Yocto Project Application Development and the Extensible |
437 | Software Development Kit (eSDK) manual. You can also see an example of | 437 | Software Development Kit (eSDK) manual. You can also see an example of |
438 | how to use ``devtool upgrade`` in the ":ref:`dev-manual/upgrading-recipes:using \`\`devtool upgrade\`\``" | 438 | how to use ``devtool upgrade`` in the ":ref:`dev-manual/upgrading-recipes:using ``devtool upgrade```" |
439 | section in the Yocto Project Development Tasks Manual. | 439 | section 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 | |||
515 | directory contain information about each output package produced by the | 515 | directory contain information about each output package produced by the |
516 | OpenEmbedded build system, and are used in different ways by the build system | 516 | OpenEmbedded build system, and are used in different ways by the build system |
517 | such as ":ref:`dev-manual/debugging:viewing package information with | 517 | such 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="<b>Ctrl + click</b> 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 | ||
730 | See the ":ref:`kernel-dev/common:using \`\`menuconfig\`\``" | 730 | See the ":ref:`kernel-dev/common:using ``menuconfig```" |
731 | section in the Yocto Project Linux Kernel Development Manual for more | 731 | section in the Yocto Project Linux Kernel Development Manual for more |
732 | information on this configuration tool. | 732 | information on this configuration tool. |
733 | 733 | ||
@@ -751,7 +751,7 @@ which can then be applied by subsequent tasks such as | |||
751 | 751 | ||
752 | Runs ``make menuconfig`` for the kernel. For information on | 752 | Runs ``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```" |
755 | section in the Yocto Project Linux Kernel Development Manual. | 755 | section 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, | |||
51 | the Autobuilder tests if things work. The Autobuilder builds all test | 51 | the Autobuilder tests if things work. The Autobuilder builds all test |
52 | targets and runs all the tests. | 52 | targets and runs all the tests. |
53 | 53 | ||
54 | The Yocto Project uses now uses standard upstream | 54 | The Yocto Project uses standard upstream Buildbot to drive its integration and |
55 | Buildbot (`version 3.8 <https://docs.buildbot.net/3.8.0/>`__) to | 55 | testing. Buildbot has a plug-in interface that the Yocto Project customizes |
56 | drive its integration and testing. Buildbot has a plug-in interface | 56 | using code from the :yocto_git:`yocto-autobuilder2 </yocto-autobuilder2>` |
57 | that the Yocto Project customizes using code from the | 57 | repository, adding its own console UI plugin. The resulting UI plug-in allows |
58 | ``yocto-autobuilder2`` repository, adding its own console UI plugin. The | 58 | you to visualize builds in a way suited to the project's needs. |
59 | resulting UI plug-in allows you to visualize builds in a way suited to | ||
60 | the project's needs. | ||
61 | 59 | ||
62 | A ``helper`` layer provides configuration and job management through | 60 | A ``helper`` layer provides configuration and job management through |
63 | scripts found in the ``yocto-autobuilder-helper`` repository. The | 61 | scripts 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 | ||
547 | You need to run the ``buildslist`` command first to identify existing | 547 | You need to run the ``buildslist`` command first to identify existing |
548 | builds in the database before using the | 548 | builds 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 |
550 | example that assumes default repository and :term:`Build Directory` names: | 550 | example 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 | ||
557 | If your Toaster database had only one build, the above | 557 | If your Toaster database had only one build, the above |
558 | :ref:`toaster-manual/reference:\`\`buildslist\`\`` | 558 | :ref:`toaster-manual/reference:``buildslist``` |
559 | command would return something like the following:: | 559 | command 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 | ||
577 | Prior to running the ``builddelete`` command, you need to get the ID | 577 | Prior to running the ``builddelete`` command, you need to get the ID |
578 | associated with builds by using the | 578 | associated 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 @@ | |||
1 | DISTRO = "poky" | 1 | DISTRO = "poky" |
2 | DISTRO_NAME = "Poky (Yocto Project Reference Distro)" | 2 | DISTRO_NAME = "Poky (Yocto Project Reference Distro)" |
3 | DISTRO_VERSION = "5.0.9" | 3 | DISTRO_VERSION = "5.0.10" |
4 | DISTRO_CODENAME = "scarthgap" | 4 | DISTRO_CODENAME = "scarthgap" |
5 | SDK_VENDOR = "-pokysdk" | 5 | SDK_VENDOR = "-pokysdk" |
6 | SDK_VERSION = "${@d.getVar('DISTRO_VERSION').replace('snapshot-${METADATA_REVISION}', 'snapshot')}" | 6 | SDK_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" | |||
25 | TESTIMAGE_FAILED_QA_ARTIFACTS = "\ | 25 | TESTIMAGE_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 |
31 | TESTIMAGE_FAILED_QA_ARTIFACTS += "${@bb.utils.contains('DISTRO_FEATURES', 'ptest', '${libdir}/${MCNAME}/ptest', '', d)}" | 33 | TESTIMAGE_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 | ||
99 | concat_dtb() { | 101 | concat_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 | |||
190 | RECIPE_MAINTAINER:pn-gcc-crosssdk-${SDK_SYS} = "Khem Raj <raj.khem@gmail.com>" | 190 | RECIPE_MAINTAINER:pn-gcc-crosssdk-${SDK_SYS} = "Khem Raj <raj.khem@gmail.com>" |
191 | RECIPE_MAINTAINER:pn-gcc-runtime = "Khem Raj <raj.khem@gmail.com>" | 191 | RECIPE_MAINTAINER:pn-gcc-runtime = "Khem Raj <raj.khem@gmail.com>" |
192 | RECIPE_MAINTAINER:pn-gcc-sanitizers = "Khem Raj <raj.khem@gmail.com>" | 192 | RECIPE_MAINTAINER:pn-gcc-sanitizers = "Khem Raj <raj.khem@gmail.com>" |
193 | RECIPE_MAINTAINER:pn-gcc-source-13.3.0 = "Khem Raj <raj.khem@gmail.com>" | 193 | RECIPE_MAINTAINER:pn-gcc-source-13.4.0 = "Khem Raj <raj.khem@gmail.com>" |
194 | RECIPE_MAINTAINER:pn-gconf = "Ross Burton <ross.burton@arm.com>" | 194 | RECIPE_MAINTAINER:pn-gconf = "Ross Burton <ross.burton@arm.com>" |
195 | RECIPE_MAINTAINER:pn-gcr = "Alexander Kanavin <alex.kanavin@gmail.com>" | 195 | RECIPE_MAINTAINER:pn-gcr = "Alexander Kanavin <alex.kanavin@gmail.com>" |
196 | RECIPE_MAINTAINER:pn-gdb = "Khem Raj <raj.khem@gmail.com>" | 196 | RECIPE_MAINTAINER:pn-gdb = "Khem Raj <raj.khem@gmail.com>" |
@@ -210,7 +210,6 @@ RECIPE_MAINTAINER:pn-glibc = "Khem Raj <raj.khem@gmail.com>" | |||
210 | RECIPE_MAINTAINER:pn-glibc-locale = "Khem Raj <raj.khem@gmail.com>" | 210 | RECIPE_MAINTAINER:pn-glibc-locale = "Khem Raj <raj.khem@gmail.com>" |
211 | RECIPE_MAINTAINER:pn-glibc-mtrace = "Khem Raj <raj.khem@gmail.com>" | 211 | RECIPE_MAINTAINER:pn-glibc-mtrace = "Khem Raj <raj.khem@gmail.com>" |
212 | RECIPE_MAINTAINER:pn-glibc-scripts = "Khem Raj <raj.khem@gmail.com>" | 212 | RECIPE_MAINTAINER:pn-glibc-scripts = "Khem Raj <raj.khem@gmail.com>" |
213 | RECIPE_MAINTAINER:pn-glibc-y2038-tests = "Lukasz Majewski <lukma@denx.de>" | ||
214 | RECIPE_MAINTAINER:pn-glibc-testsuite = "Khem Raj <raj.khem@gmail.com>" | 213 | RECIPE_MAINTAINER:pn-glibc-testsuite = "Khem Raj <raj.khem@gmail.com>" |
215 | RECIPE_MAINTAINER:pn-gmp = "Khem Raj <raj.khem@gmail.com>" | 214 | RECIPE_MAINTAINER:pn-gmp = "Khem Raj <raj.khem@gmail.com>" |
216 | RECIPE_MAINTAINER:pn-glslang = "Jose Quaresma <quaresma.jose@gmail.com>" | 215 | RECIPE_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 | " |
84 | PTESTS_FAST:append:libc-glibc = " glibc-y2038-tests" | ||
85 | PTESTS_PROBLEMS:remove:libc-glibc = "glibc-y2038-tests" | ||
86 | PTESTS_FAST:remove:mips64 = "qemu" | 84 | PTESTS_FAST:remove:mips64 = "qemu" |
87 | PTESTS_PROBLEMS:append:mips64 = " qemu" | 85 | PTESTS_PROBLEMS:append:mips64 = " qemu" |
88 | PTESTS_FAST:remove:riscv32 = "qemu" | 86 | PTESTS_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', '$ | |||
19 | TARGET_CC_ARCH:append:x86 = "${@bb.utils.contains('TUNE_FEATURES', 'm32', '${GLIBC_64BIT_TIME_FLAGS}', '', d)}" | 19 | TARGET_CC_ARCH:append:x86 = "${@bb.utils.contains('TUNE_FEATURES', 'm32', '${GLIBC_64BIT_TIME_FLAGS}', '', d)}" |
20 | 20 | ||
21 | GLIBC_64BIT_TIME_FLAGS:pn-glibc = "" | 21 | GLIBC_64BIT_TIME_FLAGS:pn-glibc = "" |
22 | GLIBC_64BIT_TIME_FLAGS:pn-glibc-y2038-tests = "" | ||
23 | GLIBC_64BIT_TIME_FLAGS:pn-glibc-testsuite = "" | 22 | GLIBC_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 |
37 | INSANE_SKIP:append:pn-gcc-sanitizers = " 32bit-time" | 36 | INSANE_SKIP:append:pn-gcc-sanitizers = " 32bit-time" |
38 | INSANE_SKIP:append:pn-glibc = " 32bit-time" | 37 | INSANE_SKIP:append:pn-glibc = " 32bit-time" |
39 | INSANE_SKIP:append:pn-glibc-y2038-tests = " 32bit-time" | ||
40 | INSANE_SKIP:append:pn-pulseaudio = " 32bit-time" | 38 | INSANE_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 | ||
11 | AVAILTUNES += "cortexr52" | 11 | AVAILTUNES += "cortexr52" |
12 | ARMPKGARCH:tune-cortexr52 = "cortexr52" | 12 | ARMPKGARCH:tune-cortexr52 = "cortexr52" |
13 | # We do not want -march since -mcpu is added above to cover for it | 13 | TUNE_FEATURES:tune-cortexr52 = "${TUNE_FEATURES:tune-armv8r-crc-simd} cortexr52" |
14 | TUNE_FEATURES:tune-cortexr52 = "aarch64 crc simd cortexr52" | ||
15 | PACKAGE_EXTRA_ARCHS:tune-cortexr52 = "${PACKAGE_EXTRA_ARCHS:tune-armv8r-crc-simd} cortexr52" | 14 | PACKAGE_EXTRA_ARCHS:tune-cortexr52 = "${PACKAGE_EXTRA_ARCHS:tune-armv8r-crc-simd} cortexr52" |
16 | 15 | ||
17 | AVAILTUNES += "cortexr52hf" | 16 | AVAILTUNES += "cortexr52hf" |
18 | ARMPKGARCH:tune-cortexr52hf = "cortexr52" | 17 | ARMPKGARCH:tune-cortexr52hf = "cortexr52hf" |
19 | TUNE_FEATURES:tune-cortexr52hf = "${TUNE_FEATURES:tune-cortexr52} callconvention-hard" | 18 | TUNE_FEATURES:tune-cortexr52hf = "${TUNE_FEATURES:tune-cortexr52} callconvention-hard" |
20 | PACKAGE_EXTRA_ARCHS:tune-cortexr52hf = "cortexr52hf" | 19 | PACKAGE_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(""" |
978 | MACHINE = "{}" | 978 | MACHINE = "{}" |
979 | BB_HASHSERVE_UPSTREAM = "hashserv.yocto.io:8687" | 979 | BB_HASHSERVE_UPSTREAM = "hashserv.yocto.io:8687" |
980 | SSTATE_MIRRORS ?= "file://.* http://cdn.jsdelivr.net/yocto/sstate/all/PATH;downloadfilename=PATH" | 980 | SSTATE_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 | " |
61 | S = "${WORKDIR}/bluez-${PV}" | 62 | S = "${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 @@ | |||
1 | From f00d5546c9e989dd68ce0de0190cd0e043b0f1f5 Mon Sep 17 00:00:00 2001 | ||
2 | From: Arjan Opmeer <arjan.opmeer@gmail.com> | ||
3 | Date: Tue, 9 Jul 2024 13:55:41 +0200 | ||
4 | Subject: [PATCH] tools/btmgmt: Fix --index option for non-interactive mode | ||
5 | |||
6 | In non-interactive mode the --index option does not work because the | ||
7 | call to mgmt_set_index() is made after bt_shell_attach(). | ||
8 | |||
9 | Fixes: https://github.com/bluez/bluez/issues/893 | ||
10 | |||
11 | Upstream-Status: Backport [https://github.com/bluez/bluez/commit/f00d5546c9e989dd68ce0de0190cd0e043b0f1f5] | ||
12 | --- | ||
13 | tools/btmgmt.c | 2 +- | ||
14 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
15 | |||
16 | diff --git a/tools/btmgmt.c b/tools/btmgmt.c | ||
17 | index 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 @@ | |||
1 | From 8d3be0285f1d4667bfe85dba555c663eb3d704b4 Mon Sep 17 00:00:00 2001 | ||
2 | From: Yoonje Shin <ioerts@kookmin.ac.kr> | ||
3 | Date: Mon, 12 May 2025 10:48:18 +0200 | ||
4 | Subject: [PATCH] dnsproxy: Address CVE-2025-32366 vulnerability | ||
5 | |||
6 | In Connman parse_rr in dnsproxy.c has a memcpy length | ||
7 | that depends on an RR RDLENGTH value (i.e., *rdlen=ntohs(rr->rdlen) | ||
8 | and memcpy(response+offset,*end,*rdlen)). Here, rdlen may be larger | ||
9 | than the amount of remaining packet data in the current state of | ||
10 | parsing. As a result, values of stack memory locations may be sent | ||
11 | over the network in a response. | ||
12 | |||
13 | This patch adds a check to ensure that (*end + *rdlen) does not exceed | ||
14 | the valid range. If the condition is violated, the function returns | ||
15 | -EINVAL. | ||
16 | |||
17 | CVE: CVE-2025-32366 | ||
18 | |||
19 | Upstream-Status: Backport [https://git.kernel.org/pub/scm/network/connman/connman.git/commit/?id=8d3be0285f1d4667bfe85dba555c663eb3d704b4] | ||
20 | |||
21 | Signed-off-by: Praveen Kumar <praveen.kumar@windriver.com> | ||
22 | --- | ||
23 | src/dnsproxy.c | 3 +++ | ||
24 | 1 file changed, 3 insertions(+) | ||
25 | |||
26 | diff --git a/src/dnsproxy.c b/src/dnsproxy.c | ||
27 | index 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 | -- | ||
41 | 2.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 @@ | |||
1 | From d90b911f6760959bdf1393c39fe8d1118315490f Mon Sep 17 00:00:00 2001 | ||
2 | From: Praveen Kumar <praveen.kumar@windriver.com> | ||
3 | Date: Thu, 24 Apr 2025 11:39:29 +0000 | ||
4 | Subject: [PATCH] dnsproxy: Fix NULL/empty lookup causing potential crash | ||
5 | |||
6 | In ConnMan through 1.44, the lookup string in ns_resolv in dnsproxy.c | ||
7 | can be NULL or an empty string when the TC (Truncated) bit is set in | ||
8 | a DNS response. This allows attackers to cause a denial of service | ||
9 | (application crash) or possibly execute arbitrary code, because those | ||
10 | lookup values lead to incorrect length calculations and incorrect | ||
11 | memcpy operations. | ||
12 | |||
13 | This patch includes a check to make sure loookup value is valid before | ||
14 | using it. This helps avoid unexpected value when the input is empty or | ||
15 | incorrect. | ||
16 | |||
17 | Fixes: CVE-2025-32743 | ||
18 | |||
19 | CVE: CVE-2025-32743 | ||
20 | |||
21 | Upstream-Status: Backport [https://git.kernel.org/pub/scm/network/connman/connman.git/commit/?id=d90b911f6760959bdf1393c39fe8d1118315490f] | ||
22 | |||
23 | Signed-off-by: Praveen Kumar <praveen.kumar@windriver.com> | ||
24 | --- | ||
25 | src/dnsproxy.c | 7 ++++++- | ||
26 | 1 file changed, 6 insertions(+), 1 deletion(-) | ||
27 | |||
28 | diff --git a/src/dnsproxy.c b/src/dnsproxy.c | ||
29 | index 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 | -- | ||
48 | 2.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 | ||
12 | SRC_URI:append:libc-musl = " file://0002-resolve-musl-does-not-implement-res_ninit.patch" | 14 | SRC_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 | |||
3 | HOMEPAGE = "http://kea.isc.org" | 3 | HOMEPAGE = "http://kea.isc.org" |
4 | SECTION = "connectivity" | 4 | SECTION = "connectivity" |
5 | LICENSE = "MPL-2.0" | 5 | LICENSE = "MPL-2.0" |
6 | LIC_FILES_CHKSUM = "file://COPYING;md5=ea061fa0188838072c4248c1318ec131" | 6 | LIC_FILES_CHKSUM = "file://COPYING;md5=ee16e7280a6cf2a1487717faf33190dc" |
7 | 7 | ||
8 | DEPENDS = "boost log4cplus openssl" | 8 | DEPENDS = "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 | " |
21 | SRC_URI[sha256sum] = "815c61f5c271caa4a1db31dd656eb50a7f6ea973da3690f7c8581408e180131a" | 21 | SRC_URI[sha256sum] = "6e82fb319d3b871c0d39bbd504f2cda0c66fa1262865872985fb4fb91b4eaafc" |
22 | 22 | ||
23 | inherit autotools systemd update-rc.d upstream-version-is-even | 23 | inherit 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 | } |
69 | delay_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 | } | ||
82 | stop_nfsd(){ | 69 | stop_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 @@ | |||
1 | From fc86875e6acb36401dfc1dfb6b628a9d1460f367 Mon Sep 17 00:00:00 2001 | ||
2 | From: "djm@openbsd.org" <djm@openbsd.org> | ||
3 | Date: Wed, 9 Apr 2025 07:00:03 +0000 | ||
4 | Subject: [PATCH] upstream: Fix logic error in DisableForwarding option. This | ||
5 | option | ||
6 | |||
7 | was documented as disabling X11 and agent forwarding but it failed to do so. | ||
8 | Spotted by Tim Rice. | ||
9 | |||
10 | OpenBSD-Commit-ID: fffc89195968f7eedd2fc57f0b1f1ef3193f5ed1 | ||
11 | |||
12 | Upstream-Status: Backport [https://github.com/openssh/openssh-portable/commit/fc86875e6acb36401dfc1dfb6b628a9d1460f367] | ||
13 | CVE: CVE-2025-32728 | ||
14 | Signed-off-by: Vijay Anusuri <vanusuri@mvista.com> | ||
15 | --- | ||
16 | session.c | 5 +++-- | ||
17 | 1 file changed, 3 insertions(+), 2 deletions(-) | ||
18 | |||
19 | diff --git a/session.c b/session.c | ||
20 | index 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 | -- | ||
43 | 2.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 | " |
35 | SRC_URI[sha256sum] = "910211c07255a8c5ad654391b40ee59800710dd8119dd5362de09385aa7a777c" | 36 | SRC_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 @@ | |||
1 | From 8763c305c29d0abb7e2be4695212b42917d054b2 Mon Sep 17 00:00:00 2001 | ||
2 | From: =?UTF-8?q?P=C3=A1draig=20Brady?= <P@draigBrady.com> | ||
3 | Date: Tue, 20 May 2025 16:03:44 +0100 | ||
4 | Subject: [PATCH] sort: fix buffer under-read (CWE-127) | ||
5 | |||
6 | * src/sort.c (begfield): Check pointer adjustment | ||
7 | to avoid Out-of-range pointer offset (CWE-823). | ||
8 | (limfield): Likewise. | ||
9 | * tests/sort/sort-field-limit.sh: Add a new test, | ||
10 | which triggers with ASAN or Valgrind. | ||
11 | * tests/local.mk: Reference the new test. | ||
12 | * NEWS: Mention bug fix introduced in v7.2 (2009). | ||
13 | Fixes https://bugs.gnu.org/78507 | ||
14 | |||
15 | CVE: CVE-2025-5278 | ||
16 | |||
17 | Upstream-Status: Backport [https://cgit.git.savannah.gnu.org/cgit/coreutils.git/commit/?id=8c9602e3a145e9596dc1a63c6ed67865814b6633] | ||
18 | |||
19 | Signed-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 | |||
27 | diff --git a/src/sort.c b/src/sort.c | ||
28 | index 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; | ||
57 | diff --git a/tests/local.mk b/tests/local.mk | ||
58 | index 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 \ | ||
69 | diff --git a/tests/sort/sort-field-limit.sh b/tests/sort/sort-field-limit.sh | ||
70 | new file mode 100755 | ||
71 | index 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 | -- | ||
111 | 2.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 | " |
23 | SRC_URI[sha256sum] = "ea613a4cf44612326e917201bbbcdfbd301de21ffc3b59b6e5c07e040b275e52" | 24 | SRC_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 @@ | |||
1 | From cc647f9e46d55509a93498af19659baf9c80f2e3 Mon Sep 17 00:00:00 2001 | ||
2 | From: Michael Catanzaro <mcatanzaro@redhat.com> | ||
3 | Date: Thu, 10 Apr 2025 10:57:20 -0500 | ||
4 | Subject: [PATCH 1/2] gstring: carefully handle gssize parameters | ||
5 | |||
6 | Wherever we use gssize to allow passing -1, we need to ensure we don't | ||
7 | overflow the value by assigning a gsize to it without checking if the | ||
8 | size exceeds the maximum gssize. The safest way to do this is to just | ||
9 | use normal gsize everywhere instead and use gssize only for the | ||
10 | parameter. | ||
11 | |||
12 | Our computers don't have enough RAM to write tests for this. I tried | ||
13 | forcing string->len to high values for test purposes, but this isn't | ||
14 | valid and will just cause out of bounds reads/writes due to | ||
15 | string->allocated_len being unexpectedly small, so I don't think we can | ||
16 | test this easily. | ||
17 | |||
18 | CVE: CVE-2025-4373 | ||
19 | |||
20 | Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/commit/cc647f9e46d55509a93498af19659baf9c80f2e3] | ||
21 | |||
22 | Signed-off-by: Praveen Kumar <praveen.kumar@windriver.com> | ||
23 | --- | ||
24 | glib/gstring.c | 36 +++++++++++++++++++++++------------- | ||
25 | 1 file changed, 23 insertions(+), 13 deletions(-) | ||
26 | |||
27 | diff --git a/glib/gstring.c b/glib/gstring.c | ||
28 | index 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 | -- | ||
120 | 2.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 @@ | |||
1 | From 4d435bb4809793c445846db8fb87e3c9184c4703 Mon Sep 17 00:00:00 2001 | ||
2 | From: Peter Bloomfield <peterbloomfield@bellsouth.net> | ||
3 | Date: Fri, 11 Apr 2025 05:52:33 +0000 | ||
4 | Subject: [PATCH 2/2] gstring: Make len_unsigned unsigned | ||
5 | |||
6 | CVE: CVE-2025-4373 | ||
7 | |||
8 | Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/commit/4d435bb4809793c445846db8fb87e3c9184c4703] | ||
9 | |||
10 | Signed-off-by: Praveen Kumar <praveen.kumar@windriver.com> | ||
11 | --- | ||
12 | glib/gstring.c | 2 +- | ||
13 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
14 | |||
15 | diff --git a/glib/gstring.c b/glib/gstring.c | ||
16 | index 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 | -- | ||
29 | 2.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 | " |
31 | SRC_URI:append:class-native = " file://relocate-modules.patch \ | 33 | SRC_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 @@ | |||
1 | SRCBRANCH ?= "release/2.39/master" | 1 | SRCBRANCH ?= "release/2.39/master" |
2 | PV = "2.39+git" | 2 | PV = "2.39+git" |
3 | SRCREV_glibc ?= "3463100f2d47f2897a24ba8023a5c7aaf2d26550" | 3 | SRCREV_glibc ?= "06a70769fd0b2e1f2a3085ad50ab620282bd77b3" |
4 | SRCREV_localedef ?= "fab74f31b3811df543e24b6de47efdf45b538abc" | 4 | SRCREV_localedef ?= "fab74f31b3811df543e24b6de47efdf45b538abc" |
5 | 5 | ||
6 | GLIBC_GIT_URI ?= "git://sourceware.org/git/glibc.git;protocol=https" | 6 | GLIBC_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 @@ | |||
1 | require glibc_${PV}.bb | ||
2 | require glibc-tests.inc | ||
3 | |||
4 | inherit ptest features_check | ||
5 | REQUIRED_DISTRO_FEATURES = "ptest" | ||
6 | |||
7 | SRC_URI += "\ | ||
8 | file://run-ptest \ | ||
9 | " | ||
10 | |||
11 | SUMMARY = "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} | ||
14 | python __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 | ||
28 | RPROVIDES:${PN} = "${PN}" | ||
29 | RRECOMMENDS:${PN} = "" | ||
30 | RDEPENDS:${PN} = "glibc libgcc sed bash" | ||
31 | RDEPENDS:${PN}-ptest = "${PN}" | ||
32 | DEPENDS += "sed" | ||
33 | |||
34 | export oe_srcdir="${exec_prefix}/src/debug/glibc/${PV}/" | ||
35 | |||
36 | # Just build tests for target - do not run them | ||
37 | do_check:append () { | ||
38 | oe_runmake -i check run-built-tests=no | ||
39 | } | ||
40 | addtask do_check after do_compile before do_install_ptest_base | ||
41 | |||
42 | glibc_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 | |||
58 | do_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 | ||
86 | stash_locale_package_cleanup:prepend () { | ||
87 | mkdir -p ${PKGD}${datadir} | ||
88 | } | ||
89 | |||
90 | stash_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 | ||
96 | python populate_packages:prepend () { | ||
97 | if d.getVar('DEBIAN_NAMES'): | ||
98 | d.setVar('DEBIAN_NAMES', '') | ||
99 | } | ||
100 | |||
101 | FILES:${PN} = "${PTEST_PATH}/* /usr/src/debug/${PN}/*" | ||
102 | |||
103 | EXCLUDE_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. | ||
109 | PACKAGE_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) | ||
115 | INSANE_SKIP:${PN} += "staticdev textrel debug-files rpaths" | ||
116 | |||
117 | deltask do_stash_locale | ||
118 | do_install[noexec] = "1" | ||
119 | do_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 @@ | |||
1 | From 4f54b0dfc16dbe0df86afccb90e447df5f7f571e Mon Sep 17 00:00:00 2001 | ||
2 | From: Wilco Dijkstra <wilco.dijkstra@arm.com> | ||
3 | Date: Mon, 18 Mar 2024 15:18:20 +0000 | ||
4 | Subject: [PATCH] stdlib: Add single-threaded fast path to rand() | ||
5 | MIME-Version: 1.0 | ||
6 | Content-Type: text/plain; charset=UTF-8 | ||
7 | Content-Transfer-Encoding: 8bit | ||
8 | |||
9 | Improve performance of rand() and __random() by adding a single-threaded | ||
10 | fast path. Bench-random-lock shows about 5x speedup on Neoverse V1. | ||
11 | |||
12 | Upstream-Status: Backport [be0cfd848d9ad7378800d6302bc11467cf2b514f] | ||
13 | |||
14 | Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> | ||
15 | Signed-off-by: Haixiao Yan <haixiao.yan.cn@windriver.com> | ||
16 | --- | ||
17 | stdlib/random.c | 7 +++++++ | ||
18 | 1 file changed, 7 insertions(+) | ||
19 | |||
20 | diff --git a/stdlib/random.c b/stdlib/random.c | ||
21 | index 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 | -- | ||
46 | 2.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 | ||
18 | diff --git a/sysdeps/aarch64/bits/wordsize.h b/sysdeps/aarch64/bits/wordsize.h | 19 | diff --git a/sysdeps/aarch64/bits/wordsize.h b/sysdeps/aarch64/bits/wordsize.h |
19 | index 118e59172d..ff86359fe8 100644 | 20 | index 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 | |||
17 | index 362a51f882..56d2b37058 100644 | 17 | index 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 | |||
6 | output() { | ||
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 | ||
17 | export GLIBC_TEST_ALLOW_TIME_SETTING="1" | ||
18 | |||
19 | tst_time64=$(ls -r ${PWD}/tests/glibc-ptest/*-time64) | ||
20 | |||
21 | # Remove '-time64' suffix - those tests are also time | ||
22 | # related | ||
23 | tst_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 | ||
33 | for i in ${tst_time64} | ||
34 | do | ||
35 | $i >/dev/null 2>&1 | ||
36 | output | ||
37 | done | ||
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 | |||
17 | easier access for another. 'ASLR bypass itself is not a vulnerability.'" | 17 | easier access for another. 'ASLR bypass itself is not a vulnerability.'" |
18 | 18 | ||
19 | CVE_STATUS_GROUPS += "CVE_STATUS_STABLE_BACKPORTS" | 19 | CVE_STATUS_GROUPS += "CVE_STATUS_STABLE_BACKPORTS" |
20 | CVE_STATUS_STABLE_BACKPORTS = "CVE-2024-2961 CVE-2024-33599 CVE-2024-33600 CVE-2024-33601 CVE-2024-33602 CVE-2025-0395" | 20 | CVE_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" | ||
21 | CVE_STATUS_STABLE_BACKPORTS[status] = "cpe-stable-backport: fix available in used git hash" | 22 | CVE_STATUS_STABLE_BACKPORTS[status] = "cpe-stable-backport: fix available in used git hash" |
22 | 23 | ||
23 | DEPENDS += "gperf-native bison-native" | 24 | DEPENDS += "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 | " |
57 | S = "${WORKDIR}/git" | 59 | S = "${WORKDIR}/git" |
58 | B = "${WORKDIR}/build-${TARGET_SYS}" | 60 | B = "${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 | ||
27 | REQUIRED_DISTRO_FEATURES += "xattr" | 27 | REQUIRED_DISTRO_FEATURES += "xattr" |
28 | 28 | ||
29 | SRCREV ?= "0ce88bc3474d29122e6f319cf474e5c5dce55419" | 29 | SRCREV ?= "1c462cc39e557276861323b7adcef4fedbdf75e9" |
30 | SRC_URI = "git://git.yoctoproject.org/poky;branch=scarthgap \ | 30 | SRC_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" | |||
15 | LIC_FILES_CHKSUM = "file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe \ | 15 | LIC_FILES_CHKSUM = "file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe \ |
16 | file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c" | 16 | file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c" |
17 | 17 | ||
18 | SRCREV = "20415d357fb0e253df7444019a47674fac4ed1d6" | 18 | SRCREV = "70500d37992a01d3275b1c414c3ed161d6f91f9e" |
19 | SRCBRANCH = "v255-stable" | 19 | SRCBRANCH = "v255-stable" |
20 | SRC_URI = "git://github.com/systemd/systemd-stable.git;protocol=https;branch=${SRCBRANCH}" | 20 | SRC_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 @@ | |||
1 | From 7bbb54406dd77c358eab9df08b100ee85e176052 Mon Sep 17 00:00:00 2001 | 1 | From b270af4c086d254758fdcd1d294b15a555a4b3ea Mon Sep 17 00:00:00 2001 |
2 | From: Chen Qi <Qi.Chen@windriver.com> | 2 | From: Chen Qi <Qi.Chen@windriver.com> |
3 | Date: Mon, 25 Feb 2019 13:55:12 +0800 | 3 | Date: Mon, 25 Feb 2019 13:55:12 +0800 |
4 | Subject: [PATCH] missing_type.h: add comparison_fn_t | 4 | Subject: [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 @@ | |||
1 | From d0b08484a6c3113b6209d8f8e1dc1186a6427b99 Mon Sep 17 00:00:00 2001 | 1 | From 0660aea3d7c8058d73c9f7b2971f4daf35dd7a32 Mon Sep 17 00:00:00 2001 |
2 | From: Alexander Kanavin <alex.kanavin@gmail.com> | 2 | From: Alexander Kanavin <alex.kanavin@gmail.com> |
3 | Date: Sat, 22 May 2021 20:26:24 +0200 | 3 | Date: Sat, 22 May 2021 20:26:24 +0200 |
4 | Subject: [PATCH] add fallback parse_printf_format implementation | 4 | Subject: [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 @@ | |||
1 | From 7e4fae68909ce4932e073dd060e22581edc39ad2 Mon Sep 17 00:00:00 2001 | 1 | From edc39fe19419120f70341cd50d4d097a514ac9cb Mon Sep 17 00:00:00 2001 |
2 | From: Chen Qi <Qi.Chen@windriver.com> | 2 | From: Chen Qi <Qi.Chen@windriver.com> |
3 | Date: Thu, 21 Feb 2019 16:23:24 +0800 | 3 | Date: Thu, 21 Feb 2019 16:23:24 +0800 |
4 | Subject: [PATCH] binfmt: Don't install dependency links at install time for | 4 | Subject: [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 @@ | |||
1 | From ca0b48676132744b78d99ee3ec2d33f11bb73c28 Mon Sep 17 00:00:00 2001 | 1 | From c728a728cd54c372162f5447aa94921efb0c35f0 Mon Sep 17 00:00:00 2001 |
2 | From: Chen Qi <Qi.Chen@windriver.com> | 2 | From: Chen Qi <Qi.Chen@windriver.com> |
3 | Date: Mon, 25 Feb 2019 14:18:21 +0800 | 3 | Date: Mon, 25 Feb 2019 14:18:21 +0800 |
4 | Subject: [PATCH] src/basic/missing.h: check for missing strndupa | 4 | Subject: [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); |
282 | diff --git a/src/core/dbus-execute.c b/src/core/dbus-execute.c | 282 | diff --git a/src/core/dbus-execute.c b/src/core/dbus-execute.c |
283 | index 2d05ba7e1d..61a7de0037 100644 | 283 | index 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 */ |
354 | diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c | 354 | diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c |
355 | index 016f3baa7f..b1def81313 100644 | 355 | index 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 | ||
426 | diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c | 426 | diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c |
427 | index 8befc97460..6ee4d4f595 100644 | 427 | index 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 |
618 | diff --git a/src/shared/pager.c b/src/shared/pager.c | 618 | diff --git a/src/shared/pager.c b/src/shared/pager.c |
619 | index 19deefab56..6b6d0af1a0 100644 | 619 | index 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 @@ | |||
1 | From 3ea9cc03431c93c86cf0ca63ad04219af221a2d0 Mon Sep 17 00:00:00 2001 | 1 | From 674232187bf337c31a6528b4d241eafeb27ac85e Mon Sep 17 00:00:00 2001 |
2 | From: Chen Qi <Qi.Chen@windriver.com> | 2 | From: Chen Qi <Qi.Chen@windriver.com> |
3 | Date: Mon, 25 Feb 2019 14:56:21 +0800 | 3 | Date: Mon, 25 Feb 2019 14:56:21 +0800 |
4 | Subject: [PATCH] don't fail if GLOB_BRACE and GLOB_ALTDIRFUNC is not defined | 4 | Subject: [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 @@ | |||
1 | From 885a6880ad1b687e3fbf1b9f35e218bee1fcc835 Mon Sep 17 00:00:00 2001 | 1 | From cdaafa37983753d309d2b37f8262e71f95798e52 Mon Sep 17 00:00:00 2001 |
2 | From: Chen Qi <Qi.Chen@windriver.com> | 2 | From: Chen Qi <Qi.Chen@windriver.com> |
3 | Date: Mon, 25 Feb 2019 15:00:06 +0800 | 3 | Date: Mon, 25 Feb 2019 15:00:06 +0800 |
4 | Subject: [PATCH] add missing FTW_ macros for musl | 4 | Subject: [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 @@ | |||
1 | From 646c3ced29922065eed64ac9b23af8276e989608 Mon Sep 17 00:00:00 2001 | 1 | From 8c33fe6338c448dca8533b9d3f9933e2794bda61 Mon Sep 17 00:00:00 2001 |
2 | From: Chen Qi <Qi.Chen@windriver.com> | 2 | From: Chen Qi <Qi.Chen@windriver.com> |
3 | Date: Mon, 25 Feb 2019 15:12:41 +0800 | 3 | Date: Mon, 25 Feb 2019 15:12:41 +0800 |
4 | Subject: [PATCH] Use uintmax_t for handling rlim_t | 4 | Subject: [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 @@ | |||
1 | From f772369a2519b378c09bb89bd48c3743a62404e3 Mon Sep 17 00:00:00 2001 | 1 | From 68ab3364c0fe1073bba3adf02add7108de80a17c Mon Sep 17 00:00:00 2001 |
2 | From: Andre McCurdy <armccurdy@gmail.com> | 2 | From: Andre McCurdy <armccurdy@gmail.com> |
3 | Date: Tue, 10 Oct 2017 14:33:30 -0700 | 3 | Date: Tue, 10 Oct 2017 14:33:30 -0700 |
4 | Subject: [PATCH] don't pass AT_SYMLINK_NOFOLLOW flag to faccessat() | 4 | Subject: [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 @@ | |||
1 | From 45b1226ddbd981798e0448da41ddc4901e246b45 Mon Sep 17 00:00:00 2001 | 1 | From 6dd1aa50da27c07530a434218b5a7a384d0c6747 Mon Sep 17 00:00:00 2001 |
2 | From: Khem Raj <raj.khem@gmail.com> | 2 | From: Khem Raj <raj.khem@gmail.com> |
3 | Date: Sun, 27 May 2018 08:36:44 -0700 | 3 | Date: Sun, 27 May 2018 08:36:44 -0700 |
4 | Subject: [PATCH] Define glibc compatible basename() for non-glibc systems | 4 | Subject: [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 @@ | |||
1 | From abca5814cb0b5b98a1e7af829cc166e76c524f1a Mon Sep 17 00:00:00 2001 | 1 | From 8da2b10dcbf423f791db79b7dfcc6cfaf8e26f8b Mon Sep 17 00:00:00 2001 |
2 | From: Khem Raj <raj.khem@gmail.com> | 2 | From: Khem Raj <raj.khem@gmail.com> |
3 | Date: Sat, 5 Sep 2015 06:31:47 +0000 | 3 | Date: Sat, 5 Sep 2015 06:31:47 +0000 |
4 | Subject: [PATCH] implment systemd-sysv-install for OE | 4 | Subject: [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 @@ | |||
1 | From 8d61cecff3ba0687ad2c10aacb7d2aee7cb3fa79 Mon Sep 17 00:00:00 2001 | 1 | From ed33f139195794477ac854214022034db306f42d Mon Sep 17 00:00:00 2001 |
2 | From: Chen Qi <Qi.Chen@windriver.com> | 2 | From: Chen Qi <Qi.Chen@windriver.com> |
3 | Date: Wed, 4 Jul 2018 15:00:44 +0800 | 3 | Date: Wed, 4 Jul 2018 15:00:44 +0800 |
4 | Subject: [PATCH] Do not disable buffering when writing to oom_score_adj | 4 | Subject: [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 @@ | |||
1 | From 2180b639665bd314905ef058dee9a5e4a534333e Mon Sep 17 00:00:00 2001 | 1 | From ef261a0122ff5a4340897c9afe1fae04d14eb0dd Mon Sep 17 00:00:00 2001 |
2 | From: Chen Qi <Qi.Chen@windriver.com> | 2 | From: Chen Qi <Qi.Chen@windriver.com> |
3 | Date: Tue, 10 Jul 2018 15:40:17 +0800 | 3 | Date: Tue, 10 Jul 2018 15:40:17 +0800 |
4 | Subject: [PATCH] distinguish XSI-compliant strerror_r from GNU-specifi | 4 | Subject: [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 @@ | |||
1 | From 3b1639c7052d9d574dd05d268364e7919b6f2580 Mon Sep 17 00:00:00 2001 | 1 | From 8b76e1f027d73e26cfc8e13bd49f43197dbb9004 Mon Sep 17 00:00:00 2001 |
2 | From: Chen Qi <Qi.Chen@windriver.com> | 2 | From: Chen Qi <Qi.Chen@windriver.com> |
3 | Date: Mon, 25 Feb 2019 15:44:54 +0800 | 3 | Date: Mon, 25 Feb 2019 15:44:54 +0800 |
4 | Subject: [PATCH] avoid redefinition of prctl_mm_map structure | 4 | Subject: [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 @@ | |||
1 | From c1a375d93edbfaf3f64bec88c75cfcf436d4ba05 Mon Sep 17 00:00:00 2001 | 1 | From 9686b8c52bd9e532ebe687dd31352d884873e0a4 Mon Sep 17 00:00:00 2001 |
2 | From: Chen Qi <Qi.Chen@windriver.com> | 2 | From: Chen Qi <Qi.Chen@windriver.com> |
3 | Date: Fri, 1 Mar 2019 15:22:15 +0800 | 3 | Date: Fri, 1 Mar 2019 15:22:15 +0800 |
4 | Subject: [PATCH] do not disable buffer in writing files | 4 | Subject: [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 |
190 | diff --git a/src/core/cgroup.c b/src/core/cgroup.c | 190 | diff --git a/src/core/cgroup.c b/src/core/cgroup.c |
191 | index 61539afdbf..77e2b35daf 100644 | 191 | index 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 | ||
203 | diff --git a/src/core/main.c b/src/core/main.c | 203 | diff --git a/src/core/main.c b/src/core/main.c |
204 | index 8373a156cb..33e866942c 100644 | 204 | index 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 @@ | |||
1 | From b10a273f5e26536068a90f961c2a7a6c6528083b Mon Sep 17 00:00:00 2001 | 1 | From 385fbcc3cec50b995299e25f913d9683ddf51174 Mon Sep 17 00:00:00 2001 |
2 | From: Scott Murray <scott.murray@konsulko.com> | 2 | From: Scott Murray <scott.murray@konsulko.com> |
3 | Date: Fri, 13 Sep 2019 19:26:27 -0400 | 3 | Date: Fri, 13 Sep 2019 19:26:27 -0400 |
4 | Subject: [PATCH] Handle __cpu_mask usage | 4 | Subject: [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 @@ | |||
1 | From c55dd0f9e1ea05749d0a54082daa69729ee946af Mon Sep 17 00:00:00 2001 | 1 | From bc62e5e507cc3f10fde7d35d16059a06a78757b6 Mon Sep 17 00:00:00 2001 |
2 | From: Alex Kiernan <alex.kiernan@gmail.com> | 2 | From: Alex Kiernan <alex.kiernan@gmail.com> |
3 | Date: Tue, 10 Mar 2020 11:05:20 +0000 | 3 | Date: Tue, 10 Mar 2020 11:05:20 +0000 |
4 | Subject: [PATCH] Handle missing gshadow | 4 | Subject: [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 @@ | |||
1 | From 4733cb758285ec7f63e834894aa8f09d9bc77ad5 Mon Sep 17 00:00:00 2001 | 1 | From 79f2f3e90229f4812d93c6965cb67385642dfcc4 Mon Sep 17 00:00:00 2001 |
2 | From: Khem Raj <raj.khem@gmail.com> | 2 | From: Khem Raj <raj.khem@gmail.com> |
3 | Date: Mon, 12 Apr 2021 23:44:53 -0700 | 3 | Date: Mon, 12 Apr 2021 23:44:53 -0700 |
4 | Subject: [PATCH] missing_syscall.h: Define MIPS ABI defines for musl | 4 | Subject: [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 @@ | |||
1 | From 1118d270cf2cd7c6cb99eb40ab42c3d07b20476c Mon Sep 17 00:00:00 2001 | 1 | From a8e07d87adfeb1c72c6eaf5402db465a78e08ee6 Mon Sep 17 00:00:00 2001 |
2 | From: Khem Raj <raj.khem@gmail.com> | 2 | From: Khem Raj <raj.khem@gmail.com> |
3 | Date: Fri, 21 Jan 2022 15:15:11 -0800 | 3 | Date: Fri, 21 Jan 2022 15:15:11 -0800 |
4 | Subject: [PATCH] pass correct parameters to getdents64 | 4 | Subject: [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 @@ | |||
1 | From ab78d7938e732125012f8276e357e8f6d4a51476 Mon Sep 17 00:00:00 2001 | 1 | From 5da745dc6f60f6fac65371a60eee7cecaf575eae Mon Sep 17 00:00:00 2001 |
2 | From: Khem Raj <raj.khem@gmail.com> | 2 | From: Khem Raj <raj.khem@gmail.com> |
3 | Date: Fri, 21 Jan 2022 22:19:37 -0800 | 3 | Date: Fri, 21 Jan 2022 22:19:37 -0800 |
4 | Subject: [PATCH] Adjust for musl headers | 4 | Subject: [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 @@ | |||
1 | From 20cf3569dff21f5c4e46855c3956606fa0141710 Mon Sep 17 00:00:00 2001 | 1 | From 1c5c9714a2a9bc651687bf2c583019c52ed93ac4 Mon Sep 17 00:00:00 2001 |
2 | From: Khem Raj <raj.khem@gmail.com> | 2 | From: Khem Raj <raj.khem@gmail.com> |
3 | Date: Tue, 8 Nov 2022 13:31:34 -0800 | 3 | Date: Tue, 8 Nov 2022 13:31:34 -0800 |
4 | Subject: [PATCH] test-bus-error: strerror() is assumed to be GNU specific | 4 | Subject: [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 @@ | |||
1 | From 5e3e71f93adf5bdbfd470bcd93320dab314dc3ef Mon Sep 17 00:00:00 2001 | 1 | From 43f56ac05ff4b9c7774b6f580612f2a7896a4885 Mon Sep 17 00:00:00 2001 |
2 | From: Khem Raj <raj.khem@gmail.com> | 2 | From: Khem Raj <raj.khem@gmail.com> |
3 | Date: Mon, 23 Jan 2023 23:39:46 -0800 | 3 | Date: Mon, 23 Jan 2023 23:39:46 -0800 |
4 | Subject: [PATCH] errno-util: Make STRERROR portable for musl | 4 | Subject: [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 @@ | |||
1 | From 18201d3350b443c79cc85274f3944bf64de33da0 Mon Sep 17 00:00:00 2001 | 1 | From cda1cc94bd81c8ff9135255895a414fb938e2c79 Mon Sep 17 00:00:00 2001 |
2 | From: Khem Raj <raj.khem@gmail.com> | 2 | From: Khem Raj <raj.khem@gmail.com> |
3 | Date: Wed, 2 Aug 2023 12:06:27 -0700 | 3 | Date: Wed, 2 Aug 2023 12:06:27 -0700 |
4 | Subject: [PATCH] sd-event: Make malloc_trim() conditional on glibc | 4 | Subject: [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 @@ | |||
1 | From 96c3d0d3a2359dd248685c2ede876d66c3faa3f9 Mon Sep 17 00:00:00 2001 | 1 | From 2913e608d6e91c8037d698534f72970b4c365d8f Mon Sep 17 00:00:00 2001 |
2 | From: Khem Raj <raj.khem@gmail.com> | 2 | From: Khem Raj <raj.khem@gmail.com> |
3 | Date: Wed, 2 Aug 2023 12:20:40 -0700 | 3 | Date: Wed, 2 Aug 2023 12:20:40 -0700 |
4 | Subject: [PATCH] shared: Do not use malloc_info on musl | 4 | Subject: [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 @@ | |||
1 | From f3bc7816d9cca9963a2737857763ee76e300a232 Mon Sep 17 00:00:00 2001 | 1 | From 9d151b5bb3105fb21d55a301def3d97b5a314580 Mon Sep 17 00:00:00 2001 |
2 | From: Chen Qi <Qi.Chen@windriver.com> | 2 | From: Chen Qi <Qi.Chen@windriver.com> |
3 | Date: Tue, 2 Jan 2024 11:03:27 +0800 | 3 | Date: Tue, 2 Jan 2024 11:03:27 +0800 |
4 | Subject: [PATCH] avoid missing LOCK_EX declaration | 4 | Subject: [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 | ||
17 | diff --git a/src/core/exec-invoke.c b/src/core/exec-invoke.c | 17 | diff --git a/src/core/exec-invoke.c b/src/core/exec-invoke.c |
18 | index 22bc8d10c1..9bced8f420 100644 | 18 | index 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 | ||
47 | SRC_URI[sha256sum] = "7b6605e48d1a49f43cc4b4cfc59f313d0dd5402fa40b96810bd572e167dfed0f" | 48 | SRC_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 @@ | |||
1 | From 51f1e56cc8b6843bf65ceadc5eca1545258bf020 Mon Sep 17 00:00:00 2001 | ||
2 | From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= <thomas@t-8ch.de> | ||
3 | Date: Sat, 22 Apr 2023 17:48:58 +0200 | ||
4 | Subject: [PATCH 1/3] tests: (functions.sh) create variable for test fstab | ||
5 | location | ||
6 | MIME-Version: 1.0 | ||
7 | Content-Type: text/plain; charset=UTF-8 | ||
8 | Content-Transfer-Encoding: 8bit | ||
9 | |||
10 | Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de> | ||
11 | (cherry picked from commit ed3d33faff17fb702a3acfca2f9f24e69f4920de) | ||
12 | Upstream-Status: Backport [https://github.com/util-linux/util-linux/commit/ed3d33faff17fb702a3acfca2f9f24e69f4920de] | ||
13 | Signed-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 | |||
19 | diff --git a/tests/functions.sh b/tests/functions.sh | ||
20 | index 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 | |||
68 | diff --git a/tests/ts/mount/fstab-broken b/tests/ts/mount/fstab-broken | ||
69 | index 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 | -- | ||
82 | 2.34.1 | ||
83 | |||
84 | |||
85 | From 1e4a9141ca7d310030311e09123a81591f994f83 Mon Sep 17 00:00:00 2001 | ||
86 | From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= <thomas@t-8ch.de> | ||
87 | Date: Sat, 22 Apr 2023 17:20:45 +0200 | ||
88 | Subject: [PATCH 2/3] tests: (functions.sh) use per-test fstab file | ||
89 | MIME-Version: 1.0 | ||
90 | Content-Type: text/plain; charset=UTF-8 | ||
91 | Content-Transfer-Encoding: 8bit | ||
92 | |||
93 | Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de> | ||
94 | (cherry picked from commit 6aa8d17b6b53b86a46c5da68c02a893113130496) | ||
95 | Upstream-Status: Backport [https://github.com/util-linux/util-linux/commit/6aa8d17b6b53b86a46c5da68c02a893113130496] | ||
96 | Signed-off-by: Virendra Thakur <virendra.thakur@kpit.com> | ||
97 | --- | ||
98 | tests/functions.sh | 2 +- | ||
99 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
100 | |||
101 | diff --git a/tests/functions.sh b/tests/functions.sh | ||
102 | index 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 | -- | ||
115 | 2.34.1 | ||
116 | |||
117 | |||
118 | From 02c483f982e23a86d58cd7c6a4eb4b6e4d5def1a Mon Sep 17 00:00:00 2001 | ||
119 | From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= <thomas@t-8ch.de> | ||
120 | Date: Sat, 22 Apr 2023 17:34:28 +0200 | ||
121 | Subject: [PATCH 3/3] mount: (tests) explicitly use test fstab location | ||
122 | MIME-Version: 1.0 | ||
123 | Content-Type: text/plain; charset=UTF-8 | ||
124 | Content-Transfer-Encoding: 8bit | ||
125 | |||
126 | Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de> | ||
127 | (cherry picked from commit b1580bd760519a2cf052f023057846e54de47484) | ||
128 | Upstream-Status: Backport [https://github.com/util-linux/util-linux/commit/b1580bd760519a2cf052f023057846e54de47484] | ||
129 | Signed-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 | |||
149 | diff --git a/tests/ts/mount/fslists b/tests/ts/mount/fslists | ||
150 | index 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 | ||
162 | diff --git a/tests/ts/mount/fstab-bind b/tests/ts/mount/fstab-bind | ||
163 | index 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 | ||
175 | diff --git a/tests/ts/mount/fstab-broken b/tests/ts/mount/fstab-broken | ||
176 | index 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 | ||
197 | diff --git a/tests/ts/mount/fstab-btrfs b/tests/ts/mount/fstab-btrfs | ||
198 | index 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 | ||
223 | diff --git a/tests/ts/mount/fstab-devname b/tests/ts/mount/fstab-devname | ||
224 | index 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 | ||
243 | diff --git a/tests/ts/mount/fstab-devname2label b/tests/ts/mount/fstab-devname2label | ||
244 | index 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 | |||
256 | diff --git a/tests/ts/mount/fstab-devname2uuid b/tests/ts/mount/fstab-devname2uuid | ||
257 | index 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 | |||
269 | diff --git a/tests/ts/mount/fstab-label b/tests/ts/mount/fstab-label | ||
270 | index 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 | ||
296 | diff --git a/tests/ts/mount/fstab-label2devname b/tests/ts/mount/fstab-label2devname | ||
297 | index 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 | ||
316 | diff --git a/tests/ts/mount/fstab-label2uuid b/tests/ts/mount/fstab-label2uuid | ||
317 | index 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 | ||
336 | diff --git a/tests/ts/mount/fstab-loop b/tests/ts/mount/fstab-loop | ||
337 | index 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 | |||
353 | diff --git a/tests/ts/mount/fstab-none b/tests/ts/mount/fstab-none | ||
354 | index 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 | ||
366 | diff --git a/tests/ts/mount/fstab-symlink b/tests/ts/mount/fstab-symlink | ||
367 | index 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 | |||
379 | diff --git a/tests/ts/mount/fstab-uuid b/tests/ts/mount/fstab-uuid | ||
380 | index 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 | ||
406 | diff --git a/tests/ts/mount/fstab-uuid2devname b/tests/ts/mount/fstab-uuid2devname | ||
407 | index 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 | ||
426 | diff --git a/tests/ts/mount/fstab-uuid2label b/tests/ts/mount/fstab-uuid2label | ||
427 | index 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 | -- | ||
447 | 2.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" | |||
19 | UPSTREAM_CHECK_GITTAGREGEX = "binutils-(?P<pver>\d+_(\d_?)*)" | 19 | UPSTREAM_CHECK_GITTAGREGEX = "binutils-(?P<pver>\d+_(\d_?)*)" |
20 | 20 | ||
21 | CVE_STATUS[CVE-2023-25584] = "cpe-incorrect: Applies only for version 2.40 and earlier" | 21 | CVE_STATUS[CVE-2023-25584] = "cpe-incorrect: Applies only for version 2.40 and earlier" |
22 | CVE_STATUS[CVE-2025-1180] = "patched: fixed by patch for CVE-2025-1176" | ||
22 | 23 | ||
23 | SRCREV ?= "6558f9f5f0ccc107a083ae7fbf106ebcb5efa817" | 24 | SRCREV ?= "6558f9f5f0ccc107a083ae7fbf106ebcb5efa817" |
24 | BINUTILS_GIT_URI ?= "git://sourceware.org/git/binutils-gdb.git;branch=${SRCBRANCH};protocol=https" | 25 | BINUTILS_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 | " |
49 | S = "${WORKDIR}/git" | 57 | S = "${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 @@ | |||
1 | From 0b7f992b78fe0984fc7d84cc748d0794e4a400e3 Mon Sep 17 00:00:00 2001 | ||
2 | From: Alan Modra <amodra@gmail.com> | ||
3 | Date: Thu, 6 Feb 2025 21:46:22 +1030 | ||
4 | Subject: [PATCH] PR 32603, ld -w misbehaviorur | ||
5 | |||
6 | ld -w currently causes segmentation faults and other misbehaviour | ||
7 | since it changes einfo with %F in the format string (fatal error) to | ||
8 | not exit. This patch fixes that by introducing a new variant of einfo | ||
9 | called "fatal" that always exits, and replaces all einfo calls using | ||
10 | %F with a call to fatal without the %F. I considered modifying einfo | ||
11 | to 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 | ||
13 | might have moved the %F. It's also a little nicer to inform the | ||
14 | compiler of a function that doesn't return. | ||
15 | |||
16 | The patch also fixes some formatting nits, and makes use of %pA | ||
17 | to print section names in a couple of places in aix.em. | ||
18 | |||
19 | Upstream-Status: Backport [https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=0b7f992b78fe0984fc7d84cc748d0794e4a400e3] | ||
20 | CVE: CVE-2025-1153 | ||
21 | |||
22 | Signed-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 | |||
80 | diff --git a/ld/emulparams/call_nop.sh b/ld/emulparams/call_nop.sh | ||
81 | index 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 | |||
108 | diff --git a/ld/emulparams/cet.sh b/ld/emulparams/cet.sh | ||
109 | index 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 | ' | ||
121 | diff --git a/ld/emulparams/elf32mcore.sh b/ld/emulparams/elf32mcore.sh | ||
122 | index 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 | ' | ||
133 | diff --git a/ld/emulparams/x86-64-lam.sh b/ld/emulparams/x86-64-lam.sh | ||
134 | index 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 | ' | ||
164 | diff --git a/ld/emulparams/x86-64-level.sh b/ld/emulparams/x86-64-level.sh | ||
165 | index 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 | ' | ||
177 | diff --git a/ld/emultempl/aarch64elf.em b/ld/emultempl/aarch64elf.em | ||
178 | index 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 | ' | ||
208 | diff --git a/ld/emultempl/aix.em b/ld/emultempl/aix.em | ||
209 | index 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, ¶ms)) | ||
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 | |||
376 | diff --git a/ld/emultempl/armelf.em b/ld/emultempl/armelf.em | ||
377 | index 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, ¶ms); | ||
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 | |||
420 | diff --git a/ld/emultempl/avrelf.em b/ld/emultempl/avrelf.em | ||
421 | index 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 | } | ||
433 | diff --git a/ld/emultempl/beos.em b/ld/emultempl/beos.em | ||
434 | index 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 | ||
521 | diff --git a/ld/emultempl/cr16elf.em b/ld/emultempl/cr16elf.em | ||
522 | index 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 | ||
543 | diff --git a/ld/emultempl/cskyelf.em b/ld/emultempl/cskyelf.em | ||
544 | index 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 | ' | ||
565 | diff --git a/ld/emultempl/elf.em b/ld/emultempl/elf.em | ||
566 | index 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 | } | ||
632 | diff --git a/ld/emultempl/hppaelf.em b/ld/emultempl/hppaelf.em | ||
633 | index 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 | ' | ||
654 | diff --git a/ld/emultempl/kvxelf.em b/ld/emultempl/kvxelf.em | ||
655 | index 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 | |||
679 | diff --git a/ld/emultempl/loongarchelf.em b/ld/emultempl/loongarchelf.em | ||
680 | index 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 | ||
697 | diff --git a/ld/emultempl/m68hc1xelf.em b/ld/emultempl/m68hc1xelf.em | ||
698 | index 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 | |||
710 | diff --git a/ld/emultempl/m68kelf.em b/ld/emultempl/m68kelf.em | ||
711 | index 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 | ||
732 | diff --git a/ld/emultempl/metagelf.em b/ld/emultempl/metagelf.em | ||
733 | index 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 | ' | ||
754 | diff --git a/ld/emultempl/mipself.em b/ld/emultempl/mipself.em | ||
755 | index 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; | ||
767 | diff --git a/ld/emultempl/mmix-elfnmmo.em b/ld/emultempl/mmix-elfnmmo.em | ||
768 | index 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 | |||
783 | diff --git a/ld/emultempl/nds32elf.em b/ld/emultempl/nds32elf.em | ||
784 | index 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: | ||
814 | diff --git a/ld/emultempl/nto.em b/ld/emultempl/nto.em | ||
815 | index 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; | ||
887 | diff --git a/ld/emultempl/pe.em b/ld/emultempl/pe.em | ||
888 | index 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; | ||
981 | diff --git a/ld/emultempl/pep.em b/ld/emultempl/pep.em | ||
982 | index 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; | ||
1057 | diff --git a/ld/emultempl/ppc32elf.em b/ld/emultempl/ppc32elf.em | ||
1058 | index 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 | |||
1079 | diff --git a/ld/emultempl/ppc64elf.em b/ld/emultempl/ppc64elf.em | ||
1080 | index 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, ¶ms)) | ||
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 | ||
1128 | diff --git a/ld/emultempl/riscvelf.em b/ld/emultempl/riscvelf.em | ||
1129 | index 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 | } | ||
1141 | diff --git a/ld/emultempl/s390.em b/ld/emultempl/s390.em | ||
1142 | index 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, ¶ms)) | ||
1149 | - einfo (_("%F%P: can not init BFD: %E\n")); | ||
1150 | + fatal (_("%P: can not init BFD: %E\n")); | ||
1151 | } | ||
1152 | |||
1153 | EOF | ||
1154 | diff --git a/ld/emultempl/scoreelf.em b/ld/emultempl/scoreelf.em | ||
1155 | index 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 | } | ||
1167 | diff --git a/ld/emultempl/spuelf.em b/ld/emultempl/spuelf.em | ||
1168 | index 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 | |||
1258 | diff --git a/ld/emultempl/tic6xdsbt.em b/ld/emultempl/tic6xdsbt.em | ||
1259 | index 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, ¶ms); | ||
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: | ||
1293 | diff --git a/ld/emultempl/ticoff.em b/ld/emultempl/ticoff.em | ||
1294 | index 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; | ||
1308 | diff --git a/ld/emultempl/v850elf.em b/ld/emultempl/v850elf.em | ||
1309 | index 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 | } | ||
1321 | diff --git a/ld/emultempl/vms.em b/ld/emultempl/vms.em | ||
1322 | index 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 | } | ||
1334 | diff --git a/ld/emultempl/xtensaelf.em b/ld/emultempl/xtensaelf.em | ||
1335 | index 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) | ||
1390 | diff --git a/ld/emultempl/z80.em b/ld/emultempl/z80.em | ||
1391 | index 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); | ||
1403 | diff --git a/ld/ldcref.c b/ld/ldcref.c | ||
1404 | index 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; | ||
1442 | diff --git a/ld/ldelf.c b/ld/ldelf.c | ||
1443 | index 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 | { | ||
1578 | diff --git a/ld/ldelfgen.c b/ld/ldelfgen.c | ||
1579 | index 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 | } | ||
1648 | diff --git a/ld/ldemul.c b/ld/ldemul.c | ||
1649 | index 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 | ||
1661 | diff --git a/ld/ldexp.c b/ld/ldexp.c | ||
1662 | index 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 | ||
1850 | diff --git a/ld/ldfile.c b/ld/ldfile.c | ||
1851 | index 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 | } | ||
1915 | diff --git a/ld/ldgram.y b/ld/ldgram.y | ||
1916 | index 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 | } | ||
1938 | diff --git a/ld/ldlang.c b/ld/ldlang.c | ||
1939 | index 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); | ||
2322 | diff --git a/ld/ldlex.l b/ld/ldlex.l | ||
2323 | index 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)) | ||
2375 | diff --git a/ld/ldmain.c b/ld/ldmain.c | ||
2376 | index 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; | ||
2557 | diff --git a/ld/ldmisc.c b/ld/ldmisc.c | ||
2558 | index 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 | } | ||
2632 | diff --git a/ld/ldmisc.h b/ld/ldmisc.h | ||
2633 | index 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 *, ...); | ||
2644 | diff --git a/ld/ldwrite.c b/ld/ldwrite.c | ||
2645 | index 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 | } | ||
2730 | diff --git a/ld/lexsup.c b/ld/lexsup.c | ||
2731 | index 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; | ||
3015 | diff --git a/ld/mri.c b/ld/mri.c | ||
3016 | index 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 | ||
3028 | diff --git a/ld/pe-dll.c b/ld/pe-dll.c | ||
3029 | index 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 | |||
3086 | diff --git a/ld/plugin.c b/ld/plugin.c | ||
3087 | index 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 | -- | ||
3206 | 2.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 @@ | |||
1 | From 31e9e2e8d1090da0c1da97a70005d8841fff8ddd Mon Sep 17 00:00:00 2001 | ||
2 | From: Alan Modra <amodra@gmail.com> | ||
3 | Date: Sun, 16 Feb 2025 23:34:55 +1030 | ||
4 | Subject: [PATCH] PR 32603, more ld -w misbehaviour | ||
5 | |||
6 | Commit 8d97c1a53f3d claimed to replace all einfo calls using %F with | ||
7 | a call to fatal. It did so only for the ld/ directory. This patch | ||
8 | adds a "fatal" to linker callbacks, and replaces those calls in bfd/ | ||
9 | too. | ||
10 | |||
11 | Upstream-Status: Backport [https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=31e9e2e8d1090da0c1da97a70005d8841fff8ddd] | ||
12 | CVE: CVE-2025-1153 | ||
13 | |||
14 | Signed-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 | |||
52 | diff --git a/bfd/archive.c b/bfd/archive.c | ||
53 | index 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 | } | ||
67 | diff --git a/bfd/coff-aarch64.c b/bfd/coff-aarch64.c | ||
68 | index 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 | |||
83 | diff --git a/bfd/coffgen.c b/bfd/coffgen.c | ||
84 | index 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 | |||
96 | diff --git a/bfd/elf-ifunc.c b/bfd/elf-ifunc.c | ||
97 | index 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, | ||
112 | diff --git a/bfd/elf-m10300.c b/bfd/elf-m10300.c | ||
113 | index 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; | ||
127 | diff --git a/bfd/elf-properties.c b/bfd/elf-properties.c | ||
128 | index 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; | ||
145 | diff --git a/bfd/elf.c b/bfd/elf.c | ||
146 | index 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) | ||
160 | diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c | ||
161 | index 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 | |||
173 | diff --git a/bfd/elf32-avr.c b/bfd/elf32-avr.c | ||
174 | index 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) | ||
188 | diff --git a/bfd/elf32-csky.c b/bfd/elf32-csky.c | ||
189 | index 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 | |||
201 | diff --git a/bfd/elf32-frv.c b/bfd/elf32-frv.c | ||
202 | index 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; | ||
216 | diff --git a/bfd/elf32-hppa.c b/bfd/elf32-hppa.c | ||
217 | index 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); | ||
247 | diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c | ||
248 | index 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 | } | ||
262 | diff --git a/bfd/elf32-m68hc11.c b/bfd/elf32-m68hc11.c | ||
263 | index 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 | |||
275 | diff --git a/bfd/elf32-m68hc12.c b/bfd/elf32-m68hc12.c | ||
276 | index 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 | |||
288 | diff --git a/bfd/elf32-metag.c b/bfd/elf32-metag.c | ||
289 | index 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 | |||
301 | diff --git a/bfd/elf32-spu.c b/bfd/elf32-spu.c | ||
302 | index 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 | } | ||
324 | diff --git a/bfd/elf64-ia64-vms.c b/bfd/elf64-ia64-vms.c | ||
325 | index 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)) | ||
339 | diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c | ||
340 | index 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 | |||
361 | diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c | ||
362 | index 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 | } | ||
414 | diff --git a/bfd/elflink.c b/bfd/elflink.c | ||
415 | index 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 | |||
447 | diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c | ||
448 | index 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; | ||
472 | diff --git a/bfd/elfnn-ia64.c b/bfd/elfnn-ia64.c | ||
473 | index 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)) | ||
487 | diff --git a/bfd/elfnn-kvx.c b/bfd/elfnn-kvx.c | ||
488 | index 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); | ||
500 | diff --git a/bfd/elfnn-loongarch.c b/bfd/elfnn-loongarch.c | ||
501 | index 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, | ||
516 | diff --git a/bfd/elfxx-aarch64.c b/bfd/elfxx-aarch64.c | ||
517 | index 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; | ||
536 | diff --git a/bfd/elfxx-sparc.c b/bfd/elfxx-sparc.c | ||
537 | index 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; | ||
551 | diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c | ||
552 | index 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 | } | ||
756 | diff --git a/bfd/linker.c b/bfd/linker.c | ||
757 | index 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 | |||
769 | diff --git a/bfd/reloc.c b/bfd/reloc.c | ||
770 | index 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; | ||
784 | diff --git a/bfd/reloc16.c b/bfd/reloc16.c | ||
785 | index 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). */ | ||
799 | diff --git a/bfd/xcofflink.c b/bfd/xcofflink.c | ||
800 | index 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 | |||
812 | diff --git a/include/bfdlink.h b/include/bfdlink.h | ||
813 | index 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, ...); | ||
826 | diff --git a/ld/ldmain.c b/ld/ldmain.c | ||
827 | index 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 | -- | ||
839 | 2.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 @@ | |||
1 | From fe459e33c676883b5f28cc96c00e242973d906a9 Mon Sep 17 00:00:00 2001 | ||
2 | From: Alan Modra <amodra@gmail.com> | ||
3 | Date: Thu, 24 Apr 2025 10:01:29 +0930 | ||
4 | Subject: [PATCH] PR 32603, revert message changes | ||
5 | |||
6 | This puts back %F into translated fatal error messages | ||
7 | (and reverts a few other small changes), to not disturb | ||
8 | translation work | ||
9 | |||
10 | Upstream-Status: Backport [https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=fe459e33c676883b5f28cc96c00e242973d906a9] | ||
11 | CVE: CVE-2025-1153 | ||
12 | |||
13 | Signed-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 | |||
101 | diff --git a/bfd/archive.c b/bfd/archive.c | ||
102 | index 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 | } | ||
114 | diff --git a/bfd/coff-aarch64.c b/bfd/coff-aarch64.c | ||
115 | index 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 | } | ||
127 | diff --git a/bfd/coffgen.c b/bfd/coffgen.c | ||
128 | index 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 | |||
140 | diff --git a/bfd/elf-ifunc.c b/bfd/elf-ifunc.c | ||
141 | index 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, | ||
153 | diff --git a/bfd/elf-m10300.c b/bfd/elf-m10300.c | ||
154 | index 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; | ||
166 | diff --git a/bfd/elf-properties.c b/bfd/elf-properties.c | ||
167 | index 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; | ||
184 | diff --git a/bfd/elf.c b/bfd/elf.c | ||
185 | index 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) | ||
197 | diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c | ||
198 | index 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 | |||
210 | diff --git a/bfd/elf32-avr.c b/bfd/elf32-avr.c | ||
211 | index 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) | ||
223 | diff --git a/bfd/elf32-csky.c b/bfd/elf32-csky.c | ||
224 | index 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 | |||
236 | diff --git a/bfd/elf32-frv.c b/bfd/elf32-frv.c | ||
237 | index 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; | ||
249 | diff --git a/bfd/elf32-hppa.c b/bfd/elf32-hppa.c | ||
250 | index 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); | ||
280 | diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c | ||
281 | index 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 | } | ||
293 | diff --git a/bfd/elf32-m68hc11.c b/bfd/elf32-m68hc11.c | ||
294 | index 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 | |||
306 | diff --git a/bfd/elf32-m68hc12.c b/bfd/elf32-m68hc12.c | ||
307 | index 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 | |||
319 | diff --git a/bfd/elf32-metag.c b/bfd/elf32-metag.c | ||
320 | index 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 | |||
332 | diff --git a/bfd/elf32-spu.c b/bfd/elf32-spu.c | ||
333 | index 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 | } | ||
354 | diff --git a/bfd/elf64-ia64-vms.c b/bfd/elf64-ia64-vms.c | ||
355 | index 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)) | ||
367 | diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c | ||
368 | index 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 | |||
389 | diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c | ||
390 | index 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 | } | ||
438 | diff --git a/bfd/elflink.c b/bfd/elflink.c | ||
439 | index 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 | |||
469 | diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c | ||
470 | index 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; | ||
491 | diff --git a/bfd/elfnn-ia64.c b/bfd/elfnn-ia64.c | ||
492 | index 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)) | ||
504 | diff --git a/bfd/elfnn-kvx.c b/bfd/elfnn-kvx.c | ||
505 | index 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); | ||
517 | diff --git a/bfd/elfnn-loongarch.c b/bfd/elfnn-loongarch.c | ||
518 | index 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, | ||
530 | diff --git a/bfd/elfxx-aarch64.c b/bfd/elfxx-aarch64.c | ||
531 | index 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; | ||
548 | diff --git a/bfd/elfxx-sparc.c b/bfd/elfxx-sparc.c | ||
549 | index 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; | ||
561 | diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c | ||
562 | index 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 | } | ||
751 | diff --git a/bfd/linker.c b/bfd/linker.c | ||
752 | index 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 | |||
764 | diff --git a/bfd/reloc.c b/bfd/reloc.c | ||
765 | index 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; | ||
777 | diff --git a/bfd/reloc16.c b/bfd/reloc16.c | ||
778 | index 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). */ | ||
790 | diff --git a/bfd/xcofflink.c b/bfd/xcofflink.c | ||
791 | index 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 | |||
803 | diff --git a/ld/emulparams/call_nop.sh b/ld/emulparams/call_nop.sh | ||
804 | index 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 | |||
831 | diff --git a/ld/emulparams/cet.sh b/ld/emulparams/cet.sh | ||
832 | index 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 | ' | ||
844 | diff --git a/ld/emulparams/elf32mcore.sh b/ld/emulparams/elf32mcore.sh | ||
845 | index 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 | ' | ||
856 | diff --git a/ld/emulparams/x86-64-lam.sh b/ld/emulparams/x86-64-lam.sh | ||
857 | index 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 | ' | ||
887 | diff --git a/ld/emulparams/x86-64-level.sh b/ld/emulparams/x86-64-level.sh | ||
888 | index 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 | ' | ||
900 | diff --git a/ld/emultempl/aarch64elf.em b/ld/emultempl/aarch64elf.em | ||
901 | index 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 | ' | ||
931 | diff --git a/ld/emultempl/aix.em b/ld/emultempl/aix.em | ||
932 | index 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, ¶ms)) | ||
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 | |||
1098 | diff --git a/ld/emultempl/armelf.em b/ld/emultempl/armelf.em | ||
1099 | index 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, ¶ms); | ||
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 | |||
1142 | diff --git a/ld/emultempl/avrelf.em b/ld/emultempl/avrelf.em | ||
1143 | index 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 | } | ||
1155 | diff --git a/ld/emultempl/beos.em b/ld/emultempl/beos.em | ||
1156 | index 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 | ||
1237 | diff --git a/ld/emultempl/cr16elf.em b/ld/emultempl/cr16elf.em | ||
1238 | index 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 | ||
1259 | diff --git a/ld/emultempl/cskyelf.em b/ld/emultempl/cskyelf.em | ||
1260 | index 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 | ' | ||
1281 | diff --git a/ld/emultempl/elf.em b/ld/emultempl/elf.em | ||
1282 | index 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 | } | ||
1345 | diff --git a/ld/emultempl/hppaelf.em b/ld/emultempl/hppaelf.em | ||
1346 | index 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 | ' | ||
1367 | diff --git a/ld/emultempl/kvxelf.em b/ld/emultempl/kvxelf.em | ||
1368 | index 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 | |||
1389 | diff --git a/ld/emultempl/loongarchelf.em b/ld/emultempl/loongarchelf.em | ||
1390 | index 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 | ||
1402 | diff --git a/ld/emultempl/m68hc1xelf.em b/ld/emultempl/m68hc1xelf.em | ||
1403 | index 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 | |||
1415 | diff --git a/ld/emultempl/m68kelf.em b/ld/emultempl/m68kelf.em | ||
1416 | index 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 | ||
1437 | diff --git a/ld/emultempl/metagelf.em b/ld/emultempl/metagelf.em | ||
1438 | index 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 | ' | ||
1459 | diff --git a/ld/emultempl/mipself.em b/ld/emultempl/mipself.em | ||
1460 | index 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; | ||
1472 | diff --git a/ld/emultempl/mmix-elfnmmo.em b/ld/emultempl/mmix-elfnmmo.em | ||
1473 | index 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 | |||
1485 | diff --git a/ld/emultempl/nds32elf.em b/ld/emultempl/nds32elf.em | ||
1486 | index 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: | ||
1516 | diff --git a/ld/emultempl/nto.em b/ld/emultempl/nto.em | ||
1517 | index 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'. */ | ||
1565 | diff --git a/ld/emultempl/pe.em b/ld/emultempl/pe.em | ||
1566 | index 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; | ||
1659 | diff --git a/ld/emultempl/pep.em b/ld/emultempl/pep.em | ||
1660 | index 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; | ||
1735 | diff --git a/ld/emultempl/ppc32elf.em b/ld/emultempl/ppc32elf.em | ||
1736 | index 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 | |||
1757 | diff --git a/ld/emultempl/ppc64elf.em b/ld/emultempl/ppc64elf.em | ||
1758 | index 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, ¶ms)) | ||
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 | ||
1806 | diff --git a/ld/emultempl/riscvelf.em b/ld/emultempl/riscvelf.em | ||
1807 | index 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 | } | ||
1819 | diff --git a/ld/emultempl/s390.em b/ld/emultempl/s390.em | ||
1820 | index 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, ¶ms)) | ||
1827 | - fatal (_("%P: can not init BFD: %E\n")); | ||
1828 | + fatal (_("%F%P: can not init BFD: %E\n")); | ||
1829 | } | ||
1830 | |||
1831 | EOF | ||
1832 | diff --git a/ld/emultempl/scoreelf.em b/ld/emultempl/scoreelf.em | ||
1833 | index 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 | } | ||
1845 | diff --git a/ld/emultempl/spuelf.em b/ld/emultempl/spuelf.em | ||
1846 | index 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 | |||
1936 | diff --git a/ld/emultempl/tic6xdsbt.em b/ld/emultempl/tic6xdsbt.em | ||
1937 | index 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, ¶ms); | ||
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: | ||
1967 | diff --git a/ld/emultempl/ticoff.em b/ld/emultempl/ticoff.em | ||
1968 | index 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; | ||
1980 | diff --git a/ld/emultempl/v850elf.em b/ld/emultempl/v850elf.em | ||
1981 | index 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 | } | ||
1993 | diff --git a/ld/emultempl/vms.em b/ld/emultempl/vms.em | ||
1994 | index 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 | } | ||
2006 | diff --git a/ld/emultempl/xtensaelf.em b/ld/emultempl/xtensaelf.em | ||
2007 | index 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) | ||
2062 | diff --git a/ld/emultempl/z80.em b/ld/emultempl/z80.em | ||
2063 | index 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); | ||
2075 | diff --git a/ld/ldcref.c b/ld/ldcref.c | ||
2076 | index 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; | ||
2114 | diff --git a/ld/ldelf.c b/ld/ldelf.c | ||
2115 | index 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 | { | ||
2246 | diff --git a/ld/ldelfgen.c b/ld/ldelfgen.c | ||
2247 | index 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 | } | ||
2313 | diff --git a/ld/ldexp.c b/ld/ldexp.c | ||
2314 | index 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 | ||
2502 | diff --git a/ld/ldfile.c b/ld/ldfile.c | ||
2503 | index 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 | } | ||
2567 | diff --git a/ld/ldgram.y b/ld/ldgram.y | ||
2568 | index 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 | } | ||
2590 | diff --git a/ld/ldlang.c b/ld/ldlang.c | ||
2591 | index 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); | ||
2943 | diff --git a/ld/ldlex.l b/ld/ldlex.l | ||
2944 | index 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)) | ||
2992 | diff --git a/ld/ldmain.c b/ld/ldmain.c | ||
2993 | index 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; | ||
3174 | diff --git a/ld/ldmisc.c b/ld/ldmisc.c | ||
3175 | index 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 | } | ||
3203 | diff --git a/ld/ldwrite.c b/ld/ldwrite.c | ||
3204 | index 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 | } | ||
3287 | diff --git a/ld/lexsup.c b/ld/lexsup.c | ||
3288 | index 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; | ||
3564 | diff --git a/ld/mri.c b/ld/mri.c | ||
3565 | index 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 | ||
3577 | diff --git a/ld/pe-dll.c b/ld/pe-dll.c | ||
3578 | index 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 | |||
3635 | diff --git a/ld/plugin.c b/ld/plugin.c | ||
3636 | index 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 | -- | ||
3755 | 2.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 @@ | |||
1 | From: Alan Modra <amodra@gmail.com> | ||
2 | Date: Thu, 10 Apr 2025 19:41:49 +0930 | ||
3 | |||
4 | Upstream-Status: Backport [https://sourceware.org/git/?p=binutils-gdb.git;a=patch;h=d1458933830456e54223d9fc61f0d9b3a19256f5] | ||
5 | CVE: CVE-2025-5244 | ||
6 | |||
7 | PR32858 ld segfault on fuzzed object | ||
8 | We missed one place where it is necessary to check for empty groups. | ||
9 | |||
10 | Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com> | ||
11 | |||
12 | diff --git a/bfd/elflink.c b/bfd/elflink.c | ||
13 | index 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 @@ | |||
1 | From: Alan Modra <amodra@gmail.com> | ||
2 | Date: Tue, 1 Apr 2025 22:36:54 +1030 | ||
3 | |||
4 | PR32829, SEGV on objdump function debug_type_samep | ||
5 | u.kenum is always non-NULL, see debug_make_enum_type. | ||
6 | |||
7 | Upstream-Status: Backport [https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=6c3458a8b7ee7d39f070c7b2350851cb2110c65a] | ||
8 | CVE: CVE-2025-5245 | ||
9 | |||
10 | Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com> | ||
11 | |||
12 | diff --git a/binutils/debug.c b/binutils/debug.c | ||
13 | index 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 @@ | |||
1 | From 1d68a49ac5d71b648304f69af978fce0f4413800 Mon Sep 17 00:00:00 2001 | ||
2 | From: "H.J. Lu" <hjl.tools@gmail.com> | ||
3 | Date: Tue, 23 Jul 2024 23:39:50 -0700 | ||
4 | Subject: [PATCH 1/2] x86: Improve TLS transition error check | ||
5 | |||
6 | Provide detailed TLS transition errors when unsupported instructions are | ||
7 | used. Treat R_X86_64_CODE_4_GOTTPOFF and R_X86_64_CODE_6_GOTTPOFF as | ||
8 | R_X86_64_GOTTPOFF when performing TLS transition. | ||
9 | |||
10 | bfd/ | ||
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 | |||
37 | ld/ | ||
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) | ||
61 | Upstream-Status: Submitted [https://sourceware.org/pipermail/binutils/2025-May/141322.html] | ||
62 | CVE: CVE-2025-1179 | ||
63 | |||
64 | Signed-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 | |||
100 | diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c | ||
101 | index 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) | ||
387 | diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c | ||
388 | index 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) | ||
725 | diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c | ||
726 | index 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 | ||
821 | diff --git a/bfd/elfxx-x86.h b/bfd/elfxx-x86.h | ||
822 | index 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 | ||
857 | diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp | ||
858 | index 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" | ||
870 | diff --git a/ld/testsuite/ld-i386/tlsgdesc1.d b/ld/testsuite/ld-i386/tlsgdesc1.d | ||
871 | new file mode 100644 | ||
872 | index 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 | ||
880 | diff --git a/ld/testsuite/ld-i386/tlsgdesc1.s b/ld/testsuite/ld-i386/tlsgdesc1.s | ||
881 | new file mode 100644 | ||
882 | index 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 | ||
897 | diff --git a/ld/testsuite/ld-i386/tlsgdesc2.d b/ld/testsuite/ld-i386/tlsgdesc2.d | ||
898 | new file mode 100644 | ||
899 | index 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 | ||
907 | diff --git a/ld/testsuite/ld-i386/tlsgdesc2.s b/ld/testsuite/ld-i386/tlsgdesc2.s | ||
908 | new file mode 100644 | ||
909 | index 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 | ||
924 | diff --git a/ld/testsuite/ld-i386/tlsie2.d b/ld/testsuite/ld-i386/tlsie2.d | ||
925 | index 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 | ||
934 | diff --git a/ld/testsuite/ld-i386/tlsie3.d b/ld/testsuite/ld-i386/tlsie3.d | ||
935 | index 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 | ||
944 | diff --git a/ld/testsuite/ld-i386/tlsie4.d b/ld/testsuite/ld-i386/tlsie4.d | ||
945 | index 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 | ||
954 | diff --git a/ld/testsuite/ld-i386/tlsie5.d b/ld/testsuite/ld-i386/tlsie5.d | ||
955 | index 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 | ||
964 | diff --git a/ld/testsuite/ld-x86-64/tlsdesc3.d b/ld/testsuite/ld-x86-64/tlsdesc3.d | ||
965 | new file mode 100644 | ||
966 | index 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 | ||
974 | diff --git a/ld/testsuite/ld-x86-64/tlsdesc3.s b/ld/testsuite/ld-x86-64/tlsdesc3.s | ||
975 | new file mode 100644 | ||
976 | index 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 | ||
993 | diff --git a/ld/testsuite/ld-x86-64/tlsdesc4.d b/ld/testsuite/ld-x86-64/tlsdesc4.d | ||
994 | new file mode 100644 | ||
995 | index 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 | ||
1003 | diff --git a/ld/testsuite/ld-x86-64/tlsdesc4.s b/ld/testsuite/ld-x86-64/tlsdesc4.s | ||
1004 | new file mode 100644 | ||
1005 | index 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 | ||
1022 | diff --git a/ld/testsuite/ld-x86-64/tlsie2.d b/ld/testsuite/ld-x86-64/tlsie2.d | ||
1023 | index 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 | ||
1032 | diff --git a/ld/testsuite/ld-x86-64/tlsie3.d b/ld/testsuite/ld-x86-64/tlsie3.d | ||
1033 | index 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 | ||
1042 | diff --git a/ld/testsuite/ld-x86-64/tlsie5.d b/ld/testsuite/ld-x86-64/tlsie5.d | ||
1043 | new file mode 100644 | ||
1044 | index 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 | ||
1052 | diff --git a/ld/testsuite/ld-x86-64/tlsie5.s b/ld/testsuite/ld-x86-64/tlsie5.s | ||
1053 | new file mode 100644 | ||
1054 | index 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 | ||
1070 | diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp | ||
1071 | index 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 | -- | ||
1085 | 2.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 @@ | |||
1 | From 67e30b15212adc1502b898a1ca224fdf65dc110d Mon Sep 17 00:00:00 2001 | ||
2 | From: "H.J. Lu" <hjl.tools@gmail.com> | ||
3 | Date: Thu, 29 Aug 2024 08:47:00 -0700 | ||
4 | Subject: [PATCH] x86: Check invalid TLS descriptor call TLS descriptor | ||
5 | call, | ||
6 | |||
7 | call *x@tlsdesc(%rax) | ||
8 | |||
9 | or | ||
10 | |||
11 | call *x@tlsdesc(%eax) | ||
12 | |||
13 | calls _dl_tlsdesc_return which expects that RAX/EAX points to the TLS | ||
14 | descriptor. Update x86 linker to issue an error with or without TLS | ||
15 | transition. | ||
16 | |||
17 | bfd/ | ||
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 | |||
27 | ld/ | ||
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) | ||
36 | Upstream-Status: Submitted [https://sourceware.org/pipermail/binutils/2025-May/141321.html] | ||
37 | CVE: CVE-2025-1179 | ||
38 | |||
39 | Signed-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 | |||
51 | diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c | ||
52 | index 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: | ||
122 | diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c | ||
123 | index 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: | ||
221 | diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp | ||
222 | index 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" | ||
233 | diff --git a/ld/testsuite/ld-i386/tlsgdesc3.d b/ld/testsuite/ld-i386/tlsgdesc3.d | ||
234 | new file mode 100644 | ||
235 | index 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 | ||
244 | diff --git a/ld/testsuite/ld-x86-64/tlsdesc5.d b/ld/testsuite/ld-x86-64/tlsdesc5.d | ||
245 | new file mode 100644 | ||
246 | index 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 | ||
255 | diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp | ||
256 | index 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 | -- | ||
268 | 2.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() { | |||
51 | do_install() { | 51 | do_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 @@ | |||
1 | From 49576cf1df618609be4aa1000749ad087c143df0 Mon Sep 17 00:00:00 2001 | ||
2 | From: John Drouhard <john@drouhard.dev> | ||
3 | Date: Thu, 9 Jan 2025 20:34:42 -0600 | ||
4 | Subject: [PATCH] ctest: Allow arbitrary characters in test names of | ||
5 | CTestCostData.txt | ||
6 | |||
7 | This changes the way lines in CTestCostData.txt are parsed to allow for | ||
8 | spaces in the test name. | ||
9 | |||
10 | It does so by looking for space characters from the end; and once two | ||
11 | have been found, assumes everything from the beginning up to that | ||
12 | second-to-last-space is the test name. | ||
13 | |||
14 | Additionally, parsing the file should be much more efficient since there | ||
15 | is no string or vector heap allocation per line. The std::string used by | ||
16 | the parse function to convert the int and float should be within most | ||
17 | standard libraries' small string optimization. | ||
18 | |||
19 | Fixes: #26594 | ||
20 | |||
21 | Upstream-Status: Backport [4.0.0, 040da7d83216ace59710407e8ce35d5fd38e1340] | ||
22 | Signed-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 | |||
29 | diff --git a/Source/CTest/cmCTestMultiProcessHandler.cxx b/Source/CTest/cmCTestMultiProcessHandler.cxx | ||
30 | index 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 | |||
169 | diff --git a/Source/CTest/cmCTestMultiProcessHandler.h b/Source/CTest/cmCTestMultiProcessHandler.h | ||
170 | index 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 | |||
190 | diff --git a/Tests/CTestTestScheduler/CMakeLists.txt b/Tests/CTestTestScheduler/CMakeLists.txt | ||
191 | index 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 | |||
5 | DEPENDS += "curl expat zlib libarchive xz ncurses bzip2" | 5 | DEPENDS += "curl expat zlib libarchive xz ncurses bzip2" |
6 | 6 | ||
7 | SRC_URI:append:class-nativesdk = " \ | 7 | SRC_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 | ||
5 | PV = "13.3.0" | 5 | PV = "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 | ||
9 | BINV = "13.3.0" | 9 | BINV = "13.4.0" |
10 | 10 | ||
11 | FILESEXTRAPATHS =. "${FILE_DIRNAME}/gcc:${FILE_DIRNAME}/gcc/backport:" | 11 | FILESEXTRAPATHS =. "${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 | " |
72 | SRC_URI[sha256sum] = "0845e9621c9543a13f484e94584a49ffc0129970e9914624235fc1d061a0c083" | 70 | SRC_URI[sha256sum] = "9c4ce6dbb040568fdc545588ac03c5cbc95a8dbf0c7aa490170843afb59ca8f5" |
73 | 71 | ||
74 | S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/${SOURCEDIR}" | 72 | S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/${SOURCEDIR}" |
75 | B = "${WORKDIR}/gcc-${PV}/build.${HOST_SYS}.${TARGET_SYS}" | 73 | B = "${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 @@ | |||
1 | From 66aa69e2add2b8641a652768b0eac30f00427145 Mon Sep 17 00:00:00 2001 | ||
2 | From: Sunil Dora <sunilkumar.dora@windriver.com> | ||
3 | Date: Wed, 11 Dec 2024 09:48:16 -0800 | ||
4 | Subject: [PATCH] gcc: Fix c++: tweak for Wrange-loop-construct | ||
5 | |||
6 | This 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 | ||
8 | to types that can be copied trivially, whereas "trivially constructible" is the correct check | ||
9 | for types that can be trivially default-constructed. | ||
10 | |||
11 | This change ensures the warning is more accurate and aligns with the proper type traits. | ||
12 | |||
13 | LLVM accepted a similar fix: | ||
14 | https://github.com/llvm/llvm-project/issues/47355 | ||
15 | |||
16 | PR c++/116731 [https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116731] | ||
17 | |||
18 | Upstream-Status: Backport [https://gcc.gnu.org/g:179dc0f0fe01012675c1b430591b9891ce96c26e] | ||
19 | |||
20 | Signed-off-by: Marek Polacek <polacek@redhat.com> | ||
21 | Signed-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 | |||
28 | diff --git a/gcc/cp/parser.cc b/gcc/cp/parser.cc | ||
29 | index 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 | ||
48 | diff --git a/gcc/testsuite/g++.dg/warn/Wrange-loop-construct3.C b/gcc/testsuite/g++.dg/warn/Wrange-loop-construct3.C | ||
49 | new file mode 100644 | ||
50 | index 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 | -- | ||
112 | 2.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 @@ | |||
1 | From ab884fffe3fc82a710bea66ad651720d71c938b8 Mon Sep 17 00:00:00 2001 | ||
2 | From: Jonathan Wakely <jwakely@redhat.com> | ||
3 | Date: Tue, 30 Apr 2024 09:52:13 +0100 | ||
4 | Subject: [PATCH] libstdc++: Fix std::chrono::tzdb to work with vanguard format | ||
5 | |||
6 | I found some issues in the std::chrono::tzdb parser by testing the | ||
7 | tzdata "vanguard" format, which uses new features that aren't enabled in | ||
8 | the "main" and "rearguard" data formats. | ||
9 | |||
10 | Since 2024a the keyword "minimum" is no longer valid for the FROM and TO | ||
11 | fields in a Rule line, which means that "m" is now a valid abbreviation | ||
12 | for "maximum". Previously we expected either "mi" or "ma". For backwards | ||
13 | compatibility, a FROM field beginning with "mi" is still supported and | ||
14 | is treated as 1900. The "maximum" keyword is only allowed in TO now, | ||
15 | because it makes no sense in FROM. To support these changes the | ||
16 | minmax_year and minmax_year2 classes for parsing FROM and TO are | ||
17 | replaced with a single years_from_to class that reads both fields. | ||
18 | |||
19 | The vanguard format makes use of %z in Zone FORMAT fields, which caused | ||
20 | an exception to be thrown from ZoneInfo::set_abbrev because no % or / | ||
21 | characters were expected when a Zone doesn't use a named Rule. The | ||
22 | ZoneInfo::to(sys_info&) function now uses format_abbrev_str to replace | ||
23 | any %z with the current offset. Although format_abbrev_str also checks | ||
24 | for %s and STD/DST formats, those only make sense when a named Rule is | ||
25 | in effect, so won't occur when ZoneInfo::to(sys_info&) is used. | ||
26 | |||
27 | Since making this change on trunk, the tzdata-2024b release started | ||
28 | using %z in the main format, not just vanguard. This makes a backport to | ||
29 | release branches necessary (see PR 116657). | ||
30 | |||
31 | This change also implements a feature that has always been missing from | ||
32 | time_zone::_M_get_sys_info: finding the Rule that is active before the | ||
33 | specified time point, so that we can correctly handle %s in the FORMAT | ||
34 | for the first new sys_info that gets created. This requires implementing | ||
35 | a poorly documented feature of zic, to get the LETTERS field from a | ||
36 | later transition, as described at | ||
37 | https://mm.icann.org/pipermail/tz/2024-April/058891.html | ||
38 | In order for this to work we need to be able to distinguish an empty | ||
39 | letters field (as used by CE%sT where the variable part is either empty | ||
40 | or "S") from "the letters field is not known for this transition". The | ||
41 | tzdata file uses "-" for an empty letters field, which libstdc++ was | ||
42 | previously replacing with "" when the Rule was parsed. Instead, we now | ||
43 | preserve the "-" in the Rule object, so that "" can be used for the case | ||
44 | where we don't know the letters (and so need to decide it). | ||
45 | |||
46 | (cherry picked from commit 0ca8d56f2085715f27ee536c6c344bc47af49cdd) | ||
47 | |||
48 | Upstream-Status: Backport [https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=5ceea2ac106d6dd1aa8175670b15a801316cf1c9] | ||
49 | |||
50 | Signed-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 | |||
58 | diff --git a/libstdc++-v3/src/c++20/tzdb.cc b/libstdc++-v3/src/c++20/tzdb.cc | ||
59 | index 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 | ||
414 | diff --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 | ||
415 | new file mode 100644 | ||
416 | index 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 | +} | ||
526 | diff --git a/libstdc++-v3/testsuite/std/time/tzdb/1.cc b/libstdc++-v3/testsuite/std/time/tzdb/1.cc | ||
527 | index 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 | -- | ||
548 | 2.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/" | |||
17 | UPSTREAM_CHECK_REGEX = "go(?P<pver>\d+(\.\d+)+)\.linux" | 17 | UPSTREAM_CHECK_REGEX = "go(?P<pver>\d+(\.\d+)+)\.linux" |
18 | 18 | ||
19 | CVE_PRODUCT = "golang:go" | 19 | CVE_PRODUCT = "golang:go" |
20 | CVE_STATUS[CVE-2024-3566] = "not-applicable-platform: Issue only applies on Windows" | ||
20 | 21 | ||
21 | S = "${WORKDIR}/go" | 22 | S = "${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 |
23 | CVE_PRODUCT = "golang:go" | 23 | CVE_PRODUCT = "golang:go" |
24 | CVE_STATUS[CVE-2024-3566] = "not-applicable-platform: Issue only applies on Windows" | ||
24 | 25 | ||
25 | INHIBIT_PACKAGE_DEBUG_SPLIT = "1" | 26 | INHIBIT_PACKAGE_DEBUG_SPLIT = "1" |
26 | SSTATE_SCAN_CMD = "true" | 27 | SSTATE_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 | ||
10 | SRC_URI[sha256sum] = "55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760" | 10 | SRC_URI[sha256sum] = "27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422" |
11 | 11 | ||
12 | inherit pypi python_setuptools_build_meta | 12 | inherit 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 @@ | |||
1 | From d8390feaa99091d1ba9626bec0e4ba7072fc507a Mon Sep 17 00:00:00 2001 | ||
2 | From: "Jason R. Coombs" <jaraco@jaraco.com> | ||
3 | Date: Sat, 19 Apr 2025 12:49:55 -0400 | ||
4 | Subject: [PATCH] Extract _resolve_download_filename with test. | ||
5 | |||
6 | Upstream-Status: Backport [https://github.com/pypa/setuptools/commit/d8390feaa99091d1ba9626bec0e4ba7072fc507a] | ||
7 | CVE: CVE-2025-47273 #Dependency Patch | ||
8 | Signed-off-by: Vijay Anusuri <vanusuri@mvista.com> | ||
9 | --- | ||
10 | setuptools/package_index.py | 20 ++++++++++++++++---- | ||
11 | 1 file changed, 16 insertions(+), 4 deletions(-) | ||
12 | |||
13 | diff --git a/setuptools/package_index.py b/setuptools/package_index.py | ||
14 | index 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 | -- | ||
53 | 2.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 @@ | |||
1 | From 250a6d17978f9f6ac3ac887091f2d32886fbbb0b Mon Sep 17 00:00:00 2001 | ||
2 | From: "Jason R. Coombs" <jaraco@jaraco.com> | ||
3 | Date: Sat, 19 Apr 2025 13:03:47 -0400 | ||
4 | Subject: [PATCH] Add a check to ensure the name resolves relative to the | ||
5 | tmpdir. | ||
6 | |||
7 | Closes #4946 | ||
8 | |||
9 | Upstream-Status: Backport [https://github.com/pypa/setuptools/commit/250a6d17978f9f6ac3ac887091f2d32886fbbb0b] | ||
10 | CVE: CVE-2025-47273 | ||
11 | Signed-off-by: Vijay Anusuri <vanusuri@mvista.com> | ||
12 | --- | ||
13 | setuptools/package_index.py | 18 ++++++++++++++++-- | ||
14 | 1 file changed, 16 insertions(+), 2 deletions(-) | ||
15 | |||
16 | diff --git a/setuptools/package_index.py b/setuptools/package_index.py | ||
17 | index 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 | -- | ||
58 | 2.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 | |||
13 | SRC_URI += " \ | 13 | SRC_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 | ||
18 | SRC_URI[sha256sum] = "5c0806c7d9af348e6dd3777b4f4dbb42c7ad85b190104837488eab9a7c945cf8" | 20 | SRC_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 | |||
19 | index 2d235d2..1ac2263 100644 | 19 | index 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 | |||
17 | index 6258b68..d59ec6e 100644 | 17 | index 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. | |||
26 | index 3b4415b..1f94dec 100644 | 26 | index 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 @@ | |||
1 | From 2e2a0c8593a38f2020cc2baeeaa7972eb86773f9 Mon Sep 17 00:00:00 2001 | ||
2 | From: Peter Marko <peter.marko@siemens.com> | ||
3 | Date: Sat, 8 Feb 2025 23:57:17 +0100 | ||
4 | Subject: [PATCH] ctypes: correct gcc check in test | ||
5 | |||
6 | In case gcc is not available, it will throw exception and test fails. | ||
7 | So chatch the exception to skip the test correctly. | ||
8 | |||
9 | ====================================================================== | ||
10 | ERROR: test_null_dlsym (test.test_ctypes.test_dlerror.TestNullDlsym.test_null_dlsym) | ||
11 | ---------------------------------------------------------------------- | ||
12 | Traceback (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) | ||
23 | FileNotFoundError: [Errno 2] No such file or directory: 'gcc' | ||
24 | |||
25 | Upstream-Status: Submitted [https://github.com/python/cpython/pull/129872] | ||
26 | Signed-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 | |||
31 | diff --git a/Lib/test/test_ctypes/test_dlerror.py b/Lib/test/test_ctypes/test_dlerror.py | ||
32 | index 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 | |||
16 | index 0a0f31e..4dfb67d 100755 | 16 | index 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 | |||
19 | index c71c568..e41ab5e 100644 | 19 | index 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 | |||
19 | index 4c4a449..b8c79a4 100644 | 19 | index 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 | |||
20 | index dce36a5..2d235d2 100644 | 20 | index 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 | ||
40 | SRC_URI:append:class-native = " \ | 39 | SRC_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 | ||
44 | SRC_URI[sha256sum] = "7220835d9f90b37c006e9842a8dff4580aaca4318674f947302b8d28f3f81112" | 43 | SRC_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 |
47 | UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P<pver>\d+(\.\d+)+).tar" | 46 | UPSTREAM_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 @@ | |||
1 | From 3675494839112b64d5f082a9068237b277ed1495 Mon Sep 17 00:00:00 2001 | ||
2 | From: Hiroshi SHIBATA <hsbt@ruby-lang.org> | ||
3 | Date: Fri, 21 Feb 2025 16:29:36 +0900 | ||
4 | Subject: [PATCH] Truncate userinfo with URI#join, URI#merge and URI#+ | ||
5 | |||
6 | CVE: CVE-2025-27221 | ||
7 | |||
8 | Upstream-Status: Backport [https://github.com/ruby/uri/commit/3675494839112b64d5f082a9068237b277ed1495] | ||
9 | |||
10 | Signed-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 | |||
16 | diff --git a/lib/uri/generic.rb b/lib/uri/generic.rb | ||
17 | index 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 | ||
33 | diff --git a/test/uri/test_generic.rb b/test/uri/test_generic.rb | ||
34 | index 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 | -- | ||
56 | 2.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 @@ | |||
1 | From 2789182478f42ccbb62197f952eb730e4f02bfc5 Mon Sep 17 00:00:00 2001 | ||
2 | From: Hiroshi SHIBATA <hsbt@ruby-lang.org> | ||
3 | Date: Fri, 21 Feb 2025 18:16:28 +0900 | ||
4 | Subject: [PATCH] Fix merger of URI with authority component | ||
5 | |||
6 | https://hackerone.com/reports/2957667 | ||
7 | |||
8 | Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org> | ||
9 | |||
10 | CVE: CVE-2025-27221 | ||
11 | |||
12 | Upstream-Status: Backport [https://github.com/ruby/uri/commit/2789182478f42ccbb62197f952eb730e4f02bfc5] | ||
13 | |||
14 | Signed-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 | |||
20 | diff --git a/lib/uri/generic.rb b/lib/uri/generic.rb | ||
21 | index 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 | |||
53 | diff --git a/test/uri/test_generic.rb b/test/uri/test_generic.rb | ||
54 | index 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 | -- | ||
72 | 2.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 | " |
32 | UPSTREAM_CHECK_URI = "https://www.ruby-lang.org/en/downloads/" | 34 | UPSTREAM_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 | ||
30 | SRC_URI[sha256sum] = "56e77833de683825c420d0af8cb90aa8ba7da71ea6fb5624290cbc1b53fe7942" | 30 | SRC_URI[sha256sum] = "121861b6d29b2461dec6575c9f3cab665b810bd408d4ec02c86719fa708b0a49" |
31 | 31 | ||
32 | PACKAGECONFIG ??= "" | 32 | PACKAGECONFIG ??= "" |
33 | PACKAGECONFIG[gtk] = "--enable-gtk,--disable-gtk,gtk+3" | 33 | PACKAGECONFIG[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 @@ | |||
1 | From 070cfacd7348386173231fb16fad4983d4e6ae40 Mon Sep 17 00:00:00 2001 | ||
2 | From: Petr Vorel <pvorel@suse.cz> | ||
3 | Date: Mon, 5 May 2025 23:55:57 +0200 | ||
4 | Subject: [PATCH] ping: Fix signed 64-bit integer overflow in RTT calculation | ||
5 | |||
6 | Crafted ICMP Echo Reply packet can cause signed integer overflow in | ||
7 | |||
8 | 1) triptime calculation: | ||
9 | triptime = tv->tv_sec * 1000000 + tv->tv_usec; | ||
10 | |||
11 | 2) tsum2 increment which uses triptime | ||
12 | rts->tsum2 += (double)((long long)triptime * (long long)triptime); | ||
13 | |||
14 | 3) final tmvar: | ||
15 | tmvar = (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 | |||
40 | To fix the overflow check allowed ranges of struct timeval members: | ||
41 | * tv_sec <0, LONG_MAX/1000000> | ||
42 | * tv_usec <0, 999999> | ||
43 | |||
44 | Fix includes 2 new error messages (needs translation). | ||
45 | Also existing message "time of day goes back ..." needed to be modified | ||
46 | as it now prints tv->tv_sec which is a second (needs translation update). | ||
47 | |||
48 | After 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 | |||
66 | Fixes: https://github.com/iputils/iputils/issues/584 | ||
67 | Fixes: CVE-2025-472 | ||
68 | Link: https://github.com/Zephkek/ping-rtt-overflow/ | ||
69 | Co-developed-by: Cyril Hrubis <chrubis@suse.cz> | ||
70 | Reported-by: Mohamed Maatallah <hotelsmaatallahrecemail@gmail.com> | ||
71 | Reviewed-by: Mohamed Maatallah <hotelsmaatallahrecemail@gmail.com> | ||
72 | Reviewed-by: Cyril Hrubis <chrubis@suse.cz> | ||
73 | Reviewed-by: Noah Meyerhans <noahm@debian.org> | ||
74 | Signed-off-by: Petr Vorel <pvorel@suse.cz> | ||
75 | |||
76 | CVE: CVE-2025-47268 | ||
77 | |||
78 | Upstream-Status: Backport | ||
79 | [https://github.com/iputils/iputils/commit/070cfacd7348386173231fb16fad4983d4e6ae40] | ||
80 | |||
81 | Signed-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 | |||
87 | diff --git a/iputils_common.h b/iputils_common.h | ||
88 | index 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 | ||
101 | diff --git a/ping/ping_common.c b/ping/ping_common.c | ||
102 | index 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 | -- | ||
142 | 2.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 | ||
11 | DEPENDS = "gnutls" | 11 | DEPENDS = "gnutls" |
12 | 12 | ||
13 | SRC_URI = "git://github.com/iputils/iputils;branch=master;protocol=https" | 13 | SRC_URI = "git://github.com/iputils/iputils;branch=master;protocol=https \ |
14 | file://CVE-2025-47268.patch \ | ||
15 | " | ||
14 | SRCREV = "8372f355bdf7a9b0c79338dd8ef8464c00a5c4e2" | 16 | SRCREV = "8372f355bdf7a9b0c79338dd8ef8464c00a5c4e2" |
15 | 17 | ||
16 | S = "${WORKDIR}/git" | 18 | S = "${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 @@ | |||
1 | From 7a8f42fb20013a1493d8cae1c43436f85e656f2d Mon Sep 17 00:00:00 2001 | ||
2 | From: Zephkeks <zephyrofficialdiscord@gmail.com> | ||
3 | Date: Tue, 13 May 2025 11:04:17 +0200 | ||
4 | Subject: [PATCH] CVE-2025-46836: interface.c: Stack-based Buffer Overflow in | ||
5 | get_name() | ||
6 | |||
7 | Coordinated as GHSA-pfwf-h6m3-63wf | ||
8 | |||
9 | CVE: CVE-2025-46836 | ||
10 | Upstream-Status: Backport [https://sourceforge.net/p/net-tools/code/ci/7a8f42fb20013a1493d8cae1c43436f85e656f2d/] | ||
11 | Signed-off-by: Peter Marko <peter.marko@siemens.com> | ||
12 | --- | ||
13 | lib/interface.c | 63 ++++++++++++++++++++++++++++++------------------- | ||
14 | 1 file changed, 39 insertions(+), 24 deletions(-) | ||
15 | |||
16 | diff --git a/lib/interface.c b/lib/interface.c | ||
17 | index 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 @@ | |||
1 | From ddb0e375fb9ca95bb69335540b85bbdaa2714348 Mon Sep 17 00:00:00 2001 | ||
2 | From: Bernd Eckenfels <net-tools@lina.inka.de> | ||
3 | Date: Sat, 17 May 2025 21:53:23 +0200 | ||
4 | Subject: [PATCH] Interface statistic regression after 7a8f42fb2 | ||
5 | |||
6 | CVE: CVE-2025-46836 | ||
7 | Upstream-Status: Backport [https://sourceforge.net/p/net-tools/code/ci/ddb0e375fb9ca95bb69335540b85bbdaa2714348/] | ||
8 | Signed-off-by: Peter Marko <peter.marko@siemens.com> | ||
9 | --- | ||
10 | lib/interface.c | 5 ++--- | ||
11 | 1 file changed, 2 insertions(+), 3 deletions(-) | ||
12 | |||
13 | diff --git a/lib/interface.c b/lib/interface.c | ||
14 | index 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 | ||
16 | S = "${WORKDIR}/git" | 18 | S = "${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 @@ | |||
1 | From 049b26b22e197ba3be9c46e5c193032e01a4724a Mon Sep 17 00:00:00 2001 | ||
2 | From: Matthias Gerstner <matthias.gerstner@suse.de> | ||
3 | Date: Mon, 12 May 2025 15:15:38 +0200 | ||
4 | Subject: [PATCH] fix CVE-2025-46802: attacher.c - prevent temporary 0666 mode | ||
5 | on PTYs | ||
6 | |||
7 | This temporary chmod of the PTY to mode 0666 is most likely a remnant of | ||
8 | past times, before the PTY file descriptor was passed to the target | ||
9 | session via the UNIX domain socket. | ||
10 | |||
11 | This chmod() causes a race condition during which any other user in the | ||
12 | system can open the PTY for reading and writing, and thus allows PTY | ||
13 | hijacking. | ||
14 | |||
15 | Simply remove this logic completely. | ||
16 | |||
17 | CVE: CVE-2025-46802 | ||
18 | |||
19 | Upstream-Status: Backport [https://cgit.git.savannah.gnu.org/cgit/screen.git/commit/?id=049b26b22e197ba3be9c46e5c193032e01a4724a] | ||
20 | |||
21 | Signed-off-by: Divya Chellam <divya.chellam@windriver.com> | ||
22 | --- | ||
23 | attacher.c | 27 --------------------------- | ||
24 | screen.c | 19 ------------------- | ||
25 | 2 files changed, 46 deletions(-) | ||
26 | |||
27 | diff --git a/attacher.c b/attacher.c | ||
28 | index 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 | } | ||
100 | diff --git a/screen.c b/screen.c | ||
101 | index 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 | -- | ||
145 | 2.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 @@ | |||
1 | From e0eef5aac453fa98a2664416a56c50ad1d00cb30 Mon Sep 17 00:00:00 2001 | ||
2 | From: Matthias Gerstner <matthias.gerstner@suse.de> | ||
3 | Date: Mon, 12 May 2025 15:26:11 +0200 | ||
4 | Subject: [PATCH] fix CVE-2025-46804: avoid file existence test information | ||
5 | leaks | ||
6 | |||
7 | In setuid-root context the current error messages give away whether | ||
8 | certain paths not accessible by the real user exist and what type they | ||
9 | have. To prevent this only output generic error messages in setuid-root | ||
10 | context. | ||
11 | |||
12 | In some situations, when an error is pertaining a directory and the | ||
13 | directory is owner by the real user then we can still output more | ||
14 | detailed diagnostics. | ||
15 | |||
16 | This change can lead to less helpful error messages when Screen is | ||
17 | install setuid-root. More complex changes would be needed to avoid this | ||
18 | (e.g. only open the `SocketPath` with raised privileges when | ||
19 | multi-attach is requested). | ||
20 | |||
21 | There might still be lingering some code paths that allow such | ||
22 | information leaks, since `SocketPath` is a global variable that is used | ||
23 | across the code base. The majority of issues should be caught with this | ||
24 | fix, however. | ||
25 | |||
26 | CVE: CVE-2025-46804 | ||
27 | |||
28 | Upstream-Status: Backport [https://cgit.git.savannah.gnu.org/cgit/screen.git/commit/?id=e0eef5aac453fa98a2664416a56c50ad1d00cb30] | ||
29 | |||
30 | Signed-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 | |||
36 | diff --git a/screen.c b/screen.c | ||
37 | index 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 | } | ||
109 | diff --git a/socket.c b/socket.c | ||
110 | index 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 | -- | ||
130 | 2.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 @@ | |||
1 | From aa9f51f996a22470b8461d2b6a32e62c7ec30ed5 Mon Sep 17 00:00:00 2001 | ||
2 | From: Axel Beckert <abe@debian.org> | ||
3 | Date: Mon, 19 May 2025 00:42:42 +0200 | ||
4 | Subject: fix CVE-2025-46805: socket.c - don't send signals with root | ||
5 | |||
6 | Gbp-Pq: fix-CVE-2025-46805-socket.c-don-t-send-signals-with-.patch. | ||
7 | |||
8 | Upstream-Status: Backport [import from ubuntu https://git.launchpad.net/ubuntu/+source/screen/patch/?id=aa9f51f996a22470b8461d2b6a32e62c7ec30ed5 | ||
9 | Upstream commit https://git.savannah.gnu.org/cgit/screen.git/commit/?id=161f85b98b7e1d5e4893aeed20f4cdb5e3dfaaa4] | ||
10 | CVE: CVE-2025-46805 | ||
11 | Signed-off-by: Ashish Sharma <asharma@mvista.com> | ||
12 | |||
13 | socket.c | 21 +++++++++++++-------- | ||
14 | 1 file changed, 13 insertions(+), 8 deletions(-) | ||
15 | |||
16 | diff --git a/socket.c b/socket.c | ||
17 | index 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 | -- | ||
100 | cgit 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 | ||
26 | SRC_URI[sha256sum] = "26cef3e3c42571c0d484ad6faf110c5c15091fbf872b06fa7aa4766c7405ac69" | 29 | SRC_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 | ||
17 | SRCREV_machine ?= "60a86cf65a4bf973b04926050eb05d0e8132690d" | 17 | SRCREV_machine ?= "1933814ca46d38977965bbfe58ee3a1f8aacfb36" |
18 | SRCREV_meta ?= "917317e6b8a757306a04d6d76dd1f5a1a5591ecd" | 18 | SRCREV_meta ?= "8e66f449e449f9ae2809b6c395ed7089aa37d7a3" |
19 | 19 | ||
20 | SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine;protocol=https \ | 20 | SRC_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 | ||
23 | LINUX_VERSION ?= "6.6.84" | 23 | LINUX_VERSION ?= "6.6.92" |
24 | 24 | ||
25 | LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" | 25 | LIC_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 |
9 | include recipes-kernel/linux/cve-exclusion_6.6.inc | 9 | include recipes-kernel/linux/cve-exclusion_6.6.inc |
10 | 10 | ||
11 | LINUX_VERSION ?= "6.6.84" | 11 | LINUX_VERSION ?= "6.6.92" |
12 | LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" | 12 | LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" |
13 | 13 | ||
14 | DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}" | 14 | DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}" |
@@ -17,8 +17,8 @@ DEPENDS += "openssl-native util-linux-native" | |||
17 | KMETA = "kernel-meta" | 17 | KMETA = "kernel-meta" |
18 | KCONF_BSP_AUDIT_LEVEL = "2" | 18 | KCONF_BSP_AUDIT_LEVEL = "2" |
19 | 19 | ||
20 | SRCREV_machine ?= "36c0e5585c944c19d71f496c306d8229565629a5" | 20 | SRCREV_machine ?= "c72b190dc393b310be436153c864144694b184a6" |
21 | SRCREV_meta ?= "917317e6b8a757306a04d6d76dd1f5a1a5591ecd" | 21 | SRCREV_meta ?= "8e66f449e449f9ae2809b6c395ed7089aa37d7a3" |
22 | 22 | ||
23 | PV = "${LINUX_VERSION}+git" | 23 | PV = "${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" | |||
18 | KBRANCH:qemuloongarch64 ?= "v6.6/standard/base" | 18 | KBRANCH:qemuloongarch64 ?= "v6.6/standard/base" |
19 | KBRANCH:qemumips64 ?= "v6.6/standard/mti-malta64" | 19 | KBRANCH:qemumips64 ?= "v6.6/standard/mti-malta64" |
20 | 20 | ||
21 | SRCREV_machine:qemuarm ?= "1411061244e285c0f16dcc35ec34b7a13d7b5708" | 21 | SRCREV_machine:qemuarm ?= "1d95b0a9486ae02a4eb38df55b94cb64485bd4c0" |
22 | SRCREV_machine:qemuarm64 ?= "cc8c55d771998fb779d3c5990c250a78e223f397" | 22 | SRCREV_machine:qemuarm64 ?= "8cd580eb06e43c9a4e9c26e1dd954a334f656fbd" |
23 | SRCREV_machine:qemuloongarch64 ?= "8dd317512c57f68aa212eaf0dcf078fb39afc1bd" | 23 | SRCREV_machine:qemuloongarch64 ?= "6032c9c1ac18edd7c8eadd6f9f655556b5f5e77c" |
24 | SRCREV_machine:qemumips ?= "25bda2f47225cf6d74293ba1a0b9583c33b9865d" | 24 | SRCREV_machine:qemumips ?= "a3bbede9b1c6dbd0b51132b8447adbbde1f46f85" |
25 | SRCREV_machine:qemuppc ?= "7fd13b08104048b99d66947f682cb5a95360ba65" | 25 | SRCREV_machine:qemuppc ?= "a5bba7e08dbb26c0dc7d7ec0624e903b7c6bac94" |
26 | SRCREV_machine:qemuriscv64 ?= "8dd317512c57f68aa212eaf0dcf078fb39afc1bd" | 26 | SRCREV_machine:qemuriscv64 ?= "6032c9c1ac18edd7c8eadd6f9f655556b5f5e77c" |
27 | SRCREV_machine:qemuriscv32 ?= "8dd317512c57f68aa212eaf0dcf078fb39afc1bd" | 27 | SRCREV_machine:qemuriscv32 ?= "6032c9c1ac18edd7c8eadd6f9f655556b5f5e77c" |
28 | SRCREV_machine:qemux86 ?= "8dd317512c57f68aa212eaf0dcf078fb39afc1bd" | 28 | SRCREV_machine:qemux86 ?= "6032c9c1ac18edd7c8eadd6f9f655556b5f5e77c" |
29 | SRCREV_machine:qemux86-64 ?= "8dd317512c57f68aa212eaf0dcf078fb39afc1bd" | 29 | SRCREV_machine:qemux86-64 ?= "6032c9c1ac18edd7c8eadd6f9f655556b5f5e77c" |
30 | SRCREV_machine:qemumips64 ?= "23fd476a33f79745b2a4c86a2cffcf653564c649" | 30 | SRCREV_machine:qemumips64 ?= "a1ed8408c3b0bc729270cc2bd2c9dd0056ab9271" |
31 | SRCREV_machine ?= "8dd317512c57f68aa212eaf0dcf078fb39afc1bd" | 31 | SRCREV_machine ?= "6032c9c1ac18edd7c8eadd6f9f655556b5f5e77c" |
32 | SRCREV_meta ?= "917317e6b8a757306a04d6d76dd1f5a1a5591ecd" | 32 | SRCREV_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. |
38 | BBCLASSEXTEND = "devupstream:target" | 38 | BBCLASSEXTEND = "devupstream:target" |
39 | SRCREV_machine:class-devupstream ?= "4b6a8fa777d29785c7ddb51dcbb2b5411deefaca" | 39 | SRCREV_machine:class-devupstream ?= "ffaf6178137b9cdcc9742d6677b70be164dfeb8c" |
40 | PN:class-devupstream = "linux-yocto-upstream" | 40 | PN:class-devupstream = "linux-yocto-upstream" |
41 | KBRANCH:class-devupstream = "v6.6/base" | 41 | KBRANCH: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 | ||
46 | LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" | 46 | LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" |
47 | LINUX_VERSION ?= "6.6.84" | 47 | LINUX_VERSION ?= "6.6.92" |
48 | 48 | ||
49 | PV = "${LINUX_VERSION}+git" | 49 | PV = "${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 @@ | |||
1 | From 96449cfeaeb95fcfd7a2b8d9ccf7719e97471ed1 Mon Sep 17 00:00:00 2001 | ||
2 | From: Michael Niedermayer <michael@niedermayer.cc> | ||
3 | Date: Mon, 8 Apr 2024 18:38:42 +0200 | ||
4 | Subject: [PATCH] avcodec/mpegvideo_enc: Fix 1 line and one column images | ||
5 | |||
6 | Fixes: Ticket10952 | ||
7 | Fixes: poc21ffmpeg | ||
8 | Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> | ||
9 | |||
10 | CVE: CVE-2024-32230 | ||
11 | |||
12 | Upstream-Status: Backport [https://git.videolan.org/?p=ffmpeg.git;a=commitdiff;h=96449cfeaeb95fcfd7a2b8d9ccf7719e97471ed1] | ||
13 | |||
14 | Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com> | ||
15 | --- | ||
16 | libavcodec/mpegvideo_enc.c | 4 ++-- | ||
17 | 1 file changed, 2 insertions(+), 2 deletions(-) | ||
18 | |||
19 | diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c | ||
20 | index 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 | -- | ||
35 | 2.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 @@ | |||
1 | From 0bed22d597b78999151e3bde0768b7fe763fc2a6 Mon Sep 17 00:00:00 2001 | ||
2 | From: Michael Niedermayer <michael@niedermayer.cc> | ||
3 | Date: Tue, 26 Mar 2024 00:39:49 +0100 | ||
4 | Subject: [PATCH] avformat/sbgdec: Check for negative duration | ||
5 | |||
6 | Fixes: signed integer overflow: 9223372036854775807 - -8000000 cannot be represented in type 'long' | ||
7 | Fixes: 62276/clusterfuzz-testcase-minimized-ffmpeg_dem_SBG_fuzzer-5133181743136768 | ||
8 | |||
9 | Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg | ||
10 | Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> | ||
11 | |||
12 | CVE: CVE-2024-35366 | ||
13 | |||
14 | Upstream-Status: Backport [https://github.com/ffmpeg/ffmpeg/commit/0bed22d597b78999151e3bde0768b7fe763fc2a6] | ||
15 | |||
16 | Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com> | ||
17 | --- | ||
18 | libavformat/sbgdec.c | 2 +- | ||
19 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
20 | |||
21 | diff --git a/libavformat/sbgdec.c b/libavformat/sbgdec.c | ||
22 | index 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 | -- | ||
35 | 2.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 @@ | |||
1 | From 50d8e4f27398fd5778485a827d7a2817921f8540 Mon Sep 17 00:00:00 2001 | ||
2 | From: Michael Niedermayer <michael@niedermayer.cc> | ||
3 | Date: Sat, 30 Sep 2023 00:51:29 +0200 | ||
4 | Subject: [PATCH] avformat/dxa: Adjust order of operations around block align | ||
5 | |||
6 | Fixes: 51896/clusterfuzz-testcase-minimized-ffmpeg_dem_DXA_fuzzer-5730576523198464 | ||
7 | Fixes: signed integer overflow: 2147483566 + 82 cannot be represented in type 'int' | ||
8 | |||
9 | Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg | ||
10 | Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> | ||
11 | (cherry picked from commit 50d8e4f27398fd5778485a827d7a2817921f8540) | ||
12 | Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> | ||
13 | |||
14 | CVE: CVE-2024-36613 | ||
15 | |||
16 | Upstream-Status: Backport [https://github.com/ffmpeg/ffmpeg/commit/50d8e4f27398fd5778485a827d7a2817921f8540] | ||
17 | |||
18 | Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com> | ||
19 | --- | ||
20 | libavformat/dxa.c | 2 +- | ||
21 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
22 | |||
23 | diff --git a/libavformat/dxa.c b/libavformat/dxa.c | ||
24 | index 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 | -- | ||
37 | 2.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 @@ | |||
1 | From 86f73277bf014e2ce36dd2594f1e0fb8b3bd6661 Mon Sep 17 00:00:00 2001 | ||
2 | From: Michael Niedermayer <michael@niedermayer.cc> | ||
3 | Date: Tue, 26 Mar 2024 01:00:13 +0100 | ||
4 | Subject: [PATCH] avformat/westwood_vqa: Fix 2g packets | ||
5 | |||
6 | Fixes: signed integer overflow: 2147483424 * 2 cannot be represented in type 'int' | ||
7 | Fixes: 62276/clusterfuzz-testcase-minimized-ffmpeg_dem_WSVQA_fuzzer-4576211411795968 | ||
8 | |||
9 | Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg | ||
10 | Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> | ||
11 | |||
12 | CVE: CVE-2024-36616 | ||
13 | |||
14 | Upstream-Status: Backport [https://github.com/ffmpeg/ffmpeg/commit/86f73277bf014e2ce36dd2594f1e0fb8b3bd6661] | ||
15 | |||
16 | Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com> | ||
17 | --- | ||
18 | libavformat/westwood_vqa.c | 2 +- | ||
19 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
20 | |||
21 | diff --git a/libavformat/westwood_vqa.c b/libavformat/westwood_vqa.c | ||
22 | index 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 | -- | ||
35 | 2.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 @@ | |||
1 | From d973fcbcc2f944752ff10e6a76b0b2d9329937a7 Mon Sep 17 00:00:00 2001 | ||
2 | From: Michael Niedermayer <michael@niedermayer.cc> | ||
3 | Date: Sat, 30 Sep 2023 00:38:17 +0200 | ||
4 | Subject: [PATCH] avformat/cafdec: dont seek beyond 64bit | ||
5 | |||
6 | Fixes: signed integer overflow: 64 + 9223372036854775807 cannot be represented in type 'long long' | ||
7 | Fixes: 51896/clusterfuzz-testcase-minimized-ffmpeg_dem_CAF_fuzzer-6418242730328064 | ||
8 | Fixes: 62276/clusterfuzz-testcase-minimized-ffmpeg_dem_CAF_fuzzer-6418242730328064 | ||
9 | |||
10 | Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg | ||
11 | Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> | ||
12 | |||
13 | CVE: CVE-2024-36617 | ||
14 | |||
15 | Upstream-Status: Backport [https://github.com/ffmpeg/ffmpeg/commit/d973fcbcc2f944752ff10e6a76b0b2d9329937a7] | ||
16 | |||
17 | Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com> | ||
18 | --- | ||
19 | libavformat/cafdec.c | 2 +- | ||
20 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
21 | |||
22 | diff --git a/libavformat/cafdec.c b/libavformat/cafdec.c | ||
23 | index 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 | -- | ||
36 | 2.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 @@ | |||
1 | From 28c7094b25b689185155a6833caf2747b94774a4 Mon Sep 17 00:00:00 2001 | ||
2 | From: Michael Niedermayer <michael@niedermayer.cc> | ||
3 | Date: Thu, 4 Apr 2024 00:15:27 +0200 | ||
4 | Subject: [PATCH] avcodec/wavarc: fix signed integer overflow in block type | ||
5 | 6/19 | ||
6 | |||
7 | Fixes: signed integer overflow: -2088796289 + -91276551 cannot be represented in type 'int' | ||
8 | Fixes: 67772/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_WAVARC_fuzzer-6533568953122816 | ||
9 | |||
10 | Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg | ||
11 | Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> | ||
12 | |||
13 | CVE: CVE-2024-36619 | ||
14 | |||
15 | Upstream-Status: Backport [https://github.com/ffmpeg/ffmpeg/commit/28c7094b25b689185155a6833caf2747b94774a4] | ||
16 | |||
17 | Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com> | ||
18 | --- | ||
19 | libavcodec/wavarc.c | 2 +- | ||
20 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
21 | |||
22 | diff --git a/libavcodec/wavarc.c b/libavcodec/wavarc.c | ||
23 | index 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 | -- | ||
36 | 2.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 @@ | |||
1 | From 587acd0d4020859e67d1f07aeff2c885797ebcce Mon Sep 17 00:00:00 2001 | ||
2 | From: Michael Niedermayer <michael@niedermayer.cc> | ||
3 | Date: Thu, 18 Jul 2024 21:12:54 +0200 | ||
4 | Subject: [PATCH] avcodec/pnmdec: Use 64bit for input size check | ||
5 | |||
6 | Fixes: out of array read | ||
7 | Fixes: poc3 | ||
8 | |||
9 | Reported-by: VulDB CNA Team | ||
10 | Found-by: CookedMelon | ||
11 | Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> | ||
12 | (cherry picked from commit 3faadbe2a27e74ff5bb5f7904ec27bb1f5287dc8) | ||
13 | Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> | ||
14 | |||
15 | CVE: CVE-2024-7055 | ||
16 | |||
17 | Upstream-Status: Backport [https://git.videolan.org/?p=ffmpeg.git;a=commitdiff;h=587acd0d4020859e67d1f07aeff2c885797ebcce] | ||
18 | |||
19 | Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com> | ||
20 | --- | ||
21 | libavcodec/pnmdec.c | 2 +- | ||
22 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
23 | |||
24 | diff --git a/libavcodec/pnmdec.c b/libavcodec/pnmdec.c | ||
25 | index 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 | -- | ||
38 | 2.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 | |||
6 | Co-Authored-by: Dave Airlie <airlied@redhat.com> | 6 | Co-Authored-by: Dave Airlie <airlied@redhat.com> |
7 | Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> | 7 | Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> |
8 | Upstream-Status: Backport [https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/ecdc94b97f809d5f2b88640842fd0541951ad295] | 8 | Upstream-Status: Backport [https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/ecdc94b97f809d5f2b88640842fd0541951ad295] |
9 | |||
10 | Comment: Patch is refreshed as per codebase of 6.1.2 | ||
11 | Signed-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 | |||
26 | index e853deb51d..9fa639fca6 100755 | 29 | index 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 | |||
41 | index 7ef2e03ca6..9ce6d445c1 100644 | 44 | index 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 | |||
866 | index bb69e920bb..01a1de7d9d 100644 | 867 | index 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)) |
878 | diff --git a/libavcodec/vulkan_video_codec_av1std_decode.h b/libavcodec/vulkan_video_codec_av1std_decode.h | 879 | diff --git a/libavcodec/vulkan_video_codec_av1std_decode_mesa.h b/libavcodec/vulkan_video_codec_av1std_decode_mesa.h |
879 | deleted file mode 100644 | 880 | deleted file mode 100644 |
880 | index e2f37b4e6e..0000000000 | 881 | index 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 |
920 | diff --git a/libavcodec/vulkan_video_codec_av1std.h b/libavcodec/vulkan_video_codec_av1std.h | 921 | diff --git a/libavcodec/vulkan_video_codec_av1std_mesa.h b/libavcodec/vulkan_video_codec_av1std_mesa.h |
921 | deleted file mode 100644 | 922 | deleted file mode 100644 |
922 | index c91589eee2..0000000000 | 923 | index 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 | -- |
1381 | 2.25.1 | 1382 | 2.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 | ||
56 | SRC_URI[sha256sum] = "8684f4b00f94b85461884c3719382f1261f0d9eb3d59640a1f4ac0873616f968" | 49 | SRC_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 | |||
62 | CVE_STATUS[CVE-2023-39018] = "cpe-incorrect: This issue belongs to ffmpeg-cli-wrapper \ | 55 | CVE_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 | ||
60 | CVE_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 |
66 | ARM_INSTRUCTION_SET:armv4 = "arm" | 63 | ARM_INSTRUCTION_SET:armv4 = "arm" |
67 | ARM_INSTRUCTION_SET:armv5 = "arm" | 64 | ARM_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 | |||
3 | set -eux | ||
4 | |||
5 | cd src | ||
6 | |||
7 | make 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 | ||
11 | LIBV = "16" | 11 | LIBV = "16" |
12 | 12 | ||
13 | SRC_URI = "${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}${LIBV}/${PV}/${BP}.tar.xz" | 13 | SRC_URI = "${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}${LIBV}/${PV}/${BP}.tar.xz \ |
14 | file://run-ptest \ | ||
15 | " | ||
16 | |||
14 | SRC_URI[sha256sum] = "c919dbc11f4c03b05aba3f8884d8eb7adfe3572ad228af972bb60057bdb48450" | 17 | SRC_URI[sha256sum] = "c919dbc11f4c03b05aba3f8884d8eb7adfe3572ad228af972bb60057bdb48450" |
15 | 18 | ||
16 | MIRRORS += "${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}${LIBV}/ ${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}${LIBV}/older-releases/" | 19 | MIRRORS += "${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 | ||
20 | BINCONFIG = "${bindir}/libpng-config ${bindir}/libpng16-config" | 23 | BINCONFIG = "${bindir}/libpng-config ${bindir}/libpng16-config" |
21 | 24 | ||
22 | inherit autotools binconfig-disabled pkgconfig | 25 | inherit autotools binconfig-disabled pkgconfig ptest |
23 | 26 | ||
24 | # Work around missing symbols | 27 | # Work around missing symbols |
25 | ARMNEON = "${@bb.utils.contains("TUNE_FEATURES", "neon", "--enable-arm-neon=on", "--enable-arm-neon=off", d)}" | 28 | ARMNEON = "${@bb.utils.contains("TUNE_FEATURES", "neon", "--enable-arm-neon=on", "--enable-arm-neon=off", d)}" |
@@ -30,4 +33,39 @@ PACKAGES =+ "${PN}-tools" | |||
30 | 33 | ||
31 | FILES:${PN}-tools = "${bindir}/png-fix-itxt ${bindir}/pngfix ${bindir}/pngcp" | 34 | FILES:${PN}-tools = "${bindir}/png-fix-itxt ${bindir}/pngfix ${bindir}/pngcp" |
32 | 35 | ||
36 | RDEPENDS:${PN}-ptest += "make bash gawk" | ||
37 | |||
38 | do_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 | |||
33 | BBCLASSEXTEND = "native nativesdk" | 71 | BBCLASSEXTEND = "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 @@ | |||
1 | SUMMARY = "A library for atomic integer operations" | 1 | SUMMARY = "A library for atomic integer operations" |
2 | DESCRIPTION = "Package provides semi-portable access to hardware-provided atomic memory update operations on a number of architectures." | 2 | DESCRIPTION = "Package provides semi-portable access to hardware-provided atomic memory update operations on a number of architectures." |
3 | HOMEPAGE = "https://github.com/ivmai/libatomic_ops/" | 3 | HOMEPAGE = "https://github.com/bdwgc/libatomic_ops/" |
4 | SECTION = "optional" | 4 | SECTION = "optional" |
5 | PROVIDES += "libatomics-ops" | 5 | PROVIDES += "libatomics-ops" |
6 | LICENSE = "GPL-2.0-only & MIT" | 6 | LICENSE = "GPL-2.0-only & MIT" |
@@ -9,7 +9,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ | |||
9 | " | 9 | " |
10 | 10 | ||
11 | SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/libatomic_ops-${PV}.tar.gz" | 11 | SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/libatomic_ops-${PV}.tar.gz" |
12 | GITHUB_BASE_URI = "https://github.com/ivmai/libatomic_ops/releases" | 12 | GITHUB_BASE_URI = "https://github.com/bdwgc/libatomic_ops/releases" |
13 | 13 | ||
14 | SRC_URI[sha256sum] = "d305207fe207f2b3fb5cb4c019da12b44ce3fcbc593dfd5080d867b1a2419b51" | 14 | SRC_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 @@ | |||
1 | From 04df03bc092ac20607f3e150936624d4f536e68b Mon Sep 17 00:00:00 2001 | ||
2 | From: Patrick Griffis <pgriffis@igalia.com> | ||
3 | Date: Mon, 8 Jul 2024 12:33:15 -0500 | ||
4 | Subject: [PATCH] headers: Strictly don't allow NUL bytes | ||
5 | |||
6 | In 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 | |||
8 | Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/04df03bc092ac20607f3e150936624d4f536e68b] | ||
9 | CVE: CVE-2024-52530 | ||
10 | Signed-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 | |||
16 | diff --git a/libsoup/soup-headers.c b/libsoup/soup-headers.c | ||
17 | index 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, ':'); | ||
53 | diff --git a/tests/header-parsing-test.c b/tests/header-parsing-test.c | ||
54 | index 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 | -- | ||
148 | GitLab | ||
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 @@ | |||
1 | From a35222dd0bfab2ac97c10e86b95f762456628283 Mon Sep 17 00:00:00 2001 | ||
2 | From: Patrick Griffis <pgriffis@igalia.com> | ||
3 | Date: Tue, 27 Aug 2024 13:53:26 -0500 | ||
4 | Subject: [PATCH 1/2] headers: Be more robust against invalid input when | ||
5 | parsing params | ||
6 | |||
7 | If you pass invalid input to a function such as soup_header_parse_param_list_strict() | ||
8 | it can cause an overflow if it decodes the input to UTF-8. | ||
9 | |||
10 | This should never happen with valid UTF-8 input which libsoup's client API | ||
11 | ensures, however it's server API does not currently. | ||
12 | |||
13 | Upstream-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 | ||
14 | Upstream commit https://gitlab.gnome.org/GNOME/libsoup/-/commit/a35222dd0bfab2ac97c10e86b95f762456628283] | ||
15 | CVE: CVE-2024-52531 | ||
16 | Signed-off-by: Vijay Anusuri <vanusuri@mvista.com> | ||
17 | --- | ||
18 | libsoup/soup-headers.c | 46 ++++++++++++++++++++++-------------------- | ||
19 | 1 file changed, 24 insertions(+), 22 deletions(-) | ||
20 | |||
21 | Index: 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 @@ | |||
1 | From 825fda3425546847b42ad5270544e9388ff349fe Mon Sep 17 00:00:00 2001 | ||
2 | From: Patrick Griffis <pgriffis@igalia.com> | ||
3 | Date: Tue, 27 Aug 2024 13:52:08 -0500 | ||
4 | Subject: [PATCH 2/2] tests: Add test for passing invalid UTF-8 to | ||
5 | soup_header_parse_semi_param_list() | ||
6 | |||
7 | Upstream-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 | ||
8 | Upstream commit https://gitlab.gnome.org/GNOME/libsoup/-/commit/825fda3425546847b42ad5270544e9388ff349fe] | ||
9 | CVE: CVE-2024-52531 | ||
10 | Signed-off-by: Vijay Anusuri <vanusuri@mvista.com> | ||
11 | --- | ||
12 | tests/header-parsing-test.c | 11 +++++++++++ | ||
13 | 1 file changed, 11 insertions(+) | ||
14 | |||
15 | Index: 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 @@ | |||
1 | From 6adc0e3eb74c257ed4e2a23eb4b2774fdb0d67be Mon Sep 17 00:00:00 2001 | ||
2 | From: Ignacio Casal Quinteiro <qignacio@amazon.com> | ||
3 | Date: Wed, 11 Sep 2024 11:52:11 +0200 | ||
4 | Subject: [PATCH] websocket: process the frame as soon as we read data | ||
5 | |||
6 | Otherwise we can enter in a read loop because we were not | ||
7 | validating the data until the all the data was read. | ||
8 | |||
9 | Fixes #391 | ||
10 | |||
11 | Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/6adc0e3eb74c257ed4e2a23eb4b2774fdb0d67be] | ||
12 | CVE: CVE-2024-52532 | ||
13 | Signed-off-by: Vijay Anusuri <vanusuri@mvista.com> | ||
14 | --- | ||
15 | libsoup/soup-websocket-connection.c | 4 ++-- | ||
16 | 1 file changed, 2 insertions(+), 2 deletions(-) | ||
17 | |||
18 | diff --git a/libsoup/soup-websocket-connection.c b/libsoup/soup-websocket-connection.c | ||
19 | index 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 | -- | ||
35 | 2.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 @@ | |||
1 | From 29b96fab2512666d7241e46c98cc45b60b795c0c Mon Sep 17 00:00:00 2001 | ||
2 | From: Ignacio Casal Quinteiro <qignacio@amazon.com> | ||
3 | Date: Wed, 2 Oct 2024 11:17:19 +0200 | ||
4 | Subject: [PATCH] websocket-test: disconnect error copy after the test ends | ||
5 | |||
6 | Otherwise the server will have already sent a few more wrong | ||
7 | bytes and the client will continue getting errors to copy | ||
8 | but the error is already != NULL and it will assert | ||
9 | |||
10 | Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/29b96fab2512666d7241e46c98cc45b60b795c0c] | ||
11 | CVE: CVE-2024-52532 | ||
12 | Signed-off-by: Vijay Anusuri <vanusuri@mvista.com> | ||
13 | --- | ||
14 | tests/websocket-test.c | 4 +++- | ||
15 | 1 file changed, 3 insertions(+), 1 deletion(-) | ||
16 | |||
17 | diff --git a/tests/websocket-test.c b/tests/websocket-test.c | ||
18 | index 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 | -- | ||
41 | GitLab | ||
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 @@ | |||
1 | From 4c9e75c6676a37b6485620c332e568e1a3f530ff Mon Sep 17 00:00:00 2001 | ||
2 | From: Simon McVittie <smcv@debian.org> | ||
3 | Date: Wed, 13 Nov 2024 14:14:23 +0000 | ||
4 | Subject: [PATCH] websocket-test: Disconnect error signal in another place | ||
5 | |||
6 | This is the same change as commit 29b96fab "websocket-test: disconnect | ||
7 | error copy after the test ends", and is done for the same reason, but | ||
8 | replicating it into a different function. | ||
9 | |||
10 | Fixes: 6adc0e3e "websocket: process the frame as soon as we read data" | ||
11 | Resolves: https://gitlab.gnome.org/GNOME/libsoup/-/issues/399 | ||
12 | Signed-off-by: Simon McVittie <smcv@debian.org> | ||
13 | |||
14 | Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/4c9e75c6676a37b6485620c332e568e1a3f530ff] | ||
15 | CVE: CVE-2024-52532 | ||
16 | Signed-off-by: Vijay Anusuri <vanusuri@mvista.com> | ||
17 | --- | ||
18 | tests/websocket-test.c | 4 +++- | ||
19 | 1 file changed, 3 insertions(+), 1 deletion(-) | ||
20 | |||
21 | diff --git a/tests/websocket-test.c b/tests/websocket-test.c | ||
22 | index 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 | -- | ||
45 | GitLab | ||
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 @@ | |||
1 | From 2eacbd762332795e00692ddab2515c6da23198d3 Mon Sep 17 00:00:00 2001 | ||
2 | From: Changqing Li <changqing.li@windriver.com> | ||
3 | Date: Mon, 12 May 2025 14:06:41 +0800 | ||
4 | Subject: [PATCH] sniffer: Add better coverage of skip_insignificant_space() | ||
5 | |||
6 | CVE: CVE-2025-2784 | ||
7 | Upstream-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 | |||
11 | Test code is not added since it uses some functions not defined in | ||
12 | version 2.74. These tests are not used now, so just ignore them. | ||
13 | |||
14 | Signed-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 | |||
19 | diff --git a/libsoup/soup-content-sniffer.c b/libsoup/soup-content-sniffer.c | ||
20 | index 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 | -- | ||
55 | 2.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 @@ | |||
1 | From 5709dfffb6fdc5b66ce001bf82a755ad8ad1d992 Mon Sep 17 00:00:00 2001 | ||
2 | From: Patrick Griffis <pgriffis@igalia.com> | ||
3 | Date: Mon, 28 Oct 2024 12:29:48 -0500 | ||
4 | Subject: [PATCH] Fix using int instead of size_t for strcspn return | ||
5 | |||
6 | CVE: CVE-2025-32050 | ||
7 | Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/9bb0a55de55c6940ced811a64fbca82fe93a9323] | ||
8 | |||
9 | Signed-off-by: Changqing Li <changqing.li@windriver.com> | ||
10 | --- | ||
11 | libsoup/soup-headers.c | 2 +- | ||
12 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
13 | |||
14 | diff --git a/libsoup/soup-headers.c b/libsoup/soup-headers.c | ||
15 | index 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 | -- | ||
28 | 2.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 @@ | |||
1 | From f4a67a9a3033586edaee715d40d5992e02d32893 Mon Sep 17 00:00:00 2001 | ||
2 | From: Patrick Griffis <pgriffis@igalia.com> | ||
3 | Date: Sat, 16 Nov 2024 12:07:30 -0600 | ||
4 | Subject: [PATCH] Fix heap buffer overflow in soup_content_sniffer_sniff | ||
5 | |||
6 | Co-Author: Ar Jun <pkillarjun@protonmail.com> | ||
7 | |||
8 | CVE: CVE-2025-32052 | ||
9 | Upstream-Status: Backport | ||
10 | [https://gitlab.gnome.org/GNOME/libsoup/-/commit/f182429e5b1fc034050510da20c93256c4fa9652#500da7cfde649872c49169be34b03a1c42a53ddb] | ||
11 | |||
12 | Signed-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 | |||
17 | diff --git a/libsoup/soup-content-sniffer.c b/libsoup/soup-content-sniffer.c | ||
18 | index 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 | -- | ||
31 | 2.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 @@ | |||
1 | From d9bcffd6cd5e8ec32889a594f7348d67a5101b3a Mon Sep 17 00:00:00 2001 | ||
2 | From: Changqing Li <changqing.li@windriver.com> | ||
3 | Date: Mon, 12 May 2025 13:58:42 +0800 | ||
4 | Subject: [PATCH] Fix heap buffer overflow in | ||
5 | soup-content-sniffer.c:sniff_feed_or_html() | ||
6 | |||
7 | CVE: CVE-2025-32053 | ||
8 | Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/eaed42ca8d40cd9ab63764e3d63641180505f40a] | ||
9 | |||
10 | Signed-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 | |||
15 | diff --git a/libsoup/soup-content-sniffer.c b/libsoup/soup-content-sniffer.c | ||
16 | index 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 | -- | ||
38 | 2.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 @@ | |||
1 | From 1f509f31b6f8420a3661c3f990424ab7b9164931 Mon Sep 17 00:00:00 2001 | ||
2 | From: Patrick Griffis <pgriffis@igalia.com> | ||
3 | Date: Tue, 11 Feb 2025 14:36:26 -0600 | ||
4 | Subject: [PATCH] headers: Handle parsing edge case | ||
5 | |||
6 | This version number is specifically crafted to pass sanity checks allowing it to go one byte out of bounds. | ||
7 | |||
8 | Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/1f509f31b6f8420a3661c3f990424ab7b9164931] | ||
9 | CVE: CVE-2025-32906 #Dependency Patch | ||
10 | Signed-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 | |||
16 | diff --git a/libsoup/soup-headers.c b/libsoup/soup-headers.c | ||
17 | index 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; | ||
29 | diff --git a/tests/header-parsing-test.c b/tests/header-parsing-test.c | ||
30 | index 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 | -- | ||
60 | GitLab | ||
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 @@ | |||
1 | From af5b9a4a3945c52b940d5ac181ef51bb12011f1f Mon Sep 17 00:00:00 2001 | ||
2 | From: Patrick Griffis <pgriffis@igalia.com> | ||
3 | Date: Wed, 12 Feb 2025 11:30:02 -0600 | ||
4 | Subject: [PATCH] headers: Handle parsing only newlines | ||
5 | |||
6 | Closes #404 | ||
7 | Closes #407 | ||
8 | |||
9 | Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/af5b9a4a3945c52b940d5ac181ef51bb12011f1f] | ||
10 | CVE: CVE-2025-32906 | ||
11 | Signed-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 | |||
17 | diff --git a/libsoup/soup-headers.c b/libsoup/soup-headers.c | ||
18 | index 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 | } | ||
39 | diff --git a/tests/header-parsing-test.c b/tests/header-parsing-test.c | ||
40 | index 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 | -- | ||
82 | GitLab | ||
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 @@ | |||
1 | From 8158b4084dcba2a233dfcb7359c53ab2840148f7 Mon Sep 17 00:00:00 2001 | ||
2 | From: Milan Crha <mcrha@redhat.com> | ||
3 | Date: Tue, 15 Apr 2025 12:17:39 +0200 | ||
4 | Subject: [PATCH 1/2] soup-message-headers: Correct merge of ranges | ||
5 | |||
6 | It had been skipping every second range, which generated an array | ||
7 | of a lot of insane ranges, causing large memory usage by the server. | ||
8 | |||
9 | Closes #428 | ||
10 | |||
11 | Part-of: <https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/452> | ||
12 | |||
13 | CVE: CVE-2025-32907 | ||
14 | Upstream-Status: Backport | ||
15 | [https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/452/diffs?commit_id=9bb92f7a685e31e10e9e8221d0342280432ce836] | ||
16 | |||
17 | Test part not applied since test codes use some functions not in this | ||
18 | version | ||
19 | |||
20 | Signed-off-by: Changqing Li <changqing.li@windriver.com> | ||
21 | --- | ||
22 | libsoup/soup-message-headers.c | 1 + | ||
23 | 1 files changed, 1 insertions(+) | ||
24 | |||
25 | diff --git a/libsoup/soup-message-headers.c b/libsoup/soup-message-headers.c | ||
26 | index 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 | -- | ||
38 | 2.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 @@ | |||
1 | From ba4c3a6f988beff59e45801ab36067293d24ce92 Mon Sep 17 00:00:00 2001 | ||
2 | From: Patrick Griffis <pgriffis@igalia.com> | ||
3 | Date: Wed, 8 Jan 2025 16:30:17 -0600 | ||
4 | Subject: [PATCH] content-sniffer: Handle sniffing resource shorter than 4 | ||
5 | bytes | ||
6 | |||
7 | Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/ba4c3a6f988beff59e45801ab36067293d24ce92] | ||
8 | CVE: CVE-2025-32909 | ||
9 | Signed-off-by: Vijay Anusuri <vanusuri@mvista.com> | ||
10 | --- | ||
11 | libsoup/soup-content-sniffer.c | 7 ++++++- | ||
12 | 1 file changed, 6 insertions(+), 1 deletion(-) | ||
13 | |||
14 | diff --git a/libsoup/soup-content-sniffer.c b/libsoup/soup-content-sniffer.c | ||
15 | index 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 | -- | ||
35 | 2.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 @@ | |||
1 | From: Patrick Griffis <pgriffis@igalia.com> | ||
2 | Date: Sun, 8 Dec 2024 20:00:35 -0600 | ||
3 | Subject: auth-digest: Handle missing realm in authenticate header | ||
4 | |||
5 | (cherry picked from commit e40df6d48a1cbab56f5d15016cc861a503423cfe) | ||
6 | |||
7 | Upstream-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 | ||
8 | Upstream commit https://gitlab.gnome.org/GNOME/libsoup/-/commit/e40df6d48a1cbab56f5d15016cc861a503423cfe] | ||
9 | CVE: CVE-2025-32910 | ||
10 | Signed-off-by: Vijay Anusuri <vanusuri@mvista.com> | ||
11 | |||
12 | Remove test code for fixing do_compile failure of libsoup-2.4, test codes include | ||
13 | new 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 | |||
18 | Signed-off-by: Changqing Li <changqing.li@windriver.com> | ||
19 | --- | ||
20 | libsoup/soup-auth-digest.c | 3 +++ | ||
21 | 1 files changed, 3 insertions(+) | ||
22 | |||
23 | diff --git a/libsoup/soup-auth-digest.c b/libsoup/soup-auth-digest.c | ||
24 | index 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 @@ | |||
1 | From: Patrick Griffis <pgriffis@igalia.com> | ||
2 | Date: Thu, 26 Dec 2024 18:18:35 -0600 | ||
3 | Subject: auth-digest: Handle missing nonce | ||
4 | |||
5 | (cherry picked from commit 405a8a34597a44bd58c4759e7d5e23f02c3b556a) | ||
6 | |||
7 | Upstream-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 | ||
8 | Upstream commit https://gitlab.gnome.org/GNOME/libsoup/-/commit/405a8a34597a44bd58c4759e7d5e23f02c3b556a] | ||
9 | CVE: CVE-2025-32910 | ||
10 | Signed-off-by: Vijay Anusuri <vanusuri@mvista.com> | ||
11 | |||
12 | Remove test code for fixing do_compile failure of libsoup-2.4, test codes include | ||
13 | new 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 | |||
18 | Signed-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 | |||
23 | diff --git a/libsoup/soup-auth-digest.c b/libsoup/soup-auth-digest.c | ||
24 | index 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 @@ | |||
1 | From: Patrick Griffis <pgriffis@igalia.com> | ||
2 | Date: Fri, 27 Dec 2024 13:52:52 -0600 | ||
3 | Subject: auth-digest: Fix leak | ||
4 | |||
5 | (cherry picked from commit ea16eeacb052e423eb5c3b0b705e5eab34b13832) | ||
6 | |||
7 | Upstream-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 | ||
8 | Upstream commit https://gitlab.gnome.org/GNOME/libsoup/-/commit/ea16eeacb052e423eb5c3b0b705e5eab34b13832] | ||
9 | CVE: CVE-2025-32910 | ||
10 | Signed-off-by: Vijay Anusuri <vanusuri@mvista.com> | ||
11 | --- | ||
12 | libsoup/soup-auth-digest.c | 1 + | ||
13 | 1 file changed, 1 insertion(+) | ||
14 | |||
15 | diff --git a/libsoup/soup-auth-digest.c b/libsoup/soup-auth-digest.c | ||
16 | index 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 @@ | |||
1 | From 7b4ef0e004ece3a308ccfaa714c284f4c96ade34 Mon Sep 17 00:00:00 2001 | ||
2 | From: Patrick Griffis <pgriffis@igalia.com> | ||
3 | Date: Fri, 27 Dec 2024 17:53:50 -0600 | ||
4 | Subject: [PATCH] soup_message_headers_get_content_disposition: Fix NULL deref | ||
5 | |||
6 | Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/7b4ef0e004ece3a308ccfaa714c284f4c96ade34] | ||
7 | CVE: CVE-2025-32911 CVE-2025-32913 #Dependency Patch | ||
8 | Signed-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 | |||
14 | diff --git a/libsoup/soup-message-headers.c b/libsoup/soup-message-headers.c | ||
15 | index 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 | } | ||
38 | diff --git a/tests/header-parsing-test.c b/tests/header-parsing-test.c | ||
39 | index 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 | + ¶ms)) { | ||
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 | -- | ||
71 | GitLab | ||
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 @@ | |||
1 | From f4a761fb66512fff59798765e8ac5b9e57dceef0 Mon Sep 17 00:00:00 2001 | ||
2 | From: Patrick Griffis <pgriffis@igalia.com> | ||
3 | Date: Fri, 27 Dec 2024 18:00:39 -0600 | ||
4 | Subject: [PATCH] soup_message_headers_get_content_disposition: strdup | ||
5 | truncated filenames | ||
6 | |||
7 | This table frees the strings it contains. | ||
8 | |||
9 | Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/f4a761fb66512fff59798765e8ac5b9e57dceef0] | ||
10 | CVE: CVE-2025-32911 CVE-2025-32913 | ||
11 | Signed-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 | |||
17 | diff --git a/libsoup/soup-message-headers.c b/libsoup/soup-message-headers.c | ||
18 | index 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"); | ||
30 | diff --git a/tests/header-parsing-test.c b/tests/header-parsing-test.c | ||
31 | index 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 | -- | ||
43 | GitLab | ||
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 @@ | |||
1 | From cd077513f267e43ce4b659eb18a1734d8a369992 Mon Sep 17 00:00:00 2001 | ||
2 | From: Patrick Griffis <pgriffis@igalia.com> | ||
3 | Date: Wed, 5 Feb 2025 14:03:05 -0600 | ||
4 | Subject: [PATCH 1/2] auth-digest: Handle missing nonce | ||
5 | |||
6 | Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/cd077513f267e43ce4b659eb18a1734d8a369992] | ||
7 | CVE: CVE-2025-32912 | ||
8 | Signed-off-by: Vijay Anusuri <vanusuri@mvista.com> | ||
9 | |||
10 | The test codes is based on CVE-2025-32910, test code in CVE-2025-32910 | ||
11 | is removed for fixing do_compile failure. So also remove this test code | ||
12 | |||
13 | Signed-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 | |||
18 | diff --git a/libsoup/soup-auth-digest.c b/libsoup/soup-auth-digest.c | ||
19 | index 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 | -- | ||
32 | 2.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 @@ | |||
1 | From 910ebdcd3dd82386717a201c13c834f3a63eed7f Mon Sep 17 00:00:00 2001 | ||
2 | From: Patrick Griffis <pgriffis@igalia.com> | ||
3 | Date: Sat, 8 Feb 2025 12:30:13 -0600 | ||
4 | Subject: [PATCH 2/2] digest-auth: Handle NULL nonce | ||
5 | |||
6 | `contains` only handles a missing nonce, `lookup` handles both missing and empty. | ||
7 | |||
8 | Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/910ebdcd3dd82386717a201c13c834f3a63eed7f] | ||
9 | CVE: CVE-2025-32912 | ||
10 | Signed-off-by: Vijay Anusuri <vanusuri@mvista.com> | ||
11 | --- | ||
12 | libsoup/soup-auth-digest.c | 2 +- | ||
13 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
14 | |||
15 | diff --git a/libsoup/soup-auth-digest.c b/libsoup/soup-auth-digest.c | ||
16 | index 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 | -- | ||
29 | 2.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 @@ | |||
1 | From: Milan Crha <mcrha@redhat.com> | ||
2 | Date: Tue, 15 Apr 2025 09:03:00 +0200 | ||
3 | Subject: multipart: Fix read out of buffer bounds under | ||
4 | soup_multipart_new_from_message() | ||
5 | |||
6 | This is CVE-2025-32914, special crafted input can cause read out of buffer bounds | ||
7 | of the body argument. | ||
8 | |||
9 | Closes #436 | ||
10 | |||
11 | (cherry picked from commit 5bfcf8157597f2d327050114fb37ff600004dbcf) | ||
12 | |||
13 | Upstream-Status: Backport [import from debian https://salsa.debian.org/gnome-team/libsoup/-/blob/debian/bullseye/debian/patches/CVE-2025-32914.patch?ref_type=heads | ||
14 | Upstream commit https://gitlab.gnome.org/GNOME/libsoup/-/commit/5bfcf8157597f2d327050114fb37ff600004dbcf] | ||
15 | CVE: CVE-2025-32914 | ||
16 | Signed-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 | |||
22 | diff --git a/libsoup/soup-multipart.c b/libsoup/soup-multipart.c | ||
23 | index 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); | ||
35 | diff --git a/tests/multipart-test.c b/tests/multipart-test.c | ||
36 | index 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 @@ | |||
1 | From 52a0f9234d384b9dab368835b22e5a5a01542168 Mon Sep 17 00:00:00 2001 | ||
2 | From: Changqing Li <changqing.li@windriver.com> | ||
3 | Date: Fri, 16 May 2025 14:16:10 +0800 | ||
4 | Subject: [PATCH] auth-digest: fix crash in | ||
5 | soup_auth_digest_get_protection_space() | ||
6 | |||
7 | We need to validate the Domain parameter in the WWW-Authenticate header. | ||
8 | |||
9 | Unfortunately this crash only occurs when listening on default ports 80 | ||
10 | and 443, so there's no good way to test for this. The test would require | ||
11 | running as root. | ||
12 | |||
13 | Fixes #440 | ||
14 | |||
15 | CVE: CVE-2025-4476 | ||
16 | Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/e64c221f9c7d09b48b610c5626b3b8c400f0907c?merge_request_iid=457] | ||
17 | |||
18 | Signed-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 | |||
23 | diff --git a/libsoup/soup-auth-digest.c b/libsoup/soup-auth-digest.c | ||
24 | index 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 | -- | ||
37 | 2.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 @@ | |||
1 | From c9083869ec2a3037e6df4bd86b45c419ba295f8e Mon Sep 17 00:00:00 2001 | ||
2 | From: Patrick Griffis <pgriffis@igalia.com> | ||
3 | Date: Thu, 26 Dec 2024 18:31:42 -0600 | ||
4 | Subject: [PATCH] soup_header_parse_quality_list: Fix leak | ||
5 | |||
6 | When 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 | |||
8 | Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/c9083869ec2a3037e6df4bd86b45c419ba295f8e] | ||
9 | CVE: CVE-2025-46420 | ||
10 | Signed-off-by: Ashish Sharma <asharma@mvista.com> | ||
11 | |||
12 | libsoup/soup-headers.c | 11 +++++------ | ||
13 | 1 file changed, 5 insertions(+), 6 deletions(-) | ||
14 | |||
15 | diff --git a/libsoup/soup-headers.c b/libsoup/soup-headers.c | ||
16 | index 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 | -- | ||
59 | GitLab | ||
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 @@ | |||
1 | From 5eb225f02bb35de56cfeedd87bde716bf1cb750b Mon Sep 17 00:00:00 2001 | ||
2 | From: Patrick Griffis <pgriffis@igalia.com> | ||
3 | Date: Wed, 5 Feb 2025 16:18:10 -0600 | ||
4 | Subject: [PATCH] session: Strip authentication credentails on | ||
5 | cross-origin redirect | ||
6 | |||
7 | This should match the behavior of Firefox and Safari but not of Chromium. | ||
8 | |||
9 | CVE: CVE-2025-46421 | ||
10 | Upstream-Status: Backport | ||
11 | [https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/436/diffs?commit_id=3e5c26415811f19e7737238bb23305ffaf96f66b] | ||
12 | |||
13 | Test code not added since it included some headers not in version 2.74.3 | ||
14 | |||
15 | Signed-off-by: Changqing Li <changqing.li@windriver.com> | ||
16 | --- | ||
17 | libsoup/soup-session.c | 8 +++++++- | ||
18 | 1 files changed, 7 insertions(+), 1 deletion(-) | ||
19 | |||
20 | diff --git a/libsoup/soup-session.c b/libsoup/soup-session.c | ||
21 | index 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 | -- | ||
46 | 2.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 @@ | |||
1 | From dfdc9b3cc73e6fe88cc12792ba00e14642572339 Mon Sep 17 00:00:00 2001 | ||
2 | From: Milan Crha <mcrha@redhat.com> | ||
3 | Date: Thu, 15 May 2025 17:49:11 +0200 | ||
4 | Subject: [PATCH] soup-multipart: Verify boundary limits for multipart body | ||
5 | |||
6 | It could happen that the boundary started at a place which resulted into | ||
7 | a negative number, which in an unsigned integer is a very large value. | ||
8 | Check the body size is not a negative value before setting it. | ||
9 | |||
10 | Closes https://gitlab.gnome.org/GNOME/libsoup/-/issues/449 | ||
11 | |||
12 | Part-of: <https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/463> | ||
13 | |||
14 | CVE: CVE-2025-4948 | ||
15 | Upstream-Status: Backport | ||
16 | [https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/463/diffs?commit_id=f2f28afe0b3b2b3009ab67d6874457ec6bac70c0] | ||
17 | |||
18 | Signed-off-by: Changqing Li <changqing.li@windriver.com> | ||
19 | --- | ||
20 | libsoup/soup-multipart.c | 2 +- | ||
21 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
22 | |||
23 | diff --git a/libsoup/soup-multipart.c b/libsoup/soup-multipart.c | ||
24 | index 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 | -- | ||
37 | 2.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 @@ | |||
1 | From 07b94e27afafebf31ef3cd868866a1e383750086 Mon Sep 17 00:00:00 2001 | ||
2 | From: Milan Crha <mcrha@redhat.com> | ||
3 | Date: Mon, 19 May 2025 17:48:27 +0200 | ||
4 | Subject: [PATCH] soup-multipart: Verify array bounds before accessing its | ||
5 | members | ||
6 | |||
7 | The boundary could be at a place which, calculated, pointed | ||
8 | before the beginning of the array. Check the bounds, to avoid | ||
9 | read out of the array bounds. | ||
10 | |||
11 | Closes https://gitlab.gnome.org/GNOME/libsoup/-/issues/447 | ||
12 | |||
13 | Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/07b94e27afafebf31ef3cd868866a1e383750086] | ||
14 | CVE: CVE-2025-4969 | ||
15 | Signed-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 | |||
21 | diff --git a/libsoup/soup-multipart.c b/libsoup/soup-multipart.c | ||
22 | index 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 */ | ||
34 | diff --git a/tests/multipart-test.c b/tests/multipart-test.c | ||
35 | index 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 | -- | ||
75 | 2.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" | |||
12 | SHRT_VER = "${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}" | 12 | SHRT_VER = "${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}" |
13 | 13 | ||
14 | SRC_URI = "${GNOME_MIRROR}/libsoup/${SHRT_VER}/libsoup-${PV}.tar.xz \ | 14 | SRC_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 | " | ||
16 | SRC_URI[sha256sum] = "e4b77c41cfc4c8c5a035fcdc320c7bc6cfb75ef7c5a034153df1413fa1d92f13" | 44 | SRC_URI[sha256sum] = "e4b77c41cfc4c8c5a035fcdc320c7bc6cfb75ef7c5a034153df1413fa1d92f13" |
17 | 45 | ||
18 | CVE_PRODUCT = "libsoup" | 46 | CVE_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 @@ | |||
1 | From dd10ae267e33bcc35646610d7cc1841da77d05e7 Mon Sep 17 00:00:00 2001 | ||
2 | From: Patrick Griffis <pgriffis@igalia.com> | ||
3 | Date: Wed, 5 Feb 2025 14:39:42 -0600 | ||
4 | Subject: [PATCH] Fix CVE-2025-2784 | ||
5 | |||
6 | CVE: CVE-2025-2784 | ||
7 | Upstream-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 | |||
11 | Signed-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 | |||
18 | diff --git a/libsoup/content-sniffer/soup-content-sniffer.c b/libsoup/content-sniffer/soup-content-sniffer.c | ||
19 | index 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 | |||
54 | diff --git a/tests/meson.build b/tests/meson.build | ||
55 | index 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, | ||
69 | diff --git a/tests/sniffing-test.c b/tests/sniffing-test.c | ||
70 | index 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 | -- | ||
136 | 2.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 @@ | |||
1 | From 30c86c9a284cf6f366ac87df0bca3e18a5de8671 Mon Sep 17 00:00:00 2001 | ||
2 | From: Patrick Griffis <pgriffis@igalia.com> | ||
3 | Date: Mon, 28 Oct 2024 12:29:48 -0500 | ||
4 | Subject: [PATCH] Fix using int instead of size_t for strcspn return | ||
5 | |||
6 | CVE: CVE-2025-32050 | ||
7 | Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/9bb0a55de55c6940ced811a64fbca82fe93a9323] | ||
8 | |||
9 | Signed-off-by: Changqing Li <changqing.li@windriver.com> | ||
10 | --- | ||
11 | libsoup/soup-headers.c | 2 +- | ||
12 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
13 | |||
14 | diff --git a/libsoup/soup-headers.c b/libsoup/soup-headers.c | ||
15 | index 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 | -- | ||
28 | 2.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 @@ | |||
1 | From dc5db30989f385303c79ec3188c52e33f6f5886e Mon Sep 17 00:00:00 2001 | ||
2 | From: Ar Jun <pkillarjun@protonmail.com> | ||
3 | Date: Sat, 16 Nov 2024 11:50:09 -0600 | ||
4 | Subject: [PATCH 1/2] Fix possible NULL deref in soup_uri_decode_data_uri | ||
5 | |||
6 | CVE: CVE-2025-32051 | ||
7 | Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/0713ba4a719da938dc8facc89fca99cd0aa3069f] | ||
8 | |||
9 | Signed-off-by: Changqing Li <changqing.li@windriver.com> | ||
10 | --- | ||
11 | libsoup/soup-uri-utils.c | 2 ++ | ||
12 | 1 file changed, 2 insertions(+) | ||
13 | |||
14 | diff --git a/libsoup/soup-uri-utils.c b/libsoup/soup-uri-utils.c | ||
15 | index 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 | -- | ||
28 | 2.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 @@ | |||
1 | From 7d1557a60145927806c88d321e8322a9d9f49bb2 Mon Sep 17 00:00:00 2001 | ||
2 | From: Patrick Griffis <pgriffis@igalia.com> | ||
3 | Date: Fri, 22 Nov 2024 13:39:51 -0600 | ||
4 | Subject: [PATCH 2/2] soup_uri_decode_data_uri(): Handle URIs with a path | ||
5 | starting with // | ||
6 | |||
7 | CVE: CVE-2025-32051 | ||
8 | Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/79cfd65c9bd8024cd45dd725c284766329873709] | ||
9 | |||
10 | Signed-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 | |||
16 | diff --git a/libsoup/soup-uri-utils.c b/libsoup/soup-uri-utils.c | ||
17 | index 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) | ||
42 | diff --git a/tests/uri-parsing-test.c b/tests/uri-parsing-test.c | ||
43 | index 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 | -- | ||
56 | 2.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 @@ | |||
1 | From 779bcb279b1dc4eb8bcb22c5e727b1174630c3fc Mon Sep 17 00:00:00 2001 | ||
2 | From: Patrick Griffis <pgriffis@igalia.com> | ||
3 | Date: Sat, 16 Nov 2024 12:07:30 -0600 | ||
4 | Subject: [PATCH] Fix heap buffer overflow in soup_content_sniffer_sniff | ||
5 | |||
6 | Co-Author: Ar Jun <pkillarjun@protonmail.com> | ||
7 | |||
8 | CVE: CVE-2025-32052 | ||
9 | Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/f182429e5b1fc034050510da20c93256c4fa9652] | ||
10 | |||
11 | Signed-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 | |||
16 | diff --git a/libsoup/content-sniffer/soup-content-sniffer.c b/libsoup/content-sniffer/soup-content-sniffer.c | ||
17 | index 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 | -- | ||
30 | 2.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 @@ | |||
1 | From 819dbc0fcf174b8182cdb279f7be15ea1cde649f Mon Sep 17 00:00:00 2001 | ||
2 | From: Ar Jun <pkillarjun@protonmail.com> | ||
3 | Date: Mon, 18 Nov 2024 14:59:51 -0600 | ||
4 | Subject: [PATCH] Fix heap buffer overflow in | ||
5 | soup-content-sniffer.c:sniff_feed_or_html() | ||
6 | |||
7 | CVE: CVE-2025-32053 | ||
8 | Upstream-Status: Backport | ||
9 | [https://gitlab.gnome.org/GNOME/libsoup/-/commit/eaed42ca8d40cd9ab63764e3d63641180505f40a] | ||
10 | |||
11 | Signed-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 | |||
16 | diff --git a/libsoup/content-sniffer/soup-content-sniffer.c b/libsoup/content-sniffer/soup-content-sniffer.c | ||
17 | index 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 | -- | ||
39 | 2.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 @@ | |||
1 | From 4741bc288ece52f5dbaebc568e72ce14da3e2757 Mon Sep 17 00:00:00 2001 | ||
2 | From: Milan Crha <mcrha@redhat.com> | ||
3 | Date: Tue, 15 Apr 2025 12:17:39 +0200 | ||
4 | Subject: [PATCH 1/2] soup-message-headers: Correct merge of ranges | ||
5 | |||
6 | It had been skipping every second range, which generated an array | ||
7 | of a lot of insane ranges, causing large memory usage by the server. | ||
8 | |||
9 | Closes #428 | ||
10 | |||
11 | Part-of: <https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/452> | ||
12 | |||
13 | CVE: CVE-2025-32907 | ||
14 | Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/452/commits] | ||
15 | |||
16 | Signed-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 | |||
24 | diff --git a/libsoup/soup-message-headers.c b/libsoup/soup-message-headers.c | ||
25 | index 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 | } | ||
36 | diff --git a/tests/meson.build b/tests/meson.build | ||
37 | index 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', | ||
48 | diff --git a/tests/server-mem-limit-test.c b/tests/server-mem-limit-test.c | ||
49 | new file mode 100644 | ||
50 | index 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 | -- | ||
199 | 2.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 @@ | |||
1 | From 85716d2769b3e1acda024d2c7cbfb68139c5d90b Mon Sep 17 00:00:00 2001 | ||
2 | From: Milan Crha <mcrha@redhat.com> | ||
3 | Date: Tue, 13 May 2025 14:20:46 +0200 | ||
4 | Subject: [PATCH 2/2] server-mem-limit-test: Limit memory usage only when not | ||
5 | built witha sanitizer | ||
6 | |||
7 | A build with -Db_sanitize=address crashes with failed mmap(), which is done | ||
8 | inside libasan. The test requires 20.0TB of virtual memory when running with | ||
9 | the sanitizer, which is beyond unsigned integer limits and may not trigger | ||
10 | the bug anyway. | ||
11 | |||
12 | Part-of: <https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/452> | ||
13 | |||
14 | CVE: CVE-2025-32907 | ||
15 | Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/452/commits] | ||
16 | |||
17 | Signed-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 | |||
23 | diff --git a/meson.build b/meson.build | ||
24 | index 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) | ||
38 | diff --git a/tests/server-mem-limit-test.c b/tests/server-mem-limit-test.c | ||
39 | index 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 | -- | ||
67 | 2.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 @@ | |||
1 | From 56b8eb061a02c4e99644d6f1e62e601d0d814beb Mon Sep 17 00:00:00 2001 | ||
2 | From: Milan Crha <mcrha@redhat.com> | ||
3 | Date: Tue, 15 Apr 2025 09:59:05 +0200 | ||
4 | Subject: [PATCH 1/2] soup-server-http2: Check validity of the constructed | ||
5 | connection URI | ||
6 | |||
7 | The HTTP/2 pseudo-headers can contain invalid values, which the GUri rejects | ||
8 | and returns NULL, but the soup-server did not check the validity and could | ||
9 | abort the server itself later in the code. | ||
10 | |||
11 | Closes #429 | ||
12 | |||
13 | CVE: CVE-2025-32908 | ||
14 | Upstream-Status: Backport | ||
15 | [https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/451/diffs?commit_id=a792b23ab87cacbf4dd9462bf7b675fa678efbae] | ||
16 | |||
17 | Signed-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 | |||
23 | diff --git a/libsoup/server/http2/soup-server-message-io-http2.c b/libsoup/server/http2/soup-server-message-io-http2.c | ||
24 | index 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 | |||
41 | diff --git a/tests/http2-test.c b/tests/http2-test.c | ||
42 | index 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 | -- | ||
88 | 2.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 @@ | |||
1 | From aad0dcf22ee9fdfefa6b72055268240cceccfe4c Mon Sep 17 00:00:00 2001 | ||
2 | From: Milan Crha <mcrha@redhat.com> | ||
3 | Date: Mon, 28 Apr 2025 10:55:42 +0200 | ||
4 | Subject: [PATCH 2/2] soup-server-http2: Correct check of the validity of the | ||
5 | constructed connection URI | ||
6 | |||
7 | RFC 5740: the CONNECT has unset the "scheme" and "path", thus allow them unset. | ||
8 | |||
9 | The commit a792b23ab87cacbf4dd9462bf7b675fa678efbae also missed to decrement | ||
10 | the `io->in_callback` in the early returns. | ||
11 | |||
12 | Related to #429 | ||
13 | |||
14 | CVE: CVE-2025-32908 | ||
15 | Upstream-Status: Backport | ||
16 | [https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/453/diffs?commit_id=527428a033df573ef4558ce1106e080fd9ec5c71] | ||
17 | |||
18 | Signed-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 | |||
23 | diff --git a/libsoup/server/http2/soup-server-message-io-http2.c b/libsoup/server/http2/soup-server-message-io-http2.c | ||
24 | index 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 | -- | ||
52 | 2.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 @@ | |||
1 | From 5bfcf8157597f2d327050114fb37ff600004dbcf Mon Sep 17 00:00:00 2001 | ||
2 | From: Milan Crha <mcrha@redhat.com> | ||
3 | Date: Tue, 15 Apr 2025 09:03:00 +0200 | ||
4 | Subject: [PATCH] multipart: Fix read out of buffer bounds under | ||
5 | soup_multipart_new_from_message() | ||
6 | |||
7 | This is CVE-2025-32914, special crafted input can cause read out of buffer bounds | ||
8 | of the body argument. | ||
9 | |||
10 | Closes #436 | ||
11 | |||
12 | Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/5bfcf8157597f2d327050114fb37ff600004dbcf] | ||
13 | CVE: CVE-2025-32914 | ||
14 | Signed-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 | |||
20 | diff --git a/libsoup/soup-multipart.c b/libsoup/soup-multipart.c | ||
21 | index 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; | ||
33 | diff --git a/tests/multipart-test.c b/tests/multipart-test.c | ||
34 | index 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 | -- | ||
110 | GitLab | ||
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 @@ | |||
1 | From e64c221f9c7d09b48b610c5626b3b8c400f0907c Mon Sep 17 00:00:00 2001 | ||
2 | From: Michael Catanzaro <mcatanzaro@redhat.com> | ||
3 | Date: Thu, 8 May 2025 09:27:01 -0500 | ||
4 | Subject: [PATCH] auth-digest: fix crash in | ||
5 | soup_auth_digest_get_protection_space() | ||
6 | |||
7 | We need to validate the Domain parameter in the WWW-Authenticate header. | ||
8 | |||
9 | Unfortunately this crash only occurs when listening on default ports 80 | ||
10 | and 443, so there's no good way to test for this. The test would require | ||
11 | running as root. | ||
12 | |||
13 | Fixes #440 | ||
14 | |||
15 | Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/e64c221f9c7d09b48b610c5626b3b8c400f0907c] | ||
16 | CVE: CVE-2025-4476 | ||
17 | Signed-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 | |||
23 | diff --git a/libsoup/auth/soup-auth-digest.c b/libsoup/auth/soup-auth-digest.c | ||
24 | index 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 | -- | ||
37 | GitLab | ||
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 @@ | |||
1 | From 85c5227eef7370832044eb918e8a99c0bcbab86f Mon Sep 17 00:00:00 2001 | ||
2 | From: Patrick Griffis <pgriffis@igalia.com> | ||
3 | Date: Wed, 5 Feb 2025 16:18:10 -0600 | ||
4 | Subject: [PATCH] session: Strip authentication credentails on cross-origin | ||
5 | redirect | ||
6 | |||
7 | This should match the behavior of Firefox and Safari but not of Chromium. | ||
8 | |||
9 | CVE: CVE-2025-46421 | ||
10 | Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/436/diffs?commit_id=3e5c26415811f19e7737238bb23305ffaf96f66b] | ||
11 | |||
12 | Signed-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 | |||
18 | diff --git a/libsoup/soup-session.c b/libsoup/soup-session.c | ||
19 | index 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); | ||
35 | diff --git a/tests/auth-test.c b/tests/auth-test.c | ||
36 | index 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 | -- | ||
138 | 2.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 @@ | |||
1 | From a23ce8f8e60e79990e26376c8b0d40841aed4b81 Mon Sep 17 00:00:00 2001 | ||
2 | From: Milan Crha <mcrha@redhat.com> | ||
3 | Date: Thu, 15 May 2025 17:49:11 +0200 | ||
4 | Subject: [PATCH] soup-multipart: Verify boundary limits for multipart body | ||
5 | |||
6 | It could happen that the boundary started at a place which resulted into | ||
7 | a negative number, which in an unsigned integer is a very large value. | ||
8 | Check the body size is not a negative value before setting it. | ||
9 | |||
10 | Closes https://gitlab.gnome.org/GNOME/libsoup/-/issues/449 | ||
11 | |||
12 | Part-of: <https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/463> | ||
13 | |||
14 | CVE: CVE-2025-4948 | ||
15 | Upstream-Status: Backport | ||
16 | [https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/463/diffs?commit_id=f2f28afe0b3b2b3009ab67d6874457ec6bac70c0] | ||
17 | |||
18 | Signed-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 | |||
24 | diff --git a/libsoup/soup-multipart.c b/libsoup/soup-multipart.c | ||
25 | index 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; | ||
37 | diff --git a/tests/multipart-test.c b/tests/multipart-test.c | ||
38 | index 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 | -- | ||
96 | 2.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 @@ | |||
1 | From 07b94e27afafebf31ef3cd868866a1e383750086 Mon Sep 17 00:00:00 2001 | ||
2 | From: Milan Crha <mcrha@redhat.com> | ||
3 | Date: Mon, 19 May 2025 17:48:27 +0200 | ||
4 | Subject: [PATCH] soup-multipart: Verify array bounds before accessing its | ||
5 | members | ||
6 | |||
7 | The boundary could be at a place which, calculated, pointed | ||
8 | before the beginning of the array. Check the bounds, to avoid | ||
9 | read out of the array bounds. | ||
10 | |||
11 | Closes https://gitlab.gnome.org/GNOME/libsoup/-/issues/447 | ||
12 | |||
13 | Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/07b94e27afafebf31ef3cd868866a1e383750086] | ||
14 | CVE: CVE-2025-4969 | ||
15 | Signed-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 | |||
21 | diff --git a/libsoup/soup-multipart.c b/libsoup/soup-multipart.c | ||
22 | index 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 */ | ||
34 | diff --git a/tests/multipart-test.c b/tests/multipart-test.c | ||
35 | index 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 | -- | ||
75 | 2.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 | " | ||
33 | SRC_URI[sha256sum] = "291c67725f36ed90ea43efff25064b69c5a2d1981488477c05c481a3b4b0c5aa" | 48 | SRC_URI[sha256sum] = "291c67725f36ed90ea43efff25064b69c5a2d1981488477c05c481a3b4b0c5aa" |
34 | 49 | ||
35 | PROVIDES = "libsoup-3.0" | 50 | PROVIDES = "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 | ||
58 | DEFAULT_INSTALL_DIR = os.path.join(os.path.split(scripts_path)[0],'buildtools') | 58 | DEFAULT_INSTALL_DIR = os.path.join(os.path.split(scripts_path)[0],'buildtools') |
59 | DEFAULT_BASE_URL = 'https://downloads.yoctoproject.org/releases/yocto' | 59 | DEFAULT_BASE_URL = 'https://downloads.yoctoproject.org/releases/yocto' |
60 | DEFAULT_RELEASE = 'yocto-5.0.7' | 60 | DEFAULT_RELEASE = 'yocto-5.0.10' |
61 | DEFAULT_INSTALLER_VERSION = '5.0.7' | 61 | DEFAULT_INSTALLER_VERSION = '5.0.10' |
62 | DEFAULT_BUILDDATE = '202110XX' | 62 | DEFAULT_BUILDDATE = '202110XX' |
63 | 63 | ||
64 | # Python version sanity check | 64 | # Python version sanity check |