[Firm] Probleme mit cparser
Moritz Kroll
Moritz.Kroll at avira.com
Mon Feb 2 14:54:09 CET 2015
Hi Christoph,
wegen der Fehlermeldung nützt die Ignorier-Implementierung von __asm
aber wenig. Der COMPILATION_UNIT_AST-Handler wird nach dem Parsen nicht
aufgerufen, wenn der Parser Fehler gemeldet hat (siehe
c_driver.c:do_parsing).
Schöne Grüße
Moritz
On 02.02.2015 14:26, Christoph Mallon wrote:
> Am 02.02.15 11:24, schrieb Moritz Kroll:
>> Hier nochmal die Ausgabe von meiner msysgit-Bash (man beachte das erste
>> Fehlschlagen...):
>
> Das sieht sehr wirr aus.
> Kann bitte mal jemand in die Logs schauen?
>
>> [source_annotation_attribute( SA_Parameter|SA_ReturnValue )]
>> struct PostBoundAttribute
>> {
>> unsigned int Deref;
>> };
>>
>> Ich finde, sowas muss man boykottieren ;)
>
> Das baue ich jetzt nicht ein. o_O
>
>> Jepp, hier ein Beispiel aus C:\Program Files (x86)\Microsoft
>> SDKs\Windows\v7.0A\include\winnt.h
>
> %nl -ba msc_asm.c
> 1 typedef unsigned long long ULONGLONG;
> 2 typedef unsigned long DWORD;
> 3
> 4 __inline ULONGLONG __stdcall Int64ShllMod32(ULONGLONG Value,
> DWORD ShiftCount)
> 5 {
> 6 __asm {
> 7 mov ecx, ShiftCount
> 8 mov eax, dword ptr [Value]
> 9 mov edx, dword ptr [Value+4]
> 10 shld edx, eax, cl
> 11 shl eax, cl
> 12 }
> 13 return 0;
> 14 }
> %cparser --print-ast --ms msc_asm.c
> msc_asm.c:6:2: error: 'asm { ... }' not supported
> 1 error(s), 0 warning(s)
> typedef long long unsigned int ULONGLONG;
> typedef long unsigned int DWORD;
> inline ULONGLONG __stdcall Int64ShllMod32(ULONGLONG Value, DWORD ShiftCount)
> {
> asm("");
> return 0;
> }
>
>
> Ist gepusht.
> Das kann zwar nicht alles, aber für asm {} sollte es reichen. (:
>
> Gruß
> Christoph
>
>
--
Moritz Kroll
Software Developer & Researcher
Advanced Threat Research And Protection Systems
Email: moritz.kroll at avira.com
--
Avira Operations GmbH & Co. KG
Kaplaneiweg 1 | 88069 Tettnang | Deutschland / Germany
Telefon / Telephone: +49 7542-500 0
Telefax / Facsimile: +49 7542-500 3000
Registergericht: Amtsgericht Ulm, HRA 722586 | USt.-IdNr.: DE 815289569 | Pers. haftende Gesellschafterin: Avira OP GmbH | Firmensitz: Tettnang | Registergericht: Amtsgericht Ulm, HRB 726712 | Geschäftsführer: Travis Witteveen
Commercial Register: Amtsgericht Ulm, HRA 722586 | VAT-ID: DE 815289569 | Personally Liable Partner: Avira OP GmbH | Headquarters: Tettnang | Commercial Register: Amtsgericht Ulm, HRB 726712 | Chief Executive Officer (CEO): Travis Witteveen
More information about the Firm
mailing list