Merge "Fix package path of android/soong/android pctx" into qt-dev
diff --git a/android/config.go b/android/config.go
index 2e0750b..705b1e1 100644
--- a/android/config.go
+++ b/android/config.go
@@ -1032,3 +1032,7 @@
 func (c *config) ProductHiddenAPIStubsTest() []string {
 	return c.productVariables.ProductHiddenAPIStubsTest
 }
+
+func (c *deviceConfig) TargetFSConfigGen() *string {
+	return c.config.productVariables.TargetFSConfigGen
+}
diff --git a/android/variable.go b/android/variable.go
index 56ca666..7daa926 100644
--- a/android/variable.go
+++ b/android/variable.go
@@ -281,6 +281,8 @@
 	ProductHiddenAPIStubs       []string `json:",omitempty"`
 	ProductHiddenAPIStubsSystem []string `json:",omitempty"`
 	ProductHiddenAPIStubsTest   []string `json:",omitempty"`
+
+	TargetFSConfigGen *string `json:",omitempty"`
 }
 
 func boolPtr(v bool) *bool {
diff --git a/cc/config/global.go b/cc/config/global.go
index 372ffc4..07ef9d0 100644
--- a/cc/config/global.go
+++ b/cc/config/global.go
@@ -83,6 +83,7 @@
 		"-Wl,--warn-shared-textrel",
 		"-Wl,--fatal-warnings",
 		"-Wl,--no-undefined-version",
+		"-Wl,--exclude-libs,libgcc.a",
 	}
 
 	deviceGlobalLldflags = append(ClangFilterUnknownLldflags(deviceGlobalLdflags),
diff --git a/cc/stl.go b/cc/stl.go
index e59f677..1a5dd79 100644
--- a/cc/stl.go
+++ b/cc/stl.go
@@ -245,7 +245,10 @@
 		ndkSrcRoot := android.PathForSource(ctx, "prebuilts/ndk/current/sources/cxx-stl/system/include")
 		flags.CFlags = append(flags.CFlags, "-isystem "+ndkSrcRoot.String())
 	case "ndk_libc++_shared", "ndk_libc++_static":
-		// Nothing.
+		if ctx.Arch().ArchType == android.Arm {
+			// Make sure the _Unwind_XXX symbols are not re-exported.
+			flags.LdFlags = append(flags.LdFlags, "-Wl,--exclude-libs,libunwind.a")
+		}
 	case "":
 		// None or error.
 		if !ctx.toolchain().Bionic() {
diff --git a/java/app_builder.go b/java/app_builder.go
index e5ccbbc..5bacb67 100644
--- a/java/app_builder.go
+++ b/java/app_builder.go
@@ -84,8 +84,10 @@
 	})
 
 	var certificateArgs []string
+	var deps android.Paths
 	for _, c := range certificates {
 		certificateArgs = append(certificateArgs, c.Pem.String(), c.Key.String())
+		deps = append(deps, c.Pem, c.Key)
 	}
 
 	ctx.Build(pctx, android.BuildParams{
@@ -93,6 +95,7 @@
 		Description: "signapk",
 		Output:      outputFile,
 		Input:       unsignedApk,
+		Implicits:   deps,
 		Args: map[string]string{
 			"certificates": strings.Join(certificateArgs, " "),
 		},
diff --git a/python/proto.go b/python/proto.go
index b3ffaa6..85ed1a5 100644
--- a/python/proto.go
+++ b/python/proto.go
@@ -35,12 +35,12 @@
 	// into a srcszip.
 	zipCmd := rule.Command().
 		Tool(ctx.Config().HostToolPath(ctx, "soong_zip")).
-		FlagWithOutput("-o ", srcsZipFile).
-		FlagWithArg("-C ", outDir.String()).
-		FlagWithArg("-D ", outDir.String())
+		FlagWithOutput("-o ", srcsZipFile)
 	if pkgPath != "" {
 		zipCmd.FlagWithArg("-P ", pkgPath)
 	}
+	zipCmd.FlagWithArg("-C ", outDir.String()).
+		FlagWithArg("-D ", outDir.String())
 
 	rule.Command().Text("rm -rf").Flag(outDir.String())