[Mesa-dev] LLVMInitializeAMDGPU* undefined?

Jan Vesely jan.vesely at rutgers.edu
Fri Mar 11 03:50:28 UTC 2016


On Fri, 2016-03-11 at 10:09 +0800, Chih-Wei Huang wrote:
> 2016年3月10日 下午6:47於 "Marek Olšák" <maraeo at gmail.com>寫道:
> > 
> > 
> > Those functions are only supported by LLVM 3.7 and later, and if
> > you
> > have such a version, the AMDGPU backend must be enabled in your
> > LLVM
> > build.
> Yes, I knew that.
> But seems you misunderstood my question.
> 
> It's a compile time error instead of a linking time error:
> 
> external/mesa/src/gallium/drivers/radeon/radeon_llvm_emit.c: In
> function 'init_r600_target':
> external/mesa/src/gallium/drivers/radeon/radeon_llvm_emit.c:106:2:
> error: implicit declaration of function
> 'LLVMInitializeAMDGPUTargetInfo'
> [-Werror=implicit-function-declaration]
>   LLVMInitializeAMDGPUTargetInfo();
>   ^
> external/mesa/src/gallium/drivers/radeon/radeon_llvm_emit.c:107:2:
> error: implicit declaration of function 'LLVMInitializeAMDGPUTarget'
> [-Werror=implicit-function-declaration]
>   LLVMInitializeAMDGPUTarget();
>   ^
> external/mesa/src/gallium/drivers/radeon/radeon_llvm_emit.c:108:2:
> error: implicit declaration of function
> 'LLVMInitializeAMDGPUTargetMC'
> [-Werror=implicit-function-declaration]
>   LLVMInitializeAMDGPUTargetMC();
>   ^
> external/mesa/src/gallium/drivers/radeon/radeon_llvm_emit.c:109:2:
> error: implicit declaration of function
> 'LLVMInitializeAMDGPUAsmPrinter'
> [-Werror=implicit-function-declaration]
>   LLVMInitializeAMDGPUAsmPrinter();
>   ^
> 
> cc1: some warnings being treated as errors
> 
> 
> Some proposed patches on the mesa side:
> 
> https://sourceforge.net/p/android-x86/external_mesa/ci/f6611f58cf89a4
> 0e013b20180604f65707b6e73e/
> (add a header to declare the functions)
> 
> https://github.com/maurossi/mesa/commit/deb3a6ebb7fdba688b0331bd0e4b2
> 7acfc9d869f
> (disable implicit declaration warnings)
> 
> But I'm still not sure whether if it should be fixed on the mesa
> side.
> 
> So my question is, what kind of fix do we want (i.e., acceptable by
> the upstream)?

this is the result of using llvm without AMDGPU backend. the header
"llvm-c/Target.h" includes "llvm/Config/Targets.def" and declares
functions based on backends listed there (selected at llvm build time).

Your "llvm/Config/Targets.def" needs to include this line:
LLVM_TARGET(AMDGPU)

otherwise the functions are not declared.
probably the only patch needed on mesa side is to detect this at
configure time.

regards,
Jan


> 
> > 
> > On Thu, Mar 10, 2016 at 10:04 AM, Chih-Wei Huang
> > <cwhuang at android-x86.org> wrote:
> > > 
> > > Hi devs,
> > > On building 64-bit Android-x86 mesa with amdgpu support,
> > > we got some errors about the symbols LLVMInitializeAMDGPU*
> > > are not defined. (missing prototypes)
> > > 
> > > It's easy to fix the errors by adding the definition of
> > > the function prototypes.
> > > However, I'm curious in which side it should be fixed?
> > > The mesa or llvm?
> > > 
> > > Does the llvm forgot to provide a header for these functions?
> > > Or the functions are internal APIs of llvm that should not be
> > > used
> > > by mesa directly?
> > > 
> > > Any comment?
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160310/5ce96c3f/attachment.sig>


More information about the mesa-dev mailing list