• Home
  • History
  • Annotate
  • only in /system/core/libnativeloader/
History log of /system/core/libnativeloader/
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
a07f3057d00a1da240099aa77d55aaf83362c489 22-Aug-2017 Jiyong Park <jiyong@google.com> vendor apk is unbundled

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
nclude/nativeloader/native_loader.h
ative_loader.cpp
00fe3ad7287fa62c09d9ab707c71ca9f3f7a8404 19-Jul-2017 Steven Moreland <smoreland@google.com> system/core: use proper nativehelper headers

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
ative_loader.cpp
882cad2d87fc003ced61ddf9d68f8810ec8c4b3f 02-May-2017 Dimitry Ivanov <dimitry@google.com> Load vendor public libraries to sphal namespace

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)
nclude/nativeloader/dlext_namespaces.h
ative_loader.cpp
9e253ce6b7aea5a1a6f761d94a7471bb88574e53 09-May-2017 Dimitry Ivanov <dimitry@google.com> Explicitly enable greylist for classloader-namespaces

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)
nclude/nativeloader/dlext_namespaces.h
ative_loader.cpp
e8fb11dfa1b376124d0a1a349c8800799f25606a 27-Feb-2017 Zhenhua WANG <zhenhua.wang@intel.com> NativeBridge: add "linked namespace" semantic corresponding to linker

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
ative_loader.cpp
c169b2018fb72ea31da68616548dcf6582cb0a93 30-Mar-2017 Calin Juravle <calin@google.com> Set libnativeloader style to clang-format-2

Test: clang-format.py ...
Change-Id: I322c134c1e6b58b2c4ea21b6dfac5727860604c2
/system/core/.clang-format-2
3f5b5dc546c398db10dd9a5631070e2f09d33d0b 13-Feb-2017 Dimitry Ivanov <dimitry@google.com> Add comment to android_link_namespaces method

Test: n/a - comment only change
Bug: http://b/26833548
Change-Id: I40356eec37aeb864206982feb877c59c21c9a433
nclude/nativeloader/dlext_namespaces.h
fd87c062abb0c1600e068f477699530e9c6758ed 11-Feb-2017 Dimitry Ivanov <dimitry@google.com> Merge "Replace public library list with shared lib sonames"
26e1a846ef6b3bda9386fba405ea4485056b4e62 03-Feb-2017 Dimitry Ivanov <dimitry@google.com> Replace public library list with shared lib sonames

Call updated interface in order to setup anonymous and classloader
namespaces

Bug: http://b/26833548
Test: build & boot angler
Change-Id: I1fae5d9c015f2026563eb64d986c622c1b68effb
nclude/nativeloader/dlext_namespaces.h
ative_loader.cpp
6b7425881860c7b16d4228a27ed2b2119aba0bda 06-Feb-2017 Dimitry Ivanov <dimitry@google.com> Merge "Log errors from loading public libraries"
15a264e65c0df7574f2e8f2406ee6427b084cfff 04-Feb-2017 Evan Ralston <eralston@amazon.com> Log errors from loading public libraries

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
ative_loader.cpp
e7005979c2ba01e13d75df218c0bc07ea71a479b 12-Jan-2017 Jesse Hall <jessehall@google.com> dlext_namespace.h: Declare android_get_LD_LIBRARY_PATH

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)
nclude/nativeloader/dlext_namespaces.h
b75d82b42a52faa66a6c00d46bf0de6391c95db4 10-Jan-2017 Jesse Hall <jessehall@google.com> Make dlext_namespaces.h available to users of libnativeloader

Bug: 33531483
Test: build
Change-Id: I1da92e2b1437b6775a9d81fc6c1a2d4bacecbc04
(cherry picked from commit 0936d25371e4f2618bf5760583a60dd542740542)
lext_namespaces.h
nclude/nativeloader/dlext_namespaces.h
ative_loader.cpp
30f991f251940be3ed11566fb71139852286f68a 10-Jan-2017 Mark Salyzyn <salyzyn@google.com> liblog: use log/log.h when utilizing ALOG macros

Test: compile
Bug: 30465923
Change-Id: Id6d76510819ebd88c3f5003d00d73a0dbe85e943
ative_loader.cpp
86e80b9be0a1fc6070ffae08e4c99d6dd577eb2a 21-Dec-2016 Jaekyun Seok <jaekyun@google.com> Use shared lib of libutils, libz and libbase.

libutils, libz and libbase are being used as shared lib by many other
modules.
So using their shared lib will reduce total image size.

Size diffs on angler build image are as follows.

libziparchive.so : 103844 -> 41680 (-62164)
libnativeloader.so: 50824 -> 25104 (-25720)
total : (-87884)

Test: building succeeded, and the image was tested on angler.
Bug: 33056637
Change-Id: I015afe5b8f4d87d495b706e2e78d60f44a910e87
ndroid.bp
d836ab005a3fd70e477a01d4200483131a285c9a 03-Nov-2016 Dimitry Ivanov <dimitry@google.com> Allow different namespace types for different classloaders

An app should be able to make cross-arch calls to different apps
via other app's Context.getClassLoader()

Bug: 32542970
Test: Boot fugu. Check that there are no linker-namespace
related errors in the log.

Change-Id: I1593f4688bcde0121a5e24a707441a4935fa7dc4
ative_loader.cpp
800083d229fbf4ab4008e73205679556b058748b 01-Nov-2016 Dimitry Ivanov <dimitry@google.com> Return nullptr from FindNamespaceByClassLoader for NB-enabled apps.

This function is always called by the frameworks in order to
initialize vulkan layer path. For NB apps returning nullptr
disables vulkan layer library lookup as expected.

Bug: http://b/32542970
Test: mm
Change-Id: I426b2b9f5ea7227b00f063ed6040f37bb2b4f21f
ative_loader.cpp
f2804e59854c2c7e7d3d5b58f987e5ec5cdc5b66 30-May-2016 Zhenhua WANG <zhenhua.wang@intel.com> Upgrade native bridge to version 3 to support namespace

Native bridge implements namespace related interfaces in version 3.
The namespace semantic here is same as Android dynamic linker's.
Native loader wraps library loading functions of dynamic linker and
native bridge. Thus, Android runtime is able to load native library
of different ISA on one device by calling native loader directly.

Bug: http://b/28242460
Test: mm && make test-art-host -j48
Change-Id: Idde2b9d99fb6ebe547407c716b5478a231f745a7
Signed-off-by: Zhenhua WANG <zhenhua.wang@intel.com>
ndroid.bp
nclude/nativeloader/native_loader.h
ative_loader.cpp
36e0d390a2de7d13cdf667d9a7d125f0d66b3107 10-Oct-2016 Elliott Hughes <enh@google.com> Rely on the platform -std default.

Bug: http://b/32019064
Test: builds
Change-Id: I18a1d816d63b64601485045070851f32d44e85eb
ndroid.bp
ff2dcd9af994a23ed483939a416b48bdc10eefd5 29-Sep-2016 Mark Salyzyn <salyzyn@google.com> system/core Replace log/log.h with android/log.h

Should use android/log.h instead of log/log.h as a good example
to all others. Adjust header order to comply with Android Coding
standards.

Test: Compile
Bug: 26552300
Bug: 31289077
Change-Id: I33a8fb4e754d2dc4754d335660c450e0a67190fc
ative_loader.cpp
627112a87ed4bb11e321915852e99922a52bbbb0 28-Jul-2016 Colin Cross <ccross@android.com> Merge \"libnativeloader: convert Android.mk to Android.bp\"
am: 5783dea065

Change-Id: I347c0822bbfcc351a36154391c4cd1bcaa3fc7c2
d4ce20aa849ceda35ca7e758467a9825b315ef20 27-Jul-2016 Colin Cross <ccross@android.com> libnativeloader: convert Android.mk to Android.bp

Change-Id: I94d7cde3138f28bbd158d62b657af8448b4175fd
ndroid.bp
ndroid.mk
1b4f54e8786da5fbf50a06fc9ce5e18eed916b53 22-Jun-2016 Christopher Ferris <cferris@google.com> Merge \"Add support to indicate bitness of public library.\"
am: 3fb358478f

Change-Id: Ia5a7580cb26dbafa5863ae5d85aaaccb62936921
39da84b06cf53f87ae535a685b315c1584bba7cb 22-Jun-2016 Christopher Ferris <cferris@google.com> Add support to indicate bitness of public library.

For public vendor libraries, a vendor might have only a 32 bit
or only a 64 bit version of the library. Add a way to indicate this
in the public.libraries.txt files. The new format is:

library.so 32

This indicates that this is a 32 bit only public library.

library.so 64

This indicates that this is a 64 bit only public library.

Bug: 29370721
Bug: 29512261
(cherry picked from commit 6664a805cae6983c7a19caf8abbe88ad2d918bcb)

Change-Id: Id52c8b61d5c802ce62edda7e25f2755f6f93d6b7
ative_loader.cpp
823d5bbc204da3da76aa78253143e73fe29696d9 01-Jun-2016 Dan Willemsen <dwillemsen@google.com> Merge "Remove invalid uses of -l and -I" am: 5d6193c658
am: 9ae3c079dc

* commit '9ae3c079dca647869dcbc5a5075609f0895e4f4c':
Remove invalid uses of -l and -I

Change-Id: Id0ddd34cee10579684cdde36f3c095658a50784b
ee2da03e2666dcb01721b55aa4767e371120f4fb 25-May-2016 Dan Willemsen <dwillemsen@google.com> Remove invalid uses of -l and -I

LOCAL_LDLIBS should only be used with -l flags for NDK and some host
libraries. Other uses should use LOCAL_SHARED_LIBRARIES.

LOCAL_LDFLAGS should not contain -l entries, they should be in
LOCAL_LDLIBS instead.

LOCAL_CFLAGS should not contain -I entries, those should use
LOCAL_C_INCLUDES instead.

Change-Id: Ic901aa14651572ac682166becd4f0cd86baecc34
ndroid.mk
fcd4ee48a4f29c3271e4a3d0f5174f9d6a7042c9 24-May-2016 Dimitry Ivanov <dimitry@google.com> Merge "Remove target_sdk_version parameter" into nyc-dev
am: 07f46c84e6

* commit '07f46c84e614e2635e8072403dce8f17cc9285ba':
Remove target_sdk_version parameter

Change-Id: Idf4bca526e7a40064518ad0e5ccc5aa1f63dbe75
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
ative_loader.cpp
e17c2efc4c6a49c5c02061d90b9d5384c94eddce 18-May-2016 Dimitry Ivanov <dimitry@google.com> Merge "Set parent namespace for linker-namespaces" am: ac50d0cc57
am: 3457aba394

* commit '3457aba39480e85d582dd6890c4c72e418958782':
Set parent namespace for linker-namespaces

Change-Id: I20ea9239e95377894f477c33cf65bc7da7ad1e5a
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)
lext_namespaces.h
ative_loader.cpp
d98683f415db73668378e1945d4eb5c9dc2d0a18 17-May-2016 Dimitry Ivanov <dimitry@google.com> Pass permitted_path to the linker as is.
am: 25df4bff44

* commit '25df4bff44a0d1a342dc45521bf7e860b3fef947':
Pass permitted_path to the linker as is.

Change-Id: Idf8459267f8e1cc7bebc9a55b1272871b3d8119a
24db75c1ce7ff8376a475214b059b9a37ac07936 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
lext_namespaces.h
ative_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)
ative_loader.cpp
b31caa95ec1ab9da7b300544e9716c1cac92d8f8 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
ative_loader.cpp
17decbd637ab9dba0d87ea8cb92867c4117b5a7d 11-May-2016 Dimitry Ivanov <dimitry@google.com> Merge "Move linker-namespace functions declarations" am: 37ed923d1c
am: 3f0a12622b

* commit '3f0a12622b8d35f1223945498a086e19c791bf24':
Move linker-namespace functions declarations

Change-Id: I6f3e8b5ef608e3b930510b5c483ec6e7963eb4f7
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)
lext_namespaces.h
ative_loader.cpp
37ed923d1c08b8b9204a6a66f11bbf0b4375d35b 11-May-2016 Dimitry Ivanov <dimitry@google.com> Merge "Move linker-namespace functions declarations"
d7cbb6f053c29c9967c25b5723be32ae6d26f97d 11-May-2016 Dimitry Ivanov <dimitry@google.com> Merge "nativeloader: Ignore empty java_permitted_path" into nyc-dev
am: 6edd0c3a68

* commit '6edd0c3a68f60541c31fd65080e52939f2be3bc2':
nativeloader: Ignore empty java_permitted_path

Change-Id: I1777b3a05d2e233000815172cfa1e56326be634b
72ca40f738a86d9bb8d1cdfb06ce20ca4493bf61 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
(cherry picked from commit d0b1531929d76411d964d4077d441d751e2c01fb)
ative_loader.cpp
ddc6a4a0a6d5ee2faab9021ff302142033b16842 11-May-2016 Dimitry Ivanov <dimitry@google.com> Merge "Check if public namespace has already been initialized" am: 0756fae4f1
am: 5cd1e6822a

* commit '5cd1e6822abd016e5ee6e642528b39acaf15ae55':
Check if public namespace has already been initialized

Change-Id: I13740764783765256af2fb1672fbfc5592147760
0756fae4f1aea5072ed820087b2487b408194c38 11-May-2016 Dimitry Ivanov <dimitry@google.com> Merge "Check if public namespace has already been initialized"
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
ative_loader.cpp
637da4eeeb3ac023a8af497ee91cf3c871d4b6dc 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
(cherry picked from commit f334cbf0e1425633bef96a21b0ce9e30f4c6ffa9)
ative_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
ative_loader.cpp
80ddb8f5517b4632307705858c3402081583a456 10-May-2016 Dimitry Ivanov <dimitry@google.com> Check if public namespace has already been initialized

There is no point in reading/loading the list of public
libraries once public namespace is already initialized.

Change-Id: I5a53c46bb57b8de241ba521a6321c12e94a76476
ative_loader.cpp
6796522256b4cd861d3ebaf8264bd272b3c7441f 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
lext_namespaces.h
ative_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)
ative_loader.cpp
8a0425b86acd4f20ef68ef350ac32e1c5057c558 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
ative_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)
ndroid.mk
ative_loader.cpp
4ddabd01bf361cadb33baa7213e2ca5129b938f0 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
ndroid.mk
ative_loader.cpp
ad717d6566eb381fb0ef47941c000789f048cf81 05-May-2016 Treehugger Robot <treehugger-gerrit@google.com> Merge "nativeloader: Add CloseNativeLibrary() method"
7a1f9518f77e33e40efcec7ace0ee5d3855ccd8b 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
(cherry picked from commit 09a516bf161c5cabdaa3a67df5aa7fbac667f5f9)
nclude/nativeloader/native_loader.h
ative_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
nclude/nativeloader/native_loader.h
ative_loader.cpp
911472da85bb1caa3e28d86c17ade347d06f33b3 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
(cherry picked from commit be4ca3afc0636b314d676480156eb6977739dd00)
nclude/nativeloader/native_loader.h
ative_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
nclude/nativeloader/native_loader.h
ative_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)
ative_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)
ative_loader.cpp
7e8cee8fb2e3d92e60554296eebe9d1e75cfd473 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
ative_loader.cpp
213676b88019016f8c968a05c50a196e2aaaeff8 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
ative_loader.cpp
3150fa25140fd5e2d66569841bd8e8eba07adb27 15-Apr-2016 Alex Light <allight@google.com> Remove workaround for libart greylist.

Bug: 27775991

Change-Id: I77f03b95f70957df58e666b011a07cfc2a33b480
ative_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)
ative_loader.cpp
617f495cf7a8e07b433058fb7f4c7611b584fda9 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
ative_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
ative_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
ative_loader.cpp
d1fdb9883011f57ab7a3fdcde4d835ef6918b14c 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
(cherry picked from commit 4b0e963872715775a63f36b385150cba4801b1d0)
nclude/nativeloader/native_loader.h
ative_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
nclude/nativeloader/native_loader.h
ative_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
ndroid.mk
ative_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
ndroid.mk
ative_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
ative_loader.cpp
1dff1aa97c4ee3ea1436e95fea2fb20c7e8cbead 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
(cherry picked from commit 34d5a20c8bb57adae8711c7f9d90a77fbd4043c7)
ative_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
ative_loader.cpp
4cd07681158830ec49f763f746d6644099a73b42 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
(cherry picked from commit d047c925af62e1fe28fcd1c1940df4afe18d458a)
nclude/nativeloader/native_loader.h
ative_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
nclude/nativeloader/native_loader.h
ative_loader.cpp
6f80022908e79cb64b95828beb2883c7c3ce2a2c 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
(cherry picked from commit 426799d77014888315233253e96277bef13158eb)
nclude/nativeloader/native_loader.h
ative_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
nclude/nativeloader/native_loader.h
ative_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
ative_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)
nclude/nativeloader/native_loader.h
ative_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)
ative_loader.cpp
2a7f7e0090d9c59954d117fee07955cfeee570c3 13-Feb-2016 Elliott Hughes <enh@google.com> Move libnativeloader headers into libnativeloader.

Change-Id: I227676276da1b08a84486f29fb0e1502c8dbdf4a
(cherry picked from commit e2b4e1e00cc5263ca7c0adbe8f8418f5c98ea5fe)
ndroid.mk
nclude/nativeloader/native_loader.h
0cd10d83e4e14300d03a60f28547b90d0c805579 22-Feb-2016 Dimitry Ivanov <dimitry@google.com> nativeloader: Export FindNamespaceByClassLoader

Bug: http://b/27189432
Change-Id: Ib80dcce949276ee620f601c47b20f783708e8e85
nclude/nativeloader/native_loader.h
ative_loader.cpp
34fa704df45c5f74aeb5230e4bf3930585cf32fb 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
ative_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
ative_loader.cpp
e2b4e1e00cc5263ca7c0adbe8f8418f5c98ea5fe 13-Feb-2016 Elliott Hughes <enh@google.com> Move libnativeloader headers into libnativeloader.

Change-Id: I227676276da1b08a84486f29fb0e1502c8dbdf4a
ndroid.mk
nclude/nativeloader/native_loader.h
55bbb0d88ada4d7394411dba004d2af6086da6a4 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
(cherry picked from commit d68c8e9f84557484ef3e8a3ee03398d22f109fa8)
ative_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
ative_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
ative_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
ative_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
ative_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
ative_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
ative_loader.cpp
619ffb4f5bec53adcd0b204c61c0e4d1d6ab529e 16-Dec-2015 Dimitry Ivanov <dimitry@google.com> Revert "Temporary disable linker-namespaces"

This reverts commit c18ac7cd2bc6214745b91d74e249962ce9ff7d26.
ative_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)
ative_loader.cpp
c18ac7cd2bc6214745b91d74e249962ce9ff7d26 12-Dec-2015 Dimitry Ivanov <dimitry@google.com> Temporary disable linker-namespaces

Bug: http://b/26164393
Change-Id: If6277407a6a5a4da9e3ad01dc45f57a7fc9954e4
ative_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
ative_loader.cpp
8b0471462e5bb9e81652a1a53cc786df9848feef 08-Dec-2015 Elliott Hughes <enh@google.com> Track rename of base/ to android-base/.

Change-Id: I974d67b6568e913bfb7700d952be55b4073388ee
ative_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
ndroid.mk
ative_loader.cpp