Enhance gcc checks.
authorKevin O'Connor <kevin@koconnor.net>
Fri, 27 Mar 2009 04:07:07 +0000 (00:07 -0400)
committerKevin O'Connor <kevin@koconnor.net>
Fri, 27 Mar 2009 04:07:07 +0000 (00:07 -0400)
Use -Os on visible function test - it seems to alter behavior.
Add check for global variables being present.

tools/test-gcc.sh

index 1dce4507932ccaa3e27c43234873d56a05776dda..c08ed823b7b6c31cfa767f79a91d1290ba74fac5 100755 (executable)
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Script to test if gcc's -combine option works properly.
+# Script to test if gcc "-fwhole-program" works properly.
 
 mkdir -p out
 TMPFILE1=out/tmp_testcompile1.c
@@ -17,17 +17,36 @@ if [ $? -ne 0 ]; then
     exit -1
 fi
 
+# Test if "visible" variables are marked global.
+cat - > $TMPFILE1 <<EOF
+unsigned char t1 __attribute__((section(".data16.foo.19"))) __attribute__((externally_visible));
+EOF
+$CC -Os -c -fwhole-program $TMPFILE1 -o $TMPFILE1o > /dev/null 2>&1
+cat - > $TMPFILE2 <<EOF
+extern unsigned char t1;
+int __attribute__((externally_visible)) main() { return t1; }
+EOF
+$CC -Os -c -fwhole-program $TMPFILE2 -o $TMPFILE2o > /dev/null 2>&1
+$CC -Os $TMPFILE1o $TMPFILE2o -o $TMPFILE3o > /dev/null 2>&1
+if [ $? -ne 0 ]; then
+    echo "This version of gcc does not properly handle" > /dev/fd/2
+    echo "  global variables in -fwhole-program mode." > /dev/fd/2
+    echo "Please upgrade to a newer gcc (eg, v4.3 or later)" > /dev/fd/2
+    echo -1
+    exit -1
+fi
+
 # Test if "visible" functions are marked global.
 cat - > $TMPFILE1 <<EOF
 void __attribute__((externally_visible)) t1() { }
 EOF
-$CC -c -fwhole-program $TMPFILE1 -o $TMPFILE1o > /dev/null 2>&1
+$CC -Os -c -fwhole-program $TMPFILE1 -o $TMPFILE1o > /dev/null 2>&1
 cat - > $TMPFILE2 <<EOF
 void t1();
 void __attribute__((externally_visible)) main() { t1(); }
 EOF
-$CC -c -fwhole-program $TMPFILE2 -o $TMPFILE2o > /dev/null 2>&1
-$CC $TMPFILE1o $TMPFILE2o -o $TMPFILE3o > /dev/null 2>&1
+$CC -Os -c -fwhole-program $TMPFILE2 -o $TMPFILE2o > /dev/null 2>&1
+$CC -Os $TMPFILE1o $TMPFILE2o -o $TMPFILE3o > /dev/null 2>&1
 if [ $? -ne 0 ]; then
     echo "  Working around non-global functions in -fwhole-program" > /dev/fd/2
 fi