[rcu:dev.2020.10.26b 81/97] include/linux/srcutree.h:127:13: error: '___srcu_struct_ptrs' undeclared here (not in a function)

From: kernel test robot
Date: Thu Oct 29 2020 - 03:45:19 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git dev.2020.10.26b
head: 387807f02923dd87ad097a4245ddbd9d8079687d
commit: c1370c128cf49147f1d4c670b7101134231b3dc5 [81/97] srcu: Avoid escaped section names
config: x86_64-rhel (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce (this is a W=1 build):
# https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git/commit/?id=c1370c128cf49147f1d4c670b7101134231b3dc5
git remote add rcu https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
git fetch --no-tags rcu dev.2020.10.26b
git checkout c1370c128cf49147f1d4c670b7101134231b3dc5
# save the attached .config to linux build tree
make W=1 ARCH=x86_64

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>

All errors (new ones prefixed by >>):

In file included from include/linux/compiler_types.h:65,
from <command-line>:
>> include/linux/srcutree.h:127:13: error: '___srcu_struct_ptrs' undeclared here (not in a function)
127 | __section(___srcu_struct_ptrs) = &name
| ^~~~~~~~~~~~~~~~~~~
include/linux/compiler_attributes.h:257:68: note: in definition of macro '__section'
257 | #define __section(section) __attribute__((__section__(section)))
| ^~~~~~~
include/linux/srcutree.h:135:34: note: in expansion of macro '__DEFINE_SRCU'
135 | #define DEFINE_STATIC_SRCU(name) __DEFINE_SRCU(name, static)
| ^~~~~~~~~~~~~
drivers/gpu/drm/drm_drv.c:68:1: note: in expansion of macro 'DEFINE_STATIC_SRCU'
68 | DEFINE_STATIC_SRCU(drm_unplug_srcu);
| ^~~~~~~~~~~~~~~~~~
In file included from include/linux/srcu.h:49,
from include/linux/notifier.h:16,
from arch/x86/include/asm/uprobes.h:13,
from include/linux/uprobes.h:49,
from include/linux/mm_types.h:14,
from include/linux/mmzone.h:21,
from include/linux/gfp.h:6,
from include/linux/xarray.h:14,
from include/linux/radix-tree.h:19,
from include/linux/fs.h:15,
from include/linux/debugfs.h:15,
from drivers/gpu/drm/drm_drv.c:29:
>> include/linux/srcutree.h:126:9: error: section attribute argument not a string constant
126 | struct srcu_struct * const __srcu_struct_##name \
| ^~~~~~~~~~~
include/linux/srcutree.h:135:34: note: in expansion of macro '__DEFINE_SRCU'
135 | #define DEFINE_STATIC_SRCU(name) __DEFINE_SRCU(name, static)
| ^~~~~~~~~~~~~
drivers/gpu/drm/drm_drv.c:68:1: note: in expansion of macro 'DEFINE_STATIC_SRCU'
68 | DEFINE_STATIC_SRCU(drm_unplug_srcu);
| ^~~~~~~~~~~~~~~~~~
--
In file included from include/linux/compiler_types.h:65,
from <command-line>:
>> include/linux/srcutree.h:127:13: error: '___srcu_struct_ptrs' undeclared here (not in a function)
127 | __section(___srcu_struct_ptrs) = &name
| ^~~~~~~~~~~~~~~~~~~
include/linux/compiler_attributes.h:257:68: note: in definition of macro '__section'
257 | #define __section(section) __attribute__((__section__(section)))
| ^~~~~~~
include/linux/srcutree.h:135:34: note: in expansion of macro '__DEFINE_SRCU'
135 | #define DEFINE_STATIC_SRCU(name) __DEFINE_SRCU(name, static)
| ^~~~~~~~~~~~~
fs/dlm/lowcomms.c:139:1: note: in expansion of macro 'DEFINE_STATIC_SRCU'
139 | DEFINE_STATIC_SRCU(connections_srcu);
| ^~~~~~~~~~~~~~~~~~
In file included from include/linux/srcu.h:49,
from include/linux/notifier.h:16,
from arch/x86/include/asm/uprobes.h:13,
from include/linux/uprobes.h:49,
from include/linux/mm_types.h:14,
from include/linux/mmzone.h:21,
from include/linux/gfp.h:6,
from include/linux/xarray.h:14,
from include/linux/radix-tree.h:19,
from include/linux/fs.h:15,
from include/linux/compat.h:17,
from include/linux/ethtool.h:17,
from include/linux/netdevice.h:37,
from include/net/sock.h:46,
from fs/dlm/lowcomms.c:46:
>> include/linux/srcutree.h:126:9: error: section attribute argument not a string constant
126 | struct srcu_struct * const __srcu_struct_##name \
| ^~~~~~~~~~~
include/linux/srcutree.h:135:34: note: in expansion of macro '__DEFINE_SRCU'
135 | #define DEFINE_STATIC_SRCU(name) __DEFINE_SRCU(name, static)
| ^~~~~~~~~~~~~
fs/dlm/lowcomms.c:139:1: note: in expansion of macro 'DEFINE_STATIC_SRCU'
139 | DEFINE_STATIC_SRCU(connections_srcu);
| ^~~~~~~~~~~~~~~~~~

vim +/___srcu_struct_ptrs +127 include/linux/srcutree.h

103
104 /*
105 * Define and initialize a srcu struct at build time.
106 * Do -not- call init_srcu_struct() nor cleanup_srcu_struct() on it.
107 *
108 * Note that although DEFINE_STATIC_SRCU() hides the name from other
109 * files, the per-CPU variable rules nevertheless require that the
110 * chosen name be globally unique. These rules also prohibit use of
111 * DEFINE_STATIC_SRCU() within a function. If these rules are too
112 * restrictive, declare the srcu_struct manually. For example, in
113 * each file:
114 *
115 * static struct srcu_struct my_srcu;
116 *
117 * Then, before the first use of each my_srcu, manually initialize it:
118 *
119 * init_srcu_struct(&my_srcu);
120 *
121 * See include/linux/percpu-defs.h for the rules on per-CPU variables.
122 */
123 #ifdef MODULE
124 # define __DEFINE_SRCU(name, is_static) \
125 is_static struct srcu_struct name; \
> 126 struct srcu_struct * const __srcu_struct_##name \
> 127 __section(___srcu_struct_ptrs) = &name
128 #else
129 # define __DEFINE_SRCU(name, is_static) \
130 static DEFINE_PER_CPU(struct srcu_data, name##_srcu_data); \
131 is_static struct srcu_struct name = \
132 __SRCU_STRUCT_INIT(name, name##_srcu_data)
133 #endif
134 #define DEFINE_SRCU(name) __DEFINE_SRCU(name, /* not static */)
135 #define DEFINE_STATIC_SRCU(name) __DEFINE_SRCU(name, static)
136

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx

Attachment: .config.gz
Description: application/gzip