~ubuntu-branches/ubuntu/natty/clamav/natty-security

« back to all changes in this revision

Viewing changes to libclamav/c++/llvm/test/lib/llvm2cpp.exp

  • Committer: Bazaar Package Importer
  • Author(s): Scott Kitterman
  • Date: 2010-12-02 21:04:10 UTC
  • mfrom: (0.35.17 sid)
  • Revision ID: james.westby@ubuntu.com-20101202210410-ppgyckmylngsfa8o
Tags: 0.96.5+dfsg-1ubuntu1
* Merge from debian unstable.  Remaining changes:
  - Drop initial signature definitions from clamav-base
  - Drop build-dep on electric-fence (in Universe)
  - Add apparmor profiles for clamd and freshclam along with maintainer
    script changes

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# This file defines a tcl proc to assist with testing the llvm2cpp. There are
2
 
# no llvm2cpp specific test cases. Instead, it utilizes all the existing test
3
 
# cases and makes sure llvm2cpp can run them. The basic idea is that we find
4
 
# all the LLVM Assembly (*.ll) files, run llvm2cpp on them to generate a C++
5
 
# program, compile those programs, run them and see if what they produce matches
6
 
# the original input to llvm2cpp.
7
 
 
8
 
proc llvm2cpp-test { files } {
9
 
  global subdir llvmtoolsdir llvmlibsdir objdir srcdir objroot srcroot 
10
 
  set timeout 30
11
 
  set path [file join $objdir $subdir]
12
 
  set llc [file join $llvmtoolsdir llc ]
13
 
  set llvmas [file join $llvmtoolsdir llvm-as ]
14
 
  set llvmdis [file join $llvmtoolsdir llvm-dis ]
15
 
 
16
 
  #Make Output Directory if it does not exist already
17
 
  if { [file exists path] } {
18
 
      cd $path
19
 
  } else {
20
 
      file mkdir $path
21
 
      cd $path
22
 
  }
23
 
  
24
 
  file mkdir Output
25
 
 
26
 
  foreach test $files {
27
 
      
28
 
    set filename [file tail $test]
29
 
    set generated [file join Output $filename.cpp]
30
 
    set executable [file join Output $filename.exe]
31
 
    set output [file join Output $filename.gen]
32
 
    set assembly [file join Output $filename.asm]
33
 
    set testname [file rootname $filename]
34
 
    set bytecode [file join Output $filename.bc]
35
 
 
36
 
    # Note that the stderr for llvm-as, etc. must be redirected to /dev/null 
37
 
    # because otherwise exec will see the msgs and return 1 even though they 
38
 
    # are only warnings. If real errors are generated on stderr then llvm-as 
39
 
    # will return a non-zero retval anyway so we're good.
40
 
 
41
 
    # Scan the test file to see if there's an XFAIL file. If so, don't run it
42
 
    set retval [ catch { 
43
 
      exec -keepnewline grep XFAIL $test 2>/dev/null } msg ]
44
 
    if { $retval == 0 } {
45
 
      continue;
46
 
    }
47
 
 
48
 
    # Run llvm-as/llvm-dis
49
 
    set pipeline llvm-as|llvm-dis
50
 
    set retval [ catch { 
51
 
      exec -keepnewline $llvmas < $test -o - | $llvmdis -o $assembly 2>/dev/null } msg ]
52
 
 
53
 
    if { $retval != 0 } {
54
 
      fail "$test: $pipeline returned $retval\n$msg"
55
 
      continue 
56
 
    }
57
 
 
58
 
    # Build bytecode for llvm2cpp input
59
 
    set retval [ catch { 
60
 
      exec -keepnewline $llvmas < $assembly > $bytecode 2>/dev/null } msg ]
61
 
 
62
 
    if { $retval != 0 } {
63
 
      fail "$test: llvm-as returned $retval\n$msg"
64
 
      continue 
65
 
    }
66
 
 
67
 
    set retval [ catch { 
68
 
      exec -keepnewline $llc -march=cpp -o $generated < $bytecode 2>/dev/null } msg]
69
 
 
70
 
    if { $retval != 0 } {
71
 
      fail "$test: llvm2cpp returned $retval\n$msg"
72
 
      continue
73
 
    }
74
 
 
75
 
    set retval [ catch { 
76
 
      exec -keepnewline gcc -g -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -o $executable $generated -I$srcroot/include -I$objroot/include -L$llvmlibsdir -lLLVMCore -lLLVMSupport -lLLVMSystem -lstdc++ } msg ] 
77
 
    if { $retval != 0 } {
78
 
      fail "$test: gcc returned $retval\n$msg"
79
 
      continue
80
 
    }
81
 
 
82
 
    set retval [ catch { exec -keepnewline $executable > $output } msg ]
83
 
    if { $retval != 0 } {
84
 
      set execname [file tail $executable]
85
 
      fail "$test: $execname returned $retval:\n$msg"
86
 
      continue
87
 
    } 
88
 
 
89
 
    set retval [ catch { 
90
 
      exec -keepnewline diff $assembly $output } msg ]
91
 
 
92
 
    if { $retval != 0 } {
93
 
      fail "$test: diff returned $retval:\n$msg"
94
 
      continue
95
 
    }
96
 
    pass "$test"
97
 
  }
98
 
}
99
 
 
100