[roll] Roll fuchsia [utest] Use ELF loading in restricted mode tests

Modifies the restricted mode tests to load a separate ELF binary instead
of jumping into code linked into the test binary itself. The actual
contents of the code executed in restricted mode have not changed;
they've simply been moved to their own binary. This will allow us to add
tests for ARM32 machines on ARM64 hosts more easily.

To make this work, I needed to add some hidden labels in the
restricted-blob assembly code to avoid GOT indirections (which caused
link failures in RISC-V). While the failure was only observed on RISC-V,
it is theoretically possible on other architectures, so I switched to
using the same structure everywhere.

This change also renames the "vectab" function to "restricted_exit" to
make the purpose of the function more clear and to match other
restricted mode tests.

Original-Bug: 372499348
Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1157128
Original-Revision: bbe0664791c55b17ae2ff097c5dd6d27b7ca9210
GitOrigin-RevId: 05cb6a91c8a1a6b886c2344f46ecaec26fb1d122
Change-Id: I99208f8000b1efd51d9020144f915b35d288a813
1 file changed
tree: 9f2cc60cfc4f61d3741c0b6e4d81e6febaaf1619
  1. ctf/
  2. git-hooks/
  3. infra/
  4. third_party/
  5. cts
  6. firmware
  7. flower
  8. jiri.lock
  9. MILESTONE
  10. minimal
  11. prebuilts
  12. README.md
  13. stem
  14. test_durations
  15. toolchain
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.