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