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,
535 THUNK_ORDINAL_NOTYPE,
536 THUNK_ORDINAL_ADJUSTOR,
542 typedef enum CV_call_e