Hello,

On 2019-04-05 06:56, Erik Joelsson wrote:

On 2019-04-04 22:23, Ioi Lam wrote:


I am sure the build system is correct ..... but it's complicated.

BTW, we actually have generated sources that can live outside of the source repo. And with luck, their names can actually be shorter than FILE_MACRO_OFFSET.

That is a very good point, completely forgot about that case. I retract my current proposal.

I took a look at the currently generated files, and none of the objects created from those files currently contain any __FILE__ references. Even so, I still agree that we cannot simply use a general offset as I proposed. Instead, I have taken Kim's proposal and implemented THIS_FILE using the this_file_helper inline function he posted.

New webrev: http://cr.openjdk.java.net/~erikj/8221851/webrev.03/

Not being very familiar with the Hotspot code base, I'm quite at a loss as to where to put this. I picked globalDefinitions.hpp, but please help direct me to the right place. Also, I'm not sure wrapping the inline function in a macro is the right construct either. Note that I tested this on Windows, and at least in our buildsystem (where we use forward slashes on the compiler command lines) __FILE__ contains forward slashes.

So to make it clear. This patch now does the following:

* Removes the setting of -DTHIS_FILE=... from all compilation units involved in building Hotspot.

* Introduces THIS_FILE as a macro in Hotspot src which gets just the filename from the __FILE__ macro.

* Changes the use of the __FILE__/THIS_FILE macro in exceptions.hpp to just always use the new THIS_FILE.

* Introduces the use of -fmacro-file-map, when supported by the compiler, to rewrite __FILE__ to a path relative to the workspace root.

The two main improvements from this are that precompiled headers should start working with GCC again and when building with GCC 8 or later, we get rid of absolute paths from our binaries.

/Erik

Reply via email to