[llvm-dev] [EXT] Should we switch to --hash-style=both by default in LLD ?

Rui Ueyama via llvm-dev llvm-dev at lists.llvm.org
Mon Oct 2 15:09:19 PDT 2017


I read through the binutils mailing list thread, but I couldn't find the
exact reason why making --hash-style=gnu default except MIPS wasn't a good
idea.Do you mind if I ask you to explain it again for me?

Since lld is a new linker, we could make a bit more radical change than GNU
ld can do, so I wonder if --hash-style=both is the right choice for us.

On Mon, Oct 2, 2017 at 3:00 PM, Romain GEISSLER <romain.geissler at amadeus.com
> wrote:

> Le 2 oct. 2017 à 18:37, Rui Ueyama <ruiu at google.com> a écrit :
>
> Changing default to "both" is probably fine, but what does that change
> actually mean in practice? I believe clang already passes --hash-style=both
> to the linker by default.
>
>
> Not exactly.
>
> The current Linux driver (I haven't checked other ELF-based systems) reads
> this (https://github.com/llvm-mirror/clang/blob/master/lib/
> Driver/ToolChains/Linux.cpp#L228)
>
>
>   // Do not use 'gnu' hash style for Mips targets because .gnu.hash
>   // and the MIPS ABI require .dynsym to be sorted in different ways.
>   // .gnu.hash needs symbols to be grouped by hash code whereas the MIPS
>   // ABI requires a mapping between the GOT and the symbol table.
>   // Android loader does not support .gnu.hash.
>   // Hexagon linker/loader does not support .gnu.hash
>   if (!IsMips && !IsAndroid && !IsHexagon) {
>     if (Distro.IsRedhat() || Distro.IsOpenSUSE() ||
>         (Distro.IsUbuntu() && Distro >= Distro::UbuntuMaverick))
>       ExtraOpts.push_back("--hash-style=gnu");
>
>     if (Distro.IsDebian() || Distro.IsOpenSUSE() || Distro ==
> Distro::UbuntuLucid ||
>         Distro == Distro::UbuntuJaunty || Distro == Distro::UbuntuKarmic)
>       ExtraOpts.push_back("--hash-style=both");
>   }
>
> Given that several libc implementation supports this in the Linux
> ecosystem (glibc, musl, uClibc, most likely others) I think lld should
> provide good defaults by default, instead of relying on what some distro
> maintainer have hardcoded for their own distro in clang.
>
> Cheers,
> ROmain
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20171002/56623e23/attachment.html>


More information about the llvm-dev mailing list