[all-commits] [llvm/llvm-project] 30ae48: [libcxx] Work around picolibc argv handling in tes...

Simon Tatham via All-commits all-commits at lists.llvm.org
Fri Feb 21 01:09:16 PST 2025


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 30ae485835fbcc789ed0180f2ff03335e7f27c53
      https://github.com/llvm/llvm-project/commit/30ae485835fbcc789ed0180f2ff03335e7f27c53
  Author: Simon Tatham <simon.tatham at arm.com>
  Date:   2025-02-21 (Fri, 21 Feb 2025)

  Changed paths:
    M libcxx/utils/libcxx/test/dsl.py

  Log Message:
  -----------
  [libcxx] Work around picolibc argv handling in tests. (#127662)

This fixes some test failures when the libcxx tests are run against an
up-to-date picolibc on embedded Arm, because those tests depend on an
unsupported locale but the `hasAnyLocale` preliminary check wrongly
concluded that the locale _was_ supported.

`hasAnyLocale` passes a set of locale strings to a test program via the
command line, and checks if the libc under test reports that any of the
locales can be successfully set via setlocale(). In some invocations one
of the locale names contains a space, e.g. the Windows-style locale name
"English_United States.1252".

Unfortunately picolibc's crt0, when running under Arm semihosting,
fetches the single command string from the host and then splits it up at
spaces without implementing any kind of quoting. So it simply isn't
possible to get a space into an argv word. As a result, we end up
testing for the locale (in this example) "English_United". In up-to-date
versions of picolibc, this is actually accepted, since it contains no
objectionable character set specification (or indeed any at all). So the
lit check wrongly concludes that libc supports that locale, and enables
some locale tests, which fail.

This patch works around the issue entirely within `hasAnyLocale()`, by
abandoning the use of argv completely, and instead encoding the list of
locales to check as an array of strings inside the test program.



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list