OSDN Git Service

Handle STT_COMMON symbols too. Following binutils release
authorJoakim Tjernlund <joakim.tjernlund@transmode.se>
Sun, 21 Oct 2007 15:36:17 +0000 (15:36 -0000)
committerJoakim Tjernlund <joakim.tjernlund@transmode.se>
Sun, 21 Oct 2007 15:36:17 +0000 (15:36 -0000)
will set the type of common symbols to STT_COMMON
instead of STT_OBJECTS, so the dynamic linker needs
to handle this type os symbols too.
Same changes have been added to glibc (See: bugzilla #5104).
This patch ensures the uclibc will work with later bintuils.

Signed-off-by: Carmelo Amoroso <carmelo.amoroso@st.com>
ldso/ldso/dl-hash.c

index c19afb4..2d5ecdd 100644 (file)
@@ -177,7 +177,12 @@ char *_dl_find_hash(const char *name, struct dyn_elf *rpnt, struct elf_resolve *
                                continue;
                        if (sym->st_value == 0)
                                continue;
-                       if (ELF_ST_TYPE(sym->st_info) > STT_FUNC)
+                       if (ELF_ST_TYPE(sym->st_info) > STT_FUNC
+                       && ELF_ST_TYPE(sym->st_info) != STT_COMMON)
+                       /* Ignore all but STT_NOTYPE, STT_OBJECT, STT_FUNC
+                        * and STT_COMMON entries since these are no
+                        * code/data definitions
+                        */
                                continue;
                        if (_dl_strcmp(strtab + sym->st_name, name) != 0)
                                continue;