[llvm-dev] Embedding LLD version to executables (original) (raw)

Hal Finkel via llvm-dev llvm-dev at lists.llvm.org
Tue Oct 18 21:27:17 PDT 2016


----- Original Message -----

From: "Mehdi Amini" <mehdi.amini at apple.com> To: "Hal Finkel" <hfinkel at anl.gov> Cc: "llvm-dev" <llvm-dev at lists.llvm.org>, "Rui Ueyama" <ruiu at google.com> Sent: Tuesday, October 18, 2016 10:38:57 PM Subject: Re: [llvm-dev] Embedding LLD version to executables

> On Oct 18, 2016, at 8:30 PM, Hal Finkel < hfinkel at anl.gov > wrote:

> ----- Original Message -----

> > From: "Mehdi Amini via llvm-dev" < llvm-dev at lists.llvm.org > >

> > To: "Rui Ueyama" < ruiu at google.com > > > > Cc: "llvm-dev" < llvm-dev at lists.llvm.org > > > > Sent: Tuesday, October 18, 2016 10:22:00 PM > > > Subject: Re: [llvm-dev] Embedding LLD version to executables >

> > > On Oct 18, 2016, at 6:44 PM, Rui Ueyama via llvm-dev > > >

> > > < llvm-dev at lists.llvm.org > wrote: > > >

> > > I'd like to make LLD embed version information so that we can > > >

> > > determine if an executable was created by LLD and if that's the > > > > > > case which version of LLD. > > >

> > Pardon my ignorance, but what’s the motivation? >

> > We don’t embed the clang version in every binary clang generates > > for >

> > instance. >

> We do. Clang outputs an "ident" comment with its version > information, > and that ends up in the object files (at least on Linux).

Interesting, we don’t on Darwin:

$ echo "int main() {}" | clang -x c -o - - -S | grep clang $ echo "int main() {}" | clang -x c -o - - -S -target x8664-pc-linux-gnu | grep clang .ident "Apple LLVM version 8.0.0 (clang-800.0.42.1)”

Dos it show up in the final binary? Yes

If yes, how does it behave when you mix-and-match versions in different .o? I see both versions in the final binary.

-Hal

Also I’m still not sure why doing this?

Mehdi

> > > ld.bfd doesn't seem to embed any information, so we cannot tell > > >

> > > whether an executable was linked by ld.bfd or not easily. > > >

> > > ld.gold embeds a string "GNU gold " as > > >

> > > ".note.gnu.gold-version" section contents. > > >

> > > I'm wondering what we should do for LLD. The gold's way seems > > >

> > > almost right, but I think we don't want to use the same section > > > > > > name because it contains "gold" as part of the section name. > > > > > > However, at the same time, I don't believe we want to create > > > > > > ".note.gnu.lld-version", because if we do, all programs that > > > > > > determine linker version need to look at > > > > > > ".note.gnu.-version" for all known linkers. That's > > > > > > absurd. (Also, our product is not GNU, so ".gnu" part is > > > probably > > > > > > irrelevant.) > > >

> > > I'm leaning towards ".note.linker-version" in hope that other > > >

> > > linkers follow it. > > >

> > At least that would look much better than a .gnu.xxxx >

> I agree.

> -Hal

> > — >

> > Mehdi >

_> > ________________________ >

> > LLVM Developers mailing list > > > llvm-dev at lists.llvm.org > > > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >

> -- > > Hal Finkel > > Lead, Compiler Technology and Programming Languages > > Leadership Computing Facility > > Argonne National Laboratory

Hal Finkel Lead, Compiler Technology and Programming Languages Leadership Computing Facility Argonne National Laboratory -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20161018/28775af8/attachment.html>



More information about the llvm-dev mailing list