I found the problem - thanks to Kelly's hints at what look for.

Later in fastdebug.make we have:

# Workaround for a bug in dtrace. If ciEnv::post_compiled_method_load_event()
# is inlined, the resulting dtrace object file needs a reference to this
# function, whose symbol name is too long for dtrace.  So disable inlining
# for this method for now. (fix this when dtrace bug 6258412 is fixed)
OPT_CFLAGS/ciEnv.o = $(OPT_CFLAGS) -xinline=no%__1cFciEnvbFpost_compiled_method_load_event6MpnHnmethod__v_

which is overwriting any previous flag settings for ciEnv. The above should just be written as:

OPT_CFLAGS/ciEnv.o += -xinline=no%__1cFciEnvbFpost_compiled_method_load_event6MpnHnmethod__v_

to add the inline option.

Thanks,
David

David Holmes - Sun Microsystems said the following on 11/07/08 09:03:
I'm trying to work around a compiler issue with an older version of the JDK, but which uses the same basic build process, and have run into a strange problem.

For a product build I was able to bypass a compiler crash by lowering the optimization level using:

OPT_CFLAGS/ciEnv.o = $(OPT_CFLAGS/O2)

which sets -xO2 rather than the default -xO4. This was done in product.make

Then I moved to fastdebug and I got the same compiler crash and so again added the above to lower the optimization level, in fastdebug.make. But I still got the crash. I tried lowering again to no-optimization, and still got the crash.

So I used make -n to see what was being passed to CC and much to my surprise it shows -xO4 is always being passed. For some reason the per-file flag setting is not being picked up.

I'm stumped. Does anyone have any insights on how this might happen (make bug?) or some way to further try and diagnoze?

Thanks,
David Holmes

Reply via email to