[kernel][lib/arch] Work around GCC bug in BootCpuidIo::GetLeaf template

GCC fails to honor the `section` attribute when in a COMDAT context
like a template instantiation.  There doesn't seem to be any way to
get GCC to emit the right thing.  So in the GCC build just skip the
preinitialized special section and do on-demand initialization for
template instantiations.  The explicitly specialization
instantiations used from assembly can still use the special section
since those variable definitions are outside any COMDAT context.

Bug: 27083, 64109
Change-Id: Ie4d4ff29c5c1c8b3a6c7d8115addbac9d677029d
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/449394
Commit-Queue: Joshua Seaton <joshuaseaton@google.com>
Reviewed-by: Joshua Seaton <joshuaseaton@google.com>
Testability-Review: Roland McGrath <mcgrathr@google.com>
Fuchsia-Auto-Submit: Roland McGrath <mcgrathr@google.com>
1 file changed
tree: bc76ce65ef6f27daa7af9ba20b9c1b8b3ae364d6
  1. boards/
  2. build/
  3. bundles/
  4. docs/
  5. examples/
  6. garnet/
  7. products/
  8. scripts/
  9. sdk/
  10. src/
  11. third_party/
  12. tools/
  13. zircon/
  14. .clang-format
  15. .clang-tidy
  16. .gitattributes
  17. .gitignore
  18. .gn
  19. .style.yapf
  20. AUTHORS
  21. BUILD.gn
  22. CODE_OF_CONDUCT.md
  23. CONTRIBUTING.md
  24. LICENSE
  25. OWNERS
  26. PATENTS
  27. README.md
  28. rustfmt.toml
README.md

Fuchsia

Pink + Purple == Fuchsia (a new operating system)

What is Fuchsia?

Fuchsia is a modular, capability-based operating system. Fuchsia runs on modern 64-bit Intel and ARM processors.

Fuchsia is an open source project with a code of conduct that we expect everyone who interacts with the project to respect.

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.