> 16 feb. 2019 kl. 07:47 skrev Franco Gastón Pellegrini > <francogpellegr...@gmail.com>: > > Yes, removing --debug-mode enables a 32 bits compilation, with warnings. > Thanks!
Great! Did the patch help for debug builds? /Magnus > > El vie., 15 de feb. de 2019 a la(s) 08:05, Magnus Ihse Bursie > (magnus.ihse.bur...@oracle.com) escribió: >> >> >> On 2019-02-12 15:42, Alexey Ivanov wrote: >> > On 12/02/2019 14:37, Magnus Ihse Bursie wrote: >> >> There has been some fallout due to the mapfile/linking changes made >> >> in JDK 12 that affected JNICALL. However, that should not be >> >> affecting JDK 11. >> > Wasn't it done in JDK 11? >> > If my memory serves me right, it was done in JDK 11. >> >> You are correct. The major part of the mapfile removal was done in >> JDK-8200358, which was pushed to JDK 11. There were follow up issues >> going on all the way into JDK 12, though. >> >> Anyway, I've now looked more into this issue. And this time map files >> were not really to blame, but JNICALL still is. >> >> First of all, it's important to note that this only shows up when >> compiling a debug build. As a workaround, building a normal release >> build for 32-bit Windows will not trigger this issue. (This is likely >> how it has gotten unnoticed.) To Franco: that means removing >> "--enable-debug" from your configure line. >> >> There core problem seems indeed to be discrepancy whether a function is >> declared JNICALL or not. >> >> In JDK-8214120, DTrace_VPrintln() & co. got JNICALL added in >> src/java.desktop/share/native/common/awt/debug/debug_trace.c and >> debug_trace.h. However, the typedef DTRACE_PRINT_CALLBACK was not >> updated. Since JNICALL is a no-op on all platforms except Windows 32, >> this was not discovered. >> >> However, according to JBS JDK-8214120 was fixed in JDK-12. So why this >> is causing issues in JDK-11, I don't understand. Or maybe the discussion >> drifted from testing JDK 11 to testing JDK 12? In any case, it is likely >> currently broken in JDK 13. >> >> Here is a suggested patch. Hopefully I got the JNICALL modifier in the >> correct place (C function pointer typedefs are the worst!). >> >> diff --git >> a/src/java.desktop/share/native/common/awt/debug/debug_trace.h >> b/src/java.desktop/share/native/common/awt/debug/debug_trace.h >> --- a/src/java.desktop/share/native/common/awt/debug/debug_trace.h >> +++ b/src/java.desktop/share/native/common/awt/debug/debug_trace.h >> @@ -48,7 +48,7 @@ >> typedef void (*DTRACE_OUTPUT_CALLBACK)(const char * msg); >> >> /* prototype for client provided print callback function */ >> -typedef void (*DTRACE_PRINT_CALLBACK)(const char * file, int line, int >> argc, const char * fmt, va_list arglist); >> +typedef void (JNICALL *DTRACE_PRINT_CALLBACK)(const char * file, int >> line, int argc, const char * fmt, va_list arglist); >> >> extern void DTrace_EnableAll(dbool_t enabled); >> extern void DTrace_EnableFile(const char * file, dbool_t enabled); >> >> Please test and let me know if it works. If so it should be pushed to >> JDK 13, and possibly backported. >> >> /Magnus > > > -- > Franco Gastón Pellegrini