Patchwork gdb: adjust behavior when thread debug is not available

login
register
mail settings
Submitter Thomas Petazzoni
Date May 17, 2012, 2:05 p.m.
Message ID <1337263520-5865-1-git-send-email-thomas.petazzoni@free-electrons.com>
Download mbox | patch
Permalink /patch/159909/
State Superseded
Headers show

Comments

Thomas Petazzoni - May 17, 2012, 2:05 p.m.
When an external toolchain without thread debug is used, the gdb
package can be selected, but no version can be choosen, since none
match any of the requirements. This leads Buildroot to try to build
gdb for the target without a version being defined, as in the
following build log:

 http://autobuild.buildroot.org/results/84e8fd2df0cc22448052a572c2e9a6e03dd137eb/build-end.log

To fix this, we adjust the dependencies of the BR2_PACKAGE_GDB option
so that the package as a whole is not selectable when the required
conditions are not met. Basically, we have the choice of:

 * Having a toolchain that supports thread debugging, which is needed
   for gdb >= 7.x

 * Having BR2_DEPRECATED enabled, which allows gdb 6.8 to be selected,
   which doesn't require thread debugging

 * Using either avr32 of bfin, since those architectures have special
   old gdb versions

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 toolchain/gdb/Config.in |   14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)
Peter Korsgaard - May 17, 2012, 9:54 p.m.
>>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@free-electrons.com> writes:

 Thomas> When an external toolchain without thread debug is used, the gdb
 Thomas> package can be selected, but no version can be choosen, since none
 Thomas> match any of the requirements. This leads Buildroot to try to build
 Thomas> gdb for the target without a version being defined, as in the
 Thomas> following build log:

 Thomas>  http://autobuild.buildroot.org/results/84e8fd2df0cc22448052a572c2e9a6e03dd137eb/build-end.log

 Thomas> To fix this, we adjust the dependencies of the BR2_PACKAGE_GDB option
 Thomas> so that the package as a whole is not selectable when the required
 Thomas> conditions are not met. Basically, we have the choice of:

 Thomas>  * Having a toolchain that supports thread debugging, which is needed
 Thomas>    for gdb >= 7.x

 Thomas>  * Having BR2_DEPRECATED enabled, which allows gdb 6.8 to be selected,
 Thomas>    which doesn't require thread debugging

 Thomas>  * Using either avr32 of bfin, since those architectures have special
 Thomas>    old gdb versions

Thanks, but this conflicts with your recent 'gdb: not available on
avr32' patch. Looking at that patch it seems you can drop the avr32
handling.

Care to fix and resend?
Thomas Petazzoni - May 18, 2012, 6:21 a.m.
Le Thu, 17 May 2012 23:54:06 +0200,
Peter Korsgaard <jacmet@uclibc.org> a écrit :

> Thanks, but this conflicts with your recent 'gdb: not available on
> avr32' patch. Looking at that patch it seems you can drop the avr32
> handling.
> 
> Care to fix and resend?

Will look at it, yes.

Thanks,

Thomas

Patch

diff --git a/toolchain/gdb/Config.in b/toolchain/gdb/Config.in
index c9c54b8..4670b25 100644
--- a/toolchain/gdb/Config.in
+++ b/toolchain/gdb/Config.in
@@ -5,6 +5,15 @@  config BR2_PACKAGE_GDB
 	select BR2_PACKAGE_NCURSES
 	depends on BR2_USE_WCHAR
 	depends on BR2_TOOLCHAIN_HAS_THREADS
+	# The newest versions of gdb require thread debugging in the
+	# toolchain. The only cases for which this is not needed is if
+	# we use gdb 6.8 (marked deprecated), or old versions (as is
+	# the case for bfin and avr32 architectures)
+	depends on \
+		BR2_TOOLCHAIN_HAS_THREADS_DEBUG_IF_NEEDED || \
+		BR2_DEPRECATED || \
+		BR2_bfin || \
+		BR2_avr32
 	depends on !BR2_sh && !BR2_sh64
 	help
 	    Build the full gdb debugger to run on the target.
@@ -90,9 +99,8 @@  choice
 
 endchoice
 
-comment "gdb 7.x support needs pthread debug support in toolchain"
-	depends on BR2_PACKAGE_GDB || BR2_PACKAGE_GDB_SERVER || BR2_PACKAGE_GDB_HOST
-	depends on !BR2_TOOLCHAIN_HAS_THREADS_DEBUG_IF_NEEDED
+comment "gdb support needs pthread debug support in toolchain"
+	depends on !BR2_DEPRECATED && !BR2_avr32 && !BR2_bfin && !BR2_TOOLCHAIN_HAS_THREADS_DEBUG_IF_NEEDED
 
 config BR2_GDB_VERSION
 	string