diff options
| -rw-r--r-- | tools/mklibs/patches/009-uclibc_libgcc_link.patch | 40 | 
1 files changed, 24 insertions, 16 deletions
| diff --git a/tools/mklibs/patches/009-uclibc_libgcc_link.patch b/tools/mklibs/patches/009-uclibc_libgcc_link.patch index d5e94068d..d201821fc 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("^(((?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 | 
