Revert "Ensure using the given executable path. (dotnet/coreclr#10525)" (#31848)
authorMichal Strehovský <MichalStrehovsky@users.noreply.github.com>
Fri, 7 Feb 2020 09:31:11 +0000 (10:31 +0100)
committerGitHub <noreply@github.com>
Fri, 7 Feb 2020 09:31:11 +0000 (10:31 +0100)
commit3790f0dbf86894bff15b091ffb60ffb58a26ac38
treed6dcef280c9def2807bd409c12d08cc140178c94
parentffcb4b4535f1400029f97eceb129a4154b529747
Revert "Ensure using the given executable path. (dotnet/coreclr#10525)" (#31848)

Reverts dotnet/coreclr#10525.

This broke probing for .ni.exe images. If we run `corerun foo.exe` for something that has a `foo.ni.exe`, we wouldn't pick up the native image because foo.exe is considered trusted and foo.ni.exe is not. This means we would fall back to JIT. But only if foo.exe is not in CORE_ROOT. If it is, it works...

The pull request broke crossgen testing that was eventually worked around in dotnet/coreclr#11272, but it's also breaking the tests in tests\src\readytorun\tests (we just didn't find out because they're falling back to JIT). We could work around there too, but this took half a day for me to investigate, so I don't want to leave the landmine there for someone else to lose a leg over (the fact that ni probing works if you put the exe and ni.exe into CORE_ROOT was a major timesink when troubleshooting).

I don't see much point in this change. It's fixing the case when someone copied something.exe to CORE_ROOT and then tries to `corerun some\other\version\of\something.exe`, but it doesn't fix the situation when the something.exe depends on dependency.dll - we would still pick up dependency.dll from CORE_ROOT, which is likely the wrong version. The only way to win this game is not to play it - don't put stuff in CORE_ROOT.
src/coreclr/src/hosts/corerun/corerun.cpp
src/coreclr/src/hosts/unixcoreruncommon/coreruncommon.cpp