Rev 3686 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3686 | Rev 3689 | ||
---|---|---|---|
Line 53... | Line 53... | ||
53 | if (m == NULL) { |
53 | if (m == NULL) { |
54 | printf("NULL. module_load('%s')\n", path); |
54 | printf("NULL. module_load('%s')\n", path); |
55 | m = module_load(path); |
55 | m = module_load(path); |
56 | printf("module_load_deps(m)\n"); |
56 | printf("module_load_deps(m)\n"); |
57 | module_load_deps(m); |
57 | module_load_deps(m); |
- | 58 | /* Now relocate. */ |
|
- | 59 | printf("module_process_relocs(m)\n"); |
|
- | 60 | module_process_relocs(m); |
|
58 | } else { |
61 | } else { |
59 | printf("not NULL\n"); |
62 | printf("not NULL\n"); |
60 | } |
63 | } |
61 | 64 | ||
62 | return (void *) m; |
65 | return (void *) m; |
63 | } |
66 | } |
64 | 67 | ||
65 | /* |
68 | /* |
66 | * @note Symbols with NULL values are not accounted for. |
69 | * @note Symbols with NULL values are not accounted for. |
67 | * @note Symbol search scope is not correct. Should only |
- | |
68 | * look in @a mod and its dependencies. |
- | |
69 | */ |
70 | */ |
70 | void *dlsym(void *mod, const char *sym_name) |
71 | void *dlsym(void *mod, const char *sym_name) |
71 | { |
72 | { |
72 | elf_symbol_t *sd; |
73 | elf_symbol_t *sd; |
73 | module_t *sm; |
74 | module_t *sm; |
74 | 75 | ||
75 | printf("dlsym(0x%lx, \"%s\")\n", (long)mod, sym_name); |
76 | printf("dlsym(0x%lx, \"%s\")\n", (long)mod, sym_name); |
76 | sd = symbol_def_find(sym_name, (module_t *) mod, &sm); |
77 | sd = symbol_bfs_find(sym_name, (module_t *) mod, &sm); |
77 | if (sd != NULL) { |
78 | if (sd != NULL) { |
78 | return symbol_get_addr(sd, sm); |
79 | return symbol_get_addr(sd, sm); |
79 | } |
80 | } |
80 | 81 | ||
81 | return NULL; |
82 | return NULL; |