|
1 # MIPS/IRIX ISA/ABI |
|
2 # Used to configure dwarfdump printing of .debug_frame and |
|
3 # .eh_frame. |
|
4 |
|
5 # Any number of abi's can be described. Only one can be selected |
|
6 # in a given darfdump run (see dwarfdump options) |
|
7 # Available commands are |
|
8 # beginabi: <abiname> |
|
9 # reg: <regname> <dwarf regnumber> |
|
10 # frame_interface: <integer value 2 or 3> |
|
11 # cfa_reg: <number> |
|
12 # initial_reg_value: <number: normally 1034 or 1035 > |
|
13 # reg_table_size: <size of table> |
|
14 # endabi: <abiname> |
|
15 # |
|
16 # Symbolic names do not work here, use literal numbers |
|
17 # where applicable (in C standard decimal, octal (leading 0) or |
|
18 # hexadecimal <leading 0x>). |
|
19 # |
|
20 # Whitespace is required to separate command: from operands and |
|
21 # operands from each other on a line. |
|
22 # |
|
23 # There is no ordering required within a beginabi/endabi pair. |
|
24 # As many ABIs as required may be listed. |
|
25 # dwarfdump will choose exactly one abi to dump frame information. |
|
26 # |
|
27 |
|
28 |
|
29 # Here using MIPS abi as an example to describe |
|
30 # the format. The MIPS/IRIX ABI is built-in to dwarfdump, so this one |
|
31 # is not really required. |
|
32 # Begin with abi name (use here and on dwarfdump command line). |
|
33 beginabi: mips |
|
34 |
|
35 # Instructs dwarfdump to default to the older frame interface. |
|
36 # Use value 3 to use the newer interface. |
|
37 # The '2' interface is supported but deprecated (deprecated |
|
38 # because it cannot work with all popular ABIs: mixing |
|
39 # the cfa-rule into the table column set was not a good idea |
|
40 # but it is part of the MIPS/IRIX standard usage). |
|
41 frame_interface: 2 |
|
42 |
|
43 # If (and only if) using frame_interface: 2 tell dwarfdump |
|
44 # what table colum that DW_FRAME_CFA_COL is. |
|
45 # If using frame_interface: 3 cfa_reg: should be |
|
46 # DW_FRAME_CFA_COL3 (1036) |
|
47 cfa_reg: 0 |
|
48 |
|
49 # For MIPS, the same as DW_FRAME_SAME_VAL (1035). |
|
50 # For other ISA/ABIs 1034 (DW_FRAME_UNDEFINED_VAL) might be better. |
|
51 # Depends on the ABI convention, if set wrong way too many |
|
52 # regs will be listed in the frame output. |
|
53 # This instructs dwarfdump to set libdwarf to this value, |
|
54 # overriding the libdwarf default. |
|
55 # If initial_reg_value not set the libdwarf default is used |
|
56 # (see libdwarf.h DW_FRAME_REG_INITIAL_VALUE). |
|
57 initial_reg_value: 1035 # DW_FRAME_SAME_VAL |
|
58 |
|
59 # Built in to frame_interface: 2 as 66. |
|
60 reg_table_size: 66 |
|
61 |
|
62 |
|
63 # Only name registers for wich a r4 (for example) is not what you |
|
64 # want to see |
|
65 # No particular order of the reg: lines required. |
|
66 reg: cfa 0 # Used with MIPS/IRIX original DWARF2 interface |
|
67 reg: r1/at 1 |
|
68 reg: r2/v0 2 |
|
69 reg: r3/v1 3 |
|
70 reg: r4/a0 4 |
|
71 reg: r5/a1 5 |
|
72 reg: r6/a2 6 |
|
73 reg: r7/a3 7 |
|
74 reg: r8/t0 8 |
|
75 reg: r9/t1 9 |
|
76 reg: r10/t2 10 |
|
77 reg: r11/t3 11 |
|
78 reg: r12/t4 12 |
|
79 reg: r13/t5 13 |
|
80 reg: r14/t6 14 |
|
81 reg: r15/t7 15 |
|
82 reg: r16/s0 16 |
|
83 reg: r17/s1 17 |
|
84 reg: r18/s2 18 |
|
85 reg: r19/s3 19 |
|
86 reg: r20/s4 20 |
|
87 reg: r21/s5 21 |
|
88 reg: r22/s6 22 |
|
89 reg: r23/s7 23 |
|
90 reg: r24/t8 24 |
|
91 reg: r25/t9 25 |
|
92 reg: r26/k0 26 |
|
93 reg: r27/k1 27 |
|
94 reg: r28/gp 28 |
|
95 reg: r29/sp 29 |
|
96 reg: r30/s8 30 |
|
97 reg: r31 31 |
|
98 |
|
99 reg: $f0 32 |
|
100 reg: $f1 33 |
|
101 reg: $f2 34 |
|
102 reg: $f3 35 |
|
103 reg: $f4 36 |
|
104 reg: $f5 37 |
|
105 reg: $f6 38 |
|
106 reg: $f7 39 |
|
107 reg: $f8 40 |
|
108 reg: $f9 41 |
|
109 reg: $f10 42 |
|
110 reg: $f11 43 |
|
111 reg: $f12 44 |
|
112 reg: $f13 45 |
|
113 reg: $f14 46 |
|
114 reg: $f15 47 |
|
115 reg: $f16 48 |
|
116 reg: $f17 49 |
|
117 reg: $f18 50 |
|
118 reg: $f19 51 |
|
119 reg: $f20 52 |
|
120 reg: $f21 53 |
|
121 reg: $f22 54 |
|
122 reg: $f23 55 |
|
123 reg: $f24 56 |
|
124 reg: $f25 57 |
|
125 reg: $f26 58 |
|
126 reg: $f27 59 |
|
127 reg: $f28 60 |
|
128 reg: $f29 61 |
|
129 reg: $f30 62 |
|
130 reg: $f31 63 |
|
131 reg: ra 64 |
|
132 reg: slk 65 |
|
133 |
|
134 |
|
135 # End of abi definition. |
|
136 endabi: mips |
|
137 |
|
138 |
|
139 |
|
140 |
|
141 |
|
142 |
|
143 # MIPS/IRIX ISA/ABI for testing libdwarf. |
|
144 beginabi: mips-simple |
|
145 frame_interface: 2 |
|
146 reg_table_size: 66 |
|
147 cfa_reg: 0 |
|
148 initial_reg_value: 1035 |
|
149 |
|
150 reg: cfa 0 # Used with MIPS/IRIX original DWARF2 interface |
|
151 reg: ra 64 |
|
152 reg: slk 65 |
|
153 |
|
154 # End of abi definition. |
|
155 endabi: mips-simple |
|
156 |
|
157 # MIPS/IRIX ISA/ABI for testing the new frame interface |
|
158 # with libdwarf. |
|
159 beginabi: mips-simple3 |
|
160 frame_interface: 3 |
|
161 |
|
162 # When using frame_interface: 3 the size of the register table |
|
163 # is not fixed. It can be as large as needed. |
|
164 reg_table_size: 66 |
|
165 cfa_reg: 1036 # DW_FRAME_CFA_COL3 |
|
166 initial_reg_value: 1035 |
|
167 |
|
168 # No cfa as a 'normal' register. |
|
169 # Rule 0 is just register 0, which is not used |
|
170 # in frame descriptions. |
|
171 # (so cfa does not have a number here, and dwarfdump gives |
|
172 # it the name 'cfa' automatically). |
|
173 reg: ra 64 |
|
174 reg: slk 65 |
|
175 # End of abi definition. |
|
176 endabi: mips-simple3 |
|
177 |
|
178 |
|
179 beginabi: ia64 |
|
180 frame_interface: 3 |
|
181 initial_reg_value: 1034 # DW_FRAME_UNDEFINED_VAL |
|
182 cfa_reg: 1036 # DW_FRAME_CFA_COL3 |
|
183 reg_table_size: 695 |
|
184 |
|
185 # The following register names are not necessarily correct... |
|
186 # Register indexes r32-r127 not used. |
|
187 reg: f0 128 |
|
188 # ... |
|
189 reg: f127 255 |
|
190 reg: b0 321 |
|
191 reg: b1 322 |
|
192 reg: b2 323 |
|
193 reg: b3 324 |
|
194 reg: b4 325 |
|
195 reg: b5 326 |
|
196 reg: b6 327 |
|
197 reg: b7 328 |
|
198 reg: vfp 329 |
|
199 reg: vrap 330 |
|
200 reg: pr 331 |
|
201 reg: ip 332 |
|
202 reg: psr 333 |
|
203 reg: cfm 334 |
|
204 reg: k0 335 |
|
205 reg: k1 336 |
|
206 reg: k2 337 |
|
207 reg: k3 338 |
|
208 reg: k4 339 |
|
209 reg: k5 340 |
|
210 reg: k6 341 |
|
211 reg: k7 342 |
|
212 reg: rsc 350 |
|
213 reg: bsp 351 |
|
214 reg: bspstore 352 |
|
215 reg: rnat 353 |
|
216 reg: fcr 355 |
|
217 reg: eflag 358 |
|
218 reg: csd 359 |
|
219 reg: ssd 360 |
|
220 reg: cflg 361 |
|
221 reg: fsr 362 |
|
222 reg: fir 363 |
|
223 reg: fdr 364 |
|
224 reg: pfs 398 |
|
225 reg: lc 399 |
|
226 reg: ec 400 |
|
227 |
|
228 endabi: ia64 |
|
229 |
|
230 |
|
231 beginabi: x86 |
|
232 frame_interface: 3 |
|
233 initial_reg_value: 1035 # DW_FRAME_SAME_VAL |
|
234 reg_table_size: 66 # more than large enough, hopefully. |
|
235 cfa_reg: 1036 # DW_FRAME_CFA_COL3 |
|
236 |
|
237 # The following register names are not necessarily correct... |
|
238 reg: eax 0 |
|
239 reg: ecx 1 |
|
240 reg: edx 2 |
|
241 reg: ebx 3 |
|
242 reg: esp 4 |
|
243 reg: ebp 5 |
|
244 reg: esi 6 |
|
245 reg: edi 7 |
|
246 reg: eip 8 |
|
247 reg: eflags 9 |
|
248 |
|
249 reg: trapno 10 |
|
250 reg: st0 11 |
|
251 reg: st1 12 |
|
252 reg: st2 13 |
|
253 reg: st3 14 |
|
254 reg: st4 15 |
|
255 reg: st5 16 |
|
256 reg: st6 17 |
|
257 reg: st7 18 |
|
258 # 19 is ? 20 is ? |
|
259 reg: xmm0 21 |
|
260 reg: xmm1 22 |
|
261 reg: xmm2 23 |
|
262 reg: xmm3 24 |
|
263 reg: xmm4 25 |
|
264 reg: xmm5 26 |
|
265 reg: xmm6 27 |
|
266 reg: xmm7 28 |
|
267 |
|
268 reg: mm0 29 |
|
269 reg: mm1 30 |
|
270 reg: mm2 31 |
|
271 reg: mm3 32 |
|
272 reg: mm4 33 |
|
273 reg: mm5 34 |
|
274 reg: mm6 35 |
|
275 reg: mm7 36 |
|
276 |
|
277 reg: fcw 37 |
|
278 reg: fsw 38 |
|
279 reg: mxcsr 39 |
|
280 |
|
281 reg: es 40 |
|
282 reg: cs 41 |
|
283 reg: ss 42 |
|
284 reg: ds 43 |
|
285 reg: fs 44 |
|
286 reg: gs 45 |
|
287 # 46 47 are ? |
|
288 reg: tr 48 |
|
289 reg: ldtr 49 |
|
290 |
|
291 |
|
292 endabi: x86 |
|
293 |
|
294 |
|
295 beginabi: x86_64 |
|
296 frame_interface: 3 |
|
297 initial_reg_value: 1035 # DW_FRAME_SAME_VAL |
|
298 reg_table_size: 66 # more than large enough, hopefully. |
|
299 cfa_reg: 1036 # DW_FRAME_CFA_COL3 |
|
300 |
|
301 # The following register names are not necessarily correct... |
|
302 reg: rax 0 |
|
303 reg: rdx 1 |
|
304 reg: rcx 2 |
|
305 reg: rbx 3 |
|
306 reg: rsi 4 |
|
307 reg: rdi 5 |
|
308 reg: rbp 6 |
|
309 reg: rsp 7 |
|
310 reg: r8 8 |
|
311 reg: r9 9 |
|
312 reg: r10 10 |
|
313 reg: r11 11 |
|
314 reg: r12 12 |
|
315 reg: r13 13 |
|
316 reg: r14 14 |
|
317 reg: r15 15 |
|
318 reg: rip 16 |
|
319 reg: xmm0 17 |
|
320 reg: xmm1 18 |
|
321 reg: xmm2 19 |
|
322 reg: xmm3 20 |
|
323 reg: xmm4 21 |
|
324 reg: xmm5 22 |
|
325 reg: xmm6 23 |
|
326 reg: xmm7 24 |
|
327 reg: xmm8 25 |
|
328 reg: xmm9 26 |
|
329 reg: xmm10 27 |
|
330 reg: xmm11 28 |
|
331 reg: xmm12 29 |
|
332 reg: xmm13 30 |
|
333 reg: xmm14 31 |
|
334 reg: xmm15 32 |
|
335 |
|
336 reg: st0 33 |
|
337 reg: st1 34 |
|
338 reg: st2 35 |
|
339 reg: st3 36 |
|
340 reg: st4 37 |
|
341 reg: st5 38 |
|
342 reg: st6 39 |
|
343 reg: st7 40 |
|
344 |
|
345 reg: mm0 41 |
|
346 reg: mm1 42 |
|
347 reg: mm2 43 |
|
348 reg: mm3 44 |
|
349 reg: mm4 45 |
|
350 reg: mm5 46 |
|
351 reg: mm6 47 |
|
352 reg: mm7 48 |
|
353 |
|
354 reg: rflags 49 |
|
355 reg: es 50 |
|
356 reg: cs 51 |
|
357 reg: ss 52 |
|
358 reg: ds 53 |
|
359 reg: fs 54 |
|
360 reg: gs 55 |
|
361 # 56, 57 are ? |
|
362 reg: fs.base 58 |
|
363 reg: gs.base 59 |
|
364 # 60 61 are ? |
|
365 reg: tr 62 |
|
366 reg: ldtr 63 |
|
367 |
|
368 endabi: x86_64 |
|
369 |
|
370 beginabi: m68k |
|
371 frame_interface: 3 |
|
372 initial_reg_value: 1035 # DW_FRAME_SAME_VAL |
|
373 reg_table_size: 66 # more than large enough, hopefully. |
|
374 cfa_reg: 1036 # DW_FRAME_CFA_COL3 |
|
375 |
|
376 reg: d0 0 |
|
377 reg: d1 1 |
|
378 reg: d2 2 |
|
379 reg: d3 3 |
|
380 reg: d4 4 |
|
381 reg: d5 5 |
|
382 reg: d6 6 |
|
383 reg: d7 7 |
|
384 |
|
385 reg: a0 8 |
|
386 reg: a1 9 |
|
387 reg: a2 10 |
|
388 reg: a3 11 |
|
389 reg: a4 12 |
|
390 reg: a5 13 |
|
391 reg: a6 14 |
|
392 reg: sp 15 |
|
393 |
|
394 reg: fp0 16 |
|
395 reg: fp1 17 |
|
396 reg: fp2 18 |
|
397 reg: fp3 19 |
|
398 reg: fp4 20 |
|
399 reg: fp5 21 |
|
400 reg: fp6 22 |
|
401 reg: pc 23 |
|
402 |
|
403 endabi: m68k |
|
404 |
|
405 # 'Generic 1000 register abi'. |
|
406 # This is useful as a 'general' ABI settings for |
|
407 # cpus using up to 1000 registers. The register names |
|
408 # show as a number, like 'r991'. |
|
409 beginabi: generic |
|
410 frame_interface: 3 |
|
411 initial_reg_value: 1035 # DW_FRAME_SAME_VAL |
|
412 cfa_reg: 1036 # DW_FRAME_CFA_COL3 |
|
413 reg_table_size: 1000 |
|
414 reg: r0 0 |
|
415 endabi: generic |