Merge "Force colorsheme to SVG, since darkblue doesn't exist on X11"
diff --git a/core/binary.mk b/core/binary.mk
index 5774357..2f2fa50 100644
--- a/core/binary.mk
+++ b/core/binary.mk
@@ -550,9 +550,17 @@
my_c_includes += external/protobuf/src $(proto_generated_cc_sources_dir)
my_cflags += -DGOOGLE_PROTOBUF_NO_RTTI
ifeq ($(LOCAL_PROTOC_OPTIMIZE_TYPE),full)
-my_static_libraries += libprotobuf-cpp-2.3.0-full
+ ifneq ($(filter libprotobuf-cpp-2.3.0-full,$(my_static_libraries)),)
+ $(warning Stripping unneeded dependency on libprotobuf-cpp-2.3.0-full in $(LOCAL_MODULE))
+ my_static_libraries := $(filter-out libprotobuf-cpp-2.3.0-full,$(my_static_libraries))
+ endif
+ my_static_libraries += libprotobuf-cpp-full
else
-my_static_libraries += libprotobuf-cpp-2.3.0-lite
+ ifneq ($(filter libprotobuf-cpp-2.3.0-lite,$(my_static_libraries)),)
+ $(warning Stripping unneeded dependency on libprotobuf-cpp-2.3.0-lite in $(LOCAL_MODULE))
+ my_static_libraries := $(filter-out libprotobuf-cpp-2.3.0-lite,$(my_static_libraries))
+ endif
+ my_static_libraries += libprotobuf-cpp-lite
endif
endif # $(proto_sources) non-empty
diff --git a/core/clang/arm.mk b/core/clang/arm.mk
index ca66986..ceb4a5a 100644
--- a/core/clang/arm.mk
+++ b/core/clang/arm.mk
@@ -4,6 +4,12 @@
CLANG_CONFIG_arm_EXTRA_CFLAGS :=
+ifneq (,$(filter krait,$(TARGET_$(combo_2nd_arch_prefix)CPU_VARIANT)))
+ # Android's clang support's krait as a CPU whereas GCC doesn't. Specify
+ # -mcpu here rather than the more normal core/combo/arch/arm/armv7-a-neon.mk.
+ CLANG_CONFIG_arm_EXTRA_CFLAGS += -mcpu=krait
+endif
+
CLANG_CONFIG_arm_EXTRA_CPPFLAGS :=
CLANG_CONFIG_arm_EXTRA_LDFLAGS :=
diff --git a/core/combo/arch/arm/armv7-a-neon.mk b/core/combo/arch/arm/armv7-a-neon.mk
index 3f4c391..d535afc 100644
--- a/core/combo/arch/arm/armv7-a-neon.mk
+++ b/core/combo/arch/arm/armv7-a-neon.mk
@@ -9,7 +9,8 @@
ifneq (,$(filter cortex-a15 krait denver,$(TARGET_$(combo_2nd_arch_prefix)CPU_VARIANT)))
# TODO: krait is not a cortex-a15, we set the variant to cortex-a15 so that
# hardware divide operations are generated. This should be removed and a
- # krait CPU variant added to GCC/clang.
+ # krait CPU variant added to GCC. For clang we specify -mcpu for krait in
+ # core/clang/arm.mk.
arch_variant_cflags := -mcpu=cortex-a15
# Fake an ARM compiler flag as these processors support LPAE which GCC/clang
diff --git a/core/definitions.mk b/core/definitions.mk
index afd033a..9258f41 100644
--- a/core/definitions.mk
+++ b/core/definitions.mk
@@ -2200,6 +2200,7 @@
# Include any vendor specific definitions.mk file
-include $(TOPDIR)vendor/*/build/core/definitions.mk
+-include $(TOPDIR)device/*/build/core/definitions.mk
# broken:
# $(foreach file,$^,$(if $(findstring,.a,$(suffix $file)),-l$(file),$(file)))
diff --git a/core/host_java_library_common.mk b/core/host_java_library_common.mk
index 973afa0..a675a84 100644
--- a/core/host_java_library_common.mk
+++ b/core/host_java_library_common.mk
@@ -29,12 +29,24 @@
proto_sources := $(filter %.proto,$(LOCAL_SRC_FILES))
ifneq ($(proto_sources),)
ifeq ($(LOCAL_PROTOC_OPTIMIZE_TYPE),micro)
- LOCAL_JAVA_LIBRARIES += host-libprotobuf-java-2.3.0-micro
+ ifneq ($(filter host-libprotobuf-java-2.3.0-micro,$(LOCAL_JAVA_LIBRARIES)),)
+ $(warning Stripping unneeded dependency on host-libprotobuf-java-2.3.0-micro in $(LOCAL_MODULE))
+ LOCAL_JAVA_LIBRARIES := $(filter-out host-libprotobuf-java-2.3.0-micro,$(LOCAL_JAVA_LIBRARIES))
+ endif
+ LOCAL_JAVA_LIBRARIES += host-libprotobuf-java-micro
else
ifeq ($(LOCAL_PROTOC_OPTIMIZE_TYPE),nano)
- LOCAL_JAVA_LIBRARIES += host-libprotobuf-java-2.3.0-nano
+ ifneq ($(filter host-libprotobuf-java-2.3.0-nano,$(LOCAL_JAVA_LIBRARIES)),)
+ $(warning Stripping unneeded dependency on host-libprotobuf-java-2.3.0-nano in $(LOCAL_MODULE))
+ LOCAL_JAVA_LIBRARIES := $(filter-out host-libprotobuf-java-2.3.0-nano,$(LOCAL_JAVA_LIBRARIES))
+ endif
+ LOCAL_JAVA_LIBRARIES += host-libprotobuf-java-nano
else
- LOCAL_JAVA_LIBRARIES += host-libprotobuf-java-2.3.0-lite
+ ifneq ($(filter host-libprotobuf-java-2.3.0-lite,$(LOCAL_JAVA_LIBRARIES)),)
+ $(warning Stripping unneeded dependency on host-libprotobuf-java-2.3.0-lite in $(LOCAL_MODULE))
+ LOCAL_JAVA_LIBRARIES := $(filter-out host-libprotobuf-java-2.3.0-lite,$(LOCAL_JAVA_LIBRARIES))
+ endif
+ LOCAL_JAVA_LIBRARIES += host-libprotobuf-java-lite
endif
endif
endif
diff --git a/core/java.mk b/core/java.mk
index 049bc51..8fdf61a 100644
--- a/core/java.mk
+++ b/core/java.mk
@@ -40,12 +40,24 @@
proto_sources := $(filter %.proto,$(LOCAL_SRC_FILES))
ifneq ($(proto_sources),)
ifeq ($(LOCAL_PROTOC_OPTIMIZE_TYPE),micro)
- LOCAL_STATIC_JAVA_LIBRARIES += libprotobuf-java-2.3.0-micro
+ ifneq ($(filter libprotobuf-java-2.3.0-micro,$(LOCAL_STATIC_JAVA_LIBRARIES)),)
+ $(warning Stripping unneeded dependency on libprotobuf-java-2.3.0-micro in $(LOCAL_MODULE))
+ LOCAL_STATIC_JAVA_LIBRARIES := $(filter-out libprotobuf-java-2.3.0-micro,$(LOCAL_STATIC_JAVA_LIBRARIES))
+ endif
+ LOCAL_STATIC_JAVA_LIBRARIES += libprotobuf-java-micro
else
ifeq ($(LOCAL_PROTOC_OPTIMIZE_TYPE),nano)
- LOCAL_STATIC_JAVA_LIBRARIES += libprotobuf-java-2.3.0-nano
+ ifneq ($(filter libprotobuf-java-2.3.0-nano,$(LOCAL_STATIC_JAVA_LIBRARIES)),)
+ $(warning Stripping unneeded dependency on libprotobuf-java-2.3.0-nano in $(LOCAL_MODULE))
+ LOCAL_STATIC_JAVA_LIBRARIES := $(filter-out libprotobuf-java-2.3.0-nano,$(LOCAL_STATIC_JAVA_LIBRARIES))
+ endif
+ LOCAL_STATIC_JAVA_LIBRARIES += libprotobuf-java-nano
else
- LOCAL_STATIC_JAVA_LIBRARIES += libprotobuf-java-2.3.0-lite
+ ifneq ($(filter libprotobuf-java-2.3.0-lite,$(LOCAL_STATIC_JAVA_LIBRARIES)),)
+ $(warning Stripping unneeded dependency on libprotobuf-java-2.3.0-lite in $(LOCAL_MODULE))
+ LOCAL_STATIC_JAVA_LIBRARIES := $(filter-out libprotobuf-java-2.3.0-lite,$(LOCAL_STATIC_JAVA_LIBRARIES))
+ endif
+ LOCAL_STATIC_JAVA_LIBRARIES += libprotobuf-java-lite
endif
endif
endif
diff --git a/envsetup.sh b/envsetup.sh
index 18bc972..8394cf6 100644
--- a/envsetup.sh
+++ b/envsetup.sh
@@ -963,10 +963,151 @@
fi
}
+function adb_get_product_device() {
+ echo `adb shell getprop ro.product.device | sed s/.$//`
+}
+
+# returns 0 when process is not traced
+function adb_get_traced_by() {
+ echo `adb shell cat /proc/$1/status | grep -e "^TracerPid:" | sed "s/^TracerPid:\t//" | sed s/.$//`
+}
+
+function gdbclient() {
+ # TODO:
+ # 1. Check for ANDROID_SERIAL/multiple devices
+ local PROCESS_NAME="n/a"
+ local PID=$1
+ local PORT=5039
+ if [ -z "$PID" ]; then
+ echo "Usage: gdbclient <pid|processname> [port number]"
+ return -1
+ fi
+ local DEVICE=$(adb_get_product_device)
+
+ if [ -z "$DEVICE" ]; then
+ echo "Error: Unable to get device name. Please check if device is connected and ANDROID_SERIAL is set."
+ return -2
+ fi
+
+ if [ -n "$2" ]; then
+ PORT=$2
+ fi
+
+ local ROOT=$(gettop)
+ if [ -z "$ROOT" ]; then
+ # This is for the situation with downloaded symbols (from the build server)
+ # we check if they are available.
+ ROOT=`realpath .`
+ fi
+
+ local OUT_ROOT="$ROOT/out/target/product/$DEVICE"
+ local SYMBOLS_DIR="$OUT_ROOT/symbols"
+
+ if [ ! -d $SYMBOLS_DIR ]; then
+ echo "Error: couldn't find symbols: $SYMBOLS_DIR does not exist or is not a directory."
+ return -3
+ fi
+
+ # let's figure out which executable we are about to debug
+
+ # check if user specified a name -> resolve to pid
+ if [[ ! "$PID" =~ ^[0-9]+$ ]] ; then
+ PROCESS_NAME=$PID
+ PID=$(pid --exact $PROCESS_NAME)
+ if [ -z "$PID" ]; then
+ echo "Error: couldn't resolve pid by process name: $PROCESS_NAME"
+ return -4
+ fi
+ fi
+
+ local EXE=`adb shell readlink /proc/$PID/exe | sed s/.$//`
+ # TODO: print error in case there is no such pid
+ local LOCAL_EXE_PATH=$SYMBOLS_DIR$EXE
+
+ if [ ! -f $LOCAL_EXE_PATH ]; then
+ echo "Error: unable to find symbols for executable $EXE: file $LOCAL_EXE_PATH does not exist"
+ return -5
+ fi
+
+ local USE64BIT=""
+
+ if [[ "$(file $LOCAL_EXE_PATH)" =~ 64-bit ]]; then
+ USE64BIT="64"
+ fi
+
+ local GDB=
+ local GDB64=
+ local CPU_ABI=`adb shell getprop ro.product.cpu.abilist | sed s/.$//`
+ # TODO: we assume these are available via $PATH
+ if [[ $CPU_ABI =~ (^|,)arm64 ]]; then
+ GDB=arm-linux-androideabi-gdb
+ GDB64=aarch64-linux-android-gdb
+ elif [[ $CPU_ABI =~ (^|,)arm ]]; then
+ GDB=arm-linux-androideabi-gdb
+ elif [[ $CPU_ABI =~ (^|,)x86_64 ]]; then
+ GDB=x86_64-linux-androideabi-gdb
+ elif [[ $CPU_ABI =~ (^|,)x86 ]]; then
+ GDB=x86_64-linux-androideabi-gdb
+ elif [[ $CPU_ABI =~ (^|,)mips64 ]]; then
+ GDB=mipsel-linux-android-gdb
+ GDB64=mips64el-linux-android-gdb
+ elif [[ $CPU_ABI =~ (^|,)mips ]]; then
+ GDB=mipsel-linux-android-gdb
+ else
+ echo "Error: unrecognized cpu.abilist: $CPU_ABI"
+ return -6
+ fi
+
+ # TODO: check if tracing process is gdbserver and not some random strace...
+ if [ $(adb_get_traced_by $PID) -eq 0 ]; then
+ # start gdbserver
+ echo "Starting gdbserver..."
+ # TODO: check if adb is already listening $PORT
+ # to avoid unnecessary calls
+ echo ". adb forward for port=$PORT..."
+ adb forward tcp:$PORT tcp:$PORT
+ echo ". starting gdbserver to attach to pid=$PID..."
+ adb shell gdbserver$USE64BIT :$PORT --attach $PID &
+ echo ". give it couple of seconds to start..."
+ sleep 2
+ echo ". done"
+ else
+ echo "It looks like gdbserver is already attached to $PID (process is traced), trying to connect to it using local port=$PORT"
+ fi
+
+ local OUT_SO_SYMBOLS=$SYMBOLS_DIR/system/lib$USE64BIT
+ local OUT_VENDOR_SO_SYMBOLS=$SYMBOLS_DIR/vendor/lib$USE64BIT
+ local ART_CMD=""
+
+ echo >|"$OUT_ROOT/gdbclient.cmds" "set solib-absolute-prefix $SYMBOLS_DIR"
+ echo >>"$OUT_ROOT/gdbclient.cmds" "set solib-search-path $OUT_SO_SYMBOLS:$OUT_SO_SYMBOLS/hw:$OUT_SO_SYMBOLS/ssl/engines:$OUT_SO_SYMBOLS/drm:$OUT_SO_SYMBOLS/egl:$OUT_SO_SYMBOLS/soundfx:$OUT_VENDOR_SO_SYMBOLS:$OUT_VENDOR_SO_SYMBOLS/hw:$OUT_VENDOR_SO_SYMBOLS/egl"
+ local DALVIK_GDB_SCRIPT=$ROOT/development/scripts/gdb/dalvik.gdb
+ if [ -f $DALVIK_GDB_SCRIPT ]; then
+ echo >>"$OUT_ROOT/gdbclient.cmds" "source $DALVIK_GDB_SCRIPT"
+ ART_CMD="art-on"
+ else
+ echo "Warning: couldn't find $DALVIK_GDB_SCRIPT - ART debugging options will not be available"
+ fi
+ echo >>"$OUT_ROOT/gdbclient.cmds" "target remote :$PORT"
+ if [[ $EXE =~ (^|/)(app_process|dalvikvm)(|32|64)$ ]]; then
+ echo >> "$OUT_ROOT/gdbclient.cmds" $ART_CMD
+ fi
+
+ echo >>"$OUT_ROOT/gdbclient.cmds" ""
+
+ local WHICH_GDB=$GDB
+
+ if [ -n "$USE64BIT" -a -n "$GDB64" ]; then
+ WHICH_GDB=$GDB64
+ fi
+
+ gdbwrapper $WHICH_GDB "$OUT_ROOT/gdbclient.cmds" "$LOCAL_EXE_PATH"
+}
+
# gdbclient now determines whether the user wants to debug a 32-bit or 64-bit
# executable, set up the approriate gdbserver, then invokes the proper host
# gdb.
-function gdbclient()
+function gdbclient_old()
{
local OUT_ROOT=$(get_abs_build_var PRODUCT_OUT)
local OUT_SYMBOLS=$(get_abs_build_var TARGET_OUT_UNSTRIPPED)
diff --git a/libs/host/Android.mk b/libs/host/Android.mk
index c67afbb..cab878b 100644
--- a/libs/host/Android.mk
+++ b/libs/host/Android.mk
@@ -1,5 +1,6 @@
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
+LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
LOCAL_SRC_FILES:= \
CopyFile.c
@@ -20,6 +21,8 @@
# acp to install libhost.
LOCAL_ACP_UNAVAILABLE:= true
+LOCAL_ADDRESS_SANITIZER := false
+
include $(BUILD_HOST_STATIC_LIBRARY)
# Include toolchain prebuilt modules if they exist.
diff --git a/target/board/generic/sepolicy/device.te b/target/board/generic/sepolicy/device.te
index e4af13c..d129441 100644
--- a/target/board/generic/sepolicy/device.te
+++ b/target/board/generic/sepolicy/device.te
@@ -1 +1 @@
-type qemu_device, dev_type;
+type qemu_device, dev_type, mlstrustedobject;
diff --git a/target/board/generic/sepolicy/file_contexts b/target/board/generic/sepolicy/file_contexts
index bbc34af..444a47f 100644
--- a/target/board/generic/sepolicy/file_contexts
+++ b/target/board/generic/sepolicy/file_contexts
@@ -1,3 +1,6 @@
+/dev/block/mtdblock0 u:object_r:system_block_device:s0
+/dev/block/mtdblock1 u:object_r:userdata_block_device:s0
+/dev/block/mtdblock2 u:object_r:cache_block_device:s0
/dev/qemu_.* u:object_r:qemu_device:s0
/dev/socket/qemud u:object_r:qemud_socket:s0
/system/bin/qemud u:object_r:qemud_exec:s0
diff --git a/tools/acp/Android.mk b/tools/acp/Android.mk
index e819e0c..2b41bc1 100644
--- a/tools/acp/Android.mk
+++ b/tools/acp/Android.mk
@@ -4,6 +4,7 @@
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
+LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
LOCAL_SRC_FILES := \
acp.c
@@ -22,5 +23,6 @@
LOCAL_MODULE := acp
LOCAL_ACP_UNAVAILABLE := true
LOCAL_CXX_STL := none
+LOCAL_ADDRESS_SANITIZER := false
include $(BUILD_HOST_EXECUTABLE)