[roll] Roll fuchsia [zircon][rust] Verify Rust syscall signatures via Zither

Implement compile-time signature verification for Rust kernel syscall
handlers against the Zither FIDL schema.

Extend Zither's kernel backend to emit syscall_sigs.rs, containing
Rust function pointer type aliases (fn(...) -> ...) derived directly
from FIDL syscall definitions. Define this output as a standalone kernel
Rust crate (syscall-signatures) in //zircon/vdso.

Introduce the #[syscall] procedural macro in syscalls-macro. The
macro enforces that handler function names begin with sys_, wraps
them in an exported extern "C" ABI shim, and emits an anonymous
constant type assertion comparing the handler's signature against the
Zither-generated signature in syscall-signatures. Migrate all test
syscall handlers to use #[syscall].

Original-Original-Bug: 527587271
Test: fx build and fx run-boot-test kernel-unittests-boot-test
Original-Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1681546
Original-Original-Revision: d8e6f46fbad96e133d3d7992c42012f90846f1af
GitOrigin-RevId: cffd1bf6154d2db9040252e51e35bf821cda3a66
Change-Id: I49952c7a562d8e5b15600f6d6bd84ddb08a898e2
Reviewed-on: https://fuchsia-review.googlesource.com/c/integration/+/1686077
Cr-Commit-Position: refs/heads/main@{#195840}
1 file changed
tree: 943a8337a4568ab586730d2d3b26da86ac6769c5
  1. ctf/
  2. git-hooks/
  3. infra/
  4. third_party/
  5. cobalt
  6. flower
  7. jiri.lock
  8. MILESTONE
  9. minimal
  10. prebuilts
  11. README.md
  12. stem
  13. test_durations
README.md

Integration

This repository contains Fuchsia's Global Integration manifest files.

Making changes

All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.

Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance in one of the communication channels documented at get involved.

Obtaining the source

First install Jiri.

Next run:

$ jiri init
$ jiri import minimal https://fuchsia.googlesource.com/integration
$ jiri update

Third party

Third party projects should have their own subdirectory in ./third_party.