diff --git a/src/tools/tidy/src/allowed_run_make_makefiles.txt b/src/tools/tidy/src/allowed_run_make_makefiles.txt index c3a94d17cd9..f7e572e0a97 100644 --- a/src/tools/tidy/src/allowed_run_make_makefiles.txt +++ b/src/tools/tidy/src/allowed_run_make_makefiles.txt @@ -151,7 +151,6 @@ run-make/raw-dylib-inline-cross-dylib/Makefile run-make/raw-dylib-link-ordinal/Makefile run-make/raw-dylib-stdcall-ordinal/Makefile run-make/redundant-libs/Makefile -run-make/relro-levels/Makefile run-make/remap-path-prefix-dwarf/Makefile run-make/remap-path-prefix/Makefile run-make/reproducible-build-2/Makefile diff --git a/tests/run-make/relro-levels/Makefile b/tests/run-make/relro-levels/Makefile deleted file mode 100644 index 94f08bcb494..00000000000 --- a/tests/run-make/relro-levels/Makefile +++ /dev/null @@ -1,22 +0,0 @@ -# ignore-cross-compile -include ../tools.mk - -# only-linux -# -# This tests the different -Crelro-level values, and makes sure that they work properly. - -all: - # Ensure that binaries built with the full relro level links them with both - # RELRO and BIND_NOW for doing eager symbol resolving. - $(RUSTC) -Crelro-level=full hello.rs - readelf -l $(TMPDIR)/hello | grep -q GNU_RELRO - readelf -d $(TMPDIR)/hello | grep -q BIND_NOW - - $(RUSTC) -Crelro-level=partial hello.rs - readelf -l $(TMPDIR)/hello | grep -q GNU_RELRO - - # Ensure that we're *not* built with RELRO when setting it to off. We do - # not want to check for BIND_NOW however, as the linker might have that - # enabled by default. - $(RUSTC) -Crelro-level=off hello.rs - ! readelf -l $(TMPDIR)/hello | grep -q GNU_RELRO diff --git a/tests/run-make/relro-levels/rmake.rs b/tests/run-make/relro-levels/rmake.rs new file mode 100644 index 00000000000..cdfe899baaf --- /dev/null +++ b/tests/run-make/relro-levels/rmake.rs @@ -0,0 +1,29 @@ +// This tests the different -Crelro-level values, and makes sure that they work properly. + +//@ ignore-cross-compile +//@ only-linux + +use run_make_support::llvm_readobj; +use run_make_support::rustc; + +fn compile(relro_level: &str) { + rustc().arg(format!("-Crelro-level={relro_level}")).input("hello.rs").run(); +} + +fn main() { + // Ensure that binaries built with the full relro level links them with both + // RELRO and BIND_NOW for doing eager symbol resolving. + + compile("full"); + llvm_readobj().program_headers().input("hello").run().assert_stdout_contains("GNU_RELRO"); + llvm_readobj().dynamic_table().input("hello").run().assert_stdout_contains("BIND_NOW"); + + compile("partial"); + llvm_readobj().program_headers().input("hello").run().assert_stdout_contains("GNU_RELRO"); + + // Ensure that we're *not* built with RELRO when setting it to off. We do + // not want to check for BIND_NOW however, as the linker might have that + // enabled by default. + compile("off"); + llvm_readobj().program_headers().input("hello").run().assert_stdout_not_contains("GNU_RELRO"); +}