#!/usr/bin/env python3 import imp import os import shutil import sys import common build = imp.load_source('build', os.path.join(common.root_dir, 'build')) run = imp.load_source('run', os.path.join(common.root_dir, 'run')) parser = common.get_argparse( argparse_args={ 'description': '''Bisect the Linux kernel on gem5 boots. More information at: https://github.com/cirosantilli/linux-kernel-module-cheat#bisection '''}, default_args={ 'gem5': True, 'linux_build_id': 'bisect', }, ) args = common.setup(parser) # We need a clean rebuild because rebuilds at different revisions: # - may fail # - may not actually rebuild all files, e.g. on header changes common.rmrf(common.linux_variant_dir) assert build.main(args) == 0 status = run.main(args, { 'eval': 'm5 exit', }) if status == 125 or status == 127: status = 1 sys.exit(status)