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.
This commit is contained in:
Tom Tromey
2025-11-15 10:37:37 -07:00
parent 0221c9eea7
commit df25394884
4 changed files with 13 additions and 17 deletions

View File

@@ -1,7 +1,7 @@
#include <stdio.h>
#include <objc/Object.h>
#include <Foundation/NSObject.h>
@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;

View File

@@ -1,11 +1,11 @@
#include <stdio.h>
#include <objc/Object.h>
#include <Foundation/NSObject.h>
@interface NonDebug: Object
@interface NonDebug: NSObject
{
}
@end
@interface NonDebug2: Object
@interface NonDebug2: NSObject
{
}
@end

View File

@@ -1,7 +1,7 @@
#include <stdio.h>
#include <objc/Object.h>
#include <Foundation/NSObject.h>
@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;

View File

@@ -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 {