File tree Expand file tree Collapse file tree 3 files changed +21
-5
lines changed
test/run-make-fulldeps/sanitizer-staticlib-link Expand file tree Collapse file tree 3 files changed +21
-5
lines changed Original file line number Diff line number Diff line change @@ -738,10 +738,10 @@ impl<'a> CrateLoader<'a> {
738738 if !self . sess . crate_types . borrow ( ) . iter ( ) . all ( |ct| {
739739 match * ct {
740740 // Link the runtime
741- config:: CrateType :: Staticlib |
742741 config:: CrateType :: Executable => true ,
743742 // This crate will be compiled with the required
744743 // instrumentation pass
744+ config:: CrateType :: Staticlib |
745745 config:: CrateType :: Rlib |
746746 config:: CrateType :: Dylib |
747747 config:: CrateType :: Cdylib =>
Original file line number Diff line number Diff line change 44
55-include ../tools.mk
66
7- # This test builds a staticlib, then an executable that links to it.
8- # The staticlib and executable both are compiled with address sanitizer,
9- # and we assert that a fault in the staticlib is correctly detected.
7+ # This test first builds a staticlib with AddressSanitizer and checks that
8+ # linking it to an executable fails due to the missing sanitizer runtime.
9+ # It then builds an executable linking to the staticlib and checks that
10+ # the fault in the staticlib is detected correctly.
11+
12+ # Note that checking for the link failure actually checks two things at once:
13+ # 1) That the library has the sanitizer intrumentation
14+ # 2) and that library does not have the sanitizer runtime
1015
1116all :
1217 $(RUSTC ) -g -Z sanitizer=address --crate-type staticlib --target $(TARGET ) library.rs
13- $(CC ) program.c $(call STATICLIB,library) $(call OUT_EXE,program) $(EXTRACFLAGS ) $(EXTRACXXFLAGS )
18+ ! $(CC ) program.c $(call STATICLIB,library) $(call OUT_EXE,program) $(EXTRACFLAGS ) $(EXTRACXXFLAGS )
19+ $(RUSTC ) -g -Z sanitizer=address --crate-type bin --target $(TARGET ) -L . program.rs
1420 LD_LIBRARY_PATH=$(TMPDIR ) $(TMPDIR ) /program 2>&1 | $(CGREP ) stack-buffer-overflow
1521
Original file line number Diff line number Diff line change 1+ #[ link( name = "library" ) ]
2+ extern {
3+ fn overflow ( ) ;
4+ }
5+
6+ fn main ( ) {
7+ unsafe {
8+ overflow ( ) ;
9+ }
10+ }
You can’t perform that action at this time.
0 commit comments