From: Jan Beulich <jbeulich@suse.com> To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org> Cc: Andrew Cooper <andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>, Ian Jackson <iwj@xenproject.org>, Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org> Subject: [PATCH v2 03/20] lib: move memmove() Date: Wed, 21 Apr 2021 16:19:25 +0200 [thread overview] Message-ID: <2eb9714b-3506-1216-1ce8-35ea000a37da@suse.com> (raw) In-Reply-To: <3ae091ce-6f6c-3ec6-abd3-4490239a707f@suse.com> By moving the function into an archive, x86 doesn't need to announce anymore that is has its own implementation - symbol resolution by the linker will now guarantee that the generic function remains unused, and the forwarding to the compiler built-in gets done by the common header anyway. Allow the function to be individually linkable, discardable, and overridable. Signed-off-by: Jan Beulich <jbeulich@suse.com> --- a/xen/common/string.c +++ b/xen/common/string.c @@ -311,36 +311,6 @@ char *(strstr)(const char *s1, const cha } #endif -#ifndef __HAVE_ARCH_MEMMOVE -/** - * memmove - Copy one area of memory to another - * @dest: Where to copy to - * @src: Where to copy from - * @count: The size of the area. - * - * Unlike memcpy(), memmove() copes with overlapping areas. - */ -void *(memmove)(void *dest, const void *src, size_t count) -{ - char *tmp, *s; - - if (dest <= src) { - tmp = (char *) dest; - s = (char *) src; - while (count--) - *tmp++ = *s++; - } - else { - tmp = (char *) dest + count; - s = (char *) src + count; - while (count--) - *--tmp = *--s; - } - - return dest; -} -#endif - #ifndef __HAVE_ARCH_MEMCMP /** * memcmp - Compare two areas of memory --- a/xen/include/asm-x86/string.h +++ b/xen/include/asm-x86/string.h @@ -1,9 +1,6 @@ #ifndef __X86_STRING_H__ #define __X86_STRING_H__ -#define __HAVE_ARCH_MEMMOVE -#define memmove(d, s, n) __builtin_memmove(d, s, n) - #endif /* __X86_STRING_H__ */ /* * Local variables: --- a/xen/lib/Makefile +++ b/xen/lib/Makefile @@ -5,6 +5,7 @@ lib-y += ctors.o lib-y += ctype.o lib-y += list-sort.o lib-y += memcpy.o +lib-y += memmove.o lib-y += memset.o lib-y += muldiv64.o lib-y += parse-size.o --- /dev/null +++ b/xen/lib/memmove.c @@ -0,0 +1,42 @@ +/* + * Copyright (C) 1991, 1992 Linus Torvalds + */ + +#include <xen/string.h> + +/** + * memmove - Copy one area of memory to another + * @dest: Where to copy to + * @src: Where to copy from + * @count: The size of the area. + * + * Unlike memcpy(), memmove() copes with overlapping areas. + */ +void *(memmove)(void *dest, const void *src, size_t count) +{ + char *tmp, *s; + + if (dest <= src) { + tmp = (char *) dest; + s = (char *) src; + while (count--) + *tmp++ = *s++; + } else { + tmp = (char *) dest + count; + s = (char *) src + count; + while (count--) + *--tmp = *--s; + } + + return dest; +} + +/* + * Local variables: + * mode: C + * c-file-style: "BSD" + * c-basic-offset: 8 + * tab-width: 8 + * indent-tabs-mode: t + * End: + */
next prev parent reply other threads:[~2021-04-21 14:19 UTC|newest] Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-04-21 14:15 [PATCH v2 00/20] further population of xen/lib/ Jan Beulich 2021-04-21 14:18 ` [PATCH v2 01/20] lib: move memset() Jan Beulich 2021-04-21 14:18 ` [PATCH v2 02/20] lib: move memcpy() Jan Beulich 2021-04-21 14:19 ` Jan Beulich [this message] 2021-04-21 14:19 ` [PATCH v2 04/20] lib: move memcmp() Jan Beulich 2021-04-21 14:20 ` [PATCH v2 05/20] lib: move memchr() Jan Beulich 2021-04-21 14:20 ` [PATCH v2 06/20] lib: move memchr_inv() Jan Beulich 2021-04-21 14:22 ` [PATCH v2 07/20] lib: move strlen() Jan Beulich 2021-04-21 14:22 ` [PATCH v2 08/20] lib: move strnlen() Jan Beulich 2021-04-21 14:22 ` [PATCH v2 09/20] lib: move strcmp() Jan Beulich 2021-04-21 14:23 ` [PATCH v2 10/20] lib: move strncmp() Jan Beulich 2021-04-21 14:23 ` [PATCH v2 11/20] lib: move strlcpy() Jan Beulich 2021-04-21 14:24 ` [PATCH v2 12/20] lib: move strlcat() Jan Beulich 2021-04-21 14:24 ` [PATCH v2 13/20] lib: move strchr() Jan Beulich 2021-04-21 14:24 ` [PATCH v2 14/20] lib: move strrchr() Jan Beulich 2021-04-21 14:25 ` [PATCH v2 15/20] lib: move strstr() Jan Beulich 2021-04-21 14:25 ` [PATCH v2 16/20] lib: move strcasecmp() Jan Beulich 2021-04-21 14:25 ` [PATCH v2 17/20] lib: move/rename strnicmp() to strncasecmp() Jan Beulich 2021-04-21 19:20 ` Julien Grall 2021-04-21 14:26 ` [PATCH v2 18/20] lib: move strspn() Jan Beulich 2021-04-21 14:26 ` [PATCH v2 19/20] lib: move strpbrk() Jan Beulich 2021-04-21 14:26 ` [PATCH v2 20/20] lib: move strsep() Jan Beulich 2021-04-21 19:21 ` [PATCH v2 00/20] further population of xen/lib/ Julien Grall
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=2eb9714b-3506-1216-1ce8-35ea000a37da@suse.com \ --to=jbeulich@suse.com \ --cc=andrew.cooper3@citrix.com \ --cc=george.dunlap@citrix.com \ --cc=iwj@xenproject.org \ --cc=julien@xen.org \ --cc=sstabellini@kernel.org \ --cc=wl@xen.org \ --cc=xen-devel@lists.xenproject.org \ --subject='Re: [PATCH v2 03/20] lib: move memmove()' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).