On Wed, 6 Apr 2022 13:30:28 GMT, Andrew Leonard <aleon...@openjdk.org> wrote:

>> This PR fixes the non-deterministic behavior when building on linux with 
>> different userids or within
>> different workspace folders.
>> It fixes the following issues:
>> - MakeZipReproducible.java used to produce reproducible src.zip removes the 
>> optional zip "extra" field containing UID/GID.
>> - When absolute output paths are not allowed, enable the use of 
>> -fdebug-prefix-map to ensure debug symbol info does not contain the top 
>> level workspace folder.
>> - For reproducible builds ensure the gcc random symbol name generator is 
>> seeded using -frandom-seed.
>> - For reproducible builds when producing debug symbols use relative object 
>> paths for library linking to remove absolute MASM object paths.
>> 
>> Signed-off-by: Andrew Leonard <anleo...@redhat.com>
>
> Andrew Leonard has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Trigger checks

I did some experiments both with `gcc` and `clang`. Both respect the `.file` 
directive and put into the resulting ELF whatever was written after that 
keyword, so no path mapping is necessary. However, debug information suffers 
because `gcc` puts the exact same string into DWARF that debuggers need, so 
writing

.file "linux_x86_64.S"

gives you `DW_AT_NAME("linux_x86_64.S")`, which is not very useful (BTW, 
`clang` accurately points to the absolute path name of the source file) . So 
you have to use the relative path name there:

.file "src/hotspot/os_cpu/linux_x86/linux_x86_64.S"

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

PR: https://git.openjdk.java.net/jdk/pull/8124

Reply via email to