I added a comment responding to this before, but I'm not sure where that went....

These foo_l things are part of extended locale support, which is an optional thing for a libc to implement.  This set of functions are just shims for use within this translation unit only, and are hence 'hidden' with the static keyword so they don't get exported.  From that perspective, I see these as an implementation detail of this file.

Bikeshedding: they're not specific to newlib, so if a support library is the right place for them, then maybe it ought to be named libc++/include/support/xlocale and libc++/src/support/xlocale, respectively?