Submitted by: Zeckma Date: 2026-08-15 Initial Package Version: 2.44 Origin: Upstream from release/2.44/master Upstream Status: Applied Description: This fixes multiple issues with the stable 2.44 release, namely with tanh crashing, issues with building and installing glibc with multiple make jobs, and doing certain steps in the right order. Fixes non-lethal but potentially dangerous errors with regular LFS, but is required for MLFS, and brings in the fix for tanh shown in LFS. Some non-important files are changed since this is comparing changes between commits in the glibc git tree. diff '--color=auto' -Naurp glibc/advisories/GLIBC-SA-2023-0001 glibc-2.44/advisories/GLIBC-SA-2023-0001 --- glibc/advisories/GLIBC-SA-2023-0001 2026-08-15 13:43:41.442074777 -0600 +++ glibc-2.44/advisories/GLIBC-SA-2023-0001 1969-12-31 17:00:00.000000000 -0700 @@ -1,14 +0,0 @@ -printf: incorrect output for integers with thousands separator and width field - -When the printf family of functions is called with a format specifier -that uses an (enable grouping) and a minimum width -specifier, the resulting output could be larger than reasonably expected -by a caller that computed a tight bound on the buffer size. The -resulting larger than expected output could result in a buffer overflow -in the printf family of functions. - -CVE-Id: CVE-2023-25139 -Public-Date: 2023-02-02 -Vulnerable-Commit: e88b9f0e5cc50cab57a299dc7efe1a4eb385161d (2.37) -Fix-Commit: c980549cc6a1c03c23cc2fe3e7b0fe626a0364b0 (2.38) -Fix-Commit: 07b9521fc6369d000216b96562ff7c0ed32a16c4 (2.37-4) diff '--color=auto' -Naurp glibc/advisories/GLIBC-SA-2023-0002 glibc-2.44/advisories/GLIBC-SA-2023-0002 --- glibc/advisories/GLIBC-SA-2023-0002 2026-08-15 13:43:41.443873867 -0600 +++ glibc-2.44/advisories/GLIBC-SA-2023-0002 1969-12-31 17:00:00.000000000 -0700 @@ -1,15 +0,0 @@ -getaddrinfo: Stack read overflow in no-aaaa mode - -If the system is configured in no-aaaa mode via /etc/resolv.conf, -getaddrinfo is called for the AF_UNSPEC address family, and a DNS -response is received over TCP that is larger than 2048 bytes, -getaddrinfo may potentially disclose stack contents via the returned -address data, or crash. - -CVE-Id: CVE-2023-4527 -Public-Date: 2023-09-12 -Vulnerable-Commit: f282cdbe7f436c75864e5640a409a10485e9abb2 (2.36) -Fix-Commit: bd77dd7e73e3530203be1c52c8a29d08270cb25d (2.39) -Fix-Commit: 4ea972b7edd7e36610e8cde18bf7a8149d7bac4f (2.36-113) -Fix-Commit: b7529346025a130fee483d42178b5c118da971bb (2.37-38) -Fix-Commit: b25508dd774b617f99419bdc3cf2ace4560cd2d6 (2.38-19) diff '--color=auto' -Naurp glibc/advisories/GLIBC-SA-2023-0003 glibc-2.44/advisories/GLIBC-SA-2023-0003 --- glibc/advisories/GLIBC-SA-2023-0003 2026-08-15 13:43:41.443873867 -0600 +++ glibc-2.44/advisories/GLIBC-SA-2023-0003 1969-12-31 17:00:00.000000000 -0700 @@ -1,15 +0,0 @@ -getaddrinfo: Potential use-after-free - -When an NSS plugin only implements the _gethostbyname2_r and -_getcanonname_r callbacks, getaddrinfo could use memory that was freed -during buffer resizing, potentially causing a crash or read or write to -arbitrary memory. - -CVE-Id: CVE-2023-4806 -Public-Date: 2023-09-12 -Fix-Commit: 973fe93a5675c42798b2161c6f29c01b0e243994 (2.39) -Fix-Commit: e09ee267c03e3150c2c9ba28625ab130705a485e (2.34-420) -Fix-Commit: e3ccb230a961b4797510e6a1f5f21fd9021853e7 (2.35-270) -Fix-Commit: a9728f798ec7f05454c95637ee6581afaa9b487d (2.36-115) -Fix-Commit: 6529a7466c935f36e9006b854d6f4e1d4876f942 (2.37-39) -Fix-Commit: 00ae4f10b504bc4564e9f22f00907093f1ab9338 (2.38-20) diff '--color=auto' -Naurp glibc/advisories/GLIBC-SA-2023-0004 glibc-2.44/advisories/GLIBC-SA-2023-0004 --- glibc/advisories/GLIBC-SA-2023-0004 2026-08-15 13:43:41.443873867 -0600 +++ glibc-2.44/advisories/GLIBC-SA-2023-0004 1969-12-31 17:00:00.000000000 -0700 @@ -1,16 +0,0 @@ -tunables: local privilege escalation through buffer overflow - -If a tunable of the form NAME=NAME=VAL is passed in the environment of a -setuid program and NAME is valid, it may result in a buffer overflow, -which could be exploited to achieve escalated privileges. This flaw was -introduced in glibc 2.34. - -CVE-Id: CVE-2023-4911 -Public-Date: 2023-10-03 -Vulnerable-Commit: 2ed18c5b534d9e92fc006202a5af0df6b72e7aca (2.34) -Fix-Commit: 1056e5b4c3f2d90ed2b4a55f96add28da2f4c8fa (2.39) -Fix-Commit: dcc367f148bc92e7f3778a125f7a416b093964d9 (2.34-423) -Fix-Commit: c84018a05aec80f5ee6f682db0da1130b0196aef (2.35-274) -Fix-Commit: 22955ad85186ee05834e47e665056148ca07699c (2.36-118) -Fix-Commit: b4e23c75aea756b4bddc4abcf27a1c6dca8b6bd3 (2.37-45) -Fix-Commit: 750a45a783906a19591fb8ff6b7841470f1f5701 (2.38-27) diff '--color=auto' -Naurp glibc/advisories/GLIBC-SA-2023-0005 glibc-2.44/advisories/GLIBC-SA-2023-0005 --- glibc/advisories/GLIBC-SA-2023-0005 2026-08-15 13:43:41.443873867 -0600 +++ glibc-2.44/advisories/GLIBC-SA-2023-0005 1969-12-31 17:00:00.000000000 -0700 @@ -1,18 +0,0 @@ -getaddrinfo: DoS due to memory leak - -The fix for CVE-2023-4806 introduced a memory leak when an application -calls getaddrinfo for AF_INET6 with AI_CANONNAME, AI_ALL and AI_V4MAPPED -flags set. - -CVE-Id: CVE-2023-5156 -Public-Date: 2023-09-25 -Vulnerable-Commit: e09ee267c03e3150c2c9ba28625ab130705a485e (2.34-420) -Vulnerable-Commit: e3ccb230a961b4797510e6a1f5f21fd9021853e7 (2.35-270) -Vulnerable-Commit: a9728f798ec7f05454c95637ee6581afaa9b487d (2.36-115) -Vulnerable-Commit: 6529a7466c935f36e9006b854d6f4e1d4876f942 (2.37-39) -Vulnerable-Commit: 00ae4f10b504bc4564e9f22f00907093f1ab9338 (2.38-20) -Fix-Commit: 8006457ab7e1cd556b919f477348a96fe88f2e49 (2.34-421) -Fix-Commit: 17092c0311f954e6f3c010f73ce3a78c24ac279a (2.35-272) -Fix-Commit: 856bac55f98dc840e7c27cfa82262b933385de90 (2.36-116) -Fix-Commit: 4473d1b87d04b25cdd0e0354814eeaa421328268 (2.37-42) -Fix-Commit: 5ee59ca371b99984232d7584fe2b1a758b4421d3 (2.38-24) diff '--color=auto' -Naurp glibc/advisories/GLIBC-SA-2024-0001 glibc-2.44/advisories/GLIBC-SA-2024-0001 --- glibc/advisories/GLIBC-SA-2024-0001 2026-08-15 13:43:41.443873867 -0600 +++ glibc-2.44/advisories/GLIBC-SA-2024-0001 1969-12-31 17:00:00.000000000 -0700 @@ -1,15 +0,0 @@ -syslog: Heap buffer overflow in __vsyslog_internal - -__vsyslog_internal did not handle a case where printing a SYSLOG_HEADER -containing a long program name failed to update the required buffer -size, leading to the allocation and overflow of a too-small buffer on -the heap. - -CVE-Id: CVE-2023-6246 -Public-Date: 2024-01-30 -Vulnerable-Commit: 52a5be0df411ef3ff45c10c7c308cb92993d15b1 (2.37) -Fix-Commit: 6bd0e4efcc78f3c0115e5ea9739a1642807450da (2.39) -Fix-Commit: 23514c72b780f3da097ecf33a793b7ba9c2070d2 (2.38-42) -Fix-Commit: 97a4292aa4a2642e251472b878d0ec4c46a0e59a (2.37-57) -Vulnerable-Commit: b0e7888d1fa2dbd2d9e1645ec8c796abf78880b9 (2.36-16) -Fix-Commit: d1a83b6767f68b3cb5b4b4ea2617254acd040c82 (2.36-126) diff '--color=auto' -Naurp glibc/advisories/GLIBC-SA-2024-0002 glibc-2.44/advisories/GLIBC-SA-2024-0002 --- glibc/advisories/GLIBC-SA-2024-0002 2026-08-15 13:43:41.443873867 -0600 +++ glibc-2.44/advisories/GLIBC-SA-2024-0002 1969-12-31 17:00:00.000000000 -0700 @@ -1,15 +0,0 @@ -syslog: Heap buffer overflow in __vsyslog_internal - -__vsyslog_internal used the return value of snprintf/vsnprintf to -calculate buffer sizes for memory allocation. If these functions (for -any reason) failed and returned -1, the resulting buffer would be too -small to hold output. - -CVE-Id: CVE-2023-6779 -Public-Date: 2024-01-30 -Vulnerable-Commit: 52a5be0df411ef3ff45c10c7c308cb92993d15b1 (2.37) -Fix-Commit: 7e5a0c286da33159d47d0122007aac016f3e02cd (2.39) -Fix-Commit: d0338312aace5bbfef85e03055e1212dd0e49578 (2.38-43) -Fix-Commit: 67062eccd9a65d7fda9976a56aeaaf6c25a80214 (2.37-58) -Vulnerable-Commit: b0e7888d1fa2dbd2d9e1645ec8c796abf78880b9 (2.36-16) -Fix-Commit: 2bc9d7c002bdac38b5c2a3f11b78e309d7765b83 (2.36-127) diff '--color=auto' -Naurp glibc/advisories/GLIBC-SA-2024-0003 glibc-2.44/advisories/GLIBC-SA-2024-0003 --- glibc/advisories/GLIBC-SA-2024-0003 2026-08-15 13:43:41.443873867 -0600 +++ glibc-2.44/advisories/GLIBC-SA-2024-0003 1969-12-31 17:00:00.000000000 -0700 @@ -1,13 +0,0 @@ -syslog: Integer overflow in __vsyslog_internal - -__vsyslog_internal calculated a buffer size by adding two integers, but -did not first check if the addition would overflow. - -CVE-Id: CVE-2023-6780 -Public-Date: 2024-01-30 -Vulnerable-Commit: 52a5be0df411ef3ff45c10c7c308cb92993d15b1 (2.37) -Fix-Commit: ddf542da94caf97ff43cc2875c88749880b7259b (2.39) -Fix-Commit: d37c2b20a4787463d192b32041c3406c2bd91de0 (2.38-44) -Fix-Commit: 2b58cba076e912961ceaa5fa58588e4b10f791c0 (2.37-59) -Vulnerable-Commit: b0e7888d1fa2dbd2d9e1645ec8c796abf78880b9 (2.36-16) -Fix-Commit: b9b7d6a27aa0632f334352fa400771115b3c69b7 (2.36-128) diff '--color=auto' -Naurp glibc/advisories/GLIBC-SA-2024-0004 glibc-2.44/advisories/GLIBC-SA-2024-0004 --- glibc/advisories/GLIBC-SA-2024-0004 2026-08-15 13:43:41.443873867 -0600 +++ glibc-2.44/advisories/GLIBC-SA-2024-0004 1969-12-31 17:00:00.000000000 -0700 @@ -1,28 +0,0 @@ -ISO-2022-CN-EXT: fix out-of-bound writes when writing escape sequence - -The iconv() function in the GNU C Library versions 2.39 and older may -overflow the output buffer passed to it by up to 4 bytes when converting -strings to the ISO-2022-CN-EXT character set, which may be used to -crash an application or overwrite a neighbouring variable. - -ISO-2022-CN-EXT uses escape sequences to indicate character set changes -(as specified by RFC 1922). While the SOdesignation has the expected -bounds checks, neither SS2designation nor SS3designation have its; -allowing a write overflow of 1, 2, or 3 bytes with fixed values: -'$+I', '$+J', '$+K', '$+L', '$+M', or '$*H'. - -CVE-Id: CVE-2024-2961 -Public-Date: 2024-04-17 -Vulnerable-Commit: 755104edc75c53f4a0e7440334e944ad3c6b32fc (2.1.93-169) -Fix-Commit: f9dc609e06b1136bb0408be9605ce7973a767ada (2.40) -Fix-Commit: 31da30f23cddd36db29d5b6a1c7619361b271fb4 (2.39-31) -Fix-Commit: e1135387deded5d73924f6ca20c72a35dc8e1bda (2.38-66) -Fix-Commit: 89ce64b269a897a7780e4c73a7412016381c6ecf (2.37-89) -Fix-Commit: 4ed98540a7fd19f458287e783ae59c41e64df7b5 (2.36-164) -Fix-Commit: 36280d1ce5e245aabefb877fe4d3c6cff95dabfa (2.35-315) -Fix-Commit: a8b0561db4b9847ebfbfec20075697d5492a363c (2.34-459) -Fix-Commit: ed4f16ff6bed3037266f1fa682ebd32a18fce29c (2.33-263) -Fix-Commit: 682ad4c8623e611a971839990ceef00346289cc9 (2.32-140) -Fix-Commit: 3703c32a8d304c1ee12126134ce69be965f38000 (2.31-154) - -Reported-By: Charles Fol diff '--color=auto' -Naurp glibc/advisories/GLIBC-SA-2024-0005 glibc-2.44/advisories/GLIBC-SA-2024-0005 --- glibc/advisories/GLIBC-SA-2024-0005 2026-08-15 13:43:41.443873867 -0600 +++ glibc-2.44/advisories/GLIBC-SA-2024-0005 1969-12-31 17:00:00.000000000 -0700 @@ -1,22 +0,0 @@ -nscd: Stack-based buffer overflow in netgroup cache - -If the Name Service Cache Daemon's (nscd) fixed size cache is exhausted -by client requests then a subsequent client request for netgroup data -may result in a stack-based buffer overflow. This flaw was introduced -in glibc 2.15 when the cache was added to nscd. - -This vulnerability is only present in the nscd binary. - -CVE-Id: CVE-2024-33599 -Public-Date: 2024-04-23 -Vulnerable-Commit: 684ae515993269277448150a1ca70db3b94aa5bd (2.15) -Fix-Commit: 69c58d5ef9f584ea198bd00f7964d364d0e6b921 (2.31-155) -Fix-Commit: a77064893bfe8a701770e2f53a4d33805bc47a5a (2.32-141) -Fix-Commit: 5c75001a96abcd50cbdb74df24c3f013188d076e (2.33-264) -Fix-Commit: 52f73e5c4e29b14e79167272297977f360ae1e97 (2.34-460) -Fix-Commit: 7a95873543ce225376faf13bb71c43dea6d24f86 (2.35-316) -Fix-Commit: caa3151ca460bdd9330adeedd68c3112d97bffe4 (2.36-165) -Fix-Commit: f75c298e747b2b8b41b1c2f551c011a52c41bfd1 (2.37-91) -Fix-Commit: 5968aebb86164034b8f8421b4abab2f837a5bdaf (2.38-72) -Fix-Commit: 1263d583d2e28afb8be53f8d6922f0842036f35d (2.39-35) -Fix-Commit: 87801a8fd06db1d654eea3e4f7626ff476a9bdaa (2.40) diff '--color=auto' -Naurp glibc/advisories/GLIBC-SA-2024-0006 glibc-2.44/advisories/GLIBC-SA-2024-0006 --- glibc/advisories/GLIBC-SA-2024-0006 2026-08-15 13:43:41.443873867 -0600 +++ glibc-2.44/advisories/GLIBC-SA-2024-0006 1969-12-31 17:00:00.000000000 -0700 @@ -1,32 +0,0 @@ -nscd: Null pointer crash after notfound response - -If the Name Service Cache Daemon's (nscd) cache fails to add a not-found -netgroup response to the cache, the client request can result in a null -pointer dereference. This flaw was introduced in glibc 2.15 when the -cache was added to nscd. - -This vulnerability is only present in the nscd binary. - -CVE-Id: CVE-2024-33600 -Public-Date: 2024-04-24 -Vulnerable-Commit: 684ae515993269277448150a1ca70db3b94aa5bd (2.15) -Fix-Commit: b048a482f088e53144d26a61c390bed0210f49f2 (2.40) -Fix-Commit: 7835b00dbce53c3c87bbbb1754a95fb5e58187aa (2.40) -Fix-Commit: c99f886de54446cd4447db6b44be93dabbdc2f8b (2.39-37) -Fix-Commit: 5a508e0b508c8ad53bd0d2fb48fd71b242626341 (2.39-36) -Fix-Commit: 2ae9446c1b7a3064743b4a51c0bbae668ee43e4c (2.38-74) -Fix-Commit: 541ea5172aa658c4bd5c6c6d6fd13903c3d5bb0a (2.38-73) -Fix-Commit: a8070b31043c7585c36ba68a74298c4f7af075c3 (2.37-93) -Fix-Commit: 5eea50c4402e39588de98aa1d4469a79774703d4 (2.37-92) -Fix-Commit: f205b3af56740e3b014915b1bd3b162afe3407ef (2.36-167) -Fix-Commit: c34f470a615b136170abd16142da5dd0c024f7d1 (2.36-166) -Fix-Commit: bafadc589fbe21ae330e8c2af74db9da44a17660 (2.35-318) -Fix-Commit: 4370bef52b0f3f3652c6aa13d7a9bb3ac079746d (2.35-317) -Fix-Commit: 1f94122289a9bf7dba573f5d60327aaa2b85cf2e (2.34-462) -Fix-Commit: 966d6ac9e40222b84bb21674cc4f83c8d72a5a26 (2.34-461) -Fix-Commit: e3eef1b8fbdd3a7917af466ca9c4b7477251ca79 (2.33-266) -Fix-Commit: f20a8d696b13c6261b52a6434899121f8b19d5a7 (2.33-265) -Fix-Commit: be602180146de37582a3da3a0caa4b719645de9c (2.32-143) -Fix-Commit: 394eae338199078b7961b051c191539870742d7b (2.32-142) -Fix-Commit: 8d7949183760170c61e55def723c1d8050187874 (2.31-157) -Fix-Commit: 304ce5fe466c4762b21b36c26926a4657b59b53e (2.31-156) diff '--color=auto' -Naurp glibc/advisories/GLIBC-SA-2024-0007 glibc-2.44/advisories/GLIBC-SA-2024-0007 --- glibc/advisories/GLIBC-SA-2024-0007 2026-08-15 13:43:41.443873867 -0600 +++ glibc-2.44/advisories/GLIBC-SA-2024-0007 1969-12-31 17:00:00.000000000 -0700 @@ -1,28 +0,0 @@ -nscd: netgroup cache may terminate daemon on memory allocation failure - -The Name Service Cache Daemon's (nscd) netgroup cache uses xmalloc or -xrealloc and these functions may terminate the process due to a memory -allocation failure resulting in a denial of service to the clients. The -flaw was introduced in glibc 2.15 when the cache was added to nscd. - -This vulnerability is only present in the nscd binary. - -Subsequent refactoring of the netgroup cache only added more uses of -xmalloc and xrealloc. Uses of xmalloc and xrealloc in other parts of -nscd only occur during startup of the daemon and so are not affected by -client requests that could trigger an out of memory followed by -termination. - -CVE-Id: CVE-2024-33601 -Public-Date: 2024-04-24 -Vulnerable-Commit: 684ae515993269277448150a1ca70db3b94aa5bd (2.15) -Fix-Commit: c04a21e050d64a1193a6daab872bca2528bda44b (2.40) -Fix-Commit: a9a8d3eebb145779a18d90e3966009a1daa63cd8 (2.39-38) -Fix-Commit: 71af8ca864345d39b746d5cee84b94b430fad5db (2.38-75) -Fix-Commit: 6e106dc214d6a033a4e945d1c6cf58061f1c5f1f (2.37-94) -Fix-Commit: b6742463694b1dfdd5120b91ee21cf05d15ec2e2 (2.36-168) -Fix-Commit: 7a5864cac60e06000394128a5a2817b03542f5a3 (2.35-319) -Fix-Commit: 86f1d5f4129c373ac6fb6df5bcf38273838843cb (2.34-463) -Fix-Commit: 4d27d4b9a188786fc6a56745506cec2acfc51f83 (2.33-267) -Fix-Commit: 3ed195a8ec89da281e3c4bf887a13d281b72d8f4 (2.32-144) -Fix-Commit: bbf5a58ccb55679217f94de706164d15372fbbc0 (2.31-158) diff '--color=auto' -Naurp glibc/advisories/GLIBC-SA-2024-0008 glibc-2.44/advisories/GLIBC-SA-2024-0008 --- glibc/advisories/GLIBC-SA-2024-0008 2026-08-15 13:43:41.443873867 -0600 +++ glibc-2.44/advisories/GLIBC-SA-2024-0008 1969-12-31 17:00:00.000000000 -0700 @@ -1,26 +0,0 @@ -nscd: netgroup cache assumes NSS callback uses in-buffer strings - -The Name Service Cache Daemon's (nscd) netgroup cache can corrupt memory -when the NSS callback does not store all strings in the provided buffer. -The flaw was introduced in glibc 2.15 when the cache was added to nscd. - -This vulnerability is only present in the nscd binary. - -There is no guarantee from the NSS callback API that the returned -strings are all within the buffer. However, the netgroup cache code -assumes that the NSS callback uses in-buffer strings and if it doesn't -the buffer resizing logic could lead to potential memory corruption. - -CVE-Id: CVE-2024-33602 -Public-Date: 2024-04-24 -Vulnerable-Commit: 684ae515993269277448150a1ca70db3b94aa5bd (2.15) -Fix-Commit: c04a21e050d64a1193a6daab872bca2528bda44b (2.40) -Fix-Commit: a9a8d3eebb145779a18d90e3966009a1daa63cd8 (2.39-38) -Fix-Commit: 71af8ca864345d39b746d5cee84b94b430fad5db (2.38-75) -Fix-Commit: 6e106dc214d6a033a4e945d1c6cf58061f1c5f1f (2.37-94) -Fix-Commit: b6742463694b1dfdd5120b91ee21cf05d15ec2e2 (2.36-168) -Fix-Commit: 7a5864cac60e06000394128a5a2817b03542f5a3 (2.35-319) -Fix-Commit: 86f1d5f4129c373ac6fb6df5bcf38273838843cb (2.34-463) -Fix-Commit: 4d27d4b9a188786fc6a56745506cec2acfc51f83 (2.33-267) -Fix-Commit: 3ed195a8ec89da281e3c4bf887a13d281b72d8f4 (2.32-144) -Fix-Commit: bbf5a58ccb55679217f94de706164d15372fbbc0 (2.31-158) diff '--color=auto' -Naurp glibc/advisories/GLIBC-SA-2025-0001 glibc-2.44/advisories/GLIBC-SA-2025-0001 --- glibc/advisories/GLIBC-SA-2025-0001 2026-08-15 13:43:41.443873867 -0600 +++ glibc-2.44/advisories/GLIBC-SA-2025-0001 1969-12-31 17:00:00.000000000 -0700 @@ -1,40 +0,0 @@ -assert: Buffer overflow when printing assertion failure message - -When the assert() function fails, it does not allocate enough space for the -assertion failure message string and size information, which may lead to a -buffer overflow if the message string size aligns to page size. - -This bug can be triggered when an assertion in a program fails. The assertion -failure message is allocated to allow developers to see this failure in core -dumps and it typically includes, in addition to the invariant assertion -string and function name, the name of the program. If the name of the failing -program is user controlled, for example on a local system, this could allow an -attacker to control the assertion failure to trigger this buffer overflow. - -The only viable vector for exploitation of this bug is local, if a setuid -program exists that has an existing bug that results in an assertion failure. -No such program has been discovered at the time of publishing this advisory, -but the presence of custom setuid programs, although strongly discouraged as a -security practice, cannot be discounted. - -CVE-Id: CVE-2025-0395 -Public-Date: 2025-01-22 -Vulnerable-Commit: f8a3b5bf8fa1d0c43d2458e03cc109a04fdef194 (2.13-175) -Fix-Commit: 68ee0f704cb81e9ad0a78c644a83e1e9cd2ee578 (2.41) -Fix-Commit: cdb9ba84191ce72e86346fb8b1d906e7cd930ea2 (2.42) -Fix-Commit: 69fda28279b497bd405fdd442a6d8e4d3d5f681b (2.41-7) -Fix-Commit: 7d4b6bcae91f29d7b4daf15bab06b66cf1d2217c (2.40-66) -Fix-Commit: d6c156c326999f144cb5b73d29982108d549ad8a (2.40-71) -Fix-Commit: 808a84a8b81468b517a4d721fdc62069cb8c211f (2.39-146) -Fix-Commit: f6d48470aef9264d2d56f4c4533eb76db7f9c2e4 (2.39-150) -Fix-Commit: c32fd59314c343db88c3ea4a203870481d33c3d2 (2.38-122) -Fix-Commit: f984e2d7e8299726891a1a497a3c36cd5542a0bf (2.38-124) -Fix-Commit: a3d7865b098a3a67c44f7812208d9ce4718873ba (2.37-143) -Fix-Commit: b989519fe1683c204ac24ec92830e3fe3bfaccad (2.37-146) -Fix-Commit: 7971add7ee4171fdd8dfd17e7c04c4ed77a18845 (2.36-216) -Fix-Commit: 0487893d5c5bc6710d83d7c3152d888a0339559e (2.36-219) -Fix-Commit: 8b5d4be762419c4f6176261c6fea40ac559b88dc (2.35-370) -Fix-Commit: 8b3d09dc0d350191985f9d291cc30ce96f034b49 (2.35-373) -Fix-Commit: df4e1f4a5096b385c9bcc94424cf2eaa227b3761 (2.34-500) -Fix-Commit: 31eb872cb21449832ab47ad5db83281d240e1d03 (2.34-503) -Reported-By: Qualys Security Advisory diff '--color=auto' -Naurp glibc/advisories/GLIBC-SA-2025-0002 glibc-2.44/advisories/GLIBC-SA-2025-0002 --- glibc/advisories/GLIBC-SA-2025-0002 2026-08-15 13:43:41.443873867 -0600 +++ glibc-2.44/advisories/GLIBC-SA-2025-0002 1969-12-31 17:00:00.000000000 -0700 @@ -1,23 +0,0 @@ -elf: static setuid binary dlopen may incorrectly search LD_LIBRARY_PATH - -A statically linked setuid binary that calls dlopen (including internal -dlopen calls after setlocale or calls to NSS functions such as getaddrinfo) -may incorrectly search LD_LIBRARY_PATH to determine which library to load, -leading to the execution of library code that is attacker controlled. - -The only viable vector for exploitation of this bug is local, if a static -setuid program exists, and that program calls dlopen, then it may search -LD_LIBRARY_PATH to locate the SONAME to load. No such program has been -discovered at the time of publishing this advisory, but the presence of -custom setuid programs, although strongly discouraged as a security -practice, cannot be discounted. - -CVE-Id: CVE-2025-4802 -Public-Date: 2025-05-16 -Vulnerable-Commit: 10e93d968716ab82931d593bada121c17c0a4b93 (2.27) -Fix-Commit: 5451fa962cd0a90a0e2ec1d8910a559ace02bba0 (2.39) -Fix-Commit: 3be3728df2f1912c80abd3288bc6e3a25ad679e4 (2.38-132) -Fix-Commit: 7403ede2d7752e59e0c47d5d33d73c2bf850e7be (2.37-154) -Fix-Commit: 2ef7850279b2931caf6d6d6743ebaa91839e1cf7 (2.36-227) -Fix-Commit: 621c65ccf12ddd415ceeb2234423bd1acd0fabb3 (2.35-387) -Fix-Commit: 35018c0fd20eac9ceaf60060fed2745b3177359d (2.34-517) diff '--color=auto' -Naurp glibc/advisories/GLIBC-SA-2025-0003 glibc-2.44/advisories/GLIBC-SA-2025-0003 --- glibc/advisories/GLIBC-SA-2025-0003 2026-08-15 13:43:41.443873867 -0600 +++ glibc-2.44/advisories/GLIBC-SA-2025-0003 1969-12-31 17:00:00.000000000 -0700 @@ -1,30 +0,0 @@ -power10: strcmp fails to save and restore nonvolatile vector registers - -The Power 10 implementation of strcmp in -sysdeps/powerpc/powerpc64/le/power10/strcmp.S failed to save/restore -nonvolatile vector registers in the 32-byte aligned loop path. This -results in callers reading content from those registers in a different -context, potentially altering program logic. - -There could be a program context where a user controlled string could -leak through strcmp into program code, thus altering its logic. There -is also a potential for sensitive strings passed into strcmp leaking -through the clobbered registers into parts of the calling program that -should otherwise not have had access to those strings. - -The impact of this flaw is limited to applications running on Power 10 -hardware that use the nonvolatile vector registers, i.e. v20 to v31 -assuming that they have been treated in accordance with the OpenPower -psABI. It is possible to work around the issue for those specific -applications by setting the glibc.cpu.hwcaps tunable to "-arch_3_1" like -so: - - export GLIBC_TUNABLES=glibc.cpu.hwcaps=-arch_3_1 - -CVE-Id: CVE-2025-5702 -Public-Date: 2025-06-04 -Vulnerable-Commit: 3367d8e180848030d1646f088759f02b8dfe0d6f (2.39) -Fix-Commit: 15808c77b35319e67ee0dc8f984a9a1a434701bc (2.42) -Fix-Commit: 0c76c951620f9e12df2a89b2c684878b55bb6795 (2.41-60) -Fix-Commit: 7e12550b8e3a11764a4a9090ce6bd3fc23fc8a8e (2.40-139) -Fix-Commit: 06a70769fd0b2e1f2a3085ad50ab620282bd77b3 (2.39-209) diff '--color=auto' -Naurp glibc/advisories/GLIBC-SA-2025-0004 glibc-2.44/advisories/GLIBC-SA-2025-0004 --- glibc/advisories/GLIBC-SA-2025-0004 2026-08-15 13:43:41.443873867 -0600 +++ glibc-2.44/advisories/GLIBC-SA-2025-0004 1969-12-31 17:00:00.000000000 -0700 @@ -1,29 +0,0 @@ -power10: strncmp fails to save and restore nonvolatile vector registers - -The Power 10 implementation of strncmp in -sysdeps/powerpc/powerpc64/le/power10/strncmp.S failed to save/restore -nonvolatile vector registers in the 32-byte aligned loop path. This -results in callers reading content from those registers in a different -context, potentially altering program logic. - -There could be a program context where a user controlled string could -leak through strncmp into program code, thus altering its logic. There -is also a potential for sensitive strings passed into strncmp leaking -through the clobbered registers into parts of the calling program that -should otherwise not have had access to those strings. - -The impact of this flaw is limited to applications running on Power 10 -hardware that use the nonvolatile vector registers, i.e. v20 to v31 -assuming that they have been treated in accordance with the OpenPower -psABI. It is possible to work around the issue for those specific -applications by setting the glibc.cpu.hwcaps tunable to "-arch_3_1" like -so: - - export GLIBC_TUNABLES=glibc.cpu.hwcaps=-arch_3_1 - -CVE-Id: CVE-2025-5745 -Public-Date: 2025-06-05 -Vulnerable-Commit: 23f0d81608d0ca6379894ef81670cf30af7fd081 (2.40) -Fix-Commit: 63c60101ce7c5eac42be90f698ba02099b41b965 (2.42) -Fix-Commit: 84bdbf8a6f2fdafd3661489dbb7f79835a52da82 (2.41-57) -Fix-Commit: 42a5a940c974d02540c8da26d6374c744d148cb9 (2.40-136) diff '--color=auto' -Naurp glibc/advisories/GLIBC-SA-2025-0005 glibc-2.44/advisories/GLIBC-SA-2025-0005 --- glibc/advisories/GLIBC-SA-2025-0005 2026-08-15 13:43:41.443873867 -0600 +++ glibc-2.44/advisories/GLIBC-SA-2025-0005 1969-12-31 17:00:00.000000000 -0700 @@ -1,14 +0,0 @@ -posix: Fix double-free after allocation failure in regcomp - -The regcomp function in the GNU C library version from 2.4 to 2.41 is -subject to a double free if some previous allocation fails. It can be -accomplished either by a malloc failure or by using an interposed -malloc that injects random malloc failures. The double free can allow -buffer manipulation depending of how the regex is constructed. -This issue affects all architectures and ABIs supported by the GNU C -library. - -CVE-Id: CVE-2025-8058 -Public-Date: 2025-07-22 -Vulnerable-Commit: 963d8d782fc98fb6dc3a66f0068795f9920c269d (2.3.3-1596) -Fix-Commit: 7ea06e994093fa0bcca0d0ee2c1db271d8d7885d (2.42) diff '--color=auto' -Naurp glibc/advisories/GLIBC-SA-2026-0001 glibc-2.44/advisories/GLIBC-SA-2026-0001 --- glibc/advisories/GLIBC-SA-2026-0001 2026-08-15 13:43:41.443873867 -0600 +++ glibc-2.44/advisories/GLIBC-SA-2026-0001 1969-12-31 17:00:00.000000000 -0700 @@ -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 '--color=auto' -Naurp glibc/advisories/GLIBC-SA-2026-0002 glibc-2.44/advisories/GLIBC-SA-2026-0002 --- glibc/advisories/GLIBC-SA-2026-0002 2026-08-15 13:43:41.443873867 -0600 +++ glibc-2.44/advisories/GLIBC-SA-2026-0002 1969-12-31 17:00:00.000000000 -0700 @@ -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 '--color=auto' -Naurp glibc/advisories/GLIBC-SA-2026-0003 glibc-2.44/advisories/GLIBC-SA-2026-0003 --- glibc/advisories/GLIBC-SA-2026-0003 2026-08-15 13:43:41.443873867 -0600 +++ glibc-2.44/advisories/GLIBC-SA-2026-0003 1969-12-31 17:00:00.000000000 -0700 @@ -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 '--color=auto' -Naurp glibc/advisories/GLIBC-SA-2026-0004 glibc-2.44/advisories/GLIBC-SA-2026-0004 --- glibc/advisories/GLIBC-SA-2026-0004 2026-08-15 13:43:41.443873867 -0600 +++ glibc-2.44/advisories/GLIBC-SA-2026-0004 1969-12-31 17:00:00.000000000 -0700 @@ -1,30 +0,0 @@ -nscd client crash on x86_64 under high nscd load - -Calling NSS-backed functions that support caching via nscd may call the -nscd client side code and in the GNU C Library version 2.36 under high -load on x86_64 systems, the client may call memcmp on inputs that are -concurrently modified by other processes or threads and crash. - -The nscd client in the GNU C Library uses the memcmp function with -inputs that may be concurrently modified by another thread, potentially -resulting in spurious cache misses, which in itself is not a security -issue. However in the GNU C Library version 2.36 an optimized -implementation of memcmp was introduced for x86_64 which could crash -when invoked with such undefined behaviour, turning this into a -potential crash of the nscd client and the application that uses it. -This implementation was backported to the 2.35 branch, making the nscd -client in that branch vulnerable as well. Subsequently, the fix for -this issue was backported to all vulnerable branches in the GNU C -Library repository. - -It is advised that distributions that may have cherry-picked the memcpy -SSE2 optimization in their copy of the GNU C Library, also apply the fix -to avoid the potential crash in the nscd client. - -CVE-Id: CVE-2026-3904 -Public-Date: 2026-03-11 -Vulnerable-Commit: 8804157ad9da39631703b92315460808eac86b0c (2.36) -Vulnerable-Commit: 5a8df6485c584e2b0e957ec6b9070437a724911a (2.35-89) -Fix-Commit: b712be52645282c706a5faa038242504feb06db5 (2.37) -Fix-Commit: 93967a2a7bbdcedb73e0b246713580c7c84d001e (2.36-84) -Fix-Commit: 6bcd5d8e3668d52388a6e0580611749f93e6871f (2.35-230) diff '--color=auto' -Naurp glibc/advisories/GLIBC-SA-2026-0005 glibc-2.44/advisories/GLIBC-SA-2026-0005 --- glibc/advisories/GLIBC-SA-2026-0005 2026-08-15 13:43:41.443873867 -0600 +++ glibc-2.44/advisories/GLIBC-SA-2026-0005 1969-12-31 17:00:00.000000000 -0700 @@ -1,37 +0,0 @@ -gethostbyaddr and gethostbyaddr_r may incorrectly handle DNS response - -Calling gethostbyaddr or gethostbyaddr_r with a configured nsswitch.conf -that specifies the library's DNS backend in the GNU C Library version -2.34 to version 2.43 could, with a crafted response from the configured -DNS server, result in a violation of the DNS specification that causes -the application to treat a non-answer section of the DNS response as a -valid answer. - -A defect in the getanswer_ptr function, which implements the iteration -and extraction of the answer from the DNS response, can cause it to -incorrectly transition from the answer section to the next section while -still treating it as an answer to the question. This can happen when -the answer contains only skipped records, and the subsequent section -contains a semantically invalid T_PTR record. This is considered a -security issue because it is a violation of the DNS specification that -leads to incorrect behaviour that could result in the wrong hostname -being returned to the caller. At the time of publication, no known -affected DNS server returns results that would be incorrectly -interpreted by the library. An attacker would either need to be network -adjacent or have compromised the DNS server to use this defect to hide -returned reverse DNS results from intrusion detection systems. Even -then, the inbound connection from the attacker, or the outbound -connection from the application, would be visible to the intrusion -detection system. At best, the defect can be used to obfuscate and -delay analysis of the evolving threat. - -CVE-Id: CVE-2026-4437 -Public-Date: 2026-03-20 -Vulnerable-Commit: 32e5db37684ffcbc6ae34fcc6cdcf28670506baa (2.34-323) -Vulnerable-Commit: def97e7f71a07517810f7263213d607e08ad21f1 (2.35-188) -Vulnerable-Commit: 77f523c473878ec0051582ef15161c6982879095 (2.36-30) -Vulnerable-Commit: e32547d661a43da63368e488b6cfa9c53b4dcf92 (2.37) -Fix-Commit: 5c6fca0c62ce5bd6e68e259f138097756cbafd4d (2.43-16) -Fix-Commit: 9f5f18aab40ec6b61fa49a007615e6077e9a979b (2.44) -Reported-by: Antonio Maini (0rbitingZer0) - 0rbitingZer0@proton.me -Reported-by: Kevin Farrell diff '--color=auto' -Naurp glibc/advisories/GLIBC-SA-2026-0006 glibc-2.44/advisories/GLIBC-SA-2026-0006 --- glibc/advisories/GLIBC-SA-2026-0006 2026-08-15 13:43:41.443873867 -0600 +++ glibc-2.44/advisories/GLIBC-SA-2026-0006 1969-12-31 17:00:00.000000000 -0700 @@ -1,27 +0,0 @@ -gethostbyaddr and gethostbyaddr_r return invalid DNS hostnames - -Calling gethostbyaddr or gethostbyaddr_r with a configured nsswitch.conf -that specifies the library's DNS backend in the GNU C library version -2.34 to version 2.43 could result in an invalid DNS hostname being -returned to the caller in violation of the DNS specification. - -A defect in the getanswer_ptr function, which implements the iteration -and extraction of the answer from a DNS response, can cause it to accept -an invalid DNS hostname that can contain shell metacharacters. An -application that uses the returned hostname in a shell, without guarding -for shell expansion, may be subject to shell injection attacks. At the -time of publication, no known affected DNS server returns results with -shell metacharacters in the results. An attacker would either need to -be network adjacent or have compromised the DNS server to use this -defect for shell injection. No known vulnerable application has been -identified. - -CVE-Id: CVE-2026-4438 -Public-Date: 2026-03-20 -Vulnerable-Commit: 32e5db37684ffcbc6ae34fcc6cdcf28670506baa (2.34-323) -Vulnerable-Commit: def97e7f71a07517810f7263213d607e08ad21f1 (2.35-188) -Vulnerable-Commit: 77f523c473878ec0051582ef15161c6982879095 (2.36-30) -Vulnerable-Commit: e32547d661a43da63368e488b6cfa9c53b4dcf92 (2.37) -Fix-Commit: dd9945c0ba40d2dbc9eb7c99291ba6b69bd66718 (2.43-17) -Fix-Commit: e10977481f4db4b2a3ce34fa4c3a1e26651ae312 (2.44) -Reported-by: Antonio Maini (0rbitingZer0) - 0rbitingZer0@proton.me diff '--color=auto' -Naurp glibc/advisories/GLIBC-SA-2026-0007 glibc-2.44/advisories/GLIBC-SA-2026-0007 --- glibc/advisories/GLIBC-SA-2026-0007 2026-08-15 13:43:41.443873867 -0600 +++ glibc-2.44/advisories/GLIBC-SA-2026-0007 1969-12-31 17:00:00.000000000 -0700 @@ -1,15 +0,0 @@ -iconv crash due to assertion failure with untrusted input - -The iconv() function in the GNU C Library versions 2.43 and earlier may -crash due to an assertion failure when converting inputs from the -IBM1390 or IBM1399 character sets, which may be used to remotely crash -an application. - -This vulnerability can be trivially mitigated by removing the IBM1390 -and IBM1399 character sets from systems that do not need them. - -CVE-Id: CVE-2026-4046 -Public-Date: 2026-03-12 -Vulnerable-Commit: 0ecb606cb6cf65de1d9fc8a919bceb4be476c602 (2.3.3-1501) -Fix-Commit: d6f08d1cf027f4eb2ba289a6cc66853722d4badc (2.44) -Reported-by: Rocket Ma diff '--color=auto' -Naurp glibc/advisories/GLIBC-SA-2026-0008 glibc-2.44/advisories/GLIBC-SA-2026-0008 --- glibc/advisories/GLIBC-SA-2026-0008 2026-08-15 13:43:41.443873867 -0600 +++ glibc-2.44/advisories/GLIBC-SA-2026-0008 1969-12-31 17:00:00.000000000 -0700 @@ -1,22 +0,0 @@ -REJECTED: Static buffer overflow in deprecated nis_local_principal - -REJECTED: CVE-2026-5358 is rejected for two reasons. Firstly it has been -discovered that no NIS+ client or server was ever released for any -Linux-based OS distributions and as such this makes the API provisional -and unused. Secondly it has been discovered that the NIS+ cold start -cache (/var/nis/NIS_COLD_START) cannot be bypassed and as such the API -can only be called with a trusted server from the pre-populated cache. -The use of a trusted server means no trust boundary is crossed and this -is therefore considered a normal bug. - -NIS+ support in the GNU C Library was never officially supported even -though an incomplete implementation of the APIs was made pulibc. To the -best knowledge of the glibc security team no open-source NIS+ server -implementations were ever released for use with this API. Applications -should not use any of the NIS+ APIs and should move to modern identity -and access management services. - -CVE-Id: CVE-2026-5358 -Public-Date: 2026-04-10 -Rejected-Date: 2026-04-33 -Reported-by: Rahul Hoysala diff '--color=auto' -Naurp glibc/advisories/GLIBC-SA-2026-0009 glibc-2.44/advisories/GLIBC-SA-2026-0009 --- glibc/advisories/GLIBC-SA-2026-0009 2026-08-15 13:43:41.443873867 -0600 +++ glibc-2.44/advisories/GLIBC-SA-2026-0009 1969-12-31 17:00:00.000000000 -0700 @@ -1,23 +0,0 @@ -scanf %mc off-by-one heap buffer overflow - -Calling the scanf family of functions with a %mc (malloc'd character -match) in the GNU C Library version 2.7 to version 2.43 with a format -width specifier with an explicit width greater than 1024 could result in -a one byte heap buffer overflow. - -The bug is in the buffer growth formula in __vfscanf_internal, which -under-allocates by one byte during realloc expansion, allowing a -controlled single-byte overwrite past the end of the heap buffer. - -The impact is limited by the fact that to execute the overwrite you need -both user controlled input data and a specific choice of maximum width -that yields a smaller than needed allocation. The latter point has to -take into account malloc's particular chunk size rounding process. The -"%[width]mc" format specifier does not appear to have notable use in -major Linux-based OS distributions, due to which the real world impact -may be limited to bespoke use cases. - -CVE-Id: CVE-2026-5450 -Public-Date: 2026-03-19 -Vulnerable-Commit: 874aa52349cc111d1f6ea5dff24bb14c306714e0 (2.7) -Reported-by: Rocket Ma diff '--color=auto' -Naurp glibc/advisories/GLIBC-SA-2026-0010 glibc-2.44/advisories/GLIBC-SA-2026-0010 --- glibc/advisories/GLIBC-SA-2026-0010 2026-08-15 13:43:41.443873867 -0600 +++ glibc-2.44/advisories/GLIBC-SA-2026-0010 1969-12-31 17:00:00.000000000 -0700 @@ -1,24 +0,0 @@ -Potential buffer under-read in ungetwc - -Calling the ungetwc function on a FILE stream with wide characters -encoded in a character set that has overlaps between its single byte and -multi-byte character encodings, in the GNU C Library version 2.43 or -earlier, may result in an attempt to read bytes before an allocated -buffer, potentially resulting in unintentional disclosure of neighboring -data in the heap, or a program crash. - -A bug in the wide character pushback implementation -(_IO_wdefault_pbackfail in libio/wgenops.c) causes ungetwc() to operate -on the regular character buffer (fp->_IO_read_ptr) instead of the actual -wide-stream read pointer (fp->_wide_data->_IO_read_ptr). The program -crash may happen in cases where fp->_IO_read_ptr is not initialized and -hence points to NULL. The buffer under-read requires a special situation -where the input character encoding is such that there are overlaps -between single byte representations and multibyte representations in -that encoding, resulting in spurious matches. The spurious match case -is not possible in the standard Unicode character sets. - -CVE-Id: CVE-2026-5928 -Public-Date: 2026-03-17 -Reported-by: Rocket Ma -Vulnerable-Commit: d64b6ad07585b8a37e5fecc9a47fcee766d52ede (2.1.1-89) diff '--color=auto' -Naurp glibc/advisories/GLIBC-SA-2026-0011 glibc-2.44/advisories/GLIBC-SA-2026-0011 --- glibc/advisories/GLIBC-SA-2026-0011 2026-08-15 13:43:41.443873867 -0600 +++ glibc-2.44/advisories/GLIBC-SA-2026-0011 1969-12-31 17:00:00.000000000 -0700 @@ -1,24 +0,0 @@ -Potential buffer overflow in ns_sprintrrf TSIG handling path - -The deprecated functions ns_printrrf, ns_printrr and fp_nquery in the -GNU C Library version 2.2 and newer fail to enforce the caller-supplied -buffer length, and can result in an out-of-bounds write when printing -TSIG records. - -A defect in the TSIG case handling within ns_sprintrrf performs a -formatted write using sprintf without checking the remaining buffer -length, and may write up to 6 bytes past the end of the buffer. If the -library is compiled with assertions, and the out-of-bounds write doesn't -terminate the process, then a subsequent check for "len <= *buflen" will -trigger an assertion failure. - -These functions are for application debugging only and hence not in the -path of code executed by the DNS resolver. Further, they have been -deprecated since version 2.34 (2021-08-02) and should not be used by any -new applications. Applications should consider porting away from these -interfaces since they may be removed in future versions. - -CVE-Id: CVE-2026-5435 -Public-Date: 2026-04-02 -Vulnerable-Commit: b43b13ac2544b11f35be301d1589b51a8473e32b (2.2) -Reported-by: shinobu diff '--color=auto' -Naurp glibc/advisories/GLIBC-SA-2026-0012 glibc-2.44/advisories/GLIBC-SA-2026-0012 --- glibc/advisories/GLIBC-SA-2026-0012 2026-08-15 13:43:41.443873867 -0600 +++ glibc-2.44/advisories/GLIBC-SA-2026-0012 1969-12-31 17:00:00.000000000 -0700 @@ -1,18 +0,0 @@ -Buffer overread in ns_printrrf with corrupted RDATA field - -The deprecated functions ns_printrrf, ns_printrr and fp_nquery in the -GNU C Library version 2.0.1 to version 2.43 fail to validate the RDATA -content against the RDATA length in a DNS response when processing A6, -CERT, LOC, TKEY or TSIG records, which may allow an attacker to craft a -DNS response, causing a target application to crash or read -uninitialized memory. - -These functions are for application debugging only and hence not in the -path of code executed by the DNS resolver. Further, they have been -deprecated since version 2.34 and should not be used by any new -applications. Applications should consider porting away from these -interfaces since they may be removed in future versions. - -CVE-Id: CVE-2026-6238 -Public-Date: 2026-04-11 -Vulnerable-Commit: ee188d555b8c32ad9704a7440cab400af967292f (1.90) diff '--color=auto' -Naurp glibc/advisories/GLIBC-SA-2026-0013 glibc-2.44/advisories/GLIBC-SA-2026-0013 --- glibc/advisories/GLIBC-SA-2026-0013 2026-08-15 13:43:41.443873867 -0600 +++ glibc-2.44/advisories/GLIBC-SA-2026-0013 1969-12-31 17:00:00.000000000 -0700 @@ -1,20 +0,0 @@ -Potential stack-based buffer clash during tilde expansion in wordexp - -Calling wordexp with a tilde (~) followed by an overly long username -in the GNU C Library version 2.2.3 to 2.43 may lead to a stack buffer -clash. - -When expanding paths that begin with a tilde (~) followed by a username, the -internal parse_tilde function extracts the username to determine the user's -home directory. The implementation allocates memory for this username directly -on the stack using the strndupa macro. Because the size of this allocation -was determined by the length of the user-supplied input without any bounds -checks, passing an excessively long username e.g. thousands of characters, -forces the thread to exhaust its stack space. Thus if an application passes -untrusted, attacker-controlled input to the wordexp function, an attacker -can trigger a stack clash. - -CVE-Id: CVE-2026-6791 -Public-Date: 2026-06-22 -Vulnerable-Commit: 344af000e1d6e9c7882b9bc48e71cb3f1b5fc03c (2.2.3-114) -Reported-by: storm diff '--color=auto' -Naurp glibc/advisories/GLIBC-SA-2026-0014 glibc-2.44/advisories/GLIBC-SA-2026-0014 --- glibc/advisories/GLIBC-SA-2026-0014 2026-08-15 13:43:41.443873867 -0600 +++ glibc-2.44/advisories/GLIBC-SA-2026-0014 1969-12-31 17:00:00.000000000 -0700 @@ -1,19 +0,0 @@ -wordexp with WRDE_APPEND may result in an invalid call to free() - -Calling wordexp with WRDE_APPEND in conjunction with an invalid expansion -(where an error like WRDE_BADCHAR would be returned) can create a stale -address in the wordexp_t that can cause an invalid free from wordfree. -This affects the GNU C Library version 2.0 to version 2.43. - -In WRDE_APPEND mode, wordexp saves the caller-visible wordexp_t state -before appending the processing input. If the word expansion grows -we_wordv via realloc, and realloc requires moving we_wordv to a new memory -location (instead of expanding in-place), and the expansion later fails, -the rollback fails to properly restore all previous we_wordv values and -may add stale pointers into the caller-visible state. A subsequent -wordfree may then issue an invalid call to free(). - -CVE-Id: CVE-2026-6368 -Public-Date: 2026-07-14 -Vulnerable-Commit: 8f2ece695d8822e9ecc63ecd157e90bf17a6fe65 (1.93-260) -Reported-by: shinobu diff '--color=auto' -Naurp glibc/advisories/README glibc-2.44/advisories/README --- glibc/advisories/README 2026-08-15 13:43:41.443873867 -0600 +++ glibc-2.44/advisories/README 1969-12-31 17:00:00.000000000 -0700 @@ -1,92 +0,0 @@ -GNU C Library Security Advisory Format -====================================== - -Security advisories in this directory follow a simple git commit log -format, with a heading and free-format description augmented with tags -to allow parsing key information. References to code changes are -specific to the glibc repository and follow a specific format: - - Tag-name: (release-version) - -The indicates a specific commit in the repository. The -release-version indicates the publicly consumable release in which this -commit is known to exist. The release-version is derived from the -git-describe format, (i.e. stripped out from glibc-2.34.NNN-gxxxx) and -is of the form 2.34-NNN. If the -NNN suffix is absent, it means that -the change is in that release tarball, otherwise the change is on the -release/2.YY/master branch and not in any released tarball. - -The following tags are currently being used: - -CVE-Id: -This is the CVE-Id assigned under the CVE Program -(https://www.cve.org/). - -Public-Date: -The date this issue became publicly known. - -Rejected-Date: -The most recent date the assigned advisory was rejected. If the advisory -is ever published again the Rejected-Date tag should be removed. - -Vulnerable-Commit: -The commit that introduced this vulnerability. There could be multiple -entries, one for each release branch in the glibc repository; the -release-version portion of this tag should tell you which branch this is -on. - -Fix-Commit: -The commit that fixed this vulnerability. There could be multiple -entries for each release branch in the glibc repository, indicating that -all of those commits contributed to fixing that issue in each of those -branches. - -Reported-By: -The entity that reported this issue. There could be multiple entries, one for -each reporter. - -Adding an Advisory ------------------- - -An advisory for a CVE needs to be added on the master branch in two steps: - -1. Add the text of the advisory without any Fix-Commit tags along with - the fix for the CVE. Add the Vulnerable-Commit tag, if applicable. - The advisories directory does not exist in release branches, so keep - the advisory text commit distinct from the code changes, to ease - backports. Ask for the GLIBC-SA advisory number from the security - team. - -2. Finish all backports on release branches and then back on the msater - branch, add all commit refs to the advisory using the Fix-Commit - tags. Don't bother adding the release-version subscript since the - next step will overwrite it. - -3. Run the process-advisories.sh script in the scripts directory on the - advisory: - - scripts/process-advisories.sh update GLIBC-SA-YYYY-NNNN - - (replace YYYY-NNNN with the actual advisory number). - -4. Verify the updated advisory and push the result. - -Rejecting an Advisory ---------------------- - -Rejecting an advisory on the master branch can be done in one step: - -1. Mark the advisory as rejected. Add the text "REJECTED: " as a prefix - to any short-form description. Add a new paragraph that starts with - "REJECTED: " and explains the reason for the rejection including - justification for why it no longer has security impact. Lastly add - a Rejected-Date tag to the advisory. - -Getting a NEWS snippet from advisories --------------------------------------- - -Run: - - scripts/process-advisories.sh news - -and copy the content into the NEWS file. diff '--color=auto' -Naurp glibc/ADVISORIES glibc-2.44/ADVISORIES --- glibc/ADVISORIES 1969-12-31 17:00:00.000000000 -0700 +++ glibc-2.44/ADVISORIES 2026-08-15 13:45:38.139126932 -0600 @@ -0,0 +1,2 @@ +For the GNU C Library Security Advisories, see the git master branch: +https://sourceware.org/git/?p=glibc.git;a=tree;f=advisories;hb=HEAD diff '--color=auto' -Naurp glibc/benchtests/Makefile glibc-2.44/benchtests/Makefile --- glibc/benchtests/Makefile 2026-08-15 13:45:04.633686306 -0600 +++ glibc-2.44/benchtests/Makefile 2026-08-15 13:43:57.757907383 -0600 @@ -622,6 +622,7 @@ $(bench-link-targets): %: %.o $(objpfx)j $(bench-link-targets): LDFLAGS += $(link-bench-bind-now) $(objpfx)bench-%.c: %-inputs $(bench-deps) + $(make-target-directory) { if [ -n "$($*-INCLUDE)" ]; then \ cat $($*-INCLUDE); \ fi; \ diff '--color=auto' -Naurp glibc/debug/tst-backtrace5.c glibc-2.44/debug/tst-backtrace5.c --- glibc/debug/tst-backtrace5.c 2026-08-15 13:45:04.633686306 -0600 +++ glibc-2.44/debug/tst-backtrace5.c 2026-08-15 13:43:57.766092331 -0600 @@ -36,10 +36,15 @@ trampoline, read, 3 * fn, and do_test. */ #define NUM_FUNCTIONS 7 +/* Avoid the read wrapper frame truncation on targets that add extra frames + between it and handle_signal (the cancellable syscall wrappers + __syscall_cancel*, or the i686 __kernel_vsyscall entry). */ +#define MAX_FUNCTIONS 64 + void handle_signal (int signum) { - void *addresses[NUM_FUNCTIONS]; + void *addresses[MAX_FUNCTIONS]; char **symbols; int n; int i; @@ -70,23 +75,28 @@ handle_signal (int signum) return; } - /* Do not check name for signal trampoline or cancellable syscall - wrappers (__syscall_cancel*). */ - for (; i < n - 1; i++) + /* Skip the signal trampoline and any cancellable syscall wrapper frames + (__syscall_cancel*) and require the read syscall wrapper to be + present. */ + for (i = 1; i < n; i++) if (match (symbols[i], "read")) break; - if (i == n - 1) + if (i == n) { FAIL (); return; } - for (; i < n - 1; i++) - if (!match (symbols[i], "fn")) - { - FAIL (); - return; - } + /* The read wrapper must be followed by the three fn recursion frames. */ + for (int j = 0; j < 3; j++) + { + i++; + if (i == n || !match (symbols[i], "fn")) + { + FAIL (); + return; + } + } /* Symbol names are not available for static functions, so we do not check do_test. */ diff '--color=auto' -Naurp glibc/elf/dl-reloc.c glibc-2.44/elf/dl-reloc.c --- glibc/elf/dl-reloc.c 2026-08-15 13:45:04.634686290 -0600 +++ glibc-2.44/elf/dl-reloc.c 2026-08-15 13:45:38.140126915 -0600 @@ -278,7 +278,8 @@ _dl_relocate_object_no_relro (struct lin IFUNC resolvers. Without this, a resolver would see the unrelocated initialiser bytes that were placed into the slot by the early _dl_allocate_tls_init. */ - ELF_DYNAMIC_RELOCATE_NOIFUNC (l, scope, lazy, consider_profiling); + ELF_DYNAMIC_RELOCATE_PASS (DL_RELOC_NORMAL, l, scope, lazy, + consider_profiling, skip_ifunc); #ifdef SHARED /* Re-initialise the static TLS slot with the .tdata so the IRELATIVE @@ -291,7 +292,8 @@ _dl_relocate_object_no_relro (struct lin _dl_init_static_tls (l); #endif - ELF_DYNAMIC_RELOCATE_IFUNC (l, scope, lazy, skip_ifunc); + ELF_DYNAMIC_RELOCATE_PASS (DL_RELOC_IRELATIVE, l, scope, lazy, + 0, skip_ifunc); if ((consider_profiling || consider_symbind) && l->l_info[DT_PLTRELSZ] != NULL) diff '--color=auto' -Naurp glibc/elf/dl-reloc-static-pie.c glibc-2.44/elf/dl-reloc-static-pie.c --- glibc/elf/dl-reloc-static-pie.c 2026-08-15 13:45:04.634686290 -0600 +++ glibc-2.44/elf/dl-reloc-static-pie.c 2026-08-15 13:45:38.140126915 -0600 @@ -80,7 +80,7 @@ _dl_relocate_static_pie (void) /* Relocate ourselves so we can do normal function calls and data access using the global offset table. IRELATIVE entries are deferred. */ - ELF_DYNAMIC_RELOCATE_NOIFUNC (main_map, NULL, 0, 0); + ELF_DYNAMIC_RELOCATE_PASS (DL_RELOC_NORMAL, main_map, NULL, 0, 0, 0); /* Initialize _r_debug_extended. */ struct r_debug *r = _dl_debug_initialize (0, LM_ID_BASE); @@ -98,7 +98,7 @@ void _dl_relocate_static_pie_ifunc (void) { struct link_map *main_map = _dl_get_dl_main_map (); - ELF_DYNAMIC_RELOCATE_IFUNC (main_map, NULL, 0, 0); + ELF_DYNAMIC_RELOCATE_PASS (DL_RELOC_IRELATIVE, main_map, NULL, 0, 0, 0); main_map->l_relocated = 1; } #endif diff '--color=auto' -Naurp glibc/elf/do-rel.h glibc-2.44/elf/do-rel.h --- glibc/elf/do-rel.h 2026-08-15 13:45:04.634686290 -0600 +++ glibc-2.44/elf/do-rel.h 2026-08-15 13:43:57.768624188 -0600 @@ -79,17 +79,23 @@ elf_dynamic_Rel_audit_symbind (struct li /* Perform the relocations in MAP on the running program image as specified by RELTAG, SZTAG. If LAZY is nonzero, this is the first pass on PLT relocations; they should be set up to call _dl_runtime_resolve, rather - than fully resolved now. + than fully resolved now. If SKIP_IFUNC is nonzero no IFUNC resolver is + called; this is required for the trace modes (ldd -u / ldd -r), which + relocate objects. - IRELATIVE entries are always skipped (non-bootstrap); they are handled + IRELATIVE entries and relocations against an STT_GNU_IFUNC symbol defined + in MAP itself are always skipped (non-bootstrap); they are handled separately by elf_dynamic_do_Rel_irelative after all other relocations - for both .rel.dyn and .rel.plt have been processed. */ + for both .rel.dyn and .rel.plt have been processed. Relocations against + an IFUNC symbol defined in *another* object are not deferred, since the + IFUNC symbol is only known after symbol resolution, and the defining object + has already been relocated at this point. */ static inline void __attribute__ ((always_inline)) elf_dynamic_do_Rel (struct link_map *map, struct r_scope_elem *scope[], ElfW(Addr) reladdr, ElfW(Addr) relsize, __typeof (((ElfW(Dyn) *) 0)->d_un.d_val) nrelative, - int lazy) + int lazy, int skip_ifunc) { const ElfW(Rel) *relative = (const void *) reladdr; const ElfW(Rel) *r = relative + nrelative; @@ -111,7 +117,7 @@ elf_dynamic_do_Rel (struct link_map *map void *const r_addr_arg = (void *) (l_addr + r->r_offset); const struct r_found_version *rversion = &map->l_versions[ndx]; - elf_machine_rel (map, scope, r, sym, rversion, r_addr_arg, 0); + elf_machine_rel (map, scope, r, sym, rversion, r_addr_arg, skip_ifunc); } #else /* !RTLD_BOOTSTRAP */ #if !defined DO_RELA || !defined ELF_MACHINE_PLT_REL @@ -126,7 +132,7 @@ elf_dynamic_do_Rel (struct link_map *map const ElfW (Sym) *sym = &symtab[ELFW (R_SYM) (r->r_info)]; if (elf_dynamic_is_Rel_irelative (r, sym)) continue; - elf_machine_lazy_rel (map, scope, l_addr, r, 0); + elf_machine_lazy_rel (map, scope, l_addr, r, skip_ifunc); } } else @@ -158,7 +164,8 @@ elf_dynamic_do_Rel (struct link_map *map if (elf_dynamic_is_Rel_irelative (r, sym)) continue; - elf_machine_rel (map, scope, r, sym, rversion, r_addr_arg, 0); + elf_machine_rel (map, scope, r, sym, rversion, r_addr_arg, + skip_ifunc); elf_dynamic_Rel_audit_symbind (map, scope, r, sym, rversion, r_addr_arg); } @@ -172,7 +179,8 @@ elf_dynamic_do_Rel (struct link_map *map if (elf_dynamic_is_Rel_irelative (r, sym)) continue; - elf_machine_rel (map, scope, r, sym, NULL, r_addr_arg, 0); + elf_machine_rel (map, scope, r, sym, NULL, r_addr_arg, + skip_ifunc); elf_dynamic_Rel_audit_symbind (map, scope, r, sym, NULL, r_addr_arg); } diff '--color=auto' -Naurp glibc/elf/dynamic-link.h glibc-2.44/elf/dynamic-link.h --- glibc/elf/dynamic-link.h 2026-08-15 13:45:04.634686290 -0600 +++ glibc-2.44/elf/dynamic-link.h 2026-08-15 13:45:38.140126915 -0600 @@ -78,18 +78,23 @@ elf_machine_lazy_rel (struct link_map *m consumes precisely the very end of the DT_REL*, or DT_JMPREL and DT_REL* are completely separate and there is a gap between them. */ -/* This controls which sub-passes _ELF_DYNAMIC_DO_RELOC runs. Used to - interleave TLS / stack-protector setup between the two passes so IFUNC - resolvers see a fully-initialised TCB. */ -enum elf_dynamic_reloc_phase +/* Selects which relocations a pass processes. Splitting them allows the + caller to interleave TLS / stack-protector setup between the two passes, + so IFUNC resolvers see a fully-initialised TCB. + + This is orthogonal to the skip_ifunc argument, which says whether an IFUNC + resolver may be run at all and is honoured by every pass. In particular + DL_RELOC_NORMAL also runs IFUNC resolvers, for relocations against an + IFUNC symbol defined in another object. */ +enum elf_dynamic_reloc_pass { - DL_RELOC_BOTH = 0, /* Non-IRELATIVE pass then IRELATIVE pass. */ - DL_RELOC_NOIFUNC = 1, /* Non-IRELATIVE pass only. */ - DL_RELOC_IFUNC = 2, /* IRELATIVE pass only. */ + DL_RELOC_ALL = 0, /* Non-IRELATIVE relocations, then IRELATIVE. */ + DL_RELOC_NORMAL = 1, /* Non-IRELATIVE relocations only. */ + DL_RELOC_IRELATIVE = 2, /* IRELATIVE relocations only. */ }; # define _ELF_DYNAMIC_DO_RELOC(RELOC, reloc, map, scope, do_lazy, skip_ifunc, \ - test_rel, phase) \ + test_rel, pass) \ do { \ struct { ElfW(Addr) start, size; \ __typeof (((ElfW(Dyn) *) 0)->d_un.d_val) nrelative; int lazy; } \ @@ -136,14 +141,15 @@ enum elf_dynamic_reloc_phase by the linker. */ \ if (!DO_RTLD_BOOTSTRAP) \ { \ - if ((phase) != DL_RELOC_IFUNC) \ + if ((pass) != DL_RELOC_IRELATIVE) \ for (int ranges_index = 0; ranges_index < 2; ++ranges_index) \ elf_dynamic_do_##reloc ((map), scope, \ ranges[ranges_index].start, \ ranges[ranges_index].size, \ ranges[ranges_index].nrelative, \ - ranges[ranges_index].lazy); \ - if ((phase) != DL_RELOC_NOIFUNC) \ + ranges[ranges_index].lazy, \ + skip_ifunc); \ + if ((pass) != DL_RELOC_NORMAL) \ for (int ranges_index = 0; ranges_index < 2; ++ranges_index) \ elf_dynamic_do_##reloc##_irelative ((map), scope, \ ranges[ranges_index].start, \ @@ -158,7 +164,8 @@ enum elf_dynamic_reloc_phase ranges[ranges_index].start, \ ranges[ranges_index].size, \ ranges[ranges_index].nrelative, \ - ranges[ranges_index].lazy); \ + ranges[ranges_index].lazy, \ + skip_ifunc); \ } while (0) # if ELF_MACHINE_NO_REL || ELF_MACHINE_NO_RELA @@ -169,37 +176,21 @@ enum elf_dynamic_reloc_phase # if ! ELF_MACHINE_NO_REL # include "do-rel.h" -# define ELF_DYNAMIC_DO_REL(map, scope, lazy, skip_ifunc) \ +# define ELF_DYNAMIC_DO_REL(map, scope, lazy, skip_ifunc, pass) \ _ELF_DYNAMIC_DO_RELOC (REL, Rel, map, scope, lazy, skip_ifunc, \ - _ELF_CHECK_REL, DL_RELOC_BOTH) -# define ELF_DYNAMIC_DO_REL_NOIFUNC(map, scope, lazy) \ - _ELF_DYNAMIC_DO_RELOC (REL, Rel, map, scope, lazy, 0, \ - _ELF_CHECK_REL, DL_RELOC_NOIFUNC) -# define ELF_DYNAMIC_DO_REL_IFUNCONLY(map, scope, lazy, skip_ifunc) \ - _ELF_DYNAMIC_DO_RELOC (REL, Rel, map, scope, lazy, skip_ifunc, \ - _ELF_CHECK_REL, DL_RELOC_IFUNC) + _ELF_CHECK_REL, pass) # else -# define ELF_DYNAMIC_DO_REL(map, scope, lazy, skip_ifunc) /* Nothing to do. */ -# define ELF_DYNAMIC_DO_REL_NOIFUNC(map, scope, lazy) /* Nothing to do. */ -# define ELF_DYNAMIC_DO_REL_IFUNCONLY(map, scope, lazy, skip_ifunc) /* Nothing. */ +# define ELF_DYNAMIC_DO_REL(map, scope, lazy, skip_ifunc, pass) /* Nothing. */ # endif # if ! ELF_MACHINE_NO_RELA # define DO_RELA # include "do-rel.h" -# define ELF_DYNAMIC_DO_RELA(map, scope, lazy, skip_ifunc) \ - _ELF_DYNAMIC_DO_RELOC (RELA, Rela, map, scope, lazy, skip_ifunc, \ - _ELF_CHECK_REL, DL_RELOC_BOTH) -# define ELF_DYNAMIC_DO_RELA_NOIFUNC(map, scope, lazy) \ - _ELF_DYNAMIC_DO_RELOC (RELA, Rela, map, scope, lazy, 0, \ - _ELF_CHECK_REL, DL_RELOC_NOIFUNC) -# define ELF_DYNAMIC_DO_RELA_IFUNCONLY(map, scope, lazy, skip_ifunc) \ +# define ELF_DYNAMIC_DO_RELA(map, scope, lazy, skip_ifunc, pass) \ _ELF_DYNAMIC_DO_RELOC (RELA, Rela, map, scope, lazy, skip_ifunc, \ - _ELF_CHECK_REL, DL_RELOC_IFUNC) + _ELF_CHECK_REL, pass) # else -# define ELF_DYNAMIC_DO_RELA(map, scope, lazy, skip_ifunc) /* Nothing to do. */ -# define ELF_DYNAMIC_DO_RELA_NOIFUNC(map, scope, lazy) /* Nothing to do. */ -# define ELF_DYNAMIC_DO_RELA_IFUNCONLY(map, scope, lazy, skip_ifunc) /* Nothing. */ +# define ELF_DYNAMIC_DO_RELA(map, scope, lazy, skip_ifunc, pass) /* Nothing. */ # endif # define ELF_DYNAMIC_DO_RELR(map) \ @@ -240,37 +231,33 @@ enum elf_dynamic_reloc_phase # else # define DO_RTLD_BOOTSTRAP 0 # endif -# define ELF_DYNAMIC_RELOCATE(map, scope, lazy, consider_profile, skip_ifunc) \ - do { \ - int edr_lazy = elf_machine_runtime_setup ((map), (scope), (lazy), \ - (consider_profile)); \ - if (!is_rtld_link_map (map) || DO_RTLD_BOOTSTRAP) \ - ELF_DYNAMIC_DO_RELR (map); \ - ELF_DYNAMIC_DO_REL ((map), (scope), edr_lazy, skip_ifunc); \ - ELF_DYNAMIC_DO_RELA ((map), (scope), edr_lazy, skip_ifunc); \ - ELF_DYNAMIC_AFTER_RELOC ((map), (edr_lazy)); \ - } while (0) - -/* Like ELF_DYNAMIC_RELOCATE but only processes the non-IRELATIVE pass. - The IRELATIVE pass must be completed later via ELF_DYNAMIC_RELOCATE_IFUNC. - Used by the static-pie startup so the TCB and stack-protector canary can - be initialised between the two passes. */ -# define ELF_DYNAMIC_RELOCATE_NOIFUNC(map, scope, lazy, consider_profile) \ +/* Perform one relocation pass over MAP. PASS selects which relocations are + processed. It is orthogonal to SKIP_IFUNC, which suppresses running IFUNC + resolvers in whichever pass is selected. + + Unless PASS is DL_RELOC_IRELATIVE, this also performs the machine-specific + PLT/GOT setup, the DT_RELR relocations, and the ELF_DYNAMIC_AFTER_RELOC + hook. */ +# define ELF_DYNAMIC_RELOCATE_PASS(pass, map, scope, lazy, consider_profile, \ + skip_ifunc) \ do { \ - int edr_lazy = elf_machine_runtime_setup ((map), (scope), (lazy), \ + int edr_lazy = (lazy); \ + if ((pass) != DL_RELOC_IRELATIVE) \ + { \ + edr_lazy = elf_machine_runtime_setup ((map), (scope), (lazy), \ (consider_profile)); \ - if (!is_rtld_link_map (map) || DO_RTLD_BOOTSTRAP) \ - ELF_DYNAMIC_DO_RELR (map); \ - ELF_DYNAMIC_DO_REL_NOIFUNC ((map), (scope), edr_lazy); \ - ELF_DYNAMIC_DO_RELA_NOIFUNC ((map), (scope), edr_lazy); \ - ELF_DYNAMIC_AFTER_RELOC ((map), (edr_lazy)); \ + if (!is_rtld_link_map (map) || DO_RTLD_BOOTSTRAP) \ + ELF_DYNAMIC_DO_RELR (map); \ + } \ + ELF_DYNAMIC_DO_REL ((map), (scope), edr_lazy, skip_ifunc, (pass)); \ + ELF_DYNAMIC_DO_RELA ((map), (scope), edr_lazy, skip_ifunc, (pass)); \ + if ((pass) != DL_RELOC_IRELATIVE) \ + ELF_DYNAMIC_AFTER_RELOC ((map), edr_lazy); \ } while (0) -/* IRELATIVE-only companion to ELF_DYNAMIC_RELOCATE_NOIFUNC. */ -# define ELF_DYNAMIC_RELOCATE_IFUNC(map, scope, lazy, skip_ifunc) \ - do { \ - ELF_DYNAMIC_DO_REL_IFUNCONLY ((map), (scope), (lazy), skip_ifunc); \ - ELF_DYNAMIC_DO_RELA_IFUNCONLY ((map), (scope), (lazy), skip_ifunc); \ - } while (0) +/* Run both passes back to back, for callers with nothing to interleave. */ +# define ELF_DYNAMIC_RELOCATE(map, scope, lazy, consider_profile, skip_ifunc) \ + ELF_DYNAMIC_RELOCATE_PASS (DL_RELOC_ALL, (map), (scope), (lazy), \ + (consider_profile), skip_ifunc) #endif diff '--color=auto' -Naurp glibc/elf/Makefile glibc-2.44/elf/Makefile --- glibc/elf/Makefile 2026-08-15 13:45:04.633686306 -0600 +++ glibc-2.44/elf/Makefile 2026-08-15 13:45:38.140126915 -0600 @@ -1396,6 +1396,13 @@ modules-names += \ tst-ifunc-tls-write-lib \ tst-tls-tdata-reloc-lib \ # modules-names +ifeq (yes,$(have-gcc-ifunc)) +tests += \ + tst-ifunc-fault-dep-bindnow \ + tst-ifunc-fault-dep-lazy \ + # tests +modules-names += tst-ifunc-fault-mod +endif ifneq (no,$(have-test-mtls-descriptor)) tests += tst-ifunc-tls-init-tlsdesc modules-names += tst-ifunc-tls-init-tlsdesc-lib @@ -1574,7 +1581,9 @@ $(objpfx)dl-allobjs.os: $(all-rtld-routi # when compiled for libc. rtld-stubbed-symbols = \ __libc_assert_fail \ - __syscall_cancel \ + __libc_single_threaded_internal \ + __syscall_cancel_arch \ + __syscall_do_cancel \ calloc \ free \ malloc \ @@ -2545,6 +2554,27 @@ $(objpfx)tst-ifunc-fault-bindnow.out: $( $(objpfx)ld.so $(tst-ifunc-fault-script) +LDFLAGS-tst-ifunc-fault-dep-lazy = -Wl,-z,lazy +LDFLAGS-tst-ifunc-fault-dep-bindnow = -Wl,-z,now +define tst-ifunc-fault-dep-script +( $(test-wrapper) $(rtld-prefix) --verify $< \ + && $(test-wrapper-env) LD_TRACE_LOADED_OBJECTS=1 $(rtld-prefix) $< \ + && $(test-wrapper-env) LD_TRACE_LOADED_OBJECTS=1 LD_DEBUG=unused \ + $(rtld-prefix) $< \ + && $(test-wrapper-env) LD_TRACE_LOADED_OBJECTS=1 LD_WARN=yes LD_BIND_NOW=1 \ + $(rtld-prefix) $< \ +) > $@; $(evaluate-test) +endef +$(objpfx)tst-ifunc-fault-dep-lazy: $(objpfx)tst-ifunc-fault-mod.so +$(objpfx)tst-ifunc-fault-dep-bindnow: $(objpfx)tst-ifunc-fault-mod.so +$(objpfx)tst-ifunc-fault-dep-lazy.out: $(objpfx)tst-ifunc-fault-dep-lazy \ + $(objpfx)tst-ifunc-fault-mod.so $(objpfx)ld.so + $(tst-ifunc-fault-dep-script) +$(objpfx)tst-ifunc-fault-dep-bindnow.out: \ + $(objpfx)tst-ifunc-fault-dep-bindnow \ + $(objpfx)tst-ifunc-fault-mod.so $(objpfx)ld.so + $(tst-ifunc-fault-dep-script) + LDFLAGS-tst-ifunc-plt-lib.so = -Wl,-z,lazy tst-ifunc-plt-bindnow-ENV = LD_BIND_NOW=1 diff '--color=auto' -Naurp glibc/elf/tst-ifunc-fault-dep-bindnow.c glibc-2.44/elf/tst-ifunc-fault-dep-bindnow.c --- glibc/elf/tst-ifunc-fault-dep-bindnow.c 1969-12-31 17:00:00.000000000 -0700 +++ glibc-2.44/elf/tst-ifunc-fault-dep-bindnow.c 2026-08-15 13:43:57.772925040 -0600 @@ -0,0 +1,19 @@ +/* Program calling an IFUNC defined in a dependency. BIND_NOW variant. + 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 "tst-ifunc-fault-dep-lazy.c" diff '--color=auto' -Naurp glibc/elf/tst-ifunc-fault-dep-lazy.c glibc-2.44/elf/tst-ifunc-fault-dep-lazy.c --- glibc/elf/tst-ifunc-fault-dep-lazy.c 1969-12-31 17:00:00.000000000 -0700 +++ glibc-2.44/elf/tst-ifunc-fault-dep-lazy.c 2026-08-15 13:43:57.772932163 -0600 @@ -0,0 +1,27 @@ +/* Program calling an IFUNC defined in a dependency (BZ 34428). + 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 + . */ + +extern void magic (void); + +int +main (void) +{ + /* JMP_SLOT relocation against an undefined symbol. */ + magic (); + return 1; +} diff '--color=auto' -Naurp glibc/elf/tst-ifunc-fault-mod.c glibc-2.44/elf/tst-ifunc-fault-mod.c --- glibc/elf/tst-ifunc-fault-mod.c 1969-12-31 17:00:00.000000000 -0700 +++ glibc-2.44/elf/tst-ifunc-fault-mod.c 2026-08-15 13:45:38.140126915 -0600 @@ -0,0 +1,38 @@ +/* Shared object exporting an IFUNC symbol with a resolver which crashes. + 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 + +static void +implementation (void) +{ + /* Produce a crash, without depending on any relocations. */ + volatile char *volatile p = NULL; + *p = 0; +} + +static __typeof__ (implementation) * +resolver (void) +{ + /* Produce a crash, without depending on any relocations. */ + volatile char *volatile p = NULL; + *p = 0; + return implementation; +} + +void magic (void) __attribute__ ((ifunc ("resolver"))); diff '--color=auto' -Naurp glibc/elf/tst-ldconfig-cache.c glibc-2.44/elf/tst-ldconfig-cache.c --- glibc/elf/tst-ldconfig-cache.c 2026-08-15 13:45:04.634686290 -0600 +++ glibc-2.44/elf/tst-ldconfig-cache.c 2026-08-15 13:43:57.773339722 -0600 @@ -85,7 +85,10 @@ corrupt (void) static void ldconfig (void) { - xsystem ("/sbin/ldconfig -X"); + char *cmd = xasprintf("%s/ldconfig -X", support_install_rootsbindir); + xsystem (cmd); + + free(cmd); } /* Change ld.so.conf to refer to the new directory, and generate a new diff '--color=auto' -Naurp glibc/io/ftw64.c glibc-2.44/io/ftw64.c --- glibc/io/ftw64.c 2026-08-15 13:45:04.634686290 -0600 +++ glibc-2.44/io/ftw64.c 2026-08-15 13:43:57.792298941 -0600 @@ -31,6 +31,9 @@ #define ftw __rename_ftw #define nftw __rename_nftw +#include + +#include #include #include "ftw-common.c" @@ -44,7 +47,7 @@ versioned_symbol (libc, __new_nftw64, nf compat_symbol (libc, __old_nftw64, nftw64, GLIBC_2_1); #endif -#ifdef __OFF_T_MATCHES_OFF64_T +#if XSTAT_IS_XSTAT64 weak_alias (__ftw64, ftw) versioned_symbol (libc, __new_nftw64, nftw, GLIBC_2_3_3); # if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_3_3) diff '--color=auto' -Naurp glibc/io/ftw.c glibc-2.44/io/ftw.c --- glibc/io/ftw.c 2026-08-15 13:45:04.634686290 -0600 +++ glibc-2.44/io/ftw.c 2026-08-15 13:43:57.792274576 -0600 @@ -18,7 +18,9 @@ #include -#ifndef __OFF_T_MATCHES_OFF64_T +#include + +#if !XSTAT_IS_XSTAT64 # include "ftw-common.c" versioned_symbol (libc, __new_nftw, nftw, GLIBC_2_3_3); diff '--color=auto' -Naurp glibc/Makefile glibc-2.44/Makefile --- glibc/Makefile 2026-08-15 13:45:04.632686323 -0600 +++ glibc-2.44/Makefile 2026-08-15 13:43:57.756956903 -0600 @@ -575,6 +575,14 @@ $(foreach t,$(+elf_last_subdir_targets), elf/$(t): $(addsuffix /$(t),$(filter-out elf,$(subdirs))))) endif +# The archive rules in Makerules list every stamp file as a +# prerequisite of libc_pic.a, which the elf sub-make evaluates for the +# librtld.map link, but a sub-make can only create its own directory's +# stamps. Create the top-level ones before the fan-out. +$(foreach t,$(+elf_last_subdir_targets),$(eval \ + $(addsuffix /$(t),$(subdirs)): \ + $(foreach o,$(object-suffixes-for-libc),$(common-objpfx)stamp$(o)))) + # Pass barriers: a subdirectory 'others' build links programs against # the libraries, so the 'lib' pass (including the top-level libc.so # link) must have completed. @@ -869,7 +877,11 @@ endif touch $(objpfx)testroot.pristine/install.stamp tests-special-notdir = $(patsubst $(objpfx)%, %, $(tests-special)) +# The build-only first pass of the two-pass 'make check' (see Makerules) +# passes tests-summary=no: the merge and summary are left to the second +# pass, which folds in this pass's $(tests-special) results. tests: $(tests-special) +ifneq ($(tests-summary),no) $(..)scripts/merge-test-results.sh -s $(objpfx) "" \ $(sort $(tests-special-notdir:.out=)) \ > $(objpfx)subdir-tests.sum @@ -877,11 +889,14 @@ tests: $(tests-special) $(sort $(subdirs) .) \ > $(objpfx)tests.sum $(call summarize-tests,tests.sum) +endif xtests: +ifneq ($(tests-summary),no) $(..)scripts/merge-test-results.sh -t $(objpfx) subdir-xtests.sum \ $(sort $(subdirs)) \ > $(objpfx)xtests.sum $(call summarize-tests,xtests.sum, for extra tests) +endif # The realclean target is just like distclean for the parent, but we want # the subdirs to know the difference in case they care. diff '--color=auto' -Naurp glibc/Makerules glibc-2.44/Makerules --- glibc/Makerules 2026-08-15 13:45:04.632686323 -0600 +++ glibc-2.44/Makerules 2026-08-15 13:43:57.756986468 -0600 @@ -259,7 +259,17 @@ endif # gen-py-const-headers ifdef gen-as-const-headers # Generating headers for assembly constants. # We need this defined early to get into before-compile before -# it's used in sysd-rules, below. +# it's used in sysd-rules, below. The gen-as-const-headers is evaluated +# per subdirectory, so the before-compile dependency below only orders +# the generated header before the compiles of the subdirectory whose +# Makefile adds the .sym directive. +# The parallel subdirectory recursion does not order sibling subdirectories, +# so a .sym must be added in the subdirectory that compiles its consumers, +# or in csu (which runs before the parallel) when it has consumers in +# several subdirectories. +# It must not add the same .sym in several subdirectories though: their +# concurrent sub-makes would race generating the header through the fixed +# temporary files below. # Define GEN_AS_CONST_HEADERS to avoid circular dependency [BZ #22792]. # NB: is generated from tcb-offsets.sym to define # offsets and sizes of types in and maybe which @@ -302,7 +312,12 @@ lib-names-h-abi = gnu/lib-names-$(defaul lib-names-stmp-abi = gnu/lib-names-$(default-abi).stmp before-compile += $(common-objpfx)$(lib-names-h-abi) common-generated += gnu/lib-names.h +# The $(inst_includedir)/%.h install rules are defined only where $(headers) +# is non-empty, and with parallel subdir recursion a subdir without headers +# (e.g. csu) may run before the top level has installed the header. +ifndef subdir install-others-nosubdir: $(inst_includedir)/$(lib-names-h-abi) +endif $(common-objpfx)gnu/lib-names.h: $(make-target-directory) { \ @@ -743,10 +758,20 @@ all-dt-files := $(foreach o,$(object-suf $(wildcard $(all-dt-files:.dt=.d)) # This is a funny rule in that it removes its input file. +# +# More than one make can convert the .dt files of a single object +# directory: the elf rtld-Rules recursion runs a sub-make over every +# $(rtld-subdirs) directory, concurrently with that directory's own +# sub-make under the parallel subdir recursion. Add the PID of the +# shell to the temporary name and claim the input with a rename: only +# the run that wins converts and installs the target. %.d: %.dt - @sed $(sed-remove-objpfx) $< > $(@:.d=.T) && \ - mv -f $(@:.d=.T) $@ && \ - rm -f $< + @dt=$(@:.d=.T)$$$$; \ + if mv -f $< $$dt 2>/dev/null; then \ + sed $(sed-remove-objpfx) $$dt > $$dt.new && \ + mv -f $$dt.new $@ && \ + rm -f $$dt; \ + fi # Avoid the .h.d files for any .sym files whose .h files don't exist yet. # They will be generated when they're needed, and trying too early won't work. @@ -1196,6 +1221,13 @@ ALL_BUILD_CFLAGS = $(BUILD_CFLAGS) $(BUI # therefore builds the test programs (run-built-tests=no, recursion fully # parallel) and then runs them (run-built-tests=yes). 'make tests' and a # subdirectory's own 'check' stay single-pass. +# The first pass still runs the static checks ($(tests-special): abi, +# conformtest, installed headers, ...), so tests-summary=no makes it skip +# the results merge and summary: an unexpected FAIL there would otherwise +# abort 'check' before the second pass runs any built test, and even a +# clean run would print a misleading partial summary. The .test-result +# files persist, so the second pass folds those results into the one +# complete summary at the end. check-twopass := ifndef subdir ifeq (yes,$(run-built-tests)) @@ -1204,10 +1236,10 @@ endif endif ifeq (yes,$(check-twopass)) check: - $(MAKE) run-built-tests=no tests + $(MAKE) run-built-tests=no tests-summary=no tests $(MAKE) run-built-tests=yes tests xcheck: - $(MAKE) run-built-tests=no xtests + $(MAKE) run-built-tests=no tests-summary=no xtests $(MAKE) run-built-tests=yes xtests else check: tests @@ -1411,7 +1443,7 @@ endef # Also remove the dependencies and generated source files. common-clean: common-mostlyclean -rm -f $(addprefix $(objpfx),$(generated)) - -rm -f $(objpfx)*.d $(objpfx)*.dt + -rm -f $(objpfx)*.d $(objpfx)*.dt $(objpfx)*.T[0-9]* -rm -fr $(addprefix $(objpfx),$(generated-dirs)) -rm -f $(addprefix $(common-objpfx),$(common-generated)) -rm -f $(gen-as-const-headers:%.sym=$(common-objpfx)%.h) diff '--color=auto' -Naurp glibc/math/auto-libm-test-in glibc-2.44/math/auto-libm-test-in --- glibc/math/auto-libm-test-in 2026-08-15 13:45:04.635686273 -0600 +++ glibc-2.44/math/auto-libm-test-in 2026-08-15 13:43:57.815123992 -0600 @@ -9661,6 +9661,14 @@ sinh 0x2.c5d37700c6bb03a6c24b6c9b494cp+1 sinh 0x2.c5d37700c6bb03a6c24b6c9b494ep+12 # the next value generates larger error bounds on x86_64 (binary64) sinh -0x1.633c62890fa14p+9 +sinh 0x1.2b4f4e0bb49c9p+5 +sinh -0x1.2b4f4e0bb49c9p+5 +sinh 0x1.2ac43fb6d3abap+5 +sinh -0x1.2ac43fb6d3abap+5 +sinh 0x1.b7efa91915c95p-2 +sinh -0x1.b7efa91915c95p-2 +sinh 0x1.92a5c27afbe82p+4 +sinh -0x1.92a5c27afbe82p+4 sinpi 0 sinpi -0 diff '--color=auto' -Naurp glibc/math/auto-libm-test-out-sinh glibc-2.44/math/auto-libm-test-out-sinh --- glibc/math/auto-libm-test-out-sinh 2026-08-15 13:45:04.636686256 -0600 +++ glibc-2.44/math/auto-libm-test-out-sinh 2026-08-15 13:43:57.831692527 -0600 @@ -6466,3 +6466,555 @@ sinh -0x1.633c62890fa14p+9 = sinh tonearest ibm128 -0x2.c678c5121f428p+8 : -0xf.ef3a7e711d2c75a66ea3ca1c4p+1020 : inexact-ok = sinh towardzero ibm128 -0x2.c678c5121f428p+8 : -0xf.ef3a7e711d2c75a66ea3ca1c4p+1020 : inexact-ok = sinh upward ibm128 -0x2.c678c5121f428p+8 : -0xf.ef3a7e711d2c75a66ea3ca1c4p+1020 : inexact-ok +sinh 0x1.2b4f4e0bb49c9p+5 += sinh downward binary32 0x2.569eap+4 : 0x1.f7c30ap+52 : inexact-ok += sinh tonearest binary32 0x2.569eap+4 : 0x1.f7c30ap+52 : inexact-ok += sinh towardzero binary32 0x2.569eap+4 : 0x1.f7c30ap+52 : inexact-ok += sinh upward binary32 0x2.569eap+4 : 0x1.f7c30cp+52 : inexact-ok += sinh downward binary64 0x2.569eap+4 : 0x1.f7c30a155eea3p+52 : inexact-ok += sinh tonearest binary64 0x2.569eap+4 : 0x1.f7c30a155eea4p+52 : inexact-ok += sinh towardzero binary64 0x2.569eap+4 : 0x1.f7c30a155eea3p+52 : inexact-ok += sinh upward binary64 0x2.569eap+4 : 0x1.f7c30a155eea4p+52 : inexact-ok += sinh downward intel96 0x2.569eap+4 : 0x1.f7c30a155eea3c76p+52 : inexact-ok += sinh tonearest intel96 0x2.569eap+4 : 0x1.f7c30a155eea3c78p+52 : inexact-ok += sinh towardzero intel96 0x2.569eap+4 : 0x1.f7c30a155eea3c76p+52 : inexact-ok += sinh upward intel96 0x2.569eap+4 : 0x1.f7c30a155eea3c78p+52 : inexact-ok += sinh downward m68k96 0x2.569eap+4 : 0x1.f7c30a155eea3c76p+52 : inexact-ok += sinh tonearest m68k96 0x2.569eap+4 : 0x1.f7c30a155eea3c78p+52 : inexact-ok += sinh towardzero m68k96 0x2.569eap+4 : 0x1.f7c30a155eea3c76p+52 : inexact-ok += sinh upward m68k96 0x2.569eap+4 : 0x1.f7c30a155eea3c78p+52 : inexact-ok += sinh downward binary128 0x2.569eap+4 : 0x1.f7c30a155eea3c77d646a5f84f52p+52 : inexact-ok += sinh tonearest binary128 0x2.569eap+4 : 0x1.f7c30a155eea3c77d646a5f84f52p+52 : inexact-ok += sinh towardzero binary128 0x2.569eap+4 : 0x1.f7c30a155eea3c77d646a5f84f52p+52 : inexact-ok += sinh upward binary128 0x2.569eap+4 : 0x1.f7c30a155eea3c77d646a5f84f53p+52 : inexact-ok += sinh downward ibm128 0x2.569eap+4 : 0x1.f7c30a155eea3c77d646a5f84fp+52 : inexact-ok += sinh tonearest ibm128 0x2.569eap+4 : 0x1.f7c30a155eea3c77d646a5f84f8p+52 : inexact-ok += sinh towardzero ibm128 0x2.569eap+4 : 0x1.f7c30a155eea3c77d646a5f84fp+52 : inexact-ok += sinh upward ibm128 0x2.569eap+4 : 0x1.f7c30a155eea3c77d646a5f84f8p+52 : inexact-ok += sinh downward binary32 0x2.569e9cp+4 : 0x1.f7c28cp+52 : inexact-ok += sinh tonearest binary32 0x2.569e9cp+4 : 0x1.f7c28cp+52 : inexact-ok += sinh towardzero binary32 0x2.569e9cp+4 : 0x1.f7c28cp+52 : inexact-ok += sinh upward binary32 0x2.569e9cp+4 : 0x1.f7c28ep+52 : inexact-ok += sinh downward binary64 0x2.569e9cp+4 : 0x1.f7c28c24ac22fp+52 : inexact-ok += sinh tonearest binary64 0x2.569e9cp+4 : 0x1.f7c28c24ac23p+52 : inexact-ok += sinh towardzero binary64 0x2.569e9cp+4 : 0x1.f7c28c24ac22fp+52 : inexact-ok += sinh upward binary64 0x2.569e9cp+4 : 0x1.f7c28c24ac23p+52 : inexact-ok += sinh downward intel96 0x2.569e9cp+4 : 0x1.f7c28c24ac22fbbep+52 : inexact-ok += sinh tonearest intel96 0x2.569e9cp+4 : 0x1.f7c28c24ac22fbbep+52 : inexact-ok += sinh towardzero intel96 0x2.569e9cp+4 : 0x1.f7c28c24ac22fbbep+52 : inexact-ok += sinh upward intel96 0x2.569e9cp+4 : 0x1.f7c28c24ac22fbcp+52 : inexact-ok += sinh downward m68k96 0x2.569e9cp+4 : 0x1.f7c28c24ac22fbbep+52 : inexact-ok += sinh tonearest m68k96 0x2.569e9cp+4 : 0x1.f7c28c24ac22fbbep+52 : inexact-ok += sinh towardzero m68k96 0x2.569e9cp+4 : 0x1.f7c28c24ac22fbbep+52 : inexact-ok += sinh upward m68k96 0x2.569e9cp+4 : 0x1.f7c28c24ac22fbcp+52 : inexact-ok += sinh downward binary128 0x2.569e9cp+4 : 0x1.f7c28c24ac22fbbe1ad8f17fd1ebp+52 : inexact-ok += sinh tonearest binary128 0x2.569e9cp+4 : 0x1.f7c28c24ac22fbbe1ad8f17fd1ebp+52 : inexact-ok += sinh towardzero binary128 0x2.569e9cp+4 : 0x1.f7c28c24ac22fbbe1ad8f17fd1ebp+52 : inexact-ok += sinh upward binary128 0x2.569e9cp+4 : 0x1.f7c28c24ac22fbbe1ad8f17fd1ecp+52 : inexact-ok += sinh downward ibm128 0x2.569e9cp+4 : 0x1.f7c28c24ac22fbbe1ad8f17fd18p+52 : inexact-ok += sinh tonearest ibm128 0x2.569e9cp+4 : 0x1.f7c28c24ac22fbbe1ad8f17fd2p+52 : inexact-ok += sinh towardzero ibm128 0x2.569e9cp+4 : 0x1.f7c28c24ac22fbbe1ad8f17fd18p+52 : inexact-ok += sinh upward ibm128 0x2.569e9cp+4 : 0x1.f7c28c24ac22fbbe1ad8f17fd2p+52 : inexact-ok += sinh downward binary64 0x2.569e9c1769392p+4 : 0x1.f7c28f05c4c1dp+52 : inexact-ok += sinh tonearest binary64 0x2.569e9c1769392p+4 : 0x1.f7c28f05c4c1ep+52 : inexact-ok += sinh towardzero binary64 0x2.569e9c1769392p+4 : 0x1.f7c28f05c4c1dp+52 : inexact-ok += sinh upward binary64 0x2.569e9c1769392p+4 : 0x1.f7c28f05c4c1ep+52 : inexact-ok += sinh downward intel96 0x2.569e9c1769392p+4 : 0x1.f7c28f05c4c1d8p+52 : inexact-ok += sinh tonearest intel96 0x2.569e9c1769392p+4 : 0x1.f7c28f05c4c1d8p+52 : inexact-ok += sinh towardzero intel96 0x2.569e9c1769392p+4 : 0x1.f7c28f05c4c1d8p+52 : inexact-ok += sinh upward intel96 0x2.569e9c1769392p+4 : 0x1.f7c28f05c4c1d802p+52 : inexact-ok += sinh downward m68k96 0x2.569e9c1769392p+4 : 0x1.f7c28f05c4c1d8p+52 : inexact-ok += sinh tonearest m68k96 0x2.569e9c1769392p+4 : 0x1.f7c28f05c4c1d8p+52 : inexact-ok += sinh towardzero m68k96 0x2.569e9c1769392p+4 : 0x1.f7c28f05c4c1d8p+52 : inexact-ok += sinh upward m68k96 0x2.569e9c1769392p+4 : 0x1.f7c28f05c4c1d802p+52 : inexact-ok += sinh downward binary128 0x2.569e9c1769392p+4 : 0x1.f7c28f05c4c1d800000000008f84p+52 : inexact-ok += sinh tonearest binary128 0x2.569e9c1769392p+4 : 0x1.f7c28f05c4c1d800000000008f85p+52 : inexact-ok += sinh towardzero binary128 0x2.569e9c1769392p+4 : 0x1.f7c28f05c4c1d800000000008f84p+52 : inexact-ok += sinh upward binary128 0x2.569e9c1769392p+4 : 0x1.f7c28f05c4c1d800000000008f85p+52 : inexact-ok += sinh downward ibm128 0x2.569e9c1769392p+4 : 0x1.f7c28f05c4c1d800000000008f8p+52 : inexact-ok += sinh tonearest ibm128 0x2.569e9c1769392p+4 : 0x1.f7c28f05c4c1d800000000008f8p+52 : inexact-ok += sinh towardzero ibm128 0x2.569e9c1769392p+4 : 0x1.f7c28f05c4c1d800000000008f8p+52 : inexact-ok += sinh upward ibm128 0x2.569e9c1769392p+4 : 0x1.f7c28f05c4c1d800000000009p+52 : inexact-ok +sinh -0x1.2b4f4e0bb49c9p+5 += sinh downward binary32 -0x2.569e9cp+4 : -0x1.f7c28ep+52 : inexact-ok += sinh tonearest binary32 -0x2.569e9cp+4 : -0x1.f7c28cp+52 : inexact-ok += sinh towardzero binary32 -0x2.569e9cp+4 : -0x1.f7c28cp+52 : inexact-ok += sinh upward binary32 -0x2.569e9cp+4 : -0x1.f7c28cp+52 : inexact-ok += sinh downward binary64 -0x2.569e9cp+4 : -0x1.f7c28c24ac23p+52 : inexact-ok += sinh tonearest binary64 -0x2.569e9cp+4 : -0x1.f7c28c24ac23p+52 : inexact-ok += sinh towardzero binary64 -0x2.569e9cp+4 : -0x1.f7c28c24ac22fp+52 : inexact-ok += sinh upward binary64 -0x2.569e9cp+4 : -0x1.f7c28c24ac22fp+52 : inexact-ok += sinh downward intel96 -0x2.569e9cp+4 : -0x1.f7c28c24ac22fbcp+52 : inexact-ok += sinh tonearest intel96 -0x2.569e9cp+4 : -0x1.f7c28c24ac22fbbep+52 : inexact-ok += sinh towardzero intel96 -0x2.569e9cp+4 : -0x1.f7c28c24ac22fbbep+52 : inexact-ok += sinh upward intel96 -0x2.569e9cp+4 : -0x1.f7c28c24ac22fbbep+52 : inexact-ok += sinh downward m68k96 -0x2.569e9cp+4 : -0x1.f7c28c24ac22fbcp+52 : inexact-ok += sinh tonearest m68k96 -0x2.569e9cp+4 : -0x1.f7c28c24ac22fbbep+52 : inexact-ok += sinh towardzero m68k96 -0x2.569e9cp+4 : -0x1.f7c28c24ac22fbbep+52 : inexact-ok += sinh upward m68k96 -0x2.569e9cp+4 : -0x1.f7c28c24ac22fbbep+52 : inexact-ok += sinh downward binary128 -0x2.569e9cp+4 : -0x1.f7c28c24ac22fbbe1ad8f17fd1ecp+52 : inexact-ok += sinh tonearest binary128 -0x2.569e9cp+4 : -0x1.f7c28c24ac22fbbe1ad8f17fd1ebp+52 : inexact-ok += sinh towardzero binary128 -0x2.569e9cp+4 : -0x1.f7c28c24ac22fbbe1ad8f17fd1ebp+52 : inexact-ok += sinh upward binary128 -0x2.569e9cp+4 : -0x1.f7c28c24ac22fbbe1ad8f17fd1ebp+52 : inexact-ok += sinh downward ibm128 -0x2.569e9cp+4 : -0x1.f7c28c24ac22fbbe1ad8f17fd2p+52 : inexact-ok += sinh tonearest ibm128 -0x2.569e9cp+4 : -0x1.f7c28c24ac22fbbe1ad8f17fd2p+52 : inexact-ok += sinh towardzero ibm128 -0x2.569e9cp+4 : -0x1.f7c28c24ac22fbbe1ad8f17fd18p+52 : inexact-ok += sinh upward ibm128 -0x2.569e9cp+4 : -0x1.f7c28c24ac22fbbe1ad8f17fd18p+52 : inexact-ok += sinh downward binary32 -0x2.569eap+4 : -0x1.f7c30cp+52 : inexact-ok += sinh tonearest binary32 -0x2.569eap+4 : -0x1.f7c30ap+52 : inexact-ok += sinh towardzero binary32 -0x2.569eap+4 : -0x1.f7c30ap+52 : inexact-ok += sinh upward binary32 -0x2.569eap+4 : -0x1.f7c30ap+52 : inexact-ok += sinh downward binary64 -0x2.569eap+4 : -0x1.f7c30a155eea4p+52 : inexact-ok += sinh tonearest binary64 -0x2.569eap+4 : -0x1.f7c30a155eea4p+52 : inexact-ok += sinh towardzero binary64 -0x2.569eap+4 : -0x1.f7c30a155eea3p+52 : inexact-ok += sinh upward binary64 -0x2.569eap+4 : -0x1.f7c30a155eea3p+52 : inexact-ok += sinh downward intel96 -0x2.569eap+4 : -0x1.f7c30a155eea3c78p+52 : inexact-ok += sinh tonearest intel96 -0x2.569eap+4 : -0x1.f7c30a155eea3c78p+52 : inexact-ok += sinh towardzero intel96 -0x2.569eap+4 : -0x1.f7c30a155eea3c76p+52 : inexact-ok += sinh upward intel96 -0x2.569eap+4 : -0x1.f7c30a155eea3c76p+52 : inexact-ok += sinh downward m68k96 -0x2.569eap+4 : -0x1.f7c30a155eea3c78p+52 : inexact-ok += sinh tonearest m68k96 -0x2.569eap+4 : -0x1.f7c30a155eea3c78p+52 : inexact-ok += sinh towardzero m68k96 -0x2.569eap+4 : -0x1.f7c30a155eea3c76p+52 : inexact-ok += sinh upward m68k96 -0x2.569eap+4 : -0x1.f7c30a155eea3c76p+52 : inexact-ok += sinh downward binary128 -0x2.569eap+4 : -0x1.f7c30a155eea3c77d646a5f84f53p+52 : inexact-ok += sinh tonearest binary128 -0x2.569eap+4 : -0x1.f7c30a155eea3c77d646a5f84f52p+52 : inexact-ok += sinh towardzero binary128 -0x2.569eap+4 : -0x1.f7c30a155eea3c77d646a5f84f52p+52 : inexact-ok += sinh upward binary128 -0x2.569eap+4 : -0x1.f7c30a155eea3c77d646a5f84f52p+52 : inexact-ok += sinh downward ibm128 -0x2.569eap+4 : -0x1.f7c30a155eea3c77d646a5f84f8p+52 : inexact-ok += sinh tonearest ibm128 -0x2.569eap+4 : -0x1.f7c30a155eea3c77d646a5f84f8p+52 : inexact-ok += sinh towardzero ibm128 -0x2.569eap+4 : -0x1.f7c30a155eea3c77d646a5f84fp+52 : inexact-ok += sinh upward ibm128 -0x2.569eap+4 : -0x1.f7c30a155eea3c77d646a5f84fp+52 : inexact-ok += sinh downward binary64 -0x2.569e9c1769392p+4 : -0x1.f7c28f05c4c1ep+52 : inexact-ok += sinh tonearest binary64 -0x2.569e9c1769392p+4 : -0x1.f7c28f05c4c1ep+52 : inexact-ok += sinh towardzero binary64 -0x2.569e9c1769392p+4 : -0x1.f7c28f05c4c1dp+52 : inexact-ok += sinh upward binary64 -0x2.569e9c1769392p+4 : -0x1.f7c28f05c4c1dp+52 : inexact-ok += sinh downward intel96 -0x2.569e9c1769392p+4 : -0x1.f7c28f05c4c1d802p+52 : inexact-ok += sinh tonearest intel96 -0x2.569e9c1769392p+4 : -0x1.f7c28f05c4c1d8p+52 : inexact-ok += sinh towardzero intel96 -0x2.569e9c1769392p+4 : -0x1.f7c28f05c4c1d8p+52 : inexact-ok += sinh upward intel96 -0x2.569e9c1769392p+4 : -0x1.f7c28f05c4c1d8p+52 : inexact-ok += sinh downward m68k96 -0x2.569e9c1769392p+4 : -0x1.f7c28f05c4c1d802p+52 : inexact-ok += sinh tonearest m68k96 -0x2.569e9c1769392p+4 : -0x1.f7c28f05c4c1d8p+52 : inexact-ok += sinh towardzero m68k96 -0x2.569e9c1769392p+4 : -0x1.f7c28f05c4c1d8p+52 : inexact-ok += sinh upward m68k96 -0x2.569e9c1769392p+4 : -0x1.f7c28f05c4c1d8p+52 : inexact-ok += sinh downward binary128 -0x2.569e9c1769392p+4 : -0x1.f7c28f05c4c1d800000000008f85p+52 : inexact-ok += sinh tonearest binary128 -0x2.569e9c1769392p+4 : -0x1.f7c28f05c4c1d800000000008f85p+52 : inexact-ok += sinh towardzero binary128 -0x2.569e9c1769392p+4 : -0x1.f7c28f05c4c1d800000000008f84p+52 : inexact-ok += sinh upward binary128 -0x2.569e9c1769392p+4 : -0x1.f7c28f05c4c1d800000000008f84p+52 : inexact-ok += sinh downward ibm128 -0x2.569e9c1769392p+4 : -0x1.f7c28f05c4c1d800000000009p+52 : inexact-ok += sinh tonearest ibm128 -0x2.569e9c1769392p+4 : -0x1.f7c28f05c4c1d800000000008f8p+52 : inexact-ok += sinh towardzero ibm128 -0x2.569e9c1769392p+4 : -0x1.f7c28f05c4c1d800000000008f8p+52 : inexact-ok += sinh upward ibm128 -0x2.569e9c1769392p+4 : -0x1.f7c28f05c4c1d800000000008f8p+52 : inexact-ok +sinh 0x1.2ac43fb6d3abap+5 += sinh downward binary32 0x2.55888p+4 : 0x1.d6b0ecp+52 : inexact-ok += sinh tonearest binary32 0x2.55888p+4 : 0x1.d6b0ecp+52 : inexact-ok += sinh towardzero binary32 0x2.55888p+4 : 0x1.d6b0ecp+52 : inexact-ok += sinh upward binary32 0x2.55888p+4 : 0x1.d6b0eep+52 : inexact-ok += sinh downward binary64 0x2.55888p+4 : 0x1.d6b0ecda100c2p+52 : inexact-ok += sinh tonearest binary64 0x2.55888p+4 : 0x1.d6b0ecda100c2p+52 : inexact-ok += sinh towardzero binary64 0x2.55888p+4 : 0x1.d6b0ecda100c2p+52 : inexact-ok += sinh upward binary64 0x2.55888p+4 : 0x1.d6b0ecda100c3p+52 : inexact-ok += sinh downward intel96 0x2.55888p+4 : 0x1.d6b0ecda100c253ep+52 : inexact-ok += sinh tonearest intel96 0x2.55888p+4 : 0x1.d6b0ecda100c253ep+52 : inexact-ok += sinh towardzero intel96 0x2.55888p+4 : 0x1.d6b0ecda100c253ep+52 : inexact-ok += sinh upward intel96 0x2.55888p+4 : 0x1.d6b0ecda100c254p+52 : inexact-ok += sinh downward m68k96 0x2.55888p+4 : 0x1.d6b0ecda100c253ep+52 : inexact-ok += sinh tonearest m68k96 0x2.55888p+4 : 0x1.d6b0ecda100c253ep+52 : inexact-ok += sinh towardzero m68k96 0x2.55888p+4 : 0x1.d6b0ecda100c253ep+52 : inexact-ok += sinh upward m68k96 0x2.55888p+4 : 0x1.d6b0ecda100c254p+52 : inexact-ok += sinh downward binary128 0x2.55888p+4 : 0x1.d6b0ecda100c253edb8a451ed6d8p+52 : inexact-ok += sinh tonearest binary128 0x2.55888p+4 : 0x1.d6b0ecda100c253edb8a451ed6d8p+52 : inexact-ok += sinh towardzero binary128 0x2.55888p+4 : 0x1.d6b0ecda100c253edb8a451ed6d8p+52 : inexact-ok += sinh upward binary128 0x2.55888p+4 : 0x1.d6b0ecda100c253edb8a451ed6d9p+52 : inexact-ok += sinh downward ibm128 0x2.55888p+4 : 0x1.d6b0ecda100c253edb8a451ed68p+52 : inexact-ok += sinh tonearest ibm128 0x2.55888p+4 : 0x1.d6b0ecda100c253edb8a451ed7p+52 : inexact-ok += sinh towardzero ibm128 0x2.55888p+4 : 0x1.d6b0ecda100c253edb8a451ed68p+52 : inexact-ok += sinh upward ibm128 0x2.55888p+4 : 0x1.d6b0ecda100c253edb8a451ed7p+52 : inexact-ok += sinh downward binary32 0x2.55887cp+4 : 0x1.d6b076p+52 : inexact-ok += sinh tonearest binary32 0x2.55887cp+4 : 0x1.d6b078p+52 : inexact-ok += sinh towardzero binary32 0x2.55887cp+4 : 0x1.d6b076p+52 : inexact-ok += sinh upward binary32 0x2.55887cp+4 : 0x1.d6b078p+52 : inexact-ok += sinh downward binary64 0x2.55887cp+4 : 0x1.d6b0772de38b2p+52 : inexact-ok += sinh tonearest binary64 0x2.55887cp+4 : 0x1.d6b0772de38b2p+52 : inexact-ok += sinh towardzero binary64 0x2.55887cp+4 : 0x1.d6b0772de38b2p+52 : inexact-ok += sinh upward binary64 0x2.55887cp+4 : 0x1.d6b0772de38b3p+52 : inexact-ok += sinh downward intel96 0x2.55887cp+4 : 0x1.d6b0772de38b2768p+52 : inexact-ok += sinh tonearest intel96 0x2.55887cp+4 : 0x1.d6b0772de38b2768p+52 : inexact-ok += sinh towardzero intel96 0x2.55887cp+4 : 0x1.d6b0772de38b2768p+52 : inexact-ok += sinh upward intel96 0x2.55887cp+4 : 0x1.d6b0772de38b276ap+52 : inexact-ok += sinh downward m68k96 0x2.55887cp+4 : 0x1.d6b0772de38b2768p+52 : inexact-ok += sinh tonearest m68k96 0x2.55887cp+4 : 0x1.d6b0772de38b2768p+52 : inexact-ok += sinh towardzero m68k96 0x2.55887cp+4 : 0x1.d6b0772de38b2768p+52 : inexact-ok += sinh upward m68k96 0x2.55887cp+4 : 0x1.d6b0772de38b276ap+52 : inexact-ok += sinh downward binary128 0x2.55887cp+4 : 0x1.d6b0772de38b2768d785fab9c261p+52 : inexact-ok += sinh tonearest binary128 0x2.55887cp+4 : 0x1.d6b0772de38b2768d785fab9c261p+52 : inexact-ok += sinh towardzero binary128 0x2.55887cp+4 : 0x1.d6b0772de38b2768d785fab9c261p+52 : inexact-ok += sinh upward binary128 0x2.55887cp+4 : 0x1.d6b0772de38b2768d785fab9c262p+52 : inexact-ok += sinh downward ibm128 0x2.55887cp+4 : 0x1.d6b0772de38b2768d785fab9c2p+52 : inexact-ok += sinh tonearest ibm128 0x2.55887cp+4 : 0x1.d6b0772de38b2768d785fab9c28p+52 : inexact-ok += sinh towardzero ibm128 0x2.55887cp+4 : 0x1.d6b0772de38b2768d785fab9c2p+52 : inexact-ok += sinh upward ibm128 0x2.55887cp+4 : 0x1.d6b0772de38b2768d785fab9c28p+52 : inexact-ok += sinh downward binary64 0x2.55887f6da7574p+4 : 0x1.d6b0dc08d1b65p+52 : inexact-ok += sinh tonearest binary64 0x2.55887f6da7574p+4 : 0x1.d6b0dc08d1b66p+52 : inexact-ok += sinh towardzero binary64 0x2.55887f6da7574p+4 : 0x1.d6b0dc08d1b65p+52 : inexact-ok += sinh upward binary64 0x2.55887f6da7574p+4 : 0x1.d6b0dc08d1b66p+52 : inexact-ok += sinh downward intel96 0x2.55887f6da7574p+4 : 0x1.d6b0dc08d1b65ffep+52 : inexact-ok += sinh tonearest intel96 0x2.55887f6da7574p+4 : 0x1.d6b0dc08d1b66p+52 : inexact-ok += sinh towardzero intel96 0x2.55887f6da7574p+4 : 0x1.d6b0dc08d1b65ffep+52 : inexact-ok += sinh upward intel96 0x2.55887f6da7574p+4 : 0x1.d6b0dc08d1b66p+52 : inexact-ok += sinh downward m68k96 0x2.55887f6da7574p+4 : 0x1.d6b0dc08d1b65ffep+52 : inexact-ok += sinh tonearest m68k96 0x2.55887f6da7574p+4 : 0x1.d6b0dc08d1b66p+52 : inexact-ok += sinh towardzero m68k96 0x2.55887f6da7574p+4 : 0x1.d6b0dc08d1b65ffep+52 : inexact-ok += sinh upward m68k96 0x2.55887f6da7574p+4 : 0x1.d6b0dc08d1b66p+52 : inexact-ok += sinh downward binary128 0x2.55887f6da7574p+4 : 0x1.d6b0dc08d1b65fffffffffff289ep+52 : inexact-ok += sinh tonearest binary128 0x2.55887f6da7574p+4 : 0x1.d6b0dc08d1b65fffffffffff289ep+52 : inexact-ok += sinh towardzero binary128 0x2.55887f6da7574p+4 : 0x1.d6b0dc08d1b65fffffffffff289ep+52 : inexact-ok += sinh upward binary128 0x2.55887f6da7574p+4 : 0x1.d6b0dc08d1b65fffffffffff289fp+52 : inexact-ok += sinh downward ibm128 0x2.55887f6da7574p+4 : 0x1.d6b0dc08d1b65fffffffffff288p+52 : inexact-ok += sinh tonearest ibm128 0x2.55887f6da7574p+4 : 0x1.d6b0dc08d1b65fffffffffff288p+52 : inexact-ok += sinh towardzero ibm128 0x2.55887f6da7574p+4 : 0x1.d6b0dc08d1b65fffffffffff288p+52 : inexact-ok += sinh upward ibm128 0x2.55887f6da7574p+4 : 0x1.d6b0dc08d1b65fffffffffff29p+52 : inexact-ok +sinh -0x1.2ac43fb6d3abap+5 += sinh downward binary32 -0x2.55887cp+4 : -0x1.d6b078p+52 : inexact-ok += sinh tonearest binary32 -0x2.55887cp+4 : -0x1.d6b078p+52 : inexact-ok += sinh towardzero binary32 -0x2.55887cp+4 : -0x1.d6b076p+52 : inexact-ok += sinh upward binary32 -0x2.55887cp+4 : -0x1.d6b076p+52 : inexact-ok += sinh downward binary64 -0x2.55887cp+4 : -0x1.d6b0772de38b3p+52 : inexact-ok += sinh tonearest binary64 -0x2.55887cp+4 : -0x1.d6b0772de38b2p+52 : inexact-ok += sinh towardzero binary64 -0x2.55887cp+4 : -0x1.d6b0772de38b2p+52 : inexact-ok += sinh upward binary64 -0x2.55887cp+4 : -0x1.d6b0772de38b2p+52 : inexact-ok += sinh downward intel96 -0x2.55887cp+4 : -0x1.d6b0772de38b276ap+52 : inexact-ok += sinh tonearest intel96 -0x2.55887cp+4 : -0x1.d6b0772de38b2768p+52 : inexact-ok += sinh towardzero intel96 -0x2.55887cp+4 : -0x1.d6b0772de38b2768p+52 : inexact-ok += sinh upward intel96 -0x2.55887cp+4 : -0x1.d6b0772de38b2768p+52 : inexact-ok += sinh downward m68k96 -0x2.55887cp+4 : -0x1.d6b0772de38b276ap+52 : inexact-ok += sinh tonearest m68k96 -0x2.55887cp+4 : -0x1.d6b0772de38b2768p+52 : inexact-ok += sinh towardzero m68k96 -0x2.55887cp+4 : -0x1.d6b0772de38b2768p+52 : inexact-ok += sinh upward m68k96 -0x2.55887cp+4 : -0x1.d6b0772de38b2768p+52 : inexact-ok += sinh downward binary128 -0x2.55887cp+4 : -0x1.d6b0772de38b2768d785fab9c262p+52 : inexact-ok += sinh tonearest binary128 -0x2.55887cp+4 : -0x1.d6b0772de38b2768d785fab9c261p+52 : inexact-ok += sinh towardzero binary128 -0x2.55887cp+4 : -0x1.d6b0772de38b2768d785fab9c261p+52 : inexact-ok += sinh upward binary128 -0x2.55887cp+4 : -0x1.d6b0772de38b2768d785fab9c261p+52 : inexact-ok += sinh downward ibm128 -0x2.55887cp+4 : -0x1.d6b0772de38b2768d785fab9c28p+52 : inexact-ok += sinh tonearest ibm128 -0x2.55887cp+4 : -0x1.d6b0772de38b2768d785fab9c28p+52 : inexact-ok += sinh towardzero ibm128 -0x2.55887cp+4 : -0x1.d6b0772de38b2768d785fab9c2p+52 : inexact-ok += sinh upward ibm128 -0x2.55887cp+4 : -0x1.d6b0772de38b2768d785fab9c2p+52 : inexact-ok += sinh downward binary32 -0x2.55888p+4 : -0x1.d6b0eep+52 : inexact-ok += sinh tonearest binary32 -0x2.55888p+4 : -0x1.d6b0ecp+52 : inexact-ok += sinh towardzero binary32 -0x2.55888p+4 : -0x1.d6b0ecp+52 : inexact-ok += sinh upward binary32 -0x2.55888p+4 : -0x1.d6b0ecp+52 : inexact-ok += sinh downward binary64 -0x2.55888p+4 : -0x1.d6b0ecda100c3p+52 : inexact-ok += sinh tonearest binary64 -0x2.55888p+4 : -0x1.d6b0ecda100c2p+52 : inexact-ok += sinh towardzero binary64 -0x2.55888p+4 : -0x1.d6b0ecda100c2p+52 : inexact-ok += sinh upward binary64 -0x2.55888p+4 : -0x1.d6b0ecda100c2p+52 : inexact-ok += sinh downward intel96 -0x2.55888p+4 : -0x1.d6b0ecda100c254p+52 : inexact-ok += sinh tonearest intel96 -0x2.55888p+4 : -0x1.d6b0ecda100c253ep+52 : inexact-ok += sinh towardzero intel96 -0x2.55888p+4 : -0x1.d6b0ecda100c253ep+52 : inexact-ok += sinh upward intel96 -0x2.55888p+4 : -0x1.d6b0ecda100c253ep+52 : inexact-ok += sinh downward m68k96 -0x2.55888p+4 : -0x1.d6b0ecda100c254p+52 : inexact-ok += sinh tonearest m68k96 -0x2.55888p+4 : -0x1.d6b0ecda100c253ep+52 : inexact-ok += sinh towardzero m68k96 -0x2.55888p+4 : -0x1.d6b0ecda100c253ep+52 : inexact-ok += sinh upward m68k96 -0x2.55888p+4 : -0x1.d6b0ecda100c253ep+52 : inexact-ok += sinh downward binary128 -0x2.55888p+4 : -0x1.d6b0ecda100c253edb8a451ed6d9p+52 : inexact-ok += sinh tonearest binary128 -0x2.55888p+4 : -0x1.d6b0ecda100c253edb8a451ed6d8p+52 : inexact-ok += sinh towardzero binary128 -0x2.55888p+4 : -0x1.d6b0ecda100c253edb8a451ed6d8p+52 : inexact-ok += sinh upward binary128 -0x2.55888p+4 : -0x1.d6b0ecda100c253edb8a451ed6d8p+52 : inexact-ok += sinh downward ibm128 -0x2.55888p+4 : -0x1.d6b0ecda100c253edb8a451ed7p+52 : inexact-ok += sinh tonearest ibm128 -0x2.55888p+4 : -0x1.d6b0ecda100c253edb8a451ed7p+52 : inexact-ok += sinh towardzero ibm128 -0x2.55888p+4 : -0x1.d6b0ecda100c253edb8a451ed68p+52 : inexact-ok += sinh upward ibm128 -0x2.55888p+4 : -0x1.d6b0ecda100c253edb8a451ed68p+52 : inexact-ok += sinh downward binary64 -0x2.55887f6da7574p+4 : -0x1.d6b0dc08d1b66p+52 : inexact-ok += sinh tonearest binary64 -0x2.55887f6da7574p+4 : -0x1.d6b0dc08d1b66p+52 : inexact-ok += sinh towardzero binary64 -0x2.55887f6da7574p+4 : -0x1.d6b0dc08d1b65p+52 : inexact-ok += sinh upward binary64 -0x2.55887f6da7574p+4 : -0x1.d6b0dc08d1b65p+52 : inexact-ok += sinh downward intel96 -0x2.55887f6da7574p+4 : -0x1.d6b0dc08d1b66p+52 : inexact-ok += sinh tonearest intel96 -0x2.55887f6da7574p+4 : -0x1.d6b0dc08d1b66p+52 : inexact-ok += sinh towardzero intel96 -0x2.55887f6da7574p+4 : -0x1.d6b0dc08d1b65ffep+52 : inexact-ok += sinh upward intel96 -0x2.55887f6da7574p+4 : -0x1.d6b0dc08d1b65ffep+52 : inexact-ok += sinh downward m68k96 -0x2.55887f6da7574p+4 : -0x1.d6b0dc08d1b66p+52 : inexact-ok += sinh tonearest m68k96 -0x2.55887f6da7574p+4 : -0x1.d6b0dc08d1b66p+52 : inexact-ok += sinh towardzero m68k96 -0x2.55887f6da7574p+4 : -0x1.d6b0dc08d1b65ffep+52 : inexact-ok += sinh upward m68k96 -0x2.55887f6da7574p+4 : -0x1.d6b0dc08d1b65ffep+52 : inexact-ok += sinh downward binary128 -0x2.55887f6da7574p+4 : -0x1.d6b0dc08d1b65fffffffffff289fp+52 : inexact-ok += sinh tonearest binary128 -0x2.55887f6da7574p+4 : -0x1.d6b0dc08d1b65fffffffffff289ep+52 : inexact-ok += sinh towardzero binary128 -0x2.55887f6da7574p+4 : -0x1.d6b0dc08d1b65fffffffffff289ep+52 : inexact-ok += sinh upward binary128 -0x2.55887f6da7574p+4 : -0x1.d6b0dc08d1b65fffffffffff289ep+52 : inexact-ok += sinh downward ibm128 -0x2.55887f6da7574p+4 : -0x1.d6b0dc08d1b65fffffffffff29p+52 : inexact-ok += sinh tonearest ibm128 -0x2.55887f6da7574p+4 : -0x1.d6b0dc08d1b65fffffffffff288p+52 : inexact-ok += sinh towardzero ibm128 -0x2.55887f6da7574p+4 : -0x1.d6b0dc08d1b65fffffffffff288p+52 : inexact-ok += sinh upward ibm128 -0x2.55887f6da7574p+4 : -0x1.d6b0dc08d1b65fffffffffff288p+52 : inexact-ok +sinh 0x1.b7efa91915c95p-2 += sinh downward binary32 0x6.dfbea8p-4 : 0x7.1661a8p-4 : inexact-ok += sinh tonearest binary32 0x6.dfbea8p-4 : 0x7.1661a8p-4 : inexact-ok += sinh towardzero binary32 0x6.dfbea8p-4 : 0x7.1661a8p-4 : inexact-ok += sinh upward binary32 0x6.dfbea8p-4 : 0x7.1661bp-4 : inexact-ok += sinh downward binary64 0x6.dfbea8p-4 : 0x7.1661abb8260e4p-4 : inexact-ok += sinh tonearest binary64 0x6.dfbea8p-4 : 0x7.1661abb8260e8p-4 : inexact-ok += sinh towardzero binary64 0x6.dfbea8p-4 : 0x7.1661abb8260e4p-4 : inexact-ok += sinh upward binary64 0x6.dfbea8p-4 : 0x7.1661abb8260e8p-4 : inexact-ok += sinh downward intel96 0x6.dfbea8p-4 : 0x7.1661abb8260e76a8p-4 : inexact-ok += sinh tonearest intel96 0x6.dfbea8p-4 : 0x7.1661abb8260e76a8p-4 : inexact-ok += sinh towardzero intel96 0x6.dfbea8p-4 : 0x7.1661abb8260e76a8p-4 : inexact-ok += sinh upward intel96 0x6.dfbea8p-4 : 0x7.1661abb8260e76bp-4 : inexact-ok += sinh downward m68k96 0x6.dfbea8p-4 : 0x7.1661abb8260e76a8p-4 : inexact-ok += sinh tonearest m68k96 0x6.dfbea8p-4 : 0x7.1661abb8260e76a8p-4 : inexact-ok += sinh towardzero m68k96 0x6.dfbea8p-4 : 0x7.1661abb8260e76a8p-4 : inexact-ok += sinh upward m68k96 0x6.dfbea8p-4 : 0x7.1661abb8260e76bp-4 : inexact-ok += sinh downward binary128 0x6.dfbea8p-4 : 0x7.1661abb8260e76a92049555ebed4p-4 : inexact-ok += sinh tonearest binary128 0x6.dfbea8p-4 : 0x7.1661abb8260e76a92049555ebed8p-4 : inexact-ok += sinh towardzero binary128 0x6.dfbea8p-4 : 0x7.1661abb8260e76a92049555ebed4p-4 : inexact-ok += sinh upward binary128 0x6.dfbea8p-4 : 0x7.1661abb8260e76a92049555ebed8p-4 : inexact-ok += sinh downward ibm128 0x6.dfbea8p-4 : 0x7.1661abb8260e76a92049555ebep-4 : inexact-ok += sinh tonearest ibm128 0x6.dfbea8p-4 : 0x7.1661abb8260e76a92049555ebep-4 : inexact-ok += sinh towardzero ibm128 0x6.dfbea8p-4 : 0x7.1661abb8260e76a92049555ebep-4 : inexact-ok += sinh upward ibm128 0x6.dfbea8p-4 : 0x7.1661abb8260e76a92049555ecp-4 : inexact-ok += sinh downward binary32 0x6.dfbeap-4 : 0x7.1661ap-4 : inexact-ok += sinh tonearest binary32 0x6.dfbeap-4 : 0x7.1661ap-4 : inexact-ok += sinh towardzero binary32 0x6.dfbeap-4 : 0x7.1661ap-4 : inexact-ok += sinh upward binary32 0x6.dfbeap-4 : 0x7.1661a8p-4 : inexact-ok += sinh downward binary64 0x6.dfbeap-4 : 0x7.1661a2f837414p-4 : inexact-ok += sinh tonearest binary64 0x6.dfbeap-4 : 0x7.1661a2f837418p-4 : inexact-ok += sinh towardzero binary64 0x6.dfbeap-4 : 0x7.1661a2f837414p-4 : inexact-ok += sinh upward binary64 0x6.dfbeap-4 : 0x7.1661a2f837418p-4 : inexact-ok += sinh downward intel96 0x6.dfbeap-4 : 0x7.1661a2f837416e9p-4 : inexact-ok += sinh tonearest intel96 0x6.dfbeap-4 : 0x7.1661a2f837416e9p-4 : inexact-ok += sinh towardzero intel96 0x6.dfbeap-4 : 0x7.1661a2f837416e9p-4 : inexact-ok += sinh upward intel96 0x6.dfbeap-4 : 0x7.1661a2f837416e98p-4 : inexact-ok += sinh downward m68k96 0x6.dfbeap-4 : 0x7.1661a2f837416e9p-4 : inexact-ok += sinh tonearest m68k96 0x6.dfbeap-4 : 0x7.1661a2f837416e9p-4 : inexact-ok += sinh towardzero m68k96 0x6.dfbeap-4 : 0x7.1661a2f837416e9p-4 : inexact-ok += sinh upward m68k96 0x6.dfbeap-4 : 0x7.1661a2f837416e98p-4 : inexact-ok += sinh downward binary128 0x6.dfbeap-4 : 0x7.1661a2f837416e909121ab55d4c8p-4 : inexact-ok += sinh tonearest binary128 0x6.dfbeap-4 : 0x7.1661a2f837416e909121ab55d4c8p-4 : inexact-ok += sinh towardzero binary128 0x6.dfbeap-4 : 0x7.1661a2f837416e909121ab55d4c8p-4 : inexact-ok += sinh upward binary128 0x6.dfbeap-4 : 0x7.1661a2f837416e909121ab55d4ccp-4 : inexact-ok += sinh downward ibm128 0x6.dfbeap-4 : 0x7.1661a2f837416e909121ab55d4p-4 : inexact-ok += sinh tonearest ibm128 0x6.dfbeap-4 : 0x7.1661a2f837416e909121ab55d4p-4 : inexact-ok += sinh towardzero ibm128 0x6.dfbeap-4 : 0x7.1661a2f837416e909121ab55d4p-4 : inexact-ok += sinh upward ibm128 0x6.dfbeap-4 : 0x7.1661a2f837416e909121ab55d6p-4 : inexact-ok += sinh downward binary64 0x6.dfbea46457254p-4 : 0x7.1661a7c5ed208p-4 : inexact-ok += sinh tonearest binary64 0x6.dfbea46457254p-4 : 0x7.1661a7c5ed20cp-4 : inexact-ok += sinh towardzero binary64 0x6.dfbea46457254p-4 : 0x7.1661a7c5ed208p-4 : inexact-ok += sinh upward binary64 0x6.dfbea46457254p-4 : 0x7.1661a7c5ed20cp-4 : inexact-ok += sinh downward intel96 0x6.dfbea46457254p-4 : 0x7.1661a7c5ed20bff8p-4 : inexact-ok += sinh tonearest intel96 0x6.dfbea46457254p-4 : 0x7.1661a7c5ed20cp-4 : inexact-ok += sinh towardzero intel96 0x6.dfbea46457254p-4 : 0x7.1661a7c5ed20bff8p-4 : inexact-ok += sinh upward intel96 0x6.dfbea46457254p-4 : 0x7.1661a7c5ed20cp-4 : inexact-ok += sinh downward m68k96 0x6.dfbea46457254p-4 : 0x7.1661a7c5ed20bff8p-4 : inexact-ok += sinh tonearest m68k96 0x6.dfbea46457254p-4 : 0x7.1661a7c5ed20cp-4 : inexact-ok += sinh towardzero m68k96 0x6.dfbea46457254p-4 : 0x7.1661a7c5ed20bff8p-4 : inexact-ok += sinh upward m68k96 0x6.dfbea46457254p-4 : 0x7.1661a7c5ed20cp-4 : inexact-ok += sinh downward binary128 0x6.dfbea46457254p-4 : 0x7.1661a7c5ed20bfffffffffffeb44p-4 : inexact-ok += sinh tonearest binary128 0x6.dfbea46457254p-4 : 0x7.1661a7c5ed20bfffffffffffeb48p-4 : inexact-ok += sinh towardzero binary128 0x6.dfbea46457254p-4 : 0x7.1661a7c5ed20bfffffffffffeb44p-4 : inexact-ok += sinh upward binary128 0x6.dfbea46457254p-4 : 0x7.1661a7c5ed20bfffffffffffeb48p-4 : inexact-ok += sinh downward ibm128 0x6.dfbea46457254p-4 : 0x7.1661a7c5ed20bfffffffffffeap-4 : inexact-ok += sinh tonearest ibm128 0x6.dfbea46457254p-4 : 0x7.1661a7c5ed20bfffffffffffecp-4 : inexact-ok += sinh towardzero ibm128 0x6.dfbea46457254p-4 : 0x7.1661a7c5ed20bfffffffffffeap-4 : inexact-ok += sinh upward ibm128 0x6.dfbea46457254p-4 : 0x7.1661a7c5ed20bfffffffffffecp-4 : inexact-ok +sinh -0x1.b7efa91915c95p-2 += sinh downward binary32 -0x6.dfbeap-4 : -0x7.1661a8p-4 : inexact-ok += sinh tonearest binary32 -0x6.dfbeap-4 : -0x7.1661ap-4 : inexact-ok += sinh towardzero binary32 -0x6.dfbeap-4 : -0x7.1661ap-4 : inexact-ok += sinh upward binary32 -0x6.dfbeap-4 : -0x7.1661ap-4 : inexact-ok += sinh downward binary64 -0x6.dfbeap-4 : -0x7.1661a2f837418p-4 : inexact-ok += sinh tonearest binary64 -0x6.dfbeap-4 : -0x7.1661a2f837418p-4 : inexact-ok += sinh towardzero binary64 -0x6.dfbeap-4 : -0x7.1661a2f837414p-4 : inexact-ok += sinh upward binary64 -0x6.dfbeap-4 : -0x7.1661a2f837414p-4 : inexact-ok += sinh downward intel96 -0x6.dfbeap-4 : -0x7.1661a2f837416e98p-4 : inexact-ok += sinh tonearest intel96 -0x6.dfbeap-4 : -0x7.1661a2f837416e9p-4 : inexact-ok += sinh towardzero intel96 -0x6.dfbeap-4 : -0x7.1661a2f837416e9p-4 : inexact-ok += sinh upward intel96 -0x6.dfbeap-4 : -0x7.1661a2f837416e9p-4 : inexact-ok += sinh downward m68k96 -0x6.dfbeap-4 : -0x7.1661a2f837416e98p-4 : inexact-ok += sinh tonearest m68k96 -0x6.dfbeap-4 : -0x7.1661a2f837416e9p-4 : inexact-ok += sinh towardzero m68k96 -0x6.dfbeap-4 : -0x7.1661a2f837416e9p-4 : inexact-ok += sinh upward m68k96 -0x6.dfbeap-4 : -0x7.1661a2f837416e9p-4 : inexact-ok += sinh downward binary128 -0x6.dfbeap-4 : -0x7.1661a2f837416e909121ab55d4ccp-4 : inexact-ok += sinh tonearest binary128 -0x6.dfbeap-4 : -0x7.1661a2f837416e909121ab55d4c8p-4 : inexact-ok += sinh towardzero binary128 -0x6.dfbeap-4 : -0x7.1661a2f837416e909121ab55d4c8p-4 : inexact-ok += sinh upward binary128 -0x6.dfbeap-4 : -0x7.1661a2f837416e909121ab55d4c8p-4 : inexact-ok += sinh downward ibm128 -0x6.dfbeap-4 : -0x7.1661a2f837416e909121ab55d6p-4 : inexact-ok += sinh tonearest ibm128 -0x6.dfbeap-4 : -0x7.1661a2f837416e909121ab55d4p-4 : inexact-ok += sinh towardzero ibm128 -0x6.dfbeap-4 : -0x7.1661a2f837416e909121ab55d4p-4 : inexact-ok += sinh upward ibm128 -0x6.dfbeap-4 : -0x7.1661a2f837416e909121ab55d4p-4 : inexact-ok += sinh downward binary32 -0x6.dfbea8p-4 : -0x7.1661bp-4 : inexact-ok += sinh tonearest binary32 -0x6.dfbea8p-4 : -0x7.1661a8p-4 : inexact-ok += sinh towardzero binary32 -0x6.dfbea8p-4 : -0x7.1661a8p-4 : inexact-ok += sinh upward binary32 -0x6.dfbea8p-4 : -0x7.1661a8p-4 : inexact-ok += sinh downward binary64 -0x6.dfbea8p-4 : -0x7.1661abb8260e8p-4 : inexact-ok += sinh tonearest binary64 -0x6.dfbea8p-4 : -0x7.1661abb8260e8p-4 : inexact-ok += sinh towardzero binary64 -0x6.dfbea8p-4 : -0x7.1661abb8260e4p-4 : inexact-ok += sinh upward binary64 -0x6.dfbea8p-4 : -0x7.1661abb8260e4p-4 : inexact-ok += sinh downward intel96 -0x6.dfbea8p-4 : -0x7.1661abb8260e76bp-4 : inexact-ok += sinh tonearest intel96 -0x6.dfbea8p-4 : -0x7.1661abb8260e76a8p-4 : inexact-ok += sinh towardzero intel96 -0x6.dfbea8p-4 : -0x7.1661abb8260e76a8p-4 : inexact-ok += sinh upward intel96 -0x6.dfbea8p-4 : -0x7.1661abb8260e76a8p-4 : inexact-ok += sinh downward m68k96 -0x6.dfbea8p-4 : -0x7.1661abb8260e76bp-4 : inexact-ok += sinh tonearest m68k96 -0x6.dfbea8p-4 : -0x7.1661abb8260e76a8p-4 : inexact-ok += sinh towardzero m68k96 -0x6.dfbea8p-4 : -0x7.1661abb8260e76a8p-4 : inexact-ok += sinh upward m68k96 -0x6.dfbea8p-4 : -0x7.1661abb8260e76a8p-4 : inexact-ok += sinh downward binary128 -0x6.dfbea8p-4 : -0x7.1661abb8260e76a92049555ebed8p-4 : inexact-ok += sinh tonearest binary128 -0x6.dfbea8p-4 : -0x7.1661abb8260e76a92049555ebed8p-4 : inexact-ok += sinh towardzero binary128 -0x6.dfbea8p-4 : -0x7.1661abb8260e76a92049555ebed4p-4 : inexact-ok += sinh upward binary128 -0x6.dfbea8p-4 : -0x7.1661abb8260e76a92049555ebed4p-4 : inexact-ok += sinh downward ibm128 -0x6.dfbea8p-4 : -0x7.1661abb8260e76a92049555ecp-4 : inexact-ok += sinh tonearest ibm128 -0x6.dfbea8p-4 : -0x7.1661abb8260e76a92049555ebep-4 : inexact-ok += sinh towardzero ibm128 -0x6.dfbea8p-4 : -0x7.1661abb8260e76a92049555ebep-4 : inexact-ok += sinh upward ibm128 -0x6.dfbea8p-4 : -0x7.1661abb8260e76a92049555ebep-4 : inexact-ok += sinh downward binary64 -0x6.dfbea46457254p-4 : -0x7.1661a7c5ed20cp-4 : inexact-ok += sinh tonearest binary64 -0x6.dfbea46457254p-4 : -0x7.1661a7c5ed20cp-4 : inexact-ok += sinh towardzero binary64 -0x6.dfbea46457254p-4 : -0x7.1661a7c5ed208p-4 : inexact-ok += sinh upward binary64 -0x6.dfbea46457254p-4 : -0x7.1661a7c5ed208p-4 : inexact-ok += sinh downward intel96 -0x6.dfbea46457254p-4 : -0x7.1661a7c5ed20cp-4 : inexact-ok += sinh tonearest intel96 -0x6.dfbea46457254p-4 : -0x7.1661a7c5ed20cp-4 : inexact-ok += sinh towardzero intel96 -0x6.dfbea46457254p-4 : -0x7.1661a7c5ed20bff8p-4 : inexact-ok += sinh upward intel96 -0x6.dfbea46457254p-4 : -0x7.1661a7c5ed20bff8p-4 : inexact-ok += sinh downward m68k96 -0x6.dfbea46457254p-4 : -0x7.1661a7c5ed20cp-4 : inexact-ok += sinh tonearest m68k96 -0x6.dfbea46457254p-4 : -0x7.1661a7c5ed20cp-4 : inexact-ok += sinh towardzero m68k96 -0x6.dfbea46457254p-4 : -0x7.1661a7c5ed20bff8p-4 : inexact-ok += sinh upward m68k96 -0x6.dfbea46457254p-4 : -0x7.1661a7c5ed20bff8p-4 : inexact-ok += sinh downward binary128 -0x6.dfbea46457254p-4 : -0x7.1661a7c5ed20bfffffffffffeb48p-4 : inexact-ok += sinh tonearest binary128 -0x6.dfbea46457254p-4 : -0x7.1661a7c5ed20bfffffffffffeb48p-4 : inexact-ok += sinh towardzero binary128 -0x6.dfbea46457254p-4 : -0x7.1661a7c5ed20bfffffffffffeb44p-4 : inexact-ok += sinh upward binary128 -0x6.dfbea46457254p-4 : -0x7.1661a7c5ed20bfffffffffffeb44p-4 : inexact-ok += sinh downward ibm128 -0x6.dfbea46457254p-4 : -0x7.1661a7c5ed20bfffffffffffecp-4 : inexact-ok += sinh tonearest ibm128 -0x6.dfbea46457254p-4 : -0x7.1661a7c5ed20bfffffffffffecp-4 : inexact-ok += sinh towardzero ibm128 -0x6.dfbea46457254p-4 : -0x7.1661a7c5ed20bfffffffffffeap-4 : inexact-ok += sinh upward ibm128 -0x6.dfbea46457254p-4 : -0x7.1661a7c5ed20bfffffffffffeap-4 : inexact-ok +sinh 0x1.92a5c27afbe82p+4 += sinh downward binary32 0x1.92a5c4p+4 : 0x9.e410bp+32 : inexact-ok += sinh tonearest binary32 0x1.92a5c4p+4 : 0x9.e410cp+32 : inexact-ok += sinh towardzero binary32 0x1.92a5c4p+4 : 0x9.e410bp+32 : inexact-ok += sinh upward binary32 0x1.92a5c4p+4 : 0x9.e410cp+32 : inexact-ok += sinh downward binary64 0x1.92a5c4p+4 : 0x9.e410bd8d8c85p+32 : inexact-ok += sinh tonearest binary64 0x1.92a5c4p+4 : 0x9.e410bd8d8c85p+32 : inexact-ok += sinh towardzero binary64 0x1.92a5c4p+4 : 0x9.e410bd8d8c85p+32 : inexact-ok += sinh upward binary64 0x1.92a5c4p+4 : 0x9.e410bd8d8c858p+32 : inexact-ok += sinh downward intel96 0x1.92a5c4p+4 : 0x9.e410bd8d8c8507ap+32 : inexact-ok += sinh tonearest intel96 0x1.92a5c4p+4 : 0x9.e410bd8d8c8507bp+32 : inexact-ok += sinh towardzero intel96 0x1.92a5c4p+4 : 0x9.e410bd8d8c8507ap+32 : inexact-ok += sinh upward intel96 0x1.92a5c4p+4 : 0x9.e410bd8d8c8507bp+32 : inexact-ok += sinh downward m68k96 0x1.92a5c4p+4 : 0x9.e410bd8d8c8507ap+32 : inexact-ok += sinh tonearest m68k96 0x1.92a5c4p+4 : 0x9.e410bd8d8c8507bp+32 : inexact-ok += sinh towardzero m68k96 0x1.92a5c4p+4 : 0x9.e410bd8d8c8507ap+32 : inexact-ok += sinh upward m68k96 0x1.92a5c4p+4 : 0x9.e410bd8d8c8507bp+32 : inexact-ok += sinh downward binary128 0x1.92a5c4p+4 : 0x9.e410bd8d8c8507a830e34d60e85p+32 : inexact-ok += sinh tonearest binary128 0x1.92a5c4p+4 : 0x9.e410bd8d8c8507a830e34d60e858p+32 : inexact-ok += sinh towardzero binary128 0x1.92a5c4p+4 : 0x9.e410bd8d8c8507a830e34d60e85p+32 : inexact-ok += sinh upward binary128 0x1.92a5c4p+4 : 0x9.e410bd8d8c8507a830e34d60e858p+32 : inexact-ok += sinh downward ibm128 0x1.92a5c4p+4 : 0x9.e410bd8d8c8507a830e34d60e8p+32 : inexact-ok += sinh tonearest ibm128 0x1.92a5c4p+4 : 0x9.e410bd8d8c8507a830e34d60e8p+32 : inexact-ok += sinh towardzero ibm128 0x1.92a5c4p+4 : 0x9.e410bd8d8c8507a830e34d60e8p+32 : inexact-ok += sinh upward ibm128 0x1.92a5c4p+4 : 0x9.e410bd8d8c8507a830e34d60ecp+32 : inexact-ok += sinh downward binary32 0x1.92a5c2p+4 : 0x9.e40f8p+32 : inexact-ok += sinh tonearest binary32 0x1.92a5c2p+4 : 0x9.e40f8p+32 : inexact-ok += sinh towardzero binary32 0x1.92a5c2p+4 : 0x9.e40f8p+32 : inexact-ok += sinh upward binary32 0x1.92a5c2p+4 : 0x9.e40f9p+32 : inexact-ok += sinh downward binary64 0x1.92a5c2p+4 : 0x9.e40f810b889bp+32 : inexact-ok += sinh tonearest binary64 0x1.92a5c2p+4 : 0x9.e40f810b889b8p+32 : inexact-ok += sinh towardzero binary64 0x1.92a5c2p+4 : 0x9.e40f810b889bp+32 : inexact-ok += sinh upward binary64 0x1.92a5c2p+4 : 0x9.e40f810b889b8p+32 : inexact-ok += sinh downward intel96 0x1.92a5c2p+4 : 0x9.e40f810b889b76bp+32 : inexact-ok += sinh tonearest intel96 0x1.92a5c2p+4 : 0x9.e40f810b889b76cp+32 : inexact-ok += sinh towardzero intel96 0x1.92a5c2p+4 : 0x9.e40f810b889b76bp+32 : inexact-ok += sinh upward intel96 0x1.92a5c2p+4 : 0x9.e40f810b889b76cp+32 : inexact-ok += sinh downward m68k96 0x1.92a5c2p+4 : 0x9.e40f810b889b76bp+32 : inexact-ok += sinh tonearest m68k96 0x1.92a5c2p+4 : 0x9.e40f810b889b76cp+32 : inexact-ok += sinh towardzero m68k96 0x1.92a5c2p+4 : 0x9.e40f810b889b76bp+32 : inexact-ok += sinh upward m68k96 0x1.92a5c2p+4 : 0x9.e40f810b889b76cp+32 : inexact-ok += sinh downward binary128 0x1.92a5c2p+4 : 0x9.e40f810b889b76bfa9a8c69fa46p+32 : inexact-ok += sinh tonearest binary128 0x1.92a5c2p+4 : 0x9.e40f810b889b76bfa9a8c69fa46p+32 : inexact-ok += sinh towardzero binary128 0x1.92a5c2p+4 : 0x9.e40f810b889b76bfa9a8c69fa46p+32 : inexact-ok += sinh upward binary128 0x1.92a5c2p+4 : 0x9.e40f810b889b76bfa9a8c69fa468p+32 : inexact-ok += sinh downward ibm128 0x1.92a5c2p+4 : 0x9.e40f810b889b76bfa9a8c69fa4p+32 : inexact-ok += sinh tonearest ibm128 0x1.92a5c2p+4 : 0x9.e40f810b889b76bfa9a8c69fa4p+32 : inexact-ok += sinh towardzero ibm128 0x1.92a5c2p+4 : 0x9.e40f810b889b76bfa9a8c69fa4p+32 : inexact-ok += sinh upward ibm128 0x1.92a5c2p+4 : 0x9.e40f810b889b76bfa9a8c69fa8p+32 : inexact-ok += sinh downward binary64 0x1.92a5c27afbe82p+4 : 0x9.e40fcd1239298p+32 : inexact-ok += sinh tonearest binary64 0x1.92a5c27afbe82p+4 : 0x9.e40fcd1239298p+32 : inexact-ok += sinh towardzero binary64 0x1.92a5c27afbe82p+4 : 0x9.e40fcd1239298p+32 : inexact-ok += sinh upward binary64 0x1.92a5c27afbe82p+4 : 0x9.e40fcd12392ap+32 : inexact-ok += sinh downward intel96 0x1.92a5c27afbe82p+4 : 0x9.e40fcd1239298p+32 : inexact-ok += sinh tonearest intel96 0x1.92a5c27afbe82p+4 : 0x9.e40fcd1239298p+32 : inexact-ok += sinh towardzero intel96 0x1.92a5c27afbe82p+4 : 0x9.e40fcd1239298p+32 : inexact-ok += sinh upward intel96 0x1.92a5c27afbe82p+4 : 0x9.e40fcd123929801p+32 : inexact-ok += sinh downward m68k96 0x1.92a5c27afbe82p+4 : 0x9.e40fcd1239298p+32 : inexact-ok += sinh tonearest m68k96 0x1.92a5c27afbe82p+4 : 0x9.e40fcd1239298p+32 : inexact-ok += sinh towardzero m68k96 0x1.92a5c27afbe82p+4 : 0x9.e40fcd1239298p+32 : inexact-ok += sinh upward m68k96 0x1.92a5c27afbe82p+4 : 0x9.e40fcd123929801p+32 : inexact-ok += sinh downward binary128 0x1.92a5c27afbe82p+4 : 0x9.e40fcd1239298000000000002118p+32 : inexact-ok += sinh tonearest binary128 0x1.92a5c27afbe82p+4 : 0x9.e40fcd123929800000000000212p+32 : inexact-ok += sinh towardzero binary128 0x1.92a5c27afbe82p+4 : 0x9.e40fcd1239298000000000002118p+32 : inexact-ok += sinh upward binary128 0x1.92a5c27afbe82p+4 : 0x9.e40fcd123929800000000000212p+32 : inexact-ok += sinh downward ibm128 0x1.92a5c27afbe82p+4 : 0x9.e40fcd1239298000000000002p+32 : inexact-ok += sinh tonearest ibm128 0x1.92a5c27afbe82p+4 : 0x9.e40fcd1239298000000000002p+32 : inexact-ok += sinh towardzero ibm128 0x1.92a5c27afbe82p+4 : 0x9.e40fcd1239298000000000002p+32 : inexact-ok += sinh upward ibm128 0x1.92a5c27afbe82p+4 : 0x9.e40fcd12392980000000000024p+32 : inexact-ok +sinh -0x1.92a5c27afbe82p+4 += sinh downward binary32 -0x1.92a5c2p+4 : -0x9.e40f9p+32 : inexact-ok += sinh tonearest binary32 -0x1.92a5c2p+4 : -0x9.e40f8p+32 : inexact-ok += sinh towardzero binary32 -0x1.92a5c2p+4 : -0x9.e40f8p+32 : inexact-ok += sinh upward binary32 -0x1.92a5c2p+4 : -0x9.e40f8p+32 : inexact-ok += sinh downward binary64 -0x1.92a5c2p+4 : -0x9.e40f810b889b8p+32 : inexact-ok += sinh tonearest binary64 -0x1.92a5c2p+4 : -0x9.e40f810b889b8p+32 : inexact-ok += sinh towardzero binary64 -0x1.92a5c2p+4 : -0x9.e40f810b889bp+32 : inexact-ok += sinh upward binary64 -0x1.92a5c2p+4 : -0x9.e40f810b889bp+32 : inexact-ok += sinh downward intel96 -0x1.92a5c2p+4 : -0x9.e40f810b889b76cp+32 : inexact-ok += sinh tonearest intel96 -0x1.92a5c2p+4 : -0x9.e40f810b889b76cp+32 : inexact-ok += sinh towardzero intel96 -0x1.92a5c2p+4 : -0x9.e40f810b889b76bp+32 : inexact-ok += sinh upward intel96 -0x1.92a5c2p+4 : -0x9.e40f810b889b76bp+32 : inexact-ok += sinh downward m68k96 -0x1.92a5c2p+4 : -0x9.e40f810b889b76cp+32 : inexact-ok += sinh tonearest m68k96 -0x1.92a5c2p+4 : -0x9.e40f810b889b76cp+32 : inexact-ok += sinh towardzero m68k96 -0x1.92a5c2p+4 : -0x9.e40f810b889b76bp+32 : inexact-ok += sinh upward m68k96 -0x1.92a5c2p+4 : -0x9.e40f810b889b76bp+32 : inexact-ok += sinh downward binary128 -0x1.92a5c2p+4 : -0x9.e40f810b889b76bfa9a8c69fa468p+32 : inexact-ok += sinh tonearest binary128 -0x1.92a5c2p+4 : -0x9.e40f810b889b76bfa9a8c69fa46p+32 : inexact-ok += sinh towardzero binary128 -0x1.92a5c2p+4 : -0x9.e40f810b889b76bfa9a8c69fa46p+32 : inexact-ok += sinh upward binary128 -0x1.92a5c2p+4 : -0x9.e40f810b889b76bfa9a8c69fa46p+32 : inexact-ok += sinh downward ibm128 -0x1.92a5c2p+4 : -0x9.e40f810b889b76bfa9a8c69fa8p+32 : inexact-ok += sinh tonearest ibm128 -0x1.92a5c2p+4 : -0x9.e40f810b889b76bfa9a8c69fa4p+32 : inexact-ok += sinh towardzero ibm128 -0x1.92a5c2p+4 : -0x9.e40f810b889b76bfa9a8c69fa4p+32 : inexact-ok += sinh upward ibm128 -0x1.92a5c2p+4 : -0x9.e40f810b889b76bfa9a8c69fa4p+32 : inexact-ok += sinh downward binary32 -0x1.92a5c4p+4 : -0x9.e410cp+32 : inexact-ok += sinh tonearest binary32 -0x1.92a5c4p+4 : -0x9.e410cp+32 : inexact-ok += sinh towardzero binary32 -0x1.92a5c4p+4 : -0x9.e410bp+32 : inexact-ok += sinh upward binary32 -0x1.92a5c4p+4 : -0x9.e410bp+32 : inexact-ok += sinh downward binary64 -0x1.92a5c4p+4 : -0x9.e410bd8d8c858p+32 : inexact-ok += sinh tonearest binary64 -0x1.92a5c4p+4 : -0x9.e410bd8d8c85p+32 : inexact-ok += sinh towardzero binary64 -0x1.92a5c4p+4 : -0x9.e410bd8d8c85p+32 : inexact-ok += sinh upward binary64 -0x1.92a5c4p+4 : -0x9.e410bd8d8c85p+32 : inexact-ok += sinh downward intel96 -0x1.92a5c4p+4 : -0x9.e410bd8d8c8507bp+32 : inexact-ok += sinh tonearest intel96 -0x1.92a5c4p+4 : -0x9.e410bd8d8c8507bp+32 : inexact-ok += sinh towardzero intel96 -0x1.92a5c4p+4 : -0x9.e410bd8d8c8507ap+32 : inexact-ok += sinh upward intel96 -0x1.92a5c4p+4 : -0x9.e410bd8d8c8507ap+32 : inexact-ok += sinh downward m68k96 -0x1.92a5c4p+4 : -0x9.e410bd8d8c8507bp+32 : inexact-ok += sinh tonearest m68k96 -0x1.92a5c4p+4 : -0x9.e410bd8d8c8507bp+32 : inexact-ok += sinh towardzero m68k96 -0x1.92a5c4p+4 : -0x9.e410bd8d8c8507ap+32 : inexact-ok += sinh upward m68k96 -0x1.92a5c4p+4 : -0x9.e410bd8d8c8507ap+32 : inexact-ok += sinh downward binary128 -0x1.92a5c4p+4 : -0x9.e410bd8d8c8507a830e34d60e858p+32 : inexact-ok += sinh tonearest binary128 -0x1.92a5c4p+4 : -0x9.e410bd8d8c8507a830e34d60e858p+32 : inexact-ok += sinh towardzero binary128 -0x1.92a5c4p+4 : -0x9.e410bd8d8c8507a830e34d60e85p+32 : inexact-ok += sinh upward binary128 -0x1.92a5c4p+4 : -0x9.e410bd8d8c8507a830e34d60e85p+32 : inexact-ok += sinh downward ibm128 -0x1.92a5c4p+4 : -0x9.e410bd8d8c8507a830e34d60ecp+32 : inexact-ok += sinh tonearest ibm128 -0x1.92a5c4p+4 : -0x9.e410bd8d8c8507a830e34d60e8p+32 : inexact-ok += sinh towardzero ibm128 -0x1.92a5c4p+4 : -0x9.e410bd8d8c8507a830e34d60e8p+32 : inexact-ok += sinh upward ibm128 -0x1.92a5c4p+4 : -0x9.e410bd8d8c8507a830e34d60e8p+32 : inexact-ok += sinh downward binary64 -0x1.92a5c27afbe82p+4 : -0x9.e40fcd12392ap+32 : inexact-ok += sinh tonearest binary64 -0x1.92a5c27afbe82p+4 : -0x9.e40fcd1239298p+32 : inexact-ok += sinh towardzero binary64 -0x1.92a5c27afbe82p+4 : -0x9.e40fcd1239298p+32 : inexact-ok += sinh upward binary64 -0x1.92a5c27afbe82p+4 : -0x9.e40fcd1239298p+32 : inexact-ok += sinh downward intel96 -0x1.92a5c27afbe82p+4 : -0x9.e40fcd123929801p+32 : inexact-ok += sinh tonearest intel96 -0x1.92a5c27afbe82p+4 : -0x9.e40fcd1239298p+32 : inexact-ok += sinh towardzero intel96 -0x1.92a5c27afbe82p+4 : -0x9.e40fcd1239298p+32 : inexact-ok += sinh upward intel96 -0x1.92a5c27afbe82p+4 : -0x9.e40fcd1239298p+32 : inexact-ok += sinh downward m68k96 -0x1.92a5c27afbe82p+4 : -0x9.e40fcd123929801p+32 : inexact-ok += sinh tonearest m68k96 -0x1.92a5c27afbe82p+4 : -0x9.e40fcd1239298p+32 : inexact-ok += sinh towardzero m68k96 -0x1.92a5c27afbe82p+4 : -0x9.e40fcd1239298p+32 : inexact-ok += sinh upward m68k96 -0x1.92a5c27afbe82p+4 : -0x9.e40fcd1239298p+32 : inexact-ok += sinh downward binary128 -0x1.92a5c27afbe82p+4 : -0x9.e40fcd123929800000000000212p+32 : inexact-ok += sinh tonearest binary128 -0x1.92a5c27afbe82p+4 : -0x9.e40fcd123929800000000000212p+32 : inexact-ok += sinh towardzero binary128 -0x1.92a5c27afbe82p+4 : -0x9.e40fcd1239298000000000002118p+32 : inexact-ok += sinh upward binary128 -0x1.92a5c27afbe82p+4 : -0x9.e40fcd1239298000000000002118p+32 : inexact-ok += sinh downward ibm128 -0x1.92a5c27afbe82p+4 : -0x9.e40fcd12392980000000000024p+32 : inexact-ok += sinh tonearest ibm128 -0x1.92a5c27afbe82p+4 : -0x9.e40fcd1239298000000000002p+32 : inexact-ok += sinh towardzero ibm128 -0x1.92a5c27afbe82p+4 : -0x9.e40fcd1239298000000000002p+32 : inexact-ok += sinh upward ibm128 -0x1.92a5c27afbe82p+4 : -0x9.e40fcd1239298000000000002p+32 : inexact-ok diff '--color=auto' -Naurp glibc/NEWS glibc-2.44/NEWS --- glibc/NEWS 2026-08-15 13:45:04.633686306 -0600 +++ glibc-2.44/NEWS 2026-08-15 13:45:38.140126915 -0600 @@ -5,6 +5,22 @@ See the end for copying conditions. Please send GNU C library bug reports via using `glibc' in the "product" field. +Version 2.44.1 + +The following bugs are resolved with this release: + + [34338] libc: Cancellable syscall wrappers are missing from backtraces + because they tail-call __syscall_cancel + [34438] build: non reproducible build failure: sigaltstack-offsets.h: + No such file or directory + [34439] build: parallel make install fails on multi-ABI targets: no + rule to make $(inst_includedir)/gnu/lib-names-$(abi).h in csu + [34441] math: math: sinh() returns wrong results for some inputs with + |x| > 36.736801 + [34465] math: math: x86_64 tanh ifunc selection wrong + [34509] libc: [m68k] Regression: Perl locks up after upgrading glibc + to 2.43 + Version 2.44 Major new features: diff '--color=auto' -Naurp glibc/nptl/cancellation.c glibc-2.44/nptl/cancellation.c --- glibc/nptl/cancellation.c 2026-08-15 13:45:04.636686256 -0600 +++ glibc-2.44/nptl/cancellation.c 2026-08-15 13:43:57.841076538 -0600 @@ -19,66 +19,6 @@ #include #include "pthreadP.h" -/* Called by the INTERNAL_SYSCALL_CANCEL macro, check for cancellation and - returns the syscall value or its negative error code. */ -long int -__internal_syscall_cancel (__syscall_arg_t a1, __syscall_arg_t a2, - __syscall_arg_t a3, __syscall_arg_t a4, - __syscall_arg_t a5, __syscall_arg_t a6, - __SYSCALL_CANCEL7_ARG_DEF - __syscall_arg_t nr) -{ - long int result; - struct pthread *pd = THREAD_SELF; - - /* If cancellation is not enabled, call the syscall directly and also - for thread terminatation to avoid call __syscall_do_cancel while - executing cleanup handlers. */ - int ch = atomic_load_relaxed (&pd->cancelhandling); - if (SINGLE_THREAD_P || !cancel_enabled (ch) || cancel_exiting (ch)) - { - result = INTERNAL_SYSCALL_NCS_CALL (nr, a1, a2, a3, a4, a5, a6 - __SYSCALL_CANCEL7_ARCH_ARG7); - if (INTERNAL_SYSCALL_ERROR_P (result)) - return -INTERNAL_SYSCALL_ERRNO (result); - return result; - } - - /* Call the arch-specific entry points that contains the globals markers - to be checked by SIGCANCEL handler. */ - result = __syscall_cancel_arch (&pd->cancelhandling, nr, a1, a2, a3, a4, a5, - a6 __SYSCALL_CANCEL7_ARCH_ARG7); - - /* If the cancellable syscall was interrupted by SIGCANCEL and it has no - side-effect, cancel the thread if cancellation is enabled. */ - ch = atomic_load_relaxed (&pd->cancelhandling); - /* The behaviour here assumes that EINTR is returned only if there are no - visible side effects. POSIX Issue 7 has not yet provided any stronger - language for close, and in theory the close syscall could return EINTR - and leave the file descriptor open (conforming and leaks). It expects - that no such kernel is used with glibc. */ - if (result == -EINTR && cancel_enabled_and_canceled (ch)) - __syscall_do_cancel (); - - return result; -} - -/* Called by the SYSCALL_CANCEL macro, check for cancellation and return the - syscall expected success value (usually 0) or, in case of failure, -1 and - sets errno to syscall return value. */ -long int -__syscall_cancel (__syscall_arg_t a1, __syscall_arg_t a2, - __syscall_arg_t a3, __syscall_arg_t a4, - __syscall_arg_t a5, __syscall_arg_t a6, - __SYSCALL_CANCEL7_ARG_DEF __syscall_arg_t 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; -} - /* Called by __syscall_cancel_arch or function above start the thread cancellation. */ _Noreturn void diff '--color=auto' -Naurp glibc/nptl/futex-internal.c glibc-2.44/nptl/futex-internal.c --- glibc/nptl/futex-internal.c 2026-08-15 13:45:04.636686256 -0600 +++ glibc-2.44/nptl/futex-internal.c 2026-08-15 13:43:57.841154674 -0600 @@ -17,7 +17,7 @@ . */ #include -#include +#include #include #include #include diff '--color=auto' -Naurp glibc/nptl/sem_waitcommon.c glibc-2.44/nptl/sem_waitcommon.c --- glibc/nptl/sem_waitcommon.c 2026-08-15 13:45:04.636686256 -0600 +++ glibc-2.44/nptl/sem_waitcommon.c 2026-08-15 13:43:57.842378323 -0600 @@ -18,7 +18,7 @@ #include #include -#include +#include #include #include #include diff '--color=auto' -Naurp glibc/stdio-common/tst-printf-format.awk glibc-2.44/stdio-common/tst-printf-format.awk --- glibc/stdio-common/tst-printf-format.awk 2026-08-15 13:45:04.637686239 -0600 +++ glibc-2.44/stdio-common/tst-printf-format.awk 2026-08-15 13:43:57.862768047 -0600 @@ -32,6 +32,9 @@ BEGIN { # non-bignum mode unless a sign has been explicitly given. Keep # original 'val' for reporting. value = gensub(/^(INF|NAN|inf|nan)/, "+\\1", 1, val) + # Neither changes between the conversions applied to this value. + value_infnan = value ~ /(INF|NAN|inf|nan)/ + value_zero = value == 0 next } @@ -52,7 +55,7 @@ BEGIN { # Discard the '#' flag with the octal conversion if output starts with # 0 in the absence of this flag. In that case no extra 0 is supposed # to be produced, but gawk prepends it anyway. - if (format ~ /#.*o/) + if (index(format, "#") && format ~ /#.*o/) { tmpfmt = gensub(/#/, "", "g", format) tmpout = sprintf(tmpfmt, value) @@ -62,7 +65,7 @@ BEGIN { # Likewise with the hexadecimal conversion where zero value with the # precision of zero is supposed to produce no characters, but gawk # outputs 0 instead. - else if (format ~ /#.*[Xx]/) + else if (index(format, "#") && format ~ /#.*[Xx]/) { tmpfmt = gensub(/#/, "", "g", format) tmpout = sprintf(tmpfmt, value) @@ -78,7 +81,7 @@ BEGIN { # values and reprint the output produced using the string conversion, # with the field width carried over and the relevant flags handled by # hand. - if (format ~ /[EFGefg]/ && value ~ /(INF|NAN|inf|nan)/) + if (value_infnan && format ~ /[EFGefg]/) { minus = format ~ /-/ ? "-" : "" sign = value ~ /-/ ? "-" : format ~ /\+/ ? "+" : format ~ / / ? " " : "" @@ -94,7 +97,7 @@ BEGIN { # In that case "+" is always supposed to be produced, but with the # precision of zero gawk in the non-bignum mode produces any padding # requested only. - else if (format ~ /\+.*[di]/ && value == 0) + else if (value_zero && format ~ /\+.*[di]/) { output = gensub(/^( *) $/, format ~ /-/ ? "+\\1" : "\\1+", 1, output) output = gensub(/^$/, "+", 1, output) @@ -103,7 +106,7 @@ BEGIN { # conversion for zero value. In that case at least one " " is # supposed to be produced, but with the precision of zero gawk in the # non-bignum mode produces nothing. - else if (format ~ / .*[di]/ && value == 0) + else if (value_zero && format ~ / .*[di]/) { output = gensub(/^$/, " ", 1, output) } diff '--color=auto' -Naurp glibc/stdio-common/tst-printf-format-char.sh glibc-2.44/stdio-common/tst-printf-format-char.sh --- glibc/stdio-common/tst-printf-format-char.sh 2026-08-15 13:45:04.637686239 -0600 +++ glibc-2.44/stdio-common/tst-printf-format-char.sh 2026-08-15 13:43:57.861216507 -0600 @@ -23,7 +23,7 @@ xprintf=$1; shift common_objpfx=$1; shift test_program_prefix=$1; shift -AWK=${AWK:-awk} +AWK="env LC_ALL=C ${AWK:-awk}" status=0 diff '--color=auto' -Naurp glibc/stdio-common/tst-printf-format-c.sh glibc-2.44/stdio-common/tst-printf-format-c.sh --- glibc/stdio-common/tst-printf-format-c.sh 2026-08-15 13:45:04.637686239 -0600 +++ glibc-2.44/stdio-common/tst-printf-format-c.sh 2026-08-15 13:43:57.861209083 -0600 @@ -23,7 +23,7 @@ xprintf=$1; shift common_objpfx=$1; shift test_program_prefix=$1; shift -AWK=${AWK:-awk} +AWK="env LC_ALL=C ${AWK:-awk}" echo Verifying c (set -o pipefail diff '--color=auto' -Naurp glibc/stdio-common/tst-printf-format-double.sh glibc-2.44/stdio-common/tst-printf-format-double.sh --- glibc/stdio-common/tst-printf-format-double.sh 2026-08-15 13:45:04.637686239 -0600 +++ glibc-2.44/stdio-common/tst-printf-format-double.sh 2026-08-15 13:43:57.861345016 -0600 @@ -29,7 +29,7 @@ test_program_prefix=$1; shift # internally to process the conversion requested, so any bug in our code # would then be verified against itself, defeating the objective of doing # the verification against an independent implementation. -AWK="${AWK:-awk} -M" +AWK="env LC_ALL=C ${AWK:-awk} -M" status=77 diff '--color=auto' -Naurp glibc/stdio-common/tst-printf-format-int.sh glibc-2.44/stdio-common/tst-printf-format-int.sh --- glibc/stdio-common/tst-printf-format-int.sh 2026-08-15 13:45:04.637686239 -0600 +++ glibc-2.44/stdio-common/tst-printf-format-int.sh 2026-08-15 13:43:57.861470300 -0600 @@ -23,7 +23,7 @@ xprintf=$1; shift common_objpfx=$1; shift test_program_prefix=$1; shift -AWK=${AWK:-awk} +AWK="env LC_ALL=C ${AWK:-awk}" status=77 diff '--color=auto' -Naurp glibc/stdio-common/tst-printf-format-ldouble.sh glibc-2.44/stdio-common/tst-printf-format-ldouble.sh --- glibc/stdio-common/tst-printf-format-ldouble.sh 2026-08-15 13:45:04.637686239 -0600 +++ glibc-2.44/stdio-common/tst-printf-format-ldouble.sh 2026-08-15 13:43:57.861478795 -0600 @@ -29,7 +29,7 @@ test_program_prefix=$1; shift # internally to process the conversion requested, so any bug in our code # would then be verified against itself, defeating the objective of doing # the verification against an independent implementation. -AWK="${AWK:-awk} -M" +AWK="env LC_ALL=C ${AWK:-awk} -M" status=77 diff '--color=auto' -Naurp glibc/stdio-common/tst-printf-format-llong.sh glibc-2.44/stdio-common/tst-printf-format-llong.sh --- glibc/stdio-common/tst-printf-format-llong.sh 2026-08-15 13:45:04.637686239 -0600 +++ glibc-2.44/stdio-common/tst-printf-format-llong.sh 2026-08-15 13:43:57.861486600 -0600 @@ -23,7 +23,7 @@ xprintf=$1; shift common_objpfx=$1; shift test_program_prefix=$1; shift -AWK=${AWK:-awk} +AWK="env LC_ALL=C ${AWK:-awk}" status=77 diff '--color=auto' -Naurp glibc/stdio-common/tst-printf-format-long.sh glibc-2.44/stdio-common/tst-printf-format-long.sh --- glibc/stdio-common/tst-printf-format-long.sh 2026-08-15 13:45:04.637686239 -0600 +++ glibc-2.44/stdio-common/tst-printf-format-long.sh 2026-08-15 13:43:57.861494234 -0600 @@ -23,7 +23,7 @@ xprintf=$1; shift common_objpfx=$1; shift test_program_prefix=$1; shift -AWK=${AWK:-awk} +AWK="env LC_ALL=C ${AWK:-awk}" status=77 diff '--color=auto' -Naurp glibc/stdio-common/tst-printf-format-short.sh glibc-2.44/stdio-common/tst-printf-format-short.sh --- glibc/stdio-common/tst-printf-format-short.sh 2026-08-15 13:45:04.637686239 -0600 +++ glibc-2.44/stdio-common/tst-printf-format-short.sh 2026-08-15 13:43:57.861780037 -0600 @@ -23,7 +23,7 @@ xprintf=$1; shift common_objpfx=$1; shift test_program_prefix=$1; shift -AWK=${AWK:-awk} +AWK="env LC_ALL=C ${AWK:-awk}" status=0 diff '--color=auto' -Naurp glibc/stdio-common/tst-printf-format-s.sh glibc-2.44/stdio-common/tst-printf-format-s.sh --- glibc/stdio-common/tst-printf-format-s.sh 2026-08-15 13:45:04.637686239 -0600 +++ glibc-2.44/stdio-common/tst-printf-format-s.sh 2026-08-15 13:43:57.861772222 -0600 @@ -23,7 +23,7 @@ xprintf=$1; shift common_objpfx=$1; shift test_program_prefix=$1; shift -AWK=${AWK:-awk} +AWK="env LC_ALL=C ${AWK:-awk}" echo Verifying s (set -o pipefail diff '--color=auto' -Naurp glibc/stdio-common/tst-printf-format-uchar.sh glibc-2.44/stdio-common/tst-printf-format-uchar.sh --- glibc/stdio-common/tst-printf-format-uchar.sh 2026-08-15 13:45:04.637686239 -0600 +++ glibc-2.44/stdio-common/tst-printf-format-uchar.sh 2026-08-15 13:43:57.862021737 -0600 @@ -23,7 +23,7 @@ xprintf=$1; shift common_objpfx=$1; shift test_program_prefix=$1; shift -AWK=${AWK:-awk} +AWK="env LC_ALL=C ${AWK:-awk}" status=0 diff '--color=auto' -Naurp glibc/stdio-common/tst-printf-format-uint.sh glibc-2.44/stdio-common/tst-printf-format-uint.sh --- glibc/stdio-common/tst-printf-format-uint.sh 2026-08-15 13:45:04.637686239 -0600 +++ glibc-2.44/stdio-common/tst-printf-format-uint.sh 2026-08-15 13:43:57.862030653 -0600 @@ -23,7 +23,7 @@ xprintf=$1; shift common_objpfx=$1; shift test_program_prefix=$1; shift -AWK=${AWK:-awk} +AWK="env LC_ALL=C ${AWK:-awk}" status=77 diff '--color=auto' -Naurp glibc/stdio-common/tst-printf-format-ullong.sh glibc-2.44/stdio-common/tst-printf-format-ullong.sh --- glibc/stdio-common/tst-printf-format-ullong.sh 2026-08-15 13:45:04.637686239 -0600 +++ glibc-2.44/stdio-common/tst-printf-format-ullong.sh 2026-08-15 13:43:57.862038208 -0600 @@ -23,7 +23,7 @@ xprintf=$1; shift common_objpfx=$1; shift test_program_prefix=$1; shift -AWK=${AWK:-awk} +AWK="env LC_ALL=C ${AWK:-awk}" status=77 diff '--color=auto' -Naurp glibc/stdio-common/tst-printf-format-ulong.sh glibc-2.44/stdio-common/tst-printf-format-ulong.sh --- glibc/stdio-common/tst-printf-format-ulong.sh 2026-08-15 13:45:04.637686239 -0600 +++ glibc-2.44/stdio-common/tst-printf-format-ulong.sh 2026-08-15 13:43:57.862045601 -0600 @@ -23,7 +23,7 @@ xprintf=$1; shift common_objpfx=$1; shift test_program_prefix=$1; shift -AWK=${AWK:-awk} +AWK="env LC_ALL=C ${AWK:-awk}" status=77 diff '--color=auto' -Naurp glibc/stdio-common/tst-printf-format-ushort.sh glibc-2.44/stdio-common/tst-printf-format-ushort.sh --- glibc/stdio-common/tst-printf-format-ushort.sh 2026-08-15 13:45:04.637686239 -0600 +++ glibc-2.44/stdio-common/tst-printf-format-ushort.sh 2026-08-15 13:43:57.862053516 -0600 @@ -23,7 +23,7 @@ xprintf=$1; shift common_objpfx=$1; shift test_program_prefix=$1; shift -AWK=${AWK:-awk} +AWK="env LC_ALL=C ${AWK:-awk}" status=0 diff '--color=auto' -Naurp glibc/string/test-strcasecmp.c glibc-2.44/string/test-strcasecmp.c --- glibc/string/test-strcasecmp.c 2026-08-15 13:45:04.638686223 -0600 +++ glibc-2.44/string/test-strcasecmp.c 2026-08-15 13:43:57.869538901 -0600 @@ -63,6 +63,9 @@ do_test (size_t align1, size_t align2, s int exp_result) { size_t i; + size_t value = 0; + size_t step = 23U % (size_t) max_char; + size_t pattern_len; char *s1, *s2; if (len == 0) @@ -80,10 +83,25 @@ do_test (size_t align1, size_t align2, s s1 = (char *) (buf1 + align1); s2 = (char *) (buf2 + align2); - for (i = 0; i < len; i++) + pattern_len + = len < (size_t) max_char ? len : (size_t) max_char; + + for (i = 0; i < pattern_len; i++) { - s1[i] = toupper (1 + 23 * i % max_char); + s1[i] = toupper (1 + value); s2[i] = tolower (s1[i]); + value += step; + if (value >= (size_t) max_char) + value -= max_char; + } + + while (i < len) + { + size_t copy = i < len - i ? i : len - i; + + memcpy (s1 + i, s1, copy); + memcpy (s2 + i, s2, copy); + i += copy; } s1[len] = s2[len] = 0; diff '--color=auto' -Naurp glibc/string/test-strcmp.c glibc-2.44/string/test-strcmp.c --- glibc/string/test-strcmp.c 2026-08-15 13:45:04.638686223 -0600 +++ glibc-2.44/string/test-strcmp.c 2026-08-15 13:43:57.869582953 -0600 @@ -156,6 +156,10 @@ do_test (size_t align1, size_t align2, s int exp_result) { size_t i; + size_t value = 0; + size_t pattern_len; + size_t step + = (23U << ((CHARBYTES - 1) * 8)) % (size_t) max_char; CHAR *s1, *s2; @@ -179,8 +183,28 @@ do_test (size_t align1, size_t align2, s i = align2 + CHARBYTES * (len + 2); s2 = (CHAR *)(buf2 + ((page_size - i) / 16 * 16) + align2); - for (i = 0; i < len; i++) - s1[i] = s2[i] = 1 + (23 << ((CHARBYTES - 1) * 8)) * i % max_char; + /* The generated sequence repeats after at most max_char elements. */ + pattern_len + = len < (size_t) max_char ? len : (size_t) max_char; + + for (i = 0; i < pattern_len; i++) + { + s1[i] = 1 + value; + + value += step; + if (value >= (size_t) max_char) + value -= max_char; + } + + while (i < len) + { + size_t copy = i < len - i ? i : len - i; + + MEMCPY (s1 + i, s1, copy); + i += copy; + } + + MEMCPY (s2, s1, len); s1[len] = s2[len] = 0; s1[len + 1] = 23; diff '--color=auto' -Naurp glibc/string/test-strncasecmp.c glibc-2.44/string/test-strncasecmp.c --- glibc/string/test-strncasecmp.c 2026-08-15 13:45:04.638686223 -0600 +++ glibc-2.44/string/test-strncasecmp.c 2026-08-15 13:43:57.869640840 -0600 @@ -83,6 +83,9 @@ do_test (size_t align1, size_t align2, s int exp_result) { size_t i; + size_t value = 0; + size_t step = 23U % (size_t) max_char; + size_t pattern_len; char *s1, *s2; if (len == 0) @@ -100,10 +103,26 @@ do_test (size_t align1, size_t align2, s s1 = (char *) (buf1 + align1); s2 = (char *) (buf2 + align2); - for (i = 0; i < len; i++) + pattern_len + = len < (size_t) max_char ? len : (size_t) max_char; + + for (i = 0; i < pattern_len; i++) { - s1[i] = toupper (1 + 23 * i % max_char); + s1[i] = toupper (1 + value); s2[i] = tolower (s1[i]); + + value += step; + if (value >= (size_t) max_char) + value -= max_char; + } + + while (i < len) + { + size_t copy = i < len - i ? i : len - i; + + memcpy (s1 + i, s1, copy); + memcpy (s2 + i, s2, copy); + i += copy; } s1[len] = s2[len] = 0; diff '--color=auto' -Naurp glibc/string/test-strncmp.c glibc-2.44/string/test-strncmp.c --- glibc/string/test-strncmp.c 2026-08-15 13:45:04.638686223 -0600 +++ glibc-2.44/string/test-strncmp.c 2026-08-15 13:43:57.869669293 -0600 @@ -190,6 +190,9 @@ do_test_n (size_t align1, size_t align2, { size_t i, buf_bound; CHAR *s1, *s2, *s1_end, *s2_end; + size_t value = 0; + size_t pattern_len; + size_t step = (23U << ((CHARBYTES - 1) * 8)) % (size_t) max_char; align1 &= ~(CHARBYTES - 1); align2 &= ~(CHARBYTES - 1); @@ -216,8 +219,29 @@ do_test_n (size_t align1, size_t align2, s2[n] = 23; } - for (i = 0; i < buf_bound; i++) - s1[i] = s2[i] = 1 + (23 << ((CHARBYTES - 1) * 8)) * i % max_char; + /* The generated sequence repeats after at most max_char elements. */ + pattern_len + = buf_bound < (size_t) max_char + ? buf_bound : (size_t) max_char; + + for (i = 0; i < pattern_len; i++) + { + s1[i] = 1 + value; + + value += step; + if (value >= (size_t) max_char) + value -= max_char; + } + + while (i < buf_bound) + { + size_t copy = i < buf_bound - i ? i : buf_bound - i; + + MEMCPY (s1 + i, s1, copy); + i += copy; + } + + MEMCPY (s2, s1, buf_bound); s1[len] = 0; s2[len] = 0; diff '--color=auto' -Naurp glibc/sysdeps/arm/Makefile glibc-2.44/sysdeps/arm/Makefile --- glibc/sysdeps/arm/Makefile 2026-08-15 13:45:04.638686223 -0600 +++ glibc-2.44/sysdeps/arm/Makefile 2026-08-15 13:43:57.878989586 -0600 @@ -10,6 +10,11 @@ shared-only-routines += aeabi_unwind_cpp $(objpfx)libgcc-stubs.a: $(objpfx)aeabi_unwind_cpp_pr1.os $(build-extra-lib) +# The rtld link recipes in elf/Makefile use $(gnulib), which here +# includes libgcc-stubs.a, but they cannot name it as a prerequisite: +# gnulib-arch is only defined once this file is included from Makerules. +$(objpfx)librtld.map $(objpfx)librtld.os: | $(objpfx)libgcc-stubs.a + lib-noranlib: $(objpfx)libgcc-stubs.a ifeq ($(build-shared),yes) diff '--color=auto' -Naurp glibc/sysdeps/ieee754/dbl-64/e_sinh.c glibc-2.44/sysdeps/ieee754/dbl-64/e_sinh.c --- glibc/sysdeps/ieee754/dbl-64/e_sinh.c 2026-08-15 13:45:04.639686206 -0600 +++ glibc-2.44/sysdeps/ieee754/dbl-64/e_sinh.c 2026-08-15 13:43:57.889846251 -0600 @@ -213,7 +213,7 @@ __sinh (double x) ml = (ul + 8) & MANTISSA_MASK; th += tl; th *= 2; - th *= asuint64 (sp); + th *= sp; if (ml <= 16 || eh - el > 103) return as_sinh_database (x, th); return th; diff '--color=auto' -Naurp glibc/sysdeps/ieee754/dbl-64/e_sinh_data.c glibc-2.44/sysdeps/ieee754/dbl-64/e_sinh_data.c --- glibc/sysdeps/ieee754/dbl-64/e_sinh_data.c 2026-08-15 13:45:04.639686206 -0600 +++ glibc-2.44/sysdeps/ieee754/dbl-64/e_sinh_data.c 2026-08-15 13:43:57.889854767 -0600 @@ -35,12 +35,13 @@ const double __sinh_data_ch[][2] = { 0x1.ae64567f54482p-26, -0x1.defcf17a6ab79p-81 } }; -const double __sinh_data_db[49][3] = +const double __sinh_data_db[51][3] = { { 0x1.364303e1ad8f6p-2, 0x1.3b07e0c779ddap-2, -0x1.bcp-106 }, { 0x1.4169f234f23b9p-2, 0x1.46b7b3b358f99p-2, -0x1p-56 }, { 0x1.616cc75d49226p-2, 0x1.687bd068c1c1ep-2, 0x1.ap-111 }, { 0x1.ae3773250e7d2p-2, 0x1.bafc3479fc9ccp-2, -0x1p-105 }, + { 0x1.b7efa91915c95p-2, 0x1.c59869f17b483p-2, -0x1p-104 }, { 0x1.d68039861ab53p-2, 0x1.e73b46abb01e1p-2, -0x1.2p-109 }, { 0x1.e90f16eb88c09p-2, 0x1.fbdd4a37760b7p-2, -0x1.f8p-108 }, { 0x1.a3fc7e4dd47d1p-1, 0x1.d4b21ebf542fp-1, 0x1.ep-107 }, @@ -62,6 +63,7 @@ const double __sinh_data_db[49][3] = { 0x1.43a81752eabe7p+3, 0x1.81d364845ecfap+13, -0x1p-90 }, { 0x1.16369cd53bb69p+4, 0x1.0fbc6c02b1c9p+24, -0x1.9p-81 }, { 0x1.20e29ea8b51e2p+4, 0x1.08b8abba28abcp+25, 0x1.9bp-79 }, + { 0x1.92a5c27afbe82p+4, 0x1.3c81f9a247253p+35, 0x1p-67 }, { 0x1.a1e4f11b513d7p+4, 0x1.9a65b6c2e2185p+36, -0x1.bcp-70 }, { 0x1.c089fcf166171p+4, 0x1.5c452e0e37569p+39, 0x1.4p-69 }, { 0x1.e42a98b3a0be5p+4, 0x1.938768ca4f8aap+42, 0x1.6dp-62 }, diff '--color=auto' -Naurp glibc/sysdeps/ieee754/dbl-64/e_sinh_data.h glibc-2.44/sysdeps/ieee754/dbl-64/e_sinh_data.h --- glibc/sysdeps/ieee754/dbl-64/e_sinh_data.h 2026-08-15 13:45:04.639686206 -0600 +++ glibc-2.44/sysdeps/ieee754/dbl-64/e_sinh_data.h 2026-08-15 13:43:57.889862631 -0600 @@ -29,7 +29,7 @@ SOFTWARE. extern const double __sinh_data_ch[][2] attribute_hidden; #define CH __sinh_data_ch -extern const double __sinh_data_db[49][3] attribute_hidden; +extern const double __sinh_data_db[51][3] attribute_hidden; #define DB __sinh_data_db #endif diff '--color=auto' -Naurp glibc/sysdeps/ieee754/dbl-64/s_tanh.c glibc-2.44/sysdeps/ieee754/dbl-64/s_tanh.c --- glibc/sysdeps/ieee754/dbl-64/s_tanh.c 2026-08-15 13:45:04.639686206 -0600 +++ glibc-2.44/sysdeps/ieee754/dbl-64/s_tanh.c 2026-08-15 13:43:57.890664976 -0600 @@ -283,4 +283,6 @@ __tanh (double x) return as_tanh_database (x, res); return res; } +#ifndef __tanh libm_alias_double (__tanh, tanh) +#endif diff '--color=auto' -Naurp glibc/sysdeps/ieee754/ldbl-opt/configure glibc-2.44/sysdeps/ieee754/ldbl-opt/configure --- glibc/sysdeps/ieee754/ldbl-opt/configure 2026-08-15 13:45:04.639686206 -0600 +++ glibc-2.44/sysdeps/ieee754/ldbl-opt/configure 2026-08-15 13:43:57.899120438 -0600 @@ -13,17 +13,10 @@ CFLAGS="$CFLAGS -mlong-double-128" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -int -main (void) -{ - #ifndef __LONG_DOUBLE_128__ # error "compiler did not predefine __LONG_DOUBLE_128__ as expected" #endif long double foobar (long double x) { return x; } - ; - return 0; -} _ACEOF if ac_fn_c_try_compile "$LINENO" then : diff '--color=auto' -Naurp glibc/sysdeps/ieee754/ldbl-opt/configure.ac glibc-2.44/sysdeps/ieee754/ldbl-opt/configure.ac --- glibc/sysdeps/ieee754/ldbl-opt/configure.ac 2026-08-15 13:45:04.639686206 -0600 +++ glibc-2.44/sysdeps/ieee754/ldbl-opt/configure.ac 2026-08-15 13:43:57.899126850 -0600 @@ -6,7 +6,7 @@ AC_CACHE_CHECK(whether $CC $CFLAGS suppo libc_cv_mlong_double_128, [dnl save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -mlong-double-128" -AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ +AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ #ifndef __LONG_DOUBLE_128__ # error "compiler did not predefine __LONG_DOUBLE_128__ as expected" #endif diff '--color=auto' -Naurp glibc/sysdeps/m68k/m680x0/fpu/e_fmod.c glibc-2.44/sysdeps/m68k/m680x0/fpu/e_fmod.c --- glibc/sysdeps/m68k/m680x0/fpu/e_fmod.c 2026-08-15 13:45:04.639686206 -0600 +++ glibc-2.44/sysdeps/m68k/m680x0/fpu/e_fmod.c 2026-08-15 13:43:57.904159695 -0600 @@ -33,7 +33,7 @@ __fmod (double x, double y) && !is_nan (hx))) return __math_invalid (x); - return __m81_u(fmod)(x, y); + return __m81_u(__ieee754_fmod)(x, y); } strong_alias (__fmod, __ieee754_fmod) libm_alias_finite (__ieee754_fmod, __fmod) diff '--color=auto' -Naurp glibc/sysdeps/m68k/m680x0/fpu/e_fmodf.c glibc-2.44/sysdeps/m68k/m680x0/fpu/e_fmodf.c --- glibc/sysdeps/m68k/m680x0/fpu/e_fmodf.c 2026-08-15 13:45:04.639686206 -0600 +++ glibc-2.44/sysdeps/m68k/m680x0/fpu/e_fmodf.c 2026-08-15 13:43:57.904166478 -0600 @@ -34,7 +34,7 @@ __fmodf (float x, float y) && !is_nan (hx))) return __math_invalidf (x); - return __m81_u(fmodf)(x, y); + return __m81_u(__ieee754_fmodf)(x, y); } strong_alias (__fmodf, __ieee754_fmodf) versioned_symbol (libm, __fmodf, fmodf, GLIBC_2_43); diff '--color=auto' -Naurp glibc/sysdeps/mach/hurd/i386/localplt.data glibc-2.44/sysdeps/mach/hurd/i386/localplt.data --- glibc/sysdeps/mach/hurd/i386/localplt.data 2026-08-15 13:45:04.639686206 -0600 +++ glibc-2.44/sysdeps/mach/hurd/i386/localplt.data 2026-08-15 13:43:57.908027811 -0600 @@ -25,14 +25,14 @@ ld.so: __writev ld.so: __libc_lseek64 ld.so: __mmap ld.so: __fstat64 -ld.so: __fstatat64 +ld.so: __fstatat64 ? ld.so: __stat64 ld.so: __access ld.so: __getpid ld.so: __getcwd ld.so: _exit ? ld.so: abort -ld.so: readlink +ld.so: readlink ? ld.so: _hurd_intr_rpc_mach_msg ld.so: __errno_location ld.so: _dl_init_first diff '--color=auto' -Naurp glibc/sysdeps/mach/hurd/i386/longjmp-ts.c glibc-2.44/sysdeps/mach/hurd/i386/longjmp-ts.c --- glibc/sysdeps/mach/hurd/i386/longjmp-ts.c 2026-08-15 13:45:04.639686206 -0600 +++ glibc-2.44/sysdeps/mach/hurd/i386/longjmp-ts.c 2026-08-15 13:43:57.908035165 -0600 @@ -38,7 +38,6 @@ _hurd_longjmp_thread_state (void *state, ts->eip = env[0].__jmpbuf[JB_PC]; ts->eax = val ?: 1; - PTR_DEMANGLE (ts->ebp); PTR_DEMANGLE (ts->uesp); PTR_DEMANGLE (ts->eip); } diff '--color=auto' -Naurp glibc/sysdeps/mach/hurd/kernel_stat.h glibc-2.44/sysdeps/mach/hurd/kernel_stat.h --- glibc/sysdeps/mach/hurd/kernel_stat.h 1969-12-31 17:00:00.000000000 -0700 +++ glibc-2.44/sysdeps/mach/hurd/kernel_stat.h 2026-08-15 13:43:57.908201405 -0600 @@ -0,0 +1,23 @@ +/* Internal definitions for stat functions. Hurd version. + 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 + . */ + +/* struct stat and struct stat64 never have the same layout: on 32-bit + ABIs st_ino, st_size, and st_blocks are narrower in struct stat, and + on 64-bit ABIs the two structures still differ in the amount of + trailing spare space (see _SPARE_SIZE in bits/stat.h). */ +#define XSTAT_IS_XSTAT64 0 diff '--color=auto' -Naurp glibc/sysdeps/mach/hurd/x86/Makefile glibc-2.44/sysdeps/mach/hurd/x86/Makefile --- glibc/sysdeps/mach/hurd/x86/Makefile 2026-08-15 13:45:04.639686206 -0600 +++ glibc-2.44/sysdeps/mach/hurd/x86/Makefile 2026-08-15 13:43:57.909599750 -0600 @@ -3,11 +3,7 @@ sysdep_routines += ioperm sysdep_headers += sys/io.h endif -ifeq ($(subdir),debug) -gen-as-const-headers += signal-defines.sym -endif - -ifeq ($(subdir),setjmp) +ifeq ($(subdir),csu) gen-as-const-headers += signal-defines.sym endif diff '--color=auto' -Naurp glibc/sysdeps/mach/hurd/x86_64/localplt.data glibc-2.44/sysdeps/mach/hurd/x86_64/localplt.data --- glibc/sysdeps/mach/hurd/x86_64/localplt.data 2026-08-15 13:45:04.639686206 -0600 +++ glibc-2.44/sysdeps/mach/hurd/x86_64/localplt.data 2026-08-15 13:43:57.909921579 -0600 @@ -24,14 +24,14 @@ ld.so: __writev ld.so: __libc_lseek64 ld.so: __mmap ld.so: __fstat64 -ld.so: __fstatat64 +ld.so: __fstatat64 ? ld.so: __stat64 ld.so: __access ld.so: __getpid ld.so: __getcwd ld.so: _exit ? ld.so: abort -ld.so: readlink +ld.so: readlink ? ld.so: _hurd_intr_rpc_mach_msg ld.so: __errno_location ld.so: _dl_init_first diff '--color=auto' -Naurp glibc/sysdeps/unix/sysdep.h glibc-2.44/sysdeps/unix/sysdep.h --- glibc/sysdeps/unix/sysdep.h 2026-08-15 13:45:04.640686189 -0600 +++ glibc-2.44/sysdeps/unix/sysdep.h 2026-08-15 13:45:38.144126848 -0600 @@ -154,42 +154,31 @@ # define __SYSCALL_CANCEL7_ARG7 # define __SYSCALL_CANCEL7_ARCH_ARG7 #endif -long int __internal_syscall_cancel (__syscall_arg_t a1, __syscall_arg_t a2, - __syscall_arg_t a3, __syscall_arg_t a4, - __syscall_arg_t a5, __syscall_arg_t a6, - __SYSCALL_CANCEL7_ARG_DEF - __syscall_arg_t nr) attribute_hidden; - -long int __syscall_cancel (__syscall_arg_t arg1, __syscall_arg_t arg2, - __syscall_arg_t arg3, __syscall_arg_t arg4, - __syscall_arg_t arg5, __syscall_arg_t arg6, - __SYSCALL_CANCEL7_ARG_DEF - __syscall_arg_t nr) attribute_hidden; #define __SYSCALL_CANCEL0(name) \ - __syscall_cancel (0, 0, 0, 0, 0, 0, __SYSCALL_CANCEL7_ARG __NR_##name) + syscall_cancel (0, 0, 0, 0, 0, 0, __SYSCALL_CANCEL7_ARG __NR_##name) #define __SYSCALL_CANCEL1(name, a1) \ - __syscall_cancel (__SSC (a1), 0, 0, 0, 0, 0, \ - __SYSCALL_CANCEL7_ARG __NR_##name) + syscall_cancel (__SSC (a1), 0, 0, 0, 0, 0, \ + __SYSCALL_CANCEL7_ARG __NR_##name) #define __SYSCALL_CANCEL2(name, a1, a2) \ - __syscall_cancel (__SSC (a1), __SSC (a2), 0, 0, 0, 0, \ - __SYSCALL_CANCEL7_ARG __NR_##name) + syscall_cancel (__SSC (a1), __SSC (a2), 0, 0, 0, 0, \ + __SYSCALL_CANCEL7_ARG __NR_##name) #define __SYSCALL_CANCEL3(name, a1, a2, a3) \ - __syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), 0, 0, 0, \ - __SYSCALL_CANCEL7_ARG __NR_##name) + syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), 0, 0, 0, \ + __SYSCALL_CANCEL7_ARG __NR_##name) #define __SYSCALL_CANCEL4(name, a1, a2, a3, a4) \ - __syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), \ - __SSC(a4), 0, 0, __SYSCALL_CANCEL7_ARG __NR_##name) + syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), \ + __SSC(a4), 0, 0, __SYSCALL_CANCEL7_ARG __NR_##name) #define __SYSCALL_CANCEL5(name, a1, a2, a3, a4, a5) \ - __syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), __SSC(a4), \ - __SSC (a5), 0, __SYSCALL_CANCEL7_ARG __NR_##name) + syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), __SSC(a4), \ + __SSC (a5), 0, __SYSCALL_CANCEL7_ARG __NR_##name) #define __SYSCALL_CANCEL6(name, a1, a2, a3, a4, a5, a6) \ - __syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), __SSC (a4), \ - __SSC (a5), __SSC (a6), __SYSCALL_CANCEL7_ARG \ - __NR_##name) + syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), __SSC (a4), \ + __SSC (a5), __SSC (a6), __SYSCALL_CANCEL7_ARG \ + __NR_##name) #define __SYSCALL_CANCEL7(name, a1, a2, a3, a4, a5, a6, a7) \ - __syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), __SSC (a4), \ - __SSC (a5), __SSC (a6), __SSC (a7), __NR_##name) + syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), __SSC (a4), \ + __SSC (a5), __SSC (a6), __SSC (a7), __NR_##name) #define __SYSCALL_CANCEL_NARGS_X(a,b,c,d,e,f,g,h,n,...) n #define __SYSCALL_CANCEL_NARGS(...) \ @@ -206,33 +195,33 @@ long int __syscall_cancel (__syscall_arg __SYSCALL_CANCEL_DISP (__SYSCALL_CANCEL, __VA_ARGS__) #define __INTERNAL_SYSCALL_CANCEL0(name) \ - __internal_syscall_cancel (0, 0, 0, 0, 0, 0, __SYSCALL_CANCEL7_ARG \ + internal_syscall_cancel (0, 0, 0, 0, 0, 0, __SYSCALL_CANCEL7_ARG \ __NR_##name) #define __INTERNAL_SYSCALL_CANCEL1(name, a1) \ - __internal_syscall_cancel (__SSC (a1), 0, 0, 0, 0, 0, \ - __SYSCALL_CANCEL7_ARG __NR_##name) + internal_syscall_cancel (__SSC (a1), 0, 0, 0, 0, 0, \ + __SYSCALL_CANCEL7_ARG __NR_##name) #define __INTERNAL_SYSCALL_CANCEL2(name, a1, a2) \ - __internal_syscall_cancel (__SSC (a1), __SSC (a2), 0, 0, 0, 0, \ - __SYSCALL_CANCEL7_ARG __NR_##name) + internal_syscall_cancel (__SSC (a1), __SSC (a2), 0, 0, 0, 0, \ + __SYSCALL_CANCEL7_ARG __NR_##name) #define __INTERNAL_SYSCALL_CANCEL3(name, a1, a2, a3) \ - __internal_syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), 0, \ - 0, 0, __SYSCALL_CANCEL7_ARG __NR_##name) + internal_syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), 0, \ + 0, 0, __SYSCALL_CANCEL7_ARG __NR_##name) #define __INTERNAL_SYSCALL_CANCEL4(name, a1, a2, a3, a4) \ - __internal_syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), \ - __SSC(a4), 0, 0, \ - __SYSCALL_CANCEL7_ARG __NR_##name) + internal_syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), \ + __SSC(a4), 0, 0, \ + __SYSCALL_CANCEL7_ARG __NR_##name) #define __INTERNAL_SYSCALL_CANCEL5(name, a1, a2, a3, a4, a5) \ - __internal_syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), \ - __SSC(a4), __SSC (a5), 0, \ - __SYSCALL_CANCEL7_ARG __NR_##name) + internal_syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), \ + __SSC(a4), __SSC (a5), 0, \ + __SYSCALL_CANCEL7_ARG __NR_##name) #define __INTERNAL_SYSCALL_CANCEL6(name, a1, a2, a3, a4, a5, a6) \ - __internal_syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), \ - __SSC (a4), __SSC (a5), __SSC (a6), \ - __SYSCALL_CANCEL7_ARG __NR_##name) + internal_syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), \ + __SSC (a4), __SSC (a5), __SSC (a6), \ + __SYSCALL_CANCEL7_ARG __NR_##name) #define __INTERNAL_SYSCALL_CANCEL7(name, a1, a2, a3, a4, a5, a6, a7) \ - __internal_syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), \ - __SSC (a4), __SSC (a5), __SSC (a6), \ - __SSC (a7), __NR_##name) + internal_syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), \ + __SSC (a4), __SSC (a5), __SSC (a6), \ + __SSC (a7), __NR_##name) /* Issue a cancellable syscall defined by syscall number NAME plus any other argument required. If an error occurs its value is returned as an negative diff '--color=auto' -Naurp glibc/sysdeps/unix/sysv/linux/epoll_pwait2.c glibc-2.44/sysdeps/unix/sysv/linux/epoll_pwait2.c --- glibc/sysdeps/unix/sysv/linux/epoll_pwait2.c 2026-08-15 13:45:04.640686189 -0600 +++ glibc-2.44/sysdeps/unix/sysv/linux/epoll_pwait2.c 2026-08-15 13:43:57.939943867 -0600 @@ -17,7 +17,7 @@ . */ #include -#include +#include int __epoll_pwait2_time64 (int fd, struct epoll_event *ev, int maxev, diff '--color=auto' -Naurp glibc/sysdeps/unix/sysv/linux/powerpc/configure glibc-2.44/sysdeps/unix/sysv/linux/powerpc/configure --- glibc/sysdeps/unix/sysv/linux/powerpc/configure 2026-08-15 13:45:04.640686189 -0600 +++ glibc-2.44/sysdeps/unix/sysv/linux/powerpc/configure 2026-08-15 13:43:57.947063210 -0600 @@ -12,18 +12,12 @@ else case e in #( CFLAGS="$CFLAGS -mlong-double-128" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -int -main (void) -{ +#include #if LDBL_MANT_DIG != 106 # error "compiler doesn't implement IBM extended format of long double" #endif long double foobar (long double x) { return x; } - ; - return 0; -} _ACEOF if ac_fn_c_try_compile "$LINENO" then : diff '--color=auto' -Naurp glibc/sysdeps/unix/sysv/linux/powerpc/configure.ac glibc-2.44/sysdeps/unix/sysv/linux/powerpc/configure.ac --- glibc/sysdeps/unix/sysv/linux/powerpc/configure.ac 2026-08-15 13:45:04.640686189 -0600 +++ glibc-2.44/sysdeps/unix/sysv/linux/powerpc/configure.ac 2026-08-15 13:43:57.947071655 -0600 @@ -6,7 +6,8 @@ AC_CACHE_CHECK(whether $CC $CFLAGS -mlon libc_cv_mlong_double_128ibm, [dnl save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -mlong-double-128" -AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[ +AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ +#include #if LDBL_MANT_DIG != 106 # error "compiler doesn't implement IBM extended format of long double" #endif diff '--color=auto' -Naurp glibc/sysdeps/unix/sysv/linux/recvmmsg.c glibc-2.44/sysdeps/unix/sysv/linux/recvmmsg.c --- glibc/sysdeps/unix/sysv/linux/recvmmsg.c 2026-08-15 13:45:04.640686189 -0600 +++ glibc-2.44/sysdeps/unix/sysv/linux/recvmmsg.c 2026-08-15 13:43:57.948878111 -0600 @@ -16,7 +16,7 @@ . */ #include -#include +#include #include static int diff '--color=auto' -Naurp glibc/sysdeps/unix/sysv/linux/sh/Makefile glibc-2.44/sysdeps/unix/sysv/linux/sh/Makefile --- glibc/sysdeps/unix/sysv/linux/sh/Makefile 2026-08-15 13:45:04.640686189 -0600 +++ glibc-2.44/sysdeps/unix/sysv/linux/sh/Makefile 2026-08-15 13:43:57.950786265 -0600 @@ -6,7 +6,9 @@ ifeq ($(subdir),stdlib) gen-as-const-headers += ucontext_i.sym endif -ifeq ($(subdir),misc) +# is only used by ____longjmp_chk.S, which is +# built in the debug subdirectory. +ifeq ($(subdir),debug) gen-as-const-headers += sigaltstack-offsets.sym endif diff '--color=auto' -Naurp glibc/sysdeps/unix/sysv/linux/sigtimedwait.c glibc-2.44/sysdeps/unix/sysv/linux/sigtimedwait.c --- glibc/sysdeps/unix/sysv/linux/sigtimedwait.c 2026-08-15 13:45:04.640686189 -0600 +++ glibc-2.44/sysdeps/unix/sysv/linux/sigtimedwait.c 2026-08-15 13:43:57.951632903 -0600 @@ -16,7 +16,7 @@ . */ #include -#include +#include int __sigtimedwait64 (const sigset_t *set, siginfo_t *info, diff '--color=auto' -Naurp glibc/sysdeps/unix/sysv/linux/sysdep-cancel.h glibc-2.44/sysdeps/unix/sysv/linux/sysdep-cancel.h --- glibc/sysdeps/unix/sysv/linux/sysdep-cancel.h 2026-08-15 13:45:04.640686189 -0600 +++ glibc-2.44/sysdeps/unix/sysv/linux/sysdep-cancel.h 2026-08-15 13:43:57.953617840 -0600 @@ -21,5 +21,66 @@ #define _SYSDEP_CANCEL_H #include +#include "pthreadP.h" + +/* Called by the INTERNAL_SYSCALL_CANCEL macro, check for cancellation and + returns the syscall value or its negative error code. */ +static __always_inline long int +internal_syscall_cancel (__syscall_arg_t a1, __syscall_arg_t a2, + __syscall_arg_t a3, __syscall_arg_t a4, + __syscall_arg_t a5, __syscall_arg_t a6, + __SYSCALL_CANCEL7_ARG_DEF + __syscall_arg_t nr) +{ + long int result; + struct pthread *pd = THREAD_SELF; + + /* If cancellation is not enabled, call the syscall directly and also + for thread terminatation to avoid call __syscall_do_cancel while + executing cleanup handlers. */ + int ch = atomic_load_relaxed (&pd->cancelhandling); + if (SINGLE_THREAD_P || !cancel_enabled (ch) || cancel_exiting (ch)) + { + result = INTERNAL_SYSCALL_NCS_CALL (nr, a1, a2, a3, a4, a5, a6 + __SYSCALL_CANCEL7_ARCH_ARG7); + if (INTERNAL_SYSCALL_ERROR_P (result)) + return -INTERNAL_SYSCALL_ERRNO (result); + return result; + } + + /* Call the arch-specific entry points that contains the globals markers + to be checked by SIGCANCEL handler. */ + result = __syscall_cancel_arch (&pd->cancelhandling, nr, a1, a2, a3, a4, a5, + a6 __SYSCALL_CANCEL7_ARCH_ARG7); + + /* If the cancellable syscall was interrupted by SIGCANCEL and it has no + side-effect, cancel the thread if cancellation is enabled. */ + ch = atomic_load_relaxed (&pd->cancelhandling); + /* The behaviour here assumes that EINTR is returned only if there are no + visible side effects. POSIX Issue 7 has not yet provided any stronger + language for close, and in theory the close syscall could return EINTR + and leave the file descriptor open (conforming and leaks). It expects + that no such kernel is used with glibc. */ + if (result == -EINTR && cancel_enabled_and_canceled (ch)) + __syscall_do_cancel (); + + return result; +} + +/* Called by the SYSCALL_CANCEL macro, check for cancellation and return the + syscall expected success value (usually 0) or, in case of failure, -1 and + sets errno to syscall return value. */ +static __always_inline long int +syscall_cancel (__syscall_arg_t a1, __syscall_arg_t a2, + __syscall_arg_t a3, __syscall_arg_t a4, + __syscall_arg_t a5, __syscall_arg_t a6, + __SYSCALL_CANCEL7_ARG_DEF __syscall_arg_t 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; +} #endif diff '--color=auto' -Naurp glibc/sysdeps/unix/sysv/linux/x86_64/Makefile glibc-2.44/sysdeps/unix/sysv/linux/x86_64/Makefile --- glibc/sysdeps/unix/sysv/linux/x86_64/Makefile 2026-08-15 13:45:04.641686172 -0600 +++ glibc-2.44/sysdeps/unix/sysv/linux/x86_64/Makefile 2026-08-15 13:43:57.955921922 -0600 @@ -10,7 +10,9 @@ ifeq ($(subdir),csu) gen-as-const-headers += ucontext_i.sym endif -ifeq ($(subdir),misc) +# is only used by ____longjmp_chk.S, which is +# built in the debug subdirectory. +ifeq ($(subdir),debug) gen-as-const-headers += sigaltstack-offsets.sym endif diff '--color=auto' -Naurp glibc/sysdeps/x86/Makefile glibc-2.44/sysdeps/x86/Makefile --- glibc/sysdeps/x86/Makefile 2026-08-15 13:45:04.641686172 -0600 +++ glibc-2.44/sysdeps/x86/Makefile 2026-08-15 13:43:57.957245378 -0600 @@ -1,5 +1,12 @@ ifeq ($(subdir),csu) -gen-as-const-headers += cpu-features-offsets.sym features-offsets.sym +# is used by the setjmp/longjmp implementations in the +# setjmp subdirectory and also by ____longjmp_chk.S in the debug +# subdirectory. +gen-as-const-headers += \ + cpu-features-offsets.sym \ + features-offsets.sym \ + jmp_buf-ssp.sym \ + # gen-as-const-headers endif ifeq ($(subdir),elf) @@ -171,7 +178,6 @@ tests += \ endif # $(subdir) == math ifeq ($(subdir),setjmp) -gen-as-const-headers += jmp_buf-ssp.sym sysdep_routines += __longjmp_cancel endif diff '--color=auto' -Naurp glibc/sysdeps/x86_64/fpu/multiarch/s_tanh.c glibc-2.44/sysdeps/x86_64/fpu/multiarch/s_tanh.c --- glibc/sysdeps/x86_64/fpu/multiarch/s_tanh.c 2026-08-15 13:45:04.641686172 -0600 +++ glibc-2.44/sysdeps/x86_64/fpu/multiarch/s_tanh.c 2026-08-15 13:43:57.960370119 -0600 @@ -25,10 +25,9 @@ extern double __redirect_tanh (double); # define SYMBOL_NAME tanh # include "ifunc-fma.h" -libc_ifunc_redirected (__redirect_tanh, tanh, IFUNC_SELECTOR ()); +libc_ifunc_redirected (__redirect_tanh, __tanh, IFUNC_SELECTOR ()); +libm_alias_double (__tanh, tanh) # define __tanh __tanh_sse2 -# undef libm_alias_double -# define libm_alias_double(a, b) #endif #include diff '--color=auto' -Naurp glibc/sysdeps/x86_64/fpu/multiarch/s_tanh-fma.c glibc-2.44/sysdeps/x86_64/fpu/multiarch/s_tanh-fma.c --- glibc/sysdeps/x86_64/fpu/multiarch/s_tanh-fma.c 2026-08-15 13:45:04.641686172 -0600 +++ glibc-2.44/sysdeps/x86_64/fpu/multiarch/s_tanh-fma.c 2026-08-15 13:43:57.960362054 -0600 @@ -1,10 +1,4 @@ #define __tanh __tanh_fma -#define __expm1 __expm1_fma - -/* NB: __expm1 may be expanded to __expm1_fma in the following - prototypes. */ -extern long double __expm1l (long double); -extern long double __expm1f128 (long double); #define SECTION __attribute__ ((section (".text.fma")))