This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Guys, I can confirm that Pedro's work (the binutils-head-wince_edited.diff file that he posted) does provide a solution for my problems. The solution is only partial, but that may not be a binutils problem. Here's the detail : - I created a Makefile (attached) to call gcc, gas, and ld in the same way as demonstrated by an example from Pedro - Pedro's example that just calls MessageBoxW() works with that. - My example that calls fopen/fprintf/fclose doesn't do anything. - In file2.c I made a mixture between both to call MessageBoxW before and after the fopen call. Only the MessageBoxW call before fopen happens, the one after is never reached. This is on a PDA, no other feedback comes, the process is just gone. This may not be a binutils issue at all. So I would encourage you to look into Pedro's patch because it transforms a clearly broken binutils (on ARM) into one that appears to work. Danny -- Danny Backx ; danny.backx - at - scarlet.be ; http://danny.backx.info
typedef unsigned short wchar_t; typedef wchar_t WCHAR; typedef const WCHAR* LPCWSTR; typedef void* HWND; typedef unsigned int UINT; int MessageBoxW ( HWND hWnd , LPCWSTR lpText, LPCWSTR lpCaption, UINT uType); int WinMainCRTStartup() { MessageBoxW(0, L"HELLO!", L"H3LLO!", 0); }
struct FILE_; typedef struct FILE_ FILE; typedef unsigned short wchar_t; FILE* fopen (const char *, const char *); int fprintf (FILE *, const char *, ...); int fclose (FILE *); #define _C ' ' #define _S 'a' #define _P 'a' #define _N 'a' #define _L 'a' #define _X 'a' #define _B 'c' #define _U 'a' #define _CTYPE_DATA_0_127 \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C|_S, _C|_S, _C|_S, _C|_S, _C|_S, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _S|_B, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _N, _N, _N, _N, _N, _N, _N, _N, \ _N, _N, _P, _P, _P, _P, _P, _P, \ _P, _U|_X, _U|_X, _U|_X, _U|_X, _U|_X, _U|_X, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _P, _P, _P, _P, _P, \ _P, _L|_X, _L|_X, _L|_X, _L|_X, _L|_X, _L|_X, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _P, _P, _P, _P, _C #define _CTYPE_DATA_128_256 \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0 const char _ctype_[1 + 256] = { 0, _CTYPE_DATA_0_127, _CTYPE_DATA_128_256 }; const char* __ctype_ptr = _ctype_ + 1; int local_fun(void) { FILE *f; f = fopen("/log.txt", "w"); fprintf(f, "Hello\r\n"); fprintf(f, "Hello %p\r\n", *__ctype_ptr); fclose(f); // exit(0); return 0; } int WinMainCRTStartup(void) { #define TRIGGER #ifndef TRIGGER FILE *f; f = fopen("/log.txt", "w"); fprintf(f, "Hello\r\n"); fclose(f); // exit(0); return 0; #else return local_fun(); #endif }
struct FILE_; typedef struct FILE_ FILE; typedef unsigned short wchar_t; FILE* fopen (const char *, const char *); int fprintf (FILE *, const char *, ...); int fclose (FILE *); #define _C ' ' #define _S 'a' #define _P 'a' #define _N 'a' #define _L 'a' #define _X 'a' #define _B 'c' #define _U 'a' #define _CTYPE_DATA_0_127 \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C|_S, _C|_S, _C|_S, _C|_S, _C|_S, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _S|_B, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _N, _N, _N, _N, _N, _N, _N, _N, \ _N, _N, _P, _P, _P, _P, _P, _P, \ _P, _U|_X, _U|_X, _U|_X, _U|_X, _U|_X, _U|_X, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _P, _P, _P, _P, _P, \ _P, _L|_X, _L|_X, _L|_X, _L|_X, _L|_X, _L|_X, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _P, _P, _P, _P, _C #define _CTYPE_DATA_128_256 \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0 const char _ctype_[1 + 256] = { 0, _CTYPE_DATA_0_127, _CTYPE_DATA_128_256 }; const char* __ctype_ptr = _ctype_ + 1; int local_fun(void) { FILE *f; MessageBoxW(0, L"before file open", L"H3LLO!", 0); f = fopen("/storage card/devel/log.txt", "w"); MessageBoxW(0, L"after file open", L"H3LLO!", 0); fprintf(f, "Hello\r\n"); fprintf(f, "Hello %p\r\n", *__ctype_ptr); fclose(f); // exit(0); return 0; } int WinMainCRTStartup(void) { return local_fun(); }
.SUFFIXES: .SUFFIXES: .c .o .s .exe .dist .exedump .objdump P= /usr/ppc/bin/arm-wince-pe STARTUP= -e_WinMainCRTStartup # -e_WinMain causes crash PCC= ${P}-gcc ${CFLAGS} ${STARTUP} PAS= ${P}-as PLD= ${P}-ld ${STARTUP} WINDRES= ${P}-windres CFLAGS= -DUNICODE -D_UNICODE -DWINE_UNICODE_NATIVE -DWINCE \ ${VERBOSE} ${INCLUDE} #LDFLAGS= -Wl,--major-subsystem-version=4,--minor-subsystem-version=20 CCLDFLAGS= -Wl,--major-subsystem-version=3,--minor-subsystem-version=0 LDFLAGS= --major-subsystem-version=3 --minor-subsystem-version=0 #INCLUDE= -I/usr/include/wine/windows -I/usr/include/wine INCLUDE= -I/usr/ppc/arm-wince-pe/include \ -I/usr/ppc/arm-wince-pe/sys-include/windows VERBOSE= # -v PDADIR= ":/storage card/devel" LDPATH= -L/usr/ppc/lib/gcc/arm-wince-pe/4.1.0 #LIBS= -lcoredll LIBS= ${LDPATH} -lcoredll -lwinsock -lgcc -lc -lcoredll -lwinsock -lgcc -lc all:: dialog.exe dialog.exedump dialog.dist .exe.dist: pcp $*.exe ${PDADIR}/$*.exe .c.o: ${PCC} -S -o $*.s $? ${PAS} -o $@ $*.s .c.s: ${PCC} -S -o $@ $? .s.o: ${PAS} -o $@ $? .o.exe: ${PLD} -o $@ $? ${LDFLAGS} ${LIBS} .exe.exedump: ${P}-objdump -x -s -g -D $*.exe > $*.exedump .o.objdump: ${P}-objdump -x -s -g -D $*.o > $*.objdump clean:: -rm -f dialog.exe dialog.s dialog.o dialog.objdump dialog.exedump -rm -f hello.exe hello.s hello.o hello.objdump hello.exedump -rm -f file1.exe file1.s file1.o file1.objdump file1.exedump -rm -f file2.exe file2.s file2.o file2.objdump file2.exedump all:: file1.exe file1.dist file1.exedump all:: file2.exe file2.dist file2.exedump
Attachment:
signature.asc
Description: This is a digitally signed message part
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |