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 > >