Hi, since a good months ago, on OpenBSD -current amd64, bundle loading stopped working. I'm not sure what caused it, at least nothing with regard to objc and gnustep, since I haven't touched the packages since then.
So ktrace tells me, it finds the GSBackend bundle, opens the Info-Gnustep.plist, reads it, and opens the object file. But then in: Breakpoint 1, initialize_gnustep_backend () at NSApplication.m:321 321 backend = NSClassFromString (@"GSBackend"); That NSClassFromString fails, and basically all GUI applications stop working as well as any other application that loads bundles seems to have the same/similar problem as well, as I saw the same thing with SOGo webmailer. Below a gdb session, where I tried to follow the flow from above backtrace. I think somewhere in libobjc2, some "assumption" how things work, is due to some change in the OS or some dependent package not right anymore? But I've no clue. Things are built with clang from base, wich is: OpenBSD clang version 6.0.0 (tags/RELEASE_600/final) (based on LLVM 6.0.0) Target: amd64-unknown-openbsd6.4 Thread model: posix InstalledDir: /usr/bin But I also tried clang6.0.1 from ports, but to no avail. On OpenBSD -current there is /usr/bin/ld, /usr/bin/ld.lld and /usr/bin/ld.bfd installed, where /usr/bin/ld is a hardlink to /usr/bin/ld.lld. When I build libobjc2 or other libs/apps, then for linking clang is used, which in turn uses I think /usr/bin/ld ? So, the thing is, when I replace all /usr/bin/ld* with the /usr/bin/ld.bfd, and rebuild everything, then GUI apps, as well as SOGo start up. But I can't do that when building packages :( At some point in time the default linker was changed from the ld.bfd to ld.lld, but I think that happened quite a bit earlier. I tried to force using /usr/bin/ld.bfd setting LD=/usr/bin/ld.bfd, but then building gnustep-base or others, when it comes to linking, it is whining about parameters/flags it doesn't understand. someone can point me into some direction what might go wrong here? Sebastian following versions are installed: gnustep-back-0.26.2 GNUstep gui backend gnustep-base-1.25.1p1 GNUstep base library gnustep-gui-0.26.2 GNUstep gui library gnustep-libobjc2-1.8.1p0 GNUstep libobjc2 objective-c runtime gnustep-make-2.7.0p2 GNUstep makefile package egdb /usr/local/bin/GMines GNU gdb (GDB) 7.12.1 Copyright (C) 2017 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-unknown-openbsd6.4". Type "show configuration" for configuration details. For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from /usr/local/bin/GMines...done. (gdb) r Starting program: /usr/local/bin/GMines Program received signal SIGFPE, Arithmetic exception. 0x00000b039aff524c in _dl_find_symbol_obj (obj=0xb03d90cbc00, sl=0x7f7fffff44d8) at /usr/src/libexec/ld.so/resolve.c:584 584 for (si = obj->buckets[sl->sl_elf_hash % obj->nbuckets]; (gdb) bt #0 0x00000b039aff524c in _dl_find_symbol_obj (obj=0xb03d90cbc00, sl=0x7f7fffff44d8) at /usr/src/libexec/ld.so/resolve.c:584 #1 0x00000b039aff5068 in _dl_find_symbol (name=0xb0360931d15 "getpid", this=0x7f7fffff4578, flags=48, ref_sym=0xb03608c6338, req_obj=<optimized out>, pobj=0x7f7fffff4570) at /usr/src/libexec/ld.so/resolve.c:663 #2 0x00000b039aff3f1a in _dl_bind (object=0xb03f04dd400, index=<optimized out>) at /usr/src/libexec/ld.so/amd64/rtld_machine.c:357 #3 0x00000b039aff5fed in _dl_bind_start () at /usr/src/libexec/ld.so/amd64/ldasm.S:108 #4 0x00000b0360d6b5c4 in NSLogv (format=0xb0399f41308, args=0x7f7fffff48c0) at NSLog.m:350 #5 0x00000b0360c73d75 in -[NSAssertionHandler handleFailureInFunction:file:lineNumber:description:] (self=0xb03e00bfd38, _cmd=0xb0357e4f7c8 <.objc_selector_list+1392>, functionName=0xb0371011688, fileName=0xb040117be88, line=323, format=0xb0357e4d0e8 <.objc_str.404>) at NSAssertionHandler.m:101 #6 0x00000b0357abed97 in initialize_gnustep_backend () at NSApplication.m:322 #7 0x00000b0357ac136b in -[NSApplication _init] (self=0xb039592ee08, _cmd=0xb0357e4fa38 <.objc_selector_list+2016>) at NSApplication.m:878 #8 0x00000b0360d8e5f8 in -[NSObject performSelector:withObject:] (self=0xb039592ee08, _cmd=0xb0360fb5630 <.objc_selector_list+720>, aSelector=0xb0357e4fa38 <.objc_selector_list+2016>, anObject=0xb039592ee08) at NSObject.m:2000 #9 0x00000b0360e24673 in -[NSObject(NSThreadPerformAdditions) performSelector:onThread:withObject:waitUntilDone:modes:] (self=0xb039592ee08, _cmd=0xb0360fb53a0 <.objc_selector_list+64>, aSelector=0xb0357e4fa38 <.objc_selector_list+2016>, aThread=0xb0400c40588, anObject=0xb039592ee08, aFlag=1 '\001', anArray=0xb040117b988) at NSThread.m:1672 #10 0x00000b0360e24321 in -[NSObject(NSThreadPerformAdditions) performSelectorOnMainThread:withObject:waitUntilDone:modes:] (self=0xb039592ee08, _cmd=0xb0360fb53e0 <.objc_selector_list+128>, aSelector=0xb0357e4fa38 <.objc_selector_list+2016>, anObject=0xb039592ee08, aFlag=1 '\001', anArray=0xb040117b988) at NSThread.m:1627 #11 0x00000b0360e243be in -[NSObject(NSThreadPerformAdditions) performSelectorOnMainThread:withObject:waitUntilDone:] (self=0xb039592ee08, _cmd=0xb0357e50098 <.objc_selector_list+3648>, aSelector=0xb0357e4fa38 <.objc_selector_list+2016>, anObject=0xb039592ee08, aFlag=1 '\001') at NSThread.m:1638 #12 0x00000b0357ac1ad5 in -[NSApplication init] (self=0xb039592ee08, _cmd=0xb0357e50178 <.objc_selector_list+3872>) at NSApplication.m:978 #13 0x00000b0357ac12dd in +[NSApplication sharedApplication] (self=0xb0357e4e8b8 <_OBJC_CLASS_NSApplication>, _cmd=0xb014671b268 <.objc_selector_list+160>) at NSApplication.m:850 #14 0x00000b014670dfb8 in gnustep_base_user_main (argc=1, argv=0x7f7fffff4f48, env=0x7f7fffff4f58) at main.m:44 #15 0x00000b0360dc21e7 in main (argc=1, argv=0x7f7fffff4f48, env=0x7f7fffff4f58) at NSProcessInfo.m:1002 #16 0x00000b014670a056 in ___start () #17 0x0000000000000000 in ?? () (gdb) frame 6 #6 0x00000b0357abed97 in initialize_gnustep_backend () at NSApplication.m:322 322 NSCAssert1 (backend != Nil, (gdb) list 317 path); 318 319 /* Now get the GSBackend class, which should have just been loaded 320 * from the bundle. */ 321 backend = NSClassFromString (@"GSBackend"); 322 NSCAssert1 (backend != Nil, 323 _(@"Backend at path %@ doesn't contain the GSBackend class"), path); 324 [backend initializeBackend]; 325 } 326 (gdb) break NSApplication.m:321 Breakpoint 1 at 0xb0357abec6e: file NSApplication.m, line 321. (gdb) c Continuing. Program terminated with signal SIGFPE, Arithmetic exception. The program no longer exists. (gdb) r Starting program: /usr/local/bin/GMines Breakpoint 1, initialize_gnustep_backend () at NSApplication.m:321 321 backend = NSClassFromString (@"GSBackend"); (gdb) s NSClassFromString (aClassName=0xfaf8e68cfe0 <.objc_str.393>) at NSObjCRuntime.m:108 108 if (aClassName != nil) (gdb) n 110 int len = [aClassName length]; (gdb) 111 char buf[len+1]; (gdb) 113 [aClassName getCString: buf (gdb) 114 maxLength: len + 1 (gdb) 113 [aClassName getCString: buf (gdb) 116 return objc_lookUpClass (buf); (gdb) s objc_lookUpClass (name=0x7f7ffffee240 "GSBackend") at /home/ports/pobj/amd64/gnustep-libobjc2-1.8.1/libobjc2-1.8.1/class_table.c:519 519 return (id)class_table_get_safe(name); (gdb) s class_table_get_safe (class_name=0x7f7ffffee240 "GSBackend") at /home/ports/pobj/amd64/gnustep-libobjc2-1.8.1/libobjc2-1.8.1/class_table.c:131 131 if (NULL == class_name) { return Nil; } (gdb) list 126 class_table_internal_insert(class_table, class); 127 } 128 129 PRIVATE Class class_table_get_safe(const char *class_name) 130 { 131 if (NULL == class_name) { return Nil; } 132 return class_table_internal_table_get(class_table, class_name); 133 } 134 135 PRIVATE Class class_table_next(void **e) (gdb) print class_name $1 = 0x7f7ffffee240 "GSBackend" (gdb) print class_table $2 = (class_table_internal_table *) 0xfaf8951e9c0 (gdb) print *class_table $3 = {lock = 0xfafca3b8200, table_size = 4096, table_used = 784, enumerator_count = 1, old = 0x0, table = 0xfafbe1fa000} (gdb) s 132 return class_table_internal_table_get(class_table, class_name); (gdb) s class_table_internal_table_get (table=0xfaf8951e9c0, key=0x7f7ffffee240) at /home/ports/pobj/amd64/gnustep-libobjc2-1.8.1/libobjc2-1.8.1/hash_table.h:418 418 PREFIX(_table_cell) cell = PREFIX(_table_get_cell)(table, key); (gdb) print table $4 = (class_table_internal_table *) 0xfaf8951e9c0 (gdb) print key $5 = (const void *) 0x7f7ffffee240 (gdb) print *key Attempt to dereference a generic pointer. (gdb) print const char *key A syntax error in expression, near `key'. (gdb) print const char * key A syntax error in expression, near `key'. (gdb) print (const char *) key $6 = 0x7f7ffffee240 "GSBackend" (gdb) s class_table_internal_table_get_cell (table=0xfaf8951e9c0, key=0x7f7ffffee240) at /home/ports/pobj/amd64/gnustep-libobjc2-1.8.1/libobjc2-1.8.1/hash_table.h:338 338 uint32_t hash = MAP_TABLE_HASH_KEY(key); (gdb) print (const char *) key $7 = 0x7f7ffffee240 "GSBackend" (gdb) s string_hash (str=0x7f7ffffee240 "GSBackend") at /home/ports/pobj/amd64/gnustep-libobjc2-1.8.1/libobjc2-1.8.1/string_hash.h:10 10 uint32_t hash = 0; (gdb) list 5 * Efficient string hash function. 6 */ 7 __attribute__((unused)) 8 static uint32_t string_hash(const char *str) 9 { 10 uint32_t hash = 0; 11 int32_t c; 12 while ((c = *str++)) 13 { 14 hash = c + (hash << 6) + (hash << 16) - hash; (gdb) s 12 while ((c = *str++)) (gdb) 14 hash = c + (hash << 6) + (hash << 16) - hash; (gdb) print c $8 = 71 (gdb) c Continuing. Program received signal SIGFPE, Arithmetic exception. 0x00000faee7d1e24c in _dl_find_symbol_obj (obj=0xfaf1783e800, sl=0x7f7ffffede78) at /usr/src/libexec/ld.so/resolve.c:584 584 for (si = obj->buckets[sl->sl_elf_hash % obj->nbuckets]; (gdb) c Continuing. Program terminated with signal SIGFPE, Arithmetic exception. The program no longer exists. (gdb) r Starting program: /usr/local/bin/GMines Breakpoint 1, initialize_gnustep_backend () at NSApplication.m:321 321 backend = NSClassFromString (@"GSBackend"); (gdb) s NSClassFromString (aClassName=0xa32a1719fe0 <.objc_str.393>) at NSObjCRuntime.m:108 108 if (aClassName != nil) (gdb) 110 int len = [aClassName length]; (gdb) 111 char buf[len+1]; (gdb) 113 [aClassName getCString: buf (gdb) 114 maxLength: len + 1 (gdb) 113 [aClassName getCString: buf (gdb) 116 return objc_lookUpClass (buf); (gdb) objc_lookUpClass (name=0x7f7ffffc0090 "GSBackend") at /home/ports/pobj/amd64/gnustep-libobjc2-1.8.1/libobjc2-1.8.1/class_table.c:519 519 return (id)class_table_get_safe(name); (gdb) class_table_get_safe (class_name=0x7f7ffffc0090 "GSBackend") at /home/ports/pobj/amd64/gnustep-libobjc2-1.8.1/libobjc2-1.8.1/class_table.c:131 131 if (NULL == class_name) { return Nil; } (gdb) 132 return class_table_internal_table_get(class_table, class_name); (gdb) class_table_internal_table_get (table=0xa331e009540, key=0x7f7ffffc0090) at /home/ports/pobj/amd64/gnustep-libobjc2-1.8.1/libobjc2-1.8.1/hash_table.h:418 418 PREFIX(_table_cell) cell = PREFIX(_table_get_cell)(table, key); (gdb) class_table_internal_table_get_cell (table=0xa331e009540, key=0x7f7ffffc0090) at /home/ports/pobj/amd64/gnustep-libobjc2-1.8.1/libobjc2-1.8.1/hash_table.h:338 338 uint32_t hash = MAP_TABLE_HASH_KEY(key); (gdb) string_hash (str=0x7f7ffffc0090 "GSBackend") at /home/ports/pobj/amd64/gnustep-libobjc2-1.8.1/libobjc2-1.8.1/string_hash.h:10 10 uint32_t hash = 0; (gdb) 12 while ((c = *str++)) (gdb) 14 hash = c + (hash << 6) + (hash << 16) - hash; (gdb) 12 while ((c = *str++)) (gdb) 14 hash = c + (hash << 6) + (hash << 16) - hash; (gdb) 12 while ((c = *str++)) (gdb) 14 hash = c + (hash << 6) + (hash << 16) - hash; (gdb) 12 while ((c = *str++)) (gdb) 14 hash = c + (hash << 6) + (hash << 16) - hash; (gdb) 12 while ((c = *str++)) (gdb) 14 hash = c + (hash << 6) + (hash << 16) - hash; (gdb) print hash $9 = 277150827 (gdb) list 9 { 10 uint32_t hash = 0; 11 int32_t c; 12 while ((c = *str++)) 13 { 14 hash = c + (hash << 6) + (hash << 16) - hash; 15 } 16 return hash; 17 } 18 (gdb) s 12 while ((c = *str++)) (gdb) 14 hash = c + (hash << 6) + (hash << 16) - hash; (gdb) 12 while ((c = *str++)) (gdb) 14 hash = c + (hash << 6) + (hash << 16) - hash; (gdb) 12 while ((c = *str++)) (gdb) 14 hash = c + (hash << 6) + (hash << 16) - hash; (gdb) 12 while ((c = *str++)) (gdb) 14 hash = c + (hash << 6) + (hash << 16) - hash; (gdb) 12 while ((c = *str++)) (gdb) 16 return hash; (gdb) print hash $10 = 4054769640 (gdb) s class_table_internal_table_get_cell (table=0xa331e009540, key=0x7f7ffffc0090) at /home/ports/pobj/amd64/gnustep-libobjc2-1.8.1/libobjc2-1.8.1/hash_table.h:339 339 PREFIX(_table_cell) cell = PREFIX(_table_lookup)(table, hash); (gdb) print cell $11 = (class_table_internal_table_cell) 0x7f7ffffbffe0 (gdb) list 334 } 335 336 static void *PREFIX(_table_get_cell)(PREFIX(_table) *table, const void *key) 337 { 338 uint32_t hash = MAP_TABLE_HASH_KEY(key); 339 PREFIX(_table_cell) cell = PREFIX(_table_lookup)(table, hash); 340 // Value does not exist. 341 if (!MAP_TABLE_VALUE_NULL(cell->value)) 342 { 343 if (MAP_TABLE_COMPARE_FUNCTION(key, cell->value)) (gdb) 344 { 345 return cell; 346 } 347 uint32_t jump = cell->secondMaps; 348 // Look at each offset defined by the jump table to find the displaced location. 349 for (int hop = __builtin_ffs(jump) ; hop > 0 ; hop = __builtin_ffs(jump)) 350 { 351 PREFIX(_table_cell) hopCell = PREFIX(_table_lookup)(table, hash+hop); 352 if (MAP_TABLE_COMPARE_FUNCTION(key, hopCell->value)) 353 { (gdb) s class_table_internal_table_lookup (table=0xa331e009540, hash=4054769640) at /home/ports/pobj/amd64/gnustep-libobjc2-1.8.1/libobjc2-1.8.1/hash_table.h:219 219 hash = hash % TABLE_SIZE(table); (gdb) lidz Undefined command: "lidz". Try "help". (gdb) list 214 }; 215 216 static inline PREFIX(_table_cell) PREFIX(_table_lookup)(PREFIX(_table) *table, 217 uint32_t hash) 218 { 219 hash = hash % TABLE_SIZE(table); 220 return &table->table[hash]; 221 } 222 223 static int PREFIX(_table_move_gap)(PREFIX(_table) *table, uint32_t fromHash, (gdb) print table $12 = (class_table_internal_table *) 0xa331e009540 (gdb) print hash $13 = 4054769640 (gdb) print &table->table[hash] $14 = (struct class_table_internal_table_cell_struct *) 0xa41d88dfe80 (gdb) print (struct class_table_internal_table_cell_struct *) &table->table[hash] $15 = (struct class_table_internal_table_cell_struct *) 0xa41d88dfe80 (gdb) print (struct class_table_internal_table_cell_struct *) 0xa41d88dfe80 $16 = (struct class_table_internal_table_cell_struct *) 0xa41d88dfe80 (gdb) print (struct class_table_internal_table_cell_struct *) 0xa41d88dfe80 $17 = (struct class_table_internal_table_cell_struct *) 0xa41d88dfe80 (gdb) print 0xa41d88dfe80 $18 = 11277922336384 (gdb) print (struct class_table_internal_table_cell_struct ) 0xa41d88dfe80 Invalid cast. (gdb) print (struct class_table_internal_table_cell_struct *) &0xa41d88dfe80 Attempt to take address of value not located in memory. (gdb) print (struct class_table_internal_table_cell_struct *) *0xa41d88dfe80 Cannot access memory at address 0xa41d88dfe80 (gdb) print (struct class_table_internal_table_cell_struct *) ^CQuit88dfe80 (gdb) print table->table[hash] Cannot access memory at address 0xa41d88dfe80 (gdb) print &table->table[hash] $19 = (struct class_table_internal_table_cell_struct *) 0xa41d88dfe80 (gdb) s 220 return &table->table[hash]; (gdb) s class_table_internal_table_get_cell (table=0xa331e009540, key=0x7f7ffffc0090) at /home/ports/pobj/amd64/gnustep-libobjc2-1.8.1/libobjc2-1.8.1/hash_table.h:341 341 if (!MAP_TABLE_VALUE_NULL(cell->value)) (gdb) print cell $20 = (class_table_internal_table_cell) 0xa32bda0fe80 (gdb) print cell->value $21 = (void *) 0xa32a18f9620 <_OBJC_CLASS_IBConnectionRecord> (gdb) s class_table_internal_is_null (value=0xa32a18f9620 <_OBJC_CLASS_IBConnectionRecord>) at /home/ports/pobj/amd64/gnustep-libobjc2-1.8.1/libobjc2-1.8.1/hash_table.h:77 77 return value == NULL; (gdb) list 72 #endif 73 #ifndef MAP_TABLE_VALUE_TYPE 74 # define MAP_TABLE_VALUE_TYPE void* 75 static BOOL PREFIX(_is_null)(void *value) 76 { 77 return value == NULL; 78 } 79 # define MAP_TABLE_TYPES_BITMAP 1 80 # define MAP_TABLE_VALUE_NULL PREFIX(_is_null) 81 # define MAP_TABLE_VALUE_PLACEHOLDER NULL (gdb) print value $22 = (void *) 0xa32a18f9620 <_OBJC_CLASS_IBConnectionRecord> (gdb) s class_table_internal_table_get_cell (table=0xa331e009540, key=0x7f7ffffc0090) at /home/ports/pobj/amd64/gnustep-libobjc2-1.8.1/libobjc2-1.8.1/hash_table.h:343 343 if (MAP_TABLE_COMPARE_FUNCTION(key, cell->value)) (gdb) print key $23 = (const void *) 0x7f7ffffc0090 (gdb) print cell->value $24 = (void *) 0xa32a18f9620 <_OBJC_CLASS_IBConnectionRecord> (gdb) s class_compare (name=0x7f7ffffc0090 "GSBackend", class=0xa32a18f9620 <_OBJC_CLASS_IBConnectionRecord>) at /home/ports/pobj/amd64/gnustep-libobjc2-1.8.1/libobjc2-1.8.1/class_table.c:71 71 return string_compare(name, class->name); (gdb) print name $25 = 0x7f7ffffc0090 "GSBackend" (gdb) print class->name $26 = 0xa32a0c84d0e "IBConnectionRecord" (gdb) s string_compare (str1=0x7f7ffffc0090 "GSBackend", str2=0xa32a0c84d0e "IBConnectionRecord") at /home/ports/pobj/amd64/gnustep-libobjc2-1.8.1/libobjc2-1.8.1/string_hash.h:25 25 if (str1 == str2) (gdb) list 20 * Test two strings for equality. 21 */ 22 __attribute__((unused)) 23 static int string_compare(const char *str1, const char *str2) 24 { 25 if (str1 == str2) 26 { 27 return 1; 28 } 29 if (str1 == NULL || str2 == NULL) (gdb) s 29 if (str1 == NULL || str2 == NULL) (gdb) 33 return strcmp(str1, str2) == 0; (gdb) strcmp () at /usr/src/lib/libc/arch/amd64/string/strcmp.S:12 12 RETGUARD_SETUP(strcmp, r11) (gdb) n 18 testb $7,%dil (gdb) 19 je .Ls1aligned (gdb) 35 testb $7,%sil (gdb) 36 jne .Lbyte_loop (gdb) 59 movb (%rdi),%al (gdb) 60 incq %rdi (gdb) 61 movb (%rsi),%dl (gdb) 62 incq %rsi (gdb) 63 testb %al,%al (gdb) 64 je .Ldone (gdb) 65 cmpb %al,%dl (gdb) 66 je .Lbyte_loop (gdb) 69 movzbq %al,%rax (gdb) 70 movzbq %dl,%rdx (gdb) 71 subq %rdx,%rax (gdb) 72 RETGUARD_CHECK(strcmp, r11) (gdb) strcmp () at /usr/src/lib/libc/arch/amd64/string/strcmp.S:73 73 ret (gdb) string_compare (str1=0x7f7ffffc0090 "GSBackend", str2=0xa32a0c84d0e "IBConnectionRecord") at /home/ports/pobj/amd64/gnustep-libobjc2-1.8.1/libobjc2-1.8.1/string_hash.h:34 34 } (gdb) class_table_internal_table_get_cell (table=0xa331e009540, key=0x7f7ffffc0090) at /home/ports/pobj/amd64/gnustep-libobjc2-1.8.1/libobjc2-1.8.1/hash_table.h:347 347 uint32_t jump = cell->secondMaps; (gdb) list 342 { 343 if (MAP_TABLE_COMPARE_FUNCTION(key, cell->value)) 344 { 345 return cell; 346 } 347 uint32_t jump = cell->secondMaps; 348 // Look at each offset defined by the jump table to find the displaced location. 349 for (int hop = __builtin_ffs(jump) ; hop > 0 ; hop = __builtin_ffs(jump)) 350 { 351 PREFIX(_table_cell) hopCell = PREFIX(_table_lookup)(table, hash+hop); (gdb) print jump $27 = 2207597367 (gdb) s 349 for (int hop = __builtin_ffs(jump) ; hop > 0 ; hop = __builtin_ffs(jump)) (gdb) 359 } (gdb) print hop No symbol "hop" in current context. (gdb) n 361 if (table->old) (gdb) list 356 // Clear the most significant bit and try again. 357 jump &= ~(1 << (hop-1)); 358 } 359 } 360 #ifndef MAP_TABLE_STATIC_SIZE 361 if (table->old) 362 { 363 return PREFIX(_table_get_cell)(table->old, key); 364 } 365 #endif (gdb) print table->old $28 = (struct class_table_internal_table_struct *) 0x0 (gdb) n 366 return NULL; (gdb) 367 } (gdb) list 362 { 363 return PREFIX(_table_get_cell)(table->old, key); 364 } 365 #endif 366 return NULL; 367 } 368 369 __attribute__((unused)) 370 static void PREFIX(_table_move_second)(PREFIX(_table) *table, 371 PREFIX(_table_cell) emptyCell) (gdb) n class_table_internal_table_get (table=0xa331e009540, key=0x7f7ffffc0090) at /home/ports/pobj/amd64/gnustep-libobjc2-1.8.1/libobjc2-1.8.1/hash_table.h:419 419 if (NULL == cell) (gdb) print cell $29 = (class_table_internal_table_cell) 0x0 (gdb) n 424 return MAP_TABLE_VALUE_PLACEHOLDER; (gdb) list 419 if (NULL == cell) 420 { 421 #ifdef MAP_TABLE_ACCESS_BY_REFERENCE 422 return NULL; 423 #else 424 return MAP_TABLE_VALUE_PLACEHOLDER; 425 #endif 426 } 427 #ifdef MAP_TABLE_ACCESS_BY_REFERENCE 428 return &cell->value; (gdb) print MAP_TABLE_VALUE_PLACEHOLDER No symbol "MAP_TABLE_VALUE_PLACEHOLDER" in current context. (gdb) n 432 } (gdb) class_table_get_safe (class_name=0x7f7ffffc0090 "GSBackend") at /home/ports/pobj/amd64/gnustep-libobjc2-1.8.1/libobjc2-1.8.1/class_table.c:133 133 } (gdb) list 128 129 PRIVATE Class class_table_get_safe(const char *class_name) 130 { 131 if (NULL == class_name) { return Nil; } 132 return class_table_internal_table_get(class_table, class_name); 133 } 134 135 PRIVATE Class class_table_next(void **e) 136 { 137 return class_table_internal_next(class_table, (gdb) s NSClassFromString (aClassName=0xa32a1719fe0 <.objc_str.393>) at NSObjCRuntime.m:117 117 } (gdb) 119 } (gdb) initialize_gnustep_backend () at NSApplication.m:322 322 NSCAssert1 (backend != Nil, _______________________________________________ Discuss-gnustep mailing list Discuss-gnustep@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnustep