diff mbox series

[for-next,1/2] package/gdb: enable gdbserver support for riscv

Message ID 20210606150351.423542-1-romain.naour@gmail.com
State Changes Requested
Headers show
Series [for-next,1/2] package/gdb: enable gdbserver support for riscv | expand

Commit Message

Romain Naour June 6, 2021, 3:03 p.m. UTC
It turn out that gdbserver support for riscv is available since 10.1 release, since commit [1]

When BR2_PACKAGE_HOST_GDB_ARCH_SUPPORTS is not enabled, gdb will use the stable version (9.x)
where gdbserver for riscv is not available.

When BR2_PACKAGE_HOST_GDB_ARCH_SUPPORTS enabled, only allow gdb 10.1 in version choice and
allow enabling gdbserver for the target.

[1] https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=bf84f7066626c78884436e1c39fb60f04c665f21

Signed-off-by: Romain Naour <romain.naour@gmail.com>
---
git tag --contains bf84f7066626c78884436e1c39fb60f04c665f21
returns gdb-10.1-release tag as the oldest containing this commit.
---
 package/gdb/Config.in      | 6 +++---
 package/gdb/Config.in.host | 3 ++-
 2 files changed, 5 insertions(+), 4 deletions(-)

Comments

Alistair Francis June 6, 2021, 10:53 p.m. UTC | #1
On Mon, Jun 7, 2021 at 1:04 AM Romain Naour <romain.naour@gmail.com> wrote:
>
> It turn out that gdbserver support for riscv is available since 10.1 release, since commit [1]
>
> When BR2_PACKAGE_HOST_GDB_ARCH_SUPPORTS is not enabled, gdb will use the stable version (9.x)
> where gdbserver for riscv is not available.
>
> When BR2_PACKAGE_HOST_GDB_ARCH_SUPPORTS enabled, only allow gdb 10.1 in version choice and
> allow enabling gdbserver for the target.
>
> [1] https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=bf84f7066626c78884436e1c39fb60f04c665f21
>
> Signed-off-by: Romain Naour <romain.naour@gmail.com>

Reviewed-by: Alistair Francis <alistair.francis@wdc.com>

Alistair

> ---
> git tag --contains bf84f7066626c78884436e1c39fb60f04c665f21
> returns gdb-10.1-release tag as the oldest containing this commit.
> ---
>  package/gdb/Config.in      | 6 +++---
>  package/gdb/Config.in.host | 3 ++-
>  2 files changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/package/gdb/Config.in b/package/gdb/Config.in
> index 262740fc4c..68a24e0b36 100644
> --- a/package/gdb/Config.in
> +++ b/package/gdb/Config.in
> @@ -19,8 +19,8 @@ config BR2_PACKAGE_GDB
>         depends on BR2_PACKAGE_GDB_ARCH_SUPPORTS
>         depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
>         depends on BR2_INSTALL_LIBSTDCPP
> -       # no gdbserver on riscv
> -       select BR2_PACKAGE_GDB_DEBUGGER if BR2_riscv
> +       # no gdbserver on riscv until 10.1 release
> +       select BR2_PACKAGE_GDB_DEBUGGER if BR2_riscv && !BR2_GDB_VERSION_10
>         # When the external toolchain gdbserver is copied to the
>         # target, we don't allow building a separate gdbserver. The
>         # one from the external toolchain should be used.
> @@ -47,7 +47,7 @@ if BR2_PACKAGE_GDB
>  config BR2_PACKAGE_GDB_SERVER
>         bool "gdbserver"
>         depends on !BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY
> -       depends on !BR2_riscv
> +       depends on !BR2_riscv || BR2_riscv && BR2_GDB_VERSION_10
>         help
>           Build the gdbserver stub to run on the target.
>           A full gdb is needed to debug the progam.
> diff --git a/package/gdb/Config.in.host b/package/gdb/Config.in.host
> index 07e75b2c0e..5aead236d0 100644
> --- a/package/gdb/Config.in.host
> +++ b/package/gdb/Config.in.host
> @@ -4,7 +4,6 @@ config BR2_PACKAGE_HOST_GDB_ARCH_SUPPORTS
>         depends on !((BR2_arm || BR2_armeb) && BR2_BINFMT_FLAT)
>         depends on !BR2_microblaze
>         depends on !BR2_or1k
> -       depends on !BR2_riscv
>         depends on !BR2_nds32
>
>  comment "Host GDB Options"
> @@ -70,9 +69,11 @@ choice
>
>  config BR2_GDB_VERSION_8_3
>         bool "gdb 8.3.x"
> +       depends on !BR2_riscv
>
>  config BR2_GDB_VERSION_9_2
>         bool "gdb 9.2.x"
> +       depends on !BR2_riscv
>
>  config BR2_GDB_VERSION_10
>         bool "gdb 10.x"
> --
> 2.31.1
>
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
Arnout Vandecappelle June 13, 2021, 10:19 a.m. UTC | #2
On 06/06/2021 17:03, Romain Naour wrote:
> It turn out that gdbserver support for riscv is available since 10.1 release, since commit [1]
> 
> When BR2_PACKAGE_HOST_GDB_ARCH_SUPPORTS is not enabled, gdb will use the stable version (9.x)
> where gdbserver for riscv is not available.
> 
> When BR2_PACKAGE_HOST_GDB_ARCH_SUPPORTS enabled, only allow gdb 10.1 in version choice and
> allow enabling gdbserver for the target.

 Instead of all this complexity, I think it would be easier to just force gdb to
version 10 on riscv:

config BR2_GDB_VERSION
        string
        default "arc-2020.09-release-gdb" if BR2_arc
        default "4ecb98fbc2f94dbe01b69384afbc515107de73df" if BR2_csky
        default "8.3.1"    if BR2_GDB_VERSION_8_3
        default "9.2"      if BR2_GDB_VERSION_9_2 || (!BR2_PACKAGE_HOST_GDB &&
!BR2_riscv)
        default "10.1"     if BR2_GDB_VERSION_10 || (!BR2_PACKAGE_HOST_GDB &&
BR2_riscv)
        depends on BR2_PACKAGE_GDB || BR2_PACKAGE_HOST_GDB

 IMHO that will make the maintainance easier going forward: when 10 becomes the
default, we can simply drop the riscv condition and nothing more needs to be done.

 Marked as Changes Requested.

 Regards,
 Arnout

> 
> [1] https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=bf84f7066626c78884436e1c39fb60f04c665f21
> 
> Signed-off-by: Romain Naour <romain.naour@gmail.com>
> ---
> git tag --contains bf84f7066626c78884436e1c39fb60f04c665f21
> returns gdb-10.1-release tag as the oldest containing this commit.
> ---
>  package/gdb/Config.in      | 6 +++---
>  package/gdb/Config.in.host | 3 ++-
>  2 files changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/package/gdb/Config.in b/package/gdb/Config.in
> index 262740fc4c..68a24e0b36 100644
> --- a/package/gdb/Config.in
> +++ b/package/gdb/Config.in
> @@ -19,8 +19,8 @@ config BR2_PACKAGE_GDB
>  	depends on BR2_PACKAGE_GDB_ARCH_SUPPORTS
>  	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
>  	depends on BR2_INSTALL_LIBSTDCPP
> -	# no gdbserver on riscv
> -	select BR2_PACKAGE_GDB_DEBUGGER if BR2_riscv
> +	# no gdbserver on riscv until 10.1 release
> +	select BR2_PACKAGE_GDB_DEBUGGER if BR2_riscv && !BR2_GDB_VERSION_10
>  	# When the external toolchain gdbserver is copied to the
>  	# target, we don't allow building a separate gdbserver. The
>  	# one from the external toolchain should be used.
> @@ -47,7 +47,7 @@ if BR2_PACKAGE_GDB
>  config BR2_PACKAGE_GDB_SERVER
>  	bool "gdbserver"
>  	depends on !BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY
> -	depends on !BR2_riscv
> +	depends on !BR2_riscv || BR2_riscv && BR2_GDB_VERSION_10
>  	help
>  	  Build the gdbserver stub to run on the target.
>  	  A full gdb is needed to debug the progam.
> diff --git a/package/gdb/Config.in.host b/package/gdb/Config.in.host
> index 07e75b2c0e..5aead236d0 100644
> --- a/package/gdb/Config.in.host
> +++ b/package/gdb/Config.in.host
> @@ -4,7 +4,6 @@ config BR2_PACKAGE_HOST_GDB_ARCH_SUPPORTS
>  	depends on !((BR2_arm || BR2_armeb) && BR2_BINFMT_FLAT)
>  	depends on !BR2_microblaze
>  	depends on !BR2_or1k
> -	depends on !BR2_riscv
>  	depends on !BR2_nds32
>  
>  comment "Host GDB Options"
> @@ -70,9 +69,11 @@ choice
>  
>  config BR2_GDB_VERSION_8_3
>  	bool "gdb 8.3.x"
> +	depends on !BR2_riscv
>  
>  config BR2_GDB_VERSION_9_2
>  	bool "gdb 9.2.x"
> +	depends on !BR2_riscv
>  
>  config BR2_GDB_VERSION_10
>  	bool "gdb 10.x"
>
Romain Naour June 13, 2021, 10:54 a.m. UTC | #3
Hello Arnout,

Le 13/06/2021 à 12:19, Arnout Vandecappelle a écrit :
> 
> 
> On 06/06/2021 17:03, Romain Naour wrote:
>> It turn out that gdbserver support for riscv is available since 10.1 release, since commit [1]
>>
>> When BR2_PACKAGE_HOST_GDB_ARCH_SUPPORTS is not enabled, gdb will use the stable version (9.x)
>> where gdbserver for riscv is not available.
>>
>> When BR2_PACKAGE_HOST_GDB_ARCH_SUPPORTS enabled, only allow gdb 10.1 in version choice and
>> allow enabling gdbserver for the target.
> 
>  Instead of all this complexity, I think it would be easier to just force gdb to
> version 10 on riscv:
> 
> config BR2_GDB_VERSION
>         string
>         default "arc-2020.09-release-gdb" if BR2_arc
>         default "4ecb98fbc2f94dbe01b69384afbc515107de73df" if BR2_csky
>         default "8.3.1"    if BR2_GDB_VERSION_8_3
>         default "9.2"      if BR2_GDB_VERSION_9_2 || (!BR2_PACKAGE_HOST_GDB &&
> !BR2_riscv)
>         default "10.1"     if BR2_GDB_VERSION_10 || (!BR2_PACKAGE_HOST_GDB &&
> BR2_riscv)
>         depends on BR2_PACKAGE_GDB || BR2_PACKAGE_HOST_GDB
> 
>  IMHO that will make the maintainance easier going forward: when 10 becomes the
> default, we can simply drop the riscv condition and nothing more needs to be done.

I was not sure about restrict the gdb version for riscv just because gdb 10.1
can provide gdbserver.

Alistair, is it ok for you if we only provide gdb 10.1 ?

Best regards,
Romain


> 
>  Marked as Changes Requested.
> 
>  Regards,
>  Arnout
>
Arnout Vandecappelle June 13, 2021, 4:33 p.m. UTC | #4
On 13/06/2021 12:54, Romain Naour wrote:
> Hello Arnout,
> 
> Le 13/06/2021 à 12:19, Arnout Vandecappelle a écrit :
>>
>>
>> On 06/06/2021 17:03, Romain Naour wrote:
>>> It turn out that gdbserver support for riscv is available since 10.1 release, since commit [1]
>>>
>>> When BR2_PACKAGE_HOST_GDB_ARCH_SUPPORTS is not enabled, gdb will use the stable version (9.x)
>>> where gdbserver for riscv is not available.
>>>
>>> When BR2_PACKAGE_HOST_GDB_ARCH_SUPPORTS enabled, only allow gdb 10.1 in version choice and
>>> allow enabling gdbserver for the target.
>>
>>  Instead of all this complexity, I think it would be easier to just force gdb to
>> version 10 on riscv:
>>
>> config BR2_GDB_VERSION
>>         string
>>         default "arc-2020.09-release-gdb" if BR2_arc
>>         default "4ecb98fbc2f94dbe01b69384afbc515107de73df" if BR2_csky
>>         default "8.3.1"    if BR2_GDB_VERSION_8_3
>>         default "9.2"      if BR2_GDB_VERSION_9_2 || (!BR2_PACKAGE_HOST_GDB &&
>> !BR2_riscv)
>>         default "10.1"     if BR2_GDB_VERSION_10 || (!BR2_PACKAGE_HOST_GDB &&
>> BR2_riscv)
>>         depends on BR2_PACKAGE_GDB || BR2_PACKAGE_HOST_GDB
>>
>>  IMHO that will make the maintainance easier going forward: when 10 becomes the
>> default, we can simply drop the riscv condition and nothing more needs to be done.
> 
> I was not sure about restrict the gdb version for riscv just because gdb 10.1
> can provide gdbserver.

 Wow, hang on, I apparently misunderstood something here...

 Now I see... It's just gdbserver that wasn't available before 10.1.
gdb-on-target was already available.. In that case, my simplification doesn't
apply indeed.

 Although... My suggestion just means that for riscv, we always use gdb 10.1 (on
target) instead of gdb 9. I don't see a big problem with that. Note that for gdb
for target, we never had a version selection. So the only thing that happens is
that riscv now already uses a gdb 10 on target, while the rest will only start
using gdb 10 on target a few months from now when gdb 11 is released. Honestly,
I think that's fine.

 Regards,
 Arnout

> 
> Alistair, is it ok for you if we only provide gdb 10.1 ?
> 
> Best regards,
> Romain
> 
> 
>>
>>  Marked as Changes Requested.
>>
>>  Regards,
>>  Arnout
>>
Alistair Francis June 15, 2021, 8:07 a.m. UTC | #5
On Mon, Jun 14, 2021 at 2:33 AM Arnout Vandecappelle <arnout@mind.be> wrote:
>
>
>
> On 13/06/2021 12:54, Romain Naour wrote:
> > Hello Arnout,
> >
> > Le 13/06/2021 à 12:19, Arnout Vandecappelle a écrit :
> >>
> >>
> >> On 06/06/2021 17:03, Romain Naour wrote:
> >>> It turn out that gdbserver support for riscv is available since 10.1 release, since commit [1]
> >>>
> >>> When BR2_PACKAGE_HOST_GDB_ARCH_SUPPORTS is not enabled, gdb will use the stable version (9.x)
> >>> where gdbserver for riscv is not available.
> >>>
> >>> When BR2_PACKAGE_HOST_GDB_ARCH_SUPPORTS enabled, only allow gdb 10.1 in version choice and
> >>> allow enabling gdbserver for the target.
> >>
> >>  Instead of all this complexity, I think it would be easier to just force gdb to
> >> version 10 on riscv:
> >>
> >> config BR2_GDB_VERSION
> >>         string
> >>         default "arc-2020.09-release-gdb" if BR2_arc
> >>         default "4ecb98fbc2f94dbe01b69384afbc515107de73df" if BR2_csky
> >>         default "8.3.1"    if BR2_GDB_VERSION_8_3
> >>         default "9.2"      if BR2_GDB_VERSION_9_2 || (!BR2_PACKAGE_HOST_GDB &&
> >> !BR2_riscv)
> >>         default "10.1"     if BR2_GDB_VERSION_10 || (!BR2_PACKAGE_HOST_GDB &&
> >> BR2_riscv)
> >>         depends on BR2_PACKAGE_GDB || BR2_PACKAGE_HOST_GDB
> >>
> >>  IMHO that will make the maintainance easier going forward: when 10 becomes the
> >> default, we can simply drop the riscv condition and nothing more needs to be done.
> >
> > I was not sure about restrict the gdb version for riscv just because gdb 10.1
> > can provide gdbserver.
>
>  Wow, hang on, I apparently misunderstood something here...
>
>  Now I see... It's just gdbserver that wasn't available before 10.1.
> gdb-on-target was already available.. In that case, my simplification doesn't
> apply indeed.
>
>  Although... My suggestion just means that for riscv, we always use gdb 10.1 (on
> target) instead of gdb 9. I don't see a big problem with that. Note that for gdb
> for target, we never had a version selection. So the only thing that happens is
> that riscv now already uses a gdb 10 on target, while the rest will only start
> using gdb 10 on target a few months from now when gdb 11 is released. Honestly,
> I think that's fine.

Agreed. I think it's best to just support GDB 10.1.

>
>  Regards,
>  Arnout
>
> >
> > Alistair, is it ok for you if we only provide gdb 10.1 ?

Yep! I think that's the best plan of action here. From memory GDB 10.1
has some useful fixes for RISC-V anyway.

Alistair

> >
> > Best regards,
> > Romain
> >
> >
> >>
> >>  Marked as Changes Requested.
> >>
> >>  Regards,
> >>  Arnout
> >>
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
Romain Naour June 17, 2021, 9:08 p.m. UTC | #6
Hello Alistair, Arnout, All,

Le 15/06/2021 à 10:07, Alistair Francis a écrit :
> On Mon, Jun 14, 2021 at 2:33 AM Arnout Vandecappelle <arnout@mind.be> wrote:
>>
>>
>>
>> On 13/06/2021 12:54, Romain Naour wrote:
>>> Hello Arnout,
>>>
>>> Le 13/06/2021 à 12:19, Arnout Vandecappelle a écrit :
>>>>
>>>>
>>>> On 06/06/2021 17:03, Romain Naour wrote:
>>>>> It turn out that gdbserver support for riscv is available since 10.1 release, since commit [1]
>>>>>
>>>>> When BR2_PACKAGE_HOST_GDB_ARCH_SUPPORTS is not enabled, gdb will use the stable version (9.x)
>>>>> where gdbserver for riscv is not available.
>>>>>
>>>>> When BR2_PACKAGE_HOST_GDB_ARCH_SUPPORTS enabled, only allow gdb 10.1 in version choice and
>>>>> allow enabling gdbserver for the target.
>>>>
>>>>  Instead of all this complexity, I think it would be easier to just force gdb to
>>>> version 10 on riscv:
>>>>
>>>> config BR2_GDB_VERSION
>>>>         string
>>>>         default "arc-2020.09-release-gdb" if BR2_arc
>>>>         default "4ecb98fbc2f94dbe01b69384afbc515107de73df" if BR2_csky
>>>>         default "8.3.1"    if BR2_GDB_VERSION_8_3
>>>>         default "9.2"      if BR2_GDB_VERSION_9_2 || (!BR2_PACKAGE_HOST_GDB &&
>>>> !BR2_riscv)
>>>>         default "10.1"     if BR2_GDB_VERSION_10 || (!BR2_PACKAGE_HOST_GDB &&
>>>> BR2_riscv)
>>>>         depends on BR2_PACKAGE_GDB || BR2_PACKAGE_HOST_GDB
>>>>
>>>>  IMHO that will make the maintainance easier going forward: when 10 becomes the
>>>> default, we can simply drop the riscv condition and nothing more needs to be done.
>>>
>>> I was not sure about restrict the gdb version for riscv just because gdb 10.1
>>> can provide gdbserver.
>>
>>  Wow, hang on, I apparently misunderstood something here...
>>
>>  Now I see... It's just gdbserver that wasn't available before 10.1.
>> gdb-on-target was already available.. In that case, my simplification doesn't
>> apply indeed.
>>
>>  Although... My suggestion just means that for riscv, we always use gdb 10.1 (on
>> target) instead of gdb 9. I don't see a big problem with that. Note that for gdb
>> for target, we never had a version selection. So the only thing that happens is
>> that riscv now already uses a gdb 10 on target, while the rest will only start
>> using gdb 10 on target a few months from now when gdb 11 is released. Honestly,
>> I think that's fine.
> 
> Agreed. I think it's best to just support GDB 10.1.
> 
>>
>>  Regards,
>>  Arnout
>>
>>>
>>> Alistair, is it ok for you if we only provide gdb 10.1 ?
> 
> Yep! I think that's the best plan of action here. From memory GDB 10.1
> has some useful fixes for RISC-V anyway.

Ok, thanks for the feedback.

Best regards,
Romain


> 
> Alistair
> 
>>>
>>> Best regards,
>>> Romain
>>>
>>>
>>>>
>>>>  Marked as Changes Requested.
>>>>
>>>>  Regards,
>>>>  Arnout
>>>>
>> _______________________________________________
>> buildroot mailing list
>> buildroot@busybox.net
>> http://lists.busybox.net/mailman/listinfo/buildroot
diff mbox series

Patch

diff --git a/package/gdb/Config.in b/package/gdb/Config.in
index 262740fc4c..68a24e0b36 100644
--- a/package/gdb/Config.in
+++ b/package/gdb/Config.in
@@ -19,8 +19,8 @@  config BR2_PACKAGE_GDB
 	depends on BR2_PACKAGE_GDB_ARCH_SUPPORTS
 	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
 	depends on BR2_INSTALL_LIBSTDCPP
-	# no gdbserver on riscv
-	select BR2_PACKAGE_GDB_DEBUGGER if BR2_riscv
+	# no gdbserver on riscv until 10.1 release
+	select BR2_PACKAGE_GDB_DEBUGGER if BR2_riscv && !BR2_GDB_VERSION_10
 	# When the external toolchain gdbserver is copied to the
 	# target, we don't allow building a separate gdbserver. The
 	# one from the external toolchain should be used.
@@ -47,7 +47,7 @@  if BR2_PACKAGE_GDB
 config BR2_PACKAGE_GDB_SERVER
 	bool "gdbserver"
 	depends on !BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY
-	depends on !BR2_riscv
+	depends on !BR2_riscv || BR2_riscv && BR2_GDB_VERSION_10
 	help
 	  Build the gdbserver stub to run on the target.
 	  A full gdb is needed to debug the progam.
diff --git a/package/gdb/Config.in.host b/package/gdb/Config.in.host
index 07e75b2c0e..5aead236d0 100644
--- a/package/gdb/Config.in.host
+++ b/package/gdb/Config.in.host
@@ -4,7 +4,6 @@  config BR2_PACKAGE_HOST_GDB_ARCH_SUPPORTS
 	depends on !((BR2_arm || BR2_armeb) && BR2_BINFMT_FLAT)
 	depends on !BR2_microblaze
 	depends on !BR2_or1k
-	depends on !BR2_riscv
 	depends on !BR2_nds32
 
 comment "Host GDB Options"
@@ -70,9 +69,11 @@  choice
 
 config BR2_GDB_VERSION_8_3
 	bool "gdb 8.3.x"
+	depends on !BR2_riscv
 
 config BR2_GDB_VERSION_9_2
 	bool "gdb 9.2.x"
+	depends on !BR2_riscv
 
 config BR2_GDB_VERSION_10
 	bool "gdb 10.x"