mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-12-24 05:42:59 +02:00
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
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@25793 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
19e5102c20
commit
f49117a33b
@ -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…
Reference in New Issue
Block a user