Bug 47780 - Produce palatable build-id in clang-built executables
Summary: Produce palatable build-id in clang-built executables
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: clang (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Arseny Maslennikov
QA Contact: qa-sisyphus
URL: https://lore.altlinux.org/devel/ZRS1K...
Keywords:
Depends on:
Blocks: 46625
  Show dependency tree
 
Reported: 2023-09-28 20:51 MSK by Arseny Maslennikov
Modified: 2023-10-01 19:18 MSK (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Arseny Maslennikov 2023-09-28 20:51:35 MSK
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 (именно так, чтобы все возможные линкеры поняли, что от них требуется).
Comment 1 Repository Robot 2023-10-01 19:13:53 MSK
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.
Comment 2 AEN 2023-10-01 19:18:46 MSK
Спасибо!