www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - stdcall functions?

reply "Chris Miller" <chris dprogramming.com> writes:
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
parent reply Walter Bright <newshound1 digitalmars.com> writes:
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
parent reply "Chris Miller" <chris dprogramming.com> writes:
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
next sibling parent reply Walter Bright <newshound1 digitalmars.com> writes:
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
parent reply "Chris Miller" <chris dprogramming.com> writes:
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.
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?
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
next sibling parent Walter Bright <newshound1 digitalmars.com> writes:
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
prev sibling parent reply =?UTF-8?B?VGhvbWFzIEvDvGhuZQ==?= <thomas-dloop kuehne.cn> writes:
 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:
=20
 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=
=2E
 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=
=2E
 If Linux's stdcall functions are for compatibility with Windows, why
 aren't they compatible with Windows name mangling?
=20 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
next sibling parent "Anders Bergh" <anders andersman.org> writes:
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.
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?
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
prev sibling parent reply "Chris Miller" <chris dprogramming.com> writes:
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
parent =?UTF-8?B?VGhvbWFzIEvDvGhuZQ==?= <thomas-dloop kuehne.cn> writes:
 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:
=20
 The attached program might help:
 1) use extern(Windows) in your sources
 2) compile
 3) dmd_wine_fixer <your_object_file>
 4) link

 Thomas
=20 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
prev sibling parent reply "Anders Bergh" <anders andersman.org> writes:
__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
parent reply "Chris Miller" <chris dprogramming.com> writes:
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
parent Neal Becker <ndbecker2 gmail.com> writes:
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.
gcc info says: `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