rsundahl marked 22 inline comments as done.
rsundahl added a comment.

Thank you for your review and thoughtful input @eugenis, @MaskRay and 
@vitalybuka. I think we're close to having everything incorporated. (@MaskRay, 
the doc files went from .md to .rst and I implemented all of your suggestions 
there.



================
Comment at: clang/include/clang/Driver/Options.td:1785
                                                    HelpText<"Use default code 
inlining logic for the address sanitizer">;
+def fsanitize_address_stable_abi : Flag<["-"], "fsanitize-address-stable-abi">,
+                                                Group<f_clang_Group>,
----------------
MaskRay wrote:
> rsundahl wrote:
> > vitalybuka wrote:
> > > how likely you will need thus for  other sanitizers in future
> > > should this be rather -fsanitize-stable-abi which is ignore for now for 
> > > other sanitizers?
> > Thanks @vitalybuka. I agree and made this change. For now I still only 
> > consume the flag if sanitizer=address so that we continue to get the unused 
> > option warning in the other cases and left the test for that warning intact.
> See `BooleanFFlag`. Some existing sanitizer options are not written with the 
> best practice.
> 
> If `-fno-sanitize-stable-abi` is the default, there is usually no need to 
> have a duplicate help message `Disable ...`. Documenting the non-default 
> boolean option suffices.
(Not sure if this is exactly what you meant @MaskRay but I think it's close.)


================
Comment at: clang/lib/Driver/SanitizerArgs.cpp:1292
+    CmdArgs.push_back("-mllvm");
+    CmdArgs.push_back("-asan-instrumentation-with-call-threshold=0");
+    CmdArgs.push_back("-mllvm");
----------------
MaskRay wrote:
> Optional nit: I added `-mllvm=` as an alias in `D143325`. You can use 
> `-mllvm=-asan-instrumentation-with-call-threshold=0` to decrease the 
> number/length of cc1 options.
> 
> Add some comments before `if (StableABI) {` why the two `cl::opt` options are 
> specified.
I couldn't get this one to work. Did I do it wrong? (Couldn't find example in 
the code to go from.)

Tried:
```
  if (StableABI) {
    CmdArgs.push_back("-mllvm=-asan-instrumentation-with-call-threshold=0");
    CmdArgs.push_back("-mllvm=-asan-max-inline-poisoning-size=0");
  }
```
Got:
```
error: unknown argument: '-mllvm=-asan-instrumentation-with-call-threshold=0'
error: unknown argument: '-mllvm=-asan-max-inline-poisoning-size=0'
```


================
Comment at: compiler-rt/lib/asan_abi/asan_abi_shim.cpp:41
+
+void __asan_after_dynamic_init(void) {
+    __asan_abi_after_dynamic_init();
----------------
MaskRay wrote:
> C++ prefers `()` instead of `(void)`.
These are actually "C'
Added:
```
extern "C" {
...
}
```


================
Comment at: compiler-rt/lib/asan_abi/asan_abi_shim.cpp:486
+    // TBD: Fail here
+    return (void *) 0;
+}
----------------
MaskRay wrote:
> You may apply `clang-format`, which may turn this into `(void *)0`, but 
> `nullptr` likely works better.
clang-format left this as-is. I suspect this is because I also added the extern 
"C" brackets.


================
Comment at: 
compiler-rt/test/asan_abi/TestCases/Darwin/llvm_interface_symbols.cpp:16
+//
+// RUN:  sed -e ':a' -e 'N' -e '$!ba'                                          
   \
+// RUN:      -e 's/ //g'                                                       
   \
----------------
MaskRay wrote:
> Does Darwin sed accept `;` to combine multiple `-e` into one `-e` with `;`?
I couldn't get the same behavior out of the intersection of GNU an BSD set. 
Tried hard in https://reviews.llvm.org/D138824 and landed with the -e's. iirc 
exactly what the problem was with semicolons, just that I was relieved when I 
found a format that worked for all the platforms.


================
Comment at: 
compiler-rt/test/asan_abi/TestCases/Darwin/llvm_interface_symbols.cpp:26
+//
+// RUN: cat %t.imports | sort | uniq > %t.imports-sorted
+// RUN: cat %t.exports | sort | uniq > %t.exports-sorted
----------------
MaskRay wrote:
> `sort %t.imports`. See `Useless use of cat`
Good point!


================
Comment at: compiler-rt/test/asan_abi/lit.cfg.py:9
+
+# Get shlex.quote if available (added in 3.3), and fall back to pipes.quote if
+# it's not available.
----------------
MaskRay wrote:
> This workaround is unneeded. I sent D150410 to clean up other `lit.cfg.py` 
> files.
Wasn't actually used anyway but good to know!


================
Comment at: compiler-rt/test/asan_abi/lit.cfg.py:83
+# Only run the tests on supported OSs.
+if config.host_os not in ['Darwin']:
+  config.unsupported = True
----------------
thetruestblue wrote:
> MaskRay wrote:
> > `!=`
> The thought here was to leave basic lit patterns in-tact to expand to other 
> OSs if others want to in the future. But if there's no desire for that, it 
> doesn't make a big difference to me. 
I landed on just an else clause. Let me know if that's ok @thetruestblue.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D143675

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

Reply via email to