RFR: JDK-8221851: Use of THIS_FILE in hotspot invalidates precompiled header on Linux/GCC
Erik Joelsson
erik.joelsson at oracle.com
Thu Apr 4 22:03:48 UTC 2019
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