Rev 3690 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3690 | Rev 3772 | ||
---|---|---|---|
Line 210... | Line 210... | ||
210 | *mod = origin; |
210 | *mod = origin; |
211 | return s; |
211 | return s; |
212 | } |
212 | } |
213 | } |
213 | } |
214 | 214 | ||
- | 215 | /* Not DT_SYMBOLIC or no match. Now try other locations. */ |
|
- | 216 | ||
- | 217 | if (runtime_env->program) { |
|
215 | /* Otherwise start in the executable program */ |
218 | /* Program is dynamic -- start with program as root. */ |
216 | return symbol_bfs_find(name, runtime_env->program, mod); |
219 | return symbol_bfs_find(name, runtime_env->program, mod); |
- | 220 | } else { |
|
- | 221 | /* Program is static -- start with @a origin as root. */ |
|
- | 222 | return symbol_bfs_find(name, origin, mod); |
|
- | 223 | } |
|
217 | } |
224 | } |
218 | 225 | ||
219 | uintptr_t symbol_get_addr(elf_symbol_t *sym, module_t *m) |
226 | uintptr_t symbol_get_addr(elf_symbol_t *sym, module_t *m) |
220 | { |
227 | { |
221 | if (sym->st_shndx == SHN_ABS) { |
228 | if (sym->st_shndx == SHN_ABS) { |