Improve expression evaluator, (non)fatal attribute evaluation, and ORC dogfood #55
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR does a handful of things:
Improved expression evaluation
Some libraries have been found that use new DWARF 5 constructs (
DW_OP_stack_value
), as well as more complex uses of the DWARF form expression evaluator. This PR improves upon ORC's ability to evaluate DWARF form expressions. This will fix some errors where the attribute is showing as<unhandled>
, and may result in an ODRV false positives that read thusly (note the<unhandled>
value for the firstdata_member_location
):Improved expression evaluation skipping
We have been identifying nonfatal attributes for some time now. This PR includes an optimization where, for some attributes, the value is passed over when we know it is not necessary for detecting for ODRVs.
Dogfood build
The CMake project is modified to add an
orc_dogfood
target. It is identical to theorc_orc
target, except ORC is passed over the dogfood target during link time. This ensures that ORC itself has no ODR violations (at least as far as the tool can detect them.) This addresses a comment made in #20.