Adding ClamAV to the llvm testsuite (long)

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
19 messages Options
Reply | Threaded
Open this post in threaded view
|

Adding ClamAV to the llvm testsuite (long)

Török Edwin
Hi,

I see that you are looking for new programs for the testsuite, as
described in 'Compile programs with the LLVM compiler', and 'Adding
programs to the llvm testsuite" on llvm.org/OpenProjects.

My favourite "C source code" is ClamAV (www.clamav.net), and I would
like to get it included in the testsuite.

This mail is kind of long, but please bear with me, as I want to clarify
how to best integrate Clamav into LLVM-testsuite's buildsystem.

Why include it?

It can be useful to find regressions, or new bugs; it already uncovered
a few bugs in llvm's cbe, llc, and optimizers that I've reported through
bugzilla (and they've been mostly fixed very fast! Thanks!). ClamAV was
also the "victim" of a bug in gcc 4.1.0's optimizer [see 9)]

It can be useful to test new/existing optimizations. There aren't any
significant differences on its performance when compiled by different
compilers (gcc, icc, llvm-gcc), so I hope LLVM's optimizers can (in the
future) make it faster ;)

I had a quick look at the build infrastructure, and there are some
issues with getting it to work with programs that use autoconf (such as
ClamAV), since AFAICT testsuites aren't allowed to run configure (listed
below)

Building issues aside there are some more questions:
* ClamAV is GPL (but it includes BSD, LGPL parts), ok for testsuite?
* what version to use? Latest stable, or latest svn?
[In any case I'll wait till the next stable is published, it should be
happening *very soon*]
* what happens if you find bugs that also cause it to fail under gcc
(unlikely) ? [I would prefer to get an entry on clamav's bugzilla then,
with something in its subject saying it is llvm-testsuite related]
* what happens if it only fails under llvm-gcc/llc/clang,.. and it is
not due to a bug in llvm, but because of portability issues in the
source code (unlikely)?
I would prefer a clamav bugzilla here too, clamav is meant to be
"portable" :)

Also after I have set it up in the llvm testsuite, is there an easy way
to run clang on it? Currently I have to hack autoconf generated
makefiles if I want to test clang on it.

1. I've manually run, and generated a clamav-config.h.
This usually just contains HAVE_* macros for headers, which should all
be available on a POSIX system, so it shouldn't be a problem from this
perspective for llvm's build farm.
However there are some target specific macros:
#define C_LINUX 1
#define FPU_WORDS_BIGENDIAN 0
#define WORDS_BIGENDIAN 0
Also SIZEOF_INT, SIZEOF_LONG,... but they are only used if the system
doesn't have a proper <stdint.h>
Also not sure of this:
/* ctime_r takes 2 arguments */
#define HAVE_CTIME_R_2 1

What OS and CPU do the machines on llvm's buildfarm have? We could try a
config.h that works on Linux (or MacOSX), and try to apply
that to all, though there might be (non-obvious) failures.

Any solutions to having these macros defined in the LLVM testsuite
build? (especially for the bigendian macro)

2. AFAICT the llvm-testsuite build doesn't support a program that is
built from multiple subdirectories.
 libclamav has its source split into multiple subdirectories, gathering
those into one also requires changing #include that have relative paths.
I also get files with the same name but from different subdirs, so I
have to rename them to subdir_filename, and do that in #include too.

I have done this manually, and it works (native, llc, cbe work).
I could hack together some perl script to do this automatically, or is
there a better solution?

3. Comparing output: I've written a small script that compares the
--debug output, because it needs some adjustments since I also get
memory addresses in the --debug output that obviously don't match up
between runs.
There isn't anything else to compare besides --debug output (besides
ClamAV saying no virus found), and that can be a fairly good test.

4. What is the input data?
Clamav is fast :)
It needs a lot of input data if you want to get reasonable timings out
of it (tens, hundreds of MB).
Scanning multiple small files will be I/O bound, and it'd be mostly
useless as a benchmark (though still useful for testing
compiler/optimization correctness).

So I was thinking of using some large files already available in the
testsuite (oggenc has one), and then maybe point it to scan the last
*stable* build of LLVM. Or find some files that are scanned slowly, but
that don't presume lots of disk I/O (an archive, with ratio/size limits
disabled, with highly compressable data).
You won't be able to benchmark clamav in a "real world" scenario though,
since that'd involve making it scanning malware, and I'm sure you don't
want that on your build farm.

You could give it to scan random data, but you'll need it to be
reproducible, so scanning /dev/random, or /bin of current LLVM tree is
not a good choice ;)

There's also the problem of eliminating the initial disk I/O time out of
the benchmark, like rerun 3 times automatically or something like that?

5. Library dependencies
It needs zlib, all the rest is optional (bzip2, gmp, ....). I think I
can reasonably assume zlib is available on all systems where the
testsuite is run.

6. Sample output on using 126Mb of data as input:

$ make TEST=nightly report
....
Program  | GCCAS  Bytecode LLC compile LLC-BETA compile JIT codegen |
GCC     CBE     LLC     LLC-BETA JIT | GCC/CBE GCC/LLC GCC/LLC-BETA
LLC/LLC-BETA
clamscan | 7.0729 2074308  *           *                *           |  
17.48   17.55   18.81 *        *   | 1.00    0.93    n/a          n/a

7. Clamav is multithreaded
If you're interested in testing if llvm-generated code works when
multithreaded (I don't see why it wouldn't, but we're talking about a
testsuite), you'd need to start the daemon (as an unprivileged user is
just fine), and then connect to it.
Is it possible to tell the testsuite build system to do this?

8. Code coverage
Testing all of clamav code with llvm is ... problematic. Unless you
create files with every packer/archiver known to clamav it is likely
there will be files that are compiled in but never used during the
testsuite run. You can still test that these files compile, but thats it.

9. Configure tests
Configure has 3 tests that check for gcc bugs known to break ClamAV (2
of which you already have, since those are in gcc's testsuite too). Add
as separate "programs" to run in llvm testsuite?

Thoughts?

Best regards,
Edwin
_______________________________________________
LLVM Developers mailing list
[hidden email]         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
Reply | Threaded
Open this post in threaded view
|

Re: Adding ClamAV to the llvm testsuite (long)

Evan Cheng-2
We always welcome more tests. But it looks like there are two issues  
here.

1. The autoconf requirement. Is it possible to get one configuration  
working without the need for autoconf?
2. GPL license. Chris?

Evan

On Dec 14, 2007, at 12:30 PM, Török Edwin wrote:

> Hi,
>
> I see that you are looking for new programs for the testsuite, as
> described in 'Compile programs with the LLVM compiler', and 'Adding
> programs to the llvm testsuite" on llvm.org/OpenProjects.
>
> My favourite "C source code" is ClamAV (www.clamav.net), and I would
> like to get it included in the testsuite.
>
> This mail is kind of long, but please bear with me, as I want to  
> clarify
> how to best integrate Clamav into LLVM-testsuite's buildsystem.
>
> Why include it?
>
> It can be useful to find regressions, or new bugs; it already  
> uncovered
> a few bugs in llvm's cbe, llc, and optimizers that I've reported  
> through
> bugzilla (and they've been mostly fixed very fast! Thanks!). ClamAV  
> was
> also the "victim" of a bug in gcc 4.1.0's optimizer [see 9)]
>
> It can be useful to test new/existing optimizations. There aren't any
> significant differences on its performance when compiled by different
> compilers (gcc, icc, llvm-gcc), so I hope LLVM's optimizers can (in  
> the
> future) make it faster ;)
>
> I had a quick look at the build infrastructure, and there are some
> issues with getting it to work with programs that use autoconf (such  
> as
> ClamAV), since AFAICT testsuites aren't allowed to run configure  
> (listed
> below)
>
> Building issues aside there are some more questions:
> * ClamAV is GPL (but it includes BSD, LGPL parts), ok for testsuite?
> * what version to use? Latest stable, or latest svn?
> [In any case I'll wait till the next stable is published, it should be
> happening *very soon*]
> * what happens if you find bugs that also cause it to fail under gcc
> (unlikely) ? [I would prefer to get an entry on clamav's bugzilla  
> then,
> with something in its subject saying it is llvm-testsuite related]
> * what happens if it only fails under llvm-gcc/llc/clang,.. and it is
> not due to a bug in llvm, but because of portability issues in the
> source code (unlikely)?
> I would prefer a clamav bugzilla here too, clamav is meant to be
> "portable" :)
>
> Also after I have set it up in the llvm testsuite, is there an easy  
> way
> to run clang on it? Currently I have to hack autoconf generated
> makefiles if I want to test clang on it.
>
> 1. I've manually run, and generated a clamav-config.h.
> This usually just contains HAVE_* macros for headers, which should all
> be available on a POSIX system, so it shouldn't be a problem from this
> perspective for llvm's build farm.
> However there are some target specific macros:
> #define C_LINUX 1
> #define FPU_WORDS_BIGENDIAN 0
> #define WORDS_BIGENDIAN 0
> Also SIZEOF_INT, SIZEOF_LONG,... but they are only used if the system
> doesn't have a proper <stdint.h>
> Also not sure of this:
> /* ctime_r takes 2 arguments */
> #define HAVE_CTIME_R_2 1
>
> What OS and CPU do the machines on llvm's buildfarm have? We could  
> try a
> config.h that works on Linux (or MacOSX), and try to apply
> that to all, though there might be (non-obvious) failures.
>
> Any solutions to having these macros defined in the LLVM testsuite
> build? (especially for the bigendian macro)
>
> 2. AFAICT the llvm-testsuite build doesn't support a program that is
> built from multiple subdirectories.
> libclamav has its source split into multiple subdirectories, gathering
> those into one also requires changing #include that have relative  
> paths.
> I also get files with the same name but from different subdirs, so I
> have to rename them to subdir_filename, and do that in #include too.
>
> I have done this manually, and it works (native, llc, cbe work).
> I could hack together some perl script to do this automatically, or is
> there a better solution?
>
> 3. Comparing output: I've written a small script that compares the
> --debug output, because it needs some adjustments since I also get
> memory addresses in the --debug output that obviously don't match up
> between runs.
> There isn't anything else to compare besides --debug output (besides
> ClamAV saying no virus found), and that can be a fairly good test.
>
> 4. What is the input data?
> Clamav is fast :)
> It needs a lot of input data if you want to get reasonable timings out
> of it (tens, hundreds of MB).
> Scanning multiple small files will be I/O bound, and it'd be mostly
> useless as a benchmark (though still useful for testing
> compiler/optimization correctness).
>
> So I was thinking of using some large files already available in the
> testsuite (oggenc has one), and then maybe point it to scan the last
> *stable* build of LLVM. Or find some files that are scanned slowly,  
> but
> that don't presume lots of disk I/O (an archive, with ratio/size  
> limits
> disabled, with highly compressable data).
> You won't be able to benchmark clamav in a "real world" scenario  
> though,
> since that'd involve making it scanning malware, and I'm sure you  
> don't
> want that on your build farm.
>
> You could give it to scan random data, but you'll need it to be
> reproducible, so scanning /dev/random, or /bin of current LLVM tree is
> not a good choice ;)
>
> There's also the problem of eliminating the initial disk I/O time  
> out of
> the benchmark, like rerun 3 times automatically or something like  
> that?
>
> 5. Library dependencies
> It needs zlib, all the rest is optional (bzip2, gmp, ....). I think I
> can reasonably assume zlib is available on all systems where the
> testsuite is run.
>
> 6. Sample output on using 126Mb of data as input:
>
> $ make TEST=nightly report
> ....
> Program  | GCCAS  Bytecode LLC compile LLC-BETA compile JIT codegen |
> GCC     CBE     LLC     LLC-BETA JIT | GCC/CBE GCC/LLC GCC/LLC-BETA
> LLC/LLC-BETA
> clamscan | 7.0729 2074308  *           *                *           |
> 17.48   17.55   18.81 *        *   | 1.00    0.93    n/a          n/a
>
> 7. Clamav is multithreaded
> If you're interested in testing if llvm-generated code works when
> multithreaded (I don't see why it wouldn't, but we're talking about a
> testsuite), you'd need to start the daemon (as an unprivileged user is
> just fine), and then connect to it.
> Is it possible to tell the testsuite build system to do this?
>
> 8. Code coverage
> Testing all of clamav code with llvm is ... problematic. Unless you
> create files with every packer/archiver known to clamav it is likely
> there will be files that are compiled in but never used during the
> testsuite run. You can still test that these files compile, but  
> thats it.
>
> 9. Configure tests
> Configure has 3 tests that check for gcc bugs known to break ClamAV (2
> of which you already have, since those are in gcc's testsuite too).  
> Add
> as separate "programs" to run in llvm testsuite?
>
> Thoughts?
>
> Best regards,
> Edwin
> _______________________________________________
> LLVM Developers mailing list
> [hidden email]         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev


_______________________________________________
LLVM Developers mailing list
[hidden email]         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
Reply | Threaded
Open this post in threaded view
|

Re: Adding ClamAV to the llvm testsuite (long)

Török Edwin
Evan Cheng wrote:
> We always welcome more tests. But it looks like there are two issues  
> here.
>
> 1. The autoconf requirement. Is it possible to get one configuration  
> working without the need for autoconf?
>  
I could make an clamav-config.h that should work if compiled with llvm-gcc.
Can I assume <endian.h> exists on all your platforms?
[or how else can I detect endianness by using only macros from headers?]

I've seen a Makefile having if $(ENDIAN), can I use that to pass
-DWORDS_BIGENDIAN=... to the compiler?

Or I can create a config.h that assumes the platform is bigendian
(assuming little-endian would SIGBUS on Sparc).

Thoughts?

Thanks,
Edwin

_______________________________________________
LLVM Developers mailing list
[hidden email]         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
Reply | Threaded
Open this post in threaded view
|

Re: Adding ClamAV to the llvm testsuite (long)

Chris Lattner
In reply to this post by Evan Cheng-2
On Mon, 17 Dec 2007, Evan Cheng wrote:
> We always welcome more tests. But it looks like there are two issues
> here.
>
> 1. The autoconf requirement. Is it possible to get one configuration
> working without the need for autoconf?

One way to do this is to add a "cut down" version of the app to the test
suite.

> 2. GPL license. Chris?

Any open source license that allows unrestricted redistribution is fine in
llvm-test

-Chris

> Evan
>
> On Dec 14, 2007, at 12:30 PM, Török Edwin wrote:
>
>> Hi,
>>
>> I see that you are looking for new programs for the testsuite, as
>> described in 'Compile programs with the LLVM compiler', and 'Adding
>> programs to the llvm testsuite" on llvm.org/OpenProjects.
>>
>> My favourite "C source code" is ClamAV (www.clamav.net), and I would
>> like to get it included in the testsuite.
>>
>> This mail is kind of long, but please bear with me, as I want to
>> clarify
>> how to best integrate Clamav into LLVM-testsuite's buildsystem.
>>
>> Why include it?
>>
>> It can be useful to find regressions, or new bugs; it already
>> uncovered
>> a few bugs in llvm's cbe, llc, and optimizers that I've reported
>> through
>> bugzilla (and they've been mostly fixed very fast! Thanks!). ClamAV
>> was
>> also the "victim" of a bug in gcc 4.1.0's optimizer [see 9)]
>>
>> It can be useful to test new/existing optimizations. There aren't any
>> significant differences on its performance when compiled by different
>> compilers (gcc, icc, llvm-gcc), so I hope LLVM's optimizers can (in
>> the
>> future) make it faster ;)
>>
>> I had a quick look at the build infrastructure, and there are some
>> issues with getting it to work with programs that use autoconf (such
>> as
>> ClamAV), since AFAICT testsuites aren't allowed to run configure
>> (listed
>> below)
>>
>> Building issues aside there are some more questions:
>> * ClamAV is GPL (but it includes BSD, LGPL parts), ok for testsuite?
>> * what version to use? Latest stable, or latest svn?
>> [In any case I'll wait till the next stable is published, it should be
>> happening *very soon*]
>> * what happens if you find bugs that also cause it to fail under gcc
>> (unlikely) ? [I would prefer to get an entry on clamav's bugzilla
>> then,
>> with something in its subject saying it is llvm-testsuite related]
>> * what happens if it only fails under llvm-gcc/llc/clang,.. and it is
>> not due to a bug in llvm, but because of portability issues in the
>> source code (unlikely)?
>> I would prefer a clamav bugzilla here too, clamav is meant to be
>> "portable" :)
>>
>> Also after I have set it up in the llvm testsuite, is there an easy
>> way
>> to run clang on it? Currently I have to hack autoconf generated
>> makefiles if I want to test clang on it.
>>
>> 1. I've manually run, and generated a clamav-config.h.
>> This usually just contains HAVE_* macros for headers, which should all
>> be available on a POSIX system, so it shouldn't be a problem from this
>> perspective for llvm's build farm.
>> However there are some target specific macros:
>> #define C_LINUX 1
>> #define FPU_WORDS_BIGENDIAN 0
>> #define WORDS_BIGENDIAN 0
>> Also SIZEOF_INT, SIZEOF_LONG,... but they are only used if the system
>> doesn't have a proper <stdint.h>
>> Also not sure of this:
>> /* ctime_r takes 2 arguments */
>> #define HAVE_CTIME_R_2 1
>>
>> What OS and CPU do the machines on llvm's buildfarm have? We could
>> try a
>> config.h that works on Linux (or MacOSX), and try to apply
>> that to all, though there might be (non-obvious) failures.
>>
>> Any solutions to having these macros defined in the LLVM testsuite
>> build? (especially for the bigendian macro)
>>
>> 2. AFAICT the llvm-testsuite build doesn't support a program that is
>> built from multiple subdirectories.
>> libclamav has its source split into multiple subdirectories, gathering
>> those into one also requires changing #include that have relative
>> paths.
>> I also get files with the same name but from different subdirs, so I
>> have to rename them to subdir_filename, and do that in #include too.
>>
>> I have done this manually, and it works (native, llc, cbe work).
>> I could hack together some perl script to do this automatically, or is
>> there a better solution?
>>
>> 3. Comparing output: I've written a small script that compares the
>> --debug output, because it needs some adjustments since I also get
>> memory addresses in the --debug output that obviously don't match up
>> between runs.
>> There isn't anything else to compare besides --debug output (besides
>> ClamAV saying no virus found), and that can be a fairly good test.
>>
>> 4. What is the input data?
>> Clamav is fast :)
>> It needs a lot of input data if you want to get reasonable timings out
>> of it (tens, hundreds of MB).
>> Scanning multiple small files will be I/O bound, and it'd be mostly
>> useless as a benchmark (though still useful for testing
>> compiler/optimization correctness).
>>
>> So I was thinking of using some large files already available in the
>> testsuite (oggenc has one), and then maybe point it to scan the last
>> *stable* build of LLVM. Or find some files that are scanned slowly,
>> but
>> that don't presume lots of disk I/O (an archive, with ratio/size
>> limits
>> disabled, with highly compressable data).
>> You won't be able to benchmark clamav in a "real world" scenario
>> though,
>> since that'd involve making it scanning malware, and I'm sure you
>> don't
>> want that on your build farm.
>>
>> You could give it to scan random data, but you'll need it to be
>> reproducible, so scanning /dev/random, or /bin of current LLVM tree is
>> not a good choice ;)
>>
>> There's also the problem of eliminating the initial disk I/O time
>> out of
>> the benchmark, like rerun 3 times automatically or something like
>> that?
>>
>> 5. Library dependencies
>> It needs zlib, all the rest is optional (bzip2, gmp, ....). I think I
>> can reasonably assume zlib is available on all systems where the
>> testsuite is run.
>>
>> 6. Sample output on using 126Mb of data as input:
>>
>> $ make TEST=nightly report
>> ....
>> Program  | GCCAS  Bytecode LLC compile LLC-BETA compile JIT codegen |
>> GCC     CBE     LLC     LLC-BETA JIT | GCC/CBE GCC/LLC GCC/LLC-BETA
>> LLC/LLC-BETA
>> clamscan | 7.0729 2074308  *           *                *           |
>> 17.48   17.55   18.81 *        *   | 1.00    0.93    n/a          n/a
>>
>> 7. Clamav is multithreaded
>> If you're interested in testing if llvm-generated code works when
>> multithreaded (I don't see why it wouldn't, but we're talking about a
>> testsuite), you'd need to start the daemon (as an unprivileged user is
>> just fine), and then connect to it.
>> Is it possible to tell the testsuite build system to do this?
>>
>> 8. Code coverage
>> Testing all of clamav code with llvm is ... problematic. Unless you
>> create files with every packer/archiver known to clamav it is likely
>> there will be files that are compiled in but never used during the
>> testsuite run. You can still test that these files compile, but
>> thats it.
>>
>> 9. Configure tests
>> Configure has 3 tests that check for gcc bugs known to break ClamAV (2
>> of which you already have, since those are in gcc's testsuite too).
>> Add
>> as separate "programs" to run in llvm testsuite?
>>
>> Thoughts?
>>
>> Best regards,
>> Edwin
>> _______________________________________________
>> LLVM Developers mailing list
>> [hidden email]         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>
> _______________________________________________
> LLVM Developers mailing list
> [hidden email]         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
-Chris

--
http://nondot.org/sabre/
http://llvm.org/
_______________________________________________
LLVM Developers mailing list
[hidden email]         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
Reply | Threaded
Open this post in threaded view
|

Re: Adding ClamAV to the llvm testsuite (long)

Török Edwin
Chris Lattner wrote:
> One way to do this is to add a "cut down" version of the app to the
> test suite.

I disabled optional features in clamav-config.h

>
>> 2. GPL license. Chris?
>
> Any open source license that allows unrestricted redistribution is
> fine in llvm-test

Ok, I have created a script that automatically checks out ClamAV
0.92-stable source code from svn, and moves files to match LLVM
testsuite's requirements.
It only checks out GPL files, it omits libclamunrar (which is not GPL).

Attaching all files. Let me know if you want to upload the entire
package somewhere.
For the moment I provide a script that automatically checks out sources
from ClamAV  svn repository (the tagged stable version).

Please provide feedback on the scripts, and Makefile.

What are the next steps required to add it to the testsuite?

Now it knows to do this:
edwin@lightspeed2:~/llvm-svn/llvm/projects/llvm-test/MultiSource/Applications/ClamAV$
make ENABLE_OPTIMIZED=1 TEST=nightly report
....
Program  | GCCAS  Bytecode LLC compile LLC-BETA compile JIT codegen |
GCC     CBE     LLC     LLC-BETA JIT | GCC/CBE GCC/LLC GCC/LLC-BETA
LLC/LLC-BETA
clamscan | 6.2900 1728848  7.1709      *                *           |  
12.71   12.75   13.49 *        *   | 1.00    0.94    n/a          n/a


Chris Lattner wrote:
>
> Thanks, having a better testsuite is very very useful!

Your welcome, if you encounter any problems with ClamAV (that isn't due
to my makefiles) you are welcome to open a bug on http://bugs.clamav.net
For LLVM-testsuite build problems contact me directly.


Thanks a lot,
Edwin

/* clamav-config.h.  Generated from clamav-config.h.in by configure.  */
/* clamav-config.h.in.  Generated from configure.in by autoheader.  */

/* enable bind8 compatibility */
/* #undef BIND_8_COMPAT */

/* Define if your snprintf is busted */
/* #undef BROKEN_SNPRINTF */

/* "build clamd" */
/* #undef BUILD_CLAMD */

/* name of the clamav group */
#define CLAMAVGROUP "clamav"

/* name of the clamav user */
#define CLAMAVUSER "clamav"

/* enable clamuko */
/* #undef CLAMUKO */

/* enable debugging */
/* #undef CL_DEBUG */

/* enable experimental code */
/* #undef CL_EXPERIMENTAL */

/* thread safe */
/* #undef CL_THREAD_SAFE */

/* where to look for the config file */
#define CONFDIR "/usr/local/etc"

/* os is aix */
/* #undef C_AIX */

/* os is beos */
/* #undef C_BEOS */

/* Increase thread stack size. */
/* #undef C_BIGSTACK */

/* os is bsd flavor */
/* #undef C_BSD */

/* os is cygwin */
/* #undef C_CYGWIN */

/* os is darwin */
/* #undef C_DARWIN */

/* target is gnu-hurd */
/* #undef C_GNU_HURD */

/* os is hpux */
/* #undef C_HPUX */

/* os is interix */
/* #undef C_INTERIX */

/* os is irix */
/* #undef C_IRIX */

/* target is kfreebsd-gnu */
/* #undef C_KFREEBSD_GNU */

/* target is linux */
/* #define C_LINUX 1 */

/* os is OS/2 */
/* #undef C_OS2 */

/* os is osf/tru64 */
/* #undef C_OSF */

/* os is QNX 6.x.x */
/* #undef C_QNX6 */

/* os is solaris */
/* #undef C_SOLARIS */

/* Path to virus database directory. */
#define DATADIR "/usr/local/share/clamav"

/* "default FD_SETSIZE value" */
#define DEFAULT_FD_SETSIZE 1024

/* "build unrar code" */
/* #undef ENABLE_UNRAR */

/* file i/o buffer size */
#define FILEBUFF 8192

/* FPU byte ordering is little endian */
#define FPU_WORDS_BIGENDIAN 0

/* enable workaround for broken DNS servers */
/* #undef FRESHCLAM_DNS_FIX */

/* use "Cache-Control: no-cache" in freshclam */
/* #undef FRESHCLAM_NO_CACHE */

/* access rights in msghdr */
/* #undef HAVE_ACCRIGHTS_IN_MSGHDR */

/* attrib aligned */
#define HAVE_ATTRIB_ALIGNED 1

/* attrib packed */
#define HAVE_ATTRIB_PACKED 1

/* have bzip2 */
/* #define HAVE_BZLIB_H 1 */

/* ancillary data style fd pass */
/* #define HAVE_CONTROL_IN_MSGHDR 1 */

/* Define to 1 if you have the `ctime_r' function. */
/* #define HAVE_CTIME_R 1 */

/* ctime_r takes 2 arguments */
/* #define HAVE_CTIME_R_2 1 */

/* ctime_r takes 3 arguments */
/* #undef HAVE_CTIME_R_3 */

/* Define to 1 if you have the <dlfcn.h> header file. */
/* #define HAVE_DLFCN_H 1 */

/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
#define HAVE_FSEEKO 1

/* gethostbyname_r takes 3 arguments */
/* #undef HAVE_GETHOSTBYNAME_R_3 */

/* gethostbyname_r takes 5 arguments */
/* #undef HAVE_GETHOSTBYNAME_R_5 */

/* gethostbyname_r takes 6 arguments */
/* #undef HAVE_GETHOSTBYNAME_R_6 */

/* Define to 1 if you have the `getpagesize' function. */
/* #define HAVE_GETPAGESIZE 1 */

/* have gmp installed */
/* #undef HAVE_GMP */

/* Define to 1 if you have the <grp.h> header file. */
 #define HAVE_GRP_H 1

/* Define to 1 if you have the <iconv.h> header file. */
/* #define HAVE_ICONV_H 1 */

/* Define to 1 if you have the `inet_ntop' function. */
/* #define HAVE_INET_NTOP 1 */

/* Define to 1 if you have the `initgroups' function. */
/* #define HAVE_INITGROUPS 1 */

/* Define to 1 if you have the <inttypes.h> header file. */
/* #define HAVE_INTTYPES_H 1 */

/* in_addr_t is defined */
/* #define HAVE_IN_ADDR_T 1 */

/* in_port_t is defined */
/* #define HAVE_IN_PORT_T 1 */

/* Define to 1 if you have the <libmilter/mfapi.h> header file. */
/* #undef HAVE_LIBMILTER_MFAPI_H */

/* Define to 1 if you have the <limits.h> header file. */
#define HAVE_LIMITS_H 1

/* Define to 1 if you have the <malloc.h> header file. */
/* #define HAVE_MALLOC_H 1 */

/* Define to 1 if you have the `memcpy' function. */
#define HAVE_MEMCPY 1

/* Define to 1 if you have the <memory.h> header file. */
/* #define HAVE_MEMORY_H 1 */

/* Define to 1 if you have the `mkstemp' function. */
#define HAVE_MKSTEMP 1

/* Define to 1 if you have a working `mmap' system call. */
#define HAVE_MMAP 1

/* Define to 1 if you have the <ndir.h> header file. */
/* #undef HAVE_NDIR_H */

/* Define to 1 if you have the `poll' function. */
/* #define HAVE_POLL 1 */

/* Define to 1 if you have the <poll.h> header file. */
/* #define HAVE_POLL_H 1 */

/* "pragma pack" */
/* #undef HAVE_PRAGMA_PACK */

/* "pragma pack hppa/hp-ux style" */
/* #undef HAVE_PRAGMA_PACK_HPPA */

/* Define to 1 if you have the <pwd.h> header file. */
#define HAVE_PWD_H 1

/* readdir_r takes 2 arguments */
/* #undef HAVE_READDIR_R_2 */

/* readdir_r takes 3 arguments */
/* #undef HAVE_READDIR_R_3 */

/* Define to 1 if you have the `recvmsg' function. */
/* #define HAVE_RECVMSG 1 */

/* have resolv.h */
/* #undef HAVE_RESOLV_H */

/* Define signed right shift implementation */
#define HAVE_SAR 1

/* Define to 1 if you have the `sendmsg' function. */
/* #define HAVE_SENDMSG 1 */

/* Define to 1 if you have the `setgroups' function. */
/* #define HAVE_SETGROUPS 1 */

/* Define to 1 if you have the `setsid' function. */
/* #define HAVE_SETSID 1 */

/* Define to 1 if you have the `snprintf' function. */
#define HAVE_SNPRINTF 1

/* Define to 1 if you have the <stdbool.h> header file. */
#define HAVE_STDBOOL_H 1

/* Define to 1 if you have the <stdint.h> header file. */
#define HAVE_STDINT_H 1

/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1

/* Define to 1 if you have the `strerror_r' function. */
/* #define HAVE_STRERROR_R 1 */

/* Define to 1 if you have the <strings.h> header file. */
/* #define HAVE_STRINGS_H 1 */

/* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H 1

/* Define to 1 if you have the `strlcat' function. */
/* #undef HAVE_STRLCAT */

/* Define to 1 if you have the `strlcpy' function. */
/* #undef HAVE_STRLCPY */

/* Define to 1 if you have the <sys/filio.h> header file. */
/* #undef HAVE_SYS_FILIO_H */

/* Define to 1 if you have the <sys/inttypes.h> header file. */
/* #undef HAVE_SYS_INTTYPES_H */

/* Define to 1 if you have the <sys/int_types.h> header file. */
/* #undef HAVE_SYS_INT_TYPES_H */

/* Define to 1 if you have the <sys/mman.h> header file. */
#define HAVE_SYS_MMAN_H 1

/* Define to 1 if you have the <sys/param.h> header file. */
#define HAVE_SYS_PARAM_H 1

/* "have <sys/select.h>" */
/* #undef HAVE_SYS_SELECT_H */

/* Define to 1 if you have the <sys/stat.h> header file. */
#define HAVE_SYS_STAT_H 1

/* Define to 1 if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H 1

/* Define to 1 if you have the <sys/uio.h> header file. */
/* #define HAVE_SYS_UIO_H 1 */

/* Define to 1 if you have the <tcpd.h> header file. */
/* #undef HAVE_TCPD_H */

/* Define to 1 if you have the <termios.h> header file. */
/* #define HAVE_TERMIOS_H 1 */

/* Define to 1 if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H 1

/* Define to 1 if you have the `vsnprintf' function. */
#define HAVE_VSNPRINTF 1

/* zlib installed */
#define HAVE_ZLIB_H 1

/* Early Linux doesn't set cmsg fields */
/* #undef INCOMPLETE_CMSG */

/* bzip funtions do not have bz2 prefix */
/* #undef NOBZ2PREFIX */

/* "no fd_set" */
/* #undef NO_FD_SET */

/* Name of package */
#define PACKAGE "clamav"

/* Define to the address where bug reports for this package should be sent. */
#define PACKAGE_BUGREPORT ""

/* Define to the full name of this package. */
#define PACKAGE_NAME ""

/* Define to the full name and version of this package. */
#define PACKAGE_STRING ""

/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME ""

/* Define to the version of this package. */
#define PACKAGE_VERSION ""

/* scan buffer size */
#define SCANBUFF 131072

/* location of Sendmail binary */
/* #undef SENDMAIL_BIN */

/* major version of Sendmail */
/* #undef SENDMAIL_VERSION_A */

/* minor version of Sendmail */
/* #undef SENDMAIL_VERSION_B */

/* subversion of Sendmail */
/* #undef SENDMAIL_VERSION_C */

/* Define to 1 if the `setpgrp' function takes no argument. */
#define SETPGRP_VOID 1

#if 0
/* lets assume system has proper stdint that defines uintX_t. */
/* The number of bytes in type int */
/* #define SIZEOF_INT 4 */

/* The number of bytes in type long */
#define SIZEOF_LONG 8

/* The number of bytes in type long long */
#define SIZEOF_LONG_LONG 8

/* The number of bytes in type short */
#define SIZEOF_SHORT 2
#endif

/* Define to 1 if you have the ANSI C header files. */
#define STDC_HEADERS 1

/* use syslog */
/* #define USE_SYSLOG 1 */

/* Version number of package */
#define VERSION "devel-20071218"

/* tcpwrappers support */
/* #undef WITH_TCPWRAP */

/* endianess */
/* #define WORDS_BIGENDIAN 0 */

/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
/* #undef _LARGEFILE_SOURCE */

/* POSIX compatibility */
/* #undef _POSIX_PII_SOCKET */

/* thread safe */
/* #undef _REENTRANT */

/* Define to empty if `const' does not conform to ANSI C. */
/* #undef const */

/* Define to `__inline__' or `__inline' if that's what the C compiler
   calls it, or to nothing if 'inline' is not supported under any name.  */
#ifndef __cplusplus
/* #undef inline */
#endif

/* Define to `long int' if <sys/types.h> does not define. */
/* #undef off_t */

/* Define to "int" if <sys/socket.h> does not define. */
/* #undef socklen_t */

LEVEL = ../../../
#RUN_OPTIONS     =

Source = $(addprefix libclamav_, \
         aspack.c autoit.c binhex.c blob.c cab.c chmunpack.c cvd.c dconf.c dsig.c\
         elf.c entconv.c filetypes.c fsg.c hashtab.c htmlnorm.c\
         is_tar.c jscript.c line.c lockdb.c matcher-ac.c matcher-bm.c\
         matcher.c mbox.c md5.c message.c mew.c msexpand.c mspack.c ole2_extract.c\
         others.c packlibs.c pdf.c pe.c petite.c phishcheck.c phish_domaincheck_db.c phish_whitelist.c\
         pst.c readdb.c rebuildpe.c regex_list.c rtf.c scanners.c sis.c snprintf.c special.c spin.c str.c suecrypt.c\
         table.c text.c tnef.c unarj.c unsp.c untar.c unzip.c upack.c upx.c uuencode.c vba_extract.c wwunpack.c yc.c)\
         $(addprefix clamscan_, \
  clamscan.c manager.c others.c treewalk.c)\
         $(addprefix shared_, \
         cdiff.c cfgparser.c getopt.c misc.c network.c options.c output.c sha256.c)\
         $(addprefix libclamav_regex_, \
         regerror.c, regfree.c, \
         regcomp.c,  regexec.c, strlcpy.c)\
         $(addprefix libclamav_nsis_, \
                 nulsft.c, bzlib.c, infblock.c, LZMADecode.c )
#        SVN version has these:
# inflate64.c lzma_iface.c
# $(addprefix libclamav_lzma_, \
# LzmaStateDecode.c) \

PROG = clamscan
CFLAGS += -DHAVE_CONFIG_H -Iinclude/libclamav/regex/ -Iinclude/libclamav/nsis -Iinclude/libclamav/lzma -Iinclude/libclamav -Iinclude/shared -Iinclude/clamscan/ -Iinclude/

LDFLAGS = -lz
RUN_OPTIONS = --debug --no-summary -ddbdir -r inputs/*

include $(LEVEL)/Makefile.config


# for ClamAV these are in clamav-config.h, but since we can't run configure, we have to define them here


# -- OS macros --
#  It is especially important to get this correctly defined for windows.

ifeq ($(OS),Darwin)
   CFLAGS += -DC_DARWIN
endif
ifeq ($(OS),AIX)
   CFLAGS += -DC_AIX
endif
ifeq ($(OS), IRIX)
   CFLAGS += -DC_IRIX
endif
ifeq ($(OS), Cygwin)
   CFLAGS += -DC_CYGWIN
endif
ifeq ($(OS), FreeBSD)
   CFLAGS += -DC_BSD
endif
ifeq ($(OS), OpenBSD)
   CFLAGS += -DC_BSD
endif
ifeq ($(OS), NetBSD)
   CFLAGS += -DC_BSD
endif
ifeq ($(OS), HP-UX)
   CFLAGS += -DC_HPUX
endif
ifeq ($(OS), Interix)
  CFLAGS += -DC_INTERIX -DC_WINDOWS
endif
ifeq ($(OS), Win32)
  CFLAGS += -DC_WINDOWS
endif
ifeq ($(OS), mingw)
  CFLAGS += -DC_WINDOWS
endif
ifeq ($(OS), Linux)
  CFLAGs += -DC_LINUX
endif

# -- except ARM all arches have WORDS_BIGENDIAN same as ENDIAN.
#  for ARM we'd need a runtime autoconf check to detect.
#  Only affects autoit.c, not defining this macro will partially disable it.

ifneq ($(ARCH),ARM)
ifeq ($(ENDIAN),little)
   CFLAGS += -DFPU_WORDS_BIGENDIAN=0
endif
ifeq ($(ENDIAN),big)
   CFLAGS += -DFPU_WORDS_BIGENDIAN=1
endif
endif


# -- endianness detection --
#  It is important to get this correctly, especially for Sparc.
#  If arch is little endian the code possibly does unaligned accesses, that would
#  cause a SIGBUS on Sparc.

ifeq ($(ENDIAN),little)
   CFLAGS += -DWORDS_BIGENDIAN=0
endif
ifeq ($(ENDIAN),big)
   CFLAGS += -DWORDS_BIGENDIAN=1
endif

include ../../Makefile.multisrc
#must be after all includes
# temp files have random names, filter them
DIFFPROG := $(PROGDIR)/DiffOutput.sh "./filterdiff.sh"


Building ClamAV (www.clamav.net) for llvm's testsuite.

To get sources from clamav's repository
(currently from 0.92 stable version, you can edit the tag in prepare.sh)

$ ./prepare.sh checkout
$ ./prepare.sh copy
$ ./prepare.sh getdb

Provided files:
prepare.sh
rename.sh: used by prepare.sh
header_rename.sh: used by prepare.sh
clamav-config.h: minimal config header, so we don't have to run autoconf
Makefile: integrate ClamAV into LLVM-testsuite's build-system
filterdiff.sh: compare --debug output to test code generation correctness

Important to know:

The directory inputs/ contains files (or symlinks to) to be scanned during the test.
These can be any files, but they must be the same each time you run
the test, to ensure consistency of results.

The directory dbdir/ contains the virus database. You get an initial copy with the
prepare.sh.
Note, that the recommended way to update is via freshclam(1). Updating the database
is not important for the test-suite.
When you import a new version of ClamAV into the testsuite it is recommended to
use latest DB however.

When execute clamscan creates files in the system tmp directory (usually /tmp).
Watch disk space!



BUGREPORTS
----------
If you encounter problems with ClamAV itself, please try to reproduce the problem with
clamav built from latest stable available on www.clamav.net.

You can report bugs on http://bugs.clamav.net

If you haven't tried to reproduce problem with the original clamav,
please add a reference to the LLVM bugreport, and a descriptive text in subject stating
it is related to LLVM testsuite.

For bugs opened on LLVM bugzilla regarding ClamAV testsuite failures
(that are not due to bugs in LLVM), please CC: edwin at clamav dot net



.:
clamav-config.h
clamscan_clamscan.c
clamscan_manager.c
clamscan_others.c
clamscan_treewalk.c
COPYING
dbdir
engine.c
filterdiff.sh
header_rename.sh
include
inputs
libclamav_aspack.c
libclamav_autoit.c
libclamav_binhex.c
libclamav_blob.c
libclamav_cab.c
libclamav_chmunpack.c
libclamav_cvd.c
libclamav_dconf.c
libclamav_dsig.c
libclamav_elf.c
libclamav_entconv.c
libclamav_filetypes.c
libclamav_fsg.c
libclamav_hashtab.c
libclamav_htmlnorm.c
libclamav_is_tar.c
libclamav_jscript.c
libclamav_line.c
libclamav_lockdb.c
libclamav_matcher-ac.c
libclamav_matcher-bm.c
libclamav_matcher.c
libclamav_mbox.c
libclamav_md5.c
libclamav_message.c
libclamav_mew.c
libclamav_msexpand.c
libclamav_mspack.c
libclamav_nsis_bzlib.c
libclamav_nsis_infblock.c
libclamav_nsis_LZMADecode.c
libclamav_nsis_nulsft.c
libclamav_ole2_extract.c
libclamav_others.c
libclamav_packlibs.c
libclamav_pdf.c
libclamav_pe.c
libclamav_petite.c
libclamav_phishcheck.c
libclamav_phish_domaincheck_db.c
libclamav_phish_whitelist.c
libclamav_pst.c
libclamav_readdb.c
libclamav_rebuildpe.c
libclamav_regex_list.c
libclamav_regex_regcomp.c
libclamav_regex_regerror.c
libclamav_regex_regexec.c
libclamav_regex_regfree.c
libclamav_regex_strlcpy.c
libclamav_rtf.c
libclamav_scanners.c
libclamav_sis.c
libclamav_snprintf.c
libclamav_special.c
libclamav_spin.c
libclamav_str.c
libclamav_suecrypt.c
libclamav_table.c
libclamav_text.c
libclamav_tnef.c
libclamav_unarj.c
libclamav_unsp.c
libclamav_untar.c
libclamav_unzip.c
libclamav_upack.c
libclamav_upx.c
libclamav_uuencode.c
libclamav_vba_extract.c
libclamav_wwunpack.c
libclamav_yc.c
Makefile
Output
prepare.sh
README.LLVM-tests
rename.sh
report.nightly.raw.out
report.nightly.txt
shared_cdiff.c
shared_cfgparser.c
shared_getopt.c
shared_misc.c
shared_network.c
shared_options.c
shared_output.c
shared_sha256.c
target.h
test_farm_farm.c
test_libclamav_libclamav.c
test_mbox_debugm.c
test_pe_debugpe.c
tmp_new
tmp_reference

./dbdir:
daily.cvd
main.cvd

./include:
clamscan
libclamav
shared

./include/clamscan:
clamscan_opt.h
global.h
manager.h
others.h
treewalk.h

./include/libclamav:
aspack.h
autoit.h
binhex.h
blob.h
cab.h
chmunpack.h
clamav.h
cltypes.h
cvd.h
dconf.h
dsig.h
elf.h
encoding_aliases.h
entconv.h
entitylist.h
execs.h
filetypes.h
fsg.h
hashtab.h
htmlnorm.h
iana_tld.h
is_tar.h
jscript.h
line.h
lockdb.h
matcher-ac.h
matcher-bm.h
matcher.h
mbox.h
md5.h
message.h
mew.h
msexpand.h
mspack.h
nsis
ole2_extract.h
others.h
packlibs.h
pdf.h
pe.h
petite.h
phishcheck.h
phish_domaincheck_db.h
phish_whitelist.h
pst.h
readdb.h
rebuildpe.h
regex
regex_list.h
rtf.h
scanners.h
sis.h
snprintf.h
special.h
spin.h
str.h
suecrypt.h
table.h
text.h
tnef.h
unarj.h
unsp.h
untar.h
unzip.h
upack.h
upx.h
uuencode.h
vba_extract.h
wwunpack.h
yc.h

./include/libclamav/nsis:
bzlib_private.h
LZMADecode.h
nsis_bzlib.h
nsis_zconf.h
nsis_zlib.h
nsis_zutil.h
nulsft.h

./include/libclamav/regex:
cclass.h
cname.h
regex2.h
regex.h
utils.h

./include/shared:
cdiff.h
cfgparser.h
getopt.h
misc.h
network.h
options.h
output.h
sha256.h

./inputs:
clam.cab
clamdoc.pdf
clam.exe
clam.exe.bz2
clam-v2.rar
clam-v3.rar
clam.zip
dbdir
docs
large.pcm
mei16v2.m2v
README
rtf-test
tune

./inputs/rtf-test:
Doc11.rtf
Doc1.rtf
Doc22.rtf
Doc2.rtf
doc3.rtf
docCLAMexe.rtf
rtf1.rtf
rtf-novirus.rtf

./Output:
clamscan.cbe
clamscan.cbe.c
clamscan_clamscan.bc
clamscan_clamscan.o
clamscan.diff-cbe
clamscan.diff-llc
clamscan.exe-cbe
clamscan.exe-llc
clamscan.linked.bc
clamscan.linked.bc.info
clamscan.linked.rbc
clamscan.llc
clamscan.llc.s
clamscan.llvm
clamscan.llvm.bc
clamscan_manager.bc
clamscan_manager.o
clamscan.native
clamscan.nightly.cbe.report.txt
clamscan.nightly.compile.report.txt
clamscan.nightly.jit.report.txt
clamscan.nightly.llc.report.txt
clamscan.nightly.llc.report.txt.info
clamscan.nightly.nat.report.txt
clamscan.nightly.report.txt
clamscan_others.bc
clamscan_others.o
clamscan.out-cbe
clamscan.out-cbe.time
clamscan.out-jit
clamscan.out-jit.time
clamscan.out-llc
clamscan.out-llc.time
clamscan.out-nat
clamscan.out-nat.time
clamscan_treewalk.bc
clamscan_treewalk.o
libclamav_aspack.bc
libclamav_aspack.o
libclamav_autoit.bc
libclamav_autoit.o
libclamav_binhex.bc
libclamav_binhex.o
libclamav_blob.bc
libclamav_blob.o
libclamav_cab.bc
libclamav_cab.o
libclamav_chmunpack.bc
libclamav_chmunpack.o
libclamav_cvd.bc
libclamav_cvd.o
libclamav_dconf.bc
libclamav_dconf.o
libclamav_dsig.bc
libclamav_dsig.o
libclamav_elf.bc
libclamav_elf.o
libclamav_entconv.bc
libclamav_entconv.o
libclamav_filetypes.bc
libclamav_filetypes.o
libclamav_fsg.bc
libclamav_fsg.o
libclamav_hashtab.bc
libclamav_hashtab.o
libclamav_htmlnorm.bc
libclamav_htmlnorm.o
libclamav_is_tar.bc
libclamav_is_tar.o
libclamav_jscript.bc
libclamav_jscript.o
libclamav_line.bc
libclamav_line.o
libclamav_lockdb.bc
libclamav_lockdb.o
libclamav_matcher-ac.bc
libclamav_matcher-ac.o
libclamav_matcher.bc
libclamav_matcher-bm.bc
libclamav_matcher-bm.o
libclamav_matcher.o
libclamav_mbox.bc
libclamav_mbox.o
libclamav_md5.bc
libclamav_md5.o
libclamav_message.bc
libclamav_message.o
libclamav_mew.bc
libclamav_mew.o
libclamav_msexpand.bc
libclamav_msexpand.o
libclamav_mspack.bc
libclamav_mspack.o
libclamav_nsis_bzlib.bc
libclamav_nsis_bzlib.o
libclamav_nsis_infblock.bc
libclamav_nsis_infblock.o
libclamav_nsis_LZMADecode.bc
libclamav_nsis_LZMADecode.o
libclamav_nsis_nulsft.bc
libclamav_nsis_nulsft.o
libclamav_ole2_extract.bc
libclamav_ole2_extract.o
libclamav_others.bc
libclamav_others.o
libclamav_packlibs.bc
libclamav_packlibs.o
libclamav_pdf.bc
libclamav_pdf.o
libclamav_pe.bc
libclamav_pe.o
libclamav_petite.bc
libclamav_petite.o
libclamav_phishcheck.bc
libclamav_phishcheck.o
libclamav_phish_domaincheck_db.bc
libclamav_phish_domaincheck_db.o
libclamav_phish_whitelist.bc
libclamav_phish_whitelist.o
libclamav_pst.bc
libclamav_pst.o
libclamav_readdb.bc
libclamav_readdb.o
libclamav_rebuildpe.bc
libclamav_rebuildpe.o
libclamav_regex_list.bc
libclamav_regex_list.o
libclamav_regex_regcomp.bc
libclamav_regex_regcomp.o
libclamav_regex_regerror.bc
libclamav_regex_regerror.o
libclamav_regex_regexec.bc
libclamav_regex_regexec.o
libclamav_regex_regfree.bc
libclamav_regex_regfree.o
libclamav_regex_strlcpy.bc
libclamav_regex_strlcpy.o
libclamav_rtf.bc
libclamav_rtf.o
libclamav_scanners.bc
libclamav_scanners.o
libclamav_sis.bc
libclamav_sis.o
libclamav_snprintf.bc
libclamav_snprintf.o
libclamav_special.bc
libclamav_special.o
libclamav_spin.bc
libclamav_spin.o
libclamav_str.bc
libclamav_str.o
libclamav_suecrypt.bc
libclamav_suecrypt.o
libclamav_table.bc
libclamav_table.o
libclamav_text.bc
libclamav_text.o
libclamav_tnef.bc
libclamav_tnef.o
libclamav_unarj.bc
libclamav_unarj.o
libclamav_unsp.bc
libclamav_unsp.o
libclamav_untar.bc
libclamav_untar.o
libclamav_unzip.bc
libclamav_unzip.o
libclamav_upack.bc
libclamav_upack.o
libclamav_upx.bc
libclamav_upx.o
libclamav_uuencode.bc
libclamav_uuencode.o
libclamav_vba_extract.bc
libclamav_vba_extract.o
libclamav_wwunpack.bc
libclamav_wwunpack.o
libclamav_yc.bc
libclamav_yc.o
shared_cdiff.bc
shared_cdiff.o
shared_cfgparser.bc
shared_cfgparser.o
shared_getopt.bc
shared_getopt.o
shared_misc.bc
shared_misc.o
shared_network.bc
shared_network.o
shared_options.bc
shared_options.o
shared_output.bc
shared_output.o
shared_sha256.bc
shared_sha256.o

_______________________________________________
LLVM Developers mailing list
[hidden email]         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

filterdiff.sh (648 bytes) Download Attachment
header_rename.sh (222 bytes) Download Attachment
prepare.sh (2K) Download Attachment
rename.sh (188 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Adding ClamAV to the llvm testsuite (long)

Török Edwin
Török Edwin wrote:
> Attaching all files. Let me know if you want to upload the entire
> package somewhere.
> [...]
> Please provide feedback on the scripts, and Makefile.
> [...]
> What are the next steps required to add it to the testsuite

Is there any chance for this to go in before the code freeze, or do you
prefer to add it after?

Best regards,
--Edwin
_______________________________________________
LLVM Developers mailing list
[hidden email]         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
Reply | Threaded
Open this post in threaded view
|

Re: Adding ClamAV to the llvm testsuite (long)

Evan Cheng-2
I'll try your patch today and commit it if it works well.

Thanks,

Evan

On Jan 6, 2008, at 1:43 PM, Török Edwin wrote:

> Török Edwin wrote:
>> Attaching all files. Let me know if you want to upload the entire
>> package somewhere.
>> [...]
>> Please provide feedback on the scripts, and Makefile.
>> [...]
>> What are the next steps required to add it to the testsuite
>
> Is there any chance for this to go in before the code freeze, or do  
> you
> prefer to add it after?
>
> Best regards,
> --Edwin
> _______________________________________________
> LLVM Developers mailing list
> [hidden email]         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev


_______________________________________________
LLVM Developers mailing list
[hidden email]         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
Reply | Threaded
Open this post in threaded view
|

Re: Adding ClamAV to the llvm testsuite (long)

Evan Cheng-2
In reply to this post by Török Edwin
Hi Edwin,

I ran into two problems.

1. Using your config file and Makefile, I ran into issue compiling  
with gcc:

gcc -I/Users/echeng/LLVM/llvm/projects/llvm-test/MultiSource/
Applications/ClamAV -I/Users/echeng/LLVM/llvm/projects/llvm-test/
MultiSource/Applications/ClamAV -I/\Users/echeng/LLVM/llvm/include -I/
Users/echeng/LLVM/llvm/projects/llvm-test/include -I../../..//include  
-I/Users/echeng/LLVM/llvm/include -D_GNU_SOURCE -D__STDC_LIMIT_MACROS  
-O3 -O2 -mdynamic-no-pic -fomit-frame-pointer -c clamscan_clamscan.c -
o Output/clamscan_clamscan.o
clamscan_clamscan.c:39:26: error: clamscan_opt.h: No such file or  
directory
clamscan_clamscan.c:40:29: error: clamscan/others.h: No such file or  
directory

llvm-gcc compiles this just fine:

/Users/echeng/LLVM/install/bin/llvm-gcc -I/Users/echeng/LLVM/llvm/
projects/llvm-test/MultiSource/Applications/ClamAV -I/Users/echeng/
LLVM/llvm/projects/llvm-test\/MultiSource/Applications/ClamAV -I/
Users/echeng/LLVM/llvm/include -I/Users/echeng/LLVM/llvm/projects/
llvm-test/include -I../../..//include -I/Users/echeng/LLVM/\llvm/
include -D_GNU_SOURCE -D__STDC_LIMIT_MACROS -DHAVE_CONFIG_H -Iinclude/
libclamav/regex/ -Iinclude/libclamav/nsis -Iinclude/libclamav/lzma -
Iinclude/libclamav\ -Iinclude/shared -Iinclude/clamscan/ -Iinclude/ -
DC_DARWIN -DFPU_WORDS_BIGENDIAN=0 -DWORDS_BIGENDIAN=0  -O2 -mdynamic-
no-pic -fomit-frame-pointer -O0 -c clamsca\n_clamscan.c -o Output/
clamscan_clamscan.bc -emit-llvm

Looks like it's a makefile issue?

2. prepare.sh getdb doesn't work for me because I don't have wget.

Is it possible for you to get the complete source in a compilable  
state and send me a tar file instead?

A request: If it's possible, can you flatten the entire tree? That  
is, everything in the top level directory?

Thanks,

Evan

On Dec 18, 2007, at 1:24 PM, Török Edwin wrote:

> Chris Lattner wrote:
>> One way to do this is to add a "cut down" version of the app to the
>> test suite.
>
> I disabled optional features in clamav-config.h
>
>>
>>> 2. GPL license. Chris?
>>
>> Any open source license that allows unrestricted redistribution is
>> fine in llvm-test
>
> Ok, I have created a script that automatically checks out ClamAV
> 0.92-stable source code from svn, and moves files to match LLVM
> testsuite's requirements.
> It only checks out GPL files, it omits libclamunrar (which is not  
> GPL).
>
> Attaching all files. Let me know if you want to upload the entire
> package somewhere.
> For the moment I provide a script that automatically checks out  
> sources
> from ClamAV  svn repository (the tagged stable version).
>
> Please provide feedback on the scripts, and Makefile.
>
> What are the next steps required to add it to the testsuite?
>
> Now it knows to do this:
> edwin@lightspeed2:~/llvm-svn/llvm/projects/llvm-test/MultiSource/
> Applications/ClamAV$
> make ENABLE_OPTIMIZED=1 TEST=nightly report
> ....
> Program  | GCCAS  Bytecode LLC compile LLC-BETA compile JIT codegen |
> GCC     CBE     LLC     LLC-BETA JIT | GCC/CBE GCC/LLC GCC/LLC-BETA
> LLC/LLC-BETA
> clamscan | 6.2900 1728848  7.1709      *                *           |
> 12.71   12.75   13.49 *        *   | 1.00    0.94    n/a          n/a
>
>
> Chris Lattner wrote:
>>
>> Thanks, having a better testsuite is very very useful!
>
> Your welcome, if you encounter any problems with ClamAV (that isn't  
> due
> to my makefiles) you are welcome to open a bug on http://
> bugs.clamav.net
> For LLVM-testsuite build problems contact me directly.
>
>
> Thanks a lot,
> Edwin
> /* clamav-config.h.  Generated from clamav-config.h.in by  
> configure.  */
> /* clamav-config.h.in.  Generated from configure.in by autoheader.  */
>
> /* enable bind8 compatibility */
> /* #undef BIND_8_COMPAT */
>
> /* Define if your snprintf is busted */
> /* #undef BROKEN_SNPRINTF */
>
> /* "build clamd" */
> /* #undef BUILD_CLAMD */
>
> /* name of the clamav group */
> #define CLAMAVGROUP "clamav"
>
> /* name of the clamav user */
> #define CLAMAVUSER "clamav"
>
> /* enable clamuko */
> /* #undef CLAMUKO */
>
> /* enable debugging */
> /* #undef CL_DEBUG */
>
> /* enable experimental code */
> /* #undef CL_EXPERIMENTAL */
>
> /* thread safe */
> /* #undef CL_THREAD_SAFE */
>
> /* where to look for the config file */
> #define CONFDIR "/usr/local/etc"
>
> /* os is aix */
> /* #undef C_AIX */
>
> /* os is beos */
> /* #undef C_BEOS */
>
> /* Increase thread stack size. */
> /* #undef C_BIGSTACK */
>
> /* os is bsd flavor */
> /* #undef C_BSD */
>
> /* os is cygwin */
> /* #undef C_CYGWIN */
>
> /* os is darwin */
> /* #undef C_DARWIN */
>
> /* target is gnu-hurd */
> /* #undef C_GNU_HURD */
>
> /* os is hpux */
> /* #undef C_HPUX */
>
> /* os is interix */
> /* #undef C_INTERIX */
>
> /* os is irix */
> /* #undef C_IRIX */
>
> /* target is kfreebsd-gnu */
> /* #undef C_KFREEBSD_GNU */
>
> /* target is linux */
> /* #define C_LINUX 1 */
>
> /* os is OS/2 */
> /* #undef C_OS2 */
>
> /* os is osf/tru64 */
> /* #undef C_OSF */
>
> /* os is QNX 6.x.x */
> /* #undef C_QNX6 */
>
> /* os is solaris */
> /* #undef C_SOLARIS */
>
> /* Path to virus database directory. */
> #define DATADIR "/usr/local/share/clamav"
>
> /* "default FD_SETSIZE value" */
> #define DEFAULT_FD_SETSIZE 1024
>
> /* "build unrar code" */
> /* #undef ENABLE_UNRAR */
>
> /* file i/o buffer size */
> #define FILEBUFF 8192
>
> /* FPU byte ordering is little endian */
> #define FPU_WORDS_BIGENDIAN 0
>
> /* enable workaround for broken DNS servers */
> /* #undef FRESHCLAM_DNS_FIX */
>
> /* use "Cache-Control: no-cache" in freshclam */
> /* #undef FRESHCLAM_NO_CACHE */
>
> /* access rights in msghdr */
> /* #undef HAVE_ACCRIGHTS_IN_MSGHDR */
>
> /* attrib aligned */
> #define HAVE_ATTRIB_ALIGNED 1
>
> /* attrib packed */
> #define HAVE_ATTRIB_PACKED 1
>
> /* have bzip2 */
> /* #define HAVE_BZLIB_H 1 */
>
> /* ancillary data style fd pass */
> /* #define HAVE_CONTROL_IN_MSGHDR 1 */
>
> /* Define to 1 if you have the `ctime_r' function. */
> /* #define HAVE_CTIME_R 1 */
>
> /* ctime_r takes 2 arguments */
> /* #define HAVE_CTIME_R_2 1 */
>
> /* ctime_r takes 3 arguments */
> /* #undef HAVE_CTIME_R_3 */
>
> /* Define to 1 if you have the <dlfcn.h> header file. */
> /* #define HAVE_DLFCN_H 1 */
>
> /* Define to 1 if fseeko (and presumably ftello) exists and is  
> declared. */
> #define HAVE_FSEEKO 1
>
> /* gethostbyname_r takes 3 arguments */
> /* #undef HAVE_GETHOSTBYNAME_R_3 */
>
> /* gethostbyname_r takes 5 arguments */
> /* #undef HAVE_GETHOSTBYNAME_R_5 */
>
> /* gethostbyname_r takes 6 arguments */
> /* #undef HAVE_GETHOSTBYNAME_R_6 */
>
> /* Define to 1 if you have the `getpagesize' function. */
> /* #define HAVE_GETPAGESIZE 1 */
>
> /* have gmp installed */
> /* #undef HAVE_GMP */
>
> /* Define to 1 if you have the <grp.h> header file. */
>  #define HAVE_GRP_H 1
>
> /* Define to 1 if you have the <iconv.h> header file. */
> /* #define HAVE_ICONV_H 1 */
>
> /* Define to 1 if you have the `inet_ntop' function. */
> /* #define HAVE_INET_NTOP 1 */
>
> /* Define to 1 if you have the `initgroups' function. */
> /* #define HAVE_INITGROUPS 1 */
>
> /* Define to 1 if you have the <inttypes.h> header file. */
> /* #define HAVE_INTTYPES_H 1 */
>
> /* in_addr_t is defined */
> /* #define HAVE_IN_ADDR_T 1 */
>
> /* in_port_t is defined */
> /* #define HAVE_IN_PORT_T 1 */
>
> /* Define to 1 if you have the <libmilter/mfapi.h> header file. */
> /* #undef HAVE_LIBMILTER_MFAPI_H */
>
> /* Define to 1 if you have the <limits.h> header file. */
> #define HAVE_LIMITS_H 1
>
> /* Define to 1 if you have the <malloc.h> header file. */
> /* #define HAVE_MALLOC_H 1 */
>
> /* Define to 1 if you have the `memcpy' function. */
> #define HAVE_MEMCPY 1
>
> /* Define to 1 if you have the <memory.h> header file. */
> /* #define HAVE_MEMORY_H 1 */
>
> /* Define to 1 if you have the `mkstemp' function. */
> #define HAVE_MKSTEMP 1
>
> /* Define to 1 if you have a working `mmap' system call. */
> #define HAVE_MMAP 1
>
> /* Define to 1 if you have the <ndir.h> header file. */
> /* #undef HAVE_NDIR_H */
>
> /* Define to 1 if you have the `poll' function. */
> /* #define HAVE_POLL 1 */
>
> /* Define to 1 if you have the <poll.h> header file. */
> /* #define HAVE_POLL_H 1 */
>
> /* "pragma pack" */
> /* #undef HAVE_PRAGMA_PACK */
>
> /* "pragma pack hppa/hp-ux style" */
> /* #undef HAVE_PRAGMA_PACK_HPPA */
>
> /* Define to 1 if you have the <pwd.h> header file. */
> #define HAVE_PWD_H 1
>
> /* readdir_r takes 2 arguments */
> /* #undef HAVE_READDIR_R_2 */
>
> /* readdir_r takes 3 arguments */
> /* #undef HAVE_READDIR_R_3 */
>
> /* Define to 1 if you have the `recvmsg' function. */
> /* #define HAVE_RECVMSG 1 */
>
> /* have resolv.h */
> /* #undef HAVE_RESOLV_H */
>
> /* Define signed right shift implementation */
> #define HAVE_SAR 1
>
> /* Define to 1 if you have the `sendmsg' function. */
> /* #define HAVE_SENDMSG 1 */
>
> /* Define to 1 if you have the `setgroups' function. */
> /* #define HAVE_SETGROUPS 1 */
>
> /* Define to 1 if you have the `setsid' function. */
> /* #define HAVE_SETSID 1 */
>
> /* Define to 1 if you have the `snprintf' function. */
> #define HAVE_SNPRINTF 1
>
> /* Define to 1 if you have the <stdbool.h> header file. */
> #define HAVE_STDBOOL_H 1
>
> /* Define to 1 if you have the <stdint.h> header file. */
> #define HAVE_STDINT_H 1
>
> /* Define to 1 if you have the <stdlib.h> header file. */
> #define HAVE_STDLIB_H 1
>
> /* Define to 1 if you have the `strerror_r' function. */
> /* #define HAVE_STRERROR_R 1 */
>
> /* Define to 1 if you have the <strings.h> header file. */
> /* #define HAVE_STRINGS_H 1 */
>
> /* Define to 1 if you have the <string.h> header file. */
> #define HAVE_STRING_H 1
>
> /* Define to 1 if you have the `strlcat' function. */
> /* #undef HAVE_STRLCAT */
>
> /* Define to 1 if you have the `strlcpy' function. */
> /* #undef HAVE_STRLCPY */
>
> /* Define to 1 if you have the <sys/filio.h> header file. */
> /* #undef HAVE_SYS_FILIO_H */
>
> /* Define to 1 if you have the <sys/inttypes.h> header file. */
> /* #undef HAVE_SYS_INTTYPES_H */
>
> /* Define to 1 if you have the <sys/int_types.h> header file. */
> /* #undef HAVE_SYS_INT_TYPES_H */
>
> /* Define to 1 if you have the <sys/mman.h> header file. */
> #define HAVE_SYS_MMAN_H 1
>
> /* Define to 1 if you have the <sys/param.h> header file. */
> #define HAVE_SYS_PARAM_H 1
>
> /* "have <sys/select.h>" */
> /* #undef HAVE_SYS_SELECT_H */
>
> /* Define to 1 if you have the <sys/stat.h> header file. */
> #define HAVE_SYS_STAT_H 1
>
> /* Define to 1 if you have the <sys/types.h> header file. */
> #define HAVE_SYS_TYPES_H 1
>
> /* Define to 1 if you have the <sys/uio.h> header file. */
> /* #define HAVE_SYS_UIO_H 1 */
>
> /* Define to 1 if you have the <tcpd.h> header file. */
> /* #undef HAVE_TCPD_H */
>
> /* Define to 1 if you have the <termios.h> header file. */
> /* #define HAVE_TERMIOS_H 1 */
>
> /* Define to 1 if you have the <unistd.h> header file. */
> #define HAVE_UNISTD_H 1
>
> /* Define to 1 if you have the `vsnprintf' function. */
> #define HAVE_VSNPRINTF 1
>
> /* zlib installed */
> #define HAVE_ZLIB_H 1
>
> /* Early Linux doesn't set cmsg fields */
> /* #undef INCOMPLETE_CMSG */
>
> /* bzip funtions do not have bz2 prefix */
> /* #undef NOBZ2PREFIX */
>
> /* "no fd_set" */
> /* #undef NO_FD_SET */
>
> /* Name of package */
> #define PACKAGE "clamav"
>
> /* Define to the address where bug reports for this package should  
> be sent. */
> #define PACKAGE_BUGREPORT ""
>
> /* Define to the full name of this package. */
> #define PACKAGE_NAME ""
>
> /* Define to the full name and version of this package. */
> #define PACKAGE_STRING ""
>
> /* Define to the one symbol short name of this package. */
> #define PACKAGE_TARNAME ""
>
> /* Define to the version of this package. */
> #define PACKAGE_VERSION ""
>
> /* scan buffer size */
> #define SCANBUFF 131072
>
> /* location of Sendmail binary */
> /* #undef SENDMAIL_BIN */
>
> /* major version of Sendmail */
> /* #undef SENDMAIL_VERSION_A */
>
> /* minor version of Sendmail */
> /* #undef SENDMAIL_VERSION_B */
>
> /* subversion of Sendmail */
> /* #undef SENDMAIL_VERSION_C */
>
> /* Define to 1 if the `setpgrp' function takes no argument. */
> #define SETPGRP_VOID 1
>
> #if 0
> /* lets assume system has proper stdint that defines uintX_t. */
> /* The number of bytes in type int */
> /* #define SIZEOF_INT 4 */
>
> /* The number of bytes in type long */
> #define SIZEOF_LONG 8
>
> /* The number of bytes in type long long */
> #define SIZEOF_LONG_LONG 8
>
> /* The number of bytes in type short */
> #define SIZEOF_SHORT 2
> #endif
>
> /* Define to 1 if you have the ANSI C header files. */
> #define STDC_HEADERS 1
>
> /* use syslog */
> /* #define USE_SYSLOG 1 */
>
> /* Version number of package */
> #define VERSION "devel-20071218"
>
> /* tcpwrappers support */
> /* #undef WITH_TCPWRAP */
>
> /* endianess */
> /* #define WORDS_BIGENDIAN 0 */
>
> /* Define to 1 to make fseeko visible on some hosts (e.g. glibc  
> 2.2). */
> /* #undef _LARGEFILE_SOURCE */
>
> /* POSIX compatibility */
> /* #undef _POSIX_PII_SOCKET */
>
> /* thread safe */
> /* #undef _REENTRANT */
>
> /* Define to empty if `const' does not conform to ANSI C. */
> /* #undef const */
>
> /* Define to `__inline__' or `__inline' if that's what the C compiler
>    calls it, or to nothing if 'inline' is not supported under any  
> name.  */
> #ifndef __cplusplus
> /* #undef inline */
> #endif
>
> /* Define to `long int' if <sys/types.h> does not define. */
> /* #undef off_t */
>
> /* Define to "int" if <sys/socket.h> does not define. */
> /* #undef socklen_t */<filterdiff.sh><header_rename.sh>LEVEL  
> = ../../../
> #RUN_OPTIONS     =
>
> Source = $(addprefix libclamav_, \
> aspack.c autoit.c binhex.c blob.c cab.c chmunpack.c cvd.c dconf.c  
> dsig.c\
> elf.c entconv.c filetypes.c fsg.c hashtab.c htmlnorm.c\
> is_tar.c jscript.c line.c lockdb.c matcher-ac.c matcher-bm.c\
> matcher.c mbox.c md5.c message.c mew.c msexpand.c mspack.c  
> ole2_extract.c\
> others.c packlibs.c pdf.c pe.c petite.c phishcheck.c  
> phish_domaincheck_db.c phish_whitelist.c\
> pst.c readdb.c rebuildpe.c regex_list.c rtf.c scanners.c sis.c  
> snprintf.c special.c spin.c str.c suecrypt.c\
> table.c text.c tnef.c unarj.c unsp.c untar.c unzip.c upack.c  
> upx.c uuencode.c vba_extract.c wwunpack.c yc.c)\
> $(addprefix clamscan_, \
>   clamscan.c manager.c others.c treewalk.c)\
> $(addprefix shared_, \
> cdiff.c cfgparser.c getopt.c misc.c network.c options.c output.c  
> sha256.c)\
> $(addprefix libclamav_regex_, \
> regerror.c, regfree.c, \
> regcomp.c,  regexec.c, strlcpy.c)\
> $(addprefix libclamav_nsis_, \
> nulsft.c, bzlib.c, infblock.c, LZMADecode.c )
> #        SVN version has these:
> # inflate64.c lzma_iface.c
> # $(addprefix libclamav_lzma_, \
> # LzmaStateDecode.c) \
>
> PROG = clamscan
> CFLAGS += -DHAVE_CONFIG_H -Iinclude/libclamav/regex/ -Iinclude/
> libclamav/nsis -Iinclude/libclamav/lzma -Iinclude/libclamav -
> Iinclude/shared -Iinclude/clamscan/ -Iinclude/
>
> LDFLAGS = -lz
> RUN_OPTIONS = --debug --no-summary -ddbdir -r inputs/*
>
> include $(LEVEL)/Makefile.config
>
>
> # for ClamAV these are in clamav-config.h, but since we can't run  
> configure, we have to define them here
>
>
> # -- OS macros --
> #  It is especially important to get this correctly defined for  
> windows.
>
> ifeq ($(OS),Darwin)
>    CFLAGS += -DC_DARWIN
> endif
> ifeq ($(OS),AIX)
>    CFLAGS += -DC_AIX
> endif
> ifeq ($(OS), IRIX)
>    CFLAGS += -DC_IRIX
> endif
> ifeq ($(OS), Cygwin)
>    CFLAGS += -DC_CYGWIN
> endif
> ifeq ($(OS), FreeBSD)
>    CFLAGS += -DC_BSD
> endif
> ifeq ($(OS), OpenBSD)
>    CFLAGS += -DC_BSD
> endif
> ifeq ($(OS), NetBSD)
>    CFLAGS += -DC_BSD
> endif
> ifeq ($(OS), HP-UX)
>    CFLAGS += -DC_HPUX
> endif
> ifeq ($(OS), Interix)
>   CFLAGS += -DC_INTERIX -DC_WINDOWS
> endif
> ifeq ($(OS), Win32)
>   CFLAGS += -DC_WINDOWS
> endif
> ifeq ($(OS), mingw)
>   CFLAGS += -DC_WINDOWS
> endif
> ifeq ($(OS), Linux)
>   CFLAGs += -DC_LINUX
> endif
>
> # -- except ARM all arches have WORDS_BIGENDIAN same as ENDIAN.
> #  for ARM we'd need a runtime autoconf check to detect.
> #  Only affects autoit.c, not defining this macro will partially  
> disable it.
>
> ifneq ($(ARCH),ARM)
> ifeq ($(ENDIAN),little)
>    CFLAGS += -DFPU_WORDS_BIGENDIAN=0
> endif
> ifeq ($(ENDIAN),big)
>    CFLAGS += -DFPU_WORDS_BIGENDIAN=1
> endif
> endif
>
>
> # -- endianness detection --
> #  It is important to get this correctly, especially for Sparc.
> #  If arch is little endian the code possibly does unaligned  
> accesses, that would
> #  cause a SIGBUS on Sparc.
>
> ifeq ($(ENDIAN),little)
>    CFLAGS += -DWORDS_BIGENDIAN=0
> endif
> ifeq ($(ENDIAN),big)
>    CFLAGS += -DWORDS_BIGENDIAN=1
> endif
>
> include ../../Makefile.multisrc
> #must be after all includes
> # temp files have random names, filter them
> DIFFPROG := $(PROGDIR)/DiffOutput.sh "./filterdiff.sh"
>
> <prepare.sh>Building ClamAV (www.clamav.net) for llvm's testsuite.
>
> To get sources from clamav's repository
> (currently from 0.92 stable version, you can edit the tag in  
> prepare.sh)
>
> $ ./prepare.sh checkout
> $ ./prepare.sh copy
> $ ./prepare.sh getdb
>
> Provided files:
> prepare.sh
> rename.sh: used by prepare.sh
> header_rename.sh: used by prepare.sh
> clamav-config.h: minimal config header, so we don't have to run  
> autoconf
> Makefile: integrate ClamAV into LLVM-testsuite's build-system
> filterdiff.sh: compare --debug output to test code generation  
> correctness
>
> Important to know:
>
> The directory inputs/ contains files (or symlinks to) to be scanned  
> during the test.
> These can be any files, but they must be the same each time you run
> the test, to ensure consistency of results.
>
> The directory dbdir/ contains the virus database. You get an  
> initial copy with the
> prepare.sh.
> Note, that the recommended way to update is via freshclam(1).  
> Updating the database
> is not important for the test-suite.
> When you import a new version of ClamAV into the testsuite it is  
> recommended to
> use latest DB however.
>
> When execute clamscan creates files in the system tmp directory  
> (usually /tmp).
> Watch disk space!
>
>
>
> BUGREPORTS
> ----------
> If you encounter problems with ClamAV itself, please try to  
> reproduce the problem with
> clamav built from latest stable available on www.clamav.net.
>
> You can report bugs on http://bugs.clamav.net
>
> If you haven't tried to reproduce problem with the original clamav,
> please add a reference to the LLVM bugreport, and a descriptive  
> text in subject stating
> it is related to LLVM testsuite.
>
> For bugs opened on LLVM bugzilla regarding ClamAV testsuite failures
> (that are not due to bugs in LLVM), please CC: edwin at clamav dot net
>
> <rename.sh>.:
> clamav-config.h
> clamscan_clamscan.c
> clamscan_manager.c
> clamscan_others.c
> clamscan_treewalk.c
> COPYING
> dbdir
> engine.c
> filterdiff.sh
> header_rename.sh
> include
> inputs
> libclamav_aspack.c
> libclamav_autoit.c
> libclamav_binhex.c
> libclamav_blob.c
> libclamav_cab.c
> libclamav_chmunpack.c
> libclamav_cvd.c
> libclamav_dconf.c
> libclamav_dsig.c
> libclamav_elf.c
> libclamav_entconv.c
> libclamav_filetypes.c
> libclamav_fsg.c
> libclamav_hashtab.c
> libclamav_htmlnorm.c
> libclamav_is_tar.c
> libclamav_jscript.c
> libclamav_line.c
> libclamav_lockdb.c
> libclamav_matcher-ac.c
> libclamav_matcher-bm.c
> libclamav_matcher.c
> libclamav_mbox.c
> libclamav_md5.c
> libclamav_message.c
> libclamav_mew.c
> libclamav_msexpand.c
> libclamav_mspack.c
> libclamav_nsis_bzlib.c
> libclamav_nsis_infblock.c
> libclamav_nsis_LZMADecode.c
> libclamav_nsis_nulsft.c
> libclamav_ole2_extract.c
> libclamav_others.c
> libclamav_packlibs.c
> libclamav_pdf.c
> libclamav_pe.c
> libclamav_petite.c
> libclamav_phishcheck.c
> libclamav_phish_domaincheck_db.c
> libclamav_phish_whitelist.c
> libclamav_pst.c
> libclamav_readdb.c
> libclamav_rebuildpe.c
> libclamav_regex_list.c
> libclamav_regex_regcomp.c
> libclamav_regex_regerror.c
> libclamav_regex_regexec.c
> libclamav_regex_regfree.c
> libclamav_regex_strlcpy.c
> libclamav_rtf.c
> libclamav_scanners.c
> libclamav_sis.c
> libclamav_snprintf.c
> libclamav_special.c
> libclamav_spin.c
> libclamav_str.c
> libclamav_suecrypt.c
> libclamav_table.c
> libclamav_text.c
> libclamav_tnef.c
> libclamav_unarj.c
> libclamav_unsp.c
> libclamav_untar.c
> libclamav_unzip.c
> libclamav_upack.c
> libclamav_upx.c
> libclamav_uuencode.c
> libclamav_vba_extract.c
> libclamav_wwunpack.c
> libclamav_yc.c
> Makefile
> Output
> prepare.sh
> README.LLVM-tests
> rename.sh
> report.nightly.raw.out
> report.nightly.txt
> shared_cdiff.c
> shared_cfgparser.c
> shared_getopt.c
> shared_misc.c
> shared_network.c
> shared_options.c
> shared_output.c
> shared_sha256.c
> target.h
> test_farm_farm.c
> test_libclamav_libclamav.c
> test_mbox_debugm.c
> test_pe_debugpe.c
> tmp_new
> tmp_reference
>
> ./dbdir:
> daily.cvd
> main.cvd
>
> ./include:
> clamscan
> libclamav
> shared
>
> ./include/clamscan:
> clamscan_opt.h
> global.h
> manager.h
> others.h
> treewalk.h
>
> ./include/libclamav:
> aspack.h
> autoit.h
> binhex.h
> blob.h
> cab.h
> chmunpack.h
> clamav.h
> cltypes.h
> cvd.h
> dconf.h
> dsig.h
> elf.h
> encoding_aliases.h
> entconv.h
> entitylist.h
> execs.h
> filetypes.h
> fsg.h
> hashtab.h
> htmlnorm.h
> iana_tld.h
> is_tar.h
> jscript.h
> line.h
> lockdb.h
> matcher-ac.h
> matcher-bm.h
> matcher.h
> mbox.h
> md5.h
> message.h
> mew.h
> msexpand.h
> mspack.h
> nsis
> ole2_extract.h
> others.h
> packlibs.h
> pdf.h
> pe.h
> petite.h
> phishcheck.h
> phish_domaincheck_db.h
> phish_whitelist.h
> pst.h
> readdb.h
> rebuildpe.h
> regex
> regex_list.h
> rtf.h
> scanners.h
> sis.h
> snprintf.h
> special.h
> spin.h
> str.h
> suecrypt.h
> table.h
> text.h
> tnef.h
> unarj.h
> unsp.h
> untar.h
> unzip.h
> upack.h
> upx.h
> uuencode.h
> vba_extract.h
> wwunpack.h
> yc.h
>
> ./include/libclamav/nsis:
> bzlib_private.h
> LZMADecode.h
> nsis_bzlib.h
> nsis_zconf.h
> nsis_zlib.h
> nsis_zutil.h
> nulsft.h
>
> ./include/libclamav/regex:
> cclass.h
> cname.h
> regex2.h
> regex.h
> utils.h
>
> ./include/shared:
> cdiff.h
> cfgparser.h
> getopt.h
> misc.h
> network.h
> options.h
> output.h
> sha256.h
>
> ./inputs:
> clam.cab
> clamdoc.pdf
> clam.exe
> clam.exe.bz2
> clam-v2.rar
> clam-v3.rar
> clam.zip
> dbdir
> docs
> large.pcm
> mei16v2.m2v
> README
> rtf-test
> tune
>
> ./inputs/rtf-test:
> Doc11.rtf
> Doc1.rtf
> Doc22.rtf
> Doc2.rtf
> doc3.rtf
> docCLAMexe.rtf
> rtf1.rtf
> rtf-novirus.rtf
>
> ./Output:
> clamscan.cbe
> clamscan.cbe.c
> clamscan_clamscan.bc
> clamscan_clamscan.o
> clamscan.diff-cbe
> clamscan.diff-llc
> clamscan.exe-cbe
> clamscan.exe-llc
> clamscan.linked.bc
> clamscan.linked.bc.info
> clamscan.linked.rbc
> clamscan.llc
> clamscan.llc.s
> clamscan.llvm
> clamscan.llvm.bc
> clamscan_manager.bc
> clamscan_manager.o
> clamscan.native
> clamscan.nightly.cbe.report.txt
> clamscan.nightly.compile.report.txt
> clamscan.nightly.jit.report.txt
> clamscan.nightly.llc.report.txt
> clamscan.nightly.llc.report.txt.info
> clamscan.nightly.nat.report.txt
> clamscan.nightly.report.txt
> clamscan_others.bc
> clamscan_others.o
> clamscan.out-cbe
> clamscan.out-cbe.time
> clamscan.out-jit
> clamscan.out-jit.time
> clamscan.out-llc
> clamscan.out-llc.time
> clamscan.out-nat
> clamscan.out-nat.time
> clamscan_treewalk.bc
> clamscan_treewalk.o
> libclamav_aspack.bc
> libclamav_aspack.o
> libclamav_autoit.bc
> libclamav_autoit.o
> libclamav_binhex.bc
> libclamav_binhex.o
> libclamav_blob.bc
> libclamav_blob.o
> libclamav_cab.bc
> libclamav_cab.o
> libclamav_chmunpack.bc
> libclamav_chmunpack.o
> libclamav_cvd.bc
> libclamav_cvd.o
> libclamav_dconf.bc
> libclamav_dconf.o
> libclamav_dsig.bc
> libclamav_dsig.o
> libclamav_elf.bc
> libclamav_elf.o
> libclamav_entconv.bc
> libclamav_entconv.o
> libclamav_filetypes.bc
> libclamav_filetypes.o
> libclamav_fsg.bc
> libclamav_fsg.o
> libclamav_hashtab.bc
> libclamav_hashtab.o
> libclamav_htmlnorm.bc
> libclamav_htmlnorm.o
> libclamav_is_tar.bc
> libclamav_is_tar.o
> libclamav_jscript.bc
> libclamav_jscript.o
> libclamav_line.bc
> libclamav_line.o
> libclamav_lockdb.bc
> libclamav_lockdb.o
> libclamav_matcher-ac.bc
> libclamav_matcher-ac.o
> libclamav_matcher.bc
> libclamav_matcher-bm.bc
> libclamav_matcher-bm.o
> libclamav_matcher.o
> libclamav_mbox.bc
> libclamav_mbox.o
> libclamav_md5.bc
> libclamav_md5.o
> libclamav_message.bc
> libclamav_message.o
> libclamav_mew.bc
> libclamav_mew.o
> libclamav_msexpand.bc
> libclamav_msexpand.o
> libclamav_mspack.bc
> libclamav_mspack.o
> libclamav_nsis_bzlib.bc
> libclamav_nsis_bzlib.o
> libclamav_nsis_infblock.bc
> libclamav_nsis_infblock.o
> libclamav_nsis_LZMADecode.bc
> libclamav_nsis_LZMADecode.o
> libclamav_nsis_nulsft.bc
> libclamav_nsis_nulsft.o
> libclamav_ole2_extract.bc
> libclamav_ole2_extract.o
> libclamav_others.bc
> libclamav_others.o
> libclamav_packlibs.bc
> libclamav_packlibs.o
> libclamav_pdf.bc
> libclamav_pdf.o
> libclamav_pe.bc
> libclamav_pe.o
> libclamav_petite.bc
> libclamav_petite.o
> libclamav_phishcheck.bc
> libclamav_phishcheck.o
> libclamav_phish_domaincheck_db.bc
> libclamav_phish_domaincheck_db.o
> libclamav_phish_whitelist.bc
> libclamav_phish_whitelist.o
> libclamav_pst.bc
> libclamav_pst.o
> libclamav_readdb.bc
> libclamav_readdb.o
> libclamav_rebuildpe.bc
> libclamav_rebuildpe.o
> libclamav_regex_list.bc
> libclamav_regex_list.o
> libclamav_regex_regcomp.bc
> libclamav_regex_regcomp.o
> libclamav_regex_regerror.bc
> libclamav_regex_regerror.o
> libclamav_regex_regexec.bc
> libclamav_regex_regexec.o
> libclamav_regex_regfree.bc
> libclamav_regex_regfree.o
> libclamav_regex_strlcpy.bc
> libclamav_regex_strlcpy.o
> libclamav_rtf.bc
> libclamav_rtf.o
> libclamav_scanners.bc
> libclamav_scanners.o
> libclamav_sis.bc
> libclamav_sis.o
> libclamav_snprintf.bc
> libclamav_snprintf.o
> libclamav_special.bc
> libclamav_special.o
> libclamav_spin.bc
> libclamav_spin.o
> libclamav_str.bc
> libclamav_str.o
> libclamav_suecrypt.bc
> libclamav_suecrypt.o
> libclamav_table.bc
> libclamav_table.o
> libclamav_text.bc
> libclamav_text.o
> libclamav_tnef.bc
> libclamav_tnef.o
> libclamav_unarj.bc
> libclamav_unarj.o
> libclamav_unsp.bc
> libclamav_unsp.o
> libclamav_untar.bc
> libclamav_untar.o
> libclamav_unzip.bc
> libclamav_unzip.o
> libclamav_upack.bc
> libclamav_upack.o
> libclamav_upx.bc
> libclamav_upx.o
> libclamav_uuencode.bc
> libclamav_uuencode.o
> libclamav_vba_extract.bc
> libclamav_vba_extract.o
> libclamav_wwunpack.bc
> libclamav_wwunpack.o
> libclamav_yc.bc
> libclamav_yc.o
> shared_cdiff.bc
> shared_cdiff.o
> shared_cfgparser.bc
> shared_cfgparser.o
> shared_getopt.bc
> shared_getopt.o
> shared_misc.bc
> shared_misc.o
> shared_network.bc
> shared_network.o
> shared_options.bc
> shared_options.o
> shared_output.bc
> shared_output.o
> shared_sha256.bc
> shared_sha256.o
> _______________________________________________
> LLVM Developers mailing list
> [hidden email]         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev


_______________________________________________
LLVM Developers mailing list
[hidden email]         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
Reply | Threaded
Open this post in threaded view
|

Re: Adding ClamAV to the llvm testsuite (long)

Török Edwin
Evan Cheng wrote:
> Hi Edwin,
>
> I ran into two problems.
>
> 1. Using your config file and Makefile, I ran into issue compiling  
> with gcc:
>
> Looks like it's a makefile issue?
>  

Should be solved with the new flattened source layout and Makefile (-I.
was missing)

> 2. prepare.sh getdb doesn't work for me because I don't have wget.
>
> Is it possible for you to get the complete source in a compilable  
> state and send me a tar file instead?
>  

Yes, I have uploaded the .tar.gz here:
http://edwintorok.googlepages.com/ClamAV-srcflat.tar.gz
[inputs dir contains some symlink, place ClamAV dir in
llvm/projects/llvm-test/MultiSource/Applications to make
links point to right place]

You also need to download main.cvd and place it in the dbdir folder:
http://database.clamav.net/main.cvd

Let me know if you encounter any problems.
> A request: If it's possible, can you flatten the entire tree? That  
> is, everything in the top level directory?
>  
I have flattened the tree for the sources, but left the data in a
different dir (dbdir, and inputs).
Is this ok?

Thanks,
Edwin
_______________________________________________
LLVM Developers mailing list
[hidden email]         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
Reply | Threaded
Open this post in threaded view
|

Re: Adding ClamAV to the llvm testsuite (long)

Török Edwin
Török Edwin wrote:
> Yes, I have uploaded the .tar.gz here:
> http://edwintorok.googlepages.com/ClamAV-srcflat.tar.gz
> [inputs dir contains some symlink, place ClamAV dir in
> llvm/projects/llvm-test/MultiSource/Applications to make
> links point to right place]
>
>  

Hi,

Because llvm bug #1730 got fixed, this testcase can run under with the
JIT on x86-64 :).
I have attached the updated filterdiff.sh script (JIT has extra file
descriptor open), and now all tests pass.

I've also uploaded the new tarball here:
http://edwintorok.googlepages.com/ClamAV-srcflat2.tar.gz

TEST-PASS: compile /MultiSource/Applications/ClamAV/clamscan
TEST-RESULT-compile:   Total Execution Time: 6.0010 seconds (6.7158 wall
clock)

TEST-RESULT-compile: 1728712 Output/clamscan.llvm.bc


TEST-RESULT-nat-time: program 12.880000

TEST-PASS: llc /MultiSource/Applications/ClamAV/clamscan
TEST-RESULT-llc:   Total Execution Time: 7.3758 seconds (7.7852 wall
clock)
TEST-RESULT-llc-time: program 13.940000


TEST-PASS: jit /MultiSource/Applications/ClamAV/clamscan
TEST-RESULT-jit-time: program 18.320000

TEST-RESULT-jit-comptime:

TEST-PASS: cbe /MultiSource/Applications/ClamAV/clamscan
TEST-RESULT-cbe-time: program 12.750000


Best regards,
--Edwin

_______________________________________________
LLVM Developers mailing list
[hidden email]         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

filterdiff.sh (822 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Adding ClamAV to the llvm testsuite (long)

Evan Cheng-2
Hi,

We are getting closer.

1. In Makefile, all the references to CFLAGS should be CPPFLAGS instead.
2. filterdiff.sh uses sed -re. This causes a problem on Mac OS X where  
-E means using extended regular expression, not -r.

sed: illegal option -- r
usage: sed script [-Ealn] [-i extension] [file ...]
        sed [-Ealn] [-i extension] [-e script] ... [-f  
script_file] ... [file ...]

Can this be changed?

3. This triggers a optimizer bug:
/Users/echeng/LLVM/llvm/Release/bin/opt -std-compile-opts -time-passes  
-info-output-file=/Volumes/Muggles/LLVM/llvm/projects/llvm-test/
MultiSource/Applications/ClamAV/Out\
put/clamscan.linked.bc.info   Output/clamscan.linked.rbc -o Output/
clamscan.linked.bc -f
Assertion failed: (getLoopLatch() && "Loop latch is missing"),  
function verifyLoop, file /Volumes/Muggles/LLVM/llvm/include/llvm/
Analysis/LoopInfo.h, line 517.

I'll file a bug on this.

Evan


On Jan 10, 2008, at 2:41 AM, Török Edwin wrote:

> Török Edwin wrote:
>> Yes, I have uploaded the .tar.gz here:
>> http://edwintorok.googlepages.com/ClamAV-srcflat.tar.gz
>> [inputs dir contains some symlink, place ClamAV dir in
>> llvm/projects/llvm-test/MultiSource/Applications to make
>> links point to right place]
>>
>>
>
> Hi,
>
> Because llvm bug #1730 got fixed, this testcase can run under with the
> JIT on x86-64 :).
> I have attached the updated filterdiff.sh script (JIT has extra file
> descriptor open), and now all tests pass.
>
> I've also uploaded the new tarball here:
> http://edwintorok.googlepages.com/ClamAV-srcflat2.tar.gz
>
> TEST-PASS: compile /MultiSource/Applications/ClamAV/clamscan
> TEST-RESULT-compile:   Total Execution Time: 6.0010 seconds (6.7158  
> wall
> clock)
>
> TEST-RESULT-compile: 1728712 Output/clamscan.llvm.bc
>
>
> TEST-RESULT-nat-time: program 12.880000
>
> TEST-PASS: llc /MultiSource/Applications/ClamAV/clamscan
> TEST-RESULT-llc:   Total Execution Time: 7.3758 seconds (7.7852 wall
> clock)
> TEST-RESULT-llc-time: program 13.940000
>
>
> TEST-PASS: jit /MultiSource/Applications/ClamAV/clamscan
> TEST-RESULT-jit-time: program 18.320000
>
> TEST-RESULT-jit-comptime:
>
> TEST-PASS: cbe /MultiSource/Applications/ClamAV/clamscan
> TEST-RESULT-cbe-time: program 12.750000
>
>
> Best regards,
> --Edwin
> <filterdiff.sh>_______________________________________________
> LLVM Developers mailing list
> [hidden email]         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev


_______________________________________________
LLVM Developers mailing list
[hidden email]         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
Reply | Threaded
Open this post in threaded view
|

Re: Adding ClamAV to the llvm testsuite (long)

Evan Cheng-2

On Jan 10, 2008, at 11:28 AM, Evan Cheng wrote:

> Hi,
>
> We are getting closer.
>
> 1. In Makefile, all the references to CFLAGS should be CPPFLAGS  
> instead.
> 2. filterdiff.sh uses sed -re. This causes a problem on Mac OS X where
> -E means using extended regular expression, not -r.
>
> sed: illegal option -- r
> usage: sed script [-Ealn] [-i extension] [file ...]
>        sed [-Ealn] [-i extension] [-e script] ... [-f
> script_file] ... [file ...]
>
> Can this be changed?

Looks like the filter might not work correctly for all platforms (at  
least that appears to be the case on Mac OS X). Can we simply disable  
those debug outputs?

Thanks,

Evan

>
>
> 3. This triggers a optimizer bug:
> /Users/echeng/LLVM/llvm/Release/bin/opt -std-compile-opts -time-passes
> -info-output-file=/Volumes/Muggles/LLVM/llvm/projects/llvm-test/
> MultiSource/Applications/ClamAV/Out\
> put/clamscan.linked.bc.info   Output/clamscan.linked.rbc -o Output/
> clamscan.linked.bc -f
> Assertion failed: (getLoopLatch() && "Loop latch is missing"),
> function verifyLoop, file /Volumes/Muggles/LLVM/llvm/include/llvm/
> Analysis/LoopInfo.h, line 517.
>
> I'll file a bug on this.
>
> Evan
>
>
> On Jan 10, 2008, at 2:41 AM, Török Edwin wrote:
>
>> Török Edwin wrote:
>>> Yes, I have uploaded the .tar.gz here:
>>> http://edwintorok.googlepages.com/ClamAV-srcflat.tar.gz
>>> [inputs dir contains some symlink, place ClamAV dir in
>>> llvm/projects/llvm-test/MultiSource/Applications to make
>>> links point to right place]
>>>
>>>
>>
>> Hi,
>>
>> Because llvm bug #1730 got fixed, this testcase can run under with  
>> the
>> JIT on x86-64 :).
>> I have attached the updated filterdiff.sh script (JIT has extra file
>> descriptor open), and now all tests pass.
>>
>> I've also uploaded the new tarball here:
>> http://edwintorok.googlepages.com/ClamAV-srcflat2.tar.gz
>>
>> TEST-PASS: compile /MultiSource/Applications/ClamAV/clamscan
>> TEST-RESULT-compile:   Total Execution Time: 6.0010 seconds (6.7158
>> wall
>> clock)
>>
>> TEST-RESULT-compile: 1728712 Output/clamscan.llvm.bc
>>
>>
>> TEST-RESULT-nat-time: program 12.880000
>>
>> TEST-PASS: llc /MultiSource/Applications/ClamAV/clamscan
>> TEST-RESULT-llc:   Total Execution Time: 7.3758 seconds (7.7852 wall
>> clock)
>> TEST-RESULT-llc-time: program 13.940000
>>
>>
>> TEST-PASS: jit /MultiSource/Applications/ClamAV/clamscan
>> TEST-RESULT-jit-time: program 18.320000
>>
>> TEST-RESULT-jit-comptime:
>>
>> TEST-PASS: cbe /MultiSource/Applications/ClamAV/clamscan
>> TEST-RESULT-cbe-time: program 12.750000
>>
>>
>> Best regards,
>> --Edwin
>> <filterdiff.sh>_______________________________________________
>> LLVM Developers mailing list
>> [hidden email]         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>
> _______________________________________________
> LLVM Developers mailing list
> [hidden email]         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev


_______________________________________________
LLVM Developers mailing list
[hidden email]         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
Reply | Threaded
Open this post in threaded view
|

Re: Adding ClamAV to the llvm testsuite (long)

Török Edwin
In reply to this post by Evan Cheng-2
Evan Cheng wrote:
> Hi,
>  

Hi Evan,

> We are getting closer.
>  

That is good news.

> 1. In Makefile, all the references to CFLAGS should be CPPFLAGS instead.
>  

Done, and  attached.

> 2. filterdiff.sh uses sed -re. This causes a problem on Mac OS X where  
> -E means using extended regular expression, not -r.
> Can this be changed?
>  

I'm not really familiar with sed's non-extended regular expression
syntax, I'll have to read its info page.
I can do that if you decide to keep filterdiff.sh, see below

Evan Cheng wrote:
> On Jan 10, 2008, at 11:28 AM, Evan Cheng wrote:
>
>  
> Looks like the filter might not work correctly for all platforms (at  
> least that appears to be the case on Mac OS X). Can we simply disable  
> those debug outputs?
>
> Thanks,
>  
If it is causing problems, yes.   Or maybe just enable it for certain OSes?
(where sed supports -re?)
How would you prefer?

> 3. This triggers a optimizer bug:
> [...]
>
> I'll file a bug on this.
>  
Ok, that bug didn't trigger for me,  is it x86/ppc specific? (I use x86-64).

--Edwin

LEVEL = ../../../
#RUN_OPTIONS     =

Source = $(addprefix libclamav_, \
         aspack.c autoit.c binhex.c blob.c cab.c chmunpack.c cvd.c dconf.c dsig.c\
         elf.c entconv.c filetypes.c fsg.c hashtab.c htmlnorm.c\
         is_tar.c jscript.c line.c lockdb.c matcher-ac.c matcher-bm.c\
         matcher.c mbox.c md5.c message.c mew.c msexpand.c mspack.c ole2_extract.c\
         others.c packlibs.c pdf.c pe.c petite.c phishcheck.c phish_domaincheck_db.c phish_whitelist.c\
         pst.c readdb.c rebuildpe.c regex_list.c rtf.c scanners.c sis.c snprintf.c special.c spin.c str.c suecrypt.c\
         table.c text.c tnef.c unarj.c unsp.c untar.c unzip.c upack.c upx.c uuencode.c vba_extract.c wwunpack.c yc.c)\
         $(addprefix clamscan_, \
  clamscan.c manager.c others.c treewalk.c)\
         $(addprefix shared_, \
         cdiff.c cfgparser.c getopt.c misc.c network.c options.c output.c sha256.c)\
         $(addprefix libclamav_regex_, \
         regerror.c, regfree.c, \
         regcomp.c,  regexec.c, strlcpy.c)\
         $(addprefix libclamav_nsis_, \
                 nulsft.c, bzlib.c, infblock.c, LZMADecode.c )
#        SVN version has these:
# inflate64.c lzma_iface.c
# $(addprefix libclamav_lzma_, \
# LzmaStateDecode.c) \

PROG = clamscan
CPPFLAGS += -DHAVE_CONFIG_H -I.
LDFLAGS = -lz
RUN_OPTIONS = --debug --no-summary -ddbdir -r inputs/*

include $(LEVEL)/Makefile.config


# for ClamAV these are in clamav-config.h, but since we can't run configure, we have to define them here


# -- OS macros --
#  It is especially important to get this correctly defined for windows.

ifeq ($(OS),Darwin)
   CFLAGS += -DC_DARWIN
endif
ifeq ($(OS),AIX)
   CFLAGS += -DC_AIX
endif
ifeq ($(OS), IRIX)
   CFLAGS += -DC_IRIX
endif
ifeq ($(OS), Cygwin)
   CFLAGS += -DC_CYGWIN
endif
ifeq ($(OS), FreeBSD)
   CFLAGS += -DC_BSD
endif
ifeq ($(OS), OpenBSD)
   CFLAGS += -DC_BSD
endif
ifeq ($(OS), NetBSD)
   CFLAGS += -DC_BSD
endif
ifeq ($(OS), HP-UX)
   CFLAGS += -DC_HPUX
endif
ifeq ($(OS), Interix)
  CFLAGS += -DC_INTERIX -DC_WINDOWS
endif
ifeq ($(OS), Win32)
  CFLAGS += -DC_WINDOWS
endif
ifeq ($(OS), mingw)
  CFLAGS += -DC_WINDOWS
endif
ifeq ($(OS), Linux)
  CFLAGs += -DC_LINUX
endif

# -- except ARM all arches have WORDS_BIGENDIAN same as ENDIAN.
#  for ARM we'd need a runtime autoconf check to detect.
#  Only affects autoit.c, not defining this macro will partially disable it.

ifneq ($(ARCH),ARM)
ifeq ($(ENDIAN),little)
   CFLAGS += -DFPU_WORDS_BIGENDIAN=0
endif
ifeq ($(ENDIAN),big)
   CFLAGS += -DFPU_WORDS_BIGENDIAN=1
endif
endif


# -- endianness detection --
#  It is important to get this correctly, especially for Sparc.
#  If arch is little endian the code possibly does unaligned accesses, that would
#  cause a SIGBUS on Sparc.

ifeq ($(ENDIAN),little)
   CFLAGS += -DWORDS_BIGENDIAN=0
endif
ifeq ($(ENDIAN),big)
   CFLAGS += -DWORDS_BIGENDIAN=1
endif

include ../../Makefile.multisrc
#must be after all includes
# temp files have random names, filter them
DIFFPROG := $(PROGDIR)/DiffOutput.sh "./filterdiff.sh"

EXTRA_LLI_OPTS += -load=libz
EXTRA_JIT_OPTS += -load=libz

_______________________________________________
LLVM Developers mailing list
[hidden email]         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
Reply | Threaded
Open this post in threaded view
|

Re: Adding ClamAV to the llvm testsuite (long)

Török Edwin
Török Edwin wrote:
> Done, and  attached.
>  
Attached the wrong file, sorry. Here is the correct one.

--Edwin

LEVEL = ../../../
#RUN_OPTIONS     =

Source = $(addprefix libclamav_, \
         aspack.c autoit.c binhex.c blob.c cab.c chmunpack.c cvd.c dconf.c dsig.c\
         elf.c entconv.c filetypes.c fsg.c hashtab.c htmlnorm.c\
         is_tar.c jscript.c line.c lockdb.c matcher-ac.c matcher-bm.c\
         matcher.c mbox.c md5.c message.c mew.c msexpand.c mspack.c ole2_extract.c\
         others.c packlibs.c pdf.c pe.c petite.c phishcheck.c phish_domaincheck_db.c phish_whitelist.c\
         pst.c readdb.c rebuildpe.c regex_list.c rtf.c scanners.c sis.c snprintf.c special.c spin.c str.c suecrypt.c\
         table.c text.c tnef.c unarj.c unsp.c untar.c unzip.c upack.c upx.c uuencode.c vba_extract.c wwunpack.c yc.c)\
         $(addprefix clamscan_, \
  clamscan.c manager.c others.c treewalk.c)\
         $(addprefix shared_, \
         cdiff.c cfgparser.c getopt.c misc.c network.c options.c output.c sha256.c)\
         $(addprefix libclamav_regex_, \
         regerror.c, regfree.c, \
         regcomp.c,  regexec.c, strlcpy.c)\
         $(addprefix libclamav_nsis_, \
                 nulsft.c, bzlib.c, infblock.c, LZMADecode.c )
#        SVN version has these:
# inflate64.c lzma_iface.c
# $(addprefix libclamav_lzma_, \
# LzmaStateDecode.c) \

PROG = clamscan
CPPFLAGS += -DHAVE_CONFIG_H -I.
LDFLAGS = -lz
RUN_OPTIONS = --debug --no-summary -ddbdir -r inputs/*

include $(LEVEL)/Makefile.config


# for ClamAV these are in clamav-config.h, but since we can't run configure, we have to define them here


# -- OS macros --
#  It is especially important to get this correctly defined for windows.

ifeq ($(OS),Darwin)
   CPPFLAGS += -DC_DARWIN
endif
ifeq ($(OS),AIX)
   CPPFLAGS += -DC_AIX
endif
ifeq ($(OS), IRIX)
   CPPFLAGS += -DC_IRIX
endif
ifeq ($(OS), Cygwin)
   CPPFLAGS += -DC_CYGWIN
endif
ifeq ($(OS), FreeBSD)
   CPPFLAGS += -DC_BSD
endif
ifeq ($(OS), OpenBSD)
   CPPFLAGS += -DC_BSD
endif
ifeq ($(OS), NetBSD)
   CPPFLAGS += -DC_BSD
endif
ifeq ($(OS), HP-UX)
   CPPFLAGS += -DC_HPUX
endif
ifeq ($(OS), Interix)
  CPPFLAGS += -DC_INTERIX -DC_WINDOWS
endif
ifeq ($(OS), Win32)
  CPPFLAGS += -DC_WINDOWS
endif
ifeq ($(OS), mingw)
  CPPFLAGS += -DC_WINDOWS
endif
ifeq ($(OS), Linux)
  CPPFLAGS += -DC_LINUX
endif

# -- except ARM all arches have WORDS_BIGENDIAN same as ENDIAN.
#  for ARM we'd need a runtime autoconf check to detect.
#  Only affects autoit.c, not defining this macro will partially disable it.

ifneq ($(ARCH),ARM)
ifeq ($(ENDIAN),little)
   CPPFLAGS += -DFPU_WORDS_BIGENDIAN=0
endif
ifeq ($(ENDIAN),big)
   CPPFLAGS += -DFPU_WORDS_BIGENDIAN=1
endif
endif


# -- endianness detection --
#  It is important to get this correctly, especially for Sparc.
#  If arch is little endian the code possibly does unaligned accesses, that would
#  cause a SIGBUS on Sparc.

ifeq ($(ENDIAN),little)
   CPPFLAGS += -DWORDS_BIGENDIAN=0
endif
ifeq ($(ENDIAN),big)
   CPPFLAGS += -DWORDS_BIGENDIAN=1
endif

include ../../Makefile.multisrc
#must be after all includes
# temp files have random names, filter them
DIFFPROG := $(PROGDIR)/DiffOutput.sh "./filterdiff.sh"

EXTRA_LLI_OPTS += -load=libz
EXTRA_JIT_OPTS += -load=libz

_______________________________________________
LLVM Developers mailing list
[hidden email]         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
Reply | Threaded
Open this post in threaded view
|

Re: Adding ClamAV to the llvm testsuite (long)

Chris Lattner
In reply to this post by Török Edwin
>> 2. filterdiff.sh uses sed -re. This causes a problem on Mac OS X  
>> where
>> -E means using extended regular expression, not -r.
>> Can this be changed?
>>
>
> I'm not really familiar with sed's non-extended regular expression
> syntax, I'll have to read its info page.
> I can do that if you decide to keep filterdiff.sh, see below

Why not just hack the program to not print out those file names?

-Chris
_______________________________________________
LLVM Developers mailing list
[hidden email]         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
Reply | Threaded
Open this post in threaded view
|

Re: Adding ClamAV to the llvm testsuite (long)

Török Edwin
Chris Lattner wrote:
> Why not just hack the program to not print out those file names?
>  
Thanks for the tip., I just hacked cli_dbgmsg to do a simple puts of its
format argument.
That should still make the output useful for the testsuite (ensure that
llvm compiled code takes same codepath as gcc compiled code),
and also avoid problems with filterdiff.sh.

Updated tarball is here, let me know what you think:

http://edwintorok.googlepages.com/ClamAV-srcflat3.tar.gz
md5sum:
22bb9be67418ea75da078080e0d396fc  ClamAV-srcflat3.tar.gz


Best regards,
Edwin
_______________________________________________
LLVM Developers mailing list
[hidden email]         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
Reply | Threaded
Open this post in threaded view
|

Re: Adding ClamAV to the llvm testsuite (long)

Evan Cheng-2
In reply to this post by Evan Cheng-2
I've filed
http://www.llvm.org/bugs/show_bug.cgi?id=1912
for the optimizer bug.

Evan

On Jan 10, 2008, at 11:28 AM, Evan Cheng wrote:

> Hi,
>
> We are getting closer.
>
> 1. In Makefile, all the references to CFLAGS should be CPPFLAGS  
> instead.
> 2. filterdiff.sh uses sed -re. This causes a problem on Mac OS X where
> -E means using extended regular expression, not -r.
>
> sed: illegal option -- r
> usage: sed script [-Ealn] [-i extension] [file ...]
>         sed [-Ealn] [-i extension] [-e script] ... [-f
> script_file] ... [file ...]
>
> Can this be changed?
>
> 3. This triggers a optimizer bug:
> /Users/echeng/LLVM/llvm/Release/bin/opt -std-compile-opts -time-passes
> -info-output-file=/Volumes/Muggles/LLVM/llvm/projects/llvm-test/
> MultiSource/Applications/ClamAV/Out\
> put/clamscan.linked.bc.info   Output/clamscan.linked.rbc -o Output/
> clamscan.linked.bc -f
> Assertion failed: (getLoopLatch() && "Loop latch is missing"),
> function verifyLoop, file /Volumes/Muggles/LLVM/llvm/include/llvm/
> Analysis/LoopInfo.h, line 517.
>
> I'll file a bug on this.
>
> Evan
>
>
> On Jan 10, 2008, at 2:41 AM, Török Edwin wrote:
>
>> Török Edwin wrote:
>>> Yes, I have uploaded the .tar.gz here:
>>> http://edwintorok.googlepages.com/ClamAV-srcflat.tar.gz
>>> [inputs dir contains some symlink, place ClamAV dir in
>>> llvm/projects/llvm-test/MultiSource/Applications to make
>>> links point to right place]
>>>
>>>
>>
>> Hi,
>>
>> Because llvm bug #1730 got fixed, this testcase can run under with  
>> the
>> JIT on x86-64 :).
>> I have attached the updated filterdiff.sh script (JIT has extra file
>> descriptor open), and now all tests pass.
>>
>> I've also uploaded the new tarball here:
>> http://edwintorok.googlepages.com/ClamAV-srcflat2.tar.gz
>>
>> TEST-PASS: compile /MultiSource/Applications/ClamAV/clamscan
>> TEST-RESULT-compile:   Total Execution Time: 6.0010 seconds (6.7158
>> wall
>> clock)
>>
>> TEST-RESULT-compile: 1728712 Output/clamscan.llvm.bc
>>
>>
>> TEST-RESULT-nat-time: program 12.880000
>>
>> TEST-PASS: llc /MultiSource/Applications/ClamAV/clamscan
>> TEST-RESULT-llc:   Total Execution Time: 7.3758 seconds (7.7852 wall
>> clock)
>> TEST-RESULT-llc-time: program 13.940000
>>
>>
>> TEST-PASS: jit /MultiSource/Applications/ClamAV/clamscan
>> TEST-RESULT-jit-time: program 18.320000
>>
>> TEST-RESULT-jit-comptime:
>>
>> TEST-PASS: cbe /MultiSource/Applications/ClamAV/clamscan
>> TEST-RESULT-cbe-time: program 12.750000
>>
>>
>> Best regards,
>> --Edwin
>> <filterdiff.sh>_______________________________________________
>> LLVM Developers mailing list
>> [hidden email]         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>
> _______________________________________________
> LLVM Developers mailing list
> [hidden email]         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev


_______________________________________________
LLVM Developers mailing list
[hidden email]         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
Reply | Threaded
Open this post in threaded view
|

Re: Adding ClamAV to the llvm testsuite (long)

Evan Cheng-2
Devang has fixed the bug. I've added ClamAV to the testsuite.

Thanks!

Evan

On Jan 13, 2008, at 7:33 PM, Evan Cheng wrote:

> I've filed
> http://www.llvm.org/bugs/show_bug.cgi?id=1912
> for the optimizer bug.
>
> Evan
>
> On Jan 10, 2008, at 11:28 AM, Evan Cheng wrote:
>
>> Hi,
>>
>> We are getting closer.
>>
>> 1. In Makefile, all the references to CFLAGS should be CPPFLAGS
>> instead.
>> 2. filterdiff.sh uses sed -re. This causes a problem on Mac OS X  
>> where
>> -E means using extended regular expression, not -r.
>>
>> sed: illegal option -- r
>> usage: sed script [-Ealn] [-i extension] [file ...]
>>        sed [-Ealn] [-i extension] [-e script] ... [-f
>> script_file] ... [file ...]
>>
>> Can this be changed?
>>
>> 3. This triggers a optimizer bug:
>> /Users/echeng/LLVM/llvm/Release/bin/opt -std-compile-opts -time-
>> passes
>> -info-output-file=/Volumes/Muggles/LLVM/llvm/projects/llvm-test/
>> MultiSource/Applications/ClamAV/Out\
>> put/clamscan.linked.bc.info   Output/clamscan.linked.rbc -o Output/
>> clamscan.linked.bc -f
>> Assertion failed: (getLoopLatch() && "Loop latch is missing"),
>> function verifyLoop, file /Volumes/Muggles/LLVM/llvm/include/llvm/
>> Analysis/LoopInfo.h, line 517.
>>
>> I'll file a bug on this.
>>
>> Evan
>>
>>
>> On Jan 10, 2008, at 2:41 AM, Török Edwin wrote:
>>
>>> Török Edwin wrote:
>>>> Yes, I have uploaded the .tar.gz here:
>>>> http://edwintorok.googlepages.com/ClamAV-srcflat.tar.gz
>>>> [inputs dir contains some symlink, place ClamAV dir in
>>>> llvm/projects/llvm-test/MultiSource/Applications to make
>>>> links point to right place]
>>>>
>>>>
>>>
>>> Hi,
>>>
>>> Because llvm bug #1730 got fixed, this testcase can run under with
>>> the
>>> JIT on x86-64 :).
>>> I have attached the updated filterdiff.sh script (JIT has extra file
>>> descriptor open), and now all tests pass.
>>>
>>> I've also uploaded the new tarball here:
>>> http://edwintorok.googlepages.com/ClamAV-srcflat2.tar.gz
>>>
>>> TEST-PASS: compile /MultiSource/Applications/ClamAV/clamscan
>>> TEST-RESULT-compile:   Total Execution Time: 6.0010 seconds (6.7158
>>> wall
>>> clock)
>>>
>>> TEST-RESULT-compile: 1728712 Output/clamscan.llvm.bc
>>>
>>>
>>> TEST-RESULT-nat-time: program 12.880000
>>>
>>> TEST-PASS: llc /MultiSource/Applications/ClamAV/clamscan
>>> TEST-RESULT-llc:   Total Execution Time: 7.3758 seconds (7.7852 wall
>>> clock)
>>> TEST-RESULT-llc-time: program 13.940000
>>>
>>>
>>> TEST-PASS: jit /MultiSource/Applications/ClamAV/clamscan
>>> TEST-RESULT-jit-time: program 18.320000
>>>
>>> TEST-RESULT-jit-comptime:
>>>
>>> TEST-PASS: cbe /MultiSource/Applications/ClamAV/clamscan
>>> TEST-RESULT-cbe-time: program 12.750000
>>>
>>>
>>> Best regards,
>>> --Edwin
>>> <filterdiff.sh>_______________________________________________
>>> LLVM Developers mailing list
>>> [hidden email]         http://llvm.cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> [hidden email]         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>
> _______________________________________________
> LLVM Developers mailing list
> [hidden email]         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev


_______________________________________________
LLVM Developers mailing list
[hidden email]         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
Reply | Threaded
Open this post in threaded view
|

Re: Adding ClamAV to the llvm testsuite (long)

Török Edwin
Evan Cheng wrote:
> Devang has fixed the bug. I've added ClamAV to the testsuite.
>
> Thanks!
>  

Thanks a lot!

I noticed that the runtime is ~0.27 seconds, if you want it to be higher
(to better highlight differences between native, llc, jit, cbe),
you can add some more files to inputs/.

For example symlinks to already existing large binary files in the
llvm-testsuite, such as: large.pcm, mei16v2.m2v, tune.


Best regards,
--Edwin
_______________________________________________
LLVM Developers mailing list
[hidden email]         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev