<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/119047>119047</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [libc++] locale.numpunct.byname/grouping.pass.cpp tests fail with glibc 2.39
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            libc++
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          rprichard
      </td>
    </tr>
</table>

<pre>
    Test failures:

```
Command Output (stdout):
--
# COMPILED WITH
/x/master-plus-llvm/out/stage2/./bin/clang++ /x/master-plus-llvm/out/llvm-project/libcxx/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/grouping.pass.cpp -pthread --target=x86_64-unknown-linux-gnu -nostdinc++ -I /x/master-plus-llvm/out/stage2/include/x86_64-unknown-linux-gnu/c++/v1 -I /x/master-plus-llvm/out/stage2/include/c++/v1 -I /x/master-plus-llvm/out/llvm-project/libcxx/test/support -std=c++26 -Werror -Wall -Wctad-maybe-unsupported -Wextra -Wshadow -Wundef -Wunused-template -Wno-unused-command-line-argument -Wno-attributes -Wno-pessimizing-move -Wno-noexcept-type -Wno-atomic-alignment -Wno-reserved-module-identifier -Wdeprecated-copy -Wdeprecated-copy-dtor -Wno-user-defined-literals -Wno-tautological-compare -Wsign-compare -Wunused-variable -Wunused-parameter -Wunreachable-code -Wno-unused-local-typedef -Wno-local-type-template-args -Wno-c++11-extensions -Wno-unknown-pragmas -Wno-pass-failed -Wno-mismatched-new-delete -Wno-redundant-move -Wno-self-move -D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER -D_LIBCPP_ENABLE_EXPERIMENTAL -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_NONE -Werror=thread-safety -Wuser-defined-warnings  -lc++experimental -nostdlib++ -L /x/master-plus-llvm/out/stage2/./lib/x86_64-unknown-linux-gnu -Wl,-rpath,/x/master-plus-llvm/out/stage2/./lib/x86_64-unknown-linux-gnu -lc++ -latomic -o /x/master-plus-llvm/out/stage2/runtimes/runtimes-x86_64-unknown-linux-gnu-bins/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/Output/grouping.pass.cpp.dir/t.tmp.exe
# executed command: /x/master-plus-llvm/out/stage2/./bin/clang++ /x/master-plus-llvm/out/llvm-project/libcxx/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/grouping.pass.cpp -pthread --target=x86_64-unknown-linux-gnu -nostdinc++ -I /x/master-plus-llvm/out/stage2/include/x86_64-unknown-linux-gnu/c++/v1 -I /x/master-plus-llvm/out/stage2/include/c++/v1 -I /x/master-plus-llvm/out/llvm-project/libcxx/test/support -std=c++26 -Werror -Wall -Wctad-maybe-unsupported -Wextra -Wshadow -Wundef -Wunused-template -Wno-unused-command-line-argument -Wno-attributes -Wno-pessimizing-move -Wno-noexcept-type -Wno-atomic-alignment -Wno-reserved-module-identifier -Wdeprecated-copy -Wdeprecated-copy-dtor -Wno-user-defined-literals -Wno-tautological-compare -Wsign-compare -Wunused-variable -Wunused-parameter -Wunreachable-code -Wno-unused-local-typedef -Wno-local-type-template-args -Wno-c++11-extensions -Wno-unknown-pragmas -Wno-pass-failed -Wno-mismatched-new-delete -Wno-redundant-move -Wno-self-move -D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER -D_LIBCPP_ENABLE_EXPERIMENTAL -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_NONE -Werror=thread-safety -Wuser-defined-warnings -lc++experimental -nostdlib++ -L /x/master-plus-llvm/out/stage2/./lib/x86_64-unknown-linux-gnu -Wl,-rpath,/x/master-plus-llvm/out/stage2/./lib/x86_64-unknown-linux-gnu -lc++ -latomic -o /x/master-plus-llvm/out/stage2/runtimes/runtimes-x86_64-unknown-linux-gnu-bins/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/Output/grouping.pass.cpp.dir/t.tmp.exe
# EXECUTED AS
/x/master-plus-llvm/prebuilts/python/linux-x86/bin/python3 /x/master-plus-llvm/out/llvm-project/libcxx/utils/run.py --execdir /x/master-plus-llvm/out/stage2/runtimes/runtimes-x86_64-unknown-linux-gnu-bins/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/Output/grouping.pass.cpp.dir -- /x/master-plus-llvm/out/stage2/runtimes/runtimes-x86_64-unknown-linux-gnu-bins/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/Output/grouping.pass.cpp.dir/t.tmp.exe
# executed command: /x/master-plus-llvm/prebuilts/python/linux-x86/bin/python3 /x/master-plus-llvm/out/llvm-project/libcxx/utils/run.py --execdir /x/master-plus-llvm/out/stage2/runtimes/runtimes-x86_64-unknown-linux-gnu-bins/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/Output/grouping.pass.cpp.dir -- /x/master-plus-llvm/out/stage2/runtimes/runtimes-x86_64-unknown-linux-gnu-bins/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/Output/grouping.pass.cpp.dir/t.tmp.exe
# .---command stderr------------
# | t.tmp.exe: /x/master-plus-llvm/out/llvm-project/libcxx/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/grouping.pass.cpp:99: int main(int, char **): Assertion `f.grouping() == us_grouping' failed.
# `-----------------------------
# error: command failed with exit status: 250

--

********************
Testing:  0.. 10.. 20.. 30.. 40.. 50.
FAIL: llvm-libc++-shared.cfg.in :: std/localization/locale.categories/facet.numpunct/locale.numpunct.byname/grouping.pass.cpp (5560 of 9741)
******************** TEST 'llvm-libc++-shared.cfg.in :: std/localization/locale.categories/facet.numpunct/locale.numpunct.byname/grouping.pass.cpp' FAILED ********************
Exit Code: 250

Command Output (stdout):
--
# COMPILED WITH
/x/master-plus-llvm/out/stage2/./bin/clang++ /x/master-plus-llvm/out/llvm-project/libcxx/test/std/localization/locale.categories/facet.numpunct/locale.numpunct.byname/grouping.pass.cpp -pthread --target=x86_64-unknown-linux-gnu -nostdinc++ -I /x/master-plus-llvm/out/stage2/include/x86_64-unknown-linux-gnu/c++/v1 -I /x/master-plus-llvm/out/stage2/include/c++/v1 -I /x/master-plus-llvm/out/llvm-project/libcxx/test/support -std=c++26 -Werror -Wall -Wctad-maybe-unsupported -Wextra -Wshadow -Wundef -Wunused-template -Wno-unused-command-line-argument -Wno-attributes -Wno-pessimizing-move -Wno-noexcept-type -Wno-atomic-alignment -Wno-reserved-module-identifier -Wdeprecated-copy -Wdeprecated-copy-dtor -Wno-user-defined-literals -Wno-tautological-compare -Wsign-compare -Wunused-variable -Wunused-parameter -Wunreachable-code -Wno-unused-local-typedef -Wno-local-type-template-args -Wno-c++11-extensions -Wno-unknown-pragmas -Wno-pass-failed -Wno-mismatched-new-delete -Wno-redundant-move -Wno-self-move -D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER -D_LIBCPP_ENABLE_EXPERIMENTAL -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_NONE -Werror=thread-safety -Wuser-defined-warnings  -lc++experimental -nostdlib++ -L /x/master-plus-llvm/out/stage2/./lib/x86_64-unknown-linux-gnu -Wl,-rpath,/x/master-plus-llvm/out/stage2/./lib/x86_64-unknown-linux-gnu -lc++ -latomic -o /x/master-plus-llvm/out/stage2/runtimes/runtimes-x86_64-unknown-linux-gnu-bins/test/std/localization/locale.categories/facet.numpunct/locale.numpunct.byname/Output/grouping.pass.cpp.dir/t.tmp.exe
# executed command: /x/master-plus-llvm/out/stage2/./bin/clang++ /x/master-plus-llvm/out/llvm-project/libcxx/test/std/localization/locale.categories/facet.numpunct/locale.numpunct.byname/grouping.pass.cpp -pthread --target=x86_64-unknown-linux-gnu -nostdinc++ -I /x/master-plus-llvm/out/stage2/include/x86_64-unknown-linux-gnu/c++/v1 -I /x/master-plus-llvm/out/stage2/include/c++/v1 -I /x/master-plus-llvm/out/llvm-project/libcxx/test/support -std=c++26 -Werror -Wall -Wctad-maybe-unsupported -Wextra -Wshadow -Wundef -Wunused-template -Wno-unused-command-line-argument -Wno-attributes -Wno-pessimizing-move -Wno-noexcept-type -Wno-atomic-alignment -Wno-reserved-module-identifier -Wdeprecated-copy -Wdeprecated-copy-dtor -Wno-user-defined-literals -Wno-tautological-compare -Wsign-compare -Wunused-variable -Wunused-parameter -Wunreachable-code -Wno-unused-local-typedef -Wno-local-type-template-args -Wno-c++11-extensions -Wno-unknown-pragmas -Wno-pass-failed -Wno-mismatched-new-delete -Wno-redundant-move -Wno-self-move -D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER -D_LIBCPP_ENABLE_EXPERIMENTAL -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_NONE -Werror=thread-safety -Wuser-defined-warnings -lc++experimental -nostdlib++ -L /x/master-plus-llvm/out/stage2/./lib/x86_64-unknown-linux-gnu -Wl,-rpath,/x/master-plus-llvm/out/stage2/./lib/x86_64-unknown-linux-gnu -lc++ -latomic -o /x/master-plus-llvm/out/stage2/runtimes/runtimes-x86_64-unknown-linux-gnu-bins/test/std/localization/locale.categories/facet.numpunct/locale.numpunct.byname/Output/grouping.pass.cpp.dir/t.tmp.exe
# EXECUTED AS
/x/master-plus-llvm/prebuilts/python/linux-x86/bin/python3 /x/master-plus-llvm/out/llvm-project/libcxx/utils/run.py --execdir /x/master-plus-llvm/out/stage2/runtimes/runtimes-x86_64-unknown-linux-gnu-bins/test/std/localization/locale.categories/facet.numpunct/locale.numpunct.byname/Output/grouping.pass.cpp.dir -- /x/master-plus-llvm/out/stage2/runtimes/runtimes-x86_64-unknown-linux-gnu-bins/test/std/localization/locale.categories/facet.numpunct/locale.numpunct.byname/Output/grouping.pass.cpp.dir/t.tmp.exe
# executed command: /x/master-plus-llvm/prebuilts/python/linux-x86/bin/python3 /x/master-plus-llvm/out/llvm-project/libcxx/utils/run.py --execdir /x/master-plus-llvm/out/stage2/runtimes/runtimes-x86_64-unknown-linux-gnu-bins/test/std/localization/locale.categories/facet.numpunct/locale.numpunct.byname/Output/grouping.pass.cpp.dir -- /x/master-plus-llvm/out/stage2/runtimes/runtimes-x86_64-unknown-linux-gnu-bins/test/std/localization/locale.categories/facet.numpunct/locale.numpunct.byname/Output/grouping.pass.cpp.dir/t.tmp.exe
# .---command stderr------------
# | t.tmp.exe: /x/master-plus-llvm/out/llvm-project/libcxx/test/std/localization/locale.categories/facet.numpunct/locale.numpunct.byname/grouping.pass.cpp:54: int main(int, char **): Assertion `np.grouping() == "\3\3"' failed.
# `-----------------------------
# error: command failed with exit status: 250
```

These libc++ tests are expecting `localeconv()->grouping` for `en_US.UTF-8` to be `\3\3`, but glibc changed its value to `\3` in glibc 2.39:

https://patchwork.ozlabs.org/project/glibc/patch/20240124164229.1743477-1-mfabian@redhat.com/
https://sourceware.org/bugzilla/show_bug.cgi?id=31205

(These two test failures also appear in https://github.com/llvm/llvm-project/issues/100886, which was closed for lack of information.)



</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsGttu2zrya-gXgoJE-frgB8WWTwPkhsZFzj4ZlDSWuKVIgZfY6dcvKMm57Nm2aXN2EWRlqGpJDYdzn-GUzBheSoAlmpyhyXrEnK2UXupG87xiuhhlqnhYbsFYvGdcOA0GxQkK22ca9k-YrFRdM1nga2cbZzGic2ML5Syiiw6eEL-Cxnh1fXlzfpGu8d359lM7tzkiuqmZsaBJI5whQtzXiG7a5RtjWQkU0U2A6CbjEtFNLpgsET1D9Az_bLkfkEarf0LeDnmWH_0CC6bDXvhZlTPBvzHLlTwNIciZhVJpDsbv2Q0eglpJsEw_PMH5mYfGydwG2YNkNSC6KbVyDZdl0DBjgrxpMGlspYEVmBDLdAkWxevjfLqbjomTX6U6SCK4dEdSSoeJVMYWXOY9l-T8p4w-yonLXLjCE_E99J6dDjGim_voN7H_KoqfacI1jdIWE6-SeN1jp1NM7kBrpTG5Y0JgcpdbVpCaPWRAnOxXQeHBjlYzTO5MxQp1wOTOyQL27d_OQEEs1I1gFjC5k4r0k3lnuF44QJguXQ3SdhDMWs0zZ8F04waM4TX_xmVJanXf45EKjjk0ltiHBk4LVc1zwgQv5RM6DQb0PRSkVoUTQHgB0vI9B89aAY0Gb2OeoubhrzOksK0MPOUGNClgzyV4ui1oJnoSLXNWCVXynAnPWsO0p8n7-LNhz_o905xl4tlMwzSrwbYUOamB5ZUHILkqXkqttfyW407CUj2behS0l2dPWK_OKCJwtCANV9KcMHbW2WhW1uwkamYM8QGnVaxUpOamZjavoCASDqQAASdFaiicLJi0z5RiQOz74Xp3cX62urnZfUpud1fXu5vPyR-Xye72H7fb9HL3KU3W6ednUOlVcnaR7tI_b9LP55fp1Ta5eIHj8zq9Or_6Y3d5vU5R_J0Pu6vrq_RkuChed55PDNuD9bp9ocED05LL0mBMRC8mODaguTcdJvpYIHh2igUXr_fWoHO0H8QCTO4EoiuiG2YrRFd_K2rxGL9E5xOYqNcTr520vG6j7-mf5Ht7kYxL898P6116-0_xPSi49vsHtm4COEKf7eAIufPhqY8zKE5-TXtDxhsy3pDxhoz3ITPekPA-XMJL_0xXX7bpGie3PzzcNRoyx4X1NDUPtuoIbrk7zqePia_7FP92qHWWi16egQ8yxCfkgusPrBRMyAfm7s011mB4g-H9TYYXEHKqprCxBWhNnv16IDRb4aeFryj_30v9juJksfAEc2lxzbxXzLm0iK5wXjFvyEn7tDCJMaA9MRhNw31wQoboHNEFRvEaxWvszO7pwwx31U5wktM0JD_6nZy9KzCSk7P3WPCB2wrDkVtsLLPOeBA6CbtOZbc6TE4k_9YTJlsw1tMeJxiHQYAj_6L-FfvX2L8moWdok5xfeLBWl16DXVlATMU0FEG-LwMuMYoTD_Rqje5ZDjaQrm5V9wR0mvnRYQzR-WQyDbHa48VsHHm1vU0eeJvebjGis3fDo7cpL_h0jd-o6NTb0UoV8MKKPnyP-y32NRz2h8P-cNgfDvtDe_s9VcCvj-j_T53tIc8NeW7Ic0OeG5raQ5ob-tnvWB_vrqP4buqpwdwGc_vAveu3dAHjZDL-rba1bL7Tt0aUoskqbv9Q-r9sXT-7YYvCZFuBAfzUasVerAb7atDXGrnlsvTEdMLKlbzv-CAoTh85m4Z4r7QHA7n7cht82W7I3M9ahTPw84-8TkMvtcxZXPpNvfxkCQXm1uB7Jhz4NacF0xBz2QPSIF48XhOurG3aS8N04yOSL_8OSn8N1DfBMhMoXbbx7GQzZcdfB4johoZ0HEZ0HE3HlC6CaDaOx7MZiUi9ZxlnEo1DDUXFbJArb4h_2dEop3M4MA39Xpkrv3EhmP9WqcMuc2WQlxzFG-6PLHFEw8np_wvmncztQbXCfrwEjZkwCrOmAaY93y-3LLmtXNYT1DvIv7kGN8a1ph6F4dxH7BU-VDyv8IEZnAtloGj1JFj-Fas95nKvdN36TNA379tnVCzjYhEv2AiW0SyOJ3E8jcJRtaTzmGZedItZHEUsjoowDqfTRTwex0W4z0d86UUb0XAWRuF0vAj203wCUTgGBpOomERoHELNuAg86V52o5boZRQtwvFsJFgGwrQXxyl9MsrWWdYjvWwZzlxp0DgU3FjzhMdyK9or58-WTdb4F47hneV7bXTu82R3I6fF8g3q6Ji7X9J_BQAA__-vENwD">