On Fri, 2007-10-05 at 22:26 +0200, Vitus Jensen wrote:
> Hej!
>
> I'm trying to port a small testprogramm from embedded Visual C 4 to
> mingw32ce (cegcc-mingw32ce-0.50-1.i586.rpm). It's text mode, 2 threads,
> some printf, some files, nothing fancy but ... it has to use 2 object
> libraries (3rd party) and a DLL (my own).
>
> I'm able to compile and link this programm but when I call the 3rd party
> library an important call fails. It's the only call with several
> parameters so I suspect different calling conventions.
>
> Goes like this:
>
> extern int libconfig(int hd, int subfct, void * parameter);
>
> test()
> {
> hd = libopen();
> res = libconfig(hd, 1, (void *)0815);
> res = libconfig(hd, 2, (void *)15);
> ...
> libclose(hd);
> }
>
> Result code indicates "invalid subfunction" :-(
>
> The prototype shows no "__syscall" or the like, the object library works
> when used with eVC. I've looked at the produced assembler code in the eVC
> debugger and it seems parameters are transfered via r0, r1 and r2. Isn't
> this the same as in mingw32ce? In my opinion all this indicates that the
> program should work. It doesn't :-(
This is probably a silly remark but "0815" is an invalid number. The GNU
C compiler will treat any number that starts with a 0 as octal. In
octal, there's no 8, so the compiler issues an error :
tt.c:8:33: error: invalid digit "8" in octal constant
In case that that isn't your problem, I've attached a source and
assembler file generated by arm-wince-mingw32ce-gcc . Which assembler
instructions does eVC generate for this file ?
Danny
--
Danny Backx ; danny.backx - at - scarlet.be ; http://danny.backx.info
extern int libconfig(int, int, void *);
int test(void)
{
int hd, res;
hd = libopen();
res = libconfig(hd, 1, (void *)815);
res = libconfig(hd, 2, (void *)15);
libclose(hd);
}
.file "tt.c"
.text
.align 0
.global test
.def test; .scl 2; .type 32; .endef
test:
@ args = 0, pretend = 0, frame = 8
@ frame_needed = 1, uses_anonymous_args = 0
mov ip, sp
stmfd sp!, {fp, ip, lr, pc}
sub fp, ip, #4
sub sp, sp, #8
bl libopen
mov r3, r0
str r3, [fp, #-20]
ldr r0, [fp, #-20]
mov r1, #1
ldr r2, .L3
bl libconfig
mov r3, r0
str r3, [fp, #-16]
ldr r0, [fp, #-20]
mov r1, #2
mov r2, #15
bl libconfig
mov r3, r0
str r3, [fp, #-16]
ldr r0, [fp, #-20]
bl libclose
sub sp, fp, #12
ldmfd sp, {fp, sp, pc}
.L4:
.align 0
.L3:
.word 815
.def libclose; .scl 2; .type 32; .endef
.def libconfig; .scl 2; .type 32; .endef
.def libopen; .scl 2; .type 32; .endef
signature.asc
Description: This is a digitally signed message part
------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________ Cegcc-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/cegcc-devel
