Merge changes from topics 'ndk-libc++-libdl', 'ndk-compiler-rt_extras'

* changes:
  Always link libdl with libc++ for the NDK.
  Use libcompiler-rt_extras with NDK builds.
diff --git a/cc/linker.go b/cc/linker.go
index df19de7..4ee38dc 100644
--- a/cc/linker.go
+++ b/cc/linker.go
@@ -108,7 +108,7 @@
 	deps.ReexportStaticLibHeaders = append(deps.ReexportStaticLibHeaders, linker.Properties.Export_static_lib_headers...)
 	deps.ReexportSharedLibHeaders = append(deps.ReexportSharedLibHeaders, linker.Properties.Export_shared_lib_headers...)
 
-	if !ctx.sdk() && ctx.ModuleName() != "libcompiler_rt-extras" {
+	if ctx.ModuleName() != "libcompiler_rt-extras" {
 		deps.LateStaticLibs = append(deps.LateStaticLibs, "libcompiler_rt-extras")
 	}
 
diff --git a/cc/stl.go b/cc/stl.go
index a7e362c..874e7ae 100644
--- a/cc/stl.go
+++ b/cc/stl.go
@@ -114,9 +114,15 @@
 		// The system STL doesn't have a prebuilt (it uses the system's libstdc++), but it does have
 		// its own includes. The includes are handled in CCBase.Flags().
 		deps.SharedLibs = append([]string{"libstdc++"}, deps.SharedLibs...)
-	case "ndk_libc++_shared", "ndk_libstlport_shared":
+	case "ndk_libc++_shared":
+		deps.SharedLibs = append(deps.SharedLibs, stl.Properties.SelectedStl,
+			"libdl")
+	case "ndk_libc++_static":
+		deps.StaticLibs = append(deps.StaticLibs, stl.Properties.SelectedStl)
+		deps.SharedLibs = append(deps.SharedLibs, "libdl")
+	case "ndk_libstlport_shared":
 		deps.SharedLibs = append(deps.SharedLibs, stl.Properties.SelectedStl)
-	case "ndk_libc++_static", "ndk_libstlport_static", "ndk_libgnustl_static":
+	case "ndk_libstlport_static", "ndk_libgnustl_static":
 		deps.StaticLibs = append(deps.StaticLibs, stl.Properties.SelectedStl)
 	default:
 		panic(fmt.Errorf("Unknown stl: %q", stl.Properties.SelectedStl))