Commit graph

125 commits

Author SHA1 Message Date
Marco Nelissen
593b43910b Fix media on W/T
W/T enforce restrictions on linker paths, which M/S do not.
Because of this, media.extractor was unable to load its extractors on W/T.

Bug: 67405932
Test: play sounds successfully
Change-Id: I8914da74780c909da815beaffcd4d76fbe2cc6b5
2017-10-04 13:47:17 -07:00
Keun Soo Yim
202c5af4be Merge "Tests are run with proper namespace configs by their locations" into oc-mr1-dev
am: aedc1c9ab0

Change-Id: I121703da98b8c66f24bbf0efced1c592c2fc113e
2017-09-29 23:23:08 +00:00
Keun Soo Yim
aedc1c9ab0 Merge "Tests are run with proper namespace configs by their locations" into oc-mr1-dev 2017-09-29 22:59:28 +00:00
Jiyong Park
f196067a8f Merge "Fix: make vndk namespace visible for 2016 Pixes" into oc-mr1-dev
am: 2f00c80c2b

Change-Id: I7659a648f88559ddf65c879e695c1766b3854686
2017-09-29 20:54:04 +00:00
TreeHugger Robot
2f00c80c2b Merge "Fix: make vndk namespace visible for 2016 Pixes" into oc-mr1-dev 2017-09-29 20:41:42 +00:00
Jiyong Park
f631a98a31 Merge "Remove workaround for VNDK violations" into oc-mr1-dev
am: 152687b26e

Change-Id: I40798ad3c2a394d3210a3c218fd52ea38fc8cbff
2017-09-29 19:05:49 +00:00
Jiyong Park
326b783ad9 Tests are run with proper namespace configs by their locations
Tests in /data/[nativetest|benchmarktest] run with namespace config for
system and tests in /data/[nativetest|benchmarktest]/vendor run with
namespace config for vendor.

They no longer run in the 'test' namespace config which didn't impose
any restriction for libraries.

Bug: 67028906
Test: sailfish/marlin builds and boots
Test: no VTS regression on system.img from GSI + vendor.img from
marlin/sailfish
Test: VtsKernelLibcutilsTest successful in above config

Change-Id: I28cdef960d087565c8a22dca0e9a154fb1c3bb94
2017-09-29 05:04:27 +09:00
Jiyong Park
f8025aae82 Remove workaround for VNDK violations
lib-dplmedia.so and qseeproxydaemon no longer depend on non-VNDK
libraries. Remove the workaround.

Bug: 64427765
Bug: 64820887
Test: 2017 pixel devices boots
Change-Id: Ib8bcbbb16169dc5c997d6c0dad061c66dcd0ccfe
2017-09-26 01:54:57 +09:00
Jiyong Park
1cc09e749f Fix: make vndk namespace visible for 2016 Pixes
The nativeloader tries to find the 'vndk' namespace when there is a
vendor apk in the classloader paths. This can happen even for a
downloaded app if the app is using a vendor apk via <uses-library> tag.

In order to prevent the nativeloader from failing to find the vndk
namespace, the namespace is marked as visible.

Bug: 66482442
Test: download the app mentioned in the bug, it does not crash.
Change-Id: I82e2394eb6eedcb8645e1a5b3735bbfe2735b312
2017-09-26 01:38:22 +09:00
Jiyong Park
25a03a23a8 Merge changes from topic "vndk_jni" into oc-mr1-dev
am: 6f7d928940

Change-Id: I69af1cdf06bf71f1125644c7064b40444613eaa7
2017-09-14 14:52:51 +00:00
TreeHugger Robot
6f7d928940 Merge changes from topic "vndk_jni" into oc-mr1-dev
* changes:
  vendor apk is unbundled
  add llndk|vndksp.libraries.txt to vndk_package
2017-09-14 01:35:43 +00:00
Jiyong Park
299591e464 Merge "fix: boot fails on ASAN builds with VNDK restriction" into oc-mr1-dev
am: 80206d8f03

Change-Id: I051d1683e95171bc1e3e3d16007c5d25ea923bc2
2017-09-08 01:41:44 +00:00
TreeHugger Robot
80206d8f03 Merge "fix: boot fails on ASAN builds with VNDK restriction" into oc-mr1-dev 2017-09-08 01:20:30 +00:00
Jiyong Park
a07f3057d0 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
2017-09-07 20:26:10 +09:00
Jiyong Park
533062b8d6 Merge "templatize ld.config.txt" into oc-mr1-dev
am: 2d3cf6799e

Change-Id: I570d4d52b630c3de0e82ec67638c6c37c48d1074
2017-09-01 03:28:45 +00:00
TreeHugger Robot
2d3cf6799e Merge "templatize ld.config.txt" into oc-mr1-dev 2017-09-01 03:23:17 +00:00
Jiyong Park
8e14484166 Merge "libz is back to LLNDK" into oc-mr1-dev
am: d9d20baf6f

Change-Id: Id2649fcd9c66003a5e84d75d91a34604b5f5d7e0
2017-09-01 00:54:49 +00:00
TreeHugger Robot
d9d20baf6f Merge "libz is back to LLNDK" into oc-mr1-dev 2017-09-01 00:39:14 +00:00
Jiyong Park
faefa6bd36 fix: boot fails on ASAN builds with VNDK restriction
Fix the bug that caused boot failure on ASAN builds with VNDK
restriciton. The major cause is because incorrect (old) ld.config.txt
was used when the build is sanitized, which prevented the dynamic linker
to find some VNDK libs that only exist in /system/lib/vndk; the old
ld.config.txt does not have the directory in its search paths. So, this
CL fixes the problem by having the same ld.config.txt for both sanitized
and non-sanitizied builds.

Furthermore, ld.config.txt is modified so that dependency to
libclang_rt* libs are redirected to those in /system/lib directory. This
ensures that the sanitizer runtime libs are not dual loaded but are
provided for both platform and vendors.

Bug: 65217017
Test: SANITIZE_TARGET=integer_overflow SANITIZE_TARGET_DIAG=integer_overflow m
on 2017 pixel devices. The build is successful and the device boots to
the UI.

Change-Id: I0e21e20d9aca340b984968e07d4ce542ae10fd31
2017-09-01 07:53:56 +09:00
Jiyong Park
367984602a templatize ld.config.txt
Lists of libraries in between the linker namespaces are no longer
hard-coded in ld.config.txt, but instead come from Soong.

Bug: 37139976
Test: build 2017 pixel device with BOARD_VNDK_VERSION=current m -j
Test: the device is bootable, basic functionalities (camera, camcorder,
wifi, bt, gps, etc.) work.
Change-Id: I8170e6c3f6ee04b16359791d64cc46bd2714a073
2017-09-01 07:53:56 +09:00
Jiyong Park
ab8de9ebc3 Make default namespace for system processes isolated
am: 55f05d79f9

Change-Id: Idd31e85fbe01a506f11c88fd4dcecb23db936d0e
2017-08-31 16:17:20 +00:00
Jiyong Park
697eb2da0d libz is back to LLNDK
For 2016 pixel devices, where VNDK is not fully enforced, move libz back
to LLNDK so that we can pass the CTS without requiring the default
namespace to be isolated.

If we have libz in vndk-sp directory, test_linker_namespaces fails
because /system/lib/vndk-sp/libz.so becomes accessible. In order to make
the lib inaccessible, we have to make the default namespace isolated,
but this can't be done for 2016 pixel devices where VNDK is not fully
enforced. So, we choose to remove /system/lib/vndk-sp/libz.so and keep
the single copy at /system/lib.

Bug: 65018779
Test: android.jni.cts.JniStaticTest#test_linker_namespaces successful on
2016 pixel devices

Change-Id: Ib6b6560b02be69d2015c0afb86acf07c02b30c2f
2017-08-31 22:11:35 +09:00
Jiyong Park
55f05d79f9 Make default namespace for system processes isolated
The default namespace for system process now becomes isolated, which
means it can load only the libs that are in search.paths and under
permitted.paths.

/system/framework, /system/app, /system/priv-app, /vendor/app, /data,
etc are added to the permitted paths since libart should be able to
dlopen odex files under the locations.

Following directories become unavailable:
/system/lib/vndk
/system/lib/vndk-sp

Bug: 37013858
Bug: 64888291
Bug: 64950640
Test: 2017 pixel devices builds and boots
Test: android.jni.cts.JniStaticTest#test_linker_namespaces passes
Change-Id: I2bbe9cc19940c3633c2fb901f9bf8ab813e38c13
2017-08-31 11:52:03 +09:00
Justin Yun
e2c3cb1634 vndk: add vendor/lib(64)/vndk for vendor namespace
am: 3094de9684

Change-Id: I389ceda99569f3aaebac1a8b5f04e02e146fa8f0
2017-08-25 07:35:48 +00:00
Justin Yun
3094de9684 vndk: add vendor/lib(64)/vndk for vendor namespace
When the vndk is extended by vendor, the libs in vendor/lib(64)/vndk
will override system/lib(64)/vndk libs. Vendor binaries will search
vndk libs in vendor/lib(64)/vndk prior to system/lib(64)/vndk.

Also, remove a workaround for libsdm-color.so

Bug: 65032513
Test: build and boot check for libsdm-color.so will be loaded on boot
Test: currently no libs exist on vendor/lib(64)/vndk. No test for it
Change-Id: I99ed37eb1a9e92c83533e2d92c9c06db11f01e97
2017-08-25 12:30:44 +09:00
Justin Yun
2e887ef819 Implement system namespace for vendor process
am: 24c29f1be4

Change-Id: Ie5358aea408aaf817a1f0a76bf6907051cb207e4
2017-08-22 07:52:54 +00:00
Justin Yun
24c29f1be4 Implement system namespace for vendor process
For vendor process default namespace searches as following order:
1. /vendor/lib/(hw|egl), /vendor/lib: Vendor libs + VNDK-vnd-ext
2. /system/lib/vndk-$(ver): VNDK libs
3. /vendor/lib/vndk-sp-$(ver): VNDK-SP-vnd-ext
4. /system/lib/vndk-sp-$(ver): VNDK-SP
and searches system namespace (/system/lib) only for LL-NDK libs.
This configuarion is used only with BOARD_VNDK_VERSION is defined.

Bug: 37192038
Test: build with 'BOARD_VNDK_VERSION=current' and boot

Change-Id: If9778b9266a084846ba8fe73e6bff25828359d33
2017-08-22 13:40:22 +09:00
Jiyong Park
b62e979d72 Merge "Make the rs namespace visible" into oc-mr1-dev
am: f34814e06c

Change-Id: I194fb3044998a8f02ff80caefae283a765594417
2017-08-18 03:15:40 +00:00
Jiyong Park
421a5e46b7 Make the rs namespace visible
This allows us to dlopen libRS_internal.so directly from the rs
namespace, not from the sphal namespace.

Bug: 64747884
Test: VtsHalRenderscriptV1_0TargetTest successful on the device built
with BOARD_VNDK_VERSION=current and [system] namespace config is applied
to /data/nativetest[64]/* processes.

Change-Id: I0b441791e395798e80a84592ca01e771bb1c201a
2017-08-16 23:32:54 +09:00
Justin Yun
27e501f100 Merge "Add libft2.so to ll-ndk for rs namespace" into oc-mr1-dev
am: acda9cba2e

Change-Id: I6835036af67f2328c8ad807b68de2970f2a99fb3
2017-08-15 10:23:08 +00:00
Justin Yun
513f76394a Add libft2.so to ll-ndk for rs namespace
libft2.so is changed to ll-ndk that is available only for rs
namespace.

Bug: 64425518
Test: build and boot with BOARD_VNDK_VERSION=current
Change-Id: I991dc774ca9b92fb6e95a7656243a6a4ecdc0ab9
2017-08-14 12:18:29 +09:00
Justin Yun
53ed5e4729 Merge "Move libz vndk-sp from ll-ndk" into oc-mr1-dev
am: 28d4818037

Change-Id: Ic058ced0f22045c7141c312537c1c37816868b68
2017-08-11 15:20:44 +00:00
Justin Yun
dadd3a846f Move libz vndk-sp from ll-ndk
The ABI of libz is not as stable as it is for ll-ndk.

Bug: 37617391
Test: build and boot
Change-Id: I883bc6fda268e98cc7cdd5888264170c58688794
2017-08-10 17:39:30 +09:00
Jiyong Park
4220c1ab53 Merge "Permit /system/lib/vndk-sp/hw/ for 'sphal' namespace" into oc-mr1-dev
am: 42a2f5c992

Change-Id: Ifad4a6062b24db1a56994eae4776096f94cf3d07
2017-08-09 05:15:48 +00:00
Jiyong Park
7d4cf3fd33 Permit /system/lib/vndk-sp/hw/ for 'sphal' namespace
android.hidl.memory@1.0-impl.so is a SP-HAL located in
/system/lib/vndk-sp/hw. This can't be moved to /vendor/lib since it is a
framework HAL.

Bug: 62930720
Test: 2017 pixel builds and boots with BOARD_VNDK_VERSION on
Change-Id: I9c456983ef68120c5e8c629efc6dd66a26220ecb
2017-08-04 16:38:39 +09:00
Elliott Hughes
6a8cb78acb Merge "Add comments to "public.libraries.*.txt"." am: e7b8fc22af am: 601e5ac55b am: 3cdb21a8c7
am: 54f2e52ab5

Change-Id: Id4b155e157da0c18f2cddebf4085366ae2d0afe0
2017-08-02 19:57:29 +00:00
Elliott Hughes
54f2e52ab5 Merge "Add comments to "public.libraries.*.txt"." am: e7b8fc22af am: 601e5ac55b
am: 3cdb21a8c7

Change-Id: I049c98243b522b8c3fcb64d917ff64a1e6d576c0
2017-08-02 19:52:26 +00:00
Elliott Hughes
601e5ac55b Merge "Add comments to "public.libraries.*.txt"."
am: e7b8fc22af

Change-Id: I8519a128238758433d194f35f6090633aeb85f0a
2017-08-02 19:43:01 +00:00
Jean-Luc Brouillet
24d43899cd Merge "Make the Neural Networks library loadable by apps." into oc-mr1-dev 2017-08-01 02:26:10 +00:00
Elliott Hughes
bd0ad88202 Add comments to "public.libraries.*.txt".
Folks don't know how to add public native API. Point them in the right
direction.

Bug: 63905942
Test: boots
Change-Id: I5e1f04fb852348255a2f7f87aa961948c41c47fd
2017-07-28 18:07:44 -07:00
Justin Yun
90a2487776 Add system/${LIB}/vndk to default namespace for vendor.
With BOARD_VNDK_VERSION=current, vndk libs will be installed in
system/${LIB}/vndk. To make them available for vendor, it must be
added to default namespace.

Bug: 63866913
Test: build and boot with BOARD_VNDK_VERSION=current
Change-Id: I9e467a6125fc89513754b56a2420975559144f98
2017-07-25 15:24:28 +09:00
Jean-Luc Brouillet
12f81dfdff Make the Neural Networks library loadable by apps.
Add to the whitelist the NN API lib.

Bug: 63905942
Test: Ran an app that uses the NN API.
Change-Id: I83c1acdff58b8fe99fbd7a8fbfb5444fe77b7902
2017-07-21 20:16:35 -07:00
Jiyong Park
342e022547 Add [test] section for /data/[nativetest|benchmarktest]
am: c034a43d44

Change-Id: I11b98ea29bbba4c3bc29f28fe7ba9864306245dd
2017-07-20 17:34:30 +00:00
Jiyong Park
c034a43d44 Add [test] section for /data/[nativetest|benchmarktest]
We have both system and vendor tests in the same directory
/data/nativetest. Since we can't distinguish system and vendor tests at
runtime, we choose to run all of them with the legacy namespace
configuration where /system/lib and /vendor/lib are both accessible
without any restriction. Furthermore, /system/lib/vndk-sp is added to
the list of accessible directories for tests since some libs (such as
libion.so) exist only in the directory but not in /system/lib.

This will change in the future when we install system and vendor tests
into different directories (vendor tests goes into ./vendor subdir).
Then, we will run the tests with [system] or [vendor] configurations
depending on their paths.

Bug: 63597267
Test: run bionic-unit-tests
Test: run linker-unit-tests
Change-Id: I810003b2da0b30335200c130f484ea7b041f9f80
2017-07-20 15:28:00 +09:00
Jiyong Park
5dcd83c6a0 Merge "/data/nativetest[64] processes are running with the new ns config" into oc-dr1-dev am: c5aba9702e
am: df13c1473d

Change-Id: I42d01009bef11774a3a1c7e22771d9ef72f8f39d
2017-07-19 00:42:15 +00:00
Jiyong Park
9d1e50b809 /data/nativetest[64] processes are running with the new ns config
Native tests under /data/nativetest[64] directory is now running with
the same linker namespace configuration as /system/bin/* processes.

This allows us to stop mimicing the linker namespace configuration of the
/system/bin/* processes using LD_LIBRARY_PATH.

Bug: 63597267
Test: run bionic-unit-tests
Test: run linker-unit-tests
Change-Id: If8e2ed0b8016e4e07bf6829735b8e02f952042d0
2017-07-18 16:45:05 +09:00
Logan Chien
bee0ff2524 Revert "Move libz to vndk-sp" am: f499bcdde7
am: b0bff4a55c

Change-Id: I30ff5acb75c0e6f8c4285703f9a8b4f5ce44bf70
2017-07-05 13:20:23 +00:00
Logan Chien
f499bcdde7 Revert "Move libz to vndk-sp"
This commit removes libz.so from the exported libs of "vndk" linker
namespace and export libz.so from "default" linker namespace instead.

We have to remove libz.so from vndk-sp because we don't have a good
mechanism to stop "classloader" linker namespace from loading
/system/lib[64]/vndk-sp/libz.so.  Other alternatives require significant
changes to dynamic linker or CTS test cases.

Let's temporarily revert the commit to fix b/62195853 for oc-dr1-dev.
The long-term solution will be discussed in b/37617391.

This reverts commit 63226400f3.

Bug: 62195853
Bug: 37617391
Test: Boot sailfish to home screen.
Change-Id: I4a97819b080f7091b633152d4a11353b24c463ee
2017-07-05 11:18:13 +08:00
Logan Chien
0821c9c4e0 ld-config: Export android.hidl.memory@1.0-impl am: bd7503dae7
am: 6db67ddca3

Change-Id: Ifeda019991f85a45e4d938d80a82f2940c0a0952
2017-06-23 05:21:07 +00:00
Logan Chien
735a32e30e ld-config: Export android.hidl.memory@1.0-impl
am: fb2a4f0874

Change-Id: Ib23a91581514f275642cb05afddbfc5324bca3bb
2017-06-23 05:07:34 +00:00