when resolving symbols with only weak defs, use first def, not last def
This commit is contained in:
parent
dd92a09eca
commit
e01ac67599
1 changed files with 1 additions and 0 deletions
|
|
@ -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
|
if (sym && (!need_def || sym->st_shndx) && sym->st_value
|
||||||
&& (1<<(sym->st_info&0xf) & OK_TYPES)
|
&& (1<<(sym->st_info&0xf) & OK_TYPES)
|
||||||
&& (1<<(sym->st_info>>4) & OK_BINDS)) {
|
&& (1<<(sym->st_info>>4) & OK_BINDS)) {
|
||||||
|
if (def && sym->st_info>>4 == STB_WEAK) continue;
|
||||||
def = dso->base + sym->st_value;
|
def = dso->base + sym->st_value;
|
||||||
if (sym->st_info>>4 == STB_GLOBAL) break;
|
if (sym->st_info>>4 == STB_GLOBAL) break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue