How to add support for ashlsi3, lshrsi3, divmodti4, and ashrsi3

First some context. I’m working on an embedded driver written in Rust, and want it to compilable to the AVR platform, which is experimentally supported by LLVM. When compiling, I get linker errors that complain undefined references to these functions:

  • __ashlsi3

  • __lshrsi3

  • __divmodti4

  • __ashrsi3

The exact error and my other findings on this can be found in an issue on the Github repo for the AVR Rust fork.

I’ve been able to confirm that these functions are present in libgcc.

My current belief is that the first step towards rectifying the problem (based on this comment on a related issue) is to add support for these functions to compiler-rt. However, I am 1) not confident that this is the correct move, and 2) completely ignorant on how to make such an addition.

Any direction that someone familiar with this can provide would be greatly appreciated. Without even knowing where in the code to look for where these new functions might live makes moving forward very difficult.


Jonah Dahlquist

Bumping this up. I’d be eternally grateful for any kind of direction on this. This bug is blocking a project of mine, and I don’t have any experience with compilers to lean on. :weary: