* [jimc:dd-fix-5e 24/24] lib/dynamic_debug.c:284:33: error: implicit declaration of function 'assoc_array_delete'
@ 2023-09-03 12:26 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2023-09-03 12:26 UTC (permalink / raw)
To: Jim Cromie; +Cc: oe-kbuild-all
tree: https://github.com/jimc/linux.git dd-fix-5e
head: 69b58a07013be2ff9c21e29b48cce3de6d963f11
commit: 69b58a07013be2ff9c21e29b48cce3de6d963f11 [24/24] dyndbg: use assoc-array to cache prefixes
config: mips-loongson1b_defconfig (https://download.01.org/0day-ci/archive/20230903/202309032035.M80dBHhw-lkp@intel.com/config)
compiler: mipsel-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20230903/202309032035.M80dBHhw-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202309032035.M80dBHhw-lkp@intel.com/
All error/warnings (new ones prefixed by >>):
lib/dynamic_debug.c: In function 'ddebug_change':
>> lib/dynamic_debug.c:284:33: error: implicit declaration of function 'assoc_array_delete' [-Werror=implicit-function-declaration]
284 | assoc_array_delete(&ddebug_prefix_cache, &ddprefix_aa_ops, dp);
| ^~~~~~~~~~~~~~~~~~
lib/dynamic_debug.c: At top level:
>> lib/dynamic_debug.c:784:59: warning: 'struct assoc_array_ptr' declared inside parameter list will not be visible outside of this definition or declaration
784 | static inline struct key *keyring_ptr_to_key(const struct assoc_array_ptr *x)
| ^~~~~~~~~~~~~~~
lib/dynamic_debug.c: In function 'keyring_ptr_to_key':
>> lib/dynamic_debug.c:786:24: error: implicit declaration of function 'assoc_array_ptr_to_leaf' [-Werror=implicit-function-declaration]
786 | void *object = assoc_array_ptr_to_leaf(x);
| ^~~~~~~~~~~~~~~~~~~~~~~
>> lib/dynamic_debug.c:786:24: warning: initialization of 'void *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
lib/dynamic_debug.c: In function 'ddprefix_get_key_chunk':
>> lib/dynamic_debug.c:802:33: error: invalid use of undefined type 'const struct keyring_index_key'
802 | int desc_len = index_key->desc_len, n = sizeof(chunk);
| ^~
>> lib/dynamic_debug.c:804:18: error: 'ASSOC_ARRAY_KEY_CHUNK_SIZE' undeclared (first use in this function)
804 | level /= ASSOC_ARRAY_KEY_CHUNK_SIZE;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
lib/dynamic_debug.c:804:18: note: each undeclared identifier is reported only once for each function it appears in
lib/dynamic_debug.c:807:33: error: invalid use of undefined type 'const struct keyring_index_key'
807 | return index_key->hash;
| ^~
lib/dynamic_debug.c:809:33: error: invalid use of undefined type 'const struct keyring_index_key'
809 | return index_key->x;
| ^~
lib/dynamic_debug.c:811:48: error: invalid use of undefined type 'const struct keyring_index_key'
811 | return (unsigned long)index_key->type;
| ^~
lib/dynamic_debug.c:813:48: error: invalid use of undefined type 'const struct keyring_index_key'
813 | return (unsigned long)index_key->domain_tag;
| ^~
lib/dynamic_debug.c:816:49: error: invalid use of undefined type 'const struct keyring_index_key'
816 | if (desc_len <= sizeof(index_key->desc))
| ^~
lib/dynamic_debug.c:819:30: error: invalid use of undefined type 'const struct keyring_index_key'
819 | d = index_key->description + sizeof(index_key->desc);
| ^~
lib/dynamic_debug.c:819:62: error: invalid use of undefined type 'const struct keyring_index_key'
819 | d = index_key->description + sizeof(index_key->desc);
| ^~
lib/dynamic_debug.c:821:45: error: invalid use of undefined type 'const struct keyring_index_key'
821 | desc_len -= sizeof(index_key->desc);
| ^~
lib/dynamic_debug.c: In function 'ddprefix_get_object_key_chunk':
>> lib/dynamic_debug.c:835:43: error: invalid use of undefined type 'const struct key'
835 | return ddprefix_get_key_chunk(&key->index_key, level);
| ^~
lib/dynamic_debug.c: In function 'ddprefix_compare_object':
lib/dynamic_debug.c:843:19: error: invalid use of undefined type 'const struct key'
843 | return key->index_key.type == index_key->type &&
| ^~
lib/dynamic_debug.c:843:48: error: invalid use of undefined type 'const struct keyring_index_key'
843 | return key->index_key.type == index_key->type &&
| ^~
lib/dynamic_debug.c:844:20: error: invalid use of undefined type 'const struct key'
844 | key->index_key.domain_tag == index_key->domain_tag &&
| ^~
lib/dynamic_debug.c:844:55: error: invalid use of undefined type 'const struct keyring_index_key'
844 | key->index_key.domain_tag == index_key->domain_tag &&
| ^~
lib/dynamic_debug.c:845:20: error: invalid use of undefined type 'const struct key'
845 | key->index_key.desc_len == index_key->desc_len &&
| ^~
lib/dynamic_debug.c:845:53: error: invalid use of undefined type 'const struct keyring_index_key'
845 | key->index_key.desc_len == index_key->desc_len &&
| ^~
lib/dynamic_debug.c:846:27: error: invalid use of undefined type 'const struct key'
846 | memcmp(key->index_key.description, index_key->description,
| ^~
lib/dynamic_debug.c:846:61: error: invalid use of undefined type 'const struct keyring_index_key'
846 | memcmp(key->index_key.description, index_key->description,
| ^~
lib/dynamic_debug.c:847:33: error: invalid use of undefined type 'const struct keyring_index_key'
847 | index_key->desc_len) == 0;
| ^~
lib/dynamic_debug.c: In function 'ddprefix_diff_objects':
lib/dynamic_debug.c:857:51: error: invalid use of undefined type 'const struct key'
857 | const struct keyring_index_key *a = &key_a->index_key;
| ^~
lib/dynamic_debug.c:863:18: error: invalid use of undefined type 'const struct keyring_index_key'
863 | seg_a = a->hash;
| ^~
lib/dynamic_debug.c:864:18: error: invalid use of undefined type 'const struct keyring_index_key'
864 | seg_b = b->hash;
| ^~
lib/dynamic_debug.c:867:18: error: 'ASSOC_ARRAY_KEY_CHUNK_SIZE' undeclared (first use in this function)
867 | level += ASSOC_ARRAY_KEY_CHUNK_SIZE / 8;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
lib/dynamic_debug.c:873:18: error: invalid use of undefined type 'const struct keyring_index_key'
873 | seg_a = a->x;
| ^~
lib/dynamic_debug.c:874:18: error: invalid use of undefined type 'const struct keyring_index_key'
874 | seg_b = b->x;
| ^~
lib/dynamic_debug.c:880:33: error: invalid use of undefined type 'const struct keyring_index_key'
880 | seg_a = (unsigned long)a->type;
| ^~
lib/dynamic_debug.c:881:33: error: invalid use of undefined type 'const struct keyring_index_key'
881 | seg_b = (unsigned long)b->type;
| ^~
lib/dynamic_debug.c:886:33: error: invalid use of undefined type 'const struct keyring_index_key'
886 | seg_a = (unsigned long)a->domain_tag;
| ^~
lib/dynamic_debug.c:887:33: error: invalid use of undefined type 'const struct keyring_index_key'
887 | seg_b = (unsigned long)b->domain_tag;
| ^~
lib/dynamic_debug.c:892:21: error: invalid use of undefined type 'const struct keyring_index_key'
892 | i = sizeof(a->desc);
| ^~
lib/dynamic_debug.c:893:14: error: invalid use of undefined type 'const struct keyring_index_key'
893 | if (a->desc_len <= i)
| ^~
lib/dynamic_debug.c:896:21: error: invalid use of undefined type 'const struct keyring_index_key'
896 | for (; i < a->desc_len; i++) {
| ^~
lib/dynamic_debug.c:897:45: error: invalid use of undefined type 'const struct keyring_index_key'
897 | seg_a = *(unsigned char *)(a->description + i);
| ^~
lib/dynamic_debug.c:898:45: error: invalid use of undefined type 'const struct keyring_index_key'
898 | seg_b = *(unsigned char *)(b->description + i);
| ^~
lib/dynamic_debug.c: At top level:
>> lib/dynamic_debug.c:918:21: error: variable 'ddprefix_aa_ops' has initializer but incomplete type
918 | static const struct assoc_array_ops ddprefix_aa_ops = {
| ^~~~~~~~~~~~~~~
>> lib/dynamic_debug.c:919:10: error: 'const struct assoc_array_ops' has no member named 'get_key_chunk'
919 | .get_key_chunk = ddprefix_get_key_chunk,
| ^~~~~~~~~~~~~
>> lib/dynamic_debug.c:919:35: warning: excess elements in struct initializer
919 | .get_key_chunk = ddprefix_get_key_chunk,
| ^~~~~~~~~~~~~~~~~~~~~~
lib/dynamic_debug.c:919:35: note: (near initialization for 'ddprefix_aa_ops')
>> lib/dynamic_debug.c:920:10: error: 'const struct assoc_array_ops' has no member named 'get_object_key_chunk'
920 | .get_object_key_chunk = ddprefix_get_object_key_chunk,
| ^~~~~~~~~~~~~~~~~~~~
lib/dynamic_debug.c:920:35: warning: excess elements in struct initializer
920 | .get_object_key_chunk = ddprefix_get_object_key_chunk,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/dynamic_debug.c:920:35: note: (near initialization for 'ddprefix_aa_ops')
>> lib/dynamic_debug.c:921:10: error: 'const struct assoc_array_ops' has no member named 'compare_object'
921 | .compare_object = ddprefix_compare_object,
| ^~~~~~~~~~~~~~
lib/dynamic_debug.c:921:35: warning: excess elements in struct initializer
921 | .compare_object = ddprefix_compare_object,
| ^~~~~~~~~~~~~~~~~~~~~~~
lib/dynamic_debug.c:921:35: note: (near initialization for 'ddprefix_aa_ops')
>> lib/dynamic_debug.c:922:10: error: 'const struct assoc_array_ops' has no member named 'diff_objects'
922 | .diff_objects = ddprefix_diff_objects,
| ^~~~~~~~~~~~
lib/dynamic_debug.c:922:35: warning: excess elements in struct initializer
922 | .diff_objects = ddprefix_diff_objects,
| ^~~~~~~~~~~~~~~~~~~~~
lib/dynamic_debug.c:922:35: note: (near initialization for 'ddprefix_aa_ops')
>> lib/dynamic_debug.c:923:10: error: 'const struct assoc_array_ops' has no member named 'free_object'
923 | .free_object = ddprefix_free_object,
| ^~~~~~~~~~~
lib/dynamic_debug.c:923:35: warning: excess elements in struct initializer
923 | .free_object = ddprefix_free_object,
| ^~~~~~~~~~~~~~~~~~~~
lib/dynamic_debug.c:923:35: note: (near initialization for 'ddprefix_aa_ops')
lib/dynamic_debug.c:935:5: warning: no previous prototype for '__dynamic_emit_prefix' [-Wmissing-prototypes]
935 | int __dynamic_emit_prefix(struct _ddebug *desc, char *buf, int pos)
| ^~~~~~~~~~~~~~~~~~~~~
lib/dynamic_debug.c: In function '__dynamic_emit_prefix':
>> lib/dynamic_debug.c:941:18: error: implicit declaration of function 'assoc_array_find' [-Werror=implicit-function-declaration]
941 | prefix = assoc_array_find(&ddebug_prefix_cache, &ddprefix_aa_ops, desc);
| ^~~~~~~~~~~~~~~~
>> lib/dynamic_debug.c:941:16: warning: assignment to 'char *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
941 | prefix = assoc_array_find(&ddebug_prefix_cache, &ddprefix_aa_ops, desc);
| ^
>> lib/dynamic_debug.c:956:16: error: implicit declaration of function 'assoc_array_insert' [-Werror=implicit-function-declaration]
956 | edit = assoc_array_insert(&ddebug_prefix_cache, &ddprefix_aa_ops, desc, prefix);
| ^~~~~~~~~~~~~~~~~~
>> lib/dynamic_debug.c:956:14: warning: assignment to 'struct assoc_array_edit *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
956 | edit = assoc_array_insert(&ddebug_prefix_cache, &ddprefix_aa_ops, desc, prefix);
| ^
>> lib/dynamic_debug.c:960:9: error: implicit declaration of function 'assoc_array_apply_edit' [-Werror=implicit-function-declaration]
960 | assoc_array_apply_edit(edit);
| ^~~~~~~~~~~~~~~~~~~~~~
lib/dynamic_debug.c: At top level:
>> lib/dynamic_debug.c:918:37: error: storage size of 'ddprefix_aa_ops' isn't known
918 | static const struct assoc_array_ops ddprefix_aa_ops = {
| ^~~~~~~~~~~~~~~
lib/dynamic_debug.c:198:27: error: storage size of 'ddebug_prefix_cache' isn't known
198 | static struct assoc_array ddebug_prefix_cache;
| ^~~~~~~~~~~~~~~~~~~
lib/dynamic_debug.c:918:37: error: storage size of 'ddprefix_aa_ops' isn't known
918 | static const struct assoc_array_ops ddprefix_aa_ops = {
| ^~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
vim +/assoc_array_delete +284 lib/dynamic_debug.c
197
> 198 static struct assoc_array ddebug_prefix_cache;
199
200 /*
201 * Search the tables for _ddebug's which match the given `query' and
202 * apply the `flags' and `mask' to them. Returns number of matching
203 * callsites, normally the same as number of changes. If verbose,
204 * logs the changes. Takes ddebug_lock.
205 */
206 static int ddebug_change(const struct ddebug_query *query,
207 struct flag_settings *modifiers)
208 {
209 int i;
210 struct ddebug_table *dt;
211 unsigned int newflags;
212 unsigned int nfound = 0;
213 struct flagsbuf fbuf, nbuf;
214 struct ddebug_class_map *map = NULL;
215 int __outvar valid_class;
216
217 /* search for matching ddebugs */
218 mutex_lock(&ddebug_lock);
219 list_for_each_entry(dt, &ddebug_tables, link) {
220
221 /* match against the module name */
222 if (query->module &&
223 !match_wildcard(query->module, dt->mod_name))
224 continue;
225
226 if (query->class_string) {
227 map = ddebug_find_valid_class(dt, query->class_string, &valid_class);
228 if (!map)
229 continue;
230 } else {
231 /* constrain query, do not touch class'd callsites */
232 valid_class = _DPRINTK_CLASS_DFLT;
233 }
234
235 for (i = 0; i < dt->num_ddebugs; i++) {
236 struct _ddebug *dp = &dt->ddebugs[i];
237
238 /* match site against query-class */
239 if (dp->class_id != valid_class)
240 continue;
241
242 /* match against the source filename */
243 if (query->filename &&
244 !match_wildcard(query->filename, dp->filename) &&
245 !match_wildcard(query->filename,
246 kbasename(dp->filename)) &&
247 !match_wildcard(query->filename,
248 trim_prefix(dp->filename)))
249 continue;
250
251 /* match against the function */
252 if (query->function &&
253 !match_wildcard(query->function, dp->function))
254 continue;
255
256 /* match against the format */
257 if (query->format) {
258 if (*query->format == '^') {
259 char *p;
260 /* anchored search. match must be at beginning */
261 p = strstr(dp->format, query->format+1);
262 if (p != dp->format)
263 continue;
264 } else if (!strstr(dp->format, query->format))
265 continue;
266 }
267
268 /* match against the line number range */
269 if (query->first_lineno &&
270 dp->lineno < query->first_lineno)
271 continue;
272 if (query->last_lineno &&
273 dp->lineno > query->last_lineno)
274 continue;
275
276 nfound++;
277
278 newflags = (dp->flags & modifiers->mask) | modifiers->flags;
279 if (newflags == dp->flags)
280 continue;
281
282 if (dp->flags & _DPRINTK_FLAGS_PREFIX_CACHED) {
283 v4pr_info("drop stale prefix\n");
> 284 assoc_array_delete(&ddebug_prefix_cache, &ddprefix_aa_ops, dp);
285 }
286 #ifdef CONFIG_JUMP_LABEL
287 if (dp->flags & _DPRINTK_FLAGS_PRINT) {
288 if (!(newflags & _DPRINTK_FLAGS_PRINT))
289 static_branch_disable(&dp->key.dd_key_true);
290 } else if (newflags & _DPRINTK_FLAGS_PRINT) {
291 static_branch_enable(&dp->key.dd_key_true);
292 }
293 #endif
294 v4pr_info("changed %s:%d [%s]%s %s => %s\n",
295 trim_prefix(dp->filename), dp->lineno,
296 dt->mod_name, dp->function,
297 ddebug_describe_flags(dp->flags, &fbuf),
298 ddebug_describe_flags(newflags, &nbuf));
299 dp->flags = newflags;
300 }
301 }
302 mutex_unlock(&ddebug_lock);
303
304 return nfound;
305 }
306
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2023-09-03 12:26 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-09-03 12:26 [jimc:dd-fix-5e 24/24] lib/dynamic_debug.c:284:33: error: implicit declaration of function 'assoc_array_delete' kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.