diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2017-08-23 07:32:53 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2017-08-23 07:32:53 +0000 |
commit | eddedb3ed85564b121409b9c5e0735fd6aca3450 (patch) | |
tree | 9d095ad56f4aed74389e1c29aa5a0007f57832f0 | |
parent | cc471442721cf8acc0c80b4e730934572924f34a (diff) | |
parent | f95f1746bb6b07594da6b1ac0cd43d3a1f74cd3d (diff) | |
download | development-eddedb3ed85564b121409b9c5e0735fd6aca3450.tar.gz |
release-request-cff6d9b6-a564-4d17-99cb-c2d0bb282758-for-git_oc-mr1-release-4293817 snap-temp-L12800000095933585
Change-Id: Ia19341b2bf226e8df9350bd8276183136946bbaa
13 files changed, 1297 insertions, 441 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/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..7fa90fe09 --- /dev/null +++ b/vndk/tools/definition-tool/datasets/eligible-list-o-mr1-release.csv @@ -0,0 +1,601 @@ +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.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.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, +/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.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, +/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.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}/libGLESv2.so,SP-NDK, +/system/${LIB}/libGLESv3.so,SP-NDK, +/system/${LIB}/libLLVM.so,FWK-ONLY, +/system/${LIB}/libOpenMAXAL.so,FWK-ONLY, +/system/${LIB}/libOpenSLES.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}/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}/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, +/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}/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}/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}/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,FWK-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}/libopenjdk.so,FWK-ONLY, +/system/${LIB}/libopenjdkjvm.so,FWK-ONLY, +/system/${LIB}/libopenjdkjvmti.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, +/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_metadata.so,VNDK, +/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,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,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, +/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}/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,VNDK, +/system/${LIB}/libvulkan.so,SP-NDK, +/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}/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.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/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, +/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.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.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.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, +/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.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, +/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.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,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, +/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/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/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, +/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_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_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,SP-NDK, +/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/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, +/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, +/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, 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..47854d4ed 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, @@ -16,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, @@ -27,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, @@ -49,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, @@ -69,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}/hw/android.hidl.memory@1.0-impl.so,FWK-ONLY, /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, @@ -102,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, @@ -170,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, @@ -210,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, @@ -224,28 +213,25 @@ 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, /system/${LIB}/libmedialogservice.so,FWK-ONLY, @@ -264,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, @@ -294,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, @@ -334,11 +304,12 @@ 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, /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, @@ -360,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, 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/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_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/tests/test_elfdump.py b/vndk/tools/definition-tool/tests/test_elfdump.py index b9e9626e5..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 @@ -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') 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/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()) diff --git a/vndk/tools/definition-tool/vndk_definition_tool.py b/vndk/tools/definition-tool/vndk_definition_tool.py index 083bb7cd9..75f54a6ed 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): @@ -646,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): @@ -801,6 +826,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 @@ -815,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) @@ -1035,9 +1077,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: @@ -1082,6 +1130,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) @@ -1115,53 +1164,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) @@ -1171,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 = ( @@ -1358,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() @@ -1382,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 \ @@ -1392,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: @@ -1426,13 +1479,22 @@ 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_unused_deps -= 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. 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 \ @@ -1455,8 +1517,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) @@ -1476,7 +1540,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() @@ -1649,8 +1712,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: @@ -1678,19 +1741,20 @@ 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, 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) + vendor_dirs, vendor_dirs_as_system, extra_deps, generic_refs, + tagged_paths) #------------------------------------------------------------------------------ @@ -1760,6 +1824,43 @@ class GenericRefs(object): #------------------------------------------------------------------------------ +# 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 #------------------------------------------------------------------------------ @@ -1857,6 +1958,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) @@ -1885,14 +1988,20 @@ 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, args.vendor_dir_ignored, args.load_extra_deps, - generic_refs=generic_refs) + generic_refs=generic_refs, + tagged_paths=tagged_paths) - return (generic_refs, graph) + return (generic_refs, graph, tagged_paths) class VNDKCommandBase(ELFGraphCommand): @@ -1902,8 +2011,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 ' @@ -1917,7 +2024,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: @@ -1926,11 +2033,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) @@ -2066,12 +2168,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, @@ -2120,6 +2226,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: @@ -2133,7 +2243,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) @@ -2172,8 +2283,12 @@ 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) + generic_refs, graph, tagged_paths = self.create_from_args(args) + + module_info = ModuleInfo.load_from_path_or_default(args.module_info) results = [] for partition in range(NUM_PARTITIONS): @@ -2204,8 +2319,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 @@ -2246,7 +2365,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): @@ -2275,37 +2394,56 @@ 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) +class DepsUnresolvedCommand(ELFGraphCommand): + def __init__(self): + super(DepsUnresolvedCommand, self).__init__( + 'deps-unresolved', + help='Show unresolved dt_needed entries or symbols') - 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 [] + 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, tagged_paths = 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) - parser.add_argument('--tag-file', required=True) - parser.add_argument('--module-info') @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) + 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) @@ -2354,12 +2492,12 @@ 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) - 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) @@ -2412,12 +2550,12 @@ 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) - 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) @@ -2432,7 +2570,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): @@ -2487,7 +2624,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) @@ -2524,6 +2661,7 @@ def main(): register_subcmd(DepsCommand()) register_subcmd(DepsClosureCommand()) register_subcmd(DepsInsightCommand()) + register_subcmd(DepsUnresolvedCommand()) register_subcmd(CheckDepCommand()) register_subcmd(CheckEligibleListCommand()) register_subcmd(DepGraphCommand()) |