aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoe Soroka <gits@joesoroka.com>2011-03-07 12:18:54 -0800
committerJoe Soroka <gits@joesoroka.com>2011-03-07 12:18:54 -0800
commit585027aa96360e05907669c14a0fddbf8a9de86a (patch)
treeed8f8891a6343fb85d760042dea838bb9c8bdb2c
parente23194a1fa2ca176c9151964a2e035f36736e650 (diff)
downloadtinycc-585027aa96360e05907669c14a0fddbf8a9de86a.tar.gz
tinycc-585027aa96360e05907669c14a0fddbf8a9de86a.tar.bz2
tccelf: allow multiply defined weak symbols
-rw-r--r--tccelf.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/tccelf.c b/tccelf.c
index a479a98..b8fa5ba 100644
--- a/tccelf.c
+++ b/tccelf.c
@@ -241,6 +241,8 @@ ST_FUNC int add_elf_sym(Section *s, uplong value, unsigned long size,
goto do_patch;
} else if (sym_bind == STB_WEAK && esym_bind == STB_GLOBAL) {
/* weak is ignored if already global */
+ } else if (sym_bind == STB_WEAK && esym_bind == STB_WEAK) {
+ /* keep first-found weak definition, ignore subsequents */
} else if (sym_vis == STV_HIDDEN || sym_vis == STV_INTERNAL) {
/* ignore hidden symbols after */
} else if (esym->st_shndx == SHN_COMMON