From 11308ce797f6baca8a37c03b5f35e0efb58906fb Mon Sep 17 00:00:00 2001 From: jD91mZM2 <me@krake.one> Date: Wed, 25 Jul 2018 08:39:39 +0200 Subject: [PATCH] RSoC: Relibc --- content/news/rsoc-relibc.md | 67 +++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 content/news/rsoc-relibc.md diff --git a/content/news/rsoc-relibc.md b/content/news/rsoc-relibc.md new file mode 100644 index 00000000..838a350e --- /dev/null +++ b/content/news/rsoc-relibc.md @@ -0,0 +1,67 @@ ++++ +title = "RSoC: Relibc" +author = "jD91mZM2" +date = "2018-07-24T21:18:54+02:00" ++++ + +# 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](https://github.com/rust-lang/rust/pull/51553) merged, which just [got +stabilized](https://github.com/rust-lang/rust/pull/52656). 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](https://gitlab.redox-os.org/redox-os/relibc/merge_requests/134)! 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](https://gitlab.redox-os.org/redox-os/relibc/merge_requests/146) + +It turns out we still have some unimplemented functions being used by +gcc_complete. I'm currently trying to phase out those, and after + + - Jeremy: [system](https://gitlab.redox-os.org/redox-os/relibc/commit/c2cdb451f57f18b10be25fa551f654f927eddb84) + - stratact: [tmpfile](https://gitlab.redox-os.org/redox-os/relibc/merge_requests/154) + + - [localtime](https://gitlab.redox-os.org/redox-os/relibc/commit/b7e11afd2f331c92bed1203ccb14300449eb52e3) and [mktime](https://gitlab.redox-os.org/redox-os/relibc/commit/b7e11afd2f331c92bed1203ccb14300449eb52e3) + - [getenv and putenv](https://gitlab.redox-os.org/redox-os/relibc/commit/019011f029d7dd0c6a9c3cdd1c22e81cec083dee), + - [strftime](https://gitlab.redox-os.org/redox-os/relibc/commit/b83d1c7ff0d8bad8c446ec3637d5424171011cb9) + - [basic signal support](https://gitlab.redox-os.org/redox-os/relibc/commit/ecd8aca6d6b939ba1d77fc4776b9c5b8df4471ad) + +we only have tmpfile left, which stratact +[implemented](https://gitlab.redox-os.org/redox-os/relibc/merge_requests/154). + +## redox itself + +**I had nothing to do with this**, but you need to know something awesome. + +Jeremy [got relibc to compile +redox](https://gitlab.redox-os.org/redox-os/relibc/compare/7e6e1b16...919ae09d)! +(which also required some [kernel +changes](https://gitlab.redox-os.org/redox-os/kernel/compare/master...relibc)) + +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](https://gitlab.redox-os.org/redox-os/relibc/commit/d3f6985ee91677380da5d558133e4fbcfade5bbd). +Then, sajattack is working on +[netdb](https://gitlab.redox-os.org/redox-os/relibc/merge_requests/156), 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! -- GitLab