From 181056b424a9439017e4221553e94b81cac3420c Mon Sep 17 00:00:00 2001 From: Justin Yun Date: Fri, 2 Feb 2018 13:22:02 +0900 Subject: [PATCH] Use actual VNDK list for non-VNDK-enforcing devices Rename ld.config.txt.in to ld.config.vndk.txt and ld.config.txt to ld.config.vndk_light.txt. For FULL_TREBLE devices without BOARD_VNDK_VERSION, update the VNDK library list in ld.config.vndk_light.txt with the actual VNDK list. Bug: 69526027 Test: Build marlin/sailfish and check boot Change-Id: Idbb0cc97d11037c1493d4739e84961297ce51dbd --- rootdir/Android.mk | 19 ++-- .../{ld.config.txt.in => ld.config.vndk.txt} | 0 ...ld.config.txt => ld.config.vndk_light.txt} | 86 ++++--------------- 3 files changed, 26 insertions(+), 79 deletions(-) rename rootdir/etc/{ld.config.txt.in => ld.config.vndk.txt} (100%) rename rootdir/etc/{ld.config.txt => ld.config.vndk_light.txt} (69%) diff --git a/rootdir/Android.mk b/rootdir/Android.mk index d8163abd3..85bb73a52 100644 --- a/rootdir/Android.mk +++ b/rootdir/Android.mk @@ -192,11 +192,12 @@ endef # update_and_install_ld_config # ld.config.txt # # For VNDK enforced devices that have defined BOARD_VNDK_VERSION, use -# "ld.config.txt.in" as a source file. This configuration includes strict VNDK -# run-time restrictions for vendor process. +# "ld.config.vndk.txt" as a source file. This configuration includes +# strict VNDK run-time restrictions for vendor process. # Other treblized devices, that have not defined BOARD_VNDK_VERSION or that -# have set BOARD_VNDK_RUNTIME_DISABLE to true, use "ld.config.txt" as a source -# file. This configuration does not have strict VNDK run-time restrictions. +# have set BOARD_VNDK_RUNTIME_DISABLE to true, use "ld.config.vndk_light.txt" +# as a source file. This configuration does not have strict VNDK run-time +# restrictions. # If the device is not treblized, use "ld.config.legacy.txt" for legacy # namespace configuration. include $(CLEAR_VARS) @@ -216,7 +217,7 @@ ifeq ($(_enforce_vndk_at_runtime),true) LOCAL_MODULE_STEM := $(call append_vndk_version,$(LOCAL_MODULE)) include $(BUILD_SYSTEM)/base_rules.mk $(eval $(call update_and_install_ld_config,\ - $(LOCAL_PATH)/etc/ld.config.txt.in,\ + $(LOCAL_PATH)/etc/ld.config.vndk.txt,\ $(LOCAL_BUILT_MODULE),\ $(PLATFORM_VNDK_VERSION))) @@ -225,7 +226,7 @@ else ifeq ($(PRODUCT_TREBLE_LINKER_NAMESPACES)|$(SANITIZE_TARGET),true|) LOCAL_MODULE_STEM := $(call append_vndk_version,$(LOCAL_MODULE)) include $(BUILD_SYSTEM)/base_rules.mk $(eval $(call update_and_install_ld_config,\ - $(LOCAL_PATH)/etc/ld.config.txt,\ + $(LOCAL_PATH)/etc/ld.config.vndk_light.txt,\ $(LOCAL_BUILT_MODULE),\ $(if $(BOARD_VNDK_VERSION),$(PLATFORM_VNDK_VERSION)))) @@ -244,9 +245,9 @@ _enforce_vndk_at_runtime := # # This file is a temporary configuration file only for GSI. Originally GSI has # BOARD_VNDK_VERSION defined and has strict VNDK enforcing rule based on -# "ld.config.txt.in". However for the devices, that have not defined +# "ld.config.vndk.txt". However for the devices, that have not defined # BOARD_VNDK_VERSION, GSI provides this configuration file which is based on -# "ld.config.txt". +# "ld.config.vndk_light.txt". # Do not install this file for the devices other than GSI. include $(CLEAR_VARS) LOCAL_MODULE := ld.config.noenforce.txt @@ -255,7 +256,7 @@ LOCAL_MODULE_PATH := $(TARGET_OUT_ETC) LOCAL_MODULE_STEM := $(LOCAL_MODULE) include $(BUILD_SYSTEM)/base_rules.mk $(eval $(call update_and_install_ld_config,\ - $(LOCAL_PATH)/etc/ld.config.txt,\ + $(LOCAL_PATH)/etc/ld.config.vndk_light.txt,\ $(LOCAL_BUILT_MODULE),\ $(PLATFORM_VNDK_VERSION))) diff --git a/rootdir/etc/ld.config.txt.in b/rootdir/etc/ld.config.vndk.txt similarity index 100% rename from rootdir/etc/ld.config.txt.in rename to rootdir/etc/ld.config.vndk.txt diff --git a/rootdir/etc/ld.config.txt b/rootdir/etc/ld.config.vndk_light.txt similarity index 69% rename from rootdir/etc/ld.config.txt rename to rootdir/etc/ld.config.vndk_light.txt index 5d97a73fd..5256cb153 100644 --- a/rootdir/etc/ld.config.txt +++ b/rootdir/etc/ld.config.vndk_light.txt @@ -82,35 +82,10 @@ namespace.sphal.asan.permitted.paths += /vendor/${LIB} # libs listed here can be used. namespace.sphal.links = default,vndk,rs -# WARNING: only NDK libs can be listed here. -namespace.sphal.link.default.shared_libs = libc.so -namespace.sphal.link.default.shared_libs += libEGL.so -namespace.sphal.link.default.shared_libs += libGLESv1_CM.so -namespace.sphal.link.default.shared_libs += libGLESv2.so -namespace.sphal.link.default.shared_libs += libdl.so -namespace.sphal.link.default.shared_libs += liblog.so -namespace.sphal.link.default.shared_libs += libm.so -namespace.sphal.link.default.shared_libs += libnativewindow.so -namespace.sphal.link.default.shared_libs += libstdc++.so -namespace.sphal.link.default.shared_libs += libsync.so -namespace.sphal.link.default.shared_libs += libvndksupport.so -namespace.sphal.link.default.shared_libs += libz.so +namespace.sphal.link.default.shared_libs = %LLNDK_LIBRARIES% +namespace.sphal.link.default.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% -# WARNING: only VNDK-SP libs can be listed here. DO NOT EDIT this line. -namespace.sphal.link.vndk.shared_libs = android.hardware.renderscript@1.0.so -namespace.sphal.link.vndk.shared_libs += android.hardware.graphics.common@1.0.so -namespace.sphal.link.vndk.shared_libs += android.hardware.graphics.mapper@2.0.so -namespace.sphal.link.vndk.shared_libs += android.hidl.memory@1.0.so -namespace.sphal.link.vndk.shared_libs += libbase.so -namespace.sphal.link.vndk.shared_libs += libc++.so -namespace.sphal.link.vndk.shared_libs += libcutils.so -namespace.sphal.link.vndk.shared_libs += libhardware.so -namespace.sphal.link.vndk.shared_libs += libhidlbase.so -namespace.sphal.link.vndk.shared_libs += libhidlmemory.so -namespace.sphal.link.vndk.shared_libs += libhidltransport.so -namespace.sphal.link.vndk.shared_libs += libhwbinder.so -namespace.sphal.link.vndk.shared_libs += libion.so -namespace.sphal.link.vndk.shared_libs += libutils.so +namespace.sphal.link.vndk.shared_libs = %VNDK_SAMEPROCESS_LIBRARIES% # Renderscript gets separate namespace namespace.sphal.link.rs.shared_libs = libRS_internal.so @@ -155,38 +130,13 @@ namespace.rs.asan.permitted.paths += /data namespace.rs.links = default,vndk -namespace.rs.link.default.shared_libs = libc.so -namespace.rs.link.default.shared_libs += libEGL.so -namespace.rs.link.default.shared_libs += libGLESv1_CM.so -namespace.rs.link.default.shared_libs += libGLESv2.so -namespace.rs.link.default.shared_libs += libdl.so -namespace.rs.link.default.shared_libs += liblog.so -namespace.rs.link.default.shared_libs += libm.so -namespace.rs.link.default.shared_libs += libnativewindow.so -namespace.rs.link.default.shared_libs += libstdc++.so -namespace.rs.link.default.shared_libs += libsync.so -namespace.rs.link.default.shared_libs += libvndksupport.so -namespace.rs.link.default.shared_libs += libz.so -# These two libs are private LLNDK libs but are exceptionally visible -# in this 'rs' namespace because RenderScript framework libraries -# which are loaded into this namespace are using them. -namespace.rs.link.default.shared_libs += libft2.so -namespace.rs.link.default.shared_libs += libmediandk.so +namespace.rs.link.default.shared_libs = %LLNDK_LIBRARIES% +namespace.rs.link.default.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% +# Private LLNDK libs (e.g. libft2.so) are exceptionally allowed to this +# namespace because RS framework libs are using them. +namespace.rs.link.default.shared_libs += %PRIVATE_LLNDK_LIBRARIES% -namespace.rs.link.vndk.shared_libs = android.hardware.renderscript@1.0.so -namespace.rs.link.vndk.shared_libs += android.hardware.graphics.common@1.0.so -namespace.rs.link.vndk.shared_libs += android.hardware.graphics.mapper@2.0.so -namespace.rs.link.vndk.shared_libs += android.hidl.memory@1.0.so -namespace.rs.link.vndk.shared_libs += libbase.so -namespace.rs.link.vndk.shared_libs += libc++.so -namespace.rs.link.vndk.shared_libs += libcutils.so -namespace.rs.link.vndk.shared_libs += libhardware.so -namespace.rs.link.vndk.shared_libs += libhidlbase.so -namespace.rs.link.vndk.shared_libs += libhidlmemory.so -namespace.rs.link.vndk.shared_libs += libhidltransport.so -namespace.rs.link.vndk.shared_libs += libhwbinder.so -namespace.rs.link.vndk.shared_libs += libion.so -namespace.rs.link.vndk.shared_libs += libutils.so +namespace.rs.link.vndk.shared_libs = %VNDK_SAMEPROCESS_LIBRARIES% ############################################################################### # "vndk" namespace @@ -204,6 +154,8 @@ namespace.vndk.permitted.paths = /odm/${LIB}/hw namespace.vndk.permitted.paths += /odm/${LIB}/egl namespace.vndk.permitted.paths += /vendor/${LIB}/hw namespace.vndk.permitted.paths += /vendor/${LIB}/egl +# This is exceptionally required since android.hidl.memory@1.0-impl.so is here +namespace.vndk.permitted.paths += /system/${LIB}/vndk-sp%VNDK_VER%/hw namespace.vndk.asan.search.paths = /data/asan/odm/${LIB}/vndk-sp namespace.vndk.asan.search.paths += /odm/${LIB}/vndk-sp @@ -221,21 +173,15 @@ namespace.vndk.asan.permitted.paths += /vendor/${LIB}/hw namespace.vndk.asan.permitted.paths += /data/asan/vendor/${LIB}/egl namespace.vndk.asan.permitted.paths += /vendor/${LIB}/egl +namespace.vndk.asan.permitted.paths += /data/asan/system/${LIB}/vndk-sp%VNDK_VER%/hw +namespace.vndk.asan.permitted.paths += /system/${LIB}/vndk-sp%VNDK_VER%/hw + # When these NDK libs are required inside this namespace, then it is redirected # to the default namespace. This is possible since their ABI is stable across # Android releases. namespace.vndk.links = default -namespace.vndk.link.default.shared_libs = android.hidl.memory@1.0-impl.so -namespace.vndk.link.default.shared_libs += libEGL.so -namespace.vndk.link.default.shared_libs += libc.so -namespace.vndk.link.default.shared_libs += libdl.so -namespace.vndk.link.default.shared_libs += liblog.so -namespace.vndk.link.default.shared_libs += libm.so -namespace.vndk.link.default.shared_libs += libnativewindow.so -namespace.vndk.link.default.shared_libs += libstdc++.so -namespace.vndk.link.default.shared_libs += libsync.so -namespace.vndk.link.default.shared_libs += libvndksupport.so -namespace.vndk.link.default.shared_libs += libz.so +namespace.vndk.link.default.shared_libs = %LLNDK_LIBRARIES% +namespace.vndk.link.default.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% ############################################################################### # Namespace config for vendor processes. In O, no restriction is enforced for