Деманглер имен для MSVC
От: drVanо Россия https://vmpsoft.com
Дата: 12.09.13 17:21
Оценка:
Я тут допиливаю код от WINEдля поддержки всех фич из dbghelp.dll. Кому то будет интересен этот проект? Если да, то я выложу на github.
Re: Деманглер имен для MSVC
От: zaufi Земля  
Дата: 12.09.13 18:26
Оценка:
Здравствуйте, drVanо, Вы писали:

V>Я тут допиливаю код от WINEдля поддержки всех фич из dbghelp.dll. Кому то будет интересен этот проект? Если да, то я выложу на github.


почему бы просто не послать patch обратно в upstream?
Re: Деманглер имен для MSVC
От: flаt  
Дата: 12.09.13 18:36
Оценка:
Здравствуйте, drVanо, Вы писали:

V>Я тут допиливаю код от WINEдля поддержки всех фич из dbghelp.dll.

Чем undname.exe не устраивает? Нужен свой код? А последние фичи вроде && и Args... будут?
Re[2]: Деманглер имен для MSVC
От: drVanо Россия https://vmpsoft.com
Дата: 12.09.13 19:31
Оценка:
Здравствуйте, flаt, Вы писали:

F>Чем undname.exe не устраивает? Нужен свой код?


Да, нужно свое.

F> А последние фичи вроде && и Args... будут?


Примеры есть?
Re[3]: Деманглер имен для MSVC
От: flаt  
Дата: 13.09.13 06:53
Оценка:
Здравствуйте, drVanо, Вы писали:

V>Примеры есть?

https://github.com/llvm-mirror/clang/blob/58e4cd09cc71893798282833806f4205b37dc828/lib/AST/MicrosoftMangle.cpp

// <type> ::= <r-value-reference-type>
// <r-value-reference-type> ::= $$Q E? <cvr-qualifiers> <type>
//                 # the E is required for 64-bit non static rvalue references
void MicrosoftCXXNameMangler::mangleType(const RValueReferenceType *T,
                                         SourceRange Range) {
  Out << "$$Q";
  if (PointersAre64Bit && !T->getPointeeType()->isFunctionType())
    Out << 'E';
  mangleType(T->getPointeeType(), Range);
}
Re[4]: Деманглер имен для MSVC
От: drVanо Россия https://vmpsoft.com
Дата: 13.09.13 12:00
Оценка:
Здравствуйте, flаt, Вы писали:

F>https://github.com/llvm-mirror/clang/blob/58e4cd09cc71893798282833806f4205b37dc828/lib/AST/MicrosoftMangle.cpp


Не вопрос. Примеры функций есть? Я тут по своей коллекции МАР файлов пробежал — такого пока не встречал.
Re: Деманглер имен для MSVC
От: Pavel Dvorkin Россия  
Дата: 13.09.13 12:56
Оценка: +1
Здравствуйте, drVanо, Вы писали:

V>Я тут допиливаю код от WINEдля поддержки всех фич из dbghelp.dll. Кому то будет интересен этот проект? Если да, то я выложу на github.


А почему деманглер ? Это же только одна фича, и она покрывается UnDecorateSymbolName

http://msdn.microsoft.com/en-us/library/windows/desktop/ms681400(v=vs.85).aspx
With best regards
Pavel Dvorkin
Re[5]: Деманглер имен для MSVC
От: flаt  
Дата: 13.09.13 13:48
Оценка:
Здравствуйте, drVanо, Вы писали:

V>Не вопрос. Примеры функций есть? Я тут по своей коллекции МАР файлов пробежал — такого пока не встречал.


Эм.. Там же в тестах (microsoft-mangle.cpp & K°). Ну или cl.exe test.cpp && strings.exe test.exe | grep "my_func_prefixes"
Re[2]: Деманглер имен для MSVC
От: drVanо Россия https://vmpsoft.com
Дата: 13.09.13 15:10
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>А почему деманглер ? Это же только одна фича, и она покрывается UnDecorateSymbolName


PD>http://msdn.microsoft.com/en-us/library/windows/desktop/ms681400(v=vs.85).aspx


Да, нужен именно сам деманглер, причем чтобы работал не только под Windows. Ничего качественнее кода из WINE найти не удалось, поэтому пилю его.
Re[6]: Деманглер имен для MSVC
От: drVanо Россия https://vmpsoft.com
Дата: 13.09.13 15:58
Оценка:
Здравствуйте, flаt, Вы писали:

F>Эм.. Там же в тестах (microsoft-mangle.cpp & K°).


Блин, в упор не вижу. Ткните пальцем, плиз
Re[2]: Деманглер имен для MSVC
От: drVanо Россия https://vmpsoft.com
Дата: 13.09.13 16:45
Оценка: +1
Здравствуйте, flаt, Вы писали:

F>А последние фичи вроде &&


Было
??4QUrl@@QAEAAV0@$$QAV0@@Z

Стало
public: class QUrl & __thiscall QUrl::operator=(class QUrl &&)

Оно?
Re[2]: Деманглер имен для MSVC
От: drVanо Россия https://vmpsoft.com
Дата: 15.09.13 10:55
Оценка: 8 (1)
Здравствуйте, flаt, Вы писали:

F>А последние фичи вроде && и Args... будут?


Приделал. Причем что странно — dbghelp от 7-ки эти вещи не поддерживает.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.