Hotspot has had support for decorated and non-decorated names for the JNI_OnLoad
functions.  Perhaps you should just follow the same procedure for the debug 
library.

#define JNI_ONLOAD_SYMBOLS   {"_JNI_OnLoad@8", "JNI_OnLoad"}
#define JNI_ONUNLOAD_SYMBOLS {"_JNI_OnUnload@8", "JNI_OnUnload"}
#define JVM_ONLOAD_SYMBOLS      {"_JVM_OnLoad@12", "JVM_OnLoad"}
#define AGENT_ONLOAD_SYMBOLS    {"_Agent_OnLoad@12", "Agent_OnLoad"}
#define AGENT_ONUNLOAD_SYMBOLS  {"_Agent_OnUnload@4", "Agent_OnUnload"}
#define AGENT_ONATTACH_SYMBOLS  {"_Agent_OnAttach@12", “Agent_OnAttach”}

Bob.


> On Dec 11, 2018, at 11:43 AM, Simon Tooke <sto...@redhat.com> wrote:
> 
> On 2018-12-11 10:05 a.m., Alexey Ivanov wrote:
>> Hi everyone,
>> 
>> I came up with the following patch:
>> http://cr.openjdk.java.net/~aivanov/8214122/webrev.00/
>> 
>> It specifically addresses the problem in JDK-8214122 where on 32 bit
>> Windows jdwpTransport_OnLoad can exported with its plain and
>> __stdcall-mangled name. I used conditional compilation so that for
>> other platforms the code remains as it is now.
>> 
>> jshell starts successfully with this fix; an IDE debugger works as well.
>> 
> I am not a reviewer, but this patch only works for the specific case
> under discussion; the '@16' refers to the reserved stack size in the
> Pascal calling convention.  So, the patch only works for 16 bytes of
> parameters.  To be generic, the routine needs to have the stack size
> passed in by the caller.  If a generic fix isn't desired (and I hope it
> is), I'd prefer to see the caller simply pass the decorated or
> undecorated name depending on the Win32/64 defines.
> 
>    #if defined(_WIN32) && !defined(_WIN64) onLoad =
>    (jdwpTransport_OnLoad_t) dbgsysFindLibraryEntry(handle,
>    "_jdwpTransport_OnLoad@16"); #else onLoad = (jdwpTransport_OnLoad_t)
>    dbgsysFindLibraryEntry(handle, "jdwpTransport_OnLoad"); #endif
> 
> 
> Thanks,
> -Simon
> 
>> 
>> Regards,
>> Alexey
>> 
>> https://bugs.openjdk.java.net/browse/JDK-8214122
>> 
>> On 10/12/2018 15:11, Magnus Ihse Bursie wrote:
>>>> Since removing JNICALL is not an option, there are only two options:
>>>> 
>>>> 1. Add |/export| option to the Makefile or pragma-comment to the
>>>> source file;
>>>> 2. Lookup the decorated name |_jdwpTransport_OnLoad@16| for Win32
>>>> with fallback to undecorated one.
>>> Yes.
>>> 
>>> I think the correct solution here is 2.
>> 
> 

Reply via email to