aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2012-06-15 21:04:07 -0400
committerNick Mathewson <nickm@torproject.org>2012-06-18 11:48:45 -0400
commitadbdeafad9a85226ef9d232e85360bea54f78a73 (patch)
treea0a8a2d3324f4403dcd92798b7a2313142c07a0c
parent26855fe22cc314d0f60162f6e6020aa0741a67e3 (diff)
downloadtor-adbdeafad9a85226ef9d232e85360bea54f78a73.tar
tor-adbdeafad9a85226ef9d232e85360bea54f78a73.tar.gz
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.m49
-rw-r--r--changes/bug61735
2 files changed, 12 insertions, 2 deletions
diff --git a/acinclude.m4 b/acinclude.m4
index 43280597a..ae14411f6 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 000000000..3b467a9ac
--- /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.
+