Message ID | 20230329161852.84992-1-philmd@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | gdbstub: Only build libgdb_user.fa / libgdb_softmmu.fa if necessary | expand |
On 3/29/23 09:18, Philippe Mathieu-Daudé wrote: > It is pointless to build libgdb_user.fa in a system-only build > (or libgdb_softmmu.fa in a user-only build). Besides, in some > restricted build configurations, some APIs might be restricted / > not available. Example in a KVM-only builds where TCG is disabled: > > $ ninja qemu-system-x86_64 > [99/2187] Compiling C object gdbstub/libgdb_user.fa.p/user.c.o > FAILED: gdbstub/libgdb_user.fa.p/user.c.o > ../../gdbstub/user.c: In function ‘gdb_breakpoint_insert’: > ../../gdbstub/user.c:438:19: error: implicit declaration of function ‘cpu_breakpoint_insert’; did you mean ‘gdb_breakpoint_insert’? [-Werror=implicit-function-declaration] > 438 | err = cpu_breakpoint_insert(cpu, addr, BP_GDB, NULL); > | ^~~~~~~~~~~~~~~~~~~~~ > | gdb_breakpoint_insert > ../../gdbstub/user.c:438:19: error: nested extern declaration of ‘cpu_breakpoint_insert’ [-Werror=nested-externs] > ../../gdbstub/user.c: In function ‘gdb_breakpoint_remove’: > ../../gdbstub/user.c:459:19: error: implicit declaration of function ‘cpu_breakpoint_remove’; did you mean ‘gdb_breakpoint_remove’? [-Werror=implicit-function-declaration] > 459 | err = cpu_breakpoint_remove(cpu, addr, BP_GDB); > | ^~~~~~~~~~~~~~~~~~~~~ > | gdb_breakpoint_remove > ../../gdbstub/user.c:459:19: error: nested extern declaration of ‘cpu_breakpoint_remove’ [-Werror=nested-externs] > cc1: all warnings being treated as errors > ninja: build stopped: subcommand failed. > > Fixes: 61b2e136db ("gdbstub: only compile gdbstub twice for whole build") > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > --- Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~ > gdbstub/meson.build | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/gdbstub/meson.build b/gdbstub/meson.build > index bd5c5cd67d..cdb4d28691 100644 > --- a/gdbstub/meson.build > +++ b/gdbstub/meson.build > @@ -20,11 +20,13 @@ gdb_softmmu_ss = gdb_softmmu_ss.apply(config_host, strict: false) > libgdb_user = static_library('gdb_user', > gdb_user_ss.sources() + genh, > name_suffix: 'fa', > - c_args: '-DCONFIG_USER_ONLY') > + c_args: '-DCONFIG_USER_ONLY', > + build_by_default: have_user) > > libgdb_softmmu = static_library('gdb_softmmu', > gdb_softmmu_ss.sources() + genh, > - name_suffix: 'fa') > + name_suffix: 'fa', > + build_by_default: have_system) > > gdb_user = declare_dependency(link_whole: libgdb_user) > user_ss.add(gdb_user)
Philippe Mathieu-Daudé <philmd@linaro.org> writes: > It is pointless to build libgdb_user.fa in a system-only build > (or libgdb_softmmu.fa in a user-only build). Besides, in some > restricted build configurations, some APIs might be restricted / > not available. Example in a KVM-only builds where TCG is disabled: > > $ ninja qemu-system-x86_64 > [99/2187] Compiling C object gdbstub/libgdb_user.fa.p/user.c.o > FAILED: gdbstub/libgdb_user.fa.p/user.c.o > ../../gdbstub/user.c: In function ‘gdb_breakpoint_insert’: > ../../gdbstub/user.c:438:19: error: implicit declaration of function ‘cpu_breakpoint_insert’; did you mean ‘gdb_breakpoint_insert’? [-Werror=implicit-function-declaration] > 438 | err = cpu_breakpoint_insert(cpu, addr, BP_GDB, NULL); > | ^~~~~~~~~~~~~~~~~~~~~ > | gdb_breakpoint_insert > ../../gdbstub/user.c:438:19: error: nested extern declaration of > ‘cpu_breakpoint_insert’ [-Werror=nested-externs] > ../../gdbstub/user.c: In function ‘gdb_breakpoint_remove’: > ../../gdbstub/user.c:459:19: error: implicit declaration of function > ‘cpu_breakpoint_remove’; did you mean ‘gdb_breakpoint_remove’? > [-Werror=implicit-function-declaration] > 459 | err = cpu_breakpoint_remove(cpu, addr, BP_GDB); > | ^~~~~~~~~~~~~~~~~~~~~ > | gdb_breakpoint_remove > ../../gdbstub/user.c:459:19: error: nested extern declaration of ‘cpu_breakpoint_remove’ [-Werror=nested-externs] > cc1: all warnings being treated as errors > ninja: build stopped: subcommand failed. > > Fixes: 61b2e136db ("gdbstub: only compile gdbstub twice for whole build") > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Queued to for-8.0/more-misc-fixes, thanks.
diff --git a/gdbstub/meson.build b/gdbstub/meson.build index bd5c5cd67d..cdb4d28691 100644 --- a/gdbstub/meson.build +++ b/gdbstub/meson.build @@ -20,11 +20,13 @@ gdb_softmmu_ss = gdb_softmmu_ss.apply(config_host, strict: false) libgdb_user = static_library('gdb_user', gdb_user_ss.sources() + genh, name_suffix: 'fa', - c_args: '-DCONFIG_USER_ONLY') + c_args: '-DCONFIG_USER_ONLY', + build_by_default: have_user) libgdb_softmmu = static_library('gdb_softmmu', gdb_softmmu_ss.sources() + genh, - name_suffix: 'fa') + name_suffix: 'fa', + build_by_default: have_system) gdb_user = declare_dependency(link_whole: libgdb_user) user_ss.add(gdb_user)
It is pointless to build libgdb_user.fa in a system-only build (or libgdb_softmmu.fa in a user-only build). Besides, in some restricted build configurations, some APIs might be restricted / not available. Example in a KVM-only builds where TCG is disabled: $ ninja qemu-system-x86_64 [99/2187] Compiling C object gdbstub/libgdb_user.fa.p/user.c.o FAILED: gdbstub/libgdb_user.fa.p/user.c.o ../../gdbstub/user.c: In function ‘gdb_breakpoint_insert’: ../../gdbstub/user.c:438:19: error: implicit declaration of function ‘cpu_breakpoint_insert’; did you mean ‘gdb_breakpoint_insert’? [-Werror=implicit-function-declaration] 438 | err = cpu_breakpoint_insert(cpu, addr, BP_GDB, NULL); | ^~~~~~~~~~~~~~~~~~~~~ | gdb_breakpoint_insert ../../gdbstub/user.c:438:19: error: nested extern declaration of ‘cpu_breakpoint_insert’ [-Werror=nested-externs] ../../gdbstub/user.c: In function ‘gdb_breakpoint_remove’: ../../gdbstub/user.c:459:19: error: implicit declaration of function ‘cpu_breakpoint_remove’; did you mean ‘gdb_breakpoint_remove’? [-Werror=implicit-function-declaration] 459 | err = cpu_breakpoint_remove(cpu, addr, BP_GDB); | ^~~~~~~~~~~~~~~~~~~~~ | gdb_breakpoint_remove ../../gdbstub/user.c:459:19: error: nested extern declaration of ‘cpu_breakpoint_remove’ [-Werror=nested-externs] cc1: all warnings being treated as errors ninja: build stopped: subcommand failed. Fixes: 61b2e136db ("gdbstub: only compile gdbstub twice for whole build") Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- gdbstub/meson.build | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)