Review request: 7118588 Profiled JVM needs to be linked statically for gprof to profile libjvm.so
Joseph Provino
joseph.provino at oracle.com
Wed Feb 6 17:04:56 PST 2013
Does anyone else have a minute to review this?
thanks.
joe
On 02/05/2013 11:16 AM, Mikael Gerdin wrote:
> 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
>
More information about the hotspot-dev
mailing list