[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