History log of /system/core/libnativeloader/native_loader.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
94ee4e690dc4e529a27561b9e0d1e52a0dddc7d5 24-May-2016 Dimitry Ivanov <dimitry@google.com> Remove target_sdk_version parameter

Since linker-namespaces are enabled for all target_sdk_versions
and there is no longer need in workarounds in libnativeloader -
remove unused target_sdk_version parameter for internal calls.

This also brings libnativeloader closer to aosp/master

Bug: http://b/26040253
Change-Id: I7d6f6ac31be0dca5f3c3f6ea20e6cc87ce3a3c7f
/system/core/libnativeloader/native_loader.cpp
ade364b4566212a0c16920443a84aa85ac31f781 13-May-2016 Dimitry Ivanov <dimitry@google.com> Set parent namespace for linker-namespaces

This change allows applications to share RTLD_GLOBAL
native libraries between namespaces associated with
different classloaders.

The rule is - if a library is GLOBAL within namespace
associated with parent classloader, it is shared
with namespace associated with this classloader

Note that the sharing happens on create_namespace
event, which is tied to createClassloader in case of
application classloaders created by the framework, for
custom application classloaders it is tied to first
loadLibrary() event.

Bug: http://b/28560538
Bug: https://code.google.com/p/android/issues/detail?id=208458
Change-Id: I7ee701166f8ec5eff033b7acc0f80c7aa4ec5bda
(cherry picked from commit 24db75c1ce7ff8376a475214b059b9a37ac07936)
/system/core/libnativeloader/native_loader.cpp
25df4bff44a0d1a342dc45521bf7e860b3fef947 17-May-2016 Dimitry Ivanov <dimitry@google.com> Pass permitted_path to the linker as is.

Now that we have the fixed list of whitelisted libraries
there is no longer need to check if java_permitted_path is nullptr.
In fact checking it prevents custom classloaders created by apps
from loading libraries using absolute path.

Bug: http://b/28659864
Change-Id: I1bfc16a573b090f70f078ecccd0e4016939a5dc0
(cherry picked from commit b31caa95ec1ab9da7b300544e9716c1cac92d8f8)
/system/core/libnativeloader/native_loader.cpp
c337cae9adcb538a4562641f97bdde933d085a82 10-May-2016 Dimitry Ivanov <dimitry@google.com> Move linker-namespace functions declarations

They are intended for platform use only and we shouldn't have them
in the public header file. This CL moves them to libnativeloader
private header file.

Bug: http://b/28174921
Change-Id: I01cf446d2d8d7cf6f9e31130aa3d4e54fbbbb9fc
(cherry picked from commit 6796522256b4cd861d3ebaf8264bd272b3c7441f)
/system/core/libnativeloader/native_loader.cpp
d0b1531929d76411d964d4077d441d751e2c01fb 11-May-2016 Dimitry Ivanov <dimitry@google.com> nativeloader: Ignore empty java_permitted_path

Passing empty permitted path should result in no-op.
This addresses review comment on CL with commit
f334cbf0e1425633bef96a21b0ce9e30f4c6ffa9

Bug: http://b/28639227
Change-Id: I4a4540e522e90a145a374939921932c86f35e88d
/system/core/libnativeloader/native_loader.cpp
f334cbf0e1425633bef96a21b0ce9e30f4c6ffa9 10-May-2016 Dimitry Ivanov <dimitry@google.com> Extend white-listed directories to include /mnt/expand

Apps on sdcard live under /mnt/expand and therefore
this directory should be under linker namespaces
permitted_path.

Bug: http://b/28639227
Change-Id: I462f9f23656c95d9c2a48bb3f513abcd9d08f340
/system/core/libnativeloader/native_loader.cpp
cf9892b6d1b0138bdf2341aaa0670c43af27cb85 09-May-2016 Dimitry Ivanov <dimitry@google.com> nativeloader: Fix the case of search_path == null

When user creates custom classloader which does not extend
BaseDexClassLoader the librarySearchPath gets set to null
by java.lang.Runtime.doLoad().

This patch makes nativeloader correctly handle it.

Bug: http://b/28659864
Change-Id: I1b61c6bc952984d7c49775a9178fc3270948e62a
(cherry picked from commit 8a0425b86acd4f20ef68ef350ac32e1c5057c558)
/system/core/libnativeloader/native_loader.cpp
7d02829636cfb4d23c5665b1481ccb3d20f27b56 06-May-2016 Dimitry Ivanov <dimitry@google.com> Add public libs from an environment variable

This is enabled only for builds with ro.debuggable=1
It is intended for use only in tests using dalvikvm
and needing access to platform libraries.

Bug: http://b/28449304
Change-Id: I402457d0da542996ccf265aeaa305f09881e4333
(cherry picked from commit 4ddabd01bf361cadb33baa7213e2ca5129b938f0)
/system/core/libnativeloader/native_loader.cpp
09a516bf161c5cabdaa3a67df5aa7fbac667f5f9 03-May-2016 Dimitry Ivanov <dimitry@google.com> nativeloader: Add CloseNativeLibrary() method

This method is called by art on UnloadNativeLibraries()

Bug: http://b/28406866
Change-Id: Ibccff93c83d6ccd3d0a1c0294a64b09281b4e05e
/system/core/libnativeloader/native_loader.cpp
be4ca3afc0636b314d676480156eb6977739dd00 02-May-2016 Dimitry Ivanov <dimitry@google.com> nativeloader: Add Reset capabilities

In the case when VM is restarted all weak references
from the old VM become invalid. In such event NativeLoader
needs to clear the list of classloaders from old VM.

Bug: http://b/28453840
Bug: http://b/28449304
Change-Id: I2268c1e21cf940c57ddc5f0312f56b71aa702134
/system/core/libnativeloader/native_loader.cpp
0b5651e1588c2fee6a587314993a166a77068974 22-Apr-2016 Dimitry Ivanov <dimitry@google.com> native_loader: Use ANDROID_ROOT environment variable

Replace "/system" with ANDROID_ROOT environment variable.

Bug: http://b/28320913
Bug: http://b/28082914
Change-Id: Ib039722cb059bae1635b45f6af20ef0180e83ba9
(cherry picked from commit 7e8cee8fb2e3d92e60554296eebe9d1e75cfd473)
/system/core/libnativeloader/native_loader.cpp
5539db0b4f915bf15de742d1378904a553dc80dc 21-Apr-2016 Dimitry Ivanov <dimitry@google.com> Enable namespaces for all target sdk versions

We previously relied on the fact that target sdk version 0
implies system_server, which is not true, target sdk version
may be set to 0 for other apps and it means 1 - the earliest
version of android. This change enables namespaces for
apps targeting all sdk version and for system_server.

Bug: http://b/27702070
Change-Id: I16fbdeb6868c7035aec71132c80c150c08ea2cc3
(cherry picked from commit 213676b88019016f8c968a05c50a196e2aaaeff8)
/system/core/libnativeloader/native_loader.cpp
3150fa25140fd5e2d66569841bd8e8eba07adb27 15-Apr-2016 Alex Light <allight@google.com> Remove workaround for libart greylist.

Bug: 27775991

Change-Id: I77f03b95f70957df58e666b011a07cfc2a33b480
/system/core/libnativeloader/native_loader.cpp
b614045894c99fb1d35179d3e0a0bab0d5dec666 07-Apr-2016 Dimitry Ivanov <dimitry@google.com> Allow vendors to extend the list of public libs

native_loader adds libraries specified in the
(optional) file: /vendor/etc/public.libraries.txt
to the list of public native libraries.

Bug: http://b/27073931
Change-Id: I927193cce99d48c3395bd0e6c373ae9fad0f13f4
(cherry picked from commit 617f495cf7a8e07b433058fb7f4c7611b584fda9)
/system/core/libnativeloader/native_loader.cpp
4f8bb2577a7394f7c9ba0e4530f6374b8cbf20fa 30-Mar-2016 Dimitry Ivanov <dimitry@google.com> Adjust check for target_sdk_version for workarounds

target_sdk_version=0 is a valid version, it basically
means 1 (the very first version of android) not current one.

Bug: http://b/27702070
Change-Id: Ib7843718f364b975e1d09a05377bf8580b407d9d
/system/core/libnativeloader/native_loader.cpp
7f9a1aaf05dda20904f08a667dadcf555a41477e 22-Mar-2016 Dimitry Ivanov <dimitry@google.com> A workaround for apps using custom classloaders

Allow custom classloaders to load native libraries
from anywhere under /data

Bug: http://b/27588281
Change-Id: Idb87b33361903f52b734ddd0ceaabe1ff9c281eb
/system/core/libnativeloader/native_loader.cpp
4b0e963872715775a63f36b385150cba4801b1d0 15-Mar-2016 Dimitry Ivanov <dimitry@google.com> Move list of public libraries to a config file

This list contains libraries that should directly or indirectly
be accessible to apps for the platform. Note that this list is
not device specific but rather device class specific.

For now we have 2 separate lists; one for Android Phones and Tablets,
and another one for Android Wear devices.

Bug: http://b/27546414
Bug: http://b/22548808
Change-Id: I83de5e3cf67392d0e9af66f70123898bd5997146
/system/core/libnativeloader/native_loader.cpp
9c0a2029771846ecea9121cf249169e581f6f7f5 16-Mar-2016 Dimitry Ivanov <dimitry@google.com> Revert "libnativeloader: Make webviewchromium so file optional"

This reverts commit 75dda7551f6a3499c0c45ed0f9530353c7616357.

Bug: http://b/27546414
/system/core/libnativeloader/native_loader.cpp
75dda7551f6a3499c0c45ed0f9530353c7616357 16-Mar-2016 Prashant Malani <pmalani@google.com> libnativeloader: Make webviewchromium so file optional

Not all android devices ship with Webview. The requirement of
libwebviewchromium_plat_support.so to be loaded while initializing the
android namespace is therefore liable to cause a crash on devices that
don't support or use Webview. Therefore, this patch makes this
requirement conditional, but enabled by default.

To remove the dependency, device make files should add the following:

TARGET_IGNORE_WEBVIEW_CHROMIUM := true

Bug: 27336841
Bug: 27546414
Change-Id: Iaec1b58236356d981504ea8f716413ea334ca4f4
/system/core/libnativeloader/native_loader.cpp
5f28b8460d9e53c5ccbe154ec244c9ae56b4a97c 04-Mar-2016 Dimitry Ivanov <dimitry@google.com> Handle the case when libart.so is not in use

In the case when libartd.so is used libart.so does not have
to be included in the public namespace.

Bug: http://b/27496326
Change-Id: I464bafec1d9da5c3f3f03fef02af3f34bf377297
/system/core/libnativeloader/native_loader.cpp
34d5a20c8bb57adae8711c7f9d90a77fbd4043c7 29-Feb-2016 Dimitry Ivanov <dimitry@google.com> Fix locking of libnativeloader

This commit fixes race condition introduced in
d047c925af62e1fe28fcd1c1940df4afe18d458a

Bug: http://b/27189432
Bug: http://b/22548808
Change-Id: I5d94f130937f18d3443878b3521715a8f87427e0
/system/core/libnativeloader/native_loader.cpp
d047c925af62e1fe28fcd1c1940df4afe18d458a 23-Feb-2016 Dimitry Ivanov <dimitry@google.com> Added function to explicitly initialize a namespace

This change replaces lazy get-or-create logic for
linker namespaces with the explicit one.

ApplicationLoaders.getClassLoader(..) is now resposible for
the namespace initialization for PathClassLoaders.

Bug: http://b/27189432
Bug: http://b/22548808
Change-Id: Ife987c3ca1db33a47c20f363a5ed61512be8b5a7
/system/core/libnativeloader/native_loader.cpp
426799d77014888315233253e96277bef13158eb 22-Feb-2016 Dimitry Ivanov <dimitry@google.com> Add PreloadPublicNativeLibraries function

Shift responsibility of preloading native libraries to the user
of the library. This lets applications that do not use jni but
depend on libnative_loader.so to avoid unnecessary preloads of
public libraries which could be expensive.

Bug: http://b/27245894
Change-Id: I12a8100de5da639c068769bca21ecebff2b2d538
/system/core/libnativeloader/native_loader.cpp
2f9cd05c47e7739cda5f931c120cc1f55e2a9e82 24-Feb-2016 Jesse Hall <jessehall@google.com> Merge "native_loader: add libvulkan.so to public native library list" into nyc-dev
dee3d96c01d6de65b3d890012162a367bb6918b7 24-Feb-2016 Jesse Hall <jessehall@google.com> native_loader: add libvulkan.so to public native library list

Change-Id: I2228af5ec4b815631a9c5ca745718807d58028a3
/system/core/libnativeloader/native_loader.cpp
f44ecde58832372ca0edf053eeee44ad56f69944 22-Feb-2016 Dimitry Ivanov <dimitry@google.com> nativeloader: Export FindNamespaceByClassLoader

Bug: http://b/27189432
Change-Id: Ib80dcce949276ee620f601c47b20f783708e8e85
(cherry picked from commit 0cd10d83e4e14300d03a60f28547b90d0c805579)
/system/core/libnativeloader/native_loader.cpp
c914ebd4841ba9e5b8f446dfc5b6dfeecb56531f 22-Feb-2016 Dimitry Ivanov <dimitry@google.com> nativeloader: refactor FindNamespaceByClassLoader method

FindNamespaceByClassLoader returns android_namespace_t* to make
it suitable for exporting this functionality.

Bug: http://b/27189432
Change-Id: Ifef3de753192178e0184fb114596fe956fde2826
(cherry picked from commit 34fa704df45c5f74aeb5230e4bf3930585cf32fb)
/system/core/libnativeloader/native_loader.cpp
dab56737ca898d913c79c4ded76d78d8b3f5ffa3 18-Feb-2016 Dimitry Ivanov <dimitry@google.com> Limit libart.so visibility to apps targeting <= M

Add libart.so to the list of public libraries only for
apps targeting android M and below.

Bug: http://b/27210062
Bug: http://b/26436837
Change-Id: I1ed3b0335a343044a76273741ea8770dcce12ebe
/system/core/libnativeloader/native_loader.cpp
d68c8e9f84557484ef3e8a3ee03398d22f109fa8 10-Feb-2016 Dimitry Ivanov <dimitry@google.com> Preload public native libraries

Preload libraries needed by the public namespace
at the earlier stage. This saves time on
InitPublicNamespace and saves memory because
the libraries are linked before zygote fork.

Bug: http://b/26409579
Change-Id: I59153a4180b930f31b542d8d2cb17b5d63c36774
/system/core/libnativeloader/native_loader.cpp
4e9bda387315c88326813b9d13265bccaa22ceaf 02-Feb-2016 Dimitry Ivanov <dimitry@google.com> Merge "Include icu4c libraries to the list of public libs" am: 17e33647f0
am: 819da66bec

* commit '819da66bec28c31d564ba695d4d32f1a4727cad1':
Include icu4c libraries to the list of public libs
c24ca894f541c78c661ad40ec9bcf78384f2b26d 02-Feb-2016 Dimitry Ivanov <dimitry@google.com> Include icu4c libraries to the list of public libs

Note that with this change the linker will ignore
icu libraries provided by an app because public
libraries are always provided by system. At this point
it does not affect any apps because before Marshmallow
all of them were getting platform version of icu4c
libs anyways (they will be getting their own copy of the
library only in Marshmallow release).

Bug: http://b/26217329
Bug: http://b/26929349
Change-Id: I681cab43c9f28ec22319d9f0424bd3df00743a5f
/system/core/libnativeloader/native_loader.cpp
73d2bc07b25e8ee0794e6b63f331a72de631b1be 26-Jan-2016 Dimitry Ivanov <dimitry@google.com> Add libcamera2ndk.so to the list of public libraries

Bug: http://b/23012001
Change-Id: If5bfd9ea15fcfe508aee4731d7f84fe517bfb43e
/system/core/libnativeloader/native_loader.cpp
e803dd8aec98aa8e2c0679affd3cb661719e6f84 14-Jan-2016 Dimitry Ivanov <dimitry@google.com> Merge "Add libRS.so to the list of public libraries" am: ebe04a9b89
am: 108eaa1429

* commit '108eaa1429ec7cffd5aa38a97674fb3565ad581e':
Add libRS.so to the list of public libraries
cdb6fee17c29dd6b2c84fdb05dbcc382e24e67c0 14-Jan-2016 Dimitry Ivanov <dimitry@google.com> Add libRS.so to the list of public libraries

Bug: http://b/26509995
Change-Id: I8c0ae3629928171d229a901cfc997780665e3ae8
/system/core/libnativeloader/native_loader.cpp
6082622b1805e925412100c736fb98143d9390d7 12-Jan-2016 Dimitry Ivanov <dimitry@google.com> Merge "Make libwebviewchromium_plat_support.so public" am: cd60e4bdd6
am: ce292ad06c

* commit 'ce292ad06ccd38beaa2d7bf8add13dbdf01f91e5':
Make libwebviewchromium_plat_support.so public
3d5a43449f414cde4b7602a20b764f28c58dd740 11-Jan-2016 Dimitry Ivanov <dimitry@google.com> Add libart.so to the list of public libraries

This is a temporary workaround for apps relying
on libart internal state.

Bug: http://b/26436837
Change-Id: Ibd6a766c3c8edebe885d897565a72a7a407828c3
/system/core/libnativeloader/native_loader.cpp
90bf68e8d1388ecf0ff24de4e408ff35d0532730 08-Jan-2016 Dimitry Ivanov <dimitry@google.com> Make libwebviewchromium_plat_support.so public

Add libwebviewchromium_plat_support.so to the list
of public libraries.

Bug: http://b/26461431
Change-Id: I958a1182198bf59d9b6fc818953212ce505d6bdd
/system/core/libnativeloader/native_loader.cpp
619ffb4f5bec53adcd0b204c61c0e4d1d6ab529e 16-Dec-2015 Dimitry Ivanov <dimitry@google.com> Revert "Temporary disable linker-namespaces"

This reverts commit c18ac7cd2bc6214745b91d74e249962ce9ff7d26.
/system/core/libnativeloader/native_loader.cpp
d2a6220001c9693664f8cf514f0653a4e1b859ea 15-Dec-2015 Dimitry Ivanov <dimitry@google.com> Add parameter for shared namespaces

Shared namespaces are used for bundled app classloaders.

Bug: http://b/22548808
Bug: http://b/26165097
Change-Id: I163033f70c50ef9ddb4164676c033ab30748964e
(cherry picked from commit ef4639c1a5159726797dec719d84e3a88e96f8a0)
/system/core/libnativeloader/native_loader.cpp
c18ac7cd2bc6214745b91d74e249962ce9ff7d26 12-Dec-2015 Dimitry Ivanov <dimitry@google.com> Temporary disable linker-namespaces

Bug: http://b/26164393
Change-Id: If6277407a6a5a4da9e3ad01dc45f57a7fc9954e4
/system/core/libnativeloader/native_loader.cpp
0d6e59407d7b57805a72fe4d3df03c5249ea7ae8 08-Dec-2015 Dimitry Ivanov <dimitry@google.com> Apply permitted path to the classloader-namespace

Bug: http://b/25853516
Bug: http://b/22548808
Change-Id: I283e6ee8d743bc3ab41aab9f36af0abbe729943f
/system/core/libnativeloader/native_loader.cpp
8b0471462e5bb9e81652a1a53cc786df9848feef 08-Dec-2015 Elliott Hughes <enh@google.com> Track rename of base/ to android-base/.

Change-Id: I974d67b6568e913bfb7700d952be55b4073388ee
/system/core/libnativeloader/native_loader.cpp
ac1b1919f8d655f652e77f59cc52813199085cd9 01-Dec-2015 Dimitry Ivanov <dimitry@google.com> Native loader as a separate library

Extracted native loader to separate library in order to
be able to reuse it for NativeActivities related native code
in libandroid_runtime.so

Bug: http://b/22548808
Change-Id: Ibcf5ddcdc5aba22e32e4b72887840e9c171c1986
/system/core/libnativeloader/native_loader.cpp