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