This is mostly affecting usage of the JIT...The best example is for Windows, but this makes symbol lookup the same on all platforms.
When using DynamicLibrary::getPermanentLibrary(0,0) to get a list of the loaded libs, this is currently stored in a set which makes iteration unordered / undefined. Additionally there is a problem as newer Windows are using ucrt.dll for a lot of stdlib functions which cause a disagreement between the JIT and native code as to what the address and implementation of that function is:
JIT: putenv_s("TEST", "VALUE") calls msvcrt.dll, putenv_s
JIT: getenv("TEST") -> "VALUE" calls msvcrt.dll, getenv
Native: getenv("TEST") -> NULL // calls ucrt.dll, getenv
The patch simply changes the way modules are stored.
Searches for symbols in reverse order so newer modules will override older ones.
And always tries to give priority to the process' symbols (what dlsym does I believe)