]> git.proxmox.com Git - mirror_edk2.git/blob - BeagleBoardPkg/Debugger_scripts/trace32_load_symbols_cygwin.cmm
87045e8769a8a62e6285a30b4d0fa089a4804670
[mirror_edk2.git] / BeagleBoardPkg / Debugger_scripts / trace32_load_symbols_cygwin.cmm
1 //
2 // Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
3 //
4 // SPDX-License-Identifier: BSD-2-Clause-Patent
5 //
6
7 ENTRY &ram_start &ram_size
8
9 ;If system is running then stop the execution so we can load symbols.
10 break
11
12 ;Reset all windows
13 WINPAGE.RESET
14
15 AREA.Reset
16 AREA.Create SYMBOL 300. 100.
17 AREA.View SYMBOL
18 AREA.Select SYMBOL
19 SYS.Option BE OFF
20
21 ; Added based on suggestion from Lauterbach support.
22 MMU.TABLEWALK ON
23 MMU.ON
24
25 GOSUB load_symbols &ram_start &ram_size
26
27 ;Open some windows.
28 WINPOS 83.125 29.063 48. 9. 0. 0. W003
29 Register
30
31 WINPOS 83.25 10. 48. 9. 0. 1. W002
32 Var.Local
33
34 END
35
36 find_system_table:
37 ENTRY &mem_start &mem_size
38 &mem_ptr=&mem_start+&mem_size
39 RPT
40 (
41 &mem_ptr=&mem_ptr-0x400000 // 4 MB
42 &word1=Data.LONG(D:&mem_ptr)
43 &word2=Data.LONG(D:&mem_ptr+0x04)
44 IF &word1==0x20494249
45 (
46 IF &word2==0x54535953
47 (
48 &result=Data.LONG(D:&mem_ptr+0x08)
49 RETURN &result
50 )
51 )
52 )
53 WHILE &mem_ptr>&mem_start
54 &result=0
55 RETURN &result
56
57 compare_guid:
58 ENTRY &guid
59 IF Data.LONG(D:&guid)==0x49152E77
60 (
61 IF Data.LONG(D:&guid+0x04)==0x47641ADA
62 (
63 IF Data.LONG(D:&guid+0x08)==0xFE7AA2B7
64 (
65 IF Data.LONG(D:&guid+0x0C)==0x8B5ED9FE
66 (
67 RETURN 0
68 )
69 )
70 )
71 )
72 RETURN 1
73
74 find_debug_info_table_header:
75 ENTRY &system_table
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
79 (
80 GOSUB compare_guid &config_table_pointer
81 ENTRY &result
82 IF &result==0
83 (
84 &result=Data.LONG(D:&config_table_pointer+0x10)
85 RETURN &result
86 )
87 &config_table_pointer=&config_table_pointer+0x14
88 )
89 RETURN 0;
90
91 valid_pe_header:
92 ENTRY &header
93 IF Data.BYTE(D:&header+0x00)==0x4D
94 (
95 IF Data.BYTE(D:&header+0x01)==0x5A
96 (
97 IF Data.BYTE(D:&header+0x80)==0x50
98 (
99 IF Data.BYTE(D:&header+0x81)==0x45
100 (
101 RETURN 1
102 )
103 )
104 )
105 )
106 RETURN 0
107
108 get_file_string:
109 ENTRY &stringOffset
110
111 local &string
112
113 &more_string=data.string(d:&stringOffset)
114
115 if (string.len("&more_string")>=128.)
116 (
117 &string="&string"+"&more_string"
118 &stringOffset=&stringOffset+string.len("&more_string")
119
120 //Get remaining file string
121 GOSUB get_file_string &stringOffset
122 ENTRY &more_string
123 &string="&string"+"&more_string"
124 )
125 else
126 (
127 &string="&string"+"&more_string"
128 &more_string=""
129 )
130 RETURN &string
131
132 load_symbol_file:
133 ENTRY &header &load_address
134 GOSUB valid_pe_header &header
135 ENTRY &result
136
137 IF &result==1
138 (
139 &debugOffset=Data.LONG(D:&header+0x0128)
140 &stringOffset=&header+&debugOffset+0x002C
141
142 &stringOffset=&stringOffset+11.
143
144 GOSUB get_file_string &stringOffset
145 ENTRY &filestring
146
147 &filestring="c:"+"&filestring"
148
149 PRINT "&filestring 0x" &load_address
150 Data.load.elf &filestring &load_address /nocode /noclear
151 )
152 RETURN
153
154 pe_headersize:
155 ENTRY &header;
156 RETURN Data.LONG(D:&header+0x00AC)
157
158 load_symbols:
159 ENTRY &mem_start &mem_size
160 GOSUB find_system_table &mem_start &mem_size
161 ENTRY &system_table
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)
166 &index=0
167 RPT &debug_info_table_size
168 (
169 &debug_image_info=Data.LONG(D:&debug_info_table+&index)
170 IF &debug_image_info==0
171 RETURN
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
175 ENTRY &header_size
176 &image_load_address=&image_base+&header_size
177 GOSUB load_symbol_file &image_base &image_load_address
178 &index=&index+0x4
179 )
180
181 RETURN
182