[elfldltl] Refactor Commit and RELRO support in Loader API

This removes the ProtectRelro method from the *Loader template
APIs.  Instead, the Commit method now takes the RelroBounds
result and returns a Loader::Relro object.  This object is used
to later apply RELRO protection.  This decouples the ownership of
the mapping that is transferred by Loader::Commit at the end of
the Loader lifetime from the ownership of the Relro capability
(zx::vmar for Fuchsia).  Once the mapping ownership has been
transferred, the Loader object's lifetime ends and the Relro
object's lifetime begins.  It lives until protection is applied.

Bug: 42085436
Change-Id: Idf16edfbb4a79728248426285e3b5025e01c5a32
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1016441
Fuchsia-Auto-Submit: Roland McGrath <mcgrathr@google.com>
Commit-Queue: Auto-Submit <auto-submit@fuchsia-infra.iam.gserviceaccount.com>
Reviewed-by: Caslyn Tonelli <caslyn@google.com>
18 files changed
tree: f877cb742670f99f55d81a48b719e4ec3ef8c24f
  1. boards/
  2. build/
  3. bundles/
  4. docs/
  5. examples/
  6. infra/
  7. products/
  8. scripts/
  9. sdk/
  10. src/
  11. third_party/
  12. tools/
  13. zircon/
  14. .clang-format
  15. .clang-tidy
  16. .editorconfig
  17. .git-blame-ignore-revs
  18. .gitattributes
  19. .gitignore
  20. .gitmodules
  21. .gn
  22. .ignore
  23. analysis_options.yaml
  24. AUTHORS
  25. BUILD.gn
  26. CODE_OF_CONDUCT.md
  27. CONTRIBUTING.md
  28. fuchsia.code-workspace
  29. LICENSE
  30. OWNERS
  31. PATENTS
  32. pyproject.toml
  33. pyrightconfig.json
  34. README.md
  35. rustfmt.toml
  36. shac.star
  37. shac.textproto
README.md

Fuchsia

What is Fuchsia?

Fuchsia is an open source, general purpose operating system supporting modern 64-bit Intel and ARM processors.

We expect everyone interacting with our project to respect our code of conduct.

Read more about Fuchsia's principles.

How can I build and run Fuchsia?

See Getting Started.

Where can I learn more about Fuchsia?

See fuchsia.dev.