[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