https://bugs.winehq.org/show_bug.cgi?id=53935
Bug ID: 53935 Summary: __unDName doesn't support 'G' and 'H' modifiers Product: WineHQ Bugzilla Version: unspecified Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: bugzilla-unknown Assignee: wine-bugs@winehq.org Reporter: info@vmpsoft.com CC: austinenglish@gmail.com Distribution: ---
Here is my sources of undname.c:
static void append_extended_modifier(struct parsed_symbol *sym, const char **where, const char *str) { if (!(sym->flags & UNDNAME_NO_MS_KEYWORDS)) { if (str[0] == '_' && str[1] == '_') { if (sym->flags & UNDNAME_NO_LEADING_UNDERSCORES) str += 2; } *where = *where ? str_printf(sym, "%s %s", *where, str) : str; } }
static void get_extended_modifier(struct parsed_symbol *sym, struct datatype_t *xdt) { xdt->left = xdt->right = NULL; xdt->flags = 0; for (;;) { switch (*sym->current) { case 'E': append_extended_modifier(sym, &xdt->right, "__ptr64"); break; case 'F': append_extended_modifier(sym, &xdt->left, "__unaligned"); break; case 'G': append_extended_modifier(sym, &xdt->right, "&"); break; case 'H': append_extended_modifier(sym, &xdt->right, "&&"); break; case 'I': append_extended_modifier(sym, &xdt->right, "__restrict"); break; default: return; } sym->current++; } }