RFR: 8317510: Change Windows debug symbol files naming to avoid losing info when an executable and a library share the same name [v3]

Frederic Thevenet fthevenet at openjdk.org
Wed Oct 11 10:05:09 UTC 2023


On Mon, 9 Oct 2023 10:21:58 GMT, Frederic Thevenet <fthevenet at openjdk.org> wrote:

>> When building OpenJDK on Windows using "--with-native-debug-info=external", the resulting debug symbols are saved in files located in the same folder as the corresponding executable or library and named by swapping the extension ".exe" or ".dll" for a ".pdb" one (or "diz" if option "--with-native-debug-info=zipped" is used), which means that in the event of an exe and a dll file sharing the same target folder and file name (e.g. `bin\java.exe` and `bin\java.dll`), we have to choose whether symbols in `bin\java.pdb` will refer to the exe or the dll; we can't have both.
>> 
>> This PR addresses this issue by adopting a different naming strategy for the resulting symbol files where we keep the full name of every file - including its `dll` or `exe` extension) and then add the appropriate `.pdb`, `.map` or `.diz` extension .
>> 
>> For instance,  `jvm.dll` symbols are no longer called `jvm.pdb` but instead `jvm.dll.pdb`. Similarly, it is now `jvm.dll.diz` when using zipped symbols, and "jvm.dll.stripped.pdb" for stripped symbols (i.e. when "--with-external-symbols-in-bundles=public" is used).
>> 
>> The PR also removes the existing filtering for java.pdb, jimage.pdb and jpackage.pdb used to guaranty the dll symbols were bundled over the ones from the exe, since we no longer need that.
>
> Frederic Thevenet has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Added a test to verify that symbols are available

Indeed, I see no reason to rush the integration for this before we've resolved the failing test.

I can confirm that outside of the context of GHA, the `test-prebuilt` target does not properly resolve _relative_ paths that are passed to SYMBOLS_IMAGE_DIR, but works fine with absolute path.
This is therefore likely *not* the reason for the test failing in GHA, since this uses absolute paths (i.e. `/d/a/jdk/jdk/bundles/symbols/jdk-22/fastdebug`). 
This is still annoying, as the other paths used as parameters by the same `test-prebuilt` do accept related paths, but beside the point here, so I'll leave it at that for now and maybe come back to it in separately.

Meanwhile, I have instrumented the GHA test workflow as @magicus suggested and waiting for the results.

-------------

PR Comment: https://git.openjdk.org/jdk/pull/16039#issuecomment-1757307646


More information about the build-dev mailing list