aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2017-07-16 07:29:28 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2017-07-16 07:29:28 +0000
commit5e188ac7a524b1f5a8b1c3d68de02d3b0cad57d0 (patch)
tree339a2d27fea731c53a68df652582fe0635ce7c98
parent89c397ec14b5c00aece877c551b2a13ce677f942 (diff)
parent5f131c01b2029e4f1d2a4e9aa9f55aaa49047601 (diff)
downloadprebuilts_clang_host_linux-x86-5e188ac7a524b1f5a8b1c3d68de02d3b0cad57d0.tar.gz
prebuilts_clang_host_linux-x86-5e188ac7a524b1f5a8b1c3d68de02d3b0cad57d0.tar.bz2
prebuilts_clang_host_linux-x86-5e188ac7a524b1f5a8b1c3d68de02d3b0cad57d0.zip
release-request-05263112-375a-4b1f-a657-a14bb2a5c5a3-for-git_oc-mr1-release-4185249 snap-temp-L63000000082739046
Change-Id: Ieba7565850de813df4ed89c58f50991547a376f2
-rw-r--r--Android.bp132
-rw-r--r--Android.mk132
-rw-r--r--soong/Android.bp6
-rw-r--r--soong/clangprebuilts.go (renamed from soong/libfuzzer.go)113
4 files changed, 217 insertions, 166 deletions
diff --git a/Android.bp b/Android.bp
index 9981e4d0..a46a7653 100644
--- a/Android.bp
+++ b/Android.bp
@@ -21,6 +21,138 @@ libfuzzer_prebuilt_library_static {
},
}
+libclang_rt_prebuilt_library_shared {
+ name: "libclang_rt.asan-arm-android",
+ enabled: false,
+ vendor_available: true,
+ arch: {
+ arm: {
+ enabled: true,
+ },
+ },
+}
+
+libclang_rt_prebuilt_library_shared {
+ name: "libclang_rt.asan-aarch64-android",
+ enabled: false,
+ vendor_available: true,
+ arch: {
+ arm64: {
+ enabled: true,
+ },
+ },
+}
+
+libclang_rt_prebuilt_library_shared {
+ name: "libclang_rt.asan-mips-android",
+ enabled: false,
+ vendor_available: true,
+ arch: {
+ mips: {
+ enabled: true,
+ },
+ },
+}
+
+libclang_rt_prebuilt_library_shared {
+ name: "libclang_rt.asan-mips64-android",
+ enabled: false,
+ vendor_available: true,
+ arch: {
+ mips64: {
+ enabled: true,
+ },
+ },
+}
+
+libclang_rt_prebuilt_library_shared {
+ name: "libclang_rt.asan-i686-android",
+ enabled: false,
+ vendor_available: true,
+ arch: {
+ x86: {
+ enabled: true,
+ },
+ },
+}
+
+libclang_rt_prebuilt_library_shared {
+ name: "libclang_rt.asan-x86_64-android",
+ enabled: false,
+ vendor_available: true,
+ arch: {
+ x86_64: {
+ enabled: true,
+ },
+ },
+}
+
+libclang_rt_prebuilt_library_shared {
+ name: "libclang_rt.ubsan_standalone-arm-android",
+ enabled: false,
+ vendor_available: true,
+ arch: {
+ arm: {
+ enabled: true,
+ },
+ },
+}
+
+libclang_rt_prebuilt_library_shared {
+ name: "libclang_rt.ubsan_standalone-aarch64-android",
+ enabled: false,
+ vendor_available: true,
+ arch: {
+ arm64: {
+ enabled: true,
+ },
+ },
+}
+
+libclang_rt_prebuilt_library_shared {
+ name: "libclang_rt.ubsan_standalone-mips-android",
+ enabled: false,
+ vendor_available: true,
+ arch: {
+ mips: {
+ enabled: true,
+ },
+ },
+}
+
+libclang_rt_prebuilt_library_shared {
+ name: "libclang_rt.ubsan_standalone-mips64-android",
+ enabled: false,
+ vendor_available: true,
+ arch: {
+ mips64: {
+ enabled: true,
+ },
+ },
+}
+
+libclang_rt_prebuilt_library_shared {
+ name: "libclang_rt.ubsan_standalone-i686-android",
+ enabled: false,
+ vendor_available: true,
+ arch: {
+ x86: {
+ enabled: true,
+ },
+ },
+}
+
+libclang_rt_prebuilt_library_shared {
+ name: "libclang_rt.ubsan_standalone-x86_64-android",
+ enabled: false,
+ vendor_available: true,
+ arch: {
+ x86_64: {
+ enabled: true,
+ },
+ },
+}
+
subdirs = [
"soong",
]
diff --git a/Android.mk b/Android.mk
index 89758b2c..1cf3f5c2 100644
--- a/Android.mk
+++ b/Android.mk
@@ -22,138 +22,6 @@ ifneq (true,$(FORCE_BUILD_SANITIZER_SHARED_OBJECTS))
libclang_dir := $(LLVM_PREBUILTS_VERSION)/lib64/clang/$(LLVM_RELEASE_VERSION)
-include $(CLEAR_VARS)
-LOCAL_MODULE := libclang_rt.asan-arm-android
-LOCAL_SRC_FILES := $(libclang_dir)/lib/linux/$(LOCAL_MODULE).so
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_MODULE_SUFFIX := .so
-LOCAL_MODULE_TARGET_ARCH := arm
-LOCAL_MODULE_PATH := $(TARGET_OUT)/lib
-LOCAL_SANITIZE := never
-LOCAL_SYSTEM_SHARED_LIBRARIES :=
-LOCAL_CXX_STL := none
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libclang_rt.asan-aarch64-android
-LOCAL_SRC_FILES := $(libclang_dir)/lib/linux/$(LOCAL_MODULE).so
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_MODULE_SUFFIX := .so
-LOCAL_MODULE_TARGET_ARCH := arm64
-LOCAL_MODULE_PATH := $(TARGET_OUT)/lib64
-LOCAL_SANITIZE := never
-LOCAL_SYSTEM_SHARED_LIBRARIES :=
-LOCAL_CXX_STL := none
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libclang_rt.asan-i686-android
-LOCAL_SRC_FILES := $(libclang_dir)/lib/linux/$(LOCAL_MODULE).so
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_MODULE_SUFFIX := .so
-LOCAL_MODULE_TARGET_ARCH := x86
-LOCAL_MODULE_PATH := $(TARGET_OUT)/lib
-LOCAL_SANITIZE := never
-LOCAL_SYSTEM_SHARED_LIBRARIES :=
-LOCAL_CXX_STL := none
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libclang_rt.asan-mips-android
-LOCAL_SRC_FILES := $(libclang_dir)/lib/linux/$(LOCAL_MODULE).so
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_MODULE_SUFFIX := .so
-LOCAL_MODULE_TARGET_ARCH := mips
-LOCAL_MODULE_PATH := $(TARGET_OUT)/lib
-LOCAL_SANITIZE := never
-LOCAL_SYSTEM_SHARED_LIBRARIES :=
-LOCAL_CXX_STL := none
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libclang_rt.asan-mips64-android
-LOCAL_SRC_FILES := $(libclang_dir)/lib/linux/$(LOCAL_MODULE).so
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_MODULE_SUFFIX := .so
-LOCAL_MODULE_TARGET_ARCH := mips64
-LOCAL_MODULE_PATH := $(TARGET_OUT)/lib64
-LOCAL_SANITIZE := never
-LOCAL_SYSTEM_SHARED_LIBRARIES :=
-LOCAL_CXX_STL := none
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libclang_rt.ubsan_standalone-arm-android
-LOCAL_SRC_FILES := $(libclang_dir)/lib/linux/$(LOCAL_MODULE).so
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_MODULE_SUFFIX := .so
-LOCAL_MODULE_TARGET_ARCH := arm
-LOCAL_MODULE_PATH := $(TARGET_OUT)/lib
-LOCAL_SANITIZE := never
-LOCAL_SYSTEM_SHARED_LIBRARIES :=
-LOCAL_CXX_STL := none
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libclang_rt.ubsan_standalone-aarch64-android
-LOCAL_SRC_FILES := $(libclang_dir)/lib/linux/$(LOCAL_MODULE).so
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_MODULE_SUFFIX := .so
-LOCAL_MODULE_TARGET_ARCH := arm64
-LOCAL_MODULE_PATH := $(TARGET_OUT)/lib64
-LOCAL_SANITIZE := never
-LOCAL_SYSTEM_SHARED_LIBRARIES :=
-LOCAL_CXX_STL := none
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libclang_rt.ubsan_standalone-i686-android
-LOCAL_SRC_FILES := $(libclang_dir)/lib/linux/$(LOCAL_MODULE).so
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_MODULE_SUFFIX := .so
-LOCAL_MODULE_TARGET_ARCH := x86
-LOCAL_MODULE_PATH := $(TARGET_OUT)/lib
-LOCAL_SANITIZE := never
-LOCAL_SYSTEM_SHARED_LIBRARIES :=
-LOCAL_CXX_STL := none
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libclang_rt.ubsan_standalone-x86_64-android
-LOCAL_SRC_FILES := $(libclang_dir)/lib/linux/$(LOCAL_MODULE).so
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_MODULE_SUFFIX := .so
-LOCAL_MODULE_TARGET_ARCH := x86_64
-LOCAL_MODULE_PATH_64 := $(TARGET_OUT)/lib64
-LOCAL_SANITIZE := never
-LOCAL_SYSTEM_SHARED_LIBRARIES :=
-LOCAL_CXX_STL := none
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libclang_rt.ubsan_standalone-mips-android
-LOCAL_SRC_FILES := $(libclang_dir)/lib/linux/$(LOCAL_MODULE).so
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_MODULE_SUFFIX := .so
-LOCAL_MODULE_TARGET_ARCH := mips
-LOCAL_MODULE_PATH := $(TARGET_OUT)/lib
-LOCAL_SANITIZE := never
-LOCAL_SYSTEM_SHARED_LIBRARIES :=
-LOCAL_CXX_STL := none
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libclang_rt.ubsan_standalone-mips64-android
-LOCAL_SRC_FILES := $(libclang_dir)/lib/linux/$(LOCAL_MODULE).so
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_MODULE_SUFFIX := .so
-LOCAL_MODULE_TARGET_ARCH := mips64
-LOCAL_MODULE_PATH := $(TARGET_OUT)/lib64
-LOCAL_SANITIZE := never
-LOCAL_SYSTEM_SHARED_LIBRARIES :=
-LOCAL_CXX_STL := none
-include $(BUILD_PREBUILT)
-
# Also build/install the newest asan_test for each arch
# We rename it to asan-test for now to avoid duplicate definitions.
diff --git a/soong/Android.bp b/soong/Android.bp
index 0bb87a89..ab020a59 100644
--- a/soong/Android.bp
+++ b/soong/Android.bp
@@ -15,8 +15,8 @@
//
bootstrap_go_package {
- name: "soong-libfuzzer",
- pkgPath: "android/soong/prebuilts/clang/host/linux-x86",
+ name: "soong-clang-prebuilts",
+ pkgPath: "android/soong/prebuilts/clang/host/linux-x86/clangprebuilts",
deps: [
"blueprint",
"soong-android",
@@ -24,7 +24,7 @@ bootstrap_go_package {
"soong-cc-config"
],
srcs: [
- "libfuzzer.go",
+ "clangprebuilts.go",
],
pluginFor: ["soong_build"],
}
diff --git a/soong/libfuzzer.go b/soong/clangprebuilts.go
index b6cc70aa..71e0b50a 100644
--- a/soong/libfuzzer.go
+++ b/soong/clangprebuilts.go
@@ -14,11 +14,12 @@
// limitations under the License.
//
-package libfuzzer
+package clangprebuilts
import (
"path"
"path/filepath"
+ "strings"
"github.com/google/blueprint/proptools"
@@ -27,13 +28,48 @@ import (
"android/soong/cc/config"
)
-// This module is used to generate libfuzzer static libraries. When
+// This module is used to generate libfuzzer static libraries and libclang_rt.* shared libraries. When
// LLVM_PREBUILTS_VERSION and LLVM_RELEASE_VERSION are set, the library will
// generated from the given path.
func init() {
android.RegisterModuleType("libfuzzer_prebuilt_library_static",
libfuzzerPrebuiltLibraryStaticFactory)
+ android.RegisterModuleType("libclang_rt_prebuilt_library_shared",
+ libClangRtPrebuiltLibrarySharedFactory)
+}
+
+func getClangDirs(ctx android.LoadHookContext) (libDir string, headerDir string) {
+ clangDir := path.Join(
+ "./",
+ ctx.AConfig().GetenvWithDefault("LLVM_PREBUILTS_VERSION", config.ClangDefaultVersion),
+ )
+ headerDir = path.Join(clangDir, "prebuilt_include", "llvm", "lib", "Fuzzer")
+ releaseVersion := ctx.AConfig().GetenvWithDefault("LLVM_RELEASE_VERSION",
+ config.ClangDefaultShortVersion)
+ libDir = path.Join(clangDir, "lib64", "clang", releaseVersion, "lib", "linux")
+ return
+}
+
+type archProps struct {
+ Android_arm struct {
+ Srcs []string
+ }
+ Android_arm64 struct {
+ Srcs []string
+ }
+ Android_mips struct {
+ Srcs []string
+ }
+ Android_mips64 struct {
+ Srcs []string
+ }
+ Android_x86 struct {
+ Srcs []string
+ }
+ Android_x86_64 struct {
+ Srcs []string
+ }
}
func libfuzzerPrebuiltLibraryStatic(ctx android.LoadHookContext) {
@@ -52,38 +88,12 @@ func libfuzzerPrebuiltLibraryStatic(ctx android.LoadHookContext) {
}
}
- clangDir := path.Join(
- "./",
- ctx.AConfig().GetenvWithDefault("LLVM_PREBUILTS_VERSION", config.ClangDefaultVersion),
- )
- headerDir := path.Join(clangDir, "prebuilt_include", "llvm", "lib", "Fuzzer")
- releaseVersion := ctx.AConfig().GetenvWithDefault("LLVM_RELEASE_VERSION",
- config.ClangDefaultShortVersion)
- libDir := path.Join(clangDir, "lib64", "clang", releaseVersion, "lib", "linux")
+ libDir, headerDir := getClangDirs(ctx)
type props struct {
- Enabled *bool
+ Enabled *bool
Export_include_dirs []string
- Target struct {
- Android_arm struct {
- Srcs []string
- }
- Android_arm64 struct {
- Srcs []string
- }
- Android_mips struct {
- Srcs []string
- }
- Android_mips64 struct {
- Srcs []string
- }
- Android_x86 struct {
- Srcs []string
- }
- Android_x86_64 struct {
- Srcs []string
- }
- }
+ Target archProps
}
p := &props{}
@@ -99,8 +109,49 @@ func libfuzzerPrebuiltLibraryStatic(ctx android.LoadHookContext) {
ctx.AppendProperties(p)
}
+func libClangRtPrebuiltLibraryShared(ctx android.LoadHookContext) {
+ if ctx.AConfig().IsEnvTrue("FORCE_BUILD_SANITIZER_SHARED_OBJECTS") {
+ return
+ }
+
+ libDir, _ := getClangDirs(ctx)
+
+ type props struct {
+ Srcs []string
+ System_shared_libs []string
+ Sanitize struct {
+ Never bool
+ }
+ Strip struct {
+ None bool
+ }
+ Pack_relocations *bool
+ Stl *string
+ }
+
+ p := &props{}
+
+ name := strings.Replace(ctx.ModuleName(), "prebuilt_", "", 1)
+
+ p.Srcs = []string{path.Join(libDir, name+".so")}
+ p.System_shared_libs = []string{}
+ p.Sanitize.Never = true
+ p.Strip.None = true
+ disable := false
+ p.Pack_relocations = &disable
+ none := "none"
+ p.Stl = &none
+ ctx.AppendProperties(p)
+}
+
func libfuzzerPrebuiltLibraryStaticFactory() android.Module {
module, _ := cc.NewPrebuiltStaticLibrary(android.HostAndDeviceSupported)
android.AddLoadHook(module, libfuzzerPrebuiltLibraryStatic)
return module.Init()
}
+
+func libClangRtPrebuiltLibrarySharedFactory() android.Module {
+ module, _ := cc.NewPrebuiltSharedLibrary(android.DeviceSupported)
+ android.AddLoadHook(module, libClangRtPrebuiltLibraryShared)
+ return module.Init()
+}