RFR: 8284437: Building from different users/workspace is not always deterministic [v2]
Maxim Kartashev
duke at openjdk.java.net
Fri Apr 8 14:22:42 UTC 2022
On Fri, 8 Apr 2022 14:11:56 GMT, Magnus Ihse Bursie <ihse at openjdk.org> wrote:
>> 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"
>
> @mkartashev Why don't you try building with clang as two different users, in two different directories, and see if the build is non-reproducible without this patch, but is reproducible with it (incl. your suggested change to include clang as well)?
@magicus
> Is it possible to pass the ".file" directive on the command line?
I don't think so. Your other idea works quite well, though. If you have this in the source
.file THIS_FILE
and you specify this on the command line
-DTHIS_FILE='"src/hotspot/os_cpu/linux_x86/linux_x86_64.S"'
you get the same reproducible and debuggable result.
-------------
PR: https://git.openjdk.java.net/jdk/pull/8124
More information about the build-dev
mailing list