More sophisticated attempt at detecting working linker options

On some platforms, the linker is perfectly happy to produce binaries
that won't run if you give it the wrong set of flags.  So when not
cross-compiling, try to link-and-run a little test program, rather
than just linking it.

Possible fix for 6173.
This commit is contained in:
Nick Mathewson
2012-06-15 21:04:07 -04:00
parent 26855fe22c
commit adbdeafad9
2 changed files with 12 additions and 2 deletions
+7 -2
View File
@@ -71,9 +71,14 @@ AC_DEFUN([TOR_CHECK_LDFLAGS], [
CFLAGS="$CFLAGS -pedantic -Werror"
LDFLAGS="$LDFLAGS $2 $1"
LIBS="$LIBS $3"
AC_TRY_LINK([], [return 0;],
AC_RUN_IFELSE([
#include <stdio.h>
int main(int argc, char **argv) { fputs("", stdout); return 0; }],
[AS_VAR_SET(VAR,yes)],
[AS_VAR_SET(VAR,no)])
[AS_VAR_SET(VAR,no)],
[AC_TRY_LINK([], [return 0;],
[AS_VAR_SET(VAR,yes)],
[AS_VAR_SET(VAR,no)])])
CFLAGS="$tor_saved_CFLAGS"
LDFLAGS="$tor_saved_LDFLAGS"
LIBS="$tor_saved_LIBS"
+5
View File
@@ -0,0 +1,5 @@
o Major bugfixes:
- Make our linker option detection code more robust against linkers
where a bad combination of options completes successfully but
makes an unrunnable binary. Fixes bug 6173; bugfix on 0.2.3.17-beta.