[llvm-jitlink] Make -show-addrs work without -check, fix fallout. (#175491)
Ensures that the address scraping passes are added to the JIT linker pipeline
if either of the -check or -show-addrs are passed. Prior to this commit we only
considered -check, so passing -show-addrs on its own was printing an empty
(unpopulated) symbol table.
This change exposed bugs in RuntimeDyldChecker's `MemoryRegionInfo` type, aned
llvm-jitlink's symbol printing code:
- `MemoryRegionInfo` was assuming that zero-sized symbols wouldn't be defined
and was using Size == 0 as a proxy for "region info uninitialized". This was
triggering assertions for valid LinkGraphs containing zero-sized symbols.
- llvm-jitlink's symbol printing code was assuming that all defined symbols
contained content, and was not correctly handling zero-fill / absolute
symbols. This triggered assertions about requesting content addresses for
non-content symbols.
This commit fixes the issues above, and adds both a generic testcase for the
-show-addrs option, and an ELF-specific testcase with a zero-sized symbol to
check that the option works for such symbols.