This patch adds a new section, ".linker-version", to an output.
The section contains the linker's version string. You can now
find out whether a binary is created by LLD or not using objdump
command like this.
$ objdump -j .linker-version -s foo foo: file format elf64-x86-64 Contents of section .linker-version: 0000 4c4c4420 342e3020 28687474 70733a2f LLD 4.0 (https:/ 0010 2f6c6c76 6d2e6f72 672f7376 6e2f6c6c /llvm.org/svn/ll 0020 766d2d70 726f6a65 63742f6c 6c642f74 vm-project/lld/t 0030 72756e6b 20323834 36333429 00 runk 284634).
An alternative considered:
I first tried to add a SHT_NOTE section because GNU gold does that.
A NOTE section starts with a header which contains content type.
It turned out that ld.gold sets type NT_GNU_GOLD_VERSION to their
NOTE section. So the NOTE type is only for GNU gold (surprise!)
I could define NT_GNU_LINKER_VERSION. However, I doubt that we need
a header at all. It doesn't seem useful at all. Thus, I decided to
just set a version string without any header.
Now that it is not a NOTE section, it doesn't make sense to start
a section name with ".note". So I named it just ".linker-version".