Redox’s C library currently contains a mix of C and Rust (it uses newlib, which is C, but the platform code is in Rust). Currently it uses a no_std build since there were issues with using std.
Using std in libc.a worked for C programs, but broke when trying to build a Rust program and link against libc.a. Specifically, some Rust symbols from libc.a cause conflicts, namely rust_eh_personality and several symbols beginning in __rdl_.
Is it possible to prevent these symbols from being exposed, or otherwise deal with the link errors? lto=true seems to prevent some others, like rust_begin_unwind, from being exposed, but these still exist.
Admittedly this is a rather unusual thing to do, but hopefully someone has an idea.