diff --git a/tools/mklibs/patches/009-uclibc_libgcc_link.patch b/tools/mklibs/patches/009-uclibc_libgcc_link.patch index d5e94068d38..d201821fc6b 100644 --- a/tools/mklibs/patches/009-uclibc_libgcc_link.patch +++ b/tools/mklibs/patches/009-uclibc_libgcc_link.patch @@ -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("^(((?Pld\S*)|(lib(?P\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