This patch modernizes i386 string.h. It removes all the fragile i386[...]
inline str* functions and just switches to gcc's builtin variants.
Modern gcc should generate equivalent or better code. Sometimes it
calls out-of-line code, in that case the standard C functions in
lib/string.c is used.
diff -u linux-string/arch/i386/kernel/i386_ksyms.c-STRING linux-string/arch/i386/kernel/i386_ksyms.c
--- linux-string/arch/i386/kernel/i386_ksyms.c-STRING 2003-10-09 00:28:44.000000000 +0200
+++ linux-string/arch/i386/kernel/i386_ksyms.c 2004-01-18 13:26:36.479533784 +0100
@@ -133,6 +133,38 @@
EXPORT_SYMBOL(pcibios_get_irq_routing_table);
#endif
+/* Export string functions. We normally rely on gcc builtin for most of these,
+ but gcc sometimes decides not to inline them. */ +#undef memchr
+#undef strlen
+#undef strcpy
+#undef strncmp
+#undef strncpy
+#undef strchr
+#undef strcmp +#undef strcpy +#undef strcat
+
+extern size_t strlen(const char *);
+extern char * strcpy(char * dest,const char *src);
+extern int strcmp(const char * cs,const char * ct);
+extern void *memchr(const void *s, int c, size_t n);
+extern char * strcat(char *, const char *);