<feed xmlns='http://www.w3.org/2005/Atom'>
<title>glibc.git, branch release/2.30/master</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/glibc.git/'/>
<entry>
<title>aarch64: MTE compatible strncmp</title>
<updated>2024-11-04T16:25:27+00:00</updated>
<author>
<name>Alex Butler</name>
<email>Alex.Butler@arm.com</email>
</author>
<published>2020-06-16T12:44:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/glibc.git/commit/?id=f8db9906d759152db9977c8774470d05a80519da'/>
<id>f8db9906d759152db9977c8774470d05a80519da</id>
<content type='text'>
Add support for MTE to strncmp. Regression tested with xcheck and benchmarked
with glibc's benchtests on the Cortex-A53, Cortex-A72, and Neoverse N1.

The existing implementation assumes that any access to the pages in which the
string resides is safe. This assumption is not true when MTE is enabled. This
patch updates the algorithm to ensure that accesses remain within the bounds
of an MTE tag (16-byte chunks) and improves overall performance.

Co-authored-by: Branislav Rankov &lt;branislav.rankov@arm.com&gt;
Co-authored-by: Wilco Dijkstra &lt;wilco.dijkstra@arm.com&gt;
(cherry picked from commit 03e1378f94173fc192a81e421457198f7b8a34a0)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add support for MTE to strncmp. Regression tested with xcheck and benchmarked
with glibc's benchtests on the Cortex-A53, Cortex-A72, and Neoverse N1.

The existing implementation assumes that any access to the pages in which the
string resides is safe. This assumption is not true when MTE is enabled. This
patch updates the algorithm to ensure that accesses remain within the bounds
of an MTE tag (16-byte chunks) and improves overall performance.

Co-authored-by: Branislav Rankov &lt;branislav.rankov@arm.com&gt;
Co-authored-by: Wilco Dijkstra &lt;wilco.dijkstra@arm.com&gt;
(cherry picked from commit 03e1378f94173fc192a81e421457198f7b8a34a0)
</pre>
</div>
</content>
</entry>
<entry>
<title>Force DT_RPATH for --enable-hardcoded-path-in-tests</title>
<updated>2024-05-10T12:47:30+00:00</updated>
<author>
<name>H.J. Lu</name>
<email>hjl.tools@gmail.com</email>
</author>
<published>2024-05-10T03:07:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/glibc.git/commit/?id=5332e848d9cb0fda6a0e558548dbe9a2faab2304'/>
<id>5332e848d9cb0fda6a0e558548dbe9a2faab2304</id>
<content type='text'>
On Fedora 40/x86-64, linker enables --enable-new-dtags by default which
generates DT_RUNPATH instead of DT_RPATH.  Unlike DT_RPATH, DT_RUNPATH
only applies to DT_NEEDED entries in the executable and doesn't applies
to DT_NEEDED entries in shared libraries which are loaded via DT_NEEDED
entries in the executable.  Some glibc tests have libstdc++.so.6 in
DT_NEEDED, which has libm.so.6 in DT_NEEDED.  When DT_RUNPATH is generated,
/lib64/libm.so.6 is loaded for such tests.  If the newly built glibc is
older than glibc 2.36, these tests fail with

assert/tst-assert-c++: /export/build/gnu/tools-build/glibc-gitlab-release/build-x86_64-linux/libc.so.6: version `GLIBC_2.36' not found (required by /lib64/libm.so.6)
assert/tst-assert-c++: /export/build/gnu/tools-build/glibc-gitlab-release/build-x86_64-linux/libc.so.6: version `GLIBC_ABI_DT_RELR' not found (required by /lib64/libm.so.6)

Pass -Wl,--disable-new-dtags to linker when building glibc tests with
--enable-hardcoded-path-in-tests.  This fixes BZ #31719.

Signed-off-by: H.J. Lu &lt;hjl.tools@gmail.com&gt;
(cherry picked from commit 2dcaf70643710e22f92a351e36e3cff8b48c60dc)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
On Fedora 40/x86-64, linker enables --enable-new-dtags by default which
generates DT_RUNPATH instead of DT_RPATH.  Unlike DT_RPATH, DT_RUNPATH
only applies to DT_NEEDED entries in the executable and doesn't applies
to DT_NEEDED entries in shared libraries which are loaded via DT_NEEDED
entries in the executable.  Some glibc tests have libstdc++.so.6 in
DT_NEEDED, which has libm.so.6 in DT_NEEDED.  When DT_RUNPATH is generated,
/lib64/libm.so.6 is loaded for such tests.  If the newly built glibc is
older than glibc 2.36, these tests fail with

assert/tst-assert-c++: /export/build/gnu/tools-build/glibc-gitlab-release/build-x86_64-linux/libc.so.6: version `GLIBC_2.36' not found (required by /lib64/libm.so.6)
assert/tst-assert-c++: /export/build/gnu/tools-build/glibc-gitlab-release/build-x86_64-linux/libc.so.6: version `GLIBC_ABI_DT_RELR' not found (required by /lib64/libm.so.6)

Pass -Wl,--disable-new-dtags to linker when building glibc tests with
--enable-hardcoded-path-in-tests.  This fixes BZ #31719.

Signed-off-by: H.J. Lu &lt;hjl.tools@gmail.com&gt;
(cherry picked from commit 2dcaf70643710e22f92a351e36e3cff8b48c60dc)
</pre>
</div>
</content>
</entry>
<entry>
<title>Don't make errlist.o[s].d depend on errlist-compat.h</title>
<updated>2024-05-10T03:09:21+00:00</updated>
<author>
<name>H.J. Lu</name>
<email>hjl.tools@gmail.com</email>
</author>
<published>2024-05-09T20:07:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/glibc.git/commit/?id=fee8730c478b0abeb3f91d7a99bf73719ae69377'/>
<id>fee8730c478b0abeb3f91d7a99bf73719ae69377</id>
<content type='text'>
stdio-common/errlist.o.d and stdio-common/errlist.os.d aren't generated
alongside with stdio-common/errlist-compat.h.  Don't make them depend on
stdio-common/errlist-compat.h to avoid infinite loop with make-4.4.  This
fixes BZ #31330.

Signed-off-by: H.J. Lu &lt;hjl.tools@gmail.com&gt;
Reviewed-by: Sunil K Pandey &lt;skpgkp2@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
stdio-common/errlist.o.d and stdio-common/errlist.os.d aren't generated
alongside with stdio-common/errlist-compat.h.  Don't make them depend on
stdio-common/errlist-compat.h to avoid infinite loop with make-4.4.  This
fixes BZ #31330.

Signed-off-by: H.J. Lu &lt;hjl.tools@gmail.com&gt;
Reviewed-by: Sunil K Pandey &lt;skpgkp2@gmail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Makerules: fix MAKEFLAGS assignment for upcoming make-4.4 [BZ# 29564]</title>
<updated>2024-05-10T03:09:17+00:00</updated>
<author>
<name>Sergei Trofimovich</name>
<email>slyich@gmail.com</email>
</author>
<published>2022-09-13T17:39:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/glibc.git/commit/?id=9e6ef53644bf3bf69606526817ccd55bbae43baa'/>
<id>9e6ef53644bf3bf69606526817ccd55bbae43baa</id>
<content type='text'>
make-4.4 will add long flags to MAKEFLAGS variable:

    * WARNING: Backward-incompatibility!
      Previously only simple (one-letter) options were added to the MAKEFLAGS
      variable that was visible while parsing makefiles.  Now, all options
      are available in MAKEFLAGS.

This causes locale builds to fail when long options are used:

    $ make --shuffle
    ...
    make  -C localedata install-locales
    make: invalid shuffle mode: '1662724426r'

The change fixes it by passing eash option via whitespace and dashes.
That way option is appended to both single-word form and whitespace
separated form.

While at it fixed --silent mode detection in $(MAKEFLAGS) by filtering
out --long-options. Otherwise options like --shuffle flag enable silent
mode unintentionally. $(silent-make) variable consolidates the checks.

Resolves: BZ# 29564

CC: Paul Smith &lt;psmith@gnu.org&gt;
CC: Siddhesh Poyarekar &lt;siddhesh@gotplt.org&gt;
Signed-off-by: Sergei Trofimovich &lt;slyich@gmail.com&gt;
Reviewed-by: Siddhesh Poyarekar &lt;siddhesh@sourceware.org&gt;
(cherry picked from commit 2d7ed98add14f75041499ac189696c9bd3d757fe)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
make-4.4 will add long flags to MAKEFLAGS variable:

    * WARNING: Backward-incompatibility!
      Previously only simple (one-letter) options were added to the MAKEFLAGS
      variable that was visible while parsing makefiles.  Now, all options
      are available in MAKEFLAGS.

This causes locale builds to fail when long options are used:

    $ make --shuffle
    ...
    make  -C localedata install-locales
    make: invalid shuffle mode: '1662724426r'

The change fixes it by passing eash option via whitespace and dashes.
That way option is appended to both single-word form and whitespace
separated form.

While at it fixed --silent mode detection in $(MAKEFLAGS) by filtering
out --long-options. Otherwise options like --shuffle flag enable silent
mode unintentionally. $(silent-make) variable consolidates the checks.

Resolves: BZ# 29564

CC: Paul Smith &lt;psmith@gnu.org&gt;
CC: Siddhesh Poyarekar &lt;siddhesh@gotplt.org&gt;
Signed-off-by: Sergei Trofimovich &lt;slyich@gmail.com&gt;
Reviewed-by: Siddhesh Poyarekar &lt;siddhesh@sourceware.org&gt;
(cherry picked from commit 2d7ed98add14f75041499ac189696c9bd3d757fe)
</pre>
</div>
</content>
</entry>
<entry>
<title>elf: Disable some subtests of ifuncmain1, ifuncmain5 for !PIE</title>
<updated>2024-05-09T23:50:16+00:00</updated>
<author>
<name>Florian Weimer</name>
<email>fweimer@redhat.com</email>
</author>
<published>2022-11-04T17:37:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/glibc.git/commit/?id=f636ce3d1aa11c303ad2953267d53e054638bc6d'/>
<id>f636ce3d1aa11c303ad2953267d53e054638bc6d</id>
<content type='text'>
(cherry picked from commit 9cc9d61ee12f2f8620d8e0ea3c42af02bf07fe1e)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
(cherry picked from commit 9cc9d61ee12f2f8620d8e0ea3c42af02bf07fe1e)
</pre>
</div>
</content>
</entry>
<entry>
<title>resolv/tst-idna_name_classify: Isolate from system libraries</title>
<updated>2024-05-09T22:32:06+00:00</updated>
<author>
<name>Florian Weimer</name>
<email>fweimer@redhat.com</email>
</author>
<published>2019-10-30T16:44:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/glibc.git/commit/?id=721c08dc98cf116a4c949747c4e76e32d9b31696'/>
<id>721c08dc98cf116a4c949747c4e76e32d9b31696</id>
<content type='text'>
Loading NSS modules from static binaries uses installed system
libraries if LD_LIBRARY_PATH is not set.

(cherry picked from commit 8dddf0bd5a3d57fba8da27e93f3d1a7032fce184)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Loading NSS modules from static binaries uses installed system
libraries if LD_LIBRARY_PATH is not set.

(cherry picked from commit 8dddf0bd5a3d57fba8da27e93f3d1a7032fce184)
</pre>
</div>
</content>
</entry>
<entry>
<title>x86_64: Optimize ffsll function code size.</title>
<updated>2024-02-08T17:00:44+00:00</updated>
<author>
<name>Sunil K Pandey</name>
<email>skpgkp2@gmail.com</email>
</author>
<published>2023-07-26T15:34:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/glibc.git/commit/?id=5a7440f528108ba915e1ff0c1d74208a114c065c'/>
<id>5a7440f528108ba915e1ff0c1d74208a114c065c</id>
<content type='text'>
Ffsll function randomly regress by ~20%, depending on how code gets
aligned in memory.  Ffsll function code size is 17 bytes.  Since default
function alignment is 16 bytes, it can load on 16, 32, 48 or 64 bytes
aligned memory.  When ffsll function load at 16, 32 or 64 bytes aligned
memory, entire code fits in single 64 bytes cache line.  When ffsll
function load at 48 bytes aligned memory, it splits in two cache line,
hence random regression.

Ffsll function size reduction from 17 bytes to 12 bytes ensures that it
will always fit in single 64 bytes cache line.

This patch fixes ffsll function random performance regression.

Reviewed-by: Carlos O'Donell &lt;carlos@redhat.com&gt;
(cherry picked from commit 9d94997b5f9445afd4f2bccc5fa60ff7c4361ec1)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Ffsll function randomly regress by ~20%, depending on how code gets
aligned in memory.  Ffsll function code size is 17 bytes.  Since default
function alignment is 16 bytes, it can load on 16, 32, 48 or 64 bytes
aligned memory.  When ffsll function load at 16, 32 or 64 bytes aligned
memory, entire code fits in single 64 bytes cache line.  When ffsll
function load at 48 bytes aligned memory, it splits in two cache line,
hence random regression.

Ffsll function size reduction from 17 bytes to 12 bytes ensures that it
will always fit in single 64 bytes cache line.

This patch fixes ffsll function random performance regression.

Reviewed-by: Carlos O'Donell &lt;carlos@redhat.com&gt;
(cherry picked from commit 9d94997b5f9445afd4f2bccc5fa60ff7c4361ec1)
</pre>
</div>
</content>
</entry>
<entry>
<title>x86: Fix incorrect scope of setting `shared_per_thread` [BZ# 30745]</title>
<updated>2023-09-12T03:48:07+00:00</updated>
<author>
<name>Noah Goldstein</name>
<email>goldstein.w.n@gmail.com</email>
</author>
<published>2023-08-11T23:48:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/glibc.git/commit/?id=86418cbed39c8826518f706f50fa3a3444505fdd'/>
<id>86418cbed39c8826518f706f50fa3a3444505fdd</id>
<content type='text'>
The:

```
    if (shared_per_thread &gt; 0 &amp;&amp; threads &gt; 0)
      shared_per_thread /= threads;
```

Code was accidentally moved to inside the else scope.  This doesn't
match how it was previously (before af992e7abd).

This patch fixes that by putting the division after the `else` block.

(cherry picked from commit 084fb31bc2c5f95ae0b9e6df4d3cf0ff43471ede)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The:

```
    if (shared_per_thread &gt; 0 &amp;&amp; threads &gt; 0)
      shared_per_thread /= threads;
```

Code was accidentally moved to inside the else scope.  This doesn't
match how it was previously (before af992e7abd).

This patch fixes that by putting the division after the `else` block.

(cherry picked from commit 084fb31bc2c5f95ae0b9e6df4d3cf0ff43471ede)
</pre>
</div>
</content>
</entry>
<entry>
<title>x86: Use `3/4*sizeof(per-thread-L3)` as low bound for NT threshold.</title>
<updated>2023-09-12T03:48:07+00:00</updated>
<author>
<name>Noah Goldstein</name>
<email>goldstein.w.n@gmail.com</email>
</author>
<published>2023-08-11T23:47:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/glibc.git/commit/?id=1ebb55d5f406cb1f3427798daa17220cd7da5b9f'/>
<id>1ebb55d5f406cb1f3427798daa17220cd7da5b9f</id>
<content type='text'>
On some machines we end up with incomplete cache information. This can
make the new calculation of `sizeof(total-L3)/custom-divisor` end up
lower than intended (and lower than the prior value). So reintroduce
the old bound as a lower bound to avoid potentially regressing code
where we don't have complete information to make the decision.
Reviewed-by: DJ Delorie &lt;dj@redhat.com&gt;

(cherry picked from commit 8b9a0af8ca012217bf90d1dc0694f85b49ae09da)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
On some machines we end up with incomplete cache information. This can
make the new calculation of `sizeof(total-L3)/custom-divisor` end up
lower than intended (and lower than the prior value). So reintroduce
the old bound as a lower bound to avoid potentially regressing code
where we don't have complete information to make the decision.
Reviewed-by: DJ Delorie &lt;dj@redhat.com&gt;

(cherry picked from commit 8b9a0af8ca012217bf90d1dc0694f85b49ae09da)
</pre>
</div>
</content>
</entry>
<entry>
<title>x86: Fix slight bug in `shared_per_thread` cache size calculation.</title>
<updated>2023-09-12T03:48:07+00:00</updated>
<author>
<name>Noah Goldstein</name>
<email>goldstein.w.n@gmail.com</email>
</author>
<published>2023-08-11T23:48:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/glibc.git/commit/?id=863fc577db623c4d14a889d38c5f73e2d61dc8e5'/>
<id>863fc577db623c4d14a889d38c5f73e2d61dc8e5</id>
<content type='text'>
After:
```
    commit af992e7abdc9049714da76cae1e5e18bc4838fb8
    Author: Noah Goldstein &lt;goldstein.w.n@gmail.com&gt;
    Date:   Wed Jun 7 13:18:01 2023 -0500

        x86: Increase `non_temporal_threshold` to roughly `sizeof_L3 / 4`
```

Split `shared` (cumulative cache size) from `shared_per_thread` (cache
size per socket), the `shared_per_thread` *can* be slightly off from
the previous calculation.

Previously we added `core` even if `threads_l2` was invalid, and only
used `threads_l2` to divide `core` if it was present. The changed
version only included `core` if `threads_l2` was valid.

This change restores the old behavior if `threads_l2` is invalid by
adding the entire value of `core`.
Reviewed-by: DJ Delorie &lt;dj@redhat.com&gt;

(cherry picked from commit 47f747217811db35854ea06741be3685e8bbd44d)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
After:
```
    commit af992e7abdc9049714da76cae1e5e18bc4838fb8
    Author: Noah Goldstein &lt;goldstein.w.n@gmail.com&gt;
    Date:   Wed Jun 7 13:18:01 2023 -0500

        x86: Increase `non_temporal_threshold` to roughly `sizeof_L3 / 4`
```

Split `shared` (cumulative cache size) from `shared_per_thread` (cache
size per socket), the `shared_per_thread` *can* be slightly off from
the previous calculation.

Previously we added `core` even if `threads_l2` was invalid, and only
used `threads_l2` to divide `core` if it was present. The changed
version only included `core` if `threads_l2` was valid.

This change restores the old behavior if `threads_l2` is invalid by
adding the entire value of `core`.
Reviewed-by: DJ Delorie &lt;dj@redhat.com&gt;

(cherry picked from commit 47f747217811db35854ea06741be3685e8bbd44d)
</pre>
</div>
</content>
</entry>
</feed>
