string/memory functions: avoid qemu bugs/performance issues.

Use V on real hardware, but GC on qemu.

Change-Id: I419546d94555540e14a14dcc52bd99413cbbcfa1
diff --git a/libc/bionic/strnlen.c b/libc/bionic/strnlen.cpp
similarity index 89%
rename from libc/bionic/strnlen.c
rename to libc/bionic/strnlen.cpp
index 2c6f60a..7101b21 100644
--- a/libc/bionic/strnlen.c
+++ b/libc/bionic/strnlen.cpp
@@ -25,14 +25,10 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
+
 #include <string.h>
 
-size_t  strnlen(const char*  str, size_t  maxlen)
-{
-    char*  p = memchr(str, 0, maxlen);
-
-    if (p == NULL)
-        return maxlen;
-    else
-        return (p - str);
+size_t strnlen(const char* s, size_t n) {
+  const char* p = static_cast<const char*>(memchr(s, 0, n));
+  return p ? (p - s) : n;
 }