Merge "Revert "Remove ping.""
diff --git a/core/Makefile b/core/Makefile
index 690cfc0..7a4b874 100644
--- a/core/Makefile
+++ b/core/Makefile
@@ -1068,6 +1068,7 @@
$(BUILT_TARGET_FILES_PACKAGE): PRIVATE_OTA_TOOLS := $(built_ota_tools)
$(BUILT_TARGET_FILES_PACKAGE): PRIVATE_RECOVERY_API_VERSION := $(RECOVERY_API_VERSION)
+$(BUILT_TARGET_FILES_PACKAGE): PRIVATE_RECOVERY_FSTAB_VERSION := $(RECOVERY_FSTAB_VERSION)
ifeq ($(TARGET_RELEASETOOLS_EXTENSIONS),)
# default to common dir for device vendor
@@ -1152,6 +1153,7 @@
$(hide) $(ACP) $(APKCERTS_FILE) $(zip_root)/META/apkcerts.txt
$(hide) echo "$(PRODUCT_OTA_PUBLIC_KEYS)" > $(zip_root)/META/otakeys.txt
$(hide) echo "recovery_api_version=$(PRIVATE_RECOVERY_API_VERSION)" > $(zip_root)/META/misc_info.txt
+ $(hide) echo "fstab_version=$(PRIVATE_RECOVERY_FSTAB_VERSION)" >> $(zip_root)/META/misc_info.txt
ifdef BOARD_FLASH_BLOCK_SIZE
$(hide) echo "blocksize=$(BOARD_FLASH_BLOCK_SIZE)" >> $(zip_root)/META/misc_info.txt
endif
diff --git a/core/combo/TARGET_linux-mips.mk b/core/combo/TARGET_linux-mips.mk
index 3df17bb..0a0fcbd 100644
--- a/core/combo/TARGET_linux-mips.mk
+++ b/core/combo/TARGET_linux-mips.mk
@@ -87,7 +87,9 @@
-ffunction-sections \
-fdata-sections \
-funwind-tables \
+ -Wa,--noexecstack \
-Werror=format-security \
+ -D_FORTIFY_SOURCE=1 \
$(arch_variant_cflags)
android_config_h := $(call select-android-config-h,linux-mips)
@@ -117,10 +119,13 @@
endif
TARGET_GLOBAL_LDFLAGS += \
+ -Wl,-z,noexecstack \
+ -Wl,-z,relro \
+ -Wl,-z,now \
+ -Wl,--warn-shared-textrel \
$(arch_variant_ldflags)
-TARGET_GLOBAL_CPPFLAGS += -fvisibility-inlines-hidden \
- -fno-use-cxa-atexit
+TARGET_GLOBAL_CPPFLAGS += -fvisibility-inlines-hidden
# More flags/options can be added here
TARGET_RELEASE_CFLAGS := \
@@ -220,7 +225,7 @@
$(hide) $(PRIVATE_CXX) \
-nostdlib -Wl,-soname,$(notdir $@) \
-Wl,--gc-sections \
- -shared -Bsymbolic \
+ -Wl,-shared,-Bsymbolic \
$(PRIVATE_TARGET_GLOBAL_LD_DIRS) \
$(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTBEGIN_SO_O)) \
$(PRIVATE_ALL_OBJECTS) \
@@ -250,6 +255,9 @@
$(call normalize-target-libraries,$(PRIVATE_ALL_SHARED_LIBRARIES)) \
$(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTBEGIN_DYNAMIC_O)) \
$(PRIVATE_ALL_OBJECTS) \
+ -Wl,--whole-archive \
+ $(call normalize-target-libraries,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES)) \
+ -Wl,--no-whole-archive \
$(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--start-group) \
$(call normalize-target-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \
$(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--end-group) \
@@ -269,6 +277,9 @@
$(PRIVATE_TARGET_GLOBAL_LDFLAGS) \
$(PRIVATE_LDFLAGS) \
$(PRIVATE_ALL_OBJECTS) \
+ -Wl,--whole-archive \
+ $(call normalize-target-libraries,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES)) \
+ -Wl,--no-whole-archive \
$(call normalize-target-libraries,$(filter-out %libc_nomalloc.a,$(filter-out %libc.a,$(PRIVATE_ALL_STATIC_LIBRARIES)))) \
-Wl,--start-group \
$(call normalize-target-libraries,$(filter %libc.a,$(PRIVATE_ALL_STATIC_LIBRARIES))) \
diff --git a/core/droiddoc.mk b/core/droiddoc.mk
index f29aaa7..83cf404 100644
--- a/core/droiddoc.mk
+++ b/core/droiddoc.mk
@@ -165,7 +165,7 @@
$(full_target): $(full_src_files) $(droiddoc_templates) $(droiddoc) $(html_dir_files) $(full_java_lib_deps) $(LOCAL_ADDITIONAL_DEPENDENCIES)
@echo Docs droiddoc: $(PRIVATE_OUT_DIR)
- $(hide) mkdir -p $(dir $(full_target))
+ $(hide) mkdir -p $(dir $@)
$(call prepare-doc-source-list,$(PRIVATE_SRC_LIST_FILE),$(PRIVATE_JAVA_FILES), \
$(PRIVATE_SOURCE_INTERMEDIATES_DIR) $(PRIVATE_ADDITIONAL_JAVA_DIR))
$(hide) ( \
@@ -198,7 +198,7 @@
##
$(full_target): $(full_src_files) $(full_java_lib_deps)
@echo Docs javadoc: $(PRIVATE_OUT_DIR)
- @mkdir -p $(dir $(full_target))
+ @mkdir -p $(dir $@)
$(call prepare-doc-source-list,$(PRIVATE_SRC_LIST_FILE),$(PRIVATE_JAVA_FILES), \
$(PRIVATE_SOURCE_INTERMEDIATES_DIR) $(PRIVATE_ADDITIONAL_JAVA_DIR))
$(hide) ( \
diff --git a/core/main.mk b/core/main.mk
index b401ed2..5a7c2e2 100644
--- a/core/main.mk
+++ b/core/main.mk
@@ -201,7 +201,7 @@
# These are the modifier targets that don't do anything themselves, but
# change the behavior of the build.
# (must be defined before including definitions.make)
-INTERNAL_MODIFIER_TARGETS := showcommands checkbuild all incrementaljavac
+INTERNAL_MODIFIER_TARGETS := showcommands all incrementaljavac
.PHONY: incrementaljavac
incrementaljavac: ;
@@ -398,7 +398,7 @@
endif
-# If they only used the modifier goals (showcommands, checkbuild), we'll actually
+# If they only used the modifier goals (showcommands, etc), we'll actually
# build the default target.
ifeq ($(filter-out $(INTERNAL_MODIFIER_TARGETS),$(MAKECMDGOALS)),)
.PHONY: $(INTERNAL_MODIFIER_TARGETS)
@@ -693,6 +693,12 @@
.PHONY: checkbuild
checkbuild: $(modules_to_check)
+ifeq (true,$(ANDROID_BUILD_EVERYTHING_BY_DEFAULT)$(filter $(MAKECMDGOALS),checkbuild))
+droid: checkbuild
+else
+# ANDROID_BUILD_EVERYTHING_BY_DEFAULT not set, or checkbuild is one of the cmd goals.
+checkbuild: droid
+endif
.PHONY: ramdisk
ramdisk: $(INSTALLED_RAMDISK_TARGET)
diff --git a/envsetup.sh b/envsetup.sh
index 3ec8e1a..785e56c 100644
--- a/envsetup.sh
+++ b/envsetup.sh
@@ -789,7 +789,40 @@
# to the usual ANR traces file
function systemstack()
{
- adb shell echo '""' '>>' /data/anr/traces.txt && adb shell chmod 776 /data/anr/traces.txt && adb shell kill -3 $(pid system_server)
+ stacks system_server
+}
+
+function stacks()
+{
+ if [[ $1 =~ ^[0-9]+$ ]] ; then
+ local PID="$1"
+ elif [ "$1" ] ; then
+ local PID=$(pid $1)
+ else
+ echo "usage: stacks [pid|process name]"
+ fi
+
+ if [ "$PID" ] ; then
+ local TRACES=/data/anr/traces.txt
+ local ORIG=/data/anr/traces.orig
+ local TMP=/data/anr/traces.tmp
+
+ # Keep original traces to avoid clobbering
+ adb shell mv $TRACES $ORIG
+
+ # Make sure we have a usable file
+ adb shell touch $TRACES
+ adb shell chmod 666 $TRACES
+
+ # Dump stacks and wait for dump to finish
+ adb shell kill -3 $PID
+ adb shell notify $TRACES
+
+ # Restore original stacks, and show current output
+ adb shell mv $TRACES $TMP
+ adb shell mv $ORIG $TRACES
+ adb shell cat $TMP | less -S
+ fi
}
function gdbclient()
diff --git a/tools/droiddoc/templates-sdk/assets/css/default.css b/tools/droiddoc/templates-sdk/assets/css/default.css
index 20e462c..f272241 100644
--- a/tools/droiddoc/templates-sdk/assets/css/default.css
+++ b/tools/droiddoc/templates-sdk/assets/css/default.css
@@ -2443,7 +2443,8 @@
color:#666;
}
-div.figure {
+div.figure,
+div.figure-right {
float:right;
clear:right;
margin:10px 0 0 0;
@@ -2451,6 +2452,19 @@
/* width must be defined w/ an inline style matching the image width */
}
+div.figure-left {
+ float:left;
+ clear:left;
+ margin:10px 0 0 0;
+ padding:0 20px 0 0;
+ /* width must be defined w/ an inline style matching the image width */
+}
+
+img.frame {
+ border:1px solid #DDD;
+ padding:4px;
+}
+
p.table-caption {
margin: 0 0 4px 0;
font-size:13px;
diff --git a/tools/droiddoc/templates-sdk/gcm_lists.cs b/tools/droiddoc/templates-sdk/gcm_lists.cs
deleted file mode 100644
index 0990bc9..0000000
--- a/tools/droiddoc/templates-sdk/gcm_lists.cs
+++ /dev/null
@@ -1,5 +0,0 @@
-var GCM_DATA = [
-<?cs each:page = docs.pages
-?> { id:<?cs var: page.id ?>, label:"<?cs var:page.label ?>", link:"<?cs var:page.link ?>", type:"<?cs var:page.type ?>" }<?cs if:!last(page) ?>,<?cs /if ?>
-<?cs /each ?>
- ];
diff --git a/tools/droiddoc/templates-sdk/gms_lists.cs b/tools/droiddoc/templates-sdk/gms_lists.cs
deleted file mode 100644
index d056bc3..0000000
--- a/tools/droiddoc/templates-sdk/gms_lists.cs
+++ /dev/null
@@ -1,5 +0,0 @@
-var GMS_DATA = [
-<?cs each:page = docs.pages
-?> { id:<?cs var: page.id ?>, label:"<?cs var:page.label ?>", link:"<?cs var:page.link ?>", type:"<?cs var:page.type ?>" }<?cs if:!last(page) ?>,<?cs /if ?>
-<?cs /each ?>
- ];
diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py
index 127784d..263ae11 100644
--- a/tools/releasetools/common.py
+++ b/tools/releasetools/common.py
@@ -117,6 +117,9 @@
# ok if extensions don't exist
pass
+ if "fstab_version" not in d:
+ d["fstab_version"] = "1"
+
try:
data = zip.read("META/imagesizes.txt")
for line in data.split("\n"):
@@ -141,8 +144,9 @@
makeint("cache_size")
makeint("recovery_size")
makeint("boot_size")
+ makeint("fstab_version")
- d["fstab"] = LoadRecoveryFSTab(zip)
+ d["fstab"] = LoadRecoveryFSTab(zip, d["fstab_version"])
d["build.prop"] = LoadBuildProp(zip)
return d
@@ -161,7 +165,7 @@
d[name] = value
return d
-def LoadRecoveryFSTab(zip):
+def LoadRecoveryFSTab(zip, fstab_version):
class Partition(object):
pass
@@ -171,40 +175,76 @@
print "Warning: could not find RECOVERY/RAMDISK/etc/recovery.fstab in %s." % zip
data = ""
- d = {}
- for line in data.split("\n"):
- line = line.strip()
- if not line or line.startswith("#"): continue
- pieces = line.split()
- if not (3 <= len(pieces) <= 4):
- raise ValueError("malformed recovery.fstab line: \"%s\"" % (line,))
+ if fstab_version == 1:
+ d = {}
+ for line in data.split("\n"):
+ line = line.strip()
+ if not line or line.startswith("#"): continue
+ pieces = line.split()
+ if not (3 <= len(pieces) <= 4):
+ raise ValueError("malformed recovery.fstab line: \"%s\"" % (line,))
- p = Partition()
- p.mount_point = pieces[0]
- p.fs_type = pieces[1]
- p.device = pieces[2]
- p.length = 0
- options = None
- if len(pieces) >= 4:
- if pieces[3].startswith("/"):
- p.device2 = pieces[3]
- if len(pieces) >= 5:
- options = pieces[4]
+ p = Partition()
+ p.mount_point = pieces[0]
+ p.fs_type = pieces[1]
+ p.device = pieces[2]
+ p.length = 0
+ options = None
+ if len(pieces) >= 4:
+ if pieces[3].startswith("/"):
+ p.device2 = pieces[3]
+ if len(pieces) >= 5:
+ options = pieces[4]
+ else:
+ p.device2 = None
+ options = pieces[3]
else:
p.device2 = None
- options = pieces[3]
- else:
- p.device2 = None
- if options:
+ if options:
+ options = options.split(",")
+ for i in options:
+ if i.startswith("length="):
+ p.length = int(i[7:])
+ else:
+ print "%s: unknown option \"%s\"" % (p.mount_point, i)
+
+ d[p.mount_point] = p
+
+ elif fstab_version == 2:
+ d = {}
+ for line in data.split("\n"):
+ line = line.strip()
+ if not line or line.startswith("#"): continue
+ pieces = line.split()
+ if len(pieces) != 5:
+ raise ValueError("malformed recovery.fstab line: \"%s\"" % (line,))
+
+ # Ignore entries that are managed by vold
+ options = pieces[4]
+ if "voldmanaged=" in options: continue
+
+ # It's a good line, parse it
+ p = Partition()
+ p.device = pieces[0]
+ p.mount_point = pieces[1]
+ p.fs_type = pieces[2]
+ p.device2 = None
+ p.length = 0
+
options = options.split(",")
for i in options:
if i.startswith("length="):
p.length = int(i[7:])
else:
- print "%s: unknown option \"%s\"" % (p.mount_point, i)
+ # Ignore all unknown options in the unified fstab
+ continue
- d[p.mount_point] = p
+ d[p.mount_point] = p
+
+ else:
+ raise ValueError("Unknown fstab_version: \"%d\"" % (fstab_version,))
+
return d