* limitations under the License.
*/
-#include "linkerconfig/common.h"
-
#include <string>
+#include "linkerconfig/common.h"
#include "linkerconfig/context.h"
#include "linkerconfig/section.h"
section->ForEachNamespaces([system_ns_name](Namespace& ns) {
if (ns.GetName() != system_ns_name) {
ns.GetLink(system_ns_name)
- .AddSharedLib({"libc.so",
- "libm.so",
- "libdl.so",
- "liblog.so",
- "@{SANITIZER_RUNTIME_LIBRARIES}"});
+ .AddSharedLib("@{STUB_LIBRARIES}", "@{SANITIZER_RUNTIME_LIBRARIES}");
}
});
}
ns.AddSearchPath("/apex/com.android.conscrypt/${LIB}", AsanPath::SAME_PATH);
ns.AddPermittedPath("/system/${LIB}");
ns.GetLink("art").AddSharedLib("libandroidio.so");
- ns.GetLink(ctx.GetSystemNamespaceName()).AddSharedLib("liblog.so");
return ns;
}
ns.AddSearchPath("/apex/com.android.cronet/${LIB}", AsanPath::SAME_PATH);
ns.AddPermittedPath("/system/${LIB}");
- ns.GetLink(ctx.GetSystemNamespaceName())
- .AddSharedLib(
- "libandroid.so", "libc.so", "libdl.so", "libm.so", "liblog.so");
return ns;
}
} // namespace contents
using android::linkerconfig::modules::Link;
using android::linkerconfig::modules::Namespace;
-namespace {
-const std::vector<std::string> kLibsFromDefaultLegacy = {"libandroid.so",
- "libbinder_ndk.so",
- "libcgrouprc.so",
- "liblog.so",
- "libmediametrics.so",
- "libmediandk.so",
- "libvndksupport.so"};
-
-const std::vector<std::string> kLibsFromDefault = {"@{LLNDK_LIBRARIES_VENDOR}",
- "libbinder_ndk.so",
- "libmediametrics.so"};
-
-const std::vector<std::string> kLibsFromDefaultSystem = {"libcgrouprc.so"};
-} // namespace
-
namespace android {
namespace linkerconfig {
namespace contents {
Namespace BuildMediaNamespace([[maybe_unused]] const Context& ctx) {
- bool is_legacy = ctx.IsLegacyConfig();
- bool is_vndklite = ctx.IsVndkliteConfig();
- bool is_system_section = ctx.IsSystemSection();
-
Namespace ns("media", /*is_isolated=*/true, /*is_visible=*/true);
ns.AddSearchPath("/apex/com.android.media/${LIB}", AsanPath::SAME_PATH);
ns.AddPermittedPath("/system/${LIB}");
- ns.AddPermittedPath(
- "/apex/com.android.media/${LIB}/extractors",
- (is_legacy || is_vndklite) ? AsanPath::NONE : AsanPath::SAME_PATH);
-
- Link& system_link = ns.GetLink(ctx.GetSystemNamespaceName());
- if (is_legacy) {
- system_link.AddSharedLib(kLibsFromDefaultLegacy);
- } else {
- system_link.AddSharedLib(kLibsFromDefault);
- if (is_system_section && !is_vndklite) {
- system_link.AddSharedLib(kLibsFromDefaultSystem);
- }
- }
-
- ns.GetLink("neuralnetworks").AddSharedLib("libneuralnetworks.so");
+ ns.AddPermittedPath("/apex/com.android.media/${LIB}/extractors",
+ AsanPath::SAME_PATH);
return ns;
}
AsanPath::SAME_PATH);
ns.AddPermittedPath("/system/${LIB}");
- ns.GetLink(ctx.GetSystemNamespaceName())
- .AddSharedLib({"libcgrouprc.so",
- "liblog.so",
- "libnativewindow.so",
- "libneuralnetworks_packageinfo.so",
- "libvndksupport.so"});
-
return ns;
}
} // namespace contents
ns.AddSearchPath("/apex/com.android.resolv/${LIB}", AsanPath::SAME_PATH);
ns.AddPermittedPath("/system/${LIB}");
- ns.GetLink(ctx.GetSystemNamespaceName()).AddSharedLib({"libbinder_ndk.so"});
-
return ns;
}
} // namespace contents
ns.AddSearchPath("/apex/com.android.runtime/${LIB}", AsanPath::SAME_PATH);
ns.AddPermittedPath("/system/${LIB}");
- ns.GetLink(ctx.GetSystemNamespaceName())
- .AddSharedLib("libc.so", "libdl.so", "libm.so", "liblog.so");
-
return ns;
}
"vndk_core_libraries");
android::linkerconfig::modules::Variables::AddValue(
"VNDK_USING_CORE_VARIANT_LIBRARIES", "vndk_using_core_variant_libraries");
+ android::linkerconfig::modules::Variables::AddValue("STUB_LIBRARIES",
+ "stub_libraries");
}
inline void MockVnkdLite() {
"VNDK_CORE_LIBRARIES_PRODUCT", "vndk_core_libraries");
android::linkerconfig::modules::Variables::AddValue(
"VNDK_USING_CORE_VARIANT_LIBRARIES", "");
+ android::linkerconfig::modules::Variables::AddValue("STUB_LIBRARIES",
+ "stub_libraries");
}
inline void MockVndkVersion(std::string vndk_version) {
#include "linkerconfig/variableloader.h"
#include <android-base/result.h>
+#include <android-base/strings.h>
#include <climits>
#include <cstdlib>
#include <cstring>
namespace {
using namespace android::linkerconfig::generator;
+// Stub libraries are list of libraries which has stub interface and installed
+// in system image so other partition and APEX modules can link to it.
+// TODO(b/147210213) : Generate this list on build and read from the file
+std::vector<std::string> stub_libraries = {
+ "libEGL.so",
+ "libGLESv1_CM.so",
+ "libGLESv2.so",
+ "libGLESv3.so",
+ "libRS.so",
+ "libaaudio.so",
+ "libandroid.so",
+ "libandroid_net.so",
+ "libbinder_ndk.so",
+ "libc.so",
+ "libcgrouprc.so",
+ "libclang_rt.asan-arm-android.so",
+ "libclang_rt.asan-i686-android.so",
+ "libclang_rt.asan-x86_64-android.so",
+ "libdl.so",
+ "libdl_android.so",
+ "libft2.so",
+ "liblog.so",
+ "libm.so",
+ "libmediametrics.so",
+ "libmediandk.so",
+ "libnativewindow.so",
+ "libneuralnetworks_packageinfo.so",
+ "libstatssocket.so",
+ "libsync.so",
+ "libvndksupport.so",
+ "libvulkan.so",
+};
+
void LoadVndkVersionVariable() {
Variables::AddValue("VENDOR_VNDK_VERSION", GetVendorVndkVersion());
Variables::AddValue("PRODUCT_VNDK_VERSION", GetProductVndkVersion());
Variables::AddValue("SANITIZER_RUNTIME_LIBRARIES",
GetLibrariesString(sanitizer_library_path));
+
+ Variables::AddValue("STUB_LIBRARIES",
+ android::base::Join(stub_libraries, ':'));
}
} // namespace