RFR: 8284437: Building from different users/workspace is not always deterministic [v2]

Andrew Leonard aleonard at openjdk.java.net
Thu Apr 7 18:21:47 UTC 2022


On Thu, 7 Apr 2022 15:51:30 GMT, Magnus Ihse Bursie <ihse at openjdk.org> wrote:

>> Andrew Leonard has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   Trigger checks
>
> make/common/NativeCompilation.gmk line 1159:
> 
>> 1157:       ifeq ($(call isTargetOs, linux), true)
>> 1158:         ifeq ($$($1_COMPILE_WITH_DEBUG_SYMBOLS), true)
>> 1159:           $1_LINK_OBJS_RELATIVE := true
> 
> I realize this PR has already been integrated, but I have some questions about this. The comment talk about "ASM" objects (I assume that means output of assembly files), but the code change is not restricted to assembly files. 
> 
> Afaict, this change means that all builds on linux with debug symbols and reproducible builds will use relative paths! This is perhaps the most common compilation scenario, and it would mean that our efforts to keep a CWD neutral command line is basically in vain. :-(
> 
> Or can anyone (@erikj79, @andrew-m-leonard) explain to me why this would not be the case?

@magicus 
So I did think about this, and the alternative I think would be to hard code a list of which object files are the output from assembly files, of which there is about a dozen. Unless we could capture somehow the list of assembled files as we go ...?
As @erikj79 points out this is just for the "linking". As the problem is the assembly file objects don't have the equivalent of debug prefix mapping, and so when stripped the full file path of the object file ends up in the debuginfo file, and results in the libjvm.so non-determinism due to different debug CRC.

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

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



More information about the build-dev mailing list