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

This is a reland of commit bbe0664791c55b17ae2ff097c5dd6d27b7ca9210

The original commit was reverted due to a potential flake in the
FloatingPointState test. This was caused by a cbnz to a non-local label
in the ARM assembly, which failed because we do not have dynamic linking
set up in this test. This was a flake instead of a failure because the
cbnz is only invoked when an atomic store failed.

Original change's description:
> [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
> Change-Id: Ie3246f48a7005b6c8b055274dad29272862994c1
> Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1157128
> Reviewed-by: Will Drewry <drewry@google.com>
> Commit-Queue: Anirudh Mathukumilli <rudymathu@google.com>
> Reviewed-by: Roland McGrath <mcgrathr@google.com>

Original-Bug: 372499348
Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1164912
Original-Revision: c11bd3ad907443de19044d512d77158c85ab9755
GitOrigin-RevId: 894bb8630d82f81459bb59c5e5fe878d03ff3c60
Change-Id: I0f2d2a2b3a95252f288abd83d8e83a2493e35865
1 file changed
tree: 87f3c1c6ae935d3ccf04c1b2cb009dc5e01a5656
  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.