Merge "Fix make_standalone_toolchain.py's handling of ~."
diff --git a/checkbuild.py b/checkbuild.py
index 7e0a024..c919658 100755
--- a/checkbuild.py
+++ b/checkbuild.py
@@ -1013,7 +1013,9 @@
             '-DPLATFORM_SDK_VERSION={}'.format(api),
             '-DABI_NDK_VERSION="{}"'.format(ndk.config.release),
             '-DABI_NDK_BUILD_NUMBER="{}"'.format(build_number),
-            '-O2', '-fpic', '-Wl,-r', '-no-pie', '-nostdlib', '-o', dst,
+            '-O2', '-fpic', '-Wl,-r', '-no-pie', '-nostdlib',
+            '-Wa,--noexecstack', '-Wl,-z,noexecstack',
+            '-o', dst,
         ] + srcs
 
         return args
diff --git a/tests/build/warn-execstack/jni/Android.mk b/tests/build/warn-execstack/jni/Android.mk
new file mode 100644
index 0000000..d814e2f
--- /dev/null
+++ b/tests/build/warn-execstack/jni/Android.mk
@@ -0,0 +1,17 @@
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := foo_solib
+LOCAL_SRC_FILES := foo.cpp
+include $(BUILD_SHARED_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := foo_exe
+LOCAL_SRC_FILES := foo.cpp
+include $(BUILD_EXECUTABLE)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := foo_static_exe
+LOCAL_SRC_FILES := foo.cpp
+LOCAL_LDFLAGS := -static
+include $(BUILD_EXECUTABLE)
diff --git a/tests/build/warn-execstack/jni/Application.mk b/tests/build/warn-execstack/jni/Application.mk
new file mode 100644
index 0000000..93d09f8
--- /dev/null
+++ b/tests/build/warn-execstack/jni/Application.mk
@@ -0,0 +1,11 @@
+# Verify that an NDK binary can be linked with --warn-execstack without a
+# warning. Regression test for https://github.com/android-ndk/ndk/issues/779.
+#
+# ndk-build implicitly passes -Wl,--fatal-warnings, so a warning fails the
+# test.
+#
+# Gold is only linker to implement --warn-execstack. ld.bfd doesn't recognize
+# --warn-execstack, and ld.lld *does* recognize the flag, but quietly discards
+# it.
+
+APP_LDFLAGS := -fuse-ld=gold -Wl,--warn-execstack
diff --git a/tests/build/warn-execstack/jni/foo.cpp b/tests/build/warn-execstack/jni/foo.cpp
new file mode 100644
index 0000000..4cce7f6
--- /dev/null
+++ b/tests/build/warn-execstack/jni/foo.cpp
@@ -0,0 +1,3 @@
+int main() {
+  return 0;
+}