X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=test%2FScripts%2Fcoff-dump.py;h=36ec53932c638be69bb556ee214c8fbb3ca9f3d9;hb=ab3d00e5350fd4c097e2a5b077da7584692029a7;hp=7868c006a43bed1090607f529a9ef12c477d1639;hpb=00002796bbb11f58435b9f43d63fd6d0657fc3a5;p=oota-llvm.git diff --git a/test/Scripts/coff-dump.py b/test/Scripts/coff-dump.py index 7868c006a43..36ec53932c6 100755 --- a/test/Scripts/coff-dump.py +++ b/test/Scripts/coff-dump.py @@ -160,14 +160,15 @@ file = ('struct', [ 0x0010: 'IMAGE_REL_AMD64_SSPAN32', }, }))), - ('SymbolName', ('ptr', '+ PointerToSymbolTable * - SymbolTableIndex 1 18', ('scalar', '<8s', symname))) + ('SymbolName', ('ptr', '+ PointerToSymbolTable * SymbolTableIndex 18', ('scalar', '<8s', symname))) ])))), ]))), - ('Symbols', ('ptr', 'PointerToSymbolTable', ('byte-array', '* NumberOfSymbols 18', ('struct', [ + ('Symbols', ('ptr', 'PointerToSymbolTable', ('byte-array', '18', '* NumberOfSymbols 18', ('struct', [ ('Name', ('scalar', '<8s', symname)), ('Value', ('scalar', '> 4 + ('ComplexType', ('enum', '>> & _Type 240 4', '%d', { 0: 'IMAGE_SYM_DTYPE_NULL', 1: 'IMAGE_SYM_DTYPE_POINTER', 2: 'IMAGE_SYM_DTYPE_FUNCTION', @@ -317,7 +318,7 @@ def print_binary_data(size): write("%s|%s|\n" % (bytes, text)) return value -idlit = re.compile("[a-zA-Z][a-zA-Z0-9_-]*") +idlit = re.compile("[a-zA-Z_][a-zA-Z0-9_-]*") numlit = re.compile("[0-9]+") def read_value(expr): @@ -335,11 +336,6 @@ def read_value(expr): if expr == 'false': return False - if len(token) > 1 and token[0] in ('=', '@', '<', '!', '>'): - val = read(expr) - assert(len(val) == 1) - return val[0] - if token == '+': return eval() + eval() if token == '-': @@ -348,6 +344,19 @@ def read_value(expr): return eval() * eval() if token == '/': return eval() / eval() + if token == '&': + return eval() & eval() + if token == '|': + return eval() | eval() + if token == '>>': + return eval() >> eval() + if token == '<<': + return eval() << eval() + + if len(token) > 1 and token[0] in ('=', '@', '<', '!', '>'): + val = read(expr) + assert(len(val) == 1) + return val[0] if idlit.match(token): return Fields[token] @@ -356,10 +365,10 @@ def read_value(expr): raise RuntimeError("unexpected token %s" % repr(token)) - value = eval () + value = eval() try: - input.next () + input.next() except StopIteration: return value raise RuntimeError("unexpected input at end of expression") @@ -373,6 +382,8 @@ def write_value(format,value): elif format_type is types.TupleType: Fields['this'] = value handle_element(format) + elif format_type is types.NoneType: + pass else: raise RuntimeError("unexpected type: %s" % repr(format_type)) @@ -448,11 +459,13 @@ def handle_struct(entry): name = member[0] type = member[1] - write("%s = "%name.ljust(24)) + if name[0] != "_": + write("%s = " % name.ljust(24)) value = handle_element(type) - write("\n") + if name[0] != "_": + write("\n") Fields[name] = value newFields[name] = value @@ -487,24 +500,28 @@ def handle_array(entry): return newItems def handle_byte_array(entry): - length = entry[1] - element = entry[2] + ent_size = entry[1] + length = entry[2] + element = entry[3] newItems = [] write("[\n") indent() + item_size = read_value(ent_size) value = read_value(length) end_of_array = Input.tell() + value + prev_loc = Input.tell() index = 0 while Input.tell() < end_of_array: - write("%d = "%index) + write("%d = " % index) value = handle_element(element) write("\n") newItems.append(value) - index += 1 + index += (Input.tell() - prev_loc) / item_size + prev_loc = Input.tell() dedent() write("]") @@ -560,7 +577,12 @@ def handle_element(entry): return handlers[entry[0]](entry) -Input = open (sys.argv[1], "rb") +if len(sys.argv) <= 1 or sys.argv[1] == '-': + import StringIO + Input = StringIO.StringIO(sys.stdin.read()) +else: + Input = open (sys.argv[1], "rb") + try: handle_element(file) finally: