diff mbox series

gdbstub: Only build libgdb_user.fa / libgdb_softmmu.fa if necessary

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

Commit Message

Philippe Mathieu-Daudé March 29, 2023, 4:18 p.m. UTC
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(-)

Comments

Richard Henderson March 29, 2023, 4:39 p.m. UTC | #1
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)
Alex Bennée March 29, 2023, 5:03 p.m. UTC | #2
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 mbox series

Patch

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)