[PATCH] D30193: [ELF] - Scan lazy linkerscipt symbols early.

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Tue Feb 21 12:49:03 PST 2017


On Tue, Feb 21, 2017 at 12:34 PM, Petr Hosek <phosek at chromium.org> wrote:

> I can add a ReportDuplicate=true default argument to
> SymbolTable::addRegular after which it's possible to use it here instead of
> addUndefine+replaceBody. Would that be fine with you? Alternatively, I
> could add a separate method.
>

All existing add* functions resolve symbol conflicts automatically, so
adding a boolean parameter to not do that seems a bit confusing. How about
just making SymbolTable::insert() public?

On Tue, Feb 21, 2017 at 10:15 AM Rui Ueyama via llvm-commits <
> llvm-commits at lists.llvm.org> wrote:
>
>> On Tue, Feb 21, 2017 at 9:37 AM, Rafael Avila de Espindola <
>> rafael.espindola at gmail.com> wrote:
>>
>> I think the real problem is at
>>
>> template <class ELFT> static SymbolBody *addRegular(SymbolAssignment
>> *Cmd) {
>>   uint8_t Visibility = Cmd->Hidden ? STV_HIDDEN : STV_DEFAULT;
>>   Symbol *Sym = Symtab<ELFT>::X->addUndefined(
>>       Cmd->Name, /*IsLocal=*/false, STB_GLOBAL, Visibility,
>>       /*Type*/ 0,
>>       /*CanOmitFromDynSym*/ false, /*File*/ nullptr);
>>
>>   replaceBody<DefinedRegular<ELFT>>(Sym, Cmd->Name, /*IsLocal=*/false,
>>                                     Visibility, STT_NOTYPE, 0, 0, nullptr,
>>                                     nullptr);
>>   return Sym->body();
>> }
>>
>> We add an undefined just to replace it, which has the side effect of
>> fetching the archive member. We should probably just have it as a single
>> step in Symtab.
>>
>>
>> You can probably just use insert() instead of addUndefined().
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170221/3b8488d8/attachment.html>


More information about the llvm-commits mailing list