mklibs: properly fix library linking - the relinking in some instances used static libraries instead of shared ones with the same name, that led to some nasty symbol conflicts and pic issues. fix this by always using the full path to the libraries and also fix the libc vs libpthread linking order

SVN-Revision: 25793
v19.07.3_mercusys_ac12_duma
Felix Fietkau 13 years ago
parent d8e217c28f
commit 04e3dae4ad

@ -1,30 +1,38 @@
--- a/src/mklibs.py
+++ b/src/mklibs.py
@@ -560,6 +560,7 @@ while 1:
@@ -112,11 +112,8 @@ def library_depends_gcc_libnames(obj, so
ret = []
for i in libs:
match = re.match("^(((?P<ld>ld\S*)|(lib(?P<lib>\S+))))\.so.*$", i)
- if match and not soname in ("libpthread.so.0"):
- if match.group('ld'):
- ret.append(find_lib(match.group(0)))
- elif match.group('lib'):
- ret.append('-l%s' % match.group('lib'))
+ if match:
+ ret.append(find_lib(match.group(0)))
return ' '.join(ret)
class Symbol(object):
@@ -560,6 +557,7 @@ while 1:
extra_flags = []
extra_pre_obj = []
extra_post_obj = []
+ libgcc_link = "-lgcc"
+ libgcc_link = find_lib("libgcc_s.so.1")
symbols.update(library_symbols_used[library])
@@ -575,6 +576,10 @@ while 1:
symbols.add(ProvidedSymbol('__uClibc_init', None, None, True))
symbols.add(ProvidedSymbol('__uClibc_fini', None, None, True))
extra_flags.append("-Wl,-init,__uClibc_init")
+ libgcc_link = "-lgcc_s_pic"
+
+ if soname in ("libm.so.0"):
+ libgcc_link = "-lgcc_s_pic"
map_file = find_pic_map(library)
if map_file:
@@ -590,7 +595,7 @@ while 1:
@@ -590,9 +588,11 @@ while 1:
cmd.append(pic_file)
cmd.extend(extra_post_obj)
cmd.extend(extra_flags)
- cmd.append("-lgcc")
+ cmd.append(libgcc_link)
cmd.extend(["-L%s" % a for a in [dest_path] + [sysroot + b for b in lib_path if sysroot == "" or b not in ("/" + libdir + "/", "/usr/" + libdir + "/")]])
cmd.append(library_depends_gcc_libnames(so_file, soname))
- cmd.append(library_depends_gcc_libnames(so_file, soname))
+ if soname != "libgcc_s.so.1" and soname != "libc.so.0":
+ cmd.append(library_depends_gcc_libnames(so_file, soname))
+ if soname != "libgcc_s.so.1":
+ cmd.append(libgcc_link)
command(target + "gcc", *cmd)
## DEBUG

Loading…
Cancel
Save