Summary: | Produce palatable build-id in clang-built executables | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Arseny Maslennikov <arseny> |
Component: | clang | Assignee: | Arseny Maslennikov <arseny> |
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
Severity: | normal | ||
Priority: | P5 | CC: | aen, arseny |
Version: | unstable | ||
Hardware: | x86_64 | ||
OS: | Linux | ||
URL: | https://lore.altlinux.org/devel/ZRS1KlTv1QQr0yvL@cello/ | ||
Bug Depends on: | |||
Bug Blocks: | 46625 |
llvm17.0-17.0.1-alt3 -> sisyphus: Thu Sep 28 2023 Arseny Maslennikov <arseny@altlinux> 17.0.1-alt3 - clang: Restore the default disposition of -grecord-command-line. - clang: Pass --build-id=sha1 to linkers by default. (Closes: 47780) Both of these changes are applied to clangs we build ALT packages with; if we ever decouple clang-for-packages from clang-for-users, upstream behaviour can be restored for the latter. Mon Sep 25 2023 Arseny Maslennikov <arseny@altlinux> 17.0.1-alt2 - Readjusted CMake file validation fixes. Спасибо! |
On Sat, Sep 23, 2023 at 04:44:38PM +0700, Ilya Kurdyukov wrote: > On 9/23/23 16:36, Dmitry V. Levin wrote: > > > > --ldflags=-Wl,--build-id=sha1 > > Этой истории уже много лет, поэтому удивительно, что где-то до сих пор > > по умолчанию создаётся 64-битный build id. С точки зрения репозитория > > важно не столько, чтобы конкретный пакет был исправлен, сколько чтобы > > этого не происходило по умолчанию. > > > ghc (смотрел спеку 8.6.4) для armh/aarch64 собирается через LLVM: > > * Thu Aug 17 2023 Anton Zhukharev <ancieg@altlinux.org> 8.6.4-alt9 > - Fixed FTBFS. > - Built with llvm12.0 on armh and aarch64. > - Stored LLVM version in %%ghc_llvm_version macro. > > Это опции LLD, линковщика из LLVM: > > --build-id=value > Generate a build ID note. value may be one of fast, md5, sha1, tree, > uuid, 0xhex-string, and none. tree is an alias for sha1. Build-IDs of type > fast, md5, sha1, and tree are calculated from the object contents. fast is > not intended to be cryptographically secure. > --build-id > Synonym for --build-id=fast. Выяснилось, что собранные clang+lld бинарники вообще никакого build-id не содержат. % eu-readelf -n $(command -v make) | grep -cFA4 .note.gnu.build-id 1 % eu-readelf -n $(command -v clangd-17) | grep -cFA4 .note.gnu.build-id 0 «– Как же, позвольте?.. Он же служил в очистке...» Пусть clang, используемый для сборки пакетов, передаёт линкеру --build-id=sha1 (именно так, чтобы все возможные линкеры поняли, что от них требуется).