[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] Ping: [PATCH v2] build: provide option to disambiguate symbol names



On 28.11.2019 10:55, Jan Beulich wrote:
> On 27.11.2019 19:17, Andrew Cooper wrote:
>> On 21/11/2019 08:34, Jan Beulich wrote:
>>> On 20.11.2019 18:13, Andrew Cooper wrote:
>>>> On 20/11/2019 16:40, Jürgen Groß wrote:
>>>>> On 20.11.19 17:30, Jan Beulich wrote:
>>>>>> On 08.11.2019 12:18, 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 <jbeulich@xxxxxxxx>
>>>>>> I've got acks from Konrad and Wei, but still need an x86 and a release
>>>>>> one here. Andrew? Or alternatively - Jürgen, would you rather not see
>>>>>> this go in anymore?
>>>>> In case the needed x86 Ack is coming in before RC3 I'm fine to give my
>>>>> Release-ack, but I'm hesitant to take it later.
>>>> Has anyone actually tried building a livepatch with this change in place?
>>> Actually - what is your concern here? The exact spelling of symbols
>>> names should be of no interest to the tool. After all the compiler is
>>> free to invent all sorts of names for its local symbols, including
>>> the ones we would produce with this change in place. All the tool
>>> cares about is that the names be unambiguous. Hence any (theoretical)
>>> regression here would be a bug in the tools, which imo is no reason
>>> to delay this change any further. (Granted I should have got to it
>>> earlier, but it had been continuing to get deferred.)
>>
>> This might all be true (theoretically).
>>
>> The livepatch build tools are fragile and very sensitive to how the
>> object files are laid out.  There is a very real risk that this change
>> accidentally breaks livepatching totally, even on GCC builds.
>>
>> Were this to happen, it would be yet another 4.13 regression.
> 
> It's perhaps a matter of perception, but I'd still call this a
> live patching tools bug then, not a 4.13 regression.
> 
>> This is a change to fix a concrete livepatch issue with Clang.  Sure -
>> it resolves the symbol uniqueness failures for the in-tree build, but
>> considering the risks to the area you are modifying, the fact you
>> haven't even done a dev test of a livepatch build on GCC means that the
>> patch as a whole has not had what I would consider a reasonable amount
>> of testing.
> 
> While Clang is the primary area where we need this change, it is
> in no way limited to that environment. Gcc can, at any time,
> start triggering the issue again as well - both because of changes
> to the compiler itself, or because of (perhaps seemingly innocent)
> changes we do to Xen. I can't imagine the workaround for this
> would be to make it impossible altogether to select LIVEPATCH=y.

And indeed - on my box with gcc 4.3, a full fresh build fails with
two duplicate symbols. Roger's workaround therefore is not enough
in any event for 4.13, unless we want to - in the last minute -
raise the bar of what gcc versions we claim compatibility with.

Jan

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.