On Fri, 8 Apr 2022 14:11:56 GMT, Magnus Ihse Bursie <i...@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

Reply via email to