ROCm / ROCm-OpenCL-Runtime

ROCm OpenOpenCL Runtime
170 stars 60 forks source link

lld 16 will break builds due to incorrect linker version scripts #155

Open aaronmondal opened 1 year ago

aaronmondal commented 1 year ago

Since the --no-undefined-version flag has been flipped in lld (https://reviews.llvm.org/D135402), this repo will fail to link due to the following incorrect version script assignments:

ld.lld: error: version script assignment of 'OPENCL_1.0' to symbol 'clCreateFromD3D10Buffer' failed: symbol not defined
ld.lld: error: version script assignment of 'OPENCL_1.0' to symbol 'clCreateImageFromD3D10Resource' failed: symbol not defined
ld.lld: error: version script assignment of 'OPENCL_1.0' to symbol 'clEnqueueAcquireExternalObjects' failed: symbol not defined
ld.lld: error: version script assignment of 'OPENCL_1.0' to symbol 'clEnqueueReleaseExternalObjects' failed: symbol not defined
ld.lld: error: version script assignment of 'OPENCL_1.1' to symbol 'aclGetTargetInfo' failed: symbol not defined
ld.lld: error: version script assignment of 'OPENCL_1.1' to symbol 'aclCompilerInit' failed: symbol not defined
ld.lld: error: version script assignment of 'OPENCL_1.1' to symbol 'aclCompilerFini' failed: symbol not defined
ld.lld: error: version script assignment of 'OPENCL_1.1' to symbol 'aclReadFromMem' failed: symbol not defined
ld.lld: error: version script assignment of 'OPENCL_1.1' to symbol 'aclReadFromFile' failed: symbol not defined
ld.lld: error: version script assignment of 'OPENCL_1.1' to symbol 'aclBinaryInit' failed: symbol not defined
ld.lld: error: version script assignment of 'OPENCL_1.1' to symbol 'aclBinaryFini' failed: symbol not defined
ld.lld: error: version script assignment of 'OPENCL_1.1' to symbol 'aclWriteToMem' failed: symbol not defined
ld.lld: error: version script assignment of 'OPENCL_1.1' to symbol 'aclInsertSection' failed: symbol not defined
ld.lld: error: version script assignment of 'OPENCL_1.1' to symbol 'aclExtractSection' failed: symbol not defined
ld.lld: error: version script assignment of 'OPENCL_1.1' to symbol 'aclRemoveSection' failed: symbol not defined
ld.lld: error: version script assignment of 'OPENCL_1.1' to symbol 'aclQueryInfo' failed: symbol not defined
ld.lld: error: version script assignment of 'OPENCL_1.1' to symbol 'aclDbgAddArgument' failed: symbol not defined
ld.lld: error: version script assignment of 'OPENCL_1.1' to symbol 'aclExtractSymbol' failed: symbol not defined
ld.lld: error: version script assignment of 'OPENCL_1.1' to symbol 'aclInsertSymbol' failed: symbol not defined
ld.lld: error: version script assignment of 'OPENCL_1.1' to symbol 'aclRemoveSymbol' failed: symbol not defined

grepping these symbols indeed seems to expose them all as undefined, except for clCreateImageFromD3D10Resource which seems to have some other issue.

On a side note, I noticed that amdocl.map and amdocl.def are tracked in this repo despite having *.in generator files. It may be a good idea to remove the generated files to avoid redundancy.