コード例 #1
0
#!/usr/bin/env python

import argparse
import os
import sys
import string
import rcs_utils
import dynaa_utils

if __name__ == '__main__':
    parser = argparse.ArgumentParser(
            description = 'Check the call graph generated based on the ' \
                    'specified AA')
    parser.add_argument('bc', help = 'the bitcode of the program')
    parser.add_argument('log', help = 'the point-to log')
    parser.add_argument('aa',
            help = 'the underlying alias analysis: ' + \
                    str(dynaa_utils.get_aa_choices()),
            metavar = 'aa',
            choices = dynaa_utils.get_aa_choices())
    args = parser.parse_args()

    cmd = dynaa_utils.load_all_plugins('opt')
    cmd = dynaa_utils.load_aa(cmd, args.aa)
    cmd = string.join((cmd, '-fpcg'))
    cmd = string.join((cmd, '-check-cg'))
    cmd = string.join((cmd, '-log-file', args.log))
    cmd = string.join((cmd, '-disable-output', '<', args.bc))
    
    rcs_utils.invoke(cmd)
コード例 #2
0
                                'correct: ' + str(dynaa_utils.get_aa_choices()),
                        metavar = 'baseline_aa',
                        choices = ['no-aa', 'basicaa', 'tbaa'])
    args = parser.parse_args()

    cmd = dynaa_utils.load_all_plugins('opt')
    # Load the baseline AA if specified
    if args.baseline is not None:
        if args.baseline == args.aa:
            sys.stderr.write('\033[1;31m')
            print >> sys.stderr, 'Error: Baseline and the checked AA',
            print >> sys.stderr, 'must be different'
            sys.stderr.write('\033[m')
            sys.exit(1)
        # baseline need be put before aa
        cmd = dynaa_utils.load_aa(cmd, args.baseline)
        cmd = ' '.join((cmd, '-baseline-aa-name', args.baseline))

    # Load the checked AA
    cmd = dynaa_utils.load_aa(cmd, args.aa)

    # Some AAs don't support inter-procedural alias queries.
    # Add -intra or -baseline-intra option for them.
    if dynaa_utils.supports_intra_proc_queries_only(args.aa):
        cmd = ' '.join((cmd, '-intra'))
    if dynaa_utils.supports_intra_proc_queries_only(args.baseline):
        cmd = ' '.join((cmd, '-baseline-intra'))

    cmd = ' '.join((cmd, '-check-aa'))
    cmd = ' '.join((cmd, '-log-file', args.log))
    # cmd = ' '.join((cmd, '-output-dyn-aliases', '/tmp/dyn-aliases'))