Roland McGrath wrote:
> * Check that each rangelistptr is aligned to CU's
This is canonical but not actually mandatory.
It's a message with impact 4. If it's not a big deal, I'll make it 2
(i.e. harmless, but suspicious).
> - DW_OP_bra and DW_OP_skip: that they don't overrun
> opcode buffer, and that their destination address is aligned with the
> beginning of some DIE.
Of some op in that expression block, you mean?
I've also added the location list C++ interface. You can use
that to apply
similar checks for addresses used in location lists. For now, the only
check I'd recommend is that a location list's addresses all fall into the
ranges of a scope containing the one whose loclistptr attr is that list.
Parts of text not covered by any CU are not suspicious even if they
just alignment padding and so on--there are sometimes files linked in that
were compiled without -g, or assembly, which is commonly done with without
-g, or static libraries, crt1.o, etc.
I see, I didn't think about that.
The address validity checks that make sense to do by default are just
they match some section. In relocatable cases, it makes sense to check
that both the start and end of one pair point to the same section. In
final-linked cases, that might still make sense but maybe not. It probably
also makes sense to check that addresses are inside the st_value+st_size of
some symbol in the section. Worrying about it being the right symbol is
much hair for much later.