]> git.proxmox.com Git - mirror_edk2.git/blame - BeagleBoardPkg/Debugger_scripts/trace32_load_symbols_cygwin.cmm
ARM Packages: CRLF fixup
[mirror_edk2.git] / BeagleBoardPkg / Debugger_scripts / trace32_load_symbols_cygwin.cmm
CommitLineData
2ef2b01e 1//\r
1ebd6c11 2// Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
2ef2b01e 3// \r
1ebd6c11 4// This program and the accompanying materials\r
2ef2b01e
A
5// are licensed and made available under the terms and conditions of the BSD License\r
6// which accompanies this distribution. The full text of the license may be found at\r
7// http://opensource.org/licenses/bsd-license.php\r
8//\r
9// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
10// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
11//\r
12\r
13 ENTRY &ram_start &ram_size\r
14\r
15 ;If system is running then stop the execution so we can load symbols.\r
16 break\r
17 \r
18 ;Reset all windows\r
19 WINPAGE.RESET\r
20 \r
21 AREA.Reset\r
22 AREA.Create SYMBOL 300. 100.\r
23 AREA.View SYMBOL\r
24 AREA.Select SYMBOL\r
25 SYS.Option BE OFF\r
26 \r
27 ; Added based on suggestion from Lauterbach support.\r
28 MMU.TABLEWALK ON\r
29 MMU.ON\r
30\r
31 GOSUB load_symbols &ram_start &ram_size\r
32\r
33 ;Open some windows.\r
34 WINPOS 83.125 29.063 48. 9. 0. 0. W003\r
35 Register\r
36\r
37 WINPOS 83.25 10. 48. 9. 0. 1. W002\r
38 Var.Local\r
39 \r
40 END\r
41\r
42find_system_table:\r
43 ENTRY &mem_start &mem_size\r
44 &mem_ptr=&mem_start+&mem_size\r
45 RPT \r
46 (\r
47 &mem_ptr=&mem_ptr-0x400000 // 4 MB\r
48 &word1=Data.LONG(D:&mem_ptr)\r
49 &word2=Data.LONG(D:&mem_ptr+0x04)\r
50 IF &word1==0x20494249\r
51 (\r
52 IF &word2==0x54535953\r
53 (\r
54 &result=Data.LONG(D:&mem_ptr+0x08)\r
55 RETURN &result\r
56 )\r
57 )\r
58 )\r
59 WHILE &mem_ptr>&mem_start\r
60 &result=0\r
61 RETURN &result\r
62\r
63compare_guid:\r
64 ENTRY &guid\r
65 IF Data.LONG(D:&guid)==0x49152E77\r
66 (\r
67 IF Data.LONG(D:&guid+0x04)==0x47641ADA\r
68 (\r
69 IF Data.LONG(D:&guid+0x08)==0xFE7AA2B7\r
70 (\r
71 IF Data.LONG(D:&guid+0x0C)==0x8B5ED9FE\r
72 (\r
73 RETURN 0\r
74 )\r
75 )\r
76 )\r
77 )\r
78 RETURN 1 \r
79\r
80find_debug_info_table_header:\r
81 ENTRY &system_table\r
82 &config_table_entries=Data.LONG(D:&system_table+0x40)\r
83 &config_table_pointer=Data.LONG(D:&system_table+0x44)\r
84 RPT &config_table_entries\r
85 (\r
86 GOSUB compare_guid &config_table_pointer\r
87 ENTRY &result\r
88 IF &result==0\r
89 (\r
90 &result=Data.LONG(D:&config_table_pointer+0x10)\r
91 RETURN &result\r
92 ) \r
93 &config_table_pointer=&config_table_pointer+0x14\r
94 )\r
95 RETURN 0;\r
96\r
97valid_pe_header:\r
98 ENTRY &header\r
99 IF Data.BYTE(D:&header+0x00)==0x4D\r
100 (\r
101 IF Data.BYTE(D:&header+0x01)==0x5A\r
102 (\r
103 IF Data.BYTE(D:&header+0x80)==0x50\r
104 (\r
105 IF Data.BYTE(D:&header+0x81)==0x45\r
106 (\r
107 RETURN 1\r
108 )\r
109 )\r
110 )\r
111 )\r
112 RETURN 0\r
113\r
e6f3ed43
LL
114get_file_string:\r
115 ENTRY &stringOffset\r
116\r
2ef2b01e
A
117 local &string\r
118 \r
e6f3ed43
LL
119 &more_string=data.string(d:&stringOffset)\r
120\r
121 if (string.len("&more_string")>=128.)\r
122 (\r
123 &string="&string"+"&more_string"\r
124 &stringOffset=&stringOffset+string.len("&more_string")\r
125\r
126 //Get remaining file string\r
127 GOSUB get_file_string &stringOffset\r
128 ENTRY &more_string\r
129 &string="&string"+"&more_string"\r
130 )\r
131 else\r
132 (\r
133 &string="&string"+"&more_string"\r
134 &more_string=""\r
2ef2b01e
A
135 )\r
136 RETURN &string\r
137 \r
138load_symbol_file:\r
139 ENTRY &header &load_address\r
140 GOSUB valid_pe_header &header\r
141 ENTRY &result\r
142 \r
143 IF &result==1\r
144 (\r
145 &debugOffset=Data.LONG(D:&header+0x0128)\r
146 &stringOffset=&header+&debugOffset+0x002C\r
147 \r
148 &stringOffset=&stringOffset+11.\r
149\r
150 GOSUB get_file_string &stringOffset\r
151 ENTRY &filestring\r
152 \r
153 &filestring="c:"+"&filestring"\r
154\r
155 PRINT "&filestring 0x" &load_address\r
156 Data.load.elf &filestring &load_address /nocode /noclear\r
157 )\r
158 RETURN\r
159\r
160pe_headersize:\r
161 ENTRY &header;\r
162 RETURN Data.LONG(D:&header+0x00AC)\r
163\r
164load_symbols:\r
165 ENTRY &mem_start &mem_size\r
166 GOSUB find_system_table &mem_start &mem_size\r
167 ENTRY &system_table\r
168 GOSUB find_debug_info_table_header &system_table\r
169 ENTRY &debug_info_table_header\r
170 &debug_info_table=Data.LONG(D:&debug_info_table_header+0x08)\r
171 &debug_info_table_size=Data.LONG(D:&debug_info_table_header+0x04)\r
172 &index=0\r
173 RPT &debug_info_table_size\r
174 (\r
175 &debug_image_info=Data.LONG(D:&debug_info_table+&index)\r
176 IF &debug_image_info==0\r
177 RETURN \r
178 &loaded_image_protocol=Data.LONG(D:&debug_image_info+0x04);\r
179 &image_base=Data.LONG(D:&loaded_image_protocol+0x20);\r
180 GOSUB pe_headersize &image_base\r
181 ENTRY &header_size\r
182 &image_load_address=&image_base+&header_size\r
183 GOSUB load_symbol_file &image_base &image_load_address\r
184 &index=&index+0x4\r
185 )\r
186 \r
187 RETURN\r
188