Skip to content
Snippets Groups Projects
Commit 04e3dae4 authored by Felix Fietkau's avatar Felix Fietkau
Browse files

mklibs: properly fix library linking - the relinking in some instances used...

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
parent d8e217c2
No related branches found
No related tags found
No related merge requests found
--- 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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment