From 6c7581d78657a90a336afccc3a43096f1c5d6d4b Mon Sep 17 00:00:00 2001 From: KCSesh Date: Wed, 11 Mar 2026 21:50:35 +0000 Subject: [PATCH 01/13] glibc: update to 2.43 Signed-off-by: KCSesh --- ...ries-directory-with-file-ADVISORIES.patch} | 145 +- ...=> 0002-NEWS-add-new-section-2.43.1.patch} | 27 +- ...ceill-floorl-roundl-and-truncl-zero-.patch | 160 + ...ed-fix-namespace-violation-bug-33227.patch | 37 - ...porate-translatins-nl-updated-ar-new.patch | 7340 +++++++++++++++++ ...-double-lock-init-issue-after-fork-B.patch | 59 - ...de-bits-openat2.h-directly-bug-33848.patch | 39 + ...tld_setup_phdr-function-from-dl_main.patch | 91 - ...-with-LOAD-segment-gaps-in-_dl_find_.patch | 473 -- ...dicated-struct-nss_database_for_fork.patch | 117 + ...n_r-use-utmp-fallback-only-for-speci.patch | 75 + ..._CANCEL-for-return-values-larger-tha.patch | 49 - ...emporary-files-in-support_subprocess.patch | 38 - ...ks-in-__nss_configure_lookup-__nss_d.patch | 408 + ...with-enable-fortify-source-1-BZ-3390.patch | 30 + ...pen-threaded.c-Delete-temporary-file.patch | 76 - .../0010-Add-BZ-33904-entry-to-NEWS.patch | 21 + ...n.c-Call-support_capture_subprocess-.patch | 86 - ...setuid-Delete-LD_DEBUG_OUTPUT-output.patch | 79 - ...en4-main.c-Call-support_capture_subp.patch | 86 - ...-hurd-support-Fix-running-SGID-tests.patch | 48 - ...4-malloc-Remove-redundant-NULL-check.patch | 40 - ...015-malloc-Fix-MAX_TCACHE_SMALL_SIZE.patch | 70 - ...c-Make-sure-tcache_key-is-odd-enough.patch | 52 - ...ing-for-small-negative-values-of-tca.patch | 26 - ...exec-model-for-__libc_tsd_CTYPE_-thr.patch | 56 - ...d-GLIBC_ABI_GNU_TLS-version-BZ-33221.patch | 63 - ...-GLIBC_ABI_GNU2_TLS-version-BZ-33129.patch | 67 - ...Add-GLIBC_ABI_DT_X86_64_PLT-BZ-33212.patch | 79 - ...-GLIBC_ABI_GNU2_TLS-version-BZ-33129.patch | 95 - ...Arch64-Fix-SVE-powf-routine-BZ-33299.patch | 52 - ...RENAME_-with-the-same-tokens-as-Linu.patch | 52 - ...does-not-react-to-ERANGE-during-merg.patch | 62 - ...ARD_INSTALL-logic-for-thread-without.patch | 209 - packages/glibc/Cargo.toml | 8 +- packages/glibc/glibc.spec | 46 +- 36 files changed, 8363 insertions(+), 2098 deletions(-) rename packages/glibc/{0001-Replace-advisories-directory-with-pointer-file.patch => 0001-Replace-advisories-directory-with-file-ADVISORIES.patch} (79%) rename packages/glibc/{0002-NEWS-add-new-section.patch => 0002-NEWS-add-new-section-2.43.1.patch} (50%) create mode 100644 packages/glibc/0003-Fix-ldbl-128ibm-ceill-floorl-roundl-and-truncl-zero-.patch delete mode 100644 packages/glibc/0003-inet-fortified-fix-namespace-violation-bug-33227.patch create mode 100644 packages/glibc/0004-po-Incorporate-translatins-nl-updated-ar-new.patch delete mode 100644 packages/glibc/0004-stdlib-resolve-a-double-lock-init-issue-after-fork-B.patch create mode 100644 packages/glibc/0005-Don-t-include-bits-openat2.h-directly-bug-33848.patch delete mode 100644 packages/glibc/0005-elf-Extract-rtld_setup_phdr-function-from-dl_main.patch delete mode 100644 packages/glibc/0006-elf-Handle-ld.so-with-LOAD-segment-gaps-in-_dl_find_.patch create mode 100644 packages/glibc/0006-nss-Introduce-dedicated-struct-nss_database_for_fork.patch create mode 100644 packages/glibc/0007-Linux-In-getlogin_r-use-utmp-fallback-only-for-speci.patch delete mode 100644 packages/glibc/0007-nptl-Fix-SYSCALL_CANCEL-for-return-values-larger-tha.patch delete mode 100644 packages/glibc/0008-Delete-temporary-files-in-support_subprocess.patch create mode 100644 packages/glibc/0008-nss-Missing-checks-in-__nss_configure_lookup-__nss_d.patch create mode 100644 packages/glibc/0009-debug-Fix-build-with-enable-fortify-source-1-BZ-3390.patch delete mode 100644 packages/glibc/0009-tst-fopen-threaded.c-Delete-temporary-file.patch create mode 100644 packages/glibc/0010-Add-BZ-33904-entry-to-NEWS.patch delete mode 100644 packages/glibc/0010-tst-freopen4-main.c-Call-support_capture_subprocess-.patch delete mode 100644 packages/glibc/0011-tst-env-setuid-Delete-LD_DEBUG_OUTPUT-output.patch delete mode 100644 packages/glibc/0012-Revert-tst-freopen4-main.c-Call-support_capture_subp.patch delete mode 100644 packages/glibc/0013-hurd-support-Fix-running-SGID-tests.patch delete mode 100644 packages/glibc/0014-malloc-Remove-redundant-NULL-check.patch delete mode 100644 packages/glibc/0015-malloc-Fix-MAX_TCACHE_SMALL_SIZE.patch delete mode 100644 packages/glibc/0016-malloc-Make-sure-tcache_key-is-odd-enough.patch delete mode 100644 packages/glibc/0017-malloc-Fix-checking-for-small-negative-values-of-tca.patch delete mode 100644 packages/glibc/0018-Use-TLS-initial-exec-model-for-__libc_tsd_CTYPE_-thr.patch delete mode 100644 packages/glibc/0019-i386-Add-GLIBC_ABI_GNU_TLS-version-BZ-33221.patch delete mode 100644 packages/glibc/0020-x86-64-Add-GLIBC_ABI_GNU2_TLS-version-BZ-33129.patch delete mode 100644 packages/glibc/0021-x86-64-Add-GLIBC_ABI_DT_X86_64_PLT-BZ-33212.patch delete mode 100644 packages/glibc/0022-i386-Also-add-GLIBC_ABI_GNU2_TLS-version-BZ-33129.patch delete mode 100644 packages/glibc/0023-AArch64-Fix-SVE-powf-routine-BZ-33299.patch delete mode 100644 packages/glibc/0024-libio-Define-AT_RENAME_-with-the-same-tokens-as-Linu.patch delete mode 100644 packages/glibc/0025-nss-Group-merge-does-not-react-to-ERANGE-during-merg.patch delete mode 100644 packages/glibc/0026-nptl-Fix-MADV_GUARD_INSTALL-logic-for-thread-without.patch diff --git a/packages/glibc/0001-Replace-advisories-directory-with-pointer-file.patch b/packages/glibc/0001-Replace-advisories-directory-with-file-ADVISORIES.patch similarity index 79% rename from packages/glibc/0001-Replace-advisories-directory-with-pointer-file.patch rename to packages/glibc/0001-Replace-advisories-directory-with-file-ADVISORIES.patch index 6c80c9219..dd133d031 100644 --- a/packages/glibc/0001-Replace-advisories-directory-with-pointer-file.patch +++ b/packages/glibc/0001-Replace-advisories-directory-with-file-ADVISORIES.patch @@ -1,7 +1,7 @@ -From bdea6c37197a3c9bd976911cce5f580dea1c28dd Mon Sep 17 00:00:00 2001 +From f02515d8a6963158e0e4be8034b96c658e1b9a32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= -Date: Mon, 28 Jul 2025 20:35:38 +0200 -Subject: [PATCH] Replace advisories directory with pointer file +Date: Fri, 23 Jan 2026 23:59:36 +0100 +Subject: [PATCH] Replace advisories directory with file ADVISORIES MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -27,8 +27,11 @@ Signed-off-by: Andreas K. Hüttel advisories/GLIBC-SA-2025-0003 | 30 -------------- advisories/GLIBC-SA-2025-0004 | 29 ------------- advisories/GLIBC-SA-2025-0005 | 14 ------- + advisories/GLIBC-SA-2026-0001 | 41 ------------------- + advisories/GLIBC-SA-2026-0002 | 36 ---------------- + advisories/GLIBC-SA-2026-0003 | 36 ---------------- advisories/README | 77 ----------------------------------- - 20 files changed, 2 insertions(+), 470 deletions(-) + 23 files changed, 2 insertions(+), 583 deletions(-) create mode 100644 ADVISORIES delete mode 100644 advisories/GLIBC-SA-2023-0001 delete mode 100644 advisories/GLIBC-SA-2023-0002 @@ -48,6 +51,9 @@ Signed-off-by: Andreas K. Hüttel delete mode 100644 advisories/GLIBC-SA-2025-0003 delete mode 100644 advisories/GLIBC-SA-2025-0004 delete mode 100644 advisories/GLIBC-SA-2025-0005 + delete mode 100644 advisories/GLIBC-SA-2026-0001 + delete mode 100644 advisories/GLIBC-SA-2026-0002 + delete mode 100644 advisories/GLIBC-SA-2026-0003 delete mode 100644 advisories/README diff --git a/ADVISORIES b/ADVISORIES @@ -559,6 +565,137 @@ index 8bcccc59a5..0000000000 -Public-Date: 2025-07-22 -Vulnerable-Commit: 963d8d782fc98fb6dc3a66f0068795f9920c269d (2.3.3-1596) -Fix-Commit: 7ea06e994093fa0bcca0d0ee2c1db271d8d7885d (2.42) +diff --git a/advisories/GLIBC-SA-2026-0001 b/advisories/GLIBC-SA-2026-0001 +deleted file mode 100644 +index 3e0ee3b3f4..0000000000 +--- a/advisories/GLIBC-SA-2026-0001 ++++ /dev/null +@@ -1,41 +0,0 @@ +-Integer overflow in memalign leads to heap corruption +- +-Passing too large an alignment to the memalign suite of functions +-(memalign, posix_memalign, aligned_alloc) in the GNU C Library version +-2.30 to 2.42 may result in an integer overflow, which could consequently +-result in a heap corruption. +- +-Note that the attacker must have control over both, the size as well as +-the alignment arguments of the memalign function to be able to exploit +-this. The size parameter must be close enough to PTRDIFF_MAX so as to +-overflow size_t along with the large alignment argument. This limits +-the malicious inputs for the alignment for memalign to the range [1<<62 +-+ 1, 1<<63] and exactly 1<<63 for posix_memalign and aligned_alloc. +- +-Typically the alignment argument passed to such functions is a known +-constrained quantity (e.g. page size, block size, struct sizes) and is +-not attacker controlled, because of which this may not be easily +-exploitable in practice. An application bug could potentially result in +-the input alignment being too large, e.g. due to a different buffer +-overflow or integer overflow in the application or its dependent +-libraries, but that is again an uncommon usage pattern given typical +-sources of alignments. +- +-CVE-Id: CVE-2026-0861 +-Public-Date: 2026-01-14 +-Vulnerable-Commit: 9bf8e29ca136094f73f69f725f15c51facc97206 (2.30) +-Fix-Commit: c9188d333717d3ceb7e3020011651f424f749f93 (2.43) +-Fix-Commit: 7f19ef14fbce095d4c77395e258320cad2ea2b28 (2.30-153) +-Fix-Commit: f18446d7b4a423090ee5e328c36b3c2a0f26041c (2.31-166) +-Fix-Commit: 8aef9e7a7af9565c0324b4ecb38b30dfa3782fd8 (2.32-151) +-Fix-Commit: 011293b4fd748cdd6f95874ba2b6aba9a3df8bff (2.33-275) +-Fix-Commit: 2c77e52108a58956c9f674b36e1f59a4e3fdcf4d (2.34-525) +-Fix-Commit: 499d1ccafccfe64df1b88deea2fa84d8180e8e8f (2.35-399) +-Fix-Commit: fb6b8822175769b5794fb6ea04f2895483a29b61 (2.36-244) +-Fix-Commit: 7b913d41a07836def826f2164c52541a9835f324 (2.37-172) +-Fix-Commit: 744b63026a29f7eedbbc8e3a01a7f48a6eb0a085 (2.38-212) +-Fix-Commit: fb22fd3f5b415dd4cd6f7b5741c2f0412374e242 (2.39-286) +-Fix-Commit: bfc4dd9e526eacf3017dd8864ba0848e9d045dd4 (2.40-216) +-Fix-Commit: 1e2c1ea4307197ccece0cda574bcfebf9080894c (2.41-121) +-Fix-Commit: b0ec8fb689df862171f0f78994a3bdeb51313545 (2.42-49) +-Reported-by: Igor Morgenstern, Aisle Research +diff --git a/advisories/GLIBC-SA-2026-0002 b/advisories/GLIBC-SA-2026-0002 +deleted file mode 100644 +index f10d8362f6..0000000000 +--- a/advisories/GLIBC-SA-2026-0002 ++++ /dev/null +@@ -1,36 +0,0 @@ +-getnetbyaddr and getnetbyaddr_r leak stack contents to DNS resovler +- +-Calling getnetbyaddr or getnetbyaddr_r with a configured nsswitch.conf +-that specifies the library's DNS backend for networks and queries for a +-zero-valued network in the GNU C Library version 2.0 to version 2.42 +-can leak stack contents to the configured DNS resolver. +- +-A defect in the _nss_dns_getnetbyaddr_r function which implements +-getnetbyaddr and getnetbyaddr_r in the dns-based network database can +-pass stack contents unmodified to the configured DNS resolver as part of +-the network DNS query when the network queried is the default network +-i.e. net == 0x0. This stack contents leaking in the query is considered +-a loss of confidentiality for the host making the query. Typically it +-is rare to call these APIs with a net value of zero, and if an attacker +-can control the net value it can only leak adjacent stack, and so loss +-of confidentiality is spatially limited. The leak might be used to +-accelerate an ASLR bypass by knowing pointer values, but also requires +-network adjacent access to snoop between the application and the +-DNS server; making the attack complexity higher. +- +-CVE-Id: CVE-2026-0915 +-Public-Date: 2026-01-15 +-Vulnerable-Commit: 5f0e6fc702296840d2daa39f83f6cb1e40073d58 (1.92-1) +-Fix-Commit: e56ff82d5034ec66c6a78f517af6faa427f65b0b (2.43) +-Fix-Commit: 453e6b8dbab935257eb0802b0c97bca6b67ba30e (2.42-50) +-Fix-Commit: 15c9839a0b853f552b4ed9047841b6223f3c104d (2.41-122) +-Fix-Commit: 329c775788b2c9ff3da774ccf59fba7b6b8ff08e (2.40-217) +-Fix-Commit: 831f63b94ceb92fb14c0d1a7ddad35a0d1404c71 (2.39-287) +-Fix-Commit: 49125ffc8e1674dc2a100dfdc5b78796f22e16f2 (2.38-213) +-Fix-Commit: ddcaed5dfb05b2c1a6ea842fd6b643501365450a (2.37-173) +-Fix-Commit: a6bf47887f24b2b394acb301a3189fda04bd4d4d (2.36-245) +-Fix-Commit: 66f0cb057c9b4fb1249a5fec6ef4a63511a37899 (2.35-400) +-Fix-Commit: 96863dee262225cfb79f9fe45e06fd188319c7b8 (2.34-526) +-Fix-Commit: d210011f1536c8322157cbb4fe4229b35c834c08 (2.33-276) +-Fix-Commit: 1bc1832cfc74c2a601220969f36e789a5e9f0ebe (2.32-152) +-Reported-by: Igor Morgenstern, Aisle Research +diff --git a/advisories/GLIBC-SA-2026-0003 b/advisories/GLIBC-SA-2026-0003 +deleted file mode 100644 +index b7a6e83a10..0000000000 +--- a/advisories/GLIBC-SA-2026-0003 ++++ /dev/null +@@ -1,36 +0,0 @@ +-wordexp with WRDE_REUSE and WRDE_APPEND may return uninitialized memory +- +-Calling wordexp with WRDE_REUSE in conjunction with WRDE_APPEND in the +-GNU C Library version 2.0 to version 2.42 may cause the interface to +-return uninitialized memory in the we_wordv member, which on subsequent +-calls to wordfree may abort the process. +- +-The implementation of WRDE_REUSE in conjunction with WRDE_APPEND fails +-to clear the we_wordc member of the structure, and as such, when new +-words are added internally, a leading we_wordc count number of entries +-are skipped since they are assumed initialized. These skipped entries +-are not initialized, but are the contents of a realloc-expanded array of +-pointers. If the caller inspects the we_wordv array, it will +-dereference invalid pointers and crash. If the caller calls wordfree, +-the malloc implementation may detect the invalid pointers and abort the +-process. Calls to wordexp using WRDE_REUSE and WRDE_APPEND have never +-worked correctly and thus the existence of applications that make use of +-this feature is unlikely. +- +-CVE-Id: CVE-2025-15281 +-Public-Date: 2026-01-20 +-Vulnerable-Commit: 8f2ece695d8822e9ecc63ecd157e90bf17a6fe65 (1.93-260) +-Fix-Commit: 80cc58ea2de214f85b0a1d902a3b668ad2ecb302 (2.43) +-Fix-Commit: cbf39c26b25801e9bc88499b4fd361ac172d4125 (2.42-51) +-Fix-Commit: fb4db64a04ad6c96cd1fbb7e02eb59323b1f2ac2 (2.41-123) +-Fix-Commit: 9fe8576664d43b87ca19401fb6a975e217e47623 (2.40-218) +-Fix-Commit: ce65d944e38a20cb70af2a48a4b8aa5d8fabe1cc (2.39-288) +-Fix-Commit: d5409a1be010699794264162c551ba60f05ee6c3 (2.38-214) +-Fix-Commit: ff2b172803f6bbd897755d2ce83ec4323a1a15b3 (2.37-174) +-Fix-Commit: e97cfe2293ed097eb3d0b4c18274d22855e65130 (2.36-246) +-Fix-Commit: bb59339d02faebac534a87eea50c83c948f35b77 (2.35-401) +-Fix-Commit: 2b656ff94d72f93c84d8da2e7c76456c1994f02e (2.34-527) +-Fix-Commit: 1d8ed2067a8a5d162a07670d0d063429679f17a0 (2.33-277) +-Fix-Commit: 3a56c4ee4ea49b8f2391a2d8d6220013c4160a79 (2.32-153) +-Fix-Commit: 28eb5caf895ced5d895cb02757e109004a2d33e5 (2.31-167) +-Reported-by: Vitaly Simonovich diff --git a/advisories/README b/advisories/README deleted file mode 100644 index b8f8a829ca..0000000000 diff --git a/packages/glibc/0002-NEWS-add-new-section.patch b/packages/glibc/0002-NEWS-add-new-section-2.43.1.patch similarity index 50% rename from packages/glibc/0002-NEWS-add-new-section.patch rename to packages/glibc/0002-NEWS-add-new-section-2.43.1.patch index efda47b8a..513c673a3 100644 --- a/packages/glibc/0002-NEWS-add-new-section.patch +++ b/packages/glibc/0002-NEWS-add-new-section-2.43.1.patch @@ -1,30 +1,29 @@ -From 3ec4dd77f648da031bba4d3fa14825e057b5a40d Mon Sep 17 00:00:00 2001 +From 45b58d6bd185b8c6d0c5b2b906243c1ecbaaecab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= -Date: Mon, 28 Jul 2025 23:39:48 +0200 -Subject: [PATCH] NEWS: add new section +Date: Sat, 24 Jan 2026 02:32:06 +0100 +Subject: [PATCH] NEWS: add new section 2.43.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Andreas K. Hüttel --- - NEWS | 6 ++++++ - 1 file changed, 6 insertions(+) + NEWS | 5 +++++ + 1 file changed, 5 insertions(+) diff --git a/NEWS b/NEWS -index f0b0e924a4..9cb8de11f9 100644 +index e271fb2e4d..97ef63d561 100644 --- a/NEWS +++ b/NEWS -@@ -5,6 +5,12 @@ See the end for copying conditions. +@@ -4,6 +4,11 @@ See the end for copying conditions. + Please send GNU C library bug reports via using `glibc' in the "product" field. - -+Version 2.42.1 ++ ++Version 2.43.1 + -+The following bugs were resolved with this release: ++The following bugs are resolved with this release: + -+ [insert bugs here] -+ - Version 2.42 + + Version 2.43 - Major new features: diff --git a/packages/glibc/0003-Fix-ldbl-128ibm-ceill-floorl-roundl-and-truncl-zero-.patch b/packages/glibc/0003-Fix-ldbl-128ibm-ceill-floorl-roundl-and-truncl-zero-.patch new file mode 100644 index 000000000..cb922a65e --- /dev/null +++ b/packages/glibc/0003-Fix-ldbl-128ibm-ceill-floorl-roundl-and-truncl-zero-.patch @@ -0,0 +1,160 @@ +From 022abaeacbc85d8409bad22375b16a8c07d3ae39 Mon Sep 17 00:00:00 2001 +From: Aurelien Jarno +Date: Tue, 20 Jan 2026 18:25:08 +0100 +Subject: [PATCH] Fix ldbl-128ibm ceill, floorl, roundl and truncl zero-sign + handling + +When the result of ceill, floorl, roundl and truncl is zero, the sign of +the result must match the sign of the input. For the IBM 128-bit long +double format, the sign is determined by the high part. + +Ensure the correct sign when the high part is the result of +computations, by copying the sign from the input high part to the output +high part. On POWER, this conveniently maps to the fcpsgn instruction. + +In addition add test for the values provided in BZ #33623, and for the +opposite value when the result is 0. + +Fixes: BZ #33623 + +Reviewed-by: Adhemerval Zanella +(cherry picked from commit 6f4b28b20aa9161aeb42a7f34f4d3b96194e5666) +--- + NEWS | 2 ++ + math/libm-test-ceil.inc | 3 +++ + math/libm-test-floor.inc | 3 +++ + math/libm-test-round.inc | 4 ++++ + math/libm-test-trunc.inc | 4 ++++ + sysdeps/ieee754/ldbl-128ibm/s_ceill.c | 3 +++ + sysdeps/ieee754/ldbl-128ibm/s_floorl.c | 3 +++ + sysdeps/ieee754/ldbl-128ibm/s_roundl.c | 3 +++ + sysdeps/ieee754/ldbl-128ibm/s_truncl.c | 3 +++ + 9 files changed, 28 insertions(+) + +diff --git a/NEWS b/NEWS +index 97ef63d561..b9953e9888 100644 +--- a/NEWS ++++ b/NEWS +@@ -9,6 +9,8 @@ Version 2.43.1 + + The following bugs are resolved with this release: + ++ [33623] [ldbl-128ibm] roundl, ceill, truncl, floorl bad sign of zero ++ results + + Version 2.43 + +diff --git a/math/libm-test-ceil.inc b/math/libm-test-ceil.inc +index a471b43932..48be68cf91 100644 +--- a/math/libm-test-ceil.inc ++++ b/math/libm-test-ceil.inc +@@ -79,6 +79,9 @@ static const struct test_f_f_data ceil_test_data[] = + TEST_f_f (ceil, -max_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), + + #if MANT_DIG >= 64 ++ /* The input value can only be represented in long double. */ ++ TEST_f_f (ceil, -0x0.ffffffffffffffffp0L, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), ++ + /* The result can only be represented in long double. */ + TEST_f_f (ceil, 4503599627370495.5L, 4503599627370496.0L, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), + TEST_f_f (ceil, 4503599627370496.25L, 4503599627370497.0L, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), +diff --git a/math/libm-test-floor.inc b/math/libm-test-floor.inc +index dee4afff7a..bc945a6c22 100644 +--- a/math/libm-test-floor.inc ++++ b/math/libm-test-floor.inc +@@ -79,6 +79,9 @@ static const struct test_f_f_data floor_test_data[] = + TEST_f_f (floor, -max_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), + + #if MANT_DIG >= 64 ++ /* The input value can only be represented in long double. */ ++ TEST_f_f (floor, 0x0.ffffffffffffffffp0L, plus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), ++ + /* The result can only be represented in long double. */ + TEST_f_f (floor, 4503599627370495.5L, 4503599627370495.0L, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), + TEST_f_f (floor, 4503599627370496.25L, 4503599627370496.0L, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), +diff --git a/math/libm-test-round.inc b/math/libm-test-round.inc +index 898ff3791b..1395c51d5d 100644 +--- a/math/libm-test-round.inc ++++ b/math/libm-test-round.inc +@@ -99,6 +99,10 @@ static const struct test_f_f_data round_test_data[] = + #endif + + #if MANT_DIG >= 64 ++ /* The input value can only be represented in long double. */ ++ TEST_f_f (round, 0x0.ffffffffffffffffp-1L, plus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), ++ TEST_f_f (round, -0x0.ffffffffffffffffp-1L, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), ++ + /* The result can only be represented in long double. */ + TEST_f_f (round, 4503599627370495.5L, 4503599627370496.0L, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), + TEST_f_f (round, 4503599627370496.25L, 4503599627370496.0L, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), +diff --git a/math/libm-test-trunc.inc b/math/libm-test-trunc.inc +index 7df741f3ba..5d69cd4b5b 100644 +--- a/math/libm-test-trunc.inc ++++ b/math/libm-test-trunc.inc +@@ -91,6 +91,10 @@ static const struct test_f_f_data trunc_test_data[] = + TEST_f_f (trunc, -4294967296.625L, -4294967296.0L, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), + + #if MANT_DIG >= 64 ++ /* The input value can only be represented in long double. */ ++ TEST_f_f (trunc, 0x0.ffffffffffffffffp0L, plus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), ++ TEST_f_f (trunc, -0x0.ffffffffffffffffp0L, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), ++ + /* The result can only be represented in long double. */ + TEST_f_f (trunc, 4503599627370495.5L, 4503599627370495.0L, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), + TEST_f_f (trunc, 4503599627370496.25L, 4503599627370496.0L, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), +diff --git a/sysdeps/ieee754/ldbl-128ibm/s_ceill.c b/sysdeps/ieee754/ldbl-128ibm/s_ceill.c +index 8038cf9fda..88bc364db5 100644 +--- a/sysdeps/ieee754/ldbl-128ibm/s_ceill.c ++++ b/sysdeps/ieee754/ldbl-128ibm/s_ceill.c +@@ -54,6 +54,9 @@ __ceill (long double x) + xh = hi; + xl = lo; + ldbl_canonicalize_int (&xh, &xl); ++ ++ /* Ensure we return -0 rather than +0 when appropriate. */ ++ xh = copysign (xh, hi); + } + } + else +diff --git a/sysdeps/ieee754/ldbl-128ibm/s_floorl.c b/sysdeps/ieee754/ldbl-128ibm/s_floorl.c +index 23f45b773f..4a8294cc78 100644 +--- a/sysdeps/ieee754/ldbl-128ibm/s_floorl.c ++++ b/sysdeps/ieee754/ldbl-128ibm/s_floorl.c +@@ -54,6 +54,9 @@ __floorl (long double x) + xh = hi; + xl = lo; + ldbl_canonicalize_int (&xh, &xl); ++ ++ /* Ensure we return -0 rather than +0 when appropriate. */ ++ xh = copysign (xh, hi); + } + } + else +diff --git a/sysdeps/ieee754/ldbl-128ibm/s_roundl.c b/sysdeps/ieee754/ldbl-128ibm/s_roundl.c +index e8948a0c05..340a63c76a 100644 +--- a/sysdeps/ieee754/ldbl-128ibm/s_roundl.c ++++ b/sysdeps/ieee754/ldbl-128ibm/s_roundl.c +@@ -80,6 +80,9 @@ __roundl (long double x) + xh = hi; + ldbl_canonicalize_int (&xh, &xl); + } ++ ++ /* Ensure we return -0 rather than +0 when appropriate. */ ++ xh = copysign(xh, hi); + } + else + /* Quiet signaling NaN arguments. */ +diff --git a/sysdeps/ieee754/ldbl-128ibm/s_truncl.c b/sysdeps/ieee754/ldbl-128ibm/s_truncl.c +index 7f0b77cd3f..21ecbd0c85 100644 +--- a/sysdeps/ieee754/ldbl-128ibm/s_truncl.c ++++ b/sysdeps/ieee754/ldbl-128ibm/s_truncl.c +@@ -56,6 +56,9 @@ __truncl (long double x) + xh = hi; + xl = lo; + ldbl_canonicalize_int (&xh, &xl); ++ ++ /* Ensure we return -0 rather than +0 when appropriate. */ ++ xh = copysign (xh, hi); + } + } + else diff --git a/packages/glibc/0003-inet-fortified-fix-namespace-violation-bug-33227.patch b/packages/glibc/0003-inet-fortified-fix-namespace-violation-bug-33227.patch deleted file mode 100644 index bbbb48810..000000000 --- a/packages/glibc/0003-inet-fortified-fix-namespace-violation-bug-33227.patch +++ /dev/null @@ -1,37 +0,0 @@ -From bc13db73937730401d592b33092db6df806d193e Mon Sep 17 00:00:00 2001 -From: Sam James -Date: Mon, 28 Jul 2025 21:55:30 +0100 -Subject: [PATCH] inet-fortified: fix namespace violation (bug 33227) - -We need to use __sz, not sz, as we do elsewhere. - -Reviewed-by: Florian Weimer -(cherry picked from commit 87afbd7a1ad9c1dd116921817fa97198171045db) ---- - inet/bits/inet-fortified.h | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/inet/bits/inet-fortified.h b/inet/bits/inet-fortified.h -index 6738221a54..cc476ebcfd 100644 ---- a/inet/bits/inet-fortified.h -+++ b/inet/bits/inet-fortified.h -@@ -45,15 +45,15 @@ __NTH (inet_pton (int __af, - __fortify_clang_warning_only_if_bos0_lt - (4, __dst, "inet_pton called with destination buffer size less than 4") - { -- size_t sz = 0; -+ size_t __sz = 0; - if (__af == AF_INET) -- sz = sizeof (struct in_addr); -+ __sz = sizeof (struct in_addr); - else if (__af == AF_INET6) -- sz = sizeof (struct in6_addr); -+ __sz = sizeof (struct in6_addr); - else - return __inet_pton_alias (__af, __src, __dst); - -- return __glibc_fortify (inet_pton, sz, sizeof (char), -+ return __glibc_fortify (inet_pton, __sz, sizeof (char), - __glibc_objsize (__dst), - __af, __src, __dst); - }; diff --git a/packages/glibc/0004-po-Incorporate-translatins-nl-updated-ar-new.patch b/packages/glibc/0004-po-Incorporate-translatins-nl-updated-ar-new.patch new file mode 100644 index 000000000..59349c631 --- /dev/null +++ b/packages/glibc/0004-po-Incorporate-translatins-nl-updated-ar-new.patch @@ -0,0 +1,7340 @@ +From 144ba302089cff5a2f2e1c9e1280faea9da9f8cc Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= +Date: Mon, 26 Jan 2026 01:29:30 +0100 +Subject: [PATCH] po: Incorporate translatins (nl updated, ar new) +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Andreas K. Hüttel +(cherry picked from commit bad2da7f779dbabb0e2e2c73037489e9f161183e) +--- + po/ar.po | 7168 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + po/nl.po | 71 +- + 2 files changed, 7232 insertions(+), 7 deletions(-) + create mode 100644 po/ar.po + +diff --git a/po/ar.po b/po/ar.po +new file mode 100644 +index 0000000000..ba596d51b9 +--- /dev/null ++++ b/po/ar.po +@@ -0,0 +1,7168 @@ ++# Arabic translation for GNU libc. ++# Copyright (C) 2026 Free Software Foundation, Inc. ++# This file is distributed under the same license as the glibc package. ++# Zayed Al-Saidi , 2026. ++msgid "" ++msgstr "" ++"Project-Id-Version: libc 2.42.9000\n" ++"POT-Creation-Date: 2026-01-19 16:22+0100\n" ++"PO-Revision-Date: 2026-01-24 13:53+0400\n" ++"Last-Translator: Zayed Al-Saidi \n" ++"Language-Team: Arabic <(nothing)>\n" ++"Language: ar\n" ++"MIME-Version: 1.0\n" ++"Content-Type: text/plain; charset=UTF-8\n" ++"Content-Transfer-Encoding: 8bit\n" ++"X-Bugs: Report translation errors to the Language-Team address.\n" ++"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100 >= 3 && n%100<=10 ? 3 : n%100 >= 11 && n%100<=99 ? 4 : 5;\n" ++"X-Generator: Lokalize 23.08.5\n" ++ ++#: argp/argp-help.c:229 ++#, c-format ++msgid "%.*s: ARGP_HELP_FMT parameter requires a value" ++msgstr "%.*s: معامل ARGP_HELP_FMT يتطلب قيمة" ++ ++#: argp/argp-help.c:239 ++#, c-format ++msgid "%.*s: Unknown ARGP_HELP_FMT parameter" ++msgstr "%.*s: معامل ARGP_HELP_FMT غير معروف" ++ ++#: argp/argp-help.c:252 ++#, c-format ++msgid "Garbage in ARGP_HELP_FMT: %s" ++msgstr "بيانات تالفة في ARGP_HELP_FMT: %s" ++ ++#: argp/argp-help.c:1350 ++msgid "Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options." ++msgstr "الوسائط الإلزامية أو الاختيارية للخيارات الطويلة هي أيضاً إلزامية أو اختيارية لأي خيارات قصيرة مقابلة لها." ++ ++#: argp/argp-help.c:1713 ++msgid "Usage:" ++msgstr "الاستخدام:" ++ ++#: argp/argp-help.c:1717 ++msgid " or: " ++msgstr " أو: " ++ ++#: argp/argp-help.c:1729 ++msgid " [OPTION...]" ++msgstr " [خيار...]" ++ ++#: argp/argp-help.c:1756 ++#, c-format ++msgid "Try `%s --help' or `%s --usage' for more information.\n" ++msgstr "جرب `%s --help' أو `%s --usage' لمزيد من المعلومات.\n" ++ ++#: argp/argp-help.c:1784 ++#, c-format ++msgid "Report bugs to %s.\n" ++msgstr "أبلغ عن العلل إلى %s.\n" ++ ++#: argp/argp-parse.c:86 ++msgid "Give this help list" ++msgstr "أعطِ قائمة المساعدة هذه" ++ ++#: argp/argp-parse.c:87 ++msgid "Give a short usage message" ++msgstr "أعطِ رسالة استخدام قصيرة" ++ ++#: argp/argp-parse.c:88 catgets/gencat.c:111 catgets/gencat.c:115 ++#: iconv/iconv_prog.c:61 iconv/iconv_prog.c:62 nscd/nscd.c:106 nscd/nscd.c:110 ++#: nss/makedb.c:122 ++msgid "NAME" ++msgstr "الاسم" ++ ++#: argp/argp-parse.c:89 ++msgid "Set the program name" ++msgstr "اضبط اسم البرنامج" ++ ++#: argp/argp-parse.c:90 ++msgid "SECS" ++msgstr "ثواني" ++ ++#: argp/argp-parse.c:91 ++msgid "Hang for SECS seconds (default 3600)" ++msgstr "تعليق لثوانٍ قدرها (مبدئي 3600)" ++ ++#: argp/argp-parse.c:152 ++msgid "Print program version" ++msgstr "اطبع إصدار البرنامج" ++ ++#: argp/argp-parse.c:168 ++msgid "(PROGRAM ERROR) No version known!?" ++msgstr "(خطأ في البرنامج) لا يوجد إصدار معروف!؟" ++ ++#: argp/argp-parse.c:608 ++#, c-format ++msgid "%s: Too many arguments\n" ++msgstr "%s: وسائط كثيرة جداً\n" ++ ++#: argp/argp-parse.c:754 ++msgid "(PROGRAM ERROR) Option should have been recognized!?" ++msgstr "(خطأ في البرنامج) كان ينبغي التعرف على الخيار!؟" ++ ++#: assert/assert-perr.c:45 ++#, c-format ++msgid "%s%s%s:%s: %s%sUnexpected error: %s.\n" ++msgstr "%s%s%s:%s: %s%sخطأ غير متوقع: %s.\n" ++ ++#: assert/assert.c:37 ++#, c-format ++msgid "%s%s%s:%s: %s%sAssertion `%s' failed.\n" ++msgstr "%s%s%s:%s: %s%sفشل التوكيد `%s'.\n" ++ ++#: catgets/gencat.c:112 ++msgid "Create C header file NAME containing symbol definitions" ++msgstr "أنشئ ملف ترويسة C بالاسم NAME يحتوي على تعريفات الرموز" ++ ++#: catgets/gencat.c:114 ++msgid "Do not use existing catalog, force new output file" ++msgstr "لا تستخدم الفهرس الحالي، وافرض ملف إخراج جديد" ++ ++#: catgets/gencat.c:115 nss/makedb.c:122 ++msgid "Write output to file NAME" ++msgstr "اكتب المخرجات إلى ملف بالاسم NAME" ++ ++#: catgets/gencat.c:120 ++msgid "" ++"Generate message catalog.\vIf INPUT-FILE is -, input is read from standard input. If OUTPUT-FILE\n" ++"is -, output is written to standard output.\n" ++msgstr "" ++"توليد فهرس الرسائل.\vإذا كان INPUT-FILE هو -، تقرأ المدخلات من الدخل القياسي. إذا كان OUTPUT-FILE\n" ++"هو -، تكتب المخرجات إلى الخرج القياسي.\n" ++ ++#: catgets/gencat.c:125 ++msgid "" ++"-o OUTPUT-FILE [INPUT-FILE]...\n" ++"[OUTPUT-FILE [INPUT-FILE]...]" ++msgstr "" ++"-o OUTPUT-FILE [INPUT-FILE]...\n" ++"[OUTPUT-FILE [INPUT-FILE]...]" ++ ++#: catgets/gencat.c:231 debug/pcprofiledump.c:219 elf/ldconfig.c:216 ++#: elf/pldd.c:246 elf/sln.c:77 elf/sprof.c:372 iconv/iconv_prog.c:374 ++#: iconv/iconvconfig.c:380 locale/programs/locale.c:275 ++#: locale/programs/localedef.c:437 login/programs/pt_chown.c:88 ++#: malloc/memusagestat.c:564 nss/getent.c:961 nss/makedb.c:371 ++#: posix/getconf.c:551 ++#, c-format ++msgid "" ++"For bug reporting instructions, please see:\n" ++"%s.\n" ++msgstr "" ++"لإرشادات الإبلاغ عن العلل، يرجى مراجعة:\n" ++"%s.\n" ++ ++#: catgets/gencat.c:247 debug/pcprofiledump.c:235 debug/xtrace.sh:63 ++#: elf/ldconfig.c:232 elf/ldd.bash.in:39 elf/pldd.c:262 elf/sotruss.sh:75 ++#: elf/sprof.c:389 iconv/iconv_prog.c:391 iconv/iconvconfig.c:397 ++#: locale/programs/locale.c:292 locale/programs/localedef.c:459 ++#: login/programs/pt_chown.c:62 malloc/memusage.sh:70 malloc/memusagestat.c:582 ++#: nscd/nscd.c:521 nss/getent.c:92 nss/makedb.c:387 posix/getconf.c:533 ++#, c-format ++msgid "" ++"Copyright (C) %s Free Software Foundation, Inc.\n" ++"This is free software; see the source for copying conditions. There is NO\n" ++"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" ++msgstr "" ++"حقوق النشر (ج) %s مؤسسة البرمجيات الحرة، المحدودة.\n" ++"هذا برنامج حر؛ انظر المصدر لشروط النسخ. لا يوجد أي\n" ++"ضمان؛ ولا حتى لغرض التسويق أو الملاءمة لغرض معين.\n" ++ ++#: catgets/gencat.c:252 debug/pcprofiledump.c:240 debug/xtrace.sh:67 ++#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:395 iconv/iconv_prog.c:396 ++#: iconv/iconvconfig.c:402 locale/programs/locale.c:297 ++#: locale/programs/localedef.c:464 malloc/memusage.sh:74 ++#: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 ++#: posix/getconf.c:538 ++#, c-format ++msgid "Written by %s.\n" ++msgstr "كتبه %s.\n" ++ ++#: catgets/gencat.c:283 ++msgid "*standard input*" ++msgstr "*الدخل القياسي*" ++ ++#: catgets/gencat.c:289 iconv/iconv_charmap.c:172 iconv/iconv_prog.c:279 ++#: iconv/iconv_prog.c:432 nss/makedb.c:248 ++#, c-format ++msgid "cannot open input file `%s'" ++msgstr "يتعذر فتح ملف المدخلات `%s'" ++ ++#: catgets/gencat.c:418 catgets/gencat.c:493 ++msgid "illegal set number" ++msgstr "رقم مجموعة غير قانوني" ++ ++#: catgets/gencat.c:445 ++msgid "duplicate set definition" ++msgstr "تعريف مجموعة مكرر" ++ ++#: catgets/gencat.c:447 catgets/gencat.c:619 catgets/gencat.c:671 ++msgid "this is the first definition" ++msgstr "هذا هو التعريف الأول" ++ ++#: catgets/gencat.c:518 ++#, c-format ++msgid "unknown set `%s'" ++msgstr "مجموعة غير معروفة `%s'" ++ ++#: catgets/gencat.c:559 ++msgid "invalid quote character" ++msgstr "محرف اقتباس غير صالح" ++ ++#: catgets/gencat.c:572 ++#, c-format ++msgid "unknown directive `%s': line ignored" ++msgstr "توجيه غير معروف `%s': تم تجاهل السطر" ++ ++#: catgets/gencat.c:617 ++msgid "duplicated message number" ++msgstr "رقم رسالة مكرر" ++ ++#: catgets/gencat.c:668 ++msgid "duplicated message identifier" ++msgstr "معرّف رسالة مكرر" ++ ++#: catgets/gencat.c:725 ++msgid "invalid character: message ignored" ++msgstr "محرف غير صالح: تم تجاهل الرسالة" ++ ++#: catgets/gencat.c:768 ++msgid "invalid line" ++msgstr "سطر غير صالح" ++ ++#: catgets/gencat.c:822 ++msgid "malformed line ignored" ++msgstr "تجاهل سطر مشوه" ++ ++#: catgets/gencat.c:940 catgets/gencat.c:948 ++#, c-format ++msgid "cannot allocate memory" ++msgstr "يتعذر تخصيص الذاكرة" ++ ++#: catgets/gencat.c:1001 catgets/gencat.c:1046 ++#, c-format ++msgid "cannot open output file `%s'" ++msgstr "يتعذر فتح ملف المخرجات `%s'" ++ ++#: catgets/gencat.c:1211 locale/programs/linereader.c:588 ++msgid "invalid escape sequence" ++msgstr "تسلسل هروب غير صالح" ++ ++#: catgets/gencat.c:1235 ++msgid "unterminated message" ++msgstr "رسالة غير منتهية" ++ ++#: catgets/gencat.c:1259 ++#, c-format ++msgid "while opening old catalog file" ++msgstr "أثناء فتح ملف فهرس قديم" ++ ++#: catgets/gencat.c:1350 ++#, c-format ++msgid "conversion modules not available" ++msgstr "وحدات التحويل غير متوفرة" ++ ++#: catgets/gencat.c:1376 ++#, c-format ++msgid "cannot determine escape character" ++msgstr "يتعذر تحديد محرف الهروب" ++ ++#: debug/pcprofiledump.c:52 ++msgid "Don't buffer output" ++msgstr "لا تخزن المخرجات مؤقتاً" ++ ++#: debug/pcprofiledump.c:57 ++msgid "Dump information generated by PC profiling." ++msgstr "تفريغ المعلومات المولدة بواسطة تشكيلة الحاسوب الشخصي." ++ ++#: debug/pcprofiledump.c:60 ++msgid "[FILE]" ++msgstr "[ملف]" ++ ++#: debug/pcprofiledump.c:97 ++#, c-format ++msgid "cannot read header" ++msgstr "يتعذر قراءة الترويسة" ++ ++#: debug/pcprofiledump.c:99 ++#, c-format ++msgid "cannot read pointer pair" ++msgstr "يتعذر قراءة زوج المؤشر" ++ ++#: debug/pcprofiledump.c:107 ++#, c-format ++msgid "unexpected end of file in header" ++msgstr "نهاية ملف غير متوقعة في الترويسة" ++ ++#: debug/pcprofiledump.c:110 ++#, c-format ++msgid "unexpected end of file in pointer pair" ++msgstr "نهاية ملف غير متوقعة في زوج المؤشر" ++ ++#: debug/pcprofiledump.c:145 ++#, c-format ++msgid "cannot open input file" ++msgstr "يتعذر فتح ملف المدخلات" ++ ++#: debug/pcprofiledump.c:189 ++#, c-format ++msgid "invalid pointer size" ++msgstr "حجم مؤشر غير صالح" ++ ++#: debug/xtrace.sh:25 debug/xtrace.sh:43 ++msgid "Usage: xtrace [OPTION]... PROGRAM [PROGRAMOPTION]...\\n" ++msgstr "الاستخدام: xtrace [خيار]... البرنامج [خيارات-البرنامج]...\\n" ++ ++#: debug/xtrace.sh:31 elf/sotruss.sh:56 elf/sotruss.sh:67 elf/sotruss.sh:135 ++#: malloc/memusage.sh:25 ++msgid "Try \\`%s --help' or \\`%s --usage' for more information.\\n" ++msgstr "جرب \\`%s --help' أو \\`%s --usage' لمزيد من المعلومات.\\n" ++ ++#: debug/xtrace.sh:37 ++msgid "%s: option '%s' requires an argument.\\n" ++msgstr "%s: الخيار '%s' يتطلب وسيطاً.\\n" ++ ++#: debug/xtrace.sh:44 ++msgid "" ++"Trace execution of program by printing currently executed function.\n" ++"\n" ++" --data=FILE Don't run the program, just print the data from FILE.\n" ++"\n" ++" -?,--help Print this help and exit\n" ++" --usage Give a short usage message\n" ++" -V,--version Print version information and exit\n" ++"\n" ++"Mandatory arguments to long options are also mandatory for any corresponding\n" ++"short options.\n" ++"\n" ++msgstr "" ++"تتبع تنفيذ البرنامج عن طريق طباعة الوظيفة المنفذة حالياً.\n" ++"\n" ++" --data=FILE لا تشغل البرنامج، فقط اطبع البيانات من FILE.\n" ++"\n" ++" -?,--help اطبع هذه المساعدة واخرج\n" ++" --usage أعطِ رسالة استخدام قصيرة\n" ++" -V,--version اطبع معلومات الإصدار واخرج\n" ++"\n" ++"الوسائط الإلزامية للخيارات الطويلة هي أيضاً إلزامية لأي خيارات\n" ++"قصيرة مقابلة.\n" ++"\n" ++ ++#: debug/xtrace.sh:56 elf/ldd.bash.in:56 elf/sotruss.sh:49 ++#: malloc/memusage.sh:63 ++msgid "For bug reporting instructions, please see:\\\\n%s.\\\\n" ++msgstr "لإرشادات الإبلاغ عن العلل، يرجى مراجعة:\\\\n%s.\\\\n" ++ ++#: debug/xtrace.sh:124 ++msgid "xtrace: unrecognized option \\`$1'\\n" ++msgstr "xtrace: خيار غير معروف \\`$1'\\n" ++ ++#: debug/xtrace.sh:137 ++msgid "No program name given\\n" ++msgstr "لم يتم إعطاء اسم برنامج\\n" ++ ++#: debug/xtrace.sh:145 ++#, sh-format ++msgid "executable \\`$program' not found\\n" ++msgstr "الملف التنفيذي \\`$program' غير موجود\\n" ++ ++#: debug/xtrace.sh:149 ++#, sh-format ++msgid "\\`$program' is no executable\\n" ++msgstr "\\`$program' ليس ملفاً تنفيذياً\\n" ++ ++#: dlfcn/dlinfo.c:48 ++msgid "unsupported dlinfo request" ++msgstr "طلب dlinfo غير مدعوم" ++ ++#: dlfcn/dlmopen.c:53 ++msgid "invalid namespace" ++msgstr "نطاق تسمية غير صالح" ++ ++#: dlfcn/dlmopen.c:58 ++msgid "invalid mode" ++msgstr "نمط غير صالح" ++ ++#: dlfcn/dlopen.c:54 ++msgid "invalid mode parameter" ++msgstr "معامل نمط غير صالح" ++ ++#: elf/cache.c:174 ++msgid "unknown or unsupported flag" ++msgstr "علم غير معروف أو غير مدعوم" ++ ++#: elf/cache.c:273 ++#, c-format ++msgid "Cache file has wrong endianness.\n" ++msgstr "ملف الخبيئة يحتوي على ترتيب بايتات (endianness) خاطئ.\n" ++ ++#: elf/cache.c:282 ++msgid "Cache generated by: " ++msgstr "خبيئة ولدت بواسطة: " ++ ++#: elf/cache.c:296 elf/ldconfig.c:1238 ++#, c-format ++msgid "Can't open cache file %s\n" ++msgstr "يتعذر فتح ملف الخبيئة %s\n" ++ ++#: elf/cache.c:310 ++#, c-format ++msgid "mmap of cache file failed.\n" ++msgstr "فشل mmap لملف الخبيئة.\n" ++ ++#: elf/cache.c:314 elf/cache.c:328 elf/cache.c:339 ++#, c-format ++msgid "File is not a cache file.\n" ++msgstr "الملف ليس ملف خبيئة.\n" ++ ++#: elf/cache.c:368 elf/cache.c:383 ++#, c-format ++msgid "%d libs found in cache `%s'\n" ++msgstr "عثر على %d من المكتبات في الخبيئة `%s'\n" ++ ++#: elf/cache.c:381 ++#, c-format ++msgid "Malformed extension data in cache file %s\n" ++msgstr "بيانات ملحق مشوهة في ملف الخبيئة %s\n" ++ ++#: elf/cache.c:510 ++#, c-format ++msgid "Writing of cache extension data failed" ++msgstr "فشلت كتابة بيانات ملحق الخبيئة" ++ ++#: elf/cache.c:521 ++#, c-format ++msgid "%s: ISA level is too high (%d > %d)" ++msgstr "%s: مستوى ISA مرتفع جداً (%d > %d)" ++ ++#: elf/cache.c:685 ++#, c-format ++msgid "Can't create temporary cache file %s" ++msgstr "يتعذر إنشاء ملف خبيئة مؤقت %s" ++ ++#: elf/cache.c:693 elf/cache.c:703 elf/cache.c:707 elf/cache.c:712 ++#: elf/cache.c:731 ++#, c-format ++msgid "Writing of cache data failed" ++msgstr "فشلت كتابة بيانات الخبيئة" ++ ++#: elf/cache.c:726 ++#, c-format ++msgid "Changing access rights of %s to %#o failed" ++msgstr "فشل تغيير حقوق الوصول لـ %s إلى %#o" ++ ++#: elf/cache.c:735 ++#, c-format ++msgid "Renaming of %s to %s failed" ++msgstr "فشل تغيير اسم %s إلى %s" ++ ++#: elf/cache.c:765 ++#, c-format ++msgid "Could not create library path" ++msgstr "يتعذر إنشاء مسار المكتبة" ++ ++#: elf/dl-catch.c:85 ++msgid "error while loading shared libraries" ++msgstr "خطأ أثناء تحميل المكتبات المشتركة" ++ ++#: elf/dl-catch.c:118 ++msgid "DYNAMIC LINKER BUG!!!" ++msgstr "علة في الرابط الديناميكي!!!" ++ ++#: elf/dl-close.c:363 elf/dl-open.c:297 ++msgid "cannot create scope list" ++msgstr "يتعذر إنشاء قائمة النطاق" ++ ++#: elf/dl-close.c:790 ++msgid "shared object not open" ++msgstr "الكائن المشترك غير مفتوح" ++ ++#: elf/dl-deps.c:96 ++msgid "DST not allowed in SUID/SGID programs" ++msgstr "DST غير مسموح به في برامج SUID/SGID" ++ ++#: elf/dl-deps.c:109 ++msgid "empty dynamic string token substitution" ++msgstr "استبدال فارغ لرمز السلسلة الديناميكية" ++ ++#: elf/dl-deps.c:115 ++#, c-format ++msgid "cannot load auxiliary `%s' because of empty dynamic string token substitution\n" ++msgstr "يتعذر تحميل المساعد `%s' بسبب استبدال فارغ لرمز السلسلة الديناميكية\n" ++ ++#: elf/dl-deps.c:204 ++msgid "cannot allocate dependency buffer" ++msgstr "يتعذر تخصيص مخزن التبعية المؤقت" ++ ++#: elf/dl-deps.c:427 ++msgid "cannot allocate dependency list" ++msgstr "يتعذر تخصيص قائمة التبعيات" ++ ++#: elf/dl-deps.c:467 ++msgid "cannot allocate symbol search list" ++msgstr "يتعذر تخصيص قائمة البحث عن الرموز" ++ ++#: elf/dl-hwcaps.c:103 ++msgid "cannot create HWCAP priorities" ++msgstr "يتعذر إنشاء أولويات HWCAP" ++ ++#: elf/dl-hwcaps.c:195 ++msgid "cannot create capability list" ++msgstr "يتعذر إنشاء قائمة القدرات" ++ ++#: elf/dl-load.c:424 ++msgid "cannot allocate name record" ++msgstr "يتعذر تخصيص سجل الاسم" ++ ++#: elf/dl-load.c:510 elf/dl-load.c:623 elf/dl-load.c:717 elf/dl-load.c:814 ++msgid "cannot create cache for search path" ++msgstr "يتعذر إنشاء خبيئة لمسار البحث" ++ ++#: elf/dl-load.c:606 ++msgid "cannot create RUNPATH/RPATH copy" ++msgstr "يتعذر إنشاء نسخة RUNPATH/RPATH" ++ ++#: elf/dl-load.c:703 ++msgid "cannot create search path array" ++msgstr "يتعذر إنشاء مصفوفة مسار البحث" ++ ++#: elf/dl-load.c:978 ++msgid "cannot stat shared object" ++msgstr "يتعذر جلب معلومات (stat) الكائن المشترك" ++ ++#: elf/dl-load.c:1071 elf/dl-load.c:2160 ++msgid "cannot create shared object descriptor" ++msgstr "يتعذر إنشاء واصف الكائن المشترك" ++ ++#: elf/dl-load.c:1090 elf/dl-load.c:1594 elf/dl-load.c:1704 ++msgid "cannot read file data" ++msgstr "يتعذر قراءة بيانات الملف" ++ ++#: elf/dl-load.c:1143 elf/dl-map-segments.h:118 ++msgid "ELF load command address/offset not page-aligned" ++msgstr "عنوان/إزاحة أمر تحميل ELF غير متحاذٍ مع الصفحة" ++ ++#: elf/dl-load.c:1224 ++msgid "object file has no loadable segments" ++msgstr "ملف الكائن لا يحتوي على مقاطع قابلة للتحميل" ++ ++#: elf/dl-load.c:1241 ++msgid "cannot dynamically load executable" ++msgstr "يتعذر تحميل الملف التنفيذي ديناميكياً" ++ ++#: elf/dl-load.c:1248 ++msgid "object file has no dynamic section" ++msgstr "ملف الكائن لا يحتوي على قسم ديناميكي" ++ ++#: elf/dl-load.c:1283 ++msgid "cannot dynamically load position-independent executable" ++msgstr "يتعذر تحميل ملف تنفيذي مستقل عن الموقع ديناميكياً" ++ ++#: elf/dl-load.c:1285 ++msgid "shared object cannot be dlopen()ed" ++msgstr "لا يمكن عمل dlopen() للكائن المشترك" ++ ++#: elf/dl-load.c:1298 ++msgid "cannot allocate memory for program header" ++msgstr "يتعذر تخصيص ذاكرة لترویسة البرنامج" ++ ++#: elf/dl-load.c:1323 ++msgid "cannot enable executable stack as shared object requires" ++msgstr "يتعذر تمكين مكدس قابل للتنفيذ كما يتطلب الكائن المشترك" ++ ++#: elf/dl-load.c:1351 ++msgid "cannot close file descriptor" ++msgstr "يتعذر إغلاق واصف الملف" ++ ++#: elf/dl-load.c:1594 ++msgid "file too short" ++msgstr "الملف قصير جداً" ++ ++#: elf/dl-load.c:1628 ++msgid "invalid ELF header" ++msgstr "ترويسة ELF غير صالحة" ++ ++#: elf/dl-load.c:1645 ++msgid "ELF file data encoding not big-endian" ++msgstr "ترميز بيانات ملف ELF ليس big-endian" ++ ++#: elf/dl-load.c:1647 ++msgid "ELF file data encoding not little-endian" ++msgstr "ترميز بيانات ملف ELF ليس little-endian" ++ ++#: elf/dl-load.c:1651 ++msgid "ELF file version ident does not match current one" ++msgstr "معرف إصدار ملف ELF لا يطابق الحالي" ++ ++#: elf/dl-load.c:1655 ++msgid "ELF file OS ABI invalid" ++msgstr "واجهة OS ABI لملف ELF غير صالحة" ++ ++#: elf/dl-load.c:1658 ++msgid "ELF file ABI version invalid" ++msgstr "إصدار ABI لملف ELF غير صالح" ++ ++#: elf/dl-load.c:1661 ++msgid "nonzero padding in e_ident" ++msgstr "حشو غير صفري في e_ident" ++ ++#: elf/dl-load.c:1664 ++msgid "internal error" ++msgstr "خطأ داخلي" ++ ++#: elf/dl-load.c:1671 ++msgid "ELF file version does not match current one" ++msgstr "إصدار ملف ELF لا يطابق الحالي" ++ ++#: elf/dl-load.c:1685 ++msgid "only ET_DYN and ET_EXEC can be loaded" ++msgstr "يمكن تحميل ET_DYN و ET_EXEC فقط" ++ ++#: elf/dl-load.c:1690 ++msgid "ELF file's phentsize not the expected size" ++msgstr "phentsize الخاص بملف ELF ليس بالحجم المتوقع" ++ ++#: elf/dl-load.c:2179 ++msgid "wrong ELF class: ELFCLASS64" ++msgstr "فئة ELF خاطئة: ELFCLASS64" ++ ++#: elf/dl-load.c:2180 ++msgid "wrong ELF class: ELFCLASS32" ++msgstr "فئة ELF خاطئة: ELFCLASS32" ++ ++#: elf/dl-load.c:2183 ++msgid "cannot open shared object file" ++msgstr "يتعذر فتح ملف الكائن المشترك" ++ ++#: elf/dl-load.h:126 ++msgid "failed to map segment from shared object" ++msgstr "فشل في تخطيط (map) مقطع من الكائن المشترك" ++ ++#: elf/dl-load.h:128 ++msgid "cannot change memory protections" ++msgstr "يتعذر تغيير حماية الذاكرة" ++ ++#: elf/dl-load.h:130 ++msgid "cannot map zero-fill pages" ++msgstr "يتعذر تخطيط صفحات مملوءة بالأصفار" ++ ++#: elf/dl-lookup.c:808 ++msgid "symbol lookup error" ++msgstr "خطأ في البحث عن الرمز" ++ ++#: elf/dl-open.c:83 ++msgid "cannot extend global scope" ++msgstr "يتعذر تمديد النطاق العام" ++ ++#: elf/dl-open.c:381 ++msgid "TLS generation counter wrapped! Please report this." ++msgstr "عداد توليد TLS التف! يرجى الإبلاغ عن هذا." ++ ++#: elf/dl-open.c:717 ++msgid "cannot allocate address lookup data" ++msgstr "يتعذر تخصيص بيانات البحث عن العنوان" ++ ++#: elf/dl-open.c:817 ++msgid "invalid mode for dlopen()" ++msgstr "نمط غير صالح لـ dlopen()" ++ ++#: elf/dl-open.c:834 ++msgid "no more namespaces available for dlmopen()" ++msgstr "لا تتوفر نطاقات تسمية إضافية لـ dlmopen()" ++ ++#: elf/dl-open.c:859 ++msgid "invalid target namespace in dlmopen()" ++msgstr "نطاق تسمية مستهدف غير صالح في dlmopen()" ++ ++#: elf/dl-reloc.c:140 ++msgid "cannot allocate memory in static TLS block" ++msgstr "يتعذر تخصيص ذاكرة في كتلة TLS الساكنة" ++ ++#: elf/dl-reloc.c:283 ++msgid "cannot make segment writable for relocation" ++msgstr "يتعذر جعل المقطع قابلاً للكتابة لإعادة التوطين" ++ ++#: elf/dl-reloc.c:313 ++#, c-format ++msgid "%s: out of memory to store relocation results for %s\n" ++msgstr "%s: نفدت الذاكرة لتخزين نتائج إعادة التوطين لـ %s\n" ++ ++#: elf/dl-reloc.c:328 ++msgid "cannot restore segment prot after reloc" ++msgstr "يتعذر استعادة حماية المقطع بعد إعادة التوطين" ++ ++#: elf/dl-reloc.c:366 ++msgid "cannot apply additional memory protection after relocation" ++msgstr "يتعذر تطبيق حماية إضافية للذاكرة بعد إعادة التوطين" ++ ++#: elf/dl-sym.c:138 ++msgid "RTLD_NEXT used in code not dynamically loaded" ++msgstr "استخدم RTLD_NEXT في كود لم يتم تحميله ديناميكياً" ++ ++#: elf/dl-tls.c:1217 ++msgid "cannot create TLS data structures" ++msgstr "يتعذر إنشاء هياكل بيانات TLS" ++ ++#: elf/dl-version.c:147 ++msgid "version lookup error" ++msgstr "خطأ في البحث عن الإصدار" ++ ++#: elf/dl-version.c:285 ++msgid "cannot allocate version reference table" ++msgstr "يتعذر تخصيص جدول مرجعي للإصدار" ++ ++#: elf/dl-version.c:387 ++msgid "DT_RELR without GLIBC_ABI_DT_RELR dependency" ++msgstr "DT_RELR بدون تبعية GLIBC_ABI_DT_RELR" ++ ++#: elf/ldconfig.c:124 ++msgid "Print cache" ++msgstr "اطبع الخبيئة" ++ ++#: elf/ldconfig.c:125 ++msgid "Generate verbose messages" ++msgstr "توليد رسائل مفصلة" ++ ++#: elf/ldconfig.c:126 ++msgid "Don't build cache" ++msgstr "لا تبنِ الخبيئة" ++ ++#: elf/ldconfig.c:127 ++msgid "Don't update symbolic links" ++msgstr "لا تحدث الروابط الرمزية" ++ ++#: elf/ldconfig.c:128 ++msgid "Change to and use ROOT as root directory" ++msgstr "تغيير واستخدام ROOT كدليل جذري" ++ ++#: elf/ldconfig.c:128 ++msgid "ROOT" ++msgstr "ROOT" ++ ++#: elf/ldconfig.c:129 ++msgid "CACHE" ++msgstr "الخبيئة" ++ ++#: elf/ldconfig.c:129 ++msgid "Use CACHE as cache file" ++msgstr "استخدم CACHE كملف خبيئة" ++ ++#: elf/ldconfig.c:130 ++msgid "CONF" ++msgstr "CONF" ++ ++#: elf/ldconfig.c:130 ++msgid "Use CONF as configuration file" ++msgstr "استخدم CONF كملف ضبط" ++ ++#: elf/ldconfig.c:131 ++msgid "Only process directories specified on the command line. Don't build cache." ++msgstr "معالجة الأدلة المحددة فقط في سطر الأوامر. لا تبنِ الخبيئة." ++ ++#: elf/ldconfig.c:132 ++msgid "Manually link individual libraries." ++msgstr "اربط المكتبات الفردية يدوياً." ++ ++#: elf/ldconfig.c:133 ++msgid "FORMAT" ++msgstr "التنسيق" ++ ++#: elf/ldconfig.c:133 ++msgid "Format to use: new (default), old, or compat" ++msgstr "التنسيق المستخدم: جديد (مبدئي)، قديم، أو متوافق" ++ ++#: elf/ldconfig.c:134 ++msgid "Ignore auxiliary cache file" ++msgstr "تجاهل ملف الخبيئة المساعد" ++ ++#: elf/ldconfig.c:142 ++msgid "Configure Dynamic Linker Run Time Bindings." ++msgstr "اضبط روابط وقت التشغيل للرابط الديناميكي." ++ ++#: elf/ldconfig.c:276 ++#, c-format ++msgid "Path `%s' given more than once" ++msgstr "تم إعطاء المسار `%s' أكثر من مرة" ++ ++#: elf/ldconfig.c:277 ++#, c-format ++msgid "(from %s:%d and %s:%d)\n" ++msgstr "(من %s:%d و %s:%d)\n" ++ ++#: elf/ldconfig.c:309 elf/ldconfig.c:350 ++#, c-format ++msgid "Could not form glibc-hwcaps path" ++msgstr "يتعذر تشكيل مسار glibc-hwcaps" ++ ++#: elf/ldconfig.c:323 ++#, c-format ++msgid "Listing directory %s" ++msgstr "إدراج محتويات الدليل %s" ++ ++#: elf/ldconfig.c:405 ++#, c-format ++msgid "Can't stat %s" ++msgstr "يتعذر جلب معلومات %s" ++ ++#: elf/ldconfig.c:486 ++#, c-format ++msgid "Can't stat %s\n" ++msgstr "يتعذر جلب معلومات %s\n" ++ ++#: elf/ldconfig.c:496 ++#, c-format ++msgid "%s is not a symbolic link\n" ++msgstr "%s ليس رابطاً رمزياً\n" ++ ++#: elf/ldconfig.c:515 ++#, c-format ++msgid "Can't unlink %s" ++msgstr "يتعذر فك ربط %s" ++ ++#: elf/ldconfig.c:521 ++#, c-format ++msgid "Can't link %s to %s" ++msgstr "يتعذر ربط %s بـ %s" ++ ++#: elf/ldconfig.c:527 ++msgid " (changed)\n" ++msgstr " (تغير)\n" ++ ++#: elf/ldconfig.c:529 ++msgid " (SKIPPED)\n" ++msgstr " (تخطى)\n" ++ ++#: elf/ldconfig.c:584 ++#, c-format ++msgid "Can't find %s" ++msgstr "يتعذر العثور على %s" ++ ++#: elf/ldconfig.c:600 elf/ldconfig.c:759 elf/ldconfig.c:826 ++#, c-format ++msgid "Cannot lstat %s" ++msgstr "يتعذر عمل lstat لـ %s" ++ ++#: elf/ldconfig.c:606 ++#, c-format ++msgid "Ignored file %s since it is not a regular file." ++msgstr "تجاهل ملف %s لأنه ليس ملفاً عادياً." ++ ++#: elf/ldconfig.c:614 ++#, c-format ++msgid "No link created since soname could not be found for %s" ++msgstr "لم ينشأ أي رابط لأنه تعذر العثور على soname لـ %s" ++ ++#: elf/ldconfig.c:700 ++#, c-format ++msgid " (from %s:%d)\n" ++msgstr " (من %s:%d)\n" ++ ++#: elf/ldconfig.c:715 ++#, c-format ++msgid "Can't open directory %s" ++msgstr "يتعذر فتح الدليل %s" ++ ++#: elf/ldconfig.c:742 elf/ldconfig.c:747 ++#, c-format ++msgid "Could not form library path" ++msgstr "يتعذر تشكيل مسار المكتبة" ++ ++#: elf/ldconfig.c:776 elf/ldconfig.c:814 elf/readlib.c:81 ++#, c-format ++msgid "Input file %s not found.\n" ++msgstr "ملف المدخلات %s غير موجود.\n" ++ ++#: elf/ldconfig.c:783 ++#, c-format ++msgid "Cannot stat %s" ++msgstr "يتعذر عمل stat لـ %s" ++ ++#: elf/ldconfig.c:902 ++#, c-format ++msgid "libc6 library %s in wrong directory" ++msgstr "مكتبة libc6 %s في دليل خاطئ" ++ ++#: elf/ldconfig.c:921 ++#, c-format ++msgid "libraries %s and %s in directory %s have same soname but different type." ++msgstr "المكتبتان %s و %s في الدليل %s لهما نفس soname ولكن بنوع مختلف." ++ ++#: elf/ldconfig.c:1050 ++#, c-format ++msgid "Warning: ignoring configuration file that cannot be opened: %s" ++msgstr "تحذير: تجاهل ملف الضبط الذي لا يمكن فتحه: %s" ++ ++#: elf/ldconfig.c:1098 ++#, c-format ++msgid "%s:%u: hwcap directive ignored" ++msgstr "%s:%u: تم تجاهل توجيه hwcap" ++ ++#: elf/ldconfig.c:1117 ++#, c-format ++msgid "need absolute file name for configuration file when using -r" ++msgstr "بحاجة لاسم ملف مطلق لملف الضبط عند استخدام -r" ++ ++#: elf/ldconfig.c:1124 locale/programs/xasprintf.c:31 ++#: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 ++#: posix/getconf.c:503 posix/getconf.c:745 ++#, c-format ++msgid "memory exhausted" ++msgstr "نفدت الذاكرة" ++ ++#: elf/ldconfig.c:1157 ++#, c-format ++msgid "%s:%u: cannot read directory %s" ++msgstr "%s:%u: يتعذر قراءة الدليل %s" ++ ++#: elf/ldconfig.c:1195 ++#, c-format ++msgid "relative path `%s' used to build cache" ++msgstr "استخدم المسار النسبي `%s' لبناء الخبيئة" ++ ++#: elf/ldconfig.c:1217 ++#, c-format ++msgid "Can't chdir to /" ++msgstr "يتعذر تغيير الدليل إلى /" ++ ++#: elf/ldconfig.c:1258 ++#, c-format ++msgid "Can't open cache file directory %s\n" ++msgstr "يتعذر فتح دليل ملف الخبيئة %s\n" ++ ++#: elf/ldd.bash.in:43 ++msgid "Written by %s and %s.\n" ++msgstr "كتبه %s و %s.\n" ++ ++#: elf/ldd.bash.in:48 ++msgid "" ++"Usage: ldd [OPTION]... FILE...\n" ++" --help print this help and exit\n" ++" --version print version information and exit\n" ++" -d, --data-relocs process data relocations\n" ++" -r, --function-relocs process data and function relocations\n" ++" -u, --unused print unused direct dependencies\n" ++" -v, --verbose print all information\n" ++msgstr "" ++"الاستخدام: ldd [خيار]... ملف...\n" ++" --help اطبع هذه المساعدة واخرج\n" ++" --version اطبع معلومات الإصدار واخرج\n" ++" -d, --data-relocs معالجة إعادة توطين البيانات\n" ++" -r, --function-relocs معالجة إعادة توطين البيانات والوظائف\n" ++" -u, --unused اطبع التبعيات المباشرة غير المستخدمة\n" ++" -v, --verbose اطبع كافة المعلومات\n" ++ ++#: elf/ldd.bash.in:81 ++msgid "ldd: option \\`$1' is ambiguous" ++msgstr "ldd: الخيار \\`$1' غامض" ++ ++#: elf/ldd.bash.in:88 ++msgid "unrecognized option" ++msgstr "خيار غير معروف" ++ ++#: elf/ldd.bash.in:89 elf/ldd.bash.in:126 ++msgid "Try \\`ldd --help' for more information." ++msgstr "جرب \\`ldd --help' لمزيد من المعلومات." ++ ++#: elf/ldd.bash.in:125 ++msgid "missing file arguments" ++msgstr "وسائط الملف مفقودة" ++ ++#. TRANS This is a ``file doesn't exist'' error ++#. TRANS for ordinary files that are referenced in contexts where they are ++#. TRANS expected to already exist. ++#: elf/ldd.bash.in:148 sysdeps/gnu/errlist.h:13 ++msgid "No such file or directory" ++msgstr "لا يوجد ملف أو دليل بهذا الاسم" ++ ++#: elf/ldd.bash.in:151 inet/rcmd.c:483 ++msgid "not regular file" ++msgstr "ليس ملفاً عادياً" ++ ++#: elf/ldd.bash.in:154 ++msgid "warning: you do not have execution permission for" ++msgstr "تحذير: ليس لديك إذن تنفيذ لـ" ++ ++#: elf/ldd.bash.in:171 ++msgid "\tnot a dynamic executable" ++msgstr "\tليس ملفاً تنفيذياً ديناميكياً" ++ ++#: elf/ldd.bash.in:179 ++msgid "exited with unknown exit code" ++msgstr "خرج بكود خروج غير معروف" ++ ++#: elf/ldd.bash.in:184 ++msgid "error: you do not have read permission for" ++msgstr "خطأ: ليس لديك إذن قراءة لـ" ++ ++#: elf/pldd-xx.c:103 ++#, c-format ++msgid "cannot find program header of process" ++msgstr "يتعذر العثور على ترويسة البرنامج للعملية" ++ ++#: elf/pldd-xx.c:107 ++#, c-format ++msgid "cannot read program header" ++msgstr "يتعذر قراءة ترويسة البرنامج" ++ ++#: elf/pldd-xx.c:129 ++#, c-format ++msgid "cannot read dynamic section" ++msgstr "يتعذر قراءة القسم الديناميكي" ++ ++#: elf/pldd-xx.c:141 ++#, c-format ++msgid "cannot read r_debug" ++msgstr "يتعذر قراءة r_debug" ++ ++#: elf/pldd-xx.c:159 ++#, c-format ++msgid "cannot read program interpreter" ++msgstr "يتعذر قراءة مترجم البرنامج" ++ ++#: elf/pldd-xx.c:188 ++#, c-format ++msgid "cannot read link map" ++msgstr "يتعذر قراءة خريطة الربط" ++ ++#: elf/pldd-xx.c:195 ++#, c-format ++msgid "cannot read object name" ++msgstr "يتعذر قراءة اسم الكائن" ++ ++#: elf/pldd-xx.c:202 ++#, c-format ++msgid "cannot allocate buffer for object name" ++msgstr "يتعذر تخصيص مخزن مؤقت لاسم الكائن" ++ ++#: elf/pldd.c:57 ++msgid "List dynamic shared objects loaded into process." ++msgstr "إدراج الكائنات المشتركة الديناميكية المحملة في العملية." ++ ++#: elf/pldd.c:61 ++msgid "PID" ++msgstr "معرّف العملية" ++ ++#: elf/pldd.c:88 ++#, c-format ++msgid "Exactly one parameter with process ID required.\n" ++msgstr "مطلوب معامل واحد بالضبط مع معرف العملية.\n" ++ ++#: elf/pldd.c:102 ++#, c-format ++msgid "invalid process ID '%s'" ++msgstr "معرف عملية غير صالح '%s'" ++ ++#: elf/pldd.c:110 ++#, c-format ++msgid "cannot open %s" ++msgstr "يتعذر فتح %s" ++ ++#: elf/pldd.c:141 ++#, c-format ++msgid "cannot open %s/task" ++msgstr "يتعذر فتح %s/task" ++ ++#: elf/pldd.c:144 ++#, c-format ++msgid "cannot prepare reading %s/task" ++msgstr "يتعذر التحضير لقراءة %s/task" ++ ++#: elf/pldd.c:157 ++#, c-format ++msgid "invalid thread ID '%s'" ++msgstr "معرف خيط غير صالح '%s'" ++ ++#: elf/pldd.c:168 ++#, c-format ++msgid "cannot attach to process %lu" ++msgstr "يتعذر الاتصال بالعملية %lu" ++ ++#: elf/pldd.c:183 ++#, c-format ++msgid "no valid %s/task entries" ++msgstr "لا توجد مدخلات %s/task صالحة" ++ ++#: elf/pldd.c:289 ++#, c-format ++msgid "cannot get information about process %lu" ++msgstr "يتعذر جلب معلومات عن العملية %lu" ++ ++#: elf/pldd.c:302 ++#, c-format ++msgid "process %lu is no ELF program" ++msgstr "العملية %lu ليست برنامج ELF" ++ ++#: elf/readelflib.c:34 ++#, c-format ++msgid "file %s is truncated\n" ++msgstr "الملف %s مبتور\n" ++ ++#: elf/readelflib.c:63 ++#, c-format ++msgid "%s is a 32 bit ELF file.\n" ++msgstr "%s هو ملف ELF ذو 32 بت.\n" ++ ++#: elf/readelflib.c:65 ++#, c-format ++msgid "%s is a 64 bit ELF file.\n" ++msgstr "%s هو ملف ELF ذو 64 بت.\n" ++ ++#: elf/readelflib.c:67 ++#, c-format ++msgid "Unknown ELFCLASS in file %s.\n" ++msgstr "ELFCLASS غير معروف في الملف %s.\n" ++ ++#: elf/readelflib.c:74 ++#, c-format ++msgid "%s is not a shared object file (Type: %d).\n" ++msgstr "%s ليس ملف كائن مشترك (النوع: %d).\n" ++ ++#: elf/readelflib.c:101 ++#, c-format ++msgid "more than one dynamic segment\n" ++msgstr "أكثر من مقطع ديناميكي واحد\n" ++ ++#: elf/readlib.c:87 ++#, c-format ++msgid "Cannot fstat file %s.\n" ++msgstr "يتعذر عمل fstat للملف %s.\n" ++ ++#: elf/readlib.c:98 ++#, c-format ++msgid "File %s is empty, not checked." ++msgstr "الملف %s فارغ، لم يفحص." ++ ++#: elf/readlib.c:104 ++#, c-format ++msgid "File %s is too small, not checked." ++msgstr "الملف %s صغير جداً، لم يفحص." ++ ++#: elf/readlib.c:114 ++#, c-format ++msgid "Cannot mmap file %s.\n" ++msgstr "يتعذر عمل mmap للملف %s.\n" ++ ++#: elf/readlib.c:152 ++#, c-format ++msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n" ++msgstr "%s ليس ملف ELF - يحتوي على بايتات سحرية خاطئة في البداية.\n" ++ ++#: elf/sln.c:76 ++#, c-format ++msgid "" ++"Usage: sln src dest|file\n" ++"\n" ++msgstr "" ++"الاستخدام: sln src dest|file\n" ++"\n" ++ ++#: elf/sln.c:97 ++#, c-format ++msgid "%s: file open error: %m\n" ++msgstr "%s: خطأ في فتح الملف: %m\n" ++ ++#: elf/sln.c:134 ++#, c-format ++msgid "No target in line %d\n" ++msgstr "لا يوجد هدف في السطر %d\n" ++ ++#: elf/sln.c:164 ++#, c-format ++msgid "%s: destination must not be a directory\n" ++msgstr "%s: الوجهة يجب ألا تكون دليلاً\n" ++ ++#: elf/sln.c:170 ++#, c-format ++msgid "%s: failed to remove the old destination\n" ++msgstr "%s: فشل في إزالة الوجهة القديمة\n" ++ ++#: elf/sln.c:178 ++#, c-format ++msgid "%s: invalid destination: %s\n" ++msgstr "%s: وجهة غير صالحة: %s\n" ++ ++#: elf/sln.c:189 elf/sln.c:198 ++#, c-format ++msgid "Invalid link from \"%s\" to \"%s\": %s\n" ++msgstr "رابط غير صالح من \"%s\" إلى \"%s\": %s\n" ++ ++#: elf/sotruss.sh:32 ++#, sh-format ++msgid "" ++"Usage: sotruss [OPTION...] [--] EXECUTABLE [EXECUTABLE-OPTION...]\n" ++" -F, --from FROMLIST Trace calls from objects on FROMLIST\n" ++" -T, --to TOLIST Trace calls to objects on TOLIST\n" ++"\n" ++" -e, --exit Also show exits from the function calls\n" ++" -f, --follow Trace child processes\n" ++" -o, --output FILENAME Write output to FILENAME (or FILENAME.$PID in case\n" ++"\t\t\t -f is also used) instead of standard error\n" ++"\n" ++" -?, --help Give this help list\n" ++" --usage Give a short usage message\n" ++" --version Print program version" ++msgstr "" ++"الاستخدام: sotruss [خيار...] [--] EXECUTABLE [خيارات-التنفيذي...]\n" ++" -F, --from FROMLIST تتبع الاستدعاءات من كائنات في FROMLIST\n" ++" -T, --to TOLIST تتبع الاستدعاءات إلى كائنات في TOLIST\n" ++"\n" ++" -e, --exit أظهر أيضاً عمليات الخروج من استدعاءات الوظائف\n" ++" -f, --follow تتبع العمليات التابعة\n" ++" -o, --output FILENAME اكتب المخرجات إلى FILENAME (أو FILENAME.$PID في حال\n" ++"\t\t\t استخدام -f أيضاً) بدلاً من الخطأ القياسي\n" ++"\n" ++" -?, --help أعطِ قائمة المساعدة هذه\n" ++" --usage أعطِ رسالة استخدام قصيرة\n" ++" --version اطبع إصدار البرنامج" ++ ++#: elf/sotruss.sh:46 ++msgid "Mandatory arguments to long options are also mandatory for any corresponding\\nshort options.\\n" ++msgstr "الوسائط الإلزامية للخيارات الطويلة هي أيضاً إلزامية لأي خيارات\\nقصيرة مقابلة.\\n" ++ ++#: elf/sotruss.sh:55 ++msgid "%s: option requires an argument -- '%s'\\n" ++msgstr "%s: الخيار يتطلب وسيطاً -- '%s'\\n" ++ ++#: elf/sotruss.sh:61 ++msgid "%s: option is ambiguous; possibilities:" ++msgstr "%s: الخيار غامض؛ الاحتمالات:" ++ ++#: elf/sotruss.sh:79 ++msgid "Written by %s.\\n" ++msgstr "كتبه %s.\\n" ++ ++#: elf/sotruss.sh:86 ++msgid "" ++"Usage: %s [-ef] [-F FROMLIST] [-o FILENAME] [-T TOLIST] [--exit]\n" ++"\t [--follow] [--from FROMLIST] [--output FILENAME] [--to TOLIST]\n" ++"\t [--help] [--usage] [--version] [--]\n" ++"\t EXECUTABLE [EXECUTABLE-OPTION...]\\n" ++msgstr "" ++"الاستخدام: %s [-ef] [-F FROMLIST] [-o FILENAME] [-T TOLIST] [--exit]\n" ++"\t [--follow] [--from FROMLIST] [--output FILENAME] [--to TOLIST]\n" ++"\t [--help] [--usage] [--version] [--]\n" ++"\t الملف التنفيذي [خيارات-الملف-التنفيذي...]\\n" ++ ++#: elf/sotruss.sh:134 ++msgid "%s: unrecognized option '%c%s'\\n" ++msgstr "%s: خيار غير معروف '%c%s'\\n" ++ ++#: elf/sprof.c:77 ++msgid "Output selection:" ++msgstr "تحديد المخرجات:" ++ ++#: elf/sprof.c:79 ++msgid "print list of count paths and their number of use" ++msgstr "اطبع قائمة بمسارات العد وعدد استخداماتها" ++ ++#: elf/sprof.c:81 ++msgid "generate flat profile with counts and ticks" ++msgstr "توليد تشكيلة مسطحة مع الأعداد والتكات" ++ ++#: elf/sprof.c:82 ++msgid "generate call graph" ++msgstr "توليد رسم بياني للاستدعاءات" ++ ++#: elf/sprof.c:89 ++msgid "Read and display shared object profiling data." ++msgstr "قراءة وعرض بيانات تشكيلة الكائن المشترك." ++ ++#: elf/sprof.c:94 ++msgid "SHOBJ [PROFDATA]" ++msgstr "SHOBJ [PROFDATA]" ++ ++#: elf/sprof.c:434 ++#, c-format ++msgid "failed to load shared object `%s'" ++msgstr "فشل تحميل الكائن المشترك `%s'" ++ ++#: elf/sprof.c:443 elf/sprof.c:860 elf/sprof.c:958 ++#, c-format ++msgid "cannot create internal descriptor" ++msgstr "يتعذر إنشاء واصف داخلي" ++ ++#: elf/sprof.c:552 ++#, c-format ++msgid "Reopening shared object `%s' failed" ++msgstr "فشل إعادة فتح الكائن المشترك `%s'" ++ ++#: elf/sprof.c:556 elf/sprof.c:672 ++#, c-format ++msgid "stat(%s) failure" ++msgstr "فشل stat(%s)" ++ ++#: elf/sprof.c:573 ++#, c-format ++msgid "read outside of file extents %zu + %jd > %jd" ++msgstr "قراءة خارج نطاقات الملف %zu + %jd > %jd" ++ ++#: elf/sprof.c:582 elf/sprof.c:689 ++#, c-format ++msgid "reading of section headers failed" ++msgstr "فشلت قراءة ترويسات الأقسام" ++ ++#: elf/sprof.c:592 elf/sprof.c:699 ++#, c-format ++msgid "reading of section header string table failed" ++msgstr "فشلت قراءة جدول سلاسل ترويسات الأقسام" ++ ++#: elf/sprof.c:619 ++#, c-format ++msgid "*** Cannot read debuginfo file name: %m\n" ++msgstr "*** يتعذر قراءة اسم ملف معلومات التنقيح: %m\n" ++ ++#: elf/sprof.c:640 ++#, c-format ++msgid "cannot determine file name" ++msgstr "يتعذر تحديد اسم الملف" ++ ++#: elf/sprof.c:678 ++#, c-format ++msgid "reading of ELF header failed" ++msgstr "فشلت قراءة ترويسة ELF" ++ ++#: elf/sprof.c:683 ++#, c-format ++msgid "too many section headers" ++msgstr "ترويسات أقسام كثيرة جداً" ++ ++#: elf/sprof.c:720 ++#, c-format ++msgid "*** The file `%s' is stripped: no detailed analysis possible\n" ++msgstr "*** الملف `%s' مجرد: لا يمكن إجراء تحليل مفصل\n" ++ ++#: elf/sprof.c:750 ++#, c-format ++msgid "failed to load symbol data" ++msgstr "فشل تحميل بيانات الرموز" ++ ++#: elf/sprof.c:815 ++#, c-format ++msgid "cannot load profiling data" ++msgstr "يتعذر تحميل بيانات التشكيلة" ++ ++#: elf/sprof.c:824 ++#, c-format ++msgid "while stat'ing profiling data file" ++msgstr "أثناء جلب معلومات ملف بيانات التشكيلة" ++ ++#: elf/sprof.c:832 ++#, c-format ++msgid "profiling data file `%s' does not match shared object `%s'" ++msgstr "ملف بيانات التشكيلة `%s' لا يطابق الكائن المشترك `%s'" ++ ++#: elf/sprof.c:843 ++#, c-format ++msgid "failed to mmap the profiling data file" ++msgstr "فشل mmap لملف بيانات التشكيلة" ++ ++#: elf/sprof.c:851 ++#, c-format ++msgid "error while closing the profiling data file" ++msgstr "خطأ أثناء إغلاق ملف بيانات التشكيلة" ++ ++#: elf/sprof.c:934 ++#, c-format ++msgid "`%s' is no correct profile data file for `%s'" ++msgstr "`%s' ليس ملف بيانات تشكيلة صحيح لـ `%s'" ++ ++#: elf/sprof.c:1115 elf/sprof.c:1173 ++#, c-format ++msgid "cannot allocate symbol data" ++msgstr "يتعذر تخصيص بيانات الرموز" ++ ++#: elf/stringtable.c:90 ++#, c-format ++msgid "String table string is too long" ++msgstr "سلسلة جدول السلاسل طويلة جداً" ++ ++#: elf/stringtable.c:103 ++#, c-format ++msgid "String table has too many entries" ++msgstr "جدول السلاسل يحتوي على مدخلات كثيرة جداً" ++ ++#: elf/stringtable.c:188 elf/stringtable.c:196 ++#, c-format ++msgid "String table is too large" ++msgstr "جدول السلاسل كبير جداً" ++ ++#: iconv/iconv_charmap.c:146 iconv/iconv_prog.c:426 ++#, c-format ++msgid "cannot open output file" ++msgstr "يتعذر فتح ملف المخرجات" ++ ++#: iconv/iconv_charmap.c:192 ++#, c-format ++msgid "error while closing input `%s'" ++msgstr "خطأ أثناء إغلاق المدخلات `%s'" ++ ++#: iconv/iconv_charmap.c:443 ++#, c-format ++msgid "illegal input sequence at position %zd" ++msgstr "تسلسل مدخلات غير قانوني في الموقع %zd" ++ ++#: iconv/iconv_charmap.c:462 iconv/iconv_prog.c:728 ++#, c-format ++msgid "incomplete character or shift sequence at end of buffer" ++msgstr "محرف أو تسلسل إزاحة غير مكتمل في نهاية المخزن المؤقت" ++ ++#: iconv/iconv_charmap.c:507 iconv/iconv_charmap.c:543 iconv/iconv_prog.c:736 ++#, c-format ++msgid "error while reading the input" ++msgstr "خطأ أثناء قراءة المدخلات" ++ ++#: iconv/iconv_charmap.c:525 ++#, c-format ++msgid "unable to allocate buffer for input" ++msgstr "غير قادر على تخصيص مخزن مؤقت للمدخلات" ++ ++#: iconv/iconv_prog.c:60 ++msgid "Input/Output format specification:" ++msgstr "مواصفات تنسيق المدخلات/المخرجات:" ++ ++#: iconv/iconv_prog.c:61 ++msgid "encoding of original text" ++msgstr "ترميز النص الأصلي" ++ ++#: iconv/iconv_prog.c:62 ++msgid "encoding for output" ++msgstr "ترميز المخرجات" ++ ++#: iconv/iconv_prog.c:63 ++msgid "Information:" ++msgstr "المعلومات:" ++ ++#: iconv/iconv_prog.c:64 ++msgid "list all known coded character sets" ++msgstr "أدرج كافة مجموعات المحارف المرمزة المعروفة" ++ ++#: iconv/iconv_prog.c:65 locale/programs/localedef.c:123 ++msgid "Output control:" ++msgstr "التحكم في المخرجات:" ++ ++#: iconv/iconv_prog.c:66 ++msgid "omit invalid characters from output" ++msgstr "حذف المحارف غير الصالحة من المخرجات" ++ ++#: iconv/iconv_prog.c:67 iconv/iconvconfig.c:128 ++#: locale/programs/localedef.c:116 locale/programs/localedef.c:118 ++#: locale/programs/localedef.c:120 locale/programs/localedef.c:149 ++#: malloc/memusagestat.c:56 ++msgid "FILE" ++msgstr "ملف" ++ ++#: iconv/iconv_prog.c:67 ++msgid "output file" ++msgstr "ملف المخرجات" ++ ++#: iconv/iconv_prog.c:68 ++msgid "suppress warnings" ++msgstr "كتم التحذيرات" ++ ++#: iconv/iconv_prog.c:69 ++msgid "print progress information" ++msgstr "اطبع معلومات التقدم" ++ ++#: iconv/iconv_prog.c:72 ++msgid "BYTE-COUNT" ++msgstr "BYTE-COUNT" ++ ++#: iconv/iconv_prog.c:73 ++msgid "size of in-memory scratch buffer" ++msgstr "حجم مخزن المسودة المؤقت في الذاكرة" ++ ++#: iconv/iconv_prog.c:78 ++msgid "Convert encoding of given files from one encoding to another." ++msgstr "تحويل ترميز الملفات المعطاة من ترميز إلى آخر." ++ ++#: iconv/iconv_prog.c:82 ++msgid "[FILE...]" ++msgstr "[ملف...]" ++ ++#: iconv/iconv_prog.c:189 iconv/iconv_prog.c:251 ++#, c-format ++msgid "failed to start conversion processing" ++msgstr "فشل في بدء معالجة التحويل" ++ ++#: iconv/iconv_prog.c:225 ++#, c-format ++msgid "conversions from `%s' and to `%s' are not supported" ++msgstr "التحويلات من `%s' وإلى `%s' غير مدعومة" ++ ++#: iconv/iconv_prog.c:230 ++#, c-format ++msgid "conversion from `%s' is not supported" ++msgstr "التحويل من `%s' غير مدعوم" ++ ++#: iconv/iconv_prog.c:237 ++#, c-format ++msgid "conversion to `%s' is not supported" ++msgstr "التحويل إلى `%s' غير مدعوم" ++ ++#: iconv/iconv_prog.c:241 ++#, c-format ++msgid "conversion from `%s' to `%s' is not supported" ++msgstr "التحويل من `%s' إلى `%s' غير مدعوم" ++ ++#: iconv/iconv_prog.c:349 ++#, c-format ++msgid "invalid buffer size: %s" ++msgstr "حجم مخزن مؤقت غير صالح: %s" ++ ++#: iconv/iconv_prog.c:540 ++#, c-format ++msgid "conversion stopped due to problem in writing the output" ++msgstr "توقف التحويل بسبب مشكلة في كتابة المخرجات" ++ ++#: iconv/iconv_prog.c:686 ++#, c-format ++msgid "illegal input sequence at position %lld" ++msgstr "تسلسل مدخلات غير قانوني في الموقع %lld" ++ ++#: iconv/iconv_prog.c:693 ++#, c-format ++msgid "internal error (illegal descriptor)" ++msgstr "خطأ داخلي (واصف غير قانوني)" ++ ++#: iconv/iconv_prog.c:696 ++#, c-format ++msgid "unknown iconv() error %d" ++msgstr "خطأ iconv() غير معروف %d" ++ ++#: iconv/iconv_prog.c:909 ++msgid "" ++"The following list contains all the coded character sets known. This does\n" ++"not necessarily mean that all combinations of these names can be used for\n" ++"the FROM and TO command line parameters. One coded character set can be\n" ++"listed with several different names (aliases).\n" ++"\n" ++" " ++msgstr "" ++"القائمة التالية تحتوي على جميع مجموعات المحارف المرمزة المعروفة. هذا لا\n" ++"يعني بالضرورة إمكانية استخدام جميع تركيبات هذه الأسماء لمعاملات سطر\n" ++"الأوامر FROM و TO. يمكن إدراج مجموعة محارف مرمزة واحدة بعدة\n" ++"أسماء مختلفة (أسماء مستعارة).\n" ++"\n" ++" " ++ ++#: iconv/iconvconfig.c:109 ++msgid "Create fastloading iconv module configuration file." ++msgstr "إنشاء ملف ضبط لوحدة iconv سريع التحميل." ++ ++#: iconv/iconvconfig.c:113 ++msgid "[DIR...]" ++msgstr "[الدليل…]" ++ ++#: iconv/iconvconfig.c:126 locale/programs/localedef.c:128 ++msgid "PATH" ++msgstr "المسار" ++ ++#: iconv/iconvconfig.c:127 ++msgid "Prefix used for all file accesses" ++msgstr "البادئة المستخدمة لكافة عمليات الوصول للملفات" ++ ++#: iconv/iconvconfig.c:128 ++msgid "Put output in FILE instead of installed location (--prefix does not apply to FILE)" ++msgstr "ضع المخرجات في FILE بدلاً من موقع التثبيت (--prefix لا ينطبق على FILE)" ++ ++#: iconv/iconvconfig.c:132 ++msgid "Do not search standard directories, only those on the command line" ++msgstr "لا تبحث في الأدلة القياسية، فقط تلك المحددة في سطر الأوامر" ++ ++#: iconv/iconvconfig.c:300 ++#, c-format ++msgid "Directory arguments required when using --nostdlib" ++msgstr "وسائط الدليل مطلوبة عند استخدام --nostdlib" ++ ++#: iconv/iconvconfig.c:342 ++#, c-format ++msgid "no output file produced because warnings were issued" ++msgstr "لم يتم إنتاج ملف مخرجات بسبب صدور تحذيرات" ++ ++#: iconv/iconvconfig.c:431 ++#, c-format ++msgid "while inserting in search tree" ++msgstr "أثناء الإدراج في شجرة البحث" ++ ++#: iconv/iconvconfig.c:1195 ++#, c-format ++msgid "cannot generate output file" ++msgstr "يتعذر توليد ملف المخرجات" ++ ++#: include/unistd_ext.h:38 ++#, c-format ++msgid "write of %zu bytes failed after %td: %m" ++msgstr "فشلت كتابة %zu بايت بعد %td: %m" ++ ++#: include/unistd_ext.h:43 ++#, c-format ++msgid "write returned 0 after writing %td bytes of %zu" ++msgstr "أرجعت الكتابة 0 بعد كتابة %td بايت من %zu" ++ ++#: include/unistd_ext.h:59 ++#, c-format ++msgid "read of %zu bytes failed after %td: %m" ++msgstr "فشلت قراءة %zu بايت بعد %td: %m" ++ ++#: inet/rcmd.c:160 ++msgid "rcmd: Cannot allocate memory\n" ++msgstr "rcmd: يتعذر تخصيص الذاكرة\n" ++ ++#: inet/rcmd.c:177 ++msgid "rcmd: socket: All ports in use\n" ++msgstr "rcmd: socket: جميع المنافذ قيد الاستخدام\n" ++ ++#: inet/rcmd.c:205 ++#, c-format ++msgid "connect to address %s: " ++msgstr "اتصل بالعنوان %s: " ++ ++#: inet/rcmd.c:218 ++#, c-format ++msgid "Trying %s...\n" ++msgstr "محاولة %s...\n" ++ ++#: inet/rcmd.c:254 ++#, c-format ++msgid "rcmd: write (setting up stderr): %m\n" ++msgstr "rcmd: كتابة (إعداد stderr): %m\n" ++ ++#: inet/rcmd.c:270 ++#, c-format ++msgid "rcmd: poll (setting up stderr): %m\n" ++msgstr "rcmd: استطلاع poll (إعداد stderr): %m\n" ++ ++#: inet/rcmd.c:273 ++msgid "poll: protocol failure in circuit setup\n" ++msgstr "poll: فشل في البروتوكول في إعداد الدائرة\n" ++ ++#: inet/rcmd.c:305 ++msgid "socket: protocol failure in circuit setup\n" ++msgstr "socket: فشل في البروتوكول في إعداد الدائرة\n" ++ ++#: inet/rcmd.c:329 ++#, c-format ++msgid "rcmd: %s: short read" ++msgstr "rcmd: %s: قراءة قصيرة" ++ ++#: inet/rcmd.c:481 ++msgid "lstat failed" ++msgstr "فشل lstat" ++ ++#: inet/rcmd.c:488 ++msgid "cannot open" ++msgstr "يتعذر فتح" ++ ++#: inet/rcmd.c:490 ++msgid "fstat failed" ++msgstr "فشل fstat" ++ ++#: inet/rcmd.c:492 ++msgid "bad owner" ++msgstr "مالك سيئ" ++ ++#: inet/rcmd.c:494 ++msgid "writeable by other than owner" ++msgstr "قابل للكتابة من قبل غير المالك" ++ ++#: inet/rcmd.c:496 ++msgid "hard linked somewhere" ++msgstr "مربوط ربطاً صلباً في مكان ما" ++ ++#: inet/ruserpass.c:165 inet/ruserpass.c:188 ++msgid "out of memory" ++msgstr "نفدت الذاكرة" ++ ++#: inet/ruserpass.c:179 ++msgid "Error: .netrc file is readable by others." ++msgstr "خطأ: ملف .netrc قابل للقراءة من قبل الآخرين." ++ ++#: inet/ruserpass.c:180 ++msgid "Remove 'password' line or make file unreadable by others." ++msgstr "أزل سطر 'password' أو اجعل الملف غير قابل للقراءة من قبل الآخرين." ++ ++#: inet/ruserpass.c:199 ++#, c-format ++msgid "Unknown .netrc keyword %s" ++msgstr "كلمة مفتاحية غير معروفة في .netrc: %s" ++ ++#: locale/programs/charmap-dir.c:56 ++#, c-format ++msgid "cannot read character map directory `%s'" ++msgstr "يتعذر قراءة دليل خريطة المحارف `%s'" ++ ++#: locale/programs/charmap.c:137 ++#, c-format ++msgid "character map file `%s' not found" ++msgstr "ملف خريطة المحارف `%s' غير موجود" ++ ++#: locale/programs/charmap.c:195 ++#, c-format ++msgid "default character map file `%s' not found" ++msgstr "ملف خريطة المحارف المبدئي `%s' غير موجود" ++ ++#: locale/programs/charmap.c:264 ++#, c-format ++msgid "character map `%s' is not ASCII compatible, locale not ISO C compliant [--no-warnings=ascii]" ++msgstr "خريطة المحارف `%s' غير متوافقة مع ASCII، المحلية غير متوافقة مع ISO C [--no-warnings=ascii]" ++ ++#: locale/programs/charmap.c:342 ++#, c-format ++msgid "%s: must be greater than \n" ++msgstr "%s: يجب أن يكون أكبر من \n" ++ ++#: locale/programs/charmap.c:362 locale/programs/charmap.c:379 ++#: locale/programs/repertoire.c:172 ++#, c-format ++msgid "syntax error in prolog: %s" ++msgstr "خطأ نحوي في المقدمة: %s" ++ ++#: locale/programs/charmap.c:363 ++msgid "invalid definition" ++msgstr "تعريف غير صالح" ++ ++#: locale/programs/charmap.c:380 locale/programs/locfile.c:130 ++#: locale/programs/locfile.c:157 locale/programs/repertoire.c:173 ++msgid "bad argument" ++msgstr "وسيط سيئ" ++ ++#: locale/programs/charmap.c:407 ++#, c-format ++msgid "duplicate definition of <%s>" ++msgstr "تعريف مكرر لـ <%s>" ++ ++#: locale/programs/charmap.c:414 ++#, c-format ++msgid "value for <%s> must be 1 or greater" ++msgstr "قيمة <%s> يجب أن تكون 1 أو أكبر" ++ ++#: locale/programs/charmap.c:426 ++#, c-format ++msgid "value of <%s> must be greater or equal than the value of <%s>" ++msgstr "قيمة <%s> يجب أن تكون أكبر من أو تساوي قيمة <%s>" ++ ++#: locale/programs/charmap.c:449 locale/programs/repertoire.c:181 ++#, c-format ++msgid "argument to <%s> must be a single character" ++msgstr "الوسيط لـ <%s> يجب أن يكون محرفاً واحداً" ++ ++#: locale/programs/charmap.c:475 ++msgid "character sets with locking states are not supported" ++msgstr "مجموعات المحارف ذات حالات القفل غير مدعومة" ++ ++#: locale/programs/charmap.c:502 locale/programs/charmap.c:556 ++#: locale/programs/charmap.c:588 locale/programs/charmap.c:682 ++#: locale/programs/charmap.c:738 locale/programs/charmap.c:779 ++#: locale/programs/charmap.c:820 ++#, c-format ++msgid "syntax error in %s definition: %s" ++msgstr "خطأ نحوي في تعريف %s: %s" ++ ++#: locale/programs/charmap.c:503 locale/programs/charmap.c:683 ++#: locale/programs/charmap.c:780 locale/programs/repertoire.c:228 ++msgid "no symbolic name given" ++msgstr "لم يتم إعطاء اسم رمزي" ++ ++#: locale/programs/charmap.c:557 ++msgid "invalid encoding given" ++msgstr "تم إعطاء ترميز غير صالح" ++ ++#: locale/programs/charmap.c:566 ++msgid "too few bytes in character encoding" ++msgstr "بايتات قليلة جداً في ترميز المحرف" ++ ++#: locale/programs/charmap.c:568 ++msgid "too many bytes in character encoding" ++msgstr "بايتات كثيرة جداً في ترميز المحرف" ++ ++#: locale/programs/charmap.c:590 locale/programs/charmap.c:739 ++#: locale/programs/charmap.c:822 locale/programs/repertoire.c:294 ++msgid "no symbolic name given for end of range" ++msgstr "لم يتم إعطاء اسم رمزي لنهاية النطاق" ++ ++#: locale/programs/charmap.c:614 locale/programs/ld-address.c:523 ++#: locale/programs/ld-collate.c:2635 locale/programs/ld-collate.c:3799 ++#: locale/programs/ld-ctype.c:2117 locale/programs/ld-ctype.c:2829 ++#: locale/programs/ld-identification.c:396 locale/programs/ld-measurement.c:212 ++#: locale/programs/ld-messages.c:294 locale/programs/ld-monetary.c:855 ++#: locale/programs/ld-name.c:261 locale/programs/ld-numeric.c:324 ++#: locale/programs/ld-paper.c:211 locale/programs/ld-telephone.c:275 ++#: locale/programs/ld-time.c:958 locale/programs/repertoire.c:311 ++#, c-format ++msgid "%1$s: definition does not end with `END %1$s'" ++msgstr "%1$s: التعريف لا ينتهي بـ `END %1$s'" ++ ++#: locale/programs/charmap.c:647 ++msgid "only WIDTH definitions are allowed to follow the CHARMAP definition" ++msgstr "فقط تعريفات WIDTH مسموح بها بعد تعريف CHARMAP" ++ ++#: locale/programs/charmap.c:655 locale/programs/charmap.c:719 ++#, c-format ++msgid "value for %s must be an integer" ++msgstr "قيمة %s يجب أن تكون عدداً صحيحاً" ++ ++#: locale/programs/charmap.c:847 ++#, c-format ++msgid "%s: error in state machine" ++msgstr "%s: خطأ في آلة الحالة" ++ ++#: locale/programs/charmap.c:855 locale/programs/ld-address.c:539 ++#: locale/programs/ld-collate.c:2632 locale/programs/ld-collate.c:3992 ++#: locale/programs/ld-ctype.c:2114 locale/programs/ld-ctype.c:2846 ++#: locale/programs/ld-identification.c:412 locale/programs/ld-measurement.c:228 ++#: locale/programs/ld-messages.c:310 locale/programs/ld-monetary.c:871 ++#: locale/programs/ld-name.c:277 locale/programs/ld-numeric.c:340 ++#: locale/programs/ld-paper.c:227 locale/programs/ld-telephone.c:291 ++#: locale/programs/ld-time.c:989 locale/programs/locfile.c:1009 ++#: locale/programs/repertoire.c:322 ++#, c-format ++msgid "%s: premature end of file" ++msgstr "%s: نهاية ملف سابقة لأوانها" ++ ++#: locale/programs/charmap.c:874 locale/programs/charmap.c:885 ++#, c-format ++msgid "unknown character `%s'" ++msgstr "محرف غير معروف `%s'" ++ ++#: locale/programs/charmap.c:893 ++#, c-format ++msgid "number of bytes for byte sequence of beginning and end of range not the same: %d vs %d" ++msgstr "عدد البايتات لتسلسل البايتات في بداية ونهاية النطاق ليس نفسه: %d مقابل %d" ++ ++#: locale/programs/charmap.c:998 locale/programs/ld-collate.c:2916 ++#: locale/programs/repertoire.c:417 ++msgid "invalid names for character range" ++msgstr "أسماء غير صالحة لنطاق المحارف" ++ ++#: locale/programs/charmap.c:1010 locale/programs/repertoire.c:429 ++msgid "hexadecimal range format should use only capital characters" ++msgstr "تنسيق النطاق الست عشري يجب أن يستخدم المحارف الكبيرة فقط" ++ ++#: locale/programs/charmap.c:1028 locale/programs/repertoire.c:447 ++#, c-format ++msgid "<%s> and <%s> are invalid names for range" ++msgstr "<%s> و <%s> أسماء غير صالحة للنطاق" ++ ++#: locale/programs/charmap.c:1034 locale/programs/repertoire.c:454 ++msgid "upper limit in range is smaller than lower limit" ++msgstr "الحد العلوي في النطاق أصغر من الحد السفلي" ++ ++#: locale/programs/charmap.c:1092 ++msgid "resulting bytes for range not representable." ++msgstr "البايتات الناتجة للنطاق غير قابلة للتمثيل." ++ ++#: locale/programs/ld-address.c:132 locale/programs/ld-collate.c:1569 ++#: locale/programs/ld-ctype.c:429 locale/programs/ld-identification.c:130 ++#: locale/programs/ld-measurement.c:91 locale/programs/ld-messages.c:95 ++#: locale/programs/ld-monetary.c:191 locale/programs/ld-name.c:92 ++#: locale/programs/ld-numeric.c:96 locale/programs/ld-paper.c:88 ++#: locale/programs/ld-telephone.c:91 locale/programs/ld-time.c:163 ++#, c-format ++msgid "No definition for %s category found" ++msgstr "لم يتم العثور على تعريف للفئة %s" ++ ++#: locale/programs/ld-address.c:143 locale/programs/ld-address.c:181 ++#: locale/programs/ld-address.c:198 locale/programs/ld-address.c:227 ++#: locale/programs/ld-address.c:299 locale/programs/ld-address.c:318 ++#: locale/programs/ld-address.c:330 locale/programs/ld-identification.c:143 ++#: locale/programs/ld-measurement.c:102 locale/programs/ld-monetary.c:291 ++#: locale/programs/ld-monetary.c:368 locale/programs/ld-monetary.c:389 ++#: locale/programs/ld-name.c:103 locale/programs/ld-name.c:140 ++#: locale/programs/ld-numeric.c:110 locale/programs/ld-numeric.c:124 ++#: locale/programs/ld-paper.c:99 locale/programs/ld-paper.c:108 ++#: locale/programs/ld-telephone.c:102 locale/programs/ld-telephone.c:159 ++#: locale/programs/ld-time.c:179 locale/programs/ld-time.c:200 ++#, c-format ++msgid "%s: field `%s' not defined" ++msgstr "%s: الحقل `%s' غير معرف" ++ ++#: locale/programs/ld-address.c:155 locale/programs/ld-address.c:206 ++#: locale/programs/ld-address.c:236 locale/programs/ld-address.c:274 ++#: locale/programs/ld-name.c:115 locale/programs/ld-telephone.c:114 ++#, c-format ++msgid "%s: field `%s' must not be empty" ++msgstr "%s: الحقل `%s' يجب ألا يكون فارغاً" ++ ++#: locale/programs/ld-address.c:167 ++#, c-format ++msgid "%s: invalid escape `%%%c' sequence in field `%s'" ++msgstr "%s: تسلسل هروب `%%%c' غير صالح في الحقل `%s'" ++ ++#: locale/programs/ld-address.c:217 ++#, c-format ++msgid "%s: terminology language code `%s' not defined" ++msgstr "%s: كود لغة المصطلحات `%s' غير معرف" ++ ++#: locale/programs/ld-address.c:242 ++#, c-format ++msgid "%s: field `%s' must not be defined" ++msgstr "%s: الحقل `%s' يجب ألا يكون معرفاً" ++ ++#: locale/programs/ld-address.c:256 locale/programs/ld-address.c:285 ++#, c-format ++msgid "%s: language abbreviation `%s' not defined" ++msgstr "%s: اختصار اللغة `%s' غير معرف" ++ ++#: locale/programs/ld-address.c:263 locale/programs/ld-address.c:291 ++#: locale/programs/ld-address.c:324 locale/programs/ld-address.c:336 ++#, c-format ++msgid "%s: `%s' value does not match `%s' value" ++msgstr "%s: قيمة `%s' لا تطابق قيمة `%s'" ++ ++#: locale/programs/ld-address.c:310 ++#, c-format ++msgid "%s: numeric country code `%d' not valid" ++msgstr "%s: كود الدولة الرقمي `%d' غير صالح" ++ ++#: locale/programs/ld-address.c:431 locale/programs/ld-address.c:468 ++#: locale/programs/ld-address.c:506 locale/programs/ld-ctype.c:2478 ++#: locale/programs/ld-identification.c:308 locale/programs/ld-measurement.c:195 ++#: locale/programs/ld-messages.c:263 locale/programs/ld-monetary.c:610 ++#: locale/programs/ld-monetary.c:645 locale/programs/ld-monetary.c:686 ++#: locale/programs/ld-name.c:234 locale/programs/ld-numeric.c:216 ++#: locale/programs/ld-paper.c:194 locale/programs/ld-telephone.c:250 ++#: locale/programs/ld-time.c:863 locale/programs/ld-time.c:905 ++#, c-format ++msgid "%s: field `%s' declared more than once" ++msgstr "%s: الحقل `%s' تم التصريح عنه أكثر من مرة" ++ ++#: locale/programs/ld-address.c:435 locale/programs/ld-address.c:473 ++#: locale/programs/ld-identification.c:312 locale/programs/ld-messages.c:273 ++#: locale/programs/ld-monetary.c:614 locale/programs/ld-monetary.c:649 ++#: locale/programs/ld-name.c:238 locale/programs/ld-numeric.c:220 ++#: locale/programs/ld-telephone.c:254 locale/programs/ld-time.c:755 ++#: locale/programs/ld-time.c:826 locale/programs/ld-time.c:868 ++#, c-format ++msgid "%s: unknown character in field `%s'" ++msgstr "%s: محرف غير معروف في الحقل `%s'" ++ ++#: locale/programs/ld-address.c:520 locale/programs/ld-collate.c:3797 ++#: locale/programs/ld-ctype.c:2826 locale/programs/ld-identification.c:393 ++#: locale/programs/ld-measurement.c:209 locale/programs/ld-messages.c:292 ++#: locale/programs/ld-monetary.c:853 locale/programs/ld-name.c:259 ++#: locale/programs/ld-numeric.c:322 locale/programs/ld-paper.c:209 ++#: locale/programs/ld-telephone.c:273 locale/programs/ld-time.c:956 ++#, c-format ++msgid "%s: incomplete `END' line" ++msgstr "%s: سطر `END' غير مكتمل" ++ ++#: locale/programs/ld-address.c:530 locale/programs/ld-collate.c:553 ++#: locale/programs/ld-collate.c:605 locale/programs/ld-collate.c:901 ++#: locale/programs/ld-collate.c:914 locale/programs/ld-collate.c:2601 ++#: locale/programs/ld-collate.c:2622 locale/programs/ld-collate.c:3982 ++#: locale/programs/ld-ctype.c:1846 locale/programs/ld-ctype.c:2104 ++#: locale/programs/ld-ctype.c:2676 locale/programs/ld-ctype.c:2837 ++#: locale/programs/ld-identification.c:403 locale/programs/ld-measurement.c:219 ++#: locale/programs/ld-messages.c:301 locale/programs/ld-monetary.c:862 ++#: locale/programs/ld-name.c:268 locale/programs/ld-numeric.c:331 ++#: locale/programs/ld-paper.c:218 locale/programs/ld-telephone.c:282 ++#: locale/programs/ld-time.c:980 ++#, c-format ++msgid "%s: syntax error" ++msgstr "%s: خطأ نحوي" ++ ++#: locale/programs/ld-collate.c:428 ++#, c-format ++msgid "`%.*s' already defined in charmap" ++msgstr "`%.*s' معرف مسبقاً في خريطة المحارف" ++ ++#: locale/programs/ld-collate.c:437 ++#, c-format ++msgid "`%.*s' already defined in repertoire" ++msgstr "`%.*s' معرف مسبقاً في الدليل (repertoire)" ++ ++#: locale/programs/ld-collate.c:444 ++#, c-format ++msgid "`%.*s' already defined as collating symbol" ++msgstr "`%.*s' معرف مسبقاً كرمز تجميع" ++ ++#: locale/programs/ld-collate.c:451 ++#, c-format ++msgid "`%.*s' already defined as collating element" ++msgstr "`%.*s' معرف مسبقاً كعنصر تجميع" ++ ++#: locale/programs/ld-collate.c:482 locale/programs/ld-collate.c:508 ++#, c-format ++msgid "%s: `forward' and `backward' are mutually excluding each other" ++msgstr "%s: `forward' و `backward' يستبعد كل منهما الآخر" ++ ++#: locale/programs/ld-collate.c:492 locale/programs/ld-collate.c:518 ++#: locale/programs/ld-collate.c:534 ++#, c-format ++msgid "%s: `%s' mentioned more than once in definition of weight %d" ++msgstr "%s: `%s' ذكر أكثر من مرة في تعريف الوزن %d" ++ ++#: locale/programs/ld-collate.c:590 ++#, c-format ++msgid "%s: too many rules; first entry only had %d" ++msgstr "%s: قواعد كثيرة جداً؛ المدخل الأول كان يحتوي فقط على %d" ++ ++#: locale/programs/ld-collate.c:626 ++#, c-format ++msgid "%s: not enough sorting rules" ++msgstr "%s: لا توجد قواعد فرز كافية" ++ ++#: locale/programs/ld-collate.c:791 ++#, c-format ++msgid "%s: empty weight string not allowed" ++msgstr "%s: سلسلة وزن فارغة غير مسموح بها" ++ ++#: locale/programs/ld-collate.c:886 ++#, c-format ++msgid "%s: weights must use the same ellipsis symbol as the name" ++msgstr "%s: يجب أن تستخدم الأوزان نفس رمز الحذف المستخدم في الاسم" ++ ++#: locale/programs/ld-collate.c:942 ++#, c-format ++msgid "%s: too many values" ++msgstr "%s: قيم كثيرة جداً" ++ ++#: locale/programs/ld-collate.c:1062 locale/programs/ld-collate.c:1237 ++#, c-format ++msgid "order for `%.*s' already defined at %s:%zu" ++msgstr "ترتيب `%.*s' معرف مسبقاً في %s:%zu" ++ ++#: locale/programs/ld-collate.c:1112 ++#, c-format ++msgid "%s: the start and the end symbol of a range must stand for characters" ++msgstr "%s: يجب أن يمثل رمزا بداية ونهاية النطاق محارف" ++ ++#: locale/programs/ld-collate.c:1139 ++#, c-format ++msgid "%s: byte sequences of first and last character must have the same length" ++msgstr "%s: يجب أن يكون لـ تسلسلات البايت للمحرف الأول والأخير الطول ذاته" ++ ++#: locale/programs/ld-collate.c:1181 ++#, c-format ++msgid "%s: byte sequence of first character of range is not lower than that of the last character" ++msgstr "%s: تسلسل بايت المحرف الأول في النطاق ليس أقل من تسلسل المحرف الأخير" ++ ++#: locale/programs/ld-collate.c:1306 ++#, c-format ++msgid "%s: symbolic range ellipsis must not directly follow `order_start'" ++msgstr "%s: يجب ألا يتبع حذف النطاق الرمزي `order_start' مباشرة" ++ ++#: locale/programs/ld-collate.c:1310 ++#, c-format ++msgid "%s: symbolic range ellipsis must not be directly followed by `order_end'" ++msgstr "%s: يجب ألا يتبع حذف النطاق الرمزي بـ `order_end' مباشرة" ++ ++#: locale/programs/ld-collate.c:1330 locale/programs/ld-ctype.c:1362 ++#, c-format ++msgid "`%s' and `%.*s' are not valid names for symbolic range" ++msgstr "`%s' و `%.*s' ليسا اسمين صالحين لنطاق رمزي" ++ ++#: locale/programs/ld-collate.c:1380 locale/programs/ld-collate.c:3731 ++#, c-format ++msgid "%s: order for `%.*s' already defined at %s:%zu" ++msgstr "%s: ترتيب `%.*s' معرف مسبقاً في %s:%zu" ++ ++#: locale/programs/ld-collate.c:1389 ++#, c-format ++msgid "%s: `%s' must be a character" ++msgstr "%s: `%s' يجب أن يكون محرفاً" ++ ++#: locale/programs/ld-collate.c:1590 ++#, c-format ++msgid "%s: `position' must be used for a specific level in all sections or none" ++msgstr "%s: يجب استخدام `position' لمستوى محدد في جميع المقاطع أو لا شيء منها" ++ ++#: locale/programs/ld-collate.c:1614 ++#, c-format ++msgid "symbol `%s' not defined" ++msgstr "الرمز `%s' غير معرف" ++ ++#: locale/programs/ld-collate.c:1690 locale/programs/ld-collate.c:1789 ++#, c-format ++msgid "symbol `%s' has the same encoding as" ++msgstr "الرمز `%s' له نفس ترميز" ++ ++#: locale/programs/ld-collate.c:1694 locale/programs/ld-collate.c:1793 ++#, c-format ++msgid "symbol `%s'" ++msgstr "الرمز `%s'" ++ ++#: locale/programs/ld-collate.c:1856 ++msgid "too many errors; giving up" ++msgstr "أخطاء كثيرة جداً؛ توقف العمل" ++ ++#: locale/programs/ld-collate.c:2527 locale/programs/ld-collate.c:3921 ++#, c-format ++msgid "%s: nested conditionals not supported" ++msgstr "%s: الشرطيات المتداخلة غير مدعومة" ++ ++#: locale/programs/ld-collate.c:2545 ++#, c-format ++msgid "%s: more than one 'else'" ++msgstr "%s: أكثر من 'else' واحدة" ++ ++#: locale/programs/ld-collate.c:2724 ++#, c-format ++msgid "%s: duplicate definition of `%s'" ++msgstr "%s: تعريف مكرر لـ `%s'" ++ ++#: locale/programs/ld-collate.c:2760 ++#, c-format ++msgid "%s: duplicate declaration of section `%s'" ++msgstr "%s: تصريح مكرر للمقطع `%s'" ++ ++#: locale/programs/ld-collate.c:2896 ++#, c-format ++msgid "%s: unknown character in collating symbol name" ++msgstr "%s: محرف مجهول في اسم رمز الترتيب" ++ ++#: locale/programs/ld-collate.c:3025 ++#, c-format ++msgid "%s: unknown character in equivalent definition name" ++msgstr "%s: محرف مجهول في اسم تعريف المكافئ" ++ ++#: locale/programs/ld-collate.c:3036 ++#, c-format ++msgid "%s: unknown character in equivalent definition value" ++msgstr "%s: محرف مجهول في قيمة تعريف المكافئ" ++ ++#: locale/programs/ld-collate.c:3046 ++#, c-format ++msgid "%s: unknown symbol `%s' in equivalent definition" ++msgstr "%s: رمز مجهول `%s' في تعريف المكافئ" ++ ++#: locale/programs/ld-collate.c:3055 ++msgid "error while adding equivalent collating symbol" ++msgstr "خطأ أثناء إضافة رمز ترتيب مكافئ" ++ ++#: locale/programs/ld-collate.c:3093 ++#, c-format ++msgid "duplicate definition of script `%s'" ++msgstr "تعريف مكرر للبرنامج النصي `%s'" ++ ++#: locale/programs/ld-collate.c:3141 ++#, c-format ++msgid "%s: unknown section name `%.*s'" ++msgstr "%s: اسم مقطع مجهول `%.*s'" ++ ++#: locale/programs/ld-collate.c:3170 ++#, c-format ++msgid "%s: multiple order definitions for section `%s'" ++msgstr "%s: تعريفات ترتيب متعددة للمقطع `%s'" ++ ++#: locale/programs/ld-collate.c:3198 ++#, c-format ++msgid "%s: invalid number of sorting rules" ++msgstr "%s: عدد غير صالح لقواعد الفرز" ++ ++#: locale/programs/ld-collate.c:3225 ++#, c-format ++msgid "%s: multiple order definitions for unnamed section" ++msgstr "%s: تعريفات ترتيب متعددة لمقطع غير مسمى" ++ ++#: locale/programs/ld-collate.c:3280 locale/programs/ld-collate.c:3410 ++#: locale/programs/ld-collate.c:3775 ++#, c-format ++msgid "%s: missing `order_end' keyword" ++msgstr "%s: كلمة `order_end' المفتاحية مفقودة" ++ ++#: locale/programs/ld-collate.c:3343 ++#, c-format ++msgid "%s: order for collating symbol %.*s not yet defined" ++msgstr "%s: ترتيب رمز الترتيب %.*s غير معرف بعد" ++ ++#: locale/programs/ld-collate.c:3361 ++#, c-format ++msgid "%s: order for collating element %.*s not yet defined" ++msgstr "%s: ترتيب عنصر الترتيب %.*s غير معرف بعد" ++ ++#: locale/programs/ld-collate.c:3372 ++#, c-format ++msgid "%s: cannot reorder after %.*s: symbol not known" ++msgstr "%s: لا يمكن إعادة الترتيب بعد %.*s: الرمز غير معروف" ++ ++#: locale/programs/ld-collate.c:3424 locale/programs/ld-collate.c:3787 ++#, c-format ++msgid "%s: missing `reorder-end' keyword" ++msgstr "%s: كلمة `reorder-end' المفتاحية مفقودة" ++ ++#: locale/programs/ld-collate.c:3458 locale/programs/ld-collate.c:3656 ++#, c-format ++msgid "%s: section `%.*s' not known" ++msgstr "%s: المقطع `%.*s' غير معروف" ++ ++#: locale/programs/ld-collate.c:3523 ++#, c-format ++msgid "%s: bad symbol <%.*s>" ++msgstr "%s: رمز سيء <%.*s>" ++ ++#: locale/programs/ld-collate.c:3719 ++#, c-format ++msgid "%s: cannot have `%s' as end of ellipsis range" ++msgstr "%s: لا يمكن لـ `%s' أن يكون نهاية لنطاق الحذف" ++ ++#: locale/programs/ld-collate.c:3771 ++#, c-format ++msgid "%s: empty category description not allowed" ++msgstr "%s: وصف الفئة الفارغ غير مسموح به" ++ ++#: locale/programs/ld-collate.c:3790 ++#, c-format ++msgid "%s: missing `reorder-sections-end' keyword" ++msgstr "%s: كلمة `reorder-sections-end' المفتاحية مفقودة" ++ ++#: locale/programs/ld-collate.c:3954 ++#, c-format ++msgid "%s: '%s' without matching 'ifdef' or 'ifndef'" ++msgstr "%s: '%s' بدون 'ifdef' أو 'ifndef' مطابقة" ++ ++#: locale/programs/ld-collate.c:3972 ++#, c-format ++msgid "%s: 'endif' without matching 'ifdef' or 'ifndef'" ++msgstr "%s: 'endif' بدون 'ifdef' أو 'ifndef' مطابقة" ++ ++#: locale/programs/ld-ctype.c:447 ++msgid "No character set name specified in charmap" ++msgstr "لا يوجد اسم لمجموعة المحارف محدد في خارطة المحارف" ++ ++#: locale/programs/ld-ctype.c:475 ++#, c-format ++msgid "character L'\\u%0*x' in class `%s' must be in class `%s'" ++msgstr "المحرف L'\\u%0*x' في الفئة `%s' يجب أن يكون في الفئة `%s'" ++ ++#: locale/programs/ld-ctype.c:489 ++#, c-format ++msgid "character L'\\u%0*x' in class `%s' must not be in class `%s'" ++msgstr "المحرف L'\\u%0*x' في الفئة `%s' يجب ألا يكون في الفئة `%s'" ++ ++#: locale/programs/ld-ctype.c:503 locale/programs/ld-ctype.c:559 ++#, c-format ++msgid "internal error in %s, line %u" ++msgstr "خطأ داخلي في %s، سطر %u" ++ ++#: locale/programs/ld-ctype.c:531 ++#, c-format ++msgid "character '%s' in class `%s' must be in class `%s'" ++msgstr "المحرف '%s' في الفئة `%s' يجب أن يكون في الفئة `%s'" ++ ++#: locale/programs/ld-ctype.c:546 ++#, c-format ++msgid "character '%s' in class `%s' must not be in class `%s'" ++msgstr "المحرف '%s' في الفئة `%s' يجب ألا يكون في الفئة `%s'" ++ ++#: locale/programs/ld-ctype.c:575 locale/programs/ld-ctype.c:610 ++#, c-format ++msgid " character not in class `%s'" ++msgstr "محرف ليس في الفئة `%s'" ++ ++#: locale/programs/ld-ctype.c:586 locale/programs/ld-ctype.c:620 ++#, c-format ++msgid " character must not be in class `%s'" ++msgstr "يجب ألا يكون محرف في الفئة `%s'" ++ ++#: locale/programs/ld-ctype.c:600 ++msgid "character not defined in character map" ++msgstr "المحرف غير معرف في خارطة المحارف" ++ ++#: locale/programs/ld-ctype.c:734 ++msgid "`digit' category has not entries in groups of ten" ++msgstr "فئة `digit' ليس لها مدخلات في مجموعات من عشرة" ++ ++#: locale/programs/ld-ctype.c:783 ++msgid "no input digits defined and none of the standard names in the charmap" ++msgstr "لا توجد أرقام مدخلة معرفة ولا أي من الأسماء القياسية في خارطة المحارف" ++ ++#: locale/programs/ld-ctype.c:846 ++msgid "not all characters used in `outdigit' are available in the charmap" ++msgstr "ليست كل المحارف المستخدمة في `outdigit' متاحة في خارطة المحارف" ++ ++#: locale/programs/ld-ctype.c:865 ++msgid "not all characters used in `outdigit' are available in the repertoire" ++msgstr "ليست كل المحارف المستخدمة في `outdigit' متاحة في الذخيرة" ++ ++#: locale/programs/ld-ctype.c:1130 ++#, c-format ++msgid "character class `%s' already defined" ++msgstr "فئة المحارف `%s' معرفة مسبقاً" ++ ++#: locale/programs/ld-ctype.c:1136 ++#, c-format ++msgid "implementation limit: no more than %Zd character classes allowed" ++msgstr "حد التنفيذ: لا يسمح بأكثر من %Zd من فئات المحارف" ++ ++#: locale/programs/ld-ctype.c:1162 ++#, c-format ++msgid "character map `%s' already defined" ++msgstr "خارطة المحارف `%s' معرفة مسبقاً" ++ ++#: locale/programs/ld-ctype.c:1168 ++#, c-format ++msgid "implementation limit: no more than %d character maps allowed" ++msgstr "حد التنفيذ: لا يسمح بأكثر من %d من خرائط المحارف" ++ ++#: locale/programs/ld-ctype.c:1434 locale/programs/ld-ctype.c:1559 ++#: locale/programs/ld-ctype.c:1665 locale/programs/ld-ctype.c:2341 ++#: locale/programs/ld-ctype.c:3301 ++#, c-format ++msgid "%s: field `%s' does not contain exactly ten entries" ++msgstr "%s: الحقل `%s' لا يحتوي على عشرة مدخلات بالضبط" ++ ++#: locale/programs/ld-ctype.c:1462 locale/programs/ld-ctype.c:2036 ++#, c-format ++msgid "to-value of range is smaller than from-value " ++msgstr "قيمة-إلى للنطاق أصغر من قيمة-من " ++ ++#: locale/programs/ld-ctype.c:1589 ++msgid "start and end character sequence of range must have the same length" ++msgstr "يجب أن يكون لـ تسلسل محرف البداية والنهاية للنطاق الطول ذاته" ++ ++#: locale/programs/ld-ctype.c:1596 ++msgid "to-value character sequence is smaller than from-value sequence" ++msgstr "تسلسل محرف قيمة-إلى أصغر من تسلسل قيمة-من" ++ ++#: locale/programs/ld-ctype.c:1956 locale/programs/ld-ctype.c:2007 ++msgid "premature end of `translit_ignore' definition" ++msgstr "نهاية سابقة لأوانها لتعريف `translit_ignore'" ++ ++#: locale/programs/ld-ctype.c:1962 locale/programs/ld-ctype.c:2013 ++#: locale/programs/ld-ctype.c:2055 ++msgid "syntax error" ++msgstr "خطأ في بناء الجملة" ++ ++#: locale/programs/ld-ctype.c:2188 ++#, c-format ++msgid "%s: syntax error in definition of new character class" ++msgstr "%s: خطأ في بناء الجملة في تعريف فئة محارف جديدة" ++ ++#: locale/programs/ld-ctype.c:2203 ++#, c-format ++msgid "%s: syntax error in definition of new character map" ++msgstr "%s: خطأ في بناء الجملة في تعريف خارطة محارف جديدة" ++ ++#: locale/programs/ld-ctype.c:2363 ++msgid "ellipsis range must be marked by two operands of same type" ++msgstr "يجب وسم نطاق الحذف بمعاملين من النوع ذاته" ++ ++#: locale/programs/ld-ctype.c:2372 ++msgid "with symbolic name range values the absolute ellipsis `...' must not be used" ++msgstr "مع قيم نطاق الأسماء الرمزية يجب ألا يستخدم الحذف المطلق `...'" ++ ++#: locale/programs/ld-ctype.c:2387 ++msgid "with UCS range values one must use the hexadecimal symbolic ellipsis `..'" ++msgstr "مع قيم نطاق UCS يجب استخدام الحذف الرمزي الست عشري `..'" ++ ++#: locale/programs/ld-ctype.c:2401 ++msgid "with character code range values one must use the absolute ellipsis `...'" ++msgstr "مع قيم نطاق رموز المحارف يجب استخدام الحذف المطلق `...'" ++ ++#: locale/programs/ld-ctype.c:2552 ++#, c-format ++msgid "duplicated definition for mapping `%s'" ++msgstr "تعريف مكرر للمسح `%s'" ++ ++#: locale/programs/ld-ctype.c:2638 locale/programs/ld-ctype.c:2782 ++#, c-format ++msgid "%s: `translit_start' section does not end with `translit_end'" ++msgstr "%s: مقطع `translit_start' لا ينتهي بـ `translit_end'" ++ ++#: locale/programs/ld-ctype.c:2733 ++#, c-format ++msgid "%s: duplicate `default_missing' definition" ++msgstr "%s: تعريف `default_missing' مكرر" ++ ++#: locale/programs/ld-ctype.c:2738 ++msgid "previous definition was here" ++msgstr "كان التعريف السابق هنا" ++ ++#: locale/programs/ld-ctype.c:2760 ++#, c-format ++msgid "%s: no representable `default_missing' definition found" ++msgstr "%s: لم يعثر على تعريف `default_missing' يمكن تمثيله" ++ ++#: locale/programs/ld-ctype.c:2877 locale/programs/ld-ctype.c:2973 ++#: locale/programs/ld-ctype.c:2992 locale/programs/ld-ctype.c:3012 ++#: locale/programs/ld-ctype.c:3032 locale/programs/ld-ctype.c:3052 ++#: locale/programs/ld-ctype.c:3072 locale/programs/ld-ctype.c:3111 ++#: locale/programs/ld-ctype.c:3131 locale/programs/ld-ctype.c:3197 ++#: locale/programs/ld-ctype.c:3238 locale/programs/ld-ctype.c:3261 ++#, c-format ++msgid "%s: character `%s' not defined while needed as default value" ++msgstr "%s: المحرف `%s' غير معرف بينما هو مطلوب كقيمة مبدئية" ++ ++#: locale/programs/ld-ctype.c:2882 locale/programs/ld-ctype.c:2978 ++#: locale/programs/ld-ctype.c:2997 locale/programs/ld-ctype.c:3017 ++#: locale/programs/ld-ctype.c:3037 locale/programs/ld-ctype.c:3057 ++#: locale/programs/ld-ctype.c:3077 locale/programs/ld-ctype.c:3116 ++#: locale/programs/ld-ctype.c:3136 locale/programs/ld-ctype.c:3202 ++#, c-format ++msgid "%s: character `%s' in charmap not representable with one byte" ++msgstr "%s: المحرف `%s' في خارطة المحارف لا يمكن تمثيله ببايت واحد" ++ ++#: locale/programs/ld-ctype.c:3244 locale/programs/ld-ctype.c:3267 ++#, c-format ++msgid "%s: character `%s' needed as default value not representable with one byte" ++msgstr "%s: المحرف `%s' المطلوب كقيمة مبدئية لا يمكن تمثيله ببايت واحد" ++ ++#: locale/programs/ld-ctype.c:3323 ++msgid "no output digits defined and none of the standard names in the charmap" ++msgstr "لا توجد أرقام مخرجة معرفة ولا أي من الأسماء القياسية في خارطة المحارف" ++ ++#: locale/programs/ld-ctype.c:3545 ++#, c-format ++msgid "%s: transliteration data from locale `%s' not available" ++msgstr "%s: بيانات النقحرة من المحل `%s' غير متاحة" ++ ++#: locale/programs/ld-ctype.c:3644 ++#, c-format ++msgid "%s: table for class \"%s\": %lu bytes" ++msgstr "%s: جدول للفئة \"%s\": %lu بايت" ++ ++#: locale/programs/ld-ctype.c:3708 ++#, c-format ++msgid "%s: table for map \"%s\": %lu bytes" ++msgstr "%s: جدول للخارطة \"%s\": %lu بايت" ++ ++#: locale/programs/ld-ctype.c:3832 ++#, c-format ++msgid "%s: table for width: %lu bytes" ++msgstr "%s: جدول للعرض: %lu بايت" ++ ++#: locale/programs/ld-identification.c:172 ++#, c-format ++msgid "%s: no identification for category `%s'" ++msgstr "%s: لا يوجد تعريف للفئة `%s'" ++ ++#: locale/programs/ld-identification.c:196 ++#, c-format ++msgid "%s: unknown standard `%s' for category `%s'" ++msgstr "%s: معيار مجهول `%s' للفئة `%s'" ++ ++#: locale/programs/ld-identification.c:379 ++#, c-format ++msgid "%s: duplicate category version definition" ++msgstr "%s: تعريف مكرر لإصدار الفئة" ++ ++#: locale/programs/ld-measurement.c:110 ++#, c-format ++msgid "%s: invalid value for field `%s'" ++msgstr "%s: قيمة غير صالحة للحقل `%s'" ++ ++#: locale/programs/ld-messages.c:112 locale/programs/ld-messages.c:145 ++#, c-format ++msgid "%s: field `%s' undefined" ++msgstr "%s: الحقل `%s' غير معرف" ++ ++#: locale/programs/ld-messages.c:118 locale/programs/ld-messages.c:151 ++#: locale/programs/ld-numeric.c:116 ++#, c-format ++msgid "%s: value for field `%s' must not be an empty string" ++msgstr "%s: يجب ألا تكون قيمة الحقل `%s' سلسلة فارغة" ++ ++#: locale/programs/ld-messages.c:134 locale/programs/ld-messages.c:167 ++#, c-format ++msgid "%s: no correct regular expression for field `%s': %s" ++msgstr "%s: لا يوجد تعبير نمطي صحيح للحقل `%s': %s" ++ ++#: locale/programs/ld-monetary.c:310 ++#, c-format ++msgid "%s: value of field `int_curr_symbol' has wrong length" ++msgstr "%s: قيمة الحقل `int_curr_symbol' لها طول خاطئ" ++ ++#: locale/programs/ld-monetary.c:327 ++#, c-format ++msgid "%s: value of field `int_curr_symbol' does not correspond to a valid name in ISO 4217 [--no-warnings=intcurrsym]" ++msgstr "%s: قيمة الحقل `int_curr_symbol' لا تقابل اسماً صالحاً في ISO 4217 [--no-warnings=intcurrsym]" ++ ++#: locale/programs/ld-monetary.c:348 locale/programs/ld-monetary.c:358 ++#, c-format ++msgid "%s: field `%s' not defined, using defaults" ++msgstr "%s: الحقل `%s' غير معرف، يتم استخدام القيم المبدئية" ++ ++#: locale/programs/ld-monetary.c:396 locale/programs/ld-monetary.c:420 ++#, c-format ++msgid "%s: value for field `%s' must be in range %d...%d" ++msgstr "%s: قيمة الحقل `%s' يجب أن تكون في النطاق %d...%d" ++ ++#: locale/programs/ld-monetary.c:656 locale/programs/ld-numeric.c:227 ++#, c-format ++msgid "%s: value for field `%s' must be a single character" ++msgstr "%s: قيمة الحقل `%s' يجب أن تكون محرفاً واحداً" ++ ++#: locale/programs/ld-monetary.c:753 locale/programs/ld-numeric.c:271 ++#, c-format ++msgid "%s: `-1' must be last entry in `%s' field" ++msgstr "%s: `-1' يجب أن يكون آخر مدخل في الحقل `%s'" ++ ++#: locale/programs/ld-monetary.c:775 locale/programs/ld-numeric.c:288 ++#, c-format ++msgid "%s: values for field `%s' must be smaller than 127" ++msgstr "%s: يجب أن تكون قيم الحقل `%s' أصغر من 127" ++ ++#: locale/programs/ld-monetary.c:821 ++msgid "conversion rate value cannot be zero" ++msgstr "لا يمكن لقيمة معدل التحويل أن تكون صفراً" ++ ++#: locale/programs/ld-name.c:127 locale/programs/ld-telephone.c:123 ++#: locale/programs/ld-telephone.c:146 ++#, c-format ++msgid "%s: invalid escape sequence in field `%s'" ++msgstr "%s: تسلسل هروب غير صالح في الحقل `%s'" ++ ++#: locale/programs/ld-time.c:250 ++#, c-format ++msgid "%s: direction flag in string %Zd in `era' field is not '+' nor '-'" ++msgstr "%s: علم الاتجاه في السلسلة %Zd في حقل `era' ليس '+' ولا '-'" ++ ++#: locale/programs/ld-time.c:260 ++#, c-format ++msgid "%s: direction flag in string %Zd in `era' field is not a single character" ++msgstr "%s: علم الاتجاه في السلسلة %Zd في حقل `era' ليس محرفاً واحداً" ++ ++#: locale/programs/ld-time.c:272 ++#, c-format ++msgid "%s: invalid number for offset in string %Zd in `era' field" ++msgstr "%s: عدد غير صالح للإزاحة في السلسلة %Zd في حقل `era'" ++ ++#: locale/programs/ld-time.c:279 ++#, c-format ++msgid "%s: garbage at end of offset value in string %Zd in `era' field" ++msgstr "%s: نفايات في نهاية قيمة الإزاحة في السلسلة %Zd في حقل `era'" ++ ++#: locale/programs/ld-time.c:329 ++#, c-format ++msgid "%s: invalid starting date in string %Zd in `era' field" ++msgstr "%s: تاريخ بدء غير صالح في السلسلة %Zd في حقل `era'" ++ ++#: locale/programs/ld-time.c:337 ++#, c-format ++msgid "%s: garbage at end of starting date in string %Zd in `era' field " ++msgstr "%s: نفايات في نهاية تاريخ البدء في السلسلة %Zd في حقل `era' " ++ ++#: locale/programs/ld-time.c:355 ++#, c-format ++msgid "%s: starting date is invalid in string %Zd in `era' field" ++msgstr "%s: تاريخ البدء غير صالح في السلسلة %Zd في حقل `era'" ++ ++#: locale/programs/ld-time.c:403 locale/programs/ld-time.c:429 ++#, c-format ++msgid "%s: invalid stopping date in string %Zd in `era' field" ++msgstr "%s: تاريخ توقف غير صالح في السلسلة %Zd في حقل `era'" ++ ++#: locale/programs/ld-time.c:411 ++#, c-format ++msgid "%s: garbage at end of stopping date in string %Zd in `era' field" ++msgstr "%s: نفايات في نهاية تاريخ التوقف في السلسلة %Zd في حقل `era'" ++ ++#: locale/programs/ld-time.c:437 ++#, c-format ++msgid "%s: missing era name in string %Zd in `era' field" ++msgstr "%s: اسم العصر مفقود في السلسلة %Zd في حقل `era'" ++ ++#: locale/programs/ld-time.c:448 ++#, c-format ++msgid "%s: missing era format in string %Zd in `era' field" ++msgstr "%s: تنسيق العصر مفقود في السلسلة %Zd في حقل `era'" ++ ++#: locale/programs/ld-time.c:493 ++#, c-format ++msgid "%s: third operand for value of field `%s' must not be larger than %d" ++msgstr "%s: المعامل الثالث لقيمة الحقل `%s' يجب ألا يكون أكبر من %d" ++ ++#: locale/programs/ld-time.c:501 locale/programs/ld-time.c:509 ++#: locale/programs/ld-time.c:517 ++#, c-format ++msgid "%s: values for field `%s' must not be larger than %d" ++msgstr "%s: يجب ألا تكون قيم الحقل `%s' أكبر من %d" ++ ++#: locale/programs/ld-time.c:739 ++#, c-format ++msgid "%s: too few values for field `%s'" ++msgstr "%s: قيم قليلة جداً للحقل `%s'" ++ ++#: locale/programs/ld-time.c:784 ++msgid "extra trailing semicolon" ++msgstr "فاصلة منقوطة تالية زائدة" ++ ++#: locale/programs/ld-time.c:787 ++#, c-format ++msgid "%s: too many values for field `%s'" ++msgstr "%s: قيم كثيرة جداً للحقل `%s'" ++ ++#: locale/programs/linereader.c:130 ++msgid "trailing garbage at end of line" ++msgstr "نفايات تالية في نهاية السطر" ++ ++#: locale/programs/linereader.c:298 ++msgid "garbage at end of number" ++msgstr "نفايات في نهاية الرقم" ++ ++#: locale/programs/linereader.c:423 ++msgid "garbage at end of character code specification" ++msgstr "نفايات في نهاية تحديد رمز المحرف" ++ ++#: locale/programs/linereader.c:531 ++msgid "unterminated symbolic name" ++msgstr "اسم رمزي غير منتهٍ" ++ ++#: locale/programs/linereader.c:716 ++#, c-format ++msgid "invalid UTF-8 sequence %s" ++msgstr "تسلسل UTF-8 غير صالح %s" ++ ++#: locale/programs/linereader.c:796 ++msgid "illegal 8-bit character in untranslated string" ++msgstr "محرف 8-بت غير قانوني في سلسلة غير مترجمة" ++ ++#: locale/programs/linereader.c:804 ++msgid "illegal escape sequence at end of string" ++msgstr "تسلسل هروب غير قانوني في نهاية السلسلة" ++ ++#: locale/programs/linereader.c:808 locale/programs/linereader.c:979 ++msgid "unterminated string" ++msgstr "سلسلة غير منتهية" ++ ++#: locale/programs/linereader.c:841 ++msgid "illegal 8-bit escape sequence" ++msgstr "تسلسل هروب 8-بت غير قانوني" ++ ++#: locale/programs/linereader.c:940 ++#, c-format ++msgid "symbol `%.*s' not in charmap" ++msgstr "الرمز `%.*s' ليس في خارطة المحارف" ++ ++#: locale/programs/linereader.c:961 ++#, c-format ++msgid "symbol `%.*s' not in repertoire map" ++msgstr "الرمز `%.*s' ليس في خارطة الذخيرة" ++ ++#: locale/programs/locale-spec.c:129 ++#, c-format ++msgid "unknown name \"%s\"" ++msgstr "اسم مجهول \"%s\"" ++ ++#: locale/programs/locale.c:69 ++msgid "System information:" ++msgstr "معلومات النظام:" ++ ++#: locale/programs/locale.c:71 ++msgid "Write names of available locales" ++msgstr "كتابة أسماء المحلات المتاحة" ++ ++#: locale/programs/locale.c:73 ++msgid "Write names of available charmaps" ++msgstr "كتابة أسماء خرائط المحارف المتاحة" ++ ++#: locale/programs/locale.c:74 ++msgid "Modify output format:" ++msgstr "تعديل تنسيق المخرجات:" ++ ++#: locale/programs/locale.c:75 ++msgid "Write names of selected categories" ++msgstr "كتابة أسماء الفئات المختارة" ++ ++#: locale/programs/locale.c:76 ++msgid "Write names of selected keywords" ++msgstr "كتابة أسماء الكلمات المفتاحية المختارة" ++ ++#: locale/programs/locale.c:77 ++msgid "Print more information" ++msgstr "طباعة المزيد من المعلومات" ++ ++#: locale/programs/locale.c:82 ++msgid "Get locale-specific information." ++msgstr "الحصول على معلومات خاصة بالمحل." ++ ++#: locale/programs/locale.c:85 ++msgid "" ++"NAME\n" ++"[-a|-m]" ++msgstr "" ++"الاسم\n" ++"[-a|-m]" ++ ++#: locale/programs/locale.c:521 ++#, c-format ++msgid "while preparing output" ++msgstr "أثناء تحضير المخرجات" ++ ++#: locale/programs/locale.c:999 ++#, c-format ++msgid "Cannot set %s to default locale" ++msgstr "لا يمكن ضبط %s إلى المحل المبدئي" ++ ++#: locale/programs/locale.c:1097 ++#, c-format ++msgid "warning: The LOCPATH variable is set to \"%s\"\n" ++msgstr "تحذير: متغير LOCPATH مضبوط إلى \"%s\"\n" ++ ++#: locale/programs/localedef.c:115 ++msgid "Input Files:" ++msgstr "ملفات المدخلات:" ++ ++#: locale/programs/localedef.c:117 ++msgid "Symbolic character names defined in FILE" ++msgstr "أسماء المحارف الرمزية المعرفة في FILE" ++ ++#: locale/programs/localedef.c:119 ++msgid "Source definitions are found in FILE" ++msgstr "تعريفات المصدر موجودة في FILE" ++ ++#: locale/programs/localedef.c:121 ++msgid "FILE contains mapping from symbolic names to UCS4 values" ++msgstr "يحتوي FILE على مسح من الأسماء الرمزية إلى قيم UCS4" ++ ++#: locale/programs/localedef.c:125 ++msgid "Create output even if warning messages were issued" ++msgstr "إنشاء المخرجات حتى لو صدرت رسائل تحذير" ++ ++#: locale/programs/localedef.c:127 ++msgid "Do not create hard links between installed locales" ++msgstr "لا تنشئ روابط صلبة بين المحلات المثبتة" ++ ++#: locale/programs/localedef.c:128 ++msgid "Optional output file prefix" ++msgstr "بادئة ملف مخرجات اختيارية" ++ ++#: locale/programs/localedef.c:129 ++msgid "Strictly conform to POSIX" ++msgstr "الالتزام الصارم بمعيار POSIX" ++ ++#: locale/programs/localedef.c:131 ++msgid "Suppress warnings and information messages" ++msgstr "كتم التحذيرات ورسائل المعلومات" ++ ++#: locale/programs/localedef.c:132 ++msgid "Print more messages" ++msgstr "طباعة المزيد من الرسائل" ++ ++#: locale/programs/localedef.c:133 locale/programs/localedef.c:136 ++msgid "" ++msgstr "<تحذيرات>" ++ ++#: locale/programs/localedef.c:134 ++msgid "Comma-separated list of warnings to disable; supported warnings are: ascii, intcurrsym" ++msgstr "قائمة تحذيرات مفصولة بفواصل لتعطيلها؛ التحذيرات المدعومة هي: ascii, intcurrsym" ++ ++#: locale/programs/localedef.c:137 ++msgid "Comma-separated list of warnings to enable; supported warnings are: ascii, intcurrsym" ++msgstr "قائمة تحذيرات مفصولة بفواصل لتمكينها؛ التحذيرات المدعومة هي: ascii, intcurrsym" ++ ++#: locale/programs/localedef.c:140 ++msgid "Archive control:" ++msgstr "التحكم في الأرشيف:" ++ ++#: locale/programs/localedef.c:142 ++msgid "Don't add new data to archive" ++msgstr "لا تضف بيانات جديدة للأرشيف" ++ ++#: locale/programs/localedef.c:144 ++msgid "Add locales named by parameters to archive" ++msgstr "إضافة المحلات المسماة بالمعاملات إلى الأرشيف" ++ ++#: locale/programs/localedef.c:145 ++msgid "Replace existing archive content" ++msgstr "استبدال محتوى الأرشيف الموجود" ++ ++#: locale/programs/localedef.c:147 ++msgid "Remove locales named by parameters from archive" ++msgstr "إزالة المحلات المسماة بالمعاملات من الأرشيف" ++ ++#: locale/programs/localedef.c:148 ++msgid "List content of archive" ++msgstr "سرد محتوى الأرشيف" ++ ++#: locale/programs/localedef.c:150 ++msgid "locale.alias file to consult when making archive" ++msgstr "ملف locale.alias للاستشارة عند إنشاء الأرشيف" ++ ++#: locale/programs/localedef.c:152 ++msgid "Generate little-endian output" ++msgstr "توليد مخرجات بنهاية صغرى (little-endian)" ++ ++#: locale/programs/localedef.c:154 ++msgid "Generate big-endian output" ++msgstr "توليد مخرجات بنهاية كبرى (big-endian)" ++ ++#: locale/programs/localedef.c:159 ++msgid "Compile locale specification" ++msgstr "ترجمة مواصفات المحل" ++ ++#: locale/programs/localedef.c:162 ++msgid "" ++"NAME\n" ++"[--add-to-archive|--delete-from-archive] FILE...\n" ++"--list-archive [FILE]" ++msgstr "" ++"الاسم\n" ++"[--add-to-archive|--delete-from-archive] ملف...\n" ++"--list-archive [ملف]" ++ ++#: locale/programs/localedef.c:238 ++#, c-format ++msgid "cannot create directory for output files" ++msgstr "لا يمكن إنشاء دليل لملفات المخرجات" ++ ++#: locale/programs/localedef.c:249 ++msgid "FATAL: system does not define `_POSIX2_LOCALEDEF'" ++msgstr "فادح: النظام لا يعرف `_POSIX2_LOCALEDEF'" ++ ++#: locale/programs/localedef.c:263 locale/programs/localedef.c:279 ++#: locale/programs/localedef.c:677 locale/programs/localedef.c:697 ++#, c-format ++msgid "cannot open locale definition file `%s'" ++msgstr "لا يمكن فتح ملف تعريف المحل `%s'" ++ ++#: locale/programs/localedef.c:303 ++#, c-format ++msgid "cannot write output files to `%s'" ++msgstr "لا يمكن كتابة ملفات المخرجات إلى `%s'" ++ ++#: locale/programs/localedef.c:309 ++msgid "no output file produced because errors were issued" ++msgstr "لم ينتج ملف مخرجات بسبب صدور أخطاء" ++ ++#: locale/programs/localedef.c:440 ++#, c-format ++msgid "" ++"System's directory for character maps : %s\n" ++"\t\t repertoire maps: %s\n" ++"\t\t locale path : %s\n" ++"%s" ++msgstr "" ++"دليل النظام لخرائط المحارف : %s\n" ++"\t\t خرائط الذخيرة: %s\n" ++"\t\t مسار المحل : %s\n" ++"%s" ++ ++#: locale/programs/localedef.c:545 ++#, c-format ++msgid "cannot create output path '%s': %s" ++msgstr "لا يمكن إنشاء مسار المخرجات '%s': %s" ++ ++#: locale/programs/localedef.c:553 ++#, c-format ++msgid "no write permission to output path '%s': %s" ++msgstr "لا يوجد إذن كتابة لمسار المخرجات '%s': %s" ++ ++#: locale/programs/localedef.c:645 ++msgid "circular dependencies between locale definitions" ++msgstr "تبعيات دائرية بين تعريفات المحلات" ++ ++#: locale/programs/localedef.c:651 ++#, c-format ++msgid "cannot add already read locale `%s' a second time" ++msgstr "لا يمكن إضافة المحل المقروء مسبقاً `%s' مرة ثانية" ++ ++#: locale/programs/locarchive.c:132 locale/programs/locarchive.c:379 ++#, c-format ++msgid "cannot create temporary file: %s" ++msgstr "لا يمكن إنشاء ملف مؤقت: %s" ++ ++#: locale/programs/locarchive.c:166 locale/programs/locarchive.c:429 ++#, c-format ++msgid "cannot initialize archive file" ++msgstr "لا يمكن تهيئة ملف الأرشيف" ++ ++#: locale/programs/locarchive.c:173 locale/programs/locarchive.c:436 ++#, c-format ++msgid "cannot resize archive file" ++msgstr "لا يمكن تغيير حجم ملف الأرشيف" ++ ++#: locale/programs/locarchive.c:188 locale/programs/locarchive.c:451 ++#: locale/programs/locarchive.c:686 ++#, c-format ++msgid "cannot map archive header" ++msgstr "لا يمكن مسح ترويسة الأرشيف" ++ ++#: locale/programs/locarchive.c:210 ++#, c-format ++msgid "failed to create new locale archive" ++msgstr "فشل إنشاء أرشيف محل جديد" ++ ++#: locale/programs/locarchive.c:222 ++#, c-format ++msgid "cannot change mode of new locale archive" ++msgstr "لا يمكن تغيير نمط أرشيف المحل الجديد" ++ ++#: locale/programs/locarchive.c:323 ++msgid "cannot read data from locale archive" ++msgstr "لا يمكن قراءة البيانات من أرشيف المحل" ++ ++#: locale/programs/locarchive.c:354 ++#, c-format ++msgid "cannot map locale archive file" ++msgstr "لا يمكن مسح ملف أرشيف المحل" ++ ++#: locale/programs/locarchive.c:459 ++#, c-format ++msgid "cannot lock new archive" ++msgstr "لا يمكن قفل الأرشيف الجديد" ++ ++#: locale/programs/locarchive.c:528 ++#, c-format ++msgid "cannot extend locale archive file" ++msgstr "لا يمكن تمديد ملف أرشيف المحل" ++ ++#: locale/programs/locarchive.c:537 ++#, c-format ++msgid "cannot change mode of resized locale archive" ++msgstr "لا يمكن تغيير نمط أرشيف المحل الذي غيّر حجمه" ++ ++#: locale/programs/locarchive.c:545 ++#, c-format ++msgid "cannot rename new archive" ++msgstr "لا يمكن إعادة تسمية الأرشيف الجديد" ++ ++#: locale/programs/locarchive.c:607 ++#, c-format ++msgid "cannot open locale archive \"%s\"" ++msgstr "لا يمكن فتح أرشيف المحل \"%s\"" ++ ++#: locale/programs/locarchive.c:612 ++#, c-format ++msgid "cannot stat locale archive \"%s\"" ++msgstr "لا يمكن فحص (stat) أرشيف المحل \"%s\"" ++ ++#: locale/programs/locarchive.c:631 ++#, c-format ++msgid "cannot lock locale archive \"%s\"" ++msgstr "لا يمكن قفل أرشيف المحل \"%s\"" ++ ++#: locale/programs/locarchive.c:642 locale/programs/locarchive.c:656 ++#: locale/programs/locarchive.c:664 locale/programs/locarchive.c:685 ++#, c-format ++msgid "cannot unlock archive header" ++msgstr "لا يمكن إلغاء قفل ترويسة الأرشيف" ++ ++#: locale/programs/locarchive.c:657 ++#, c-format ++msgid "cannot read archive header" ++msgstr "لا يمكن قراءة ترويسة الأرشيف" ++ ++#: locale/programs/locarchive.c:665 ++#, c-format ++msgid "bad magic value in archive header" ++msgstr "قيمة سحرية سيئة في ترويسة الأرشيف" ++ ++#: locale/programs/locarchive.c:740 ++#, c-format ++msgid "locale '%s' already exists" ++msgstr "المحل '%s' موجود مسبقاً" ++ ++#: locale/programs/locarchive.c:1015 locale/programs/locarchive.c:1030 ++#: locale/programs/locarchive.c:1042 locale/programs/locarchive.c:1054 ++#: locale/programs/locfile.c:349 ++#, c-format ++msgid "cannot add to locale archive" ++msgstr "لا يمكن الإضافة إلى أرشيف المحل" ++ ++#: locale/programs/locarchive.c:1223 ++#, c-format ++msgid "locale alias file `%s' not found" ++msgstr "ملف اسم مستعار المحل `%s' غير موجود" ++ ++#: locale/programs/locarchive.c:1371 ++#, c-format ++msgid "Adding %s\n" ++msgstr "إضافة %s\n" ++ ++#: locale/programs/locarchive.c:1377 ++#, c-format ++msgid "stat of \"%s\" failed: %s: ignored" ++msgstr "فشل فحص (stat) لـ \"%s\": %s: تم تجاهله" ++ ++#: locale/programs/locarchive.c:1383 ++#, c-format ++msgid "\"%s\" is no directory; ignored" ++msgstr "\"%s\" ليس دليلاً؛ تم تجاهله" ++ ++#: locale/programs/locarchive.c:1390 ++#, c-format ++msgid "cannot open directory \"%s\": %s: ignored" ++msgstr "لا يمكن فتح الدليل \"%s\": %s: تم تجاهله" ++ ++#: locale/programs/locarchive.c:1458 ++#, c-format ++msgid "incomplete set of locale files in \"%s\"" ++msgstr "مجموعة غير مكتملة من ملفات المحل في \"%s\"" ++ ++#: locale/programs/locarchive.c:1522 ++#, c-format ++msgid "cannot read all files in \"%s\": ignored" ++msgstr "لا يمكن قراءة جميع الملفات في \"%s\": تم تجاهله" ++ ++#: locale/programs/locarchive.c:1592 ++#, c-format ++msgid "locale \"%s\" not in archive" ++msgstr "المحل \"%s\" ليس في الأرشيف" ++ ++#: locale/programs/locfile.c:136 ++#, c-format ++msgid "argument to `%s' must be a single character" ++msgstr "يجب أن يكون المعامل لـ `%s' محرفاً واحداً" ++ ++#: locale/programs/locfile.c:256 ++msgid "syntax error: not inside a locale definition section" ++msgstr "خطأ في بناء الجملة: ليس داخل مقطع تعريف محل" ++ ++#: locale/programs/locfile.c:798 ++#, c-format ++msgid "cannot open output file `%s' for category `%s'" ++msgstr "لا يمكن فتح ملف المخرجات `%s' للفئة `%s'" ++ ++#: locale/programs/locfile.c:821 ++#, c-format ++msgid "failure while writing data for category `%s'" ++msgstr "فشل أثناء كتابة البيانات للفئة `%s'" ++ ++#: locale/programs/locfile.c:929 ++#, c-format ++msgid "cannot create output file `%s' for category `%s'" ++msgstr "لا يمكن إنشاء ملف المخرجات `%s' للفئة `%s'" ++ ++#: locale/programs/locfile.c:965 ++msgid "expecting string argument for `copy'" ++msgstr "يتوقع معامل سلسلة لـ `copy'" ++ ++#: locale/programs/locfile.c:969 ++msgid "locale name should consist only of portable characters" ++msgstr "يجب أن يتكون اسم المحل من محارف محمولة فقط" ++ ++#: locale/programs/locfile.c:988 ++msgid "no other keyword shall be specified when `copy' is used" ++msgstr "يجب عدم تحديد أي كلمة مفتاحية أخرى عند استخدام `copy'" ++ ++#: locale/programs/locfile.c:1002 ++#, c-format ++msgid "`%1$s' definition does not end with `END %1$s'" ++msgstr "تعريف `%1$s' لا ينتهي بـ `END %1$s'" ++ ++#: locale/programs/repertoire.c:227 locale/programs/repertoire.c:268 ++#: locale/programs/repertoire.c:293 ++#, c-format ++msgid "syntax error in repertoire map definition: %s" ++msgstr "خطأ في بناء الجملة في تعريف خارطة الذخيرة: %s" ++ ++#: locale/programs/repertoire.c:269 ++msgid "no or value given" ++msgstr "لم تعطَ قيمة أو " ++ ++#: locale/programs/repertoire.c:329 ++msgid "cannot save new repertoire map" ++msgstr "لا يمكن حفظ خارطة ذخيرة جديدة" ++ ++#: locale/programs/repertoire.c:340 ++#, c-format ++msgid "repertoire map file `%s' not found" ++msgstr "ملف خارطة الذخيرة `%s' غير موجود" ++ ++#: login/programs/pt_chown.c:78 ++#, c-format ++msgid "Set the owner, group and access permission of the slave pseudo terminal corresponding to the master pseudo terminal passed on file descriptor `%d'. This is the helper program for the `grantpt' function. It is not intended to be run directly from the command line.\n" ++msgstr "ضبط المالك والمجموعة وإذن الوصول للطرفية الوهمية التابعة المقابلة للطرفية الوهمية الرئيسية الممرة في واصف الملف `%d'. هذا برنامج مساعد لوظيفة `grantpt'. ليس من المقصود تشغيله مباشرة من سطر الأوامر.\n" ++ ++#: login/programs/pt_chown.c:92 ++#, c-format ++msgid "" ++"The owner is set to the current user, the group is set to `%s', and the access permission is set to `%o'.\n" ++"\n" ++"%s" ++msgstr "" ++"المالك مضبوط إلى المستخدم الحالي، والمجموعة مضبوطة إلى `%s'، وإذن الوصول مضبوط إلى `%o'.\n" ++"\n" ++"%s" ++ ++#: login/programs/pt_chown.c:203 ++#, c-format ++msgid "too many arguments" ++msgstr "معاملات كثيرة جداً" ++ ++#: login/programs/pt_chown.c:211 ++#, c-format ++msgid "needs to be installed setuid `root'" ++msgstr "يحتاج إلى التثبيت بـ setuid `root'" ++ ++#: malloc/mcheck-impl.c:354 ++msgid "memory is consistent, library is buggy\n" ++msgstr "الذاكرة متسقة، المكتبة بها علل\n" ++ ++#: malloc/mcheck-impl.c:357 ++msgid "memory clobbered before allocated block\n" ++msgstr "الذاكرة تضررت قبل الكتلة المخصصة\n" ++ ++#: malloc/mcheck-impl.c:360 ++msgid "memory clobbered past end of allocated block\n" ++msgstr "الذاكرة تضررت بعد نهاية الكتلة المخصصة\n" ++ ++#: malloc/mcheck-impl.c:363 ++msgid "block freed twice\n" ++msgstr "تم تحرير الكتلة مرتين\n" ++ ++#: malloc/mcheck-impl.c:366 ++msgid "bogus mcheck_status, library is buggy\n" ++msgstr "حالة mcheck_status زائفة، المكتبة بها علل\n" ++ ++#: malloc/memusage.sh:31 ++msgid "%s: option '%s' requires an argument\\n" ++msgstr "%s: الخيار '%s' يتطلب معامل\\n" ++ ++#: malloc/memusage.sh:37 ++msgid "" ++"Usage: memusage [OPTION]... PROGRAM [PROGRAMOPTION]...\n" ++"Profile memory usage of PROGRAM.\n" ++"\n" ++" -n,--progname=NAME Name of the program file to profile\n" ++" -p,--png=FILE Generate PNG graphic and store it in FILE\n" ++" -d,--data=FILE Generate binary data file and store it in FILE\n" ++" -u,--unbuffered Don't buffer output\n" ++" -b,--buffer=SIZE Collect SIZE entries before writing them out\n" ++" --no-timer Don't collect additional information through timer\n" ++" -m,--mmap Also trace mmap & friends\n" ++"\n" ++" -?,--help Print this help and exit\n" ++" --usage Give a short usage message\n" ++" -V,--version Print version information and exit\n" ++"\n" ++" The following options only apply when generating graphical output:\n" ++" -t,--time-based Make graph linear in time\n" ++" -T,--total Also draw graph of total memory use\n" ++" --title=STRING Use STRING as title of the graph\n" ++" -x,--x-size=SIZE Make graphic SIZE pixels wide\n" ++" -y,--y-size=SIZE Make graphic SIZE pixels high\n" ++"\n" ++"Mandatory arguments to long options are also mandatory for any corresponding\n" ++"short options.\n" ++"\n" ++msgstr "" ++"الاستخدام: memusage [خيار]... البرنامج [خيار-البرنامج]...\n" ++"توليد تشكيلة استخدام الذاكرة للبرنامج.\n" ++"\n" ++" -n,--progname=NAME اسم ملف البرنامج لتوليد تشكيلة له\n" ++" -p,--png=FILE توليد رسم PNG وتخزينه في FILE\n" ++" -d,--data=FILE توليد ملف بيانات ثنائي وتخزينه في FILE\n" ++" -u,--unbuffered لا تضع المخرجات في ذاكرة وسيطة\n" ++" -b,--buffer=SIZE جمع SIZE مدخلات قبل كتابتها\n" ++" --no-timer لا تجمع معلومات إضافية عبر المؤقت\n" ++" -m,--mmap تتبع أيضاً mmap وأخواتها\n" ++"\n" ++" -?,--help طباعة هذه المساعدة والخروج\n" ++" --usage إعطاء رسالة استخدام قصيرة\n" ++" -V,--version طباعة معلومات الإصدار والخروج\n" ++"\n" ++" الخيارات التالية تنطبق فقط عند توليد مخرجات رسومية:\n" ++" -t,--time-based جعل الرسم بيانياً خطياً في الزمن\n" ++" -T,--total رسم بياني أيضاً لإجمالي استخدام الذاكرة\n" ++" --title=STRING استخدام STRING كعنوان للرسم البياني\n" ++" -x,--x-size=SIZE جعل عرض الرسم SIZE بكسل\n" ++" -y,--y-size=SIZE جعل ارتفاع الرسم SIZE بكسل\n" ++"\n" ++"المعاملات الإلزامية للخيارات الطويلة هي إلزامية أيضاً للخيارات القصيرة المقابلة.\n" ++"\n" ++ ++#: malloc/memusage.sh:98 ++msgid "" ++"Syntax: memusage [--data=FILE] [--progname=NAME] [--png=FILE] [--unbuffered]\n" ++"\t [--buffer=SIZE] [--no-timer] [--time-based] [--total]\n" ++"\t [--title=STRING] [--x-size=SIZE] [--y-size=SIZE]\n" ++"\t PROGRAM [PROGRAMOPTION]..." ++msgstr "" ++"بناء الجملة: memusage [--data=ملف] [--progname=اسم] [--png=ملف] [--unbuffered]\n" ++"\t [--buffer=حجم] [--no-timer] [--time-based] [--total]\n" ++"\t [--title=سلسلة] [--x-size=حجم] [--y-size=حجم]\n" ++"\t البرنامج [خيار-البرنامج]..." ++ ++#: malloc/memusage.sh:190 ++msgid "memusage: option \\`${1##*=}' is ambiguous" ++msgstr "memusage: الخيار \\`${1##*=}' غامض" ++ ++#: malloc/memusage.sh:199 ++msgid "memusage: unrecognized option \\`$1'" ++msgstr "memusage: خيار غير معروف \\`$1'" ++ ++#: malloc/memusage.sh:212 ++msgid "No program name given" ++msgstr "لم يعطَ اسم برنامج" ++ ++#: malloc/memusagestat.c:56 ++msgid "Name output file" ++msgstr "تسمية ملف المخرجات" ++ ++#: malloc/memusagestat.c:57 ++msgid "STRING" ++msgstr "سلسلة" ++ ++#: malloc/memusagestat.c:57 ++msgid "Title string used in output graphic" ++msgstr "سلسلة العنوان المستخدمة في الرسم البياني المخرج" ++ ++#: malloc/memusagestat.c:58 ++msgid "Generate output linear to time (default is linear to number of function calls)" ++msgstr "توليد مخرجات خطية للزمن (المبدئي خطي لعدد استدعاءات الدالة)" ++ ++#: malloc/memusagestat.c:62 ++msgid "Also draw graph for total memory consumption" ++msgstr "رسم بياني أيضاً لإجمالي استهلاك الذاكرة" ++ ++#: malloc/memusagestat.c:63 ++msgid "VALUE" ++msgstr "قيمة" ++ ++#: malloc/memusagestat.c:64 ++msgid "Make output graphic VALUE pixels wide" ++msgstr "جعل عرض الرسم المخرج VALUE بكسل" ++ ++#: malloc/memusagestat.c:65 ++msgid "Make output graphic VALUE pixels high" ++msgstr "جعل ارتفاع الرسم المخرج VALUE بكسل" ++ ++#: malloc/memusagestat.c:70 ++msgid "Generate graphic from memory profiling data" ++msgstr "توليد رسم بياني من بيانات تشكيلة الذاكرة" ++ ++#: malloc/memusagestat.c:73 ++msgid "DATAFILE [OUTFILE]" ++msgstr "ملف-بيانات [ملف-مخرجات]" ++ ++#: misc/error.c:192 ++msgid "Unknown system error" ++msgstr "خطأ نظام مجهول" ++ ++#: nis/nis_callback.c:187 ++msgid "unable to free arguments" ++msgstr "غير قادر على تحرير المعاملات" ++ ++#: nis/nis_error.h:1 nis/ypclnt.c:832 nis/ypclnt.c:921 posix/regcomp.c:135 ++#: sysdeps/gnu/errlist.h:1 sysdeps/posix/gai_strerror-strs.h:1 ++msgid "Success" ++msgstr "نجاح" ++ ++#: nis/nis_error.h:2 ++msgid "Probable success" ++msgstr "نجاح محتمل" ++ ++#: nis/nis_error.h:3 ++msgid "Not found" ++msgstr "لم يُعثر عليه" ++ ++#: nis/nis_error.h:4 ++msgid "Probably not found" ++msgstr "غالباً لم يُعثر عليه" ++ ++#: nis/nis_error.h:5 ++msgid "Cache expired" ++msgstr "انتهت صلاحية الخبيئة" ++ ++#: nis/nis_error.h:6 ++msgid "NIS+ servers unreachable" ++msgstr "لا يمكن الوصول لخوادم NIS+" ++ ++#: nis/nis_error.h:7 ++msgid "Unknown object" ++msgstr "كائن مجهول" ++ ++#: nis/nis_error.h:8 ++msgid "Server busy, try again" ++msgstr "الخادم مشغول، حاول ثانية" ++ ++#: nis/nis_error.h:9 ++msgid "Generic system error" ++msgstr "خطأ نظام عام" ++ ++#: nis/nis_error.h:10 ++msgid "First/next chain broken" ++msgstr "سلسلة الأول/التالي مكسورة" ++ ++#. TRANS The file permissions do not allow the attempted operation. ++#: nis/nis_error.h:11 nis/ypclnt.c:877 sysdeps/gnu/errlist.h:90 ++msgid "Permission denied" ++msgstr "الإذن مرفوض" ++ ++#: nis/nis_error.h:12 ++msgid "Not owner" ++msgstr "ليس المالك" ++ ++#: nis/nis_error.h:13 ++msgid "Name not served by this server" ++msgstr "الاسم لا يخدمه هذا الخادم" ++ ++#: nis/nis_error.h:14 ++msgid "Server out of memory" ++msgstr "نفدت ذاكرة الخادم" ++ ++#: nis/nis_error.h:15 ++msgid "Object with same name exists" ++msgstr "يوجد كائن بالاسم ذاته" ++ ++#: nis/nis_error.h:16 ++msgid "Not master server for this domain" ++msgstr "ليس الخادم الرئيسي لهذا النطاق" ++ ++#: nis/nis_error.h:17 ++msgid "Invalid object for operation" ++msgstr "كائن غير صالح للعملية" ++ ++#: nis/nis_error.h:18 ++msgid "Malformed name, or illegal name" ++msgstr "اسم مشوه، أو اسم غير قانوني" ++ ++#: nis/nis_error.h:19 ++msgid "Unable to create callback" ++msgstr "غير قادر على إنشاء استدعاء راجع" ++ ++#: nis/nis_error.h:20 ++msgid "Results sent to callback proc" ++msgstr "أرسلت النتائج إلى إجراء الاستدعاء الراجع" ++ ++#: nis/nis_error.h:21 ++msgid "Not found, no such name" ++msgstr "لم يُعثر عليه، لا يوجد اسم كهذا" ++ ++#: nis/nis_error.h:22 ++msgid "Name/entry isn't unique" ++msgstr "الاسم/المدخل ليس فريداً" ++ ++#: nis/nis_error.h:23 ++msgid "Modification failed" ++msgstr "فشل التعديل" ++ ++#: nis/nis_error.h:24 ++msgid "Database for table does not exist" ++msgstr "قاعدة بيانات الجدول غير موجودة" ++ ++#: nis/nis_error.h:25 ++msgid "Entry/table type mismatch" ++msgstr "عدم تطابق نوع المدخل/الجدول" ++ ++#: nis/nis_error.h:26 ++msgid "Link points to illegal name" ++msgstr "الرابط يشير إلى اسم غير قانوني" ++ ++#: nis/nis_error.h:27 ++msgid "Partial success" ++msgstr "نجاح جزئي" ++ ++#: nis/nis_error.h:28 ++msgid "Too many attributes" ++msgstr "سمات كثيرة جداً" ++ ++#: nis/nis_error.h:29 ++msgid "Error in RPC subsystem" ++msgstr "خطأ في نظام RPC الفرعي" ++ ++#: nis/nis_error.h:30 ++msgid "Missing or malformed attribute" ++msgstr "سمة مفقودة أو مشوهة" ++ ++#: nis/nis_error.h:31 ++msgid "Named object is not searchable" ++msgstr "الكائن المسمى غير قابل للبحث" ++ ++#: nis/nis_error.h:32 ++msgid "Error while talking to callback proc" ++msgstr "خطأ أثناء التحدث مع إجراء الاستدعاء الراجع" ++ ++#: nis/nis_error.h:33 ++msgid "Non NIS+ namespace encountered" ++msgstr "واجه مساحة أسماء ليست NIS+" ++ ++#: nis/nis_error.h:34 ++msgid "Illegal object type for operation" ++msgstr "نوع كائن غير قانوني للعملية" ++ ++#: nis/nis_error.h:35 ++msgid "Passed object is not the same object on server" ++msgstr "الكائن الممر ليس هو الكائن ذاته على الخادم" ++ ++#: nis/nis_error.h:36 ++msgid "Modify operation failed" ++msgstr "فشلت عملية التعديل" ++ ++#: nis/nis_error.h:37 ++msgid "Query illegal for named table" ++msgstr "استعلام غير قانوني للجدول المسمى" ++ ++#: nis/nis_error.h:38 ++msgid "Attempt to remove a non-empty table" ++msgstr "محاولة إزالة جدول غير فارغ" ++ ++#: nis/nis_error.h:39 ++msgid "Error in accessing NIS+ cold start file. Is NIS+ installed?" ++msgstr "خطأ في الوصول إلى ملف البدء البارد لـ NIS+. هل NIS+ مثبت؟" ++ ++#: nis/nis_error.h:40 ++msgid "Full resync required for directory" ++msgstr "مزامنة كاملة مطلوبة للدليل" ++ ++#: nis/nis_error.h:41 ++msgid "NIS+ operation failed" ++msgstr "فشلت عملية NIS+" ++ ++#: nis/nis_error.h:42 ++msgid "NIS+ service is unavailable or not installed" ++msgstr "خدمة NIS+ غير متاحة أو غير مثبتة" ++ ++#: nis/nis_error.h:43 ++msgid "Yes, 42 is the meaning of life" ++msgstr "نعم، 42 هي معنى الحياة" ++ ++#: nis/nis_error.h:44 ++msgid "Unable to authenticate NIS+ server" ++msgstr "غير قادر على إجراء الاستيثاق لخادم NIS+" ++ ++#: nis/nis_error.h:45 ++msgid "Unable to authenticate NIS+ client" ++msgstr "غير قادر على إجراء الاستيثاق لعميل NIS+" ++ ++#: nis/nis_error.h:46 ++msgid "No file space on server" ++msgstr "لا توجد مساحة ملفات على الخادم" ++ ++#: nis/nis_error.h:47 ++msgid "Unable to create process on server" ++msgstr "غير قادر على إنشاء عملية على الخادم" ++ ++#: nis/nis_error.h:48 ++msgid "Master server busy, full dump rescheduled." ++msgstr "الخادم الرئيسي مشغول، أعيدت جدولة التفريغ الكامل." ++ ++#: nis/nis_local_names.c:122 ++#, c-format ++msgid "LOCAL entry for UID %d in directory %s not unique\n" ++msgstr "مدخل LOCAL لـ UID %d في الدليل %s ليس فريداً\n" ++ ++#: nis/nis_print.c:51 ++msgid "UNKNOWN" ++msgstr "مجهول" ++ ++#: nis/nis_print.c:61 ++msgid "BOGUS OBJECT" ++msgstr "كائن زائف" ++ ++#: nis/nis_print.c:63 ++msgid "NO OBJECT" ++msgstr "لا كائن" ++ ++#: nis/nis_print.c:65 ++msgid "DIRECTORY" ++msgstr "دليل" ++ ++#: nis/nis_print.c:67 ++msgid "GROUP" ++msgstr "مجموعة" ++ ++#: nis/nis_print.c:69 nscd/nscd.c:117 ++msgid "TABLE" ++msgstr "جدول" ++ ++#: nis/nis_print.c:71 ++msgid "ENTRY" ++msgstr "مدخل" ++ ++#: nis/nis_print.c:73 ++msgid "LINK" ++msgstr "رابط" ++ ++#: nis/nis_print.c:75 ++msgid "PRIVATE\n" ++msgstr "خاص\n" ++ ++#: nis/nis_print.c:77 ++msgid "(Unknown object" ++msgstr "(كائن مجهول" ++ ++#: nis/nis_print.c:164 ++#, c-format ++msgid "Name : `%s'\n" ++msgstr "الاسم : `%s'\n" ++ ++#: nis/nis_print.c:165 ++#, c-format ++msgid "Type : %s\n" ++msgstr "النوع : %s\n" ++ ++#: nis/nis_print.c:170 ++msgid "Master Server :\n" ++msgstr "الخادم الرئيسي :\n" ++ ++#: nis/nis_print.c:172 ++msgid "Replicate :\n" ++msgstr "نسخة مكررة :\n" ++ ++#: nis/nis_print.c:173 ++#, c-format ++msgid "\tName : %s\n" ++msgstr "\tالاسم : %s\n" ++ ++#: nis/nis_print.c:174 ++msgid "\tPublic Key : " ++msgstr "\tالمفتاح العام : " ++ ++#: nis/nis_print.c:178 ++msgid "None.\n" ++msgstr "لا شيء.\n" ++ ++#: nis/nis_print.c:181 ++#, c-format ++msgid "Diffie-Hellmann (%d bits)\n" ++msgstr "ديفي-هيلمان (%d بت)\n" ++ ++#: nis/nis_print.c:186 ++#, c-format ++msgid "RSA (%d bits)\n" ++msgstr "آر إس إيه (%d بت)\n" ++ ++#: nis/nis_print.c:189 ++msgid "Kerberos.\n" ++msgstr "كيربيروس.\n" ++ ++#: nis/nis_print.c:192 ++#, c-format ++msgid "Unknown (type = %d, bits = %d)\n" ++msgstr "مجهول (النوع = %d، البتات = %d)\n" ++ ++#: nis/nis_print.c:203 ++#, c-format ++msgid "\tUniversal addresses (%u)\n" ++msgstr "\tعناوين عالمية (%u)\n" ++ ++#: nis/nis_print.c:225 ++msgid "Time to live : " ++msgstr "زمن الحياة : " ++ ++#: nis/nis_print.c:227 ++msgid "Default Access rights :\n" ++msgstr "حقوق الوصول المبدئية :\n" ++ ++#: nis/nis_print.c:236 ++#, c-format ++msgid "\tType : %s\n" ++msgstr "\tالنوع : %s\n" ++ ++#: nis/nis_print.c:237 ++msgid "\tAccess rights: " ++msgstr "\tحقوق الوصول: " ++ ++#: nis/nis_print.c:251 ++msgid "Group Flags :" ++msgstr "أعلام المجموعة :" ++ ++#: nis/nis_print.c:254 ++msgid "" ++"\n" ++"Group Members :\n" ++msgstr "" ++"\n" ++"أعضاء المجموعة :\n" ++ ++#: nis/nis_print.c:266 ++#, c-format ++msgid "Table Type : %s\n" ++msgstr "نوع الجدول : %s\n" ++ ++#: nis/nis_print.c:267 ++#, c-format ++msgid "Number of Columns : %d\n" ++msgstr "عدد الأعمدة : %d\n" ++ ++#: nis/nis_print.c:268 ++#, c-format ++msgid "Character Separator : %c\n" ++msgstr "فاصل المحارف : %c\n" ++ ++#: nis/nis_print.c:269 ++#, c-format ++msgid "Search Path : %s\n" ++msgstr "مسار البحث : %s\n" ++ ++#: nis/nis_print.c:270 ++msgid "Columns :\n" ++msgstr "الأعمدة :\n" ++ ++#: nis/nis_print.c:273 ++#, c-format ++msgid "\t[%d]\tName : %s\n" ++msgstr "\t[%d]\tالاسم : %s\n" ++ ++#: nis/nis_print.c:275 ++msgid "\t\tAttributes : " ++msgstr "\t\tالسمات : " ++ ++#: nis/nis_print.c:277 ++msgid "\t\tAccess Rights : " ++msgstr "\t\tحقوق الوصول : " ++ ++#: nis/nis_print.c:287 ++msgid "Linked Object Type : " ++msgstr "نوع الكائن المرتبط : " ++ ++#: nis/nis_print.c:289 ++#, c-format ++msgid "Linked to : %s\n" ++msgstr "مرتبط بـ : %s\n" ++ ++#: nis/nis_print.c:299 ++#, c-format ++msgid "\tEntry data of type %s\n" ++msgstr "\tبيانات المدخل من النوع %s\n" ++ ++#: nis/nis_print.c:302 ++#, c-format ++msgid "\t[%u] - [%u bytes] " ++msgstr "\t[%u] - [%u بايت] " ++ ++#: nis/nis_print.c:305 ++msgid "Encrypted data\n" ++msgstr "بيانات مشفرة\n" ++ ++#: nis/nis_print.c:307 ++msgid "Binary data\n" ++msgstr "بيانات ثنائية\n" ++ ++#: nis/nis_print.c:323 ++#, c-format ++msgid "Object Name : %s\n" ++msgstr "اسم الكائن : %s\n" ++ ++#: nis/nis_print.c:324 ++#, c-format ++msgid "Directory : %s\n" ++msgstr "الدليل : %s\n" ++ ++#: nis/nis_print.c:325 ++#, c-format ++msgid "Owner : %s\n" ++msgstr "المالك : %s\n" ++ ++#: nis/nis_print.c:326 ++#, c-format ++msgid "Group : %s\n" ++msgstr "المجموعة : %s\n" ++ ++#: nis/nis_print.c:327 ++msgid "Access Rights : " ++msgstr "حقوق الوصول : " ++ ++#: nis/nis_print.c:329 ++#, c-format ++msgid "" ++"\n" ++"Time to Live : " ++msgstr "" ++"\n" ++"زمن الحياة : " ++ ++#: nis/nis_print.c:332 ++#, c-format ++msgid "Creation Time : %s" ++msgstr "وقت الإنشاء : %s" ++ ++#: nis/nis_print.c:334 ++#, c-format ++msgid "Mod. Time : %s" ++msgstr "وقت التعديل : %s" ++ ++#: nis/nis_print.c:335 ++msgid "Object Type : " ++msgstr "نوع الكائن : " ++ ++#: nis/nis_print.c:355 ++#, c-format ++msgid " Data Length = %u\n" ++msgstr " طول البيانات = %u\n" ++ ++#: nis/nis_print.c:369 ++#, c-format ++msgid "Status : %s\n" ++msgstr "الحالة : %s\n" ++ ++#: nis/nis_print.c:370 ++#, c-format ++msgid "Number of objects : %u\n" ++msgstr "عدد الكائنات : %u\n" ++ ++#: nis/nis_print.c:374 ++#, c-format ++msgid "Object #%d:\n" ++msgstr "كائن رقم %d:\n" ++ ++#: nis/nis_print_group_entry.c:116 ++#, c-format ++msgid "Group entry for \"%s.%s\" group:\n" ++msgstr "مدخل مجموعة لمجموعة \"%s.%s\":\n" ++ ++#: nis/nis_print_group_entry.c:124 ++msgid " Explicit members:\n" ++msgstr " أعضاء صريحون:\n" ++ ++#: nis/nis_print_group_entry.c:129 ++msgid " No explicit members\n" ++msgstr " لا يوجد أعضاء صريحون\n" ++ ++#: nis/nis_print_group_entry.c:132 ++msgid " Implicit members:\n" ++msgstr " أعضاء ضمنيون:\n" ++ ++#: nis/nis_print_group_entry.c:137 ++msgid " No implicit members\n" ++msgstr " لا يوجد أعضاء ضمنيون\n" ++ ++#: nis/nis_print_group_entry.c:140 ++msgid " Recursive members:\n" ++msgstr " أعضاء متكررون:\n" ++ ++#: nis/nis_print_group_entry.c:145 ++msgid " No recursive members\n" ++msgstr " لا يوجد أعضاء متكررون\n" ++ ++#: nis/nis_print_group_entry.c:148 ++msgid " Explicit nonmembers:\n" ++msgstr " غير أعضاء صريحون:\n" ++ ++#: nis/nis_print_group_entry.c:153 ++msgid " No explicit nonmembers\n" ++msgstr " لا يوجد غير أعضاء صريحون\n" ++ ++#: nis/nis_print_group_entry.c:156 ++msgid " Implicit nonmembers:\n" ++msgstr " غير أعضاء ضمنيون:\n" ++ ++#: nis/nis_print_group_entry.c:161 ++msgid " No implicit nonmembers\n" ++msgstr " لا يوجد غير أعضاء ضمنيون\n" ++ ++#: nis/nis_print_group_entry.c:164 ++msgid " Recursive nonmembers:\n" ++msgstr " غير أعضاء متكررون:\n" ++ ++#: nis/nis_print_group_entry.c:169 ++msgid " No recursive nonmembers\n" ++msgstr " لا يوجد غير أعضاء متكررون\n" ++ ++#: nis/ypclnt.c:835 ++msgid "Request arguments bad" ++msgstr "معاملات الطلب سيئة" ++ ++#: nis/ypclnt.c:838 ++msgid "RPC failure on NIS operation" ++msgstr "فشل RPC في عملية NIS" ++ ++#: nis/ypclnt.c:841 ++msgid "Can't bind to server which serves this domain" ++msgstr "لا يمكن الربط بالخادم الذي يخدم هذا النطاق" ++ ++#: nis/ypclnt.c:844 ++msgid "No such map in server's domain" ++msgstr "لا توجد خارطة كهذه في نطاق الخادم" ++ ++#: nis/ypclnt.c:847 ++msgid "No such key in map" ++msgstr "لا يوجد مفتاح كهذا في الخارطة" ++ ++#: nis/ypclnt.c:850 ++msgid "Internal NIS error" ++msgstr "خطأ NIS داخلي" ++ ++#: nis/ypclnt.c:853 ++msgid "Local resource allocation failure" ++msgstr "فشل تخصيص الموارد المحلية" ++ ++#: nis/ypclnt.c:856 ++msgid "No more records in map database" ++msgstr "لا توجد سجلات أخرى في قاعدة بيانات الخارطة" ++ ++#: nis/ypclnt.c:859 ++msgid "Can't communicate with portmapper" ++msgstr "لا يمكن التواصل مع portmapper" ++ ++#: nis/ypclnt.c:862 ++msgid "Can't communicate with ypbind" ++msgstr "لا يمكن التواصل مع ypbind" ++ ++#: nis/ypclnt.c:865 ++msgid "Can't communicate with ypserv" ++msgstr "لا يمكن التواصل مع ypserv" ++ ++#: nis/ypclnt.c:868 ++msgid "Local domain name not set" ++msgstr "اسم النطاق المحلي غير مضبوط" ++ ++#: nis/ypclnt.c:871 ++msgid "NIS map database is bad" ++msgstr "قاعدة بيانات خارطة NIS سيئة" ++ ++#: nis/ypclnt.c:874 ++msgid "NIS client/server version mismatch - can't supply service" ++msgstr "عدم تطابق إصدار عميل/خادم NIS - لا يمكن تقديم الخدمة" ++ ++#: nis/ypclnt.c:880 ++msgid "Database is busy" ++msgstr "قاعدة البيانات مشغولة" ++ ++#: nis/ypclnt.c:883 ++msgid "Unknown NIS error code" ++msgstr "رمز خطأ NIS مجهول" ++ ++#: nis/ypclnt.c:924 ++msgid "Internal ypbind error" ++msgstr "خطأ ypbind داخلي" ++ ++#: nis/ypclnt.c:927 ++msgid "Domain not bound" ++msgstr "النطاق غير مربوط" ++ ++#: nis/ypclnt.c:930 ++msgid "System resource allocation failure" ++msgstr "فشل تخصيص موارد النظام" ++ ++#: nis/ypclnt.c:933 ++msgid "Unknown ypbind error" ++msgstr "خطأ ypbind مجهول" ++ ++#: nis/ypclnt.c:974 ++msgid "yp_update: cannot convert host to netname\n" ++msgstr "yp_update: لا يمكن تحويل المضيف إلى اسم شبكة\n" ++ ++#: nis/ypclnt.c:992 ++msgid "yp_update: cannot get server address\n" ++msgstr "yp_update: لا يمكن الحصول على عنوان الخادم\n" ++ ++#: nscd/aicache.c:68 nscd/hstcache.c:451 ++#, c-format ++msgid "Haven't found \"%s\" in hosts cache!" ++msgstr "لم يعثر على \"%s\" في خبيئة المضيفين!" ++ ++#: nscd/aicache.c:70 nscd/hstcache.c:453 ++#, c-format ++msgid "Reloading \"%s\" in hosts cache!" ++msgstr "إعادة تحميل \"%s\" في خبيئة المضيفين!" ++ ++#: nscd/cache.c:150 ++#, c-format ++msgid "add new entry \"%s\" of type %s for %s to cache%s" ++msgstr "إضافة مدخل جديد \"%s\" من نوع %s لـ %s إلى الخبيئة %s" ++ ++#: nscd/cache.c:152 ++msgid " (first)" ++msgstr " (أولاً)" ++ ++#: nscd/cache.c:287 ++#, c-format ++msgid "checking for monitored file `%s': %s" ++msgstr "فحص الملف المراقب `%s': %s" ++ ++#: nscd/cache.c:297 ++#, c-format ++msgid "monitored file `%s` changed (mtime)" ++msgstr "تغير الملف المراقب `%s` (mtime)" ++ ++#: nscd/cache.c:340 ++#, c-format ++msgid "pruning %s cache; time %ld" ++msgstr "تقليم خبيئة %s؛ الوقت %ld" ++ ++#: nscd/cache.c:369 ++#, c-format ++msgid "considering %s entry \"%s\", timeout %" ++msgstr "النظر في مدخل %s \"%s\"، مهلة %" ++ ++#: nscd/cachedumper.c:168 ++msgid " - all data: " ++msgstr " - جميع البيانات: " ++ ++#: nscd/cachedumper.c:362 ++#, c-format ++msgid " - remaining data %p: " ++msgstr " - البيانات المتبقية %p: " ++ ++#: nscd/connections.c:530 ++#, c-format ++msgid "invalid persistent database file \"%s\": %s" ++msgstr "ملف قاعدة بيانات مستمر غير صالح \"%s\": %s" ++ ++#: nscd/connections.c:538 ++msgid "uninitialized header" ++msgstr "ترويسة غير مهيأة" ++ ++#: nscd/connections.c:543 ++msgid "header size does not match" ++msgstr "حجم الترويسة غير متطابق" ++ ++#: nscd/connections.c:553 ++msgid "file size does not match" ++msgstr "حجم الملف غير متطابق" ++ ++#: nscd/connections.c:570 ++msgid "verification failed" ++msgstr "فشل التحقق" ++ ++#: nscd/connections.c:584 ++#, c-format ++msgid "suggested size of table for database %s larger than the persistent database's table" ++msgstr "الحجم المقترح لجدول قاعدة البيانات %s أكبر من جدول قاعدة البيانات المستمرة" ++ ++#: nscd/connections.c:595 nscd/connections.c:679 ++#, c-format ++msgid "cannot create read-only descriptor for \"%s\"; no mmap" ++msgstr "لا يمكن إنشاء واصف للقراءة فقط لـ \"%s\"؛ لا يوجد mmap" ++ ++#: nscd/connections.c:611 ++#, c-format ++msgid "cannot access '%s'" ++msgstr "لا يمكن الوصول لـ '%s'" ++ ++#: nscd/connections.c:659 ++#, c-format ++msgid "database for %s corrupted or simultaneously used; remove %s manually if necessary and restart" ++msgstr "قاعدة بيانات %s تالفة أو مستخدمة في وقت واحد؛ أزل %s يدوياً إذا لزم الأمر وأعد التشغيل" ++ ++#: nscd/connections.c:665 ++#, c-format ++msgid "cannot create %s; no persistent database used" ++msgstr "لا يمكن إنشاء %s؛ لا توجد قاعدة بيانات مستمرة مستخدمة" ++ ++#: nscd/connections.c:668 ++#, c-format ++msgid "cannot create %s; no sharing possible" ++msgstr "يتعذر إنشاء %s؛ المشاركة غير ممكنة" ++ ++#: nscd/connections.c:739 ++#, c-format ++msgid "cannot write to database file %s: %s" ++msgstr "يتعذر الكتابة في ملف قاعدة البيانات %s: %s" ++ ++#: nscd/connections.c:795 ++#, c-format ++msgid "cannot open socket: %s" ++msgstr "يتعذر فتح المقبس: %s" ++ ++#: nscd/connections.c:814 ++#, c-format ++msgid "cannot enable socket to accept connections: %s" ++msgstr "يتعذر تفعيل المقبس لقبول الاتصالات: %s" ++ ++#: nscd/connections.c:871 ++#, c-format ++msgid "disabled inotify-based monitoring for file `%s': %s" ++msgstr "عُطلت المراقبة المعتمدة على inotify للملف `%s': %s" ++ ++#: nscd/connections.c:875 ++#, c-format ++msgid "monitoring file `%s` (%d)" ++msgstr "مراقبة الملف `%s` (%d)" ++ ++#: nscd/connections.c:888 ++#, c-format ++msgid "disabled inotify-based monitoring for directory `%s': %s" ++msgstr "عُطلت المراقبة المعتمدة على inotify للدليل `%s': %s" ++ ++#: nscd/connections.c:892 ++#, c-format ++msgid "monitoring directory `%s` (%d)" ++msgstr "مراقبة الدليل `%s` (%d)" ++ ++#: nscd/connections.c:920 ++#, c-format ++msgid "monitoring file %s for database %s" ++msgstr "مراقبة الملف %s لقاعدة البيانات %s" ++ ++#: nscd/connections.c:930 ++#, c-format ++msgid "stat failed for file `%s'; will try again later: %s" ++msgstr "فشل stat للملف `%s'؛ تجري المحاولة لاحقاً: %s" ++ ++#: nscd/connections.c:1049 ++#, c-format ++msgid "provide access to FD %d, for %s" ++msgstr "توفير الوصول إلى FD %d، لـ %s" ++ ++#: nscd/connections.c:1061 ++#, c-format ++msgid "cannot handle old request version %d; current version is %d" ++msgstr "يتعذر التعامل مع إصدار الطلب القديم %d؛ الإصدار الحالي هو %d" ++ ++#: nscd/connections.c:1084 ++#, c-format ++msgid "request from %ld not handled due to missing permission" ++msgstr "لم يُعالج الطلب من %ld بسبب فقدان التصريح" ++ ++#: nscd/connections.c:1089 ++#, c-format ++msgid "request from '%s' [%ld] not handled due to missing permission" ++msgstr "لم يُعالج الطلب من '%s' [%ld] بسبب فقدان التصريح" ++ ++#: nscd/connections.c:1094 ++msgid "request not handled due to missing permission" ++msgstr "لم يُعالج الطلب بسبب فقدان التصريح" ++ ++#: nscd/connections.c:1132 nscd/connections.c:1158 ++#, c-format ++msgid "cannot write result: %s" ++msgstr "يتعذر كتابة النتيجة: %s" ++ ++#: nscd/connections.c:1249 ++#, c-format ++msgid "error getting caller's id: %s" ++msgstr "خطأ أثناء جلب معرف المستدعَي: %s" ++ ++#: nscd/connections.c:1359 ++#, c-format ++msgid "cannot open /proc/self/cmdline: %m; disabling paranoia mode" ++msgstr "يتعذر فتح /proc/self/cmdline: %m؛ يُعطل وضع البارانويا" ++ ++#: nscd/connections.c:1382 ++#, c-format ++msgid "cannot change to old UID: %s; disabling paranoia mode" ++msgstr "يتعذر التغيير إلى معرف المستخدم (UID) القديم: %s؛ يُعطل وضع البارانويا" ++ ++#: nscd/connections.c:1393 ++#, c-format ++msgid "cannot change to old GID: %s; disabling paranoia mode" ++msgstr "يتعذر التغيير إلى معرف المجموعة (GID) القديم: %s؛ يُعطل وضع البارانويا" ++ ++#: nscd/connections.c:1407 ++#, c-format ++msgid "cannot change to old working directory: %s; disabling paranoia mode" ++msgstr "يتعذر التغيير إلى دليل العمل القديم: %s؛ يُعطل وضع البارانويا" ++ ++#: nscd/connections.c:1454 ++#, c-format ++msgid "re-exec failed: %s; disabling paranoia mode" ++msgstr "فشل إعادة التنفيذ (re-exec): %s؛ يُعطل وضع البارانويا" ++ ++#: nscd/connections.c:1463 ++#, c-format ++msgid "cannot change current working directory to \"/\": %s" ++msgstr "يتعذر تغيير دليل العمل الحالي إلى \"/\": %s" ++ ++#: nscd/connections.c:1647 ++#, c-format ++msgid "short read while reading request: %s" ++msgstr "قراءة ناقصة أثناء قراءة الطلب: %s" ++ ++#: nscd/connections.c:1680 ++#, c-format ++msgid "key length in request too long: %d" ++msgstr "طول المفتاح في الطلب طويل جداً: %d" ++ ++#: nscd/connections.c:1693 ++#, c-format ++msgid "short read while reading request key: %s" ++msgstr "قراءة ناقصة أثناء قراءة مفتاح الطلب: %s" ++ ++#: nscd/connections.c:1703 ++#, c-format ++msgid "handle_request: request received (Version = %d) from PID %ld" ++msgstr "handle_request: استُقبل طلب (إصدار = %d) من PID %ld" ++ ++#: nscd/connections.c:1708 ++#, c-format ++msgid "handle_request: request received (Version = %d)" ++msgstr "handle_request: استُقبل طلب (إصدار = %d)" ++ ++#: nscd/connections.c:1848 ++#, c-format ++msgid "ignored inotify event for `%s` (file exists)" ++msgstr "تُجوهل حدث inotify لـ `%s` (الملف موجود)" ++ ++#: nscd/connections.c:1853 ++#, c-format ++msgid "monitored file `%s` was %s, removing watch" ++msgstr "الملف المراقب `%s` كان %s، تجري إزالة المراقبة" ++ ++#: nscd/connections.c:1861 nscd/connections.c:1903 ++#, c-format ++msgid "failed to remove file watch `%s`: %s" ++msgstr "فشل إزالة مراقبة الملف `%s`: %s" ++ ++#: nscd/connections.c:1876 ++#, c-format ++msgid "monitored file `%s` was written to" ++msgstr "الملف المراقب `%s` كُتب فيه" ++ ++#: nscd/connections.c:1900 ++#, c-format ++msgid "monitored parent directory `%s` was %s, removing watch on `%s`" ++msgstr "الدليل الأب المراقب `%s` كان %s، تجري إزالة المراقبة على `%s`" ++ ++#: nscd/connections.c:1926 ++#, c-format ++msgid "monitored file `%s` was %s, adding watch" ++msgstr "الملف المراقب `%s` كان %s، تجري إضافة مراقبة" ++ ++#: nscd/connections.c:1938 ++#, c-format ++msgid "failed to add file watch `%s`: %s" ++msgstr "فشل إضافة مراقبة الملف `%s`: %s" ++ ++#: nscd/connections.c:2116 nscd/connections.c:2281 ++#, c-format ++msgid "disabled inotify-based monitoring after read error %d" ++msgstr "عُطلت المراقبة المعتمدة على inotify بعد خطأ قراءة %d" ++ ++#: nscd/connections.c:2397 ++msgid "could not initialize conditional variable" ++msgstr "يتعذر تهيئة المتغير الشرطي" ++ ++#: nscd/connections.c:2405 ++msgid "could not start clean-up thread; terminating" ++msgstr "يتعذر بدء خيط التنظيف؛ يجري الإنهاء" ++ ++#: nscd/connections.c:2419 ++msgid "could not start any worker thread; terminating" ++msgstr "يتعذر بدء أي خيط عامل؛ يجري الإنهاء" ++ ++#: nscd/connections.c:2474 nscd/connections.c:2476 nscd/connections.c:2492 ++#: nscd/connections.c:2502 nscd/connections.c:2520 nscd/connections.c:2531 ++#: nscd/connections.c:2541 ++#, c-format ++msgid "Failed to run nscd as user '%s'" ++msgstr "فشل تشغيل nscd كالمستخدم '%s'" ++ ++#: nscd/connections.c:2494 ++msgid "initial getgrouplist failed" ++msgstr "فشل getgrouplist الأولي" ++ ++#: nscd/connections.c:2503 ++msgid "getgrouplist failed" ++msgstr "فشل getgrouplist" ++ ++#: nscd/connections.c:2521 ++msgid "setgroups failed" ++msgstr "فشل setgroups" ++ ++#: nscd/grpcache.c:384 nscd/hstcache.c:401 nscd/initgrcache.c:377 ++#: nscd/pwdcache.c:362 nscd/servicescache.c:309 ++#, c-format ++msgid "short write in %s: %s" ++msgstr "كتابة ناقصة في %s: %s" ++ ++#: nscd/grpcache.c:429 nscd/initgrcache.c:74 ++#, c-format ++msgid "Haven't found \"%s\" in group cache!" ++msgstr "لم يُعثر على \"%s\" في خبيئة المجموعة!" ++ ++#: nscd/grpcache.c:431 nscd/initgrcache.c:76 ++#, c-format ++msgid "Reloading \"%s\" in group cache!" ++msgstr "إعادة تحميل \"%s\" في خبيئة المجموعة!" ++ ++#: nscd/grpcache.c:491 ++#, c-format ++msgid "Invalid numeric gid \"%s\"!" ++msgstr "معرف مجموعة (gid) رقمي غير صالح \"%s\"!" ++ ++#: nscd/mem.c:420 ++#, c-format ++msgid "freed %zu bytes in %s cache" ++msgstr "حُرّر %zu بايت في خبيئة %s" ++ ++#: nscd/mem.c:563 ++#, c-format ++msgid "no more memory for database '%s'" ++msgstr "لا توجد ذاكرة كافية لقاعدة البيانات '%s'" ++ ++#: nscd/netgroupcache.c:198 ++#, c-format ++msgid "Haven't found \"%s\" in netgroup cache!" ++msgstr "لم يُعثر على \"%s\" في خبيئة مجموعة الشبكة!" ++ ++#: nscd/netgroupcache.c:200 ++#, c-format ++msgid "Reloading \"%s\" in netgroup cache!" ++msgstr "إعادة تحميل \"%s\" في خبيئة مجموعة الشبكة!" ++ ++#: nscd/netgroupcache.c:486 ++#, c-format ++msgid "Haven't found \"%s (%s,%s,%s)\" in netgroup cache!" ++msgstr "لم يُعثر على \"%s (%s,%s,%s)\" في خبيئة مجموعة الشبكة!" ++ ++#: nscd/netgroupcache.c:489 ++#, c-format ++msgid "Reloading \"%s (%s,%s,%s)\" in netgroup cache!" ++msgstr "إعادة تحميل \"%s (%s,%s,%s)\" في خبيئة مجموعة الشبكة!" ++ ++#: nscd/nscd.c:107 ++msgid "Read configuration data from NAME" ++msgstr "قراءة بيانات الضبط من NAME" ++ ++#: nscd/nscd.c:109 ++msgid "Do not fork and display messages on the current tty" ++msgstr "عدم التفرع وعرض الرسائل على tty الحالي" ++ ++#: nscd/nscd.c:111 ++msgid "Print contents of the offline cache file NAME" ++msgstr "طباعة محتويات ملف الخبيئة غير المتصل NAME" ++ ++#: nscd/nscd.c:113 ++msgid "Do not fork, but otherwise behave like a daemon" ++msgstr "عدم التفرع، والتصرف كخادم خلفي" ++ ++#: nscd/nscd.c:114 ++msgid "NUMBER" ++msgstr "NUMBER" ++ ++#: nscd/nscd.c:114 ++msgid "Start NUMBER threads" ++msgstr "بدء عدد NUMBER من الخيوط" ++ ++#: nscd/nscd.c:115 ++msgid "Shut the server down" ++msgstr "إيقاف الخادم" ++ ++#: nscd/nscd.c:116 ++msgid "Print current configuration statistics" ++msgstr "طباعة إحصائيات الضبط الحالية" ++ ++#: nscd/nscd.c:118 ++msgid "Invalidate the specified cache" ++msgstr "إبطال الخبيئة المحددة" ++ ++#: nscd/nscd.c:119 ++msgid "TABLE,yes" ++msgstr "TABLE,yes" ++ ++#: nscd/nscd.c:120 ++msgid "Use separate cache for each user" ++msgstr "استخدام خبيئة منفصلة لكل مستخدم" ++ ++#: nscd/nscd.c:125 ++msgid "Name Service Cache Daemon." ++msgstr "خادم خبيئة خدمة الأسماء." ++ ++#: nscd/nscd.c:158 nss/getent.c:995 nss/makedb.c:208 ++#, c-format ++msgid "wrong number of arguments" ++msgstr "عدد معاملات خاطئ" ++ ++#: nscd/nscd.c:173 ++#, c-format ++msgid "failure while reading configuration file; this is fatal" ++msgstr "فشل أثناء قراءة ملف الضبط؛ هذا خطأ فادح" ++ ++#: nscd/nscd.c:182 ++#, c-format ++msgid "already running" ++msgstr "يعمل بالفعل" ++ ++#: nscd/nscd.c:202 ++#, c-format ++msgid "cannot create a pipe to talk to the child" ++msgstr "يتعذر إنشاء أنبوب للتحدث مع الابن" ++ ++#: nscd/nscd.c:206 ++#, c-format ++msgid "cannot fork" ++msgstr "يتعذر التفرع" ++ ++#: nscd/nscd.c:276 ++msgid "cannot change current working directory to \"/\"" ++msgstr "يتعذر تغيير دليل العمل الحالي إلى \"/\"" ++ ++#: nscd/nscd.c:284 ++msgid "Could not create log file" ++msgstr "يتعذر إنشاء ملف السجل" ++ ++#: nscd/nscd.c:363 nscd/nscd_stat.c:208 ++#, c-format ++msgid "write incomplete" ++msgstr "كتابة غير مكتملة" ++ ++#: nscd/nscd.c:374 ++#, c-format ++msgid "cannot read invalidate ACK" ++msgstr "يتعذر قراءة تأكيد الإبطال (ACK)" ++ ++#: nscd/nscd.c:380 ++#, c-format ++msgid "invalidation failed" ++msgstr "فشل الإبطال" ++ ++#: nscd/nscd.c:429 nscd/nscd.c:454 nscd/nscd_stat.c:189 ++#, c-format ++msgid "Only root is allowed to use this option!" ++msgstr "يُسمح للجذر (root) فقط باستخدام هذا الخيار!" ++ ++#: nscd/nscd.c:449 ++#, c-format ++msgid "'%s' is not a known database" ++msgstr "'%s' ليست قاعدة بيانات معروفة" ++ ++#: nscd/nscd.c:464 ++#, c-format ++msgid "secure services not implemented anymore" ++msgstr "الخدمات الآمنة لم تعد مدعومة" ++ ++#: nscd/nscd.c:497 ++#, c-format ++msgid "" ++"Supported tables:\n" ++"%s\n" ++"\n" ++"For bug reporting instructions, please see:\n" ++"%s.\n" ++msgstr "" ++"الجداول المدعومة:\n" ++"%s\n" ++"\n" ++"لتعليمات الإبلاغ عن العيوب، يرجى مراجعة:\n" ++"%s.\n" ++ ++#: nscd/nscd.c:647 ++#, c-format ++msgid "'wait' failed\n" ++msgstr "فشل 'wait'\n" ++ ++#: nscd/nscd.c:654 ++#, c-format ++msgid "child exited with status %d\n" ++msgstr "خرج الابن بالحالة %d\n" ++ ++#: nscd/nscd.c:659 ++#, c-format ++msgid "child terminated by signal %d\n" ++msgstr "أُنهي الابن بالإشارة %d\n" ++ ++#: nscd/nscd_conf.c:53 ++#, c-format ++msgid "database %s is not supported" ++msgstr "قاعدة البيانات %s غير مدعومة" ++ ++#: nscd/nscd_conf.c:104 ++#, c-format ++msgid "Parse error: %s" ++msgstr "خطأ تحليل: %s" ++ ++#: nscd/nscd_conf.c:190 ++#, c-format ++msgid "Must specify user name for server-user option" ++msgstr "يجب تحديد اسم المستخدم لخيار server-user" ++ ++#: nscd/nscd_conf.c:200 ++#, c-format ++msgid "Must specify user name for stat-user option" ++msgstr "يجب تحديد اسم المستخدم لخيار stat-user" ++ ++#: nscd/nscd_conf.c:258 ++#, c-format ++msgid "Must specify value for restart-interval option" ++msgstr "يجب تحديد قيمة لخيار restart-interval" ++ ++#: nscd/nscd_conf.c:272 ++#, c-format ++msgid "Unknown option: %s %s %s" ++msgstr "خيار غير معروف: %s %s %s" ++ ++#: nscd/nscd_conf.c:285 ++#, c-format ++msgid "cannot get current working directory: %s; disabling paranoia mode" ++msgstr "يتعذر جلب دليل العمل الحالي: %s؛ يُعطل وضع البارانويا" ++ ++#: nscd/nscd_conf.c:305 ++#, c-format ++msgid "maximum file size for %s database too small" ++msgstr "أقصى حجم ملف لقاعدة بيانات %s صغير جداً" ++ ++#: nscd/nscd_stat.c:158 ++#, c-format ++msgid "cannot write statistics: %s" ++msgstr "يتعذر كتابة الإحصائيات: %s" ++ ++#: nscd/nscd_stat.c:173 ++msgid "yes" ++msgstr "نعم" ++ ++#: nscd/nscd_stat.c:174 ++msgid "no" ++msgstr "لا" ++ ++#: nscd/nscd_stat.c:185 ++#, c-format ++msgid "Only root or %s is allowed to use this option!" ++msgstr "يُسمح للجذر (root) أو %s فقط باستخدام هذا الخيار!" ++ ++#: nscd/nscd_stat.c:196 ++#, c-format ++msgid "nscd not running!\n" ++msgstr "nscd لا يعمل!\n" ++ ++#: nscd/nscd_stat.c:220 ++#, c-format ++msgid "cannot read statistics data" ++msgstr "يتعذر قراءة بيانات الإحصائيات" ++ ++#: nscd/nscd_stat.c:223 ++#, c-format ++msgid "" ++"nscd configuration:\n" ++"\n" ++"%15d server debug level\n" ++msgstr "" ++"ضبط nscd:\n" ++"\n" ++"%15d مستوى تنقيح الخادم\n" ++ ++#: nscd/nscd_stat.c:247 ++#, c-format ++msgid "%3ud %2uh %2um %2lus server runtime\n" ++msgstr "%3ud %2uh %2um %2lus وقت تشغيل الخادم\n" ++ ++#: nscd/nscd_stat.c:250 ++#, c-format ++msgid " %2uh %2um %2lus server runtime\n" ++msgstr " %2uh %2um %2lus وقت تشغيل الخادم\n" ++ ++#: nscd/nscd_stat.c:252 ++#, c-format ++msgid " %2um %2lus server runtime\n" ++msgstr " %2um %2lus وقت تشغيل الخادم\n" ++ ++#: nscd/nscd_stat.c:254 ++#, c-format ++msgid " %2lus server runtime\n" ++msgstr " %2lus وقت تشغيل الخادم\n" ++ ++#: nscd/nscd_stat.c:256 ++#, c-format ++msgid "" ++"%15d current number of threads\n" ++"%15d maximum number of threads\n" ++"%15lu number of times clients had to wait\n" ++"%15s paranoia mode enabled\n" ++"%15lu restart internal\n" ++"%15u reload count\n" ++msgstr "" ++"%15d عدد الخيوط الحالي\n" ++"%15d أقصى عدد خيوط\n" ++"%15lu عدد المرات التي اضطر فيها العملاء للانتظار\n" ++"%15s وضع البارانويا مفعل\n" ++"%15lu الفاصل الزمني لإعادة التشغيل\n" ++"%15u عدد مرات إعادة التحميل\n" ++ ++#: nscd/nscd_stat.c:291 ++#, c-format ++msgid "" ++"\n" ++"%s cache:\n" ++"\n" ++"%15s cache is enabled\n" ++"%15s cache is persistent\n" ++"%15s cache is shared\n" ++"%15zu suggested size\n" ++"%15zu total data pool size\n" ++"%15zu used data pool size\n" ++"%15lu seconds time to live for positive entries\n" ++"%15lu seconds time to live for negative entries\n" ++"%15 cache hits on positive entries\n" ++"%15 cache hits on negative entries\n" ++"%15 cache misses on positive entries\n" ++"%15 cache misses on negative entries\n" ++"%15lu%% cache hit rate\n" ++"%15zu current number of cached values\n" ++"%15zu maximum number of cached values\n" ++"%15zu maximum chain length searched\n" ++"%15 number of delays on rdlock\n" ++"%15 number of delays on wrlock\n" ++"%15 memory allocations failed\n" ++"%15s check /etc/%s for changes\n" ++msgstr "" ++"\n" ++"خبيئة %s:\n" ++"\n" ++"%15s الخبيئة مفعلة\n" ++"%15s الخبيئة مستمرة\n" ++"%15s الخبيئة مشتركة\n" ++"%15zu الحجم المقترح\n" ++"%15zu إجمالي حجم تجمع البيانات\n" ++"%15zu حجم تجمع البيانات المستخدم\n" ++"%15lu ثواني وقت الحياة للمدخلات الإيجابية\n" ++"%15lu ثواني وقت الحياة للمدخلات السلبية\n" ++"%15 إصابات الخبيئة للمدخلات الإيجابية\n" ++"%15 إصابات الخبيئة للمدخلات السلبية\n" ++"%15 إخفاقات الخبيئة للمدخلات الإيجابية\n" ++"%15 إخفاقات الخبيئة للمدخلات السلبية\n" ++"%15lu%% معدل إصابة الخبيئة\n" ++"%15zu العدد الحالي للقيم المخبأة\n" ++"%15zu أقصى عدد للقيم المخبأة\n" ++"%15zu أقصى طول لسلسلة البحث\n" ++"%15 عدد التأخيرات في قفل القراءة\n" ++"%15 عدد التأخيرات في قفل الكتابة\n" ++"%15 فشل تخصيص الذاكرة\n" ++"%15s تحقق من /etc/%s للتغييرات\n" ++ ++#: nscd/pwdcache.c:406 ++#, c-format ++msgid "Haven't found \"%s\" in user database cache!" ++msgstr "لم يُعثر على \"%s\" في خبيئة قاعدة بيانات المستخدمين!" ++ ++#: nscd/pwdcache.c:408 ++#, c-format ++msgid "Reloading \"%s\" in user database cache!" ++msgstr "إعادة تحميل \"%s\" في خبيئة قاعدة بيانات المستخدمين!" ++ ++#: nscd/pwdcache.c:470 ++#, c-format ++msgid "Invalid numeric uid \"%s\"!" ++msgstr "معرف مستخدم (uid) رقمي غير صالح \"%s\"!" ++ ++#: nscd/selinux.c:154 ++#, c-format ++msgid "Failed opening connection to the audit subsystem: %m" ++msgstr "فشل فتح اتصال بنظام المراجعة الفرعي: %m" ++ ++#: nscd/selinux.c:175 ++msgid "Failed to set keep-capabilities" ++msgstr "فشل ضبط keep-capabilities" ++ ++#: nscd/selinux.c:176 nscd/selinux.c:239 ++msgid "prctl(KEEPCAPS) failed" ++msgstr "فشل prctl(KEEPCAPS)" ++ ++#: nscd/selinux.c:190 ++msgid "Failed to initialize drop of capabilities" ++msgstr "فشل تهيئة إسقاط القدرات" ++ ++#: nscd/selinux.c:191 ++msgid "cap_init failed" ++msgstr "فشل cap_init" ++ ++#: nscd/selinux.c:212 nscd/selinux.c:229 ++msgid "Failed to drop capabilities" ++msgstr "فشل إسقاط القدرات" ++ ++#: nscd/selinux.c:213 nscd/selinux.c:230 ++msgid "cap_set_proc failed" ++msgstr "فشل cap_set_proc" ++ ++#: nscd/selinux.c:238 ++msgid "Failed to unset keep-capabilities" ++msgstr "فشل إلغاء ضبط keep-capabilities" ++ ++#: nscd/selinux.c:254 ++msgid "Failed to determine if kernel supports SELinux" ++msgstr "فشل تحديد ما إذا كانت النواة تدعم SELinux" ++ ++#: nscd/selinux.c:269 ++msgid "Failed to start AVC thread" ++msgstr "فشل بدء خيط AVC" ++ ++#: nscd/selinux.c:291 ++msgid "Failed to create AVC lock" ++msgstr "فشل إنشاء قفل AVC" ++ ++#: nscd/selinux.c:337 ++msgid "Failed to start AVC" ++msgstr "فشل بدء AVC" ++ ++#: nscd/selinux.c:339 ++msgid "Access Vector Cache (AVC) started" ++msgstr "بُدئت خبيئة شعاع الوصول (AVC)" ++ ++#: nscd/selinux.c:381 ++msgid "Error querying policy for undefined object classes or permissions." ++msgstr "خطأ أثناء الاستعلام عن السياسة لأصناف كائنات أو تصاريح غير معرفة." ++ ++#: nscd/selinux.c:388 ++msgid "Error getting security class for nscd." ++msgstr "خطأ أثناء جلب صنف الأمان لـ nscd." ++ ++#: nscd/selinux.c:393 ++#, c-format ++msgid "Error translating permission name \"%s\" to access vector bit." ++msgstr "خطأ أثناء ترجمة اسم التصريح \"%s\" إلى بت شعاع الوصول." ++ ++#: nscd/selinux.c:403 ++msgid "Error getting context of socket peer" ++msgstr "خطأ أثناء جلب سياق نظير المقبس" ++ ++#: nscd/selinux.c:408 ++msgid "Error getting context of nscd" ++msgstr "خطأ أثناء جلب سياق nscd" ++ ++#: nscd/selinux.c:414 ++msgid "Error getting sid from context" ++msgstr "خطأ أثناء جلب sid من السياق" ++ ++#: nscd/selinux.c:453 ++#, c-format ++msgid "" ++"\n" ++"SELinux AVC Statistics:\n" ++"\n" ++"%15u entry lookups\n" ++"%15u entry hits\n" ++"%15u entry misses\n" ++"%15u entry discards\n" ++"%15u CAV lookups\n" ++"%15u CAV hits\n" ++"%15u CAV probes\n" ++"%15u CAV misses\n" ++msgstr "" ++"\n" ++"إحصائيات SELinux AVC:\n" ++"\n" ++"%15u عمليات بحث عن المدخلات\n" ++"%15u إصابات المدخلات\n" ++"%15u إخفاقات المدخلات\n" ++"%15u المدخلات المهملة\n" ++"%15u عمليات بحث CAV\n" ++"%15u إصابات CAV\n" ++"%15u فحوصات CAV\n" ++"%15u إخفاقات CAV\n" ++ ++#: nscd/servicescache.c:357 ++#, c-format ++msgid "Haven't found \"%s\" in services cache!" ++msgstr "لم يُعثر على \"%s\" في خبيئة الخدمات!" ++ ++#: nscd/servicescache.c:359 ++#, c-format ++msgid "Reloading \"%s\" in services cache!" ++msgstr "إعادة تحميل \"%s\" في خبيئة الخدمات!" ++ ++#: nss/getent.c:54 ++msgid "database [key ...]" ++msgstr "قاعدة البيانات [مفتاح ...]" ++ ++#: nss/getent.c:59 ++msgid "CONFIG" ++msgstr "ضبط" ++ ++#: nss/getent.c:59 ++msgid "Service configuration to be used" ++msgstr "ضبط الخدمة المراد استخدامه" ++ ++#: nss/getent.c:60 ++msgid "disable IDN encoding" ++msgstr "تعطيل ترميز IDN" ++ ++#: nss/getent.c:62 ++msgid "do not filter out unsupported IPv4/IPv6 addresses (with ahosts*)" ++msgstr "عدم تصفية عناوين IPv4/IPv6 غير المدعومة (مع ahosts*)" ++ ++#: nss/getent.c:67 ++msgid "Get entries from administrative database." ++msgstr "جلب المدخلات من قاعدة البيانات الإدارية." ++ ++#: nss/getent.c:154 nss/getent.c:466 nss/getent.c:513 ++#, c-format ++msgid "Enumeration not supported on %s\n" ++msgstr "التعداد غير مدعوم على %s\n" ++ ++#: nss/getent.c:521 nss/getent.c:534 ++#, c-format ++msgid "Could not allocate group list: %m\n" ++msgstr "يتعذر تخصيص قائمة المجموعات: %m\n" ++ ++#: nss/getent.c:905 ++#, c-format ++msgid "Unknown database name" ++msgstr "اسم قاعدة بيانات غير معروف" ++ ++#: nss/getent.c:939 ++msgid "Supported databases:\n" ++msgstr "قواعد البيانات المدعومة:\n" ++ ++#: nss/getent.c:1005 ++#, c-format ++msgid "Unknown database: %s\n" ++msgstr "قاعدة بيانات غير معروفة: %s\n" ++ ++#: nss/makedb.c:121 ++msgid "Convert key to lower case" ++msgstr "تحويل المفتاح إلى حالة الأحرف الصغيرة" ++ ++#: nss/makedb.c:124 ++msgid "Do not print messages while building database" ++msgstr "عدم طباعة رسائل أثناء بناء قاعدة البيانات" ++ ++#: nss/makedb.c:126 ++msgid "Print content of database file, one entry a line" ++msgstr "طباعة محتوى ملف قاعدة البيانات، مدخل واحد في كل سطر" ++ ++#: nss/makedb.c:127 ++msgid "CHAR" ++msgstr "محرف" ++ ++#: nss/makedb.c:128 ++msgid "Generated line not part of iteration" ++msgstr "السطر المولد ليس جزءاً من التكرار" ++ ++#: nss/makedb.c:133 ++msgid "Create simple database from textual input." ++msgstr "إنشاء قاعدة بيانات بسيطة من مدخلات نصية." ++ ++#: nss/makedb.c:136 ++msgid "" ++"INPUT-FILE OUTPUT-FILE\n" ++"-o OUTPUT-FILE INPUT-FILE\n" ++"-u INPUT-FILE" ++msgstr "" ++"INPUT-FILE OUTPUT-FILE\n" ++"-o OUTPUT-FILE INPUT-FILE\n" ++"-u INPUT-FILE" ++ ++#: nss/makedb.c:229 ++#, c-format ++msgid "cannot open database file `%s'" ++msgstr "يتعذر فتح ملف قاعدة البيانات `%s'" ++ ++#: nss/makedb.c:274 ++#, c-format ++msgid "no entries to be processed" ++msgstr "لا توجد مدخلات للمعالجة" ++ ++#: nss/makedb.c:284 ++#, c-format ++msgid "cannot create temporary file name" ++msgstr "يتعذر إنشاء اسم ملف مؤقت" ++ ++#: nss/makedb.c:290 ++#, c-format ++msgid "cannot create temporary file" ++msgstr "يتعذر إنشاء ملف مؤقت" ++ ++#: nss/makedb.c:306 ++#, c-format ++msgid "cannot stat newly created file" ++msgstr "يتعذر إجراء stat للملف المنشأ حديثاً" ++ ++#: nss/makedb.c:317 ++#, c-format ++msgid "cannot rename temporary file" ++msgstr "يتعذر إعادة تسمية الملف مؤقت" ++ ++#: nss/makedb.c:529 nss/makedb.c:552 ++#, c-format ++msgid "cannot create search tree" ++msgstr "يتعذر إنشاء شجرة بحث" ++ ++#: nss/makedb.c:558 ++msgid "duplicate key" ++msgstr "مفتاح مكرر" ++ ++#: nss/makedb.c:570 ++#, c-format ++msgid "problems while reading `%s'" ++msgstr "مشاكل أثناء قراءة `%s'" ++ ++#: nss/makedb.c:748 ++#, c-format ++msgid "failed to allocate memory" ++msgstr "فشل تخصيص الذاكرة" ++ ++#: nss/makedb.c:814 ++#, c-format ++msgid "failed to write new database file" ++msgstr "فشل كتابة ملف قاعدة بيانات جديد" ++ ++#: nss/makedb.c:833 ++#, c-format ++msgid "cannot stat database file" ++msgstr "يتعذر إجراء stat لملف قاعدة البيانات" ++ ++#: nss/makedb.c:838 ++#, c-format ++msgid "cannot map database file" ++msgstr "يتعذر تعيين (map) ملف قاعدة البيانات" ++ ++#: nss/makedb.c:841 ++#, c-format ++msgid "file not a database file" ++msgstr "الملف ليس ملف قاعدة بيانات" ++ ++#: nss/makedb.c:893 ++#, c-format ++msgid "cannot initialize SELinux context" ++msgstr "يتعذر تهيئة سياق SELinux" ++ ++#: nss/makedb.c:902 ++#, c-format ++msgid "cannot set file creation context for `%s'" ++msgstr "يتعذر ضبط سياق إنشاء الملف لـ `%s'" ++ ++#: posix/getconf.c:462 ++#, c-format ++msgid "Usage: %s [-v specification] variable_name [pathname]\n" ++msgstr "الاستخدام: %s [-v المواصفات] variable_name [pathname]\n" ++ ++#: posix/getconf.c:465 ++#, c-format ++msgid " %s -a [pathname]\n" ++msgstr " %s -a [pathname]\n" ++ ++#: posix/getconf.c:544 ++#, c-format ++msgid "" ++"Usage: getconf [-v SPEC] VAR\n" ++" or: getconf [-v SPEC] PATH_VAR PATH\n" ++"\n" ++"Get the configuration value for variable VAR, or for variable PATH_VAR\n" ++"for path PATH. If SPEC is given, give values for compilation\n" ++"environment SPEC.\n" ++"\n" ++msgstr "" ++"الاستخدام: getconf [-v SPEC] VAR\n" ++" أو: getconf [-v SPEC] PATH_VAR PATH\n" ++"\n" ++"جلب قيمة الضبط للمتغير VAR، أو للمتغير PATH_VAR للمسار PATH.\n" ++"إذا أُعطيت SPEC، تعطي القيم لبيئة التجميع SPEC.\n" ++"\n" ++ ++#: posix/getconf.c:620 ++#, c-format ++msgid "unknown specification \"%s\"" ++msgstr "مواصفة غير معروفة \"%s\"" ++ ++#: posix/getconf.c:672 ++#, c-format ++msgid "Couldn't execute %s" ++msgstr "تعذر تنفيذ %s" ++ ++#: posix/getconf.c:717 posix/getconf.c:733 ++msgid "undefined" ++msgstr "غير محدد" ++ ++#: posix/getconf.c:761 ++#, c-format ++msgid "Unrecognized variable `%s'" ++msgstr "متغير غير معروف `%s'" ++ ++#: posix/getopt.c:278 ++#, c-format ++msgid "%s: option '%s%s' is ambiguous\n" ++msgstr "%s: الخيار '%s%s' غامض\n" ++ ++#: posix/getopt.c:284 ++#, c-format ++msgid "%s: option '%s%s' is ambiguous; possibilities:" ++msgstr "%s: الخيار '%s%s' غامض؛ الاحتمالات:" ++ ++#: posix/getopt.c:319 ++#, c-format ++msgid "%s: unrecognized option '%s%s'\n" ++msgstr "%s: خيار غير معروف '%s%s'\n" ++ ++#: posix/getopt.c:345 ++#, c-format ++msgid "%s: option '%s%s' doesn't allow an argument\n" ++msgstr "%s: الخيار '%s%s' لا يسمح بمعامل\n" ++ ++#: posix/getopt.c:360 ++#, c-format ++msgid "%s: option '%s%s' requires an argument\n" ++msgstr "%s: الخيار '%s%s' يتطلب معاملاً\n" ++ ++#: posix/getopt.c:621 ++#, c-format ++msgid "%s: invalid option -- '%c'\n" ++msgstr "%s: خيار غير صالح -- '%c'\n" ++ ++#: posix/getopt.c:636 posix/getopt.c:682 ++#, c-format ++msgid "%s: option requires an argument -- '%c'\n" ++msgstr "%s: الخيار يتطلب معاملاً -- '%c'\n" ++ ++#: posix/regcomp.c:138 ++msgid "No match" ++msgstr "لا يوجد تطابق" ++ ++#: posix/regcomp.c:141 ++msgid "Invalid regular expression" ++msgstr "تعبير نمطي غير صالح" ++ ++#: posix/regcomp.c:144 ++msgid "Invalid collation character" ++msgstr "محرف ترتيب (collation) غير صالح" ++ ++#: posix/regcomp.c:147 ++msgid "Invalid character class name" ++msgstr "اسم صنف محرف غير صالح" ++ ++#: posix/regcomp.c:150 ++msgid "Trailing backslash" ++msgstr "شرطة مائلة عكسية في النهاية" ++ ++#: posix/regcomp.c:153 ++msgid "Invalid back reference" ++msgstr "مرجع خلفي غير صالح" ++ ++#: posix/regcomp.c:156 ++msgid "Unmatched [, [^, [:, [., or [=" ++msgstr "[, [^, [:, [., أو [= بلا مقابل" ++ ++#: posix/regcomp.c:159 ++msgid "Unmatched ( or \\(" ++msgstr "( أو \\( بلا مقابل" ++ ++#: posix/regcomp.c:162 ++msgid "Unmatched \\{" ++msgstr "\\{ بلا مقابل" ++ ++#: posix/regcomp.c:165 ++msgid "Invalid content of \\{\\}" ++msgstr "محتوى غير صالح في \\{\\}" ++ ++#: posix/regcomp.c:168 ++msgid "Invalid range end" ++msgstr "نهاية نطاق غير صالحة" ++ ++#: posix/regcomp.c:171 ++msgid "Memory exhausted" ++msgstr "نفدت الذاكرة" ++ ++#: posix/regcomp.c:174 ++msgid "Invalid preceding regular expression" ++msgstr "تعبير نمطي سابق غير صالح" ++ ++#: posix/regcomp.c:177 ++msgid "Premature end of regular expression" ++msgstr "نهاية سابقة لأوانها للتعبير النمطي" ++ ++#: posix/regcomp.c:180 ++msgid "Regular expression too big" ++msgstr "التعبير النمطي كبير جداً" ++ ++#: posix/regcomp.c:183 ++msgid "Unmatched ) or \\)" ++msgstr ") أو \\) بلا مقابل" ++ ++#: posix/regcomp.c:676 ++msgid "No previous regular expression" ++msgstr "لا يوجد تعبير نمطي سابق" ++ ++#: posix/wordexp.c:1794 ++msgid "parameter null or not set" ++msgstr "المعامل فارغ أو غير محدد" ++ ++#: resolv/herror.c:63 ++msgid "Resolver Error 0 (no error)" ++msgstr "خطأ المحلل (Resolver) رقم 0 (لا يوجد خطأ)" ++ ++#: resolv/herror.c:64 ++msgid "Unknown host" ++msgstr "حاسوب غير معروف" ++ ++#: resolv/herror.c:65 ++msgid "Host name lookup failure" ++msgstr "فشل البحث عن اسم الحاسوب" ++ ++#: resolv/herror.c:66 ++msgid "Unknown server error" ++msgstr "خطأ خادم غير معروف" ++ ++#: resolv/herror.c:67 ++msgid "No address associated with name" ++msgstr "لا يوجد عنوان مرتبط بالاسم" ++ ++#: resolv/herror.c:102 ++msgid "Resolver internal error" ++msgstr "خطأ داخلي في المحلل (Resolver)" ++ ++#: resolv/herror.c:105 ++msgid "Unknown resolver error" ++msgstr "خطأ محلل (Resolver) غير معروف" ++ ++#: resolv/res_hconf.c:118 ++#, c-format ++msgid "%s: line %d: cannot specify more than %d trim domains" ++msgstr "%s: سطر %d: لا يمكن تحديد أكثر من %d نطاقات تهذيب (trim domains)" ++ ++#: resolv/res_hconf.c:139 ++#, c-format ++msgid "%s: line %d: list delimiter not followed by domain" ++msgstr "%s: سطر %d: محدد القائمة لم يتبعه نطاق" ++ ++#: resolv/res_hconf.c:177 ++#, c-format ++msgid "%s: line %d: expected `on' or `off', found `%s'\n" ++msgstr "%s: سطر %d: توقع 'on' أو 'off'، وُجد `%s'\n" ++ ++#: resolv/res_hconf.c:220 ++#, c-format ++msgid "%s: line %d: bad command `%s'\n" ++msgstr "%s: سطر %d: أمر سيئ `%s'\n" ++ ++#: resolv/res_hconf.c:253 ++#, c-format ++msgid "%s: line %d: ignoring trailing garbage `%s'\n" ++msgstr "%s: سطر %d: تجاهل المهملات في النهاية `%s'\n" ++ ++#: stdio-common/psiginfo-data.h:2 ++msgid "Illegal opcode" ++msgstr "رمز عملية (opcode) غير قانوني" ++ ++#: stdio-common/psiginfo-data.h:3 ++msgid "Illegal operand" ++msgstr "معامل (operand) غير قانوني" ++ ++#: stdio-common/psiginfo-data.h:4 ++msgid "Illegal addressing mode" ++msgstr "نمط عنونة غير قانوني" ++ ++#: stdio-common/psiginfo-data.h:5 ++msgid "Illegal trap" ++msgstr "مصيدة (trap) غير قانونية" ++ ++#: stdio-common/psiginfo-data.h:6 ++msgid "Privileged opcode" ++msgstr "رمز عملية (opcode) مميز" ++ ++#: stdio-common/psiginfo-data.h:7 ++msgid "Privileged register" ++msgstr "سجل مميز" ++ ++#: stdio-common/psiginfo-data.h:8 ++msgid "Coprocessor error" ++msgstr "خطأ في المعالج المساعد" ++ ++#: stdio-common/psiginfo-data.h:9 ++msgid "Internal stack error" ++msgstr "خطأ داخلي في المكدس" ++ ++#: stdio-common/psiginfo-data.h:12 ++msgid "Integer divide by zero" ++msgstr "قسمة عدد صحيح على صفر" ++ ++#: stdio-common/psiginfo-data.h:13 ++msgid "Integer overflow" ++msgstr "تجاوز سعة العدد الصحيح" ++ ++#: stdio-common/psiginfo-data.h:14 ++msgid "Floating-point divide by zero" ++msgstr "قسمة الفاصلة العائمة على صفر" ++ ++#: stdio-common/psiginfo-data.h:15 ++msgid "Floating-point overflow" ++msgstr "تجاوز سعة الفاصلة العائمة" ++ ++#: stdio-common/psiginfo-data.h:16 ++msgid "Floating-point underflow" ++msgstr "انخفاض سعة الفاصلة العائمة" ++ ++#: stdio-common/psiginfo-data.h:17 ++msgid "Floating-poing inexact result" ++msgstr "نتيجة غير دقيقة للفاصلة العائمة" ++ ++#: stdio-common/psiginfo-data.h:18 ++msgid "Invalid floating-point operation" ++msgstr "عملية فاصلة عائمة غير صالحة" ++ ++#: stdio-common/psiginfo-data.h:19 ++msgid "Subscript out of range" ++msgstr "المنخفض خارج النطاق" ++ ++#: stdio-common/psiginfo-data.h:22 ++msgid "Address not mapped to object" ++msgstr "العنوان غير معين لكائن" ++ ++#: stdio-common/psiginfo-data.h:23 ++msgid "Invalid permissions for mapped object" ++msgstr "تصاريح غير صالحة للكائن المعين" ++ ++#: stdio-common/psiginfo-data.h:26 ++msgid "Invalid address alignment" ++msgstr "محاذاة عنوان غير صالحة" ++ ++#: stdio-common/psiginfo-data.h:27 ++msgid "Nonexisting physical address" ++msgstr "عنوان فيزيائي غير موجود" ++ ++#: stdio-common/psiginfo-data.h:28 ++msgid "Object-specific hardware error" ++msgstr "خطأ في العتاد خاص بالكائن" ++ ++#: stdio-common/psiginfo-data.h:31 ++msgid "Process breakpoint" ++msgstr "نقطة توقف العملية" ++ ++#: stdio-common/psiginfo-data.h:32 ++msgid "Process trace trap" ++msgstr "مصيدة تتبع العملية" ++ ++#: stdio-common/psiginfo-data.h:35 ++msgid "Child has exited" ++msgstr "خرج الابن" ++ ++#: stdio-common/psiginfo-data.h:36 ++msgid "Child has terminated abnormally and did not create a core file" ++msgstr "أُنهي الابن بشكل غير طبيعي ولم ينشئ ملف لب (core file)" ++ ++#: stdio-common/psiginfo-data.h:37 ++msgid "Child has terminated abnormally and created a core file" ++msgstr "أُنهي الابن بشكل غير طبيعي وأنشأ ملف لب (core file)" ++ ++#: stdio-common/psiginfo-data.h:38 ++msgid "Traced child has trapped" ++msgstr "الابن المتتبع وقع في المصيدة" ++ ++#: stdio-common/psiginfo-data.h:39 ++msgid "Child has stopped" ++msgstr "توقف الابن" ++ ++#: stdio-common/psiginfo-data.h:40 ++msgid "Stopped child has continued" ++msgstr "استمر الابن المتوقف" ++ ++#: stdio-common/psiginfo-data.h:43 ++msgid "Data input available" ++msgstr "مدخلات البيانات متاحة" ++ ++#: stdio-common/psiginfo-data.h:44 ++msgid "Output buffers available" ++msgstr "خبيئات المخرجات متاحة" ++ ++#: stdio-common/psiginfo-data.h:45 ++msgid "Input message available" ++msgstr "رسالة المدخلات متاحة" ++ ++#: stdio-common/psiginfo-data.h:46 timezone/zdump.c:445 timezone/zic.c:652 ++msgid "I/O error" ++msgstr "خطأ إدخال/إخراج" ++ ++#: stdio-common/psiginfo-data.h:47 ++msgid "High priority input available" ++msgstr "مدخلات عالية الأولوية متاحة" ++ ++#: stdio-common/psiginfo-data.h:48 ++msgid "Device disconnected" ++msgstr "انقطع اتصال الجهاز" ++ ++#: stdio-common/psiginfo.c:140 ++msgid "Signal sent by kill()" ++msgstr "إشارة مرسلة بواسطة kill()" ++ ++#: stdio-common/psiginfo.c:143 ++msgid "Signal sent by sigqueue()" ++msgstr "إشارة مرسلة بواسطة sigqueue()" ++ ++#: stdio-common/psiginfo.c:146 ++msgid "Signal generated by the expiration of a timer" ++msgstr "إشارة ناتجة عن انتهاء صلاحية المؤقت" ++ ++#: stdio-common/psiginfo.c:149 ++msgid "Signal generated by the completion of an asynchronous I/O request" ++msgstr "إشارة ناتجة عن اكتمال طلب إدخال/إخراج غير متزامن" ++ ++#: stdio-common/psiginfo.c:153 ++msgid "Signal generated by the arrival of a message on an empty message queue" ++msgstr "إشارة ناتجة عن وصول رسالة إلى طابور رسائل فارغ" ++ ++#: stdio-common/psiginfo.c:158 ++msgid "Signal sent by tkill()" ++msgstr "إشارة مرسلة بواسطة tkill()" ++ ++#: stdio-common/psiginfo.c:163 ++msgid "Signal generated by the completion of an asynchronous name lookup request" ++msgstr "إشارة ناتجة عن اكتمال طلب بحث عن اسم غير متزامن" ++ ++#: stdio-common/psiginfo.c:169 ++msgid "Signal generated by the completion of an I/O request" ++msgstr "إشارة ناتجة عن اكتمال طلب إدخال/إخراج" ++ ++#: stdio-common/psiginfo.c:175 ++msgid "Signal sent by the kernel" ++msgstr "إشارة مرسلة من النواة" ++ ++#: stdio-common/psiginfo.c:199 ++#, c-format ++msgid "Unknown signal %d\n" ++msgstr "إشارة غير معروفة %d\n" ++ ++#: stdio-common/psignal.c:43 ++#, c-format ++msgid "%s%sUnknown signal %d\n" ++msgstr "%s%sإشارة غير معروفة %d\n" ++ ++#: stdio-common/psignal.c:44 string/strsignal.c:57 ++msgid "Unknown signal" ++msgstr "إشارة غير معروفة" ++ ++#: string/_strerror.c:30 sysdeps/mach/_strerror.c:55 ++msgid "Unknown error " ++msgstr "خطأ غير معروف " ++ ++#: string/strsignal.c:42 ++#, c-format ++msgid "Real-time signal %d" ++msgstr "إشارة وقت حقيقي %d" ++ ++#: string/strsignal.c:46 ++#, c-format ++msgid "Unknown signal %d" ++msgstr "إشارة غير معروفة %d" ++ ++#: sunrpc/auth_unix.c:113 sunrpc/clnt_tcp.c:124 sunrpc/clnt_udp.c:140 ++#: sunrpc/clnt_unix.c:125 sunrpc/svc_tcp.c:189 sunrpc/svc_tcp.c:233 ++#: sunrpc/svc_udp.c:161 sunrpc/svc_unix.c:187 sunrpc/svc_unix.c:227 ++#: sunrpc/xdr.c:631 sunrpc/xdr.c:791 sunrpc/xdr_array.c:102 ++#: sunrpc/xdr_rec.c:153 sunrpc/xdr_ref.c:79 ++msgid "out of memory\n" ++msgstr "نفدت الذاكرة\n" ++ ++#: sunrpc/auth_unix.c:350 ++msgid "auth_unix.c: Fatal marshalling problem" ++msgstr "auth_unix.c: مشكلة ترتيب (marshalling) فادحة" ++ ++#: sunrpc/clnt_perr.c:92 sunrpc/clnt_perr.c:108 ++#, c-format ++msgid "%s: %s; low version = %lu, high version = %lu" ++msgstr "%s: %s؛ الإصدار الأدنى = %lu، الإصدار الأعلى = %lu" ++ ++#: sunrpc/clnt_perr.c:99 ++#, c-format ++msgid "%s: %s; why = %s\n" ++msgstr "%s: %s؛ السبب = %s\n" ++ ++#: sunrpc/clnt_perr.c:101 ++#, c-format ++msgid "%s: %s; why = (unknown authentication error - %d)\n" ++msgstr "%s: %s؛ السبب = (خطأ استيثاق غير معروف - %d)\n" ++ ++#: sunrpc/clnt_perr.c:150 ++msgid "RPC: Success" ++msgstr "RPC: نجاح" ++ ++#: sunrpc/clnt_perr.c:153 ++msgid "RPC: Can't encode arguments" ++msgstr "RPC: يتعذر ترميز المعاملات" ++ ++#: sunrpc/clnt_perr.c:157 ++msgid "RPC: Can't decode result" ++msgstr "RPC: يتعذر فك ترميز النتيجة" ++ ++#: sunrpc/clnt_perr.c:161 ++msgid "RPC: Unable to send" ++msgstr "RPC: غير قادر على الإرسال" ++ ++#: sunrpc/clnt_perr.c:165 ++msgid "RPC: Unable to receive" ++msgstr "RPC: غير قادر على الاستقبال" ++ ++#: sunrpc/clnt_perr.c:169 ++msgid "RPC: Timed out" ++msgstr "RPC: انتهت المهلة" ++ ++#: sunrpc/clnt_perr.c:173 ++msgid "RPC: Incompatible versions of RPC" ++msgstr "RPC: إصدارات RPC غير متوافقة" ++ ++#: sunrpc/clnt_perr.c:177 ++msgid "RPC: Authentication error" ++msgstr "RPC: خطأ استيثاق" ++ ++#: sunrpc/clnt_perr.c:181 ++msgid "RPC: Program unavailable" ++msgstr "RPC: البرنامج غير متاح" ++ ++#: sunrpc/clnt_perr.c:185 ++msgid "RPC: Program/version mismatch" ++msgstr "RPC: عدم تطابق البرنامج/الإصدار" ++ ++#: sunrpc/clnt_perr.c:189 ++msgid "RPC: Procedure unavailable" ++msgstr "RPC: الإجراء غير متاح" ++ ++#: sunrpc/clnt_perr.c:193 ++msgid "RPC: Server can't decode arguments" ++msgstr "RPC: الخادم لا يمكنه فك ترميز المعاملات" ++ ++#: sunrpc/clnt_perr.c:197 ++msgid "RPC: Remote system error" ++msgstr "RPC: خطأ في النظام البعيد" ++ ++#: sunrpc/clnt_perr.c:201 ++msgid "RPC: Unknown host" ++msgstr "RPC: حاسوب غير معروف" ++ ++#: sunrpc/clnt_perr.c:205 ++msgid "RPC: Unknown protocol" ++msgstr "RPC: بروتوكول غير معروف" ++ ++#: sunrpc/clnt_perr.c:209 ++msgid "RPC: Port mapper failure" ++msgstr "RPC: فشل مخطط المنافذ" ++ ++#: sunrpc/clnt_perr.c:213 ++msgid "RPC: Program not registered" ++msgstr "RPC: البرنامج غير مسجل" ++ ++#: sunrpc/clnt_perr.c:217 ++msgid "RPC: Failed (unspecified error)" ++msgstr "RPC: فشل (خطأ غير محدد)" ++ ++#: sunrpc/clnt_perr.c:258 ++msgid "RPC: (unknown error code)" ++msgstr "RPC: (رمز خطأ غير معروف)" ++ ++#: sunrpc/clnt_perr.c:334 ++msgid "Authentication OK" ++msgstr "الاستيثاق مقبول" ++ ++#: sunrpc/clnt_perr.c:337 ++msgid "Invalid client credential" ++msgstr "أوراق اعتماد العميل غير صالحة" ++ ++#: sunrpc/clnt_perr.c:341 ++msgid "Server rejected credential" ++msgstr "رفض الخادم أوراق الاعتماد" ++ ++#: sunrpc/clnt_perr.c:345 ++msgid "Invalid client verifier" ++msgstr "متحقق العميل غير صالح" ++ ++#: sunrpc/clnt_perr.c:349 ++msgid "Server rejected verifier" ++msgstr "رفض الخادم المتحقق" ++ ++#: sunrpc/clnt_perr.c:353 ++msgid "Client credential too weak" ++msgstr "أوراق اعتماد العميل ضعيفة جداً" ++ ++#: sunrpc/clnt_perr.c:357 ++msgid "Invalid server verifier" ++msgstr "متحقق الخادم غير صالح" ++ ++#: sunrpc/clnt_perr.c:361 ++msgid "Failed (unspecified error)" ++msgstr "فشل (خطأ غير محدد)" ++ ++#: sunrpc/clnt_raw.c:112 ++msgid "clnt_raw.c: fatal header serialization error" ++msgstr "clnt_raw.c: خطأ تسلسل ترويسة فادح" ++ ++#: sunrpc/pm_getmaps.c:78 ++msgid "pmap_getmaps.c: rpc problem" ++msgstr "pmap_getmaps.c: مشكلة rpc" ++ ++#: sunrpc/pmap_clnt.c:128 ++msgid "Cannot register service" ++msgstr "يتعذر تسجيل الخدمة" ++ ++#: sunrpc/pmap_rmt.c:244 ++msgid "Cannot create socket for broadcast rpc" ++msgstr "يتعذر إنشاء مقبس لـ broadcast rpc" ++ ++#: sunrpc/pmap_rmt.c:251 ++msgid "Cannot set socket option SO_BROADCAST" ++msgstr "يتعذر ضبط خيار المقبس SO_BROADCAST" ++ ++#: sunrpc/pmap_rmt.c:303 ++msgid "Cannot send broadcast packet" ++msgstr "يتعذر إرسال حزمة البث" ++ ++#: sunrpc/pmap_rmt.c:328 ++msgid "Broadcast poll problem" ++msgstr "مشكلة استطلاع البث" ++ ++#: sunrpc/pmap_rmt.c:341 ++msgid "Cannot receive reply to broadcast" ++msgstr "يتعذر استقبال رد على البث" ++ ++#: sunrpc/svc_run.c:72 ++msgid "svc_run: - out of memory" ++msgstr "svc_run: - نفدت الذاكرة" ++ ++#: sunrpc/svc_run.c:92 ++msgid "svc_run: - poll failed" ++msgstr "svc_run: - فشل الاستطلاع (poll)" ++ ++#: sunrpc/svc_simple.c:72 ++#, c-format ++msgid "can't reassign procedure number %ld\n" ++msgstr "يتعذر إعادة تعيين رقم الإجراء %ld\n" ++ ++#: sunrpc/svc_simple.c:82 ++msgid "couldn't create an rpc server\n" ++msgstr "تعذر إنشاء خادم rpc\n" ++ ++#: sunrpc/svc_simple.c:90 ++#, c-format ++msgid "couldn't register prog %ld vers %ld\n" ++msgstr "تعذر تسجيل البرنامج %ld إصدار %ld\n" ++ ++#: sunrpc/svc_simple.c:98 ++msgid "registerrpc: out of memory\n" ++msgstr "registerrpc: نفدت الذاكرة\n" ++ ++#: sunrpc/svc_simple.c:161 ++#, c-format ++msgid "trouble replying to prog %d\n" ++msgstr "مشكلة في الرد على البرنامج %d\n" ++ ++#: sunrpc/svc_simple.c:170 ++#, c-format ++msgid "never registered prog %d\n" ++msgstr "لم يُسجل البرنامج %d أبداً\n" ++ ++#: sunrpc/svc_tcp.c:165 ++msgid "svc_tcp.c - tcp socket creation problem" ++msgstr "svc_tcp.c - مشكلة في إنشاء مقبس tcp" ++ ++#: sunrpc/svc_tcp.c:180 ++msgid "svc_tcp.c - cannot getsockname or listen" ++msgstr "svc_tcp.c - يتعذر getsockname أو listen" ++ ++#: sunrpc/svc_udp.c:136 ++msgid "svcudp_create: socket creation problem" ++msgstr "svcudp_create: مشكلة في إنشاء المقبس" ++ ++#: sunrpc/svc_udp.c:150 ++msgid "svcudp_create - cannot getsockname" ++msgstr "svcudp_create - يتعذر getsockname" ++ ++#: sunrpc/svc_udp.c:182 ++msgid "svcudp_create: xp_pad is too small for IP_PKTINFO\n" ++msgstr "svcudp_create: xp_pad صغير جداً لـ IP_PKTINFO\n" ++ ++#: sunrpc/svc_udp.c:481 ++msgid "enablecache: cache already enabled" ++msgstr "enablecache: الخبيئة مفعلة بالفعل" ++ ++#: sunrpc/svc_udp.c:487 ++msgid "enablecache: could not allocate cache" ++msgstr "enablecache: تعذر تخصيص خبيئة" ++ ++#: sunrpc/svc_udp.c:496 ++msgid "enablecache: could not allocate cache data" ++msgstr "enablecache: تعذر تخصيص بيانات الخبيئة" ++ ++#: sunrpc/svc_udp.c:504 ++msgid "enablecache: could not allocate cache fifo" ++msgstr "enablecache: تعذر تخصيص fifo للخبيئة" ++ ++#: sunrpc/svc_udp.c:540 ++msgid "cache_set: victim not found" ++msgstr "cache_set: لم يُعثر على الضحية" ++ ++#: sunrpc/svc_udp.c:551 ++msgid "cache_set: victim alloc failed" ++msgstr "cache_set: فشل تخصيص الضحية" ++ ++#: sunrpc/svc_udp.c:558 ++msgid "cache_set: could not allocate new rpc_buffer" ++msgstr "cache_set: تعذر تخصيص rpc_buffer جديد" ++ ++#: sunrpc/svc_unix.c:167 ++msgid "svc_unix.c - AF_UNIX socket creation problem" ++msgstr "svc_unix.c - مشكلة في إنشاء مقبس AF_UNIX" ++ ++#: sunrpc/svc_unix.c:177 ++msgid "svc_unix.c - cannot getsockname or listen" ++msgstr "svc_unix.c - يتعذر getsockname أو listen" ++ ++#: sysdeps/generic/dl-protected.h:55 ++msgid "error due to GNU_PROPERTY_1_NEEDED_INDIRECT_EXTERN_ACCESS" ++msgstr "خطأ بسبب GNU_PROPERTY_1_NEEDED_INDIRECT_EXTERN_ACCESS" ++ ++#: sysdeps/generic/siglist.h:29 ++msgid "Hangup" ++msgstr "تعليق" ++ ++#: sysdeps/generic/siglist.h:30 ++msgid "Interrupt" ++msgstr "مقاطعة" ++ ++#: sysdeps/generic/siglist.h:31 ++msgid "Quit" ++msgstr "إنهاء" ++ ++#: sysdeps/generic/siglist.h:32 ++msgid "Illegal instruction" ++msgstr "تعليمة غير قانونية" ++ ++#: sysdeps/generic/siglist.h:33 ++msgid "Trace/breakpoint trap" ++msgstr "مصيدة تتبع/نقطة توقف" ++ ++#: sysdeps/generic/siglist.h:34 ++msgid "Aborted" ++msgstr "أُجهض" ++ ++#: sysdeps/generic/siglist.h:35 ++msgid "Floating point exception" ++msgstr "استثناء فاصلة عائمة" ++ ++#: sysdeps/generic/siglist.h:36 ++msgid "Killed" ++msgstr "قُتل" ++ ++#: sysdeps/generic/siglist.h:37 ++msgid "Bus error" ++msgstr "خطأ ناقل" ++ ++#: sysdeps/generic/siglist.h:38 ++msgid "Bad system call" ++msgstr "نداء نظام سيئ" ++ ++#: sysdeps/generic/siglist.h:39 ++msgid "Segmentation fault" ++msgstr "خطأ في التقسيم" ++ ++#. TRANS There is no process reading from the other end of a pipe. ++#. TRANS Every library function that returns this error code also generates a ++#. TRANS @code{SIGPIPE} signal; this signal terminates the program if not handled ++#. TRANS or blocked. Thus, your program will never actually see @code{EPIPE} ++#. TRANS unless it has handled or blocked @code{SIGPIPE}. ++#: sysdeps/generic/siglist.h:40 sysdeps/gnu/errlist.h:216 ++msgid "Broken pipe" ++msgstr "أنبوب مكسور" ++ ++#: sysdeps/generic/siglist.h:41 ++msgid "Alarm clock" ++msgstr "ساعة منبه" ++ ++#: sysdeps/generic/siglist.h:42 ++msgid "Terminated" ++msgstr "أُنهي" ++ ++#: sysdeps/generic/siglist.h:43 ++msgid "Urgent I/O condition" ++msgstr "حالة إدخال/إخراج عاجلة" ++ ++#: sysdeps/generic/siglist.h:44 ++msgid "Stopped (signal)" ++msgstr "توقف (إشارة)" ++ ++#: sysdeps/generic/siglist.h:45 ++msgid "Stopped" ++msgstr "توقف" ++ ++#: sysdeps/generic/siglist.h:46 ++msgid "Continued" ++msgstr "استمر" ++ ++#: sysdeps/generic/siglist.h:47 ++msgid "Child exited" ++msgstr "خرج الابن" ++ ++#: sysdeps/generic/siglist.h:48 ++msgid "Stopped (tty input)" ++msgstr "توقف (مدخلات tty)" ++ ++#: sysdeps/generic/siglist.h:49 ++msgid "Stopped (tty output)" ++msgstr "توقف (مخرجات tty)" ++ ++#: sysdeps/generic/siglist.h:50 ++msgid "I/O possible" ++msgstr "إدخال/إخراج ممكن" ++ ++#: sysdeps/generic/siglist.h:51 ++msgid "CPU time limit exceeded" ++msgstr "تجاوز حد وقت المعالج" ++ ++#: sysdeps/generic/siglist.h:52 ++msgid "File size limit exceeded" ++msgstr "تجاوز حد حجم الملف" ++ ++#: sysdeps/generic/siglist.h:53 ++msgid "Virtual timer expired" ++msgstr "انتهى المؤقت الافتراضي" ++ ++#: sysdeps/generic/siglist.h:54 ++msgid "Profiling timer expired" ++msgstr "انتهى مؤقت التحليل (Profiling)" ++ ++#: sysdeps/generic/siglist.h:55 ++msgid "User defined signal 1" ++msgstr "إشارة معرفة من المستخدم 1" ++ ++#: sysdeps/generic/siglist.h:56 ++msgid "User defined signal 2" ++msgstr "إشارة معرفة من المستخدم 2" ++ ++#: sysdeps/generic/siglist.h:57 ++msgid "Window changed" ++msgstr "تغيرت النافذة" ++ ++#: sysdeps/generic/siglist.h:61 ++msgid "EMT trap" ++msgstr "مصيدة EMT" ++ ++#: sysdeps/generic/siglist.h:64 ++msgid "Stack fault" ++msgstr "خطأ في المكدس" ++ ++#: sysdeps/generic/siglist.h:67 ++msgid "Power failure" ++msgstr "فشل الطاقة" ++ ++#: sysdeps/generic/siglist.h:70 ++msgid "Information request" ++msgstr "طلب معلومات" ++ ++#: sysdeps/generic/siglist.h:73 ++msgid "Resource lost" ++msgstr "فُقد المورد" ++ ++#. TRANS Only the owner of the file (or other resource) ++#. TRANS or processes with special privileges can perform the operation. ++#: sysdeps/gnu/errlist.h:6 ++msgid "Operation not permitted" ++msgstr "العملية غير مسموح بها" ++ ++#. TRANS No process matches the specified process ID. ++#: sysdeps/gnu/errlist.h:18 ++msgid "No such process" ++msgstr "لا توجد عملية كهذه" ++ ++#. TRANS An asynchronous signal occurred and prevented ++#. TRANS completion of the call. When this happens, you should try the call ++#. TRANS again. ++#. TRANS ++#. TRANS You can choose to have functions resume after a signal that is handled, ++#. TRANS rather than failing with @code{EINTR}; see @ref{Interrupted ++#. TRANS Primitives}. ++#: sysdeps/gnu/errlist.h:29 ++msgid "Interrupted system call" ++msgstr "نداء نظام مقطوع" ++ ++#. TRANS Usually used for physical read or write errors. ++#: sysdeps/gnu/errlist.h:34 ++msgid "Input/output error" ++msgstr "خطأ إدخال/إخراج" ++ ++#. TRANS The system tried to use the device ++#. TRANS represented by a file you specified, and it couldn't find the device. ++#. TRANS This can mean that the device file was installed incorrectly, or that ++#. TRANS the physical device is missing or not correctly attached to the ++#. TRANS computer. ++#: sysdeps/gnu/errlist.h:43 ++msgid "No such device or address" ++msgstr "لا يوجد جهاز أو عنوان كهذا" ++ ++#. TRANS Used when the arguments passed to a new program ++#. TRANS being executed with one of the @code{exec} functions (@pxref{Executing a ++#. TRANS File}) occupy too much memory space. This condition never arises on ++#. TRANS @gnuhurdsystems{}. ++#: sysdeps/gnu/errlist.h:51 ++msgid "Argument list too long" ++msgstr "قائمة المعاملات طويلة جداً" ++ ++#. TRANS Invalid executable file format. This condition is detected by the ++#. TRANS @code{exec} functions; see @ref{Executing a File}. ++#: sysdeps/gnu/errlist.h:57 ++msgid "Exec format error" ++msgstr "خطأ في تنسيق التنفيذ" ++ ++#. TRANS For example, I/O on a descriptor that has been ++#. TRANS closed or reading from a descriptor open only for writing (or vice ++#. TRANS versa). ++#: sysdeps/gnu/errlist.h:64 ++msgid "Bad file descriptor" ++msgstr "واصف ملف سيئ" ++ ++#. TRANS This error happens on operations that are ++#. TRANS supposed to manipulate child processes, when there aren't any processes ++#. TRANS to manipulate. ++#: sysdeps/gnu/errlist.h:71 ++msgid "No child processes" ++msgstr "لا توجد عمليات أبناء" ++ ++#. TRANS Allocating a system resource would have resulted in a ++#. TRANS deadlock situation. The system does not guarantee that it will notice ++#. TRANS all such situations. This error means you got lucky and the system ++#. TRANS noticed; it might just hang. @xref{File Locks}, for an example. ++#: sysdeps/gnu/errlist.h:79 ++msgid "Resource deadlock avoided" ++msgstr "تُجنب مأزق (deadlock) المورد" ++ ++#. TRANS The system cannot allocate more virtual memory ++#. TRANS because its capacity is full. ++#: sysdeps/gnu/errlist.h:85 ++msgid "Cannot allocate memory" ++msgstr "يتعذر تخصيص ذاكرة" ++ ++#. TRANS An invalid pointer was detected. ++#. TRANS On @gnuhurdsystems{}, this error never happens; you get a signal instead. ++#: sysdeps/gnu/errlist.h:96 ++msgid "Bad address" ++msgstr "عنوان سيئ" ++ ++#. TRANS A file that isn't a block special file was given in a situation that ++#. TRANS requires one. For example, trying to mount an ordinary file as a file ++#. TRANS system in Unix gives this error. ++#: sysdeps/gnu/errlist.h:103 ++msgid "Block device required" ++msgstr "مطلوب جهاز كتلوي" ++ ++#. TRANS A system resource that can't be shared is already in use. ++#. TRANS For example, if you try to delete a file that is the root of a currently ++#. TRANS mounted filesystem, you get this error. ++#: sysdeps/gnu/errlist.h:110 ++msgid "Device or resource busy" ++msgstr "الجهاز أو المورد مشغول" ++ ++#. TRANS An existing file was specified in a context where it only ++#. TRANS makes sense to specify a new file. ++#: sysdeps/gnu/errlist.h:116 ++msgid "File exists" ++msgstr "الملف موجود" ++ ++#. TRANS An attempt to make an improper link across file systems was detected. ++#. TRANS This happens not only when you use @code{link} (@pxref{Hard Links}) but ++#. TRANS also when you rename a file with @code{rename} (@pxref{Renaming Files}). ++#: sysdeps/gnu/errlist.h:123 ++msgid "Invalid cross-device link" ++msgstr "رابط عبر الأجهزة غير صالح" ++ ++#. TRANS The wrong type of device was given to a function that expects a ++#. TRANS particular sort of device. ++#: sysdeps/gnu/errlist.h:129 ++msgid "No such device" ++msgstr "لا يوجد جهاز كهذا" ++ ++#. TRANS A file that isn't a directory was specified when a directory is required. ++#: sysdeps/gnu/errlist.h:134 ++msgid "Not a directory" ++msgstr "ليس دليلاً" ++ ++#. TRANS You cannot open a directory for writing, ++#. TRANS or create or remove hard links to it. ++#: sysdeps/gnu/errlist.h:140 ++msgid "Is a directory" ++msgstr "إنه دليل" ++ ++#. TRANS This is used to indicate various kinds of problems ++#. TRANS with passing the wrong argument to a library function. ++#: sysdeps/gnu/errlist.h:146 ++msgid "Invalid argument" ++msgstr "معامل غير صالح" ++ ++#. TRANS The current process has too many files open and can't open any more. ++#. TRANS Duplicate descriptors do count toward this limit. ++#. TRANS ++#. TRANS In BSD and GNU, the number of open files is controlled by a resource ++#. TRANS limit that can usually be increased. If you get this error, you might ++#. TRANS want to increase the @code{RLIMIT_NOFILE} limit or make it unlimited; ++#. TRANS @pxref{Limits on Resources}. ++#: sysdeps/gnu/errlist.h:157 ++msgid "Too many open files" ++msgstr "ملفات مفتوحة كثيرة جداً" ++ ++#. TRANS There are too many distinct file openings in the entire system. Note ++#. TRANS that any number of linked channels count as just one file opening; see ++#. TRANS @ref{Linked Channels}. This error never occurs on @gnuhurdsystems{}. ++#: sysdeps/gnu/errlist.h:164 ++msgid "Too many open files in system" ++msgstr "ملفات مفتوحة كثيرة جداً في النظام" ++ ++#. TRANS Inappropriate I/O control operation, such as trying to set terminal ++#. TRANS modes on an ordinary file. ++#: sysdeps/gnu/errlist.h:170 ++msgid "Inappropriate ioctl for device" ++msgstr "ioctl غير مناسب للجهاز" ++ ++#. TRANS An attempt to execute a file that is currently open for writing, or ++#. TRANS write to a file that is currently being executed. Often using a ++#. TRANS debugger to run a program is considered having it open for writing and ++#. TRANS will cause this error. (The name stands for ``text file busy''.) This ++#. TRANS is not an error on @gnuhurdsystems{}; the text is copied as necessary. ++#: sysdeps/gnu/errlist.h:179 ++msgid "Text file busy" ++msgstr "ملف نصي مشغول" ++ ++#. TRANS The size of a file would be larger than allowed by the system. ++#: sysdeps/gnu/errlist.h:184 ++msgid "File too large" ++msgstr "الملف كبير جداً" ++ ++#. TRANS Write operation on a file failed because the ++#. TRANS disk is full. ++#: sysdeps/gnu/errlist.h:190 ++msgid "No space left on device" ++msgstr "لم تتبقَ مساحة على الجهاز" ++ ++#. TRANS Invalid seek operation (such as on a pipe). ++#: sysdeps/gnu/errlist.h:195 ++msgid "Illegal seek" ++msgstr "عملية بحث (seek) غير قانونية" ++ ++#. TRANS An attempt was made to modify something on a read-only file system. ++#: sysdeps/gnu/errlist.h:200 ++msgid "Read-only file system" ++msgstr "نظام ملفات للقراءة فقط" ++ ++#. TRANS The link count of a single file would become too large. ++#. TRANS @code{rename} can cause this error if the file being renamed already has ++#. TRANS as many links as it can take (@pxref{Renaming Files}). ++#: sysdeps/gnu/errlist.h:207 ++msgid "Too many links" ++msgstr "روابط كثيرة جداً" ++ ++#. TRANS Used by mathematical functions when an argument value does ++#. TRANS not fall into the domain over which the function is defined. ++#: sysdeps/gnu/errlist.h:222 ++msgid "Numerical argument out of domain" ++msgstr "المعامل الرقمي خارج النطاق" ++ ++#. TRANS Used by mathematical functions when the result value is ++#. TRANS not representable because of overflow or underflow. ++#: sysdeps/gnu/errlist.h:228 ++msgid "Numerical result out of range" ++msgstr "النتيجة الرقمية خارج النطاق" ++ ++#. TRANS The call might work if you try again ++#. TRANS later. The macro @code{EWOULDBLOCK} is another name for @code{EAGAIN}; ++#. TRANS they are always the same in @theglibc{}. ++#. TRANS ++#. TRANS This error can happen in a few different situations: ++#. TRANS ++#. TRANS @itemize @bullet ++#. TRANS @item ++#. TRANS An operation that would block was attempted on an object that has ++#. TRANS non-blocking mode selected. Trying the same operation again will block ++#. TRANS until some external condition makes it possible to read, write, or ++#. TRANS connect (whatever the operation). You can use @code{select} to find out ++#. TRANS when the operation will be possible; @pxref{Waiting for I/O}. ++#. TRANS ++#. TRANS @strong{Portability Note:} In many older Unix systems, this condition ++#. TRANS was indicated by @code{EWOULDBLOCK}, which was a distinct error code ++#. TRANS different from @code{EAGAIN}. To make your program portable, you should ++#. TRANS check for both codes and treat them the same. ++#. TRANS ++#. TRANS @item ++#. TRANS A temporary resource shortage made an operation impossible. @code{fork} ++#. TRANS can return this error. It indicates that the shortage is expected to ++#. TRANS pass, so your program can try the call again later and it may succeed. ++#. TRANS It is probably a good idea to delay for a few seconds before trying it ++#. TRANS again, to allow time for other processes to release scarce resources. ++#. TRANS Such shortages are usually fairly serious and affect the whole system, ++#. TRANS so usually an interactive program should report the error to the user ++#. TRANS and return to its command loop. ++#. TRANS @end itemize ++#: sysdeps/gnu/errlist.h:261 ++msgid "Resource temporarily unavailable" ++msgstr "المورد غير متاح مؤقتاً" ++ ++#. TRANS An operation that cannot complete immediately was initiated on an object ++#. TRANS that has non-blocking mode selected. Some functions that must always ++#. TRANS block (such as @code{connect}; @pxref{Connecting}) never return ++#. TRANS @code{EAGAIN}. Instead, they return @code{EINPROGRESS} to indicate that ++#. TRANS the operation has begun and will take some time. Attempts to manipulate ++#. TRANS the object before the call completes return @code{EALREADY}. You can ++#. TRANS use the @code{select} function to find out when the pending operation ++#. TRANS has completed; @pxref{Waiting for I/O}. ++#: sysdeps/gnu/errlist.h:273 ++msgid "Operation now in progress" ++msgstr "العملية جارية الآن" ++ ++#. TRANS An operation is already in progress on an object that has non-blocking ++#. TRANS mode selected. ++#: sysdeps/gnu/errlist.h:279 ++msgid "Operation already in progress" ++msgstr "العملية جارية بالفعل" ++ ++#. TRANS A file that isn't a socket was specified when a socket is required. ++#: sysdeps/gnu/errlist.h:284 ++msgid "Socket operation on non-socket" ++msgstr "عملية مقبس على غير مقبس" ++ ++#. TRANS The size of a message sent on a socket was larger than the supported ++#. TRANS maximum size. ++#: sysdeps/gnu/errlist.h:290 ++msgid "Message too long" ++msgstr "الرسالة طويلة جداً" ++ ++#. TRANS The socket type does not support the requested communications protocol. ++#: sysdeps/gnu/errlist.h:295 ++msgid "Protocol wrong type for socket" ++msgstr "نوع بروتوكول خاطئ للمقبس" ++ ++#. TRANS You specified a socket option that doesn't make sense for the ++#. TRANS particular protocol being used by the socket. @xref{Socket Options}. ++#: sysdeps/gnu/errlist.h:301 ++msgid "Protocol not available" ++msgstr "البروتوكول غير متاح" ++ ++#. TRANS The socket domain does not support the requested communications protocol ++#. TRANS (perhaps because the requested protocol is completely invalid). ++#. TRANS @xref{Creating a Socket}. ++#: sysdeps/gnu/errlist.h:308 ++msgid "Protocol not supported" ++msgstr "البروتوكول غير مدعوم" ++ ++#. TRANS The socket type is not supported. ++#: sysdeps/gnu/errlist.h:313 ++msgid "Socket type not supported" ++msgstr "نوع المقبس غير مدعوم" ++ ++#. TRANS The operation you requested is not supported. Some socket functions ++#. TRANS don't make sense for all types of sockets, and others may not be ++#. TRANS implemented for all communications protocols. On @gnuhurdsystems{}, this ++#. TRANS error can happen for many calls when the object does not support the ++#. TRANS particular operation; it is a generic indication that the server knows ++#. TRANS nothing to do for that call. ++#: sysdeps/gnu/errlist.h:323 ++msgid "Operation not supported" ++msgstr "العملية غير مدعومة" ++ ++#. TRANS The socket communications protocol family you requested is not supported. ++#: sysdeps/gnu/errlist.h:328 ++msgid "Protocol family not supported" ++msgstr "عائلة البروتوكولات غير مدعومة" ++ ++#. TRANS The address family specified for a socket is not supported; it is ++#. TRANS inconsistent with the protocol being used on the socket. @xref{Sockets}. ++#: sysdeps/gnu/errlist.h:334 ++msgid "Address family not supported by protocol" ++msgstr "عائلة العناوين غير مدعومة من البروتوكول" ++ ++#. TRANS The requested socket address is already in use. @xref{Socket Addresses}. ++#: sysdeps/gnu/errlist.h:339 ++msgid "Address already in use" ++msgstr "العنوان مستخدم بالفعل" ++ ++#. TRANS The requested socket address is not available; for example, you tried ++#. TRANS to give a socket a name that doesn't match the local host name. ++#. TRANS @xref{Socket Addresses}. ++#: sysdeps/gnu/errlist.h:346 ++msgid "Cannot assign requested address" ++msgstr "يتعذر تعيين العنوان المطلوب" ++ ++#. TRANS A socket operation failed because the network was down. ++#: sysdeps/gnu/errlist.h:351 ++msgid "Network is down" ++msgstr "الشبكة متوقفة" ++ ++#. TRANS A socket operation failed because the subnet containing the remote host ++#. TRANS was unreachable. ++#: sysdeps/gnu/errlist.h:357 ++msgid "Network is unreachable" ++msgstr "لا يمكن الوصول للشبكة" ++ ++#. TRANS A network connection was reset because the remote host crashed. ++#: sysdeps/gnu/errlist.h:362 ++msgid "Network dropped connection on reset" ++msgstr "أسقطت الشبكة الاتصال عند إعادة الضبط" ++ ++#. TRANS A network connection was aborted locally. ++#: sysdeps/gnu/errlist.h:367 ++msgid "Software caused connection abort" ++msgstr "تسبب برنامج في إجهاض الاتصال" ++ ++#. TRANS A network connection was closed for reasons outside the control of the ++#. TRANS local host, such as by the remote machine rebooting or an unrecoverable ++#. TRANS protocol violation. ++#: sysdeps/gnu/errlist.h:374 ++msgid "Connection reset by peer" ++msgstr "أعاد الند ضبط الاتصال" ++ ++#. TRANS The kernel's buffers for I/O operations are all in use. In GNU, this ++#. TRANS error is always synonymous with @code{ENOMEM}; you may get one or the ++#. TRANS other from network operations. ++#: sysdeps/gnu/errlist.h:381 ++msgid "No buffer space available" ++msgstr "لا تتوفر مساحة في المخزن المؤقت" ++ ++#. TRANS You tried to connect a socket that is already connected. ++#. TRANS @xref{Connecting}. ++#: sysdeps/gnu/errlist.h:387 ++msgid "Transport endpoint is already connected" ++msgstr "نقطة نهاية النقل متصلة بالفعل" ++ ++#. TRANS The socket is not connected to anything. You get this error when you ++#. TRANS try to transmit data over a socket, without first specifying a ++#. TRANS destination for the data. For a connectionless socket (for datagram ++#. TRANS protocols, such as UDP), you get @code{EDESTADDRREQ} instead. ++#: sysdeps/gnu/errlist.h:395 ++msgid "Transport endpoint is not connected" ++msgstr "نقطة نهاية النقل غير متصلة" ++ ++#. TRANS No default destination address was set for the socket. You get this ++#. TRANS error when you try to transmit data over a connectionless socket, ++#. TRANS without first specifying a destination for the data with @code{connect}. ++#: sysdeps/gnu/errlist.h:402 ++msgid "Destination address required" ++msgstr "عنوان الوجهة مطلوب" ++ ++#. TRANS The socket has already been shut down. ++#: sysdeps/gnu/errlist.h:407 ++msgid "Cannot send after transport endpoint shutdown" ++msgstr "لا يمكن الإرسال بعد إغلاق نقطة نهاية النقل" ++ ++#: sysdeps/gnu/errlist.h:410 ++msgid "Too many references: cannot splice" ++msgstr "مراجع كثيرة جداً: لا يمكن الوصل" ++ ++#. TRANS A socket operation with a specified timeout received no response during ++#. TRANS the timeout period. ++#: sysdeps/gnu/errlist.h:416 ++msgid "Connection timed out" ++msgstr "انتهت مهلة الاتصال" ++ ++#. TRANS A remote host refused to allow the network connection (typically because ++#. TRANS it is not running the requested service). ++#: sysdeps/gnu/errlist.h:422 ++msgid "Connection refused" ++msgstr "رُفض الاتصال" ++ ++#. TRANS Too many levels of symbolic links were encountered in looking up a file name. ++#. TRANS This often indicates a cycle of symbolic links. ++#: sysdeps/gnu/errlist.h:428 ++msgid "Too many levels of symbolic links" ++msgstr "مستويات كثيرة جداً من الروابط الرمزية" ++ ++#. TRANS Filename too long (longer than @code{PATH_MAX}; @pxref{Limits for ++#. TRANS Files}) or host name too long (in @code{gethostname} or ++#. TRANS @code{sethostname}; @pxref{Host Identification}). ++#: sysdeps/gnu/errlist.h:435 ++msgid "File name too long" ++msgstr "اسم الملف طويل جداً" ++ ++#. TRANS The remote host for a requested network connection is down. ++#: sysdeps/gnu/errlist.h:440 ++msgid "Host is down" ++msgstr "المضيف متوقف" ++ ++#: sysdeps/gnu/errlist.h:445 ++msgid "No route to host" ++msgstr "لا يوجد مسار للمضيف" ++ ++#. TRANS Directory not empty, where an empty directory was expected. Typically, ++#. TRANS this error occurs when you are trying to delete a directory. ++#: sysdeps/gnu/errlist.h:451 ++msgid "Directory not empty" ++msgstr "الدليل ليس فارغاً" ++ ++#. TRANS The file quota system is confused because there are too many users. ++#. TRANS @c This can probably happen in a GNU system when using NFS. ++#: sysdeps/gnu/errlist.h:457 ++msgid "Too many users" ++msgstr "مستخدمون كثيرون جداً" ++ ++#. TRANS The user's disk quota was exceeded. ++#: sysdeps/gnu/errlist.h:462 ++msgid "Disk quota exceeded" ++msgstr "تجاوزت حصة القرص" ++ ++#. TRANS This indicates an internal confusion in the ++#. TRANS file system which is due to file system rearrangements on the server host ++#. TRANS for NFS file systems or corruption in other file systems. ++#. TRANS Repairing this condition usually requires unmounting, possibly repairing ++#. TRANS and remounting the file system. ++#: sysdeps/gnu/errlist.h:471 ++msgid "Stale file handle" ++msgstr "مقبض ملف قديم" ++ ++#. TRANS An attempt was made to NFS-mount a remote file system with a file name that ++#. TRANS already specifies an NFS-mounted file. ++#. TRANS (This is an error on some operating systems, but we expect it to work ++#. TRANS properly on @gnuhurdsystems{}, making this error code impossible.) ++#: sysdeps/gnu/errlist.h:479 ++msgid "Object is remote" ++msgstr "الكائن بعيد" ++ ++#. TRANS This is used by the file locking facilities; see ++#. TRANS @ref{File Locks}. This error is never generated by @gnuhurdsystems{}, but ++#. TRANS it can result from an operation to an NFS server running another ++#. TRANS operating system. ++#: sysdeps/gnu/errlist.h:487 ++msgid "No locks available" ++msgstr "لا توجد أقفال متاحة" ++ ++#. TRANS This indicates that the function called is ++#. TRANS not implemented at all, either in the C library itself or in the ++#. TRANS operating system. When you get this error, you can be sure that this ++#. TRANS particular function will always fail with @code{ENOSYS} unless you ++#. TRANS install a new version of the C library or the operating system. ++#: sysdeps/gnu/errlist.h:496 ++msgid "Function not implemented" ++msgstr "الدالة غير مدعومة" ++ ++#. TRANS While decoding a multibyte character the function came along an invalid ++#. TRANS or an incomplete sequence of bytes or the given wide character is invalid. ++#: sysdeps/gnu/errlist.h:502 ++msgid "Invalid or incomplete multibyte or wide character" ++msgstr "محرف متعدد البايتات أو عريض غير صالح أو غير مكتمل" ++ ++#: sysdeps/gnu/errlist.h:505 ++msgid "Bad message" ++msgstr "رسالة سيئة" ++ ++#: sysdeps/gnu/errlist.h:508 ++msgid "Identifier removed" ++msgstr "أزيل المعرف" ++ ++#: sysdeps/gnu/errlist.h:511 ++msgid "Multihop attempted" ++msgstr "محاولة قفزات متعددة" ++ ++#: sysdeps/gnu/errlist.h:514 ++msgid "No data available" ++msgstr "لا تتوفر بيانات" ++ ++#: sysdeps/gnu/errlist.h:517 ++msgid "Link has been severed" ++msgstr "انقطع الرابط" ++ ++#: sysdeps/gnu/errlist.h:520 ++msgid "No message of desired type" ++msgstr "لا توجد رسالة من النوع المطلوب" ++ ++#: sysdeps/gnu/errlist.h:523 ++msgid "Out of streams resources" ++msgstr "نفاد موارد الدفق" ++ ++#: sysdeps/gnu/errlist.h:526 ++msgid "Device not a stream" ++msgstr "الجهاز ليس دفقاً" ++ ++#: sysdeps/gnu/errlist.h:529 ++msgid "Value too large for defined data type" ++msgstr "القيمة كبيرة جداً لنوع البيانات المحدد" ++ ++#: sysdeps/gnu/errlist.h:532 ++msgid "Protocol error" ++msgstr "خطأ في البروتوكول" ++ ++#: sysdeps/gnu/errlist.h:535 ++msgid "Timer expired" ++msgstr "انتهى المؤقت" ++ ++#. TRANS An asynchronous operation was canceled before it ++#. TRANS completed. @xref{Asynchronous I/O}. When you call @code{aio_cancel}, ++#. TRANS the normal result is for the operations affected to complete with this ++#. TRANS error; @pxref{Cancel AIO Operations}. ++#: sysdeps/gnu/errlist.h:543 ++msgid "Operation canceled" ++msgstr "أُلغيت العملية" ++ ++#: sysdeps/gnu/errlist.h:546 ++msgid "Owner died" ++msgstr "توفي المالك" ++ ++#: sysdeps/gnu/errlist.h:549 ++msgid "State not recoverable" ++msgstr "حالة لا يمكن استردادها" ++ ++#: sysdeps/gnu/errlist.h:552 ++msgid "Interrupted system call should be restarted" ++msgstr "يجب إعادة تشغيل نداء النظام المقاطع" ++ ++#: sysdeps/gnu/errlist.h:555 ++msgid "Channel number out of range" ++msgstr "رقم القناة خارج النطاق" ++ ++#: sysdeps/gnu/errlist.h:558 ++msgid "Level 2 not synchronized" ++msgstr "المستوى 2 غير متزامن" ++ ++#: sysdeps/gnu/errlist.h:561 ++msgid "Level 3 halted" ++msgstr "توقف المستوى 3" ++ ++#: sysdeps/gnu/errlist.h:564 ++msgid "Level 3 reset" ++msgstr "إعادة ضبط المستوى 3" ++ ++#: sysdeps/gnu/errlist.h:567 ++msgid "Link number out of range" ++msgstr "رقم الرابط خارج النطاق" ++ ++#: sysdeps/gnu/errlist.h:570 ++msgid "Protocol driver not attached" ++msgstr "برنامج تشغيل البروتوكول غير متصل" ++ ++#: sysdeps/gnu/errlist.h:573 ++msgid "No CSI structure available" ++msgstr "لا يتوفر هيكل CSI" ++ ++#: sysdeps/gnu/errlist.h:576 ++msgid "Level 2 halted" ++msgstr "توقف المستوى 2" ++ ++#: sysdeps/gnu/errlist.h:579 ++msgid "Invalid exchange" ++msgstr "تبادل غير صالح" ++ ++#: sysdeps/gnu/errlist.h:582 ++msgid "Invalid request descriptor" ++msgstr "واصف طلب غير صالح" ++ ++#: sysdeps/gnu/errlist.h:585 ++msgid "Exchange full" ++msgstr "التبادل ممتلئ" ++ ++#: sysdeps/gnu/errlist.h:588 ++msgid "No anode" ++msgstr "لا توجد مصعدة (anode)" ++ ++#: sysdeps/gnu/errlist.h:591 ++msgid "Invalid request code" ++msgstr "رمز طلب غير صالح" ++ ++#: sysdeps/gnu/errlist.h:594 ++msgid "Invalid slot" ++msgstr "فتحة غير صالحة" ++ ++#: sysdeps/gnu/errlist.h:597 ++msgid "File locking deadlock error" ++msgstr "خطأ مأزق قفل الملف" ++ ++#: sysdeps/gnu/errlist.h:600 ++msgid "Bad font file format" ++msgstr "تنسيق ملف خط سيء" ++ ++#: sysdeps/gnu/errlist.h:603 ++msgid "Machine is not on the network" ++msgstr "الجهاز ليس على الشبكة" ++ ++#: sysdeps/gnu/errlist.h:606 ++msgid "Package not installed" ++msgstr "الحزمة غير مثبتة" ++ ++#: sysdeps/gnu/errlist.h:609 ++msgid "Advertise error" ++msgstr "خطأ إعلان" ++ ++#: sysdeps/gnu/errlist.h:612 ++msgid "Srmount error" ++msgstr "خطأ Srmount" ++ ++#: sysdeps/gnu/errlist.h:615 ++msgid "Communication error on send" ++msgstr "خطأ اتصال عند الإرسال" ++ ++#: sysdeps/gnu/errlist.h:618 ++msgid "RFS specific error" ++msgstr "خطأ خاص بـ RFS" ++ ++#: sysdeps/gnu/errlist.h:621 ++msgid "Name not unique on network" ++msgstr "الاسم ليس فريداً على الشبكة" ++ ++#: sysdeps/gnu/errlist.h:624 ++msgid "File descriptor in bad state" ++msgstr "واصف الملف في حالة سيئة" ++ ++#: sysdeps/gnu/errlist.h:627 ++msgid "Remote address changed" ++msgstr "تغير العنوان البعيد" ++ ++#: sysdeps/gnu/errlist.h:630 ++msgid "Can not access a needed shared library" ++msgstr "لا يمكن الوصول إلى مكتبة مشتركة مطلوبة" ++ ++#: sysdeps/gnu/errlist.h:633 ++msgid "Accessing a corrupted shared library" ++msgstr "الوصول إلى مكتبة مشتركة تالفة" ++ ++#: sysdeps/gnu/errlist.h:636 ++msgid ".lib section in a.out corrupted" ++msgstr "مقطع .lib في a.out تالف" ++ ++#: sysdeps/gnu/errlist.h:639 ++msgid "Attempting to link in too many shared libraries" ++msgstr "محاولة ربط عدد كبير جداً من المكتبات المشتركة" ++ ++#: sysdeps/gnu/errlist.h:642 ++msgid "Cannot exec a shared library directly" ++msgstr "لا يمكن تنفيذ مكتبة مشتركة مباشرة" ++ ++#: sysdeps/gnu/errlist.h:645 ++msgid "Streams pipe error" ++msgstr "خطأ في أنبوب الدفق" ++ ++#: sysdeps/gnu/errlist.h:648 ++msgid "Structure needs cleaning" ++msgstr "الهيكل يحتاج إلى تنظيف" ++ ++#: sysdeps/gnu/errlist.h:651 ++msgid "Not a XENIX named type file" ++msgstr "ليس ملف نوع مسمى XENIX" ++ ++#: sysdeps/gnu/errlist.h:654 ++msgid "No XENIX semaphores available" ++msgstr "لا تتوفر إشارات XENIX" ++ ++#: sysdeps/gnu/errlist.h:657 ++msgid "Is a named type file" ++msgstr "هو ملف نوع مسمى" ++ ++#: sysdeps/gnu/errlist.h:660 ++msgid "Remote I/O error" ++msgstr "خطأ إدخال/إخراج بعيد" ++ ++#: sysdeps/gnu/errlist.h:663 ++msgid "No medium found" ++msgstr "لم يتم العثور على وسيط" ++ ++#: sysdeps/gnu/errlist.h:666 ++msgid "Wrong medium type" ++msgstr "نوع وسيط خاطئ" ++ ++#: sysdeps/gnu/errlist.h:669 ++msgid "Required key not available" ++msgstr "المفتاح المطلوب غير متاح" ++ ++#: sysdeps/gnu/errlist.h:672 ++msgid "Key has expired" ++msgstr "انتهت صلاحية المفتاح" ++ ++#: sysdeps/gnu/errlist.h:675 ++msgid "Key has been revoked" ++msgstr "أُلغي المفتاح" ++ ++#: sysdeps/gnu/errlist.h:678 ++msgid "Key was rejected by service" ++msgstr "رفضت الخدمة المفتاح" ++ ++#: sysdeps/gnu/errlist.h:681 ++msgid "Operation not possible due to RF-kill" ++msgstr "العملية غير ممكنة بسبب RF-kill" ++ ++#: sysdeps/gnu/errlist.h:684 ++msgid "Memory page has hardware error" ++msgstr "صفحة الذاكرة بها خطأ عتادي" ++ ++#: sysdeps/gnu/errlist.h:687 ++msgid "RPC struct is bad" ++msgstr "هيكل RPC سيء" ++ ++#. TRANS The file was the wrong type for the ++#. TRANS operation, or a data file had the wrong format. ++#. TRANS ++#. TRANS On some systems @code{chmod} returns this error if you try to set the ++#. TRANS sticky bit on a non-directory file; @pxref{Setting Permissions}. ++#: sysdeps/gnu/errlist.h:696 ++msgid "Inappropriate file type or format" ++msgstr "نوع ملف أو تنسيق غير ملائم" ++ ++#: sysdeps/gnu/errlist.h:699 ++msgid "RPC bad procedure for program" ++msgstr "إجراء RPC سيء للبرنامج" ++ ++#: sysdeps/gnu/errlist.h:702 ++msgid "Authentication error" ++msgstr "خطأ في الاستيثاق" ++ ++#. TRANS On @gnuhurdsystems{}, opening a file returns this error when the file is ++#. TRANS translated by a program and the translator program dies while starting ++#. TRANS up, before it has connected to the file. ++#: sysdeps/gnu/errlist.h:709 ++msgid "Translator died" ++msgstr "توقف المترجم" ++ ++#: sysdeps/gnu/errlist.h:712 ++msgid "RPC version wrong" ++msgstr "إصدار RPC خاطئ" ++ ++#. TRANS You did @strong{what}? ++#: sysdeps/gnu/errlist.h:717 ++msgid "You really blew it this time" ++msgstr "لقد أفسدت الأمر حقاً هذه المرة" ++ ++#. TRANS This means that the per-user limit on new process would be exceeded by ++#. TRANS an attempted @code{fork}. @xref{Limits on Resources}, for details on ++#. TRANS the @code{RLIMIT_NPROC} limit. ++#: sysdeps/gnu/errlist.h:724 ++msgid "Too many processes" ++msgstr "عمليات كثيرة جداً" ++ ++#. TRANS This error code has no purpose. ++#: sysdeps/gnu/errlist.h:729 ++msgid "Gratuitous error" ++msgstr "خطأ مجاني" ++ ++#. TRANS A function returns this error when certain parameter ++#. TRANS values are valid, but the functionality they request is not available. ++#. TRANS This can mean that the function does not implement a particular command ++#. TRANS or option value or flag bit at all. For functions that operate on some ++#. TRANS object given in a parameter, such as a file descriptor or a port, it ++#. TRANS might instead mean that only @emph{that specific object} (file ++#. TRANS descriptor, port, etc.) is unable to support the other parameters given; ++#. TRANS different file descriptors might support different ranges of parameter ++#. TRANS values. ++#. TRANS ++#. TRANS If the entire function is not available at all in the implementation, ++#. TRANS it returns @code{ENOSYS} instead. ++#: sysdeps/gnu/errlist.h:745 ++msgid "Not supported" ++msgstr "غير مدعوم" ++ ++#: sysdeps/gnu/errlist.h:748 ++msgid "RPC program version wrong" ++msgstr "إصدار برنامج RPC خاطئ" ++ ++#. TRANS On @gnuhurdsystems{}, servers supporting the @code{term} protocol return ++#. TRANS this error for certain operations when the caller is not in the ++#. TRANS foreground process group of the terminal. Users do not usually see this ++#. TRANS error because functions such as @code{read} and @code{write} translate ++#. TRANS it into a @code{SIGTTIN} or @code{SIGTTOU} signal. @xref{Job Control}, ++#. TRANS for information on process groups and these signals. ++#: sysdeps/gnu/errlist.h:758 ++msgid "Inappropriate operation for background process" ++msgstr "عملية غير ملائمة لعملية خلفية" ++ ++#. TRANS Go home and have a glass of warm, dairy-fresh milk. ++#. TRANS @c Okay. Since you are dying to know, I'll tell you. ++#. TRANS @c This is a joke, obviously. There is a children's song which begins, ++#. TRANS @c "Old McDonald had a farm, e-i-e-i-o." Every time I see the (real) ++#. TRANS @c errno macro EIO, I think about that song. Probably most of my ++#. TRANS @c compatriots who program on Unix do, too. One of them must have stayed ++#. TRANS @c up a little too late one night and decided to add it to Hurd or Glibc. ++#. TRANS @c Whoever did it should be castigated, but it made me laugh. ++#. TRANS @c --jtobey@channel1.com ++#. TRANS @c ++#. TRANS @c "bought the farm" means "died". -jtobey ++#. TRANS @c ++#. TRANS @c Translators, please do not translate this litteraly, translate it into ++#. TRANS @c an idiomatic funny way of saying that the computer died. ++#: sysdeps/gnu/errlist.h:776 ++msgid "Computer bought the farm" ++msgstr "ودع الحاسوب الملاعب" ++ ++#. TRANS In @theglibc{}, this is another name for @code{EAGAIN} (above). ++#. TRANS The values are always the same, on every operating system. ++#. TRANS ++#. TRANS C libraries in many older Unix systems have @code{EWOULDBLOCK} as a ++#. TRANS separate error code. ++#: sysdeps/gnu/errlist.h:785 ++msgid "Operation would block" ++msgstr "العملية ستؤدي إلى حظر" ++ ++#: sysdeps/gnu/errlist.h:788 ++msgid "Need authenticator" ++msgstr "بحاجة لموثق" ++ ++#. TRANS The experienced user will know what is wrong. ++#. TRANS @c This error code is a joke. Its perror text is part of the joke. ++#. TRANS @c Don't change it. ++#: sysdeps/gnu/errlist.h:795 ++msgid "?" ++msgstr "؟" ++ ++#: sysdeps/gnu/errlist.h:798 ++msgid "RPC program not available" ++msgstr "برنامج RPC غير متاح" ++ ++#: sysdeps/gnu/errlist.h:801 ++msgid "Initialization error" ++msgstr "خطأ في التهيئة" ++ ++#: sysdeps/gnu/errlist.h:804 ++msgid "Device is remote" ++msgstr "الجهاز بعيد" ++ ++#: sysdeps/gnu/errlist.h:807 ++msgid "Too many levels of remote in path" ++msgstr "مستويات كثيرة جداً من البعد في المسار" ++ ++#: sysdeps/hppa/dl-fptr.c:96 ++msgid "cannot map pages for fdesc table" ++msgstr "لا يمكن مطابقة الصفحات لجدول fdesc" ++ ++#: sysdeps/hppa/dl-fptr.c:214 ++msgid "cannot map pages for fptr table" ++msgstr "لا يمكن مطابقة الصفحات لجدول fptr" ++ ++#: sysdeps/hppa/dl-fptr.c:243 ++msgid "internal error: symidx out of range of fptr table" ++msgstr "خطأ داخلي: symidx خارج نطاق جدول fptr" ++ ++#: sysdeps/mach/_strerror.c:43 sysdeps/mach/xpg-strerror.c:55 ++msgid "Error in unknown error system: " ++msgstr "خطأ في نظام أخطاء مجهول: " ++ ++#: sysdeps/mach/xpg-strerror.c:66 sysdeps/mach/xpg-strerror.c:74 ++msgid "Unknown error code: " ++msgstr "رمز خطأ مجهول: " ++ ++#: sysdeps/posix/gai_strerror-strs.h:2 ++msgid "Address family for hostname not supported" ++msgstr "فئة العناوين لاسم المضيف غير مدعومة" ++ ++#: sysdeps/posix/gai_strerror-strs.h:3 ++msgid "Temporary failure in name resolution" ++msgstr "فشل مؤقت في حل الاسم" ++ ++#: sysdeps/posix/gai_strerror-strs.h:4 ++msgid "Bad value for ai_flags" ++msgstr "قيمة سيئة لـ ai_flags" ++ ++#: sysdeps/posix/gai_strerror-strs.h:5 ++msgid "Non-recoverable failure in name resolution" ++msgstr "فشل غير قابل للاسترداد في حل الاسم" ++ ++#: sysdeps/posix/gai_strerror-strs.h:6 ++msgid "ai_family not supported" ++msgstr "ai_family غير مدعومة" ++ ++#: sysdeps/posix/gai_strerror-strs.h:7 ++msgid "Memory allocation failure" ++msgstr "فشل في تخصيص الذاكرة" ++ ++#: sysdeps/posix/gai_strerror-strs.h:8 ++msgid "No address associated with hostname" ++msgstr "لا يوجد عنوان مرتبط باسم المضيف" ++ ++#: sysdeps/posix/gai_strerror-strs.h:9 ++msgid "Name or service not known" ++msgstr "الاسم أو الخدمة غير معروفة" ++ ++#: sysdeps/posix/gai_strerror-strs.h:10 ++msgid "Servname not supported for ai_socktype" ++msgstr "اسم الخدمة غير مدعوم لـ ai_socktype" ++ ++#: sysdeps/posix/gai_strerror-strs.h:11 ++msgid "ai_socktype not supported" ++msgstr "ai_socktype غير مدعوم" ++ ++#: sysdeps/posix/gai_strerror-strs.h:12 ++msgid "System error" ++msgstr "خطأ في النظام" ++ ++#: sysdeps/posix/gai_strerror-strs.h:13 ++msgid "Processing request in progress" ++msgstr "معالجة الطلب قيد التنفيذ" ++ ++#: sysdeps/posix/gai_strerror-strs.h:14 ++msgid "Request canceled" ++msgstr "أُلغي الطلب" ++ ++#: sysdeps/posix/gai_strerror-strs.h:15 ++msgid "Request not canceled" ++msgstr "لم يُلغَ الطلب" ++ ++#: sysdeps/posix/gai_strerror-strs.h:16 ++msgid "All requests done" ++msgstr "انتهت جميع الطلبات" ++ ++#: sysdeps/posix/gai_strerror-strs.h:17 ++msgid "Interrupted by a signal" ++msgstr "قوطع بواسطة إشارة" ++ ++#: sysdeps/posix/gai_strerror-strs.h:18 ++msgid "Parameter string not correctly encoded" ++msgstr "سلسلة المعاملات لم يتم ترميزها بشكل صحيح" ++ ++#: sysdeps/posix/gai_strerror-strs.h:19 ++msgid "Result too large for supplied buffer" ++msgstr "النتيجة كبيرة جداً للمخزن المؤقت المقدم" ++ ++#: sysdeps/x86/dl-prop.h:61 ++msgid "CPU ISA level is lower than required" ++msgstr "مستوى CPU ISA أقل من المطلوب" ++ ++#: sysdeps/x86/readelflib.c:49 ++#, c-format ++msgid "%s is for unknown machine %d.\n" ++msgstr "%s لآلة مجهولة %d.\n" ++ ++#: sysdeps/x86_64/dl-cet.c:214 ++msgid "rebuild shared object with IBT support enabled" ++msgstr "أعد بناء الكائن المشترك مع تفعيل دعم IBT" ++ ++#: sysdeps/x86_64/dl-cet.c:233 ++msgid "rebuild shared object with SHSTK support enabled" ++msgstr "أعد بناء الكائن المشترك مع تفعيل دعم SHSTK" ++ ++#: sysdeps/x86_64/dl-cet.c:251 ++msgid "can't disable IBT" ++msgstr "لا يمكن تعطيل IBT" ++ ++#: sysdeps/x86_64/dl-cet.c:253 ++msgid "can't disable SHSTK" ++msgstr "لا يمكن تعطيل SHSTK" ++ ++#: timezone/zdump.c:131 ++#, c-format ++msgid "%s: size overflow\n" ++msgstr "%s: تجاوز السعة\n" ++ ++#: timezone/zdump.c:170 ++#, c-format ++msgid "%s: Memory exhausted\n" ++msgstr "%s: نفدت الذاكرة\n" ++ ++#: timezone/zdump.c:257 ++#, c-format ++msgid "%s: setenv: %s\n" ++msgstr "%s: setenv: %s\n" ++ ++#: timezone/zdump.c:337 timezone/zdump.c:604 ++#, c-format ++msgid "%s: unknown timezone '%s': %s\n" ++msgstr "%s: منطقة زمنية مجهولة '%s': %s\n" ++ ++#: timezone/zdump.c:402 ++msgid "has characters other than ASCII alphanumerics, '-' or '+'" ++msgstr "يحتوي محارف غير الحروف والأرقام و '-' أو '+'" ++ ++#: timezone/zdump.c:404 ++msgid "has fewer than 3 characters" ++msgstr "يحتوي أقل من 3 محارف" ++ ++#: timezone/zdump.c:406 ++msgid "has more than 6 characters" ++msgstr "يحتوي أكثر من 6 محارف" ++ ++#: timezone/zdump.c:411 ++#, c-format ++msgid "%s: warning: zone \"%s\" abbreviation \"%s\" %s\n" ++msgstr "%s: تحذير: اختصار المنطقة \"%s\" هو \"%s\" %s\n" ++ ++#: timezone/zdump.c:457 ++#, c-format ++msgid "" ++"%s: usage: %s OPTIONS TIMEZONE ...\n" ++"Options include:\n" ++" -c [L,]U Start at year L (default -500), end before year U (default 2500)\n" ++" -t [L,]U Start at time L, end before time U (in seconds since 1970)\n" ++" -i List transitions briefly (format is experimental)\n" ++" -v List transitions verbosely\n" ++" -V List transitions a bit less verbosely\n" ++" --help Output this help\n" ++" --version Output version info\n" ++"\n" ++"Report bugs to %s.\n" ++msgstr "" ++"%s: الاستخدام: %s خيارات المنطقة_الزمنية ...\n" ++"الخيارات تشمل:\n" ++" -c [L,]U البدء في السنة L (مبدئي -500)، والانتهاء قبل السنة U (مبدئي 2500)\n" ++" -t [L,]U البدء في الوقت L، والانتهاء قبل الوقت U (بالثواني منذ 1970)\n" ++" -i سرد التحولات باختصار (تنسيق تجريبي)\n" ++" -v سرد التحولات بإسهاب\n" ++" -V سرد التحولات بإسهاب أقل قليلاً\n" ++" --help إخراج المساعدة\n" ++" --version إخراج معلومات الإصدار\n" ++"\n" ++"أبلغ عن الأخطاء إلى %s.\n" ++ ++#: timezone/zdump.c:543 ++#, c-format ++msgid "%s: wild -c argument %s\n" ++msgstr "%s: معامل -c جامح %s\n" ++ ++#: timezone/zdump.c:576 ++#, c-format ++msgid "%s: wild -t argument %s\n" ++msgstr "%s: معامل -t جامح %s\n" ++ ++#: timezone/zdump.c:857 ++#, c-format ++msgid " (gmtime failed)" ++msgstr " (فشل gmtime)" ++ ++#: timezone/zdump.c:867 ++#, c-format ++msgid " (localtime failed)" ++msgstr " (فشل localtime)" ++ ++#: timezone/zic.c:463 ++#, c-format ++msgid "%s: Memory exhausted: %s\n" ++msgstr "%s: نفدت الذاكرة: %s\n" ++ ++#: timezone/zic.c:470 ++msgid "size overflow" ++msgstr "تجاوز السعة" ++ ++#: timezone/zic.c:559 ++msgid "integer overflow" ++msgstr "تجاوز سعة العدد الصحيح" ++ ++#: timezone/zic.c:585 ++msgid "command line" ++msgstr "سطر الأوامر" ++ ++#: timezone/zic.c:588 ++msgid "standard input" ++msgstr "الإدخال القياسي" ++ ++#: timezone/zic.c:616 ++#, c-format ++msgid "\"%s\", line %: " ++msgstr "\"%s\"، السطر %: " ++ ++#: timezone/zic.c:620 ++#, c-format ++msgid " (rule from \"%s\", line %)" ++msgstr " (قاعدة من \"%s\"، السطر %)" ++ ++#: timezone/zic.c:639 ++#, c-format ++msgid "warning: " ++msgstr "تحذير: " ++ ++#: timezone/zic.c:669 ++#, c-format ++msgid "" ++"%s: usage is %s [ --version ] [ --help ] [ -v ] \\\n" ++"\t[ -b {slim|fat} ] [ -d directory ] [ -l localtime ] [ -L leapseconds ] \\\n" ++"\t[ -p posixrules ] [ -r '[@lo][/@hi]' ] [ -R '@hi' ] \\\n" ++"\t[ -t localtime-link ] \\\n" ++"\t[ filename ... ]\n" ++"\n" ++"Report bugs to %s.\n" ++msgstr "" ++"%s: الاستخدام هو %s [ --version ] [ --help ] [ -v ] \\\n" ++"\t[ -b {slim|fat} ] [ -d الدليل ] [ -l الوقت_المحلي ] [ -L الثواني_الكبيسة ] \\\n" ++"\t[ -p قواعد_posix ] [ -r '[@lo][/@hi]' ] [ -R '@hi' ] \\\n" ++"\t[ -t رابط_الوقت_المحلي ] \\\n" ++"\t[ اسم_الملف ... ]\n" ++"\n" ++"أبلغ عن الأخطاء إلى %s.\n" ++ ++#: timezone/zic.c:695 ++#, c-format ++msgid "%s: Can't chdir to %s: %s\n" ++msgstr "%s: لا يمكن تغيير الدليل إلى %s: %s\n" ++ ++#: timezone/zic.c:786 ++#, c-format ++msgid "\"Link %s %s\" is part of a link cycle" ++msgstr "\"Link %s %s\" جزء من دورة روابط" ++ ++#: timezone/zic.c:797 ++#, c-format ++msgid "link %s targets itself" ++msgstr "الرابط %s يستهدف نفسه" ++ ++#: timezone/zic.c:817 ++#, c-format ++msgid "link %s targeting link %s mishandled by pre-2023 zic" ++msgstr "الرابط %s الذي يستهدف الرابط %s تم التعامل معه بشكل خاطئ بواسطة zic ما قبل 2023" ++ ++#: timezone/zic.c:821 ++#, c-format ++msgid "link %s targeting link %s" ++msgstr "الرابط %s يستهدف الرابط %s" ++ ++#: timezone/zic.c:992 ++msgid "wild compilation-time specification of zic_t" ++msgstr "مواصفة وقت ترجمة جامحة لـ zic_t" ++ ++#: timezone/zic.c:1011 timezone/zic.c:1015 ++msgid "incompatible -b options" ++msgstr "خيارات -b غير متوافقة" ++ ++#: timezone/zic.c:1018 ++#, c-format ++msgid "invalid option: -b '%s'" ++msgstr "خيار غير صالح: -b '%s'" ++ ++#: timezone/zic.c:1025 ++#, c-format ++msgid "%s: More than one -d option specified\n" ++msgstr "%s: تم تحديد أكثر من خيار -d\n" ++ ++#: timezone/zic.c:1036 ++#, c-format ++msgid "%s: More than one -l option specified\n" ++msgstr "%s: تم تحديد أكثر من خيار -l\n" ++ ++#: timezone/zic.c:1047 ++#, c-format ++msgid "%s: More than one -p option specified\n" ++msgstr "%s: تم تحديد أكثر من خيار -p\n" ++ ++#: timezone/zic.c:1056 ++#, c-format ++msgid "%s: More than one -t option specified\n" ++msgstr "%s: تم تحديد أكثر من خيار -t\n" ++ ++#: timezone/zic.c:1064 ++msgid "-y ignored" ++msgstr "تم تجاهل -y" ++ ++#: timezone/zic.c:1071 ++#, c-format ++msgid "%s: More than one -L option specified\n" ++msgstr "%s: تم تحديد أكثر من خيار -L\n" ++ ++#: timezone/zic.c:1083 ++#, c-format ++msgid "%s: More than one -r option specified\n" ++msgstr "%s: تم تحديد أكثر من خيار -r\n" ++ ++#: timezone/zic.c:1090 ++#, c-format ++msgid "%s: invalid time range: %s\n" ++msgstr "%s: نطاق زمني غير صالح: %s\n" ++ ++#: timezone/zic.c:1098 ++#, c-format ++msgid "%s: invalid time: %s\n" ++msgstr "%s: وقت غير صالح: %s\n" ++ ++#: timezone/zic.c:1104 ++msgid "-s ignored" ++msgstr "تم تجاهل -s" ++ ++#: timezone/zic.c:1110 ++#, c-format ++msgid "%s: -R time exceeds -r cutoff\n" ++msgstr "%s: وقت -R يتجاوز حد -r\n" ++ ++#: timezone/zic.c:1171 ++msgid "empty file name" ++msgstr "اسم ملف فارغ" ++ ++#: timezone/zic.c:1174 ++#, c-format ++msgid "file name '%s' begins with '/'" ++msgstr "اسم الملف '%s' يبدأ بـ '/'" ++ ++#: timezone/zic.c:1184 ++#, c-format ++msgid "file name '%s' contains '%.*s' component" ++msgstr "اسم الملف '%s' يحتوي على المكون '%.*s'" ++ ++#: timezone/zic.c:1190 ++#, c-format ++msgid "file name '%s' component contains leading '-'" ++msgstr "مكون اسم الملف '%s' يحتوي على '-' في بدايته" ++ ++#: timezone/zic.c:1193 ++#, c-format ++msgid "file name '%s' contains overlength component '%.*s...'" ++msgstr "اسم الملف '%s' يحتوي على مكون زائد الطول '%.*s...'" ++ ++#: timezone/zic.c:1221 ++#, c-format ++msgid "file name '%s' contains byte '%c'" ++msgstr "اسم الملف '%s' يحتوي على البايت '%c'" ++ ++#: timezone/zic.c:1222 ++#, c-format ++msgid "file name '%s' contains byte '\\%o'" ++msgstr "اسم الملف '%s' يحتوي على البايت '\\%o'" ++ ++#: timezone/zic.c:1369 ++#, c-format ++msgid "%s: Can't create %s/%s: %s\n" ++msgstr "%s: لا يمكن إنشاء %s/%s: %s\n" ++ ++#: timezone/zic.c:1388 ++#, c-format ++msgid "%s: rename to %s/%s: %s\n" ++msgstr "%s: إعادة التسمية إلى %s/%s: %s\n" ++ ++#: timezone/zic.c:1463 ++#, c-format ++msgid "%s: Can't remove %s/%s: %s\n" ++msgstr "%s: لا يمكن إزالة %s/%s: %s\n" ++ ++#: timezone/zic.c:1507 ++#, c-format ++msgid "%s: Can't link %s/%s to %s/%s: %s\n" ++msgstr "%s: لا يمكن ربط %s/%s بـ %s/%s: %s\n" ++ ++#: timezone/zic.c:1536 ++#, c-format ++msgid "symbolic link used because hard link failed: %s" ++msgstr "استخدم رابط رمزي لأن الرابط الصلب فشل: %s" ++ ++#: timezone/zic.c:1544 ++#, c-format ++msgid "%s: Can't read %s/%s: %s\n" ++msgstr "%s: لا يمكن قراءة %s/%s: %s\n" ++ ++#: timezone/zic.c:1554 ++#, c-format ++msgid "copy used because hard link failed: %s" ++msgstr "استخدم النسخ لأن الرابط الصلب فشل: %s" ++ ++#: timezone/zic.c:1557 ++#, c-format ++msgid "copy used because symbolic link failed: %s" ++msgstr "استخدم النسخ لأن الرابط الرمزي فشل: %s" ++ ++#: timezone/zic.c:1608 timezone/zic.c:1610 ++msgid "same rule name in multiple files" ++msgstr "نفس اسم القاعدة في ملفات متعددة" ++ ++#: timezone/zic.c:1656 ++#, c-format ++msgid "%s in ruleless zone" ++msgstr "%s في منطقة بلا قواعد" ++ ++#: timezone/zic.c:1674 ++msgid "input error" ++msgstr "خطأ إدخال" ++ ++#: timezone/zic.c:1679 ++msgid "unterminated line" ++msgstr "سطر غير منتهٍ" ++ ++#: timezone/zic.c:1683 ++msgid "NUL input byte" ++msgstr "بايت إدخال NUL" ++ ++#: timezone/zic.c:1688 ++msgid "line too long" ++msgstr "السطر طويل جداً" ++ ++#: timezone/zic.c:1709 ++#, c-format ++msgid "%s: Can't open %s: %s\n" ++msgstr "%s: لا يمكن فتح %s: %s\n" ++ ++#: timezone/zic.c:1734 ++msgid "input line of unknown type" ++msgstr "سطر إدخال من نوع مجهول" ++ ++#: timezone/zic.c:1761 ++msgid "expected continuation line not found" ++msgstr "السطر التكميلي المتوقع غير موجود" ++ ++#: timezone/zic.c:1797 ++msgid "fractional seconds rejected by pre-2018 versions of zic" ++msgstr "الثواني الكسرية مرفوضة من قبل إصدارات zic ما قبل 2018" ++ ++#: timezone/zic.c:1815 timezone/zic.c:3760 ++msgid "time overflow" ++msgstr "تجاوز وقت" ++ ++#: timezone/zic.c:1821 ++msgid "values over 24 hours not handled by pre-2007 versions of zic" ++msgstr "القيم التي تزيد عن 24 ساعة لا تعالجها إصدارات zic ما قبل 2007" ++ ++#: timezone/zic.c:1839 ++msgid "invalid saved time" ++msgstr "وقت محفوظ غير صالح" ++ ++#: timezone/zic.c:1850 ++msgid "wrong number of fields on Rule line" ++msgstr "عدد حقول خاطئ في سطر القاعدة (Rule)" ++ ++#: timezone/zic.c:1859 ++#, c-format ++msgid "Invalid rule name \"%s\"" ++msgstr "اسم قاعدة غير صالح \"%s\"" ++ ++#: timezone/zic.c:1883 ++msgid "wrong number of fields on Zone line" ++msgstr "عدد حقول خاطئ في سطر المنطقة (Zone)" ++ ++#: timezone/zic.c:1887 ++#, c-format ++msgid "\"Zone %s\" line and -l option are mutually exclusive" ++msgstr "سطر \"Zone %s\" والخيار -l متعارضان" ++ ++#: timezone/zic.c:1892 ++#, c-format ++msgid "\"Zone %s\" line and -p option are mutually exclusive" ++msgstr "سطر \"Zone %s\" والخيار -p متعارضان" ++ ++#: timezone/zic.c:1899 ++#, c-format ++msgid "duplicate zone name %s (file \"%s\", line %)" ++msgstr "اسم منطقة مكرر %s (الملف \"%s\"، السطر %)" ++ ++#: timezone/zic.c:1913 ++msgid "wrong number of fields on Zone continuation line" ++msgstr "عدد حقول خاطئ في سطر تكملة المنطقة" ++ ++#: timezone/zic.c:1952 ++msgid "invalid UT offset" ++msgstr "إزاحة UT غير صالحة" ++ ++#: timezone/zic.c:1956 ++msgid "invalid abbreviation format" ++msgstr "تنسيق اختصار غير صالح" ++ ++#: timezone/zic.c:1986 ++msgid "Zone continuation line end time is not after end time of previous line" ++msgstr "وقت نهاية سطر تكملة المنطقة ليس بعد وقت نهاية السطر السابق" ++ ++#: timezone/zic.c:1997 ++#, c-format ++msgid "format '%s' not handled by pre-2015 versions of zic" ++msgstr "التنسيق '%s' لا تعالجه إصدارات zic ما قبل 2015" ++ ++#: timezone/zic.c:2027 ++msgid "invalid leaping year" ++msgstr "سنة كبيسة غير صالحة" ++ ++#: timezone/zic.c:2049 timezone/zic.c:2154 ++msgid "invalid month name" ++msgstr "اسم شهر غير صالح" ++ ++#: timezone/zic.c:2062 timezone/zic.c:2252 timezone/zic.c:2266 ++msgid "invalid day of month" ++msgstr "يوم شهر غير صالح" ++ ++#: timezone/zic.c:2067 ++msgid "time too small" ++msgstr "وقت صغير جداً" ++ ++#: timezone/zic.c:2071 ++msgid "time too large" ++msgstr "وقت كبير جداً" ++ ++#: timezone/zic.c:2075 timezone/zic.c:2183 ++msgid "invalid time of day" ++msgstr "وقت اليوم غير صالح" ++ ++#: timezone/zic.c:2078 ++msgid "leap second precedes Epoch" ++msgstr "الثانية الكبيسة تسبق الحقبة" ++ ++#: timezone/zic.c:2086 ++msgid "wrong number of fields on Leap line" ++msgstr "عدد حقول خاطئ في سطر الكبيس (Leap)" ++ ++#: timezone/zic.c:2092 ++msgid "invalid Rolling/Stationary field on Leap line" ++msgstr "حقل Rolling/Stationary غير صالح في سطر Leap" ++ ++#: timezone/zic.c:2100 ++msgid "invalid CORRECTION field on Leap line" ++msgstr "حقل CORRECTION غير صالح في سطر Leap" ++ ++#: timezone/zic.c:2112 ++msgid "wrong number of fields on Expires line" ++msgstr "عدد حقول خاطئ في سطر الانتهاء (Expires)" ++ ++#: timezone/zic.c:2114 ++msgid "multiple Expires lines" ++msgstr "أسطر انتهاء متعددة" ++ ++#: timezone/zic.c:2125 ++msgid "wrong number of fields on Link line" ++msgstr "عدد حقول خاطئ في سطر الرابط (Link)" ++ ++#: timezone/zic.c:2129 ++msgid "blank TARGET field on Link line" ++msgstr "حقل TARGET فارغ في سطر الرابط" ++ ++#: timezone/zic.c:2192 ++#, c-format ++msgid "FROM year \"%s\" is obsolete; treated as %d" ++msgstr "السنة FROM \"%s\" مهجورة؛ ستعامل كـ %d" ++ ++#: timezone/zic.c:2199 ++msgid "invalid starting year" ++msgstr "سنة بدء غير صالحة" ++ ++#: timezone/zic.c:2214 ++msgid "invalid ending year" ++msgstr "سنة انتهاء غير صالحة" ++ ++#: timezone/zic.c:2218 ++msgid "starting year greater than ending year" ++msgstr "سنة البدء أكبر من سنة الانتهاء" ++ ++#: timezone/zic.c:2222 ++#, c-format ++msgid "year type \"%s\" is unsupported; use \"-\" instead" ++msgstr "نوع السنة \"%s\" غير مدعوم؛ استخدم \"-\" بدلاً منه" ++ ++#: timezone/zic.c:2257 ++msgid "invalid weekday name" ++msgstr "اسم يوم أسبوع غير صالح" ++ ++#: timezone/zic.c:2435 ++#, c-format ++msgid "reference clients mishandle more than %d transition times" ++msgstr "عملاء المرجع يسيئون التعامل مع أكثر من %d أوقات تحول" ++ ++#: timezone/zic.c:2439 ++msgid "pre-2014 clients may mishandle more than 1200 transition times" ++msgstr "عملاء ما قبل 2014 قد يسيئون التعامل مع أكثر من 1200 وقت تحول" ++ ++#: timezone/zic.c:2480 ++#, c-format ++msgid "%s: pre-2021b clients may mishandle leap second expiry" ++msgstr "%s: عملاء ما قبل 2021b قد يسيئون التعامل مع انتهاء صلاحية الثانية الكبيسة" ++ ++#: timezone/zic.c:2488 ++#, c-format ++msgid "%s: pre-2021b clients may mishandle leap second table truncation" ++msgstr "%s: عملاء ما قبل 2021b قد يسيئون التعامل مع بتر جدول الثواني الكبيسة" ++ ++#: timezone/zic.c:2537 ++msgid "too many transition times" ++msgstr "أوقات تحول كثيرة جداً" ++ ++#: timezone/zic.c:2801 ++#, c-format ++msgid "%%z UT offset magnitude exceeds 99:59:59" ++msgstr "قيمة إزاحة %%z UT تتجاوز 99:59:59" ++ ++#: timezone/zic.c:3180 ++msgid "no proleptic TZ string for zone" ++msgstr "لا توجد سلسلة TZ استباقية للمنطقة" ++ ++#: timezone/zic.c:3186 ++#, c-format ++msgid "%s: pre-%d clients may mishandle distant timestamps" ++msgstr "%s: عملاء ما قبل %d قد يسيئون التعامل مع الطوابع الزمنية البعيدة" ++ ++#: timezone/zic.c:3315 ++msgid "two rules for same instant" ++msgstr "قاعدتان لنفس اللحظة" ++ ++#: timezone/zic.c:3388 ++msgid "can't determine time zone abbreviation to use just after until time" ++msgstr "لا يمكن تحديد اختصار المنطقة الزمنية للاستخدام مباشرة بعد وقت \"حتى\" (until)" ++ ++#: timezone/zic.c:3489 ++msgid "UT offset out of range" ++msgstr "إزاحة UT خارج النطاق" ++ ++#: timezone/zic.c:3512 ++msgid "too many local time types" ++msgstr "أنواع وقت محلي كثيرة جداً" ++ ++#: timezone/zic.c:3530 ++msgid "too many leap seconds" ++msgstr "ثواني كبيسة كثيرة جداً" ++ ++#: timezone/zic.c:3534 ++msgid "Rolling leap seconds not supported with -r" ++msgstr "الثواني الكبيسة المتناوبة (Rolling) غير مدعومة مع -r" ++ ++#: timezone/zic.c:3561 ++msgid "Leap seconds too close together" ++msgstr "الثواني الكبيسة قريبة جداً من بعضها" ++ ++#: timezone/zic.c:3572 ++msgid "last Leap time does not precede Expires time" ++msgstr "وقت الكبيس الأخير لا يسبق وقت الانتهاء" ++ ++#: timezone/zic.c:3679 ++#, c-format ++msgid "\"%s\" is undocumented; use \"last%s\" instead" ++msgstr "\"%s\" غير موثق؛ استخدم \"last%s\" بدلاً منه" ++ ++#: timezone/zic.c:3710 ++#, c-format ++msgid "\"%s\" is ambiguous in pre-2017c zic" ++msgstr "\"%s\" غامض في zic ما قبل 2017c" ++ ++#: timezone/zic.c:3741 ++msgid "Odd number of quotation marks" ++msgstr "عدد فردي من علامات الاقتباس" ++ ++#: timezone/zic.c:3749 ++msgid "Too many input fields" ++msgstr "حقول إدخال كثيرة جداً" ++ ++#: timezone/zic.c:3838 ++msgid "use of 2/29 in non leap-year" ++msgstr "استخدام 29/2 في سنة غير كبيسة" ++ ++#: timezone/zic.c:3864 ++msgid "rule goes past start/end of month; will not work with pre-2004 versions of zic" ++msgstr "القاعدة تتجاوز بداية/نهاية الشهر؛ لن تعمل مع إصدارات zic ما قبل 2004" ++ ++#: timezone/zic.c:3891 ++msgid "time zone abbreviation has fewer than 3 characters" ++msgstr "اختصار المنطقة الزمنية يحتوي أقل من 3 محارف" ++ ++#: timezone/zic.c:3893 ++msgid "time zone abbreviation has too many characters" ++msgstr "اختصار المنطقة الزمنية يحتوي محارف كثيرة جداً" ++ ++#: timezone/zic.c:3895 ++msgid "time zone abbreviation differs from POSIX standard" ++msgstr "اختصار المنطقة الزمنية يختلف عن معيار POSIX" ++ ++#: timezone/zic.c:3901 ++msgid "too many, or too long, time zone abbreviations" ++msgstr "اختصارات منطقة زمنية كثيرة جداً أو طويلة جداً" ++ ++#: timezone/zic.c:3952 ++#, c-format ++msgid "%s: Can't create directory %s: %s" ++msgstr "%s: لا يمكن إنشاء الدليل %s: %s" +diff --git a/po/nl.po b/po/nl.po +index 4bec5f448e..4d2a856496 100644 +--- a/po/nl.po ++++ b/po/nl.po +@@ -1,5 +1,5 @@ + # Dutch translations for GNU libc. +-# Copyright (C) 2025 Free Software Foundation, Inc. ++# Copyright (C) 2026 Free Software Foundation, Inc. + # This file is distributed under the same license as the glibc package. + # + # "You don't get rich by treating other people well." +@@ -8,13 +8,13 @@ + # Erwin Poeze , 2009. + # Benno Schulenberg , 2006, 2007, 2008, 2010, 2011, 2012. + # Benno Schulenberg , 2013, 2014, 2015, 2017, 2018, 2019. +-# Benno Schulenberg , 2020, 2021, 2022, 2023, 2025. ++# Benno Schulenberg , 2020, 2021, 2022, 2023, 2025, 2026. + msgid "" + msgstr "" +-"Project-Id-Version: libc-2.40.9000\n" ++"Project-Id-Version: libc-2.42.9000\n" + "Report-Msgid-Bugs-To: \n" + "POT-Creation-Date: 2026-01-19 16:22+0100\n" +-"PO-Revision-Date: 2025-01-06 15:44+0100\n" ++"PO-Revision-Date: 2026-01-25 13:21+0100\n" + "Last-Translator: Benno Schulenberg \n" + "Language-Team: Dutch \n" + "Language: nl\n" +@@ -112,6 +112,16 @@ msgstr "%s: Te veel argumenten\n" + msgid "(PROGRAM ERROR) Option should have been recognized!?" + msgstr "**Interne programmafout**: optie had herkend moeten worden!?" + ++#: assert/assert-perr.c:45 ++#, c-format ++msgid "%s%s%s:%s: %s%sUnexpected error: %s.\n" ++msgstr "%s%s%s:%s: %s%sOnverwachte fout: %s.\n" ++ ++#: assert/assert.c:37 ++#, c-format ++msgid "%s%s%s:%s: %s%sAssertion `%s' failed.\n" ++msgstr "%s%s%s:%s: %s%sControletest '%s' faalt.\n" ++ + #: catgets/gencat.c:112 + msgid "Create C header file NAME containing symbol definitions" + msgstr "headerbestand met symbooldefinities aanmaken" +@@ -1301,6 +1311,16 @@ msgstr "kan interne descriptor niet aanmaken" + msgid "Reopening shared object `%s' failed" + msgstr "heropenen van gedeeld object '%s' is mislukt" + ++#: elf/sprof.c:556 elf/sprof.c:672 ++#, c-format ++msgid "stat(%s) failure" ++msgstr "stat(%s) is mislukt" ++ ++#: elf/sprof.c:573 ++#, c-format ++msgid "read outside of file extents %zu + %jd > %jd" ++msgstr "leespoging buiten de bestands-extents -- %zu + %jd > %jd" ++ + #: elf/sprof.c:582 elf/sprof.c:689 + #, c-format + msgid "reading of section headers failed" +@@ -1326,6 +1346,11 @@ msgstr "kan bestandsnaam niet bepalen" + msgid "reading of ELF header failed" + msgstr "lezen van ELF-header is mislukt" + ++#: elf/sprof.c:683 ++#, c-format ++msgid "too many section headers" ++msgstr "te veel sectiekoppen" ++ + #: elf/sprof.c:720 + #, c-format + msgid "*** The file `%s' is stripped: no detailed analysis possible\n" +@@ -2931,6 +2956,12 @@ msgstr "kan status van taalregio-archief '%s' niet opvragen" + msgid "cannot lock locale archive \"%s\"" + msgstr "kan taalregio-archief '%s' niet vergrendelen" + ++#: locale/programs/locarchive.c:642 locale/programs/locarchive.c:656 ++#: locale/programs/locarchive.c:664 locale/programs/locarchive.c:685 ++#, c-format ++msgid "cannot unlock archive header" ++msgstr "kan archiefkop niet ontgrendelen" ++ + #: locale/programs/locarchive.c:657 + #, c-format + msgid "cannot read archive header" +@@ -6070,7 +6101,7 @@ msgstr "Achterhaald bestandshandvat" + #. TRANS properly on @gnuhurdsystems{}, making this error code impossible.) + #: sysdeps/gnu/errlist.h:479 + msgid "Object is remote" +-msgstr "Object is al elders" ++msgstr "Object is op afstand" + + #. TRANS This is used by the file locking facilities; see + #. TRANS @ref{File Locks}. This error is never generated by @gnuhurdsystems{}, but +@@ -6456,6 +6487,18 @@ msgstr "?" + msgid "RPC program not available" + msgstr "RPC-programma is niet beschikbaar" + ++#: sysdeps/gnu/errlist.h:801 ++msgid "Initialization error" ++msgstr "Initialisatiefout" ++ ++#: sysdeps/gnu/errlist.h:804 ++msgid "Device is remote" ++msgstr "Apparaat is op afstand" ++ ++#: sysdeps/gnu/errlist.h:807 ++msgid "Too many levels of remote in path" ++msgstr "Te veel niveaus op afstand in het pad" ++ + #: sysdeps/hppa/dl-fptr.c:96 + msgid "cannot map pages for fdesc table" + msgstr "kan pagina's voor 'fdesc'-tabel niet in het geheugen plaatsen" +@@ -7071,11 +7114,21 @@ msgstr "ongeldige naam voor weekdag" + #: timezone/zic.c:2435 + #, c-format + msgid "reference clients mishandle more than %d transition times" +-msgstr "meer dan %d overgangstijden worden door referentie-clients onjuist behandeld" ++msgstr "meer dan %d overgangstijden worden door referentie-cliënten onjuist behandeld" + + #: timezone/zic.c:2439 + msgid "pre-2014 clients may mishandle more than 1200 transition times" +-msgstr "clients van voor 2014 zouden meer dan 1200 overgangstijden onjuist kunnen behandelen" ++msgstr "cliënten van voor 2014 zouden meer dan 1200 overgangstijden onjuist kunnen behandelen" ++ ++#: timezone/zic.c:2480 ++#, c-format ++msgid "%s: pre-2021b clients may mishandle leap second expiry" ++msgstr "%s: cliënten van voor 2021b zouden het verlopen van een schrikkelseconde onjuist kunnen behandelen" ++ ++#: timezone/zic.c:2488 ++#, c-format ++msgid "%s: pre-2021b clients may mishandle leap second table truncation" ++msgstr "%s: cliënten van voor 2021b zouden afkapping van de schrikkelsecondetabel onjuist kunnen behandelen" + + #: timezone/zic.c:2537 + msgid "too many transition times" +@@ -7086,6 +7139,10 @@ msgstr "te veel overgangstijden" + msgid "%%z UT offset magnitude exceeds 99:59:59" + msgstr "verschuiving %%z t.o.v. UT is groter dan 99:59:59" + ++#: timezone/zic.c:3180 ++msgid "no proleptic TZ string for zone" ++msgstr "er is geen proleptische TZ-tekenreeks voor de zone" ++ + #: timezone/zic.c:3186 + #, c-format + msgid "%s: pre-%d clients may mishandle distant timestamps" diff --git a/packages/glibc/0004-stdlib-resolve-a-double-lock-init-issue-after-fork-B.patch b/packages/glibc/0004-stdlib-resolve-a-double-lock-init-issue-after-fork-B.patch deleted file mode 100644 index f85e1a350..000000000 --- a/packages/glibc/0004-stdlib-resolve-a-double-lock-init-issue-after-fork-B.patch +++ /dev/null @@ -1,59 +0,0 @@ -From fd18059c0fcf5568db3688da47403b663cf91c5e Mon Sep 17 00:00:00 2001 -From: Davide Cavalca -Date: Thu, 31 Jul 2025 17:32:58 +0200 -Subject: [PATCH] stdlib: resolve a double lock init issue after fork [BZ - #32994] - -The __abort_fork_reset_child (introduced in -d40ac01cbbc66e6d9dbd8e3485605c63b2178251) call resets the lock after the -fork. This causes a DRD regression in valgrind -(https://bugs.kde.org/show_bug.cgi?id=503668), as it's effectively a -double initialization, despite it being actually ok in this case. As -suggested in https://sourceware.org/bugzilla/show_bug.cgi?id=32994#c2 -we replace it here with a memcpy of another initialized lock instead, -which makes valgrind happy. - -Reviewed-by: Florian Weimer -(cherry picked from commit d9a348d0927c7a1aec5caf3df3fcd36956b3eb23) ---- - NEWS | 2 +- - stdlib/abort.c | 6 +++++- - 2 files changed, 6 insertions(+), 2 deletions(-) - -diff --git a/NEWS b/NEWS -index 9cb8de11f9..4610b8bbc6 100644 ---- a/NEWS -+++ b/NEWS -@@ -9,7 +9,7 @@ Version 2.42.1 - - The following bugs were resolved with this release: - -- [insert bugs here] -+ [32994] stdlib: resolve a double lock init issue after fork - - Version 2.42 - -diff --git a/stdlib/abort.c b/stdlib/abort.c -index caa9e6dc04..904244a2fb 100644 ---- a/stdlib/abort.c -+++ b/stdlib/abort.c -@@ -19,6 +19,7 @@ - #include - #include - #include -+#include - #include - - /* Try to get a machine dependent instruction which will make the -@@ -42,7 +43,10 @@ __libc_rwlock_define_initialized (static, lock); - void - __abort_fork_reset_child (void) - { -- __libc_rwlock_init (lock); -+ /* Reinitialize lock without calling pthread_rwlock_init, to -+ avoid a valgrind DRD false positive. */ -+ __libc_rwlock_define_initialized (, reset_lock); -+ memcpy (&lock, &reset_lock, sizeof (lock)); - } - - void diff --git a/packages/glibc/0005-Don-t-include-bits-openat2.h-directly-bug-33848.patch b/packages/glibc/0005-Don-t-include-bits-openat2.h-directly-bug-33848.patch new file mode 100644 index 000000000..c5f0d69a0 --- /dev/null +++ b/packages/glibc/0005-Don-t-include-bits-openat2.h-directly-bug-33848.patch @@ -0,0 +1,39 @@ +From 856c426a753450b8c6861a5b994a564f4fc16d4b Mon Sep 17 00:00:00 2001 +From: Andreas Schwab +Date: Tue, 3 Feb 2026 12:41:23 +0100 +Subject: [PATCH] Don't include directly (bug 33848) + +Headers from bits directories should never be included directly, only via +the official headers. + +(cherry picked from commit 0e47414ce87f3b088ff454fc6c7d1129ff9617ec) +--- + NEWS | 2 ++ + sysdeps/unix/sysv/linux/openat2.c | 1 - + 2 files changed, 2 insertions(+), 1 deletion(-) + +diff --git a/NEWS b/NEWS +index b9953e9888..1f07633e57 100644 +--- a/NEWS ++++ b/NEWS +@@ -11,6 +11,8 @@ The following bugs are resolved with this release: + + [33623] [ldbl-128ibm] roundl, ceill, truncl, floorl bad sign of zero + results ++ [33848] build: Build fails at openat2.h, redefinition of 'struct ++ open_how' + + Version 2.43 + +diff --git a/sysdeps/unix/sysv/linux/openat2.c b/sysdeps/unix/sysv/linux/openat2.c +index 7587dd577a..ac7b70584e 100644 +--- a/sysdeps/unix/sysv/linux/openat2.c ++++ b/sysdeps/unix/sysv/linux/openat2.c +@@ -17,7 +17,6 @@ + . */ + + #include +-#include + #include + + int diff --git a/packages/glibc/0005-elf-Extract-rtld_setup_phdr-function-from-dl_main.patch b/packages/glibc/0005-elf-Extract-rtld_setup_phdr-function-from-dl_main.patch deleted file mode 100644 index fab2e7e3d..000000000 --- a/packages/glibc/0005-elf-Extract-rtld_setup_phdr-function-from-dl_main.patch +++ /dev/null @@ -1,91 +0,0 @@ -From 2fadee530155bae6682ab2965d6ff3a2fc9eced6 Mon Sep 17 00:00:00 2001 -From: Florian Weimer -Date: Fri, 1 Aug 2025 19:27:04 +0200 -Subject: [PATCH] elf: Extract rtld_setup_phdr function from dl_main - -Remove historic binutils reference from comment and update -how this data is used by applications. - -Reviewed-by: Adhemerval Zanella -(cherry picked from commit 2cac9559e06044ba520e785c151fbbd25011865f) ---- - elf/rtld.c | 59 +++++++++++++++++++++++++++++------------------------- - 1 file changed, 32 insertions(+), 27 deletions(-) - -diff --git a/elf/rtld.c b/elf/rtld.c -index 493f9696ea..6fb900fb31 100644 ---- a/elf/rtld.c -+++ b/elf/rtld.c -@@ -1239,6 +1239,37 @@ rtld_setup_main_map (struct link_map *main_map) - return has_interp; - } - -+/* Set up the program header information for the dynamic linker -+ itself. It can be accessed via _r_debug and dl_iterate_phdr -+ callbacks. */ -+static void -+rtld_setup_phdr (void) -+{ -+ /* Starting from binutils-2.23, the linker will define the magic -+ symbol __ehdr_start to point to our own ELF header if it is -+ visible in a segment that also includes the phdrs. */ -+ -+ const ElfW(Ehdr) *rtld_ehdr = &__ehdr_start; -+ assert (rtld_ehdr->e_ehsize == sizeof *rtld_ehdr); -+ assert (rtld_ehdr->e_phentsize == sizeof (ElfW(Phdr))); -+ -+ const ElfW(Phdr) *rtld_phdr = (const void *) rtld_ehdr + rtld_ehdr->e_phoff; -+ -+ _dl_rtld_map.l_phdr = rtld_phdr; -+ _dl_rtld_map.l_phnum = rtld_ehdr->e_phnum; -+ -+ -+ /* PT_GNU_RELRO is usually the last phdr. */ -+ size_t cnt = rtld_ehdr->e_phnum; -+ while (cnt-- > 0) -+ if (rtld_phdr[cnt].p_type == PT_GNU_RELRO) -+ { -+ _dl_rtld_map.l_relro_addr = rtld_phdr[cnt].p_vaddr; -+ _dl_rtld_map.l_relro_size = rtld_phdr[cnt].p_memsz; -+ break; -+ } -+} -+ - /* Adjusts the contents of the stack and related globals for the user - entry point. The ld.so processed skip_args arguments and bumped - _dl_argv and _dl_argc accordingly. Those arguments are removed from -@@ -1705,33 +1736,7 @@ dl_main (const ElfW(Phdr) *phdr, - ++GL(dl_ns)[LM_ID_BASE]._ns_nloaded; - ++GL(dl_load_adds); - -- /* Starting from binutils-2.23, the linker will define the magic symbol -- __ehdr_start to point to our own ELF header if it is visible in a -- segment that also includes the phdrs. If that's not available, we use -- the old method that assumes the beginning of the file is part of the -- lowest-addressed PT_LOAD segment. */ -- -- /* Set up the program header information for the dynamic linker -- itself. It is needed in the dl_iterate_phdr callbacks. */ -- const ElfW(Ehdr) *rtld_ehdr = &__ehdr_start; -- assert (rtld_ehdr->e_ehsize == sizeof *rtld_ehdr); -- assert (rtld_ehdr->e_phentsize == sizeof (ElfW(Phdr))); -- -- const ElfW(Phdr) *rtld_phdr = (const void *) rtld_ehdr + rtld_ehdr->e_phoff; -- -- _dl_rtld_map.l_phdr = rtld_phdr; -- _dl_rtld_map.l_phnum = rtld_ehdr->e_phnum; -- -- -- /* PT_GNU_RELRO is usually the last phdr. */ -- size_t cnt = rtld_ehdr->e_phnum; -- while (cnt-- > 0) -- if (rtld_phdr[cnt].p_type == PT_GNU_RELRO) -- { -- _dl_rtld_map.l_relro_addr = rtld_phdr[cnt].p_vaddr; -- _dl_rtld_map.l_relro_size = rtld_phdr[cnt].p_memsz; -- break; -- } -+ rtld_setup_phdr (); - - /* Add the dynamic linker to the TLS list if it also uses TLS. */ - if (_dl_rtld_map.l_tls_blocksize != 0) diff --git a/packages/glibc/0006-elf-Handle-ld.so-with-LOAD-segment-gaps-in-_dl_find_.patch b/packages/glibc/0006-elf-Handle-ld.so-with-LOAD-segment-gaps-in-_dl_find_.patch deleted file mode 100644 index 0cf14c272..000000000 --- a/packages/glibc/0006-elf-Handle-ld.so-with-LOAD-segment-gaps-in-_dl_find_.patch +++ /dev/null @@ -1,473 +0,0 @@ -From 5e298d2d937b6da06500478be956abeb24357e05 Mon Sep 17 00:00:00 2001 -From: Florian Weimer -Date: Fri, 1 Aug 2025 19:27:35 +0200 -Subject: [PATCH] elf: Handle ld.so with LOAD segment gaps in _dl_find_object - (bug 31943) - -Detect if ld.so not contiguous and handle that case in _dl_find_object. -Set l_find_object_processed even for initially loaded link maps, -otherwise dlopen of an initially loaded object adds it to -_dlfo_loaded_mappings (where maps are expected to be contiguous), -in addition to _dlfo_nodelete_mappings. - -Test elf/tst-link-map-contiguous-ldso iterates over the loader -image, reading every word to make sure memory is actually mapped. -It only does that if the l_contiguous flag is set for the link map. -Otherwise, it finds gaps with mmap and checks that _dl_find_object -does not return the ld.so mapping for them. - -The test elf/tst-link-map-contiguous-main does the same thing for -the libc.so shared object. This only works if the kernel loaded -the main program because the glibc dynamic loader may fill -the gaps with PROT_NONE mappings in some cases, making it contiguous, -but accesses to individual words may still fault. - -Test elf/tst-link-map-contiguous-libc is again slightly different -because the dynamic loader always fills the gaps with PROT_NONE -mappings, so a different form of probing has to be used. - -Reviewed-by: Adhemerval Zanella -(cherry picked from commit 20681be149b9eb1b6c1f4246bf4bd801221c86cd) ---- - NEWS | 1 + - elf/Makefile | 6 ++ - elf/dl-find_object.c | 74 +++++++++++++--------- - elf/dl-find_object.h | 7 ++- - elf/rtld.c | 25 +++++++- - elf/tst-link-map-contiguous-ldso.c | 98 ++++++++++++++++++++++++++++++ - elf/tst-link-map-contiguous-libc.c | 57 +++++++++++++++++ - elf/tst-link-map-contiguous-main.c | 45 ++++++++++++++ - 8 files changed, 281 insertions(+), 32 deletions(-) - create mode 100644 elf/tst-link-map-contiguous-ldso.c - create mode 100644 elf/tst-link-map-contiguous-libc.c - create mode 100644 elf/tst-link-map-contiguous-main.c - -diff --git a/NEWS b/NEWS -index 4610b8bbc6..cbe11ac95b 100644 ---- a/NEWS -+++ b/NEWS -@@ -9,6 +9,7 @@ Version 2.42.1 - - The following bugs were resolved with this release: - -+ [31943] _dl_find_object can fail if ld.so contains gaps between load segments - [32994] stdlib: resolve a double lock init issue after fork - - Version 2.42 -diff --git a/elf/Makefile b/elf/Makefile -index 48aa0b57e5..3a5596e2bb 100644 ---- a/elf/Makefile -+++ b/elf/Makefile -@@ -543,6 +543,8 @@ tests-internal += \ - tst-dl_find_object-threads \ - tst-dlmopen2 \ - tst-hash-collision3 \ -+ tst-link-map-contiguous-ldso \ -+ tst-link-map-contiguous-libc \ - tst-ptrguard1 \ - tst-stackguard1 \ - tst-tls-surplus \ -@@ -554,6 +556,10 @@ tests-internal += \ - unload2 \ - # tests-internal - -+ifeq ($(build-hardcoded-path-in-tests),yes) -+tests-internal += tst-link-map-contiguous-main -+endif -+ - tests-container += \ - tst-dlopen-self-container \ - tst-dlopen-tlsmodid-container \ -diff --git a/elf/dl-find_object.c b/elf/dl-find_object.c -index 1e76373292..c9f4c1c8d1 100644 ---- a/elf/dl-find_object.c -+++ b/elf/dl-find_object.c -@@ -465,6 +465,37 @@ _dl_find_object (void *pc1, struct dl_find_object *result) - } - rtld_hidden_def (_dl_find_object) - -+/* Subroutine of _dlfo_process_initial to split out noncontigous link -+ maps. NODELETE is the number of used _dlfo_nodelete_mappings -+ elements. It is incremented as needed, and the new NODELETE value -+ is returned. */ -+static size_t -+_dlfo_process_initial_noncontiguous_map (struct link_map *map, -+ size_t nodelete) -+{ -+ struct dl_find_object_internal dlfo; -+ _dl_find_object_from_map (map, &dlfo); -+ -+ /* PT_LOAD segments for a non-contiguous link map are added to the -+ non-closeable mappings. */ -+ const ElfW(Phdr) *ph = map->l_phdr; -+ const ElfW(Phdr) *ph_end = map->l_phdr + map->l_phnum; -+ for (; ph < ph_end; ++ph) -+ if (ph->p_type == PT_LOAD) -+ { -+ if (_dlfo_nodelete_mappings != NULL) -+ { -+ /* Second pass only. */ -+ _dlfo_nodelete_mappings[nodelete] = dlfo; -+ ElfW(Addr) start = ph->p_vaddr + map->l_addr; -+ _dlfo_nodelete_mappings[nodelete].map_start = start; -+ _dlfo_nodelete_mappings[nodelete].map_end = start + ph->p_memsz; -+ } -+ ++nodelete; -+ } -+ return nodelete; -+} -+ - /* _dlfo_process_initial is called twice. First to compute the array - sizes from the initial loaded mappings. Second to fill in the - bases and infos arrays with the (still unsorted) data. Returns the -@@ -476,29 +507,8 @@ _dlfo_process_initial (void) - - size_t nodelete = 0; - if (!main_map->l_contiguous) -- { -- struct dl_find_object_internal dlfo; -- _dl_find_object_from_map (main_map, &dlfo); -- -- /* PT_LOAD segments for a non-contiguous are added to the -- non-closeable mappings. */ -- for (const ElfW(Phdr) *ph = main_map->l_phdr, -- *ph_end = main_map->l_phdr + main_map->l_phnum; -- ph < ph_end; ++ph) -- if (ph->p_type == PT_LOAD) -- { -- if (_dlfo_nodelete_mappings != NULL) -- { -- /* Second pass only. */ -- _dlfo_nodelete_mappings[nodelete] = dlfo; -- _dlfo_nodelete_mappings[nodelete].map_start -- = ph->p_vaddr + main_map->l_addr; -- _dlfo_nodelete_mappings[nodelete].map_end -- = _dlfo_nodelete_mappings[nodelete].map_start + ph->p_memsz; -- } -- ++nodelete; -- } -- } -+ /* Contiguous case already handled in _dl_find_object_init. */ -+ nodelete = _dlfo_process_initial_noncontiguous_map (main_map, nodelete); - - size_t loaded = 0; - for (Lmid_t ns = 0; ns < GL(dl_nns); ++ns) -@@ -510,11 +520,18 @@ _dlfo_process_initial (void) - /* lt_library link maps are implicitly NODELETE. */ - if (l->l_type == lt_library || l->l_nodelete_active) - { -- if (_dlfo_nodelete_mappings != NULL) -- /* Second pass only. */ -- _dl_find_object_from_map -- (l, _dlfo_nodelete_mappings + nodelete); -- ++nodelete; -+ /* The kernel may have loaded ld.so with gaps. */ -+ if (!l->l_contiguous && is_rtld_link_map (l)) -+ nodelete -+ = _dlfo_process_initial_noncontiguous_map (l, nodelete); -+ else -+ { -+ if (_dlfo_nodelete_mappings != NULL) -+ /* Second pass only. */ -+ _dl_find_object_from_map -+ (l, _dlfo_nodelete_mappings + nodelete); -+ ++nodelete; -+ } - } - else if (l->l_type == lt_loaded) - { -@@ -764,7 +781,6 @@ _dl_find_object_update_1 (struct link_map **loaded, size_t count) - /* Prefer newly loaded link map. */ - assert (loaded_index1 > 0); - _dl_find_object_from_map (loaded[loaded_index1 - 1], dlfo); -- loaded[loaded_index1 - 1]->l_find_object_processed = 1; - --loaded_index1; - } - -diff --git a/elf/dl-find_object.h b/elf/dl-find_object.h -index 9aa2439eaa..d9d75c4ad9 100644 ---- a/elf/dl-find_object.h -+++ b/elf/dl-find_object.h -@@ -94,7 +94,7 @@ _dl_find_object_to_external (struct dl_find_object_internal *internal, - } - - /* Extract the object location data from a link map and writes it to -- *RESULT using relaxed MO stores. */ -+ *RESULT using relaxed MO stores. Set L->l_find_object_processed. */ - static void __attribute__ ((unused)) - _dl_find_object_from_map (struct link_map *l, - struct dl_find_object_internal *result) -@@ -141,8 +141,11 @@ _dl_find_object_from_map (struct link_map *l, - break; - } - if (read_seg == 3) -- return; -+ goto done; - } -+ -+ done: -+ l->l_find_object_processed = 1; - } - - /* Called by the dynamic linker to set up the data structures for the -diff --git a/elf/rtld.c b/elf/rtld.c -index 6fb900fb31..ef4d96c053 100644 ---- a/elf/rtld.c -+++ b/elf/rtld.c -@@ -1241,7 +1241,7 @@ rtld_setup_main_map (struct link_map *main_map) - - /* Set up the program header information for the dynamic linker - itself. It can be accessed via _r_debug and dl_iterate_phdr -- callbacks. */ -+ callbacks, and it is used by _dl_find_object. */ - static void - rtld_setup_phdr (void) - { -@@ -1259,6 +1259,29 @@ rtld_setup_phdr (void) - _dl_rtld_map.l_phnum = rtld_ehdr->e_phnum; - - -+ _dl_rtld_map.l_contiguous = 1; -+ /* The linker may not have produced a contiguous object. The kernel -+ will load the object with actual gaps (unlike the glibc loader -+ for shared objects, which always produces a contiguous mapping). -+ See similar logic in rtld_setup_main_map above. */ -+ { -+ ElfW(Addr) expected_load_address = 0; -+ for (const ElfW(Phdr) *ph = rtld_phdr; ph < &rtld_phdr[rtld_ehdr->e_phnum]; -+ ++ph) -+ if (ph->p_type == PT_LOAD) -+ { -+ ElfW(Addr) mapstart = ph->p_vaddr & ~(GLRO(dl_pagesize) - 1); -+ if (_dl_rtld_map.l_contiguous && expected_load_address != 0 -+ && expected_load_address != mapstart) -+ _dl_rtld_map.l_contiguous = 0; -+ ElfW(Addr) allocend = ph->p_vaddr + ph->p_memsz; -+ /* The next expected address is the page following this load -+ segment. */ -+ expected_load_address = ((allocend + GLRO(dl_pagesize) - 1) -+ & ~(GLRO(dl_pagesize) - 1)); -+ } -+ } -+ - /* PT_GNU_RELRO is usually the last phdr. */ - size_t cnt = rtld_ehdr->e_phnum; - while (cnt-- > 0) -diff --git a/elf/tst-link-map-contiguous-ldso.c b/elf/tst-link-map-contiguous-ldso.c -new file mode 100644 -index 0000000000..04de808bb2 ---- /dev/null -+++ b/elf/tst-link-map-contiguous-ldso.c -@@ -0,0 +1,98 @@ -+/* Check that _dl_find_object behavior matches up with gaps. -+ Copyright (C) 2025 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+static int -+do_test (void) -+{ -+ struct link_map *l = xdlopen (LD_SO, RTLD_NOW); -+ if (!l->l_contiguous) -+ { -+ puts ("info: ld.so link map is not contiguous"); -+ -+ /* Try to find holes by probing with mmap. */ -+ int pagesize = getpagesize (); -+ bool gap_found = false; -+ ElfW(Addr) addr = l->l_map_start; -+ TEST_COMPARE (addr % pagesize, 0); -+ while (addr < l->l_map_end) -+ { -+ void *expected = (void *) addr; -+ void *ptr = xmmap (expected, 1, PROT_READ | PROT_WRITE, -+ MAP_PRIVATE | MAP_ANONYMOUS, -1); -+ struct dl_find_object dlfo; -+ int dlfo_ret = _dl_find_object (expected, &dlfo); -+ if (ptr == expected) -+ { -+ if (dlfo_ret < 0) -+ { -+ TEST_COMPARE (dlfo_ret, -1); -+ printf ("info: hole without mapping data found at %p\n", ptr); -+ } -+ else -+ FAIL ("object \"%s\" found in gap at %p", -+ dlfo.dlfo_link_map->l_name, ptr); -+ gap_found = true; -+ } -+ else if (dlfo_ret == 0) -+ { -+ if ((void *) dlfo.dlfo_link_map != (void *) l) -+ { -+ printf ("info: object \"%s\" found at %p\n", -+ dlfo.dlfo_link_map->l_name, ptr); -+ gap_found = true; -+ } -+ } -+ else -+ TEST_COMPARE (dlfo_ret, -1); -+ xmunmap (ptr, 1); -+ addr += pagesize; -+ } -+ if (!gap_found) -+ FAIL ("no ld.so gap found"); -+ } -+ else -+ { -+ puts ("info: ld.so link map is contiguous"); -+ -+ /* Assert that ld.so is truly contiguous in memory. */ -+ volatile long int *p = (volatile long int *) l->l_map_start; -+ volatile long int *end = (volatile long int *) l->l_map_end; -+ while (p < end) -+ { -+ *p; -+ ++p; -+ } -+ } -+ -+ xdlclose (l); -+ -+ return 0; -+} -+ -+#include -diff --git a/elf/tst-link-map-contiguous-libc.c b/elf/tst-link-map-contiguous-libc.c -new file mode 100644 -index 0000000000..eb5728c765 ---- /dev/null -+++ b/elf/tst-link-map-contiguous-libc.c -@@ -0,0 +1,57 @@ -+/* Check that the entire libc.so program image is readable if contiguous. -+ Copyright (C) 2025 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+static int -+do_test (void) -+{ -+ struct link_map *l = xdlopen (LIBC_SO, RTLD_NOW); -+ -+ /* The dynamic loader fills holes with PROT_NONE mappings. */ -+ if (!l->l_contiguous) -+ FAIL_EXIT1 ("libc.so link map is not contiguous"); -+ -+ /* Direct probing does not work because not everything is readable -+ due to PROT_NONE mappings. */ -+ int pagesize = getpagesize (); -+ ElfW(Addr) addr = l->l_map_start; -+ TEST_COMPARE (addr % pagesize, 0); -+ while (addr < l->l_map_end) -+ { -+ void *expected = (void *) addr; -+ void *ptr = xmmap (expected, 1, PROT_READ | PROT_WRITE, -+ MAP_PRIVATE | MAP_ANONYMOUS, -1); -+ if (ptr == expected) -+ FAIL ("hole in libc.so memory image after %lu bytes", -+ (unsigned long int) (addr - l->l_map_start)); -+ xmunmap (ptr, 1); -+ addr += pagesize; -+ } -+ -+ xdlclose (l); -+ -+ return 0; -+} -+#include -diff --git a/elf/tst-link-map-contiguous-main.c b/elf/tst-link-map-contiguous-main.c -new file mode 100644 -index 0000000000..2d1a054f0f ---- /dev/null -+++ b/elf/tst-link-map-contiguous-main.c -@@ -0,0 +1,45 @@ -+/* Check that the entire main program image is readable if contiguous. -+ Copyright (C) 2025 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+#include -+#include -+ -+static int -+do_test (void) -+{ -+ struct link_map *l = xdlopen ("", RTLD_NOW); -+ if (!l->l_contiguous) -+ FAIL_UNSUPPORTED ("main link map is not contiguous"); -+ -+ /* This check only works if the kernel loaded the main program. The -+ dynamic loader replaces gaps with PROT_NONE mappings, resulting -+ in faults. */ -+ volatile long int *p = (volatile long int *) l->l_map_start; -+ volatile long int *end = (volatile long int *) l->l_map_end; -+ while (p < end) -+ { -+ *p; -+ ++p; -+ } -+ -+ xdlclose (l); -+ -+ return 0; -+} -+#include diff --git a/packages/glibc/0006-nss-Introduce-dedicated-struct-nss_database_for_fork.patch b/packages/glibc/0006-nss-Introduce-dedicated-struct-nss_database_for_fork.patch new file mode 100644 index 000000000..7d52c1b94 --- /dev/null +++ b/packages/glibc/0006-nss-Introduce-dedicated-struct-nss_database_for_fork.patch @@ -0,0 +1,117 @@ +From 140c760d711d03c0230dff218b5268b11935f92e Mon Sep 17 00:00:00 2001 +From: Florian Weimer +Date: Fri, 13 Feb 2026 09:02:07 +0100 +Subject: [PATCH] nss: Introduce dedicated struct nss_database_for_fork type + +The initialized field in struct nss_database_data is rather confusing +because it is not used by the regular NSS code, only by the fork +state synchronization code. Introduce a separate type and place +the initialized field there. + +Reviewed-by: Sam James +(cherry picked from commit 7bb859f4198d0be19c31a9937eae4f6c2c9a079e) +--- + nss/nss_database.c | 14 +++++++------- + nss/nss_database.h | 12 +++++++++--- + posix/fork.c | 2 +- + 3 files changed, 17 insertions(+), 11 deletions(-) + +diff --git a/nss/nss_database.c b/nss/nss_database.c +index 6997b5bb04..19e752ef65 100644 +--- a/nss/nss_database.c ++++ b/nss/nss_database.c +@@ -56,7 +56,6 @@ global_state_allocate (void *closure) + { + result->data.nsswitch_conf.size = -1; /* Force reload. */ + memset (result->data.services, 0, sizeof (result->data.services)); +- result->data.initialized = true; + result->data.reload_disabled = false; + __libc_lock_init (result->lock); + result->root_ino = 0; +@@ -439,8 +438,8 @@ nss_database_check_reload_and_get (struct nss_database_state *local, + /* Avoid overwriting the global configuration until we have loaded + everything successfully. Otherwise, if the file change + information changes back to what is in the global configuration, +- the lookups would use the partially-written configuration. */ +- struct nss_database_data staging = { .initialized = true, }; ++ the lookups would use the partially-written configuration. */ ++ struct nss_database_data staging = { }; + + bool ok = nss_database_reload (&staging, &initial); + +@@ -491,7 +490,7 @@ __nss_database_freeres (void) + } + + void +-__nss_database_fork_prepare_parent (struct nss_database_data *data) ++__nss_database_fork_prepare_parent (struct nss_database_for_fork *data) + { + /* Do not use allocate_once to trigger loading unnecessarily. */ + struct nss_database_state *local = atomic_load_acquire (&global_database_state); +@@ -503,20 +502,21 @@ __nss_database_fork_prepare_parent (struct nss_database_data *data) + because it avoids acquiring the lock during the actual + fork. */ + __libc_lock_lock (local->lock); +- *data = local->data; ++ data->data = local->data; + __libc_lock_unlock (local->lock); ++ data->initialized = true; + } + } + + void +-__nss_database_fork_subprocess (struct nss_database_data *data) ++__nss_database_fork_subprocess (struct nss_database_for_fork *data) + { + struct nss_database_state *local = atomic_load_acquire (&global_database_state); + if (data->initialized) + { + /* Restore the state at the point of the fork. */ + assert (local != NULL); +- local->data = *data; ++ local->data = data->data; + __libc_lock_init (local->lock); + } + else if (local != NULL) +diff --git a/nss/nss_database.h b/nss/nss_database.h +index 1f2ff1639a..a4f3369eb0 100644 +--- a/nss/nss_database.h ++++ b/nss/nss_database.h +@@ -70,15 +70,21 @@ struct nss_database_data + struct file_change_detection nsswitch_conf; + nss_action_list services[NSS_DATABASE_COUNT]; + int reload_disabled; /* Actually bool; int for atomic access. */ +- bool initialized; ++}; ++ ++/* Use to store a consistent state snapshot across fork. */ ++struct nss_database_for_fork ++{ ++ bool initialized; /* Set to true if the data field below is initialized. */ ++ struct nss_database_data data; + }; + + /* Called by fork in the parent process, before forking. */ +-void __nss_database_fork_prepare_parent (struct nss_database_data *data) ++void __nss_database_fork_prepare_parent (struct nss_database_for_fork *) + attribute_hidden; + + /* Called by fork in the new subprocess, after forking. */ +-void __nss_database_fork_subprocess (struct nss_database_data *data) ++void __nss_database_fork_subprocess (struct nss_database_for_fork *) + attribute_hidden; + + #endif /* _NSS_DATABASE_H */ +diff --git a/posix/fork.c b/posix/fork.c +index 8e541ff985..933ac6fee7 100644 +--- a/posix/fork.c ++++ b/posix/fork.c +@@ -50,7 +50,7 @@ __libc_fork (void) + + lastrun = __run_prefork_handlers (multiple_threads); + +- struct nss_database_data nss_database_data; ++ struct nss_database_for_fork nss_database_data; + + /* If we are not running multiple threads, we do not have to + preserve lock state. If fork runs from a signal handler, only diff --git a/packages/glibc/0007-Linux-In-getlogin_r-use-utmp-fallback-only-for-speci.patch b/packages/glibc/0007-Linux-In-getlogin_r-use-utmp-fallback-only-for-speci.patch new file mode 100644 index 000000000..f189b14ee --- /dev/null +++ b/packages/glibc/0007-Linux-In-getlogin_r-use-utmp-fallback-only-for-speci.patch @@ -0,0 +1,75 @@ +From d6cb7ce0e98b2c16df5b2f5b9693d0130ccb8af5 Mon Sep 17 00:00:00 2001 +From: Florian Weimer +Date: Fri, 13 Feb 2026 09:02:07 +0100 +Subject: [PATCH] Linux: In getlogin_r, use utmp fallback only for specific + errors + +Most importantly, if getwpuid_r fails, it does not make sense to retry +via utmp because the user ID obtained from there is less reliable than +the one from /proc/self/loginuid. + +Reviewed-by: Sam James +(cherry picked from commit 28660f4b45afa8921c2faebaec2846f95f670ba0) +--- + sysdeps/unix/sysv/linux/getlogin_r.c | 21 +++++++++++++++++---- + 1 file changed, 17 insertions(+), 4 deletions(-) + +diff --git a/sysdeps/unix/sysv/linux/getlogin_r.c b/sysdeps/unix/sysv/linux/getlogin_r.c +index 3b85e91be6..200c96860f 100644 +--- a/sysdeps/unix/sysv/linux/getlogin_r.c ++++ b/sysdeps/unix/sysv/linux/getlogin_r.c +@@ -37,7 +37,12 @@ __getlogin_r_loginuid (char *name, size_t namesize) + { + int fd = __open_nocancel ("/proc/self/loginuid", O_RDONLY); + if (fd == -1) +- return -1; ++ { ++ if (errno == ENOENT) ++ /* Trigger utmp fallback. */ ++ return -1; ++ return errno; ++ } + + /* We are reading a 32-bit number. 12 bytes are enough for the text + representation. If not, something is wrong. */ +@@ -45,6 +50,8 @@ __getlogin_r_loginuid (char *name, size_t namesize) + ssize_t n = TEMP_FAILURE_RETRY (__read_nocancel (fd, uidbuf, + sizeof (uidbuf))); + __close_nocancel_nostatus (fd); ++ if (n < 0) ++ return errno; + + uid_t uid; + char *endp; +@@ -53,12 +60,13 @@ __getlogin_r_loginuid (char *name, size_t namesize) + || (uidbuf[n] = '\0', + uid = strtoul (uidbuf, &endp, 10), + endp == uidbuf || *endp != '\0')) +- return -1; ++ return EINVAL; + + /* If there is no login uid, linux sets /proc/self/loginid to the sentinel + value of, (uid_t) -1, so check if that value is set and return early to + avoid making unneeded nss lookups. */ + if (uid == (uid_t) -1) ++ /* Trigger utmp fallback. */ + return -1; + + struct passwd pwd; +@@ -78,9 +86,14 @@ __getlogin_r_loginuid (char *name, size_t namesize) + } + } + +- if (res != 0 || tpwd == NULL) ++ if (res != 0) ++ { ++ result = res; ++ goto out; ++ } ++ if (tpwd == NULL) + { +- result = -1; ++ result = ENOENT; + goto out; + } + diff --git a/packages/glibc/0007-nptl-Fix-SYSCALL_CANCEL-for-return-values-larger-tha.patch b/packages/glibc/0007-nptl-Fix-SYSCALL_CANCEL-for-return-values-larger-tha.patch deleted file mode 100644 index c4d98e891..000000000 --- a/packages/glibc/0007-nptl-Fix-SYSCALL_CANCEL-for-return-values-larger-tha.patch +++ /dev/null @@ -1,49 +0,0 @@ -From b38f3f60d5b157edcf4d8bd1fd3ed02d417889e0 Mon Sep 17 00:00:00 2001 -From: Adhemerval Zanella -Date: Fri, 1 Aug 2025 15:00:25 -0300 -Subject: [PATCH] nptl: Fix SYSCALL_CANCEL for return values larger than - INT_MAX (BZ 33245) - -The SYSCALL_CANCEL calls __syscall_cancel, which in turn -calls __internal_syscall_cancel with an 'int' return instead of the -expected 'long int'. This causes issues with syscalls that return -values larger than INT_MAX, such as copy_file_range [1]. - -Checked on x86_64-linux-gnu. - -[1] https://debbugs.gnu.org/cgi/bugreport.cgi?bug=79139 - -Reviewed-by: Andreas K. Huettel -(cherry picked from commit 7107bebf19286f42dcb0a97581137a5893c16206) ---- - NEWS | 1 + - nptl/cancellation.c | 4 ++-- - 2 files changed, 3 insertions(+), 2 deletions(-) - -diff --git a/NEWS b/NEWS -index cbe11ac95b..1d04bdfef8 100644 ---- a/NEWS -+++ b/NEWS -@@ -11,6 +11,7 @@ The following bugs were resolved with this release: - - [31943] _dl_find_object can fail if ld.so contains gaps between load segments - [32994] stdlib: resolve a double lock init issue after fork -+ [33245] nptl: nptl: error in internal cancellation syscall handling - - Version 2.42 - -diff --git a/nptl/cancellation.c b/nptl/cancellation.c -index 156e63dcf0..bed0383a23 100644 ---- a/nptl/cancellation.c -+++ b/nptl/cancellation.c -@@ -72,8 +72,8 @@ __syscall_cancel (__syscall_arg_t a1, __syscall_arg_t a2, - __syscall_arg_t a5, __syscall_arg_t a6, - __SYSCALL_CANCEL7_ARG_DEF __syscall_arg_t nr) - { -- int r = __internal_syscall_cancel (a1, a2, a3, a4, a5, a6, -- __SYSCALL_CANCEL7_ARG nr); -+ long int r = __internal_syscall_cancel (a1, a2, a3, a4, a5, a6, -+ __SYSCALL_CANCEL7_ARG nr); - return __glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (r)) - ? SYSCALL_ERROR_LABEL (INTERNAL_SYSCALL_ERRNO (r)) - : r; diff --git a/packages/glibc/0008-Delete-temporary-files-in-support_subprocess.patch b/packages/glibc/0008-Delete-temporary-files-in-support_subprocess.patch deleted file mode 100644 index b6443c380..000000000 --- a/packages/glibc/0008-Delete-temporary-files-in-support_subprocess.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 9d5bf9c17db0f35268cd798660c8bbeea1f4071d Mon Sep 17 00:00:00 2001 -From: "H.J. Lu" -Date: Sat, 19 Jul 2025 07:43:26 -0700 -Subject: [PATCH] Delete temporary files in support_subprocess - -Call support_delete_temp_files to delete temporary files before exit in -support_subprocess. - -This partially fixes BZ #33182. - -Signed-off-by: H.J. Lu -Reviewed-by: Adhemerval Zanella -(cherry picked from commit d27b1a71cd424710813bd3d81afb32a36470d643) ---- - support/support_subprocess.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/support/support_subprocess.c b/support/support_subprocess.c -index be00dde3a7..8bf9a33ea2 100644 ---- a/support/support_subprocess.c -+++ b/support/support_subprocess.c -@@ -25,6 +25,7 @@ - #include - #include - #include -+#include - - static struct support_subprocess - support_subprocess_init (void) -@@ -60,6 +61,8 @@ support_subprocess (void (*callback) (void *), void *closure) - xclose (result.stdout_pipe[1]); - xclose (result.stderr_pipe[1]); - callback (closure); -+ /* Make sure that temporary files are deleted. */ -+ support_delete_temp_files (); - _exit (0); - } - xclose (result.stdout_pipe[1]); diff --git a/packages/glibc/0008-nss-Missing-checks-in-__nss_configure_lookup-__nss_d.patch b/packages/glibc/0008-nss-Missing-checks-in-__nss_configure_lookup-__nss_d.patch new file mode 100644 index 000000000..6814ae495 --- /dev/null +++ b/packages/glibc/0008-nss-Missing-checks-in-__nss_configure_lookup-__nss_d.patch @@ -0,0 +1,408 @@ +From 48f5a05a7a1eeb9e0567ab429f654648f831307f Mon Sep 17 00:00:00 2001 +From: Florian Weimer +Date: Fri, 13 Feb 2026 09:02:07 +0100 +Subject: [PATCH] nss: Missing checks in __nss_configure_lookup, + __nss_database_get (bug 28940) + +This avoids a null pointer dereference in the +nss_database_check_reload_and_get function, and assertion failures. + +Reviewed-by: Sam James +(cherry picked from commit 5b713b49443eb6a4e54e50e2f0147105f86dab02) +--- + nss/Makefile | 1 + + nss/nss_database.c | 7 +- + nss/tst-nss-malloc-failure-getlogin_r.c | 345 ++++++++++++++++++++++++ + 3 files changed, 352 insertions(+), 1 deletion(-) + create mode 100644 nss/tst-nss-malloc-failure-getlogin_r.c + +diff --git a/nss/Makefile b/nss/Makefile +index b0d80bd642..1c48bd0876 100644 +--- a/nss/Makefile ++++ b/nss/Makefile +@@ -326,6 +326,7 @@ tests := \ + tst-gshadow \ + tst-nss-getpwent \ + tst-nss-hash \ ++ tst-nss-malloc-failure-getlogin_r \ + tst-nss-test1 \ + tst-nss-test2 \ + tst-nss-test4 \ +diff --git a/nss/nss_database.c b/nss/nss_database.c +index 19e752ef65..076d5a63fe 100644 +--- a/nss/nss_database.c ++++ b/nss/nss_database.c +@@ -241,9 +241,12 @@ __nss_configure_lookup (const char *dbname, const char *service_line) + + /* Force any load/cache/read whatever to happen, so we can override + it. */ +- __nss_database_get (db, &result); ++ if (!__nss_database_get (db, &result)) ++ return -1; + + local = nss_database_state_get (); ++ if (local == NULL) ++ return -1; + + result = __nss_action_parse (service_line); + if (result == NULL) +@@ -465,6 +468,8 @@ bool + __nss_database_get (enum nss_database db, nss_action_list *actions) + { + struct nss_database_state *local = nss_database_state_get (); ++ if (local == NULL) ++ return false; + return nss_database_check_reload_and_get (local, actions, db); + } + libc_hidden_def (__nss_database_get) +diff --git a/nss/tst-nss-malloc-failure-getlogin_r.c b/nss/tst-nss-malloc-failure-getlogin_r.c +new file mode 100644 +index 0000000000..0e2985ad57 +--- /dev/null ++++ b/nss/tst-nss-malloc-failure-getlogin_r.c +@@ -0,0 +1,345 @@ ++/* Test NSS/getlogin_r with injected allocation failures (bug 28940). ++ Copyright (C) 2026 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, see ++ . */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++/* This test calls getpwuid_r via getlogin_r (on Linux). ++ ++ This test uses the NSS system configuration to exercise that code ++ path. It means that it can fail (crash) if malloc failure is not ++ handled by NSS modules for the passwd database. */ ++ ++/* Data structure allocated via MAP_SHARED, so that writes from the ++ subprocess are visible. */ ++struct shared_data ++{ ++ /* Number of tracked allocations performed so far. */ ++ volatile unsigned int allocation_count; ++ ++ /* If this number is reached, one allocation fails. */ ++ volatile unsigned int failing_allocation; ++ ++ /* The number of allocations performed during initialization ++ (before the actual getlogin_r call). */ ++ volatile unsigned int init_allocation_count; ++ ++ /* Error code of an expected getlogin_r failure. */ ++ volatile int expected_failure; ++ ++ /* The subprocess stores the expected name here. */ ++ char name[100]; ++}; ++ ++/* Allocation count in shared mapping. */ ++static struct shared_data *shared; ++ ++/* Returns true if a failure should be injected for this allocation. */ ++static bool ++fail_this_allocation (void) ++{ ++ if (shared != NULL) ++ { ++ unsigned int count = shared->allocation_count; ++ shared->allocation_count = count + 1; ++ return count == shared->failing_allocation; ++ } ++ else ++ return false; ++} ++ ++/* Failure-injecting wrappers for allocation functions used by glibc. */ ++ ++void * ++malloc (size_t size) ++{ ++ if (fail_this_allocation ()) ++ { ++ errno = ENOMEM; ++ return NULL; ++ } ++ extern __typeof (malloc) __libc_malloc; ++ return __libc_malloc (size); ++} ++ ++void * ++calloc (size_t a, size_t b) ++{ ++ if (fail_this_allocation ()) ++ { ++ errno = ENOMEM; ++ return NULL; ++ } ++ extern __typeof (calloc) __libc_calloc; ++ return __libc_calloc (a, b); ++} ++ ++void * ++realloc (void *ptr, size_t size) ++{ ++ if (fail_this_allocation ()) ++ { ++ errno = ENOMEM; ++ return NULL; ++ } ++ extern __typeof (realloc) __libc_realloc; ++ return __libc_realloc (ptr, size); ++} ++ ++/* No-op subprocess to verify that support_isolate_in_subprocess does ++ not perform any heap allocations. */ ++static void ++no_op (void *ignored) ++{ ++} ++ ++/* Perform a getlogin_r call in a subprocess, to obtain the number of ++ allocations used and the expected result of a successful call. */ ++static void ++initialize (void *configure_lookup) ++{ ++ shared->init_allocation_count = 0; ++ if (configure_lookup != NULL) ++ { ++ TEST_COMPARE (__nss_configure_lookup ("passwd", configure_lookup), 0); ++ shared->init_allocation_count = shared->allocation_count; ++ } ++ ++ shared->name[0] = '\0'; ++ int ret = getlogin_r (shared->name, sizeof (shared->name)); ++ if (ret != 0) ++ { ++ printf ("info: getlogin_r failed: %s (%d)\n", ++ strerrorname_np (ret), ret); ++ shared->expected_failure = ret; ++ } ++ else ++ { ++ shared->expected_failure = 0; ++ if (shared->name[0] == '\0') ++ FAIL ("error: getlogin_r succeeded without result\n"); ++ else ++ printf ("info: getlogin_r: \"%s\"\n", shared->name); ++ } ++} ++ ++/* Perform getlogin_r in a subprocess with fault injection. */ ++static void ++test_in_subprocess (void *configure_lookup) ++{ ++ if (configure_lookup != NULL ++ && __nss_configure_lookup ("passwd", configure_lookup) < 0) ++ { ++ printf ("info: __nss_configure_lookup failed: %s (%d)\n", ++ strerrorname_np (errno), errno); ++ TEST_COMPARE (errno, ENOMEM); ++ TEST_VERIFY (shared->allocation_count <= shared->init_allocation_count); ++ return; ++ } ++ ++ unsigned int inject_at = shared->failing_allocation; ++ char name[sizeof (shared->name)] = "name not set"; ++ int ret = getlogin_r (name, sizeof (name)); ++ shared->failing_allocation = ~0U; ++ ++ if (ret == 0) ++ { ++ TEST_COMPARE (shared->expected_failure, 0); ++ TEST_COMPARE_STRING (name, shared->name); ++ } ++ else ++ { ++ printf ("info: allocation %u failure results in error %s (%d)\n", ++ inject_at, strerrorname_np (ret), ret); ++ ++ if (ret != ENOMEM) ++ { ++ if (shared->expected_failure != 0) ++ TEST_COMPARE (ret, shared->expected_failure); ++ else if (configure_lookup == NULL) ++ /* The ENOENT failure can happen due to an issue related ++ to bug 22041: dlopen failure does not result in ENOMEM. */ ++ TEST_COMPARE (ret, ENOENT); ++ else ++ FAIL ("unexpected getlogin_r error"); ++ } ++ } ++ ++ if (shared->expected_failure == 0) ++ { ++ /* The second call should succeed. */ ++ puts ("info: about to perform second getlogin_r call"); ++ ret = getlogin_r (name, sizeof (name)); ++ if (configure_lookup == NULL) ++ { ++ /* This check can fail due to bug 22041 if the malloc error ++ injection causes a failure internally in dlopen. */ ++ if (ret != 0) ++ { ++ printf ("warning: second getlogin_r call failed with %s (%d)\n", ++ strerrorname_np (ret), ret); ++ TEST_COMPARE (ret, ENOENT); ++ } ++ } ++ else ++ /* If __nss_configure_lookup has been called, the error caching ++ bug does not happen because nss_files is built-in, and the ++ second getlogin_r is expected to succeed. */ ++ TEST_COMPARE (ret, 0); ++ if (ret == 0) ++ TEST_COMPARE_STRING (name, shared->name); ++ } ++} ++ ++/* Set by the --failing-allocation command line option. Together with ++ --direct, this can be used to trigger an allocation failure in the ++ original process, which may help with debugging. */ ++static int option_failing_allocation = -1; ++ ++/* Set by --override, to be used with --failing-allocation. Turns on ++ the __nss_configure_lookup call for passwd/files, which is disabled ++ by default. */ ++static int option_override = 0; ++ ++static int ++do_test (void) ++{ ++ char files[] = "files"; ++ ++ if (option_failing_allocation >= 0) ++ { ++ /* The test was invoked with --failing-allocation. Perform just ++ one test, using the original nsswitch.conf. This is a ++ condensed version of the probing/testing loop below. */ ++ printf ("info: testing with failing allocation %d\n", ++ option_failing_allocation); ++ shared = support_shared_allocate (sizeof (*shared)); ++ shared->failing_allocation = ~0U; ++ char *configure_lookup = option_override ? files : NULL; ++ support_isolate_in_subprocess (initialize, configure_lookup); ++ shared->allocation_count = 0; ++ shared->failing_allocation = option_failing_allocation; ++ test_in_subprocess (configure_lookup); /* No subprocess. */ ++ support_shared_free (shared); ++ shared = NULL; ++ return 0; ++ } ++ ++ bool any_success = false; ++ ++ for (int do_configure_lookup = 0; do_configure_lookup < 2; ++ ++do_configure_lookup) ++ { ++ if (do_configure_lookup) ++ puts ("info: testing with nsswitch.conf override"); ++ else ++ puts ("info: testing with original nsswitch.conf"); ++ ++ char *configure_lookup = do_configure_lookup ? files : NULL; ++ ++ shared = support_shared_allocate (sizeof (*shared)); ++ ++ /* Disable fault injection. */ ++ shared->failing_allocation = ~0U; ++ ++ support_isolate_in_subprocess (no_op, NULL); ++ TEST_COMPARE (shared->allocation_count, 0); ++ ++ support_isolate_in_subprocess (initialize, configure_lookup); ++ ++ if (shared->name[0] != '\0') ++ any_success = true; ++ ++ /* The number of allocations in the successful case. Once the ++ number of expected allocations is exceeded, injecting further ++ failures does not make a difference (assuming that the number ++ of malloc calls is deterministic). */ ++ unsigned int maximum_allocation_count = shared->allocation_count; ++ printf ("info: initial getlogin_r performed %u allocations\n", ++ maximum_allocation_count); ++ ++ for (unsigned int inject_at = 0; inject_at <= maximum_allocation_count; ++ ++inject_at) ++ { ++ printf ("info: running fault injection at allocation %u\n", ++ inject_at); ++ shared->allocation_count = 0; ++ shared->failing_allocation = inject_at; ++ support_isolate_in_subprocess (test_in_subprocess, configure_lookup); ++ } ++ ++ support_shared_free (shared); ++ shared = NULL; ++ } ++ ++ { ++ FILE *fp = fopen (_PATH_NSSWITCH_CONF, "r"); ++ if (fp == NULL) ++ printf ("info: no %s file\n", _PATH_NSSWITCH_CONF); ++ else ++ { ++ printf ("info: %s contents follows\n", _PATH_NSSWITCH_CONF); ++ int last_ch = '\n'; ++ while (true) ++ { ++ int ch = fgetc (fp); ++ if (ch == EOF) ++ break; ++ putchar (ch); ++ last_ch = ch; ++ } ++ if (last_ch != '\n') ++ putchar ('\n'); ++ printf ("(end of %s contents)\n", _PATH_NSSWITCH_CONF); ++ xfclose (fp); ++ } ++ } ++ ++ support_record_failure_barrier (); ++ ++ if (!any_success) ++ FAIL_UNSUPPORTED ("no successful getlogin_r calls"); ++ ++ return 0; ++} ++ ++static void ++cmdline_process (int c) ++{ ++ if (c == 'F') ++ option_failing_allocation = atoi (optarg); ++} ++ ++#define CMDLINE_OPTIONS \ ++ { "failing-allocation", required_argument, NULL, 'F' }, \ ++ { "override", no_argument, &option_override, 1 }, ++ ++#define CMDLINE_PROCESS cmdline_process ++ ++#include diff --git a/packages/glibc/0009-debug-Fix-build-with-enable-fortify-source-1-BZ-3390.patch b/packages/glibc/0009-debug-Fix-build-with-enable-fortify-source-1-BZ-3390.patch new file mode 100644 index 000000000..0110d49ae --- /dev/null +++ b/packages/glibc/0009-debug-Fix-build-with-enable-fortify-source-1-BZ-3390.patch @@ -0,0 +1,30 @@ +From 911bd469f80c6378da9319fe7508d012f95fc20c Mon Sep 17 00:00:00 2001 +From: Adhemerval Zanella +Date: Thu, 26 Feb 2026 09:49:19 -0300 +Subject: [PATCH] debug: Fix build with --enable-fortify-source=1 (BZ 33904) + +The libio/bits/stdio2-decl.h only defined the prototypes for +__vasprintf_chk and __vfprintf_chk for __USE_FORTIFY_LEVEL > 1. +Also defined them for the internal header regardless. + +Checked with a build with --enable-fortify-source=1 and +--enable-fortify-source=2 for all afftected ABIs. + +(cherry picked from commit f96e9bd2fecce3f0284479a5c0dac6989736c8c8) +--- + include/bits/stdio2-decl.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/include/bits/stdio2-decl.h b/include/bits/stdio2-decl.h +index 9758bf4b55..97c2236f24 100644 +--- a/include/bits/stdio2-decl.h ++++ b/include/bits/stdio2-decl.h +@@ -3,6 +3,8 @@ + #ifndef _ISOMAC + libc_hidden_proto (__fgets_unlocked_chk) + libc_hidden_ldbl_proto (vfprintf) ++extern int __vasprintf_chk (char **, int, const char *, __gnuc_va_list) __THROW; + libc_hidden_ldbl_proto (__vasprintf_chk) ++extern int __vfprintf_chk (FILE *, int, const char *, __gnuc_va_list); + libc_hidden_ldbl_proto (__vfprintf_chk) + #endif diff --git a/packages/glibc/0009-tst-fopen-threaded.c-Delete-temporary-file.patch b/packages/glibc/0009-tst-fopen-threaded.c-Delete-temporary-file.patch deleted file mode 100644 index b9fb20c2c..000000000 --- a/packages/glibc/0009-tst-fopen-threaded.c-Delete-temporary-file.patch +++ /dev/null @@ -1,76 +0,0 @@ -From 9ec7a532ffdb9a6e0a4b220d7a694d6120701035 Mon Sep 17 00:00:00 2001 -From: "H.J. Lu" -Date: Sat, 19 Jul 2025 07:43:27 -0700 -Subject: [PATCH] tst-fopen-threaded.c: Delete temporary file - -Update tst-fopen-threaded.c to call support_create_temp_directory to -create a temporary directory and open "file" in the temporary directory, -instead of using /tmp/openclosetest and leaving it behind. - -This partially fixes BZ #33182. - -Signed-off-by: H.J. Lu -Reviewed-by: Adhemerval Zanella -(cherry picked from commit e7db5150603bb2224a2bfd9628cae04ddcbe49e3) ---- - sysdeps/pthread/tst-fopen-threaded.c | 14 ++++++++++++-- - 1 file changed, 12 insertions(+), 2 deletions(-) - -diff --git a/sysdeps/pthread/tst-fopen-threaded.c b/sysdeps/pthread/tst-fopen-threaded.c -index ade58ad19e..c17f1eaa13 100644 ---- a/sysdeps/pthread/tst-fopen-threaded.c -+++ b/sysdeps/pthread/tst-fopen-threaded.c -@@ -34,11 +34,13 @@ - #include - #include - #include -+#include - - #include - #include - #include - #include -+#include - - #define NUM_THREADS 100 - #define ITERS 10 -@@ -111,7 +113,8 @@ threadOpenCloseRoutine (void *argv) - /* Wait for all threads to be ready to call fopen and fclose. */ - xpthread_barrier_wait (&barrier); - -- FILE *fd = xfopen ("/tmp/openclosetest", "w+"); -+ char *file = (char *) argv; -+ FILE *fd = xfopen (file, "w+"); - xfclose (fd); - return NULL; - } -@@ -235,6 +238,10 @@ do_test (void) - xfclose (fd_file); - } - -+ char *tempdir = support_create_temp_directory ("openclosetest-"); -+ char *file = xasprintf ("%s/file", tempdir); -+ add_temp_file (file); -+ - /* Test 3: Concurrent open/close. */ - for (int reps = 1; reps <= ITERS; reps++) - { -@@ -243,7 +250,7 @@ do_test (void) - { - threads[i] = - xpthread_create (support_small_stack_thread_attribute (), -- threadOpenCloseRoutine, NULL); -+ threadOpenCloseRoutine, file); - } - for (int i = 0; i < NUM_THREADS; i++) - { -@@ -252,6 +259,9 @@ do_test (void) - xpthread_barrier_destroy (&barrier); - } - -+ free (file); -+ free (tempdir); -+ - return 0; - } - diff --git a/packages/glibc/0010-Add-BZ-33904-entry-to-NEWS.patch b/packages/glibc/0010-Add-BZ-33904-entry-to-NEWS.patch new file mode 100644 index 000000000..55e4fe501 --- /dev/null +++ b/packages/glibc/0010-Add-BZ-33904-entry-to-NEWS.patch @@ -0,0 +1,21 @@ +From c3ceb93dc4f67253037644dc8f194831e27f3160 Mon Sep 17 00:00:00 2001 +From: Adhemerval Zanella +Date: Thu, 26 Feb 2026 10:21:24 -0300 +Subject: [PATCH] Add BZ 33904 entry to NEWS + +--- + NEWS | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/NEWS b/NEWS +index 1f07633e57..cec8b61f55 100644 +--- a/NEWS ++++ b/NEWS +@@ -13,6 +13,7 @@ The following bugs are resolved with this release: + results + [33848] build: Build fails at openat2.h, redefinition of 'struct + open_how' ++ [33904] build: error: '__vasprintf_chk' undeclared here + + Version 2.43 + diff --git a/packages/glibc/0010-tst-freopen4-main.c-Call-support_capture_subprocess-.patch b/packages/glibc/0010-tst-freopen4-main.c-Call-support_capture_subprocess-.patch deleted file mode 100644 index e2bdc2658..000000000 --- a/packages/glibc/0010-tst-freopen4-main.c-Call-support_capture_subprocess-.patch +++ /dev/null @@ -1,86 +0,0 @@ -From 41a77b78cff821007e3dd874619ebec7ce708c3d Mon Sep 17 00:00:00 2001 -From: "H.J. Lu" -Date: Sat, 19 Jul 2025 07:43:28 -0700 -Subject: [PATCH] tst-freopen4-main.c: Call support_capture_subprocess with - chroot - -Update tst-freopen4-main.c to call support_capture_subprocess with chroot, -which makes temporary files inaccessible, so that temporary files can be -deleted. - -This partially fixes BZ #33182. - -Signed-off-by: H.J. Lu -Reviewed-by: Adhemerval Zanella -(cherry picked from commit 6463d4a7b28e5ee3891c34a8a1f0a59c24dfa9de) ---- - stdio-common/tst-freopen4-main.c | 44 ++++++++++++++++++++++---------- - 1 file changed, 30 insertions(+), 14 deletions(-) - -diff --git a/stdio-common/tst-freopen4-main.c b/stdio-common/tst-freopen4-main.c -index 3336f5327d..436da4d203 100644 ---- a/stdio-common/tst-freopen4-main.c -+++ b/stdio-common/tst-freopen4-main.c -@@ -28,25 +28,15 @@ - #include - #include - #include -+#include - --int --do_test (void) -+static void -+do_test_chroot (void *data) - { -- mtrace (); -- char *temp_dir; -+ char *temp_dir = (char *) data; - FILE *fp; - int ret; - -- /* These chroot tests verify that either reopening a renamed or -- deleted file works even in the absence of /proc, or that it fails -- (without memory leaks); thus, for example, such reopening does -- not crash in the absence of /proc. */ -- -- support_become_root (); -- if (!support_can_chroot ()) -- return EXIT_UNSUPPORTED; -- -- temp_dir = support_create_temp_directory ("tst-freopen4"); - xchroot (temp_dir); - - /* Test freopen with NULL, renamed file. This verifies that -@@ -96,6 +86,32 @@ do_test (void) - puts ("freopen of deleted file failed (OK)"); - - free (temp_dir); -+} -+ -+int -+do_test (void) -+{ -+ mtrace (); -+ char *temp_dir; -+ -+ /* These chroot tests verify that either reopening a renamed or -+ deleted file works even in the absence of /proc, or that it fails -+ (without memory leaks); thus, for example, such reopening does -+ not crash in the absence of /proc. */ -+ -+ support_become_root (); -+ if (!support_can_chroot ()) -+ return EXIT_UNSUPPORTED; -+ -+ temp_dir = support_create_temp_directory ("tst-freopen4"); -+ -+ struct support_capture_subprocess result; -+ result = support_capture_subprocess (do_test_chroot, temp_dir); -+ support_capture_subprocess_check (&result, "freopen4", 0, -+ sc_allow_stdout); -+ fputs (result.out.buffer, stdout); -+ support_capture_subprocess_free (&result); -+ - return 0; - } - diff --git a/packages/glibc/0011-tst-env-setuid-Delete-LD_DEBUG_OUTPUT-output.patch b/packages/glibc/0011-tst-env-setuid-Delete-LD_DEBUG_OUTPUT-output.patch deleted file mode 100644 index 60317ba11..000000000 --- a/packages/glibc/0011-tst-env-setuid-Delete-LD_DEBUG_OUTPUT-output.patch +++ /dev/null @@ -1,79 +0,0 @@ -From c090b0cb1cde74aaeec01663dd55d6681dc92075 Mon Sep 17 00:00:00 2001 -From: "H.J. Lu" -Date: Sat, 19 Jul 2025 07:43:29 -0700 -Subject: [PATCH] tst-env-setuid: Delete LD_DEBUG_OUTPUT output - -Update tst-env-setuid.c to delete LD_DEBUG_OUTPUT output, instead of -leaving it behind. - -This partially fixes BZ #33182. - -Signed-off-by: H.J. Lu -Reviewed-by: Adhemerval Zanella -(cherry picked from commit 5d23dfb289174d73b8907b86d2bef7a3ca889840) ---- - elf/tst-env-setuid.c | 26 ++++++++++++++++++++++---- - 1 file changed, 22 insertions(+), 4 deletions(-) - -diff --git a/elf/tst-env-setuid.c b/elf/tst-env-setuid.c -index 7209acd616..ff3eda7f91 100644 ---- a/elf/tst-env-setuid.c -+++ b/elf/tst-env-setuid.c -@@ -40,6 +40,8 @@ static char SETGID_CHILD[] = "setgid-child"; - # define PROFILE_LIB "tst-sonamemove-runmod2.so" - #endif - -+#define LD_DEBUG_OUTPUT "/tmp/some-file" -+ - struct envvar_t - { - const char *env; -@@ -61,7 +63,7 @@ static const struct envvar_t filtered_envvars[] = - { "MALLOC_TRIM_THRESHOLD_", FILTERED_VALUE }, - { "RES_OPTIONS", FILTERED_VALUE }, - { "LD_DEBUG", "all" }, -- { "LD_DEBUG_OUTPUT", "/tmp/some-file" }, -+ { "LD_DEBUG_OUTPUT", LD_DEBUG_OUTPUT }, - { "LD_WARN", FILTERED_VALUE }, - { "LD_VERBOSE", FILTERED_VALUE }, - { "LD_BIND_NOW", "0" }, -@@ -74,6 +76,14 @@ static const struct envvar_t unfiltered_envvars[] = - { "LD_ASSUME_KERNEL", UNFILTERED_VALUE }, - }; - -+static void -+unlink_ld_debug_output (pid_t pid) -+{ -+ char *output = xasprintf ("%s.%d", LD_DEBUG_OUTPUT, pid); -+ unlink (output); -+ free (output); -+} -+ - static int - test_child (void) - { -@@ -138,13 +148,21 @@ do_test (int argc, char **argv) - /* Setgid child process. */ - if (argc == 2 && strcmp (argv[1], SETGID_CHILD) == 0) - { -+ pid_t ppid = getppid (); -+ - if (getgid () == getegid ()) -- /* This can happen if the file system is mounted nosuid. */ -- FAIL_UNSUPPORTED ("SGID failed: GID and EGID match (%jd)\n", -- (intmax_t) getgid ()); -+ { -+ /* This can happen if the file system is mounted nosuid. */ -+ unlink_ld_debug_output (ppid); -+ -+ FAIL_UNSUPPORTED ("SGID failed: GID and EGID match (%jd)\n", -+ (intmax_t) getgid ()); -+ } - - int ret = test_child (); - -+ unlink_ld_debug_output (ppid); -+ - if (ret != 0) - exit (1); - return 0; diff --git a/packages/glibc/0012-Revert-tst-freopen4-main.c-Call-support_capture_subp.patch b/packages/glibc/0012-Revert-tst-freopen4-main.c-Call-support_capture_subp.patch deleted file mode 100644 index 1ab86e444..000000000 --- a/packages/glibc/0012-Revert-tst-freopen4-main.c-Call-support_capture_subp.patch +++ /dev/null @@ -1,86 +0,0 @@ -From e5754399b542640f3f69c5e2513c57a307656032 Mon Sep 17 00:00:00 2001 -From: "H.J. Lu" -Date: Tue, 5 Aug 2025 09:16:14 -0700 -Subject: [PATCH] Revert "tst-freopen4-main.c: Call support_capture_subprocess - with chroot" - -Revert commit 6463d4a7b28e5ee3891c34a8a1f0a59c24dfa9de to fix - -FAIL: stdio-common/tst-freopen4-mem -FAIL: stdio-common/tst-freopen64-4-mem - -This fixes BZ #33254. - -Reviewed-by: Sam James -(cherry picked from commit adec0bf05bc23ec35573c7a5b96440089b69265e) ---- - stdio-common/tst-freopen4-main.c | 44 ++++++++++---------------------- - 1 file changed, 14 insertions(+), 30 deletions(-) - -diff --git a/stdio-common/tst-freopen4-main.c b/stdio-common/tst-freopen4-main.c -index 436da4d203..3336f5327d 100644 ---- a/stdio-common/tst-freopen4-main.c -+++ b/stdio-common/tst-freopen4-main.c -@@ -28,15 +28,25 @@ - #include - #include - #include --#include - --static void --do_test_chroot (void *data) -+int -+do_test (void) - { -- char *temp_dir = (char *) data; -+ mtrace (); -+ char *temp_dir; - FILE *fp; - int ret; - -+ /* These chroot tests verify that either reopening a renamed or -+ deleted file works even in the absence of /proc, or that it fails -+ (without memory leaks); thus, for example, such reopening does -+ not crash in the absence of /proc. */ -+ -+ support_become_root (); -+ if (!support_can_chroot ()) -+ return EXIT_UNSUPPORTED; -+ -+ temp_dir = support_create_temp_directory ("tst-freopen4"); - xchroot (temp_dir); - - /* Test freopen with NULL, renamed file. This verifies that -@@ -86,32 +96,6 @@ do_test_chroot (void *data) - puts ("freopen of deleted file failed (OK)"); - - free (temp_dir); --} -- --int --do_test (void) --{ -- mtrace (); -- char *temp_dir; -- -- /* These chroot tests verify that either reopening a renamed or -- deleted file works even in the absence of /proc, or that it fails -- (without memory leaks); thus, for example, such reopening does -- not crash in the absence of /proc. */ -- -- support_become_root (); -- if (!support_can_chroot ()) -- return EXIT_UNSUPPORTED; -- -- temp_dir = support_create_temp_directory ("tst-freopen4"); -- -- struct support_capture_subprocess result; -- result = support_capture_subprocess (do_test_chroot, temp_dir); -- support_capture_subprocess_check (&result, "freopen4", 0, -- sc_allow_stdout); -- fputs (result.out.buffer, stdout); -- support_capture_subprocess_free (&result); -- - return 0; - } - diff --git a/packages/glibc/0013-hurd-support-Fix-running-SGID-tests.patch b/packages/glibc/0013-hurd-support-Fix-running-SGID-tests.patch deleted file mode 100644 index 01eda4123..000000000 --- a/packages/glibc/0013-hurd-support-Fix-running-SGID-tests.patch +++ /dev/null @@ -1,48 +0,0 @@ -From c5476b7907d01207ede6bf57b26cef151b601f35 Mon Sep 17 00:00:00 2001 -From: Samuel Thibault -Date: Fri, 18 Jul 2025 23:14:40 +0200 -Subject: [PATCH] hurd: support: Fix running SGID tests - -Secure mode is enabled only if SGID actually provides a new privilege, -so we have to drop it before gaining it again. - -Fixes commit 3a3fb2ed83f79100c116c824454095ecfb335ad7 -("Fix error reporting (false negatives) in SGID tests") - -(cherry picked from commit ad4589e2d834c80a042a8c354fb00cf33e06802c) ---- - support/support_capture_subprocess.c | 21 +++++++++++++++++++++ - 1 file changed, 21 insertions(+) - -diff --git a/support/support_capture_subprocess.c b/support/support_capture_subprocess.c -index b4e4bf9502..c89e65b534 100644 ---- a/support/support_capture_subprocess.c -+++ b/support/support_capture_subprocess.c -@@ -133,6 +133,27 @@ copy_and_spawn_sgid (const char *child_id, gid_t gid) - if (chmod (execname, 02750) != 0) - FAIL_UNSUPPORTED ("cannot make \"%s\" SGID: %m ", execname); - -+ /* Now we can drop the privilege of that group. */ -+ const int count = 64; -+ gid_t groups[count]; -+ int ngroups = getgroups(count, groups); -+ -+ if (ngroups < 0) -+ FAIL_UNSUPPORTED ("Could not get group list again for user %jd\n", -+ (intmax_t) getuid ()); -+ -+ int n = 0; -+ for (int i = 0; i < ngroups; i++) -+ { -+ if (groups[i] != gid) -+ { -+ if (n != i) -+ groups[n] = groups[i]; -+ n++; -+ } -+ } -+ setgroups (n, groups); -+ - /* We have the binary, now spawn the subprocess. Avoid using - support_subprogram because we only want the program exit status, not the - contents. */ diff --git a/packages/glibc/0014-malloc-Remove-redundant-NULL-check.patch b/packages/glibc/0014-malloc-Remove-redundant-NULL-check.patch deleted file mode 100644 index 1986c4eeb..000000000 --- a/packages/glibc/0014-malloc-Remove-redundant-NULL-check.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 8a726b63047241c6dd4b55bf85eacd02244362a2 Mon Sep 17 00:00:00 2001 -From: Wilco Dijkstra -Date: Thu, 10 Jul 2025 15:49:14 +0000 -Subject: [PATCH] malloc: Remove redundant NULL check - -Remove a redundant NULL check from tcache_get_n. - -Reviewed-by: Cupertino Miranda -(cherry picked from commit 089b4fb90fac8ed53039bc4c465c4d333c6b4048) ---- - malloc/malloc.c | 7 +++---- - 1 file changed, 3 insertions(+), 4 deletions(-) - -diff --git a/malloc/malloc.c b/malloc/malloc.c -index 5ca390cc22..cf5c02ff64 100644 ---- a/malloc/malloc.c -+++ b/malloc/malloc.c -@@ -3208,11 +3208,10 @@ tcache_get_n (size_t tc_idx, tcache_entry **ep, bool mangled) - if (__glibc_unlikely (misaligned_mem (e))) - malloc_printerr ("malloc(): unaligned tcache chunk detected"); - -- void *ne = e == NULL ? NULL : REVEAL_PTR (e->next); - if (!mangled) -- *ep = ne; -+ *ep = REVEAL_PTR (e->next); - else -- *ep = PROTECT_PTR (ep, ne); -+ *ep = PROTECT_PTR (ep, REVEAL_PTR (e->next)); - - ++(tcache->num_slots[tc_idx]); - e->key = 0; -@@ -3229,7 +3228,7 @@ tcache_put (mchunkptr chunk, size_t tc_idx) - static __always_inline void * - tcache_get (size_t tc_idx) - { -- return tcache_get_n (tc_idx, & tcache->entries[tc_idx], false); -+ return tcache_get_n (tc_idx, &tcache->entries[tc_idx], false); - } - - static __always_inline tcache_entry ** diff --git a/packages/glibc/0015-malloc-Fix-MAX_TCACHE_SMALL_SIZE.patch b/packages/glibc/0015-malloc-Fix-MAX_TCACHE_SMALL_SIZE.patch deleted file mode 100644 index a458f91e4..000000000 --- a/packages/glibc/0015-malloc-Fix-MAX_TCACHE_SMALL_SIZE.patch +++ /dev/null @@ -1,70 +0,0 @@ -From c491dabd8a3de090d1ccb4589421a44e79c5b185 Mon Sep 17 00:00:00 2001 -From: Wilco Dijkstra -Date: Thu, 17 Jul 2025 14:31:06 +0000 -Subject: [PATCH] malloc: Fix MAX_TCACHE_SMALL_SIZE - -MAX_TCACHE_SMALL_SIZE should use chunk size since it is used after -checked_request2size. Increase limit of tcache_max_bytes by 1 since all -comparisons use '<'. As a result, the last tcache entry is now used as -expected. - -Reviewed-by: DJ Delorie -(cherry picked from commit ad4caba4146583fc543cd434221dec7113c03e09) ---- - malloc/malloc.c | 18 ++++++++---------- - 1 file changed, 8 insertions(+), 10 deletions(-) - -diff --git a/malloc/malloc.c b/malloc/malloc.c -index cf5c02ff64..b89b654f17 100644 ---- a/malloc/malloc.c -+++ b/malloc/malloc.c -@@ -294,9 +294,9 @@ - # define TCACHE_SMALL_BINS 64 - # define TCACHE_LARGE_BINS 12 /* Up to 4M chunks */ - # define TCACHE_MAX_BINS (TCACHE_SMALL_BINS + TCACHE_LARGE_BINS) --# define MAX_TCACHE_SMALL_SIZE tidx2usize (TCACHE_SMALL_BINS-1) -+# define MAX_TCACHE_SMALL_SIZE tidx2csize (TCACHE_SMALL_BINS-1) - --/* Only used to pre-fill the tunables. */ -+# define tidx2csize(idx) (((size_t) idx) * MALLOC_ALIGNMENT + MINSIZE) - # define tidx2usize(idx) (((size_t) idx) * MALLOC_ALIGNMENT + MINSIZE - SIZE_SZ) - - /* When "x" is from chunksize(). */ -@@ -1932,7 +1932,7 @@ static struct malloc_par mp_ = - , - .tcache_count = TCACHE_FILL_COUNT, - .tcache_small_bins = TCACHE_SMALL_BINS, -- .tcache_max_bytes = MAX_TCACHE_SMALL_SIZE, -+ .tcache_max_bytes = MAX_TCACHE_SMALL_SIZE + 1, - .tcache_unsorted_limit = 0 /* No limit. */ - #endif - }; -@@ -5586,15 +5586,13 @@ do_set_arena_max (size_t value) - static __always_inline int - do_set_tcache_max (size_t value) - { -+ if (value > PTRDIFF_MAX) -+ return 0; -+ - size_t nb = request2size (value); - size_t tc_idx = csize2tidx (nb); - -- /* To check that value is not too big and request2size does not return an -- overflown value. */ -- if (value > nb) -- return 0; -- -- if (nb > MAX_TCACHE_SMALL_SIZE) -+ if (tc_idx >= TCACHE_SMALL_BINS) - tc_idx = large_csize2tidx (nb); - - LIBC_PROBE (memory_tunable_tcache_max_bytes, 2, value, mp_.tcache_max_bytes); -@@ -5603,7 +5601,7 @@ do_set_tcache_max (size_t value) - { - if (tc_idx < TCACHE_SMALL_BINS) - mp_.tcache_small_bins = tc_idx + 1; -- mp_.tcache_max_bytes = nb; -+ mp_.tcache_max_bytes = nb + 1; - return 1; - } - diff --git a/packages/glibc/0016-malloc-Make-sure-tcache_key-is-odd-enough.patch b/packages/glibc/0016-malloc-Make-sure-tcache_key-is-odd-enough.patch deleted file mode 100644 index 52758d157..000000000 --- a/packages/glibc/0016-malloc-Make-sure-tcache_key-is-odd-enough.patch +++ /dev/null @@ -1,52 +0,0 @@ -From a96a82c4a5efd3139e75cd11fd2a5554164dd5a0 Mon Sep 17 00:00:00 2001 -From: Samuel Thibault -Date: Wed, 30 Jul 2025 01:55:22 +0200 -Subject: [PATCH] malloc: Make sure tcache_key is odd enough - -We want tcache_key not to be a commonly-occurring value in memory, so ensure -a minimum amount of one and zero bits. - -And we need it non-zero, otherwise even if tcache_double_free_verify sets -e->key to 0 before calling __libc_free, it gets called again by __libc_free, -thus looping indefinitely. - -Fixes: c968fe50628db74b52124d863cd828225a1d305c ("malloc: Use tailcalls in __libc_free") -(cherry picked from commit 2536c4f8584082a1ac4c5e0a2a6222e290d43983) ---- - malloc/malloc.c | 16 ++++++++++++++++ - 1 file changed, 16 insertions(+) - -diff --git a/malloc/malloc.c b/malloc/malloc.c -index b89b654f17..e4e2f03600 100644 ---- a/malloc/malloc.c -+++ b/malloc/malloc.c -@@ -230,6 +230,9 @@ - /* For uintptr_t. */ - #include - -+/* For stdc_count_ones. */ -+#include -+ - /* For va_arg, va_start, va_end. */ - #include - -@@ -3152,6 +3155,19 @@ tcache_key_initialize (void) - if (__getrandom_nocancel_nostatus_direct (&tcache_key, sizeof(tcache_key), - GRND_NONBLOCK) - != sizeof (tcache_key)) -+ tcache_key = 0; -+ -+ /* We need tcache_key to be non-zero (otherwise tcache_double_free_verify's -+ clearing of e->key would go unnoticed and it would loop getting called -+ through __libc_free), and we want tcache_key not to be a -+ commonly-occurring value in memory, so ensure a minimum amount of one and -+ zero bits. */ -+ int minimum_bits = __WORDSIZE / 4; -+ int maximum_bits = __WORDSIZE - minimum_bits; -+ -+ while (labs (tcache_key) <= 0x1000000 -+ || stdc_count_ones (tcache_key) < minimum_bits -+ || stdc_count_ones (tcache_key) > maximum_bits) - { - tcache_key = random_bits (); - #if __WORDSIZE == 64 diff --git a/packages/glibc/0017-malloc-Fix-checking-for-small-negative-values-of-tca.patch b/packages/glibc/0017-malloc-Fix-checking-for-small-negative-values-of-tca.patch deleted file mode 100644 index aea46c456..000000000 --- a/packages/glibc/0017-malloc-Fix-checking-for-small-negative-values-of-tca.patch +++ /dev/null @@ -1,26 +0,0 @@ -From d7274d718e6f3655eabe311d4eb70fabb5ffa7ef Mon Sep 17 00:00:00 2001 -From: Samuel Thibault -Date: Sun, 10 Aug 2025 23:43:37 +0200 -Subject: [PATCH] malloc: Fix checking for small negative values of tcache_key - -tcache_key is unsigned so we should turn it explicitly to signed before -taking its absolute value. - -(cherry picked from commit 8543577b04ded6d979ffcc5a818930e4d74d0645) ---- - malloc/malloc.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/malloc/malloc.c b/malloc/malloc.c -index e4e2f03600..5f3e701fd1 100644 ---- a/malloc/malloc.c -+++ b/malloc/malloc.c -@@ -3165,7 +3165,7 @@ tcache_key_initialize (void) - int minimum_bits = __WORDSIZE / 4; - int maximum_bits = __WORDSIZE - minimum_bits; - -- while (labs (tcache_key) <= 0x1000000 -+ while (labs ((intptr_t) tcache_key) <= 0x1000000 - || stdc_count_ones (tcache_key) < minimum_bits - || stdc_count_ones (tcache_key) > maximum_bits) - { diff --git a/packages/glibc/0018-Use-TLS-initial-exec-model-for-__libc_tsd_CTYPE_-thr.patch b/packages/glibc/0018-Use-TLS-initial-exec-model-for-__libc_tsd_CTYPE_-thr.patch deleted file mode 100644 index 76cfc64cf..000000000 --- a/packages/glibc/0018-Use-TLS-initial-exec-model-for-__libc_tsd_CTYPE_-thr.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 8dbaecbe92ac7ab73b7d0aae84626af59131e41b Mon Sep 17 00:00:00 2001 -From: Jens Remus -Date: Fri, 25 Jul 2025 15:40:03 +0200 -Subject: [PATCH] Use TLS initial-exec model for __libc_tsd_CTYPE_* thread - variables [BZ #33234] - -Commit 10a66a8e421b ("Remove ") removed the TLS initial-exec -(IE) model attribute from the __libc_tsd_CTYPE_* thread variable declarations -and definitions. Commit a894f04d8776 ("Optimize __libc_tsd_* thread -variable access") restored it on declarations. - -Restore the TLS initial-exec model attribute on __libc_tsd_CTYPE_* thread -variable definitions. - -This resolves test tst-locale1 failure on s390 32-bit, when using a -GNU linker without the fix from GNU binutils commit aefebe82dc89 -("IBM zSystems: Fix offset relative to static TLS"). - -Reviewed-by: Florian Weimer -(cherry picked from commit e5363e6f460c2d58809bf10fc96d70fd1ef8b5b2) ---- - NEWS | 1 + - ctype/ctype-info.c | 6 +++--- - 2 files changed, 4 insertions(+), 3 deletions(-) - -diff --git a/NEWS b/NEWS -index 1d04bdfef8..69aa600c6d 100644 ---- a/NEWS -+++ b/NEWS -@@ -11,6 +11,7 @@ The following bugs were resolved with this release: - - [31943] _dl_find_object can fail if ld.so contains gaps between load segments - [32994] stdlib: resolve a double lock init issue after fork -+ [33234] Use TLS initial-exec model for __libc_tsd_CTYPE_* thread variables - [33245] nptl: nptl: error in internal cancellation syscall handling - - Version 2.42 -diff --git a/ctype/ctype-info.c b/ctype/ctype-info.c -index b7d3422726..fb5acf9419 100644 ---- a/ctype/ctype-info.c -+++ b/ctype/ctype-info.c -@@ -24,11 +24,11 @@ - __ctype_init before user code runs, but this does not happen for - threads in secondary namespaces. With the initializers, secondary - namespaces at least get locale data from the C locale. */ --__thread const uint16_t * __libc_tsd_CTYPE_B -+__thread const uint16_t * __libc_tsd_CTYPE_B attribute_tls_model_ie - = (const uint16_t *) _nl_C_LC_CTYPE_class + 128; --__thread const int32_t * __libc_tsd_CTYPE_TOLOWER -+__thread const int32_t * __libc_tsd_CTYPE_TOLOWER attribute_tls_model_ie - = (const int32_t *) _nl_C_LC_CTYPE_tolower + 128; --__thread const int32_t * __libc_tsd_CTYPE_TOUPPER -+__thread const int32_t * __libc_tsd_CTYPE_TOUPPER attribute_tls_model_ie - = (const int32_t *) _nl_C_LC_CTYPE_toupper + 128; - - diff --git a/packages/glibc/0019-i386-Add-GLIBC_ABI_GNU_TLS-version-BZ-33221.patch b/packages/glibc/0019-i386-Add-GLIBC_ABI_GNU_TLS-version-BZ-33221.patch deleted file mode 100644 index d7042e066..000000000 --- a/packages/glibc/0019-i386-Add-GLIBC_ABI_GNU_TLS-version-BZ-33221.patch +++ /dev/null @@ -1,63 +0,0 @@ -From d0f72b96f2e91e1aa93f7e826c71f74078ada7d0 Mon Sep 17 00:00:00 2001 -From: "H.J. Lu" -Date: Mon, 28 Jul 2025 12:16:11 -0700 -Subject: [PATCH] i386: Add GLIBC_ABI_GNU_TLS version [BZ #33221] - -On i386, programs and shared libraries with __thread usage may fail -silently at run-time against glibc without the TLS run-time fix for: - -https://sourceware.org/bugzilla/show_bug.cgi?id=32996 - -Add GLIBC_ABI_GNU_TLS version to indicate that glibc has the working -GNU TLS run-time. Linker can add the GLIBC_ABI_GNU_TLS version to -binaries which depend on the working TLS run-time so that such programs -and shared libraries will fail to load and run at run-time against -libc.so without the GLIBC_ABI_GNU_TLS version, instead of fail silently -at random. - -This fixes BZ #33221. - -Signed-off-by: H.J. Lu -Reviewed-by: Sam James -(cherry picked from commit ed1b7a5a489ab555a27fad9c101ebe2e1c1ba881) ---- - sysdeps/i386/Makefile | 9 +++++++++ - sysdeps/i386/Versions | 5 +++++ - 2 files changed, 14 insertions(+) - -diff --git a/sysdeps/i386/Makefile b/sysdeps/i386/Makefile -index ee6470d78e..c0c017b899 100644 ---- a/sysdeps/i386/Makefile -+++ b/sysdeps/i386/Makefile -@@ -60,6 +60,15 @@ $(objpfx)tst-ld-sse-use.out: ../sysdeps/i386/tst-ld-sse-use.sh $(objpfx)ld.so - @echo "Checking ld.so for SSE register use. This will take a few seconds..." - $(BASH) $< $(objpfx) '$(NM)' '$(OBJDUMP)' '$(READELF)' > $@; \ - $(evaluate-test) -+ -+tests-special += $(objpfx)check-gnu-tls.out -+ -+$(objpfx)check-gnu-tls.out: $(common-objpfx)libc.so -+ LC_ALL=C $(READELF) -V -W $< \ -+ | sed -ne '/.gnu.version_d/, /.gnu.version_r/ p' \ -+ | grep GLIBC_ABI_GNU_TLS > $@; \ -+ $(evaluate-test) -+generated += check-gnu-tls.out - else - CFLAGS-.os += $(if $(filter rtld-%.os,$(@F)), $(rtld-CFLAGS)) - endif -diff --git a/sysdeps/i386/Versions b/sysdeps/i386/Versions -index 36e23b466a..9c84c8ef04 100644 ---- a/sysdeps/i386/Versions -+++ b/sysdeps/i386/Versions -@@ -28,6 +28,11 @@ libc { - GLIBC_2.13 { - __fentry__; - } -+ GLIBC_ABI_GNU_TLS { -+ # This symbol is used only for empty version map and will be removed -+ # by scripts/versions.awk. -+ __placeholder_only_for_empty_version_map; -+ } - } - libm { - GLIBC_2.1 { diff --git a/packages/glibc/0020-x86-64-Add-GLIBC_ABI_GNU2_TLS-version-BZ-33129.patch b/packages/glibc/0020-x86-64-Add-GLIBC_ABI_GNU2_TLS-version-BZ-33129.patch deleted file mode 100644 index 34e7a8611..000000000 --- a/packages/glibc/0020-x86-64-Add-GLIBC_ABI_GNU2_TLS-version-BZ-33129.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 3970785bebcc3f1de4460072f3a041d178f64846 Mon Sep 17 00:00:00 2001 -From: "H.J. Lu" -Date: Mon, 28 Jul 2025 12:18:22 -0700 -Subject: [PATCH] x86-64: Add GLIBC_ABI_GNU2_TLS version [BZ #33129] - -Programs and shared libraries compiled with -mtls-dialect=gnu2 may fail -silently at run-time against glibc without the GNU2 TLS run-time fix -for: - -https://sourceware.org/bugzilla/show_bug.cgi?id=31372 - -Add GLIBC_ABI_GNU2_TLS version to indicate that glibc has the working -GNU2 TLS run-time. Linker can add the GLIBC_ABI_GNU2_TLS version to -binaries which depend on the working GNU2 TLS run-time: - -https://sourceware.org/bugzilla/show_bug.cgi?id=33130 - -so that such programs and shared libraries will fail to load and run at -run-time against libc.so without the GLIBC_ABI_GNU2_TLS version, instead -of fail silently at random. - -This fixes BZ #33129. - -Signed-off-by: H.J. Lu -Reviewed-by: Sam James -(cherry picked from commit 9df8fa397d515dc86ff5565f6c45625e672d539e) ---- - sysdeps/x86_64/Makefile | 9 +++++++++ - sysdeps/x86_64/Versions | 5 +++++ - 2 files changed, 14 insertions(+) - -diff --git a/sysdeps/x86_64/Makefile b/sysdeps/x86_64/Makefile -index c3e1065c81..3ab8c1ed0f 100644 ---- a/sysdeps/x86_64/Makefile -+++ b/sysdeps/x86_64/Makefile -@@ -212,6 +212,15 @@ LDFLAGS-tst-plt-rewrite2 = -Wl,-z,now - LDFLAGS-tst-plt-rewritemod2.so = -Wl,-z,now,-z,undefs - tst-plt-rewrite2-ENV = GLIBC_TUNABLES=glibc.cpu.plt_rewrite=2 - $(objpfx)tst-plt-rewrite2: $(objpfx)tst-plt-rewritemod2.so -+ -+tests-special += $(objpfx)check-gnu2-tls.out -+ -+$(objpfx)check-gnu2-tls.out: $(common-objpfx)libc.so -+ LC_ALL=C $(READELF) -V -W $< \ -+ | sed -ne '/.gnu.version_d/, /.gnu.version_r/ p' \ -+ | grep GLIBC_ABI_GNU2_TLS > $@; \ -+ $(evaluate-test) -+generated += check-gnu2-tls.out - endif - - test-internal-extras += tst-gnu2-tls2mod1 -diff --git a/sysdeps/x86_64/Versions b/sysdeps/x86_64/Versions -index e94758b236..a63c11bcb2 100644 ---- a/sysdeps/x86_64/Versions -+++ b/sysdeps/x86_64/Versions -@@ -5,6 +5,11 @@ libc { - GLIBC_2.13 { - __fentry__; - } -+ GLIBC_ABI_GNU2_TLS { -+ # This symbol is used only for empty version map and will be removed -+ # by scripts/versions.awk. -+ __placeholder_only_for_empty_version_map; -+ } - } - libm { - GLIBC_2.1 { diff --git a/packages/glibc/0021-x86-64-Add-GLIBC_ABI_DT_X86_64_PLT-BZ-33212.patch b/packages/glibc/0021-x86-64-Add-GLIBC_ABI_DT_X86_64_PLT-BZ-33212.patch deleted file mode 100644 index 3cc475e82..000000000 --- a/packages/glibc/0021-x86-64-Add-GLIBC_ABI_DT_X86_64_PLT-BZ-33212.patch +++ /dev/null @@ -1,79 +0,0 @@ -From 7a8f3c6ee4b565a02da4ba0dad9aaeaeed4639ce Mon Sep 17 00:00:00 2001 -From: "H.J. Lu" -Date: Thu, 14 Aug 2025 07:03:20 -0700 -Subject: [PATCH] x86-64: Add GLIBC_ABI_DT_X86_64_PLT [BZ #33212] - -When the linker -z mark-plt option is used to add DT_X86_64_PLT, -DT_X86_64_PLTSZ and DT_X86_64_PLTENT, the r_addend field of the -R_X86_64_JUMP_SLOT relocation stores the offset of the indirect -branch instruction. However, glibc versions without the commit: - -commit f8587a61892cbafd98ce599131bf4f103466f084 -Author: H.J. Lu -Date: Fri May 20 19:21:48 2022 -0700 - - x86-64: Ignore r_addend for R_X86_64_GLOB_DAT/R_X86_64_JUMP_SLOT - - According to x86-64 psABI, r_addend should be ignored for R_X86_64_GLOB_DAT - and R_X86_64_JUMP_SLOT. Since linkers always set their r_addends to 0, we - can ignore their r_addends. - - Reviewed-by: Fangrui Song - -won't ignore the r_addend value in the R_X86_64_JUMP_SLOT relocation. -Such programs and shared libraries will fail at run-time randomly. - -Add GLIBC_ABI_DT_X86_64_PLT version to indicate that glibc is compatible -with DT_X86_64_PLT. - -The linker can add the glibc GLIBC_ABI_DT_X86_64_PLT version dependency -whenever -z mark-plt is passed to the linker. The resulting programs and -shared libraries will fail to load at run-time against libc.so without the -GLIBC_ABI_DT_X86_64_PLT version, instead of fail randomly. - -This fixes BZ #33212. - -Signed-off-by: H.J. Lu -Reviewed-by: Sam James -(cherry picked from commit 399384e0c8193e31aea014220ccfa24300ae5938) ---- - sysdeps/x86_64/Makefile | 9 +++++++++ - sysdeps/x86_64/Versions | 5 +++++ - 2 files changed, 14 insertions(+) - -diff --git a/sysdeps/x86_64/Makefile b/sysdeps/x86_64/Makefile -index 3ab8c1ed0f..01100597a8 100644 ---- a/sysdeps/x86_64/Makefile -+++ b/sysdeps/x86_64/Makefile -@@ -213,6 +213,15 @@ LDFLAGS-tst-plt-rewritemod2.so = -Wl,-z,now,-z,undefs - tst-plt-rewrite2-ENV = GLIBC_TUNABLES=glibc.cpu.plt_rewrite=2 - $(objpfx)tst-plt-rewrite2: $(objpfx)tst-plt-rewritemod2.so - -+tests-special += $(objpfx)check-dt-x86-64-plt.out -+ -+$(objpfx)check-dt-x86-64-plt.out: $(common-objpfx)libc.so -+ LC_ALL=C $(READELF) -V -W $< \ -+ | sed -ne '/.gnu.version_d/, /.gnu.version_r/ p' \ -+ | grep GLIBC_ABI_DT_X86_64_PLT > $@; \ -+ $(evaluate-test) -+generated += check-dt-x86-64-plt.out -+ - tests-special += $(objpfx)check-gnu2-tls.out - - $(objpfx)check-gnu2-tls.out: $(common-objpfx)libc.so -diff --git a/sysdeps/x86_64/Versions b/sysdeps/x86_64/Versions -index a63c11bcb2..0a759029e5 100644 ---- a/sysdeps/x86_64/Versions -+++ b/sysdeps/x86_64/Versions -@@ -10,6 +10,11 @@ libc { - # by scripts/versions.awk. - __placeholder_only_for_empty_version_map; - } -+ GLIBC_ABI_DT_X86_64_PLT { -+ # This symbol is used only for empty version map and will be removed -+ # by scripts/versions.awk. -+ __placeholder_only_for_empty_version_map; -+ } - } - libm { - GLIBC_2.1 { diff --git a/packages/glibc/0022-i386-Also-add-GLIBC_ABI_GNU2_TLS-version-BZ-33129.patch b/packages/glibc/0022-i386-Also-add-GLIBC_ABI_GNU2_TLS-version-BZ-33129.patch deleted file mode 100644 index c18a8af5a..000000000 --- a/packages/glibc/0022-i386-Also-add-GLIBC_ABI_GNU2_TLS-version-BZ-33129.patch +++ /dev/null @@ -1,95 +0,0 @@ -From e87844ec42b77363a499ea4da6c4a6ab85eba310 Mon Sep 17 00:00:00 2001 -From: "H.J. Lu" -Date: Mon, 18 Aug 2025 09:06:48 -0700 -Subject: [PATCH] i386: Also add GLIBC_ABI_GNU2_TLS version [BZ #33129] - -Since the GNU2 TLS run-time bug: - -https://sourceware.org/bugzilla/show_bug.cgi?id=31372 - -affects both i386 and x86-64, also add GLIBC_ABI_GNU2_TLS version to i386 -to indicate the working GNU2 TLS run-time. For x86-64, the additional -GNU2 TLS run-time bug fix is needed for - -https://sourceware.org/bugzilla/show_bug.cgi?id=31501 - -Signed-off-by: H.J. Lu -Reviewed-by: Sam James -(cherry picked from commit bd4628f3f18ac312408782eea450429c6f044860) ---- - sysdeps/x86/Makefile | 9 +++++++++ - sysdeps/x86/Versions | 5 +++++ - sysdeps/x86_64/Makefile | 9 --------- - sysdeps/x86_64/Versions | 5 ----- - 4 files changed, 14 insertions(+), 14 deletions(-) - -diff --git a/sysdeps/x86/Makefile b/sysdeps/x86/Makefile -index 4fbd48e1c8..9e1c8cce85 100644 ---- a/sysdeps/x86/Makefile -+++ b/sysdeps/x86/Makefile -@@ -135,6 +135,15 @@ LDFLAGS-tst-tls23 += -rdynamic - tst-tls23-mod.so-no-z-defs = yes - - $(objpfx)tst-tls23-mod.so: $(libsupport) -+ -+tests-special += $(objpfx)check-gnu2-tls.out -+ -+$(objpfx)check-gnu2-tls.out: $(common-objpfx)libc.so -+ LC_ALL=C $(READELF) -V -W $< \ -+ | sed -ne '/.gnu.version_d/, /.gnu.version_r/ p' \ -+ | grep GLIBC_ABI_GNU2_TLS > $@; \ -+ $(evaluate-test) -+generated += check-gnu2-tls.out - endif - - ifeq ($(subdir),gmon) -diff --git a/sysdeps/x86/Versions b/sysdeps/x86/Versions -index 4b10c4b5d7..e8dcfccbe4 100644 ---- a/sysdeps/x86/Versions -+++ b/sysdeps/x86/Versions -@@ -7,4 +7,9 @@ libc { - GLIBC_2.33 { - __x86_get_cpuid_feature_leaf; - } -+ GLIBC_ABI_GNU2_TLS { -+ # This symbol is used only for empty version map and will be removed -+ # by scripts/versions.awk. -+ __placeholder_only_for_empty_version_map; -+ } - } -diff --git a/sysdeps/x86_64/Makefile b/sysdeps/x86_64/Makefile -index 01100597a8..fe9f1cdddb 100644 ---- a/sysdeps/x86_64/Makefile -+++ b/sysdeps/x86_64/Makefile -@@ -221,15 +221,6 @@ $(objpfx)check-dt-x86-64-plt.out: $(common-objpfx)libc.so - | grep GLIBC_ABI_DT_X86_64_PLT > $@; \ - $(evaluate-test) - generated += check-dt-x86-64-plt.out -- --tests-special += $(objpfx)check-gnu2-tls.out -- --$(objpfx)check-gnu2-tls.out: $(common-objpfx)libc.so -- LC_ALL=C $(READELF) -V -W $< \ -- | sed -ne '/.gnu.version_d/, /.gnu.version_r/ p' \ -- | grep GLIBC_ABI_GNU2_TLS > $@; \ -- $(evaluate-test) --generated += check-gnu2-tls.out - endif - - test-internal-extras += tst-gnu2-tls2mod1 -diff --git a/sysdeps/x86_64/Versions b/sysdeps/x86_64/Versions -index 0a759029e5..6a989ad3b3 100644 ---- a/sysdeps/x86_64/Versions -+++ b/sysdeps/x86_64/Versions -@@ -5,11 +5,6 @@ libc { - GLIBC_2.13 { - __fentry__; - } -- GLIBC_ABI_GNU2_TLS { -- # This symbol is used only for empty version map and will be removed -- # by scripts/versions.awk. -- __placeholder_only_for_empty_version_map; -- } - GLIBC_ABI_DT_X86_64_PLT { - # This symbol is used only for empty version map and will be removed - # by scripts/versions.awk. diff --git a/packages/glibc/0023-AArch64-Fix-SVE-powf-routine-BZ-33299.patch b/packages/glibc/0023-AArch64-Fix-SVE-powf-routine-BZ-33299.patch deleted file mode 100644 index da87ded10..000000000 --- a/packages/glibc/0023-AArch64-Fix-SVE-powf-routine-BZ-33299.patch +++ /dev/null @@ -1,52 +0,0 @@ -From e34453cd6a8c592c325756ff3c7ac0afd3975cb4 Mon Sep 17 00:00:00 2001 -From: Pierre Blanchard -Date: Wed, 20 Aug 2025 17:41:50 +0000 -Subject: [PATCH] AArch64: Fix SVE powf routine [BZ #33299] - -Fix a bug in predicate logic introduced in last change. -A slight performance improvement from relying on all true -predicates during conversion from single to double. -This fixes BZ #33299. - -Reviewed-by: Wilco Dijkstra -(cherry picked from commit aac077645a645bba0d67f3250e82017c539d0f4b) ---- - sysdeps/aarch64/fpu/powf_sve.c | 16 ++++++++-------- - 1 file changed, 8 insertions(+), 8 deletions(-) - -diff --git a/sysdeps/aarch64/fpu/powf_sve.c b/sysdeps/aarch64/fpu/powf_sve.c -index 7046990aa1..65e9bd29d9 100644 ---- a/sysdeps/aarch64/fpu/powf_sve.c -+++ b/sysdeps/aarch64/fpu/powf_sve.c -@@ -223,15 +223,15 @@ sv_powf_core (const svbool_t pg, svuint32_t i, svuint32_t iz, svint32_t k, - const svbool_t ptrue = svptrue_b64 (); - - /* Unpack and promote input vectors (pg, y, z, i, k and sign_bias) into two -- * in order to perform core computation in double precision. */ -+ in order to perform core computation in double precision. */ - const svbool_t pg_lo = svunpklo (pg); - const svbool_t pg_hi = svunpkhi (pg); -- svfloat64_t y_lo -- = svcvt_f64_x (pg, svreinterpret_f32 (svunpklo (svreinterpret_u32 (y)))); -- svfloat64_t y_hi -- = svcvt_f64_x (pg, svreinterpret_f32 (svunpkhi (svreinterpret_u32 (y)))); -- svfloat64_t z_lo = svcvt_f64_x (pg, svreinterpret_f32 (svunpklo (iz))); -- svfloat64_t z_hi = svcvt_f64_x (pg, svreinterpret_f32 (svunpkhi (iz))); -+ svfloat64_t y_lo = svcvt_f64_x ( -+ ptrue, svreinterpret_f32 (svunpklo (svreinterpret_u32 (y)))); -+ svfloat64_t y_hi = svcvt_f64_x ( -+ ptrue, svreinterpret_f32 (svunpkhi (svreinterpret_u32 (y)))); -+ svfloat64_t z_lo = svcvt_f64_x (ptrue, svreinterpret_f32 (svunpklo (iz))); -+ svfloat64_t z_hi = svcvt_f64_x (ptrue, svreinterpret_f32 (svunpkhi (iz))); - svuint64_t i_lo = svunpklo (i); - svuint64_t i_hi = svunpkhi (i); - svint64_t k_lo = svunpklo (k); -@@ -312,7 +312,7 @@ svfloat32_t SV_NAME_F2 (pow) (svfloat32_t x, svfloat32_t y, const svbool_t pg) - (23 - V_POWF_EXP2_TABLE_BITS)); - - /* Compute core in extended precision and return intermediate ylogx results -- * to handle cases of underflow and underflow in exp. */ -+ to handle cases of underflow and overflow in exp. */ - svfloat32_t ylogx; - svfloat32_t ret - = sv_powf_core (yint_or_xpos, i, iz, k, y, sign_bias, &ylogx, d); diff --git a/packages/glibc/0024-libio-Define-AT_RENAME_-with-the-same-tokens-as-Linu.patch b/packages/glibc/0024-libio-Define-AT_RENAME_-with-the-same-tokens-as-Linu.patch deleted file mode 100644 index c99194683..000000000 --- a/packages/glibc/0024-libio-Define-AT_RENAME_-with-the-same-tokens-as-Linu.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 1166170d95863e5a6f8121a5ca9d97713f524f49 Mon Sep 17 00:00:00 2001 -From: Florian Weimer -Date: Fri, 5 Sep 2025 19:02:57 +0200 -Subject: [PATCH] libio: Define AT_RENAME_* with the same tokens as Linux - -Linux uses different expressions for the RENAME_* and AT_RENAME_* -constants. Mirror that in , so that the macro redefinitions -do not result in preprocessor warnings. - -Reviewed-by: Collin Funk -(cherry picked from commit b173557da978a04ac3bdfc0bd3b0e7ac583b44d5) ---- - libio/stdio.h | 6 +++--- - stdio-common/tst-renameat2.c | 6 ++++++ - 2 files changed, 9 insertions(+), 3 deletions(-) - -diff --git a/libio/stdio.h b/libio/stdio.h -index d042b36618..e0e70945fa 100644 ---- a/libio/stdio.h -+++ b/libio/stdio.h -@@ -168,11 +168,11 @@ extern int renameat (int __oldfd, const char *__old, int __newfd, - #ifdef __USE_GNU - /* Flags for renameat2. */ - # define RENAME_NOREPLACE (1 << 0) --# define AT_RENAME_NOREPLACE RENAME_NOREPLACE -+# define AT_RENAME_NOREPLACE 0x0001 - # define RENAME_EXCHANGE (1 << 1) --# define AT_RENAME_EXCHANGE RENAME_EXCHANGE -+# define AT_RENAME_EXCHANGE 0x0002 - # define RENAME_WHITEOUT (1 << 2) --# define AT_RENAME_WHITEOUT RENAME_WHITEOUT -+# define AT_RENAME_WHITEOUT 0x0004 - - /* Rename file OLD relative to OLDFD to NEW relative to NEWFD, with - additional flags. */ -diff --git a/stdio-common/tst-renameat2.c b/stdio-common/tst-renameat2.c -index 12aa0f8b0f..6213e1376d 100644 ---- a/stdio-common/tst-renameat2.c -+++ b/stdio-common/tst-renameat2.c -@@ -28,6 +28,12 @@ - #include - #include - -+/* These constants are defined with different token sequences, -+ matching the Linux definitions, to avoid preprocessor warnings. */ -+_Static_assert (RENAME_NOREPLACE == AT_RENAME_NOREPLACE, "RENAME_NOREPLACE"); -+_Static_assert (RENAME_EXCHANGE == AT_RENAME_EXCHANGE, "RENAME_EXCHANGE"); -+_Static_assert (RENAME_WHITEOUT == AT_RENAME_WHITEOUT, "RENAME_WHITEOUT"); -+ - /* Directory with the temporary files. */ - static char *directory; - static int directory_fd; diff --git a/packages/glibc/0025-nss-Group-merge-does-not-react-to-ERANGE-during-merg.patch b/packages/glibc/0025-nss-Group-merge-does-not-react-to-ERANGE-during-merg.patch deleted file mode 100644 index a147cb810..000000000 --- a/packages/glibc/0025-nss-Group-merge-does-not-react-to-ERANGE-during-merg.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 46b4e37c9e0619d0cf065ba207c29996b326a06f Mon Sep 17 00:00:00 2001 -From: Florian Weimer -Date: Fri, 12 Sep 2025 21:33:34 +0200 -Subject: [PATCH] nss: Group merge does not react to ERANGE during merge (bug - 33361) - -The break statement in CHECK_MERGE is expected to exit the surrounding -while loop, not the do-while loop with in the macro. Remove the -do-while loop from the macro. It is not needed to turn the macro -expansion into a single statement due to the way CHECK_MERGE is used -(and the statement expression would cover this anyway). - -Reviewed-by: Collin Funk -(cherry picked from commit 0fceed254559836b57ee05188deac649bc505d05) ---- - NEWS | 1 + - nss/getXXbyYY_r.c | 18 +++++++----------- - 2 files changed, 8 insertions(+), 11 deletions(-) - -diff --git a/NEWS b/NEWS -index 69aa600c6d..06c27a8e17 100644 ---- a/NEWS -+++ b/NEWS -@@ -13,6 +13,7 @@ The following bugs were resolved with this release: - [32994] stdlib: resolve a double lock init issue after fork - [33234] Use TLS initial-exec model for __libc_tsd_CTYPE_* thread variables - [33245] nptl: nptl: error in internal cancellation syscall handling -+ [33361] nss: Group merge does not react to ERANGE during merge - - Version 2.42 - -diff --git a/nss/getXXbyYY_r.c b/nss/getXXbyYY_r.c -index eae6c3480e..2b0735fb6a 100644 ---- a/nss/getXXbyYY_r.c -+++ b/nss/getXXbyYY_r.c -@@ -157,19 +157,15 @@ __merge_einval (LOOKUP_TYPE *a, - - #define CHECK_MERGE(err, status) \ - ({ \ -- do \ -+ if (err) \ - { \ -- if (err) \ -- { \ -- __set_errno (err); \ -- if (err == ERANGE) \ -- status = NSS_STATUS_TRYAGAIN; \ -- else \ -- status = NSS_STATUS_UNAVAIL; \ -- break; \ -- } \ -+ __set_errno (err); \ -+ if (err == ERANGE) \ -+ status = NSS_STATUS_TRYAGAIN; \ -+ else \ -+ status = NSS_STATUS_UNAVAIL; \ -+ break; \ - } \ -- while (0); \ - }) - - /* Type of the lookup function we need here. */ diff --git a/packages/glibc/0026-nptl-Fix-MADV_GUARD_INSTALL-logic-for-thread-without.patch b/packages/glibc/0026-nptl-Fix-MADV_GUARD_INSTALL-logic-for-thread-without.patch deleted file mode 100644 index 3f1eca188..000000000 --- a/packages/glibc/0026-nptl-Fix-MADV_GUARD_INSTALL-logic-for-thread-without.patch +++ /dev/null @@ -1,209 +0,0 @@ -From 18fd689cdced8348e42991964557cddea0ba2dc5 Mon Sep 17 00:00:00 2001 -From: Adhemerval Zanella -Date: Mon, 8 Sep 2025 13:06:13 -0300 -Subject: [PATCH] nptl: Fix MADV_GUARD_INSTALL logic for thread without guard - page (BZ 33356) - -The main issue is that setup_stack_prot fails to account for cases where -the cached thread stack lacks a guard page, which can cause madvise to -fail. Update the logic to also handle whether MADV_GUARD_INSTALL is -supported when resizing the guard page. - -Checked on x86_64-linux-gnu with 6.8.0 and 6.15 kernels. - -Reviewed-by: Florian Weimer -(cherry picked from commit 855bfa2566bbefefa27c516b344df58a75824a5c) ---- - NEWS | 2 ++ - nptl/allocatestack.c | 22 ++++++++++++---- - nptl/tst-guard1.c | 60 +++++++++++++++++++++++++++++--------------- - 3 files changed, 59 insertions(+), 25 deletions(-) - -diff --git a/NEWS b/NEWS -index 06c27a8e17..ed3c114c7a 100644 ---- a/NEWS -+++ b/NEWS -@@ -13,6 +13,8 @@ The following bugs were resolved with this release: - [32994] stdlib: resolve a double lock init issue after fork - [33234] Use TLS initial-exec model for __libc_tsd_CTYPE_* thread variables - [33245] nptl: nptl: error in internal cancellation syscall handling -+ [33356] nptl: creating thread stack with guardsize 0 can erroneously -+ conclude MADV_GUARD_INSTALL is available - [33361] nss: Group merge does not react to ERANGE during merge - - Version 2.42 -diff --git a/nptl/allocatestack.c b/nptl/allocatestack.c -index 800ca89720..fb8a60a21d 100644 ---- a/nptl/allocatestack.c -+++ b/nptl/allocatestack.c -@@ -240,7 +240,7 @@ setup_stack_prot (char *mem, size_t size, struct pthread *pd, - /* Update the guard area of the thread stack MEM of size SIZE with the new - GUARDISZE. It uses the method defined by PD stack_mode. */ - static inline bool --adjust_stack_prot (char *mem, size_t size, const struct pthread *pd, -+adjust_stack_prot (char *mem, size_t size, struct pthread *pd, - size_t guardsize, size_t pagesize_m1) - { - /* The required guard area is larger than the current one. For -@@ -258,11 +258,23 @@ adjust_stack_prot (char *mem, size_t size, const struct pthread *pd, - so use the new guard placement with the new size. */ - if (guardsize > pd->guardsize) - { -+ /* There was no need to previously setup a guard page, so we need -+ to check whether the kernel supports guard advise. */ - char *guard = guard_position (mem, size, guardsize, pd, pagesize_m1); -- if (pd->stack_mode == ALLOCATE_GUARD_MADV_GUARD) -- return __madvise (guard, guardsize, MADV_GUARD_INSTALL) == 0; -- else if (pd->stack_mode == ALLOCATE_GUARD_PROT_NONE) -- return __mprotect (guard, guardsize, PROT_NONE) == 0; -+ if (atomic_load_relaxed (&allocate_stack_mode) -+ == ALLOCATE_GUARD_MADV_GUARD) -+ { -+ if (__madvise (guard, guardsize, MADV_GUARD_INSTALL) == 0) -+ { -+ pd->stack_mode = ALLOCATE_GUARD_MADV_GUARD; -+ return true; -+ } -+ atomic_store_relaxed (&allocate_stack_mode, -+ ALLOCATE_GUARD_PROT_NONE); -+ } -+ -+ pd->stack_mode = ALLOCATE_GUARD_PROT_NONE; -+ return __mprotect (guard, guardsize, PROT_NONE) == 0; - } - /* The current guard area is larger than the required one. For - _STACK_GROWS_DOWN is means change the guard as: -diff --git a/nptl/tst-guard1.c b/nptl/tst-guard1.c -index e3e06df0fc..1c73d3fc93 100644 ---- a/nptl/tst-guard1.c -+++ b/nptl/tst-guard1.c -@@ -21,6 +21,7 @@ - #include - #include - #include -+#include - #include - #include - #include -@@ -202,7 +203,7 @@ tf (void *closure) - - /* Test 1: caller provided stack without guard. */ - static void --do_test1 (void) -+do_test1 (void *closure) - { - pthread_attr_t attr; - xpthread_attr_init (&attr); -@@ -227,7 +228,7 @@ do_test1 (void) - - /* Test 2: same as 1., but with a guard area. */ - static void --do_test2 (void) -+do_test2 (void *closure) - { - pthread_attr_t attr; - xpthread_attr_init (&attr); -@@ -250,18 +251,9 @@ do_test2 (void) - xmunmap (stack, stacksize); - } - --/* Test 3: pthread_create with default values. */ -+/* Test 3: pthread_create without a guard area. */ - static void --do_test3 (void) --{ -- pthread_t t = xpthread_create (NULL, tf, NULL); -- void *status = xpthread_join (t); -- TEST_VERIFY (status == 0); --} -- --/* Test 4: pthread_create without a guard area. */ --static void --do_test4 (void) -+do_test3 (void *closure) - { - pthread_attr_t attr; - xpthread_attr_init (&attr); -@@ -277,9 +269,18 @@ do_test4 (void) - xpthread_attr_destroy (&attr); - } - -+/* Test 4: pthread_create with default values. */ -+static void -+do_test4 (void *closure) -+{ -+ pthread_t t = xpthread_create (NULL, tf, NULL); -+ void *status = xpthread_join (t); -+ TEST_VERIFY (status == 0); -+} -+ - /* Test 5: pthread_create with non default stack and guard size value. */ - static void --do_test5 (void) -+do_test5 (void *closure) - { - pthread_attr_t attr; - xpthread_attr_init (&attr); -@@ -299,7 +300,7 @@ do_test5 (void) - test 3, but with a larger guard area. The pthread_create will need to - increase the guard area. */ - static void --do_test6 (void) -+do_test6 (void *closure) - { - pthread_attr_t attr; - xpthread_attr_init (&attr); -@@ -320,7 +321,7 @@ do_test6 (void) - pthread_create should use the cached stack from previous tests, but it - would require to reduce the guard area. */ - static void --do_test7 (void) -+do_test7 (void *closure) - { - pthread_t t = xpthread_create (NULL, tf, NULL); - void *status = xpthread_join (t); -@@ -346,21 +347,40 @@ do_test (void) - - static const struct { - const char *descr; -- void (*test)(void); -+ void (*test) (void *); - } tests[] = { - { "user provided stack without guard", do_test1 }, - { "user provided stack with guard", do_test2 }, -- { "default attribute", do_test3 }, -- { "default attribute without guard", do_test4 }, -+ /* N.B: do_test3 should be before do_test4 to check if a new thread -+ that uses the thread stack previously allocated without a guard -+ page correctly sets up the guard pages even on a kernel without -+ MADV_GUARD_INSTALL support (BZ 33356). */ -+ { "default attribute without guard", do_test3 }, -+ { "default attribute", do_test4 }, -+ /* Also checks if the guard is correctly removed from the cache thread -+ stack. */ -+ { "default attribute without guard", do_test3 }, - { "non default stack and guard sizes", do_test5 }, - { "reused stack with larger guard", do_test6 }, - { "reused stack with smaller guard", do_test7 }, - }; - -+ /* Run each test with a clean state. */ -+ for (int i = 0; i < array_length (tests); i++) -+ { -+ printf ("debug: fork: test%01d: %s\n", i, tests[i].descr); -+ struct support_capture_subprocess result = -+ support_capture_subprocess (tests[i].test, NULL); -+ support_capture_subprocess_check (&result, tests[i].descr, 0, -+ sc_allow_none); -+ support_capture_subprocess_free (&result); -+ } -+ -+ /* And now run the same tests along with the thread stack cache. */ - for (int i = 0; i < array_length (tests); i++) - { - printf ("debug: test%01d: %s\n", i, tests[i].descr); -- tests[i].test(); -+ tests[i].test ( NULL); - } - - return 0; diff --git a/packages/glibc/Cargo.toml b/packages/glibc/Cargo.toml index 45c4be1d7..4781dad8d 100644 --- a/packages/glibc/Cargo.toml +++ b/packages/glibc/Cargo.toml @@ -12,9 +12,9 @@ path = "../packages.rs" releases-url = "https://ftp.gnu.org/gnu/glibc" [[package.metadata.build-package.external-files]] -url = "https://ftp.gnu.org/gnu/glibc/glibc-2.42.tar.xz" -sha512 = "73a617db8e0f0958c0575f7a1c5a35b72b7e070b6cbdd02a9bb134995ca7ca0909f1e50d7362c53d2572d72f1879bb201a61d5275bac16136895d9a34ef0c068" +url = "https://ftp.gnu.org/gnu/glibc/glibc-2.43.tar.xz" +sha512 = "25765f86bf54a22fc69dd13023ec9be59bd7e1f9d6ea1630cf21851898df2043bb8a01538c4b5fdd06495d0163289362b0768b391b0617f709b89a777168291c" [[package.metadata.build-package.external-files]] -url = "https://ftp.gnu.org/gnu/glibc/glibc-2.42.tar.xz.sig" -sha512 = "d868220778e98d24aead10a585e6a903892e4d043cd96a404634c8aa03d001d624a46a5c0fe13c86f83f66396a1f360a10990966fe377e98a722914b5087575d" +url = "https://ftp.gnu.org/gnu/glibc/glibc-2.43.tar.xz.sig" +sha512 = "6e26f0edee146710bcb73c3890c455e8b479009f99d284c43ea695b73bfe45e4ba47d1460300ce8c7496689b0c21a1c77e6359e005957973648b86755160c8f5" diff --git a/packages/glibc/glibc.spec b/packages/glibc/glibc.spec index a2380fb1e..7256c69c8 100644 --- a/packages/glibc/glibc.spec +++ b/packages/glibc/glibc.spec @@ -1,5 +1,5 @@ Name: %{_cross_os}glibc -Version: 2.42 +Version: 2.43 Release: 1%{?dist} Epoch: 1 Summary: The GNU libc libraries @@ -18,37 +18,21 @@ Source14: tz-utc.txt # applied and reverted during the build. Source99: HACK-only-build-and-install-localedef.patch -# Upstream patches from 2.42 release branch: +# Upstream patches from 2.43 release branch: # ``` -# git checkout origin/release/2.42/master -# git format-patch --no-numbered --no-signature glibc-2.42.. +# git checkout origin/release/2.43/master +# git format-patch --no-numbered --no-signature glibc-2.43.. # ``` -Patch0001: 0001-Replace-advisories-directory-with-pointer-file.patch -Patch0002: 0002-NEWS-add-new-section.patch -Patch0003: 0003-inet-fortified-fix-namespace-violation-bug-33227.patch -Patch0004: 0004-stdlib-resolve-a-double-lock-init-issue-after-fork-B.patch -Patch0005: 0005-elf-Extract-rtld_setup_phdr-function-from-dl_main.patch -Patch0006: 0006-elf-Handle-ld.so-with-LOAD-segment-gaps-in-_dl_find_.patch -Patch0007: 0007-nptl-Fix-SYSCALL_CANCEL-for-return-values-larger-tha.patch -Patch0008: 0008-Delete-temporary-files-in-support_subprocess.patch -Patch0009: 0009-tst-fopen-threaded.c-Delete-temporary-file.patch -Patch0010: 0010-tst-freopen4-main.c-Call-support_capture_subprocess-.patch -Patch0011: 0011-tst-env-setuid-Delete-LD_DEBUG_OUTPUT-output.patch -Patch0012: 0012-Revert-tst-freopen4-main.c-Call-support_capture_subp.patch -Patch0013: 0013-hurd-support-Fix-running-SGID-tests.patch -Patch0014: 0014-malloc-Remove-redundant-NULL-check.patch -Patch0015: 0015-malloc-Fix-MAX_TCACHE_SMALL_SIZE.patch -Patch0016: 0016-malloc-Make-sure-tcache_key-is-odd-enough.patch -Patch0017: 0017-malloc-Fix-checking-for-small-negative-values-of-tca.patch -Patch0018: 0018-Use-TLS-initial-exec-model-for-__libc_tsd_CTYPE_-thr.patch -Patch0019: 0019-i386-Add-GLIBC_ABI_GNU_TLS-version-BZ-33221.patch -Patch0020: 0020-x86-64-Add-GLIBC_ABI_GNU2_TLS-version-BZ-33129.patch -Patch0021: 0021-x86-64-Add-GLIBC_ABI_DT_X86_64_PLT-BZ-33212.patch -Patch0022: 0022-i386-Also-add-GLIBC_ABI_GNU2_TLS-version-BZ-33129.patch -Patch0023: 0023-AArch64-Fix-SVE-powf-routine-BZ-33299.patch -Patch0024: 0024-libio-Define-AT_RENAME_-with-the-same-tokens-as-Linu.patch -Patch0025: 0025-nss-Group-merge-does-not-react-to-ERANGE-during-merg.patch -Patch0026: 0026-nptl-Fix-MADV_GUARD_INSTALL-logic-for-thread-without.patch +Patch0001: 0001-Replace-advisories-directory-with-file-ADVISORIES.patch +Patch0002: 0002-NEWS-add-new-section-2.43.1.patch +Patch0003: 0003-Fix-ldbl-128ibm-ceill-floorl-roundl-and-truncl-zero-.patch +Patch0004: 0004-po-Incorporate-translatins-nl-updated-ar-new.patch +Patch0005: 0005-Don-t-include-bits-openat2.h-directly-bug-33848.patch +Patch0006: 0006-nss-Introduce-dedicated-struct-nss_database_for_fork.patch +Patch0007: 0007-Linux-In-getlogin_r-use-utmp-fallback-only-for-speci.patch +Patch0008: 0008-nss-Missing-checks-in-__nss_configure_lookup-__nss_d.patch +Patch0009: 0009-debug-Fix-build-with-enable-fortify-source-1-BZ-3390.patch +Patch0010: 0010-Add-BZ-33904-entry-to-NEWS.patch # Fedora patches Patch1001: glibc-cs-path.patch @@ -157,7 +141,7 @@ install -d %{buildroot}%{_cross_datadir}/zoneinfo base64 --decode %{S:14} > %{buildroot}%{_cross_datadir}/zoneinfo/UTC %files -%license COPYING COPYING.LIB LICENSES +%license COPYING.LIB COPYINGv2 COPYINGv3 LICENSES %{_cross_attribution_file} %{_cross_tmpfilesdir}/glibc.conf %exclude %{_cross_sysconfdir}/rpc From 2c6ba2f097ce9106bc536fcbca97e51542a4696e Mon Sep 17 00:00:00 2001 From: KCSesh Date: Wed, 11 Mar 2026 22:26:35 +0000 Subject: [PATCH 02/13] libbpf: update to 1.6.3 Signed-off-by: KCSesh --- packages/libbpf/Cargo.toml | 4 ++-- packages/libbpf/libbpf.spec | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/libbpf/Cargo.toml b/packages/libbpf/Cargo.toml index e1a757935..f413d8b43 100644 --- a/packages/libbpf/Cargo.toml +++ b/packages/libbpf/Cargo.toml @@ -12,8 +12,8 @@ path = "../packages.rs" releases-url = "https://github.com/libbpf/libbpf/releases" [[package.metadata.build-package.external-files]] -url = "https://github.com/libbpf/libbpf/archive/refs/tags/v1.6.2.tar.gz" -sha512 = "aa7511771858f2a58b283edb94595c986d1e9f25e1d8a439484e2ded85b75f87426d417aa7dd162d680f23f416abcfb195902cc13e48e444b99b6a24a179a9b6" +url = "https://github.com/libbpf/libbpf/archive/refs/tags/v1.6.3.tar.gz" +sha512 = "e7b1e42c21de0fc17e768e076314951bc305391985b64388bebf4c7049868cc430fb0f17dde7bb64aacd84762f6bf4d6da3bcc7ce98581e033791ace90676cc1" [build-dependencies] glibc = { path = "../glibc" } diff --git a/packages/libbpf/libbpf.spec b/packages/libbpf/libbpf.spec index d888c2842..172579bf4 100644 --- a/packages/libbpf/libbpf.spec +++ b/packages/libbpf/libbpf.spec @@ -1,5 +1,5 @@ Name: %{_cross_os}libbpf -Version: 1.6.2 +Version: 1.6.3 Release: 1%{?dist} Epoch: 1 Summary: Library for BPF From d971053060f91b0987c4ec64c2113d13805102fa Mon Sep 17 00:00:00 2001 From: KCSesh Date: Wed, 11 Mar 2026 22:59:33 +0000 Subject: [PATCH 03/13] libcrypto: update aws-lc patches Signed-off-by: KCSesh --- ...1018-Prepare-FIPS-3.1.0-release-2878.patch | 45 +++++++++ ...-Offer-P521-for-signature_algorithms.patch | 77 +++++++++++++++ ...in-EVP_PKEY_asn1_find_str-length-cal.patch | 78 +++++++++++++++ ...text-length-before-allocating-in-pkc.patch | 43 +++++++++ ...sable-EVP_PKEY_derive-for-KEM-method.patch | 30 ++++++ ...-zero-sized-digests-in-HKDF-EVP_PKEY.patch | 66 +++++++++++++ ...XOF-digests-in-DH_compute_key_hashed.patch | 94 +++++++++++++++++++ .../libcrypto/1025-Prepare-v3.2.0-3050.patch | 45 +++++++++ ...p-instead-of-OPENSSL_memcmp-for-tag-.patch | 24 +++++ packages/libcrypto/Cargo.toml | 4 + packages/libcrypto/libcrypto.spec | 10 ++ 11 files changed, 516 insertions(+) create mode 100644 packages/libcrypto/1018-Prepare-FIPS-3.1.0-release-2878.patch create mode 100644 packages/libcrypto/1019-Cherry-pick-2024-Offer-P521-for-signature_algorithms.patch create mode 100644 packages/libcrypto/1020-1-byte-OOB-read-in-EVP_PKEY_asn1_find_str-length-cal.patch create mode 100644 packages/libcrypto/1021-pkcs8-cap-ciphertext-length-before-allocating-in-pkc.patch create mode 100644 packages/libcrypto/1022-evp-disable-EVP_PKEY_derive-for-KEM-method.patch create mode 100644 packages/libcrypto/1023-reject-zero-sized-digests-in-HKDF-EVP_PKEY.patch create mode 100644 packages/libcrypto/1024-Reject-XOF-digests-in-DH_compute_key_hashed.patch create mode 100644 packages/libcrypto/1025-Prepare-v3.2.0-3050.patch create mode 100644 packages/libcrypto/1026-Use-CRYPTO_memcmp-instead-of-OPENSSL_memcmp-for-tag-.patch diff --git a/packages/libcrypto/1018-Prepare-FIPS-3.1.0-release-2878.patch b/packages/libcrypto/1018-Prepare-FIPS-3.1.0-release-2878.patch new file mode 100644 index 000000000..af69ec8a9 --- /dev/null +++ b/packages/libcrypto/1018-Prepare-FIPS-3.1.0-release-2878.patch @@ -0,0 +1,45 @@ +From ae0cd62f49db4c32b77cb8ed080013bfb44ed90d Mon Sep 17 00:00:00 2001 +From: torben-hansen <50673096+torben-hansen@users.noreply.github.com> +Date: Wed, 3 Dec 2025 11:30:35 -0800 +Subject: [PATCH] Prepare FIPS 3.1.0 release (#2878) + +Prepare FIPS v3.1.0 release +--- + crypto/fipsmodule/service_indicator/service_indicator_test.cc | 4 ++-- + include/openssl/base.h | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/crypto/fipsmodule/service_indicator/service_indicator_test.cc b/crypto/fipsmodule/service_indicator/service_indicator_test.cc +index c834d5ac2..2298fe9cb 100644 +--- a/crypto/fipsmodule/service_indicator/service_indicator_test.cc ++++ b/crypto/fipsmodule/service_indicator/service_indicator_test.cc +@@ -5254,7 +5254,7 @@ TEST(ServiceIndicatorTest, ED25519SigGenVerify) { + // Since this is running in FIPS mode it should end in FIPS + // Update this when the AWS-LC version number is modified + TEST(ServiceIndicatorTest, AWSLCVersionString) { +- ASSERT_STREQ(awslc_version_string(), "AWS-LC FIPS 3.0.0"); ++ ASSERT_STREQ(awslc_version_string(), "AWS-LC FIPS 3.1.0"); + } + + #else +@@ -5297,6 +5297,6 @@ TEST(ServiceIndicatorTest, BasicTest) { + // Since this is not running in FIPS mode it shouldn't end in FIPS + // Update this when the AWS-LC version number is modified + TEST(ServiceIndicatorTest, AWSLCVersionString) { +- ASSERT_STREQ(awslc_version_string(), "AWS-LC 3.0.0"); ++ ASSERT_STREQ(awslc_version_string(), "AWS-LC 3.1.0"); + } + #endif // AWSLC_FIPS +diff --git a/include/openssl/base.h b/include/openssl/base.h +index 948d92ecb..c7538796e 100644 +--- a/include/openssl/base.h ++++ b/include/openssl/base.h +@@ -122,7 +122,7 @@ extern "C" { + // ServiceIndicatorTest.AWSLCVersionString + // Note: there are two versions of this test. Only one test is compiled + // depending on FIPS mode. +-#define AWSLC_VERSION_NUMBER_STRING "3.0.0" ++#define AWSLC_VERSION_NUMBER_STRING "3.1.0" + + #if defined(BORINGSSL_SHARED_LIBRARY) + diff --git a/packages/libcrypto/1019-Cherry-pick-2024-Offer-P521-for-signature_algorithms.patch b/packages/libcrypto/1019-Cherry-pick-2024-Offer-P521-for-signature_algorithms.patch new file mode 100644 index 000000000..12bbeaae9 --- /dev/null +++ b/packages/libcrypto/1019-Cherry-pick-2024-Offer-P521-for-signature_algorithms.patch @@ -0,0 +1,77 @@ +From 5a869b04a30cd16237ee3dfa996d77bfc3574cb9 Mon Sep 17 00:00:00 2001 +From: Samuel Chiang +Date: Mon, 2 Feb 2026 10:00:38 -0800 +Subject: [PATCH] [Cherry-pick 2024] Offer P521 for signature_algorithms in + client Hello (#2975) + +(cherry picked from commit 0beb210b02b48d74444002393812a1a07a3b63b9). + +This change is not in the FIPS boundary and does not impact the +integrity hash. + +By submitting this pull request, I confirm that my contribution is made +under the terms of the Apache 2.0 license and the ISC license. + +Co-authored-by: Will Childs-Klein +--- + ssl/ssl_test.cc | 40 ++++++++++++++++++++++++++++++++++++---- + 1 file changed, 36 insertions(+), 4 deletions(-) + +diff --git a/ssl/ssl_test.cc b/ssl/ssl_test.cc +index 0cdec36ac..e2ee69afc 100644 +--- a/ssl/ssl_test.cc ++++ b/ssl/ssl_test.cc +@@ -4747,8 +4747,27 @@ TEST(SSLTest, ClientHello) { + 0x02, 0x01, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x16, 0x00, + 0x14, 0x04, 0x03, 0x08, 0x04, 0x04, 0x01, 0x05, 0x03, 0x08, 0x05, 0x05, + 0x01, 0x06, 0x03, 0x08, 0x06, 0x06, 0x01, 0x02, 0x01}}, +- // TODO(davidben): Add a change detector for TLS 1.3 once the spec and our +- // implementation has settled enough that it won't change. ++ {TLS1_3_VERSION, ++ {0x16, 0x03, 0x01, 0x00, 0xeb, 0x01, 0x00, 0x00, 0xe7, 0x03, 0x03, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x13, 0x01, 0x13, 0x02, 0x13, 0x03, ++ 0xcc, 0xa9, 0xcc, 0xa8, 0xc0, 0x2b, 0xc0, 0x2f, 0xc0, 0x2c, 0xc0, 0x30, ++ 0xc0, 0x09, 0xc0, 0x13, 0xc0, 0x27, 0xc0, 0x0a, 0xc0, 0x14, 0xc0, 0x28, ++ 0x00, 0x9c, 0x00, 0x9d, 0x00, 0x2f, 0x00, 0x3c, 0x00, 0x35, 0x01, 0x00, ++ 0x00, 0x76, 0x00, 0x17, 0x00, 0x00, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, ++ 0x0a, 0x00, 0x08, 0x00, 0x06, 0x00, 0x1d, 0x00, 0x17, 0x00, 0x18, 0x00, ++ 0x0b, 0x00, 0x02, 0x01, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x0d, 0x00, ++ 0x16, 0x00, 0x14, 0x04, 0x03, 0x08, 0x04, 0x04, 0x01, 0x05, 0x03, 0x08, ++ 0x05, 0x05, 0x01, 0x06, 0x03, 0x08, 0x06, 0x06, 0x01, 0x02, 0x01, 0x00, ++ 0x33, 0x00, 0x26, 0x00, 0x24, 0x00, 0x1d, 0x00, 0x20, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x02, 0x01, 0x01, 0x00, ++ 0x2b, 0x00, 0x09, 0x08, 0x03, 0x04, 0x03, 0x03, 0x03, 0x02, 0x03, 0x01}}, + }; + + for (const auto &t : kTests) { +@@ -4771,8 +4790,21 @@ TEST(SSLTest, ClientHello) { + constexpr size_t kRandomOffset = 1 + 2 + 2 + // record header + 1 + 3 + // handshake message header + 2; // client_version +- ASSERT_GE(client_hello.size(), kRandomOffset + SSL3_RANDOM_SIZE); +- OPENSSL_memset(client_hello.data() + kRandomOffset, 0, SSL3_RANDOM_SIZE); ++ ++ int pre = client_hello.size(); ++ if (t.max_version == TLS1_3_VERSION) { ++ ASSERT_GE(client_hello.size(), ++ kRandomOffset + SSL3_RANDOM_SIZE + 1 + SSL3_SESSION_ID_SIZE); ++ OPENSSL_memset(client_hello.data() + kRandomOffset, 0, ++ SSL3_RANDOM_SIZE + 1 + SSL3_SESSION_ID_SIZE); ++ // Jump to key share extension and zero out the key ++ OPENSSL_memset(client_hello.data() + 189, 0, 32); ++ } else { ++ ASSERT_GE(client_hello.size(), kRandomOffset + SSL3_RANDOM_SIZE); ++ OPENSSL_memset(client_hello.data() + kRandomOffset, 0, SSL3_RANDOM_SIZE); ++ } ++ int post = client_hello.size(); ++ ASSERT_EQ(pre, post); + + if (client_hello != t.expected) { + ADD_FAILURE() << "ClientHellos did not match."; diff --git a/packages/libcrypto/1020-1-byte-OOB-read-in-EVP_PKEY_asn1_find_str-length-cal.patch b/packages/libcrypto/1020-1-byte-OOB-read-in-EVP_PKEY_asn1_find_str-length-cal.patch new file mode 100644 index 000000000..00f69c1a2 --- /dev/null +++ b/packages/libcrypto/1020-1-byte-OOB-read-in-EVP_PKEY_asn1_find_str-length-cal.patch @@ -0,0 +1,78 @@ +From f40ac3b771794dda7129066b2fd89c01d698c92f Mon Sep 17 00:00:00 2001 +From: Sean McGrail <549813+skmcgrail@users.noreply.github.com> +Date: Thu, 29 Jan 2026 16:24:03 -0800 +Subject: [PATCH] 1-byte OOB read in EVP_PKEY_asn1_find_str length calculation + +We would like to thank Joshua Rogers (https://joshua.hu/) of AISLE Research Team (https://aisle.com/) for reporting this issue. + +(cherry picked from commit 921c6465918e2d118533199e6e2959f82483dde5) +--- + crypto/evp_extra/evp_asn1.c | 11 +++++------ + crypto/evp_extra/evp_test.cc | 11 +++++++++++ + crypto/evp_extra/internal.h | 2 ++ + 3 files changed, 18 insertions(+), 6 deletions(-) + +diff --git a/crypto/evp_extra/evp_asn1.c b/crypto/evp_extra/evp_asn1.c +index e394494cb..b3a7819db 100644 +--- a/crypto/evp_extra/evp_asn1.c ++++ b/crypto/evp_extra/evp_asn1.c +@@ -612,15 +612,14 @@ const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find_str(ENGINE **_pe, + for (size_t i = 0; i < (size_t)EVP_PKEY_asn1_get_count(); i++) { + const EVP_PKEY_ASN1_METHOD *ameth = EVP_PKEY_asn1_get0(i); + +- const size_t longest_pem_str_len = 10; // "DILITHIUM3" +- + const size_t pem_str_len = +- OPENSSL_strnlen(ameth->pem_str, longest_pem_str_len); ++ OPENSSL_strnlen(ameth->pem_str, MAX_PEM_STR_LEN); + + // OPENSSL_strncasecmp(a, b, n) compares up to index n-1 +- const size_t cmp_len = +- 1 + ((name_len < pem_str_len) ? name_len : pem_str_len); +- if (0 == OPENSSL_strncasecmp(ameth->pem_str, name, cmp_len)) { ++ if (name_len != pem_str_len) { ++ continue; ++ } ++ if (0 == OPENSSL_strncasecmp(ameth->pem_str, name, name_len)) { + return ameth; + } + } +diff --git a/crypto/evp_extra/evp_test.cc b/crypto/evp_extra/evp_test.cc +index f98bf73a7..4874a20c4 100644 +--- a/crypto/evp_extra/evp_test.cc ++++ b/crypto/evp_extra/evp_test.cc +@@ -61,6 +61,7 @@ + #include + + #include "../fipsmodule/evp/internal.h" ++#include "internal.h" + + OPENSSL_MSVC_PRAGMA(warning(push)) + OPENSSL_MSVC_PRAGMA(warning(disable: 4702)) +@@ -1528,3 +1529,13 @@ TEST(EVPTest, PKEY_asn1_find_str) { + ASSERT_FALSE(ameth); + ASSERT_FALSE(EVP_PKEY_asn1_get0_info(&pkey_id, &pkey_base_id, &pkey_flags, &pinfo, &pem_str, ameth)); + } ++ ++TEST(EVPTest, ASN1MethodCheckPemStrLengthInvariant) { ++ for (int i = 0; i < EVP_PKEY_asn1_get_count(); i++) { ++ SCOPED_TRACE(i); ++ const EVP_PKEY_ASN1_METHOD *method = EVP_PKEY_asn1_get0(i); ++ ASSERT_NE(method, nullptr); ++ ASSERT_NE(method->pem_str, nullptr); ++ EXPECT_LE(OPENSSL_strnlen(method->pem_str, strlen(method->pem_str)+1), MAX_PEM_STR_LEN); ++ } ++} +diff --git a/crypto/evp_extra/internal.h b/crypto/evp_extra/internal.h +index 85b4f123d..d04fe3ad3 100644 +--- a/crypto/evp_extra/internal.h ++++ b/crypto/evp_extra/internal.h +@@ -13,6 +13,8 @@ + #define PKCS8_VERSION_TWO 1 + #define ED25519_PUBLIC_KEY_OFFSET 32 + ++#define MAX_PEM_STR_LEN ((size_t)10) // "ED25519ph" ++ + typedef struct { + uint8_t pub[32]; + uint8_t priv[32]; diff --git a/packages/libcrypto/1021-pkcs8-cap-ciphertext-length-before-allocating-in-pkc.patch b/packages/libcrypto/1021-pkcs8-cap-ciphertext-length-before-allocating-in-pkc.patch new file mode 100644 index 000000000..74497f76a --- /dev/null +++ b/packages/libcrypto/1021-pkcs8-cap-ciphertext-length-before-allocating-in-pkc.patch @@ -0,0 +1,43 @@ +From 0702bf95b147b43fdbc70aa8897fac5a0b9b7026 Mon Sep 17 00:00:00 2001 +From: Sean McGrail <549813+skmcgrail@users.noreply.github.com> +Date: Thu, 29 Jan 2026 16:24:24 -0800 +Subject: [PATCH] pkcs8: cap ciphertext length before allocating in + pkcs8_pbe_decrypt +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +pkcs8_pbe_decrypt() allocates OPENSSL_malloc(in_len) where in_len is derived +from attacker-influenced ASN.1 OCTET STRING lengths. The existing INT_MAX +check only guards EVP_DecryptUpdate’s int parameter and occurs after the +allocation. + +We would like to thank Joshua Rogers (https://joshua.hu/) of AISLE Research Team (https://aisle.com/) for reporting this issue. + +(cherry picked from commit e17506cdbde19ce68e21681b2fb9581b1fe93037) +--- + crypto/pkcs8/pkcs8.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/crypto/pkcs8/pkcs8.c b/crypto/pkcs8/pkcs8.c +index 9cea6471c..431c6dd91 100644 +--- a/crypto/pkcs8/pkcs8.c ++++ b/crypto/pkcs8/pkcs8.c +@@ -389,13 +389,13 @@ int pkcs8_pbe_decrypt(uint8_t **out, size_t *out_len, CBS *algorithm, + goto err; + } + +- buf = OPENSSL_malloc(in_len); +- if (buf == NULL) { ++ if (in_len > INT_MAX) { ++ OPENSSL_PUT_ERROR(PKCS8, ERR_R_OVERFLOW); + goto err; + } + +- if (in_len > INT_MAX) { +- OPENSSL_PUT_ERROR(PKCS8, ERR_R_OVERFLOW); ++ buf = OPENSSL_malloc(in_len); ++ if (buf == NULL) { + goto err; + } + diff --git a/packages/libcrypto/1022-evp-disable-EVP_PKEY_derive-for-KEM-method.patch b/packages/libcrypto/1022-evp-disable-EVP_PKEY_derive-for-KEM-method.patch new file mode 100644 index 000000000..d6ce40238 --- /dev/null +++ b/packages/libcrypto/1022-evp-disable-EVP_PKEY_derive-for-KEM-method.patch @@ -0,0 +1,30 @@ +From 3b32113fb8230b569757299b3a7db85b3a17a3ac Mon Sep 17 00:00:00 2001 +From: Dusan Kostic +Date: Thu, 29 Jan 2026 16:25:17 -0800 +Subject: [PATCH] evp: disable EVP_PKEY_derive for KEM method + +EVP_PKEY_kem_pkey_meth incorrectly assigned out->derive to pkey_hkdf_derive, +causing ctx->data type confusion (KEM_PKEY_CTX vs HKDF_PKEY_CTX) when callers +invoke EVP_PKEY_derive on a KEM context. Set out->derive to NULL so the +operation fails as unsupported rather than dispatching into HKDF. + +We would like to thank Joshua Rogers (https://joshua.hu/) of AISLE Research Team (https://aisle.com/) for reporting this issue. + +(cherry picked from commit dcd1690320a362d5f0e0adae870a211431c9f7e9) +--- + crypto/fipsmodule/evp/p_kem.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/crypto/fipsmodule/evp/p_kem.c b/crypto/fipsmodule/evp/p_kem.c +index 9e696c516..586df26c3 100644 +--- a/crypto/fipsmodule/evp/p_kem.c ++++ b/crypto/fipsmodule/evp/p_kem.c +@@ -315,7 +315,7 @@ DEFINE_METHOD_FUNCTION(EVP_PKEY_METHOD, EVP_PKEY_kem_pkey_meth) { + out->verify_recover = NULL; + out->encrypt = NULL; + out->decrypt = NULL; +- out->derive = pkey_hkdf_derive; ++ out->derive = NULL; + out->paramgen = NULL; + out->ctrl = NULL; + out->ctrl_str = NULL; diff --git a/packages/libcrypto/1023-reject-zero-sized-digests-in-HKDF-EVP_PKEY.patch b/packages/libcrypto/1023-reject-zero-sized-digests-in-HKDF-EVP_PKEY.patch new file mode 100644 index 000000000..cb678da2b --- /dev/null +++ b/packages/libcrypto/1023-reject-zero-sized-digests-in-HKDF-EVP_PKEY.patch @@ -0,0 +1,66 @@ +From 6ff22e779b23744df824d6e3368b7893d38227cf Mon Sep 17 00:00:00 2001 +From: Dusan Kostic +Date: Thu, 29 Jan 2026 16:25:47 -0800 +Subject: [PATCH] reject zero-sized digests in HKDF EVP_PKEY + +Reject digests with EVP_MD_size <= 0 when configuring HKDF and when deriving, +preventing divide-by-zero in HKDF_expand if an XOF digest is selected. + +We would like to thank Joshua Rogers (https://joshua.hu/) of AISLE Research Team (https://aisle.com/) for reporting this issue. + +(cherry picked from commit 8a43348a53b09abe017e00351f8963b6d1c76543) +--- + crypto/fipsmodule/evp/p_hkdf.c | 10 +++++++++- + crypto/fipsmodule/hkdf/hkdf_test.cc | 14 ++++++++++++++ + 2 files changed, 23 insertions(+), 1 deletion(-) + +diff --git a/crypto/fipsmodule/evp/p_hkdf.c b/crypto/fipsmodule/evp/p_hkdf.c +index 69a8552e6..17a3caa6e 100644 +--- a/crypto/fipsmodule/evp/p_hkdf.c ++++ b/crypto/fipsmodule/evp/p_hkdf.c +@@ -100,6 +100,10 @@ static int pkey_hkdf_derive(EVP_PKEY_CTX *ctx, uint8_t *out, size_t *out_len) { + OPENSSL_PUT_ERROR(EVP, EVP_R_MISSING_PARAMETERS); + return 0; + } ++ if (EVP_MD_size(hctx->md) <= 0) { ++ OPENSSL_PUT_ERROR(EVP, EVP_R_INVALID_OPERATION); ++ return 0; ++ } + if (hctx->key_len == 0) { + OPENSSL_PUT_ERROR(EVP, EVP_R_NO_KEY_SET); + return 0; +@@ -148,7 +152,11 @@ static int pkey_hkdf_ctrl(EVP_PKEY_CTX *ctx, int type, int p1, void *p2) { + hctx->mode = p1; + return 1; + case EVP_PKEY_CTRL_HKDF_MD: +- hctx->md = p2; ++ if (p2 == NULL || EVP_MD_size((const EVP_MD *)p2) <= 0) { ++ OPENSSL_PUT_ERROR(EVP, EVP_R_INVALID_OPERATION); ++ return 0; ++ } ++ hctx->md = (const EVP_MD *)p2; + return 1; + case EVP_PKEY_CTRL_HKDF_KEY: { + const CBS *key = p2; +diff --git a/crypto/fipsmodule/hkdf/hkdf_test.cc b/crypto/fipsmodule/hkdf/hkdf_test.cc +index a61ac024f..3b168a46b 100644 +--- a/crypto/fipsmodule/hkdf/hkdf_test.cc ++++ b/crypto/fipsmodule/hkdf/hkdf_test.cc +@@ -579,3 +579,17 @@ static void RunTest(FileTest *t) + TEST(HKDFTest, HKDFExpandCAVP) { + FileTestGTest("crypto/evp_extra/kbkdf_expand_tests.txt", RunTest); + } ++ ++TEST(HKDFTest, EVP_PKEY_HKDF_RejectsXOF) { ++ bssl::UniquePtr ctx( ++ EVP_PKEY_CTX_new_id(EVP_PKEY_HKDF, nullptr)); ++ ASSERT_TRUE(ctx); ++ ASSERT_TRUE(EVP_PKEY_derive_init(ctx.get())); ++ ++ // XOF digests should be rejected when setting the digest. ++ EXPECT_FALSE(EVP_PKEY_CTX_set_hkdf_md(ctx.get(), EVP_shake128())); ++ EXPECT_FALSE(EVP_PKEY_CTX_set_hkdf_md(ctx.get(), EVP_shake256())); ++ ++ // Non-XOF digests should succeed. ++ EXPECT_TRUE(EVP_PKEY_CTX_set_hkdf_md(ctx.get(), EVP_sha256())); ++} diff --git a/packages/libcrypto/1024-Reject-XOF-digests-in-DH_compute_key_hashed.patch b/packages/libcrypto/1024-Reject-XOF-digests-in-DH_compute_key_hashed.patch new file mode 100644 index 000000000..d16603e6b --- /dev/null +++ b/packages/libcrypto/1024-Reject-XOF-digests-in-DH_compute_key_hashed.patch @@ -0,0 +1,94 @@ +From 9d3a632c9e3cd35deb9cea94226fa20970e3d71c Mon Sep 17 00:00:00 2001 +From: Dusan Kostic +Date: Fri, 30 Jan 2026 10:00:23 -0800 +Subject: [PATCH] Reject XOF digests in DH_compute_key_hashed + +DH_compute_key_hashed passes an uninitialized out_len to EVP_Digest. +For XOF digests, EVP_DigestFinalXOF interprets *out_size as an input length, +which can cause an out-of-bounds write to the caller-provided buffer. +Reject XOF digests and initialize out_len to the fixed digest size. + +We would like to thank Joshua Rogers (https://joshua.hu/) of AISLE Research Team (https://aisle.com/) for reporting this issue. + +(cherry picked from commit 110f184623b527439b14f3ad9a496191d54c32dc) +--- + crypto/dh_extra/dh_test.cc | 24 ++++++++++++++++++++++++ + crypto/fipsmodule/dh/dh.c | 9 +++++++-- + 2 files changed, 31 insertions(+), 2 deletions(-) + +diff --git a/crypto/dh_extra/dh_test.cc b/crypto/dh_extra/dh_test.cc +index b9c1892aa..a1ac3c580 100644 +--- a/crypto/dh_extra/dh_test.cc ++++ b/crypto/dh_extra/dh_test.cc +@@ -67,6 +67,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -76,6 +77,29 @@ + #include "openssl/pem.h" + + ++TEST(DHTest, ComputeKeyHashedRejectsXOF) { ++ bssl::UniquePtr a(DH_new_by_nid(NID_ffdhe2048)); ++ ASSERT_TRUE(a); ++ bssl::UniquePtr b(DHparams_dup(a.get())); ++ ASSERT_TRUE(b); ++ ASSERT_TRUE(DH_generate_key(a.get())); ++ ASSERT_TRUE(DH_generate_key(b.get())); ++ ++ uint8_t out[64]; ++ size_t out_len = 0; ++ ++ // XOF digests should be rejected. ++ EXPECT_FALSE(DH_compute_key_hashed(a.get(), out, &out_len, sizeof(out), ++ DH_get0_pub_key(b.get()), EVP_shake128())); ++ EXPECT_FALSE(DH_compute_key_hashed(a.get(), out, &out_len, sizeof(out), ++ DH_get0_pub_key(b.get()), EVP_shake256())); ++ ++ // Non-XOF digests should succeed. ++ EXPECT_TRUE(DH_compute_key_hashed(a.get(), out, &out_len, sizeof(out), ++ DH_get0_pub_key(b.get()), EVP_sha256())); ++ EXPECT_EQ(out_len, 32u); ++} ++ + TEST(DHTest, Basic) { + bssl::UniquePtr a(DH_new()); + ASSERT_TRUE(a); +diff --git a/crypto/fipsmodule/dh/dh.c b/crypto/fipsmodule/dh/dh.c +index 3d0f4543e..5b958a6bd 100644 +--- a/crypto/fipsmodule/dh/dh.c ++++ b/crypto/fipsmodule/dh/dh.c +@@ -55,6 +55,7 @@ + * [including the GNU Public Licence.] */ + + #include ++#include + + #include + +@@ -447,7 +448,11 @@ int DH_compute_key_hashed(DH *dh, uint8_t *out, size_t *out_len, + *out_len = SIZE_MAX; + + const size_t digest_len = EVP_MD_size(digest); +- if (digest_len > max_out_len) { ++ if (digest_len == 0 || digest_len > max_out_len ++#if SIZE_MAX > UINT_MAX ++ || digest_len > UINT_MAX ++#endif ++ ) { + return 0; + } + +@@ -458,7 +463,7 @@ int DH_compute_key_hashed(DH *dh, uint8_t *out, size_t *out_len, + int ret = 0; + const size_t dh_len = DH_size(dh); + uint8_t *shared_bytes = OPENSSL_malloc(dh_len); +- unsigned out_len_unsigned; ++ unsigned out_len_unsigned = (unsigned)digest_len; + if (!shared_bytes || + // SP 800-56A is ambiguous about whether the output should be padded prior + // to revision three. But revision three, section C.1, awkwardly specifies diff --git a/packages/libcrypto/1025-Prepare-v3.2.0-3050.patch b/packages/libcrypto/1025-Prepare-v3.2.0-3050.patch new file mode 100644 index 000000000..827b47dcf --- /dev/null +++ b/packages/libcrypto/1025-Prepare-v3.2.0-3050.patch @@ -0,0 +1,45 @@ +From 9213c047cc228a4c25eb1ff13bab5e658b6a3f9d Mon Sep 17 00:00:00 2001 +From: torben-hansen <50673096+torben-hansen@users.noreply.github.com> +Date: Fri, 27 Feb 2026 12:59:14 -0800 +Subject: [PATCH] Prepare v3.2.0 (#3050) + +Prepare release AWS-LC FIPSv3 v3.2.0 +--- + crypto/fipsmodule/service_indicator/service_indicator_test.cc | 4 ++-- + include/openssl/base.h | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/crypto/fipsmodule/service_indicator/service_indicator_test.cc b/crypto/fipsmodule/service_indicator/service_indicator_test.cc +index 2298fe9cb..58f7a8dc6 100644 +--- a/crypto/fipsmodule/service_indicator/service_indicator_test.cc ++++ b/crypto/fipsmodule/service_indicator/service_indicator_test.cc +@@ -5254,7 +5254,7 @@ TEST(ServiceIndicatorTest, ED25519SigGenVerify) { + // Since this is running in FIPS mode it should end in FIPS + // Update this when the AWS-LC version number is modified + TEST(ServiceIndicatorTest, AWSLCVersionString) { +- ASSERT_STREQ(awslc_version_string(), "AWS-LC FIPS 3.1.0"); ++ ASSERT_STREQ(awslc_version_string(), "AWS-LC FIPS 3.2.0"); + } + + #else +@@ -5297,6 +5297,6 @@ TEST(ServiceIndicatorTest, BasicTest) { + // Since this is not running in FIPS mode it shouldn't end in FIPS + // Update this when the AWS-LC version number is modified + TEST(ServiceIndicatorTest, AWSLCVersionString) { +- ASSERT_STREQ(awslc_version_string(), "AWS-LC 3.1.0"); ++ ASSERT_STREQ(awslc_version_string(), "AWS-LC 3.2.0"); + } + #endif // AWSLC_FIPS +diff --git a/include/openssl/base.h b/include/openssl/base.h +index c7538796e..e2ee1d5a8 100644 +--- a/include/openssl/base.h ++++ b/include/openssl/base.h +@@ -122,7 +122,7 @@ extern "C" { + // ServiceIndicatorTest.AWSLCVersionString + // Note: there are two versions of this test. Only one test is compiled + // depending on FIPS mode. +-#define AWSLC_VERSION_NUMBER_STRING "3.1.0" ++#define AWSLC_VERSION_NUMBER_STRING "3.2.0" + + #if defined(BORINGSSL_SHARED_LIBRARY) + diff --git a/packages/libcrypto/1026-Use-CRYPTO_memcmp-instead-of-OPENSSL_memcmp-for-tag-.patch b/packages/libcrypto/1026-Use-CRYPTO_memcmp-instead-of-OPENSSL_memcmp-for-tag-.patch new file mode 100644 index 000000000..829f576a6 --- /dev/null +++ b/packages/libcrypto/1026-Use-CRYPTO_memcmp-instead-of-OPENSSL_memcmp-for-tag-.patch @@ -0,0 +1,24 @@ +From e50a5f29ee416a7c99be4e72957e8f96aa51dbb9 Mon Sep 17 00:00:00 2001 +From: torben-hansen <50673096+torben-hansen@users.noreply.github.com> +Date: Mon, 2 Mar 2026 11:49:45 -0800 +Subject: [PATCH] Use CRYPTO_memcmp instead of OPENSSL_memcmp for tag + verification (#3062) + +Use CRYPTO_memcmp instead of OPENSSL_memcmp for tag verification +--- + crypto/fipsmodule/cipher/e_aesccm.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/crypto/fipsmodule/cipher/e_aesccm.c b/crypto/fipsmodule/cipher/e_aesccm.c +index 4c0cd4a32..90ea49f96 100644 +--- a/crypto/fipsmodule/cipher/e_aesccm.c ++++ b/crypto/fipsmodule/cipher/e_aesccm.c +@@ -629,7 +629,7 @@ static int cipher_aes_ccm_cipher(EVP_CIPHER_CTX *ctx, uint8_t *out, + return -1; + } + // Validate the tag and invalidate the output if it doesn't match. +- if (OPENSSL_memcmp(cipher_ctx->tag, computed_tag, cipher_ctx->M)) { ++ if (CRYPTO_memcmp(cipher_ctx->tag, computed_tag, cipher_ctx->M)) { + OPENSSL_cleanse(out, len); + return -1; + } diff --git a/packages/libcrypto/Cargo.toml b/packages/libcrypto/Cargo.toml index 71afbfdbc..1b176d509 100644 --- a/packages/libcrypto/Cargo.toml +++ b/packages/libcrypto/Cargo.toml @@ -15,5 +15,9 @@ releases-url = "https://github.com/aws/aws-lc/commits/fips-2024-09-27/" url = "https://github.com/aws/aws-lc/archive/AWS-LC-FIPS-3.0.0/aws-lc-AWS-LC-FIPS-3.0.0.tar.gz" sha512 = "d5d951a7aeba2986503249c02ada8fef36d0022d894ba3095bb9619155fffc66d4328028689327fefe28cfb66674123645d70153c83110e6f3c9dfe6d79c5f26" +[[package.metadata.build-package.external-files]] +url = "https://cache.bottlerocket.aws/1017-Add-CTR-DRBG-derivation-function-2863.patch/cbe2202c62329388e82e0ceb9943b013c35e4d0fa5dea2c029c7e42f61f259cd4947b5dfb33ae32348eff9b91597b89a78a945d5d3439623cea85d30bc4d4d89/1017-Add-CTR-DRBG-derivation-function-2863.patch" +sha512 = "cbe2202c62329388e82e0ceb9943b013c35e4d0fa5dea2c029c7e42f61f259cd4947b5dfb33ae32348eff9b91597b89a78a945d5d3439623cea85d30bc4d4d89" + [build-dependencies] glibc = { path = "../glibc" } diff --git a/packages/libcrypto/libcrypto.spec b/packages/libcrypto/libcrypto.spec index a8267b44a..6f58f8c89 100644 --- a/packages/libcrypto/libcrypto.spec +++ b/packages/libcrypto/libcrypto.spec @@ -32,6 +32,16 @@ Patch1013: 1013-cherry-pick-Add-back-X509_STORE_get_verify_cb-and-X5.patch Patch1014: 1014-Cherry-pick-TLS-transfer-serialization-changes-to-FI.patch Patch1015: 1015-cherry-pick-for-2024-fips-Fix-RSAZABI-test-and-enabl.patch Patch1016: 1016-FIPS-2024-CHERRY_PICK-Offer-P521-for-signature_algor.patch +Patch1017: 1017-Add-CTR-DRBG-derivation-function-2863.patch +Patch1018: 1018-Prepare-FIPS-3.1.0-release-2878.patch +Patch1019: 1019-Cherry-pick-2024-Offer-P521-for-signature_algorithms.patch +Patch1020: 1020-1-byte-OOB-read-in-EVP_PKEY_asn1_find_str-length-cal.patch +Patch1021: 1021-pkcs8-cap-ciphertext-length-before-allocating-in-pkc.patch +Patch1022: 1022-evp-disable-EVP_PKEY_derive-for-KEM-method.patch +Patch1023: 1023-reject-zero-sized-digests-in-HKDF-EVP_PKEY.patch +Patch1024: 1024-Reject-XOF-digests-in-DH_compute_key_hashed.patch +Patch1025: 1025-Prepare-v3.2.0-3050.patch +Patch1026: 1026-Use-CRYPTO_memcmp-instead-of-OPENSSL_memcmp-for-tag-.patch BuildRequires: %{_cross_os}glibc-devel Requires: %{_cross_os}glibc From 60a47a6c4bc8c2ff560ffc52646fa3547258e1ee Mon Sep 17 00:00:00 2001 From: KCSesh Date: Fri, 13 Mar 2026 21:09:11 +0000 Subject: [PATCH 04/13] libcrypto: patch C23 compatibility as implemented in glibc-2.43 Signed-off-by: KCSesh --- ...ibility-as-implemented-in-glibc-2.43.patch | 30 +++++++++++++++++++ packages/libcrypto/libcrypto.spec | 1 + 2 files changed, 31 insertions(+) create mode 100644 packages/libcrypto/9001-fix-memchr-const-correctness-for-C23-compatibility-as-implemented-in-glibc-2.43.patch diff --git a/packages/libcrypto/9001-fix-memchr-const-correctness-for-C23-compatibility-as-implemented-in-glibc-2.43.patch b/packages/libcrypto/9001-fix-memchr-const-correctness-for-C23-compatibility-as-implemented-in-glibc-2.43.patch new file mode 100644 index 000000000..7c5a2e113 --- /dev/null +++ b/packages/libcrypto/9001-fix-memchr-const-correctness-for-C23-compatibility-as-implemented-in-glibc-2.43.patch @@ -0,0 +1,30 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: KCSesh +Date: Mon, 9 Mar 2026 18:30:00 +0000 +Subject: [PATCH] fix memchr const-correctness for C23 compatibility as + implemented in glibc 2.43 + +glibc 2.43 implements C23 type-generic memchr, which returns +const void * when given const void * input. This exposes a +type mismatch in the C version of OPENSSL_memchr, which takes +const void * but is declared to return void *. + +Signed-off-by: KCSesh +--- + crypto/internal.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/crypto/internal.h b/crypto/internal.h +index 891da29..1f4c3b9 100644 +--- a/crypto/internal.h ++++ b/crypto/internal.h +@@ -918,7 +918,7 @@ static inline void *OPENSSL_memchr(const void *s, int c, size_t n) { + return NULL; + } + +- return memchr(s, c, n); ++ return (void *)memchr(s, c, n); + } + + #endif // __cplusplus + diff --git a/packages/libcrypto/libcrypto.spec b/packages/libcrypto/libcrypto.spec index 6f58f8c89..8510f55dd 100644 --- a/packages/libcrypto/libcrypto.spec +++ b/packages/libcrypto/libcrypto.spec @@ -42,6 +42,7 @@ Patch1023: 1023-reject-zero-sized-digests-in-HKDF-EVP_PKEY.patch Patch1024: 1024-Reject-XOF-digests-in-DH_compute_key_hashed.patch Patch1025: 1025-Prepare-v3.2.0-3050.patch Patch1026: 1026-Use-CRYPTO_memcmp-instead-of-OPENSSL_memcmp-for-tag-.patch +Patch9001: 9001-fix-memchr-const-correctness-for-C23-compatibility-as-implemented-in-glibc-2.43.patch BuildRequires: %{_cross_os}glibc-devel Requires: %{_cross_os}glibc From 470434ca30dc6a25952ec9881cceaa33ab2d0b33 Mon Sep 17 00:00:00 2001 From: KCSesh Date: Thu, 12 Mar 2026 00:57:32 +0000 Subject: [PATCH 05/13] procps: update to 4.0.6 Signed-off-by: KCSesh --- ...y-internal-expand-buffer-for-stat_fd.patch | 41 -- .../procps/1001-check-for-sys-pidfd.h.patch | 45 -- ...ibility-as-implemented-in-glibc-2.43.patch | 396 ++++++++++++++++++ packages/procps/Cargo.toml | 4 +- packages/procps/procps.spec | 8 +- 5 files changed, 400 insertions(+), 94 deletions(-) delete mode 100644 packages/procps/0001-library-internal-expand-buffer-for-stat_fd.patch delete mode 100644 packages/procps/1001-check-for-sys-pidfd.h.patch create mode 100644 packages/procps/1001-fix-const-correctness-for-C23-compatibility-as-implemented-in-glibc-2.43.patch diff --git a/packages/procps/0001-library-internal-expand-buffer-for-stat_fd.patch b/packages/procps/0001-library-internal-expand-buffer-for-stat_fd.patch deleted file mode 100644 index 72122bee2..000000000 --- a/packages/procps/0001-library-internal-expand-buffer-for-stat_fd.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 9902b5ba4d09d4ba5dbdf81e9dc1f56c47e04e05 Mon Sep 17 00:00:00 2001 -From: Craig Small -Date: Mon, 17 Mar 2025 18:49:45 +1100 -Subject: [PATCH] library: internal expand buffer for stat_fd - -The inline function stat_fd is given a buffer up to PROCPATHLEN -size and then it snprintfs this plus 3 more characters into the -same length buffer. Make the second buffer 3 characters long so -there can be no truncation (and complaints from the compilier) - -library/readproc.c: In function 'simple_readproc': -library/readproc.c:1184:35: warning: '/fd' directive output may be truncated writing 3 bytes into a region of size between 1 and 64 [-Wformat-truncation=] - 1184 | snprintf(buf, sizeof(buf), "%s/fd", path); - | ^~~ -In function 'stat_fd', - inlined from 'simple_readproc' at library/readproc.c:1339:9: -library/readproc.c:1184:5: note: 'snprintf' output between 4 and 67 bytes into a destination of size 64 - 1184 | snprintf(buf, sizeof(buf), "%s/fd", path); - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Signed-off-by: Craig Small ---- - library/readproc.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/library/readproc.c b/library/readproc.c -index 1197a8b2..b4fdd63d 100644 ---- a/library/readproc.c -+++ b/library/readproc.c -@@ -1177,7 +1177,7 @@ static void autogroup_fill (const char *path, proc_t *p) { - - - static inline void stat_fd (const char *path, proc_t *p) { -- char buf[PROCPATHLEN]; -+ char buf[PROCPATHLEN+3]; // +"/fd" - struct stat sb; - - p->fds = 0; --- -2.49.0 - diff --git a/packages/procps/1001-check-for-sys-pidfd.h.patch b/packages/procps/1001-check-for-sys-pidfd.h.patch deleted file mode 100644 index e422378c4..000000000 --- a/packages/procps/1001-check-for-sys-pidfd.h.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 00cf66fbf6b138df141b1a90d6fd4209c194d8c9 Mon Sep 17 00:00:00 2001 -From: Ben Cressey -Date: Sun, 18 May 2025 19:15:58 +0000 -Subject: [PATCH] check for sys/pidfd.h - -In newer versions of glibc, this header defines pidfd_open, and must -be included to avoid an implicit function definition warning. - -Signed-off-by: Ben Cressey ---- - configure.ac | 2 +- - src/pgrep.c | 4 ++++ - 2 files changed, 5 insertions(+), 1 deletion(-) - -diff --git a/configure.ac b/configure.ac -index 1e984b12..8d2d136f 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -64,7 +64,7 @@ PROCPS_PROG_PO4A - - # Checks for header files. - AC_HEADER_MAJOR --AC_CHECK_HEADERS([arpa/inet.h fcntl.h float.h langinfo.h libintl.h limits.h locale.h ncursesw/ncurses.h stdint.h stdio_ext.h stdlib.h string.h sys/file.h sys/ioctl.h sys/param.h sys/time.h termios.h unistd.h utmp.h utmpx.h values.h wchar.h wctype.h]) -+AC_CHECK_HEADERS([arpa/inet.h fcntl.h float.h langinfo.h libintl.h limits.h locale.h ncursesw/ncurses.h stdint.h stdio_ext.h stdlib.h string.h sys/file.h sys/ioctl.h sys/param.h sys/pidfd.h sys/time.h termios.h unistd.h utmp.h utmpx.h values.h wchar.h wctype.h]) - - # Checks for typedefs, structures, and compiler characteristics. - AC_CHECK_HEADER_STDBOOL -diff --git a/src/pgrep.c b/src/pgrep.c -index 2c6b06b8..6ea60989 100644 ---- a/src/pgrep.c -+++ b/src/pgrep.c -@@ -878,6 +878,10 @@ static int pidfd_open (pid_t pid, unsigned int flags) - { - return syscall(__NR_pidfd_open, pid, flags); - } -+#else -+#ifdef HAVE_SYS_PIDFD_H -+#include -+#endif - #endif - - static void parse_opts (int argc, char **argv) --- -2.49.0 - diff --git a/packages/procps/1001-fix-const-correctness-for-C23-compatibility-as-implemented-in-glibc-2.43.patch b/packages/procps/1001-fix-const-correctness-for-C23-compatibility-as-implemented-in-glibc-2.43.patch new file mode 100644 index 000000000..b4117ef5f --- /dev/null +++ b/packages/procps/1001-fix-const-correctness-for-C23-compatibility-as-implemented-in-glibc-2.43.patch @@ -0,0 +1,396 @@ +From da5f97554ea6c8aaccbc682842695215ff2583f8 Mon Sep 17 00:00:00 2001 +From: KCSesh +Date: Tue, 10 Mar 2026 05:49:10 +0000 +Subject: [PATCH] fix const-correctness for C23 compatibility as implemented + in glibc 2.43 + +glibc 2.43 implements C23 type-generic functions (strchr, strstr, memchr, +strrchr, bsearch) that return const-qualified pointers when given +const-qualified input. Add const qualifiers to all affected call sites. +--- + library/devname.c | 4 ++-- + library/meminfo.c | 4 ++-- + library/readproc.c | 20 ++++++++++---------- + library/stat.c | 3 ++- + library/vmstat.c | 4 ++-- + src/pgrep.c | 2 +- + src/pmap.c | 12 ++++++------ + src/ps/display.c | 2 +- + src/ps/global.c | 2 +- + src/ps/parser.c | 2 +- + src/sysctl.c | 4 ++-- + src/top/top.c | 30 +++++++++++++++++------------- + 12 files changed, 47 insertions(+), 42 deletions(-) + +diff --git a/library/devname.c b/library/devname.c +index 6a23653..330de6f 100644 +--- a/library/devname.c ++++ b/library/devname.c +@@ -73,7 +73,7 @@ static void load_drivers(void){ + if(bytes == -1) goto fail; + buf[bytes] = '\0'; + p = buf; +- while(( p = strstr(p, " /dev/") )){ // " /dev/" is the second column ++ while(( p = (char *)strstr(p, " /dev/") )){ // " /dev/" is the second column + tty_map_node *tmn; + size_t len; + char *end; +@@ -315,7 +315,7 @@ static int ctty_name(char *restrict const buf, int pid) { + return 0; + } + fclose (fp); +- lf = strchr (buf, '\n'); ++ lf = (char *)strchr (buf, '\n'); + if (lf) + *lf = (lf == buf ? '?' : '\0'); + return 1; +diff --git a/library/meminfo.c b/library/meminfo.c +index 59d0e0b..4f3ecab 100644 +--- a/library/meminfo.c ++++ b/library/meminfo.c +@@ -707,7 +707,7 @@ static int meminfo_read_failed ( + static __thread ENTRY e; // keep coverity off our backs (e.data) + ENTRY *ep; + +- if (!(tail = strchr(head, ':'))) ++ if (!(tail = (char *)strchr(head, ':'))) + break; + *tail = '\0'; + valptr = NULL; +@@ -719,7 +719,7 @@ static int meminfo_read_failed ( + if (valptr) + *valptr = strtoul(head, NULL, 10); + +- if (!(tail = strchr(head, '\n'))) ++ if (!(tail = (char *)strchr(head, '\n'))) + break; + head = tail + 1; + } +diff --git a/library/readproc.c b/library/readproc.c +index a7f7905..ffc3d20 100644 +--- a/library/readproc.c ++++ b/library/readproc.c +@@ -277,7 +277,7 @@ ENTER(0x220); + status_table_struct entry; + + // advance to next line +- S = strchr(S, '\n'); ++ S = (char *)strchr(S, '\n'); + if(!S) break; // if no newline + S++; + +@@ -608,7 +608,7 @@ ENTER(0x160); + P->sched = -1; + P->nlwp = 0; + +- S = strchr(S, '('); ++ S = (char *)strchr(S, '('); + if (!S) return 0; + S++; + tmp = strrchr(S, ')'); +@@ -1040,9 +1040,9 @@ char *lxc_containers (struct utlbuf_s *ub) { + const char *delim; + char *p1; + +- if ((p1 = strstr(ub->buf, (delim = lxc_delm1))) +- || ((p1 = strstr(ub->buf, (delim = lxc_delm2))) +- || ((p1 = strstr(ub->buf, (delim = lxc_delm3)))))) { ++ if ((p1 = (char *)strstr(ub->buf, (delim = lxc_delm1))) ++ || ((p1 = (char *)strstr(ub->buf, (delim = lxc_delm2))) ++ || ((p1 = (char *)strstr(ub->buf, (delim = lxc_delm3)))))) { + int delim_len = strlen(delim); + char *p2; + +@@ -1050,9 +1050,9 @@ char *lxc_containers (struct utlbuf_s *ub) { + *p2 = '\0'; + do { // deal with nested containers + p2 = p1 + delim_len; +- p1 = strstr(p2, delim); ++ p1 = (char *)strstr(p2, delim); + } while (p1); +- if ((p1 = strchr(p2, '/'))) // isolate name only substring ++ if ((p1 = (char *)strchr(p2, '/'))) // isolate name only substring + *p1 = '\0'; + while (ele) { // have we already seen a name + if (!strcmp(ele->name, p2)) +@@ -1109,8 +1109,8 @@ struct docker_ids *docker_containers (struct utlbuf_s *ub) { + const char *delim; + char *p1; + +- if ((p1 = strstr(ub->buf, (delim = docker_delm1))) +- || ((p1 = strstr(ub->buf, (delim = docker_delm2))))) { ++ if ((p1 = (char *)strstr(ub->buf, (delim = docker_delm1))) ++ || ((p1 = (char *)strstr(ub->buf, (delim = docker_delm2))))) { + int delim_len = strlen(delim); + char *p2; + +@@ -1579,7 +1579,7 @@ static int listed_nextpid (PROCTAB *PT, proc_t *p) { + (plus we need not parse the whole thing like status2proc)! | */ + + if (file2str(PT->pidfd, "status", &ub) != -1) { +- char *str = strstr(ub.buf, "Tgid:"); ++ const char *str = strstr(ub.buf, "Tgid:"); + if (str) + p->tgid = atoi(str + 5); // this tgid is the proper one | + } +diff --git a/library/stat.c b/library/stat.c +index 1f76ef3..bf7056c 100644 +--- a/library/stat.c ++++ b/library/stat.c +@@ -754,7 +754,8 @@ static int stat_read_failed ( + struct stat_info *info) + { + struct hist_tic *sum_ptr, *cpu_ptr; +- char *bp, *b; ++ char *bp; ++ const char *b; + int i, rc, num, tot_read; + unsigned long long llnum; + int refresh_cores = 0; +diff --git a/library/vmstat.c b/library/vmstat.c +index 905bf3d..2305b0e 100644 +--- a/library/vmstat.c ++++ b/library/vmstat.c +@@ -1208,7 +1208,7 @@ static int vmstat_read_failed ( + static __thread ENTRY e; // keep coverity off our backs (e.data) + ENTRY *ep; + +- if (!(tail = strchr(head, ' '))) ++ if (!(tail = (char *)strchr(head, ' '))) + break; + *tail = '\0'; + valptr = NULL; +@@ -1220,7 +1220,7 @@ static int vmstat_read_failed ( + if (valptr) + *valptr = strtoul(head, NULL, 10); + +- if (!(tail = strchr(head, '\n'))) ++ if (!(tail = (char *)strchr(head, '\n'))) + break; + head = tail + 1; + } +diff --git a/src/pgrep.c b/src/pgrep.c +index a82d9c9..9a01e8b 100644 +--- a/src/pgrep.c ++++ b/src/pgrep.c +@@ -286,7 +286,7 @@ static struct el *split_list (const char *restrict str, int (*convert)(const cha + /* add 1 because slot zero is a count */ + list = xrealloc (list, (1 + size) * sizeof *list); + } +- sep_pos = strchr (ptr, ','); ++ sep_pos = (char *)strchr (ptr, ','); + if (sep_pos) + *sep_pos = 0; + /* Use ++i instead of i++ because slot zero is a count */ +diff --git a/src/pmap.c b/src/pmap.c +index b824284..6cdf47f 100644 +--- a/src/pmap.c ++++ b/src/pmap.c +@@ -191,7 +191,7 @@ static void discover_shm_minor(void) + if (sscanf(mapbuf_b, "%lx-%lx %31s %llx %x:%x %llu", &start, + &end, perms, &file_offset, &dev_major, &dev_minor, &inode) < 6) + continue; +- tmp = strchr(mapbuf_b, '\n'); ++ tmp = (char *)strchr(mapbuf_b, '\n'); + if (tmp) + *tmp = '\0'; + tmp = mapbuf_b; +@@ -241,7 +241,7 @@ static const char *mapping_name(struct pids_stack *p, unsigned long addr, + return shmbuf; + } + +- cp = strrchr(mapbuf_b, '/'); ++ cp = (char *)strrchr(mapbuf_b, '/'); + if (cp) { + if (showpath) + return strchr(mapbuf_b, '/'); +@@ -249,8 +249,8 @@ static const char *mapping_name(struct pids_stack *p, unsigned long addr, + } + + if (use_kname +- && (cp = strrchr(mapbuf_b, ']')) && cp[1] == '\0' +- && (cp = strchr(mapbuf_b, '['))) ++ && (cp = (char *)strrchr(mapbuf_b, ']')) && cp[1] == '\0' ++ && (cp = (char *)strchr(mapbuf_b, '['))) + return cp; + + cp = _(" [ anon ]"); +@@ -670,7 +670,7 @@ static int one_proc (struct pids_stack *p, unsigned use_kname) + if (range_high < start_To_Avoid_Warning) + break; + +- tmp = strchr(mapbuf, '\n'); ++ tmp = (char *)strchr(mapbuf, '\n'); + if (tmp) + *tmp = '\0'; + tmp = mapbuf; +@@ -787,7 +787,7 @@ static void range_arguments(const char *optarg) + (optarg?optarg:"(null)")); + } + arg1 = buf; +- arg2 = strchr(arg1, ','); ++ arg2 = (char *)strchr(arg1, ','); + if (arg2) + *arg2++ = '\0'; + else +diff --git a/src/ps/display.c b/src/ps/display.c +index 5edd73d..0219ee9 100644 +--- a/src/ps/display.c ++++ b/src/ps/display.c +@@ -646,7 +646,7 @@ static void finalize_stacks (void) + /***** no comment */ + int main(int argc, char *argv[]){ + atexit(close_stdout); +- myname = strrchr(*argv, '/'); ++ myname = (char *)strrchr(*argv, '/'); + if (myname) ++myname; else myname = *argv; + Hertz = procps_hertz_get(); + +diff --git a/src/ps/global.c b/src/ps/global.c +index 0e47c49..b4734e3 100644 +--- a/src/ps/global.c ++++ b/src/ps/global.c +@@ -312,7 +312,7 @@ static const char *set_personality(void){ + size_t sl; + char buf[16]; + personality_table_struct findme = { buf, NULL}; +- personality_table_struct *found; ++ const personality_table_struct *found; + static const personality_table_struct personality_table[] = { + {"390", &&case_390}, + {"aix", &&case_aix}, +diff --git a/src/ps/parser.c b/src/ps/parser.c +index caa46fe..174ba67 100644 +--- a/src/ps/parser.c ++++ b/src/ps/parser.c +@@ -813,7 +813,7 @@ static const char *parse_gnu_option(void){ + size_t sl; + char buf[16]; + gnu_table_struct findme = { buf, NULL}; +- gnu_table_struct *found; ++ const gnu_table_struct *found; + static const gnu_table_struct gnu_table[] = { + {"Group", &&case_Group}, /* rgid */ + {"User", &&case_User}, /* ruid */ +diff --git a/src/sysctl.c b/src/sysctl.c +index d04d5e3..ecbfcd0 100644 +--- a/src/sysctl.c ++++ b/src/sysctl.c +@@ -434,7 +434,7 @@ static int ReadSetting(const char *restrict const name) + putchar('\n'); + } else { + if (!PrintNewline) { +- nlptr = strchr(iobuf, '\n'); ++ nlptr = (char *)strchr(iobuf, '\n'); + if (nlptr) + *nlptr = '\0'; + } +@@ -681,7 +681,7 @@ static SysctlSetting *parse_setting_line( + if (pattern && !pattern_match(key, pattern)) + return NULL; + +- value = strchr(key, '='); ++ value = (char *)strchr(key, '='); + if (value == NULL) { + if (key[0] == '-') { + glob_exclude = TRUE; +diff --git a/src/top/top.c b/src/top/top.c +index b29f7c8..e897442 100644 +--- a/src/top/top.c ++++ b/src/top/top.c +@@ -1026,7 +1026,8 @@ static void show_special (int interact, const char *glob) { + ( this function is called only with a glob under top's ) + ( control and never containing any 'raw/binary' chars! ) */ + char tmp[LRGBUFSIZ], lin[LRGBUFSIZ], row[ROWMINSIZ]; +- char *rp, *lin_end, *sub_beg, *sub_end; ++ char *rp, *sub_beg, *sub_end; ++ const char *lin_end; + int room; + + // handle multiple lines passed in a bunch +@@ -1203,11 +1204,12 @@ static int iokey (int action) { + }; + static char erase[2]; + #ifdef TERMIOS_ONLY +- char buf[SMLBUFSIZ], *pb; ++ char buf[SMLBUFSIZ]; ++ const char *pb; + #else + static char buf[MEDBUFSIZ]; + static int pos, len; +- char *pb; ++ const char *pb; + #endif + int i; + +@@ -3700,7 +3702,7 @@ static void before (char *me) { + atexit(close_stdout); + + // setup our program name +- Myname = strrchr(me, '/'); ++ Myname = (char *)strrchr(me, '/'); + if (Myname) ++Myname; else Myname = me; + + // accommodate nls/gettext potential translations +@@ -3853,8 +3855,8 @@ static int cfg_xform (WIN_t *q, char *flds, const char *defs) { + of a particular qwerty key. for the 2 additional suse out-of-memory + fields it makes perfect sense to do the exact opposite, doesn't it? + in any case, we must turn them 'off' temporarily ... */ +- if ((p1 = strchr(flds, '['))) *p1 = '{'; +- if ((p2 = strchr(flds, '\\'))) *p2 = '|'; ++ if ((p1 = (char *)strchr(flds, '['))) *p1 = '{'; ++ if ((p2 = (char *)strchr(flds, '\\'))) *p2 = '|'; + for (i = 0; i < f; i++) { + c = flds[i]; + x = tolower(c) - 'a'; +@@ -3872,8 +3874,8 @@ static int cfg_xform (WIN_t *q, char *flds, const char *defs) { + x = q->rc.sortindx; + c = null_flds[x]; + q->rc.sortindx = 0; +- if ((p1 = memchr(flds, c, CVT_FLDMAX)) +- || ((p1 = memchr(flds, toupper(c), CVT_FLDMAX)))) { ++ if ((p1 = (char *)memchr(flds, c, CVT_FLDMAX)) ++ || ((p1 = (char *)memchr(flds, toupper(c), CVT_FLDMAX)))) { + x = p1 - flds; + q->rc.sortindx = (fields_dst[x] & 0x7f) - FLD_OFFSET; + } +@@ -4011,8 +4013,8 @@ static void config_osel (FILE *fp, char *buf, size_t size) { + for (i = 0; i < tot; i++) { + if (!fgets(buf, size, fp)) return; + if (1 > sscanf(buf, Osel_filterI_fmt, &ch)) goto end_oops; +- if ((p = strchr(buf, '\n'))) *p = '\0'; +- if (!(p = strstr(buf, OSEL_FILTER))) goto end_oops; ++ if ((p = (char *)strchr(buf, '\n'))) *p = '\0'; ++ if (!(p = (char *)strstr(buf, OSEL_FILTER))) goto end_oops; + p += sizeof(OSEL_FILTER) - 1; + if (osel_add(&Winstk[wno], ch, p, 0)) goto end_oops; + } +@@ -4046,7 +4048,8 @@ static int config_wins (FILE *fp, int wix) { + { mkITEM(headclr) }, { mkITEM(taskclr) }, { mkITEM(task_xy) }, + { mkITEM(core_types) }, { mkITEM(cores_vs_cpus) } + }; +- char buf2[MEDBUFSIZ], *p; ++ char buf2[MEDBUFSIZ]; ++ const char *p; + #endif + static const char *def_flds[] = { DEF_FORMER, JOB_FORMER, MEM_FORMER, USR_FORMER }; + char buf[MEDBUFSIZ]; +@@ -4493,7 +4496,7 @@ static void parse_args (int argc, char **argv) { + Curwin->rc.sortindx = i; + continue; + case 'p': +- { int pid; char *p; ++ { int pid; const char *p; + if (Curwin->usrseltyp) error_exit(N_txt(SELECT_clash_txt)); + do { + if (Monpidsidx >= MONPIDMAX) +@@ -5248,7 +5251,8 @@ static void bot_do (const char *str, int focus) { + * ( returns relative # of elements printed ) | */ + static int bot_focus_str (const char *hdr, const char *str) { + #define maxRSVD ( Screen_rows - 1 ) +- char *beg, *end; ++ char *beg; ++ const char *end; + char tmp[BIGBUFSIZ]; + size_t n; + int x; diff --git a/packages/procps/Cargo.toml b/packages/procps/Cargo.toml index 45a6fb141..ea9bbb2e9 100644 --- a/packages/procps/Cargo.toml +++ b/packages/procps/Cargo.toml @@ -12,8 +12,8 @@ path = "../packages.rs" releases-url = "https://gitlab.com/procps-ng/procps/-/tags" [[package.metadata.build-package.external-files]] -url = "https://gitlab.com/procps-ng/procps/-/archive/v4.0.5/procps-v4.0.5.tar.gz" -sha512 = "7c2ebb62d1babb74a7c5a69c5955ab596c491a9505b83df0cf7efa451953dc614658da490df14e2a8e813b8302b24254d2f8f6f6750c937fade7cbe2eef72b6d" +url = "https://gitlab.com/procps-ng/procps/-/archive/v4.0.6/procps-v4.0.6.tar.gz" +sha512 = "7fcb6c20a01c511255dfa2d5ad80a365a47cfdc6823487afe39a04b05dc49506b2c297e3feffccd52bd630734c6b433c59495477dd6c973235a58e280f0cda54" [build-dependencies] glibc = { path = "../glibc" } diff --git a/packages/procps/procps.spec b/packages/procps/procps.spec index e7190c8f1..3c2b16e67 100644 --- a/packages/procps/procps.spec +++ b/packages/procps/procps.spec @@ -1,16 +1,12 @@ Name: %{_cross_os}procps -Version: 4.0.5 +Version: 4.0.6 Release: 1%{?dist} Summary: A set of process monitoring tools License: GPL-2.0-or-later AND LGPL-2.1-or-later URL: https://gitlab.com/procps-ng/procps Source0: https://gitlab.com/procps-ng/procps/-/archive/v%{version}/procps-v%{version}.tar.gz -# Upstream patch to fix warning about format truncation. -Patch0001: 0001-library-internal-expand-buffer-for-stat_fd.patch - -# Local patch to fix warning about implicit definition of pidfd_open. -Patch1001: 1001-check-for-sys-pidfd.h.patch +Patch1001: 1001-fix-const-correctness-for-C23-compatibility-as-implemented-in-glibc-2.43.patch BuildRequires: %{_cross_os}glibc-devel BuildRequires: %{_cross_os}libselinux-devel From a83f8dd1082cb41ad54c04520d3ac3b5111558d2 Mon Sep 17 00:00:00 2001 From: KCSesh Date: Thu, 12 Mar 2026 01:44:57 +0000 Subject: [PATCH 06/13] open-vm-tools: update to 13.0.10 Signed-off-by: KCSesh --- ...on-discards-const-qualifier-from-poi.patch | 141 ++++++++++++++++++ ...-GLib-g_free-macro-redefinition-erro.patch | 30 ++++ packages/open-vm-tools/Cargo.toml | 4 +- packages/open-vm-tools/open-vm-tools.spec | 6 +- 4 files changed, 177 insertions(+), 4 deletions(-) create mode 100644 packages/open-vm-tools/0004-fix-initialization-discards-const-qualifier-from-poi.patch create mode 100644 packages/open-vm-tools/0005-glib_stubs-avoid-GLib-g_free-macro-redefinition-erro.patch diff --git a/packages/open-vm-tools/0004-fix-initialization-discards-const-qualifier-from-poi.patch b/packages/open-vm-tools/0004-fix-initialization-discards-const-qualifier-from-poi.patch new file mode 100644 index 000000000..703db7cdf --- /dev/null +++ b/packages/open-vm-tools/0004-fix-initialization-discards-const-qualifier-from-poi.patch @@ -0,0 +1,141 @@ +From b309f5d40619f033bbddef5c95682beed31659ac Mon Sep 17 00:00:00 2001 +From: Rudi Heitbaum +Date: Mon, 26 Jan 2026 11:55:03 +0000 +Subject: [PATCH] fix initialization discards 'const' qualifier from pointer + target type + +Since glibc-2.43: + +For ISO C23, the functions bsearch, memchr, strchr, strpbrk, strrchr, +strstr, wcschr, wcspbrk, wcsrchr, wcsstr and wmemchr that return +pointers into their input arrays now have definitions as macros that +return a pointer to a const-qualified type when the input argument is +a pointer to a const-qualified type. + +https://lists.gnu.org/archive/html/info-gnu/2026-01/msg00005.html + +Signed-off-by: Rudi Heitbaum +--- + open-vm-tools/lib/hgfs/hgfsEscape.c | 6 +++--- + open-vm-tools/lib/hgfsServer/hgfsServerLinux.c | 2 +- + open-vm-tools/lib/misc/strutil.c | 7 ++++--- + open-vm-tools/lib/nicInfo/nicInfoPosix.c | 2 +- + open-vm-tools/libvmtools/i18n.c | 2 +- + open-vm-tools/services/plugins/vix/vixTools.c | 2 +- + 6 files changed, 11 insertions(+), 10 deletions(-) + +diff --git a/lib/hgfs/hgfsEscape.c b/lib/hgfs/hgfsEscape.c +index c4d39b12d..212ea1c79 100644 +--- a/lib/hgfs/hgfsEscape.c ++++ b/lib/hgfs/hgfsEscape.c +@@ -175,7 +175,7 @@ HgfsAddEscapeCharacter(char const * bufIn, // IN: input name + HgfsEscapeContext *escapeContext = (HgfsEscapeContext *)context; + uint32 charactersToCopy; + uint32 outputSpace; +- char* illegal; ++ const char* illegal; + Bool result = TRUE; + + ASSERT(offset >= escapeContext->processedOffset); // Scanning forward +@@ -573,7 +573,7 @@ HgfsIsEscapeSequence(char const *bufIn, // IN: input name + uint32 length) // IN: length of the name in characters + { + if (bufIn[offset] == HGFS_ESCAPE_CHAR && offset > 0) { +- char *substitute; ++ const char *substitute; + if (bufIn[offset - 1] == HGFS_ESCAPE_SUBSTITUE_CHAR && offset > 1) { + /* + * Possibly a valid sequence, check it must be preceded with a substitute +@@ -887,7 +887,7 @@ HgfsEscapeUndoComponent(char *bufIn, // IN: Characters to be unesc + size_t offset = escapePointer - bufIn; + + if (HgfsIsEscapeSequence(bufIn, offset, sizeIn)) { +- char* substitute = strchr(HGFS_SUBSTITUTE_CHARS, bufIn[offset - 1]); ++ const char* substitute = strchr(HGFS_SUBSTITUTE_CHARS, bufIn[offset - 1]); + if (substitute != NULL) { + bufIn[offset - 1] = HGFS_ILLEGAL_CHARS[substitute - HGFS_SUBSTITUTE_CHARS]; + } else if (bufIn[offset - 1] == HGFS_ESCAPE_SUBSTITUE_CHAR) { +diff --git a/lib/hgfsServer/hgfsServerLinux.c b/lib/hgfsServer/hgfsServerLinux.c +index 4a0bc9378..fd1db4a29 100644 +--- a/lib/hgfsServer/hgfsServerLinux.c ++++ b/lib/hgfsServer/hgfsServerLinux.c +@@ -1364,7 +1364,7 @@ static void + HgfsGetHiddenAttr(char const *fileName, // IN: Input filename + HgfsFileAttrInfo *attr) // OUT: Struct to copy into + { +- char *baseName; ++ const char *baseName; + + ASSERT(fileName); + ASSERT(attr); +diff --git a/lib/misc/strutil.c b/lib/misc/strutil.c +index 4fc6502e4..4be63b7b8 100644 +--- a/lib/misc/strutil.c ++++ b/lib/misc/strutil.c +@@ -1454,6 +1454,7 @@ StrUtil_ReplaceAll(const char *orig, // IN + char *result; + const char *current; + char *tmp; ++ const char *tmp2; + size_t lenWhat; + size_t lenWith; + size_t occurrences = 0; +@@ -1467,8 +1468,8 @@ StrUtil_ReplaceAll(const char *orig, // IN + lenWith = strlen(with); + + current = orig; +- while ((tmp = strstr(current, what)) != NULL) { +- current = tmp + lenWhat; ++ while ((tmp2 = strstr(current, what)) != NULL) { ++ current = tmp2 + lenWhat; + ++occurrences; + } + +@@ -1695,7 +1696,7 @@ StrUtilHasListItem(char const *list, // IN: + char const *item, // IN: + int (*ncmp)(char const *, char const*, size_t)) // IN: + { +- char *foundDelim; ++ const char *foundDelim; + int itemLen = strlen(item); + + if (list == NULL) { +diff --git a/lib/nicInfo/nicInfoPosix.c b/lib/nicInfo/nicInfoPosix.c +index 0135e6a09..922b4efe2 100644 +--- a/lib/nicInfo/nicInfoPosix.c ++++ b/lib/nicInfo/nicInfoPosix.c +@@ -263,7 +263,7 @@ static Bool + IpEntryMatchesDevice(const char *devName, + const char *label) + { +- char *p; ++ const char *p; + size_t n; + + if ((p = strchr(label, ':')) != NULL) { +diff --git a/libvmtools/i18n.c b/libvmtools/i18n.c +index 3085f72d7..f61406d14 100644 +--- a/libvmtools/i18n.c ++++ b/libvmtools/i18n.c +@@ -698,7 +698,7 @@ VMTools_BindTextDomain(const char *domain, + * If we couldn't find the catalog file for the user's language, see if + * we can find a more generic language (e.g., for "en_US", also try "en"). + */ +- char *sep = Str_Strrchr(lang, '_'); ++ const char *sep = Str_Strrchr(lang, '_'); + if (sep != NULL) { + if (usrlang == NULL) { + usrlang = Util_SafeStrdup(lang); +diff --git a/services/plugins/vix/vixTools.c b/services/plugins/vix/vixTools.c +index 654512c5e..5c79ca12a 100644 +--- a/services/plugins/vix/vixTools.c ++++ b/services/plugins/vix/vixTools.c +@@ -930,7 +930,7 @@ VixToolsBuildUserEnvironmentTable(const char * const *envp) // IN: optional + for (; NULL != *envp; envp++) { + char *name; + char *value; +- char *whereToSplit; ++ const char *whereToSplit; + size_t nameLen; + + whereToSplit = strchr(*envp, '='); diff --git a/packages/open-vm-tools/0005-glib_stubs-avoid-GLib-g_free-macro-redefinition-erro.patch b/packages/open-vm-tools/0005-glib_stubs-avoid-GLib-g_free-macro-redefinition-erro.patch new file mode 100644 index 000000000..9ffc55594 --- /dev/null +++ b/packages/open-vm-tools/0005-glib_stubs-avoid-GLib-g_free-macro-redefinition-erro.patch @@ -0,0 +1,30 @@ +From 154053b48c3d29d676696093b620dda31bd47138 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Fri, 21 Nov 2025 00:29:10 -0800 +Subject: [PATCH] glib_stubs: avoid GLib g_free macro redefinition error + +glib 2.78+ defines g_free as an object-size checking macro. +open-vm-tools overrides g_free(), leading to preprocessor expansion +inside the function signature and breaking the build. + +Undefine the macro before defining the stub. + +Signed-off-by: Khem Raj +--- + lib/rpcChannel/glib_stubs.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/lib/rpcChannel/glib_stubs.c b/lib/rpcChannel/glib_stubs.c +index c32deb0..cb89c6a 100644 +--- a/lib/rpcChannel/glib_stubs.c ++++ b/lib/rpcChannel/glib_stubs.c +@@ -35,6 +35,9 @@ + + void *g_malloc0(size_t s) { return Util_SafeCalloc(1, s); } + void *g_malloc0_n(size_t n, size_t s) { return Util_SafeCalloc(n, s); } ++/* GLib defines g_free as a macro, so undefine it before providing ++ * our own stub implementation. */ ++#undef g_free + void g_free(void *p) { free(p); } + + void g_mutex_init(GMutex *mutex) { } diff --git a/packages/open-vm-tools/Cargo.toml b/packages/open-vm-tools/Cargo.toml index 36c79ff2e..17842c17c 100644 --- a/packages/open-vm-tools/Cargo.toml +++ b/packages/open-vm-tools/Cargo.toml @@ -12,8 +12,8 @@ path = "../packages.rs" releases-url = "https://github.com/vmware/open-vm-tools/releases/" [[package.metadata.build-package.external-files]] -url = "https://github.com/vmware/open-vm-tools/releases/download/stable-13.0.5/open-vm-tools-13.0.5-24915695.tar.gz" -sha512 = "e8a0c823e8430e3df0873f8031704536e73bec21d4cd37c37a37053fe2a5116ae1d2fdfa05eae95910c22238c967acc96f6603e1dd8289f2ca926507040c757a" +url = "https://github.com/vmware/open-vm-tools/releases/download/stable-13.0.10/open-vm-tools-13.0.10-25056151.tar.gz" +sha512 = "c332fd2efb3bc16f2fbb77b7b0d0f4a5bb251b5b4828260bb6cbd96903a38d492f90727dad54ef95e442cf3dcc043032e5581e64e3aee4afb55b9db568a29259" [build-dependencies] glibc = { path = "../glibc" } diff --git a/packages/open-vm-tools/open-vm-tools.spec b/packages/open-vm-tools/open-vm-tools.spec index 7f50a7296..062fd27ff 100644 --- a/packages/open-vm-tools/open-vm-tools.spec +++ b/packages/open-vm-tools/open-vm-tools.spec @@ -1,7 +1,7 @@ -%global buildver 24915695 +%global buildver 25056151 Name: %{_cross_os}open-vm-tools -Version: 13.0.5 +Version: 13.0.10 Release: 1%{?dist} Summary: Tools for VMware License: LGPL-2.1-or-later @@ -13,6 +13,8 @@ Source3: open-vm-tools-tmpfiles.conf Patch0001: 0001-no_cflags_werror.patch Patch0002: 0002-dont-force-cppflags.patch Patch0003: 0003-Update-shutdown-code-to-work-for-Bottlerocket.patch +Patch0004: 0004-fix-initialization-discards-const-qualifier-from-poi.patch +Patch0005: 0005-glib_stubs-avoid-GLib-g_free-macro-redefinition-erro.patch BuildRequires: %{_cross_os}glibc-devel BuildRequires: %{_cross_os}libglib-devel BuildRequires: %{_cross_os}libtirpc-devel From 7ce5a51c36a7968ce1ce00294e5b738dbccf4620 Mon Sep 17 00:00:00 2001 From: KCSesh Date: Thu, 12 Mar 2026 01:45:58 +0000 Subject: [PATCH 07/13] libelf: patch C23 compatibility as implemented in glibc-2.43 Signed-off-by: KCSesh --- ...ibility-as-implemented-in-glibc-2.43.patch | 112 ++++++++++++++++++ packages/libelf/libelf.spec | 1 + 2 files changed, 113 insertions(+) create mode 100644 packages/libelf/0001-fix-const-correctness-for-C23-compatibility-as-implemented-in-glibc-2.43.patch diff --git a/packages/libelf/0001-fix-const-correctness-for-C23-compatibility-as-implemented-in-glibc-2.43.patch b/packages/libelf/0001-fix-const-correctness-for-C23-compatibility-as-implemented-in-glibc-2.43.patch new file mode 100644 index 000000000..725f7eebe --- /dev/null +++ b/packages/libelf/0001-fix-const-correctness-for-C23-compatibility-as-implemented-in-glibc-2.43.patch @@ -0,0 +1,112 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: KCSesh +Date: Mon, 10 Mar 2026 04:00:00 +0000 +Subject: [PATCH] fix const-correctness for C23 compatibility as implemented in glibc 2.43 + +glibc 2.43 C23 type-generic functions (memchr, bsearch, strrchr) now +return const-qualified pointers when given const-qualified input. Add +const qualifiers to all affected call sites in libdw, libcpu, and src. + +diff --git a/libcpu/riscv_disasm.c b/libcpu/riscv_disasm.c +index 0dee842..b918353 100644 +--- a/libcpu/riscv_disasm.c ++++ b/libcpu/riscv_disasm.c +@@ -1259,7 +1259,7 @@ riscv_disasm (Ebl *ebl, + if (rd != 0) + op[last++] = REG (rd); + struct known_csrs key = { csr, NULL }; +- struct known_csrs *found = bsearch (&key, known, ++ const struct known_csrs *found = bsearch (&key, known, + sizeof (known) / sizeof (known[0]), + sizeof (known[0]), + compare_csr); +diff --git a/libdw/dwarf_getsrclines.c b/libdw/dwarf_getsrclines.c +index be10cde..23942b8 100644 +--- a/libdw/dwarf_getsrclines.c ++++ b/libdw/dwarf_getsrclines.c +@@ -364,7 +364,7 @@ read_srcfiles (Dwarf *dbg, + const unsigned char *dirp = linep; + while (dirp < lineendp && *dirp != 0) + { +- uint8_t *endp = memchr (dirp, '\0', lineendp - dirp); ++ const uint8_t *endp = memchr (dirp, '\0', lineendp - dirp); + if (endp == NULL) + goto invalid_data; + ++ndirs; +@@ -440,7 +440,7 @@ read_srcfiles (Dwarf *dbg, + for (unsigned int n = 1; n < ndirlist; n++) + { + dirarray[n].dir = (char *) linep; +- uint8_t *endp = memchr (linep, '\0', lineendp - linep); ++ const uint8_t *endp = memchr (linep, '\0', lineendp - linep); + assert (endp != NULL); // Checked above when calculating ndirlist. + dirarray[n].len = endp - linep; + linep = endp + 1; +@@ -527,7 +527,7 @@ read_srcfiles (Dwarf *dbg, + + /* First comes the file name. */ + char *fname = (char *) linep; +- uint8_t *endp = memchr (fname, '\0', lineendp - linep); ++ const uint8_t *endp = memchr (fname, '\0', lineendp - linep); + if (endp == NULL) + goto invalid_data; + size_t fnamelen = endp - (uint8_t *) fname; +@@ -927,7 +927,7 @@ read_srclines (Dwarf *dbg, + case DW_LNE_define_file: + { + char *fname = (char *) linep; +- uint8_t *endp = memchr (linep, '\0', lineendp - linep); ++ const uint8_t *endp = memchr (linep, '\0', lineendp - linep); + if (endp == NULL) + goto invalid_data; + size_t fnamelen = endp - linep; +diff --git a/src/readelf.c b/src/readelf.c +index ee6c203..25df6b5 100644 +--- a/src/readelf.c ++++ b/src/readelf.c +@@ -8269,7 +8269,7 @@ attr_callback (Dwarf_Attribute *attrp, void *arg) + valuestr = dwarf_filesrc (files, num, NULL, NULL); + if (valuestr != NULL) + { +- char *filename = strrchr (valuestr, '/'); ++ const char *filename = strrchr (valuestr, '/'); + if (filename != NULL) + valuestr = filename + 1; + } +@@ -9033,7 +9033,7 @@ print_form_data (Dwarf *dbg, int form, const unsigned char *readp, + Dwarf_Off str_offsets_base, FILE *out) + { + Dwarf_Word val; +- unsigned char *endp; ++ const unsigned char *endp; + Elf_Data *data; + char *str; + switch (form) +@@ -9530,7 +9530,7 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr, + { + while (linep < lineendp && *linep != 0) + { +- unsigned char *endp = memchr (linep, '\0', lineendp - linep); ++ const unsigned char *endp = memchr (linep, '\0', lineendp - linep); + if (unlikely (endp == NULL)) + goto invalid_unit; + +@@ -9613,7 +9613,7 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr, + { + /* First comes the file name. */ + char *fname = (char *) linep; +- unsigned char *endp = memchr (fname, '\0', lineendp - linep); ++ const unsigned char *endp = memchr (fname, '\0', lineendp - linep); + if (unlikely (endp == NULL)) + goto invalid_unit; + linep = endp + 1; +@@ -9764,7 +9764,7 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr, + case DW_LNE_define_file: + { + char *fname = (char *) linep; +- unsigned char *endp = memchr (linep, '\0', ++ const unsigned char *endp = memchr (linep, '\0', + lineendp - linep); + if (unlikely (endp == NULL)) + goto invalid_unit; + diff --git a/packages/libelf/libelf.spec b/packages/libelf/libelf.spec index b46e4529c..575a2234c 100644 --- a/packages/libelf/libelf.spec +++ b/packages/libelf/libelf.spec @@ -8,6 +8,7 @@ URL: https://sourceware.org/elfutils/ Source0: https://sourceware.org/elfutils/ftp/%{version}/elfutils-%{version}.tar.bz2 Source1: https://sourceware.org/elfutils/ftp/%{version}/elfutils-%{version}.tar.bz2.sig Source2: gpgkey-6C2B631563B8D330578D3CB474FD3FA2779E7073.asc +Patch0001: 0001-fix-const-correctness-for-C23-compatibility-as-implemented-in-glibc-2.43.patch BuildRequires: %{_cross_os}glibc-devel BuildRequires: %{_cross_os}libz-devel From 2a915300c135c5f7b171f448e15e106515575777 Mon Sep 17 00:00:00 2001 From: KCSesh Date: Thu, 12 Mar 2026 01:46:24 +0000 Subject: [PATCH 08/13] libxcrypt: patch C23 compatibility as implemented in glibc-2.43 Signed-off-by: KCSesh --- ...0001-fix-Werror-discarded-qualifiers.patch | 38 +++++++++++++++++++ packages/libxcrypt/libxcrypt.spec | 1 + 2 files changed, 39 insertions(+) create mode 100644 packages/libxcrypt/0001-fix-Werror-discarded-qualifiers.patch diff --git a/packages/libxcrypt/0001-fix-Werror-discarded-qualifiers.patch b/packages/libxcrypt/0001-fix-Werror-discarded-qualifiers.patch new file mode 100644 index 000000000..04bd07bd4 --- /dev/null +++ b/packages/libxcrypt/0001-fix-Werror-discarded-qualifiers.patch @@ -0,0 +1,38 @@ +From 174c24d6e87aeae631bc0a7bb1ba983cf8def4de Mon Sep 17 00:00:00 2001 +From: Stanislav Zidek +Date: Wed, 10 Dec 2025 14:03:54 +0100 +Subject: [PATCH] fix -Werror=discarded-qualifiers + +On Fedora rawhide (to be Fedora 44), gcc became more strict +wrt. const-ness. +--- + lib/crypt-gost-yescrypt.c | 2 +- + lib/crypt-sm3-yescrypt.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/lib/crypt-gost-yescrypt.c b/lib/crypt-gost-yescrypt.c +index 190ae94..e9dc7e8 100644 +--- a/lib/crypt-gost-yescrypt.c ++++ b/lib/crypt-gost-yescrypt.c +@@ -131,7 +131,7 @@ crypt_gost_yescrypt_rn (const char *phrase, size_t phr_size, + intbuf->outbuf[1] = 'g'; + + /* extract yescrypt output from "$y$param$salt$output" */ +- char *hptr = strchr ((const char *) intbuf->retval + 3, '$'); ++ char *hptr = strchr ((char *) intbuf->retval + 3, '$'); + if (!hptr) + { + errno = EINVAL; +diff --git a/lib/crypt-sm3-yescrypt.c b/lib/crypt-sm3-yescrypt.c +index 4f42aa6..17da83e 100644 +--- a/lib/crypt-sm3-yescrypt.c ++++ b/lib/crypt-sm3-yescrypt.c +@@ -136,7 +136,7 @@ crypt_sm3_yescrypt_rn (const char *phrase, size_t phr_size, + intbuf->outbuf[3] = '3'; + + /* extract yescrypt output from "$y$param$salt$output" */ +- char *hptr = strchr ((const char *) intbuf->retval + 3, '$'); ++ char *hptr = strchr ((char *) intbuf->retval + 3, '$'); + if (!hptr) + { + errno = EINVAL; diff --git a/packages/libxcrypt/libxcrypt.spec b/packages/libxcrypt/libxcrypt.spec index ead0b4e12..001184280 100644 --- a/packages/libxcrypt/libxcrypt.spec +++ b/packages/libxcrypt/libxcrypt.spec @@ -7,6 +7,7 @@ URL: https://github.com/besser82/libxcrypt Source0: https://github.com/besser82/libxcrypt/releases/download/v%{version}/libxcrypt-%{version}.tar.xz Source1: https://github.com/besser82/libxcrypt/releases/download/v%{version}/libxcrypt-%{version}.tar.xz.asc Source2: gpgkey-678CE3FEE430311596DB8C16F52E98007594C21D.asc +Patch0001: 0001-fix-Werror-discarded-qualifiers.patch BuildRequires: %{_cross_os}glibc-devel %description From 63dcacbd55f9710717c071e4a973db201c8fac9f Mon Sep 17 00:00:00 2001 From: KCSesh Date: Thu, 12 Mar 2026 01:48:38 +0000 Subject: [PATCH 09/13] os: update aws-lc crates for glibc 2.43 compatibility MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Update aws-lc-rs 1.13.0 → 1.16.1, aws-lc-sys 0.28.2 → 0.38.0, and aws-lc-fips-sys 0.13.11 → 0.13.12. Update aws-lc/LICENSE hash in clarify.toml. Signed-off-by: KCSesh --- packages/os/os.spec | 5 +++ sources/Cargo.lock | 74 +++++++++----------------------------------- sources/Cargo.toml | 2 +- sources/clarify.toml | 2 +- 4 files changed, 22 insertions(+), 61 deletions(-) diff --git a/packages/os/os.spec b/packages/os/os.spec index 7a2d1151a..e30f5b1b4 100644 --- a/packages/os/os.spec +++ b/packages/os/os.spec @@ -474,6 +474,11 @@ sed -i 's/-Wp,-D_FORTIFY_SOURCE=2//g' \ %_cross_cmake_toolchain_conf \ %_cross_cmake_toolchain_conf_static +# Suppress glibc 2.43 const-qualifier errors in vendored aws-lc (must be in _RELEASE to override -Werror). +sed -i 's/set(CMAKE_C_FLAGS_RELEASE "-DNDEBUG")/set(CMAKE_C_FLAGS_RELEASE "-DNDEBUG -Wno-error=discarded-qualifiers")/' \ + %_cross_cmake_toolchain_conf \ + %_cross_cmake_toolchain_conf_static + %build mkdir bin diff --git a/sources/Cargo.lock b/sources/Cargo.lock index 3c5aeee7e..6221c0f63 100644 --- a/sources/Cargo.lock +++ b/sources/Cargo.lock @@ -654,11 +654,11 @@ dependencies = [ [[package]] name = "aws-lc-fips-sys" -version = "0.13.11" +version = "0.13.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df6ea8e07e2df15b9f09f2ac5ee2977369b06d116f0c4eb5fa4ad443b73c7f53" +checksum = "5ed8cd42adddefbdb8507fb7443fa9b666631078616b78f70ed22117b5c27d90" dependencies = [ - "bindgen 0.72.1", + "bindgen", "cc", "cmake", "dunce", @@ -668,9 +668,9 @@ dependencies = [ [[package]] name = "aws-lc-rs" -version = "1.13.0" +version = "1.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b756939cb2f8dc900aa6dcd505e6e2428e9cae7ff7b028c49e3946efa70878" +checksum = "94bffc006df10ac2a68c83692d734a465f8ee6c5b384d8545a636f81d858f4bf" dependencies = [ "aws-lc-fips-sys", "aws-lc-sys", @@ -680,11 +680,11 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.28.2" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa9b6986f250236c27e5a204062434a773a13243d2ffc2955f37bdba4c5c6a1" +checksum = "4321e568ed89bb5a7d291a7f37997c2c0df89809d7b6d12062c81ddb54aa782e" dependencies = [ - "bindgen 0.69.5", + "bindgen", "cc", "cmake", "dunce", @@ -1279,29 +1279,6 @@ dependencies = [ "serde", ] -[[package]] -name = "bindgen" -version = "0.69.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" -dependencies = [ - "bitflags 2.11.0", - "cexpr", - "clang-sys", - "itertools 0.12.1", - "lazy_static", - "lazycell", - "log", - "prettyplease", - "proc-macro2", - "quote", - "regex", - "rustc-hash 1.1.0", - "shlex", - "syn 2.0.116", - "which", -] - [[package]] name = "bindgen" version = "0.72.1" @@ -1311,13 +1288,13 @@ dependencies = [ "bitflags 2.11.0", "cexpr", "clang-sys", - "itertools 0.13.0", + "itertools", "log", "prettyplease", "proc-macro2", "quote", "regex", - "rustc-hash 2.1.1", + "rustc-hash", "shlex", "syn 2.0.116", ] @@ -1415,7 +1392,7 @@ dependencies = [ "bottlerocket-settings-models", "constants", "generate-readme", - "itertools 0.13.0", + "itertools", "log", "serde", "serde_json", @@ -1661,7 +1638,7 @@ name = "brush" version = "0.1.0" dependencies = [ "generate-readme", - "itertools 0.13.0", + "itertools", "pathdiff", "serde", "shlex", @@ -3558,15 +3535,6 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" -[[package]] -name = "itertools" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.13.0" @@ -3638,12 +3606,6 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" -[[package]] -name = "lazycell" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" - [[package]] name = "libc" version = "0.2.182" @@ -4541,7 +4503,7 @@ dependencies = [ "pin-project-lite", "quinn-proto", "quinn-udp", - "rustc-hash 2.1.1", + "rustc-hash", "rustls 0.23.31", "socket2 0.6.2", "thiserror 2.0.18", @@ -4561,7 +4523,7 @@ dependencies = [ "lru-slab", "rand 0.9.2", "ring", - "rustc-hash 2.1.1", + "rustc-hash", "rustls 0.23.31", "rustls-pki-types", "slab", @@ -4914,12 +4876,6 @@ version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d" -[[package]] -name = "rustc-hash" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" - [[package]] name = "rustc-hash" version = "2.1.1" @@ -6105,7 +6061,7 @@ dependencies = [ "generate-readme", "handlebars", "http 0.2.12", - "itertools 0.13.0", + "itertools", "log", "maplit", "models", diff --git a/sources/Cargo.toml b/sources/Cargo.toml index f7668cedb..202e49ac1 100644 --- a/sources/Cargo.toml +++ b/sources/Cargo.toml @@ -119,7 +119,7 @@ actix-web-actors = { version = "4", default-features = false } argh = "0.1" async-trait = "0.1" aws-config = "1" -aws-lc-rs = "=1.13.0" +aws-lc-rs = "1" aws-sdk-cloudformation = "1" aws-sdk-ec2 = "1" aws-sdk-eks = "1" diff --git a/sources/clarify.toml b/sources/clarify.toml index 6b21deffc..1e40c7804 100644 --- a/sources/clarify.toml +++ b/sources/clarify.toml @@ -223,7 +223,7 @@ license-files = [ expression = "ISC AND (Apache-2.0 OR ISC) AND OpenSSL AND MIT" license-files = [ { path = "LICENSE", hash = 0xf308ccd7 }, - { path = "aws-lc/LICENSE", hash = 0xb6d14686 }, + { path = "aws-lc/LICENSE", hash = 0x2ff829bc }, { path = "aws-lc/third_party/fiat/LICENSE", hash = 0x75829ee2 }, ] From b67b86bb2bf4ff5d414c2cfe75e20b7aa306428c Mon Sep 17 00:00:00 2001 From: KCSesh Date: Thu, 12 Mar 2026 01:50:14 +0000 Subject: [PATCH 10/13] libnetfilter_conntrack: update to 1.1.1 Signed-off-by: KCSesh --- packages/libnetfilter_conntrack/Cargo.toml | 8 +-- ...D964ACC04981C75500FB9BD55D978A8A1420E4.asc | 29 ----------- ...5F7146A1757A65E2422A94D70D1A666ACF2B21.asc | 52 +++++++++++++++++++ .../libnetfilter_conntrack.spec | 4 +- 4 files changed, 58 insertions(+), 35 deletions(-) delete mode 100644 packages/libnetfilter_conntrack/gpgkey-37D964ACC04981C75500FB9BD55D978A8A1420E4.asc create mode 100644 packages/libnetfilter_conntrack/gpgkey-8C5F7146A1757A65E2422A94D70D1A666ACF2B21.asc diff --git a/packages/libnetfilter_conntrack/Cargo.toml b/packages/libnetfilter_conntrack/Cargo.toml index 46ce0dd3e..199d469d3 100644 --- a/packages/libnetfilter_conntrack/Cargo.toml +++ b/packages/libnetfilter_conntrack/Cargo.toml @@ -12,12 +12,12 @@ path = "../packages.rs" releases-url = "https://netfilter.org/projects/libnetfilter_conntrack/files" [[package.metadata.build-package.external-files]] -url = "https://netfilter.org/projects/libnetfilter_conntrack/files/libnetfilter_conntrack-1.1.0.tar.xz" -sha512 = "5435f45b61e4e13b63b4a39f0c34fb0b59d2eed1e5dc182bc91369b72df54f5a555c111223f4f4a786a2c47dd5c6efd97205b8dca2f522e28d9d54035f928882" +url = "https://netfilter.org/projects/libnetfilter_conntrack/files/libnetfilter_conntrack-1.1.1.tar.xz" +sha512 = "47b7e1c187c9d1ec52777ba08d636a8178f811816b7d5eae28ef7680e2d4516428445572e655a2b60e8f3af1c6788268cfa16532e4a2ba761f8ba55bb3969870" [[package.metadata.build-package.external-files]] -url = "https://netfilter.org/projects/libnetfilter_conntrack/files/libnetfilter_conntrack-1.1.0.tar.xz.sig" -sha512 = "b3125d49976d2475e942f74bb3e57632b6643af6f65ea394a71d091759723d4f1220c6cd6116a7820e2c91069883898ad84e9c77355328e71b47906db8501cbe" +url = "https://netfilter.org/projects/libnetfilter_conntrack/files/libnetfilter_conntrack-1.1.1.tar.xz.sig" +sha512 = "0488e2a08da43c1e3df15a6d907846f2857211820fc010004953abe9dfa9d659d7b13ac87af92b00810c69feec85552e2f3f0e59c756d56e26540806795e5389" [build-dependencies] glibc = { path = "../glibc" } diff --git a/packages/libnetfilter_conntrack/gpgkey-37D964ACC04981C75500FB9BD55D978A8A1420E4.asc b/packages/libnetfilter_conntrack/gpgkey-37D964ACC04981C75500FB9BD55D978A8A1420E4.asc deleted file mode 100644 index 3df9e4156..000000000 --- a/packages/libnetfilter_conntrack/gpgkey-37D964ACC04981C75500FB9BD55D978A8A1420E4.asc +++ /dev/null @@ -1,29 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -mQINBF+HdQgBEACzteJUJGtj3N6u5mcGh4Nu/9GQfwrrphZuI7jto2N6+ZoURded -660mFLnax7wgIE8ugAa085jwFWbFY3FzGutUs/kDmnqy9WneYNBLIAF3ZTFfY+oi -V1C09bBlHKDj9gSEM2TZ/qU14exKdSloqcMKSdIqLQX27w/D6WmO1crDjOKKN9F2 -zjc3uLjo1gIPrY+Kdld29aI0W4gYvNLOo+ewhVC5Q6ymWOdR3eKaP2HIAt8CYf0t -Sx8ChHdBvXQITDmXoGPLTTiCHBoUzaJ/N8m4AZTuSUTr9g3jUNFmL48OrJjFPhHh -KDY0V59id5nPu4RX3fa/XW+4FNlrthA5V9dQSIPh7r7uHynDtkcCHT5m4mn0NqG3 -dsUqeYQlrWKCVDTfX/WQB3Rq1tgmOssFG9kZkXcVTmis3KFP1ZAahBRB33OJgSfi -WKc/mWLMEQcljbysbJzq74Vrjg44DNK7vhAXGoR35kjj5saduxTywdb3iZhGXEsg -9zqV0uOIfMQsQJQCZTlkqvZibdB3xlRyiCwqlf1eHB2Vo7efWbRIizX2da4c5xUj -+IL1eSPmTV+52x1dYXpn/cSVKJAROtcSmwvMRyjuGOcTNtir0XHCxC5YYBow6tKR -U1hrFiulCMH80HeS+u/g4SpT4lcv+x0DlN5BfWQuN5k5ZzwKb6EQs092qQARAQAB -tCxOZXRmaWx0ZXIgQ29yZSBUZWFtIDxjb3JldGVhbUBuZXRmaWx0ZXIub3JnPokC -VAQTAQoAPhYhBDfZZKzASYHHVQD7m9Vdl4qKFCDkBQJfh3UIAhsDBQkHhM4ABQsJ -CAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJENVdl4qKFCDk0msQAJTIK8TLHw2IJDc6 -+ZfUJc+znSNwskO+A4lwvb1vRY5qFV+CA2S1eUS4HGDWDT0sPKie6Nx4+FBczkWd -RA+eaKDqQeS5Vzc2f0bl74un91h7yE8O2NsVnpL166MnAAk3/ACjHsZX2PzF12F6 -4stvGQFpjZRWItj0I6bvPY6CTtqVPB98a6RpdbS9kGxCCMrL3CFGDXGSjXes5KwN -IvngmVB36wjb3QgEtQIv13jrWFfiXeuieqMRyC6Z3KNYVcvis34eGxPFD9MHrK+w -bdw3KzMBJd7hMoVRl32Q13T/PX8H3pqWMqKaL41wHUswRt0IQjNZnRvRnlJ0VDFf -Wep/3dFK+uQbdABuiwCiRli5mWeOMCP+qJodP1OZSGqg0VwZWUGdCGG5+qIhngOj -QVomvJ7N4eRLU3xuPVjLoBeHzvViUPpYtWQ/YiZK5rWTJHhu88xZaysFJRaV+Uz3 -wPkeqdArRRXl1Tpy+cKy7D5BZAr7OjT1wboon23IM2DJRurbaHD8blMsjZ07pbvb -4hdpiE6mqq7CYskDz2UGTaFfEW4bFnKtvKTXEnmcqc4mWcr2z9BBYouGmcFczgET -tE02XejmExXV2RPUtXfLuNIbVpuXG1qhzNuXAfm+S/68XDSFrwyK8/Dgq5ga0iIP -n8Uvz12Xu/Qde+NicogLNWF90QJ2 -=z7om ------END PGP PUBLIC KEY BLOCK----- diff --git a/packages/libnetfilter_conntrack/gpgkey-8C5F7146A1757A65E2422A94D70D1A666ACF2B21.asc b/packages/libnetfilter_conntrack/gpgkey-8C5F7146A1757A65E2422A94D70D1A666ACF2B21.asc new file mode 100644 index 000000000..11fee68df --- /dev/null +++ b/packages/libnetfilter_conntrack/gpgkey-8C5F7146A1757A65E2422A94D70D1A666ACF2B21.asc @@ -0,0 +1,52 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQINBGcLlIQBEADH+pWx2d5XgY2JCOHTVaOpbNlNfp1k9Ul0W5zaZ7EFHIGSj06E +o3+OM0eI6+d51PnqwRE+WbV4T3ooGnfgXN4fmKgq2TwkxlhKeFSzNGMuzzuoEwD+ +2cvSF9VIrwif1o9oa9KMNfKTY/qjuWZS0QWZ08thPAf/tWpoaA3gaqYQUshj5G3w +nTMdYlHUj7wkZCMg63tDygAe/7fDT3zurKCMbFoyiyQkp7V1SLxZpvuyuyPH6HtQ +P5xcbXsp5ots0BgN+BplMX89DrspxJXqi7AsTf4QnC78KbchMJJxLKZQS759dQHF +qHUTb3YdlxXFou6Si5LiBzvmqBRFj6m/WV1a8mDy5fPDkOLoTCUFHLmgvYHPJdtK +5EqNkwYAbSnZKe9aSeVa4XhaZqyyQb9vIsKyOnwdJ/l222J95qHQapZSLcRdqgQz +ZgxuEdOHacEaJ1IJ21CE8EtJfFA5DMZtkZNIGF3OFlXhw7YxJoPgsodtlVspQsfX +u2FGP9yg0fd4zLgHnotKqfJQ9ZjMB6bbJUd6Au9jv0SiM+kVGeVfyaaX7TDeQ3TT +/e44uFvkHkbYFQPcqsTalxtre6v7pMG2iu2mbkhQOC7qbL5MKMSdA93w/lF7w20b +cwyDavEoKk9vgDjSkVjaffvdy4cESa5JY4lM4ZmzoujnAZMwbzQeGcBtqQARAQAB +tCxOZXRmaWx0ZXIgQ29yZSBUZWFtIDxjb3JldGVhbUBuZXRmaWx0ZXIub3JnPokC +VAQTAQoAPhYhBIxfcUahdXpl4kIqlNcNGmZqzyshBQJnC5SEAhsDBQkHhM4ABQsJ +CAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJENcNGmZqzyshRE4P/AknD3DAWuCT7x7L +LFIUCkfl7WUou9zMQKy62JRK/+/lNyG1dkmvBu7XWLl/+IRv1uIb25I4xwaze6GF +8yhZDNXZLhUjComr864fMEdKNdXInAClLRNY0InkFmHw/SizvwDld4PgsLzoS+qL +5JY4FBlYEnd4wlIwH/w3gPycmdmQNVOjeWJhDrYKGLnjolpGRQPYRME4kjasWPbK +AWG/lpINQEB1DgtK8e6kcbUA8wSU6MMEsJjPY0o7lr9NvPfRpPXq34LjoFUXk3Hi +Bt8OuVVMo+wTmlZWkXdknFKS4IPVxUA53oJOVMFW8divmF/l676KBogSnczoX4vR +VW8sgDEKqb0NicKWJ2Fou+/KueY5OXsO8aZrZtXOsXIAMberdrNDYhyTUSYF8mZF +RdL6Jcm5GbQB/zOQElgzMwPQq5AD7SkziMzGOusWjqGmu9qphed/FimVbyRhMl5B +uDvGHthhy1KlPkqVcddN6i3/Kd/AMqXAuWMZH9FXJkUUWe+VAyeNHfEuBtSK2rqE +zf8TYGg5Gz+oNspWuqEyWUwoH7eQkRx2GIbwu2rwcIzrh8L0rsyu+6FNNHnQfnNq +ytbE888dxKkXeJ5T09Pp/hPwkNM8X8ZLcTTsAknrvqLNp2As49dP6iJwysfYLf/v +3Cyvz23JNeSQiTcC4YfKLs4LtCFkuQINBGcLlIQBEADZjvn7+u5Zbt5zmYfZnE2y +mtDE0+nDY6RFVNzAyJmze6Sk3Pz/rOk1WAWJ9atVNF010JX4dhxnay3mwDnVltFn +M+Co/aDpURzgEcqt5kc2/YYggfPZiXMOcTSJ/N3eS/yCajjUmlSyp08H8J01WgiW +LheciKgzDkl4Egt7Gxi8f8hHIQIUBFlBvJ5vVk8mxX6vfJhaxxCkRrEoHwh6uijD +Z/TboVtePWSvipJT12ahcg6ER3cor7fY/YXwNJa+LerH1xHyXnc4zTtn9GfK9rEI +ZsN8pGA5MxBfCM5IIopNSnuPk5qQ/+Li/4X4G5KFcWVeoCNzPa6rOaNYJQLkhY7K +xsqINRJFF6ZUk0J+Hmv70OrdYgZE29q96s4SvlS+xlpb2WvQxqvG7TQIjoyiqmtP +t80U18jyQHTEDF/hQQIZmhyaMpQKxB3c7+YWge679GhoyleDtYn6J0hhNqZZZkg2 +0zt3sSHrJS4A4eRqlZkFt9CuSb3nCp2/O9XNLrc0SxwRd+BzmIEVgXJdfAxg/ks1 +yo9f//uAGrXAAcKDSR0xIejd/5g93yclpMjMCyc6NceNz5ptQ5M4qDvVTEsRu0Xm +h/VkQ7ct0fN4E54xCNAg5Bu5tJ13La7A3JgQmDEp764lla+5DWEPbUovVlGvArNM +QpsuPXxfu4oSJcgDUdmjKwARAQABiQI8BBgBCgAmFiEEjF9xRqF1emXiQiqU1w0a +ZmrPKyEFAmcLlIQCGwwFCQeEzgAACgkQ1w0aZmrPKyGT7g/+KmIQHZgrWonDo3rj +CNBISgNDtHJ17wUcClyhiEmem7f3+X4n8u/DUOFXUM3KbEZNVb2hB0ReR/qsQkCf +DHcynGKaJQqYY4q9YBPszT+4Lcx+Bzgc89/6uhiuR5qsFrYd19+ckq4K4Z1GWV/q +ZZvYESESKpoo4YXQ6f9/9hXLJEM6/VLyEAwdeE220lQLA8eXEFDORdZ0tQACTUq3 +m7hHAXnjNDdRz7alpnCbgB7U5ZPiucpNNnIGz/fdur5bctbiOOlMiOLf8TsZiGOo +F5XEjGwZ1ZgdLBPrCiUxO0Kw6UUTYrHgjS2XK/0zafZaxaWlF8/ycF3PnNVQvFJg +EZPTSx7H6Bs+R374YlMJfesLb7tWCiHr/Z31adW29/13jQFSXfoTcTpZL+vLN33r +rb7+70EdeBPHLwlU1yu2gGSpFiZdp/KT6IbF7Ob8K7Bt+qBUh/fI3oS7cy66YLVo ++je1PEloSPSZUxGiKRC/wtX6FSXkmbPE6tbKmGsPNZaLwxZPMLktXhYVnhFaHSUL +HwjwYLEBmeOqGYFs9wFNyqweK7jcY5CScX4Crt/aRw6796OWbnwB6CAB0XT0z5XB +9Vov9Sy4C6h1QvfouzdQpbDtf1YLWJmcM8VsbBCTnBNvrzkTqFc4DIeZRoQi4ev9 +1Uy/eoSI3DKeFqA/BJTz/pv7+og= +=d7nb +-----END PGP PUBLIC KEY BLOCK----- diff --git a/packages/libnetfilter_conntrack/libnetfilter_conntrack.spec b/packages/libnetfilter_conntrack/libnetfilter_conntrack.spec index b414b2a87..deb072171 100644 --- a/packages/libnetfilter_conntrack/libnetfilter_conntrack.spec +++ b/packages/libnetfilter_conntrack/libnetfilter_conntrack.spec @@ -1,5 +1,5 @@ Name: %{_cross_os}libnetfilter_conntrack -Version: 1.1.0 +Version: 1.1.1 Release: 1%{?dist} Epoch: 1 Summary: Library for netfilter conntrack @@ -7,7 +7,7 @@ License: GPL-2.0-or-later URL: http://netfilter.org Source0: https://netfilter.org/projects/libnetfilter_conntrack/files/libnetfilter_conntrack-%{version}.tar.xz Source1: https://netfilter.org/projects/libnetfilter_conntrack/files/libnetfilter_conntrack-%{version}.tar.xz.sig -Source2: gpgkey-37D964ACC04981C75500FB9BD55D978A8A1420E4.asc +Source2: gpgkey-8C5F7146A1757A65E2422A94D70D1A666ACF2B21.asc BuildRequires: %{_cross_os}glibc-devel BuildRequires: %{_cross_os}libmnl-devel From 4d6acfde4da7dcae2536826c759ebbf9b8ff316d Mon Sep 17 00:00:00 2001 From: KCSesh Date: Thu, 12 Mar 2026 18:07:43 +0000 Subject: [PATCH 11/13] conntrack-tools: update tp 1.4.9 Signed-off-by: KCSesh --- .../0001-disable-RPC-helper.patch | 14 ++--- packages/conntrack-tools/Cargo.toml | 8 +-- packages/conntrack-tools/conntrack-tools.spec | 4 +- ...D964ACC04981C75500FB9BD55D978A8A1420E4.asc | 29 ----------- ...5F7146A1757A65E2422A94D70D1A666ACF2B21.asc | 52 +++++++++++++++++++ 5 files changed, 66 insertions(+), 41 deletions(-) delete mode 100644 packages/conntrack-tools/gpgkey-37D964ACC04981C75500FB9BD55D978A8A1420E4.asc create mode 100644 packages/conntrack-tools/gpgkey-8C5F7146A1757A65E2422A94D70D1A666ACF2B21.asc diff --git a/packages/conntrack-tools/0001-disable-RPC-helper.patch b/packages/conntrack-tools/0001-disable-RPC-helper.patch index b98d1d438..feacac6b6 100644 --- a/packages/conntrack-tools/0001-disable-RPC-helper.patch +++ b/packages/conntrack-tools/0001-disable-RPC-helper.patch @@ -1,6 +1,6 @@ -From 5a76b5fa1b631191adbec7919f58e067dd6c2896 Mon Sep 17 00:00:00 2001 +From cb657871f2dd2d3196fb05fe8fdd4b77cfa9bac6 Mon Sep 17 00:00:00 2001 From: Ben Cressey -Date: Tue, 19 Mar 2024 14:17:52 +0000 +Date: Wed, 11 Mar 2026 00:02:05 +0000 Subject: [PATCH] disable RPC helper We do not intend to run the daemon to synchronize firewall rules or @@ -10,13 +10,17 @@ The RPC helper would require us to package libtirpc, which we want to avoid for now since we have no other need for it. Signed-off-by: Ben Cressey +[KCSesh: + - rebased to 1.4.9] +Signed-off-by: Kyle Sessions + --- configure.ac | 2 -- src/helpers/Makefile.am | 5 ----- 2 files changed, 7 deletions(-) diff --git a/configure.ac b/configure.ac -index da852b1..973a9d5 100644 +index a72963c..eb032a7 100644 --- a/configure.ac +++ b/configure.ac @@ -49,8 +49,6 @@ AC_ARG_ENABLE([systemd], @@ -27,7 +31,7 @@ index da852b1..973a9d5 100644 - PKG_CHECK_MODULES([LIBNFNETLINK], [libnfnetlink >= 1.0.1]) PKG_CHECK_MODULES([LIBMNL], [libmnl >= 1.0.3]) - PKG_CHECK_MODULES([LIBNETFILTER_CONNTRACK], [libnetfilter_conntrack >= 1.0.9]) + PKG_CHECK_MODULES([LIBNETFILTER_CONNTRACK], [libnetfilter_conntrack >= 1.1.1]) diff --git a/src/helpers/Makefile.am b/src/helpers/Makefile.am index e458ab4..47f1d46 100644 --- a/src/helpers/Makefile.am @@ -51,6 +55,4 @@ index e458ab4..47f1d46 100644 ct_helper_tftp_la_SOURCES = tftp.c ct_helper_tftp_la_LDFLAGS = $(HELPER_LDFLAGS) ct_helper_tftp_la_CFLAGS = $(HELPER_CFLAGS) --- -2.40.1 diff --git a/packages/conntrack-tools/Cargo.toml b/packages/conntrack-tools/Cargo.toml index 4aeea75aa..d3fbea1e6 100644 --- a/packages/conntrack-tools/Cargo.toml +++ b/packages/conntrack-tools/Cargo.toml @@ -12,12 +12,12 @@ path = "../packages.rs" releases-url = "https://www.netfilter.org/projects/conntrack-tools/files" [[package.metadata.build-package.external-files]] -url = "https://www.netfilter.org/projects/conntrack-tools/files/conntrack-tools-1.4.8.tar.xz" -sha512 = "95d8f6f068c1342ad7e767537e722272a4f5bd8b46b952713ade053a1043aa9ababbe5ce658ede9c77b6de5221b97ad8833777caffd69b67dd70a99f2b45afdf" +url = "https://www.netfilter.org/projects/conntrack-tools/files/conntrack-tools-1.4.9.tar.xz" +sha512 = "1cef49d6f1995915a5c6b811fefc02bef92c9881b6eba8d6f85071f4f129ec139dadfd5546fa02d3ed42888f4d6f46ffc0cc13da30de1baa28a795b95041c035" [[package.metadata.build-package.external-files]] -url = "https://www.netfilter.org/projects/conntrack-tools/files/conntrack-tools-1.4.8.tar.xz.sig" -sha512 = "8cd229d2e980ab1788e90fc8f53827fe1e4b21801cad6cddf6a9ff537501c40c52242cc964005b2889ad0a4548c772304db8696d4644611ecf9f091aca5c14ee" +url = "https://www.netfilter.org/projects/conntrack-tools/files/conntrack-tools-1.4.9.tar.xz.sig" +sha512 = "8fe0e78d1d76924e3897924af32b3cae5fcb5d42661ea728ed00bf6539c6319720844a3c378fb304ca78da7d31d92361d08640f7f00064752ce0e41e9bd0490a" [build-dependencies] glibc = { path = "../glibc" } diff --git a/packages/conntrack-tools/conntrack-tools.spec b/packages/conntrack-tools/conntrack-tools.spec index 41522ee2c..21f42cb24 100644 --- a/packages/conntrack-tools/conntrack-tools.spec +++ b/packages/conntrack-tools/conntrack-tools.spec @@ -1,5 +1,5 @@ Name: %{_cross_os}conntrack-tools -Version: 1.4.8 +Version: 1.4.9 Release: 1%{?dist} Epoch: 1 Summary: Tools for managing Linux kernel connection tracking @@ -8,7 +8,7 @@ License: GPL-2.0-or-later AND GPL-2.0-only URL: http://conntrack-tools.netfilter.org/ Source0: https://www.netfilter.org/projects/conntrack-tools/files/conntrack-tools-%{version}.tar.xz Source1: https://www.netfilter.org/projects/conntrack-tools/files/conntrack-tools-%{version}.tar.xz.sig -Source2: gpgkey-37D964ACC04981C75500FB9BD55D978A8A1420E4.asc +Source2: gpgkey-8C5F7146A1757A65E2422A94D70D1A666ACF2B21.asc Patch1: 0001-disable-RPC-helper.patch BuildRequires: %{_cross_os}glibc-devel diff --git a/packages/conntrack-tools/gpgkey-37D964ACC04981C75500FB9BD55D978A8A1420E4.asc b/packages/conntrack-tools/gpgkey-37D964ACC04981C75500FB9BD55D978A8A1420E4.asc deleted file mode 100644 index 3df9e4156..000000000 --- a/packages/conntrack-tools/gpgkey-37D964ACC04981C75500FB9BD55D978A8A1420E4.asc +++ /dev/null @@ -1,29 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -mQINBF+HdQgBEACzteJUJGtj3N6u5mcGh4Nu/9GQfwrrphZuI7jto2N6+ZoURded -660mFLnax7wgIE8ugAa085jwFWbFY3FzGutUs/kDmnqy9WneYNBLIAF3ZTFfY+oi -V1C09bBlHKDj9gSEM2TZ/qU14exKdSloqcMKSdIqLQX27w/D6WmO1crDjOKKN9F2 -zjc3uLjo1gIPrY+Kdld29aI0W4gYvNLOo+ewhVC5Q6ymWOdR3eKaP2HIAt8CYf0t -Sx8ChHdBvXQITDmXoGPLTTiCHBoUzaJ/N8m4AZTuSUTr9g3jUNFmL48OrJjFPhHh -KDY0V59id5nPu4RX3fa/XW+4FNlrthA5V9dQSIPh7r7uHynDtkcCHT5m4mn0NqG3 -dsUqeYQlrWKCVDTfX/WQB3Rq1tgmOssFG9kZkXcVTmis3KFP1ZAahBRB33OJgSfi -WKc/mWLMEQcljbysbJzq74Vrjg44DNK7vhAXGoR35kjj5saduxTywdb3iZhGXEsg -9zqV0uOIfMQsQJQCZTlkqvZibdB3xlRyiCwqlf1eHB2Vo7efWbRIizX2da4c5xUj -+IL1eSPmTV+52x1dYXpn/cSVKJAROtcSmwvMRyjuGOcTNtir0XHCxC5YYBow6tKR -U1hrFiulCMH80HeS+u/g4SpT4lcv+x0DlN5BfWQuN5k5ZzwKb6EQs092qQARAQAB -tCxOZXRmaWx0ZXIgQ29yZSBUZWFtIDxjb3JldGVhbUBuZXRmaWx0ZXIub3JnPokC -VAQTAQoAPhYhBDfZZKzASYHHVQD7m9Vdl4qKFCDkBQJfh3UIAhsDBQkHhM4ABQsJ -CAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJENVdl4qKFCDk0msQAJTIK8TLHw2IJDc6 -+ZfUJc+znSNwskO+A4lwvb1vRY5qFV+CA2S1eUS4HGDWDT0sPKie6Nx4+FBczkWd -RA+eaKDqQeS5Vzc2f0bl74un91h7yE8O2NsVnpL166MnAAk3/ACjHsZX2PzF12F6 -4stvGQFpjZRWItj0I6bvPY6CTtqVPB98a6RpdbS9kGxCCMrL3CFGDXGSjXes5KwN -IvngmVB36wjb3QgEtQIv13jrWFfiXeuieqMRyC6Z3KNYVcvis34eGxPFD9MHrK+w -bdw3KzMBJd7hMoVRl32Q13T/PX8H3pqWMqKaL41wHUswRt0IQjNZnRvRnlJ0VDFf -Wep/3dFK+uQbdABuiwCiRli5mWeOMCP+qJodP1OZSGqg0VwZWUGdCGG5+qIhngOj -QVomvJ7N4eRLU3xuPVjLoBeHzvViUPpYtWQ/YiZK5rWTJHhu88xZaysFJRaV+Uz3 -wPkeqdArRRXl1Tpy+cKy7D5BZAr7OjT1wboon23IM2DJRurbaHD8blMsjZ07pbvb -4hdpiE6mqq7CYskDz2UGTaFfEW4bFnKtvKTXEnmcqc4mWcr2z9BBYouGmcFczgET -tE02XejmExXV2RPUtXfLuNIbVpuXG1qhzNuXAfm+S/68XDSFrwyK8/Dgq5ga0iIP -n8Uvz12Xu/Qde+NicogLNWF90QJ2 -=z7om ------END PGP PUBLIC KEY BLOCK----- diff --git a/packages/conntrack-tools/gpgkey-8C5F7146A1757A65E2422A94D70D1A666ACF2B21.asc b/packages/conntrack-tools/gpgkey-8C5F7146A1757A65E2422A94D70D1A666ACF2B21.asc new file mode 100644 index 000000000..11fee68df --- /dev/null +++ b/packages/conntrack-tools/gpgkey-8C5F7146A1757A65E2422A94D70D1A666ACF2B21.asc @@ -0,0 +1,52 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQINBGcLlIQBEADH+pWx2d5XgY2JCOHTVaOpbNlNfp1k9Ul0W5zaZ7EFHIGSj06E +o3+OM0eI6+d51PnqwRE+WbV4T3ooGnfgXN4fmKgq2TwkxlhKeFSzNGMuzzuoEwD+ +2cvSF9VIrwif1o9oa9KMNfKTY/qjuWZS0QWZ08thPAf/tWpoaA3gaqYQUshj5G3w +nTMdYlHUj7wkZCMg63tDygAe/7fDT3zurKCMbFoyiyQkp7V1SLxZpvuyuyPH6HtQ +P5xcbXsp5ots0BgN+BplMX89DrspxJXqi7AsTf4QnC78KbchMJJxLKZQS759dQHF +qHUTb3YdlxXFou6Si5LiBzvmqBRFj6m/WV1a8mDy5fPDkOLoTCUFHLmgvYHPJdtK +5EqNkwYAbSnZKe9aSeVa4XhaZqyyQb9vIsKyOnwdJ/l222J95qHQapZSLcRdqgQz +ZgxuEdOHacEaJ1IJ21CE8EtJfFA5DMZtkZNIGF3OFlXhw7YxJoPgsodtlVspQsfX +u2FGP9yg0fd4zLgHnotKqfJQ9ZjMB6bbJUd6Au9jv0SiM+kVGeVfyaaX7TDeQ3TT +/e44uFvkHkbYFQPcqsTalxtre6v7pMG2iu2mbkhQOC7qbL5MKMSdA93w/lF7w20b +cwyDavEoKk9vgDjSkVjaffvdy4cESa5JY4lM4ZmzoujnAZMwbzQeGcBtqQARAQAB +tCxOZXRmaWx0ZXIgQ29yZSBUZWFtIDxjb3JldGVhbUBuZXRmaWx0ZXIub3JnPokC +VAQTAQoAPhYhBIxfcUahdXpl4kIqlNcNGmZqzyshBQJnC5SEAhsDBQkHhM4ABQsJ +CAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJENcNGmZqzyshRE4P/AknD3DAWuCT7x7L +LFIUCkfl7WUou9zMQKy62JRK/+/lNyG1dkmvBu7XWLl/+IRv1uIb25I4xwaze6GF +8yhZDNXZLhUjComr864fMEdKNdXInAClLRNY0InkFmHw/SizvwDld4PgsLzoS+qL +5JY4FBlYEnd4wlIwH/w3gPycmdmQNVOjeWJhDrYKGLnjolpGRQPYRME4kjasWPbK +AWG/lpINQEB1DgtK8e6kcbUA8wSU6MMEsJjPY0o7lr9NvPfRpPXq34LjoFUXk3Hi +Bt8OuVVMo+wTmlZWkXdknFKS4IPVxUA53oJOVMFW8divmF/l676KBogSnczoX4vR +VW8sgDEKqb0NicKWJ2Fou+/KueY5OXsO8aZrZtXOsXIAMberdrNDYhyTUSYF8mZF +RdL6Jcm5GbQB/zOQElgzMwPQq5AD7SkziMzGOusWjqGmu9qphed/FimVbyRhMl5B +uDvGHthhy1KlPkqVcddN6i3/Kd/AMqXAuWMZH9FXJkUUWe+VAyeNHfEuBtSK2rqE +zf8TYGg5Gz+oNspWuqEyWUwoH7eQkRx2GIbwu2rwcIzrh8L0rsyu+6FNNHnQfnNq +ytbE888dxKkXeJ5T09Pp/hPwkNM8X8ZLcTTsAknrvqLNp2As49dP6iJwysfYLf/v +3Cyvz23JNeSQiTcC4YfKLs4LtCFkuQINBGcLlIQBEADZjvn7+u5Zbt5zmYfZnE2y +mtDE0+nDY6RFVNzAyJmze6Sk3Pz/rOk1WAWJ9atVNF010JX4dhxnay3mwDnVltFn +M+Co/aDpURzgEcqt5kc2/YYggfPZiXMOcTSJ/N3eS/yCajjUmlSyp08H8J01WgiW +LheciKgzDkl4Egt7Gxi8f8hHIQIUBFlBvJ5vVk8mxX6vfJhaxxCkRrEoHwh6uijD +Z/TboVtePWSvipJT12ahcg6ER3cor7fY/YXwNJa+LerH1xHyXnc4zTtn9GfK9rEI +ZsN8pGA5MxBfCM5IIopNSnuPk5qQ/+Li/4X4G5KFcWVeoCNzPa6rOaNYJQLkhY7K +xsqINRJFF6ZUk0J+Hmv70OrdYgZE29q96s4SvlS+xlpb2WvQxqvG7TQIjoyiqmtP +t80U18jyQHTEDF/hQQIZmhyaMpQKxB3c7+YWge679GhoyleDtYn6J0hhNqZZZkg2 +0zt3sSHrJS4A4eRqlZkFt9CuSb3nCp2/O9XNLrc0SxwRd+BzmIEVgXJdfAxg/ks1 +yo9f//uAGrXAAcKDSR0xIejd/5g93yclpMjMCyc6NceNz5ptQ5M4qDvVTEsRu0Xm +h/VkQ7ct0fN4E54xCNAg5Bu5tJ13La7A3JgQmDEp764lla+5DWEPbUovVlGvArNM +QpsuPXxfu4oSJcgDUdmjKwARAQABiQI8BBgBCgAmFiEEjF9xRqF1emXiQiqU1w0a +ZmrPKyEFAmcLlIQCGwwFCQeEzgAACgkQ1w0aZmrPKyGT7g/+KmIQHZgrWonDo3rj +CNBISgNDtHJ17wUcClyhiEmem7f3+X4n8u/DUOFXUM3KbEZNVb2hB0ReR/qsQkCf +DHcynGKaJQqYY4q9YBPszT+4Lcx+Bzgc89/6uhiuR5qsFrYd19+ckq4K4Z1GWV/q +ZZvYESESKpoo4YXQ6f9/9hXLJEM6/VLyEAwdeE220lQLA8eXEFDORdZ0tQACTUq3 +m7hHAXnjNDdRz7alpnCbgB7U5ZPiucpNNnIGz/fdur5bctbiOOlMiOLf8TsZiGOo +F5XEjGwZ1ZgdLBPrCiUxO0Kw6UUTYrHgjS2XK/0zafZaxaWlF8/ycF3PnNVQvFJg +EZPTSx7H6Bs+R374YlMJfesLb7tWCiHr/Z31adW29/13jQFSXfoTcTpZL+vLN33r +rb7+70EdeBPHLwlU1yu2gGSpFiZdp/KT6IbF7Ob8K7Bt+qBUh/fI3oS7cy66YLVo ++je1PEloSPSZUxGiKRC/wtX6FSXkmbPE6tbKmGsPNZaLwxZPMLktXhYVnhFaHSUL +HwjwYLEBmeOqGYFs9wFNyqweK7jcY5CScX4Crt/aRw6796OWbnwB6CAB0XT0z5XB +9Vov9Sy4C6h1QvfouzdQpbDtf1YLWJmcM8VsbBCTnBNvrzkTqFc4DIeZRoQi4ev9 +1Uy/eoSI3DKeFqA/BJTz/pv7+og= +=d7nb +-----END PGP PUBLIC KEY BLOCK----- From 3ea9e3400c30fbbb5002f0b5f92053f78802017c Mon Sep 17 00:00:00 2001 From: KCSesh Date: Thu, 12 Mar 2026 18:08:36 +0000 Subject: [PATCH 12/13] coreutils: update to 9.10 Signed-off-by: KCSesh --- packages/coreutils/Cargo.toml | 8 ++++---- packages/coreutils/coreutils.spec | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/coreutils/Cargo.toml b/packages/coreutils/Cargo.toml index 60ff9ce41..1d5b4cad8 100644 --- a/packages/coreutils/Cargo.toml +++ b/packages/coreutils/Cargo.toml @@ -12,12 +12,12 @@ path = "../packages.rs" releases-url = "https://ftp.gnu.org/gnu/coreutils" [[package.metadata.build-package.external-files]] -url = "https://ftp.gnu.org/gnu/coreutils/coreutils-9.9.tar.xz" -sha512 = "e7b0e59f7732d2c098ea4934014f470248bd5c4764210e9200a698010a8e3b95bbb26e543f0cd73ed5a4b8e1f8cda932c73f39954d68175e4deaa47526610c65" +url = "https://ftp.gnu.org/gnu/coreutils/coreutils-9.10.tar.xz" +sha512 = "976ccfb8b906273a687ec330938a25ab72fb130988ca2fcad4fb6e12f4b621eb76b6e9ee091ad060361e95a8da26835b2484fffd3b5f9c7cdb100c1eb7b7d676" [[package.metadata.build-package.external-files]] -url = "https://ftp.gnu.org/gnu/coreutils/coreutils-9.9.tar.xz.sig" -sha512 = "0a3dfdfa6b4234e2e1d42142269f959bdf3cf8f6605a50270a27eff84dd22588f182121f7dd3eeb04be45f5109d02690215065b3d3b43882874d0e165a1435d0" +url = "https://ftp.gnu.org/gnu/coreutils/coreutils-9.10.tar.xz.sig" +sha512 = "83ec7f4a313ed425bf362bf3512042f9562df20daa03465090025a54e85f98c301b7be770340b08193bdf78b413a3bd87b218b71234443e756472205ce840c67" [build-dependencies] glibc = { path = "../glibc" } diff --git a/packages/coreutils/coreutils.spec b/packages/coreutils/coreutils.spec index 6b2da2bdd..2cb4a0297 100644 --- a/packages/coreutils/coreutils.spec +++ b/packages/coreutils/coreutils.spec @@ -1,5 +1,5 @@ Name: %{_cross_os}coreutils -Version: 9.9 +Version: 9.10 Release: 1%{?dist} Summary: A set of basic GNU tools License: GPL-3.0-or-later From 934f4dda3f1139297f8a057d5bc5cb45447a5faa Mon Sep 17 00:00:00 2001 From: KCSesh Date: Thu, 12 Mar 2026 18:09:31 +0000 Subject: [PATCH 13/13] hwloc: update to 2.13.0 Signed-off-by: KCSesh --- packages/hwloc/Cargo.toml | 4 ++-- packages/hwloc/hwloc.spec | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/hwloc/Cargo.toml b/packages/hwloc/Cargo.toml index 27e4b2caa..afd2ca5b2 100644 --- a/packages/hwloc/Cargo.toml +++ b/packages/hwloc/Cargo.toml @@ -12,8 +12,8 @@ path = "../packages.rs" releases-url = "https://www.open-mpi.org/software/ompi/v5.0/" [[package.metadata.build-package.external-files]] -url = "https://download.open-mpi.org/release/hwloc/v2.12/hwloc-2.12.2.tar.bz2" -sha512 = "949d6c9d7b858ee58e477b15e6c06f57812872142fa1c7f3ef20aae2e4ef954135f839e8604404bfd0637fde99729c7d00211c8aee860dfde9ac60bba0e78aef" +url = "https://download.open-mpi.org/release/hwloc/v2.13/hwloc-2.13.0.tar.bz2" +sha512 = "88958a624211fbc3fd2f424de8eed2d6b47a0e3b3cf524725c9695d8a73929de71f3615d4f2e610678a8e1b169c7a592eae45464493f6288b16b0ce368015b28" [build-dependencies] glibc = { path = "../glibc" } diff --git a/packages/hwloc/hwloc.spec b/packages/hwloc/hwloc.spec index dae72c3d0..d4640c25e 100644 --- a/packages/hwloc/hwloc.spec +++ b/packages/hwloc/hwloc.spec @@ -1,10 +1,10 @@ Name: %{_cross_os}hwloc -Version: 2.12.2 +Version: 2.13.0 Release: 1%{?dist} Summary: Portable hardware locality library URL: https://www.open-mpi.org/projects/hwloc/ License: BSD-3-Clause -Source0: https://download.open-mpi.org/release/hwloc/v2.12/hwloc-%{version}.tar.bz2 +Source0: https://download.open-mpi.org/release/hwloc/v2.13/hwloc-%{version}.tar.bz2 BuildRequires: %{_cross_os}glibc-devel BuildRequires: %{_cross_os}systemd-devel