From f757dbcb504647d7b133860c5b2de8cd2cb41590 Mon Sep 17 00:00:00 2001 From: Logan Chien Date: Thu, 20 Jul 2017 17:37:22 +0800 Subject: vndk-def: Fix unittests with rpath This commit adds -Wl,--disable-new-dtags to the unit tests that expect DT_RPATH entries. The latest toolchain defaults to --enable-new-dtags now, thus we have to specify -Wl,--disable-new-dtags explicitly. Bug: 64503245 Test: ./tests/test_elfdump.py Change-Id: Idc78f183d3ac124f3def5d97b72fcf494a139e5f Merged-In: I64c1210a8f04415b0b836db480463c172bcf0d71 (cherry picked from commit 24ffa6a58e408f9ae517fac40129b0a8815bacac) --- vndk/tools/definition-tool/tests/test_elfdump.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/vndk/tools/definition-tool/tests/test_elfdump.py b/vndk/tools/definition-tool/tests/test_elfdump.py index b9e9626e5..75fe396a0 100755 --- a/vndk/tools/definition-tool/tests/test_elfdump.py +++ b/vndk/tools/definition-tool/tests/test_elfdump.py @@ -75,12 +75,14 @@ class ELFDumpTest(unittest.TestCase): # Link libtest-rpath.so. out_file = os.path.join(cls.test_dir, 'libtest-rpath.so') target.link(out_file, [obj_file], - ['-shared', '-lc', '-Wl,-rpath,$ORIGIN/../lib']) + ['-shared', '-lc', '-Wl,-rpath,$ORIGIN/../lib', + '-Wl,--disable-new-dtags']) # Link libtest-rpath-multi.so. out_file = os.path.join(cls.test_dir, 'libtest-rpath-multi.so') target.link(out_file, [obj_file], - ['-shared', '-lc', '-Wl,-rpath,/system/lib:/vendor/lib']) + ['-shared', '-lc', '-Wl,-rpath,/system/lib:/vendor/lib', + '-Wl,--disable-new-dtags']) # Link libtest-runpath.so. out_file = os.path.join(cls.test_dir, 'libtest-runpath.so') -- cgit v1.2.3 From 8f707d70254e1e84a9c849b60b516b5286048090 Mon Sep 17 00:00:00 2001 From: Logan Chien Date: Thu, 20 Jul 2017 18:07:45 +0800 Subject: vndk-def: Refactor ModuleInfo class This commit refactors ModuleInfo class to speed up the source directory lookup. Besides, the commit also moves ModuleInfo upward so that it can be used by other commands in the upcoming commits. Bug: 64503245 Test: ./tests/test_module_info.py Test: vndk and check-dep on multiple devices and get the same output. Change-Id: I4253205f63798a4cf4ef3b8cd08ec65711381337 Merged-In: I6e7a59773a35d62bde6454cc3052f76224c1fe21 (cherry picked from commit 5a6ff39a806807b197353f4713d0a612d7d3e43b) --- .../definition-tool/tests/test_module_info.py | 7 +-- vndk/tools/definition-tool/vndk_definition_tool.py | 59 +++++++++++++++------- 2 files changed, 44 insertions(+), 22 deletions(-) diff --git a/vndk/tools/definition-tool/tests/test_module_info.py b/vndk/tools/definition-tool/tests/test_module_info.py index ba9f6189d..2da17b40d 100755 --- a/vndk/tools/definition-tool/tests/test_module_info.py +++ b/vndk/tools/definition-tool/tests/test_module_info.py @@ -15,12 +15,13 @@ SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) class ModuleInfoTest(unittest.TestCase): def test_default(self): - m = ModuleInfo() + m = ModuleInfo.load_from_path_or_default(None) self.assertEqual([], m.get_module_path('/system/lib64/libA.so')) def test_get_module_path(self): - m = ModuleInfo(os.path.join(SCRIPT_DIR, 'testdata', 'test_module_info', - 'module-info.json')) + json_path = os.path.join(SCRIPT_DIR, 'testdata', 'test_module_info', + 'module-info.json') + m = ModuleInfo.load_from_path_or_default(json_path) self.assertEqual(['system/core/libA'], m.get_module_path('/system/lib64/libA.so')) diff --git a/vndk/tools/definition-tool/vndk_definition_tool.py b/vndk/tools/definition-tool/vndk_definition_tool.py index 083bb7cd9..f6193c7d8 100755 --- a/vndk/tools/definition-tool/vndk_definition_tool.py +++ b/vndk/tools/definition-tool/vndk_definition_tool.py @@ -1759,6 +1759,43 @@ class GenericRefs(object): return os.path.basename(lib.path) in self._lib_names +#------------------------------------------------------------------------------ +# Module Info +#------------------------------------------------------------------------------ + +class ModuleInfo(object): + def __init__(self, json=None): + if not json: + self._mods = dict() + return + + mods = collections.defaultdict(set) + installed_path_patt = re.compile( + '.*[\\\\/]target[\\\\/]product[\\\\/][^\\\\/]+([\\\\/].*)$') + for name, module in json.items(): + for path in module['installed']: + match = installed_path_patt.match(path) + if match: + for path in module['path']: + mods[match.group(1)].add(path) + self._mods = { installed_path: sorted(src_dirs) + for installed_path, src_dirs in mods.items() } + + def get_module_path(self, installed_path): + return self._mods.get(installed_path, []) + + @staticmethod + def load(f): + return ModuleInfo(json.load(f)) + + @staticmethod + def load_from_path_or_default(path): + if not path: + return ModuleInfo() + with open(path, 'r') as f: + return ModuleInfo.load(f) + + #------------------------------------------------------------------------------ # Commands #------------------------------------------------------------------------------ @@ -2275,22 +2312,6 @@ class DepsClosureCommand(ELFGraphCommand): return 0 -class ModuleInfo(object): - def __init__(self, module_info_path=None): - if not module_info_path: - self.json = dict() - else: - with open(module_info_path, 'r') as f: - self.json = json.load(f) - - def get_module_path(self, installed_path): - for name, module in self.json.items(): - if any(path.endswith(installed_path) - for path in module['installed']): - return module['path'] - return [] - - class CheckDepCommandBase(ELFGraphCommand): def add_argparser_options(self, parser): super(CheckDepCommandBase, self).add_argparser_options(parser) @@ -2302,7 +2323,7 @@ class CheckDepCommandBase(ELFGraphCommand): @staticmethod def _dump_dep(lib, bad_deps, module_info): print(lib.path) - for module_path in sorted(module_info.get_module_path(lib.path)): + for module_path in module_info.get_module_path(lib.path): print('\tMODULE_PATH:', module_path) for dep in sorted(bad_deps): print('\t' + dep.path) @@ -2359,7 +2380,7 @@ class CheckDepCommand(CheckDepCommandBase): tagged_paths = TaggedPathDict.create_from_csv_path(args.tag_file) tagged_libs = TaggedLibDict.create_from_graph(graph, tagged_paths) - module_info = ModuleInfo(args.module_info) + module_info = ModuleInfo.load_from_path_or_default(args.module_info) num_errors = self._check_vendor_dep(graph, tagged_libs, module_info) @@ -2417,7 +2438,7 @@ class CheckEligibleListCommand(CheckDepCommandBase): tagged_paths = TaggedPathDict.create_from_csv_path(args.tag_file) tagged_libs = TaggedLibDict.create_from_graph(graph, tagged_paths) - module_info = ModuleInfo(args.module_info) + module_info = ModuleInfo.load_from_path_or_default(args.module_info) num_errors = self._check_eligible_vndk_dep(graph, tagged_libs, module_info) -- cgit v1.2.3 From cdbed5fb018ea119789e0c7f7f578c2b573bb578 Mon Sep 17 00:00:00 2001 From: Logan Chien Date: Thu, 20 Jul 2017 18:10:11 +0800 Subject: vndk-def: Print source directory in deps-insight With this commit, deps-insight will be able to print the module source directory if `--module-info` is specified. Bug: 62898574 Test: ./vndk_definition_tool.py deps-insight --module-info ... Change-Id: Ib4741071c759e37bed24aeee4c318b3269faa450 Merged-In: I0934d51912c69df8200aca7ea548395b9425f497 (cherry picked from commit 0ccb0bc0652f7e4c70139f68100d69b99bba194f) --- vndk/tools/definition-tool/assets/insight/insight-data.js | 15 +++++++++------ vndk/tools/definition-tool/assets/insight/insight.css | 6 ++++++ vndk/tools/definition-tool/assets/insight/insight.js | 10 +++++++++- vndk/tools/definition-tool/vndk_definition_tool.py | 11 ++++++++++- 4 files changed, 34 insertions(+), 8 deletions(-) diff --git a/vndk/tools/definition-tool/assets/insight/insight-data.js b/vndk/tools/definition-tool/assets/insight/insight-data.js index 9ef7a659c..65bec05bf 100644 --- a/vndk/tools/definition-tool/assets/insight/insight-data.js +++ b/vndk/tools/definition-tool/assets/insight/insight-data.js @@ -8,14 +8,17 @@ '/system/lib64/libdl.so', 'll-ndk', 'hl-ndk', + 'bionic/libc', + 'bionic/libm', + 'bionic/libdl', ]; var mods = [ - [0, 32, [6], [[1, 2]], []], - [1, 32, [6], [], [0]], - [2, 32, [6], [], [0]], - [3, 64, [6], [[5], [4]], []], - [4, 64, [7], [[5]], [3]], - [5, 64, [7], [], [3, 4]], + [0, 32, [6], [[1, 2]], [], [8]], + [1, 32, [6], [], [0], [9]], + [2, 32, [6], [], [0], [10]], + [3, 64, [6], [[5], [4]], [], [8]], + [4, 64, [7], [[5]], [3], [9]], + [5, 64, [7], [], [3, 4], [9, 10]], ]; insight.init(document, strs, mods); })(); diff --git a/vndk/tools/definition-tool/assets/insight/insight.css b/vndk/tools/definition-tool/assets/insight/insight.css index 7cff186d6..1c5f709e2 100644 --- a/vndk/tools/definition-tool/assets/insight/insight.css +++ b/vndk/tools/definition-tool/assets/insight/insight.css @@ -101,3 +101,9 @@ a:active { background-color: #fffff0; transition: background-color 800ms ease; } + +#module_tbody p.module_src_dir { + font-family: monospace; + font-size: 80%; + color: #aaaaaa; +} diff --git a/vndk/tools/definition-tool/assets/insight/insight.js b/vndk/tools/definition-tool/assets/insight/insight.js index 5e08207c9..cd199a8d0 100644 --- a/vndk/tools/definition-tool/assets/insight/insight.js +++ b/vndk/tools/definition-tool/assets/insight/insight.js @@ -62,6 +62,7 @@ this.tagIds = new Set(modData[2]); this.deps = modData[3]; this.users = modData[4]; + this.srcDirs = modData[5].map(function (x) { return strsData[x]; }); [this.numDirectDeps, this.numIndirectDeps] = countDeps(this.deps); this.numUsers = this.users.length; @@ -103,7 +104,14 @@ } Module.prototype.createModulePathTdDom = function (parent) { - parent.appendChild(domNewElem('td', this.createModuleLinkDom(this))); + let domTd = domNewElem('td'); + domTd.appendChild(domNewElem('p', this.createModuleLinkDom(this))); + for (let dir of this.srcDirs) { + let domP = domNewElem('p', 'source: ' + dir); + domP.setAttribute('class', 'module_src_dir'); + domTd.appendChild(domP); + } + parent.appendChild(domTd); } Module.prototype.createTagsTdDom = function (parent) { diff --git a/vndk/tools/definition-tool/vndk_definition_tool.py b/vndk/tools/definition-tool/vndk_definition_tool.py index f6193c7d8..05dc20d64 100755 --- a/vndk/tools/definition-tool/vndk_definition_tool.py +++ b/vndk/tools/definition-tool/vndk_definition_tool.py @@ -2103,12 +2103,16 @@ class DepsInsightCommand(VNDKCommandBase): def add_argparser_options(self, parser): super(DepsInsightCommand, self).add_argparser_options(parser) + parser.add_argument('--module-info') + parser.add_argument( '--output', '-o', help='output directory') def main(self, args): generic_refs, graph, tagged_paths = self.create_from_args(args) + module_info = ModuleInfo.load_from_path_or_default(args.module_info) + # Compute vndk heuristics. vndk_lib = graph.compute_degenerated_vndk( generic_refs, tagged_paths, args.action_ineligible_vndk_sp, @@ -2157,6 +2161,10 @@ class DepsInsightCommand(VNDKCommandBase): return deps + def collect_source_dir_paths(lib): + return [get_str_idx(path) + for path in module_info.get_module_path(lib.path)] + def collect_tags(lib): tags = [] for field_name in _VNDK_RESULT_FIELD_NAMES: @@ -2170,7 +2178,8 @@ class DepsInsightCommand(VNDKCommandBase): 32 if lib.elf.is_32bit else 64, collect_tags(lib), collect_deps(lib), - collect_path_sorted_lib_idxs(lib.users)]) + collect_path_sorted_lib_idxs(lib.users), + collect_source_dir_paths(lib)]) # Generate output files. makedirs(args.output, exist_ok=True) -- cgit v1.2.3 From 88de96af6b54afab77c9ef60a6c951aa7c066ffb Mon Sep 17 00:00:00 2001 From: Logan Chien Date: Thu, 20 Jul 2017 18:20:59 +0800 Subject: vndk-def: Print source directory in deps command This commits make deps command to print module source directory when `--module-info` is specified. Bug: 62898574 Test: ./vndk_definition_tool.py deps --module-info ... Change-Id: Ie20af6f1d186f3f36bc034734b12159d7dd73476 Merged-In: I8804fb1d440603e1461b8a7032303e668b7688b3 (cherry picked from commit 1d4c7889e21966f73daec765ebd4248afbf4f73e) --- vndk/tools/definition-tool/vndk_definition_tool.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/vndk/tools/definition-tool/vndk_definition_tool.py b/vndk/tools/definition-tool/vndk_definition_tool.py index 05dc20d64..5767028fa 100755 --- a/vndk/tools/definition-tool/vndk_definition_tool.py +++ b/vndk/tools/definition-tool/vndk_definition_tool.py @@ -2218,9 +2218,13 @@ class DepsCommand(ELFGraphCommand): '--symbols', action='store_true', help='print symbols') + parser.add_argument('--module-info') + def main(self, args): generic_refs, graph = self.create_from_args(args) + module_info = ModuleInfo.load_from_path_or_default(args.module_info) + results = [] for partition in range(NUM_PARTITIONS): for name, lib in graph.lib_pt[partition].items(): @@ -2250,8 +2254,12 @@ class DepsCommand(ELFGraphCommand): else: for name, assoc_libs in results: print(name) + for module_path in module_info.get_module_path(name): + print('\tMODULE_PATH:', module_path) for assoc_lib, symbols in assoc_libs: print('\t' + assoc_lib) + for module_path in module_info.get_module_path(assoc_lib): + print('\t\tMODULE_PATH:', module_path) for symbol in symbols: print('\t\t' + symbol) return 0 -- cgit v1.2.3 From 8faa6591e3086f90fe7569f39867613286eba9b8 Mon Sep 17 00:00:00 2001 From: Logan Chien Date: Fri, 21 Jul 2017 13:28:43 +0800 Subject: vndk-def: Print dest source directory in check-dep This commit prints the source directory of the dependencies shown in the check-dep subcommand. Test: ./vndk-definition-tool.py check-dep --module-info ... and the MODULE_PATH shows up in the dependencies. Bug: 62898574 Change-Id: I4a16781943c2a1948a92a49234e4079d2539139b Merged-In: Ic22e6962831425dd19270f028f319245b8be5529 (cherry picked from commit 085d4f1f7d187edd7bca9f83977ec082b1b6d1c2) --- vndk/tools/definition-tool/vndk_definition_tool.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/vndk/tools/definition-tool/vndk_definition_tool.py b/vndk/tools/definition-tool/vndk_definition_tool.py index 5767028fa..a3938e740 100755 --- a/vndk/tools/definition-tool/vndk_definition_tool.py +++ b/vndk/tools/definition-tool/vndk_definition_tool.py @@ -2344,6 +2344,8 @@ class CheckDepCommandBase(ELFGraphCommand): print('\tMODULE_PATH:', module_path) for dep in sorted(bad_deps): print('\t' + dep.path) + for module_path in module_info.get_module_path(dep.path): + print('\t\tMODULE_PATH:', module_path) for symbol in lib.get_dep_linked_symbols(dep): print('\t\t' + symbol) -- cgit v1.2.3 From c9f718348e33a68c83f52b22ec68dccd96d55377 Mon Sep 17 00:00:00 2001 From: Logan Chien Date: Mon, 31 Jul 2017 17:39:33 +0800 Subject: vndk-def: Add libstagefright_omx and libmedia_omx Bug: 64503245 Test: Reduce two warnings on a device Change-Id: Ifbb0ab6568f732eb5ee095b1db30d57666759a31 Merged-In: Ifa6cabdcf865112f6e4fdbbc57020b6283d159bc (cherry picked from commit 3311419933f54ae1e09372cf23f47bbed09a9445) --- vndk/tools/definition-tool/datasets/eligible-list-o-release.csv | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/vndk/tools/definition-tool/datasets/eligible-list-o-release.csv b/vndk/tools/definition-tool/datasets/eligible-list-o-release.csv index 55e3ed899..814f02f0f 100644 --- a/vndk/tools/definition-tool/datasets/eligible-list-o-release.csv +++ b/vndk/tools/definition-tool/datasets/eligible-list-o-release.csv @@ -246,6 +246,7 @@ Path,Tag,v3.7 /system/${LIB}/libmedia_helper.so,VNDK, /system/${LIB}/libmedia_jni.so,FWK-ONLY, /system/${LIB}/libmedia.so,FWK-ONLY, +/system/${LIB}/libmedia_omx.so,VNDK, /system/${LIB}/libmediadrm.so,FWK-ONLY, /system/${LIB}/libmediaextractorservice.so,FWK-ONLY, /system/${LIB}/libmedialogservice.so,FWK-ONLY, @@ -338,7 +339,7 @@ Path,Tag,v3.7 /system/${LIB}/libstagefright_enc_common.so,FWK-ONLY, /system/${LIB}/libstagefright_foundation.so,VNDK, /system/${LIB}/libstagefright_http_support.so,FWK-ONLY, -/system/${LIB}/libstagefright_omx.so,FWK-ONLY, +/system/${LIB}/libstagefright_omx.so,VNDK, /system/${LIB}/libstagefright_soft_aacdec.so,FWK-ONLY, /system/${LIB}/libstagefright_soft_aacenc.so,FWK-ONLY, /system/${LIB}/libstagefright_soft_amrdec.so,FWK-ONLY, -- cgit v1.2.3 From 9cd97b2b97d9c5cee9c145882f2dc5581d0bfa74 Mon Sep 17 00:00:00 2001 From: Logan Chien Date: Tue, 1 Aug 2017 18:10:58 +0800 Subject: vndk-def: Fix test_elfdump.py Before this commit, test_elfdump.py was broken because prebuilt libs were removed from the "prebuilts" directory. This commit searches the NDK toolchain specified by "NDK" environment variable. Bug: 64503245 Test: ./tests/test_elfdump.py Change-Id: Iee3076350c5d9a549deb4c08ac64453ef9dcd981 Merged-In: I368d5ce2fa208dd00608fe0793995144ca0c9856 (cherry picked from commit 3f9d07e2ce2fd869dbb8a5579d2fa4511563347d) --- vndk/tools/definition-tool/tests/ndk_toolchain.py | 202 ++++++++++++++++++++++ vndk/tools/definition-tool/tests/targets.py | 121 ------------- vndk/tools/definition-tool/tests/test_elfdump.py | 4 +- 3 files changed, 204 insertions(+), 123 deletions(-) create mode 100755 vndk/tools/definition-tool/tests/ndk_toolchain.py delete mode 100644 vndk/tools/definition-tool/tests/targets.py diff --git a/vndk/tools/definition-tool/tests/ndk_toolchain.py b/vndk/tools/definition-tool/tests/ndk_toolchain.py new file mode 100755 index 000000000..8ad9144ce --- /dev/null +++ b/vndk/tools/definition-tool/tests/ndk_toolchain.py @@ -0,0 +1,202 @@ +#!/usr/bin/env python + +from __future__ import print_function + +import argparse +import collections +import os +import re +import subprocess +import sys + +def detect_ndk_dir(): + ndk_dir = os.getenv('NDK') + if not ndk_dir: + error_msg = '''error: NDK toolchain is required for this test case. +error: +error: Steps: +error: 1. Download NDK from https://developer.android.com/ndk/downloads/ +error: 2. Unzip the archive (android-ndk-r15c-linux-x86_64.zip) +error: 3. Set environment variable NDK to the extracted directory +error: (export NDK=android-ndk-r15c) +error:''' + print(error_msg, file=sys.stderr) + raise ValueError('NDK toolchain not specified') + + if not os.path.exists(ndk_dir): + raise ValueError('NDK toolchain not found') + + return ndk_dir + +def detect_api_level(ndk_dir): + try: + apis = [] + pattern = re.compile('android-(\\d+)') + for name in os.listdir(os.path.join(ndk_dir, 'platforms')): + match = pattern.match(name) + if match: + apis.append(int(match.group(1))) + if not apis: + raise ValueError('failed to find latest api') + return 'android-{}'.format(max(apis)) + except IOError: + raise ValueError('failed to find latest api') + +def detect_host(): + if sys.platform.startswith('linux'): + return 'linux-x86_64' + if sys.platform.startswith('darwin'): + return 'darwin-x86_64' + raise NotImplementedError('unknown host platform') + +def get_gcc_dir(ndk_dir, arch, host): + return os.path.join(ndk_dir, 'toolchains', arch, 'prebuilt', host) + +def get_clang_dir(ndk_dir, host): + return os.path.join(ndk_dir, 'toolchains', 'llvm', 'prebuilt', host) + +def get_platform_dir(ndk_dir, api, subdirs): + return os.path.join(ndk_dir, 'platforms', api, *subdirs) + +class Target(object): + def __init__(self, name, triple, cflags, ldflags, gcc_toolchain_dir, + clang_dir, ndk_include, ndk_lib): + self.name = name + self.target_triple = triple + self.target_cflags = cflags + self.target_ldflags = ldflags + + self.gcc_toolchain_dir = gcc_toolchain_dir + self.clang_dir = clang_dir + self.ndk_include = ndk_include + self.ndk_lib = ndk_lib + + def check_paths(self): + def check_path(path): + if os.path.exists(path): + return True + print('error: File not found:', path, file=sys.stderr) + return False + + ld_exeutable = os.path.join( + self.gcc_toolchain_dir, 'bin', self.target_triple + '-ld') + + success = check_path(self.gcc_toolchain_dir) + success &= check_path(ld_exeutable) + success &= check_path(self.clang_dir) + success &= check_path(self.ndk_include) + success &= check_path(self.ndk_lib) + return success + + def compile(self, obj_file, src_file, cflags): + clang = os.path.join(self.clang_dir, 'bin', 'clang') + + cmd = [clang, '-o', obj_file, '-c', src_file] + cmd.extend(['-fPIE', '-fPIC']) + cmd.extend(['-gcc-toolchain', self.gcc_toolchain_dir]) + cmd.extend(['-target', self.target_triple]) + cmd.extend(['-isystem', self.ndk_include]) + cmd.extend(cflags) + cmd.extend(self.target_cflags) + subprocess.check_call(cmd) + + def link(self, out_file, obj_files, ldflags): + if '-shared' in ldflags: + crtbegin = os.path.join(self.ndk_lib, 'crtbegin_so.o') + crtend = os.path.join(self.ndk_lib, 'crtend_so.o') + else: + crtbegin = os.path.join(self.ndk_lib, 'crtbegin_static.o') + crtend = os.path.join(self.ndk_lib, 'crtend_android.o') + + clang = os.path.join(self.clang_dir, 'bin', 'clang') + + cmd = [clang, '-o', out_file] + cmd.extend(['-fPIE', '-fPIC', '-Wl,--no-undefined', '-nostdlib']) + cmd.append('-L' + self.ndk_lib) + cmd.extend(['-gcc-toolchain', self.gcc_toolchain_dir]) + cmd.extend(['-target', self.target_triple]) + cmd.append(crtbegin) + cmd.extend(obj_files) + cmd.append(crtend) + cmd.extend(ldflags) + cmd.extend(self.target_ldflags) + if '-shared' not in ldflags: + cmd.append('-Wl,-pie') + subprocess.check_call(cmd) + +def create_targets(ndk_dir=None, api=None, host=None): + if ndk_dir is None: + ndk_dir = detect_ndk_dir() + if api is None: + api = detect_api_level(ndk_dir) + if host is None: + host = detect_host() + + targets = collections.OrderedDict() + + targets['arm'] = Target( + 'arm', 'arm-linux-androideabi', [],[], + get_gcc_dir(ndk_dir, 'arm-linux-androideabi-4.9', host), + get_clang_dir(ndk_dir, host), + get_platform_dir(ndk_dir, api, ['arch-arm', 'usr', 'include']), + get_platform_dir(ndk_dir, api, ['arch-arm', 'usr', 'lib'])) + + targets['arm64'] = Target( + 'arm64', 'aarch64-linux-android', [], [], + get_gcc_dir(ndk_dir, 'aarch64-linux-android-4.9', host), + get_clang_dir(ndk_dir, host), + get_platform_dir(ndk_dir, api, ['arch-arm64', 'usr', 'include']), + get_platform_dir(ndk_dir, api, ['arch-arm64', 'usr', 'lib'])) + + targets['x86'] = Target( + 'x86', 'i686-linux-android', ['-m32'], ['-m32'], + get_gcc_dir(ndk_dir, 'x86-4.9', host), + get_clang_dir(ndk_dir, host), + get_platform_dir(ndk_dir, api, ['arch-x86', 'usr', 'include']), + get_platform_dir(ndk_dir, api, ['arch-x86', 'usr', 'lib'])) + + targets['x86_64'] = Target( + 'x86_64', 'x86_64-linux-android', ['-m64'], ['-m64'], + get_gcc_dir(ndk_dir, 'x86_64-4.9', host), + get_clang_dir(ndk_dir, host), + get_platform_dir(ndk_dir, api, ['arch-x86_64', 'usr', 'include']), + get_platform_dir(ndk_dir, api, ['arch-x86_64', 'usr', 'lib64'])) + + targets['mips'] = Target( + 'mips', 'mipsel-linux-android', [], [], + get_gcc_dir(ndk_dir, 'mipsel-linux-android-4.9', host), + get_clang_dir(ndk_dir, host), + get_platform_dir(ndk_dir, api, ['arch-mips', 'usr', 'include']), + get_platform_dir(ndk_dir, api, ['arch-mips', 'usr', 'lib'])) + + targets['mips64'] = Target( + 'mips64', 'mips64el-linux-android', + ['-march=mips64el', '-mcpu=mips64r6'], + ['-march=mips64el', '-mcpu=mips64r6'], + get_gcc_dir(ndk_dir, 'mips64el-linux-android-4.9', host), + get_clang_dir(ndk_dir, host), + get_platform_dir(ndk_dir, api, ['arch-mips64', 'usr', 'include']), + get_platform_dir(ndk_dir, api, ['arch-mips64', 'usr', 'lib64'])) + + return targets + +def main(): + parser = argparse.ArgumentParser( + description='Dry-run NDK toolchain detection') + parser.add_argument('--ndk-dir') + parser.add_argument('--api-level') + parser.add_argument('--host') + args = parser.parse_args() + + targets = create_targets(args.ndk_dir, args.api_level, args.host) + + success = True + for name, target in targets.items(): + success &= target.check_paths() + if not success: + sys.exit(1) + + print('succeed') + +if __name__ == '__main__': + main() diff --git a/vndk/tools/definition-tool/tests/targets.py b/vndk/tools/definition-tool/tests/targets.py deleted file mode 100644 index 2b2d2ac54..000000000 --- a/vndk/tools/definition-tool/tests/targets.py +++ /dev/null @@ -1,121 +0,0 @@ -#!/usr/bin/env python - -import os -import subprocess -import sys - -SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) -ANDROID_BUILD_TOP = os.path.abspath(os.path.join(SCRIPT_DIR, *(['..'] * 5))) - -NDK_VERSION = 'r11' -API_LEVEL = 'android-24' - -def get_prebuilts_host(): - if sys.platform.startswith('linux'): - return 'linux-x86' - if sys.platform.startswith('darwin'): - return 'darwin-x86' - raise NotImplementedError('unknown platform') - -def get_prebuilts_gcc(arch, gcc_version): - return os.path.join(ANDROID_BUILD_TOP, 'prebuilts', 'gcc', - get_prebuilts_host(), arch, gcc_version) - -def get_prebuilts_clang(): - return os.path.join(ANDROID_BUILD_TOP, 'prebuilts', 'clang', 'host', - get_prebuilts_host(), 'clang-stable') - -def get_prebuilts_ndk(subdirs): - return os.path.join(ANDROID_BUILD_TOP, 'prebuilts', 'ndk', NDK_VERSION, - 'platforms', API_LEVEL, *subdirs) - - -class Target(object): - def __init__(self, name, triple, cflags, ldflags, gcc_toolchain_dir, - clang_dir, ndk_include, ndk_lib): - self.name = name - self.target_triple = triple - self.target_cflags = cflags - self.target_ldflags = ldflags - - self.gcc_toolchain_dir = gcc_toolchain_dir - self.clang_dir = clang_dir - self.ndk_include = ndk_include - self.ndk_lib = ndk_lib - - def compile(self, obj_file, src_file, cflags): - clang = os.path.join(self.clang_dir, 'bin', 'clang') - - cmd = [clang, '-o', obj_file, '-c', src_file] - cmd.extend(['-fPIE', '-fPIC']) - cmd.extend(['-gcc-toolchain', self.gcc_toolchain_dir]) - cmd.extend(['-target', self.target_triple]) - cmd.extend(['-isystem', self.ndk_include]) - cmd.extend(cflags) - cmd.extend(self.target_cflags) - subprocess.check_call(cmd) - - def link(self, out_file, obj_files, ldflags): - if '-shared' in ldflags: - crtbegin = os.path.join(self.ndk_lib, 'crtbegin_so.o') - crtend = os.path.join(self.ndk_lib, 'crtend_so.o') - else: - crtbegin = os.path.join(self.ndk_lib, 'crtbegin_static.o') - crtend = os.path.join(self.ndk_lib, 'crtend_android.o') - - clang = os.path.join(self.clang_dir, 'bin', 'clang') - - cmd = [clang, '-o', out_file] - cmd.extend(['-fPIE', '-fPIC', '-Wl,--no-undefined', '-nostdlib']) - cmd.append('-L' + self.ndk_lib) - cmd.extend(['-gcc-toolchain', self.gcc_toolchain_dir]) - cmd.extend(['-target', self.target_triple]) - cmd.append(crtbegin) - cmd.extend(obj_files) - cmd.append(crtend) - cmd.extend(ldflags) - cmd.extend(self.target_ldflags) - if '-shared' not in ldflags: - cmd.append('-Wl,-pie') - subprocess.check_call(cmd) - -def create_targets(): - return { - 'arm': Target('arm', 'arm-linux-androideabi', [],[], - get_prebuilts_gcc('arm', 'arm-linux-androideabi-4.9'), - get_prebuilts_clang(), - get_prebuilts_ndk(['arch-arm', 'usr', 'include']), - get_prebuilts_ndk(['arch-arm', 'usr', 'lib'])), - - 'arm64': Target('arm64', 'aarch64-linux-android', [], [], - get_prebuilts_gcc('aarch64', 'aarch64-linux-android-4.9'), - get_prebuilts_clang(), - get_prebuilts_ndk(['arch-arm64', 'usr', 'include']), - get_prebuilts_ndk(['arch-arm64', 'usr', 'lib'])), - - 'x86': Target('x86', 'x86_64-linux-android', ['-m32'], ['-m32'], - get_prebuilts_gcc('x86', 'x86_64-linux-android-4.9'), - get_prebuilts_clang(), - get_prebuilts_ndk(['arch-x86', 'usr', 'include']), - get_prebuilts_ndk(['arch-x86', 'usr', 'lib'])), - - 'x86_64': Target('x86_64', 'x86_64-linux-android', ['-m64'], ['-m64'], - get_prebuilts_gcc('x86', 'x86_64-linux-android-4.9'), - get_prebuilts_clang(), - get_prebuilts_ndk(['arch-x86_64', 'usr', 'include']), - get_prebuilts_ndk(['arch-x86_64', 'usr', 'lib64'])), - - 'mips': Target('mips', 'mipsel-linux-android', [], [], - get_prebuilts_gcc('mips', 'mips64el-linux-android-4.9'), - get_prebuilts_clang(), - get_prebuilts_ndk(['arch-mips', 'usr', 'include']), - get_prebuilts_ndk(['arch-mips', 'usr', 'lib'])), - - 'mips64': Target('mips64', 'mips64el-linux-android', - ['-march=mips64el', '-mcpu=mips64r6'], - ['-march=mips64el', '-mcpu=mips64r6'], - get_prebuilts_gcc('mips', 'mips64el-linux-android-4.9'), - get_prebuilts_clang(), - get_prebuilts_ndk(['arch-mips64', 'usr', 'include']), - get_prebuilts_ndk(['arch-mips64', 'usr', 'lib64'])), - } diff --git a/vndk/tools/definition-tool/tests/test_elfdump.py b/vndk/tools/definition-tool/tests/test_elfdump.py index 75fe396a0..b8e3c1ef8 100755 --- a/vndk/tools/definition-tool/tests/test_elfdump.py +++ b/vndk/tools/definition-tool/tests/test_elfdump.py @@ -11,7 +11,7 @@ import sys import unittest from compat import TemporaryDirectory, makedirs -import targets +import ndk_toolchain SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) @@ -30,7 +30,7 @@ def run_elf_dump(path): class ELFDumpTest(unittest.TestCase): @classmethod def setUpClass(cls): - cls.targets = targets.create_targets() + cls.targets = ndk_toolchain.create_targets() if test_dir_base: cls.test_dir_base = test_dir_base -- cgit v1.2.3 From aa2e8c342c630e18e9b6757758afed9e96f0eb3c Mon Sep 17 00:00:00 2001 From: Logan Chien Date: Tue, 1 Aug 2017 10:47:24 +0800 Subject: vndk-def: Ignore ELF files with unknown machine ID This commit starts ignoring ELF files with machine ID other than EM_386, EM_MIPS, EM_ARM, EM_X86_64, and EM_AARCH64. Bug: 64503245 Test: ./tests/test_elfdump.py Change-Id: I10aac8b08e53aa464ebcb67ada65f9afe6d7d50e Merged-In: I714163b4e258a5e2ff1191184c9e632787303637 (cherry picked from commit d2c161bc75fe03f422341e3b3e32d9f0515b612e) --- vndk/tools/definition-tool/vndk_definition_tool.py | 35 +++++++++++++++------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/vndk/tools/definition-tool/vndk_definition_tool.py b/vndk/tools/definition-tool/vndk_definition_tool.py index a3938e740..5b7e81991 100755 --- a/vndk/tools/definition-tool/vndk_definition_tool.py +++ b/vndk/tools/definition-tool/vndk_definition_tool.py @@ -187,14 +187,23 @@ class ELF(object): ELFDATA2MSB: 'Big-Endian', } - _ELF_MACHINE_IDS = { - 0: 'EM_NONE', - 3: 'EM_386', - 8: 'EM_MIPS', - 40: 'EM_ARM', - 62: 'EM_X86_64', - 183: 'EM_AARCH64', - } + EM_NONE = 0 + EM_386 = 3 + EM_MIPS = 8 + EM_ARM = 40 + EM_X86_64 = 62 + EM_AARCH64 = 183 + + def _create_elf_machines(d): + elf_machine_ids = {} + for key, value in d.items(): + if key.startswith('EM_'): + elf_machine_ids[value] = key + return elf_machine_ids + + ELF_MACHINES = _create_elf_machines(locals()) + + del _create_elf_machines @staticmethod @@ -214,7 +223,7 @@ class ELF(object): @staticmethod def get_e_machine_from_name(name): - return ELF._dict_find_key_by_value(ELF._ELF_MACHINE_IDS, name) + return ELF._dict_find_key_by_value(ELF.ELF_MACHINES, name) __slots__ = ('ei_class', 'ei_data', 'e_machine', 'dt_rpath', 'dt_runpath', @@ -252,7 +261,7 @@ class ELF(object): @property def elf_machine_name(self): - return self._ELF_MACHINE_IDS.get(self.e_machine, str(self.e_machine)) + return self.ELF_MACHINES.get(self.e_machine, str(self.e_machine)) @property def is_32bit(self): @@ -1035,9 +1044,15 @@ class ELFLinker(object): ignored_patt = ELFLinker._compile_path_matcher(root, ignored_subdirs) for path, elf in scan_elf_files(root): + # Ignore ELF files with unknown machine ID (eg. DSP). + if elf.e_machine not in ELF.ELF_MACHINES: + continue + + # Ignore ELF files with matched path. short_path = os.path.join('/', partition_name, path[prefix_len:]) if ignored_subdirs and ignored_patt.match(path): continue + if alter_subdirs and alter_patt.match(path): self.add_lib(alter_partition, short_path, elf) else: -- cgit v1.2.3 From a830757d2c8c478d35c72c58fca892e57ace5a3b Mon Sep 17 00:00:00 2001 From: Logan Chien Date: Thu, 3 Aug 2017 00:50:51 +0800 Subject: vndk-def: Add deps-unresolved command This commit adds deps-unresolved subcommand. This subcommand will print unresolved DT_NEEDED entries or unresolved symbols of the ELF file with matching path. This command can help the GSI debug process. Bug: 64503245 Test: python3 vndk_definition_tool.py deps-unresolved \ --system "${GSI}/system" --vendor "${DEVICE}/vendor" \ --path-filter "/vendor/.*" Change-Id: I86e0d0570d3a3faec9b6e80d9b6d926e27f1caa2 Merged-In: If0a4acb495dacfbcd62f58abed7dc6db1618e8a3 (cherry picked from commit f1bf68b227515eeb183203ac31b6993891d057db) --- vndk/tools/definition-tool/vndk_definition_tool.py | 38 ++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/vndk/tools/definition-tool/vndk_definition_tool.py b/vndk/tools/definition-tool/vndk_definition_tool.py index 5b7e81991..f432a3e7a 100755 --- a/vndk/tools/definition-tool/vndk_definition_tool.py +++ b/vndk/tools/definition-tool/vndk_definition_tool.py @@ -810,6 +810,7 @@ class ELFLinkData(object): self.imported_ext_symbols = collections.defaultdict(set) self._tag_bit = tag_bit self.unresolved_symbols = set() + self.unresolved_dt_needed = [] self.linked_symbols = dict() @property @@ -1097,6 +1098,7 @@ class ELFLinker(object): dt_needed, lib.elf.dt_rpath, lib.elf.dt_runpath)) print('warning: {}: Missing needed library: {} Tried: {}' .format(lib.path, dt_needed, candidates), file=sys.stderr) + lib.unresolved_dt_needed.append(dt_needed) continue lib.add_dep(dep, ELFLinkData.NEEDED) imported_libs.append(dep) @@ -2344,6 +2346,41 @@ class DepsClosureCommand(ELFGraphCommand): return 0 +class DepsUnresolvedCommand(ELFGraphCommand): + def __init__(self): + super(DepsUnresolvedCommand, self).__init__( + 'deps-unresolved', + help='Show unresolved dt_needed entries or symbols') + + def add_argparser_options(self, parser): + super(DepsUnresolvedCommand, self).add_argparser_options(parser) + parser.add_argument('--module-info') + parser.add_argument('--path-filter') + + def _dump_unresolved(self, lib, module_info): + if not lib.unresolved_symbols and not lib.unresolved_dt_needed: + return + + print(lib.path) + for module_path in module_info.get_module_path(lib.path): + print('\tMODULE_PATH:', module_path) + for dt_needed in sorted(lib.unresolved_dt_needed): + print('\tUNRESOLVED_DT_NEEDED:', dt_needed) + for symbol in sorted(lib.unresolved_symbols): + print('\tUNRESOLVED_SYMBOL:', symbol) + + def main(self, args): + generic_refs, graph = self.create_from_args(args) + module_info = ModuleInfo.load_from_path_or_default(args.module_info) + + libs = graph.all_libs() + if args.path_filter: + path_filter = re.compile(args.path_filter) + libs = [lib for lib in libs if path_filter.match(lib.path)] + + for lib in sorted(libs): + self._dump_unresolved(lib, module_info) + class CheckDepCommandBase(ELFGraphCommand): def add_argparser_options(self, parser): super(CheckDepCommandBase, self).add_argparser_options(parser) @@ -2579,6 +2616,7 @@ def main(): register_subcmd(DepsCommand()) register_subcmd(DepsClosureCommand()) register_subcmd(DepsInsightCommand()) + register_subcmd(DepsUnresolvedCommand()) register_subcmd(CheckDepCommand()) register_subcmd(CheckEligibleListCommand()) register_subcmd(DepGraphCommand()) -- cgit v1.2.3 From 11b99f2375fbbdf3d083f2f17cdbbd55f94f49b2 Mon Sep 17 00:00:00 2001 From: Logan Chien Date: Tue, 8 Aug 2017 08:45:41 +0800 Subject: vndk-def: Add automotive HIDL interfaces to VNDK This commit adds android.hardware.automotive.evs@1.0.so, android.hardware.automotive.vehicle@2.0.so, and android.hardware.automotive.vehicle@2.1.so to eligible VNDK list. Bug: 64427410 Test: vndk_definition_tool.py vndk \ --tag-file datasets/eligible-list-o-release.csv ... Change-Id: Id6089114e7141eace9b01d1db9682c707c9698b8 Merged-In: Ic8f0e2a8eaaa71638e0f04263c847a0313b6a80d (cherry picked from commit 937dc9c7c419e32d4847a5ed5e3eea39a2c4156f) --- vndk/tools/definition-tool/datasets/eligible-list-o-release.csv | 3 +++ 1 file changed, 3 insertions(+) diff --git a/vndk/tools/definition-tool/datasets/eligible-list-o-release.csv b/vndk/tools/definition-tool/datasets/eligible-list-o-release.csv index 814f02f0f..7ab774782 100644 --- a/vndk/tools/definition-tool/datasets/eligible-list-o-release.csv +++ b/vndk/tools/definition-tool/datasets/eligible-list-o-release.csv @@ -7,6 +7,9 @@ Path,Tag,v3.7 /system/${LIB}/android.hardware.audio.common@2.0.so,VNDK, /system/${LIB}/android.hardware.audio.effect@2.0.so,VNDK, /system/${LIB}/android.hardware.audio@2.0.so,VNDK, +/system/${LIB}/android.hardware.automotive.evs@1.0.so,VNDK, +/system/${LIB}/android.hardware.automotive.vehicle@2.0.so,VNDK, +/system/${LIB}/android.hardware.automotive.vehicle@2.1.so,VNDK, /system/${LIB}/android.hardware.biometrics.fingerprint@2.1.so,VNDK, /system/${LIB}/android.hardware.bluetooth@1.0.so,VNDK, /system/${LIB}/android.hardware.boot@1.0.so,VNDK, -- cgit v1.2.3 From 1eb0c61bebd847b5135bfa4a714534a276dcb2d6 Mon Sep 17 00:00:00 2001 From: Logan Chien Date: Tue, 8 Aug 2017 08:49:00 +0800 Subject: vndk-def: Update android.hidl.memory@1.0-impl.so This commit updates the tag and path for android.hidl.memory@1.0-impl.so. Bug: 62930720 Test: ./vndk_definition_tool.py vndk \ --tag-file datasets/eligible-list-o-release.csv ... Change-Id: Ifcf3789e4ce7555798a33dd46fd5b365a684b3a8 Merged-In: Icabe0b18124e56173beb8971173f30398b64c937 (cherry picked from commit 601dc6c169a7d629540c993258aa9c756aa72d2d) --- vndk/tools/definition-tool/datasets/eligible-list-o-release.csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vndk/tools/definition-tool/datasets/eligible-list-o-release.csv b/vndk/tools/definition-tool/datasets/eligible-list-o-release.csv index 7ab774782..e82721a8a 100644 --- a/vndk/tools/definition-tool/datasets/eligible-list-o-release.csv +++ b/vndk/tools/definition-tool/datasets/eligible-list-o-release.csv @@ -74,7 +74,7 @@ Path,Tag,v3.7 /system/${LIB}/android.hidl.base@1.0.so,VNDK-SP, /system/${LIB}/vndk-sp/android.hidl.base@1.0.so,VNDK-SP, /system/${LIB}/android.hidl.manager@1.0.so,VNDK, -/system/${LIB}/hw/android.hidl.memory@1.0-impl.so,FWK-ONLY, +/system/${LIB}/vndk-sp/android.hidl.memory@1.0-impl.so,VNDK-SP-Indirect-Private, /system/${LIB}/android.hidl.memory@1.0.so,VNDK-SP, /system/${LIB}/vndk-sp/android.hidl.memory@1.0.so,VNDK-SP, /system/${LIB}/android.hidl.token@1.0-utils.so,VNDK, -- cgit v1.2.3 From c81305196a5baad414348ebcde58bb1fafe73e0b Mon Sep 17 00:00:00 2001 From: Logan Chien Date: Thu, 17 Aug 2017 21:27:17 +0800 Subject: vndk-def: Sort eligible-list-o-release.csv This commit sorts the lib paths in eligible-list-o-release.csv. No functionality changes. Bug: 64503245 Test: ./vndk_definition_tool.py vndk \ --tag-file datasets/eligible-list-o-release.csv ... Change-Id: I11c219fe412589ad3d4c764ff1f8b492c2b9335b Merged-In: I10fe84da7ccf3f14180c5bc6d251d8dc80ed569a (cherry picked from commit b91a017e70b8a5cac73a14cee6b52c0f89f2dcd4) --- .../datasets/eligible-list-o-release.csv | 156 ++++++++++----------- 1 file changed, 78 insertions(+), 78 deletions(-) diff --git a/vndk/tools/definition-tool/datasets/eligible-list-o-release.csv b/vndk/tools/definition-tool/datasets/eligible-list-o-release.csv index e82721a8a..47854d4ed 100644 --- a/vndk/tools/definition-tool/datasets/eligible-list-o-release.csv +++ b/vndk/tools/definition-tool/datasets/eligible-list-o-release.csv @@ -19,8 +19,8 @@ Path,Tag,v3.7 /system/${LIB}/android.hardware.camera.device@1.0.so,VNDK, /system/${LIB}/android.hardware.camera.device@3.2.so,VNDK, /system/${LIB}/android.hardware.camera.provider@2.4.so,VNDK, -/system/${LIB}/android.hardware.cas@1.0.so,VNDK, /system/${LIB}/android.hardware.cas.native@1.0.so,VNDK, +/system/${LIB}/android.hardware.cas@1.0.so,VNDK, /system/${LIB}/android.hardware.configstore-utils.so,VNDK, /system/${LIB}/android.hardware.configstore@1.0.so,VNDK, /system/${LIB}/android.hardware.configstore@1.1.so,VNDK, @@ -30,13 +30,10 @@ Path,Tag,v3.7 /system/${LIB}/android.hardware.gatekeeper@1.0.so,VNDK, /system/${LIB}/android.hardware.gnss@1.0.so,VNDK, /system/${LIB}/android.hardware.graphics.allocator@2.0.so,VNDK-SP, -/system/${LIB}/vndk-sp/android.hardware.graphics.allocator@2.0.so,VNDK-SP, /system/${LIB}/android.hardware.graphics.bufferqueue@1.0.so,VNDK, /system/${LIB}/android.hardware.graphics.common@1.0.so,VNDK-SP, -/system/${LIB}/vndk-sp/android.hardware.graphics.common@1.0.so,VNDK-SP, /system/${LIB}/android.hardware.graphics.composer@2.1.so,VNDK, /system/${LIB}/android.hardware.graphics.mapper@2.0.so,VNDK-SP, -/system/${LIB}/vndk-sp/android.hardware.graphics.mapper@2.0.so,VNDK-SP, /system/${LIB}/android.hardware.health@1.0.so,VNDK, /system/${LIB}/android.hardware.ir@1.0.so,VNDK, /system/${LIB}/android.hardware.keymaster@3.0.so,VNDK, @@ -52,9 +49,9 @@ Path,Tag,v3.7 /system/${LIB}/android.hardware.radio@1.0.so,VNDK, /system/${LIB}/android.hardware.radio@1.1.so,VNDK, /system/${LIB}/android.hardware.renderscript@1.0.so,VNDK-SP, -/system/${LIB}/vndk-sp/android.hardware.renderscript@1.0.so,VNDK-SP, /system/${LIB}/android.hardware.sensors@1.0.so,VNDK, /system/${LIB}/android.hardware.soundtrigger@2.0.so,VNDK, +/system/${LIB}/android.hardware.tests.libhwbinder@1.0.so,VNDK, /system/${LIB}/android.hardware.tetheroffload.config@1.0.so,VNDK, /system/${LIB}/android.hardware.tetheroffload.control@1.0.so,VNDK, /system/${LIB}/android.hardware.thermal@1.0.so,VNDK, @@ -72,24 +69,41 @@ Path,Tag,v3.7 /system/${LIB}/android.hardware.wifi@1.1.so,VNDK, /system/${LIB}/android.hidl.allocator@1.0.so,VNDK, /system/${LIB}/android.hidl.base@1.0.so,VNDK-SP, -/system/${LIB}/vndk-sp/android.hidl.base@1.0.so,VNDK-SP, /system/${LIB}/android.hidl.manager@1.0.so,VNDK, -/system/${LIB}/vndk-sp/android.hidl.memory@1.0-impl.so,VNDK-SP-Indirect-Private, /system/${LIB}/android.hidl.memory@1.0.so,VNDK-SP, -/system/${LIB}/vndk-sp/android.hidl.memory@1.0.so,VNDK-SP, /system/${LIB}/android.hidl.token@1.0-utils.so,VNDK, /system/${LIB}/android.hidl.token@1.0.so,VNDK, /system/${LIB}/android.system.wifi.keystore@1.0.so,VNDK, +/system/${LIB}/drm/libfwdlockengine.so,FWK-ONLY, /system/${LIB}/hw/audio.a2dp.default.so,FWK-ONLY, /system/${LIB}/hw/bluetooth.default.so,FWK-ONLY, /system/${LIB}/hw/keystore.default.so,FWK-ONLY, /system/${LIB}/ld-android.so,LL-NDK-Indirect, +/system/${LIB}/libEGL.so,SP-NDK, +/system/${LIB}/libETC1.so,FWK-ONLY, +/system/${LIB}/libFFTEm.so,FWK-ONLY, +/system/${LIB}/libGLESv1_CM.so,SP-NDK, +/system/${LIB}/libGLESv1_enc.so,FWK-ONLY, +/system/${LIB}/libGLESv2.so,SP-NDK, +/system/${LIB}/libGLESv2_enc.so,FWK-ONLY, +/system/${LIB}/libGLESv3.so,SP-NDK, +/system/${LIB}/libLLVM.so,VNDK-SP-Indirect-Private, +/system/${LIB}/libOpenMAXAL.so,FWK-ONLY, +/system/${LIB}/libOpenSLES.so,FWK-ONLY, +/system/${LIB}/libOpenglSystemCommon.so,FWK-ONLY, +/system/${LIB}/libRS.so,FWK-ONLY, +/system/${LIB}/libRSCpuRef.so,VNDK-SP, +/system/${LIB}/libRSDriver.so,VNDK-SP, +/system/${LIB}/libRS_internal.so,VNDK-SP, +/system/${LIB}/libRScpp.so,FWK-ONLY, +/system/${LIB}/libWnnEngDic.so,FWK-ONLY, +/system/${LIB}/libWnnJpnDic.so,FWK-ONLY, /system/${LIB}/lib_renderControl_enc.so,FWK-ONLY, /system/${LIB}/libaaudio.so,FWK-ONLY, +/system/${LIB}/libandroid.so,FWK-ONLY, /system/${LIB}/libandroid_net.so,LL-NDK, /system/${LIB}/libandroid_runtime.so,FWK-ONLY, /system/${LIB}/libandroid_servers.so,FWK-ONLY, -/system/${LIB}/libandroid.so,FWK-ONLY, /system/${LIB}/libandroidfw.so,FWK-ONLY, /system/${LIB}/libappfuse.so,FWK-ONLY, /system/${LIB}/libart-compiler.so,FWK-ONLY, @@ -105,63 +119,49 @@ Path,Tag,v3.7 /system/${LIB}/libaudiopolicymanager.so,FWK-ONLY, /system/${LIB}/libaudiopolicymanagerdefault.so,FWK-ONLY, /system/${LIB}/libaudiopolicyservice.so,FWK-ONLY, -/system/${LIB}/soundfx/libaudiopreprocessing.so,FWK-ONLY, /system/${LIB}/libaudioprocessing.so,FWK-ONLY, /system/${LIB}/libaudioroute.so,VNDK, /system/${LIB}/libaudiospdif.so,FWK-ONLY, /system/${LIB}/libaudioutils.so,VNDK, /system/${LIB}/libavservices_minijail.so,VNDK, /system/${LIB}/libbacktrace.so,VNDK-SP-Indirect, -/system/${LIB}/vndk-sp/libbacktrace.so,VNDK-SP-Indirect, /system/${LIB}/libbase.so,VNDK-SP, -/system/${LIB}/vndk-sp/libbase.so,VNDK-SP, /system/${LIB}/libbatteryservice.so,FWK-ONLY, /system/${LIB}/libbcc.so,FWK-ONLY, /system/${LIB}/libbcinfo.so,VNDK-SP, -/system/${LIB}/vndk-sp/libbcinfo.so,VNDK-SP, /system/${LIB}/libbinder.so,VNDK, /system/${LIB}/libbinderwrapper.so,FWK-ONLY, /system/${LIB}/libblas.so,VNDK-SP-Indirect-Private, -/system/${LIB}/vndk-sp/libblas.so,VNDK-SP-Indirect-Private, /system/${LIB}/libbluetooth_jni.so,FWK-ONLY, /system/${LIB}/libbrillo-binder.so,FWK-ONLY, /system/${LIB}/libbrillo-stream.so,FWK-ONLY, /system/${LIB}/libbrillo.so,FWK-ONLY, -/system/${LIB}/soundfx/libbundlewrapper.so,FWK-ONLY, -/system/${LIB}/libc_malloc_debug.so,LL-NDK-Indirect, -/system/${LIB}/libc.so,LL-NDK, /system/${LIB}/libc++.so,VNDK-SP, -/system/${LIB}/vndk-sp/libc++.so,VNDK-SP, +/system/${LIB}/libc.so,LL-NDK, +/system/${LIB}/libc_malloc_debug.so,LL-NDK-Indirect, +/system/${LIB}/libcamera2ndk.so,FWK-ONLY, /system/${LIB}/libcamera_client.so,FWK-ONLY, /system/${LIB}/libcamera_metadata.so,VNDK, -/system/${LIB}/libcamera2ndk.so,FWK-ONLY, /system/${LIB}/libcameraservice.so,FWK-ONLY, /system/${LIB}/libcap.so,VNDK, /system/${LIB}/libchrome.so,FWK-ONLY, /system/${LIB}/libcld80211.so,VND-ONLY, -/vendor/${LIB}/libcld80211.so,VND-ONLY, /system/${LIB}/libcompiler_rt.so,VNDK-SP-Indirect-Private, -/system/${LIB}/vndk-sp/libcompiler_rt.so,VNDK-SP-Indirect-Private, -/system/${LIB}/libcrypto_utils.so,VNDK, /system/${LIB}/libcrypto.so,VNDK, +/system/${LIB}/libcrypto_utils.so,VNDK, /system/${LIB}/libcups.so,FWK-ONLY, /system/${LIB}/libcurl.so,VNDK, /system/${LIB}/libcutils.so,VNDK-SP, -/system/${LIB}/vndk-sp/libcutils.so,VNDK-SP, /system/${LIB}/libdebuggerd_client.so,FWK-ONLY, /system/${LIB}/libdefcontainer_jni.so,FWK-ONLY, /system/${LIB}/libdiskconfig.so,VNDK, /system/${LIB}/libdl.so,LL-NDK, /system/${LIB}/libdng_sdk.so,FWK-ONLY, -/system/${LIB}/soundfx/libdownmix.so,FWK-ONLY, -/system/${LIB}/libdrmframework_jni.so,FWK-ONLY, /system/${LIB}/libdrmframework.so,FWK-ONLY, +/system/${LIB}/libdrmframework_jni.so,FWK-ONLY, /system/${LIB}/libdumpstateaidl.so,FWK-ONLY, /system/${LIB}/libdumpstateutil.so,VNDK, -/system/${LIB}/soundfx/libeffectproxy.so,FWK-ONLY, /system/${LIB}/libeffects.so,FWK-ONLY, -/system/${LIB}/libEGL.so,SP-NDK, -/system/${LIB}/libETC1.so,FWK-ONLY, /system/${LIB}/libevent.so,VNDK, /system/${LIB}/libexif.so,VNDK, /system/${LIB}/libexpat.so,VNDK, @@ -173,37 +173,24 @@ Path,Tag,v3.7 /system/${LIB}/libext2fs.so,FWK-ONLY, /system/${LIB}/libext4_utils.so,FWK-ONLY, /system/${LIB}/libf2fs_sparseblock.so,FWK-ONLY, -/system/${LIB}/libFFTEm.so,FWK-ONLY, /system/${LIB}/libfilterfw.so,FWK-ONLY, /system/${LIB}/libfilterpack_imageproc.so,FWK-ONLY, /system/${LIB}/libfmq.so,VNDK, /system/${LIB}/libframesequence.so,FWK-ONLY, /system/${LIB}/libft2.so,FWK-ONLY-RS, -/system/${LIB}/drm/libfwdlockengine.so,FWK-ONLY, /system/${LIB}/libgatekeeper.so,VNDK, /system/${LIB}/libgiftranscode.so,FWK-ONLY, -/system/${LIB}/libGLESv1_CM.so,SP-NDK, -/system/${LIB}/libGLESv1_enc.so,FWK-ONLY, -/system/${LIB}/libGLESv2_enc.so,FWK-ONLY, -/system/${LIB}/libGLESv2.so,SP-NDK, -/system/${LIB}/libGLESv3.so,SP-NDK, /system/${LIB}/libgui.so,VNDK, -/system/${LIB}/libhardware_legacy.so,VNDK, /system/${LIB}/libhardware.so,VNDK-SP, -/system/${LIB}/vndk-sp/libhardware.so,VNDK-SP, +/system/${LIB}/libhardware_legacy.so,VNDK, /system/${LIB}/libharfbuzz_ng.so,FWK-ONLY, /system/${LIB}/libhidcommand_jni.so,FWK-ONLY, /system/${LIB}/libhidl-gen-utils.so,FWK-ONLY, /system/${LIB}/libhidlbase.so,VNDK-SP, -/system/${LIB}/vndk-sp/libhidlbase.so,VNDK-SP, /system/${LIB}/libhidlmemory.so,VNDK-SP, -/system/${LIB}/vndk-sp/libhidlmemory.so,VNDK-SP, /system/${LIB}/libhidltransport.so,VNDK-SP, -/system/${LIB}/vndk-sp/libhidltransport.so,VNDK-SP, /system/${LIB}/libhwbinder.so,VNDK-SP, -/system/${LIB}/vndk-sp/libhwbinder.so,VNDK-SP, /system/${LIB}/libhwc2on1adapter.so,VND-ONLY, -/vendor/${LIB}/libhwc2on1adapter.so,VND-ONLY, /system/${LIB}/libhwui.so,FWK-ONLY, /system/${LIB}/libicui18n.so,VNDK, /system/${LIB}/libicuuc.so,VNDK, @@ -213,7 +200,6 @@ Path,Tag,v3.7 /system/${LIB}/libinputflinger.so,FWK-ONLY, /system/${LIB}/libinputservice.so,FWK-ONLY, /system/${LIB}/libion.so,VNDK-SP, -/system/${LIB}/vndk-sp/libion.so,VNDK-SP, /system/${LIB}/libiperf.so,FWK-ONLY, /system/${LIB}/libiprouteutil.so,FWK-ONLY, /system/${LIB}/libjavacore.so,FWK-ONLY, @@ -227,28 +213,24 @@ Path,Tag,v3.7 /system/${LIB}/libjni_tinyplanet.so,FWK-ONLY, /system/${LIB}/libjnigraphics.so,FWK-ONLY, /system/${LIB}/libjpeg.so,VNDK, +/system/${LIB}/libkeymaster1.so,VNDK, /system/${LIB}/libkeymaster_messages.so,VNDK, /system/${LIB}/libkeymaster_portable.so,VNDK, /system/${LIB}/libkeymaster_staging.so,VNDK, -/system/${LIB}/libkeymaster1.so,VNDK, -/system/${LIB}/libkeystore_binder.so,FWK-ONLY, /system/${LIB}/libkeystore-engine.so,FWK-ONLY, +/system/${LIB}/libkeystore_binder.so,FWK-ONLY, /system/${LIB}/libldacBT_abr.so,VNDK, /system/${LIB}/libldacBT_enc.so,VNDK, -/system/${LIB}/soundfx/libldnhncr.so,FWK-ONLY, -/system/${LIB}/libLLVM.so,VNDK-SP-Indirect-Private, -/system/${LIB}/vndk-sp/libLLVM.so,VNDK-SP-Indirect-Private, /system/${LIB}/liblog.so,LL-NDK, /system/${LIB}/liblogcat.so,FWK-ONLY, /system/${LIB}/liblogwrap.so,FWK-ONLY, /system/${LIB}/liblz4.so,VNDK, /system/${LIB}/liblzma.so,VNDK-SP-Indirect, -/system/${LIB}/vndk-sp/liblzma.so,VNDK-SP-Indirect, /system/${LIB}/libm.so,LL-NDK, /system/${LIB}/libmdnssd.so,FWK-ONLY, +/system/${LIB}/libmedia.so,FWK-ONLY, /system/${LIB}/libmedia_helper.so,VNDK, /system/${LIB}/libmedia_jni.so,FWK-ONLY, -/system/${LIB}/libmedia.so,FWK-ONLY, /system/${LIB}/libmedia_omx.so,VNDK, /system/${LIB}/libmediadrm.so,FWK-ONLY, /system/${LIB}/libmediaextractorservice.so,FWK-ONLY, @@ -268,18 +250,14 @@ Path,Tag,v3.7 /system/${LIB}/libnativeloader.so,FWK-ONLY, /system/${LIB}/libnativewindow.so,SP-NDK, /system/${LIB}/libnbaio.so,VNDK, -/vendor/${LIB}/libnbaio_mono.so,VND-ONLY, /system/${LIB}/libnetd_client.so,LL-NDK-Indirect, /system/${LIB}/libnetdaidl.so,FWK-ONLY, /system/${LIB}/libnetlink.so,FWK-ONLY, /system/${LIB}/libnetutils.so,VNDK, /system/${LIB}/libnl.so,VNDK, -/system/${LIB}/libOpenglSystemCommon.so,FWK-ONLY, /system/${LIB}/libopenjdk.so,FWK-ONLY, /system/${LIB}/libopenjdkjvm.so,FWK-ONLY, /system/${LIB}/libopenjdkjvmti.so,FWK-ONLY, -/system/${LIB}/libOpenMAXAL.so,FWK-ONLY, -/system/${LIB}/libOpenSLES.so,FWK-ONLY, /system/${LIB}/libopus.so,FWK-ONLY, /system/${LIB}/libpac.so,FWK-ONLY, /system/${LIB}/libpackagelistparser.so,FWK-ONLY, @@ -298,25 +276,13 @@ Path,Tag,v3.7 /system/${LIB}/libprocinfo.so,VNDK, /system/${LIB}/libprotobuf-cpp-full.so,VNDK, /system/${LIB}/libprotobuf-cpp-lite.so,VNDK, -/system/${LIB}/libradio_metadata.so,VNDK, /system/${LIB}/libradio.so,FWK-ONLY, +/system/${LIB}/libradio_metadata.so,VNDK, /system/${LIB}/libradioservice.so,FWK-ONLY, /system/${LIB}/libreference-ril.so,VND-ONLY, -/vendor/${LIB}/libreference-ril.so,VND-ONLY, -/system/${LIB}/soundfx/libreverbwrapper.so,FWK-ONLY, /system/${LIB}/libril.so,VND-ONLY, -/vendor/${LIB}/libril.so,VND-ONLY, /system/${LIB}/librilutils.so,VND-ONLY, -/vendor/${LIB}/librilutils.so,VND-ONLY, -/system/${LIB}/libRS_internal.so,VNDK-SP, -/system/${LIB}/vndk-sp/libRS_internal.so,VNDK-SP, /system/${LIB}/librs_jni.so,FWK-ONLY, -/system/${LIB}/libRS.so,FWK-ONLY, -/system/${LIB}/libRScpp.so,FWK-ONLY, -/system/${LIB}/libRSCpuRef.so,VNDK-SP, -/system/${LIB}/vndk-sp/libRSCpuRef.so,VNDK-SP, -/system/${LIB}/libRSDriver.so,VNDK-SP, -/system/${LIB}/vndk-sp/libRSDriver.so,VNDK-SP, /system/${LIB}/librtp_jni.so,FWK-ONLY, /system/${LIB}/libschedulerservicehidl.so,FWK-ONLY, /system/${LIB}/libselinux.so,FWK-ONLY, @@ -338,6 +304,7 @@ Path,Tag,v3.7 /system/${LIB}/libspeexresampler.so,VNDK, /system/${LIB}/libsqlite.so,VNDK, /system/${LIB}/libssl.so,VNDK, +/system/${LIB}/libstagefright.so,FWK-ONLY, /system/${LIB}/libstagefright_amrnb_common.so,FWK-ONLY, /system/${LIB}/libstagefright_enc_common.so,FWK-ONLY, /system/${LIB}/libstagefright_foundation.so,VNDK, @@ -364,46 +331,79 @@ Path,Tag,v3.7 /system/${LIB}/libstagefright_soft_vpxdec.so,FWK-ONLY, /system/${LIB}/libstagefright_soft_vpxenc.so,FWK-ONLY, /system/${LIB}/libstagefright_xmlparser@1.0.so,FWK-ONLY, -/system/${LIB}/libstagefright.so,FWK-ONLY, /system/${LIB}/libstdc++.so,LL-NDK, -/system/${LIB}/libsurfaceflinger_ddmconnection.so,FWK-ONLY, /system/${LIB}/libsurfaceflinger.so,FWK-ONLY, +/system/${LIB}/libsurfaceflinger_ddmconnection.so,FWK-ONLY, /system/${LIB}/libsuspend.so,VNDK, /system/${LIB}/libsync.so,SP-NDK, /system/${LIB}/libsysutils.so,VNDK, /system/${LIB}/libtextclassifier.so,FWK-ONLY, /system/${LIB}/libtinyalsa.so,VNDK, /system/${LIB}/libtinycompress.so,VND-ONLY, -/vendor/${LIB}/libtinycompress.so,VND-ONLY, /system/${LIB}/libtinyxml2.so,VNDK, /system/${LIB}/libui.so,VNDK, /system/${LIB}/libunwind.so,VNDK-SP-Indirect, -/system/${LIB}/vndk-sp/libunwind.so,VNDK-SP-Indirect, /system/${LIB}/libusbhost.so,VNDK, /system/${LIB}/libutils.so,VNDK-SP, -/system/${LIB}/vndk-sp/libutils.so,VNDK-SP, /system/${LIB}/libvintf.so,FWK-ONLY, -/system/${LIB}/soundfx/libvisualizer.so,FWK-ONLY, /system/${LIB}/libvixl-arm.so,VNDK, /system/${LIB}/libvixl-arm64.so,VNDK, /system/${LIB}/libvndksupport.so,LL-NDK, /system/${LIB}/libvorbisidec.so,FWK-ONLY, /system/${LIB}/libvulkan.so,SP-NDK, /system/${LIB}/libwebrtc_audio_preprocessing.so,VND-ONLY, -/vendor/${LIB}/libwebrtc_audio_preprocessing.so,VND-ONLY, /system/${LIB}/libwebviewchromium_loader.so,FWK-ONLY, /system/${LIB}/libwebviewchromium_plat_support.so,FWK-ONLY, /system/${LIB}/libwfds.so,FWK-ONLY, /system/${LIB}/libwifi-service.so,FWK-ONLY, -/system/${LIB}/libwifi-system.so,FWK-ONLY, /system/${LIB}/libwifi-system-iface.so,VNDK, +/system/${LIB}/libwifi-system.so,FWK-ONLY, /system/${LIB}/libwifikeystorehal.so,FWK-ONLY, /system/${LIB}/libwilhelm.so,FWK-ONLY, /system/${LIB}/libwnndict.so,FWK-ONLY, -/system/${LIB}/libWnnEngDic.so,FWK-ONLY, -/system/${LIB}/libWnnJpnDic.so,FWK-ONLY, /system/${LIB}/libxml2.so,VNDK, /system/${LIB}/libyuv.so,VNDK, /system/${LIB}/libz.so,LL-NDK, /system/${LIB}/libziparchive.so,VNDK, -/system/${LIB}/android.hardware.tests.libhwbinder@1.0.so,VNDK, +/system/${LIB}/soundfx/libaudiopreprocessing.so,FWK-ONLY, +/system/${LIB}/soundfx/libbundlewrapper.so,FWK-ONLY, +/system/${LIB}/soundfx/libdownmix.so,FWK-ONLY, +/system/${LIB}/soundfx/libeffectproxy.so,FWK-ONLY, +/system/${LIB}/soundfx/libldnhncr.so,FWK-ONLY, +/system/${LIB}/soundfx/libreverbwrapper.so,FWK-ONLY, +/system/${LIB}/soundfx/libvisualizer.so,FWK-ONLY, +/system/${LIB}/vndk-sp/android.hardware.graphics.allocator@2.0.so,VNDK-SP, +/system/${LIB}/vndk-sp/android.hardware.graphics.common@1.0.so,VNDK-SP, +/system/${LIB}/vndk-sp/android.hardware.graphics.mapper@2.0.so,VNDK-SP, +/system/${LIB}/vndk-sp/android.hardware.renderscript@1.0.so,VNDK-SP, +/system/${LIB}/vndk-sp/android.hidl.base@1.0.so,VNDK-SP, +/system/${LIB}/vndk-sp/android.hidl.memory@1.0-impl.so,VNDK-SP-Indirect-Private, +/system/${LIB}/vndk-sp/android.hidl.memory@1.0.so,VNDK-SP, +/system/${LIB}/vndk-sp/libLLVM.so,VNDK-SP-Indirect-Private, +/system/${LIB}/vndk-sp/libRSCpuRef.so,VNDK-SP, +/system/${LIB}/vndk-sp/libRSDriver.so,VNDK-SP, +/system/${LIB}/vndk-sp/libRS_internal.so,VNDK-SP, +/system/${LIB}/vndk-sp/libbacktrace.so,VNDK-SP-Indirect, +/system/${LIB}/vndk-sp/libbase.so,VNDK-SP, +/system/${LIB}/vndk-sp/libbcinfo.so,VNDK-SP, +/system/${LIB}/vndk-sp/libblas.so,VNDK-SP-Indirect-Private, +/system/${LIB}/vndk-sp/libc++.so,VNDK-SP, +/system/${LIB}/vndk-sp/libcompiler_rt.so,VNDK-SP-Indirect-Private, +/system/${LIB}/vndk-sp/libcutils.so,VNDK-SP, +/system/${LIB}/vndk-sp/libhardware.so,VNDK-SP, +/system/${LIB}/vndk-sp/libhidlbase.so,VNDK-SP, +/system/${LIB}/vndk-sp/libhidlmemory.so,VNDK-SP, +/system/${LIB}/vndk-sp/libhidltransport.so,VNDK-SP, +/system/${LIB}/vndk-sp/libhwbinder.so,VNDK-SP, +/system/${LIB}/vndk-sp/libion.so,VNDK-SP, +/system/${LIB}/vndk-sp/liblzma.so,VNDK-SP-Indirect, +/system/${LIB}/vndk-sp/libunwind.so,VNDK-SP-Indirect, +/system/${LIB}/vndk-sp/libutils.so,VNDK-SP, +/vendor/${LIB}/libcld80211.so,VND-ONLY, +/vendor/${LIB}/libhwc2on1adapter.so,VND-ONLY, +/vendor/${LIB}/libnbaio_mono.so,VND-ONLY, +/vendor/${LIB}/libreference-ril.so,VND-ONLY, +/vendor/${LIB}/libril.so,VND-ONLY, +/vendor/${LIB}/librilutils.so,VND-ONLY, +/vendor/${LIB}/libtinycompress.so,VND-ONLY, +/vendor/${LIB}/libwebrtc_audio_preprocessing.so,VND-ONLY, -- cgit v1.2.3 From fd04ff570957b11a2c07eabb653b4828a4854a6a Mon Sep 17 00:00:00 2001 From: Logan Chien Date: Thu, 17 Aug 2017 21:02:45 +0800 Subject: vndk-def: Add eligible-list-o-mr1-release.csv This commit adds O-MR1 eligible list for VNDK definition tool. Differences between O and O-MR1 eligible list: * /system/${LIB}/vndk is added for Treble VNDK directory layout. * /system/${LIB}/libz.so becomes LL-NDK-Indirect and /system/${LIB}/vndk-sp/libz.so is added. * /system/${LIB}/vndk/libEGL.so, /system/${LIB}/vndk/libGLES_v1_CM.so, and /system/${LIB}/vndk/libGLESv2.so are added Bug: 64503245 Test: ./vndk_definition_tool.py vndk \ --tag-file datasets/eligible-list-o-mr1-release.csv ... Change-Id: Iae5baf392c5feb6e7ddea357a2894214d656bcbb Merged-In: Ic27e11edabab568db73510450b311ce92085ebd9 (cherry picked from commit 98d8abbaf82f591191b6055ade5605c27fec3ce0) --- .../datasets/eligible-list-o-mr1-release.csv | 551 +++++++++++++++++++++ 1 file changed, 551 insertions(+) create mode 100644 vndk/tools/definition-tool/datasets/eligible-list-o-mr1-release.csv diff --git a/vndk/tools/definition-tool/datasets/eligible-list-o-mr1-release.csv b/vndk/tools/definition-tool/datasets/eligible-list-o-mr1-release.csv new file mode 100644 index 000000000..a9d44cd91 --- /dev/null +++ b/vndk/tools/definition-tool/datasets/eligible-list-o-mr1-release.csv @@ -0,0 +1,551 @@ +Path,Tag,v3.7 +/system/${LIB}/android.frameworks.schedulerservice@1.0.so,VNDK, +/system/${LIB}/android.frameworks.sensorservice@1.0.so,VNDK, +/system/${LIB}/android.frameworks.vr.composer@1.0.so,VNDK, +/system/${LIB}/android.frameworks.vr.composer@1.0.so,VNDK, +/system/${LIB}/android.hardware.audio.common@2.0-util.so,VNDK, +/system/${LIB}/android.hardware.audio.common@2.0.so,VNDK, +/system/${LIB}/android.hardware.audio.effect@2.0.so,VNDK, +/system/${LIB}/android.hardware.audio@2.0.so,VNDK, +/system/${LIB}/android.hardware.automotive.evs@1.0.so,VNDK, +/system/${LIB}/android.hardware.automotive.vehicle@2.0.so,VNDK, +/system/${LIB}/android.hardware.automotive.vehicle@2.1.so,VNDK, +/system/${LIB}/android.hardware.biometrics.fingerprint@2.1.so,VNDK, +/system/${LIB}/android.hardware.bluetooth@1.0.so,VNDK, +/system/${LIB}/android.hardware.boot@1.0.so,VNDK, +/system/${LIB}/android.hardware.broadcastradio@1.0.so,VNDK, +/system/${LIB}/android.hardware.broadcastradio@1.1.so,VNDK, +/system/${LIB}/android.hardware.camera.common@1.0.so,VNDK, +/system/${LIB}/android.hardware.camera.device@1.0.so,VNDK, +/system/${LIB}/android.hardware.camera.device@3.2.so,VNDK, +/system/${LIB}/android.hardware.camera.provider@2.4.so,VNDK, +/system/${LIB}/android.hardware.cas.native@1.0.so,VNDK, +/system/${LIB}/android.hardware.cas@1.0.so,VNDK, +/system/${LIB}/android.hardware.configstore-utils.so,VNDK, +/system/${LIB}/android.hardware.configstore@1.0.so,VNDK, +/system/${LIB}/android.hardware.configstore@1.1.so,VNDK, +/system/${LIB}/android.hardware.contexthub@1.0.so,VNDK, +/system/${LIB}/android.hardware.drm@1.0.so,VNDK, +/system/${LIB}/android.hardware.dumpstate@1.0.so,VNDK, +/system/${LIB}/android.hardware.gatekeeper@1.0.so,VNDK, +/system/${LIB}/android.hardware.gnss@1.0.so,VNDK, +/system/${LIB}/android.hardware.graphics.allocator@2.0.so,VNDK-SP, +/system/${LIB}/android.hardware.graphics.bufferqueue@1.0.so,VNDK, +/system/${LIB}/android.hardware.graphics.common@1.0.so,VNDK-SP, +/system/${LIB}/android.hardware.graphics.composer@2.1.so,VNDK, +/system/${LIB}/android.hardware.graphics.mapper@2.0.so,VNDK-SP, +/system/${LIB}/android.hardware.health@1.0.so,VNDK, +/system/${LIB}/android.hardware.ir@1.0.so,VNDK, +/system/${LIB}/android.hardware.keymaster@3.0.so,VNDK, +/system/${LIB}/android.hardware.light@2.0.so,VNDK, +/system/${LIB}/android.hardware.media.omx@1.0.so,VNDK, +/system/${LIB}/android.hardware.media@1.0.so,VNDK, +/system/${LIB}/android.hardware.memtrack@1.0.so,VNDK, +/system/${LIB}/android.hardware.neuralnetworks@1.0.so,VNDK, +/system/${LIB}/android.hardware.nfc@1.0.so,VNDK, +/system/${LIB}/android.hardware.oemlock@1.0.so,VNDK, +/system/${LIB}/android.hardware.power@1.0.so,VNDK, +/system/${LIB}/android.hardware.power@1.1.so,VNDK, +/system/${LIB}/android.hardware.radio.deprecated@1.0.so,VNDK, +/system/${LIB}/android.hardware.radio@1.0.so,VNDK, +/system/${LIB}/android.hardware.radio@1.1.so,VNDK, +/system/${LIB}/android.hardware.renderscript@1.0.so,VNDK-SP, +/system/${LIB}/android.hardware.sensors@1.0.so,VNDK, +/system/${LIB}/android.hardware.soundtrigger@2.0.so,VNDK, +/system/${LIB}/android.hardware.tests.libhwbinder@1.0.so,VNDK, +/system/${LIB}/android.hardware.tetheroffload.config@1.0.so,VNDK, +/system/${LIB}/android.hardware.tetheroffload.control@1.0.so,VNDK, +/system/${LIB}/android.hardware.thermal@1.0.so,VNDK, +/system/${LIB}/android.hardware.tv.cec@1.0.so,VNDK, +/system/${LIB}/android.hardware.tv.input@1.0.so,VNDK, +/system/${LIB}/android.hardware.usb@1.0.so,VNDK, +/system/${LIB}/android.hardware.usb@1.1.so,VNDK, +/system/${LIB}/android.hardware.vibrator@1.0.so,VNDK, +/system/${LIB}/android.hardware.vibrator@1.1.so,VNDK, +/system/${LIB}/android.hardware.vr@1.0.so,VNDK, +/system/${LIB}/android.hardware.weaver@1.0.so,VNDK, +/system/${LIB}/android.hardware.wifi.offload@1.0.so,VNDK, +/system/${LIB}/android.hardware.wifi.supplicant@1.0.so,VNDK, +/system/${LIB}/android.hardware.wifi@1.0.so,VNDK, +/system/${LIB}/android.hardware.wifi@1.1.so,VNDK, +/system/${LIB}/android.hidl.allocator@1.0.so,VNDK, +/system/${LIB}/android.hidl.base@1.0.so,VNDK-SP, +/system/${LIB}/android.hidl.manager@1.0.so,VNDK, +/system/${LIB}/android.hidl.memory@1.0.so,VNDK-SP, +/system/${LIB}/android.hidl.token@1.0-utils.so,VNDK, +/system/${LIB}/android.hidl.token@1.0.so,VNDK, +/system/${LIB}/android.system.net.netd@1.0.so,VNDK, +/system/${LIB}/android.system.wifi.keystore@1.0.so,VNDK, +/system/${LIB}/drm/libfwdlockengine.so,FWK-ONLY, +/system/${LIB}/hw/audio.a2dp.default.so,FWK-ONLY, +/system/${LIB}/hw/bluetooth.default.so,FWK-ONLY, +/system/${LIB}/hw/keystore.default.so,FWK-ONLY, +/system/${LIB}/ld-android.so,LL-NDK-Indirect, +/system/${LIB}/libEGL.so,SP-NDK, +/system/${LIB}/libETC1.so,FWK-ONLY, +/system/${LIB}/libFFTEm.so,FWK-ONLY, +/system/${LIB}/libGLESv1_CM.so,SP-NDK, +/system/${LIB}/libGLESv1_enc.so,FWK-ONLY, +/system/${LIB}/libGLESv2.so,SP-NDK, +/system/${LIB}/libGLESv2_enc.so,FWK-ONLY, +/system/${LIB}/libGLESv3.so,SP-NDK, +/system/${LIB}/libLLVM.so,VNDK-SP-Indirect-Private, +/system/${LIB}/libOpenMAXAL.so,FWK-ONLY, +/system/${LIB}/libOpenSLES.so,FWK-ONLY, +/system/${LIB}/libOpenglSystemCommon.so,FWK-ONLY, +/system/${LIB}/libRS.so,FWK-ONLY, +/system/${LIB}/libRSCpuRef.so,VNDK-SP, +/system/${LIB}/libRSDriver.so,VNDK-SP, +/system/${LIB}/libRS_internal.so,VNDK-SP, +/system/${LIB}/libRScpp.so,FWK-ONLY, +/system/${LIB}/libWnnEngDic.so,FWK-ONLY, +/system/${LIB}/libWnnJpnDic.so,FWK-ONLY, +/system/${LIB}/lib_renderControl_enc.so,FWK-ONLY, +/system/${LIB}/libaaudio.so,FWK-ONLY, +/system/${LIB}/libandroid.so,FWK-ONLY, +/system/${LIB}/libandroid_net.so,LL-NDK, +/system/${LIB}/libandroid_runtime.so,FWK-ONLY, +/system/${LIB}/libandroid_servers.so,FWK-ONLY, +/system/${LIB}/libandroidfw.so,FWK-ONLY, +/system/${LIB}/libappfuse.so,FWK-ONLY, +/system/${LIB}/libart-compiler.so,FWK-ONLY, +/system/${LIB}/libart-dexlayout.so,FWK-ONLY, +/system/${LIB}/libart-disassembler.so,FWK-ONLY, +/system/${LIB}/libart.so,FWK-ONLY, +/system/${LIB}/libaudioclient.so,FWK-ONLY, +/system/${LIB}/libaudioeffect_jni.so,FWK-ONLY, +/system/${LIB}/libaudioflinger.so,FWK-ONLY, +/system/${LIB}/libaudiohal.so,FWK-ONLY, +/system/${LIB}/libaudiomanager.so,FWK-ONLY, +/system/${LIB}/libaudiopolicyenginedefault.so,FWK-ONLY, +/system/${LIB}/libaudiopolicymanager.so,FWK-ONLY, +/system/${LIB}/libaudiopolicymanagerdefault.so,FWK-ONLY, +/system/${LIB}/libaudiopolicyservice.so,FWK-ONLY, +/system/${LIB}/libaudioprocessing.so,FWK-ONLY, +/system/${LIB}/libaudioroute.so,VNDK, +/system/${LIB}/libaudiospdif.so,FWK-ONLY, +/system/${LIB}/libaudioutils.so,VNDK, +/system/${LIB}/libavservices_minijail.so,VNDK, +/system/${LIB}/libbacktrace.so,VNDK-SP-Indirect, +/system/${LIB}/libbase.so,VNDK-SP, +/system/${LIB}/libbatteryservice.so,FWK-ONLY, +/system/${LIB}/libbcc.so,FWK-ONLY, +/system/${LIB}/libbcinfo.so,VNDK-SP, +/system/${LIB}/libbinder.so,VNDK, +/system/${LIB}/libbinderwrapper.so,FWK-ONLY, +/system/${LIB}/libblas.so,VNDK-SP-Indirect-Private, +/system/${LIB}/libbluetooth_jni.so,FWK-ONLY, +/system/${LIB}/libbrillo-binder.so,FWK-ONLY, +/system/${LIB}/libbrillo-stream.so,FWK-ONLY, +/system/${LIB}/libbrillo.so,FWK-ONLY, +/system/${LIB}/libc++.so,VNDK-SP, +/system/${LIB}/libc.so,LL-NDK, +/system/${LIB}/libc_malloc_debug.so,LL-NDK-Indirect, +/system/${LIB}/libcamera2ndk.so,FWK-ONLY, +/system/${LIB}/libcamera_client.so,FWK-ONLY, +/system/${LIB}/libcamera_metadata.so,VNDK, +/system/${LIB}/libcameraservice.so,FWK-ONLY, +/system/${LIB}/libcap.so,VNDK, +/system/${LIB}/libchrome.so,FWK-ONLY, +/system/${LIB}/libcld80211.so,VND-ONLY, +/system/${LIB}/libcompiler_rt.so,VNDK-SP-Indirect-Private, +/system/${LIB}/libcrypto.so,VNDK, +/system/${LIB}/libcrypto_utils.so,VNDK, +/system/${LIB}/libcups.so,FWK-ONLY, +/system/${LIB}/libcurl.so,VNDK, +/system/${LIB}/libcutils.so,VNDK-SP, +/system/${LIB}/libdebuggerd_client.so,FWK-ONLY, +/system/${LIB}/libdefcontainer_jni.so,FWK-ONLY, +/system/${LIB}/libdiskconfig.so,VNDK, +/system/${LIB}/libdl.so,LL-NDK, +/system/${LIB}/libdng_sdk.so,FWK-ONLY, +/system/${LIB}/libdrmframework.so,FWK-ONLY, +/system/${LIB}/libdrmframework_jni.so,FWK-ONLY, +/system/${LIB}/libdumpstateaidl.so,FWK-ONLY, +/system/${LIB}/libdumpstateutil.so,VNDK, +/system/${LIB}/libeffects.so,FWK-ONLY, +/system/${LIB}/libevent.so,VNDK, +/system/${LIB}/libexif.so,VNDK, +/system/${LIB}/libexpat.so,VNDK, +/system/${LIB}/libext2_blkid.so,FWK-ONLY, +/system/${LIB}/libext2_com_err.so,FWK-ONLY, +/system/${LIB}/libext2_e2p.so,FWK-ONLY, +/system/${LIB}/libext2_quota.so,FWK-ONLY, +/system/${LIB}/libext2_uuid.so,FWK-ONLY, +/system/${LIB}/libext2fs.so,FWK-ONLY, +/system/${LIB}/libext4_utils.so,FWK-ONLY, +/system/${LIB}/libf2fs_sparseblock.so,FWK-ONLY, +/system/${LIB}/libfilterfw.so,FWK-ONLY, +/system/${LIB}/libfilterpack_imageproc.so,FWK-ONLY, +/system/${LIB}/libfmq.so,VNDK, +/system/${LIB}/libframesequence.so,FWK-ONLY, +/system/${LIB}/libft2.so,FWK-ONLY-RS, +/system/${LIB}/libgatekeeper.so,VNDK, +/system/${LIB}/libgiftranscode.so,FWK-ONLY, +/system/${LIB}/libgui.so,VNDK, +/system/${LIB}/libhardware.so,VNDK-SP, +/system/${LIB}/libhardware_legacy.so,VNDK, +/system/${LIB}/libharfbuzz_ng.so,FWK-ONLY, +/system/${LIB}/libhidcommand_jni.so,FWK-ONLY, +/system/${LIB}/libhidl-gen-utils.so,FWK-ONLY, +/system/${LIB}/libhidlbase.so,VNDK-SP, +/system/${LIB}/libhidlmemory.so,VNDK-SP, +/system/${LIB}/libhidltransport.so,VNDK-SP, +/system/${LIB}/libhwbinder.so,VNDK-SP, +/system/${LIB}/libhwc2on1adapter.so,VND-ONLY, +/system/${LIB}/libhwui.so,FWK-ONLY, +/system/${LIB}/libicui18n.so,VNDK, +/system/${LIB}/libicuuc.so,VNDK, +/system/${LIB}/libimg_utils.so,FWK-ONLY, +/system/${LIB}/libincident.so,FWK-ONLY, +/system/${LIB}/libinput.so,FWK-ONLY, +/system/${LIB}/libinputflinger.so,FWK-ONLY, +/system/${LIB}/libinputservice.so,FWK-ONLY, +/system/${LIB}/libion.so,VNDK-SP, +/system/${LIB}/libiperf.so,FWK-ONLY, +/system/${LIB}/libiprouteutil.so,FWK-ONLY, +/system/${LIB}/libjavacore.so,FWK-ONLY, +/system/${LIB}/libjavacrypto.so,FWK-ONLY, +/system/${LIB}/libjni_eglfence.so,FWK-ONLY, +/system/${LIB}/libjni_filtershow_filters.so,FWK-ONLY, +/system/${LIB}/libjni_jpegstream.so,FWK-ONLY, +/system/${LIB}/libjni_jpegutil.so,FWK-ONLY, +/system/${LIB}/libjni_latinime.so,FWK-ONLY, +/system/${LIB}/libjni_pacprocessor.so,FWK-ONLY, +/system/${LIB}/libjni_tinyplanet.so,FWK-ONLY, +/system/${LIB}/libjnigraphics.so,FWK-ONLY, +/system/${LIB}/libjpeg.so,VNDK, +/system/${LIB}/libkeymaster1.so,VNDK, +/system/${LIB}/libkeymaster_messages.so,VNDK, +/system/${LIB}/libkeymaster_portable.so,VNDK, +/system/${LIB}/libkeymaster_staging.so,VNDK, +/system/${LIB}/libkeystore-engine.so,FWK-ONLY, +/system/${LIB}/libkeystore_binder.so,FWK-ONLY, +/system/${LIB}/libldacBT_abr.so,VNDK, +/system/${LIB}/libldacBT_enc.so,VNDK, +/system/${LIB}/liblog.so,LL-NDK, +/system/${LIB}/liblogcat.so,FWK-ONLY, +/system/${LIB}/liblogwrap.so,FWK-ONLY, +/system/${LIB}/liblz4.so,VNDK, +/system/${LIB}/liblzma.so,VNDK-SP-Indirect, +/system/${LIB}/libm.so,LL-NDK, +/system/${LIB}/libmdnssd.so,FWK-ONLY, +/system/${LIB}/libmedia.so,FWK-ONLY, +/system/${LIB}/libmedia_helper.so,VNDK, +/system/${LIB}/libmedia_jni.so,FWK-ONLY, +/system/${LIB}/libmedia_omx.so,VNDK, +/system/${LIB}/libmediadrm.so,FWK-ONLY, +/system/${LIB}/libmediaextractorservice.so,FWK-ONLY, +/system/${LIB}/libmedialogservice.so,FWK-ONLY, +/system/${LIB}/libmediametrics.so,FWK-ONLY, +/system/${LIB}/libmediandk.so,FWK-ONLY-RS, +/system/${LIB}/libmediautils.so,FWK-ONLY, +/system/${LIB}/libmemtrack.so,VNDK, +/system/${LIB}/libmemunreachable.so,FWK-ONLY, +/system/${LIB}/libmetricslogger.so,FWK-ONLY, +/system/${LIB}/libmidi.so,FWK-ONLY, +/system/${LIB}/libminijail.so,VNDK, +/system/${LIB}/libminikin.so,FWK-ONLY, +/system/${LIB}/libmtp.so,FWK-ONLY, +/system/${LIB}/libnativebridge.so,FWK-ONLY, +/system/${LIB}/libnativehelper.so,FWK-ONLY, +/system/${LIB}/libnativeloader.so,FWK-ONLY, +/system/${LIB}/libnativewindow.so,SP-NDK, +/system/${LIB}/libnbaio.so,VNDK, +/system/${LIB}/libnetd_client.so,LL-NDK-Indirect, +/system/${LIB}/libnetdaidl.so,FWK-ONLY, +/system/${LIB}/libnetlink.so,FWK-ONLY, +/system/${LIB}/libnetutils.so,VNDK, +/system/${LIB}/libnl.so,VNDK, +/system/${LIB}/libopenjdk.so,FWK-ONLY, +/system/${LIB}/libopenjdkjvm.so,FWK-ONLY, +/system/${LIB}/libopenjdkjvmti.so,FWK-ONLY, +/system/${LIB}/libopus.so,FWK-ONLY, +/system/${LIB}/libpac.so,FWK-ONLY, +/system/${LIB}/libpackagelistparser.so,FWK-ONLY, +/system/${LIB}/libpagemap.so,VNDK, +/system/${LIB}/libpcap.so,FWK-ONLY, +/system/${LIB}/libpcre2.so,VNDK, +/system/${LIB}/libpcrecpp.so,FWK-ONLY, +/system/${LIB}/libpdfium.so,FWK-ONLY, +/system/${LIB}/libpiex.so,VNDK, +/system/${LIB}/libpixelflinger.so,FWK-ONLY, +/system/${LIB}/libpng.so,VNDK, +/system/${LIB}/libpower.so,VNDK, +/system/${LIB}/libpowermanager.so,FWK-ONLY, +/system/${LIB}/libprintspooler_jni.so,FWK-ONLY, +/system/${LIB}/libprocessgroup.so,FWK-ONLY, +/system/${LIB}/libprocinfo.so,VNDK, +/system/${LIB}/libprotobuf-cpp-full.so,VNDK, +/system/${LIB}/libprotobuf-cpp-lite.so,VNDK, +/system/${LIB}/libradio.so,FWK-ONLY, +/system/${LIB}/libradio_metadata.so,VNDK, +/system/${LIB}/libradioservice.so,FWK-ONLY, +/system/${LIB}/libreference-ril.so,VND-ONLY, +/system/${LIB}/libril.so,VND-ONLY, +/system/${LIB}/librilutils.so,VND-ONLY, +/system/${LIB}/librs_jni.so,FWK-ONLY, +/system/${LIB}/librtp_jni.so,FWK-ONLY, +/system/${LIB}/libschedulerservicehidl.so,FWK-ONLY, +/system/${LIB}/libselinux.so,FWK-ONLY, +/system/${LIB}/libsensor.so,FWK-ONLY, +/system/${LIB}/libsensorservice.so,FWK-ONLY, +/system/${LIB}/libsensorservicehidl.so,FWK-ONLY, +/system/${LIB}/libservices.so,FWK-ONLY, +/system/${LIB}/libserviceutility.so,FWK-ONLY, +/system/${LIB}/libsigchain.so,FWK-ONLY, +/system/${LIB}/libskia.so,FWK-ONLY, +/system/${LIB}/libsoftkeymaster.so,FWK-ONLY, +/system/${LIB}/libsoftkeymasterdevice.so,VNDK, +/system/${LIB}/libsonic.so,FWK-ONLY, +/system/${LIB}/libsonivox.so,FWK-ONLY, +/system/${LIB}/libsoundpool.so,FWK-ONLY, +/system/${LIB}/libsoundtrigger.so,FWK-ONLY, +/system/${LIB}/libsoundtriggerservice.so,FWK-ONLY, +/system/${LIB}/libsparse.so,FWK-ONLY, +/system/${LIB}/libspeexresampler.so,VNDK, +/system/${LIB}/libsqlite.so,VNDK, +/system/${LIB}/libssl.so,VNDK, +/system/${LIB}/libstagefright.so,FWK-ONLY, +/system/${LIB}/libstagefright_amrnb_common.so,FWK-ONLY, +/system/${LIB}/libstagefright_enc_common.so,FWK-ONLY, +/system/${LIB}/libstagefright_foundation.so,VNDK, +/system/${LIB}/libstagefright_http_support.so,FWK-ONLY, +/system/${LIB}/libstagefright_omx.so,VNDK, +/system/${LIB}/libstagefright_soft_aacdec.so,FWK-ONLY, +/system/${LIB}/libstagefright_soft_aacenc.so,FWK-ONLY, +/system/${LIB}/libstagefright_soft_amrdec.so,FWK-ONLY, +/system/${LIB}/libstagefright_soft_amrnbenc.so,FWK-ONLY, +/system/${LIB}/libstagefright_soft_amrwbenc.so,FWK-ONLY, +/system/${LIB}/libstagefright_soft_avcdec.so,FWK-ONLY, +/system/${LIB}/libstagefright_soft_avcenc.so,FWK-ONLY, +/system/${LIB}/libstagefright_soft_flacenc.so,FWK-ONLY, +/system/${LIB}/libstagefright_soft_g711dec.so,FWK-ONLY, +/system/${LIB}/libstagefright_soft_gsmdec.so,FWK-ONLY, +/system/${LIB}/libstagefright_soft_hevcdec.so,FWK-ONLY, +/system/${LIB}/libstagefright_soft_mp3dec.so,FWK-ONLY, +/system/${LIB}/libstagefright_soft_mpeg2dec.so,FWK-ONLY, +/system/${LIB}/libstagefright_soft_mpeg4dec.so,FWK-ONLY, +/system/${LIB}/libstagefright_soft_mpeg4enc.so,FWK-ONLY, +/system/${LIB}/libstagefright_soft_opusdec.so,FWK-ONLY, +/system/${LIB}/libstagefright_soft_rawdec.so,FWK-ONLY, +/system/${LIB}/libstagefright_soft_vorbisdec.so,FWK-ONLY, +/system/${LIB}/libstagefright_soft_vpxdec.so,FWK-ONLY, +/system/${LIB}/libstagefright_soft_vpxenc.so,FWK-ONLY, +/system/${LIB}/libstagefright_xmlparser@1.0.so,VNDK, +/system/${LIB}/libstdc++.so,LL-NDK, +/system/${LIB}/libsurfaceflinger.so,FWK-ONLY, +/system/${LIB}/libsurfaceflinger_ddmconnection.so,FWK-ONLY, +/system/${LIB}/libsuspend.so,VNDK, +/system/${LIB}/libsync.so,SP-NDK, +/system/${LIB}/libsysutils.so,VNDK, +/system/${LIB}/libtextclassifier.so,FWK-ONLY, +/system/${LIB}/libtinyalsa.so,VNDK, +/system/${LIB}/libtinycompress.so,VND-ONLY, +/system/${LIB}/libtinyxml2.so,VNDK, +/system/${LIB}/libui.so,VNDK, +/system/${LIB}/libunwind.so,VNDK-SP-Indirect, +/system/${LIB}/libunwindstack.so,VNDK, +/system/${LIB}/libusbhost.so,VNDK, +/system/${LIB}/libutils.so,VNDK-SP, +/system/${LIB}/libvintf.so,FWK-ONLY, +/system/${LIB}/libvixl-arm.so,VNDK, +/system/${LIB}/libvixl-arm64.so,VNDK, +/system/${LIB}/libvndksupport.so,LL-NDK, +/system/${LIB}/libvorbisidec.so,FWK-ONLY, +/system/${LIB}/libvulkan.so,SP-NDK, +/system/${LIB}/libwebrtc_audio_preprocessing.so,VND-ONLY, +/system/${LIB}/libwebviewchromium_loader.so,FWK-ONLY, +/system/${LIB}/libwebviewchromium_plat_support.so,FWK-ONLY, +/system/${LIB}/libwfds.so,FWK-ONLY, +/system/${LIB}/libwifi-service.so,FWK-ONLY, +/system/${LIB}/libwifi-system-iface.so,VNDK, +/system/${LIB}/libwifi-system.so,FWK-ONLY, +/system/${LIB}/libwifikeystorehal.so,FWK-ONLY, +/system/${LIB}/libwilhelm.so,FWK-ONLY, +/system/${LIB}/libwnndict.so,FWK-ONLY, +/system/${LIB}/libxml2.so,VNDK, +/system/${LIB}/libyuv.so,VNDK, +/system/${LIB}/libz.so,LL-NDK-Indirect, +/system/${LIB}/libziparchive.so,VNDK, +/system/${LIB}/soundfx/libaudiopreprocessing.so,FWK-ONLY, +/system/${LIB}/soundfx/libbundlewrapper.so,FWK-ONLY, +/system/${LIB}/soundfx/libdownmix.so,FWK-ONLY, +/system/${LIB}/soundfx/libeffectproxy.so,FWK-ONLY, +/system/${LIB}/soundfx/libldnhncr.so,FWK-ONLY, +/system/${LIB}/soundfx/libreverbwrapper.so,FWK-ONLY, +/system/${LIB}/soundfx/libvisualizer.so,FWK-ONLY, +/system/${LIB}/vndk-sp/android.hardware.graphics.allocator@2.0.so,VNDK-SP, +/system/${LIB}/vndk-sp/android.hardware.graphics.common@1.0.so,VNDK-SP, +/system/${LIB}/vndk-sp/android.hardware.graphics.mapper@2.0.so,VNDK-SP, +/system/${LIB}/vndk-sp/android.hardware.renderscript@1.0.so,VNDK-SP, +/system/${LIB}/vndk-sp/android.hidl.base@1.0.so,VNDK-SP, +/system/${LIB}/vndk-sp/android.hidl.memory@1.0-impl.so,VNDK-SP-Indirect-Private, +/system/${LIB}/vndk-sp/android.hidl.memory@1.0.so,VNDK-SP, +/system/${LIB}/vndk-sp/libLLVM.so,VNDK-SP-Indirect-Private, +/system/${LIB}/vndk-sp/libRSCpuRef.so,VNDK-SP, +/system/${LIB}/vndk-sp/libRSDriver.so,VNDK-SP, +/system/${LIB}/vndk-sp/libRS_internal.so,VNDK-SP, +/system/${LIB}/vndk-sp/libbacktrace.so,VNDK-SP-Indirect, +/system/${LIB}/vndk-sp/libbase.so,VNDK-SP, +/system/${LIB}/vndk-sp/libbcinfo.so,VNDK-SP, +/system/${LIB}/vndk-sp/libblas.so,VNDK-SP-Indirect-Private, +/system/${LIB}/vndk-sp/libc++.so,VNDK-SP, +/system/${LIB}/vndk-sp/libcompiler_rt.so,VNDK-SP-Indirect-Private, +/system/${LIB}/vndk-sp/libcutils.so,VNDK-SP, +/system/${LIB}/vndk-sp/libhardware.so,VNDK-SP, +/system/${LIB}/vndk-sp/libhidlbase.so,VNDK-SP, +/system/${LIB}/vndk-sp/libhidlmemory.so,VNDK-SP, +/system/${LIB}/vndk-sp/libhidltransport.so,VNDK-SP, +/system/${LIB}/vndk-sp/libhwbinder.so,VNDK-SP, +/system/${LIB}/vndk-sp/libion.so,VNDK-SP, +/system/${LIB}/vndk-sp/liblzma.so,VNDK-SP-Indirect, +/system/${LIB}/vndk-sp/libunwind.so,VNDK-SP-Indirect, +/system/${LIB}/vndk-sp/libunwindstack.so,VNDK-SP-Indirect, +/system/${LIB}/vndk-sp/libutils.so,VNDK-SP, +/system/${LIB}/vndk-sp/libz.so,VNDK-SP, +/system/${LIB}/vndk/android.frameworks.schedulerservice@1.0.so,VNDK, +/system/${LIB}/vndk/android.frameworks.sensorservice@1.0.so,VNDK, +/system/${LIB}/vndk/android.frameworks.vr.composer@1.0.so,VNDK, +/system/${LIB}/vndk/android.frameworks.vr.composer@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.audio.common@2.0-util.so,VNDK, +/system/${LIB}/vndk/android.hardware.audio.common@2.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.audio.effect@2.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.audio@2.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.automotive.evs@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.automotive.vehicle@2.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.automotive.vehicle@2.1.so,VNDK, +/system/${LIB}/vndk/android.hardware.biometrics.fingerprint@2.1.so,VNDK, +/system/${LIB}/vndk/android.hardware.bluetooth@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.boot@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.broadcastradio@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.broadcastradio@1.1.so,VNDK, +/system/${LIB}/vndk/android.hardware.camera.common@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.camera.device@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.camera.device@3.2.so,VNDK, +/system/${LIB}/vndk/android.hardware.camera.provider@2.4.so,VNDK, +/system/${LIB}/vndk/android.hardware.cas.native@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.cas@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.configstore-utils.so,VNDK, +/system/${LIB}/vndk/android.hardware.configstore@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.configstore@1.1.so,VNDK, +/system/${LIB}/vndk/android.hardware.contexthub@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.drm@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.dumpstate@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.gatekeeper@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.gnss@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.graphics.bufferqueue@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.graphics.composer@2.1.so,VNDK, +/system/${LIB}/vndk/android.hardware.health@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.ir@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.keymaster@3.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.light@2.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.media.omx@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.media@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.memtrack@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.neuralnetworks@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.nfc@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.oemlock@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.power@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.power@1.1.so,VNDK, +/system/${LIB}/vndk/android.hardware.radio.deprecated@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.radio@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.radio@1.1.so,VNDK, +/system/${LIB}/vndk/android.hardware.sensors@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.soundtrigger@2.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.tests.libhwbinder@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.tetheroffload.config@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.tetheroffload.control@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.thermal@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.tv.cec@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.tv.input@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.usb@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.usb@1.1.so,VNDK, +/system/${LIB}/vndk/android.hardware.vibrator@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.vibrator@1.1.so,VNDK, +/system/${LIB}/vndk/android.hardware.vr@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.weaver@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.wifi.offload@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.wifi.supplicant@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.wifi@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.wifi@1.1.so,VNDK, +/system/${LIB}/vndk/android.hidl.allocator@1.0.so,VNDK, +/system/${LIB}/vndk/android.hidl.manager@1.0.so,VNDK, +/system/${LIB}/vndk/android.hidl.token@1.0-utils.so,VNDK, +/system/${LIB}/vndk/android.hidl.token@1.0.so,VNDK, +/system/${LIB}/vndk/android.system.net.netd@1.0.so,VNDK, +/system/${LIB}/vndk/android.system.wifi.keystore@1.0.so,VNDK, +/system/${LIB}/vndk/libEGL.so,VNDK, +/system/${LIB}/vndk/libGLESv2.so,VNDK, +/system/${LIB}/vndk/libaudioroute.so,VNDK, +/system/${LIB}/vndk/libaudioutils.so,VNDK, +/system/${LIB}/vndk/libavservices_minijail.so,VNDK, +/system/${LIB}/vndk/libbinder.so,VNDK, +/system/${LIB}/vndk/libcamera_metadata.so,VNDK, +/system/${LIB}/vndk/libcap.so,VNDK, +/system/${LIB}/vndk/libcrypto.so,VNDK, +/system/${LIB}/vndk/libcrypto_utils.so,VNDK, +/system/${LIB}/vndk/libcurl.so,VNDK, +/system/${LIB}/vndk/libdiskconfig.so,VNDK, +/system/${LIB}/vndk/libdumpstateutil.so,VNDK, +/system/${LIB}/vndk/libevent.so,VNDK, +/system/${LIB}/vndk/libexif.so,VNDK, +/system/${LIB}/vndk/libexpat.so,VNDK, +/system/${LIB}/vndk/libfmq.so,VNDK, +/system/${LIB}/vndk/libgatekeeper.so,VNDK, +/system/${LIB}/vndk/libgui.so,VNDK, +/system/${LIB}/vndk/libhardware_legacy.so,VNDK, +/system/${LIB}/vndk/libicui18n.so,VNDK, +/system/${LIB}/vndk/libicuuc.so,VNDK, +/system/${LIB}/vndk/libjpeg.so,VNDK, +/system/${LIB}/vndk/libkeymaster1.so,VNDK, +/system/${LIB}/vndk/libkeymaster_messages.so,VNDK, +/system/${LIB}/vndk/libkeymaster_portable.so,VNDK, +/system/${LIB}/vndk/libkeymaster_staging.so,VNDK, +/system/${LIB}/vndk/libldacBT_abr.so,VNDK, +/system/${LIB}/vndk/libldacBT_enc.so,VNDK, +/system/${LIB}/vndk/liblz4.so,VNDK, +/system/${LIB}/vndk/libmedia_helper.so,VNDK, +/system/${LIB}/vndk/libmedia_omx.so,VNDK, +/system/${LIB}/vndk/libmemtrack.so,VNDK, +/system/${LIB}/vndk/libminijail.so,VNDK, +/system/${LIB}/vndk/libnbaio.so,VNDK, +/system/${LIB}/vndk/libnetutils.so,VNDK, +/system/${LIB}/vndk/libnl.so,VNDK, +/system/${LIB}/vndk/libpagemap.so,VNDK, +/system/${LIB}/vndk/libpcre2.so,VNDK, +/system/${LIB}/vndk/libpiex.so,VNDK, +/system/${LIB}/vndk/libpng.so,VNDK, +/system/${LIB}/vndk/libpower.so,VNDK, +/system/${LIB}/vndk/libprocinfo.so,VNDK, +/system/${LIB}/vndk/libprotobuf-cpp-full.so,VNDK, +/system/${LIB}/vndk/libprotobuf-cpp-lite.so,VNDK, +/system/${LIB}/vndk/libradio_metadata.so,VNDK, +/system/${LIB}/vndk/libsoftkeymasterdevice.so,VNDK, +/system/${LIB}/vndk/libspeexresampler.so,VNDK, +/system/${LIB}/vndk/libsqlite.so,VNDK, +/system/${LIB}/vndk/libssl.so,VNDK, +/system/${LIB}/vndk/libstagefright_foundation.so,VNDK, +/system/${LIB}/vndk/libstagefright_omx.so,VNDK, +/system/${LIB}/vndk/libstagefright_xmlparser@1.0.so,VNDK, +/system/${LIB}/vndk/libsuspend.so,VNDK, +/system/${LIB}/vndk/libsync.so,VNDK, +/system/${LIB}/vndk/libsysutils.so,VNDK, +/system/${LIB}/vndk/libtinyalsa.so,VNDK, +/system/${LIB}/vndk/libtinyxml2.so,VNDK, +/system/${LIB}/vndk/libui.so,VNDK, +/system/${LIB}/vndk/libusbhost.so,VNDK, +/system/${LIB}/vndk/libvixl-arm.so,VNDK, +/system/${LIB}/vndk/libvixl-arm64.so,VNDK, +/system/${LIB}/vndk/libwifi-system-iface.so,VNDK, +/system/${LIB}/vndk/libxml2.so,VNDK, +/system/${LIB}/vndk/libyuv.so,VNDK, +/system/${LIB}/vndk/libziparchive.so,VNDK, +/vendor/${LIB}/libcld80211.so,VND-ONLY, +/vendor/${LIB}/libhwc2on1adapter.so,VND-ONLY, +/vendor/${LIB}/libnbaio_mono.so,VND-ONLY, +/vendor/${LIB}/libreference-ril.so,VND-ONLY, +/vendor/${LIB}/libril.so,VND-ONLY, +/vendor/${LIB}/librilutils.so,VND-ONLY, +/vendor/${LIB}/libtinycompress.so,VND-ONLY, +/vendor/${LIB}/libwebrtc_audio_preprocessing.so,VND-ONLY, -- cgit v1.2.3 From ac404dce8ce14ae498042f0dbc03e6333e171c9a Mon Sep 17 00:00:00 2001 From: Logan Chien Date: Thu, 17 Aug 2017 20:42:57 +0800 Subject: vndk-def: Support Treble VNDK directory layout This commit adds /system/lib/vndk and /vendor/lib/vndk to the search path for vendor modules. Bug: 64503245 Test: Run `vndk_definition_tool.py vndk` on the device with Treble VNDK directory layout. Test: Run `vndk_definition_tool.py vndk` on sailfish and nothing changes (including warning/error messages). Change-Id: Ifb9dd9b21fb93a3c1f2f6d57c61c7416d6437ddb Merged-In: I7499691c05d66213441371bd18d5b84cf79d6221 (cherry picked from commit 1f01de957bb8e26a0d3ffa919ccf42b267734de2) --- vndk/tools/definition-tool/vndk_definition_tool.py | 78 +++++++++++++++++----- 1 file changed, 60 insertions(+), 18 deletions(-) diff --git a/vndk/tools/definition-tool/vndk_definition_tool.py b/vndk/tools/definition-tool/vndk_definition_tool.py index f432a3e7a..7fef3b652 100755 --- a/vndk/tools/definition-tool/vndk_definition_tool.py +++ b/vndk/tools/definition-tool/vndk_definition_tool.py @@ -1132,53 +1132,95 @@ class ELFLinker(object): '/vendor/${LIB}', '/vendor/${LIB}/vndk-sp', '/system/${LIB}/vndk-sp', + '/vendor/${LIB}/vndk', + '/system/${LIB}/vndk', '/system/${LIB}', # For degenerated VNDK libs. ) VNDK_SP_SEARCH_PATH = ( '/vendor/${LIB}/vndk-sp', '/system/${LIB}/vndk-sp', - '/vendor/${LIB}', # To discover missing vndk-sp dependencies. - '/system/${LIB}', # To discover missing vndk-sp dependencies. + '/vendor/${LIB}', # To discover missing VNDK-SP dependencies. + '/system/${LIB}', # To discover missing VNDK-SP dependencies or LL-NDK. ) + VNDK_SEARCH_PATH = ( + '/vendor/${LIB}/vndk-sp', + '/system/${LIB}/vndk-sp', + '/vendor/${LIB}/vndk', + '/system/${LIB}/vndk', + '/system/${LIB}', # To discover missing VNDK dependencies or LL-NDK. + ) + + @staticmethod def _subst_search_path(search_path, elf_class): lib_dir_name = 'lib' if elf_class == ELF.ELFCLASS32 else 'lib64' return [path.replace('${LIB}', lib_dir_name) for path in search_path] - @staticmethod - def _is_in_vndk_sp_dir(path): - return os.path.basename(os.path.dirname(path)).startswith('vndk-sp') + @classmethod + def _get_dirname(cls, path): + return os.path.basename(os.path.dirname(path)) + + @classmethod + def _is_in_vndk_dir(cls, path): + return cls._get_dirname(path) == 'vndk' + + @classmethod + def _is_in_vndk_sp_dir(cls, path): + return cls._get_dirname(path) == 'vndk-sp' + + @classmethod + def _classify_vndk_libs(cls, libs): + vndk_libs = set() + vndk_sp_libs = set() + other_libs = set() + for lib in libs: + dirname = cls._get_dirname(lib.path) + if dirname == 'vndk': + vndk_libs.add(lib) + elif dirname == 'vndk-sp': + vndk_sp_libs.add(lib) + else: + other_libs.add(lib) + return (vndk_libs, vndk_sp_libs, other_libs) def _resolve_elf_class_deps(self, elf_class, generic_refs): + # Classify libs. + lib_dict = self._compute_lib_dict(elf_class) system_lib_dict = self.lib_pt[PT_SYSTEM].get_lib_dict(elf_class) + system_vndk_libs, system_vndk_sp_libs, system_libs = \ + self._classify_vndk_libs(system_lib_dict.values()) + vendor_lib_dict = self.lib_pt[PT_VENDOR].get_lib_dict(elf_class) - lib_dict = self._compute_lib_dict(elf_class) + vendor_vndk_libs, vendor_vndk_sp_libs, vendor_libs = \ + self._classify_vndk_libs(vendor_lib_dict.values()) + + vndk_libs = system_vndk_libs | vendor_vndk_libs + vndk_sp_libs = system_vndk_sp_libs | vendor_vndk_sp_libs # Resolve system libs. - system_libs = [lib for lib in system_lib_dict.values() - if not self._is_in_vndk_sp_dir(lib.path)] search_path = self._subst_search_path( self.SYSTEM_SEARCH_PATH, elf_class) resolver = ELFResolver(lib_dict, search_path) self._resolve_lib_set_deps(system_libs, resolver, generic_refs) - # Resolve vendor libs. - vendor_libs = [lib for lib in vendor_lib_dict.values() - if not self._is_in_vndk_sp_dir(lib.path)] + # Resolve vndk-sp libs search_path = self._subst_search_path( - self.VENDOR_SEARCH_PATH, elf_class) + self.VNDK_SP_SEARCH_PATH, elf_class) resolver = ELFResolver(lib_dict, search_path) - self._resolve_lib_set_deps(vendor_libs, resolver, generic_refs) + self._resolve_lib_set_deps(vndk_sp_libs, resolver, generic_refs) - # Resolve vndk-sp libs - vndk_sp = [lib for lib in lib_dict.values() - if self._is_in_vndk_sp_dir(lib.path)] + # Resolve vndk libs + search_path = self._subst_search_path(self.VNDK_SEARCH_PATH, elf_class) + resolver = ELFResolver(lib_dict, search_path) + self._resolve_lib_set_deps(vndk_libs, resolver, generic_refs) + + # Resolve vendor libs. search_path = self._subst_search_path( - self.VNDK_SP_SEARCH_PATH, elf_class) + self.VENDOR_SEARCH_PATH, elf_class) resolver = ELFResolver(lib_dict, search_path) - self._resolve_lib_set_deps(vndk_sp, resolver, generic_refs) + self._resolve_lib_set_deps(vendor_libs, resolver, generic_refs) def resolve_deps(self, generic_refs=None): self._resolve_elf_class_deps(ELF.ELFCLASS32, generic_refs) -- cgit v1.2.3 From fdba1f2d706daefae55c721746a7a30d3f48ab93 Mon Sep 17 00:00:00 2001 From: Logan Chien Date: Thu, 17 Aug 2017 23:16:34 +0800 Subject: vndk-def: Generalize FWK-ONLY-RS / VNDK-SP This commit removes compute_predefined_vndk_sp(), compute_predefined_vndk_sp_indirect(), and compute_predefined_fwk_only_rs(). After this commit, definition tool will load the list from the tag file. If the tag file is not specified, then it will load the minimum_tag_file.csv. Bug: 64503245 Test: Run `vndk_definition_tool.py vndk` on sailfish with minor differences. Change-Id: I9adcf1a5448413b8e953bd612b7712381a1bf83f Merged-In: I0d65bcdc9b2bef919bc0686a50afce23ad8f822e (cherry picked from commit c68fe0568b76fd1d542c4ca308b0f2521eecc682) --- .../definition-tool/datasets/minimum_tag_file.csv | 5 + .../tools/definition-tool/tests/test_elf_linker.py | 103 -------------- vndk/tools/definition-tool/vndk_definition_tool.py | 158 ++++++++++----------- 3 files changed, 84 insertions(+), 182 deletions(-) diff --git a/vndk/tools/definition-tool/datasets/minimum_tag_file.csv b/vndk/tools/definition-tool/datasets/minimum_tag_file.csv index 865013dbb..563f8700a 100644 --- a/vndk/tools/definition-tool/datasets/minimum_tag_file.csv +++ b/vndk/tools/definition-tool/datasets/minimum_tag_file.csv @@ -6,8 +6,10 @@ Path,Tag /system/${LIB}/libandroid_net.so,LL-NDK /system/${LIB}/libc.so,LL-NDK /system/${LIB}/libdl.so,LL-NDK +/system/${LIB}/libft2.so,FWK-ONLY-RS /system/${LIB}/liblog.so,LL-NDK /system/${LIB}/libm.so,LL-NDK +/system/${LIB}/libmediandk.so,FWK-ONLY-RS /system/${LIB}/libnativewindow.so,SP-NDK /system/${LIB}/libstdc++.so,LL-NDK /system/${LIB}/libsync.so,SP-NDK @@ -28,7 +30,9 @@ Path,Tag /system/${LIB}/vndk-sp/libbcinfo.so,VNDK-SP /system/${LIB}/vndk-sp/libblas.so,VNDK-SP-Indirect-Private /system/${LIB}/vndk-sp/libc++.so,VNDK-SP +/system/${LIB}/vndk-sp/libcompiler_rt.so,VNDK-SP-Indirect-Private /system/${LIB}/vndk-sp/libcutils.so,VNDK-SP +/system/${LIB}/vndk-sp/libft2.so,FWK-ONLY-RS /system/${LIB}/vndk-sp/libhardware.so,VNDK-SP /system/${LIB}/vndk-sp/libhidlbase.so,VNDK-SP /system/${LIB}/vndk-sp/libhidlmemory.so,VNDK-SP @@ -36,5 +40,6 @@ Path,Tag /system/${LIB}/vndk-sp/libhwbinder.so,VNDK-SP /system/${LIB}/vndk-sp/libion.so,VNDK-SP /system/${LIB}/vndk-sp/liblzma.so,VNDK-SP-Indirect +/system/${LIB}/vndk-sp/libmediandk.so,FWK-ONLY-RS /system/${LIB}/vndk-sp/libunwind.so,VNDK-SP-Indirect /system/${LIB}/vndk-sp/libutils.so,VNDK-SP diff --git a/vndk/tools/definition-tool/tests/test_elf_linker.py b/vndk/tools/definition-tool/tests/test_elf_linker.py index 6faa9d217..76e0eafa4 100755 --- a/vndk/tools/definition-tool/tests/test_elf_linker.py +++ b/vndk/tools/definition-tool/tests/test_elf_linker.py @@ -233,109 +233,6 @@ class ELFLinkerTest(unittest.TestCase): node = graph.get_lib('/vendor/lib64/libEGL.so') self.assertEqual([], self._get_paths_from_nodes(node.users)) - def test_compute_predefined_fwk_only_rs(self): - lib_names = ( - 'libft2', - 'libmediandk', - ) - - # Add VNDK-SP libraries. - gb = GraphBuilder() - for name in lib_names: - gb.add_multilib(PT_SYSTEM, name) - gb.resolve() - - # Compute FWK-ONLY-RS and check the result. - fwk_only_rs = gb.graph.compute_predefined_fwk_only_rs() - fwk_only_rs = set(lib.path for lib in fwk_only_rs) - - for lib_dir_name in ('lib', 'lib64'): - lib_dir = '/system/' + lib_dir_name - for name in lib_names: - self.assertIn(os.path.join(lib_dir, name + '.so'), fwk_only_rs) - - def test_compute_predefined_vndk_sp(self): - lib_names = ( - 'android.hardware.graphics.allocator@2.0', - 'android.hardware.graphics.common@1.0', - 'android.hardware.graphics.mapper@2.0', - 'android.hardware.renderscript@1.0', - 'libRSCpuRef', - 'libRSDriver', - 'libRS_internal', - 'libbase', - 'libbcinfo', - 'libc++', - 'libcompiler_rt', - 'libcutils', - 'libhardware', - 'libhidlbase', - 'libhidltransport', - 'libhwbinder', - 'libutils', - ) - - # Add VNDK-SP libraries. - gb = GraphBuilder() - for name in lib_names: - gb.add_multilib(PT_SYSTEM, name, extra_dir='vndk-sp') - - # Add some unrelated libraries. - gb.add_multilib(PT_SYSTEM, 'libfoo') - gb.add_multilib(PT_SYSTEM, 'libbar', extra_dir='vndk-sp') - - gb.resolve() - - # Compute VNDK-SP and check the result. - vndk_sp = set(lib.path for lib in gb.graph.compute_predefined_vndk_sp()) - - for lib_dir_name in ('lib', 'lib64'): - lib_dir = '/system/' + lib_dir_name + '/vndk-sp' - for name in lib_names: - self.assertIn(os.path.join(lib_dir, name + '.so'), vndk_sp) - - self.assertNotIn('/system/lib/libfoo.so', vndk_sp) - self.assertNotIn('/system/lib64/libfoo.so', vndk_sp) - - self.assertNotIn('/system/lib/vndk-sp/libbar.so', vndk_sp) - self.assertNotIn('/system/lib64/vndk-sp/libbar.so', vndk_sp) - - def test_compute_predefined_vndk_sp_indirect(self): - lib_names = ( - 'libbacktrace', - 'libblas', - 'liblzma', - 'libpng', - 'libunwind', - ) - - # Add VNDK-SP-Indirect libraries. - gb = GraphBuilder() - for name in lib_names: - gb.add_multilib(PT_SYSTEM, name, extra_dir='vndk-sp') - - # Add some unrelated libraries. - gb.add_multilib(PT_SYSTEM, 'libfoo') - gb.add_multilib(PT_SYSTEM, 'libbar', extra_dir='vndk-sp') - - gb.resolve() - - # Compute VNDK-SP-Indirect and check the result. - vndk_sp_indirect = gb.graph.compute_predefined_vndk_sp_indirect() - vndk_sp_indirect = set(lib.path for lib in vndk_sp_indirect) - - for lib_dir_name in ('lib', 'lib64'): - lib_dir = '/system/' + lib_dir_name + '/vndk-sp' - for name in lib_names: - self.assertIn(os.path.join(lib_dir, name + '.so'), - vndk_sp_indirect) - - self.assertNotIn('/system/lib/libfoo.so', vndk_sp_indirect) - self.assertNotIn('/system/lib64/libfoo.so', vndk_sp_indirect) - - self.assertNotIn('/system/lib/vndk-sp/libbar.so', vndk_sp_indirect) - self.assertNotIn('/system/lib64/vndk-sp/libbar.so', vndk_sp_indirect) - def test_compute_predefined_sp_hal(self): gb = GraphBuilder() diff --git a/vndk/tools/definition-tool/vndk_definition_tool.py b/vndk/tools/definition-tool/vndk_definition_tool.py index 7fef3b652..80e9eac69 100755 --- a/vndk/tools/definition-tool/vndk_definition_tool.py +++ b/vndk/tools/definition-tool/vndk_definition_tool.py @@ -655,6 +655,22 @@ class TaggedDict(object): def is_sp_ndk(tag_bit): return bool(tag_bit & TaggedDict.SP_NDK) + @staticmethod + def is_vndk_sp(tag_bit): + return bool(tag_bit & TaggedDict.VNDK_SP) + + @staticmethod + def is_vndk_sp_indirect(tag_bit): + return bool(tag_bit & TaggedDict.VNDK_SP_INDIRECT) + + @staticmethod + def is_vndk_sp_indirect_private(tag_bit): + return bool(tag_bit & TaggedDict.VNDK_SP_INDIRECT_PRIVATE) + + @staticmethod + def is_fwk_only_rs(tag_bit): + return bool(tag_bit & TaggedDict.FWK_ONLY_RS) + class TaggedPathDict(TaggedDict): def load_from_csv(self, fp): @@ -825,6 +841,22 @@ class ELFLinkData(object): def is_sp_ndk(self): return TaggedDict.is_sp_ndk(self._tag_bit) + @property + def is_vndk_sp(self): + return TaggedDict.is_vndk_sp(self._tag_bit) + + @property + def is_vndk_sp_indirect(self): + return TaggedDict.is_vndk_sp_indirect(self._tag_bit) + + @property + def is_vndk_sp_indirect_private(self): + return TaggedDict.is_vndk_sp_indirect_private(self._tag_bit) + + @property + def is_fwk_only_rs(self): + return TaggedDict.is_fwk_only_rs(self._tag_bit) + def add_dep(self, dst, ty): self._deps[ty].add(dst) dst._users[ty].add(self) @@ -1230,53 +1262,6 @@ class ELFLinker(object): patt = re.compile('|'.join('(?:' + p + ')' for p in path_patterns)) return set(lib for lib in self.all_libs() if patt.match(lib.path)) - def compute_predefined_fwk_only_rs(self): - """Find all fwk-only-rs libraries.""" - path_patterns = ( - '^/system/lib(?:64)?/(?:vndk-sp/)?libft2\\.so$', - '^/system/lib(?:64)?/(?:vndk-sp/)?libmediandk\\.so', - ) - return self.compute_path_matched_lib(path_patterns) - - def compute_predefined_vndk_sp(self): - """Find all vndk-sp libraries.""" - path_patterns = ( - # Visible to SP-HALs - '^.*/android\\.hardware\\.graphics\\.allocator@2\\.0\\.so$', - '^.*/android\\.hardware\\.graphics\\.common@1\\.0\\.so$', - '^.*/android\\.hardware\\.graphics\\.mapper@2\\.0\\.so$', - '^.*/android\\.hardware\\.renderscript@1\\.0\\.so$', - '^.*/libRSCpuRef\\.so$', - '^.*/libRSDriver\\.so$', - '^.*/libRS_internal\\.so$', - '^.*/libbase\\.so$', - '^.*/libbcinfo\\.so$', - '^.*/libc\\+\\+\\.so$', - '^.*/libcompiler_rt\\.so$', - '^.*/libcutils\\.so$', - '^.*/libhardware\\.so$', - '^.*/libhidlbase\\.so$', - '^.*/libhidltransport\\.so$', - '^.*/libhwbinder\\.so$', - '^.*/libutils\\.so$', - - # Only for o-release - '^.*/android\\.hidl\\.base@1\\.0\\.so$', - ) - return self.compute_path_matched_lib(path_patterns) - - def compute_predefined_vndk_sp_indirect(self): - """Find all vndk-sp-indirect libraries.""" - path_patterns = ( - # Invisible to SP-HALs - '^.*/libbacktrace\\.so$', - '^.*/libblas\\.so$', - '^.*/liblzma\\.so$', - '^.*/libpng\\.so$', - '^.*/libunwind\\.so$', - ) - return self.compute_path_matched_lib(path_patterns) - def compute_predefined_sp_hal(self): """Find all same-process HALs.""" path_patterns = ( @@ -1417,6 +1402,19 @@ class ELFLinker(object): ll_ndk = set(lib for lib in self.all_libs() if lib.is_ll_ndk) sp_ndk = set(lib for lib in self.all_libs() if lib.is_sp_ndk) + # Find pre-defined libs. + fwk_only_rs = set(lib for lib in self.all_libs() if lib.is_fwk_only_rs) + predefined_vndk_sp = set( + lib for lib in self.all_libs() if lib.is_vndk_sp) + predefined_vndk_sp_indirect = set( + lib for lib in self.all_libs() if lib.is_vndk_sp_indirect) + predefined_vndk_sp_indirect_private = set( + lib for lib in self.all_libs() + if lib.is_vndk_sp_indirect_private) + + # FIXME: Don't squash VNDK-SP-Indirect-Private into VNDK-SP-Indirect. + predefined_vndk_sp_indirect |= predefined_vndk_sp_indirect_private + # Find SP-HAL libs. sp_hal = self.compute_predefined_sp_hal() @@ -1441,9 +1439,6 @@ class ELFLinker(object): sp_hal_dep = self.compute_closure(sp_hal, is_not_sp_hal_dep) sp_hal_dep -= sp_hal - # Find FWK-ONLY-RS libs. - fwk_only_rs = self.compute_predefined_fwk_only_rs() - # Find VNDK-SP libs. def is_not_vndk_sp(lib): return lib.is_ll_ndk or lib.is_sp_ndk or lib in sp_hal or \ @@ -1451,7 +1446,6 @@ class ELFLinker(object): follow_ineligible_vndk_sp, warn_ineligible_vndk_sp = \ self._parse_action_on_ineligible_lib(action_ineligible_vndk_sp) - predefined_vndk_sp = self.compute_predefined_vndk_sp() vndk_sp = set() for lib in itertools.chain(sp_hal, sp_hal_dep): for dep in lib.deps: @@ -1485,13 +1479,20 @@ class ELFLinker(object): # Find dependencies of unused predefined VNDK-SP libs. def is_not_vndk_sp_indirect_unused(lib): return is_not_vndk_sp_indirect(lib) or lib in vndk_sp_indirect - vndk_sp_indirect_unused = self.compute_closure( + vndk_sp_unused_deps = self.compute_closure( vndk_sp_unused, is_not_vndk_sp_indirect_unused) - vndk_sp_indirect_unused -= vndk_sp_unused + vndk_sp_unused_deps -= vndk_sp_unused + + vndk_sp_indirect_unused = \ + predefined_vndk_sp_indirect - vndk_sp_indirect - vndk_sp_unused + vndk_sp_indirect_unused |= vndk_sp_unused_deps # TODO: Compute VNDK-SP-Indirect-Private. vndk_sp_indirect_private = set() + assert not (vndk_sp & vndk_sp_indirect) + assert not (vndk_sp_unused & vndk_sp_indirect_unused) + # Define helper functions for vndk_sp sets. def is_vndk_sp_public(lib): return lib in vndk_sp or lib in vndk_sp_unused or \ @@ -1514,8 +1515,10 @@ class ELFLinker(object): vndk_sp_indirect_unused.remove(lib) vndk_sp_indirect.add(lib) - closure = self.compute_closure({lib}, is_not_vndk_sp_indirect) - closure -= vndk_sp + # Add the dependencies to vndk_sp_indirect if they are not vndk_sp. + closure = self.compute_closure( + {lib}, lambda lib: lib not in vndk_sp_indirect_unused) + closure.remove(lib) vndk_sp_indirect_unused.difference_update(closure) vndk_sp_indirect.update(closure) @@ -1535,7 +1538,6 @@ class ELFLinker(object): candidates = collect_vndk_ext(candidates) # Find VNDK-SP-Indirect-Ext libs. - predefined_vndk_sp_indirect = self.compute_predefined_vndk_sp_indirect() vndk_sp_indirect_ext = set() def collect_vndk_sp_indirect_ext(libs): result = set() @@ -1708,8 +1710,8 @@ class ELFLinker(object): def _create_internal(scan_elf_files, system_dirs, system_dirs_as_vendor, system_dirs_ignored, vendor_dirs, vendor_dirs_as_system, vendor_dirs_ignored, - extra_deps, generic_refs): - graph = ELFLinker() + extra_deps, generic_refs, tagged_paths): + graph = ELFLinker(tagged_paths) if system_dirs: for path in system_dirs: @@ -1737,11 +1739,11 @@ class ELFLinker(object): def create(system_dirs=None, system_dirs_as_vendor=None, system_dirs_ignored=None, vendor_dirs=None, vendor_dirs_as_system=None, vendor_dirs_ignored=None, - extra_deps=None, generic_refs=None): + extra_deps=None, generic_refs=None, tagged_paths=None): return ELFLinker._create_internal( scan_elf_files, system_dirs, system_dirs_as_vendor, system_dirs_ignored, vendor_dirs, vendor_dirs_as_system, - vendor_dirs_ignored, extra_deps, generic_refs) + vendor_dirs_ignored, extra_deps, generic_refs, tagged_paths) @staticmethod def create_from_dump(system_dirs=None, system_dirs_as_vendor=None, @@ -1749,7 +1751,8 @@ class ELFLinker(object): extra_deps=None, generic_refs=None): return ELFLinker._create_internal( scan_elf_dump_files, system_dirs, system_dirs_as_vendor, - vendor_dirs, vendor_dirs_as_system, extra_deps, generic_refs) + vendor_dirs, vendor_dirs_as_system, extra_deps, generic_refs, + tagged_paths) #------------------------------------------------------------------------------ @@ -1953,6 +1956,8 @@ class ELFGraphCommand(Command): '--aosp-system', help='compare with AOSP generic system image directory') + parser.add_argument('--tag-file', help='lib tag file') + def get_generic_refs_from_args(self, args): if args.load_generic_refs: return GenericRefs.create_from_sym_dir(args.load_generic_refs) @@ -1981,6 +1986,11 @@ class ELFGraphCommand(Command): generic_refs = self.get_generic_refs_from_args(args) + if args.tag_file: + tagged_paths = TaggedPathDict.create_from_csv_path(args.tag_file) + else: + tagged_paths = None + graph = ELFLinker.create(args.system, args.system_dir_as_vendor, args.system_dir_ignored, args.vendor, args.vendor_dir_as_system, @@ -1988,7 +1998,7 @@ class ELFGraphCommand(Command): args.load_extra_deps, generic_refs=generic_refs) - return (generic_refs, graph) + return (generic_refs, graph, tagged_paths) class VNDKCommandBase(ELFGraphCommand): @@ -1998,8 +2008,6 @@ class VNDKCommandBase(ELFGraphCommand): parser.add_argument('--no-default-dlopen-deps', action='store_true', help='do not add default dlopen dependencies') - parser.add_argument('--tag-file', help='lib tag file') - parser.add_argument( '--action-ineligible-vndk-sp', default='warn', help='action when a sp-hal uses non-vndk-sp libs ' @@ -2013,7 +2021,7 @@ class VNDKCommandBase(ELFGraphCommand): def create_from_args(self, args): """Create all essential data structures for VNDK computation.""" - generic_refs, graph = \ + generic_refs, graph, tagged_paths = \ super(VNDKCommandBase, self).create_from_args(args) if not args.no_default_dlopen_deps: @@ -2022,11 +2030,6 @@ class VNDKCommandBase(ELFGraphCommand): 'minimum_dlopen_deps.txt') graph.load_extra_deps(minimum_dlopen_deps) - if args.tag_file: - tagged_paths = TaggedPathDict.create_from_csv_path(args.tag_file) - else: - tagged_paths = None - return (generic_refs, graph, tagged_paths) @@ -2280,7 +2283,7 @@ class DepsCommand(ELFGraphCommand): parser.add_argument('--module-info') def main(self, args): - generic_refs, graph = self.create_from_args(args) + generic_refs, graph, tagged_paths = self.create_from_args(args) module_info = ModuleInfo.load_from_path_or_default(args.module_info) @@ -2359,7 +2362,7 @@ class DepsClosureCommand(ELFGraphCommand): def main(self, args): - generic_refs, graph = self.create_from_args(args) + generic_refs, graph, tagged_paths = self.create_from_args(args) # Find root/excluded libraries by their paths. def report_error(path): @@ -2412,7 +2415,7 @@ class DepsUnresolvedCommand(ELFGraphCommand): print('\tUNRESOLVED_SYMBOL:', symbol) def main(self, args): - generic_refs, graph = self.create_from_args(args) + generic_refs, graph, tagged_paths = self.create_from_args(args) module_info = ModuleInfo.load_from_path_or_default(args.module_info) libs = graph.all_libs() @@ -2427,8 +2430,6 @@ class CheckDepCommandBase(ELFGraphCommand): def add_argparser_options(self, parser): super(CheckDepCommandBase, self).add_argparser_options(parser) - parser.add_argument('--tag-file', required=True) - parser.add_argument('--module-info') @staticmethod @@ -2488,7 +2489,7 @@ class CheckDepCommand(CheckDepCommandBase): return num_errors def main(self, args): - generic_refs, graph = self.create_from_args(args) + generic_refs, graph, tagged_paths = self.create_from_args(args) tagged_paths = TaggedPathDict.create_from_csv_path(args.tag_file) tagged_libs = TaggedLibDict.create_from_graph(graph, tagged_paths) @@ -2546,7 +2547,7 @@ class CheckEligibleListCommand(CheckDepCommandBase): return num_errors def main(self, args): - generic_refs, graph = self.create_from_args(args) + generic_refs, graph, tagged_paths = self.create_from_args(args) tagged_paths = TaggedPathDict.create_from_csv_path(args.tag_file) tagged_libs = TaggedLibDict.create_from_graph(graph, tagged_paths) @@ -2566,7 +2567,6 @@ class DepGraphCommand(ELFGraphCommand): def add_argparser_options(self, parser): super(DepGraphCommand, self).add_argparser_options(parser) - parser.add_argument('--tag-file', required=True) parser.add_argument('--output', '-o', help='output directory') def _get_tag_from_lib(self, lib, tagged_paths): @@ -2621,7 +2621,7 @@ class DepGraphCommand(ELFGraphCommand): return data, violate_libs def main(self, args): - generic_refs, graph = self.create_from_args(args) + generic_refs, graph, tagged_paths = self.create_from_args(args) tagged_paths = TaggedPathDict.create_from_csv_path(args.tag_file) data, violate_libs = self._get_dep_graph(graph, tagged_paths) -- cgit v1.2.3 From 6dfd48ae4a9475840ab50822b3a08957d5f3ad33 Mon Sep 17 00:00:00 2001 From: Logan Chien Date: Mon, 21 Aug 2017 16:38:30 +0800 Subject: vndk-def: Update eligible-list-o-mr1-release.csv This commit removes stale libraries from the list, add missing VNDK libraries, and relabel several libraries from VNDK to FWK-ONLY. Bug: 64503245 Test: Run `vndk_definition_tool.py vndk` on a device and compare it with the old result. Change-Id: Ic01dc6de44ea372100ffb27c045c5196641ba45a Merged-In: I2f6a5275a255e5f9a85c3b6b737301c7f03cac28 (cherry picked from commit 31300b1c7c4fed11670491c6edc84380d0f4e0a9) --- .../datasets/eligible-list-o-mr1-release.csv | 174 +++++++++++++-------- 1 file changed, 112 insertions(+), 62 deletions(-) diff --git a/vndk/tools/definition-tool/datasets/eligible-list-o-mr1-release.csv b/vndk/tools/definition-tool/datasets/eligible-list-o-mr1-release.csv index a9d44cd91..7fa90fe09 100644 --- a/vndk/tools/definition-tool/datasets/eligible-list-o-mr1-release.csv +++ b/vndk/tools/definition-tool/datasets/eligible-list-o-mr1-release.csv @@ -1,8 +1,8 @@ Path,Tag,v3.7 +/system/${LIB}/android.frameworks.displayservice@1.0.so,VNDK, /system/${LIB}/android.frameworks.schedulerservice@1.0.so,VNDK, /system/${LIB}/android.frameworks.sensorservice@1.0.so,VNDK, /system/${LIB}/android.frameworks.vr.composer@1.0.so,VNDK, -/system/${LIB}/android.frameworks.vr.composer@1.0.so,VNDK, /system/${LIB}/android.hardware.audio.common@2.0-util.so,VNDK, /system/${LIB}/android.hardware.audio.common@2.0.so,VNDK, /system/${LIB}/android.hardware.audio.effect@2.0.so,VNDK, @@ -18,6 +18,7 @@ Path,Tag,v3.7 /system/${LIB}/android.hardware.camera.common@1.0.so,VNDK, /system/${LIB}/android.hardware.camera.device@1.0.so,VNDK, /system/${LIB}/android.hardware.camera.device@3.2.so,VNDK, +/system/${LIB}/android.hardware.camera.metadata@3.2.so,VNDK, /system/${LIB}/android.hardware.camera.provider@2.4.so,VNDK, /system/${LIB}/android.hardware.cas.native@1.0.so,VNDK, /system/${LIB}/android.hardware.cas@1.0.so,VNDK, @@ -52,10 +53,22 @@ Path,Tag,v3.7 /system/${LIB}/android.hardware.renderscript@1.0.so,VNDK-SP, /system/${LIB}/android.hardware.sensors@1.0.so,VNDK, /system/${LIB}/android.hardware.soundtrigger@2.0.so,VNDK, +/system/${LIB}/android.hardware.tests.bar@1.0.so,VNDK, +/system/${LIB}/android.hardware.tests.baz@1.0.so,VNDK, +/system/${LIB}/android.hardware.tests.expression@1.0.so,VNDK, +/system/${LIB}/android.hardware.tests.extension.light@2.0.so,VNDK, +/system/${LIB}/android.hardware.tests.foo@1.0.so,VNDK, +/system/${LIB}/android.hardware.tests.hash@1.0.so,VNDK, +/system/${LIB}/android.hardware.tests.inheritance@1.0.so,VNDK, /system/${LIB}/android.hardware.tests.libhwbinder@1.0.so,VNDK, +/system/${LIB}/android.hardware.tests.memory@1.0.so,VNDK, +/system/${LIB}/android.hardware.tests.msgq@1.0.so,VNDK, +/system/${LIB}/android.hardware.tests.multithread@1.0.so,VNDK, +/system/${LIB}/android.hardware.tests.pointer@1.0.so,VNDK, /system/${LIB}/android.hardware.tetheroffload.config@1.0.so,VNDK, /system/${LIB}/android.hardware.tetheroffload.control@1.0.so,VNDK, /system/${LIB}/android.hardware.thermal@1.0.so,VNDK, +/system/${LIB}/android.hardware.thermal@1.1.so,VNDK, /system/${LIB}/android.hardware.tv.cec@1.0.so,VNDK, /system/${LIB}/android.hardware.tv.input@1.0.so,VNDK, /system/${LIB}/android.hardware.usb@1.0.so,VNDK, @@ -69,8 +82,6 @@ Path,Tag,v3.7 /system/${LIB}/android.hardware.wifi@1.0.so,VNDK, /system/${LIB}/android.hardware.wifi@1.1.so,VNDK, /system/${LIB}/android.hidl.allocator@1.0.so,VNDK, -/system/${LIB}/android.hidl.base@1.0.so,VNDK-SP, -/system/${LIB}/android.hidl.manager@1.0.so,VNDK, /system/${LIB}/android.hidl.memory@1.0.so,VNDK-SP, /system/${LIB}/android.hidl.token@1.0-utils.so,VNDK, /system/${LIB}/android.hidl.token@1.0.so,VNDK, @@ -85,14 +96,11 @@ Path,Tag,v3.7 /system/${LIB}/libETC1.so,FWK-ONLY, /system/${LIB}/libFFTEm.so,FWK-ONLY, /system/${LIB}/libGLESv1_CM.so,SP-NDK, -/system/${LIB}/libGLESv1_enc.so,FWK-ONLY, /system/${LIB}/libGLESv2.so,SP-NDK, -/system/${LIB}/libGLESv2_enc.so,FWK-ONLY, /system/${LIB}/libGLESv3.so,SP-NDK, -/system/${LIB}/libLLVM.so,VNDK-SP-Indirect-Private, +/system/${LIB}/libLLVM.so,FWK-ONLY, /system/${LIB}/libOpenMAXAL.so,FWK-ONLY, /system/${LIB}/libOpenSLES.so,FWK-ONLY, -/system/${LIB}/libOpenglSystemCommon.so,FWK-ONLY, /system/${LIB}/libRS.so,FWK-ONLY, /system/${LIB}/libRSCpuRef.so,VNDK-SP, /system/${LIB}/libRSDriver.so,VNDK-SP, @@ -100,7 +108,6 @@ Path,Tag,v3.7 /system/${LIB}/libRScpp.so,FWK-ONLY, /system/${LIB}/libWnnEngDic.so,FWK-ONLY, /system/${LIB}/libWnnJpnDic.so,FWK-ONLY, -/system/${LIB}/lib_renderControl_enc.so,FWK-ONLY, /system/${LIB}/libaaudio.so,FWK-ONLY, /system/${LIB}/libandroid.so,FWK-ONLY, /system/${LIB}/libandroid_net.so,LL-NDK, @@ -147,7 +154,12 @@ Path,Tag,v3.7 /system/${LIB}/libcameraservice.so,FWK-ONLY, /system/${LIB}/libcap.so,VNDK, /system/${LIB}/libchrome.so,FWK-ONLY, -/system/${LIB}/libcld80211.so,VND-ONLY, +/system/${LIB}/libclang_rt.ubsan_standalone-aarch64-android.so,VNDK, +/system/${LIB}/libclang_rt.ubsan_standalone-arm-android.so,VNDK, +/system/${LIB}/libclang_rt.ubsan_standalone-i686-android.so,VNDK, +/system/${LIB}/libclang_rt.ubsan_standalone-mips-android.so,VNDK, +/system/${LIB}/libclang_rt.ubsan_standalone-mips64-android.so,VNDK, +/system/${LIB}/libclang_rt.ubsan_standalone-x86_64-android.so,VNDK, /system/${LIB}/libcompiler_rt.so,VNDK-SP-Indirect-Private, /system/${LIB}/libcrypto.so,VNDK, /system/${LIB}/libcrypto_utils.so,VNDK, @@ -163,7 +175,6 @@ Path,Tag,v3.7 /system/${LIB}/libdrmframework_jni.so,FWK-ONLY, /system/${LIB}/libdumpstateaidl.so,FWK-ONLY, /system/${LIB}/libdumpstateutil.so,VNDK, -/system/${LIB}/libeffects.so,FWK-ONLY, /system/${LIB}/libevent.so,VNDK, /system/${LIB}/libexif.so,VNDK, /system/${LIB}/libexpat.so,VNDK, @@ -192,7 +203,6 @@ Path,Tag,v3.7 /system/${LIB}/libhidlmemory.so,VNDK-SP, /system/${LIB}/libhidltransport.so,VNDK-SP, /system/${LIB}/libhwbinder.so,VNDK-SP, -/system/${LIB}/libhwc2on1adapter.so,VND-ONLY, /system/${LIB}/libhwui.so,FWK-ONLY, /system/${LIB}/libicui18n.so,VNDK, /system/${LIB}/libicuuc.so,VNDK, @@ -215,7 +225,6 @@ Path,Tag,v3.7 /system/${LIB}/libjni_tinyplanet.so,FWK-ONLY, /system/${LIB}/libjnigraphics.so,FWK-ONLY, /system/${LIB}/libjpeg.so,VNDK, -/system/${LIB}/libkeymaster1.so,VNDK, /system/${LIB}/libkeymaster_messages.so,VNDK, /system/${LIB}/libkeymaster_portable.so,VNDK, /system/${LIB}/libkeymaster_staging.so,VNDK, @@ -251,7 +260,7 @@ Path,Tag,v3.7 /system/${LIB}/libnativehelper.so,FWK-ONLY, /system/${LIB}/libnativeloader.so,FWK-ONLY, /system/${LIB}/libnativewindow.so,SP-NDK, -/system/${LIB}/libnbaio.so,VNDK, +/system/${LIB}/libnbaio.so,FWK-ONLY, /system/${LIB}/libnetd_client.so,LL-NDK-Indirect, /system/${LIB}/libnetdaidl.so,FWK-ONLY, /system/${LIB}/libnetlink.so,FWK-ONLY, @@ -260,7 +269,7 @@ Path,Tag,v3.7 /system/${LIB}/libopenjdk.so,FWK-ONLY, /system/${LIB}/libopenjdkjvm.so,FWK-ONLY, /system/${LIB}/libopenjdkjvmti.so,FWK-ONLY, -/system/${LIB}/libopus.so,FWK-ONLY, +/system/${LIB}/libopus.so,VNDK, /system/${LIB}/libpac.so,FWK-ONLY, /system/${LIB}/libpackagelistparser.so,FWK-ONLY, /system/${LIB}/libpagemap.so,VNDK, @@ -278,12 +287,7 @@ Path,Tag,v3.7 /system/${LIB}/libprocinfo.so,VNDK, /system/${LIB}/libprotobuf-cpp-full.so,VNDK, /system/${LIB}/libprotobuf-cpp-lite.so,VNDK, -/system/${LIB}/libradio.so,FWK-ONLY, /system/${LIB}/libradio_metadata.so,VNDK, -/system/${LIB}/libradioservice.so,FWK-ONLY, -/system/${LIB}/libreference-ril.so,VND-ONLY, -/system/${LIB}/libril.so,VND-ONLY, -/system/${LIB}/librilutils.so,VND-ONLY, /system/${LIB}/librs_jni.so,FWK-ONLY, /system/${LIB}/librtp_jni.so,FWK-ONLY, /system/${LIB}/libschedulerservicehidl.so,FWK-ONLY, @@ -307,32 +311,34 @@ Path,Tag,v3.7 /system/${LIB}/libsqlite.so,VNDK, /system/${LIB}/libssl.so,VNDK, /system/${LIB}/libstagefright.so,FWK-ONLY, -/system/${LIB}/libstagefright_amrnb_common.so,FWK-ONLY, -/system/${LIB}/libstagefright_enc_common.so,FWK-ONLY, +/system/${LIB}/libstagefright_amrnb_common.so,VNDK, +/system/${LIB}/libstagefright_enc_common.so,VNDK, +/system/${LIB}/libstagefright_flacdec.so,VNDK, /system/${LIB}/libstagefright_foundation.so,VNDK, /system/${LIB}/libstagefright_http_support.so,FWK-ONLY, /system/${LIB}/libstagefright_omx.so,VNDK, -/system/${LIB}/libstagefright_soft_aacdec.so,FWK-ONLY, -/system/${LIB}/libstagefright_soft_aacenc.so,FWK-ONLY, -/system/${LIB}/libstagefright_soft_amrdec.so,FWK-ONLY, -/system/${LIB}/libstagefright_soft_amrnbenc.so,FWK-ONLY, -/system/${LIB}/libstagefright_soft_amrwbenc.so,FWK-ONLY, -/system/${LIB}/libstagefright_soft_avcdec.so,FWK-ONLY, -/system/${LIB}/libstagefright_soft_avcenc.so,FWK-ONLY, -/system/${LIB}/libstagefright_soft_flacenc.so,FWK-ONLY, -/system/${LIB}/libstagefright_soft_g711dec.so,FWK-ONLY, -/system/${LIB}/libstagefright_soft_gsmdec.so,FWK-ONLY, -/system/${LIB}/libstagefright_soft_hevcdec.so,FWK-ONLY, -/system/${LIB}/libstagefright_soft_mp3dec.so,FWK-ONLY, -/system/${LIB}/libstagefright_soft_mpeg2dec.so,FWK-ONLY, -/system/${LIB}/libstagefright_soft_mpeg4dec.so,FWK-ONLY, -/system/${LIB}/libstagefright_soft_mpeg4enc.so,FWK-ONLY, -/system/${LIB}/libstagefright_soft_opusdec.so,FWK-ONLY, -/system/${LIB}/libstagefright_soft_rawdec.so,FWK-ONLY, -/system/${LIB}/libstagefright_soft_vorbisdec.so,FWK-ONLY, -/system/${LIB}/libstagefright_soft_vpxdec.so,FWK-ONLY, -/system/${LIB}/libstagefright_soft_vpxenc.so,FWK-ONLY, -/system/${LIB}/libstagefright_xmlparser@1.0.so,VNDK, +/system/${LIB}/libstagefright_soft_aacdec.so,VNDK, +/system/${LIB}/libstagefright_soft_aacenc.so,VNDK, +/system/${LIB}/libstagefright_soft_amrdec.so,VNDK, +/system/${LIB}/libstagefright_soft_amrnbenc.so,VNDK, +/system/${LIB}/libstagefright_soft_amrwbenc.so,VNDK, +/system/${LIB}/libstagefright_soft_avcdec.so,VNDK, +/system/${LIB}/libstagefright_soft_avcenc.so,VNDK, +/system/${LIB}/libstagefright_soft_flacdec.so,VNDK, +/system/${LIB}/libstagefright_soft_flacenc.so,VNDK, +/system/${LIB}/libstagefright_soft_g711dec.so,VNDK, +/system/${LIB}/libstagefright_soft_gsmdec.so,VNDK, +/system/${LIB}/libstagefright_soft_hevcdec.so,VNDK, +/system/${LIB}/libstagefright_soft_mp3dec.so,VNDK, +/system/${LIB}/libstagefright_soft_mpeg2dec.so,VNDK, +/system/${LIB}/libstagefright_soft_mpeg4dec.so,VNDK, +/system/${LIB}/libstagefright_soft_mpeg4enc.so,VNDK, +/system/${LIB}/libstagefright_soft_opusdec.so,VNDK, +/system/${LIB}/libstagefright_soft_rawdec.so,VNDK, +/system/${LIB}/libstagefright_soft_vorbisdec.so,VNDK, +/system/${LIB}/libstagefright_soft_vpxdec.so,VNDK, +/system/${LIB}/libstagefright_soft_vpxenc.so,VNDK, +/system/${LIB}/libstagefright_xmlparser.so,VNDK, /system/${LIB}/libstdc++.so,LL-NDK, /system/${LIB}/libsurfaceflinger.so,FWK-ONLY, /system/${LIB}/libsurfaceflinger_ddmconnection.so,FWK-ONLY, @@ -341,7 +347,6 @@ Path,Tag,v3.7 /system/${LIB}/libsysutils.so,VNDK, /system/${LIB}/libtextclassifier.so,FWK-ONLY, /system/${LIB}/libtinyalsa.so,VNDK, -/system/${LIB}/libtinycompress.so,VND-ONLY, /system/${LIB}/libtinyxml2.so,VNDK, /system/${LIB}/libui.so,VNDK, /system/${LIB}/libunwind.so,VNDK-SP-Indirect, @@ -352,9 +357,8 @@ Path,Tag,v3.7 /system/${LIB}/libvixl-arm.so,VNDK, /system/${LIB}/libvixl-arm64.so,VNDK, /system/${LIB}/libvndksupport.so,LL-NDK, -/system/${LIB}/libvorbisidec.so,FWK-ONLY, +/system/${LIB}/libvorbisidec.so,VNDK, /system/${LIB}/libvulkan.so,SP-NDK, -/system/${LIB}/libwebrtc_audio_preprocessing.so,VND-ONLY, /system/${LIB}/libwebviewchromium_loader.so,FWK-ONLY, /system/${LIB}/libwebviewchromium_plat_support.so,FWK-ONLY, /system/${LIB}/libwfds.so,FWK-ONLY, @@ -368,21 +372,15 @@ Path,Tag,v3.7 /system/${LIB}/libyuv.so,VNDK, /system/${LIB}/libz.so,LL-NDK-Indirect, /system/${LIB}/libziparchive.so,VNDK, -/system/${LIB}/soundfx/libaudiopreprocessing.so,FWK-ONLY, -/system/${LIB}/soundfx/libbundlewrapper.so,FWK-ONLY, -/system/${LIB}/soundfx/libdownmix.so,FWK-ONLY, -/system/${LIB}/soundfx/libeffectproxy.so,FWK-ONLY, -/system/${LIB}/soundfx/libldnhncr.so,FWK-ONLY, -/system/${LIB}/soundfx/libreverbwrapper.so,FWK-ONLY, -/system/${LIB}/soundfx/libvisualizer.so,FWK-ONLY, +/system/${LIB}/tests.vendor@1.0.so,VNDK, +/system/${LIB}/tests.vendor@1.1.so,VNDK, /system/${LIB}/vndk-sp/android.hardware.graphics.allocator@2.0.so,VNDK-SP, /system/${LIB}/vndk-sp/android.hardware.graphics.common@1.0.so,VNDK-SP, /system/${LIB}/vndk-sp/android.hardware.graphics.mapper@2.0.so,VNDK-SP, /system/${LIB}/vndk-sp/android.hardware.renderscript@1.0.so,VNDK-SP, -/system/${LIB}/vndk-sp/android.hidl.base@1.0.so,VNDK-SP, /system/${LIB}/vndk-sp/android.hidl.memory@1.0-impl.so,VNDK-SP-Indirect-Private, /system/${LIB}/vndk-sp/android.hidl.memory@1.0.so,VNDK-SP, -/system/${LIB}/vndk-sp/libLLVM.so,VNDK-SP-Indirect-Private, +/system/${LIB}/vndk-sp/libRS.so,VNDK-SP, /system/${LIB}/vndk-sp/libRSCpuRef.so,VNDK-SP, /system/${LIB}/vndk-sp/libRSDriver.so,VNDK-SP, /system/${LIB}/vndk-sp/libRS_internal.so,VNDK-SP, @@ -404,10 +402,10 @@ Path,Tag,v3.7 /system/${LIB}/vndk-sp/libunwindstack.so,VNDK-SP-Indirect, /system/${LIB}/vndk-sp/libutils.so,VNDK-SP, /system/${LIB}/vndk-sp/libz.so,VNDK-SP, +/system/${LIB}/vndk/android.frameworks.displayservice@1.0.so,VNDK, /system/${LIB}/vndk/android.frameworks.schedulerservice@1.0.so,VNDK, /system/${LIB}/vndk/android.frameworks.sensorservice@1.0.so,VNDK, /system/${LIB}/vndk/android.frameworks.vr.composer@1.0.so,VNDK, -/system/${LIB}/vndk/android.frameworks.vr.composer@1.0.so,VNDK, /system/${LIB}/vndk/android.hardware.audio.common@2.0-util.so,VNDK, /system/${LIB}/vndk/android.hardware.audio.common@2.0.so,VNDK, /system/${LIB}/vndk/android.hardware.audio.effect@2.0.so,VNDK, @@ -423,6 +421,7 @@ Path,Tag,v3.7 /system/${LIB}/vndk/android.hardware.camera.common@1.0.so,VNDK, /system/${LIB}/vndk/android.hardware.camera.device@1.0.so,VNDK, /system/${LIB}/vndk/android.hardware.camera.device@3.2.so,VNDK, +/system/${LIB}/vndk/android.hardware.camera.metadata@3.2.so,VNDK, /system/${LIB}/vndk/android.hardware.camera.provider@2.4.so,VNDK, /system/${LIB}/vndk/android.hardware.cas.native@1.0.so,VNDK, /system/${LIB}/vndk/android.hardware.cas@1.0.so,VNDK, @@ -453,10 +452,22 @@ Path,Tag,v3.7 /system/${LIB}/vndk/android.hardware.radio@1.1.so,VNDK, /system/${LIB}/vndk/android.hardware.sensors@1.0.so,VNDK, /system/${LIB}/vndk/android.hardware.soundtrigger@2.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.tests.bar@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.tests.baz@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.tests.expression@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.tests.extension.light@2.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.tests.foo@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.tests.hash@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.tests.inheritance@1.0.so,VNDK, /system/${LIB}/vndk/android.hardware.tests.libhwbinder@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.tests.memory@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.tests.msgq@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.tests.multithread@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.tests.pointer@1.0.so,VNDK, /system/${LIB}/vndk/android.hardware.tetheroffload.config@1.0.so,VNDK, /system/${LIB}/vndk/android.hardware.tetheroffload.control@1.0.so,VNDK, /system/${LIB}/vndk/android.hardware.thermal@1.0.so,VNDK, +/system/${LIB}/vndk/android.hardware.thermal@1.1.so,VNDK, /system/${LIB}/vndk/android.hardware.tv.cec@1.0.so,VNDK, /system/${LIB}/vndk/android.hardware.tv.input@1.0.so,VNDK, /system/${LIB}/vndk/android.hardware.usb@1.0.so,VNDK, @@ -470,19 +481,24 @@ Path,Tag,v3.7 /system/${LIB}/vndk/android.hardware.wifi@1.0.so,VNDK, /system/${LIB}/vndk/android.hardware.wifi@1.1.so,VNDK, /system/${LIB}/vndk/android.hidl.allocator@1.0.so,VNDK, -/system/${LIB}/vndk/android.hidl.manager@1.0.so,VNDK, /system/${LIB}/vndk/android.hidl.token@1.0-utils.so,VNDK, /system/${LIB}/vndk/android.hidl.token@1.0.so,VNDK, /system/${LIB}/vndk/android.system.net.netd@1.0.so,VNDK, /system/${LIB}/vndk/android.system.wifi.keystore@1.0.so,VNDK, -/system/${LIB}/vndk/libEGL.so,VNDK, -/system/${LIB}/vndk/libGLESv2.so,VNDK, +/system/${LIB}/vndk/libEGL.so,SP-NDK, +/system/${LIB}/vndk/libGLESv2.so,SP-NDK, /system/${LIB}/vndk/libaudioroute.so,VNDK, /system/${LIB}/vndk/libaudioutils.so,VNDK, /system/${LIB}/vndk/libavservices_minijail.so,VNDK, /system/${LIB}/vndk/libbinder.so,VNDK, /system/${LIB}/vndk/libcamera_metadata.so,VNDK, /system/${LIB}/vndk/libcap.so,VNDK, +/system/${LIB}/vndk/libclang_rt.ubsan_standalone-aarch64-android.so,VNDK, +/system/${LIB}/vndk/libclang_rt.ubsan_standalone-arm-android.so,VNDK, +/system/${LIB}/vndk/libclang_rt.ubsan_standalone-i686-android.so,VNDK, +/system/${LIB}/vndk/libclang_rt.ubsan_standalone-mips-android.so,VNDK, +/system/${LIB}/vndk/libclang_rt.ubsan_standalone-mips64-android.so,VNDK, +/system/${LIB}/vndk/libclang_rt.ubsan_standalone-x86_64-android.so,VNDK, /system/${LIB}/vndk/libcrypto.so,VNDK, /system/${LIB}/vndk/libcrypto_utils.so,VNDK, /system/${LIB}/vndk/libcurl.so,VNDK, @@ -498,7 +514,6 @@ Path,Tag,v3.7 /system/${LIB}/vndk/libicui18n.so,VNDK, /system/${LIB}/vndk/libicuuc.so,VNDK, /system/${LIB}/vndk/libjpeg.so,VNDK, -/system/${LIB}/vndk/libkeymaster1.so,VNDK, /system/${LIB}/vndk/libkeymaster_messages.so,VNDK, /system/${LIB}/vndk/libkeymaster_portable.so,VNDK, /system/${LIB}/vndk/libkeymaster_staging.so,VNDK, @@ -509,9 +524,9 @@ Path,Tag,v3.7 /system/${LIB}/vndk/libmedia_omx.so,VNDK, /system/${LIB}/vndk/libmemtrack.so,VNDK, /system/${LIB}/vndk/libminijail.so,VNDK, -/system/${LIB}/vndk/libnbaio.so,VNDK, /system/${LIB}/vndk/libnetutils.so,VNDK, /system/${LIB}/vndk/libnl.so,VNDK, +/system/${LIB}/vndk/libopus.so,VNDK, /system/${LIB}/vndk/libpagemap.so,VNDK, /system/${LIB}/vndk/libpcre2.so,VNDK, /system/${LIB}/vndk/libpiex.so,VNDK, @@ -525,11 +540,35 @@ Path,Tag,v3.7 /system/${LIB}/vndk/libspeexresampler.so,VNDK, /system/${LIB}/vndk/libsqlite.so,VNDK, /system/${LIB}/vndk/libssl.so,VNDK, +/system/${LIB}/vndk/libstagefright_amrnb_common.so,VNDK, +/system/${LIB}/vndk/libstagefright_enc_common.so,VNDK, +/system/${LIB}/vndk/libstagefright_flacdec.so,VNDK, /system/${LIB}/vndk/libstagefright_foundation.so,VNDK, /system/${LIB}/vndk/libstagefright_omx.so,VNDK, -/system/${LIB}/vndk/libstagefright_xmlparser@1.0.so,VNDK, +/system/${LIB}/vndk/libstagefright_soft_aacdec.so,VNDK, +/system/${LIB}/vndk/libstagefright_soft_aacenc.so,VNDK, +/system/${LIB}/vndk/libstagefright_soft_amrdec.so,VNDK, +/system/${LIB}/vndk/libstagefright_soft_amrnbenc.so,VNDK, +/system/${LIB}/vndk/libstagefright_soft_amrwbenc.so,VNDK, +/system/${LIB}/vndk/libstagefright_soft_avcdec.so,VNDK, +/system/${LIB}/vndk/libstagefright_soft_avcenc.so,VNDK, +/system/${LIB}/vndk/libstagefright_soft_flacdec.so,VNDK, +/system/${LIB}/vndk/libstagefright_soft_flacenc.so,VNDK, +/system/${LIB}/vndk/libstagefright_soft_g711dec.so,VNDK, +/system/${LIB}/vndk/libstagefright_soft_gsmdec.so,VNDK, +/system/${LIB}/vndk/libstagefright_soft_hevcdec.so,VNDK, +/system/${LIB}/vndk/libstagefright_soft_mp3dec.so,VNDK, +/system/${LIB}/vndk/libstagefright_soft_mpeg2dec.so,VNDK, +/system/${LIB}/vndk/libstagefright_soft_mpeg4dec.so,VNDK, +/system/${LIB}/vndk/libstagefright_soft_mpeg4enc.so,VNDK, +/system/${LIB}/vndk/libstagefright_soft_opusdec.so,VNDK, +/system/${LIB}/vndk/libstagefright_soft_rawdec.so,VNDK, +/system/${LIB}/vndk/libstagefright_soft_vorbisdec.so,VNDK, +/system/${LIB}/vndk/libstagefright_soft_vpxdec.so,VNDK, +/system/${LIB}/vndk/libstagefright_soft_vpxenc.so,VNDK, +/system/${LIB}/vndk/libstagefright_xmlparser.so,VNDK, /system/${LIB}/vndk/libsuspend.so,VNDK, -/system/${LIB}/vndk/libsync.so,VNDK, +/system/${LIB}/vndk/libsync.so,SP-NDK, /system/${LIB}/vndk/libsysutils.so,VNDK, /system/${LIB}/vndk/libtinyalsa.so,VNDK, /system/${LIB}/vndk/libtinyxml2.so,VNDK, @@ -537,11 +576,15 @@ Path,Tag,v3.7 /system/${LIB}/vndk/libusbhost.so,VNDK, /system/${LIB}/vndk/libvixl-arm.so,VNDK, /system/${LIB}/vndk/libvixl-arm64.so,VNDK, +/system/${LIB}/vndk/libvorbisidec.so,VNDK, /system/${LIB}/vndk/libwifi-system-iface.so,VNDK, /system/${LIB}/vndk/libxml2.so,VNDK, /system/${LIB}/vndk/libyuv.so,VNDK, /system/${LIB}/vndk/libziparchive.so,VNDK, +/system/${LIB}/vndk/tests.vendor@1.0.so,VNDK, +/system/${LIB}/vndk/tests.vendor@1.1.so,VNDK, /vendor/${LIB}/libcld80211.so,VND-ONLY, +/vendor/${LIB}/libeffects.so,VND-ONLY, /vendor/${LIB}/libhwc2on1adapter.so,VND-ONLY, /vendor/${LIB}/libnbaio_mono.so,VND-ONLY, /vendor/${LIB}/libreference-ril.so,VND-ONLY, @@ -549,3 +592,10 @@ Path,Tag,v3.7 /vendor/${LIB}/librilutils.so,VND-ONLY, /vendor/${LIB}/libtinycompress.so,VND-ONLY, /vendor/${LIB}/libwebrtc_audio_preprocessing.so,VND-ONLY, +/vendor/${LIB}/soundfx/libaudiopreprocessing.so,VND-ONLY, +/vendor/${LIB}/soundfx/libbundlewrapper.so,VND-ONLY, +/vendor/${LIB}/soundfx/libdownmix.so,VND-ONLY, +/vendor/${LIB}/soundfx/libeffectproxy.so,VND-ONLY, +/vendor/${LIB}/soundfx/libldnhncr.so,VND-ONLY, +/vendor/${LIB}/soundfx/libreverbwrapper.so,VND-ONLY, +/vendor/${LIB}/soundfx/libvisualizer.so,VND-ONLY, -- cgit v1.2.3 From b33d0c459ef63efa4ff60287e78f927ecddbdb2f Mon Sep 17 00:00:00 2001 From: Logan Chien Date: Mon, 21 Aug 2017 18:28:34 +0800 Subject: vndk-def: Fix generalized VNDK-SP computation This commit fixes some leftovers in the previous commit: 1. tagged_paths should be passed to ELFLinker.create(). 2. vndk_sp_indirect_unused should not include the degenerated VNDK-SP. Bug: 64503245 Test: Run `vndk_definition_tool.py vndk` on a device. With the latest eligible-list-*-release.csv, SP-HAL errors should disappear. Change-Id: I2d4028b718801d1cfda4ffadc132cee742db2e0f Merged-In: I4135ff1cac48cca526d28a771c0ee414282cc2d5 (cherry picked from commit 69cd1dde3351ae13ed407e96b8c6f6f54e38b094) --- vndk/tools/definition-tool/vndk_definition_tool.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/vndk/tools/definition-tool/vndk_definition_tool.py b/vndk/tools/definition-tool/vndk_definition_tool.py index 80e9eac69..75f54a6ed 100755 --- a/vndk/tools/definition-tool/vndk_definition_tool.py +++ b/vndk/tools/definition-tool/vndk_definition_tool.py @@ -1483,8 +1483,10 @@ class ELFLinker(object): vndk_sp_unused, is_not_vndk_sp_indirect_unused) vndk_sp_unused_deps -= vndk_sp_unused - vndk_sp_indirect_unused = \ - predefined_vndk_sp_indirect - vndk_sp_indirect - vndk_sp_unused + vndk_sp_indirect_unused = set(lib for lib in predefined_vndk_sp_indirect + if self._is_in_vndk_sp_dir(lib.path)) + vndk_sp_indirect_unused -= vndk_sp_indirect + vndk_sp_indirect_unused -= vndk_sp_unused vndk_sp_indirect_unused |= vndk_sp_unused_deps # TODO: Compute VNDK-SP-Indirect-Private. @@ -1748,7 +1750,7 @@ class ELFLinker(object): @staticmethod def create_from_dump(system_dirs=None, system_dirs_as_vendor=None, vendor_dirs=None, vendor_dirs_as_system=None, - extra_deps=None, generic_refs=None): + extra_deps=None, generic_refs=None, tagged_paths=None): return ELFLinker._create_internal( scan_elf_dump_files, system_dirs, system_dirs_as_vendor, vendor_dirs, vendor_dirs_as_system, extra_deps, generic_refs, @@ -1996,7 +1998,8 @@ class ELFGraphCommand(Command): args.vendor, args.vendor_dir_as_system, args.vendor_dir_ignored, args.load_extra_deps, - generic_refs=generic_refs) + generic_refs=generic_refs, + tagged_paths=tagged_paths) return (generic_refs, graph, tagged_paths) -- cgit v1.2.3 From f95f1746bb6b07594da6b1ac0cd43d3a1f74cd3d Mon Sep 17 00:00:00 2001 From: Logan Chien Date: Tue, 22 Aug 2017 08:32:04 +0800 Subject: vndk-def: Add eligible list update tool This commit adds a tool to update eligible list datasets from make_vars-$(TARGET).mk and module-info.json. Bug: 64503245 Test: ./tools/update_dataset.py \ -o out.csv \ --make-vars ${OUT_DIR}/soong/make_vars-$(TARGET).mk \ --module-info ${ANDROID_PRODUCT_OUT}/module-info.json \ old-eligible-list.csv Change-Id: I8c1673046864661f8e0bfac5876b496a5e634dbe Merged-In: Ic6e79b835528703f164db81e8545a90651bbbdc7 (cherry picked from commit 551b5fdc69083ff1b191fca6644f8335e2c6c341) --- vndk/tools/definition-tool/tools/update_dataset.py | 110 +++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100755 vndk/tools/definition-tool/tools/update_dataset.py diff --git a/vndk/tools/definition-tool/tools/update_dataset.py b/vndk/tools/definition-tool/tools/update_dataset.py new file mode 100755 index 000000000..63053a64c --- /dev/null +++ b/vndk/tools/definition-tool/tools/update_dataset.py @@ -0,0 +1,110 @@ +#!/usr/bin/env python3 + +# This tool updates extracts the information from Android.bp and updates the +# datasets for eligible VNDK libraries. + +import argparse +import collections +import csv +import json +import os.path +import posixpath +import re +import sys + +def load_make_vars(path): + result = collections.OrderedDict([ + ('SOONG_LLNDK_LIBRARIES', set()), + ('SOONG_VNDK_SAMEPROCESS_LIBRARIES', set()), + ('SOONG_VNDK_CORE_LIBRARIES', set()), + ]) + + assign_len = len(' := ') + + with open(path, 'r') as fp: + for line in fp: + for key, value in result.items(): + if line.startswith(key): + mod_names = line[len(key) + assign_len:].strip().split(' ') + value.update(mod_names) + + return result.values() + +def load_install_paths(module_info_path): + with open(module_info_path, 'r') as fp: + data = json.load(fp) + + result = set() + patt = re.compile( + '.*[\\\\/]target[\\\\/]product[\\\\/][^\\\\/]+([\\\\/].*)$') + for name, module in data.items(): + for path in module['installed']: + match = patt.match(path) + if not match: + continue + path = match.group(1) + path = path.replace(os.path.sep, '/') + path = path.replace('/lib/', '/${LIB}/') + path = path.replace('/lib64/', '/${LIB}/') + result.add(path) + return result + +def main(): + parser =argparse.ArgumentParser() + parser.add_argument('tag_file') + parser.add_argument('-o', '--output', required=True) + parser.add_argument('--make-vars', required=True, + help='out/soong/make_vars-$(TARGET).mk') + parser.add_argument('--module-info', required=True, + help='out/target/product/$(TARGET)/module-info.json') + args = parser.parse_args() + + # Load libraries from `out/soong/make_vars-$(TARGET).mk`. + llndk, vndk_sp, vndk = load_make_vars(args.make_vars) + + # Load eligible list csv file. + with open(args.tag_file, 'r') as fp: + reader = csv.reader(fp) + header = next(reader) + data = dict() + for path, tag, comments in reader: + data[path] = [path, tag, comments] + + # Delete non-existing libraries. + installed_paths = load_install_paths(args.module_info) + data = { + path: row + for path, row in data.items() + if path in installed_paths + } + + # Reset all /system/${LIB} libraries to FWK-ONLY. + for path, row in data.items(): + if posixpath.dirname(path) == '/system/${LIB}': + row[1] = 'FWK-ONLY' + + # Update tags. + def update_tag(path, tag): + try: + data[path][1] = tag + except KeyError: + data[path] = [path, tag, ''] + + for name in llndk: + update_tag('/system/${LIB}/' + name + '.so', 'LL-NDK') + + for name in vndk_sp: + update_tag('/system/${LIB}/vndk-sp/' + name + '.so', 'VNDK-SP') + + for name in vndk: + update_tag('/system/${LIB}/' + name + '.so', 'VNDK') + update_tag('/system/${LIB}/vndk/' + name + '.so', 'VNDK') + + # Write updated eligible list file. + with open(args.output, 'w') as fp: + writer = csv.writer(fp, lineterminator='\n') + writer.writerow(header) + writer.writerows(sorted(data.values())) + +if __name__ == '__main__': + sys.exit(main()) -- cgit v1.2.3