Subversion Repositories HelenOS

Rev

Rev 2980 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2980 Rev 2981
Line 50... Line 50...
50
    size_t i;
50
    size_t i;
51
    char *s_name;
51
    char *s_name;
52
    char *module_name;
52
    char *module_name;
53
 
53
 
54
    module_name = m->dyn.soname;
54
    module_name = m->dyn.soname;
55
    printf("def_find_in_module('%s', %s)\n", name, module_name);
55
//  printf("def_find_in_module('%s', %s)\n", name, module_name);
56
 
56
 
57
    sym_table = m->dyn.sym_tab;
57
    sym_table = m->dyn.sym_tab;
58
    nchain = m->dyn.hash[1];
58
    nchain = m->dyn.hash[1];
59
 
59
 
60
    for (i = 0; i < nchain; ++i) {
60
    for (i = 0; i < nchain; ++i) {
61
        sym = &sym_table[i];
61
        sym = &sym_table[i];
62
        s_name = m->dyn.str_tab + sym->st_name;
62
        s_name = m->dyn.str_tab + sym->st_name;
63
        printf("cmp sym '%s'\n", s_name);
63
//      printf("cmp sym '%s'\n", s_name);
64
        if (strcmp(name, s_name) == 0) {
64
        if (strcmp(name, s_name) == 0) {
65
            printf("name match\n");
65
//          printf("name match\n");
66
            if (sym->st_shndx != SHN_UNDEF) {
66
            if (sym->st_shndx != SHN_UNDEF) {
67
                printf("definition found. idx=%d\n", i);
67
//              printf("definition found. idx=%d\n", i);
68
                return sym;
68
                return sym;
69
            } else {
69
            } else {
70
                printf("not a definition\n");
70
//              printf("not a definition\n");
71
            }
71
            }
72
        }
72
        }
73
    }
73
    }
74
 
74
 
75
    printf("not found\n");
75
//  printf("not found\n");
76
    return NULL;
76
    return NULL;
77
}
77
}
78
 
78
 
79
 
79
 
80
elf_symbol_t *symbol_def_find(char *name, module_t **m)
80
elf_symbol_t *symbol_def_find(char *name, module_t **m)
Line 85... Line 85...
85
    if (sym != NULL) { *m = runtime_env.program; return sym; } 
85
    if (sym != NULL) { *m = runtime_env.program; return sym; } 
86
 
86
 
87
    sym = def_find_in_module(name, runtime_env.libc);
87
    sym = def_find_in_module(name, runtime_env.libc);
88
    if (sym != NULL) { *m = runtime_env.libc; return sym; }
88
    if (sym != NULL) { *m = runtime_env.libc; return sym; }
89
 
89
 
90
/*  sym = def_find_in_module(name, runtime_env.rtld);
90
    sym = def_find_in_module(name, &runtime_env.rtld);
91
    if (sym != NULL) { *m = runtime_env.rtld; return sym; }*/
91
    if (sym != NULL) { *m = &runtime_env.rtld; return sym; }
92
 
92
 
93
    printf("symbol found nowhere\n");
93
    printf("symbol found nowhere\n");
94
    *m = NULL;
94
    *m = NULL;
95
    return NULL;
95
    return NULL;
96
}
96
}