summaryrefslogtreecommitdiff
path: root/mld/symtab.c
diff options
context:
space:
mode:
Diffstat (limited to 'mld/symtab.c')
-rw-r--r--mld/symtab.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/mld/symtab.c b/mld/symtab.c
index 992802c..9417673 100644
--- a/mld/symtab.c
+++ b/mld/symtab.c
@@ -50,11 +50,12 @@ int symtab_push(struct symbol_table *symtab, const Elf32_Sym *sym)
int symtab_get(struct symbol_table *symtab, Elf32_Sym **res, const char *name,
int32_t obj_idx)
{
- for (size_t i = 0; i < symtab->len; i++) {
+ for (size_t i = 1; i < symtab->len; i++) {
Elf32_Sym *sym = &symtab->syms[i];
const char *symname = symtab->strtab->data + B32(sym->st_name);
if (strcmp(name, symname) != 0)
continue;
+
// only allow retrevial of local variables from the
// same object
if (sym->st_info >> 4 != STB_GLOBAL && symtab->map != NULL &&