Running ieplore with gecko's PDB installed [1] generates hundreds of FIXME:s.
This serie fixes a couple of them: - a couple of missing Codeview basic types in dbghelp - enumeration can hold quad dword. Fix in dbghelp includes passing a VARIANT instead of integer for storage (which is already done with a VARIANT) It has been limited so that only msc could emit VT_I8 values (dwarf should also, but it's has to be done after code freeze)
Some other fixme:s have just been silenced. They appear here with clang/pdb but have never been seen (to my knowledge) with neither gcc/dwarf nor msvc/pdb. Further investigation is required, but flooding the console with hundres of FIXME is not necessary.
[1] https://bugs.winehq.org/show_bug.cgi?id=46028#c13 ---
Eric Pouech (5): tools/winedump/msc: use the correct type for reading LF_(U)QUADWORD numeric leaves dbghelp/msc: silence some FIXME:s tools/winedump: support dumping quad word values in enumerations dbghelp: now passing VARIANT as enumerations values from debug-info backends dbghelp/msc: support and create a couple more of basic types
dlls/dbghelp/dbghelp_private.h | 2 +- dlls/dbghelp/dwarf.c | 6 +++++- dlls/dbghelp/msc.c | 32 +++++++++++++++++++++++++++----- dlls/dbghelp/stabs.c | 5 ++++- dlls/dbghelp/symbol.c | 2 +- dlls/dbghelp/type.c | 5 ++--- include/wine/mscvpdb.h | 32 ++++++++++++++++++++++++++++++-- tools/winedump/msc.c | 17 +++++++++-------- 8 files changed, 79 insertions(+), 22 deletions(-)
Signed-off-by: Eric Pouech eric.pouech@gmail.com
--- tools/winedump/msc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/winedump/msc.c b/tools/winedump/msc.c index f0856b2a6a2..9868770abbb 100644 --- a/tools/winedump/msc.c +++ b/tools/winedump/msc.c @@ -95,13 +95,13 @@ static int full_numeric_leaf(struct full_value* fv, const unsigned short int* le case LF_QUADWORD: length += 8; fv->type = fv_longlong; - fv->v.llu = *(const long long int*)leaf; + fv->v.llu = *(const long int*)leaf; break;
case LF_UQUADWORD: length += 8; fv->type = fv_longlong; - fv->v.llu = *(const long long unsigned int*)leaf; + fv->v.llu = *(const long unsigned int*)leaf; break;
case LF_REAL32:
Eric Pouech eric.pouech@gmail.com writes:
@@ -95,13 +95,13 @@ static int full_numeric_leaf(struct full_value* fv, const unsigned short int* le case LF_QUADWORD: length += 8; fv->type = fv_longlong;
fv->v.llu = *(const long long int*)leaf;
fv->v.llu = *(const long int*)leaf; break; case LF_UQUADWORD: length += 8; fv->type = fv_longlong;
fv->v.llu = *(const long long unsigned int*)leaf;
fv->v.llu = *(const long unsigned int*)leaf;
I don't think I see why 'long' would be the correct type here.
reading gecko's PDB generate a lot of those
Signed-off-by: Eric Pouech eric.pouech@gmail.com
--- dlls/dbghelp/msc.c | 2 +- dlls/dbghelp/symbol.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/dlls/dbghelp/msc.c b/dlls/dbghelp/msc.c index 894d01a4c00..317f7bb84b5 100644 --- a/dlls/dbghelp/msc.c +++ b/dlls/dbghelp/msc.c @@ -1926,7 +1926,7 @@ static struct symt_inlinesite* codeview_create_inline_site(const struct msc_debu
if (!found) { - FIXME("Couldn't find start address of inlined\n"); + WARN("Couldn't find start address of inlined\n"); return NULL; }
diff --git a/dlls/dbghelp/symbol.c b/dlls/dbghelp/symbol.c index 2443dbf7e73..d3ba4521fa0 100644 --- a/dlls/dbghelp/symbol.c +++ b/dlls/dbghelp/symbol.c @@ -612,7 +612,7 @@ BOOL symt_add_inlinesite_range(struct module* module, { struct addr_range* ar = (struct addr_range*)vector_at(&inlined->vranges, i); if (!addr_range_disjoint(ar, p) && !addr_range_inside(ar, p)) - FIXME("Added addr_range not compatible with parent\n"); + WARN("Added addr_range not compatible with parent\n"); } } }
Signed-off-by: Eric Pouech eric.pouech@gmail.com
--- tools/winedump/msc.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/tools/winedump/msc.c b/tools/winedump/msc.c index 9868770abbb..7b90aa362fe 100644 --- a/tools/winedump/msc.c +++ b/tools/winedump/msc.c @@ -504,6 +504,7 @@ static void do_field(const unsigned char* start, const unsigned char* end) const char* cstr; const struct p_string* pstr; int leaf_len, value; + struct full_value full_value;
while (ptr < end) { @@ -518,18 +519,18 @@ static void do_field(const unsigned char* start, const unsigned char* end) switch (fieldtype->generic.id) { case LF_ENUMERATE_V1: - leaf_len = numeric_leaf(&value, &fieldtype->enumerate_v1.value); + leaf_len = full_numeric_leaf(&full_value, &fieldtype->enumerate_v1.value); pstr = PSTRING(&fieldtype->enumerate_v1.value, leaf_len); - printf("\t\tEnumerate V1: '%s' value:%d\n", - p_string(pstr), value); + printf("\t\tEnumerate V1: '%s' value:%s\n", + p_string(pstr), full_value_string(&full_value)); ptr += 2 + 2 + leaf_len + 1 + pstr->namelen; break;
case LF_ENUMERATE_V3: - leaf_len = numeric_leaf(&value, &fieldtype->enumerate_v3.value); + leaf_len = full_numeric_leaf(&full_value, &fieldtype->enumerate_v3.value); cstr = (const char*)&fieldtype->enumerate_v3.value + leaf_len; - printf("\t\tEnumerate V3: '%s' value:%d\n", - cstr, value); + printf("\t\tEnumerate V3: '%s' value:%s\n", + cstr, full_value_string(&full_value)); ptr += 2 + 2 + leaf_len + strlen(cstr) + 1; break;
Signed-off-by: Eric Pouech eric.pouech@gmail.com
--- dlls/dbghelp/dbghelp_private.h | 2 +- dlls/dbghelp/dwarf.c | 6 +++++- dlls/dbghelp/msc.c | 10 ++++++---- dlls/dbghelp/stabs.c | 5 ++++- dlls/dbghelp/type.c | 5 ++--- 5 files changed, 18 insertions(+), 10 deletions(-)
diff --git a/dlls/dbghelp/dbghelp_private.h b/dlls/dbghelp/dbghelp_private.h index 1e77ed49225..0af62f5b02e 100644 --- a/dlls/dbghelp/dbghelp_private.h +++ b/dlls/dbghelp/dbghelp_private.h @@ -916,7 +916,7 @@ extern struct symt_enum* struct symt* basetype) DECLSPEC_HIDDEN; extern BOOL symt_add_enum_element(struct module* module, struct symt_enum* enum_type, - const char* name, int value) DECLSPEC_HIDDEN; + const char* name, const VARIANT* value) DECLSPEC_HIDDEN; extern struct symt_array* symt_new_array(struct module* module, int min, DWORD count, struct symt* base, struct symt* index) DECLSPEC_HIDDEN; diff --git a/dlls/dbghelp/dwarf.c b/dlls/dbghelp/dwarf.c index 7515e540778..12088f1c037 100644 --- a/dlls/dbghelp/dwarf.c +++ b/dlls/dbghelp/dwarf.c @@ -1836,12 +1836,16 @@ static void dwarf2_parse_enumerator(dwarf2_debug_info_t* di, { struct attribute name; struct attribute value; + VARIANT variant;
TRACE("%s\n", dwarf2_debug_di(di));
if (!dwarf2_find_attribute(di, DW_AT_name, &name)) return; if (!dwarf2_find_attribute(di, DW_AT_const_value, &value)) value.u.svalue = 0; - symt_add_enum_element(di->unit_ctx->module_ctx->module, parent, name.u.string, value.u.svalue); + /* FIXME: we could be cropping the value */ + V_VT(&variant) = VT_I4; + V_I4(&variant) = value.u.svalue; + symt_add_enum_element(di->unit_ctx->module_ctx->module, parent, name.u.string, &variant);
if (dwarf2_get_di_children(di)) FIXME("Unsupported children\n"); } diff --git a/dlls/dbghelp/msc.c b/dlls/dbghelp/msc.c index 317f7bb84b5..aa212a65cbd 100644 --- a/dlls/dbghelp/msc.c +++ b/dlls/dbghelp/msc.c @@ -721,19 +721,21 @@ static BOOL codeview_add_type_enum_field_list(struct module* module, { case LF_ENUMERATE_V1: { - int value, vlen = numeric_leaf(&value, &type->enumerate_v1.value); + VARIANT value; + int vlen = leaf_as_variant(&value, &type->enumerate_v1.value); const struct p_string* p_name = (const struct p_string*)((const unsigned char*)&type->enumerate_v1.value + vlen);
- symt_add_enum_element(module, symt, terminate_string(p_name), value); + symt_add_enum_element(module, symt, terminate_string(p_name), &value); ptr += 2 + 2 + vlen + (1 + p_name->namelen); break; } case LF_ENUMERATE_V3: { - int value, vlen = numeric_leaf(&value, &type->enumerate_v3.value); + VARIANT value; + int vlen = leaf_as_variant(&value, &type->enumerate_v3.value); const char* name = (const char*)&type->enumerate_v3.value + vlen;
- symt_add_enum_element(module, symt, name, value); + symt_add_enum_element(module, symt, name, &value); ptr += 2 + 2 + vlen + (1 + strlen(name)); break; } diff --git a/dlls/dbghelp/stabs.c b/dlls/dbghelp/stabs.c index 931102c4fb3..e8584739018 100644 --- a/dlls/dbghelp/stabs.c +++ b/dlls/dbghelp/stabs.c @@ -723,14 +723,17 @@ static inline int stabs_pts_read_enum(struct ParseTypedefData* ptd, { LONG_PTR value; int idx; + VARIANT v;
+ V_VT(&v) = VT_I4; while (*ptd->ptr != ';') { idx = ptd->idx; PTS_ABORTIF(ptd, stabs_pts_read_id(ptd) == -1); PTS_ABORTIF(ptd, stabs_pts_read_number(ptd, &value) == -1); PTS_ABORTIF(ptd, *ptd->ptr++ != ','); - symt_add_enum_element(ptd->module, edt, ptd->buf + idx, value); + V_I4(&v) = value; + symt_add_enum_element(ptd->module, edt, ptd->buf + idx, &v); ptd->idx = idx; } ptd->ptr++; diff --git a/dlls/dbghelp/type.c b/dlls/dbghelp/type.c index 67f4265ddc9..b7b226d28e8 100644 --- a/dlls/dbghelp/type.c +++ b/dlls/dbghelp/type.c @@ -360,7 +360,7 @@ struct symt_enum* symt_new_enum(struct module* module, const char* typename, }
BOOL symt_add_enum_element(struct module* module, struct symt_enum* enum_type, - const char* name, int value) + const char* name, const VARIANT* value) { struct symt_data* e; struct symt** p; @@ -375,8 +375,7 @@ BOOL symt_add_enum_element(struct module* module, struct symt_enum* enum_type, e->kind = DataIsConstant; e->container = &enum_type->symt; e->type = enum_type->base_type; - V_VT(&e->u.value) = VT_I4; - V_I4(&e->u.value) = value; + e->u.value = *value;
p = vector_add(&enum_type->vchildren, &module->pool); if (!p) return FALSE; /* FIXME we leak e */
Signed-off-by: Eric Pouech eric.pouech@gmail.com
--- dlls/dbghelp/msc.c | 20 ++++++++++++++++++++ include/wine/mscvpdb.h | 32 ++++++++++++++++++++++++++++++-- 2 files changed, 50 insertions(+), 2 deletions(-)
diff --git a/dlls/dbghelp/msc.c b/dlls/dbghelp/msc.c index aa212a65cbd..c55165011c2 100644 --- a/dlls/dbghelp/msc.c +++ b/dlls/dbghelp/msc.c @@ -173,17 +173,22 @@ static void codeview_init_basic_types(struct module* module) cv_basic_types[T_REAL32] = &symt_new_basic(module, btFloat, "float", 4)->symt; cv_basic_types[T_REAL64] = &symt_new_basic(module, btFloat, "double", 8)->symt; cv_basic_types[T_REAL80] = &symt_new_basic(module, btFloat, "long double", 10)->symt; + cv_basic_types[T_REAL128]= &symt_new_basic(module, btFloat, "double double", 16)->symt; cv_basic_types[T_RCHAR] = &symt_new_basic(module, btInt, "signed char", 1)->symt; cv_basic_types[T_WCHAR] = &symt_new_basic(module, btWChar, "wchar_t", 2)->symt; cv_basic_types[T_CHAR16] = &symt_new_basic(module, btChar16,"char16_t", 2)->symt; cv_basic_types[T_CHAR32] = &symt_new_basic(module, btChar32,"char32_t", 4)->symt; cv_basic_types[T_CHAR8] = &symt_new_basic(module, btChar8, "char8_t", 1)->symt; + cv_basic_types[T_INT1] = &symt_new_basic(module, btInt, "INT1", 1)->symt; + cv_basic_types[T_UINT1] = &symt_new_basic(module, btUInt, "UINT1", 1)->symt; cv_basic_types[T_INT2] = &symt_new_basic(module, btInt, "INT2", 2)->symt; cv_basic_types[T_UINT2] = &symt_new_basic(module, btUInt, "UINT2", 2)->symt; cv_basic_types[T_INT4] = &symt_new_basic(module, btInt, "INT4", 4)->symt; cv_basic_types[T_UINT4] = &symt_new_basic(module, btUInt, "UINT4", 4)->symt; cv_basic_types[T_INT8] = &symt_new_basic(module, btInt, "INT8", 8)->symt; cv_basic_types[T_UINT8] = &symt_new_basic(module, btUInt, "UINT8", 8)->symt; + cv_basic_types[T_INT16] = &symt_new_basic(module, btInt, "INT16", 16)->symt; + cv_basic_types[T_UINT16] = &symt_new_basic(module, btUInt, "UINT16", 16)->symt; cv_basic_types[T_HRESULT]= &symt_new_basic(module, btUInt, "HRESULT", 4)->symt;
cv_basic_types[T_32PVOID] = &symt_new_pointer(module, cv_basic_types[T_VOID], 4)->symt; @@ -202,17 +207,22 @@ static void codeview_init_basic_types(struct module* module) cv_basic_types[T_32PREAL32] = &symt_new_pointer(module, cv_basic_types[T_REAL32], 4)->symt; cv_basic_types[T_32PREAL64] = &symt_new_pointer(module, cv_basic_types[T_REAL64], 4)->symt; cv_basic_types[T_32PREAL80] = &symt_new_pointer(module, cv_basic_types[T_REAL80], 4)->symt; + cv_basic_types[T_32PREAL128]= &symt_new_pointer(module, cv_basic_types[T_REAL128], 4)->symt; cv_basic_types[T_32PRCHAR] = &symt_new_pointer(module, cv_basic_types[T_RCHAR], 4)->symt; cv_basic_types[T_32PWCHAR] = &symt_new_pointer(module, cv_basic_types[T_WCHAR], 4)->symt; cv_basic_types[T_32PCHAR16] = &symt_new_pointer(module, cv_basic_types[T_CHAR16], 4)->symt; cv_basic_types[T_32PCHAR32] = &symt_new_pointer(module, cv_basic_types[T_CHAR32], 4)->symt; cv_basic_types[T_32PCHAR8] = &symt_new_pointer(module, cv_basic_types[T_CHAR8], 4)->symt; + cv_basic_types[T_32PINT1] = &symt_new_pointer(module, cv_basic_types[T_INT1], 4)->symt; + cv_basic_types[T_32PUINT1] = &symt_new_pointer(module, cv_basic_types[T_UINT1], 4)->symt; cv_basic_types[T_32PINT2] = &symt_new_pointer(module, cv_basic_types[T_INT2], 4)->symt; cv_basic_types[T_32PUINT2] = &symt_new_pointer(module, cv_basic_types[T_UINT2], 4)->symt; cv_basic_types[T_32PINT4] = &symt_new_pointer(module, cv_basic_types[T_INT4], 4)->symt; cv_basic_types[T_32PUINT4] = &symt_new_pointer(module, cv_basic_types[T_UINT4], 4)->symt; cv_basic_types[T_32PINT8] = &symt_new_pointer(module, cv_basic_types[T_INT8], 4)->symt; cv_basic_types[T_32PUINT8] = &symt_new_pointer(module, cv_basic_types[T_UINT8], 4)->symt; + cv_basic_types[T_32PINT16] = &symt_new_pointer(module, cv_basic_types[T_INT16], 4)->symt; + cv_basic_types[T_32PUINT16] = &symt_new_pointer(module, cv_basic_types[T_UINT16], 4)->symt; cv_basic_types[T_32PHRESULT]= &symt_new_pointer(module, cv_basic_types[T_HRESULT], 4)->symt;
cv_basic_types[T_64PVOID] = &symt_new_pointer(module, cv_basic_types[T_VOID], 8)->symt; @@ -231,17 +241,22 @@ static void codeview_init_basic_types(struct module* module) cv_basic_types[T_64PREAL32] = &symt_new_pointer(module, cv_basic_types[T_REAL32], 8)->symt; cv_basic_types[T_64PREAL64] = &symt_new_pointer(module, cv_basic_types[T_REAL64], 8)->symt; cv_basic_types[T_64PREAL80] = &symt_new_pointer(module, cv_basic_types[T_REAL80], 8)->symt; + cv_basic_types[T_64PREAL128]= &symt_new_pointer(module, cv_basic_types[T_REAL128], 8)->symt; cv_basic_types[T_64PRCHAR] = &symt_new_pointer(module, cv_basic_types[T_RCHAR], 8)->symt; cv_basic_types[T_64PWCHAR] = &symt_new_pointer(module, cv_basic_types[T_WCHAR], 8)->symt; cv_basic_types[T_64PCHAR16] = &symt_new_pointer(module, cv_basic_types[T_CHAR16], 8)->symt; cv_basic_types[T_64PCHAR32] = &symt_new_pointer(module, cv_basic_types[T_CHAR32], 8)->symt; cv_basic_types[T_64PCHAR8] = &symt_new_pointer(module, cv_basic_types[T_CHAR8], 8)->symt; + cv_basic_types[T_64PINT1] = &symt_new_pointer(module, cv_basic_types[T_INT1], 8)->symt; + cv_basic_types[T_64PUINT1] = &symt_new_pointer(module, cv_basic_types[T_UINT1], 8)->symt; cv_basic_types[T_64PINT2] = &symt_new_pointer(module, cv_basic_types[T_INT2], 8)->symt; cv_basic_types[T_64PUINT2] = &symt_new_pointer(module, cv_basic_types[T_UINT2], 8)->symt; cv_basic_types[T_64PINT4] = &symt_new_pointer(module, cv_basic_types[T_INT4], 8)->symt; cv_basic_types[T_64PUINT4] = &symt_new_pointer(module, cv_basic_types[T_UINT4], 8)->symt; cv_basic_types[T_64PINT8] = &symt_new_pointer(module, cv_basic_types[T_INT8], 8)->symt; cv_basic_types[T_64PUINT8] = &symt_new_pointer(module, cv_basic_types[T_UINT8], 8)->symt; + cv_basic_types[T_64PINT16] = &symt_new_pointer(module, cv_basic_types[T_INT16], 8)->symt; + cv_basic_types[T_64PUINT16] = &symt_new_pointer(module, cv_basic_types[T_UINT16], 8)->symt; cv_basic_types[T_64PHRESULT]= &symt_new_pointer(module, cv_basic_types[T_HRESULT], 8)->symt;
cv_basic_types[T_PVOID] = &symt_new_pointer(module, cv_basic_types[T_VOID], ptrsz)->symt; @@ -260,17 +275,22 @@ static void codeview_init_basic_types(struct module* module) cv_basic_types[T_PREAL32] = &symt_new_pointer(module, cv_basic_types[T_REAL32], ptrsz)->symt; cv_basic_types[T_PREAL64] = &symt_new_pointer(module, cv_basic_types[T_REAL64], ptrsz)->symt; cv_basic_types[T_PREAL80] = &symt_new_pointer(module, cv_basic_types[T_REAL80], ptrsz)->symt; + cv_basic_types[T_PREAL128]= &symt_new_pointer(module, cv_basic_types[T_REAL128],ptrsz)->symt; cv_basic_types[T_PRCHAR] = &symt_new_pointer(module, cv_basic_types[T_RCHAR], ptrsz)->symt; cv_basic_types[T_PWCHAR] = &symt_new_pointer(module, cv_basic_types[T_WCHAR], ptrsz)->symt; cv_basic_types[T_PCHAR16] = &symt_new_pointer(module, cv_basic_types[T_CHAR16], ptrsz)->symt; cv_basic_types[T_PCHAR32] = &symt_new_pointer(module, cv_basic_types[T_CHAR32], ptrsz)->symt; cv_basic_types[T_PCHAR8] = &symt_new_pointer(module, cv_basic_types[T_CHAR8], ptrsz)->symt; + cv_basic_types[T_PINT1] = &symt_new_pointer(module, cv_basic_types[T_INT1], ptrsz)->symt; + cv_basic_types[T_PUINT1] = &symt_new_pointer(module, cv_basic_types[T_UINT1], ptrsz)->symt; cv_basic_types[T_PINT2] = &symt_new_pointer(module, cv_basic_types[T_INT2], ptrsz)->symt; cv_basic_types[T_PUINT2] = &symt_new_pointer(module, cv_basic_types[T_UINT2], ptrsz)->symt; cv_basic_types[T_PINT4] = &symt_new_pointer(module, cv_basic_types[T_INT4], ptrsz)->symt; cv_basic_types[T_PUINT4] = &symt_new_pointer(module, cv_basic_types[T_UINT4], ptrsz)->symt; cv_basic_types[T_PINT8] = &symt_new_pointer(module, cv_basic_types[T_INT8], ptrsz)->symt; cv_basic_types[T_PUINT8] = &symt_new_pointer(module, cv_basic_types[T_UINT8], ptrsz)->symt; + cv_basic_types[T_PINT16] = &symt_new_pointer(module, cv_basic_types[T_INT16], ptrsz)->symt; + cv_basic_types[T_PUINT16] = &symt_new_pointer(module, cv_basic_types[T_UINT16], ptrsz)->symt; }
static int leaf_as_variant(VARIANT* v, const unsigned short int* leaf) diff --git a/include/wine/mscvpdb.h b/include/wine/mscvpdb.h index 5a09b9653a3..6336cf23d98 100644 --- a/include/wine/mscvpdb.h +++ b/include/wine/mscvpdb.h @@ -946,14 +946,18 @@ union codeview_fieldtype #define T_CPLX128 0x0053 /* 128-bit complex number */ #define T_BIT 0x0060 /* bit */ #define T_PASCHAR 0x0061 /* pascal CHAR */ +#define T_INT1 0x0068 /* 8-bit signed int */ +#define T_UINT1 0x0069 /* 8-bit unsigned int */ #define T_RCHAR 0x0070 /* real char */ #define T_WCHAR 0x0071 /* wide char */ #define T_INT2 0x0072 /* real 16-bit signed int */ #define T_UINT2 0x0073 /* real 16-bit unsigned int */ -#define T_INT4 0x0074 /* int */ -#define T_UINT4 0x0075 /* unsigned int */ +#define T_INT4 0x0074 /* 32-bit int */ +#define T_UINT4 0x0075 /* 32-bit unsigned int */ #define T_INT8 0x0076 /* 64-bit signed int */ #define T_UINT8 0x0077 /* 64-bit unsigned int */ +#define T_INT16 0x0078 /* 128-bit signed int */ +#define T_UINT16 0x0079 /* 128-bit signed int */ #define T_CHAR16 0x007a /* 16-bit unicode char */ #define T_CHAR32 0x007b /* 32-bit unicode char */ #define T_CHAR8 0x007c /* 8-bit unicode char (C++ 20) */ @@ -981,6 +985,8 @@ union codeview_fieldtype #define T_PCPLX64 0x0151 /* Near pointer to 64-bit complex */ #define T_PCPLX80 0x0152 /* Near pointer to 80-bit complex */ #define T_PCPLX128 0x0153 /* Near pointer to 128-bit complex */ +#define T_PINT1 0x0168 /* Near pointer to 8-bit signed int */ +#define T_PUINT1 0x0169 /* Near pointer to 8-bit unsigned int */ #define T_PRCHAR 0x0170 /* Near pointer to a real char */ #define T_PWCHAR 0x0171 /* Near pointer to a wide char */ #define T_PINT2 0x0172 /* Near pointer to 16-bit signed int */ @@ -989,6 +995,8 @@ union codeview_fieldtype #define T_PUINT4 0x0175 /* Near pointer to 32-bit unsigned int */ #define T_PINT8 0x0176 /* Near pointer to 64-bit signed int */ #define T_PUINT8 0x0177 /* Near pointer to 64-bit unsigned int */ +#define T_PINT16 0x0178 /* Near pointer to 128-bit signed int */ +#define T_PUINT16 0x0179 /* Near pointer to 128-bit unsigned int */ #define T_PCHAR16 0x017a /* Near pointer to 16-bit unicode char */ #define T_PCHAR32 0x017b /* Near pointer to 32-bit unicode char */ #define T_PCHAR8 0x017c /* Near pointer to 8-bit unicode char */ @@ -1016,6 +1024,8 @@ union codeview_fieldtype #define T_PFCPLX64 0x0251 /* Far pointer to 64-bit complex */ #define T_PFCPLX80 0x0252 /* Far pointer to 80-bit complex */ #define T_PFCPLX128 0x0253 /* Far pointer to 128-bit complex */ +#define T_PFINT1 0x0268 /* Far pointer to 8-bit signed int */ +#define T_PFUINT1 0x0269 /* Far pointer to 8-bit unsigned int */ #define T_PFRCHAR 0x0270 /* Far pointer to a real char */ #define T_PFWCHAR 0x0271 /* Far pointer to a wide char */ #define T_PFINT2 0x0272 /* Far pointer to 16-bit signed int */ @@ -1024,6 +1034,8 @@ union codeview_fieldtype #define T_PFUINT4 0x0275 /* Far pointer to 32-bit unsigned int */ #define T_PFINT8 0x0276 /* Far pointer to 64-bit signed int */ #define T_PFUINT8 0x0277 /* Far pointer to 64-bit unsigned int */ +#define T_PFINT16 0x0278 /* Far pointer to 128-bit signed int */ +#define T_PFUINT16 0x0279 /* Far pointer to 128-bit unsigned int */ #define T_PFCHAR16 0x027a /* Far pointer to 16-bit unicode char */ #define T_PFCHAR32 0x027b /* Far pointer to 32-bit unicode char */ #define T_PFCHAR8 0x027c /* Far pointer to 8-bit unicode char */ @@ -1051,6 +1063,8 @@ union codeview_fieldtype #define T_PHCPLX64 0x0351 /* Huge pointer to 64-bit complex */ #define T_PHCPLX80 0x0352 /* Huge pointer to 80-bit complex */ #define T_PHCPLX128 0x0353 /* Huge pointer to 128-bit real */ +#define T_PHINT1 0x0368 /* Huge pointer to 8-bit signed int */ +#define T_PHUINT1 0x0369 /* Huge pointer to 8-bit unsigned int */ #define T_PHRCHAR 0x0370 /* Huge pointer to a real char */ #define T_PHWCHAR 0x0371 /* Huge pointer to a wide char */ #define T_PHINT2 0x0372 /* Huge pointer to 16-bit signed int */ @@ -1059,6 +1073,8 @@ union codeview_fieldtype #define T_PHUINT4 0x0375 /* Huge pointer to 32-bit unsigned int */ #define T_PHINT8 0x0376 /* Huge pointer to 64-bit signed int */ #define T_PHUINT8 0x0377 /* Huge pointer to 64-bit unsigned int */ +#define T_PHINT16 0x0378 /* Huge pointer to 128-bit signed int */ +#define T_PHUINT16 0x0379 /* Huge pointer to 128-bit unsigned int */ #define T_PHCHAR16 0x037a /* Huge pointer to 16-bit unicode char */ #define T_PHCHAR32 0x037b /* Huge pointer to 32-bit unicode char */ #define T_PHCHAR8 0x037c /* Huge pointer to 8-bit unicode char */ @@ -1087,6 +1103,8 @@ union codeview_fieldtype #define T_32PCPLX64 0x0451 /* 16:32 near pointer to 64-bit complex */ #define T_32PCPLX80 0x0452 /* 16:32 near pointer to 80-bit complex */ #define T_32PCPLX128 0x0453 /* 16:32 near pointer to 128-bit complex */ +#define T_32PINT1 0x0468 /* 16:32 near pointer to 8-bit signed int */ +#define T_32PUINT1 0x0469 /* 16:32 near pointer to 8-bit unsigned int */ #define T_32PRCHAR 0x0470 /* 16:32 near pointer to a real char */ #define T_32PWCHAR 0x0471 /* 16:32 near pointer to a wide char */ #define T_32PINT2 0x0472 /* 16:32 near pointer to 16-bit signed int */ @@ -1095,6 +1113,8 @@ union codeview_fieldtype #define T_32PUINT4 0x0475 /* 16:32 near pointer to 32-bit unsigned int */ #define T_32PINT8 0x0476 /* 16:32 near pointer to 64-bit signed int */ #define T_32PUINT8 0x0477 /* 16:32 near pointer to 64-bit unsigned int */ +#define T_32PINT16 0x0478 /* 16:32 near pointer to 128-bit signed int */ +#define T_32PUINT16 0x0479 /* 16:32 near pointer to 128-bit unsigned int */ #define T_32PCHAR16 0x047a /* 16:32 near pointer to 16-bit unicode char */ #define T_32PCHAR32 0x047b /* 16:32 near pointer to 32-bit unicode char */ #define T_32PCHAR8 0x047c /* 16:32 near pointer to 8-bit unicode char */ @@ -1123,6 +1143,8 @@ union codeview_fieldtype #define T_32PFCPLX64 0x0551 /* 16:32 far pointer to 64-bit complex */ #define T_32PFCPLX80 0x0552 /* 16:32 far pointer to 80-bit complex */ #define T_32PFCPLX128 0x0553 /* 16:32 far pointer to 128-bit complex */ +#define T_32PFINT1 0x0468 /* 16:32 far pointer to 8-bit signed int */ +#define T_32PFUINT1 0x0469 /* 16:32 far pointer to 8-bit unsigned int */ #define T_32PFRCHAR 0x0570 /* 16:32 far pointer to a real char */ #define T_32PFWCHAR 0x0571 /* 16:32 far pointer to a wide char */ #define T_32PFINT2 0x0572 /* 16:32 far pointer to 16-bit signed int */ @@ -1131,6 +1153,8 @@ union codeview_fieldtype #define T_32PFUINT4 0x0575 /* 16:32 far pointer to 32-bit unsigned int */ #define T_32PFINT8 0x0576 /* 16:32 far pointer to 64-bit signed int */ #define T_32PFUINT8 0x0577 /* 16:32 far pointer to 64-bit unsigned int */ +#define T_32PFINT16 0x0578 /* 16:32 far pointer to 128-bit signed int */ +#define T_32PFUINT16 0x0579 /* 16:32 far pointer to 128-bit unsigned int */ #define T_32PFCHAR16 0x057a /* 16:32 far pointer to 16-bit unicode char */ #define T_32PFCHAR32 0x057b /* 16:32 far pointer to 32-bit unicode char */ #define T_32PFCHAR8 0x057c /* 16:32 far pointer to 8-bit unicode char */ @@ -1159,6 +1183,8 @@ union codeview_fieldtype #define T_64PCPLX64 0x0651 /* 64 near pointer to 64-bit complex */ #define T_64PCPLX80 0x0652 /* 64 near pointer to 80-bit complex */ #define T_64PCPLX128 0x0653 /* 64 near pointer to 128-bit complex */ +#define T_64PINT1 0x0468 /* 64 near pointer to 8-bit signed int */ +#define T_64PUINT1 0x0469 /* 64 near pointer to 8-bit unsigned int */ #define T_64PRCHAR 0x0670 /* 64 near pointer to a real char */ #define T_64PWCHAR 0x0671 /* 64 near pointer to a wide char */ #define T_64PINT2 0x0672 /* 64 near pointer to 16-bit signed int */ @@ -1167,6 +1193,8 @@ union codeview_fieldtype #define T_64PUINT4 0x0675 /* 64 near pointer to 32-bit unsigned int */ #define T_64PINT8 0x0676 /* 64 near pointer to 64-bit signed int */ #define T_64PUINT8 0x0677 /* 64 near pointer to 64-bit unsigned int */ +#define T_64PINT16 0x0678 /* 64 near pointer to 128-bit signed int */ +#define T_64PUINT16 0x0679 /* 64 near pointer to 128-bit unsigned int */ #define T_64PCHAR16 0x067a /* 64 near pointer to 16-bit unicode char */ #define T_64PCHAR32 0x067b /* 64 near pointer to 32-bit unicode char */ #define T_64PCHAR8 0x067c /* 64 near pointer to 8-bit unicode char */