Il ven 7 mar 2025, 16:17 Alex Bennée <alex.ben...@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.ben...@linaro.org>
> Reviewed-by: Daniel P. Berrangé <berra...@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
>
>

Reply via email to