On Fri, Nov 08, 2019 at 12:18:40PM +0100, Jan Beulich wrote: > The .file assembler directives generated by the compiler do not include > any path components (gcc) or just the ones specified on the command line > (clang, at least version 5), and hence multiple identically named source > files (in different directories) may produce identically named static > symbols (in their kallsyms representation). The binary diffing algorithm > used by xen-livepatch, however, depends on having unique symbols. > > Make the ENFORCE_UNIQUE_SYMBOLS Kconfig option control the (build) > behavior, and if enabled use objcopy to prepend the (relative to the > xen/ subdirectory) path to the compiler invoked STT_FILE symbols. Note > that this build option is made no longer depend on LIVEPATCH, but merely > defaults to its setting now. > > Conditionalize explicit .file directive insertion in C files where it > exists just to disambiguate names in a less generic manner; note that > at the same time the redundant emission of STT_FILE symbols gets > suppressed for clang. Assembler files as well as multiply compiled C > ones using __OBJECT_FILE__ are left alone for the time being. > > Since we now expect there not to be any duplicates anymore, also don't > force the selection of the option to 'n' anymore in allrandom.config. > Similarly COVERAGE no longer suppresses duplicate symbol warnings if > enforcement is in effect, which in turn allows > SUPPRESS_DUPLICATE_SYMBOL_WARNINGS to simply depend on > !ENFORCE_UNIQUE_SYMBOLS. > > Signed-off-by: Jan Beulich <jbeul...@suse.com>
Reviewed-by: Roger Pau Monné <roger....@citrix.com> And tested on FreeBSD with clang 8 and elftoolchain objcopy. Thanks, Roger. _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel