; 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: }
; 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
; 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
; CHECK: NumberOfAuxSymbols = 0
; CHECK: AuxillaryData =
; CHECK: }
-; CHECK: 3 = {
+; CHECK: 5 = {
; CHECK: Name = _printf
; CHECK: Value = 0
; CHECK: SectionNumber = 0
; 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
; 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
; 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
; 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
; CHECK: AuxillaryData =\r
\r
; CHECK: }\r
-; CHECK: 4 = {\r
+; CHECK: 6 = {\r
; CHECK: Name = _str\r
; CHECK: Value = 7\r
; CHECK: SectionNumber = 2\r
; CHECK: AuxillaryData =\r
\r
; CHECK: }\r
-; CHECK: 5 = {\r
+; CHECK: 7 = {\r
; CHECK: Name = _puts\r
; CHECK: Value = 0\r
; CHECK: SectionNumber = 0\r
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' )),
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("]")