https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111165
--- Comment #10 from Thorsten Glaser <tg at mirbsd dot org> --- oh no, wait, that was for strchr… the strlen one… but, yeah, that too: extern size_t xstrlen(const char *s); and changing the line again to… sp += xstrlen(sp) + 1; … and adding in another .c file: size_t xstrlen(const char *s) { register const char *cp = s; while (*cp++ != '\0') ; return (--cp - s); } And it still fails.