Yes, you're right, I compiled in 32 bit.
grischka <address@hidden> í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 <address@hidden> í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
address@hidden
http://lists.nongnu.org/mailman/listinfo/tinycc-devel