RFR: JDK-8221851: Use of THIS_FILE in hotspot invalidates precompiled header on Linux/GCC

David Holmes david.holmes at oracle.com
Fri Apr 5 04:04:01 UTC 2019


Hi Erik,

Build and hotspot changes seem okay.

Thanks,
David

On 5/04/2019 8:03 am, Erik Joelsson wrote:
> 
> On 2019-04-04 14:26, Kim Barrett wrote:
>>
>> OK, I can do that.
>>
>> ------------------------------------------------------------------------------ 
>>
>> src/hotspot/share/utilities/macros.hpp
>>   645 #if FILE_MACRO_OFFSET
>>   646 #define THIS_FILE (__FILE__ + FILE_MACRO_OFFSET)
>>   647 #else
>>   648 #define THIS_FILE __FILE__
>>   649 #endif
>>
>> Is the "#if FILE_MACRO_OFFSET" an intentional test for 0, or is this
>> an implicit test for "defined"?
>>
>> If the former, e.g. we're assuming it will always be defined but might
>> have a 0 value, then I'd skip it and just unconditionally define
>> THIS_FILE as (__FILE__ + FILE_MACRO_OFFSET).
> 
> Right, that makes sense. I was sort of hedging for all possibilities 
> here, but as the build logic is currently structured, it will always be 
> defined, just sometimes 0.
> 
> New webrev: http://cr.openjdk.java.net/~erikj/8221851/webrev.02/
> 
> /Erik
> 
>> If the latter, some compilers will (with some warning levels or
>> options, such as gcc -Wundef) complain about the (specified by the
>> standard) implicit conversion to 0 for an unrecognized identifier in
>> an #if expression, and an #ifdef should be used to protect against
>> that.
>>
>> ------------------------------------------------------------------------------ 
>>
>>
>>


More information about the build-dev mailing list