diff options
Diffstat (limited to 'no-reorder-functions.patch')
-rw-r--r-- | no-reorder-functions.patch | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/no-reorder-functions.patch b/no-reorder-functions.patch new file mode 100644 index 000000000000..4ec4b3558552 --- /dev/null +++ b/no-reorder-functions.patch @@ -0,0 +1,27 @@ +Index: b/configure.ac +=================================================================== +--- a/configure.ac ++++ b/configure.ac +@@ -112,6 +112,22 @@ + 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 + |