vsk added inline comments.

================
Comment at: clang/lib/Driver/ToolChain.cpp:953
+      SanitizerKind::ImplicitConversion | SanitizerKind::Nullability |
+      SanitizerKind::LocalBounds | SanitizerKind::ObjCCast;
   if (getTriple().getArch() == llvm::Triple::x86 ||
----------------
delcypher wrote:
> `SanitizerKind::ObjCCast` doesn't seem to fit the comment above. It is 
> platform dependent (only really works for Apple platforms) and it **does** 
> require runtime support (i.e. the Objective-C runtime).
The runtime dependency is optional, and there's nothing inherently 
Apple-specific about this check. However, perhaps it's best not to 
inadvertently advertise support for the GNU objc runtime before it's in tree.


================
Comment at: compiler-rt/lib/ubsan/ubsan_value.cpp:29
+const char *__ubsan::getObjCClassName(ValueHandle Pointer) {
+#if defined(__APPLE__)
+  // We need to query the ObjC runtime for some information, but do not want
----------------
delcypher wrote:
> The compiler-rt codebase tends to use `SANITIZER_MAC` macro (defined to be 1 
> if Apple otherwise it's 0) rather than `__APPLE__`.
I see. That seems problematic, as it makes it tricky to add macOS-specific (or 
iOS-specific) functionality down the road. I don't think SANITIZER_MAC should 
be defined unless TARGET_OS_MACOS is true.


================
Comment at: compiler-rt/lib/ubsan/ubsan_value.cpp:37
+
+  if (!AttemptedDlopen) {
+    ObjCHandle = dlopen(
----------------
delcypher wrote:
> You might want some sort of lock here (or atomic variable) to ensure we don't 
> race and try to `dlopen()` multiple times.
Yes, thanks.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D71491/new/

https://reviews.llvm.org/D71491



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to