*/
        tristate visible;
 
+       /* config entries associated with this symbol */
+       struct list_head menus;
+
        /* SYMBOL_* flags */
        int flags;
 
         */
        struct symbol *sym;
 
+       struct list_head link;  /* link to symbol::menus */
+
        /*
         * The prompt associated with the node. This holds the prompt for a
         * symbol as well as the text for a menu or comment, along with the
 
        *last_entry_ptr = menu;
        last_entry_ptr = &menu->next;
        current_entry = menu;
-       if (sym)
+       if (sym) {
                menu_add_symbol(P_SYMBOL, sym, NULL);
+               list_add_tail(&menu->link, &sym->menus);
+       }
 }
 
 struct menu *menu_add_menu(void)
 
 struct symbol symbol_yes = {
        .name = "y",
        .curr = { "y", yes },
+       .menus = LIST_HEAD_INIT(symbol_yes.menus),
        .flags = SYMBOL_CONST|SYMBOL_VALID,
 };
 
 struct symbol symbol_mod = {
        .name = "m",
        .curr = { "m", mod },
+       .menus = LIST_HEAD_INIT(symbol_mod.menus),
        .flags = SYMBOL_CONST|SYMBOL_VALID,
 };
 
 struct symbol symbol_no = {
        .name = "n",
        .curr = { "n", no },
+       .menus = LIST_HEAD_INIT(symbol_no.menus),
        .flags = SYMBOL_CONST|SYMBOL_VALID,
 };
 
        symbol->name = new_name;
        symbol->type = S_UNKNOWN;
        symbol->flags = flags;
+       INIT_LIST_HEAD(&symbol->menus);
 
        hash_add(sym_hashtable, &symbol->node, hash);