| Index: tools/checkbin/checkbin.py
|
| ===================================================================
|
| --- tools/checkbin/checkbin.py (revision 30366)
|
| +++ tools/checkbin/checkbin.py (working copy)
|
| @@ -1,65 +0,0 @@
|
| -#!/usr/bin/python
|
| -# Copyright (c) 2009 The Chromium Authors. All rights reserved.
|
| -# Use of this source code is governed by a BSD-style license that can be
|
| -# found in the LICENSE file.
|
| -
|
| -"""Makes sure that all EXE and DLL files in the provided directory were built
|
| -correctly.
|
| -
|
| -Currently this tool will check that binaries were built with /NXCOMPAT and
|
| -/DYNAMICBASE set.
|
| -"""
|
| -
|
| -import os
|
| -import optparse
|
| -import sys
|
| -
|
| -import pefile
|
| -
|
| -PE_FILE_EXTENSIONS = ['.exe', '.dll']
|
| -DYNAMICBASE_FLAG = 0x0040
|
| -NXCOMPAT_FLAG = 0x0100
|
| -
|
| -def IsPEFile(path):
|
| - return (os.path.isfile(path) and
|
| - os.path.splitext(path)[1].lower() in PE_FILE_EXTENSIONS)
|
| -
|
| -def main(options, args):
|
| - directory = args[0]
|
| - success = True
|
| -
|
| - for file in os.listdir(directory):
|
| - path = os.path.abspath(os.path.join(directory, file))
|
| - if not IsPEFile(path):
|
| - continue
|
| - pe = pefile.PE(path, fast_load=True)
|
| -
|
| - # Check for /DYNAMICBASE.
|
| - if pe.OPTIONAL_HEADER.DllCharacteristics & DYNAMICBASE_FLAG:
|
| - if options.verbose:
|
| - print "Checking %s for /DYNAMICBASE... PASS" % path
|
| - else:
|
| - success = False
|
| - print "Checking %s for /DYNAMICBASE... FAIL" % path
|
| -
|
| - # Check for /NXCOMPAT.
|
| - if pe.OPTIONAL_HEADER.DllCharacteristics & NXCOMPAT_FLAG:
|
| - if options.verbose:
|
| - print "Checking %s for /NXCOMPAT... PASS" % path
|
| - else:
|
| - success = False
|
| - print "Checking %s for /NXCOMPAT... FAIL" % path
|
| -
|
| - if not success:
|
| - sys.exit(1)
|
| -
|
| -if __name__ == '__main__':
|
| - usage = "Usage: %prog [options] DIRECTORY"
|
| - option_parser = optparse.OptionParser(usage=usage)
|
| - option_parser.add_option("-v", "--verbose", action="store_true",
|
| - default=False, help="Print debug logging")
|
| - options, args = option_parser.parse_args()
|
| - if not args:
|
| - option_parser.print_help()
|
| - sys.exit(0)
|
| - main(options, args)
|
|
|