ldso: correct condition for local symbol handling in do_relocs
[oweals/musl.git] / ldso / dynlink.c
index edd91acde257f6b185d35e28855b903d6cd50098..b9b2e96c89e6ff027bc9fbb0d5efd9acb01be3f5 100644 (file)
@@ -363,7 +363,7 @@ static void do_relocs(struct dso *dso, size_t *rel, size_t rel_size, size_t stri
                        sym = syms + sym_index;
                        name = strings + sym->st_name;
                        ctx = type==REL_COPY ? head->syms_next : head;
-                       def = (sym->st_info&0xf) == STT_SECTION
+                       def = (sym->st_info>>4) == STB_LOCAL
                                ? (struct symdef){ .dso = dso, .sym = sym }
                                : find_sym(ctx, name, type==REL_PLT);
                        if (!def.sym && (sym->st_shndx != SHN_UNDEF