diff --git a/cleanspec.mk b/cleanspec.mk
index 7c178ec..ab1e5f1 100644
--- a/cleanspec.mk
+++ b/cleanspec.mk
@@ -69,6 +69,7 @@
 $(call add-clean-step, rm -rf $(OUT_DIR)/target/product/*/obj/SHARED_LIBRARIES/libjni_andpyime_intermediates)
 $(call add-clean-step, rm -rf $(OUT_DIR)/target/product/*/obj/SHARED_LIBRARIES/share)
 $(call add-clean-step, rm -rf $(OUT_DIR)/target/product/*/obj/SHARED_LIBRARIES/libwebcore_intermediates)
+$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/framework_intermediates)
 
 # ************************************************
 # NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
diff --git a/core/armelf.x b/core/armelf.x
index 766fe88..d38dc1d 100644
--- a/core/armelf.x
+++ b/core/armelf.x
@@ -188,9 +188,15 @@
   .debug_funcnames 0 : { *(.debug_funcnames) }
   .debug_typenames 0 : { *(.debug_typenames) }
   .debug_varnames  0 : { *(.debug_varnames) }
+  /* Adding the word ABSOLUTE below, so that the _stack below won't float 
+     into a random section. If _stack is not absolutely with .stack section,
+     we saw that sometimes _stack got inserted into the .debug_frame section
+     because it's processed by the linker at that moment. As a result, _stack
+     symbol will get wrongly moved and gelf_update_symshndx() will return
+     invalid data. */
     .stack         0x80000 :
   {
-    _stack = .;
+    _stack = ABSOLUTE(.);
     *(.stack)
   }
   .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) }
diff --git a/core/armelf.xsc b/core/armelf.xsc
index 4253054..9fac3d2 100644
--- a/core/armelf.xsc
+++ b/core/armelf.xsc
@@ -190,9 +190,15 @@
   .debug_funcnames 0 : { *(.debug_funcnames) }
   .debug_typenames 0 : { *(.debug_typenames) }
   .debug_varnames  0 : { *(.debug_varnames) }
+  /* Adding the word ABSOLUTE below, so that the _stack below won't float
+     into a random section. If _stack is not absolutely with .stack section,
+     we saw that sometimes _stack got inserted into the .debug_frame section
+     because it's processed by the linker at that moment. As a result, _stack
+     symbol will get wrongly moved and gelf_update_symshndx() will return
+     invalid data. */
     .stack         0x80000 :
   {
-    _stack = .;
+    _stack = ABSOLUTE(.);
     *(.stack)
   }
   .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) }
diff --git a/core/main.mk b/core/main.mk
index 454527d..a19beba 100644
--- a/core/main.mk
+++ b/core/main.mk
@@ -174,6 +174,9 @@
 
 ifeq ($(TARGET_BUILD_VARIANT),eng)
 tags_to_install := user debug eng
+  # Don't require the setup wizard on eng builds
+  ADDITIONAL_BUILD_PROPERTIES := $(filter-out ro.setupwizard.mode=%,\
+          $(call collapse-pairs, $(ADDITIONAL_BUILD_PROPERTIES)))
 endif
 
 ## tests ##
diff --git a/core/tasks/cts.mk b/core/tasks/cts.mk
index 8cea2c5..4c3f0fc 100644
--- a/core/tasks/cts.mk
+++ b/core/tasks/cts.mk
@@ -32,8 +32,10 @@
 	CtsContentTestCases \
 	CtsDatabaseTestCases \
 	CtsGraphicsTestCases \
+	CtsHardwareTestCases \
 	CtsLocationTestCases \
 	CtsOsTestCases \
+	CtsPermissionTestCases \
 	CtsProviderTestCases \
 	CtsTextTestCases \
 	CtsUtilTestCases \
@@ -110,7 +112,7 @@
 $(CORE_VM_TEST_PLAN): PRIVATE_CUSTOM_TOOL := java $(PRIVATE_JAVAOPTS) \
 	-classpath $(PRIVATE_CLASSPATH) \
 	$(PRIVATE_PARAMS) CollectAllTests $(CORE_VM_TEST_PLAN) \
-	cts/tests/vm-tests/AndroidManifest.xml dot.junit.AllJunitHostTests
+	cts/tests/vm-tests/AndroidManifest.xml dot.junit.AllJunitHostTests cts/tools/vm-tests/Android.mk
 # Please see big comment above on why this line depends on javalib.jar instead of classes.jar
 $(CORE_VM_TEST_PLAN): vm-tests $(HOST_OUT_JAVA_LIBRARIES)/descGen.jar $(CORE_INTERMEDIATES)/javalib.jar $(VMTESTS_INTERMEDIATES)/android.core.vm-tests.jar $(TESTS_INTERMEDIATES)/javalib.jar $(cts_dir)/all_cts_files_stamp | $(ACP)
 	@echo "Generate the CTS vm-test plan: $@"
@@ -119,7 +121,7 @@
 	$(ACP) -fv $(VMTESTS_INTERMEDIATES)/android.core.vm-tests.jar $(PRIVATE_DIR)/repository/testcases/android.core.vm-tests.jar
 
 # Generate the default test plan for User.
-$(DEFAULT_TEST_PLAN): $(cts_dir)/all_cts_files_stamp $(cts_tools_src_dir)/utils/genDefaultTestPlan.sh
+$(DEFAULT_TEST_PLAN): $(cts_dir)/all_cts_files_stamp $(cts_tools_src_dir)/utils/genDefaultTestPlan.sh $(CORE_VM_TEST_PLAN) $(CORE_TEST_PLAN)
 	$(hide) bash $(cts_tools_src_dir)/utils/genDefaultTestPlan.sh cts/tests/tests/ \
      $(PRIVATE_DIR) $(TMP_DIR) $(TOP) $(TARGET_COMMON_OUT_ROOT) $(OUT_DIR)
 
diff --git a/tools/droiddoc/templates/assets/android-developer-docs.js b/tools/droiddoc/templates/assets/android-developer-docs.js
index a84d5a6..2a8c3bf 100644
--- a/tools/droiddoc/templates/assets/android-developer-docs.js
+++ b/tools/droiddoc/templates/assets/android-developer-docs.js
@@ -9,7 +9,7 @@
 var NAV_PREF_PANELS = "panels";
 var nav_pref;
 var toRoot;
-
+var isMobile = false; // true if mobile, so we can adjust some layout
 
 function addLoadEvent(newfun) {
   var current = window.onload;
@@ -23,8 +23,25 @@
   }
 }
 
+var agent = navigator['userAgent'];
+if ((agent.indexOf("Mobile") != -1) || 
+    (agent.indexOf("BlackBerry") != -1) || 
+    (agent.indexOf("Mini") != -1)) {
+  isMobile = true;
+  addLoadEvent(mobileSetup);
+}
+
 window.onresize = resizeAll;
 
+function mobileSetup() {
+  $("body").css({'overflow':'auto'});
+  $("html").css({'overflow':'auto'});
+  $("#body-content").css({'position':'relative', 'top':'0'});
+  $("#doc-content").css({'overflow':'visible', 'border-left':'3px solid #DDD'});
+  $("#side-nav").css({'padding':'0'});
+  $("#nav-tree").css({'overflow-y': 'auto'});
+}
+
 function setToRoot(root) {
   toRoot = root;
   // note: toRoot also used by carousel.js
@@ -83,9 +100,6 @@
 } 
 
 function init() {
-  $("#resize-packages-nav").resizable({handles: "s", resize: function(e, ui) { resizeHeight(); } });
-  $(".side-nav-resizable").resizable({handles: "e", resize: function(e, ui) { resizeWidth(); } });
-
   $("#side-nav").css({position:"absolute",left:0});
   content = $("#doc-content");
   resizePackagesNav = $("#resize-packages-nav");
@@ -98,17 +112,22 @@
   } else if (location.href.indexOf("/guide/") != -1) {
     var cookiePath = "guide_";
   }
-  var cookieWidth = getCookie(cookiePath+'width');
-  var cookieHeight = getCookie(cookiePath+'height');
-  if (cookieWidth) {
-    restoreWidth(cookieWidth);
-  } else if ($(".side-nav-resizable").length) {
-    resizeWidth();
-  }
-  if (cookieHeight) {
-    restoreHeight(cookieHeight);
-  } else {
-    resizeHeight();
+
+  if (!isMobile) {
+    $("#resize-packages-nav").resizable({handles: "s", resize: function(e, ui) { resizeHeight(); } });
+    $(".side-nav-resizable").resizable({handles: "e", resize: function(e, ui) { resizeWidth(); } });
+    var cookieWidth = getCookie(cookiePath+'width');
+    var cookieHeight = getCookie(cookiePath+'height');
+    if (cookieWidth) {
+      restoreWidth(cookieWidth);
+    } else if ($(".side-nav-resizable").length) {
+      resizeWidth();
+    }
+    if (cookieHeight) {
+      restoreHeight(cookieHeight);
+    } else {
+      resizeHeight();
+    }
   }
 
   if (devdocNav.length) { // only dev guide and sdk 
@@ -175,9 +194,11 @@
 }
 
 function resizeAll() {
-  resizeHeight();
-  if ($(".side-nav-resizable").length) {
-    resizeWidth();
+  if (!isMobile) {
+    resizeHeight();
+    if ($(".side-nav-resizable").length) {
+      resizeWidth();
+    }
   }
 }
 
diff --git a/tools/droiddoc/templates/macros.cs b/tools/droiddoc/templates/macros.cs
index fe89045..aec9c22 100644
--- a/tools/droiddoc/templates/macros.cs
+++ b/tools/droiddoc/templates/macros.cs
@@ -283,16 +283,20 @@
       </div><!-- end swapper -->
     </div> <!-- end side-nav -->
     <script>
-      $("<a href='#' id='nav-swap' onclick='swapNav();return false;' style='font-size:10px;line-height:9px;margin-left:1em;text-decoration:none;'><span id='tree-link'>Use Tree Navigation</span><span id='panel-link' style='display:none'>Use Panel Navigation</span></a>").appendTo("#side-nav");
-      chooseDefaultNav();
-      if ($("#nav-tree").is(':visible')) init_navtree("nav-tree", "<?cs var:toroot ?>", NAVTREE_DATA);
-      else {
-        addLoadEvent(function() {
-          scrollIntoView("packages-nav");
-          scrollIntoView("classes-nav");
-        });
+      if (!isMobile) {
+        $("<a href='#' id='nav-swap' onclick='swapNav();return false;' style='font-size:10px;line-height:9px;margin-left:1em;text-decoration:none;'><span id='tree-link'>Use Tree Navigation</span><span id='panel-link' style='display:none'>Use Panel Navigation</span></a>").appendTo("#side-nav");
+        chooseDefaultNav();
+        if ($("#nav-tree").is(':visible')) init_navtree("nav-tree", "<?cs var:toroot ?>", NAVTREE_DATA);
+        else {
+          addLoadEvent(function() {
+            scrollIntoView("packages-nav");
+            scrollIntoView("classes-nav");
+          });
+        }
+        $("#swapper").css({borderBottom:"2px solid #aaa"});
+      } else {
+        swapNav(); // tree view should be used on mobile
       }
-      $("#swapper").css({borderBottom:"2px solid #aaa"});
     </script><?cs 
 /def ?>
 
