For the record my printf is at https://gitlab.com/sortix/sortix/blob/master/libc/stdio/vcbprintf.c … - mind that this is just my hobby thing and it's not as great as it could be
A possible alt design would be having the kernel responsible for making a TLS image copy for main thread & setting thread ptr to pt to it.
-
-
That is what Sortix does. It also loads a master copy that can be used for new threads.
-
__thread int errno; is online the instant _start is run
-
This is problematic for dynamic linking because the kernel won't know how much TLS space libraries need (assuming userspace ldso).
-
I'm yet to look into how dynamic link TLS works. If the dynamic linker uses static TLS, maybe it can upgrade the process to dynamic TLS.
-
Main program refs to TLS in DT_NEEDED libs are accessed at a ldso-time constant (can't vary per thread) offset from thread pointer.
-
This requires a contiguous VA range whose size is sum of all library TLS sizes.
-
Actual dynamic TLS access goes thru a function call so you can make the lookup as complex as you want, if you're happy paying.
-
Ah so it's not a nice constant time memory access relative to the segment. OK, I start to see how this could work.
- 1 more reply
New conversation -
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.