For kernel modules, if they are not ASAN-instrumented, or if they
call those functions without going through the preprocessor macros
defined, they would end up calling non-SAN_INTERCEPTOR baseline
str* functions exported by the kernel.
The above situations happens when an environment runs a large set of
modules that are not build as a part of the FreeBSD tree, or are already
there as standalone .ko files.
The baseline strlen was implemented in a way that scans for non-nul
characters in word units first before doing a byte-by-byte comparison.
However this does not always play well with ASAN-enabled kernel and the
implementation might hit kernel panic due to hitting RedZonePartial ASAN
reports.
In this commit, for ASAN/CSAN-enabled kernels, str* is implemented as
wrappers instead.
MFC after: 1 week
Sponsored by: Juniper Networks, Inc.