Skip to content
  • Michal Marek's avatar
    asm-prototypes: Clear any CPP defines before declaring the functions · c7858bf1
    Michal Marek authored
    The asm-prototypes.h file is used to provide dummy function declarations
    for genksyms, when processing asm files with EXPORT_SYMBOL. Make sure
    that any architecture defines get out of our way. x86 currently has an
    issue with memcpy on 64bit with CONFIG_KMEMCHECK=y and with
    memset/__memset on 32bit:
    
    	$ cat init/test.c
    	#include <asm/asm-prototypes.h>
    	$ make -s init/test.o
    	In file included from ./arch/x86/include/asm/string.h:4:0,
    			 from ./include/linux/string.h:18,
    			 from ./include/linux/bitmap.h:8,
    			 from ./include/linux/cpumask.h:11,
    			 from ./arch/x86/include/asm/cpumask.h:4,
    			 from ./arch/x86/include/asm/msr.h:10,
    			 from ./arch/x86/include/asm/processor.h:20,
    			 from ./arch/x86/include/asm/cpufeature.h:4,
    			 from ./arch/x86/include/asm/thread_info.h:52,
    			 from ./include/linux/thread_info.h:25,
    			 from ./arch/x86/include/asm/preempt.h:6,
    			 from ./include/linux/preempt.h:59,
    			 from ./include/linux/spinlock.h:50,
    			 from ./include/linux/seqlock.h:35,
    			 from ./include/linux/time.h:5,
    			 from ./include/uapi/linux/timex.h:56,
    			 from ./include/linux/timex.h:56,
    			 from ./include/linux/sched.h:19,
    			 from ./include/linux/uaccess.h:4,
    			 from ./arch/x86/include/asm/asm-prototypes.h:2,
    			 from init/test.c:1:
    	./arch/x86/include/asm/string_64.h:52:47: error: expected declaration specifiers or ‘...’ before ‘(’ token
    	 #define memcpy(dst, src, len) __inline_memcpy((dst), (src), (len))
    	 ./include/asm-generic/asm-prototypes.h:6:14: note: in expansion of macro ‘memcpy’
    	  extern void *memcpy(void *, const void *, __kernel_size_t);
    
    						       ^
    	...
    
    During real build, this manifests itself by genksyms segfaulting.
    
    Fixes: 334bb773
    
     ("x86/kbuild: enable modversions for symbols exported from asm")
    Reported-and-tested-by: default avatarBorislav Petkov <bp@alien8.de>
    Cc: Adam Borowski <kilobyte@angband.pl>
    Signed-off-by: default avatarMichal Marek <mmarek@suse.com>
    c7858bf1