[llvm-dev] LLD's default --build-id choice

Rafael Espíndola via llvm-dev
Thu, 02 Jun 2016 04:17:03 -0000

On 1 June 2016 at 17:03, Rui Ueyama via llvm-dev
<llvm-dev at lists.llvm.org> wrote:
> On Wed, Jun 1, 2016 at 4:57 PM, Joerg Sonnenberger via llvm-dev
> <llvm-dev at lists.llvm.org> wrote:
>>
>> On Wed, Jun 01, 2016 at 03:21:08PM -0700, Rui Ueyama via llvm-dev
wrote:
>> > In the first place, I believe it was not a good decision to make
GCC
>> > (and
>> > therefore Clang) to pass --build-id option to the linker by
default (it
>> > was
>> > done in 2009
>> >
<https://lists.debian.org/debian-gcc/2009/07/msg00082.html>).
>> > Build ID is sometimes useful, particularly when distributing
linked
>> > objects
>> > to users, but in most cases it is not needed. Spending 10% more
time on
>> > usual build-link-debug cycle is a waste of time. It should not
have been
>> > added that casually.
>>
>> I fully agree on this (not passing it down by default automatically),
>> since it doesn't create a very useful key.
>>
>> > --build-id=uuid sets build-id to a random unique value. It's
very fast.
>> > Instead, it breaks build reproducibility because every build has a
>> > unique
>> > build ID. But if you want build reproducibility, you can
explicitly pass
>> > --build-id=sha1.
>>
>> I think this is worse than not doing anything at all. What about the
>> hash tree options, those can at least be computed piecewise and
>> concurrently?
>
>
> We could but it only mitigate the issue. If the decision was wrong in the
> first place, I want to fix it completely if it's not too late.

It should be fine. I will try writing a clang patch.

Cheers,
Rafael