[LLVMdev] [lld] Undefined symbols postprocessing
Shankar Easwaran
shankare at codeaurora.org
Thu Feb 19 09:15:10 PST 2015
+ Nick
On 2/19/2015 9:00 AM, Shankar Easwaran wrote:
> On 2/19/2015 3:58 AM, Denis Protivensky wrote:
>> Joerg:
>>> I propose to add the ability to ignore undefined symbols during initial
>>> resolution, and then postprocess only those undefines for the second
>>> time
>>> after the pass manager execution.
>> Do you want to do that before or after dead code elimination?
>> I think dead code elimination should be performed after all possible
>> object code modifications done by lld. Therefore, it should be done
>> after undefines' postprocessing as well.
> Gnu does dead code elimination before undefines are reported. So if a
> function is not called and it has a undefined reference its would not
> be an undef.
>>
>> Shankar:
>>> I propose to add the ability to ignore undefined symbols during initial
>>> resolution, and then postprocess only those undefines for the second
>>> time
>>> after the pass manager execution.
>> I came across this same problem, and was planning on adding a
>> notifyUndefinedSymbol to the LinkingContext, if the linker wants to add
>> a defined symbol and coalesce it, it would be possible.
>>
>> Do you think this will work for your case too ?
>> With this option, I don't see:
>> - how to postpone processing and reaction on undefines. If the
>> callback is called from within Resolver::resolve(), you should react
>> on it immediately, because otherwise the code will still fail in
>> Resolver::resolve().
>> - how to know if a symbol is needed within the callback body. The
>> need of any symbol is determined in some other place. So I need to
>> keep a sort of indication (boolean flags, whatever) to know which
>> symbols are really needed.
>> - the exact interface of notifyUndefinedSymbol callback. If it
>> receives `StringRef` name of the undefined symbol, what reaction
>> should be? Should it return new symbols to add back to the caller as
>> `const Atom*`?
> notifyUndefinedSymbol will allow the context to coalesce the undefined
> atom with a defined atom.
>
> Atom *notifyUndefinedSymbol(StringRef name) could be the interface.
>
>> Thanks,
>> Denis.
>>
>
>
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by the Linux Foundation
More information about the llvm-dev
mailing list