From: Tom Tromey Date: Sat, 15 Nov 2025 17:37:37 +0000 (-0700) Subject: Make the gdb.objc tests compile X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=df25394884cf5cd4611355cb95ef319431428fdb;p=thirdparty%2Fbinutils-gdb.git Make the gdb.objc tests compile The gdb.objc tests haven't compiled in years. This patch fixes this, based on a comment in bug 31671. I don't know whether this approach works with the clang implementation of Objective-C. However, it does work with GCC, provided that gnustep-base is installed. --- diff --git a/gdb/testsuite/gdb.objc/basicclass.m b/gdb/testsuite/gdb.objc/basicclass.m index d9b3f23954c..d1d54dfff19 100644 --- a/gdb/testsuite/gdb.objc/basicclass.m +++ b/gdb/testsuite/gdb.objc/basicclass.m @@ -1,7 +1,7 @@ #include -#include +#include -@interface BasicClass: Object +@interface BasicClass: NSObject { id object; } @@ -75,7 +75,7 @@ const char *_NSPrintForDebugger(id object) { /* This is not really what _NSPrintForDebugger should do, but it is a simple test if gdb can call this function */ - if (object && [object respondsTo: @selector(myDescription)]) + if (object) return [object myDescription]; return NULL; diff --git a/gdb/testsuite/gdb.objc/nondebug.m b/gdb/testsuite/gdb.objc/nondebug.m index 352a71c30e3..1ab876443a4 100644 --- a/gdb/testsuite/gdb.objc/nondebug.m +++ b/gdb/testsuite/gdb.objc/nondebug.m @@ -1,11 +1,11 @@ #include -#include +#include -@interface NonDebug: Object +@interface NonDebug: NSObject { } @end -@interface NonDebug2: Object +@interface NonDebug2: NSObject { } @end diff --git a/gdb/testsuite/gdb.objc/objcdecode.m b/gdb/testsuite/gdb.objc/objcdecode.m index a061661ed93..78ff301f3e0 100644 --- a/gdb/testsuite/gdb.objc/objcdecode.m +++ b/gdb/testsuite/gdb.objc/objcdecode.m @@ -1,7 +1,7 @@ #include -#include +#include -@interface Decode: Object +@interface Decode: NSObject { } - multipleDef; @@ -43,7 +43,7 @@ const char *_NSPrintForDebugger(id object) { /* This is not really what _NSPrintForDebugger should do, but it is a simple test if gdb can call this function */ - if (object && [object respondsTo: @selector(myDescription)]) + if (object) return [object myDescription]; return NULL; diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index 366eff3ca32..5d005f21be0 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -6950,15 +6950,11 @@ proc gdb_compile_shlib_pthreads {sources dest options} { proc gdb_compile_objc {source dest type options} { set built_binfile 0 set why_msg "unrecognized error" - foreach lib {-lobjc -lpthreads -lpthread -lthread solaris} { + set base_libs {-lgnustep-base -lobjc} + foreach lib {-lpthreads -lpthread -lthread "-lpthread -lposix4"} { # This kind of wipes out whatever libs the caller may have - # set. Or maybe theirs will override ours. How infelicitous. - if { $lib == "solaris" } { - set lib "-lpthread -lposix4" - } - if { $lib != "-lobjc" } { - set lib "-lobjc $lib" - } + # set. Or maybe theirs will override ours. How infelicitous. + set lib "$base_libs $lib" set options_with_lib [concat $options [list libs=$lib quiet]] set ccout [gdb_compile $source $dest $type $options_with_lib] switch -regexp -- $ccout {