I am currently looking into various LLVM based tool chains in the android world for a university project. During my research I found two tool chains from Qualcomm, one specific for snapdragon and another one specific for their hexagon architecture.
What is special about them? Are they part of the LLVM project or something own, I found some github repos with binary builds of the snapdragon version and the the readme listed a few “extra” features.
Regarding the hexagon part, there is hexagon present as architecture inside the LLVM project, but it seems to be mainly used with hexagon-none-linux-musl. But some older threads here indicate there is also hexagon-none–elf, but I can hardly find any information about it.
Can someone give me a round up about these? Qualcomm is a major vendor in the Android world and therefore quite interesting for my work. Any hint or link to understand the topic, different versions etc. is welcome. Thanks a lot!
The Snapdragon compiler targets ARM/AArch64, the Hexagon compiler targets Hexagon.
The Hexagon compiler uses dinkumware as the C runtime and libc++ at the C++ runtime, and that’s the execution environment on hardware.
What’s present in the LLVM repo is everything except the C runtime. There was some effort to make a port of Musl for use as the CRT for Hexagon instead of dinkumware, hence the mentions of Musl in the sources. The standard triple
hexagon-unknown-elf assumes dinkumware.
Also, the official Hexagon compiler has a bit more stuff in it than the upstream one, but in principle they shouldn’t differ by a lot.
Thanks for the insights! Is Qualcomm maintaining the official hexagon compiler somewhere public accessible, or is there any other artifact I could look at? Would be great to have something to review for my work.
If you are saying “What’s present in the LLVM repo is everything except the C runtime.” I assume that is for generic Hexagon. In regards to the Snapdragon LLVM, is it also the same as the upstream one, just Qualcomm’s own build?
The topic is really confusing, I been looking around at codelinaro and other sites for hours to find the origin of this, or at least a more in depth info.
The official Hexagon compiler is in the Hexagon SDK.
The Snapdragon compiler also has some extra stuff in it. I don’t know how it’s shipped though. Maybe it’s on https://developer.qualcomm.com.