aboutsummaryrefslogtreecommitdiff
path: root/libtcc.c
diff options
context:
space:
mode:
authorManuel Simoni <msimoni@gmail.com>2010-02-27 17:37:59 +0100
committerManuel Simoni <msimoni@gmail.com>2010-02-27 17:37:59 +0100
commit95b9a477b6743004e0e9bf728b25bf63d2908777 (patch)
treed5406d5ac0054dda4ddb5494ae58103f3d5c0930 /libtcc.c
parentd63ec6f20dc7e29e266589458ea90fb56f8c86ea (diff)
downloadtinycc-95b9a477b6743004e0e9bf728b25bf63d2908777.tar.gz
tinycc-95b9a477b6743004e0e9bf728b25bf63d2908777.tar.bz2
weak function symbols
Diffstat (limited to 'libtcc.c')
-rw-r--r--libtcc.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/libtcc.c b/libtcc.c
index bea52de..feb30bc 100644
--- a/libtcc.c
+++ b/libtcc.c
@@ -424,8 +424,12 @@ ST_FUNC void put_extern_sym2(Sym *sym, Section *section,
if (sym->type.t & VT_STATIC)
sym_bind = STB_LOCAL;
- else
- sym_bind = STB_GLOBAL;
+ else {
+ if (FUNC_WEAK(sym->type.ref->r))
+ sym_bind = STB_WEAK;
+ else
+ sym_bind = STB_GLOBAL;
+ }
if (!sym->c) {
name = get_tok_str(sym->v, NULL);