diff options
author | Nick Mathewson <nickm@torproject.org> | 2012-06-15 21:04:07 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2012-06-18 11:48:45 -0400 |
commit | adbdeafad9a85226ef9d232e85360bea54f78a73 (patch) | |
tree | a0a8a2d3324f4403dcd92798b7a2313142c07a0c | |
parent | 26855fe22cc314d0f60162f6e6020aa0741a67e3 (diff) | |
download | tor-adbdeafad9a85226ef9d232e85360bea54f78a73.tar.gz tor-adbdeafad9a85226ef9d232e85360bea54f78a73.zip |
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.
-rw-r--r-- | acinclude.m4 | 9 | ||||
-rw-r--r-- | changes/bug6173 | 5 |
2 files changed, 12 insertions, 2 deletions
diff --git a/acinclude.m4 b/acinclude.m4 index 43280597a4..ae14411f6b 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -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" diff --git a/changes/bug6173 b/changes/bug6173 new file mode 100644 index 0000000000..3b467a9aca --- /dev/null +++ b/changes/bug6173 @@ -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. + |