| From foo@baz Wed Nov 21 18:50:25 CET 2018 |
| From: Michael Davidson <md@google.com> |
| Date: Mon, 24 Jul 2017 16:51:55 -0700 |
| Subject: x86/boot: #undef memcpy() et al in string.c |
| |
| From: Michael Davidson <md@google.com> |
| |
| commit 18d5e6c34a8eda438d5ad8b3b15f42dab01bf05d upstream. |
| |
| undef memcpy() and friends in boot/string.c so that the functions |
| defined here will have the correct names, otherwise we end up |
| up trying to redefine __builtin_memcpy() etc. |
| |
| Surprisingly, GCC allows this (and, helpfully, discards the |
| __builtin_ prefix from the function name when compiling it), |
| but clang does not. |
| |
| Adding these #undef's appears to preserve what I assume was |
| the original intent of the code. |
| |
| Signed-off-by: Michael Davidson <md@google.com> |
| Signed-off-by: Matthias Kaehlcke <mka@chromium.org> |
| Acked-by: H. Peter Anvin <hpa@zytor.com> |
| Cc: Arnd Bergmann <arnd@arndb.de> |
| Cc: Bernhard.Rosenkranzer@linaro.org |
| Cc: Greg Hackmann <ghackmann@google.com> |
| Cc: Kees Cook <keescook@chromium.org> |
| Cc: Linus Torvalds <torvalds@linux-foundation.org> |
| Cc: Nick Desaulniers <ndesaulniers@google.com> |
| Cc: Peter Zijlstra <peterz@infradead.org> |
| Cc: Thomas Gleixner <tglx@linutronix.de> |
| Link: http://lkml.kernel.org/r/20170724235155.79255-1-mka@chromium.org |
| Signed-off-by: Ingo Molnar <mingo@kernel.org> |
| Signed-off-by: Nick Desaulniers <ndesaulniers@google.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| arch/x86/boot/string.c | 9 +++++++++ |
| 1 file changed, 9 insertions(+) |
| |
| --- a/arch/x86/boot/string.c |
| +++ b/arch/x86/boot/string.c |
| @@ -16,6 +16,15 @@ |
| #include "ctype.h" |
| #include "string.h" |
| |
| +/* |
| + * Undef these macros so that the functions that we provide |
| + * here will have the correct names regardless of how string.h |
| + * may have chosen to #define them. |
| + */ |
| +#undef memcpy |
| +#undef memset |
| +#undef memcmp |
| + |
| int memcmp(const void *s1, const void *s2, size_t len) |
| { |
| bool diff; |