RSoC: Relibc

By jD91mZM2 on

Introduction

Hello! It’s me, the tokio guy! Last blog post was the last interesting news I had about tokio. The only tokio-related things I’ve done after that is rebasing and getting Unix Sockets on Redox merged, which just got stabilized. Instead, I’ve been working on relibc.

Relibc

gcc_complete

Starting off, gcc_complete did not compile. Like usual, Jeremy was super quick with fixing a few things, but I managed to catch up when we got to scanf being missing, and told him I could implement that. My first relibc PR! After that, I added empty locale functions, copy pasted musl’s setjmp assembly code. Finally, the last few things to get gcc_complete working here

It turns out we still have some unimplemented functions being used by gcc_complete. I’m currently trying to phase out those, and after

we only have tmpfile left, which stratact implemented.

redox itself

I had nothing to do with this, but you need to know something awesome.

Jeremy got relibc to compile redox! (which also required some kernel changes)

I was surprised when he said he’d do this since I thought it was my job, but I was stuck and I’m very impressed to see how it all turned out! I am able to run orbital and normal pure-rust programs with relibc, although it seems slower. Openssl does not yet work, which leads us to:

openssl

I also want to get openssl to compile. For that, we were missing sockets. Then, sajattack is working on netdb, which I’m thankful I don’t have to do because it involves dns parsing and everything! We’re probably going to need more signal functions to be implemented, but I haven’t gotten to that stage of compiling yet.

When openssl compiles, we should sooner or later have a relatively complete version of redox compiling with relibc!