[debugger] Resolve extern variables

Implements reading extern global variables and static structure members
defined externally. This requires converting the extern value
declaration to a real variable to get its location, and then evaluating
that.

This requires a new member is added to Value that reflects the
DW_AT_external DWARF tag. Symbol reading is updated accordingly.

This function is added to EvalContext::GetVariableValue() which handles
the global extern variable case. This function is changed to take a
Valur and not a Variable so both Variables and static DataMembers can be
passed to it.

A special code path is added to resolving structure members that detects
extern static members and resolve the variable using the above function.

Array symbols are updated to allow unknown array sizes. These can be
encountered when dealing with extern data. There is not much to do with
this type, but we can at least represent it without errors.
Documentation is added to array_type.h on this case.

Skips printing static data members when printing structs. This decision
is documented in format.cc. We can reevaluate and add in the future if
desired.

Change-Id: I65a7dda98664f8fccb1e943cfb9420fcdf885654
18 files changed
tree: ff9f560c876886714452d2caa27f3cc3362d5298
  1. boards/
  2. build/
  3. bundles/
  4. docs/
  5. examples/
  6. garnet/
  7. peridot/
  8. products/
  9. scripts/
  10. sdk/
  11. src/
  12. third_party/
  13. tools/
  14. zircon/
  15. .clang-format
  16. .clang-tidy
  17. .dir-locals.el
  18. .gitattributes
  19. .gitignore
  20. .gn
  21. .style.yapf
  22. AUTHORS
  23. BUILD.gn
  24. CODE_OF_CONDUCT.md
  25. CONTRIBUTING.md
  26. LICENSE
  27. OWNERS
  28. PATENTS
  29. README.md
  30. 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.

How can I build and run Fuchsia?

See Getting Started.

Where can I learn more about Fuchsia?

See fuchsia.dev.