> >> >> > 2. Large Gtest-based unittest. This is a set of c++ files that should >> > be built with the asan switch, depends on gtest >> > (http://code.google.com/p/googletest/). >> > >> > http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/tests/asan_test.cc?revision=166104&view=markup >> > This should be easy to port to GCC, but it requires gtest. >> >> I don't think we want to depend on gtest, if the tests only use a small >> subset of that, it would be better to just use some header with macros >> compatible with that for assertions and the like. > > > We use a large and heavy subset of gtest, namely: death tests. > It can't be easily replaced with "some header with macros". >
gtest integrate multiple tests into the same file with each test being a single line check. I cannot think out a method to migrate it to dejagnu without using gtest, except splitting a single gtest file to multiple files with each file per test. asan has about 130 tests so have to write 130 files which will be a doable but painful task. >> >> >> > 3. Full output tests (a .cc file should be build with asan switch, >> > executable should be run and the stderr is compared with the expected >> > output) >> > Example: >> > http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/lit_tests/stack-overflow.cc?revision=165391&view=markup >> > The can be ported to GCC, but the uses of FileCheck >> > (http://llvm.org/docs/CommandGuide/FileCheck.html) will need to be >> > replaced with GCC's analog. >> > We should probably start with these tests. >> >> Dejagnu in GCC has >> >> ! { dg-do run } >> ! { dg-options "-fbounds-check" } >> ! { dg-shouldfail "Duplicate value 2 in ORDER argument to RESHAPE >> intrinsic" } >> program main >> implicit none >> integer(kind=1), dimension(6) :: source1 = (/ 1, 2, 3, 4, 5, 6 /) >> integer, dimension(2) :: shape1 = (/ 2, 3/) >> integer(kind=1), dimension(2) :: pad1 = (/ 0, 0/) >> character(len=200) :: l1, l2 >> integer :: i1, i2 >> >> l1 = "2 2" >> read(unit=l1,fmt=*) i1, i2 >> write (unit=l2,fmt=*) reshape(source1, shape1, pad1, (/i1, i2/)) ! >> Invalid >> end program main >> ! { dg-output "Fortran runtime error: Duplicate value 2 in ORDER argument >> to RESHAPE intrinsic" } >> >> style markings, dg-shouldfail says that the program is expected to fail >> rather than pass (if it aborts), and dg-output (perhaps multiple) can >> contain regexps to match against stderr + stdout joined. Haven't looked >> at the asan tests yet, do you expect just one ASAN abort per test, > > > These tests do just one abort (actually, _exit(1)) per test. > Let's start with these. > > --kcc > I will start with this. Thanks, Wei.