openj9
openj9 copied to clipboard
openj9 failed to compile with lto at final
When building the openj9 as part of jdk build, The following error occured at final link when lto is enabled.
/home/eebssk1/j9/openj9-openjdk-jdk11/openj9/runtime/compiler/env/J9PersistentInfo.hpp:111:7: warning: type 'struct PersistentInfo' violates the C++ One Definition Rule [-Wodr]
111 | class PersistentInfo : public OMR::PersistentInfoConnector
| ^
/home/eebssk1/j9/openj9-openjdk-jdk11/openj9/runtime/compiler/env/J9PersistentInfo.hpp:111: note: a different type is defined in another translation unit
111 | class PersistentInfo : public OMR::PersistentInfoConnector
/home/eebssk1/j9/openj9-openjdk-jdk11/openj9/runtime/compiler/env/J9PersistentInfo.hpp:487:16: note: the first difference of corresponding definitions is field '_JITServerAddress'
487 | std::string _JITServerAddress;
| ^
/home/eebssk1/j9/openj9-openjdk-jdk11/openj9/runtime/compiler/env/J9PersistentInfo.hpp:111: note: a type with different number of fields is defined in another translation unit
111 | class PersistentInfo : public OMR::PersistentInfoConnector
/home/eebssk1/j9/openj9-openjdk-jdk11/openj9/runtime/compiler/env/PersistentInfo.hpp:31:7: warning: type 'struct PersistentInfo' violates the C++ One Definition Rule [-Wodr]
31 | class PersistentInfo : public J9::PersistentInfoConnector
| ^
/home/eebssk1/j9/openj9-openjdk-jdk11/openj9/runtime/compiler/env/PersistentInfo.hpp:31: note: a type with different bases is defined in another translation unit
31 | class PersistentInfo : public J9::PersistentInfoConnector
/home/eebssk1/j9/openj9-openjdk-jdk11/openj9/runtime/codert_vm/thunkcrt.c:95: error: function 'icallVMprJavaSendVirtualL' redeclared as variable
95 | extern void * icallVMprJavaSendVirtualL;
/home/eebssk1/j9/openj9-openjdk-jdk11/openj9/runtime/compiler/runtime/Runtime.cpp:341: note: previously declared here
341 | JIT_HELPER(icallVMprJavaSendVirtualL);
/home/eebssk1/j9/openj9-openjdk-jdk11/openj9/runtime/codert_vm/thunkcrt.c:101: error: function 'icallVMprJavaSendInvokeExactD' redeclared as variable
101 | extern void * icallVMprJavaSendInvokeExactD;
/home/eebssk1/j9/openj9-openjdk-jdk11/openj9/runtime/compiler/runtime/Runtime.cpp:232: note: previously declared here
232 | JIT_HELPER(icallVMprJavaSendInvokeExactD);
/home/eebssk1/j9/openj9-openjdk-jdk11/openj9/runtime/codert_vm/thunkcrt.c:100: error: function 'icallVMprJavaSendInvokeExactF' redeclared as variable
100 | extern void * icallVMprJavaSendInvokeExactF;
/home/eebssk1/j9/openj9-openjdk-jdk11/openj9/runtime/compiler/runtime/Runtime.cpp:231: note: previously declared here
231 | JIT_HELPER(icallVMprJavaSendInvokeExactF);
/home/eebssk1/j9/openj9-openjdk-jdk11/openj9/runtime/codert_vm/thunkcrt.c:102: error: function 'icallVMprJavaSendInvokeExactL' redeclared as variable
102 | extern void * icallVMprJavaSendInvokeExactL;
/home/eebssk1/j9/openj9-openjdk-jdk11/openj9/runtime/compiler/runtime/Runtime.cpp:230: note: previously declared here
230 | JIT_HELPER(icallVMprJavaSendInvokeExactL);
/home/eebssk1/j9/openj9-openjdk-jdk11/openj9/runtime/codert_vm/thunkcrt.c:99: error: function 'icallVMprJavaSendInvokeExactJ' redeclared as variable
99 | extern void * icallVMprJavaSendInvokeExactJ;
/home/eebssk1/j9/openj9-openjdk-jdk11/openj9/runtime/compiler/runtime/Runtime.cpp:229: note: previously declared here
229 | JIT_HELPER(icallVMprJavaSendInvokeExactJ);
/home/eebssk1/j9/openj9-openjdk-jdk11/openj9/runtime/codert_vm/thunkcrt.c:98: error: function 'icallVMprJavaSendInvokeExact1' redeclared as variable
98 | extern void * icallVMprJavaSendInvokeExact1;
/home/eebssk1/j9/openj9-openjdk-jdk11/openj9/runtime/compiler/runtime/Runtime.cpp:228: note: previously declared here
228 | JIT_HELPER(icallVMprJavaSendInvokeExact1);
/home/eebssk1/j9/openj9-openjdk-jdk11/openj9/runtime/codert_vm/thunkcrt.c:97: error: function 'icallVMprJavaSendInvokeExact0' redeclared as variable
97 | extern void * icallVMprJavaSendInvokeExact0;
/home/eebssk1/j9/openj9-openjdk-jdk11/openj9/runtime/compiler/runtime/Runtime.cpp:227: note: previously declared here
227 | JIT_HELPER(icallVMprJavaSendInvokeExact0);
/home/eebssk1/j9/openj9-openjdk-jdk11/openj9/runtime/codert_vm/cnathelp.cpp:213: error: function 'icallVMprJavaSendStatic1' redeclared as variable
213 | J9_EXTERN_BUILDER_SYMBOL(icallVMprJavaSendStatic1);
/home/eebssk1/j9/openj9-openjdk-jdk11/openj9/runtime/compiler/runtime/Runtime.cpp:218: note: previously declared here
218 | JIT_HELPER(icallVMprJavaSendStatic1);
/home/eebssk1/j9/openj9-openjdk-jdk11/openj9/runtime/compiler/runtime/Runtime.cpp:354: warning: type of 'methodHandleJ2I_unwrapper' does not match original declaration [-Wlto-type-mismatch]
354 | JIT_HELPER(methodHandleJ2I_unwrapper);
/home/eebssk1/j9/openj9-openjdk-jdk11/openj9/runtime/compiler/runtime/JitRuntime.cpp:1819: note: type mismatch in parameter 1
1819 | void methodHandleJ2I_unwrapper(void **argsPtr, void **resPtr)
/home/eebssk1/j9/openj9-openjdk-jdk11/openj9/runtime/compiler/runtime/JitRuntime.cpp:1819: note: 'methodHandleJ2I_unwrapper' was previously declared here
/home/eebssk1/j9/openj9-openjdk-jdk11/openj9/runtime/compiler/runtime/Runtime.cpp:233: warning: type of 'initialInvokeExactThunk_unwrapper' does not match original declaration [-Wlto-type-mismatch]
233 | JIT_HELPER(initialInvokeExactThunk_unwrapper);
/home/eebssk1/j9/openj9-openjdk-jdk11/openj9/runtime/compiler/runtime/JitRuntime.cpp:1791: note: type mismatch in parameter 1
1791 | void initialInvokeExactThunk_unwrapper(void **argsPtr, void **resPtr)
/home/eebssk1/j9/openj9-openjdk-jdk11/openj9/runtime/compiler/runtime/JitRuntime.cpp:1791: note: 'initialInvokeExactThunk_unwrapper' was previously declared here
/home/eebssk1/j9/openj9-openjdk-jdk11/openj9/runtime/compiler/runtime/Runtime.cpp:245: warning: type of 'callGPU' does not match original declaration [-Wlto-type-mismatch]
245 | JIT_HELPER(callGPU);
/home/eebssk1/j9/openj9-openjdk-jdk11/openj9/runtime/compiler/runtime/GPUHelpers.cpp:2494:5: note: return value type mismatch
2494 | int callGPU(void *vmThread, void *method, char * programSource, void * invokeObject, int deviceId,
| ^
/home/eebssk1/j9/openj9-openjdk-jdk11/openj9/runtime/compiler/runtime/GPUHelpers.cpp:2494:5: note: type 'int' should match type 'void'
/home/eebssk1/j9/openj9-openjdk-jdk11/openj9/runtime/compiler/runtime/GPUHelpers.cpp:2494:5: note: 'callGPU' was previously declared here
/home/eebssk1/j9/openj9-openjdk-jdk11/openj9/runtime/compiler/runtime/JitRuntime.cpp:1169: warning: type of 'prepareForOSR' does not match original declaration [-Wlto-type-mismatch]
1169 | JIT_HELPER(prepareForOSR);
/home/eebssk1/j9/openj9-openjdk-jdk11/openj9/runtime/compiler/runtime/CRuntimeImpl.cpp:47:6: note: type mismatch in parameter 1
47 | void prepareForOSR(uintptr_t vmThreadArg, int32_t currentInlinedSiteIndex, int32_t slotData)
| ^
/home/eebssk1/j9/openj9-openjdk-jdk11/openj9/runtime/compiler/runtime/CRuntimeImpl.cpp:47:6: note: type 'uintptr_t' should match type 'void'
/home/eebssk1/j9/openj9-openjdk-jdk11/openj9/runtime/compiler/runtime/CRuntimeImpl.cpp:47:6: note: 'prepareForOSR' was previously declared here
/home/eebssk1/j9/openj9-openjdk-jdk11/openj9/runtime/codert_vm/thunkcrt.c:91: error: function 'icallVMprJavaSendVirtualJ' redeclared as variable
91 | extern void * icallVMprJavaSendVirtualJ;
/home/eebssk1/j9/openj9-openjdk-jdk11/openj9/runtime/compiler/runtime/codertinit.cpp:55:1: note: previously declared here
https://github.com/eclipse-openj9/openj9/blob/7aa9aa4664d22045dcfa9fd5c2d3c1fc1fc45cb6/runtime/compiler/runtime/asmprotos.h#L45 and https://github.com/eclipse-openj9/openj9/blob/7aa9aa4664d22045dcfa9fd5c2d3c1fc1fc45cb6/runtime/oti/j9.h#L276 as well as in https://github.com/eclipse-openj9/openj9/blob/7aa9aa4664d22045dcfa9fd5c2d3c1fc1fc45cb6/runtime/codert_vm/thunkcrt.c#L89
lto does not support one being a function and another being a function pointer/variable(if it meant to be?) for the same name it seems. so if use the first definition in the if case, the build continues.