summaryrefslogtreecommitdiffstats
path: root/libnativeloader
Commit message (Collapse)AuthorAgeFilesLines
* shim libraries for libnativeloader and libnativebridgeJiyong Park2019-02-123-10/+134
| | | | | | | | | | | | | | | | | | | | | libnativeloader_lazy and libnativebridge_lazy are shim libraries for libnativeloader and libnativebridge, respectively. The shim libraries provides the same APIs as their counterparts, but when the APIs are called, the APIs from the real libraries are loaded/linked/and executed using dlopen/dlsym. Bug: 123403798 Bug: 124250621 Test: m Test: device boots to the UI Test: mma under system/core/libnativebridge with aosp_cf_x86 adb sync; execute all tests under /data/nativetest/libnativebridge-lazy-tests All passes except NativeBridgeTest.V2_Signal which is also failing in /data/nativetest/libnativebridge-tests. Change-Id: Ic6484784eaa7872dcdd2decbb30943fb34c1abd7
* Revert^2 "Enable APEX stubs for libnativeloader."Martin Stjernholm2019-02-071-0/+4
| | | | | | | | | | This reverts commit 5c8c6a90fdff38006cc9ffcd329baaf82b197504. Reason for revert: Another try with http://r.android.com/892234 in place. Test: Flash and boot Bug: 113373927 Change-Id: I508c217a177e9cdd65d8a405d1315aeeacabe18d
* Add some overview docs for classloader-namespace.Martin Stjernholm2019-02-061-0/+9
| | | | | | | Courtesy of jiyong@. Test: n/a Change-Id: I4ee239c63a5b5f90516b05af25b32ff22b147d53
* Expose public libraries from runtime namepsace to classloader namespaceVictor Chang2019-02-041-0/+28
| | | | | | | | | | Bug: 121248172 Bug: 121372395 Test: DT_NEEDED libicuuc.so Test: dlopen("libicuuc.so") Test: dlopen("/system/lib64/libicuuc.so") for targetSdkVersion < Q Test: dlopen("/apex/com.android.runtime/lib64/libicuuc.so") Change-Id: Ib4a255696ed474b7993acc952a8d07e7d64604a5
* Add getExportedNamespace NB callbackdimitry2019-02-041-1/+1
| | | | | | | | | | | This callback replaces getVendorNamespace(). Fix nativeloader to use NativeBridgeGetExportedNamespace instead of NativeBridgeGetVendorNamespace. Bug: http://b/121248172 Bug: http://b/121372395 Test: make Change-Id: I8fa2081e37815f6f65490c9536bed0687b7f1e77
* Revert "Enable APEX stubs for libnativeloader."Martin Stjernholm2019-02-011-4/+0
| | | | | | | | | This reverts commit 0daa40527211eee6c2b0c0600dbc6e13bc98eedf. Reason for revert: Breaks cf_x86_phone-userdebug: https://android-build.googleplex.com/builds/build-details/5273735/targets/cf_x86_phone-userdebug Bug: 123700170 Change-Id: Id82a91f845120dd41ce02b6d7fef886a87eb23a8
* Enable APEX stubs for libnativeloader.Martin Stjernholm2019-01-301-0/+4
| | | | | | Test: Flash and boot Bug: 113373927 Change-Id: I61783b947031bb13f415e561e19cb90fa98d0ddd
* Conscrypt should only link against bionic.Nicolas Geoffray2019-01-221-4/+0
| | | | | | | Also remove useless code in native_loader.cpp Test: m Change-Id: Id176256cc36fa32d3f722e1443429cb9fbec05f2
* Revert "Revert "Introduce conscrypt linker namespace.""Nicolas Geoffray2019-01-221-1/+44
| | | | | | | | | | | | This reverts commit 5701a47685151f4a9f2417ad79f44e881e5101bb. Bug: 123185917 Test: CtsJdwpTestCases Test: android.signature.cts.api.killswitch_debug_class Reason for revert: Fixed CtsJdwpTestCases and KillSwitchTest. Change-Id: I6a074038a4e974875d68ca6a371f6a87ad48bce9
* Revert "Introduce conscrypt linker namespace."Nicolas Geoffray2019-01-211-44/+1
| | | | | | | | | | | | This reverts commit 67a09e57915de6ba2562ea4a5e16ee0ad4870e27. Exempt-From-Owner-Approval: Fixes P0 failures. Bug: 123185917 Reason for revert: media namespace needs to be introduced. Change-Id: I0c28798a3143c1e627278c3a908207e670171416
* Introduce conscrypt linker namespace.Nicolas Geoffray2019-01-211-1/+44
| | | | | | | | | | And have the linker translate a java library path from an apex to a linker namespace. Bug: 122874359 Test: m, boots, gtest, run-test, CtsJdwpTests Change-Id: I216c3509c45589d28acdac068aec53877aeb104a Exempt-From-Owner-Approval: Carrying Jiyong's +2
* Pass the Java caller's location to OpenNativeLibrary.Nicolas Geoffray2019-01-183-17/+5
| | | | | | | | | Will be used to find the linker namespace to use. Bug: 122874359 Test: m, gtest, run-test, CtsJdwpTests Change-Id: I3f3be4a1d864741d585ab3ed9ffb93fab262516e
* Merge "Add runtime module members to owners."Nicolas Geoffray2019-01-171-0/+4
|\
| * Add runtime module members to owners.Nicolas Geoffray2019-01-161-0/+4
| | | | | | | | | | Test: N/A Change-Id: Id6cdf1a1b643df7744bf476e6e745ecc384708d7
* | libnativeloader: remove stubs for now.Nicolas Geoffray2019-01-162-10/+1
|/ | | | | | | | | | Seems to break VMDebug test. Also add missed strdup in returned error message. bug: 122957265 Test: VMDebug Change-Id: I64727d707f20c0e6afcb5455edf20c99011a81dc
* Move to C API of libnativeloader.Nicolas Geoffray2019-01-167-66/+144
| | | | | | | | | | | | | Test: m Bug: 119840313 Bug: 122710865 (cherry picked from commit e1d970df09af55bbab9d9df438ff71088c7842d7) Merged-In: Id5b08ef5de0d38cb678a50e45d38dfb8107c4a1c Change-Id: Ic82baa885caa5125dd3c8b5de854128c75f48caf Exempt-From-Owner-Approval: Cherry-pick of approved CL in master.
* Propagate dlopen errors to callers of OpenNativeLibrary.Pete Bentley2018-12-191-1/+5
| | | | | | Bug: 119867084 Test: make && flashall Change-Id: If98082db39796f0097ce7ef1d095c9f202c3a95e
* Add error_msg argument to CloseNativeLibrarydimitry2018-09-122-5/+18
| | | | | | | | error_msg is set when dlclose/NativeBridgeUnloadLibrary fails. Bug: https://issuetracker.google.com/79126103 Test: make Change-Id: I043580209538ff47320e8d9a304a21c00c4b149f
* Separate namespace acquisition from library loadingVictor Khimenko2018-07-122-77/+92
| | | | | | | | | | | This way native bridge namespace could be acquired in advance and when library must be loaded JNIEnv is not needed. Bug: http://b/79940628 Test: cts-tradefed run commandAndExit cts -m CtsGpuToolsHostTestCases Change-Id: If8bff272fc5245eb4e418807c3bdd29e82833ab8
* libnativeloader: add jiyong to OWNERS.Elliott Hughes2018-05-311-0/+1
| | | | | | Bug: N/A Test: N/A Change-Id: I892bfff4bcf28482588582a1045dcae720b121db
* Support product-specific librariesInseob Kim2018-05-165-33/+84
| | | | | | | | | | | | | | | Product-specific libraries in /product/lib can be exposed to Android apps by adding the list of the libs into /product/etc/public.libraries-<companyname>.txt. The libs MUST be named as lib<name>.<companyname>.so. Bug: 73095206 Test: with taimen mma -j and runtest.sh. The libs are all loaded in system, but not in vendor. After reinstalling app using adb -r and reopening app, only libraries listed in .txt are loaded Change-Id: I7c386813c72a7b225a7f244b6c5fec4ac0660fd3
* bpfmt.Elliott Hughes2018-02-161-4/+7
| | | | | | Bug: N/A Test: builds Change-Id: I89ad00e1c4c7e0767bc80a7ac7935a4d55e090ac
* Don't shared oem-defined libs to vendor apksJiyong Park2018-01-156-28/+168
| | | | | | | | | | | | | OEM-defined libs in /system/etc/public.libraries-<companyname>.txt files are not available to apks in the vendor partition, otherwise we are allowing vendor -> system dependency, which is a Treble violation. Bug: 71561542 Test: mm -j under system/core/libnativeloader/test and runtest.sh the four libs (lib[foo|bar].[oem1|oem2].so are all loaded in android.app.test.system app but not in android.app.test.vendor app Change-Id: Ie5d9160ae4dc2a64beb6507602ee5a1db6518875
* Merge "Nativeloader: Add minimal effort for host library path"Treehugger Robot2018-01-081-10/+39
|\
| * Nativeloader: Add minimal effort for host library pathAndreas Gampe2018-01-021-10/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | Attempt to (somewhat) support the given library path on a non-Android device. Iterate through the given list and construct a complete path. This will of course not handle dependencies correctly and is best effort. Required (and enough) for agent-related testing in ART. Bug: 70901841 Test: m Change-Id: I9ecb27d662c8a2c79a70b6c5464483c449c5d034
* | Merge "Don't install unnecessary VNDK libs"Treehugger Robot2018-01-041-0/+4
|\ \ | |/ |/|
| * Don't install unnecessary VNDK libsJiyong Park2017-12-181-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | vndk_package is a phony module that includes ALL VNDK libs found in the source code. As a result, VNDK libs that were actually not needed for the device have been installed consuming storage. For example, /system/lib/vndk/android.hardware.automotive*.so files were installed even though walleye/taimen do not have automotive HALs. VNDK libs are now installed by their link time dependencies (i.e. if a vendor module uses libcutils, then /system/lib[64]/vndk-sp/libcutils.so is automatically installed.). By the way, there is a few number of VNDK libs that do not have any link time dependency from vendor modules. They are always opened via dlopen. In such cases, the vndk modules are added to `required` or `LOCAL_REQUIRED_MODULES` of the module that dlopens them. Bug: 67002788 Test: walleye builds and boots to the UI Test: basic functionalities work (sound, camera, camcorder, slow-mo, youtube, wifi, bluetooth) Change-Id: I321256b9d20f20a9062c6d13b1745d8727eda558
* | Add std::string StartsWith*/EndsWith* overloads.Elliott Hughes2017-12-201-1/+1
| | | | | | | | | | | | | | | | | | We should have done this from the beginning. Thanks to Windows, we're not going to be able to switch libbase over to std::string_view any time soon. Bug: N/A Test: ran tests Change-Id: Iff2f56986e39de53f3ac484415378af17dacf26b
* | Support partners to expose their own system libs to Android appsJiyong Park2017-12-196-18/+183
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Partners (entities other than AOSP) can expose their own system libraries which are in /system/lib[64] to Android apps. This can be done by adding the name of the libs into the files /system/etc/public.libraries-<companyname>.txt. There can be multiple of the txt files on a device, which is for the case that multiple partners contributing to the same system image have their own set of public libraries. The public libraries MUST be named as lib<name>.<companyname>.so. This is to prevent accidental exposure of AOSP-defined system private libs. Note 1: <companyname> doesn't need to be the same as the value of the sysprop ro.product.manufacturer or anything that can be part of a file path. Note 2: This feature is not for exposing SoC-specific libs to Android apps. That is already done by /vendor/etc/public.libraries.txt and is only for libs in /vendor/lib[64]. Bug: 68280171 Test: mm -j under /system/core/libnativeloader/test cts-tradefed run commandAndExit cts-dev -m CtsJniTestCases -t android.jni.cts.JniStaticTest#test_linker_namespaces Change-Id: I7d32ec27c7858e35b96c7c98223cc110acb35b81
* Load versioned llndk.libraries.txt and vndksp.libraries.txtJustin Yun2017-12-131-2/+29
| | | | | | | | | | | | | | | | | | | When ro.vndk.version has a specific VNDK version in it, use the llndk.libraries.txt and vndksp.libraries.txt files with the version suffix in the file names. If ro.vndk.version is "current" or not set, the version suffix will not be added. This is to use a proper VNDK snapshot version configuration for a vendor patition. Bug: 69531793 Test: In system/etc directory of a Pixel2 device, Change llndk.libraries.txt to llndk.libraries.27.txt Change vndksp.libraries.txt to vndksp.libraries.27.txt Set ro.vndk.version to 27 in vendor/default.prop reboot and check if vendor apks work. Change-Id: I82d83b6805799ea71cc88d1e0297d265a40c0061
* Merge "Add OWNERS."Elliott Hughes2017-12-071-0/+1
|\
| * Add OWNERS.Elliott Hughes2017-12-071-0/+1
| | | | | | | | | | | | Bug: N/A Test: N/A Change-Id: Ie785058c0f5eb9b4086c98ccba6e63e3ed411b65
* | Merge "Remove default libraries" am: 8b7feee38f am: a0113de2f3Dan Willemsen2017-09-301-9/+0
|\| | | | | | | | | | | am: 55181f7cdd Change-Id: I2fa1d556537ee4f3b2e67cd35aa3ce090b3684a6
| * Remove default librariesDan Willemsen2017-09-291-9/+0
| | | | | | | | | | | | | | | | | | | | libdl is part of system_shared_libs now. -ldl -lpthread -lm are now defaults for host_ldlibs on Linux and Darwin. -lrt is a default for host_ldlibs on Linux. Test: m host Change-Id: I0b3c147b00a8ab6ff289b85db55b88836c905f5c Exempt-From-Owner-Approval: build system cleanup
* | Merge changes from topic "vndk_jni" into oc-mr1-devJiyong Park2017-09-142-6/+73
|\ \ | |/ |/| | | | | | | am: 6f7d928940 Change-Id: I69af1cdf06bf71f1125644c7064b40444613eaa7
| * vendor apk is unbundledJiyong Park2017-09-072-6/+73
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For devices where VNDK restrictions are all enforced, vendor apks are recognized as unbundled; since system partition and vendor partition can be updated independently from each other. However, since vendor apks are still bundled in the vendor partition, they are allowed to do more than ordinaly unbundled apks that are downloaded and installed to the data partition. 1) /vendor/lib is allowed. So the path is added to the search_paths and permitted paths of the classloader namespace. 2) LLNDK libs are allowed in addition to the NDK libs. So, LLNDK lib list from llndk.libraries.txt is added to the list from public.libraries.txt. 3) VNDK-SP libs are allowed. To do so, the classloader namespace is linked to the 'vndk' namespace where VNDK-SP libs are searched and loaded from. The list of available VNDK-SP libs is read from vndksp.libraries.txt file. 4) Name of the namespace is changed to 'vendor-classloader-namespace' since the namespace is configured differently from the ordinary 'classloader-namespace'. Bug: 63553457 Test: 2017 pixel devices build and boots to the UI Test: a vendor apk (e.g. TimeService.apk) works. Turn the airplain mode on. Set time. Reboot the device. The time is not reset. Test: 1) set target as 2017 pixel 2) m -j CtsVendorJniTestCases 3) copy the built apk into /vendor/app/CtsVendorJniTestCases 4) reboot / factory reset 5) adb shell am instrument -w android.jni.vendor.cts Change-Id: I447452eb025c0a0fd076b5c9ac081d453dc6074e
* | Remove LOCAL_CLANG and clang: trueLennart Wieboldt2017-07-251-1/+0
|/ | | | | | | | clang is the default compiler since Android nougat Test: mma & verified it´s still build with clang Change-Id: I34adaeef2f6558a09f26027271222bad94780507 Signed-off-by: Lennart Wieboldt <lennart.1997@gmx.de>
* system/core: use proper nativehelper headersSteven Moreland2017-07-181-1/+1
| | | | | | | | | | libnativeheader exports headers under nativeheader. These were available before incorrectly as global headers in order to give access to jni.h. Test: modules using system/core find headers Bug: 63762847 Change-Id: I86240f7857dd815100cab32ad261aa9a0a54329c
* Load vendor public libraries to sphal namespaceDimitry Ivanov2017-05-252-10/+43
| | | | | | | | | | | | | | | Load vendor public libraries to sphal namespace if it exists - preserve old behavior of loading these libraries to default namespace if sphal namespace is not present on the device. Bug: http://b/37410104 Test: cts-tradefed run singleCommand cts --skip-preconditions -m CtsJniTestCases on marlin (with enabled sphal configuration) and on angler where ld.config.txt is not present. Change-Id: Iaa3fa437ba2900acc2e5b9c78039fe1553e4c9dd (cherry picked from commit af0264bbe9f5e1228eb8fb486fa3d0d8e6e8605e)
* Explicitly enable greylist for classloader-namespacesDimitry Ivanov2017-05-092-2/+20
| | | | | | | | | | | The linker no longer enables greylist by default, it needs to be explicitly enabled by specifying corresponding flag. Bug: https://issuetracker.google.com/38146125 Test: builds Change-Id: Ib593f2d9a35dbadffb436f5fbc9a2a7a8f64ada0 (cherry picked from commit 058b2ea8c52ed8ce33442eda3a39e49ecd11e6dd)
* NativeBridge: add "linked namespace" semantic corresponding to linkerZhenhua WANG2017-03-291-2/+7
| | | | | | | | | For dynamic linking perspective, semantics of NativeBridge needs to align with dynamic linker. This patch adds "linked namespace" semantic which shares some libraries from one namespace to another. Test: make test-art-host-run-test-115-native-bridge Change-Id: I71ce1dde19d61363d5eb9731fd4795a8c315b3a0
* Set libnativeloader style to clang-format-2Calin Juravle2017-03-291-0/+1
| | | | | Test: clang-format.py ... Change-Id: I322c134c1e6b58b2c4ea21b6dfac5727860604c2
* Add comment to android_link_namespaces methodDimitry Ivanov2017-02-131-0/+16
| | | | | | Test: n/a - comment only change Bug: http://b/26833548 Change-Id: I40356eec37aeb864206982feb877c59c21c9a433
* Merge "Replace public library list with shared lib sonames"Dimitry Ivanov2017-02-112-8/+16
|\
| * Replace public library list with shared lib sonamesDimitry Ivanov2017-02-062-8/+16
| | | | | | | | | | | | | | | | | | Call updated interface in order to setup anonymous and classloader namespaces Bug: http://b/26833548 Test: build & boot angler Change-Id: I1fae5d9c015f2026563eb64d986c622c1b68effb
* | Merge "Log errors from loading public libraries"Dimitry Ivanov2017-02-061-1/+3
|\ \ | |/ |/|
| * Log errors from loading public librariesEvan Ralston2017-02-061-1/+3
| | | | | | | | | | | | | | | | | | | | Prevent the boot from failing silently if one of the public libraries does not exist. Test: Add invalid element to public libraries and observe log is emited during boot failure. Change-Id: I0425085a1cc081068954f327f15be853a3ccd553
* | dlext_namespace.h: Declare android_get_LD_LIBRARY_PATHJesse Hall2017-02-021-0/+13
| | | | | | | | | | | | | | | | | | | | | | This allows clients creating their own namespace do so by modifying the default library path, rather than hardcoding it multiple places in the system. Bug: 33531483 Test: build Change-Id: I321e219392b38c235b220986e1520b49a4669863 (cherry picked from commit 823c266a8a9d9db9654103456a7b759358ce4e10)
* | Make dlext_namespaces.h available to users of libnativeloaderJesse Hall2017-02-022-1/+1
|/ | | | | | | Bug: 33531483 Test: build Change-Id: I1da92e2b1437b6775a9d81fc6c1a2d4bacecbc04 (cherry picked from commit 0936d25371e4f2618bf5760583a60dd542740542)
* liblog: use log/log.h when utilizing ALOG macrosMark Salyzyn2017-01-111-2/+2
| | | | | | Test: compile Bug: 30465923 Change-Id: Id6d76510819ebd88c3f5003d00d73a0dbe85e943