On Saturday 31 May 2025 20:01:11 LIU Hao wrote:
> 在 2025-5-31 00:43, Pali Rohár 写道:
> > Also these cleanups are important:
> > e0a38b59e92dc7fd568c983a20d71ecf71688aa9
> > 5a28a0560c350f9563e072eb55929b417c86bb53
> >
> > We can teach gendef to "comment" DllRegisterServer, DllUnregisterServer,
> > DllCanUnloadNow, DllGetClassObject, DllEntryPoint and DllMain symbols.
> >
> > Maybe there are even more symbols which should not be in the import
> > library.
>
> Here's a list of symbols that are exported from Windows SDK libs. They need
> be either commented out or marked `PRIVATE`.
>
> ```
> const PRIVATE_EXPORTS = [
> 'DllGetClassObject',
> 'DllGetClassObjectWOW',
> 'DllCanUnloadNow',
> 'DllRegisterServer',
> 'DllRegisterProxy',
> 'DllRegisterWindowClasses',
> 'DllUnregisterServer',
> 'DllUnregisterServerWeReallyMeanIt', // ?? what does this damn thing do?
> 'DllUnregisterProxy',
> '_DllEntryPoint',
> '_DllMainCRTStartup', // MSVC entry point
> '_DllMainCRTStartupForGS',
> '_DllMainCRTStartupForGS2',
> 'DllMain',
> 'DllMainCRTStartup', // MinGW entry point
> 'DllGetVersion',
> 'DllDebugObjectRPCHook',
> ];
> ```
>
> There are also symbols that are apparently not to be imported, such as
> `DllRegisterServerEx{A,W,}`, and all names that begin with `IID_` or
> `LIBID_`.
Some of them are documented as PRIVATE in MS linker documentation:
https://learn.microsoft.com/en-us/cpp/error-messages/tool-errors/linker-tools-warning-lnk4104
https://learn.microsoft.com/en-us/cpp/error-messages/tool-errors/linker-tools-warning-lnk4222
If both llvm and binutils supports PRIVATE keyword in def files then we
could mark them as PRIVATE. Otherwise put ';' at beginning of the line
as a comment.
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public