xref: /linux/arch/um/os-Linux/user_syms.c (revision 9c3a985f88fa4de82bf4bda906095ce6444e9039)
1 // SPDX-License-Identifier: GPL-2.0
2 #define __NO_FORTIFY
3 #include <linux/types.h>
4 #include <linux/module.h>
5 
6 /*
7  * This file exports some critical string functions and compiler
8  * built-in functions (where calls are emitted by the compiler
9  * itself that we cannot avoid even in kernel code) to modules.
10  *
11  * "_user.c" code that previously used exports here such as hostfs
12  * really should be considered part of the 'hypervisor' and define
13  * its own API boundary like hostfs does now; don't add exports to
14  * this file for such cases.
15  */
16 
17 /* If it's not defined, the export is included in lib/string.c.*/
18 #ifdef __HAVE_ARCH_STRSTR
19 #undef strstr
20 EXPORT_SYMBOL(strstr);
21 #endif
22 
23 #ifndef __x86_64__
24 #undef memcpy
25 extern void *memcpy(void *, const void *, size_t);
26 EXPORT_SYMBOL(memcpy);
27 extern void *memmove(void *, const void *, size_t);
28 EXPORT_SYMBOL(memmove);
29 #undef memset
30 extern void *memset(void *, int, size_t);
31 EXPORT_SYMBOL(memset);
32 #endif
33 
34 #ifdef CONFIG_ARCH_REUSE_HOST_VSYSCALL_AREA
35 /* needed for __access_ok() */
36 EXPORT_SYMBOL(vsyscall_ehdr);
37 EXPORT_SYMBOL(vsyscall_end);
38 #endif
39 
40 /* Export symbols used by GCC for the stack protector. */
41 extern void __stack_smash_handler(void *) __attribute__((weak));
42 EXPORT_SYMBOL(__stack_smash_handler);
43 
44 extern long __guard __attribute__((weak));
45 EXPORT_SYMBOL(__guard);
46 
47 #ifdef _FORTIFY_SOURCE
48 extern int __sprintf_chk(char *str, int flag, size_t len, const char *format);
49 EXPORT_SYMBOL(__sprintf_chk);
50 #endif
51