C++ symbols in jhsdb jstack --mixed
Chris Plummer
chris.plummer at oracle.com
Thu Oct 31 02:23:06 UTC 2019
You can change the configure script. I don't know if there's any
concerns with using libiberty.a. That's possibly a legal question (GNU
GPL). You might want to ask that on jdk-dev and/or build-dev.
Chris
On 10/30/19 7:14 PM, Yasumasa Suenaga wrote:
> Hi Chris,
>
> Thanks for quick reply!
>
> If we convert LinuxDebuggerLocal.c to C++ code, we have to convert a
> lot of JNI calls to C++ style.
> For example:
>
> (*env)->FindClass(env, "java/lang/String")
> to
> env->FindClass("java/lang/String")
>
> Can it be accepted?
>
> OTOH I said in my email, to use cplus_demangle(), we need to link
> libiberty.a which is provided by binutils. Thus I think we need to
> check libiberty.a in configure script. Is it ok?
>
>
> I prefer to use cplus_demangle() if we can change configure script.
>
>
> Yasumasa
>
>
> On 2019/10/31 11:03, Chris Plummer wrote:
>> Hi Yasumasa,
>>
>> I don't have concerns with adding C++ source to SA, but in order to
>> do so you've put the new native code in its own file rather than in
>> LinuxDebuggerLocal.c. I'd like to see that resolved. So either
>> convert LinuxDebuggerLocal.c to C++, or use cplus_demangle().
>>
>> thanks,
>>
>> Chris
>>
>> On 10/30/19 6:54 PM, Yasumasa Suenaga wrote:
>>> Hi all,
>>>
>>> I saw C++ frames in `jhsdb jstack --mixed`, and they were mangled as
>>> below:
>>>
>>>
>>> 0x00007ff255a8fa4c
>>> _ZN9JavaCalls11call_helperEP9JavaValueRK12methodHandleP17JavaCallArgumentsP6Thread
>>> + 0x6ac
>>> 0x00007ff255a8cc1d
>>> _ZN9JavaCalls12call_virtualEP9JavaValueP5KlassP6SymbolS5_P17JavaCallArgumentsP6Thread
>>> + 0x33d
>>>
>>>
>>> We can demangle them via c++filt, but I think it is more convenience
>>> if jstack can show demangling symbols.
>>> I think we can demangle in jstack with this patch. If it is
>>> accepted, I will file it to JBS and send review request.
>>> What do you think?
>>>
>>> http://cr.openjdk.java.net/~ysuenaga/sa-demangle/
>>>
>>> We can get the stack as below after applying this patch:
>>>
>>>
>>> 0x00007ff1aba20a4c JavaCalls::call_helper(JavaValue*,
>>> methodHandle const&, JavaCallArguments*, Thread*) + 0x6ac
>>> 0x00007ff1aba1dc1d JavaCalls::call_virtual(JavaValue*, Klass*,
>>> Symbol*, Symbol*, JavaCallArguments*, Thread*) + 0x33d
>>>
>>>
>>> I use abi::__cxa_demangle() for demangling, so this patch adds C++
>>> source to SA.
>>> If it is not comfortable, we can use cplus_demangle().
>>> But this function is provided by libiberty.a, so we need to link it
>>> to libsaproc and need to check libiberty.a in configure script.
>>>
>>>
>>> Thanks,
>>>
>>> Yasumasa
>>
>>
More information about the serviceability-dev
mailing list