From: Paolo Bonzini <pbonzini@redhat.com>
To: "Alex Bennée" <alex.bennee@linaro.org>
Cc: qemu-devel <qemu-devel@nongnu.org>,
"Daniel P . Berrangé" <berrange@redhat.com>,
"Marc-André Lureau" <marcandre.lureau@redhat.com>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>
Subject: Re: [PATCH v4] meson.build: default to -gsplit-dwarf for debug info
Date: Fri, 7 Mar 2025 17:34:50 +0100 [thread overview]
Message-ID: <CABgObfZjftWtFcp6soMijA2mfKTnnh7Oq85oGkMCJf=fjajLaw@mail.gmail.com> (raw)
In-Reply-To: <20250307151703.2564073-1-alex.bennee@linaro.org>
[-- Attachment #1: Type: text/plain, Size: 3719 bytes --]
Il ven 7 mar 2025, 16:17 Alex Bennée <alex.bennee@linaro.org> ha scritto:
> This option is supported by both gcc (since 4.7) and clang (since
> 7.0). Not only does this make the linkers job easier by reducing the
> amount of ELF it needs to parse it also reduces the total build size
> quite considerably. In my case a default build went from 5.8G to
> 3.9G (vs 1.9G for --disable-debug-info).
>
> The --disable-split-debug option allows distros to keep all the info
> together for ease of packaging.
>
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
>
Queued, thanks.
Paolo
> ---
> v1
> - add --disable/enable-split-debug
> - move to option_cflags
> v2
> - removed unneeded []'s
> - fix stray whitespace
> v3
> - set qemu_cflags instead of option_cflags
> - move up to the rest of the qemu_cflag setting code
> - update build size numbers with --disable-debug-info
> v4
> - we don't need to pass -g, due to meson doing it under the hood
> - add comment around option_cflags to make mesons roll clear
> ---
> meson.build | 6 ++++++
> meson_options.txt | 2 ++
> scripts/meson-buildoptions.sh | 2 ++
> 3 files changed, 10 insertions(+)
>
> diff --git a/meson.build b/meson.build
> index 8d0abe7f12..a8db76fccc 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -601,6 +601,10 @@ if get_option('tsan')
> qemu_ldflags = ['-fsanitize=thread'] + qemu_ldflags
> endif
>
> +if get_option('debug') and get_option('split_debug')
> + qemu_cflags += '-gsplit-dwarf'
> +endif
> +
> # Detect support for PT_GNU_RELRO + DT_BIND_NOW.
> # The combination is known as "full relro", because .got.plt is read-only
> too.
> qemu_ldflags += cc.get_supported_link_arguments('-Wl,-z,relro',
> '-Wl,-z,now')
> @@ -4589,6 +4593,8 @@ if have_rust
> summary_info += {'bindgen': bindgen.full_path()}
> summary_info += {'bindgen version': bindgen.version()}
> endif
> +# option_cflags is purely for the summary display, meson will pass
> +# -g/-O options directly
> option_cflags = (get_option('debug') ? ['-g'] : [])
> if get_option('optimization') != 'plain'
> option_cflags += ['-O' + get_option('optimization')]
> diff --git a/meson_options.txt b/meson_options.txt
> index 59d973bca0..3432123fee 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -362,6 +362,8 @@ option('debug_mutex', type: 'boolean', value: false,
> description: 'mutex debugging support')
> option('debug_stack_usage', type: 'boolean', value: false,
> description: 'measure coroutine stack usage')
> +option('split_debug', type: 'boolean', value: true,
> + description: 'split debug info from object files')
> option('qom_cast_debug', type: 'boolean', value: true,
> description: 'cast debugging support')
> option('slirp_smbd', type : 'feature', value : 'auto',
> diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh
> index 3e8e00852b..aca6e68830 100644
> --- a/scripts/meson-buildoptions.sh
> +++ b/scripts/meson-buildoptions.sh
> @@ -504,6 +504,8 @@ _meson_option_parse() {
> --disable-strict-rust-lints) printf "%s" -Dstrict_rust_lints=false ;;
> --enable-strip) printf "%s" -Dstrip=true ;;
> --disable-strip) printf "%s" -Dstrip=false ;;
> + --enable-split-debug) printf "%s" -Dsplit_debug=true ;;
> + --disable-split-debug) printf "%s" -Dsplit_debug=false ;;
> --sysconfdir=*) quote_sh "-Dsysconfdir=$2" ;;
> --enable-tcg) printf "%s" -Dtcg=enabled ;;
> --disable-tcg) printf "%s" -Dtcg=disabled ;;
> --
> 2.39.5
>
>
[-- Attachment #2: Type: text/html, Size: 5121 bytes --]
prev parent reply other threads:[~2025-03-07 16:36 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-07 15:17 [PATCH v4] meson.build: default to -gsplit-dwarf for debug info Alex Bennée
2025-03-07 16:34 ` Paolo Bonzini [this message]
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='CABgObfZjftWtFcp6soMijA2mfKTnnh7Oq85oGkMCJf=fjajLaw@mail.gmail.com' \
--to=pbonzini@redhat.com \
--cc=alex.bennee@linaro.org \
--cc=berrange@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=philmd@linaro.org \
--cc=qemu-devel@nongnu.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).