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
This commit is contained in:
Justin Yun 2018-02-02 13:22:02 +09:00
parent 16e8edd979
commit 181056b424
3 changed files with 26 additions and 79 deletions

View File

@ -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)))

View File

@ -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