[PATCH] D34249: [libc++] Don't use UTIME_OMIT to detect utimensat on Apple
Duncan P. N. Exon Smith via cfe-commits
cfe-commits at lists.llvm.org
Thu Feb 1 08:44:10 PST 2018
Using runtime availability checking doesn't make sense for a system Libc++, as you point out. If we add runtime checks they ought to be non-default, and hidden behind configuration flags.
Also, do I remember correctly that __builtin_available requires linking against Foundation (and thus the Obj-C runtime) for NSProcessInfo, or has that dependency been removed/avoided? It would be surprising for the C++ standard library to pull in the Objective-C runtime. A reasonable configuration option, but not a reasonable default behaviour IMO.
> On Feb 1, 2018, at 05:52, Nico Weber via Phabricator <reviews at reviews.llvm.org> wrote:
>
> thakis added a comment.
>
> The powers that be updated the SDK on the chromium clang bots, so we need some solution for this issue soon.
>
> The approach in this patch should work, but it seems conservative. Now libc++ only uses utimesat() if it's built with a deployment target of macOS 10.13. But if we were to set a deployment target of 10.12 and then _run_ on 10.13, we could use utimesat() as well, even though this patch currently doesn't. (Apple bundles libc++ with the system, so it's not a meaningful difference for Apple-built libc++'s, but applications can build libc++ themselves and statically link to it, and for those it would make a difference.)
>
> https://clang.llvm.org/docs/LanguageExtensions.html#objective-c-available has some words on it (except that `@available` is spelled `__builtin_available` in non-Objective-C code) -- thoughts on using runtime detection of utimes() instead? That's how things are supposed to work on the Apple platforms.
>
>
> https://reviews.llvm.org/D34249
>
>
>
More information about the cfe-commits
mailing list