Hello Kent, I extended the rumprun+rust example (available in this PR https://github.com/seL4/camkes/pull/4) with a simple camkes connection between the rumprum camkes component and a serial server component, as shown below (full code here https://github.com/GaloisInc/camkes/blob/devel_rust_app/apps/rumprun_rust/ru... ): * composition {* * component rumprun_platform_layer rrpl;* * component rumprun_rust hello1;* * RUMPRUN_META_CONNECTION(hello1, rrpl)* * component rumprun hello2;* * RUMPRUN_META_CONNECTION(hello2, rrpl)* * component Server server;* * connection seL4SharedData conn(from hello1.camkes_buffer, to server.buffer);* * connection seL4Notification simpleEvent1(from hello1.camkes_ev, to server.ev);* * connection seL4Notification simpleEvent2(from server.ev1, to hello1.camkes_ev1);* * }* I added a simple rust program https://github.com/GaloisInc/camkes/blob/devel_rust_app/apps/rumprun_rust/co... (running on rumprun_rust): *fn main() {* * println!("Hello rust!");* * unsafe {* * camkes_ev_emit();* * }* * println!("Waiting for event!");* * unsafe {* * camkes_ev1_wait();* * }* * println!("Got event!");* *}* *#[no_mangle]* *extern {* * fn camkes_ev_emit();* * fn camkes_ev1_wait(); * *}* In order to compile the cargo project, I added a build.rs script https://github.com/GaloisInc/camkes/blob/devel_rust_app/apps/rumprun_rust/co... to package the generated camkes object file (camkes.o) into an archite that cargo can link against. The problem is, that the generated camkes.c file contains its own main function: *int USED main(int argc UNUSED, char *argv[]) {* * assert(argc == 2);* * assert(strcmp(argv[0], "camkes") == 0);* * int thread_id = (int)(uintptr_t)(argv[1]);* * return post_main(thread_id);* *}* which collides with the *fn main()* defined in rust. (I get *multiple definition of `main'* error). How is this handled in rumprun_ethernet https://github.com/GaloisInc/camkes/blob/devel_rust_app/apps/rumprun_etherne... example? There is also a main function for the rumpkernel component https://github.com/GaloisInc/camkes/blob/devel_rust_app/apps/rumprun_etherne..., and the main() from camkes, but the compilation process handles this correctly. Could you point me in the right direction? Regards Michal