diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/ldso/dynlink.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/ldso/dynlink.c b/src/ldso/dynlink.c index a08300de..55124ff8 100644 --- a/src/ldso/dynlink.c +++ b/src/ldso/dynlink.c @@ -233,6 +233,10 @@ static Sym *gnu_lookup(const char *s, uint32_t h1, struct dso *dso) #define OK_TYPES (1<<STT_NOTYPE | 1<<STT_OBJECT | 1<<STT_FUNC | 1<<STT_COMMON | 1<<STT_TLS) #define OK_BINDS (1<<STB_GLOBAL | 1<<STB_WEAK | 1<<STB_GNU_UNIQUE) +#ifndef ARCH_SYM_REJECT_UND +#define ARCH_SYM_REJECT_UND(s) 0 +#endif + static struct symdef find_sym(struct dso *dso, const char *s, int need_def) { uint32_t h = 0, gh = 0; @@ -249,7 +253,8 @@ static struct symdef find_sym(struct dso *dso, const char *s, int need_def) } if (!sym) continue; if (!sym->st_shndx) - if (need_def || (sym->st_info&0xf) == STT_TLS) + if (need_def || (sym->st_info&0xf) == STT_TLS + || ARCH_SYM_REJECT_UND(sym)) continue; if (!sym->st_value) if ((sym->st_info&0xf) != STT_TLS) |