From: Dominique Martinet <asmadeus@codewreck.org>
To: acme@kernel.org
Cc: andrii.nakryiko@gmail.com, dwarves@vger.kernel.org,
jolsa@kernel.org, williams@redhat.com, kcarcia@redhat.com,
dxu@dxuuu.xyz, eddyz87@gmail.com,
Dominique Martinet <asmadeus@codewreck.org>
Subject: [PATCH dwarves] pahole: enable --reproducible_build when SOURCE_DATE_EPOCH is set
Date: Wed, 26 Jun 2024 12:22:53 +0900 [thread overview]
Message-ID: <20240626032253.3406460-1-asmadeus@codewreck.org> (raw)
The SOURCE_DATE_EPOCH environment variable is used in reproducible
builds to set build timestamps and is generally synonymous with
reproducible builds: instead of making users figure out how to pass
pahole flags (e.g. explicitly setting PAHOLE_FLAGS in linux) just assume
that the user wants a reproducible build if this variable is set.
The impact on build time appears to be minimal enough even if we
incorrectly make this decision (on a Ryzen 7 7735HS):
$ hyperfine 'sh pahole-test -j --reproducible_build' 'sh pahole-test -j1' 'sh pahole-test -j' -p 'cp .tmp_vmlinux.orig .tmp_vmlinux.btf' -m 4
Benchmark 1: sh pahole-test -j --reproducible_build
Time (mean ± σ): 3.991 s ± 0.045 s [User: 7.223 s, System: 3.741 s]
Range (min … max): 3.950 s … 4.042 s 4 runs
Benchmark 2: sh pahole-test -j1
Time (mean ± σ): 7.083 s ± 0.095 s [User: 4.805 s, System: 2.242 s]
Range (min … max): 6.964 s … 7.191 s 4 runs
Benchmark 3: sh pahole-test -j
Time (mean ± σ): 3.858 s ± 0.089 s [User: 13.447 s, System: 7.078 s]
Range (min … max): 3.763 s … 3.978 s 4 runs
Summary
sh pahole-test -j ran
1.03 ± 0.03 times faster than sh pahole-test -j --reproducible_build
1.84 ± 0.05 times faster than sh pahole-test -j1
Where pahole-test is the pahole command of the linux build (minus -j):
LLVM_OBJCOPY=objcopy pahole -J --btf_gen_floats --lang_exclude=rust --skip_encoding_btf_inconsistent_proto --btf_gen_optimized .tmp_vmlinux.btf "$@"
And .tmp_vmlinux.orig was the .tmp_vmlinux.btf binary before being
processed:
ld -m elf_x86_64 -z noexecstack --no-warn-rwx-segments --emit-relocs --discard-none -z max-page-size=0x200000 --build-id=sha1 --orphan-handling=warn --script=./arch/x86/kernel/vmlinux.lds -o .tmp_vmlinux.btf --whole-archive vmlinux.a .vmlinux.export.o init/version-timestamp.o --no-whole-archive --start-group --end-group
---
I opened this as https://github.com/acmel/dwarves/pull/51 a couple of
weeks ago but I guess sending by e-mail is probably more appropriate.
(I didn't find a MAINTAINERS list or similar so sending to recipients of
a random patch I found, please tell me if I missed someone)
(Note that because --btf_feature init is lazy setting something like
--btf_feature=default could override this if we set it too early, so I'm
only checking the env var after argp parsing)
pahole.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/pahole.c b/pahole.c
index 954498d2ad4f..2b010658330c 100644
--- a/pahole.c
+++ b/pahole.c
@@ -3705,6 +3705,10 @@ int main(int argc, char *argv[])
goto out;
}
+ /* This being set means whoever called us tries to do a reproducible build */
+ if (getenv("SOURCE_DATE_EPOCH"))
+ conf_load.reproducible_build = true;
+
if (languages.str && parse_languages())
return rc;
--
2.44.0
next reply other threads:[~2024-06-26 3:23 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-26 3:22 Dominique Martinet [this message]
2024-06-26 14:29 ` [PATCH dwarves] pahole: enable --reproducible_build when SOURCE_DATE_EPOCH is set Alan Maguire
2024-06-26 23:01 ` Dominique Martinet
2024-06-27 17:25 ` Alan Maguire
2024-06-28 8:31 ` Alan Maguire
2024-06-28 13:59 ` Arnaldo Carvalho de Melo
2024-06-28 19:44 ` Dominique Martinet
2024-07-01 16:44 ` Alan Maguire
2024-07-01 23:35 ` Dominique Martinet
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240626032253.3406460-1-asmadeus@codewreck.org \
--to=asmadeus@codewreck.org \
--cc=acme@kernel.org \
--cc=andrii.nakryiko@gmail.com \
--cc=dwarves@vger.kernel.org \
--cc=dxu@dxuuu.xyz \
--cc=eddyz87@gmail.com \
--cc=jolsa@kernel.org \
--cc=kcarcia@redhat.com \
--cc=williams@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.