discuss-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

loading bundles stopped working


From: Sebastian Reitenbach
Subject: loading bundles stopped working
Date: Sun, 25 Nov 2018 19:30:36 +0100
User-agent: SOGoMail 4.0.2

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,




reply via email to

[Prev in Thread] Current Thread [Next in Thread]