<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid">
<div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid"><br>
</blockquote></div>
0. QEMU or some other emulator<br>
  Not an absolute must, but super useful if you don't real hardware yet, or your hardware doesn't have good debug support.<div><br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid">
1. Compiler (Clang and LLVM)<br>
</blockquote></div>
1.25 Linker<br>
  You could port ld, or lld.<br>
1.5. Compiler runtimes (libgcc or compiler_rt).<br>
  For compiler_rt, you can probably skip the sanitizers in your first stab at it.  Save them for after you've got the regular bits working.<br>
1.75 Debugger<br>
  Not an absolute must, but suuuuper useful.<br>
  Could port gdb, or lldb.<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid">
2. C++ library (libc++)<br>
</blockquote>
Or libstdc++<div><br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid">
3. C library (PDCLib?)<br>
4. ABI (libc++abi)<br>
</blockquote></div>
Or libcxxrt, or libsupc++.<br>
5. Unwinder (sort of part of libc++abi, or libgcc_s)<br></blockquote><div><br></div><div><span class="HOEnZb">I assume that an unwinder is related to stack unwinding when an exception is thrown.  What does that require beyond what libc++abi supports?<br>

</span></div></div><br></div></div>