Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/generic/rtld/symbol.c

    rca0e838 rda54714  
    6565static elf_symbol_t *def_find_in_module(const char *name, module_t *m)
    6666{
     67        if (m->dyn.hash == NULL) {
     68                /* No hash table */
     69                return NULL;
     70        }
     71
    6772        elf_symbol_t *sym_table;
    6873        elf_symbol_t *s, *sym;
    6974        elf_word nbucket;
    70         /*elf_word nchain;*/
     75        /* elf_word nchain; */
    7176        elf_word i;
    7277        char *s_name;
     
    7782        sym_table = m->dyn.sym_tab;
    7883        nbucket = m->dyn.hash[0];
    79         /*nchain = m->dyn.hash[1]; XXX Use to check HT range*/
     84        /* nchain = m->dyn.hash[1]; XXX Use to check HT range */
    8085
    8186        bucket = elf_hash((unsigned char *)name) % nbucket;
     
    135140        modules_untag(start->rtld);
    136141
    137         /* Insert root (the program) into the queue and tag it */
     142        /*
     143         * Insert root (the program) into the queue and tag it.
     144         *
     145         * We disable the dangling-pointer warning because the compiler incorrectly
     146         * assumes that we leak local address (queue) to a parent scope (to start
     147         * argument). However, we always empty the list so the pointer cannot
     148         * actually escape. Probably the compiler can never statically analyze that
     149         * correctly.
     150         */
    138151        list_initialize(&queue);
    139152        start->bfs_tag = true;
     153#pragma GCC diagnostic push
     154#if defined(__GNUC__) && (__GNUC__ >= 12)
     155#pragma GCC diagnostic ignored "-Wdangling-pointer"
     156#endif
    140157        list_append(&start->queue_link, &queue);
     158#pragma GCC diagnostic pop
    141159
    142160        /* If the symbol is found, it will be stored in 'sym' */
Note: See TracChangeset for help on using the changeset viewer.