-
Notifications
You must be signed in to change notification settings - Fork 342
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
cxx: implement slice support for nostd
OVERVIEW: This patch adds experimental support for us to use `slices` in a nostd/freestanding environment, aim is to run c++ <=> cxx-rs <=> rust on a baremental target environment and use slices, with the intention of supporting more features later. In the application `Cargo.toml` file, the following feature cfgs are required: ``` [dependencies] cxx = { ... , default-features = false } [build-dependencies] cxx-build = { ... , default-features = false } ``` Then build with: ``` RUSTFLAGS='--cfg cxx_experimental_no_alloc' cargo build ``` and in the particular `.cpp` file you may need to declare the following ``` void __assert_func (const char *__a, int, const char *__b, const char *__c) { while (true) {} } void *__gxx_personality_v0; ``` FUNCTIONALITY: Currently, this only supports slices (outside of trivial features). TESTING: Tested by compiling: - cargo test (run existing tests) - cxx/demo/ running it. - compiling with a arm toolchain setup with cmake/corrosion and running the binary on QEMU arm with basic logic assertions [1]. Current testing has been done in the direction of C++ -> Rust with a simple callback test to C++. A simple test setup can be seen here [2]. TODO: - Get features such as `Results<Ok, Err>` working. - When we build for the none `std` case (no `default-features`), instead of creating a symlink to the original `cxx.h` file, we copy it over and define the macro to disable stdlib dependencies. Perhaps there's a better way to do this? NOTES: By default, all the standard features are enabled gaurded by the `#ifndef CXXBRIDGE1_RUST_STD`, so this **shoudn't** break anything. [1] https://github.com/twilfredo/qemu_misc/tree/master/bm_arm [2] https://github.com/twilfredo/qemu_misc/blob/master/bm_arm/main.cpp Signed-off-by: Wilfred Mallawa <[email protected]>
- Loading branch information
Showing
5 changed files
with
83 additions
and
26 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters