<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
FONT-SIZE: 10pt;
FONT-FAMILY:Tahoma
}
</style>
</head>
<body class='hmmessage'>Could someone out there (Tony?) familiar with the gcc backend<BR>have it not ignore call_conv and if call_conv is 1, append<BR>an at symbol and the number of bytes of parameters to the function name?<BR> (Even for zero, e.g. <A href="mailto:Sleep@0">Sleep@0</A>, <A href="mailto:GetFileAttributes@4">GetFileAttributes@4</A>).<BR>This would be I guess at least for "imported" functions.<BR>
<BR>Not clear about calling function pointers, probably needs modification.<BR>call_conv 0 is "__cdecl" is push right to left, caller cleans up<BR>call_conv 1 is "__stdcall" is push right to left, callee cleans up<BR>  There are various synonyms.<BR>  With no command line switches, __cdecl is the compiler default.<BR>  __stdcall is deemed more efficient, and is very widely used.<BR>
<BR>Not clear about functions implemented in Modula-3.<BR>Probably won't occur? Maybe for callbacks? WindowProcs, thread entry point?<BR>
<BR>This could/should be for NT386GNU only.<BR>The hypothetical other NT targets only have one calling convention each.<BR>
<BR>I COULD do something sleazy here and generate little adapter functions, over in m3-win/import-libs esp.<BR>
<BR>I'm still checking out pm3 to see what it does here.<BR>(as in cvs checkout, not "looking at")<BR>
<BR>This'll clear up:<BR>
<BR>RTOS.m3:27: undefined reference to `_FatalExit'<BR>RTOS.mo: In function `RTOS__GetMemory':<BR>RTOS.m3:75: undefined reference to `_VirtualAlloc'<BR>RTOS.m3:85: undefined reference to `_VirtualAlloc'<BR>RTOS.mo: In function `RTOS__InitMemory':<BR>RTOS.m3:96: undefined reference to `_VirtualAlloc'<BR>RTOS.m3:100: undefined reference to `_GetSystemInfo'<BR>RTOS.mo: In function `RTOS__Write':<BR>RTOS.m3:118: undefined reference to `_AllocConsole'<BR>RTOS.m3:119: undefined reference to `_GetStdHandle'<BR>RTOS.m3:122: undefined reference to `_WriteFile'<BR>RTPerfTool.mo: In function `RTPerfTool__Start':<BR>RTPerfTool.m3:19: undefined reference to `_ReadFile'<BR>RTPerfTool.m3:22: undefined reference to `_CloseHandle'<BR>RTPerfTool.mo: In function `RTPerfTool__Close':<BR>RTPerfTool.m3:28: undefined reference to `_CloseHandle'<BR>RTPerfTool.mo: In function `RTPerfTool__Send':<BR>RTPerfTool.m3:34: undefined reference to `_WriteFile'<BR>RTPerfTool.mo: In function `RTPerfTool__PrepHandle':<BR>RTPerfTool.m3:58: undefined reference to `_GetCurrentProcess'<BR>RTPerfTool.m3:59: undefined reference to `_DuplicateHandle'<BR>etc.<BR>
<BR>I did think I was past these. I thought I built m3core and libm3 including linking (having even modified cm3.cfg)<BR>COULD be I'm using the wrong .libs, but:<BR>
<BR>C:\cygwin\lib\w32api>nm libkernel32.a | findstr CreateFile<BR>00000000 I <A href="mailto:__imp__CreateFileW@28">__imp__CreateFileW@28</A><BR>00000000 T <A href="mailto:_CreateFileW@28">_CreateFileW@28</A><BR>00000000 I <A href="mailto:__imp__CreateFileMappingW@24">__imp__CreateFileMappingW@24</A><BR>00000000 T <A href="mailto:_CreateFileMappingW@24">_CreateFileMappingW@24</A><BR>00000000 I <A href="mailto:__imp__CreateFileMappingA@24">__imp__CreateFileMappingA@24</A><BR>00000000 T <A href="mailto:_CreateFileMappingA@24">_CreateFileMappingA@24</A><BR>00000000 I <A href="mailto:__imp__CreateFileA@28">__imp__CreateFileA@28</A><BR>00000000 T <A href="mailto:_CreateFileA@28">_CreateFileA@28</A><BR>
<BR>C:\cygwin\lib\w32api>cd \MinGW\lib<BR>
<BR>C:\MinGW\lib>nm libkernel32.a | findstr CreateFile<BR>00000000 I <A href="mailto:__imp__CreateFileW@28">__imp__CreateFileW@28</A><BR>00000000 T <A href="mailto:_CreateFileW@28">_CreateFileW@28</A><BR>00000000 I <A href="mailto:__imp__CreateFileMappingW@24">__imp__CreateFileMappingW@24</A><BR>00000000 T <A href="mailto:_CreateFileMappingW@24">_CreateFileMappingW@24</A><BR>00000000 I <A href="mailto:__imp__CreateFileMappingA@24">__imp__CreateFileMappingA@24</A><BR>00000000 T <A href="mailto:_CreateFileMappingA@24">_CreateFileMappingA@24</A><BR>00000000 I <A href="mailto:__imp__CreateFileA@28">__imp__CreateFileA@28</A><BR>00000000 T <A href="mailto:_CreateFileA@28">_CreateFileA@28</A><BR>
 <BR>
I think at least THREE calling conventions should be supported -- __cdecl, __stdcall, __fastcall --<BR>but oh well. We can live without __fastcall.<BR>Watcom has another calling convention, "watcall", and they let you describe calling conventions with #pragmas, neat.<BR>
<BR>Thanks,<BR> - Jay<BR><br /><hr />Share life as it happens with the new Windows Live. <a href='http://www.windowslive.com/share.html?ocid=TXT_TAGHM_Wave2_sharelife_012008' target='_new'>Start sharing!</a></body>
</html>