aboutsummaryrefslogtreecommitdiff
path: root/tccelf.c
diff options
context:
space:
mode:
authorDetlef Riekenberg <wine.dev@web.de>2010-01-26 22:55:14 +0100
committerDetlef Riekenberg <tcc.dev@web.de>2010-01-26 22:55:14 +0100
commit2650584ac4fd71ae4ed2b4e3da755b890ba0637c (patch)
tree4e9b65389565d23b3899d46883659962957a0bd9 /tccelf.c
parent5caf6235cf767682ed1212b3dff44bd59a257cef (diff)
downloadtinycc-2650584ac4fd71ae4ed2b4e3da755b890ba0637c.tar.gz
tinycc-2650584ac4fd71ae4ed2b4e3da755b890ba0637c.tar.bz2
Recognize -Wl,-Bsymbolic
Without -Bsymbolic, a symbol/function in a *.so can be overridden by a symbol/function in the main module. That is the default search order, but not supported by tcc. With -Bsymbolic, the linker tries to resolve a symbol/function in the current module first. The loader in tcc implements this search order. We do not distinguish -Bsymbolic and -Bsymbolic-function -- By by ... Detlef
Diffstat (limited to 'tccelf.c')
-rw-r--r--tccelf.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/tccelf.c b/tccelf.c
index a5385b1..2d884d2 100644
--- a/tccelf.c
+++ b/tccelf.c
@@ -1575,6 +1575,10 @@ static int elf_output_file(TCCState *s1, const char *filename)
put_dt(dynamic, DT_SONAME, put_elf_str(dynstr, s1->soname));
put_dt(dynamic, DT_TEXTREL, 0);
}
+
+ if (s1->symbolic)
+ put_dt(dynamic, DT_SYMBOLIC, 0);
+
/* add necessary space for other entries */
saved_dynamic_data_offset = dynamic->data_offset;
dynamic->data_offset += sizeof(ElfW(Dyn)) * EXTRA_RELITEMS;