Compare function-local statics without their compiler numbering in rk sections-diff - #40
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.
Summary
A function-local static such as the
___once_keybehindDO_ONCEgets a number after its name, and gcc and rucc count those numbers differently.net/ipv4/udp.ohas___once_key.0and___once_key.1from gcc and___once_key.2and___once_key.8from rucc for the same two keys. So the site comparison from #39 reported each of them as a site missing on one side and added on the other.Now the number is dropped from a local symbol's name when a table entry is named by it. A global name is kept as it is. Jump table entries also no longer carry the bytes left over between relocations: they are always zero, and they showed up only because the width of the 64 bit PC relative key relocation was not read.
Effect on the 7.2.8 defconfig comparison
__jump_tablegoes from 20 objects to 1, and all differences go from 267 to 248. The one left iskernel/entry/common.o, where gcc has a jump label on__tracepoint_rseq_ip_fixupand rucc does not.