bisect-linux-boot-gem5 880 B

1234567891011121314151617181920212223242526272829303132333435
  1. #!/usr/bin/env python3
  2. import imp
  3. import os
  4. import shutil
  5. import sys
  6. import common
  7. build = imp.load_source('build', os.path.join(common.root_dir, 'build'))
  8. run = imp.load_source('run', os.path.join(common.root_dir, 'run'))
  9. parser = common.get_argparse(
  10. argparse_args={
  11. 'description': '''Bisect the Linux kernel on gem5 boots.
  12. More information at: https://github.com/cirosantilli/linux-kernel-module-cheat#bisection
  13. '''},
  14. default_args={
  15. 'gem5': True,
  16. 'linux_build_id': 'bisect',
  17. },
  18. )
  19. args = common.setup(parser)
  20. # We need a clean rebuild because rebuilds at different revisions:
  21. # - may fail
  22. # - may not actually rebuild all files, e.g. on header changes
  23. common.rmrf(common.linux_variant_dir)
  24. assert build.main(args) == 0
  25. status = run.main(args, {
  26. 'eval': 'm5 exit',
  27. })
  28. if status == 125 or status == 127:
  29. status = 1
  30. sys.exit(status)