Re: Linux Plumbers Conf 2021
flat view
From: Mark Rutland <mark.rutland@arm.com>
Date: 2021-05-19 09:32:55
On Tue, May 18, 2021 at 10:03:06PM +0200, Peter Zijlstra wrote:
On Tue, May 18, 2021 at 09:57:26AM -0700, Nick Desaulniers wrote:quoted
On Tue, May 18, 2021 at 6:23 AM Peter Zijlstra [off-list ref] wrote:quoted
quoted
- validates noinstr annotation; *HOWEVER* we rely on objtool to NOP all __sanitizer_cov_* calls in .noinstr/.entry text sections because __no_sanitize_cov is 'broken' in all known compilers.^ Do you have more information on this?Random link in the middle of a relevant thread: https://lkml.kernel.org/r/CANpmjNPNa2f=kAF6c199oYVJ0iSyirQRGxeOBLxa9PmakSXRbA@mail.gmail.com Notable quote: "It's everywhere. We cannot mark noinstr functions to not be instrumented by KCOV/-fsanitize-coverage, because no compiler provides an attribute to do so. GCC doesn't have __attribute__((no_sanitize_coverage)) and Clang doesn't have __attribute__((no_sanitize("coverage")), and therefore we can't have __no_sanitize_coverage."
Yuck; I wasn't aware of that. This means that arm64's entry code is unsound (along with some other parts) if kcov is enabled. That *really* needs an attribute, and going forward we shouldn't accept new compiler instrumentation that we can't opt-out of like this. Thanks, Mark.