Review request: 7118588 Profiled JVM needs to be linked statically for gprof to profile libjvm.so

Mikael Gerdin mikael.gerdin at oracle.com
Tue Feb 5 08:16:17 PST 2013


Joe,

On 2013-02-05 15:24, Joe Provino wrote:
> Would anyone have time to review this after reading the discussion below?
>
> Webrev is here: http://cr.openjdk.java.net/~jprovino/7118588/webrev.00

Looks good to me. I remember writing exactly this patch when I wanted to 
run with gprof a while back and ran into the same problem.

/Mikael

>
> thanks.
>
> joe
>
>
> On 1/27/2013 9:28 AM, Joe Provino wrote:
>>
>>
>> On 1/26/2013 2:57 AM, David Holmes wrote:
>>> On 26/01/2013 2:33 AM, Joe Provino wrote:
>>>> Webrev is here: http://cr.openjdk.java.net/~jprovino/7118588/webrev.00
>>>
>>> The bug synopsis is confusing - seems to me it is the launcher your
>>> are changing not the VM.
>>
>> I agree.  A better synopsis would be "Unable to link gamma launcher
>> statically with the VM object files."
>>
>>> Do we have gprof on Solaris? Does this change fix or break other
>>> profiling tools ?
>>
>> I think these are actually unrelated to the problem once the problem
>> is stated correctly.
>>
>>> I don't grok the actual changes
>>
>> The problem is that if you attempt to build the gamma launcher
>> statically with the VM object files
>> by setting LINK_INTO=AOUT on the make command line, the launcher will
>> get undefined symbols.
>>
>> The handling of LINK_INTO in launcher.make is incorrect.
>>
>> ifeq ($(LINK_INTO),AOUT)
>>   LAUNCHER.o                 = launcher.o $(JVM_OBJ_FILES)
>>   LIBS_LAUNCHER          += $(STATIC_STDCXX) $(LIBS)
>> else
>>   LAUNCHER.o                 = launcher.o
>>   LIBS_LAUNCHER          += -l$(JVM) $(LIBS)
>> endif
>>
>> launcher.o is undefined.  That isn't a problem in itself because
>> LAUNCHER.o is never used.
>>
>> This is the line that links the launcher:
>>
>> $(LINK_LAUNCHER) $(LFLAGS_LAUNCHER) -o $@ $(sort $(OBJS))
>> $(LIBS_LAUNCHER)
>>
>> The simple fix is to add $(LAUNCHER.o):
>>
>> $(LINK_LAUNCHER) $(LFLAGS_LAUNCHER) -o $@ $(sort $(OBJS))
>> $(LAUNCHER.o) $(LIBS_LAUNCHER)
>>
>> I also got rid of launcher.o since it's not used.
>>
>> I think to clean this up, I'd define LAUNCHER.o to be the launcher
>> object files plus the JVM object files
>> if LINK_INTO is AOUT and the launcher object files plus -ljvm
>> otherwise.  Then to link the launcher,
>> I'd use $(LAUNCHER.o)  $(LIBS).
>>
>> Should I do something like this or just the minimal fix?
>>
>> joe
>>
>>
>>> but there is a typo in the bsd file:
>>>
>>> + #       profiledminimal1  minimal1 <os>_<arch>_shark/profiled
>>>
>>> shark? :)
>>
>> fixed.
>>
>>>
>>> David
>>>
>>>>
>>>> joe

-- 
Mikael Gerdin
Java SE VM SQE Stockholm


More information about the hotspot-dev mailing list