support STB_GNU_UNIQUE symbol bindings in dynamic linker
authorRich Felker <dalias@aerifal.cx>
Wed, 24 Jul 2013 15:53:23 +0000 (11:53 -0400)
committerRich Felker <dalias@aerifal.cx>
Wed, 24 Jul 2013 15:53:23 +0000 (11:53 -0400)
these are needed for some C++ library binaries including most builds
of libstdc++. I'm not entirely clear on the rationale. this patch does
not implement any special semantics for them, but as far as I can
tell, no special treatment is needed in correctly-linked programs;
this binding seems to exist only for catching incorrectly-linked
programs.

src/ldso/dynlink.c

index 98a18bbaf88e8ce22f8059d6c854487190019e45..f4c32ffea52828b8095439c343bc92ab47d446eb 100644 (file)
@@ -190,7 +190,7 @@ 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)
+#define OK_BINDS (1<<STB_GLOBAL | 1<<STB_WEAK | 1<<STB_GNU_UNIQUE)
 
 static struct symdef find_sym(struct dso *dso, const char *s, int need_def)
 {