<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
</style>
</head>
<body class='hmmessage'>
I assume wedging this tiny bit of code into RTLinker would not be welcome?<BR>
I think it'd have by far the most value there -- get it to run and fail clearly before any other harder to debug problems.<BR>
 <BR>
void Test__CheckFloatsAndTypes(const T* t2, size_t size, size_t jbsize)<BR>{<BR>    if (size != sizeof(t1))<BR>    {<BR>        printf("%x vs. %x\n", (U)size, (U)sizeof(t1));<BR>        assert(size == sizeof(t1));<BR>    }<BR><BR>
    if (memcmp(&t1, t2, sizeof(t1)) != 0)<BR>    {<BR>        U i = 0;<BR>        U8* a = (U8*)&t1;<BR>        U8* b = (U8*)t2;<BR>        printf("FD_SETSIZE 0x%x\n", (U)FD_SETSIZE);<BR>        /*printf("offset of max_fdset 0x%x\n", (U)offsetof(T, max_fdset));*/<BR>        for (i = 0; i != sizeof(t1); ++i)<BR>        {<BR>            if (a[i] != b[i])<BR>            {<BR>                printf("different at offset 0x%x\n", i);<BR>            }<BR>        }<BR>        assert(memcmp(&t1, t2, sizeof(t1)) == 0);<BR>    }<BR>#ifdef __CYGWIN__<BR>    assert(jbsize >= (sizeof(jmp_buf) / 4));<BR>#else<BR>    assert(jbsize == sizeof(jmp_buf));<BR>#endif<BR>}<BR><BR>
 - Jay<BR><BR>
 <BR>> Date: Thu, 26 Feb 2009 17:16:05 +0000<BR>> To: m3commit@elegosoft.com<BR>> From: jkrell@elego.de<BR>> Subject: [M3commit] CVS Update: cm3<BR>> <BR>> CVSROOT: /usr/cvs<BR>> Changes by: jkrell@birch. 09/02/26 17:16:05<BR>> <BR>> Modified files:<BR>> cm3/m3-sys/m3tests/src/: Test.i3 m3makefile <BR>> cm3/m3-sys/m3tests/src/p0/p001/: Main.m3 m3makefile <BR>> Added files:<BR>> cm3/m3-sys/m3tests/src/: TestC.c <BR>> <BR>> Log message:<BR>> nice little test case to verify compilation of floating point constants<BR>> and correctness of Usysdep<BR>> I would really like to have this "run" in RTLinker but suspect that would be rejected.<BR>> Anywhere else, e.g. here, is kind of too late to be valuable, unless we manage<BR>> to get this into boot1.py, and very early in the list of modules that RTLinker<BR>> initializes.<BR>> <BR>> This reveals some existing possible problems.<BR>> - arrays of odd number of float and/or double don't<BR>> match up between C and Modula-3; probably related to -mno-aligned-floats<BR>> - there are other mismatches here masked by inserting size_t padding<BR>> in particular I think cywin linger_t has 16 bit integers and there is<BR>> disagreement there. But I didn't look into it.<BR>> <BR>> Luckily the interactions between C and Modula-3 are relatively rare /and/<BR>> relatively conservative and not very likely to hit these issues.<BR>> They do merit further attention though.<BR>> <BR>> "Running this test case" is merely evaluation three efficient assertions<BR>> plus dedicating the constant static space to two structs (Modula-3<BR>> might run initialization code for its "const static" though?)<BR>> <BR></body>
</html>