예제 #1
0
#!/usr/bin/env python

import argparse
import os
import sys
import string
import rcs_utils
import ng_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(ng_utils.get_aa_choices()),
            metavar = 'aa',
            choices = ng_utils.get_aa_choices())
    args = parser.parse_args()

    cmd = ng_utils.load_all_plugins('opt')
    cmd = ng_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
#!/usr/bin/env python

import argparse
import os
import sys
import string
import rcs_utils
import ng_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(ng_utils.get_aa_choices()),
            metavar = 'aa',
            choices = ng_utils.get_aa_choices())
    args = parser.parse_args()

    cmd = ng_utils.load_all_plugins('opt')
    cmd = ng_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)
예제 #3
0
    exe_hybrid = args.prog + '.hybrid'

    time_start_hybrid = time.time()
    # Insert alias checks.
    cmd = ng_utils.load_all_plugins('opt')
    if args.input_alias_checks is not None:
        cmd = ' '.join((cmd, '-input-alias-checks', args.input_alias_checks))
    else:
        if args.baseline == args.aa:
            sys.stderr.write('\033[0;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 = ng_utils.load_aa(cmd, args.baseline)
        cmd = ' '.join((cmd, '-baseline-aa'))
        cmd = ' '.join((cmd, '-baseline-aa-name', args.baseline))
        cmd = ng_utils.load_aa(cmd, args.aa)
    if args.output_alias_checks is not None:
        cmd = ' '.join((cmd, '-output-alias-checks', args.output_alias_checks))
    cmd = ' '.join((cmd, '-instrument-alias-checker'))
    if args.no_phi:
        cmd = ' '.join((cmd, '-no-phi'))
    cmd = ' '.join((cmd, '-action=' + args.action_if_missed))
    if args.check_all:
        cmd = ' '.join((cmd, '-check-all-pointers-online'))
    # ignore offline functions
    if args.offline_funcs is not None:
        for funcs in args.offline_funcs:
            for func in funcs:
예제 #4
0
    exe_hybrid = args.prog + '.hybrid'

    time_start_hybrid = time.time()
    # Insert alias checks.
    cmd = ng_utils.load_all_plugins('opt')
    if args.input_alias_checks is not None:
        cmd = ' '.join((cmd, '-input-alias-checks', args.input_alias_checks))
    else:
        if args.baseline == args.aa:
            sys.stderr.write('\033[0;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 = ng_utils.load_aa(cmd, args.baseline)
        cmd = ' '.join((cmd, '-baseline-aa'))
        cmd = ' '.join((cmd, '-baseline-aa-name', args.baseline))
        cmd = ng_utils.load_aa(cmd, args.aa)
    if args.output_alias_checks is not None:
        cmd = ' '.join((cmd, '-output-alias-checks', args.output_alias_checks))
    cmd = ' '.join((cmd, '-instrument-alias-checker'))
    if args.no_phi:
        cmd = ' '.join((cmd, '-no-phi'))
    cmd = ' '.join((cmd, '-action=' + args.action_if_missed))
    if args.check_all:
        cmd = ' '.join((cmd, '-check-all-pointers-online'))
    # ignore offline functions
    if args.offline_funcs is not None:
        for funcs in args.offline_funcs:
            for func in funcs: