Explain expected sections-diff differences - #44
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
sections-diff now reads sections-divergences.toml, the same way config-diff and flags-diff read their files. A difference counts as explained when a rule covers every section name or site on both sides of it, and the build is clean when nothing is left unexplained and no object exists only in the other build.
The general rules cover sections each optimizer makes for itself (
.rodata.cst*,.rodata,.rodata.str*,.text.unlikely) and bug table sites only rucc has, which are checks gcc proved dead. Every bug table site only gcc has gets its own rule for one object, with the check named and the reason rucc could prove it false. I read each one against the source and its callers. One example is the cpupri.c WARN, where convert_prio has no default case, so every value it defines is below CPUPRI_NR_PRIORITIES.The report lists unexplained differences first, then the explained ones with their reasons.
On 7.2.8 defconfig built from scratch with rucc at ad3de85a1, 3112 objects compared, 200 differences, 200 explained, 0 not, and the command exits 0. config-diff, flags-diff, symvers-diff and vec-audit are also clean on the same pair.
Part of #3.