[roll] Roll fuchsia [kernel][userboot] Load userboot via physboot-extracted ELF segments

This revamps how the userboot binary is mapped into the first
user process.  No build-time details of the userboot binary are
extracted to compile in constants as before.  Instead, with the
ELF loading details culled from the ELF file and vetted in
physboot, the kernel now loads userboot solely based on that.
This is approximately general ELF loading, supporting whatever
number of segments.  The caveats are that the userboot VMO is
used directly for a writable segment (no COW); because of that,
the ELF file must use aligned nonoverlapping file segments (which
the vetting in physboot's ElfImage already requires).

This also adds handles to userboot's bootstrap message from the
kernel that in a processargs bootstrap would be PA_THREAD_SELF
and PA_VMAR_LOADED.  This fills out all the handles that userboot
might use as a "normal" static PIE (just with a custom bootstrap
message protocol).

Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1266525
Original-Revision: be0403dbbb08ec1fb94b0a07335c56e43e73caab
GitOrigin-RevId: 1368a57457d29530f2f54b143f3d156f004e261e
Change-Id: Ifd51b914c05bbb3c1554aa9442c94a1d8171b1fa
1 file changed
tree: 2788ac2546b8ff44e5ec30a7e6ac9efcb5102bb1
  1. ctf/
  2. git-hooks/
  3. infra/
  4. third_party/
  5. flower
  6. jiri.lock
  7. MILESTONE
  8. minimal
  9. prebuilts
  10. README.md
  11. stem
  12. 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.