[fdf][compat] Perform all dlopen and dlsym calls in the framework.

This patch adds a modules section to the program stanza of the
component manifest for drivers. This section provides an optional
list of additional modules to load in addition to the driver as well
as a list of symbols the primary driver would like to obtain from
those modules. The symbols are then populated into the existing
symbols field in the start args.

Additonally, in order to support a feature in the compat driver, we
also provide support for overriding dynamic libraries provided during
the dynamic linking phase of the extra modules. This allows us to
redirect libdriver.so to compat.so.

Lastly, the compat driver was updated to take advantage of this
feature and avoid calling dlopen and dlsym itself.

Bug: 360403906
Change-Id: I2c9c36bec926cf0c40333d4d2a6f07f1355bb878
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1186157
Commit-Queue: Auto-Submit <auto-submit@fuchsia-infra.iam.gserviceaccount.com>
API-Review: Hunter Freyer <hjfreyer@google.com>
Reviewed-by: Novin Changizi <novinc@google.com>
Commit-Queue: Suraj Malhotra <surajmalhotra@google.com>
Fuchsia-Auto-Submit: Suraj Malhotra <surajmalhotra@google.com>
Reviewed-by: Sarah Chan <spqchan@google.com>
20 files changed
tree: 4c6de613d75f39b5e83f8e3ac56be7234180bf92
  1. .helix/
  2. boards/
  3. build/
  4. bundles/
  5. docs/
  6. examples/
  7. infra/
  8. products/
  9. scripts/
  10. sdk/
  11. src/
  12. third_party/
  13. tools/
  14. zircon/
  15. .clang-format
  16. .clang-tidy
  17. .editorconfig
  18. .git-blame-ignore-revs
  19. .gitattributes
  20. .gitignore
  21. .gitmodules
  22. .gn
  23. .ignore
  24. analysis_options.yaml
  25. AUTHORS
  26. BUILD.gn
  27. CODE_OF_CONDUCT.md
  28. CONTRIBUTING.md
  29. fuchsia.code-workspace
  30. LICENSE
  31. OWNERS
  32. PATENTS
  33. pyproject.toml
  34. pyrightconfig.json
  35. README.md
  36. rustfmt.toml
  37. shac.star
  38. 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.