I am going to try the following solution:  - coreclr DllMain sets some internal flag like `g_dllmain_has_run`  - if `coreclr_initialize` sees the flag not set, it runs DllMain first of all things.     This is to address the concerns about fragility of the contract. Also should be less platform specific.    If that works, I can just assume that we are "exe-initializing"  when `coreclr_initialize` needs to run DllMain