summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2018-10-01 22:50:08 -0700
committerAlex Crichton <alex@alexcrichton.com>2018-10-01 22:50:08 -0700
commit6ebb2c46d5eae7bae8d827fdc68d3ed58b16e95a (patch)
tree3cd20abb204b6505894d6d9ab00391ee13c0848a
parent3dca87e1f98adcdffb962de381d1e5d5410f3d54 (diff)
downloadtor-6ebb2c46d5eae7bae8d827fdc68d3ed58b16e95a.tar.gz
tor-6ebb2c46d5eae7bae8d827fdc68d3ed58b16e95a.zip
Remove the `link_rust.sh.in` script
This is no longer necessary with upstream rust-lang/rust changes as well as some local tweaks. Namely: * The `-fsanitize=address`-style options are now passed via `-C link-args` through `RUSTFLAGS`. This obviates the need for the shell script. * The `-C default-linker-libraries`, disabling `-nodefaultlibs`, is passed through `RUSTFLAGS`, which is necessary to ensure that `-fsanitize=address` links correctly. * The `-C linker` option is passed to ensure we're using the same C compiler as normal C code, although it has a bit of hackery to only get the `gcc` out of `gcc -std=c99`
-rw-r--r--configure.ac9
-rw-r--r--link_rust.sh.in10
-rw-r--r--src/test/include.am3
3 files changed, 5 insertions, 17 deletions
diff --git a/configure.ac b/configure.ac
index dbeba512ca..ef8bb4e351 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1210,17 +1210,17 @@ dnl variable.
RUST_LINKER_OPTIONS=""
if test "x$have_clang" = "xyes"; then
if test "x$CFLAGS_ASAN" != "x"; then
- RUST_LINKER_OPTIONS="$RUST_LINKER_OPTIONS $CFLAGS_ASAN"
+ RUST_LINKER_OPTIONS="$RUST_LINKER_OPTIONS -Clink-arg=$CFLAGS_ASAN"
fi
if test "x$CFLAGS_UBSAN" != "x"; then
- RUST_LINKER_OPTIONS="$RUST_LINKER_OPTIONS $CFLAGS_UBSAN"
+ RUST_LINKER_OPTIONS="$RUST_LINKER_OPTIONS -Clink-arg=$CFLAGS_UBSAN"
fi
else
if test "x$CFLAGS_ASAN" != "x"; then
- RUST_LINKER_OPTIONS="$RUST_LINKER_OPTIONS -lasan"
+ RUST_LINKER_OPTIONS="$RUST_LINKER_OPTIONS -Clink-arg=-fsanitize=address"
fi
if test "x$CFLAGS_UBSAN" != "x"; then
- RUST_LINKER_OPTIONS="$RUST_LINKER_OPTIONS -lubsan"
+ RUST_LINKER_OPTIONS="$RUST_LINKER_OPTIONS -Clink-arg=-fsanitize=undefined"
fi
fi
AC_SUBST(RUST_LINKER_OPTIONS)
@@ -2416,7 +2416,6 @@ AC_CONFIG_FILES([
Doxyfile
Makefile
config.rust
- link_rust.sh
contrib/dist/suse/tor.sh
contrib/operator-tools/tor.logrotate
contrib/dist/tor.sh
diff --git a/link_rust.sh.in b/link_rust.sh.in
deleted file mode 100644
index 59f4142baa..0000000000
--- a/link_rust.sh.in
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-#
-# A linker script used when building Rust tests. Autoconf makes link_rust.sh
-# from link_rust_sh.in, and uses it to pass extra options to the linker
-# when linking Rust stuff.
-#
-# We'd like to remove the need for this, but build.rs doesn't let us pass
-# -static-libasan and -static-libubsan to the linker.
-
-$CCLD @RUST_LINKER_OPTIONS@ "$@"
diff --git a/src/test/include.am b/src/test/include.am
index 1055cd0a81..4314581082 100644
--- a/src/test/include.am
+++ b/src/test/include.am
@@ -12,8 +12,7 @@ TESTS_ENVIRONMENT = \
export EXTRA_CARGO_OPTIONS="$(EXTRA_CARGO_OPTIONS)"; \
export CARGO_ONLINE="$(CARGO_ONLINE)"; \
export CCLD="$(CCLD)"; \
- chmod +x "$(abs_top_builddir)/link_rust.sh"; \
- export RUSTFLAGS="-C linker=$(abs_top_builddir)/link_rust.sh";
+ export RUSTFLAGS="-C linker=`echo '$(CC)' | cut -d' ' -f 1` $(RUST_LINKER_OPTIONS) -C default-linker-libraries";
TESTSCRIPTS = \
src/test/fuzz_static_testcases.sh \