Fix -nopie/-nopie check.

We don't use lgcc_s but missing lgcc_s or another library cause test to fail.
So use -nostdlib.
Clang uses -nopie rather than -no-pie. Check both and use whichever one works.
This commit is contained in:
Vladimir Serbinenko committed 2017-01-30 14:38:50 +01:00
1 parent 6371e9c104
commit e1f9050f1a
2 files changed
+22 -1

No files matched your search

+18 -1
View File
@@ -395,7 +395,7 @@ AC_DEFUN([grub_CHECK_NO_PIE],
[AC_MSG_CHECKING([whether linker accepts -no-pie]) [AC_MSG_CHECKING([whether linker accepts -no-pie])
AC_CACHE_VAL(grub_cv_cc_ld_no_pie, AC_CACHE_VAL(grub_cv_cc_ld_no_pie,
[save_LDFLAGS="$LDFLAGS" [save_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS -no-pie" LDFLAGS="$LDFLAGS -no-pie -nostdlib"
AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])], AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
[grub_cv_cc_ld_no_pie=yes], [grub_cv_cc_ld_no_pie=yes],
[grub_cv_cc_ld_no_pie=no]) [grub_cv_cc_ld_no_pie=no])
@@ -408,6 +408,23 @@ if test "x$grub_cv_cc_ld_no_pie" = xyes ; then
fi fi
]) ])
AC_DEFUN([grub_CHECK_NO_PIE_ONEWORD],
[AC_MSG_CHECKING([whether linker accepts -nopie])
AC_CACHE_VAL(grub_cv_cc_ld_no_pie_oneword,
[save_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS -nopie -nostdlib"
AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
[grub_cv_cc_ld_no_pie_oneword=yes],
[grub_cv_cc_ld_no_pie_oneword=no])
LDFLAGS="$save_LDFLAGS"
])
AC_MSG_RESULT([$grub_cv_cc_ld_no_pie_oneword])
nopie_oneword_possible=no
if test "x$grub_cv_cc_ld_no_pie_oneword" = xyes ; then
nopie_oneword_possible=yes
fi
])
dnl Check if the C compiler supports `-fPIC'. dnl Check if the C compiler supports `-fPIC'.
AC_DEFUN([grub_CHECK_PIC],[ AC_DEFUN([grub_CHECK_PIC],[
[# Position independent executable. [# Position independent executable.
+4
View File
@@ -1202,6 +1202,7 @@ CFLAGS="$TARGET_CFLAGS"
# Position independent executable. # Position independent executable.
grub_CHECK_PIE grub_CHECK_PIE
grub_CHECK_NO_PIE grub_CHECK_NO_PIE
grub_CHECK_NO_PIE_ONEWORD
[# Need that, because some distributions ship compilers that include [# Need that, because some distributions ship compilers that include
# `-fPIE' or '-fpie' and '-pie' in the default specs. # `-fPIE' or '-fpie' and '-pie' in the default specs.
if [ x"$pie_possible" = xyes ]; then if [ x"$pie_possible" = xyes ]; then
@@ -1209,6 +1210,9 @@ if [ x"$pie_possible" = xyes ]; then
fi fi
if [ x"$nopie_possible" = xyes ] && [ x"$pie_possible" = xyes ]; then if [ x"$nopie_possible" = xyes ] && [ x"$pie_possible" = xyes ]; then
TARGET_LDFLAGS="$TARGET_LDFLAGS -no-pie" TARGET_LDFLAGS="$TARGET_LDFLAGS -no-pie"
fi
if [ x"$nopie_oneword_possible" = xyes ] && [ x"$pie_possible" = xyes ]; then
TARGET_LDFLAGS="$TARGET_LDFLAGS -nopie"
fi] fi]
CFLAGS="$TARGET_CFLAGS" CFLAGS="$TARGET_CFLAGS"