Try to make stack direction detection more reliable on GCC 4.7.0 and later. v1.1.3
authorJean-Claude Beaudoin <jean.claude.beaudoin@gmail.com>
Mon, 4 Feb 2013 07:28:51 +0000 (02:28 -0500)
committerJean-Claude Beaudoin <jean.claude.beaudoin@gmail.com>
Mon, 4 Feb 2013 07:28:51 +0000 (02:28 -0500)
src/aclocal.m4

index 9b7d6bb..f32a726 100644 (file)
@@ -585,22 +585,28 @@ if test -z "${MKCL_STACK_DIR}" ; then
   AC_RUN_IFELSE([AC_LANG_SOURCE([[
 #include <stdio.h>
 
+#if __GNUC__ >= 4
+int f2(char * mark) __attribute__((noinline));
+#else
+int f2(char * mark);
+#endif
+
+int f1() {
+  char d = 0;
+  return f2(&d);
+}
+
 int f2(char * mark) {
   char c = 0;
   /* The purpose of this printf call is to prevent the compiler
      from inlining this function (like gcc 4.7.0 does).
      This is hoped to be portable, otherwise compiler specific
-     pragmas or attributes would be needed. (like gcc __attribute__((noinline))
+     pragmas or attributes would be needed. (like gcc __attribute__((noinline)))
    */
   printf("callee frame = %p, caller frame = %p, ", &c, mark);
   return &c - mark;
 }
 
-int f1() {
-  char d = 0;
-  return f2(&d);
-}
-
 int main() {
   if (f1() > 0)
     return 1;