Use new needs-(profiler|sanitizer)-support compiletest directive to clean up some run-make tests.

This commit is contained in:
Michael Woerister 2019-04-18 15:49:41 +02:00
parent e2acaee8bb
commit cc77087d6f
11 changed files with 20 additions and 30 deletions

View File

@ -1,8 +1,8 @@
# needs-profiler-support
-include ../tools.mk
all:
ifeq ($(RUSTC_PROFILER_SUPPORT),1)
$(RUSTC) -Copt-level=3 -Clto=fat -Z pgo-gen="$(TMPDIR)" test.rs
$(call RUN,test) || exit 1
[ -e "$(TMPDIR)"/default_*.profraw ] || (echo "No .profraw file"; exit 1)
endif

View File

@ -1,11 +1,11 @@
# needs-profiler-support
-include ../tools.mk
all:
ifeq ($(RUSTC_PROFILER_SUPPORT),1)
$(RUSTC) -O -Ccodegen-units=1 -Z pgo-gen="$(TMPDIR)" --emit=llvm-ir test.rs
# We expect symbols starting with "__llvm_profile_".
$(CGREP) "__llvm_profile_" < $(TMPDIR)/test.ll
# We do NOT expect the "__imp_" version of these symbols.
$(CGREP) -v "__imp___llvm_profile_" < $(TMPDIR)/test.ll # 64 bit
$(CGREP) -v "__imp____llvm_profile_" < $(TMPDIR)/test.ll # 32 bit
endif

View File

@ -1,8 +1,8 @@
# needs-profiler-support
-include ../tools.mk
all:
ifeq ($(RUSTC_PROFILER_SUPPORT),1)
$(RUSTC) -g -Z pgo-gen="$(TMPDIR)" test.rs
$(call RUN,test) || exit 1
[ -e "$(TMPDIR)"/default_*.profraw ] || (echo "No .profraw file"; exit 1)
endif

View File

@ -1,9 +1,9 @@
# needs-profiler-support
-include ../tools.mk
all:
ifeq ($(RUSTC_PROFILER_SUPPORT),1)
$(RUSTC) -g -Z profile test.rs
$(call RUN,test) || exit 1
[ -e "$(TMPDIR)/test.gcno" ] || (echo "No .gcno file"; exit 1)
[ -e "$(TMPDIR)/test.gcda" ] || (echo "No .gcda file"; exit 1)
endif

View File

@ -1,3 +1,5 @@
# needs-sanitizer-support
-include ../tools.mk
LOG := $(TMPDIR)/log.txt
@ -5,11 +7,9 @@ LOG := $(TMPDIR)/log.txt
# NOTE the address sanitizer only supports x86_64 linux and macOS
ifeq ($(TARGET),x86_64-apple-darwin)
ASAN_SUPPORT=$(RUSTC_SANITIZER_SUPPORT)
EXTRA_RUSTFLAG=-C rpath
else
ifeq ($(TARGET),x86_64-unknown-linux-gnu)
ASAN_SUPPORT=$(RUSTC_SANITIZER_SUPPORT)
# Apparently there are very specific Linux kernels, notably the one that's
# currently on Travis CI, which contain a buggy commit that triggers failures in
@ -23,7 +23,5 @@ endif
endif
all:
ifeq ($(ASAN_SUPPORT),1)
$(RUSTC) -g -Z sanitizer=address -Z print-link-args $(EXTRA_RUSTFLAG) overflow.rs | $(CGREP) librustc_asan
$(TMPDIR)/overflow 2>&1 | $(CGREP) stack-buffer-overflow
endif

View File

@ -1,3 +1,5 @@
# needs-sanitizer-support
-include ../tools.mk
LOG := $(TMPDIR)/log.txt
@ -8,15 +10,12 @@ LOG := $(TMPDIR)/log.txt
# is correctly detected.
ifeq ($(TARGET),x86_64-unknown-linux-gnu)
ASAN_SUPPORT=$(RUSTC_SANITIZER_SUPPORT)
# See comment in sanitizer-address/Makefile for why this is here
EXTRA_RUSTFLAG=-C relocation-model=dynamic-no-pic
endif
all:
ifeq ($(ASAN_SUPPORT),1)
$(RUSTC) -g -Z sanitizer=address --crate-type cdylib --target $(TARGET) $(EXTRA_RUSTFLAG) library.rs
$(RUSTC) -g -Z sanitizer=address --crate-type bin --target $(TARGET) $(EXTRA_RUSTFLAG) -llibrary program.rs
LD_LIBRARY_PATH=$(TMPDIR) $(TMPDIR)/program 2>&1 | $(CGREP) stack-buffer-overflow
endif

View File

@ -1,3 +1,5 @@
# needs-sanitizer-support
-include ../tools.mk
LOG := $(TMPDIR)/log.txt
@ -8,15 +10,11 @@ LOG := $(TMPDIR)/log.txt
# is correctly detected.
ifeq ($(TARGET),x86_64-unknown-linux-gnu)
ASAN_SUPPORT=$(RUSTC_SANITIZER_SUPPORT)
# See comment in sanitizer-address/Makefile for why this is here
EXTRA_RUSTFLAG=-C relocation-model=dynamic-no-pic
endif
all:
ifeq ($(ASAN_SUPPORT),1)
$(RUSTC) -g -Z sanitizer=address --crate-type dylib --target $(TARGET) $(EXTRA_RUSTFLAG) library.rs
$(RUSTC) -g -Z sanitizer=address --crate-type bin --target $(TARGET) $(EXTRA_RUSTFLAG) -llibrary program.rs
LD_LIBRARY_PATH=$(TMPDIR) $(TMPDIR)/program 2>&1 | $(CGREP) stack-buffer-overflow
endif

View File

@ -1,18 +1,16 @@
# needs-sanitizer-support
-include ../tools.mk
# NOTE the address sanitizer only supports x86_64 linux and macOS
ifeq ($(TARGET),x86_64-apple-darwin)
ASAN_SUPPORT=$(RUSTC_SANITIZER_SUPPORT)
EXTRA_RUSTFLAG=-C rpath
else
ifeq ($(TARGET),x86_64-unknown-linux-gnu)
ASAN_SUPPORT=$(RUSTC_SANITIZER_SUPPORT)
EXTRA_RUSTFLAG=
endif
endif
all:
ifeq ($(ASAN_SUPPORT),1)
$(RUSTC) -Z sanitizer=address --crate-type proc-macro --target $(TARGET) hello.rs 2>&1 | $(CGREP) '-Z sanitizer'
endif

View File

@ -1,12 +1,11 @@
-include ../tools.mk
# needs-sanitizer-support
# only-linux
# only-x86_64
# ignore-test
# FIXME(#46126) ThinLTO for libstd broke this test
all:
ifdef RUSTC_SANITIZER_SUPPORT
$(RUSTC) -C opt-level=1 -g -Z sanitizer=leak -Z print-link-args leak.rs | $(CGREP) librustc_lsan
$(TMPDIR)/leak 2>&1 | $(CGREP) 'detected memory leaks'
endif

View File

@ -1,10 +1,9 @@
-include ../tools.mk
# needs-sanitizer-support
# only-linux
# only-x86_64
all:
ifdef RUSTC_SANITIZER_SUPPORT
$(RUSTC) -g -Z sanitizer=memory -Z print-link-args uninit.rs | $(CGREP) librustc_msan
$(TMPDIR)/uninit 2>&1 | $(CGREP) use-of-uninitialized-value
endif

View File

@ -1,3 +1,5 @@
# needs-sanitizer-support
-include ../tools.mk
# This test builds a staticlib, then an executable that links to it.
@ -5,14 +7,11 @@
# and we assert that a fault in the staticlib is correctly detected.
ifeq ($(TARGET),x86_64-unknown-linux-gnu)
ASAN_SUPPORT=$(RUSTC_SANITIZER_SUPPORT)
EXTRA_RUSTFLAG=
endif
all:
ifeq ($(ASAN_SUPPORT),1)
$(RUSTC) -g -Z sanitizer=address --crate-type staticlib --target $(TARGET) library.rs
$(CC) program.c $(call STATICLIB,library) $(call OUT_EXE,program) $(EXTRACFLAGS) $(EXTRACXXFLAGS)
LD_LIBRARY_PATH=$(TMPDIR) $(TMPDIR)/program 2>&1 | $(CGREP) stack-buffer-overflow
endif