diff --git a/config/ac-macros/compiler_flag.m4 b/config/ac-macros/compiler_flag.m4
index a236f61a19889d92da154333e724879679cff23b..88097c7a62e1624597af02632a6a1ef6b353e167 100644
--- a/config/ac-macros/compiler_flag.m4
+++ b/config/ac-macros/compiler_flag.m4
@@ -38,3 +38,25 @@ AC_DEFUN([AC_SYS_OS_COMPILER_FLAG],
  fi
 ])
 
+AC_DEFUN([AC_CHECK_NOEXECSTACK],
+[
+ AC_CACHE_CHECK(whether --noexecstack is desirable for .S files,
+		mysql_cv_as_noexecstack, [dnl
+  cat > conftest.c <<EOF
+void foo (void) { }
+EOF
+  if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS
+		     -S -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD]) \
+     && grep .note.GNU-stack conftest.s >/dev/null \
+     && AC_TRY_COMMAND([${CC-cc} $CCASFLAGS $CPPFLAGS -Wa,--noexecstack
+		       -c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD])
+  then
+    mysql_cv_as_noexecstack=yes
+  else
+    mysql_cv_as_noexecstack=no
+  fi
+  rm -f conftest*])
+ if test $mysql_cv_as_noexecstack = yes; then
+   CCASFLAGS="$CCASFLAGS -Wa,--noexecstack"
+ fi
+])
diff --git a/configure.in b/configure.in
index 120863dafbd99f687c1a1a9dc21b50633736c940..1306a3cc74da336418c81bc9926fa0799882fdda 100644
--- a/configure.in
+++ b/configure.in
@@ -482,6 +482,10 @@ AM_PROG_CC_STDC
 
 # We need an assembler, too
 AM_PROG_AS
+CCASFLAGS="$CCASFLAGS $ASFLAGS"
+
+# Check if we need noexec stack for assembler
+AC_CHECK_NOEXECSTACK
 
 if test "$am_cv_prog_cc_stdc" = "no"
 then
diff --git a/strings/Makefile.am b/strings/Makefile.am
index 1cba4bab3f09ad8052780b947abb5bd61eca57c9..416442dd56431f77d1c548e7ab05c0fa30a077fa 100644
--- a/strings/Makefile.am
+++ b/strings/Makefile.am
@@ -67,12 +67,6 @@ conf_to_src_LDFLAGS= @NOINST_LDFLAGS@
 #strtoull.o:		@CHARSET_OBJS@
 
 
-if ASSEMBLER
-# On Linux gcc can compile the assembly files
-%.o	: %.s
-	$(AS) $(ASFLAGS) -o $@ $<
-endif
-
 FLAGS=$(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) @NOINST_LDFLAGS@
 
 str_test: str_test.c $(pkglib_LIBRARIES)