[llvm-commits] [llvm] r116037 - in /llvm/trunk: include/llvm/Support/COFF.h test/Scripts/coff-dump.py

Michael J. Spencer bigcheesegs at gmail.com
Thu Oct 7 20:17:11 PDT 2010


Author: mspencer
Date: Thu Oct  7 22:17:11 2010
New Revision: 116037

URL: http://llvm.org/viewvc/llvm-project?rev=116037&view=rev
Log:
MC-COFF: Fix Simple and Complex type. Fixes PR8320.

Modified:
    llvm/trunk/include/llvm/Support/COFF.h
    llvm/trunk/test/Scripts/coff-dump.py

Modified: llvm/trunk/include/llvm/Support/COFF.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/COFF.h?rev=116037&r1=116036&r2=116037&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Support/COFF.h (original)
+++ llvm/trunk/include/llvm/Support/COFF.h Thu Oct  7 22:17:11 2010
@@ -139,7 +139,7 @@
     IMAGE_SYM_DTYPE_ARRAY    = 3, ///< An array of base type.
 
     /// Type is formed as (base + (derived << SCT_COMPLEX_TYPE_SHIFT))
-    SCT_COMPLEX_TYPE_SHIFT   = 8
+    SCT_COMPLEX_TYPE_SHIFT   = 4
   };
 
   struct section {

Modified: llvm/trunk/test/Scripts/coff-dump.py
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Scripts/coff-dump.py?rev=116037&r1=116036&r2=116037&view=diff
==============================================================================
--- llvm/trunk/test/Scripts/coff-dump.py (original)
+++ llvm/trunk/test/Scripts/coff-dump.py Thu Oct  7 22:17:11 2010
@@ -167,7 +167,8 @@
     ('Name',                ('scalar',  '<8s', symname)),
     ('Value',               ('scalar',  '<L',  '%d'   )),
     ('SectionNumber',       ('scalar',  '<H',  '%d'   )),
-    ('SimpleType',          ('enum',    '<B',  '%d', {
+    ('_Type',               ('scalar',  '<H',  None   )),
+    ('SimpleType',          ('enum',    '& _Type 15',  '%d', {
       0: 'IMAGE_SYM_TYPE_NULL',
       1: 'IMAGE_SYM_TYPE_VOID',
       2: 'IMAGE_SYM_TYPE_CHAR',
@@ -184,8 +185,8 @@
       13: 'IMAGE_SYM_TYPE_WORD',
       14: 'IMAGE_SYM_TYPE_UINT',
       15: 'IMAGE_SYM_TYPE_DWORD',
-    })),
-    ('ComplexType',         ('enum',    '<B',  '%d', {
+    })),                                # (Type & 0xF0) >> 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 @@
     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 @@
     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 @@
       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]
@@ -373,6 +382,8 @@
   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 @@
     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





More information about the llvm-commits mailing list