Index: src/trusted/validator_x86/ncval_annotate.py |
diff --git a/src/trusted/validator_x86/ncval_annotate.py b/src/trusted/validator_x86/ncval_annotate.py |
deleted file mode 100755 |
index a742ea8c341b5401ed5b215fc0c474463400f395..0000000000000000000000000000000000000000 |
--- a/src/trusted/validator_x86/ncval_annotate.py |
+++ /dev/null |
@@ -1,85 +0,0 @@ |
-#!/usr/bin/env python |
- |
-# Copyright (c) 2011 The Native Client Authors. All rights reserved. |
-# Use of this source code is governed by a BSD-style license that can be |
-# found in the LICENSE file. |
- |
-# Annotates the output of ncval with line numbers, taken from debugging |
-# information using binutils' addr2line. |
- |
-# TODO(mseaborn): Merge this with validator_arm/validation-report.py, |
-# the Python wrapper script for the ARM validator. |
- |
-import linecache |
-import re |
-import subprocess |
-import sys |
- |
- |
-objdump_regexp = re.compile(r"\s*([0-9a-f]+):\s+") |
-ncval_regexp = re.compile("VALIDATOR: ([0-9a-f]+):") |
-addr2line_regexp = re.compile(r"(.*):(\d+)$") |
- |
- |
-def check(obj_file, output_fh): |
- def disassemble_address(addr): |
- proc = subprocess.Popen( |
- ["x86_64-nacl-objdump", "-d", obj_file, |
- "--start-address", "0x" + addr, |
- "--stop-address", "0x%x" % (int(addr, 16) + 16)], |
- stdout=subprocess.PIPE) |
- for line in proc.stdout: |
- match = objdump_regexp.match(line) |
- if match is not None: |
- output_fh.write(" code: %s\n" % line[match.end():].strip()) |
- break |
- |
- def decode_address(addr): |
- # We have to do one invocation of addr2line per address when |
- # getting inline context. If we pipe addresses in, addr2line |
- # does not tell us when the output ends for each input |
- # address. |
- proc = subprocess.Popen( |
- ["x86_64-nacl-addr2line", "--functions", "--inlines", |
- "-e", obj_file, addr], |
- stdout=subprocess.PIPE) |
- for info in proc.stdout: |
- match = addr2line_regexp.match(info.rstrip()) |
- if match is not None: |
- filename = match.group(1) |
- lineno = int(match.group(2)) |
- output_fh.write(" file: %s" % info) |
- src_line = linecache.getline(filename, lineno) |
- if src_line != "": |
- output_fh.write(" " + src_line.lstrip()) |
- else: |
- output_fh.write(" func: %s" % info) |
- |
- # Pass --max_errors=-1 to get all validation errors. This works |
- # around ncval's default of truncating the number of results to 100. |
- # Pass --cpuid-all because we are only interested in instructions |
- # that are always rejected by the validator. |
- proc = subprocess.Popen(["ncval", "--max_errors=-1", "--cpuid-all", |
- "--annotate", obj_file], |
- stdout=subprocess.PIPE) |
- for line in proc.stdout: |
- match = ncval_regexp.match(line) |
- if match is not None: |
- output_fh.write("\n") |
- output_fh.write(line) |
- addr = match.group(1) |
- disassemble_address(addr) |
- decode_address(addr) |
- return proc.wait() |
- |
- |
-def main(args): |
- result = 0 |
- for obj_file in args: |
- if check(obj_file, sys.stdout) != 0: |
- result = 1 |
- return result |
- |
- |
-if __name__ == "__main__": |
- sys.exit(main(sys.argv[1:])) |