[LLVMdev] [lld] Implementing the aliasing feature
Shankar Easwaran
shankare at codeaurora.org
Fri Sep 13 14:50:47 PDT 2013
Ping ?
On 9/12/2013 5:02 PM, Shankar Easwaran wrote:
> Hi Nick,
>
> In addition to what you mentioned, I think there needs a special
> *AliasReference* that need to be created which the DefinedAtom points to.
>
> Thanks
>
> Shankar Easwaran
>
>
> -------- Original Message --------
> Subject: Re: [PATCH] Add a fallback mechanism for undefined atom.
> Date: Thu, 29 Aug 2013 15:15:49 -0700
> From: kledzik at apple.com <kledzik at apple.com>
> Reply-To:
> reviews+D1550+public+25c98da67f89e22f at llvm-reviews.chandlerc.com
> To: shankarke at gmail.com, kledzik at apple.com, bigcheesegs at gmail.com,
> ruiu at google.com
> CC: llvm-commits at cs.uiuc.edu
>
>
>
> Interesting feature.
>
> What happens if a.o has an undefine foo which says its fallback is
> bar, but in b.o an undefine for foo says its fallback is baz? Is that
> an error, or does each fallback apply to its original usage. The
> problem is that the Resolver is currently coalescing UndefinedAtoms
> based on their name. I does not know that fallbacks need to match too.
>
> Another variant is to have Undefined return a alternate name as a
> string, rather than returning a new UndefinedAtom object.
>
> Another approach is to use weak aliases. That is if a.o has an
> undefine for foo with a fallback of bar, that when parsing that .o
> file into atoms produces an UndefinedAtom for foo, but also a
> DefinedAtom with name=foo, weak (mergeAsWeak), hidden
> (scopeLinkageUnit), size=0, isAlias=true which aliases to bar. So, it
> any definition of foo does show up, it will override the weak alias.
> If not the weak alias will be used and change the reference to bar.
>
> I don't think the isAlias support is all wired up in lld. But weak
> aliases are something common in ELF. So would should get it working,
> and doing so may provide a way to implement this COFF feature.
>
> One issue is how this interacts with static libraries. The weak
> alias for foo make look like there is a definition, so any static
> archives will not be searched for foo. That seems different than what
> you want. I'm not sure what the gnu linker does about this with weak
> aliases. We may need a new resolver option as to how to handle this.
>
>
> ================
> Comment at: lib/Core/Resolver.cpp:214
> @@ +213,3 @@
> + // for COFF "weak external" symbol.
> + const UndefinedAtom *fallbackUndefAtom = undefAtom->fallback();
> + if (fallbackUndefAtom) {
> ----------------
> You need to re-test:
> if (!_symbolTable.isDefined(undefName)
> because searchLibraries() may have already found a definition.
>
>
> http://llvm-reviews.chandlerc.com/D1550
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
>
>
>
>
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by the Linux Foundation
More information about the llvm-dev
mailing list