Selaa lähdekoodia

when resolving symbols with only weak defs, use first def, not last def

Rich Felker 13 vuotta sitten
vanhempi
sitoutus
e01ac67599
1 muutettua tiedostoa jossa 1 lisäystä ja 0 poistoa
  1. 1 0
      src/ldso/dynlink.c

+ 1 - 0
src/ldso/dynlink.c

@@ -107,6 +107,7 @@ static void *find_sym(struct dso *dso, const char *s, int need_def)
 		if (sym && (!need_def || sym->st_shndx) && sym->st_value
 		 && (1<<(sym->st_info&0xf) & OK_TYPES)
 		 && (1<<(sym->st_info>>4) & OK_BINDS)) {
+			if (def && sym->st_info>>4 == STB_WEAK) continue;
 			def = dso->base + sym->st_value;
 			if (sym->st_info>>4 == STB_GLOBAL) break;
 		}