digitalmars.D - stdcall functions?
- "Chris Miller" <chris dprogramming.com> Apr 22 2007
- Walter Bright <newshound1 digitalmars.com> Apr 23 2007
- "Chris Miller" <chris dprogramming.com> Apr 23 2007
- Walter Bright <newshound1 digitalmars.com> Apr 23 2007
- "Chris Miller" <chris dprogramming.com> Apr 23 2007
- Walter Bright <newshound1 digitalmars.com> Apr 23 2007
- =?UTF-8?B?VGhvbWFzIEvDvGhuZQ==?= <thomas-dloop kuehne.cn> Apr 23 2007
- "Chris Miller" <chris dprogramming.com> Apr 24 2007
- "Chris Miller" <chris dprogramming.com> Apr 24 2007
- Neal Becker <ndbecker2 gmail.com> Apr 26 2007
- "Anders Bergh" <anders andersman.org> Apr 23 2007
- "Anders Bergh" <anders andersman.org> Apr 23 2007
How can I make a stdcall function on Linux with DMD? extern(Windows) works, but it gives it DMC's Windows name mangling (e.g. foo 4) that is not compatible with Linux' stdcall C functions. If this won't be changed in DMD's Linux version, I suppose I could settle with manually telling ld how to translate the names. Anyone know if this is possible or how?
Apr 22 2007
Chris Miller wrote:How can I make a stdcall function on Linux with DMD? extern(Windows) works, but it gives it DMC's Windows name mangling (e.g. foo 4) that is not compatible with Linux' stdcall C functions.
I didn't know Linux even had stdcall C functions.
Apr 23 2007
On Mon, 23 Apr 2007 03:32:31 -0400, Walter Bright <newshound1 digitalmars.com> wrote:Chris Miller wrote:How can I make a stdcall function on Linux with DMD? extern(Windows) works, but it gives it DMC's Windows name mangling (e.g. foo 4) that is not compatible with Linux' stdcall C functions.
I didn't know Linux even had stdcall C functions.
GCC has __attribute__((__stdcall__)) Specifically, I want to work with winelib, which is a Windows API implementation for Linux (and others); and like Windows, uses stdcall. Also, there's a static assert in std.c.windows.windows preventing it from working with winelib; I had to comment that line out and it at least compiled, just wouldn't link due to the stdcall stuff.
Apr 23 2007
Chris Miller wrote:On Mon, 23 Apr 2007 03:32:31 -0400, Walter Bright <newshound1 digitalmars.com> wrote:Chris Miller wrote:How can I make a stdcall function on Linux with DMD? extern(Windows) works, but it gives it DMC's Windows name mangling (e.g. foo 4) that is not compatible with Linux' stdcall C functions.
I didn't know Linux even had stdcall C functions.
GCC has __attribute__((__stdcall__)) Specifically, I want to work with winelib, which is a Windows API implementation for Linux (and others); and like Windows, uses stdcall.
If Linux's stdcall functions are for compatibility with Windows, why aren't they compatible with Windows name mangling?
Apr 23 2007
On Mon, 23 Apr 2007 06:15:36 -0400, Walter Bright <newshound1 digitalmars.com> wrote:Chris Miller wrote:On Mon, 23 Apr 2007 03:32:31 -0400, Walter Bright <newshound1 digitalmars.com> wrote:Chris Miller wrote:How can I make a stdcall function on Linux with DMD? extern(Windows) works, but it gives it DMC's Windows name mangling (e.g. foo 4) that is not compatible with Linux' stdcall C functions.
I didn't know Linux even had stdcall C functions.
Specifically, I want to work with winelib, which is a Windows API implementation for Linux (and others); and like Windows, uses stdcall.
If Linux's stdcall functions are for compatibility with Windows, why aren't they compatible with Windows name mangling?
I don't think that's its one and only purpose. Just what I want it for now. Besides, I don't think all Windows compilers mangle stdcall that way, and linux ones don't.
Apr 23 2007
Chris Miller wrote:Just what I want it for now. Besides, I don't think all Windows compilers mangle stdcall that way, and linux ones don't.
Hmm, DMD matches the way Microsoft's compiler mangles stdcall names.
Apr 23 2007
Content-Type: multipart/mixed; boundary="------------080202020007060006070108" This is a multi-part message in MIME format. --------------080202020007060006070108 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Chris Miller wrote:On Mon, 23 Apr 2007 06:15:36 -0400, Walter Bright <newshound1 digitalmars.com> wrote: =20Chris Miller wrote:On Mon, 23 Apr 2007 03:32:31 -0400, Walter Bright <newshound1 digitalmars.com> wrote:Chris Miller wrote:How can I make a stdcall function on Linux with DMD? extern(Windows) works, but it gives it DMC's Windows name mangling (e.g. foo 4) that is not compatible with Linux' stdcall C functions=
I didn't know Linux even had stdcall C functions.
Specifically, I want to work with winelib, which is a Windows API implementation for Linux (and others); and like Windows, uses stdcall=
If Linux's stdcall functions are for compatibility with Windows, why aren't they compatible with Windows name mangling?
I don't think that's its one and only purpose. Just what I want it for now. Besides, I don't think all Windows compilers mangle stdcall that way, and linux ones don't.
The attached program might help: 1) use extern(Windows) in your sources 2) compile 3) dmd_wine_fixer <your_object_file> 4) link Thomas --------------080202020007060006070108 Content-Type: application/octet-stream; name="dmd_wine_fixer" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="dmd_wine_fixer" f0VMRgEBAQAAAAAAAAAAAAIAAwABAAAAIIYECDQAAADIDgAAAAAAADQAIAAIACgAGgAZAAYA AAA0AAAANIAECDSABAgAAQAAAAEAAAUAAAAEAAAAAwAAADQBAAA0gQQINIEECBMAAAATAAAA BAAAAAEAAAABAAAAAAAAAACABAgAgAQITAsAAEwLAAAFAAAAABAAAAEAAABMCwAATJsECEyb BAhEAQAATAEAAAYAAAAAEAAAAgAAAGALAABgmwQIYJsECNgAAADYAAAABgAAAAQAAAAEAAAA SAEAAEiBBAhIgQQIIAAAACAAAAAEAAAABAAAAFHldGQAAAAAAAAAAAAAAAAAAAAAAAAAAAYA AAAEAAAAgBUEZQAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAQAAAAvbGliL2xkLWxpbnV4LnNv LjIAAAQAAAAQAAAAAQAAAEdOVQAAAAAAAgAAAAYAAAAJAAAAEQAAABIAAAADAAAAAAAAAAoA AAAMAAAACQAAAAAAAAAAAAAACwAAAAAAAAAIAAAAEAAAAAAAAAANAAAADwAAAAEAAAARAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAGAAAABQAAAAAA AAACAAAABAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqAAAAAAAAACQAAAASAAAA GgAAAAAAAAC0AAAAEgAAAGIAAAAAAAAAHQAAABIAAAAjAAAAAAAAAIMBAAASAAAAPwAAAAAA AABAAQAAEgAAAEwAAACQnAQIBAAAABEAFwBaAAAAAAAAAJ8AAAASAAAAMgAAAAAAAACpAAAA EgAAAJoAAAAAAAAATQEAABIAAAA4AAAAAAAAANMCAAASAAAAiAAAAAAAAACeAQAAEgAAAEUA AAAAAAAAygEAABIAAACgAAAAAAAAAOEAAAASAAAAcwAAAAAAAAAyAAAAEgAAAHkAAADoiQQI BAAAABEADgBTAAAAAAAAAHIBAAASAAAAAQAAAAAAAAAAAAAAIAAAAABfX2dtb25fc3RhcnRf XwBsaWJjLnNvLjYAc3RyZXJyb3IAbWFsbG9jAGZwcmludGYAZnNlZWsAbWVtY21wAGZyZWFk AGZjbG9zZQBzdGRlcnIAZndyaXRlAF9feHN0YXQAX19lcnJub19sb2NhdGlvbgBmb3BlbgBf SU9fc3RkaW5fdXNlZABfX2xpYmNfc3RhcnRfbWFpbgBmcHV0cwBmcmVlAC9ob21lL3RrL21p c2MvbGliOi9ob21lL3RrL21pc2MvbGliOi9ob21lL3RrL21pc2MvbGliOi9ob21lL3RrL21p c2MvbGliOgBHTElCQ18yLjEAR0xJQkNfMi4wAAAAAgACAAIAAgACAAIAAgACAAIAAgACAAMA AgADAAEAAgAAAAAAAQACABAAAAAQAAAAAAAAABFpaQ0AAAMA7gAAABAAAAAQaWkNAAACAPgA AAAAAAAAOJwECAYRAACQnAQIBQYAAEicBAgHAQAATJwECAcCAABQnAQIBwMAAFScBAgHBAAA WJwECAcFAABcnAQIBwcAAGCcBAgHCAAAZJwECAcJAABonAQIBwoAAGycBAgHCwAAcJwECAcM AAB0nAQIBw0AAHicBAgHDgAAfJwECAcQAACAnAQIBxEAAFWJ5YPsCOg9AQAA6JQBAADojwQA AMnDAP81QJwECP8lRJwECAAAAAD/JUicBAhoAAAAAOng/////yVMnAQIaAgAAADp0P////8l UJwECGgQAAAA6cD/////JVScBAhoGAAAAOmw/////yVYnAQIaCAAAADpoP////8lXJwECGgo AAAA6ZD/////JWCcBAhoMAAAAOmA/////yVknAQIaDgAAADpcP////8laJwECGhAAAAA6WD/ ////JWycBAhoSAAAAOlQ/////yVwnAQIaFAAAADpQP////8ldJwECGhYAAAA6TD/////JXic BAhoYAAAAOkg/////yV8nAQIaGgAAADpEP////8lgJwECGhwAAAA6QD///8AAAAAAAAAAAAA AAAx7V6J4YPk8FBUUmgwiQQIaECJBAhRVmieiAQI6HP////0kJBVieVTg+wE6AAAAABbgcPs FQAAi5P8////hdJ0Beie////WFvJw5CQkJCQkFWJ5YPsCIA9lJwECAB0DOscg8AEo4ycBAj/ 0qGMnAQIixCF0nXrxgWUnAQIAcnDkFWJ5YPsCKFcmwQIhcB0ErgAAAAAhcB0CccEJFybBAj/ 0MnDkFWJ5VaLdQhTD7dGMI1Y/+s/D7dGLkuJ8gNWIA+vw40EAoN4BAN1KYnxA0gQicoDUBTr GYA5QI1BAXUPicjGAABAOdB0BYA4AHXzicE50XLjhdt5vVteycNVieVXjUWcVlOD7HCLfQhQ V2oD6ED+//+DxBCFwHQJUFdo7IkECOs2i0WsJQDwAAA9AIAAAHQJUFdoEYoECOseUFBoKIoE CFfoe/7//4PEEIXAiUWQdRdQV2grigQI/zWQnAQI6J/9///pBAEAAIPsDP91yOi//f//g8QQ hcCJxnUXUFdoP4oECP81kJwECOh0/f//6dEAAAD/dZD/dchqAVDoof3//4PEEDtFyHQJU1do ZYoECOsrUWoEaIGKBAhW6ML9//+DxBCFwHQJUldohooECOsNgH4EAXQXUFdom4oECP81kJwE COga/f//g8QQ62xW6K/+//9qAGoA/3WQ6GP9//+DxBCFwHUWi13I/3WQU2oBVui9/f//g8QQ OcN0JugB/f//g+wM/zDo5/z//1BXaLKKBAj/NZCcBAjoxfz//4PEIOsXg+wM/3WQ6FX9//+J NCToXf3//zHA6xiD7Az/dZDoPv3//4k0JOhG/f//uAEAAACDxBCNZfRbXl/Jw41MJASD5PD/ cfxVieVXVjH2U7sBAAAAUYPsCIs5i0kEg/8BiU3sfzNQZr4BAFD/NZCcBAho0IoECOi4/P// i0Xsg8QM/zBoHIsECP81kJwECOgw/P//g8QQ6x+LReyD7Az/NJjoFf7//4PEEIXAdAW+AQAA AEM5+3XhjWXwifBZW15fyY1h/MOQkJCQkJCQkJCQVYnlycONdCYAjbwnAAAAAFWJ5VdWU+hP AAAAgcPxEgAAg+wc6KP7//+NgxD///+NkxD///8p0MH4AolF8HQjMf+J1otFEEeJRCQIi0UM iUQkBItFCIkEJP8Wg8YEOX3wdeGDxBxbXl/Jw4scJMOQkFWJ5VO7TJsECIPsBKFMmwQIg/j/ dAyD6wT/0IsDg/j/dfSDxARbycNVieVTg+wE6AAAAABbgcNoEgAA6JD8//9ZW8nDAwAAAAEA AgAlczogZmFpbGVkIHRvIHJlYWQgZmlsZSBpbmZvcm1hdGlvbgoAOiVzOiBub3QgYSBwbGFp biBmaWxlCgByKwAlczogZmFpbGVkIHRvIG9wZW4KACVzOiBmYWlsZWQgdG8gYWxsb2NhdGUg ZW5vdWdoIG1lbW9yeQoAJXM6IGZhaWxlZCB0byByZWFkIGNvbnRlbnQKAH9FTEYAJXM6IG5v dCBhbiBFTEYgZmlsZQoAJXM6IG5vdCBhbiBFTEYzMiBmaWxlCgAlczogZmFpbGVkIHRvIHNh dmUgcmVzdWx0ICVzCgBleHRlcm4oV2luZG93cykgc3ltYm9sIGZpeGVyIGZvciBXaW5lIChD KSBUaG9tYXMgS3VlaG5lIDx0aG9tYXNAa3VlaG5lLmNuPgoAJXMgPG9iamVjdF9maWxlXzE+ IFs8b2JqZWN0X2ZpbGVfMj4gLi4uXQoAAAAAAAAA/////wAAAAD/////AAAAAAAAAAABAAAA EAAAAA8AAAClAAAAHQAAAKUAAAAMAAAA/IQECA0AAADIiQQIBAAAAGiBBAgFAAAAHIMECAYA AAD8gQQICgAAAAIBAAALAAAAEAAAABUAAAAAAAAAAwAAADycBAgCAAAAeAAAABQAAAARAAAA FwAAAISEBAgRAAAAdIQECBIAAAAQAAAAEwAAAAgAAAD+//9vRIQECP///28BAAAA8P//bx6E BAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA YJsECAAAAAAAAAAAKoUECDqFBAhKhQQIWoUECGqFBAh6hQQIioUECJqFBAiqhQQIuoUECMqF BAjahQQI6oUECPqFBAgKhgQIAAAAAAAAAABYmwQIAEdDQzogKEdOVSkgNC4xLjEgKEdlbnRv byA0LjEuMS1yMykAAEdDQzogKEdOVSkgNC4xLjEgKEdlbnRvbyA0LjEuMS1yMykAAEdDQzog KEdOVSkgNC4xLjIgMjAwNzAyMTQgKCAgKGdkYyAwLjIzLCB1c2luZyBkbWQgMS4wMDcpKSAo R2VudG9vIDQuMS4yKQAAR0NDOiAoR05VKSA0LjEuMiAyMDA3MDIxNCAoICAoZ2RjIDAuMjMs IHVzaW5nIGRtZCAxLjAwNykpIChHZW50b28gNC4xLjIpAABHQ0M6IChHTlUpIDQuMS4xIChH ZW50b28gNC4xLjEtcjMpAABHQ0M6IChHTlUpIDQuMS4yIDIwMDcwMjE0ICggIChnZGMgMC4y MywgdXNpbmcgZG1kIDEuMDA3KSkgKEdlbnRvbyA0LjEuMikAAEdDQzogKEdOVSkgNC4xLjEg KEdlbnRvbyA0LjEuMS1yMykAAC5zaHN0cnRhYgAuaW50ZXJwAC5ub3RlLkFCSS10YWcALmhh c2gALmR5bnN5bQAuZHluc3RyAC5nbnUudmVyc2lvbgAuZ251LnZlcnNpb25fcgAucmVsLmR5 bgAucmVsLnBsdAAuaW5pdAAudGV4dAAuZmluaQAucm9kYXRhAC5laF9mcmFtZQAuY3RvcnMA LmR0b3JzAC5qY3IALmR5bmFtaWMALmdvdAAuZ290LnBsdAAuZGF0YQAuYnNzAC5jb21tZW50 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAQAAAAIA AAA0gQQINAEAABMAAAAAAAAAAAAAAAEAAAAAAAAAEwAAAAcAAAACAAAASIEECEgBAAAgAAAA AAAAAAAAAAAEAAAAAAAAACEAAAAFAAAAAgAAAGiBBAhoAQAAlAAAAAQAAAAAAAAABAAAAAQA AAAnAAAACwAAAAIAAAD8gQQI/AEAACABAAAFAAAAAQAAAAQAAAAQAAAALwAAAAMAAAACAAAA HIMECBwDAAACAQAAAAAAAAAAAAABAAAAAAAAADcAAAD///9vAgAAAB6EBAgeBAAAJAAAAAQA AAAAAAAAAgAAAAIAAABEAAAA/v//bwIAAABEhAQIRAQAADAAAAAFAAAAAQAAAAQAAAAAAAAA UwAAAAkAAAACAAAAdIQECHQEAAAQAAAABAAAAAAAAAAEAAAACAAAAFwAAAAJAAAAAgAAAISE BAiEBAAAeAAAAAQAAAALAAAABAAAAAgAAABlAAAAAQAAAAYAAAD8hAQI/AQAABcAAAAAAAAA AAAAAAQAAAAAAAAAYAAAAAEAAAAGAAAAFIUECBQFAAAAAQAAAAAAAAAAAAAEAAAABAAAAGsA AAABAAAABgAAACCGBAggBgAAqAMAAAAAAAAAAAAAEAAAAAAAAABxAAAAAQAAAAYAAADIiQQI yAkAABwAAAAAAAAAAAAAAAQAAAAAAAAAdwAAAAEAAAACAAAA5IkECOQJAABiAQAAAAAAAAAA AAAEAAAAAAAAAH8AAAABAAAAAgAAAEiLBAhICwAABAAAAAAAAAAAAAAABAAAAAAAAACJAAAA AQAAAAMAAABMmwQITAsAAAgAAAAAAAAAAAAAAAQAAAAAAAAAkAAAAAEAAAADAAAAVJsECFQL AAAIAAAAAAAAAAAAAAAEAAAAAAAAAJcAAAABAAAAAwAAAFybBAhcCwAABAAAAAAAAAAAAAAA BAAAAAAAAACcAAAABgAAAAMAAABgmwQIYAsAANgAAAAFAAAAAAAAAAQAAAAIAAAApQAAAAEA AAADAAAAOJwECDgMAAAEAAAAAAAAAAAAAAAEAAAABAAAAKoAAAABAAAAAwAAADycBAg8DAAA SAAAAAAAAAAAAAAABAAAAAQAAACzAAAAAQAAAAMAAACEnAQIhAwAAAwAAAAAAAAAAAAAAAQA AAAAAAAAuQAAAAgAAAADAAAAkJwECJAMAAAIAAAAAAAAAAAAAAAEAAAAAAAAAL4AAAABAAAA AAAAAAAAAACQDAAAbgEAAAAAAAAAAAAAAQAAAAAAAAABAAAAAwAAAAAAAAAAAAAA/g0AAMcA AAAAAAAAAAAAAAEAAAAAAAAA --------------080202020007060006070108--
Apr 23 2007
On Mon, 23 Apr 2007 15:33:53 -0400, Thomas Kühne <thomas-dloop kuehne.cn> wrote:The attached program might help: 1) use extern(Windows) in your sources 2) compile 3) dmd_wine_fixer <your_object_file> 4) link Thomas
I was thinking of doing something like this. Thanks, you beat me to it. I have yet to test it because I might have to run it across dozens of files.
Apr 24 2007
Content-Type: multipart/mixed; boundary="------------000603060205050301060005" This is a multi-part message in MIME format. --------------000603060205050301060005 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Chris Miller wrote:On Mon, 23 Apr 2007 15:33:53 -0400, Thomas K=C3=BChne <thomas-dloop kuehne.cn> wrote: =20The attached program might help: 1) use extern(Windows) in your sources 2) compile 3) dmd_wine_fixer <your_object_file> 4) link Thomas
I was thinking of doing something like this. Thanks, you beat me to it.=
=20 I have yet to test it because I might have to run it across dozens of files.
The attached version should be more useful to you because it doesn't change the infamous _d_throw 4. (Has anybody ever succeeded in setting a break point at _d_throw 4 in GDB without looking up the address first?) Thomas --------------000603060205050301060005 Content-Type: application/octet-stream; name="dmd_wine_fixer" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="dmd_wine_fixer" f0VMRgEBAQAAAAAAAAAAAAIAAwABAAAAUIYECDQAAAD4EgAAAAAAADQAIAAIACgAIAAdAAYA AAA0AAAANIAECDSABAgAAQAAAAEAAAUAAAAEAAAAAwAAADQBAAA0gQQINIEECBMAAAATAAAA BAAAAAEAAAABAAAAAAAAAACABAgAgAQIDAwAAAwMAAAFAAAAABAAAAEAAAAMDAAADJwECAyc BAhIAQAAUAEAAAYAAAAAEAAAAgAAACAMAAAgnAQIIJwECNgAAADYAAAABgAAAAQAAAAEAAAA SAEAAEiBBAhIgQQIIAAAACAAAAAEAAAABAAAAFHldGQAAAAAAAAAAAAAAAAAAAAAAAAAAAYA AAAEAAAAgBUEZQAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAQAAAAvbGliL2xkLWxpbnV4LnNv LjIAAAQAAAAQAAAAAQAAAEdOVQAAAAAAAgAAAAYAAAAJAAAAEQAAABMAAAADAAAAAAAAAAsA AAANAAAACQAAAAoAAAAAAAAADAAAAAAAAAAIAAAAEQAAAAAAAAAOAAAAEAAAAAEAAAASAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAABgAAAAUA AAAAAAAAAgAAAAQAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgAAAAAAAAAkAAAA EgAAABoAAAAAAAAAtAAAABIAAABoAAAAAAAAAB0AAAASAAAAIwAAAAAAAACDAQAAEgAAAD8A AAAAAAAAQAEAABIAAABMAAAAVJ0ECAQAAAARABcAYAAAAAAAAACfAAAAEgAAADIAAAAAAAAA qQAAABIAAACgAAAAAAAAAE0BAAASAAAAUwAAAAAAAACnAAAAEgAAADgAAAAAAAAA0wIAABIA AACOAAAAAAAAAJ4BAAASAAAARQAAAAAAAADKAQAAEgAAAKYAAAAAAAAA4QAAABIAAAB5AAAA AAAAADIAAAASAAAAfwAAAGiKBAgEAAAAEQAOAFkAAAAAAAAAcgEAABIAAAABAAAAAAAAAAAA AAAgAAAAAF9fZ21vbl9zdGFydF9fAGxpYmMuc28uNgBzdHJlcnJvcgBtYWxsb2MAZnByaW50 ZgBmc2VlawBtZW1jbXAAZnJlYWQAZmNsb3NlAHN0ZGVycgBmcHV0YwBmd3JpdGUAX194c3Rh dABfX2Vycm5vX2xvY2F0aW9uAGZvcGVuAF9JT19zdGRpbl91c2VkAF9fbGliY19zdGFydF9t YWluAGZwdXRzAGZyZWUAL2hvbWUvdGsvbWlzYy9saWI6L2hvbWUvdGsvbWlzYy9saWI6L2hv bWUvdGsvbWlzYy9saWI6L2hvbWUvdGsvbWlzYy9saWI6AEdMSUJDXzIuMQBHTElCQ18yLjAA AAACAAIAAgACAAIAAgACAAIAAgACAAIAAgADAAIAAwABAAIAAAAAAAEAAgAQAAAAEAAAAAAA AAARaWkNAAADAPQAAAAQAAAAEGlpDQAAAgD+AAAAAAAAAPicBAgGEgAAVJ0ECAUGAAAInQQI BwEAAAydBAgHAgAAEJ0ECAcDAAAUnQQIBwQAABidBAgHBQAAHJ0ECAcHAAAgnQQIBwgAACSd BAgHCQAAKJ0ECAcKAAAsnQQIBwsAADCdBAgHDAAANJ0ECAcNAAA4nQQIBw4AADydBAgHDwAA QJ0ECAcRAABEnQQIBxIAAFWJ5YPsCOhJAQAA6KABAADo6wQAAMnDAP81AJ0ECP8lBJ0ECAAA AAD/JQidBAhoAAAAAOng/////yUMnQQIaAgAAADp0P////8lEJ0ECGgQAAAA6cD/////JRSd BAhoGAAAAOmw/////yUYnQQIaCAAAADpoP////8lHJ0ECGgoAAAA6ZD/////JSCdBAhoMAAA AOmA/////yUknQQIaDgAAADpcP////8lKJ0ECGhAAAAA6WD/////JSydBAhoSAAAAOlQ//// /yUwnQQIaFAAAADpQP////8lNJ0ECGhYAAAA6TD/////JTidBAhoYAAAAOkg/////yU8nQQI aGgAAADpEP////8lQJ0ECGhwAAAA6QD/////JUSdBAhoeAAAAOnw/v//AAAAAAAAAAAx7V6J 4YPk8FBUUmiwiQQIaMCJBAhRVmj3iAQI6Hf////0kJBVieVTg+wE6AAAAABbgcN8FgAAi5P8 ////hdJ0Beii////WFvJw5CQkJCQkFWJ5YPsCIA9WJ0ECAB0DOscg8AEo1CdBAj/0qFQnQQI ixCF0nXrxgVYnQQIAcnDkFWJ5YPsCKEcnAQIhcB0ErgAAAAAhcB0CccEJBycBAj/0MnDkFWJ 5VdWU4PsDIt9CA+3RzCNcP/rWg+3Ry5OifoDVyAPr8aNBAKDeAQDdUSJ+wNYEItAFAHYiUXw 6zCAO0B1KlCNQ/dqCmhsigQIUOiU/v//g8QQhcB0EonYxgAAQDtF8HQFgDgAdfKJw0M7XfBy y4X2eaKNZfRbXl/Jw1WJ5VeNRZxWU4PscIt9CFBXagPoEf7//4PEEIXAdAlQV2h3igQI6zaL RawlAPAAAD0AgAAAdAlQV2icigQI6x5QUGizigQIV+hc/v//g8QQhcCJRZB1F1BXaLaKBAj/ NVSdBAjocP3//+kKAQAAg+wM/3XI6JD9//+DxBCFwInGdRdQV2jKigQI/zVUnQQI6EX9///p 1wAAAP91kP91yGoBUOhy/f//g8QQO0XIdAlQV2jwigQI6ytTagRoDIsECFboo/3//4PEEIXA dAlRV2gRiwQI6w2AfgQBdBdSV2gmiwQI/zVUnQQI6Ov8//+DxBDrcoPsDFboif7//4PEDGoA agD/dZDoLv3//4PEEIXAdRaLXcj/dZBTagFW6Jj9//+DxBA5w3Qm6Mz8//+D7Az/MOiy/P// UFdoPYsECP81VJ0ECOiQ/P//g8Qg6xeD7Az/dZDoMP3//4k0JOg4/f//McDrGIPsDP91kOgZ /f//iTQk6CH9//+4AQAAAIPEEI1l9FteX8nDjUwkBIPk8P9x/FWJ5VdWMfZTuwEAAABRg+wI izmLSQSD/wGJTex/WlNmvgEAU/81VJ0ECGhbiwQI6IP8//+DxAxop4sECGiziwQI/zVUnQQI 6Pv7//9aWf81VJ0ECGoK6Gz8//+LReyDxAz/MGjciwQI/zVUnQQI6NT7//+DxBDrH4tF7IPs DP80mOjo/f//g8QQhcB0Bb4BAAAAQzn7deGNZfCJ8FlbXl/JjWH8w5CQkJCQkJCQkJBVieXJ w410JgCNvCcAAAAAVYnlV1ZT6E8AAACBwzETAACD7BzoR/v//42DEP///42TEP///ynQwfgC iUXwdCMx/4nWi0UQR4lEJAiLRQyJRCQEi0UIiQQk/xaDxgQ5ffB14YPEHFteX8nDixwkw5CQ VYnlU7sMnAQIg+wEoQycBAiD+P90DIPrBP/QiwOD+P919IPEBFvJw1WJ5VOD7AToAAAAAFuB w6gSAADoQPz//1lbycMDAAAAAQACAABfZF90aHJvd0AAJXM6IGZhaWxlZCB0byByZWFkIGZp bGUgaW5mb3JtYXRpb24KADolczogbm90IGEgcGxhaW4gZmlsZQoAcisAJXM6IGZhaWxlZCB0 byBvcGVuCgAlczogZmFpbGVkIHRvIGFsbG9jYXRlIGVub3VnaCBtZW1vcnkKACVzOiBmYWls ZWQgdG8gcmVhZCBjb250ZW50CgB/RUxGACVzOiBub3QgYW4gRUxGIGZpbGUKACVzOiBub3Qg YW4gRUxGMzIgZmlsZQoAJXM6IGZhaWxlZCB0byBzYXZlIHJlc3VsdCAlcwoAZXh0ZXJuKFdp bmRvd3MpIHN5bWJvbCBmaXhlciBmb3IgV2luZSAoQykgVGhvbWFzIEt1ZWhuZSA8dGhvbWFz QGt1ZWhuZS5jbj4KAEFwciAyNSAyMDA3AHRoaXMgdmVyc2lvbiBkb2Vzbid0IGZpeCBfZF90 aHJvd0A0OyAlcwoAJXMgPG9iamVjdF9maWxlXzE+IFs8b2JqZWN0X2ZpbGVfMj4gLi4uXQoA AAAAAAAA/////wAAAAD/////AAAAAAAAAAABAAAAEAAAAA8AAACrAAAAHQAAAKsAAAAMAAAA IIUECA0AAABIigQIBAAAAGiBBAgFAAAAMIMECAYAAAAAggQICgAAAAgBAAALAAAAEAAAABUA AAAAAAAAAwAAAPycBAgCAAAAgAAAABQAAAARAAAAFwAAAKCEBAgRAAAAkIQECBIAAAAQAAAA EwAAAAgAAAD+//9vYIQECP///28BAAAA8P//bziEBAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIJwECAAAAAAAAAAAToUECF6FBAhuhQQI foUECI6FBAiehQQIroUECL6FBAjOhQQI3oUECO6FBAj+hQQIDoYECB6GBAguhgQIPoYECAAA AAAAAAAAGJwECABHQ0M6IChHTlUpIDQuMS4xIChHZW50b28gNC4xLjEtcjMpAABHQ0M6IChH TlUpIDQuMS4xIChHZW50b28gNC4xLjEtcjMpAABHQ0M6IChHTlUpIDQuMS4yIDIwMDcwMjE0 ICggIChnZGMgMC4yMywgdXNpbmcgZG1kIDEuMDA3KSkgKEdlbnRvbyA0LjEuMikAAEdDQzog KEdOVSkgNC4xLjIgMjAwNzAyMTQgKCAgKGdkYyAwLjIzLCB1c2luZyBkbWQgMS4wMDcpKSAo R2VudG9vIDQuMS4yKQAAR0NDOiAoR05VKSA0LjEuMSAoR2VudG9vIDQuMS4xLXIzKQAAR0ND OiAoR05VKSA0LjEuMiAyMDA3MDIxNCAoICAoZ2RjIDAuMjMsIHVzaW5nIGRtZCAxLjAwNykp IChHZW50b28gNC4xLjIpAABHQ0M6IChHTlUpIDQuMS4xIChHZW50b28gNC4xLjEtcjMpAAAA AAAAACwAAAACAAAAAAAEAAAAAABIigQIEwAAACCFBAgLAAAAdIYECCYAAAAAAAAAAAAAACQA AAACAK4AAAAEAAAAAABgigQIBAAAADWFBAgCAAAAAAAAAAAAAACqAAAAAgAAAAAABAEAAAAA L3Zhci90bXAvcG9ydGFnZS9zeXMtbGlicy9nbGliYy0yLjUvd29yay9idWlsZC14ODYteDg2 XzY0LXBjLWxpbnV4LWdudS1ucHRsL2NzdS9jcnRpLlMAL3Zhci90bXAvcG9ydGFnZS9zeXMt bGlicy9nbGliYy0yLjUvd29yay9nbGliYy0yLjUvY3N1AEdOVSBBUyAyLjE2LjEAAYCqAAAA AgAQAAAABAG4AAAAL3Zhci90bXAvcG9ydGFnZS9zeXMtbGlicy9nbGliYy0yLjUvd29yay9i dWlsZC14ODYteDg2XzY0LXBjLWxpbnV4LWdudS1ucHRsL2NzdS9jcnRuLlMAL3Zhci90bXAv cG9ydGFnZS9zeXMtbGlicy9nbGliYy0yLjUvd29yay9nbGliYy0yLjUvY3N1AEdOVSBBUyAy LjE2LjEAAYABEQAQBgMIGwglCBMFAAAAAREAEAYDCBsIJQgTBQAAALQAAAACAGoAAAABAfsO CgABAQEBAAAAAS92YXIvdG1wL3BvcnRhZ2Uvc3lzLWxpYnMvZ2xpYmMtMi41L3dvcmsvYnVp bGQteDg2LXg4Nl82NC1wYy1saW51eC1nbnUtbnB0bC9jc3UAAGNydGkuUwABAAAAAAUCSIoE CAMzAR4sHjpXHgIGAAEBAAUCIIUECAMjAR4sOgIFAAEBAAUCdIYECAMLAR4sHjpXHmRkLCxX Hh4eAgEAAQGSAAAAAgBqAAAAAQH7DgoAAQEBAQAAAAEvdmFyL3RtcC9wb3J0YWdlL3N5cy1s aWJzL2dsaWJjLTIuNS93b3JrL2J1aWxkLXg4Ni14ODZfNjQtcGMtbGludXgtZ251LW5wdGwv Y3N1AABjcnRuLlMAAQAAAAAFAmCKBAgDEgEeHh4CAQABAQAFAjWFBAgDCQEeAgEAAQEALnN5 bXRhYgAuc3RydGFiAC5zaHN0cnRhYgAuaW50ZXJwAC5ub3RlLkFCSS10YWcALmhhc2gALmR5 bnN5bQAuZHluc3RyAC5nbnUudmVyc2lvbgAuZ251LnZlcnNpb25fcgAucmVsLmR5bgAucmVs LnBsdAAuaW5pdAAudGV4dAAuZmluaQAucm9kYXRhAC5laF9mcmFtZQAuY3RvcnMALmR0b3Jz AC5qY3IALmR5bmFtaWMALmdvdAAuZ290LnBsdAAuZGF0YQAuYnNzAC5jb21tZW50AC5kZWJ1 Z19hcmFuZ2VzAC5kZWJ1Z19pbmZvAC5kZWJ1Z19hYmJyZXYALmRlYnVnX2xpbmUAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAEAAAACAAAANIEECDQB AAATAAAAAAAAAAAAAAABAAAAAAAAACMAAAAHAAAAAgAAAEiBBAhIAQAAIAAAAAAAAAAAAAAA BAAAAAAAAAAxAAAABQAAAAIAAABogQQIaAEAAJgAAAAEAAAAAAAAAAQAAAAEAAAANwAAAAsA AAACAAAAAIIECAACAAAwAQAABQAAAAEAAAAEAAAAEAAAAD8AAAADAAAAAgAAADCDBAgwAwAA CAEAAAAAAAAAAAAAAQAAAAAAAABHAAAA////bwIAAAA4hAQIOAQAACYAAAAEAAAAAAAAAAIA AAACAAAAVAAAAP7//28CAAAAYIQECGAEAAAwAAAABQAAAAEAAAAEAAAAAAAAAGMAAAAJAAAA AgAAAJCEBAiQBAAAEAAAAAQAAAAAAAAABAAAAAgAAABsAAAACQAAAAIAAACghAQIoAQAAIAA AAAEAAAACwAAAAQAAAAIAAAAdQAAAAEAAAAGAAAAIIUECCAFAAAXAAAAAAAAAAAAAAAEAAAA AAAAAHAAAAABAAAABgAAADiFBAg4BQAAEAEAAAAAAAAAAAAABAAAAAQAAAB7AAAAAQAAAAYA AABQhgQIUAYAAPgDAAAAAAAAAAAAABAAAAAAAAAAgQAAAAEAAAAGAAAASIoECEgKAAAcAAAA AAAAAAAAAAAEAAAAAAAAAIcAAAABAAAAAgAAAGSKBAhkCgAAogEAAAAAAAAAAAAABAAAAAAA AACPAAAAAQAAAAIAAAAIjAQICAwAAAQAAAAAAAAAAAAAAAQAAAAAAAAAmQAAAAEAAAADAAAA DJwECAwMAAAIAAAAAAAAAAAAAAAEAAAAAAAAAKAAAAABAAAAAwAAABScBAgUDAAACAAAAAAA AAAAAAAABAAAAAAAAACnAAAAAQAAAAMAAAAcnAQIHAwAAAQAAAAAAAAAAAAAAAQAAAAAAAAA rAAAAAYAAAADAAAAIJwECCAMAADYAAAABQAAAAAAAAAEAAAACAAAALUAAAABAAAAAwAAAPic BAj4DAAABAAAAAAAAAAAAAAABAAAAAQAAAC6AAAAAQAAAAMAAAD8nAQI/AwAAEwAAAAAAAAA AAAAAAQAAAAEAAAAwwAAAAEAAAADAAAASJ0ECEgNAAAMAAAAAAAAAAAAAAAEAAAAAAAAAMkA AAAIAAAAAwAAAFSdBAhUDQAACAAAAAAAAAAAAAAABAAAAAAAAADOAAAAAQAAAAAAAAAAAAAA VA0AAG4BAAAAAAAAAAAAAAEAAAAAAAAA1wAAAAEAAAAAAAAAAAAAAMgOAABYAAAAAAAAAAAA AAAIAAAAAAAAAOYAAAABAAAAAAAAAAAAAAAgDwAAXAEAAAAAAAAAAAAAAQAAAAAAAADyAAAA AQAAAAAAAAAAAAAAfBAAACAAAAAAAAAAAAAAAAEAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAJwQ AABOAQAAAAAAAAAAAAABAAAAAAAAABEAAAADAAAAAAAAAAAAAADqEQAADAEAAAAAAAAAAAAA AQAAAAAAAAABAAAAAgAAAAAAAAAAAAAA+BcAAOAFAAAfAAAAOwAAAAQAAAAQAAAACQAAAAMA AAAAAAAAAAAAANgdAAAOBAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA NIEECAAAAAADAAEAAAAAAEiBBAgAAAAAAwACAAAAAABogQQIAAAAAAMAAwAAAAAAAIIECAAA AAADAAQAAAAAADCDBAgAAAAAAwAFAAAAAAA4hAQIAAAAAAMABgAAAAAAYIQECAAAAAADAAcA AAAAAJCEBAgAAAAAAwAIAAAAAACghAQIAAAAAAMACQAAAAAAIIUECAAAAAADAAoAAAAAADiF BAgAAAAAAwALAAAAAABQhgQIAAAAAAMADAAAAAAASIoECAAAAAADAA0AAAAAAGSKBAgAAAAA AwAOAAAAAAAIjAQIAAAAAAMADwAAAAAADJwECAAAAAADABAAAAAAABScBAgAAAAAAwARAAAA AAAcnAQIAAAAAAMAEgAAAAAAIJwECAAAAAADABMAAAAAAPicBAgAAAAAAwAUAAAAAAD8nAQI AAAAAAMAFQAAAAAASJ0ECAAAAAADABYAAAAAAFSdBAgAAAAAAwAXAAAAAAAAAAAAAAAAAAMA GAAAAAAAAAAAAAAAAAADABkAAAAAAAAAAAAAAAAAAwAaAAAAAAAAAAAAAAAAAAMAGwAAAAAA AAAAAAAAAAADABwAAAAAAAAAAAAAAAAAAwAdAAAAAAAAAAAAAAAAAAMAHgAAAAAAAAAAAAAA AAADAB8AAQAAAAAAAAAAAAAABADx/wwAAAAAAAAAAAAAAAQA8f8oAAAAAAAAAAAAAAAEAPH/ LwAAAAAAAAAAAAAABADx/zoAAAAAAAAAAAAAAAQA8f+RAAAAdIYECAAAAAACAAwAoQAAAAAA AAAAAAAABADx/6wAAAAMnAQIAAAAAAEAEAC6AAAAFJwECAAAAAABABEAyAAAABycBAgAAAAA AQASANUAAABYnQQIAQAAAAEAFwDkAAAAUJ0ECAAAAAABABYA6wAAAKCGBAgAAAAAAgAMAAEB AADQhgQIAAAAAAIADAChAAAAAAAAAAAAAAAEAPH/DQEAABCcBAgAAAAAAQAQABoBAAAYnAQI AAAAAAEAEQAnAQAACIwECAAAAAABAA8ANQEAABycBAgAAAAAAQASAEEBAAAgigQIAAAAAAIA DAAvAAAAAAAAAAAAAAAEAPH/VwEAAAAAAAAAAAAABADx/64BAAAAAAAAAAAAAAQA8f+/AQAA IJwECAAAAAABAhMAyAEAAAycBAgAAAAAAALx/9kBAAD8nAQIAAAAAAECFQDvAQAADJwECAAA AAAAAvH/AgIAAGSKBAgEAAAAEQAOAAkCAAAAAAAAJAAAABIAAAAcAgAAAAAAALQAAAASAAAA MAIAAEydBAgAAAAAEQIWAD0CAACwiQQIBQAAABIADABNAgAAAAAAAB0AAAASAAAAaQIAACCF BAgAAAAAEgAKAG8CAAAAAAAAgwEAABIAAACBAgAAAAAAAEABAAASAAAAkgIAAFSdBAgEAAAA EQAXAKQCAAAAAAAAnwAAABIAAAC3AgAA9IYECHsAAAASAAwAvwIAAAAAAACpAAAAEgAAANAC AABQhgQIAAAAABIADADXAgAAAAAAAE0BAAASAAAA6AIAAAAAAACnAAAAEgAAAPkCAADAiQQI WgAAABIADAAJAwAAAAAAANMCAAASAAAAGwMAAFSdBAgAAAAAEADx/ycDAAD3iAQIrwAAABIA DAAsAwAAAAAAAJ4BAAASAAAASQMAAEidBAgAAAAAIAAWAFQDAABIigQIAAAAABIADQBaAwAA AAAAAMoBAAASAAAAbAMAAG+HBAiIAQAAEgAMAHkDAABUnQQIAAAAABAA8f+AAwAAGooECAAA AAASAgwAlwMAAAAAAADhAAAAEgAAAKcDAABcnQQIAAAAABAA8f+sAwAAAAAAADIAAAASAAAA vQMAAGiKBAgEAAAAEQAOAMwDAAAAAAAAcgEAABIAAADeAwAASJ0ECAAAAAAQABYA6wMAAAAA AAAAAAAAIAAAAP8DAAAAAAAAAAAAACAAAAAAYWJpLW5vdGUuUwAuLi9zeXNkZXBzL2kzODYv ZWxmL3N0YXJ0LlMAaW5pdC5jAGluaXRmaW5pLmMAL3Zhci90bXAvcG9ydGFnZS9zeXMtbGli cy9nbGliYy0yLjUvd29yay9idWlsZC14ODYteDg2XzY0LXBjLWxpbnV4LWdudS1ucHRsL2Nz dS9jcnRpLlMAY2FsbF9nbW9uX3N0YXJ0AGNydHN0dWZmLmMAX19DVE9SX0xJU1RfXwBfX0RU T1JfTElTVF9fAF9fSkNSX0xJU1RfXwBjb21wbGV0ZWQuNjEwOABwLjYxMDYAX19kb19nbG9i YWxfZHRvcnNfYXV4AGZyYW1lX2R1bW15AF9fQ1RPUl9FTkRfXwBfX0RUT1JfRU5EX18AX19G UkFNRV9FTkRfXwBfX0pDUl9FTkRfXwBfX2RvX2dsb2JhbF9jdG9yc19hdXgAL3Zhci90bXAv cG9ydGFnZS9zeXMtbGlicy9nbGliYy0yLjUvd29yay9idWlsZC14ODYteDg2XzY0LXBjLWxp bnV4LWdudS1ucHRsL2NzdS9jcnRuLlMAZG1kX3dpbmVfZml4ZXIuYwBfRFlOQU1JQwBfX2lu aXRfYXJyYXlfZW5kAF9HTE9CQUxfT0ZGU0VUX1RBQkxFXwBfX2luaXRfYXJyYXlfc3RhcnQA X2ZwX2h3AGZwcmludGZAQEdMSUJDXzIuMABzdHJlcnJvckBAR0xJQkNfMi4wAF9fZHNvX2hh bmRsZQBfX2xpYmNfY3N1X2ZpbmkAX19lcnJub19sb2NhdGlvbkBAR0xJQkNfMi4wAF9pbml0 AG1hbGxvY0BAR0xJQkNfMi4wAGZyZWFkQEBHTElCQ18yLjAAc3RkZXJyQEBHTElCQ18yLjAA X194c3RhdEBAR0xJQkNfMi4wAGZpeF9vYmoAZnNlZWtAQEdMSUJDXzIuMABfc3RhcnQAZnB1 dHNAQEdMSUJDXzIuMABmcHV0Y0BAR0xJQkNfMi4wAF9fbGliY19jc3VfaW5pdABtZW1jbXBA QEdMSUJDXzIuMABfX2Jzc19zdGFydABtYWluAF9fbGliY19zdGFydF9tYWluQEBHTElCQ18y LjAAZGF0YV9zdGFydABfZmluaQBmY2xvc2VAQEdMSUJDXzIuMQBmaXhfb2JqX2ZpbGUAX2Vk YXRhAF9faTY4Ni5nZXRfcGNfdGh1bmsuYngAZnJlZUBAR0xJQkNfMi4wAF9lbmQAZm9wZW5A QEdMSUJDXzIuMQBfSU9fc3RkaW5fdXNlZABmd3JpdGVAQEdMSUJDXzIuMABfX2RhdGFfc3Rh cnQAX0p2X1JlZ2lzdGVyQ2xhc3NlcwBfX2dtb25fc3RhcnRfXwA= --------------000603060205050301060005--
Apr 24 2007
On Mon, 23 Apr 2007 17:02:29 -0400, Anders Bergh <anders andersman.org> wrote:__attribute__((__stdcall__)) does nothing in gcc on Linux. Windows and Linux do not share the same ABI, so gcc doesn't care about that attribute on non-Windows OS's as far as I know.
It's doing something here, on 32 bits. I tested it by marking a function definition as stdcall but not its prototype; it linked but did odd things before segfaulting. Matching both without stdcall or both with stdcall made it work as normal. However, I did notice with 64 bits, gcc will ignore the stdcall attribute.
Apr 24 2007
Chris Miller wrote:On Mon, 23 Apr 2007 17:02:29 -0400, Anders Bergh <anders andersman.org> wrote:__attribute__((__stdcall__)) does nothing in gcc on Linux. Windows and Linux do not share the same ABI, so gcc doesn't care about that attribute on non-Windows OS's as far as I know.
It's doing something here, on 32 bits. I tested it by marking a function definition as stdcall but not its prototype; it linked but did odd things before segfaulting. Matching both without stdcall or both with stdcall made it work as normal. However, I did notice with 64 bits, gcc will ignore the stdcall attribute.
`stdcall' On the Intel 386, the `stdcall' attribute causes the compiler to assume that the called function will pop off the stack space used to pass arguments, unless it takes a variable number of arguments.
Apr 26 2007
On 4/23/07, Thomas Kühne <thomas-dloop kuehne.cn> wrote:Chris Miller wrote:On Mon, 23 Apr 2007 06:15:36 -0400, Walter Bright <newshound1 digitalmars.com> wrote:Chris Miller wrote:On Mon, 23 Apr 2007 03:32:31 -0400, Walter Bright <newshound1 digitalmars.com> wrote:Chris Miller wrote:How can I make a stdcall function on Linux with DMD? extern(Windows) works, but it gives it DMC's Windows name mangling (e.g. foo 4) that is not compatible with Linux' stdcall C functions.
I didn't know Linux even had stdcall C functions.
Specifically, I want to work with winelib, which is a Windows API implementation for Linux (and others); and like Windows, uses stdcall.
If Linux's stdcall functions are for compatibility with Windows, why aren't they compatible with Windows name mangling?
I don't think that's its one and only purpose. Just what I want it for now. Besides, I don't think all Windows compilers mangle stdcall that way, and linux ones don't.
The attached program might help: 1) use extern(Windows) in your sources 2) compile 3) dmd_wine_fixer <your_object_file> 4) link Thomas
-- Anders
Apr 23 2007
__attribute__((__stdcall__)) does nothing in gcc on Linux. Windows and Linux do not share the same ABI, so gcc doesn't care about that attribute on non-Windows OS's as far as I know. On 4/23/07, Chris Miller <chris dprogramming.com> wrote:On Mon, 23 Apr 2007 03:32:31 -0400, Walter Bright <newshound1 digitalmars.com> wrote:Chris Miller wrote:How can I make a stdcall function on Linux with DMD? extern(Windows) works, but it gives it DMC's Windows name mangling (e.g. foo 4) that is not compatible with Linux' stdcall C functions.
I didn't know Linux even had stdcall C functions.
GCC has __attribute__((__stdcall__)) Specifically, I want to work with winelib, which is a Windows API implementation for Linux (and others); and like Windows, uses stdcall. Also, there's a static assert in std.c.windows.windows preventing it from working with winelib; I had to comment that line out and it at least compiled, just wouldn't link due to the stdcall stuff.
-- Anders
Apr 23 2007









Walter Bright <newshound1 digitalmars.com> 