test/COFF: Fix symbol indexes and names. Update tests to match.
authorMichael J. Spencer <bigcheesegs@gmail.com>
Tue, 5 Oct 2010 17:57:08 +0000 (17:57 +0000)
committerMichael J. Spencer <bigcheesegs@gmail.com>
Tue, 5 Oct 2010 17:57:08 +0000 (17:57 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115642 91177308-0d34-0410-b5e6-96231b3b80d8

test/MC/COFF/basic-coff.ll
test/MC/COFF/symbol-fragment-offset.ll
test/Scripts/coff-dump.py

index 29e02f0e0b1c71af04daebe302f54f3c08ce6bdd..bbf0d3ea5b0c9442530b953c8e48c04ce5e9310e 100644 (file)
@@ -44,13 +44,13 @@ declare i32 @printf(i8* nocapture, ...) nounwind
 ; CHECK:           VirtualAddress           = 0x{{[0-9A-F]+}}
 ; CHECK:           SymbolTableIndex         = 2
 ; CHECK:           Type                     = IMAGE_REL_I386_DIR32 (6)
-; CHECK:           SymbolName               =
+; CHECK:           SymbolName               = .data
 ; CHECK:         }
 ; CHECK:         1 = {
 ; CHECK:           VirtualAddress           = 0x{{[0-9A-F]+}}
 ; CHECK:           SymbolTableIndex         = 5
 ; CHECK:           Type                     = IMAGE_REL_I386_REL32 (20)
-; CHECK:           SymbolName               = _main
+; CHECK:           SymbolName               = _printf
 ; CHECK:         }
 ; CHECK:       ]
 ; CHECK:     }
@@ -87,7 +87,7 @@ declare i32 @printf(i8* nocapture, ...) nounwind
 ; CHECK:         15 00 00 00 02 00 00 00 - 00 00 00 00 01 00 00 00 |................|
 ; CHECK:         00 00                                             |..|
 ; CHECK:     }
-; CHECK:     1 = {
+; CHECK:     2 = {
 ; CHECK:       Name                     = .data
 ; CHECK:       Value                    = 0
 ; CHECK:       SectionNumber            = 2
@@ -99,7 +99,7 @@ declare i32 @printf(i8* nocapture, ...) nounwind
 ; CHECK:         0C 00 00 00 00 00 00 00 - 00 00 00 00 02 00 00 00 |................|
 ; CHECK:         00 00                                             |..|
 ; CHECK:     }
-; CHECK:     2 = {
+; CHECK:     4 = {
 ; CHECK:       Name                     = _main
 ; CHECK:       Value                    = 0
 ; CHECK:       SectionNumber            = 1
@@ -109,7 +109,7 @@ declare i32 @printf(i8* nocapture, ...) nounwind
 ; CHECK:       NumberOfAuxSymbols       = 0
 ; CHECK:       AuxillaryData            =
 ; CHECK:     }
-; CHECK:     3 = {
+; CHECK:     5 = {
 ; CHECK:       Name                     = _printf
 ; CHECK:       Value                    = 0
 ; CHECK:       SectionNumber            = 0
index 1f76e312e11ef2f69b2fb65dc5e8ffab4a672b78..a8c917e0c41e490739ee1b25a6308b716fa8f544 100644 (file)
@@ -48,25 +48,25 @@ declare i32 @puts(i8* nocapture) nounwind
 ; CHECK:           VirtualAddress           = 0x{{[0-9A-F]+}}\r
 ; CHECK:           SymbolTableIndex         = 2\r
 ; CHECK:           Type                     = IMAGE_REL_I386_DIR32 (6)\r
-; CHECK:           SymbolName               =\r
+; CHECK:           SymbolName               = .data\r
 ; CHECK:         }\r
 ; CHECK:         1 = {\r
 ; CHECK:           VirtualAddress           = 0x{{[0-9A-F]+}}\r
 ; CHECK:           SymbolTableIndex         = 5\r
 ; CHECK:           Type                     = IMAGE_REL_I386_REL32 (20)\r
-; CHECK:           SymbolName               = _main\r
+; CHECK:           SymbolName               = _printf\r
 ; CHECK:         }\r
 ; CHECK:         2 = {\r
 ; CHECK:           VirtualAddress           = 0x{{[0-9A-F]+}}\r
 ; CHECK:           SymbolTableIndex         = 6\r
 ; CHECK:           Type                     = IMAGE_REL_I386_DIR32 (6)\r
-; CHECK:           SymbolName               = _printf\r
+; CHECK:           SymbolName               = _str\r
 ; CHECK:         }\r
 ; CHECK:         3 = {\r
 ; CHECK:           VirtualAddress           = 0x{{[0-9A-F]+}}\r
 ; CHECK:           SymbolTableIndex         = 7\r
 ; CHECK:           Type                     = IMAGE_REL_I386_REL32 (20)\r
-; CHECK:           SymbolName               = _str\r
+; CHECK:           SymbolName               = _puts\r
 ; CHECK:         }\r
 ; CHECK:       ]\r
 ; CHECK:     }\r
@@ -105,7 +105,7 @@ declare i32 @puts(i8* nocapture) nounwind
 ; CHECK:         00 00                                             |..|\r
 \r
 ; CHECK:     }\r
-; CHECK:     1 = {\r
+; CHECK:     2 = {\r
 ; CHECK:       Name                     = .data\r
 ; CHECK:       Value                    = 0\r
 ; CHECK:       SectionNumber            = 2\r
@@ -118,7 +118,7 @@ declare i32 @puts(i8* nocapture) nounwind
 ; CHECK:         00 00                                             |..|\r
 \r
 ; CHECK:     }\r
-; CHECK:     2 = {\r
+; CHECK:     4 = {\r
 ; CHECK:       Name                     = _main\r
 ; CHECK:       Value                    = 0\r
 ; CHECK:       SectionNumber            = 1\r
@@ -128,7 +128,7 @@ declare i32 @puts(i8* nocapture) nounwind
 ; CHECK:       NumberOfAuxSymbols       = 0\r
 ; CHECK:       AuxillaryData            =\r
 \r
-; CHECK:     3 = {\r
+; CHECK:     5 = {\r
 ; CHECK:       Name                     = _printf\r
 ; CHECK:       Value                    = 0\r
 ; CHECK:       SectionNumber            = 0\r
@@ -139,7 +139,7 @@ declare i32 @puts(i8* nocapture) nounwind
 ; CHECK:       AuxillaryData            =\r
 \r
 ; CHECK:     }\r
-; CHECK:     4 = {\r
+; CHECK:     6 = {\r
 ; CHECK:       Name                     = _str\r
 ; CHECK:       Value                    = 7\r
 ; CHECK:       SectionNumber            = 2\r
@@ -150,7 +150,7 @@ declare i32 @puts(i8* nocapture) nounwind
 ; CHECK:       AuxillaryData            =\r
 \r
 ; CHECK:     }\r
-; CHECK:     5 = {\r
+; CHECK:     7 = {\r
 ; CHECK:       Name                     = _puts\r
 ; CHECK:       Value                    = 0\r
 ; CHECK:       SectionNumber            = 0\r
index d734f0a0133ea0d696a380289d56334e7bce35eb..055fec5bde80177bf1fd8c62a1658fa839b63c5f 100755 (executable)
@@ -160,10 +160,10 @@ 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',  '<L',  '%d'   )),
     ('SectionNumber',       ('scalar',  '<H',  '%d'   )),
@@ -487,24 +487,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("]")