From: Aaron W. L. <aar...@aa...> - 2004-09-08 19:14:57
|
Carlo Wood wrote: > Add a new option `--gcc-stdcall', which will treat a line like > "_llama@0=_llama_implementation@0" as follows: the internal name will > be ignored; "_llama@0" will be (correctly) treated as exported > name and it will strip off the underscore to form the library name > (imported name). Note that symbols without '@<n>', for example: > "_foo=_foo@8" will result in "_foo" for both imported and exported > names, because the left hand side (_foo) lacks a '@<n>' and is therefore > not considered to be a stdcall. This is good. However, I would prefer the option named something more generic, such as --msvc-translation. The option would mean that binutils would do the special-case function type translations similar to what MS LINK does, including this particular stdcall special casing. C++ cdecl functions also have special casing in Microsoft linker, and possibly other things, and it might be nice to add proper translations for these also at some point. (I'm not asking you to actually implement that, though.) It might also make sense to add a similar option to the linker, to allow direct usage to do the right thing: gcc -o artichoke.exe artichoke.c msvc_stdcall_stuff.dll -Wl,--msvc-translation It might even make sense to have such an ld option on by default. Aaron W. LaFramboise |