Yes, you're right, I compiled in 32 bit.
grischka <[email protected]> írta:
>Zsidi László wrote:
>>
>> Hi Gabor,
>>
>> I make a definition file from kernel32.dll by the tiny_impdef.exe and
>> compile seek.c with tcc ( tcc.exe seek.c kernel32.def ).
>> The output is:
>> Size:495
>>
>> Seems to be is work well...
>
>You probably compiled in 32bit mode.
>
>It does not work on 64bit. Reason is a missing detail in the
>calling conventions for x64 windows, that structures of size
>1,2,4,8 need to be passed in registers.
>
>The structure in question here is
> LARGE_INTEGER liDistanceToMove;
> SetFilePointerEx(hFile, liDistanceToMove, ... );
>
>See also x64 windows calling conventions:
> http://msdn.microsoft.com/en-us/library/zthk2dkh.aspx
>
>Do not expect me personally to fix this.
>
>--- grischka
>
>>
>> Gabor Gyorgy Nagy <[email protected]> írta:
>>
>> Hi list,
>>
>> seek.c:
>>
>> #include <windows.h>
>> #include <stdio.h>
>>
>> #define O_RFLAG GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING,
>> FILE_ATTRIBUTE_NORMAL
>>
>> int main(void)
>> {
>> HANDLE hFile;
>> LARGE_INTEGER liDistanceToMove;
>> LARGE_INTEGER liNewFilePointer;
>>
>> hFile = CreateFile("seek.c", O_RFLAG, NULL);
>>
>> liDistanceToMove.QuadPart = 0;
>> if (SetFilePointerEx(hFile, liDistanceToMove, &liNewFilePointer,
>> FILE_END) != FALSE) {
>> printf("size:%I64d\n", liNewFilePointer.QuadPart);
>> }
>> CloseHandle(hFile);
>> return 0;
>> }
>>
>>
>> x86_64-pc-mingw32-gcc.exe seek.c
>> a.exe:
>> size:508
>>
>> (tcc x86_64: http://repo.or.cz/w/tinycc.git, 2010-01-14)
>> tcc seek.c
>> tcc: error: undefined symbol 'SetFilePointerEx'
>>
>> write SetFilePointerEx to kernel32.def:
>>
>> tcc seek.c
>> -no error
>>
>> seek.exe:
>> seek.exe has stopped working
>>
>> ---
>> Gabor
>>
>> Hi list,seek.c:#include #include #define O_RFLAG GENERIC_READ,
>> FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL
>>
>> int main(void){ HANDLE hFile; LARGE_INTEGER liDistanceToMove;
>>
>> LARGE_INTEGER liNewFilePointer;
>> hFile = CreateFile("seek.c", O_RFLAG, NULL);
>>
>> liDistanceToMove.QuadPart = 0;
>> if (SetFilePointerEx(hFile, liDistanceToMove, &liNewFilePointer,
>> FILE_END) != FALSE) {
>>
>> printf("size:%I64d\n", liNewFilePointer.QuadPart); }
>> CloseHandle(hFile);
>>
>> return 0;}x86_64-pc-mingw32-gcc.exe seek.ca.exe:size:508
>>
>> (tcc x86_64: http://repo.or.cz/w/tinycc.git, 2010-01-14)tcc seek.ctcc:
>> error: undefined symbol 'SetFilePointerEx'write SetFilePointerEx to
>> kernel32.def:
>>
>> tcc seek.c-no errorseek.exe:seek.exe has stopped working---Gabor
>
>
>
>_______________________________________________
>Tinycc-devel mailing list
>[email protected]
>http://lists.nongnu.org/mailman/listinfo/tinycc-devel
<!-- PATH STAT NUMBER ERROR -->
_______________________________________________
Tinycc-devel mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/tinycc-devel