<feed xmlns='http://www.w3.org/2005/Atom'>
<title>glibc.git, branch release/2.37/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>x86: fix wmemset ifunc stray '!' (bug 33542)</title>
<updated>2025-11-04T12:23:17+00:00</updated>
<author>
<name>Jiamei Xie</name>
<email>xiejiamei@hygon.cn</email>
</author>
<published>2025-10-14T12:14:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/glibc.git/commit/?id=ba7c1682eae563b49baeaebcd0f39538e029c4bb'/>
<id>ba7c1682eae563b49baeaebcd0f39538e029c4bb</id>
<content type='text'>
The ifunc selector for wmemset had a stray '!' in the
X86_ISA_CPU_FEATURES_ARCH_P(...) check:

  if (X86_ISA_CPU_FEATURE_USABLE_P (cpu_features, AVX2)
      &amp;&amp; X86_ISA_CPU_FEATURES_ARCH_P (cpu_features,
                                      AVX_Fast_Unaligned_Load, !))

This effectively negated the predicate and caused the AVX2/AVX512
paths to be skipped, making the dispatcher fall back to the SSE2
implementation even on CPUs where AVX2/AVX512 are available. The
regression leads to noticeable throughput loss for wmemset.

Remove the stray '!' so the AVX_Fast_Unaligned_Load capability is
tested as intended and the correct AVX2/EVEX variants are selected.

Impact:
- On AVX2/AVX512-capable x86_64, wmemset no longer incorrectly
  falls back to SSE2; perf now shows __wmemset_evex/avx2 variants.

Testing:
- benchtests/bench-wmemset shows improved bandwidth across sizes.
- perf confirm the selected symbol is no longer SSE2.

Signed-off-by: xiejiamei &lt;xiejiamei@hygon.com&gt;
Signed-off-by: Li jing &lt;lijing@hygon.cn&gt;
Reviewed-by: Adhemerval Zanella  &lt;adhemerval.zanella@linaro.org&gt;
(cherry picked from commit 4d86b6cdd8132e0410347e07262239750f86dfb4)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The ifunc selector for wmemset had a stray '!' in the
X86_ISA_CPU_FEATURES_ARCH_P(...) check:

  if (X86_ISA_CPU_FEATURE_USABLE_P (cpu_features, AVX2)
      &amp;&amp; X86_ISA_CPU_FEATURES_ARCH_P (cpu_features,
                                      AVX_Fast_Unaligned_Load, !))

This effectively negated the predicate and caused the AVX2/AVX512
paths to be skipped, making the dispatcher fall back to the SSE2
implementation even on CPUs where AVX2/AVX512 are available. The
regression leads to noticeable throughput loss for wmemset.

Remove the stray '!' so the AVX_Fast_Unaligned_Load capability is
tested as intended and the correct AVX2/EVEX variants are selected.

Impact:
- On AVX2/AVX512-capable x86_64, wmemset no longer incorrectly
  falls back to SSE2; perf now shows __wmemset_evex/avx2 variants.

Testing:
- benchtests/bench-wmemset shows improved bandwidth across sizes.
- perf confirm the selected symbol is no longer SSE2.

Signed-off-by: xiejiamei &lt;xiejiamei@hygon.com&gt;
Signed-off-by: Li jing &lt;lijing@hygon.cn&gt;
Reviewed-by: Adhemerval Zanella  &lt;adhemerval.zanella@linaro.org&gt;
(cherry picked from commit 4d86b6cdd8132e0410347e07262239750f86dfb4)
</pre>
</div>
</content>
</entry>
<entry>
<title>x86-64: Add GLIBC_ABI_DT_X86_64_PLT [BZ #33212]</title>
<updated>2025-08-15T22:19:27+00:00</updated>
<author>
<name>H.J. Lu</name>
<email>hjl.tools@gmail.com</email>
</author>
<published>2025-08-14T14:03:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/glibc.git/commit/?id=df5072615e9fb1c6dfd06bd35f20f28d1ac2808d'/>
<id>df5072615e9fb1c6dfd06bd35f20f28d1ac2808d</id>
<content type='text'>
When the linker -z mark-plt option is used to add DT_X86_64_PLT,
DT_X86_64_PLTSZ and DT_X86_64_PLTENT, the r_addend field of the
R_X86_64_JUMP_SLOT relocation stores the offset of the indirect
branch instruction.  However, glibc versions without the commit:

commit f8587a61892cbafd98ce599131bf4f103466f084
Author: H.J. Lu &lt;hjl.tools@gmail.com&gt;
Date:   Fri May 20 19:21:48 2022 -0700

    x86-64: Ignore r_addend for R_X86_64_GLOB_DAT/R_X86_64_JUMP_SLOT

    According to x86-64 psABI, r_addend should be ignored for R_X86_64_GLOB_DAT
    and R_X86_64_JUMP_SLOT.  Since linkers always set their r_addends to 0, we
    can ignore their r_addends.

    Reviewed-by: Fangrui Song &lt;maskray@google.com&gt;

won't ignore the r_addend value in the R_X86_64_JUMP_SLOT relocation.
Such programs and shared libraries will fail at run-time randomly.

Add GLIBC_ABI_DT_X86_64_PLT version to indicate that glibc is compatible
with DT_X86_64_PLT.

The linker can add the glibc GLIBC_ABI_DT_X86_64_PLT version dependency
whenever -z mark-plt is passed to the linker.  The resulting programs and
shared libraries will fail to load at run-time against libc.so without the
GLIBC_ABI_DT_X86_64_PLT version, instead of fail randomly.

This fixes BZ #33212.

Signed-off-by: H.J. Lu &lt;hjl.tools@gmail.com&gt;
Reviewed-by: Sam James &lt;sam@gentoo.org&gt;
(cherry picked from commit 399384e0c8193e31aea014220ccfa24300ae5938)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When the linker -z mark-plt option is used to add DT_X86_64_PLT,
DT_X86_64_PLTSZ and DT_X86_64_PLTENT, the r_addend field of the
R_X86_64_JUMP_SLOT relocation stores the offset of the indirect
branch instruction.  However, glibc versions without the commit:

commit f8587a61892cbafd98ce599131bf4f103466f084
Author: H.J. Lu &lt;hjl.tools@gmail.com&gt;
Date:   Fri May 20 19:21:48 2022 -0700

    x86-64: Ignore r_addend for R_X86_64_GLOB_DAT/R_X86_64_JUMP_SLOT

    According to x86-64 psABI, r_addend should be ignored for R_X86_64_GLOB_DAT
    and R_X86_64_JUMP_SLOT.  Since linkers always set their r_addends to 0, we
    can ignore their r_addends.

    Reviewed-by: Fangrui Song &lt;maskray@google.com&gt;

won't ignore the r_addend value in the R_X86_64_JUMP_SLOT relocation.
Such programs and shared libraries will fail at run-time randomly.

Add GLIBC_ABI_DT_X86_64_PLT version to indicate that glibc is compatible
with DT_X86_64_PLT.

The linker can add the glibc GLIBC_ABI_DT_X86_64_PLT version dependency
whenever -z mark-plt is passed to the linker.  The resulting programs and
shared libraries will fail to load at run-time against libc.so without the
GLIBC_ABI_DT_X86_64_PLT version, instead of fail randomly.

This fixes BZ #33212.

Signed-off-by: H.J. Lu &lt;hjl.tools@gmail.com&gt;
Reviewed-by: Sam James &lt;sam@gentoo.org&gt;
(cherry picked from commit 399384e0c8193e31aea014220ccfa24300ae5938)
</pre>
</div>
</content>
</entry>
<entry>
<title>elf: Handle ld.so with LOAD segment gaps in _dl_find_object (bug 31943)</title>
<updated>2025-08-14T07:29:52+00:00</updated>
<author>
<name>Florian Weimer</name>
<email>fweimer@redhat.com</email>
</author>
<published>2025-08-01T10:19:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/glibc.git/commit/?id=d0d5736bbb918acd86eaaed5549dfb4cc2409e3d'/>
<id>d0d5736bbb918acd86eaaed5549dfb4cc2409e3d</id>
<content type='text'>
Detect if ld.so not contiguous and handle that case in _dl_find_object.
Set l_find_object_processed even for initially loaded link maps,
otherwise dlopen of an initially loaded object adds it to
_dlfo_loaded_mappings (where maps are expected to be contiguous),
in addition to _dlfo_nodelete_mappings.

Test elf/tst-link-map-contiguous-ldso iterates over the loader
image, reading every word to make sure memory is actually mapped.
It only does that if the l_contiguous flag is set for the link map.
Otherwise, it finds gaps with mmap and checks that _dl_find_object
does not return the ld.so mapping for them.

The test elf/tst-link-map-contiguous-main does the same thing for
the libc.so shared object.  This only works if the kernel loaded
the main program because the glibc dynamic loader may fill
the gaps with PROT_NONE mappings in some cases, making it contiguous,
but accesses to individual words may still fault.

Test elf/tst-link-map-contiguous-libc is again slightly different
because the dynamic loader always fills the gaps with PROT_NONE
mappings, so a different form of probing has to be used.

Reviewed-by: Adhemerval Zanella  &lt;adhemerval.zanella@linaro.org&gt;
(cherry picked from commit 20681be149b9eb1b6c1f4246bf4bd801221c86cd)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Detect if ld.so not contiguous and handle that case in _dl_find_object.
Set l_find_object_processed even for initially loaded link maps,
otherwise dlopen of an initially loaded object adds it to
_dlfo_loaded_mappings (where maps are expected to be contiguous),
in addition to _dlfo_nodelete_mappings.

Test elf/tst-link-map-contiguous-ldso iterates over the loader
image, reading every word to make sure memory is actually mapped.
It only does that if the l_contiguous flag is set for the link map.
Otherwise, it finds gaps with mmap and checks that _dl_find_object
does not return the ld.so mapping for them.

The test elf/tst-link-map-contiguous-main does the same thing for
the libc.so shared object.  This only works if the kernel loaded
the main program because the glibc dynamic loader may fill
the gaps with PROT_NONE mappings in some cases, making it contiguous,
but accesses to individual words may still fault.

Test elf/tst-link-map-contiguous-libc is again slightly different
because the dynamic loader always fills the gaps with PROT_NONE
mappings, so a different form of probing has to be used.

Reviewed-by: Adhemerval Zanella  &lt;adhemerval.zanella@linaro.org&gt;
(cherry picked from commit 20681be149b9eb1b6c1f4246bf4bd801221c86cd)
</pre>
</div>
</content>
</entry>
<entry>
<title>elf: Extract rtld_setup_phdr function from dl_main</title>
<updated>2025-08-14T07:29:22+00:00</updated>
<author>
<name>Florian Weimer</name>
<email>fweimer@redhat.com</email>
</author>
<published>2025-08-01T08:20:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/glibc.git/commit/?id=f2d210447ac06567a552353f55335662c9af0c68'/>
<id>f2d210447ac06567a552353f55335662c9af0c68</id>
<content type='text'>
Remove historic binutils reference from comment and update
how this data is used by applications.

Reviewed-by: Adhemerval Zanella  &lt;adhemerval.zanella@linaro.org&gt;
(cherry picked from commit 2cac9559e06044ba520e785c151fbbd25011865f)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Remove historic binutils reference from comment and update
how this data is used by applications.

Reviewed-by: Adhemerval Zanella  &lt;adhemerval.zanella@linaro.org&gt;
(cherry picked from commit 2cac9559e06044ba520e785c151fbbd25011865f)
</pre>
</div>
</content>
</entry>
<entry>
<title>elf: Do not add a copy of _dl_find_object to libc.so</title>
<updated>2025-08-14T07:29:22+00:00</updated>
<author>
<name>Florian Weimer</name>
<email>fweimer@redhat.com</email>
</author>
<published>2025-02-01T11:37:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/glibc.git/commit/?id=3963a5a093cadf97788059f6a0072419129dfeb7'/>
<id>3963a5a093cadf97788059f6a0072419129dfeb7</id>
<content type='text'>
This reduces code size and dependencies on ld.so internals from
libc.so.

Fixes commit f4c142bb9fe6b02c0af8cfca8a920091e2dba44b
("arm: Use _dl_find_object on __gnu_Unwind_Find_exidx (BZ 31405)").

Reviewed-by: Adhemerval Zanella &lt;adhemerval.zanella@linaro.org&gt;
(cherry picked from commit 96429bcc91a14f71b177ddc5e716de3069060f2c)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reduces code size and dependencies on ld.so internals from
libc.so.

Fixes commit f4c142bb9fe6b02c0af8cfca8a920091e2dba44b
("arm: Use _dl_find_object on __gnu_Unwind_Find_exidx (BZ 31405)").

Reviewed-by: Adhemerval Zanella &lt;adhemerval.zanella@linaro.org&gt;
(cherry picked from commit 96429bcc91a14f71b177ddc5e716de3069060f2c)
</pre>
</div>
</content>
</entry>
<entry>
<title>arm: Use _dl_find_object on __gnu_Unwind_Find_exidx (BZ 31405)</title>
<updated>2025-08-14T07:29:19+00:00</updated>
<author>
<name>Adhemerval Zanella</name>
<email>adhemerval.zanella@linaro.org</email>
</author>
<published>2024-02-22T13:42:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/glibc.git/commit/?id=ba601ceeba4e7f9158216966eb526d1816e9c4e2'/>
<id>ba601ceeba4e7f9158216966eb526d1816e9c4e2</id>
<content type='text'>
Instead of __dl_iterate_phdr. On ARM dlfo_eh_frame/dlfo_eh_count
maps to PT_ARM_EXIDX vaddr start / length.

On a Neoverse N1 machine with 160 cores, the following program:

  $ cat test.c
  #include &lt;stdlib.h&gt;
  #include &lt;pthread.h&gt;
  #include &lt;assert.h&gt;

  enum {
    niter = 1024,
    ntimes = 128,
  };

  static void *
  tf (void *arg)
  {
    int a = (int) arg;

    for (int i = 0; i &lt; niter; i++)
      {
        void *p[ntimes];
        for (int j = 0; j &lt; ntimes; j++)
  	p[j] = malloc (a * 128);
        for (int j = 0; j &lt; ntimes; j++)
  	free (p[j]);
      }

    return NULL;
  }

  int main (int argc, char *argv[])
  {
    enum { nthreads = 16 };
    pthread_t t[nthreads];

    for (int i = 0; i &lt; nthreads; i ++)
      assert (pthread_create (&amp;t[i], NULL, tf, (void *) i) == 0);

    for (int i = 0; i &lt; nthreads; i++)
      {
        void *r;
        assert (pthread_join (t[i], &amp;r) == 0);
        assert (r == NULL);
      }

    return 0;
  }
  $ arm-linux-gnueabihf-gcc -fsanitize=address test.c -o test

Improves from ~15s to 0.5s.

Checked on arm-linux-gnueabihf.

(cherry picked from commit f4c142bb9fe6b02c0af8cfca8a920091e2dba44b)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Instead of __dl_iterate_phdr. On ARM dlfo_eh_frame/dlfo_eh_count
maps to PT_ARM_EXIDX vaddr start / length.

On a Neoverse N1 machine with 160 cores, the following program:

  $ cat test.c
  #include &lt;stdlib.h&gt;
  #include &lt;pthread.h&gt;
  #include &lt;assert.h&gt;

  enum {
    niter = 1024,
    ntimes = 128,
  };

  static void *
  tf (void *arg)
  {
    int a = (int) arg;

    for (int i = 0; i &lt; niter; i++)
      {
        void *p[ntimes];
        for (int j = 0; j &lt; ntimes; j++)
  	p[j] = malloc (a * 128);
        for (int j = 0; j &lt; ntimes; j++)
  	free (p[j]);
      }

    return NULL;
  }

  int main (int argc, char *argv[])
  {
    enum { nthreads = 16 };
    pthread_t t[nthreads];

    for (int i = 0; i &lt; nthreads; i ++)
      assert (pthread_create (&amp;t[i], NULL, tf, (void *) i) == 0);

    for (int i = 0; i &lt; nthreads; i++)
      {
        void *r;
        assert (pthread_join (t[i], &amp;r) == 0);
        assert (r == NULL);
      }

    return 0;
  }
  $ arm-linux-gnueabihf-gcc -fsanitize=address test.c -o test

Improves from ~15s to 0.5s.

Checked on arm-linux-gnueabihf.

(cherry picked from commit f4c142bb9fe6b02c0af8cfca8a920091e2dba44b)
</pre>
</div>
</content>
</entry>
<entry>
<title>posix: Fix double-free after allocation failure in regcomp (bug 33185)</title>
<updated>2025-07-24T07:51:33+00:00</updated>
<author>
<name>Florian Weimer</name>
<email>fweimer@redhat.com</email>
</author>
<published>2025-07-21T19:43:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/glibc.git/commit/?id=58b768addbc7a1696741157b34dd9580688c354e'/>
<id>58b768addbc7a1696741157b34dd9580688c354e</id>
<content type='text'>
If a memory allocation failure occurs during bracket expression
parsing in regcomp, a double-free error may result.

Reported-by: Anastasia Belova &lt;abelova@astralinux.ru&gt;
Co-authored-by: Paul Eggert &lt;eggert@cs.ucla.edu&gt;
Reviewed-by: Andreas K. Huettel &lt;dilfridge@gentoo.org&gt;
(cherry picked from commit 7ea06e994093fa0bcca0d0ee2c1db271d8d7885d)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If a memory allocation failure occurs during bracket expression
parsing in regcomp, a double-free error may result.

Reported-by: Anastasia Belova &lt;abelova@astralinux.ru&gt;
Co-authored-by: Paul Eggert &lt;eggert@cs.ucla.edu&gt;
Reviewed-by: Andreas K. Huettel &lt;dilfridge@gentoo.org&gt;
(cherry picked from commit 7ea06e994093fa0bcca0d0ee2c1db271d8d7885d)
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix error reporting (false negatives) in SGID tests</title>
<updated>2025-06-20T09:43:09+00:00</updated>
<author>
<name>Florian Weimer</name>
<email>fweimer@redhat.com</email>
</author>
<published>2025-05-22T12:36:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/glibc.git/commit/?id=ea179f9a37eb7031c6ffc12a5ec16085a1ba6453'/>
<id>ea179f9a37eb7031c6ffc12a5ec16085a1ba6453</id>
<content type='text'>
And simplify the interface of support_capture_subprogram_self_sgid.

Use the existing framework for temporary directories (now with
mode 0700) and directory/file deletion.  Handle all execution
errors within support_capture_subprogram_self_sgid.  In particular,
this includes test failures because the invoked program did not
exit with exit status zero.  Existing tests that expect exit
status 42 are adjusted to use zero instead.

In addition, fix callers not to call exit (0) with test failures
pending (which may mask them, especially when running with --direct).

Fixes commit 35fc356fa3b4f485bd3ba3114c9f774e5df7d3c2
("elf: Fix subprocess status handling for tst-dlopen-sgid (bug 32987)").

Reviewed-by: Carlos O'Donell &lt;carlos@redhat.com&gt;
(cherry picked from commit 3a3fb2ed83f79100c116c824454095ecfb335ad7)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
And simplify the interface of support_capture_subprogram_self_sgid.

Use the existing framework for temporary directories (now with
mode 0700) and directory/file deletion.  Handle all execution
errors within support_capture_subprogram_self_sgid.  In particular,
this includes test failures because the invoked program did not
exit with exit status zero.  Existing tests that expect exit
status 42 are adjusted to use zero instead.

In addition, fix callers not to call exit (0) with test failures
pending (which may mask them, especially when running with --direct).

Fixes commit 35fc356fa3b4f485bd3ba3114c9f774e5df7d3c2
("elf: Fix subprocess status handling for tst-dlopen-sgid (bug 32987)").

Reviewed-by: Carlos O'Donell &lt;carlos@redhat.com&gt;
(cherry picked from commit 3a3fb2ed83f79100c116c824454095ecfb335ad7)
</pre>
</div>
</content>
</entry>
<entry>
<title>support: Pick group in support_capture_subprogram_self_sgid if UID == 0</title>
<updated>2025-06-20T09:43:09+00:00</updated>
<author>
<name>Florian Weimer</name>
<email>fweimer@redhat.com</email>
</author>
<published>2025-05-21T14:47:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/glibc.git/commit/?id=245dffa9ed5709086ff125d9a793e6c9f0cbd813'/>
<id>245dffa9ed5709086ff125d9a793e6c9f0cbd813</id>
<content type='text'>
When running as root, it is likely that we can run under any group.
Pick a harmless group from /etc/group in this case.

Reviewed-by: Carlos O'Donell &lt;carlos@redhat.com&gt;
(cherry picked from commit 2f769cec448d84a62b7dd0d4ff56978fe22c0cd6)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When running as root, it is likely that we can run under any group.
Pick a harmless group from /etc/group in this case.

Reviewed-by: Carlos O'Donell &lt;carlos@redhat.com&gt;
(cherry picked from commit 2f769cec448d84a62b7dd0d4ff56978fe22c0cd6)
</pre>
</div>
</content>
</entry>
<entry>
<title>support: Don't fail on fchown when spawning sgid processes</title>
<updated>2025-06-20T09:43:00+00:00</updated>
<author>
<name>Siddhesh Poyarekar</name>
<email>siddhesh@sourceware.org</email>
</author>
<published>2023-06-01T11:23:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/glibc.git/commit/?id=9643281f9c8f37a0b6a2de6683de8858d694bbef'/>
<id>9643281f9c8f37a0b6a2de6683de8858d694bbef</id>
<content type='text'>
In some cases (e.g. when podman creates user containers), the only other
group assigned to the executing user is nobody and fchown fails with it
because the group is not mapped.  Do not fail the test in this case,
instead exit as unsupported.

Reported-by: Frédéric Bérat &lt;fberat@redhat.com&gt;
Tested-by: Frédéric Bérat &lt;fberat@redhat.com&gt;
Signed-off-by: Siddhesh Poyarekar &lt;siddhesh@sourceware.org&gt;
Reviewed-by: Carlos O'Donell &lt;carlos@redhat.com&gt;
(cherry picked from commit 6286cca2cb8389dcffec39238a8bf15ffea96396)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In some cases (e.g. when podman creates user containers), the only other
group assigned to the executing user is nobody and fchown fails with it
because the group is not mapped.  Do not fail the test in this case,
instead exit as unsupported.

Reported-by: Frédéric Bérat &lt;fberat@redhat.com&gt;
Tested-by: Frédéric Bérat &lt;fberat@redhat.com&gt;
Signed-off-by: Siddhesh Poyarekar &lt;siddhesh@sourceware.org&gt;
Reviewed-by: Carlos O'Donell &lt;carlos@redhat.com&gt;
(cherry picked from commit 6286cca2cb8389dcffec39238a8bf15ffea96396)
</pre>
</div>
</content>
</entry>
</feed>
