Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode.
Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).
Hello again Vladimir! This is not a big issue for me, but I tell you, fyi, as could be useful to fix something. I tried to build Jancy in a aarm64 plataform (a Rasperry Pi 3 and a Rock64, with Arch Linux 64). I was able to build it (more details below), but when I "make test", there are many failed tests.
Looking inside the LastTest.log, I saw something I felt could be at the root of the problem, the SISSEGV event (I have no problem to provide you the file, if you want it)
As I commented, in fact, I have an issue when building it, the problem was when proceding to the "cmake" of de LLVM 3.4.2, then an error of triplet unknown is thrown an it said about use a more recent version of the config.guess and config.sub (the message even told about where you can wget them). Once updated, LLVM could be build.
Well, as I told you, it is not a big issue for me (as I am not sure if were going to use Jancy in those plataforms), but perhaps this info is useful to you, or could be indicative of other problems.
Also, I confirm that I am able to build Jancy on a Intel PC without problem (0 tests failed)
Regards! Josep
Hello Josep,
Thank you for the issue report!
Jancy is fully functional on arm64; the SEGFAULTs you see are caused by incomplete support of the arm64 ABI in llvm-3.4.2.
llvm-3.4.2
I've just checked our build boxes -- we build the official packages for Linux-arm64 using llvm-11.0.1; packages for macOS-arm64 are built using llvm-15.0.7.
llvm-11.0.1
llvm-15.0.7
I remember trying to bisect and find the LLVM release where the arm64 ABI compatibility issues were fixed, and I think it was llvm-9 (but that's not 100%). You can go for llvm-11 or higher just to be sure, it works fine on arm64.
llvm-9
llvm-11
Also, I have some good news regarding your previous report (Ethernet Tap + ioninja-hwc). I'll post a reply in the original thread.
ioninja-hwc
Hello! Quite sure that this solves the issue. I try and confirm you that. Thank you! and -about the Ethernet tap- they are great news!!
Hello! I tried to build LLVM 11.0.1, but it eventually fails
I followed the same indications that are in the Jancy building guide: and then just "make" it. Do I have to do some different? Take into account that I have nearly zero knowledge about cmake and building process (and less than zero about LLMV), so perhaps I am missing some basic thing. Regards
Yeah, many versions of LLVM just don't build out-of-the-box with the default settings. Here's what you can do:
Simply install the LLVM coming with your distro. If you are on Arch, then pacman -S llvm should do (llvm-libs install runtime shared objects only, without the development files).
pacman -S llvm
llvm-libs
Build LLVM from sources. A bit trickier, but allows you to choose the exact version of LLVM for your projects. Here's the suggested sequence of steps:
cd ./llvm-x.x.x-src mkdir build cd build cmake .. ccmake .
Then navigate through the settings using UI (ccmake or cmake-gui) and fine-tune the following:
ccmake
cmake-gui
CMAKE_BUILD_TYPE=Release CMAKE_INSTALL_PREFIX=(where to install, e.g. /home/you/Develop/llvm/llvm-x.x.x) CMAKE_C_FLAGS=-fvisibility=hidden CMAKE_CXX_FLAGS=-fvisibility=hidden LLVM_BUILD_RUNTIME=ON LLVM_BUILD_(everything else)=OFF LLVM_INCLUDE_(everything)=OFF LLVM_TARGETS_TO_BUILD=AArch64
To access CMAKE_C_FLAGS/CMAKE_CXX_FLAGS, switch to the "Advanced" mode (t in ccmake)
CMAKE_C_FLAGS/CMAKE_CXX_FLAGS
t
Then "Configure" and "Generate" from the UI (c then g in ccmake)
c
g
Finally, build and install:
make -j4 install
Hello! In fact, I had already tried the "Easy way", and there is no easy way (at least, not so easy). It seems that there is something missing, because after installing the llvm package, when building jancy it seems to go well... but eventually fails
(I do not know, but perhaps the available package for Arm have differences respect the "regular" x86-64 one)
Anyway, I will take the Way of the Samurai, and let you know what happens. Thank you, and regards!
Hmm, you are right.. Looks like they stopped packaging static LLVM libs into the recent LLVM development packages on Arch. At the same time, llvm_map_components_to_libnames still returns a list of static libs (rather than a single shared object). It looks like the new "proper" way of getting a list of LLVM libraries to link to is not to use the official LLVM CMake macros -- but to call the llvm-config tool instead. Kinda weird calling an external executable from a CMake script when there is a dedicated official CMake macro for this exact purpose, but oh well..
llvm_map_components_to_libnames
llvm-config
I'll need to update the Jancy CMake files to address that. In the meantime -- follow the way of the Samurai. BTW, it's okay not to add -fvisibility=hidden to CMAKE_C_FLAGS/CMAKE_CXX_FLAGS -- this is taken care of by the versioning script for libjancy.so now.
-fvisibility=hidden
libjancy.so
So, the modifications required to build the minimal LLVM for arm64:
CMAKE_BUILD_TYPE=Release CMAKE_INSTALL_PREFIX=(where to install, e.g. /home/you/Develop/llvm/llvm-x.x.x) LLVM_BUILD_RUNTIME=ON LLVM_BUILD_(everything else)=OFF LLVM_INCLUDE_(everything)=OFF LLVM_TARGETS_TO_BUILD=AArch64
The "easy way" should work now, too. The latest Jancy commit makes use of llvm-config to build the list of required LLVM libs (and will pick up the LLVM shared object installed by pacman -S llvm)
I confirm that the Easy Way works perfectly. Thank you and regards! Josep