[RFC] Implementation of stdio on baremetal

Regarding option (4), using weak to provide tiers automatically at link time; I spent some time a few weeks back working the multiple-tiers problem, and it is actually tractable, albeit with some overhead.

Say you have some abstraction, ‘foo’, and you want to provide k versions. The weakly provided ‘foo’ would be tier 1, and the strongly provided variant would immediately call a new abstraction, ‘foo_2_plus’. The weakly provided ‘foo_2_plus’ would be tier 2, and the strongly provided ‘foo_2_plus’ would immediately call ‘foo_3_plus’. And so on.

I didn’t actually discover this ex nihilo; instead by stitching together abstractions kinda already in libc using weak and strong linking. That is to say, we already have much of this slicing in libc for cleanliness purposes, so it likely wouldn’t usually be as baroque as numbered tier abstractions.