2 // Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
4 // SPDX-License-Identifier: BSD-2-Clause-Patent
7 ENTRY &ram_start &ram_size
9 ;If system is running then stop the execution so we can load symbols.
16 AREA.Create SYMBOL 300. 100.
21 ; Added based on suggestion from Lauterbach support.
25 GOSUB load_symbols &ram_start &ram_size
28 WINPOS 83.125 29.063 48. 9. 0. 0. W003
31 WINPOS 83.25 10. 48. 9. 0. 1. W002
37 ENTRY &mem_start &mem_size
38 &mem_ptr=&mem_start+&mem_size
41 &mem_ptr=&mem_ptr-0x400000 // 4 MB
42 &word1=Data.LONG(D:&mem_ptr)
43 &word2=Data.LONG(D:&mem_ptr+0x04)
48 &result=Data.LONG(D:&mem_ptr+0x08)
53 WHILE &mem_ptr>&mem_start
59 IF Data.LONG(D:&guid)==0x49152E77
61 IF Data.LONG(D:&guid+0x04)==0x47641ADA
63 IF Data.LONG(D:&guid+0x08)==0xFE7AA2B7
65 IF Data.LONG(D:&guid+0x0C)==0x8B5ED9FE
74 find_debug_info_table_header:
76 &config_table_entries=Data.LONG(D:&system_table+0x40)
77 &config_table_pointer=Data.LONG(D:&system_table+0x44)
78 RPT &config_table_entries
80 GOSUB compare_guid &config_table_pointer
84 &result=Data.LONG(D:&config_table_pointer+0x10)
87 &config_table_pointer=&config_table_pointer+0x14
93 IF Data.BYTE(D:&header+0x00)==0x4D
95 IF Data.BYTE(D:&header+0x01)==0x5A
97 IF Data.BYTE(D:&header+0x80)==0x50
99 IF Data.BYTE(D:&header+0x81)==0x45
113 &more_string=data.string(d:&stringOffset)
115 if (string.len("&more_string")>=128.)
117 &string="&string"+"&more_string"
118 &stringOffset=&stringOffset+string.len("&more_string")
120 //Get remaining file string
121 GOSUB get_file_string &stringOffset
123 &string="&string"+"&more_string"
127 &string="&string"+"&more_string"
133 ENTRY &header &load_address
134 GOSUB valid_pe_header &header
139 &debugOffset=Data.LONG(D:&header+0x0128)
140 &stringOffset=&header+&debugOffset+0x002C
142 &stringOffset=&stringOffset+11.
144 GOSUB get_file_string &stringOffset
147 &filestring="c:"+"&filestring"
149 PRINT "&filestring 0x" &load_address
150 Data.load.elf &filestring &load_address /nocode /noclear
156 RETURN Data.LONG(D:&header+0x00AC)
159 ENTRY &mem_start &mem_size
160 GOSUB find_system_table &mem_start &mem_size
162 GOSUB find_debug_info_table_header &system_table
163 ENTRY &debug_info_table_header
164 &debug_info_table=Data.LONG(D:&debug_info_table_header+0x08)
165 &debug_info_table_size=Data.LONG(D:&debug_info_table_header+0x04)
167 RPT &debug_info_table_size
169 &debug_image_info=Data.LONG(D:&debug_info_table+&index)
170 IF &debug_image_info==0
172 &loaded_image_protocol=Data.LONG(D:&debug_image_info+0x04);
173 &image_base=Data.LONG(D:&loaded_image_protocol+0x20);
174 GOSUB pe_headersize &image_base
176 &image_load_address=&image_base+&header_size
177 GOSUB load_symbol_file &image_base &image_load_address