On Wed, Aug 9, 2017 at 5:07 PM, kbuild test robot
<fengguang...@intel.com> wrote:
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
> master
> head:   bfa738cf3dfae2111626650f86135f93c5ff0a22
> commit: 6974f0c4555e285ab217cee58b6e874f776ff409 include/linux/string.h: add 
> the option of fortified string.h functions
> date:   4 weeks ago
> config: x86_64-randconfig-v0-08092220 (attached as .config)
> compiler: gcc-4.4 (Debian 4.4.7-8) 4.4.7
> reproduce:
>         git checkout 6974f0c4555e285ab217cee58b6e874f776ff409
>         # save the attached .config to linux build tree
>         make ARCH=x86_64
>
> All warnings (new ones prefixed by >>):
>
>    In file included 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:37,
>                     from arch/x86/include/asm/preempt.h:6,
>                     from include/linux/preempt.h:80,
>                     from include/linux/spinlock.h:50,
>                     from include/linux/seqlock.h:35,
>                     from include/linux/time.h:5,
>                     from include/linux/stat.h:18,
>                     from include/linux/module.h:10,
>                     from drivers/tty/serial/8250/8250_fintek.c:11:
>    include/linux/string.h: In function 'strcpy':
>    include/linux/string.h:209: warning: '______f' is static but declared in 
> inline function 'strcpy' which is not static
>    include/linux/string.h:211: warning: '______f' is static but declared in 
> inline function 'strcpy' which is not static


This clearly comes from __trace_if() when CONFIG_PROFILE_ALL_BRANCHES
is enabled. I did not see the warning with gcc-7.1.1, and I guess this only
happens on older compilers like the gcc-4.4 that was used here.

What is the reason for __FORTIFY_INLINE to be "extern __always_inline"
rather than "static __always_inline"? If they cannot just be 'static', maybe
this can be changed to depend on the compiler version.

       Arnd

Reply via email to