+2011-09-26 Colin Watson <cjwatson@ubuntu.com>
+
+ * configure.ac: Build stage2 with -fno-reorder-functions to prevent
+ unlikely-to-be-executed functions being reordered before _start with
+ GCC 4.6.
+ Fixes Ubuntu bug #837815.
+
2010-01-25 Robert Millan <rmh.grub@aybabtu.com>
* stage2/imgact_aout.h: Rewrite using aout.h from GRUB 1.97.2 as
if test "x$grub_cv_cc_no_stack_protector" = xyes; then
STAGE2_CFLAGS="$STAGE2_CFLAGS -fno-stack-protector"
fi
+ # GCC >= 3.3 supports -fno-reorder-functions; this defends us against
+ # unlikely-to-be-executed functions being linked before _start with GCC
+ # >= 4.6.
+ AC_CACHE_CHECK([whether gcc has -fno-reorder-functions],
+ no_reorder_functions_flag, [
+ saved_CFLAGS=$CFLAGS
+ CFLAGS="-fno-reorder-functions"
+ AC_TRY_COMPILE(,
+ ,
+ no_reorder_functions_flag=yes,
+ no_reorder_functions_flag=no)
+ CFLAGS=$saved_CFLAGS
+ ])
+ if test "x$no_reorder_functions_flag" = xyes; then
+ STAGE2_CFLAGS="$STAGE2_CFLAGS -fno-reorder-functions"
+ fi
fi
fi