2 * File cvconst.h - MS debug information
4 * Copyright (C) 2004, Eric Pouech
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
21 /* information in this file is highly derived from MSDN DIA information pages */
23 /* symbols & types enumeration */
29 SymTagCompilandDetails
,
46 SymTagFunctionArgType
,
90 /* where a SymTagData is */
106 /* kind of SymTagData */
121 /* values for registers (on different CPUs) */
124 /* those values are common to all supported CPUs (and CPU independent) */
125 CV_ALLREG_ERR
= 30000,
126 CV_ALLREG_TEB
= 30001,
127 CV_ALLREG_TIMER
= 30002,
128 CV_ALLREG_EFAD1
= 30003,
129 CV_ALLREG_EFAD2
= 30004,
130 CV_ALLREG_EFAD3
= 30005,
131 CV_ALLREG_VFRAME
= 30006,
132 CV_ALLREG_HANDLE
= 30007,
133 CV_ALLREG_PARAMS
= 30008,
134 CV_ALLREG_LOCALS
= 30009,
177 CV_REG_PCDR3
= 43, /* this includes PCDR4 to PCDR7 */
178 CV_REG_CR0
= 80, /* this includes CR1 to CR4 */
179 CV_REG_DR0
= 90, /* this includes DR1 to DR7 */
189 CV_REG_PSEUDO1
= 116, /* this includes Pseudo02 to Pseudo09 */
190 CV_REG_ST0
= 128, /* this includes ST1 to ST7 */
201 CV_REG_MM0
= 146, /* this includes MM1 to MM7 */
202 CV_REG_XMM0
= 154, /* this includes XMM1 to XMM7 */
204 CV_REG_XMM0L
= 194, /* this includes XMM1L to XMM7L */
205 CV_REG_XMM0H
= 202, /* this includes XMM1H to XMM7H */
227 /* Motorola 68K CPU */
228 CV_R68_D0
= 0, /* this includes D1 to D7 too */
229 CV_R68_A0
= 8, /* this includes A1 to A7 too */
244 CV_R68_FP0
= 32, /* this includes FP1 to FP7 */
245 CV_R68_MMUSR030
= 41,
264 CV_R68_BAD0
= 64, /* this includes BAD1 to BAD7 */
265 CV_R68_BAC0
= 72, /* this includes BAC1 to BAC7 */
268 CV_M4_NOREG
= CV_REG_NONE
,
273 CV_M4_IntA0
= 14, /* this includes IntA1 to IntA3 */
274 CV_M4_IntT0
= 18, /* this includes IntT1 to IntT7 */
275 CV_M4_IntS0
= 26, /* this includes IntS1 to IntS7 */
288 CV_M4_FltF0
= 60, /* this includes FltF1 to Flt31 */
292 CV_ALPHA_NOREG
= CV_REG_NONE
,
293 CV_ALPHA_FltF0
= 10, /* this includes FltF1 to FltF31 */
295 CV_ALPHA_IntT0
= 43, /* this includes T1 to T7 */
296 CV_ALPHA_IntS0
= 51, /* this includes S1 to S5 */
298 CV_ALPHA_IntA0
= 58, /* this includes A1 to A5 */
301 CV_ALPHA_IntT10
= 66,
302 CV_ALPHA_IntT11
= 67,
304 CV_ALPHA_IntT12
= 69,
308 CV_ALPHA_IntZERO
= 73,
312 CV_ALPHA_FltFsr
= 77,
313 CV_ALPHA_SoftFpcr
= 78,
315 /* Motorola & IBM PowerPC CPU */
316 CV_PPC_GPR0
= 1, /* this includes GPR1 to GPR31 */
318 CV_PPC_CR0
= 34, /* this includes CR1 to CR7 */
319 CV_PPC_FPR0
= 42, /* this includes FPR1 to FPR31 */
323 CV_PPC_SR0
= 76, /* this includes SR1 to SR15 */
324 /* some PPC registers missing */
326 /* Hitachi SH3 CPU */
327 CV_SH3_NOREG
= CV_REG_NONE
,
328 CV_SH3_IntR0
= 10, /* this include R1 to R13 */
350 CV_SH_FpR0
= 80, /* this includes FpR1 to FpR15 */
351 CV_SH_XFpR0
= 96, /* this includes XFpR1 to XXFpR15 */
354 CV_ARM_NOREG
= CV_REG_NONE
,
355 CV_ARM_R0
= 10, /* this includes R1 to R12 */
362 CV_IA64_NOREG
= CV_REG_NONE
,
363 CV_IA64_Br0
= 512, /* this includes Br1 to Br7 */
364 CV_IA64_P0
= 704, /* this includes P1 to P63 */
366 CV_IA64_IntH0
= 832, /* this includes H1 to H15 */
368 CV_IA64_Umask
= 1017,
372 CV_IA64_Nats2
= 1021,
373 CV_IA64_Nats3
= 1022,
374 CV_IA64_IntR0
= 1024, /* this includes R1 to R127 */
375 CV_IA64_FltF0
= 2048, /* this includes FltF1 to FltF127 */
376 /* some IA64 registers missing */
379 CV_TRI_NOREG
= CV_REG_NONE
,
380 CV_TRI_D0
= 10, /* includes D1 to D15 */
381 CV_TRI_A0
= 26, /* includes A1 to A15 */
398 /* some TriCode registers missing */
400 /* AM33 (and the likes) CPU */
401 CV_AM33_NOREG
= CV_REG_NONE
,
402 CV_AM33_E0
= 10, /* this includes E1 to E7 */
403 CV_AM33_A0
= 20, /* this includes A1 to A3 */
404 CV_AM33_D0
= 30, /* this includes D1 to D3 */
405 CV_AM33_FS0
= 40, /* this includes FS1 to FS31 */
407 /* Mitsubishi M32R CPU */
408 CV_M32R_NOREG
= CV_REG_NONE
,
409 CV_M32R_R0
= 10, /* this includes R1 to R11 */
424 /* AMD/Intel x86_64 CPU */
425 CV_AMD64_NONE
= CV_REG_NONE
,
426 CV_AMD64_AL
= CV_REG_AL
,
427 CV_AMD64_CL
= CV_REG_CL
,
428 CV_AMD64_DL
= CV_REG_DL
,
429 CV_AMD64_BL
= CV_REG_BL
,
430 CV_AMD64_AH
= CV_REG_AH
,
431 CV_AMD64_CH
= CV_REG_CH
,
432 CV_AMD64_DH
= CV_REG_DH
,
433 CV_AMD64_BH
= CV_REG_BH
,
434 CV_AMD64_AX
= CV_REG_AX
,
435 CV_AMD64_CX
= CV_REG_CX
,
436 CV_AMD64_DX
= CV_REG_DX
,
437 CV_AMD64_BX
= CV_REG_BX
,
438 CV_AMD64_SP
= CV_REG_SP
,
439 CV_AMD64_BP
= CV_REG_BP
,
440 CV_AMD64_SI
= CV_REG_SI
,
441 CV_AMD64_DI
= CV_REG_DI
,
442 CV_AMD64_EAX
= CV_REG_EAX
,
443 CV_AMD64_ECX
= CV_REG_ECX
,
444 CV_AMD64_EDX
= CV_REG_EDX
,
445 CV_AMD64_EBX
= CV_REG_EBX
,
446 CV_AMD64_ESP
= CV_REG_ESP
,
447 CV_AMD64_EBP
= CV_REG_EBP
,
448 CV_AMD64_ESI
= CV_REG_ESI
,
449 CV_AMD64_EDI
= CV_REG_EDI
,
450 CV_AMD64_ES
= CV_REG_ES
,
451 CV_AMD64_CS
= CV_REG_CS
,
452 CV_AMD64_SS
= CV_REG_SS
,
453 CV_AMD64_DS
= CV_REG_DS
,
454 CV_AMD64_FS
= CV_REG_FS
,
455 CV_AMD64_GS
= CV_REG_GS
,
456 CV_AMD64_FLAGS
= CV_REG_FLAGS
,
457 CV_AMD64_RIP
= CV_REG_EIP
,
458 CV_AMD64_EFLAGS
= CV_REG_EFLAGS
,
461 CV_AMD64_TEMP
= CV_REG_TEMP
,
462 CV_AMD64_TEMPH
= CV_REG_TEMPH
,
463 CV_AMD64_QUOTE
= CV_REG_QUOTE
,
464 CV_AMD64_PCDR3
= CV_REG_PCDR3
, /* this includes PCDR4 to PCDR7 */
465 CV_AMD64_CR0
= CV_REG_CR0
, /* this includes CR1 to CR4 */
466 CV_AMD64_DR0
= CV_REG_DR0
, /* this includes DR1 to DR7 */
469 CV_AMD64_GDTR
= CV_REG_GDTR
,
470 CV_AMD64_GDTL
= CV_REG_GDTL
,
471 CV_AMD64_IDTR
= CV_REG_IDTR
,
472 CV_AMD64_IDTL
= CV_REG_IDTL
,
473 CV_AMD64_LDTR
= CV_REG_LDTR
,
474 CV_AMD64_TR
= CV_REG_TR
,
476 CV_AMD64_PSEUDO1
= CV_REG_PSEUDO1
, /* this includes Pseudo02 to Pseudo09 */
477 CV_AMD64_ST0
= CV_REG_ST0
, /* this includes ST1 to ST7 */
478 CV_AMD64_CTRL
= CV_REG_CTRL
,
479 CV_AMD64_STAT
= CV_REG_STAT
,
480 CV_AMD64_TAG
= CV_REG_TAG
,
481 CV_AMD64_FPIP
= CV_REG_FPIP
,
482 CV_AMD64_FPCS
= CV_REG_FPCS
,
483 CV_AMD64_FPDO
= CV_REG_FPDO
,
484 CV_AMD64_FPDS
= CV_REG_FPDS
,
485 CV_AMD64_ISEM
= CV_REG_ISEM
,
486 CV_AMD64_FPEIP
= CV_REG_FPEIP
,
487 CV_AMD64_FPEDO
= CV_REG_FPEDO
,
488 CV_AMD64_MM0
= CV_REG_MM0
, /* this includes MM1 to MM7 */
489 CV_AMD64_XMM0
= CV_REG_XMM0
, /* this includes XMM1 to XMM7 */
490 CV_AMD64_XMM00
= CV_REG_XMM00
,
491 CV_AMD64_XMM0L
= CV_REG_XMM0L
, /* this includes XMM1L to XMM7L */
492 CV_AMD64_XMM0H
= CV_REG_XMM0H
, /* this includes XMM1H to XMM7H */
493 CV_AMD64_MXCSR
= CV_REG_MXCSR
,
494 CV_AMD64_EDXEAX
= CV_REG_EDXEAX
,
495 CV_AMD64_EMM0L
= CV_REG_EMM0L
,
496 CV_AMD64_EMM0H
= CV_REG_EMM0H
,
497 CV_AMD64_MM00
= CV_REG_MM00
,
498 CV_AMD64_MM01
= CV_REG_MM01
,
499 CV_AMD64_MM10
= CV_REG_MM10
,
500 CV_AMD64_MM11
= CV_REG_MM11
,
501 CV_AMD64_MM20
= CV_REG_MM20
,
502 CV_AMD64_MM21
= CV_REG_MM21
,
503 CV_AMD64_MM30
= CV_REG_MM30
,
504 CV_AMD64_MM31
= CV_REG_MM31
,
505 CV_AMD64_MM40
= CV_REG_MM40
,
506 CV_AMD64_MM41
= CV_REG_MM41
,
507 CV_AMD64_MM50
= CV_REG_MM50
,
508 CV_AMD64_MM51
= CV_REG_MM51
,
509 CV_AMD64_MM60
= CV_REG_MM60
,
510 CV_AMD64_MM61
= CV_REG_MM61
,
511 CV_AMD64_MM70
= CV_REG_MM70
,
512 CV_AMD64_MM71
= CV_REG_MM71
,
514 CV_AMD64_XMM8
= 252, /* this includes XMM9 to XMM15 */
535 CV_SPARC_NOREG
= CV_REG_NONE
,
536 CV_SPARC_G0
= 10, /* includes g0 to g7 */
537 CV_SPARC_O0
= 18, /* includes o0 to o7 */
538 CV_SPARC_L0
= 26, /* includes l0 to l7 */
539 CV_SPARC_I0
= 34, /* includes i0 to i7 */
550 THUNK_ORDINAL_NOTYPE
,
551 THUNK_ORDINAL_ADJUSTOR
,
557 typedef enum CV_call_e