MaskRay wrote:

Thanks for putting this together. However, I don't know the case for flipping 
the default holds up.

On cost. lld defaults to a BLAKE3 based fast build-id, but but it still costs 
time. On GNU ld it likely costs more.

GCC parity still holds. `gcc/configure.ac` on master still has 
`enable_linker_build_id=no`.

Defaults should serve whoever can't easily override. Builds that want a 
build-id already have a build configuration: a spec file, `debian/rules`, a CI 
job, a toolchain definition. Builds that don't want it are the inner 
development loop - many relinks a day, no config file, nobody tuning them. 
Shifting cost onto that group to save packagers a flag they've already set 
seems backwards.

I realize the counter is that you often don't know at link time whether you'll 
want the ID. But you then should explicitly specify --build-id={fast,md5,sha1}.

**More fundamentally, I think the CMake option is the wrong mechanism for 
distro policy.** A distribution that wants `--build-id` by default can express 
that in a clang configuration file instead of a compile-time flag. This works 
cleanly since at least Clang 18. We should try harder to remove such CMake 
options.

https://github.com/llvm/llvm-project/pull/212620
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to