Need reviewers: more predictable binaries
Kelly O'Hair
kelly.ohair at oracle.com
Thu Sep 6 16:29:05 UTC 2012
Yes, but I feel like I need to get some kind of approval from a higher level before I try and declare that
use of THIS_FILE is a 'jdk convention', and that will trigger long debates :^(
I also need to deal with hotspot, which is a bit trickier because of the macros being expanded in include
files (inline method bodies inside *.hpp files).
-kto
On Sep 5, 2012, at 11:59 PM, Fredrik Öhrström wrote:
> Looks good. Perhaps we can even remove the "#ifndef THIS_FILE" test in the source files? At some time in the future….
>
> //Fredrik
>
> 6 sep 2012 kl. 06:08 skrev Kelly O'Hair:
>
>>
>> Need a reviewer for this change.
>>
>> http://cr.openjdk.java.net/~ohair/openjdk8/jdk8-this-file/webrev/
>>
>> It does change source, but it's effectively a build change.
>>
>> The goal here is to try and create more predictable binary files and remove the possibility that
>> a full source path (via __FILE__) gets baked into the shared libraries or executables shipped.
>>
>> So two changes:
>> * sort the .o files during links so they are always provided to the linker in the same order.
>> * replace use of __FILE__ to the macro THIS_FILE with just the basename of the source file being compiled
>>
>> The __FILE__ issue is that it has an implementation defined string literal value, depending on the compiler
>> and the filename supplied on the compile line. By changing to the new THIS_FILE macro, the object files
>> will always have a consistent string literal in them, making it easier to compare binaries between builds.
>> Something we have never been able to do in the past. Granted it's just the basename for the file, but should be enough.
>> The tricky part is that __FILE__ only gets evaluated when it is used. In normal C code, it will appear in
>> macros but it only will get evaluated in the source file being compiled. It is rare that macros using
>> __FILE__ will get expanded in include files and I detected this not happening in the jdk source at all.
>>
>> -kto
>
More information about the build-dev
mailing list