2 * File cvconst.h - MS debug information
4 * Copyright (C) 2004, Eric Pouech
5 * Copyright (C) 2012, André Hentschel
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
22 /* information in this file is highly derived from MSDN DIA information pages */
24 /* symbols & types enumeration */
30 SymTagCompilandDetails
,
47 SymTagFunctionArgType
,
93 /* where a SymTagData is */
109 /* kind of SymTagData */
124 /* values for registers (on different CPUs) */
127 /* those values are common to all supported CPUs (and CPU independent) */
128 CV_ALLREG_ERR
= 30000,
129 CV_ALLREG_TEB
= 30001,
130 CV_ALLREG_TIMER
= 30002,
131 CV_ALLREG_EFAD1
= 30003,
132 CV_ALLREG_EFAD2
= 30004,
133 CV_ALLREG_EFAD3
= 30005,
134 CV_ALLREG_VFRAME
= 30006,
135 CV_ALLREG_HANDLE
= 30007,
136 CV_ALLREG_PARAMS
= 30008,
137 CV_ALLREG_LOCALS
= 30009,
138 CV_ALLREG_TID
= 30010,
139 CV_ALLREG_ENV
= 30011,
140 CV_ALLREG_CMDLN
= 30012,
183 CV_REG_PCDR3
= 43, /* this includes PCDR4 to PCDR7 */
184 CV_REG_CR0
= 80, /* this includes CR1 to CR4 */
185 CV_REG_DR0
= 90, /* this includes DR1 to DR7 */
195 CV_REG_PSEUDO1
= 116, /* this includes Pseudo02 to Pseudo09 */
196 CV_REG_ST0
= 128, /* this includes ST1 to ST7 */
207 CV_REG_MM0
= 146, /* this includes MM1 to MM7 */
208 CV_REG_XMM0
= 154, /* this includes XMM1 to XMM7 */
210 CV_REG_XMM0L
= 194, /* this includes XMM1L to XMM7L */
211 CV_REG_XMM0H
= 202, /* this includes XMM1H to XMM7H */
233 CV_REG_YMM0
= 252, /* this includes YMM1 to YMM7 */
234 CV_REG_YMM0H
= 260, /* this includes YMM1H to YMM7H */
235 CV_REG_YMM0I0
= 268, /* this includes YMM0I1 to YMM0I3 */
236 CV_REG_YMM1I0
= 272, /* this includes YMM1I1 to YMM1I3 */
237 CV_REG_YMM2I0
= 276, /* this includes YMM2I1 to YMM2I3 */
238 CV_REG_YMM3I0
= 280, /* this includes YMM3I1 to YMM3I3 */
239 CV_REG_YMM4I0
= 284, /* this includes YMM4I1 to YMM4I3 */
240 CV_REG_YMM5I0
= 288, /* this includes YMM5I1 to YMM5I3 */
241 CV_REG_YMM6I0
= 292, /* this includes YMM6I1 to YMM6I3 */
242 CV_REG_YMM7I0
= 296, /* this includes YMM7I1 to YMM7I3 */
243 CV_REG_YMM0F0
= 300, /* this includes YMM0F1 to YMM0F7 */
244 CV_REG_YMM1F0
= 308, /* this includes YMM1F1 to YMM1F7 */
245 CV_REG_YMM2F0
= 316, /* this includes YMM2F1 to YMM2F7 */
246 CV_REG_YMM3F0
= 324, /* this includes YMM3F1 to YMM3F7 */
247 CV_REG_YMM4F0
= 332, /* this includes YMM4F1 to YMM4F7 */
248 CV_REG_YMM5F0
= 340, /* this includes YMM5F1 to YMM5F7 */
249 CV_REG_YMM6F0
= 348, /* this includes YMM6F1 to YMM6F7 */
250 CV_REG_YMM7F0
= 356, /* this includes YMM7F1 to YMM7F7 */
251 CV_REG_YMM0D0
= 364, /* this includes YMM0D1 to YMM0D3 */
252 CV_REG_YMM1D0
= 368, /* this includes YMM1D1 to YMM1D3 */
253 CV_REG_YMM2D0
= 372, /* this includes YMM2D1 to YMM2D3 */
254 CV_REG_YMM3D0
= 376, /* this includes YMM3D1 to YMM3D3 */
255 CV_REG_YMM4D0
= 380, /* this includes YMM4D1 to YMM4D3 */
256 CV_REG_YMM5D0
= 384, /* this includes YMM5D1 to YMM5D3 */
257 CV_REG_YMM6D0
= 388, /* this includes YMM6D1 to YMM6D3 */
258 CV_REG_YMM7D0
= 392, /* this includes YMM7D1 to YMM7D3 */
260 /* Motorola 68K CPU */
261 CV_R68_D0
= 0, /* this includes D1 to D7 too */
262 CV_R68_A0
= 8, /* this includes A1 to A7 too */
277 CV_R68_FP0
= 32, /* this includes FP1 to FP7 */
278 CV_R68_MMUSR030
= 41,
297 CV_R68_BAD0
= 64, /* this includes BAD1 to BAD7 */
298 CV_R68_BAC0
= 72, /* this includes BAC1 to BAC7 */
301 CV_M4_NOREG
= CV_REG_NONE
,
306 CV_M4_IntA0
= 14, /* this includes IntA1 to IntA3 */
307 CV_M4_IntT0
= 18, /* this includes IntT1 to IntT7 */
308 CV_M4_IntS0
= 26, /* this includes IntS1 to IntS7 */
321 CV_M4_FltF0
= 60, /* this includes FltF1 to Flt31 */
325 CV_ALPHA_NOREG
= CV_REG_NONE
,
326 CV_ALPHA_FltF0
= 10, /* this includes FltF1 to FltF31 */
328 CV_ALPHA_IntT0
= 43, /* this includes T1 to T7 */
329 CV_ALPHA_IntS0
= 51, /* this includes S1 to S5 */
331 CV_ALPHA_IntA0
= 58, /* this includes A1 to A5 */
334 CV_ALPHA_IntT10
= 66,
335 CV_ALPHA_IntT11
= 67,
337 CV_ALPHA_IntT12
= 69,
341 CV_ALPHA_IntZERO
= 73,
345 CV_ALPHA_FltFsr
= 77,
346 CV_ALPHA_SoftFpcr
= 78,
348 /* Motorola & IBM PowerPC CPU */
349 CV_PPC_GPR0
= 1, /* this includes GPR1 to GPR31 */
351 CV_PPC_CR0
= 34, /* this includes CR1 to CR7 */
352 CV_PPC_FPR0
= 42, /* this includes FPR1 to FPR31 */
356 CV_PPC_SR0
= 76, /* this includes SR1 to SR15 */
364 CV_PPC_COMPARE
= 110,
372 CV_PPC_SPRG0
= 372, /* this includes SPRG1 to SPRG3 */
392 CV_PPC_PMR0
= 1044, /* this includes PMR1 to PMR15 */
400 CV_PPC_HID0
= 1108, /* this includes HID1 to HID15 */
405 /* Hitachi SH3 CPU */
406 CV_SH3_NOREG
= CV_REG_NONE
,
407 CV_SH3_IntR0
= 10, /* this include R1 to R13 */
429 CV_SH_FpR0
= 80, /* this includes FpR1 to FpR15 */
430 CV_SH_XFpR0
= 96, /* this includes XFpR1 to XXFpR15 */
433 CV_ARM_NOREG
= CV_REG_NONE
,
434 CV_ARM_R0
= 10, /* this includes R1 to R12 */
442 CV_ARM_FS0
= 50, /* this includes FS1 to FS31 */
443 CV_ARM_FPEXTRA0
= 90, /* this includes FPEXTRA1 to FPEXTRA7 */
444 CV_ARM_WR0
= 128, /* this includes WR1 to WR15 */
453 CV_ARM_WCGR0
= 152, /* this includes WCGR1 to WCGR3 */
458 CV_ARM_FS32
= 200, /* this includes FS33 to FS63 */
459 CV_ARM_ND0
= 300, /* this includes ND1 to ND31 */
460 CV_ARM_NQ0
= 400, /* this includes NQ1 to NQ15 */
463 CV_ARM64_NOREG
= CV_REG_NONE
,
464 CV_ARM64_W0
= 10, /* this includes W0 to W30 */
466 CV_ARM64_PC
= 42, /* Wine extension */
467 CV_ARM64_PSTATE
= 43, /* Wine extension */
468 CV_ARM64_X0
= 50, /* this includes X0 to X28 */
469 CV_ARM64_IP0
= 66, /* Same as X16 */
470 CV_ARM64_IP1
= 67, /* Same as X17 */
476 CV_ARM64_S0
= 100, /* this includes S0 to S31 */
477 CV_ARM64_D0
= 140, /* this includes D0 to D31 */
478 CV_ARM64_Q0
= 180, /* this includes Q0 to Q31 */
482 CV_IA64_NOREG
= CV_REG_NONE
,
483 CV_IA64_Br0
= 512, /* this includes Br1 to Br7 */
484 CV_IA64_P0
= 704, /* this includes P1 to P63 */
486 CV_IA64_IntH0
= 832, /* this includes H1 to H15 */
488 CV_IA64_Umask
= 1017,
492 CV_IA64_Nats2
= 1021,
493 CV_IA64_Nats3
= 1022,
494 CV_IA64_IntR0
= 1024, /* this includes R1 to R127 */
495 CV_IA64_FltF0
= 2048, /* this includes FltF1 to FltF127 */
496 /* some IA64 registers missing */
499 CV_TRI_NOREG
= CV_REG_NONE
,
500 CV_TRI_D0
= 10, /* includes D1 to D15 */
501 CV_TRI_A0
= 26, /* includes A1 to A15 */
528 CV_TRI_DPRx_0
= 68, /* includes DPRx_1 to DPRx_3 */
529 CV_TRI_CPRx_0
= 68, /* includes CPRx_1 to CPRx_3 */
530 CV_TRI_DPMx_0
= 68, /* includes DPMx_1 to DPMx_3 */
531 CV_TRI_CPMx_0
= 68, /* includes CPMx_1 to CPMx_3 */
544 /* AM33 (and the likes) CPU */
545 CV_AM33_NOREG
= CV_REG_NONE
,
546 CV_AM33_E0
= 10, /* this includes E1 to E7 */
547 CV_AM33_A0
= 20, /* this includes A1 to A3 */
548 CV_AM33_D0
= 30, /* this includes D1 to D3 */
549 CV_AM33_FS0
= 40, /* this includes FS1 to FS31 */
562 /* Mitsubishi M32R CPU */
563 CV_M32R_NOREG
= CV_REG_NONE
,
564 CV_M32R_R0
= 10, /* this includes R1 to R11 */
579 /* AMD/Intel x86_64 CPU */
580 CV_AMD64_NONE
= CV_REG_NONE
,
581 CV_AMD64_AL
= CV_REG_AL
,
582 CV_AMD64_CL
= CV_REG_CL
,
583 CV_AMD64_DL
= CV_REG_DL
,
584 CV_AMD64_BL
= CV_REG_BL
,
585 CV_AMD64_AH
= CV_REG_AH
,
586 CV_AMD64_CH
= CV_REG_CH
,
587 CV_AMD64_DH
= CV_REG_DH
,
588 CV_AMD64_BH
= CV_REG_BH
,
589 CV_AMD64_AX
= CV_REG_AX
,
590 CV_AMD64_CX
= CV_REG_CX
,
591 CV_AMD64_DX
= CV_REG_DX
,
592 CV_AMD64_BX
= CV_REG_BX
,
593 CV_AMD64_SP
= CV_REG_SP
,
594 CV_AMD64_BP
= CV_REG_BP
,
595 CV_AMD64_SI
= CV_REG_SI
,
596 CV_AMD64_DI
= CV_REG_DI
,
597 CV_AMD64_EAX
= CV_REG_EAX
,
598 CV_AMD64_ECX
= CV_REG_ECX
,
599 CV_AMD64_EDX
= CV_REG_EDX
,
600 CV_AMD64_EBX
= CV_REG_EBX
,
601 CV_AMD64_ESP
= CV_REG_ESP
,
602 CV_AMD64_EBP
= CV_REG_EBP
,
603 CV_AMD64_ESI
= CV_REG_ESI
,
604 CV_AMD64_EDI
= CV_REG_EDI
,
605 CV_AMD64_ES
= CV_REG_ES
,
606 CV_AMD64_CS
= CV_REG_CS
,
607 CV_AMD64_SS
= CV_REG_SS
,
608 CV_AMD64_DS
= CV_REG_DS
,
609 CV_AMD64_FS
= CV_REG_FS
,
610 CV_AMD64_GS
= CV_REG_GS
,
611 CV_AMD64_FLAGS
= CV_REG_FLAGS
,
612 CV_AMD64_RIP
= CV_REG_EIP
,
613 CV_AMD64_EFLAGS
= CV_REG_EFLAGS
,
616 CV_AMD64_TEMP
= CV_REG_TEMP
,
617 CV_AMD64_TEMPH
= CV_REG_TEMPH
,
618 CV_AMD64_QUOTE
= CV_REG_QUOTE
,
619 CV_AMD64_PCDR3
= CV_REG_PCDR3
, /* this includes PCDR4 to PCDR7 */
620 CV_AMD64_CR0
= CV_REG_CR0
, /* this includes CR1 to CR4 */
621 CV_AMD64_DR0
= CV_REG_DR0
, /* this includes DR1 to DR7 */
624 CV_AMD64_GDTR
= CV_REG_GDTR
,
625 CV_AMD64_GDTL
= CV_REG_GDTL
,
626 CV_AMD64_IDTR
= CV_REG_IDTR
,
627 CV_AMD64_IDTL
= CV_REG_IDTL
,
628 CV_AMD64_LDTR
= CV_REG_LDTR
,
629 CV_AMD64_TR
= CV_REG_TR
,
631 CV_AMD64_PSEUDO1
= CV_REG_PSEUDO1
, /* this includes Pseudo02 to Pseudo09 */
632 CV_AMD64_ST0
= CV_REG_ST0
, /* this includes ST1 to ST7 */
633 CV_AMD64_CTRL
= CV_REG_CTRL
,
634 CV_AMD64_STAT
= CV_REG_STAT
,
635 CV_AMD64_TAG
= CV_REG_TAG
,
636 CV_AMD64_FPIP
= CV_REG_FPIP
,
637 CV_AMD64_FPCS
= CV_REG_FPCS
,
638 CV_AMD64_FPDO
= CV_REG_FPDO
,
639 CV_AMD64_FPDS
= CV_REG_FPDS
,
640 CV_AMD64_ISEM
= CV_REG_ISEM
,
641 CV_AMD64_FPEIP
= CV_REG_FPEIP
,
642 CV_AMD64_FPEDO
= CV_REG_FPEDO
,
643 CV_AMD64_MM0
= CV_REG_MM0
, /* this includes MM1 to MM7 */
644 CV_AMD64_XMM0
= CV_REG_XMM0
, /* this includes XMM1 to XMM7 */
645 CV_AMD64_XMM00
= CV_REG_XMM00
,
646 CV_AMD64_XMM0L
= CV_REG_XMM0L
, /* this includes XMM1L to XMM7L */
647 CV_AMD64_XMM0H
= CV_REG_XMM0H
, /* this includes XMM1H to XMM7H */
648 CV_AMD64_MXCSR
= CV_REG_MXCSR
,
649 CV_AMD64_EDXEAX
= CV_REG_EDXEAX
,
650 CV_AMD64_EMM0L
= CV_REG_EMM0L
,
651 CV_AMD64_EMM0H
= CV_REG_EMM0H
,
652 CV_AMD64_MM00
= CV_REG_MM00
,
653 CV_AMD64_MM01
= CV_REG_MM01
,
654 CV_AMD64_MM10
= CV_REG_MM10
,
655 CV_AMD64_MM11
= CV_REG_MM11
,
656 CV_AMD64_MM20
= CV_REG_MM20
,
657 CV_AMD64_MM21
= CV_REG_MM21
,
658 CV_AMD64_MM30
= CV_REG_MM30
,
659 CV_AMD64_MM31
= CV_REG_MM31
,
660 CV_AMD64_MM40
= CV_REG_MM40
,
661 CV_AMD64_MM41
= CV_REG_MM41
,
662 CV_AMD64_MM50
= CV_REG_MM50
,
663 CV_AMD64_MM51
= CV_REG_MM51
,
664 CV_AMD64_MM60
= CV_REG_MM60
,
665 CV_AMD64_MM61
= CV_REG_MM61
,
666 CV_AMD64_MM70
= CV_REG_MM70
,
667 CV_AMD64_MM71
= CV_REG_MM71
,
669 CV_AMD64_XMM8
= 252, /* this includes XMM9 to XMM15 */
692 THUNK_ORDINAL_NOTYPE
,
693 THUNK_ORDINAL_ADJUSTOR
,
699 typedef enum CV_call_e
729 typedef enum CV_CFL_LANG
750 typedef enum CV_CPU_TYPE_e
759 CV_CFL_PENTIUMPRO
= CV_CFL_PENTIUMII
,
762 CV_CFL_MIPSR4000
= CV_CFL_MIPS
,
771 CV_CFL_M68000
= 0x20,
777 CV_CFL_ALPHA_21064
= 0x30,
782 CV_CFL_PPC601
= 0x40,
803 CV_CFL_IA64_1
= 0x80,
808 CV_CFL_TRICORE
= 0xC0,
810 CV_CFL_AMD64
= CV_CFL_X64
,
815 CV_CFL_D3D11_SHADER
= 0x100,