[Buildroot] [PATCH v2 07/14] toolchain/toolchain-external: add BR2_TOOLCHAIN_EXTERNAL_HAS_NO_GDBSERVER option

Arnout Vandecappelle arnout at mind.be
Tue Jun 14 15:34:20 UTC 2022



On 08/06/2022 09:10, Thomas Petazzoni via buildroot wrote:
> Some external toolchains do not have gdbserver available, but the
> option BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY is always visible. And
> when enabled, this option aborts with an error when gdbserver cannot
> be found:
> 
>    Could not find gdbserver in external toolchain
> 
> Due to that, some random configurations fail to build when
> BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY=y, for example with the Bootlin
> toolchains for Microblaze or OpenRISC (because there's no GDB support
> for those architectures).
> 
> One solution could be to make "Could not find gdbserver in external
> toolchain" a warning instead of a hard error, but then nobody would
> notice about this issue, in cases where it should legitimately abort
> with a hard error.
> 
> So, the clean solution would be to add a
> BR2_TOOLCHAIN_EXTERNAL_HAS_GDBSERVER. But that means all existing
> external toolchains would have to be modified to select this option.
> 
> Instead, and as an exception, we chose to use inverted logic, and
> create an option that is the opposite:
> BR2_TOOLCHAIN_EXTERNAL_HAS_NO_GDBSERVER. By default, we assume
> external toolchains have gdbserver. If
> BR2_TOOLCHAIN_EXTERNAL_HAS_NO_GDBSERVER is enabled, we disallow the
> BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY option.
> 
> Note that the case of custom external toolchain does not matter: by
> definition they are not tested by the autobuilders, and by definition,
> we cannot now in menuconfig if the custom toolchain has or does not
> have gdbserver.
> 
> This will help fixing:
> 
>    http://autobuild.buildroot.net/results/6315ef7b66ee4ae8f870c92186bc674d65f62f2c/
> 
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni at bootlin.com>
> ---
> Note: if you want me to go with the positive logic option
> BR2_TOOLCHAIN_EXTERNAL_HAS_GDBSERVER, I'll be happy to provide the
> patches.
> ---
>   toolchain/toolchain-external/Config.in | 4 ++++
>   1 file changed, 4 insertions(+)
> 
> diff --git a/toolchain/toolchain-external/Config.in b/toolchain/toolchain-external/Config.in
> index 2177e6a678..1a67e5645f 100644
> --- a/toolchain/toolchain-external/Config.in
> +++ b/toolchain/toolchain-external/Config.in
> @@ -155,9 +155,13 @@ source "toolchain/toolchain-external/toolchain-external-bootlin/Config.in.option
>   # Custom toolchains
>   source "toolchain/toolchain-external/toolchain-external-custom/Config.in.options"
>   
> +config BR2_TOOLCHAIN_EXTERNAL_HAS_NO_GDBSERVER
> +	bool
> +
>   config BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY
>   	bool "Copy gdb server to the Target"
>   	depends on BR2_TOOLCHAIN_EXTERNAL
> +	depends on !BR2_TOOLCHAIN_EXTERNAL_HAS_NO_GDBSERVER

  This could have been simplified to

	depends on BR2_PACKAGE_GDB_ARCH_SUPPORTS

but this way is more flexible so better I guess.

  Regards,
  Arnout

>   	help
>   	  Copy the gdbserver provided by the external toolchain to the
>   	  target.



More information about the buildroot mailing list