diff --git a/native_client_sdk/src/tools/create_nmf.py b/native_client_sdk/src/tools/create_nmf.py index dc821220b35c5..aa269dd0b34d2 100755 --- a/native_client_sdk/src/tools/create_nmf.py +++ b/native_client_sdk/src/tools/create_nmf.py @@ -528,6 +528,14 @@ def GetDefaultLibPath(config): 'ports/lib/glibc_x86_32/%s' % config, 'ports/lib/glibc_x86_64/%s' % config, ] + + bionic_dir = 'toolchain/%s_arm_bionic' % osname + if os.path.isdir(os.path.join(sdk_root, bionic_dir)): + libpath += [ + '%s/arm-nacl/lib' % bionic_dir, + '%s/arm-nacl/usr/lib' % bionic_dir, + 'lib/bionic_arm/%s' % config, + ] libpath = [os.path.normpath(p) for p in libpath] libpath = [os.path.join(sdk_root, p) for p in libpath] return libpath @@ -633,6 +641,8 @@ def main(argv): # Add default libraries paths to the end of the search path. config = options.debug_libs and 'Debug' or 'Release' options.lib_path += GetDefaultLibPath(config) + for path in options.lib_path: + Trace('libpath: %s' % path) pnacl_optlevel = None if options.pnacl_optlevel is not None: diff --git a/native_client_sdk/src/tools/lib/get_shared_deps.py b/native_client_sdk/src/tools/lib/get_shared_deps.py index 3287474080eb5..99a5884bdd26b 100644 --- a/native_client_sdk/src/tools/lib/get_shared_deps.py +++ b/native_client_sdk/src/tools/lib/get_shared_deps.py @@ -39,6 +39,7 @@ OBJDUMP_ARCH_MAP = { 'elf64-x86-64-nacl': 'x86-64', 'elf32-x86-64-nacl': 'x86-64', 'elf32-i386-nacl': 'x86-32', + 'elf32-littlearm-nacl': 'arm', } # The proper name of the dynamic linker, as kept in the IRT. This is @@ -201,6 +202,17 @@ def _FindLibsInPath(name, lib_path): A list of system paths that match the given name within the lib_path''' files = [] for dirname in lib_path: + # The libc.so files in the the glibc toolchain is actually a linker + # script which references libc.so.<SHA1>. This means the lib.so itself + # does not end up in the NEEDED section for glibc. However with bionic + # the SONAME is actually libc.so. If we pass glibc's libc.so to objdump + # if fails to parse it, os this filters out libc.so expept for within + # the bionic toolchain. + # TODO(noelallen): Remove this once the SONAME in bionic is made to be + # unique in the same it is under glibc: + # https://code.google.com/p/nativeclient/issues/detail?id=3833 + if name == 'libc.so' and 'bionic' not in dirname: + continue filename = os.path.join(dirname, name) if os.path.exists(filename): files.append(filename)