specifically, ignore addresses that point before the first code section.
This resurrects D87172 with several notable changes:
- it fixes a bug where the early exits in InitializeObject left m_first_code_address "initialized" to LLDB_INVALID_ADDRESS (0xfff..f), which caused _everything_ to be ignored.
- it extends the line table fix to function parsing as well, where it replaces a similar check which was checking the executable permissions of the section. This was insufficient because some position-independent elf executables can have an executable segment mapped at file address zero. (What makes this fix different is that it checks for the executable-ness of the sections contained within that segment, and those will not be at address zero.)
- It uses a different test case, with an elf file with near-zero addresses, and checks for both line table and function parsing.
It would be nice to wrap this up into InitializeFirstCodeAddress(...) it could be done by making iterating over the section list a lambda and then checking after that or splitting it into a helper etc