Commit 7ec8eda154cbdcabb5305d90fb0952973dcaa560
1 parent
95f1d639ad
Exists in
master
and in
39 other branches
genksyms: Simplify printing of symbol types
Instead of special-casing SYM_NORMAL, do not map any name to it. Also explicitly set the single-letter name of the symbol type, which will be needed by a further patch. The only user-visible change is one debug printf. Signed-off-by: Michal Marek <mmarek@suse.cz> Acked-by: Sam Ravnborg <sam@ravnborg.org>
Showing 1 changed file with 27 additions and 16 deletions Side-by-side Diff
scripts/genksyms/genksyms.c
... | ... | @@ -53,8 +53,15 @@ |
53 | 53 | static struct symbol *expansion_trail; |
54 | 54 | static struct symbol *visited_symbols; |
55 | 55 | |
56 | -static const char *const symbol_type_name[] = { | |
57 | - "normal", "typedef", "enum", "struct", "union" | |
56 | +static const struct { | |
57 | + int n; | |
58 | + const char *name; | |
59 | +} symbol_types[] = { | |
60 | + [SYM_NORMAL] = { 0, NULL}, | |
61 | + [SYM_TYPEDEF] = {'t', "typedef"}, | |
62 | + [SYM_ENUM] = {'e', "enum"}, | |
63 | + [SYM_STRUCT] = {'s', "struct"}, | |
64 | + [SYM_UNION] = {'u', "union"}, | |
58 | 65 | }; |
59 | 66 | |
60 | 67 | static int equal_list(struct string_list *a, struct string_list *b); |
... | ... | @@ -247,8 +254,12 @@ |
247 | 254 | sym->is_override = 0; |
248 | 255 | |
249 | 256 | if (flag_debug) { |
250 | - fprintf(debugfile, "Defn for %s %s == <", | |
251 | - symbol_type_name[type], name); | |
257 | + if (symbol_types[type].name) | |
258 | + fprintf(debugfile, "Defn for %s %s == <", | |
259 | + symbol_types[type].name, name); | |
260 | + else | |
261 | + fprintf(debugfile, "Defn for type%d %s == <", | |
262 | + type, name); | |
252 | 263 | if (is_extern) |
253 | 264 | fputs("extern ", debugfile); |
254 | 265 | print_list(debugfile, defn); |
... | ... | @@ -346,8 +357,8 @@ |
346 | 357 | if (node.string[1] == '#') { |
347 | 358 | int n; |
348 | 359 | |
349 | - for (n = 0; n < ARRAY_SIZE(symbol_type_name); n++) { | |
350 | - if (node.string[0] == symbol_type_name[n][0]) { | |
360 | + for (n = 0; n < ARRAY_SIZE(symbol_types); n++) { | |
361 | + if (node.string[0] == symbol_types[n].n) { | |
351 | 362 | node.tag = n; |
352 | 363 | node.string += 2; |
353 | 364 | return copy_node(&node); |
... | ... | @@ -397,8 +408,8 @@ |
397 | 408 | |
398 | 409 | static void print_node(FILE * f, struct string_list *list) |
399 | 410 | { |
400 | - if (list->tag != SYM_NORMAL) { | |
401 | - putc(symbol_type_name[list->tag][0], f); | |
411 | + if (symbol_types[list->tag].n) { | |
412 | + putc(symbol_types[list->tag].n, f); | |
402 | 413 | putc('#', f); |
403 | 414 | } |
404 | 415 | fputs(list->string, f); |
405 | 416 | |
... | ... | @@ -491,11 +502,11 @@ |
491 | 502 | struct string_list *n, *t = NULL; |
492 | 503 | |
493 | 504 | error_with_pos("expand undefined %s %s", |
494 | - symbol_type_name[cur->tag], | |
505 | + symbol_types[cur->tag].name, | |
495 | 506 | cur->string); |
496 | 507 | |
497 | 508 | n = xmalloc(sizeof(*n)); |
498 | - n->string = xstrdup(symbol_type_name[cur->tag]); | |
509 | + n->string = xstrdup(symbol_types[cur->tag].name); | |
499 | 510 | n->tag = SYM_NORMAL; |
500 | 511 | n->next = t; |
501 | 512 | t = n; |
502 | 513 | |
... | ... | @@ -530,11 +541,11 @@ |
530 | 541 | if (subsym->expansion_trail) { |
531 | 542 | if (flag_dump_defs) { |
532 | 543 | fprintf(debugfile, "%s %s ", |
533 | - symbol_type_name[cur->tag], | |
544 | + symbol_types[cur->tag].name, | |
534 | 545 | cur->string); |
535 | 546 | } |
536 | 547 | |
537 | - crc = partial_crc32(symbol_type_name[cur->tag], | |
548 | + crc = partial_crc32(symbol_types[cur->tag].name, | |
538 | 549 | crc); |
539 | 550 | crc = partial_crc32_one(' ', crc); |
540 | 551 | crc = partial_crc32(cur->string, crc); |
... | ... | @@ -624,8 +635,8 @@ |
624 | 635 | |
625 | 636 | static void print_type_name(enum symbol_type type, const char *name) |
626 | 637 | { |
627 | - if (type != SYM_NORMAL) | |
628 | - fprintf(stderr, "%s %s", symbol_type_name[type], name); | |
638 | + if (symbol_types[type].name) | |
639 | + fprintf(stderr, "%s %s", symbol_types[type].name, name); | |
629 | 640 | else |
630 | 641 | fprintf(stderr, "%s", name); |
631 | 642 | } |
... | ... | @@ -771,8 +782,8 @@ |
771 | 782 | |
772 | 783 | if (sym->is_override) |
773 | 784 | fputs("override ", dumpfile); |
774 | - if (sym->type != SYM_NORMAL) { | |
775 | - putc(symbol_type_name[sym->type][0], dumpfile); | |
785 | + if (symbol_types[sym->type].n) { | |
786 | + putc(symbol_types[sym->type].n, dumpfile); | |
776 | 787 | putc('#', dumpfile); |
777 | 788 | } |
778 | 789 | fputs(sym->name, dumpfile); |