forked from tensorush/libzigunwind
[WIP] Local stack unwinding library for Zig based on LLVM libunwind.
- Zig 100%
| src | feat: add initial registers source | |
| .gitattributes | init | |
| .gitignore | feat: add initial registers source | |
| build.zig | feat: add initial registers source | |
| build.zig.zon | init | |
| LICENSE | init | |
| README.md | readme: improve contributing | |
libzigunwind
Intended to be upstreamed to Zig, see ziglang/zig issue #23560.
[WIP] Local stack unwinding library for Zig based on LLVM libunwind.
Progress
-
Platforms:
- 🟡 Darwin
- 🟡 Windows
- 🟡 Linux/BSDs
- 🟡 Freestanding (bare-metal)
-
Exception handling mechanisms:
-
Unwinding register operations:
-
Shadow stack (hardware-enforced stack protection) mechanisms:
- 🔴 Control-flow Enforcement Technology (CET)
- 🔴 Guarded Control Stack (GCS)
Contributing
First stage of porting any non-trivial C/C++ codebase to Zig comes down to rewriting the original code almost one-to-one, resisting the urge to start improving the API or changing the implementation.
Naturally, this often requires searching for things you don't know, like some target-specific terms, or things you aren't sure about, like some C/C++ semantics.
If you're looking to contribute consider porting to Zig any of the C/C++/Assembly files linked above. Please open an issue mentioning what you're working on so that others can avoid duplicating work. Thanks!