Subject: why ld.elf_so is slow starting mozilla
To: None <tech-toolchain@netbsd.org>
From: David Laight <david@l8s.co.uk>
List: tech-toolchain
Date: 10/02/2002 20:45:43
I added some more tracing to ld.elf_so and have finally realised
why things like mozilla startup are quite so slow.

The place to trace is the strcmp() call in _rtld_symlook_obj().
I don't have enough free disk space for the trace output file :-(
(ok, it is only 500Mb - too big to look at)

One fairly early lookup of dlsym involves 703 string compares,
only 38 of which are actually unique.
Looking at the trace shows that a lot of repetitive searching
is being done, and that a better way of handling the symbol
table search is needed.

In particuler the 'Search all dlopened DAGs containing the referencing
object.' loop (in _rtld_find_symdef) is rather repetitive.
Even the search for a global symbol seems to use the same symbol
tables as the earlier program body.

Leafing through the early part of the full trace shows that the
symbol table hashing often leaves chains of 4 or 5 symbols. When
compounded with repeated searches of multiple shared libraries
it is hardly surprising things are sluggish.

It maybe worth saving the symbol table info in an entirely
different structure - optimised for each name only being
defined once.

	David

Trace format:
+<time since last trace>=<program execution time>:
  compare <object address> <name we want> <name from hash> <length>
Times are in usecs and have a moderate correction for the cost of
getrusage and to exclude the cost of the trace itself.

+8=758876:  looking for dlsym
+2=758878:   checking program body
+3=758881: compare 0x48098000 dlsym dlsym 6
+4=758885: compare 0x48098200 dlsym do_AppendFromElement__8nsStringUs 6
+4=758889: compare 0x48098200 dlsym FindChar__C9nsCStringUsii 6
+4=758893: compare 0x48098600 dlsym js_watch_set 6
+3=758896: compare 0x48098a00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+4=758900: compare 0x48098a00 dlsym PL_HashString 6
+3=758903: compare 0x48098c00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+2=758905: compare 0x48098c00 dlsym PL_strndup 6
+3=758908: compare 0x48098c00 dlsym PL_strdup 6
+2=758910: compare 0x48098e00 dlsym _PR_NotifyThread 6
+2=758912: compare 0x48098e00 dlsym dlsym 6
+3=758915: compare 0x4809a000 dlsym gtk_progress_get_current_text 6
+3=758918: compare 0x4809a000 dlsym gtk_frame_set_shadow_type 6
+4=758922: compare 0x4809a000 dlsym gtk_button_enter 6
+4=758926: compare 0x4809a200 dlsym XShmCreateImage 6
+3=758929: compare 0x4809a200 dlsym gdk_timer_get 6
+4=758933: compare 0x4809a400 dlsym g_thread_functions_for_glib_use 6
+4=758937: compare 0x4809a400 dlsym dlsym 6
+4=758941: compare 0x4809a800 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=758944: compare 0x4809a800 dlsym __bindings 6
+3=758947: compare 0x4809aa00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+4=758951: compare 0x4809ac00 dlsym XextAddDisplay 6
+4=758955: compare 0x4809ae00 dlsym XInstallColormap 6
+4=758959: compare 0x4809ae00 dlsym XkbIgnoreExtension 6
+3=758962: compare 0x4809ae00 dlsym XcmsCIEuvYToCIELuv 6
+2=758964: compare 0x4809ae00 dlsym XkbFindOverlayForKey 6
+3=758967: compare 0x4850a000 dlsym ilogb 6
+4=758971: compare 0x4850a000 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=758974: compare 0x4850a000 dlsym copysignf 6
+2=758976: compare 0x4850a200 dlsym remainder 6
+3=758979: compare 0x4850a200 dlsym isnanf 6
+5=758984: compare 0x4850a400 dlsym clone__Q2t12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0_3Rep 6
+3=758987: compare 0x4850a400 dlsym __mi__H1Zr_X01RCt7complex1ZX01_t7complex1ZX01 6
+3=758990: compare 0x4850a400 dlsym find_first_of__Ct12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0RCt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Ui 6
+4=758994: compare 0x4850a400 dlsym tell__11edit_bufferP9edit_mark 6
+4=758998: compare 0x4850a400 dlsym sync__9streambuf 6
+4=759002: compare 0x4850a600 dlsym dlsym 6
+3=759005:   checking containing DAG /usr/X11R6/lib/mozilla/components/libjsd.so
+4=759009: compare 0x48098a00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=759012: compare 0x48098a00 dlsym PL_HashString 6
+3=759015: compare 0x48098e00 dlsym _PR_NotifyThread 6
+1=759016: compare 0x48098e00 dlsym dlsym 6
+3=759019: compare 0x48098c00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+2=759021: compare 0x48098c00 dlsym PL_strndup 6
+3=759024: compare 0x48098c00 dlsym PL_strdup 6
+2=759026: compare 0x48098e00 dlsym _PR_NotifyThread 6
+3=759029: compare 0x48098e00 dlsym dlsym 6
+3=759032: compare 0x48098e00 dlsym _PR_NotifyThread 6
+3=759035: compare 0x48098e00 dlsym dlsym 6
+2=759037: compare 0x4809a800 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=759040: compare 0x4809a800 dlsym __bindings 6
+2=759042: compare 0x4850a400 dlsym clone__Q2t12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0_3Rep 6
+3=759045: compare 0x4850a400 dlsym __mi__H1Zr_X01RCt7complex1ZX01_t7complex1ZX01 6
+4=759049: compare 0x4850a400 dlsym find_first_of__Ct12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0RCt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Ui 6
+2=759051: compare 0x4850a400 dlsym tell__11edit_bufferP9edit_mark 6
+3=759054: compare 0x4850a400 dlsym sync__9streambuf 6
+4=759058: compare 0x4850a000 dlsym ilogb 6
+3=759061: compare 0x4850a000 dlsym _GLOBAL_OFFSET_TABLE_ 6
+4=759065: compare 0x4850a000 dlsym copysignf 6
+4=759069: compare 0x4850a200 dlsym remainder 6
+6=759075: compare 0x4850a200 dlsym isnanf 6
+4=759079: compare 0x48098a00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+4=759083: compare 0x48098a00 dlsym PL_HashString 6
+4=759087: compare 0x48098e00 dlsym _PR_NotifyThread 6
+6=759093: compare 0x48098e00 dlsym dlsym 6
+4=759097: compare 0x48098c00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+4=759101: compare 0x48098c00 dlsym PL_strndup 6
+3=759104: compare 0x48098c00 dlsym PL_strdup 6
+4=759108: compare 0x48098e00 dlsym _PR_NotifyThread 6
+4=759112: compare 0x48098e00 dlsym dlsym 6
+4=759116: compare 0x48098e00 dlsym _PR_NotifyThread 6
+6=759122: compare 0x48098e00 dlsym dlsym 6
+4=759126: compare 0x48098600 dlsym js_watch_set 6
+4=759130: compare 0x48098a00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+4=759134: compare 0x48098a00 dlsym PL_HashString 6
+4=759138: compare 0x48098e00 dlsym _PR_NotifyThread 6
+4=759142: compare 0x48098e00 dlsym dlsym 6
+4=759146: compare 0x48098c00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+4=759150: compare 0x48098c00 dlsym PL_strndup 6
+5=759155: compare 0x48098c00 dlsym PL_strdup 6
+4=759159: compare 0x48098e00 dlsym _PR_NotifyThread 6
+4=759163: compare 0x48098e00 dlsym dlsym 6
+4=759167: compare 0x48098e00 dlsym _PR_NotifyThread 6
+4=759171: compare 0x48098e00 dlsym dlsym 6
+4=759175: compare 0x4850a000 dlsym ilogb 6
+4=759179: compare 0x4850a000 dlsym _GLOBAL_OFFSET_TABLE_ 6
+4=759183: compare 0x4850a000 dlsym copysignf 6
+6=759189: compare 0x4850a200 dlsym remainder 6
+3=759192: compare 0x4850a200 dlsym isnanf 6
+5=759197: compare 0x4809a800 dlsym _GLOBAL_OFFSET_TABLE_ 6
+4=759201: compare 0x4809a800 dlsym __bindings 6
+6=759207: compare 0x4850a400 dlsym clone__Q2t12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0_3Rep 6
+3=759210: compare 0x4850a400 dlsym __mi__H1Zr_X01RCt7complex1ZX01_t7complex1ZX01 6
+3=759213: compare 0x4850a400 dlsym find_first_of__Ct12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0RCt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Ui 6
+3=759216: compare 0x4850a400 dlsym tell__11edit_bufferP9edit_mark 6
+4=759220: compare 0x4850a400 dlsym sync__9streambuf 6
+4=759224: compare 0x4809a800 dlsym _GLOBAL_OFFSET_TABLE_ 6
+4=759228: compare 0x4809a800 dlsym __bindings 6
+3=759231: compare 0x4850a400 dlsym clone__Q2t12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0_3Rep 6
+4=759235: compare 0x4850a400 dlsym __mi__H1Zr_X01RCt7complex1ZX01_t7complex1ZX01 6
+3=759238: compare 0x4850a400 dlsym find_first_of__Ct12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0RCt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Ui 6
+2=759240: compare 0x4850a400 dlsym tell__11edit_bufferP9edit_mark 6
+3=759243: compare 0x4850a400 dlsym sync__9streambuf 6
+4=759247: compare 0x4850a000 dlsym ilogb 6
+4=759251: compare 0x4850a000 dlsym _GLOBAL_OFFSET_TABLE_ 6
+4=759255: compare 0x4850a000 dlsym copysignf 6
+4=759259: compare 0x4850a200 dlsym remainder 6
+4=759263: compare 0x4850a200 dlsym isnanf 6
+4=759267:   checking containing DAG /usr/X11R6/lib/mozilla/components/libjsd.so
+5=759272: compare 0x48098a00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+5=759277: compare 0x48098a00 dlsym PL_HashString 6
+4=759281: compare 0x48098e00 dlsym _PR_NotifyThread 6
+4=759285: compare 0x48098e00 dlsym dlsym 6
+3=759288: compare 0x48098c00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+2=759290: compare 0x48098c00 dlsym PL_strndup 6
+4=759294: compare 0x48098c00 dlsym PL_strdup 6
+3=759297: compare 0x48098e00 dlsym _PR_NotifyThread 6
+3=759300: compare 0x48098e00 dlsym dlsym 6
+4=759304: compare 0x48098e00 dlsym _PR_NotifyThread 6
+3=759307: compare 0x48098e00 dlsym dlsym 6
+3=759310: compare 0x4809a800 dlsym _GLOBAL_OFFSET_TABLE_ 6
+2=759312: compare 0x4809a800 dlsym __bindings 6
+4=759316: compare 0x4850a400 dlsym clone__Q2t12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0_3Rep 6
+3=759319: compare 0x4850a400 dlsym __mi__H1Zr_X01RCt7complex1ZX01_t7complex1ZX01 6
+3=759322: compare 0x4850a400 dlsym find_first_of__Ct12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0RCt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Ui 6
+3=759325: compare 0x4850a400 dlsym tell__11edit_bufferP9edit_mark 6
+3=759328: compare 0x4850a400 dlsym sync__9streambuf 6
+3=759331: compare 0x4850a000 dlsym ilogb 6
+2=759333: compare 0x4850a000 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=759336: compare 0x4850a000 dlsym copysignf 6
+4=759340: compare 0x4850a200 dlsym remainder 6
+3=759343: compare 0x4850a200 dlsym isnanf 6
+4=759347: compare 0x48098a00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=759350: compare 0x48098a00 dlsym PL_HashString 6
+4=759354: compare 0x48098e00 dlsym _PR_NotifyThread 6
+2=759356: compare 0x48098e00 dlsym dlsym 6
+3=759359: compare 0x48098c00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=759362: compare 0x48098c00 dlsym PL_strndup 6
+3=759365: compare 0x48098c00 dlsym PL_strdup 6
+3=759368: compare 0x48098e00 dlsym _PR_NotifyThread 6
+2=759370: compare 0x48098e00 dlsym dlsym 6
+3=759373: compare 0x48098e00 dlsym _PR_NotifyThread 6
+3=759376: compare 0x48098e00 dlsym dlsym 6
+2=759378: compare 0x48098600 dlsym js_watch_set 6
+3=759381: compare 0x48098a00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=759384: compare 0x48098a00 dlsym PL_HashString 6
+3=759387: compare 0x48098e00 dlsym _PR_NotifyThread 6
+2=759389: compare 0x48098e00 dlsym dlsym 6
+2=759391: compare 0x48098c00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=759394: compare 0x48098c00 dlsym PL_strndup 6
+2=759396: compare 0x48098c00 dlsym PL_strdup 6
+4=759400: compare 0x48098e00 dlsym _PR_NotifyThread 6
+3=759403: compare 0x48098e00 dlsym dlsym 6
+4=759407: compare 0x48098e00 dlsym _PR_NotifyThread 6
+4=759411: compare 0x48098e00 dlsym dlsym 6
+3=759414: compare 0x4850a000 dlsym ilogb 6
+3=759417: compare 0x4850a000 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=759420: compare 0x4850a000 dlsym copysignf 6
+3=759423: compare 0x4850a200 dlsym remainder 6
+3=759426: compare 0x4850a200 dlsym isnanf 6
+2=759428: compare 0x4809a800 dlsym _GLOBAL_OFFSET_TABLE_ 6
+2=759430: compare 0x4809a800 dlsym __bindings 6
+2=759432: compare 0x4850a400 dlsym clone__Q2t12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0_3Rep 6
+3=759435: compare 0x4850a400 dlsym __mi__H1Zr_X01RCt7complex1ZX01_t7complex1ZX01 6
+4=759439: compare 0x4850a400 dlsym find_first_of__Ct12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0RCt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Ui 6
+4=759443: compare 0x4850a400 dlsym tell__11edit_bufferP9edit_mark 6
+3=759446: compare 0x4850a400 dlsym sync__9streambuf 6
+3=759449: compare 0x4809a800 dlsym _GLOBAL_OFFSET_TABLE_ 6
+2=759451: compare 0x4809a800 dlsym __bindings 6
+3=759454: compare 0x4850a400 dlsym clone__Q2t12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc
+3=759457: compare 0x4850a400 dlsym __mi__H1Zr_X01RCt7complex1ZX01_t7complex1ZX01 6
+3=759460: compare 0x4850a400 dlsym find_first_of__Ct12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0RCt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Ui 6
+3=759463: compare 0x4850a400 dlsym tell__11edit_bufferP9edit_mark 6
+2=759465: compare 0x4850a400 dlsym sync__9streambuf 6
+2=759467: compare 0x4850a000 dlsym ilogb 6
+3=759470: compare 0x4850a000 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=759473: compare 0x4850a000 dlsym copysignf 6
+3=759476: compare 0x4850a200 dlsym remainder 6
+3=759479: compare 0x4850a200 dlsym isnanf 6
+3=759482:   checking containing DAG /usr/X11R6/lib/mozilla/components/libjsd.so
+5=759487: compare 0x48098a00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=759490: compare 0x48098a00 dlsym PL_HashString 6
+3=759493: compare 0x48098e00 dlsym _PR_NotifyThread 6
+3=759496: compare 0x48098e00 dlsym dlsym 6
+4=759500: compare 0x48098c00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=759503: compare 0x48098c00 dlsym PL_strndup 6
+3=759506: compare 0x48098c00 dlsym PL_strdup 6
+1=759507: compare 0x48098e00 dlsym _PR_NotifyThread 6
+3=759510: compare 0x48098e00 dlsym dlsym 6
+2=759512: compare 0x48098e00 dlsym _PR_NotifyThread 6
+2=759514: compare 0x48098e00 dlsym dlsym 6
+4=759518: compare 0x4809a800 dlsym _GLOBAL_OFFSET_TABLE_ 6
+4=759522: compare 0x4809a800 dlsym __bindings 6
+4=759526: compare 0x4850a400 dlsym clone__Q2t12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0_3Rep 6
+2=759528: compare 0x4850a400 dlsym __mi__H1Zr_X01RCt7complex1ZX01_t7complex1ZX01 6
+3=759531: compare 0x4850a400 dlsym find_first_of__Ct12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0RCt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Ui 6
+2=759533: compare 0x4850a400 dlsym tell__11edit_bufferP9edit_mark 6
+3=759536: compare 0x4850a400 dlsym sync__9streambuf 6
+3=759539: compare 0x4850a000 dlsym ilogb 6
+2=759541: compare 0x4850a000 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=759544: compare 0x4850a000 dlsym copysignf 6
+4=759548: compare 0x4850a200 dlsym remainder 6
+3=759551: compare 0x4850a200 dlsym isnanf 6
+4=759555: compare 0x48098a00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=759558: compare 0x48098a00 dlsym PL_HashString 6
+3=759561: compare 0x48098e00 dlsym _PR_NotifyThread 6
+1=759562: compare 0x48098e00 dlsym dlsym 6
+3=759565: compare 0x48098c00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+4=759569: compare 0x48098c00 dlsym PL_strndup 6
+4=759573: compare 0x48098c00 dlsym PL_strdup 6
+3=759576: compare 0x48098e00 dlsym _PR_NotifyThread 6
+1=759577: compare 0x48098e00 dlsym dlsym 6
+3=759580: compare 0x48098e00 dlsym _PR_NotifyThread 6
+4=759584: compare 0x48098e00 dlsym dlsym 6
+3=759587: compare 0x48098600 dlsym js_watch_set 6
+3=759590: compare 0x48098a00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=759593: compare 0x48098a00 dlsym PL_HashString 6
+4=759597: compare 0x48098e00 dlsym _PR_NotifyThread 6
+3=759600: compare 0x48098e00 dlsym dlsym 6
+3=759603: compare 0x48098c00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+1=759604: compare 0x48098c00 dlsym PL_strndup 6
+3=759607: compare 0x48098c00 dlsym PL_strdup 6
+3=759610: compare 0x48098e00 dlsym _PR_NotifyThread 6
+2=759612: compare 0x48098e00 dlsym dlsym 6
+3=759615: compare 0x48098e00 dlsym _PR_NotifyThread 6
+3=759618: compare 0x48098e00 dlsym dlsym 6
+3=759621: compare 0x4850a000 dlsym ilogb 6
+3=759624: compare 0x4850a000 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=759627: compare 0x4850a000 dlsym copysignf 6
+4=759631: compare 0x4850a200 dlsym remainder 6
+2=759633: compare 0x4850a200 dlsym isnanf 6
+3=759636: compare 0x4809a800 dlsym _GLOBAL_OFFSET_TABLE_ 6
+4=759640: compare 0x4809a800 dlsym __bindings 6
+4=759644: compare 0x4850a400 dlsym clone__Q2t12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0_3Rep 6
+3=759647: compare 0x4850a400 dlsym __mi__H1Zr_X01RCt7complex1ZX01_t7complex1ZX01 6
+3=759650: compare 0x4850a400 dlsym find_first_of__Ct12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0RCt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Ui 6
+2=759652: compare 0x4850a400 dlsym tell__11edit_bufferP9edit_mark 6
+3=759655: compare 0x4850a400 dlsym sync__9streambuf 6
+4=759659: compare 0x4809a800 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=759662: compare 0x4809a800 dlsym __bindings 6
+3=759665: compare 0x4850a400 dlsym clone__Q2t12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0_3Rep 6
+3=759668: compare 0x4850a400 dlsym __mi__H1Zr_X01RCt7complex1ZX01_t7complex1ZX01 6
+6=759674: compare 0x4850a400 dlsym find_first_of__Ct12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0RCt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Ui 6
+3=759677: compare 0x4850a400 dlsym tell__11edit_bufferP9edit_mark 6
+4=759681: compare 0x4850a400 dlsym sync__9streambuf 6
+4=759685: compare 0x4850a000 dlsym ilogb 6
+4=759689: compare 0x4850a000 dlsym _GLOBAL_OFFSET_TABLE_ 6
+7=759696: compare 0x4850a000 dlsym copysignf 6
+5=759701: compare 0x4850a200 dlsym remainder 6
+4=759705: compare 0x4850a200 dlsym isnanf 6
+6=759711:   checking containing DAG /usr/X11R6/lib/mozilla/components/libjsd.so
+7=759718: compare 0x48098a00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+4=759722: compare 0x48098a00 dlsym PL_HashString 6
+4=759726: compare 0x48098e00 dlsym _PR_NotifyThread 6
+4=759730: compare 0x48098e00 dlsym dlsym 6
+6=759736: compare 0x48098c00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+5=759741: compare 0x48098c00 dlsym PL_strndup 6
+5=759746: compare 0x48098c00 dlsym PL_strdup 6
+5=759751: compare 0x48098e00 dlsym _PR_NotifyThread 6
+5=759756: compare 0x48098e00 dlsym dlsym 6
+17=759773: compare 0x48098e00 dlsym _PR_NotifyThread 6
+5=759778: compare 0x48098e00 dlsym dlsym 6
+6=759784: compare 0x4809a800 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=759787: compare 0x4809a800 dlsym __bindings 6
+7=759794: compare 0x4850a400 dlsym clone__Q2t12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0_3Rep 6
+7=759801: compare 0x4850a400 dlsym __mi__H1Zr_X01RCt7complex1ZX01_t7complex1ZX01 6
+4=759805: compare 0x4850a400 dlsym find_first_of__Ct12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0RCt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Ui 6
+3=759808: compare 0x4850a400 dlsym tell__11edit_bufferP9edit_mark 6
+5=759813: compare 0x4850a400 dlsym sync__9streambuf 6
+2=759815: compare 0x4850a000 dlsym ilogb 6
+3=759818: compare 0x4850a000 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=759821: compare 0x4850a000 dlsym copysignf 6
+3=759824: compare 0x4850a200 dlsym remainder 6
+3=759827: compare 0x4850a200 dlsym isnanf 6
+4=759831: compare 0x48098a00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+5=759836: compare 0x48098a00 dlsym PL_HashString 6
+4=759840: compare 0x48098e00 dlsym _PR_NotifyThread 6
+2=759842: compare 0x48098e00 dlsym dlsym 6
+4=759846: compare 0x48098c00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+4=759850: compare 0x48098c00 dlsym PL_strndup 6
+3=759853: compare 0x48098c00 dlsym PL_strdup 6
+4=759857: compare 0x48098e00 dlsym _PR_NotifyThread 6
+5=759862: compare 0x48098e00 dlsym dlsym 6
+4=759866: compare 0x48098e00 dlsym _PR_NotifyThread 6
+4=759870: compare 0x48098e00 dlsym dlsym 6
+3=759873: compare 0x48098600 dlsym js_watch_set 6
+4=759877: compare 0x48098a00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+4=759881: compare 0x48098a00 dlsym PL_HashString 6
+4=759885: compare 0x48098e00 dlsym _PR_NotifyThread 6
+4=759889: compare 0x48098e00 dlsym dlsym 6
+5=759894: compare 0x48098c00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+4=759898: compare 0x48098c00 dlsym PL_strndup 6
+3=759901: compare 0x48098c00 dlsym PL_strdup 6
+4=759905: compare 0x48098e00 dlsym _PR_NotifyThread 6
+6=759911: compare 0x48098e00 dlsym dlsym 6
+4=759915: compare 0x48098e00 dlsym _PR_NotifyThread 6
+3=759918: compare 0x48098e00 dlsym dlsym 6
+3=759921: compare 0x4850a000 dlsym ilogb 6
+5=759926: compare 0x4850a000 dlsym _GLOBAL_OFFSET_TABLE_ 6
+4=759930: compare 0x4850a000 dlsym copysignf 6
+3=759933: compare 0x4850a200 dlsym remainder 6
+2=759935: compare 0x4850a200 dlsym isnanf 6
+5=759940: compare 0x4809a800 dlsym _GLOBAL_OFFSET_TABLE_ 6
+4=759944: compare 0x4809a800 dlsym __bindings 6
+4=759948: compare 0x4850a400 dlsym clone__Q2t12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0_3Rep 6
+4=759952: compare 0x4850a400 dlsym __mi__H1Zr_X01RCt7complex1ZX01_t7complex1ZX01 6
+4=759956: compare 0x4850a400 dlsym find_first_of__Ct12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0RCt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Ui 6
+2=759958: compare 0x4850a400 dlsym tell__11edit_bufferP9edit_mark 6
+4=759962: compare 0x4850a400 dlsym sync__9streambuf 6
+4=759966: compare 0x4809a800 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=759969: compare 0x4809a800 dlsym __bindings 6
+3=759972: compare 0x4850a400 dlsym clone__Q2t12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0_3Rep 6
+3=759975: compare 0x4850a400 dlsym __mi__H1Zr_X01RCt7complex1ZX01_t7complex1ZX01 6
+3=759978: compare 0x4850a400 dlsym find_first_of__Ct12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0RCt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Ui 6
+1=759979: compare 0x4850a400 dlsym tell__11edit_bufferP9edit_mark 6
+4=759983: compare 0x4850a400 dlsym sync__9streambuf 6
+2=759985: compare 0x4850a000 dlsym ilogb 6
+2=759987: compare 0x4850a000 dlsym _GLOBAL_OFFSET_TABLE_ 6
+1=759988: compare 0x4850a000 dlsym copysignf 6
+3=759991: compare 0x4850a200 dlsym remainder 6
+4=759995: compare 0x4850a200 dlsym isnanf 6
+2=759997:   checking containing DAG /usr/X11R6/lib/mozilla/components/libjsd.so
+3=760000: compare 0x48098a00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=760003: compare 0x48098a00 dlsym PL_HashString 6
+3=760006: compare 0x48098e00 dlsym _PR_NotifyThread 6
+2=760008: compare 0x48098e00 dlsym dlsym 6
+2=760010: compare 0x48098c00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+2=760012: compare 0x48098c00 dlsym PL_strndup 6
+3=760015: compare 0x48098c00 dlsym PL_strdup 6
+1=760016: compare 0x48098e00 dlsym _PR_NotifyThread 6
+3=760019: compare 0x48098e00 dlsym dlsym 6
+3=760022: compare 0x48098e00 dlsym _PR_NotifyThread 6
+3=760025: compare 0x48098e00 dlsym dlsym 6
+1=760026: compare 0x4809a800 dlsym _GLOBAL_OFFSET_TABLE_ 6
+2=760028: compare 0x4809a800 dlsym __bindings 6
+4=760032: compare 0x4850a400 dlsym clone__Q2t12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0_3Rep 6
+3=760035: compare 0x4850a400 dlsym __mi__H1Zr_X01RCt7complex1ZX01_t7complex1ZX01 6
+2=760037: compare 0x4850a400 dlsym find_first_of__Ct12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0RCt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Ui 6
+2=760039: compare 0x4850a400 dlsym tell__11edit_bufferP9edit_mark 6
+3=760042: compare 0x4850a400 dlsym sync__9streambuf 6
+3=760045: compare 0x4850a000 dlsym ilogb 6
+2=760047: compare 0x4850a000 dlsym _GLOBAL_OFFSET_TABLE_ 6
+2=760049: compare 0x4850a000 dlsym copysignf 6
+3=760052: compare 0x4850a200 dlsym remainder 6
+2=760054: compare 0x4850a200 dlsym isnanf 6
+3=760057: compare 0x48098a00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=760060: compare 0x48098a00 dlsym PL_HashString 6
+3=760063: compare 0x48098e00 dlsym _PR_NotifyThread 6
+3=760066: compare 0x48098e00 dlsym dlsym 6
+2=760068: compare 0x48098c00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+4=760072: compare 0x48098c00 dlsym PL_strndup 6
+3=760075: compare 0x48098c00 dlsym PL_strdup 6
+3=760078: compare 0x48098e00 dlsym _PR_NotifyThread 6
+1=760079: compare 0x48098e00 dlsym dlsym 6
+3=760082: compare 0x48098e00 dlsym _PR_NotifyThread 6
+3=760085: compare 0x48098e00 dlsym dlsym 6
+2=760087: compare 0x48098600 dlsym js_watch_set 6
+2=760089: compare 0x48098a00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=760092: compare 0x48098a00 dlsym PL_HashString 6
+3=760095: compare 0x48098e00 dlsym _PR_NotifyThread 6
+3=760098: compare 0x48098e00 dlsym dlsym 6
+2=760100: compare 0x48098c00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=760103: compare 0x48098c00 dlsym PL_strndup 6
+3=760106: compare 0x48098c00 dlsym PL_strdup 6
+1=760107: compare 0x48098e00 dlsym _PR_NotifyThread 6
+3=760110: compare 0x48098e00 dlsym dlsym 6
+2=760112: compare 0x48098e00 dlsym _PR_NotifyThread 6
+3=760115: compare 0x48098e00 dlsym dlsym 6
+1=760116: compare 0x4850a000 dlsym ilogb 6
+2=760118: compare 0x4850a000 dlsym _GLOBAL_OFFSET_TABLE_ 6
+4=760122: compare 0x4850a000 dlsym copysignf 6
+3=760125: compare 0x4850a200 dlsym remainder 6
+3=760128: compare 0x4850a200 dlsym isnanf 6
+2=760130: compare 0x4809a800 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=760133: compare 0x4809a800 dlsym __bindings 6
+4=760137: compare 0x4850a400 dlsym clone__Q2t12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0_3Rep 6
+1=760138: compare 0x4850a400 dlsym __mi__H1Zr_X01RCt7complex1ZX01_t7complex1ZX01 6
+3=760141: compare 0x4850a400 dlsym find_first_of__Ct12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0RCt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Ui 6
+3=760144: compare 0x4850a400 dlsym tell__11edit_bufferP9edit_mark 6
+3=760147: compare 0x4850a400 dlsym sync__9streambuf 6
+4=760151: compare 0x4809a800 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=760154: compare 0x4809a800 dlsym __bindings 6
+3=760157: compare 0x4850a400 dlsym clone__Q2t12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0_3Rep 6
+3=760160: compare 0x4850a400 dlsym __mi__H1Zr_X01RCt7complex1ZX01_t7complex1ZX01 6
+2=760162: compare 0x4850a400 dlsym find_first_of__Ct12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0RCt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Ui 6
+4=760166: compare 0x4850a400 dlsym tell__11edit_bufferP9edit_mark 6
+4=760170: compare 0x4850a400 dlsym sync__9streambuf 6
+2=760172: compare 0x4850a000 dlsym ilogb 6
+3=760175: compare 0x4850a000 dlsym _GLOBAL_OFFSET_TABLE_ 6
+4=760179: compare 0x4850a000 dlsym copysignf 6
+3=760182: compare 0x4850a200 dlsym remainder 6
+3=760185: compare 0x4850a200 dlsym isnanf 6
+4=760189:   checking containing DAG /usr/X11R6/lib/mozilla/components/libjsd.so
+6=760195: compare 0x48098a00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+4=760199: compare 0x48098a00 dlsym PL_HashString 6
+3=760202: compare 0x48098e00 dlsym _PR_NotifyThread 6
+3=760205: compare 0x48098e00 dlsym dlsym 6
+3=760208: compare 0x48098c00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+5=760213: compare 0x48098c00 dlsym PL_strndup 6
+4=760217: compare 0x48098c00 dlsym PL_strdup 6
+2=760219: compare 0x48098e00 dlsym _PR_NotifyThread 6
+5=760224: compare 0x48098e00 dlsym dlsym 6
+4=760228: compare 0x48098e00 dlsym _PR_NotifyThread 6
+4=760232: compare 0x48098e00 dlsym dlsym 6
+3=760235: compare 0x4809a800 dlsym _GLOBAL_OFFSET_TABLE_ 6
+4=760239: compare 0x4809a800 dlsym __bindings 6
+4=760243: compare 0x4850a400 dlsym clone__Q2t12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0_3Rep 6
+4=760247: compare 0x4850a400 dlsym __mi__H1Zr_X01RCt7complex1ZX01_t7complex1ZX01 6
+3=760250: compare 0x4850a400 dlsym find_first_of__Ct12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0RCt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Ui 6
+2=760252: compare 0x4850a400 dlsym tell__11edit_bufferP9edit_mark 6
+4=760256: compare 0x4850a400 dlsym sync__9streambuf 6
+2=760258: compare 0x4850a000 dlsym ilogb 6
+3=760261: compare 0x4850a000 dlsym _GLOBAL_OFFSET_TABLE_ 6
+4=760265: compare 0x4850a000 dlsym copysignf 6
+4=760269: compare 0x4850a200 dlsym remainder 6
+3=760272: compare 0x4850a200 dlsym isnanf 6
+4=760276: compare 0x48098a00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=760279: compare 0x48098a00 dlsym PL_HashString 6
+4=760283: compare 0x48098e00 dlsym _PR_NotifyThread 6
+3=760286: compare 0x48098e00 dlsym dlsym 6
+4=760290: compare 0x48098c00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+5=760295: compare 0x48098c00 dlsym PL_strndup 6
+4=760299: compare 0x48098c00 dlsym PL_strdup 6
+4=760303: compare 0x48098e00 dlsym _PR_NotifyThread 6
+3=760306: compare 0x48098e00 dlsym dlsym 6
+5=760311: compare 0x48098e00 dlsym _PR_NotifyThread 6
+3=760314: compare 0x48098e00 dlsym dlsym 6
+4=760318: compare 0x48098600 dlsym js_watch_set 6
+3=760321: compare 0x48098a00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+4=760325: compare 0x48098a00 dlsym PL_HashString 6
+4=760329: compare 0x48098e00 dlsym _PR_NotifyThread 6
+4=760333: compare 0x48098e00 dlsym dlsym 6
+4=760337: compare 0x48098c00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+4=760341: compare 0x48098c00 dlsym PL_strndup 6
+3=760344: compare 0x48098c00 dlsym PL_strdup 6
+4=760348: compare 0x48098e00 dlsym _PR_NotifyThread 6
+4=760352: compare 0x48098e00 dlsym dlsym 6
+5=760357: compare 0x48098e00 dlsym _PR_NotifyThread 6
+4=760361: compare 0x48098e00 dlsym dlsym 6
+3=760364: compare 0x4850a000 dlsym ilogb 6
+3=760367: compare 0x4850a000 dlsym _GLOBAL_OFFSET_TABLE_ 6
+4=760371: compare 0x4850a000 dlsym copysignf 6
+4=760375: compare 0x4850a200 dlsym remainder 6
+2=760377: compare 0x4850a200 dlsym isnanf 6
+5=760382: compare 0x4809a800 dlsym _GLOBAL_OFFSET_TABLE_ 6
+4=760386: compare 0x4809a800 dlsym __bindings 6
+4=760390: compare 0x4850a400 dlsym clone__Q2t12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0_3Rep 6
+3=760393: compare 0x4850a400 dlsym __mi__H1Zr_X01RCt7complex1ZX01_t7complex1ZX01 6
+3=760396: compare 0x4850a400 dlsym find_first_of__Ct12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0RCt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Ui 6
+4=760400: compare 0x4850a400 dlsym tell__11edit_bufferP9edit_mark 6
+4=760404: compare 0x4850a400 dlsym sync__9streambuf 6
+4=760408: compare 0x4809a800 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=760411: compare 0x4809a800 dlsym __bindings 6
+3=760414: compare 0x4850a400 dlsym clone__Q2t12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0_3Rep 6
+3=760417: compare 0x4850a400 dlsym __mi__H1Zr_X01RCt7complex1ZX01_t7complex1ZX01 6
+3=760420: compare 0x4850a400 dlsym find_first_of__Ct12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0RCt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Ui 6
+2=760422: compare 0x4850a400 dlsym tell__11edit_bufferP9edit_mark 6
+4=760426: compare 0x4850a400 dlsym sync__9streambuf 6
+3=760429: compare 0x4850a000 dlsym ilogb 6
+3=760432: compare 0x4850a000 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=760435: compare 0x4850a000 dlsym copysignf 6
+5=760440: compare 0x4850a200 dlsym remainder 6
+3=760443: compare 0x4850a200 dlsym isnanf 6
+4=760447:   checking containing DAG /usr/X11R6/lib/mozilla/components/libjsd.so
+4=760451: compare 0x48098a00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+4=760455: compare 0x48098a00 dlsym PL_HashString 6
+4=760459: compare 0x48098e00 dlsym _PR_NotifyThread 6
+3=760462: compare 0x48098e00 dlsym dlsym 6
+4=760466: compare 0x48098c00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+4=760470: compare 0x48098c00 dlsym PL_strndup 6
+3=760473: compare 0x48098c00 dlsym PL_strdup 6
+4=760477: compare 0x48098e00 dlsym _PR_NotifyThread 6
+3=760480: compare 0x48098e00 dlsym dlsym 6
+6=760486: compare 0x48098e00 dlsym _PR_NotifyThread 6
+3=760489: compare 0x48098e00 dlsym dlsym 6
+3=760492: compare 0x4809a800 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=760495: compare 0x4809a800 dlsym __bindings 6
+4=760499: compare 0x4850a400 dlsym clone__Q2t12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0_3Rep 6
+3=760502: compare 0x4850a400 dlsym __mi__H1Zr_X01RCt7complex1ZX01_t7complex1ZX01 6
+3=760505: compare 0x4850a400 dlsym find_first_of__Ct12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0RCt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Ui 6
+1=760506: compare 0x4850a400 dlsym tell__11edit_bufferP9edit_mark 6
+3=760509: compare 0x4850a400 dlsym sync__9streambuf 6
+2=760511: compare 0x4850a000 dlsym ilogb 6
+3=760514: compare 0x4850a000 dlsym _GLOBAL_OFFSET_TABLE_ 6
+1=760515: compare 0x4850a000 dlsym copysignf 6
+3=760518: compare 0x4850a200 dlsym remainder 6
+3=760521: compare 0x4850a200 dlsym isnanf 6
+2=760523: compare 0x48098a00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+2=760525: compare 0x48098a00 dlsym PL_HashString 6
+3=760528: compare 0x48098e00 dlsym _PR_NotifyThread 6
+3=760531: compare 0x48098e00 dlsym dlsym 6
+2=760533: compare 0x48098c00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+2=760535: compare 0x48098c00 dlsym PL_strndup 6
+3=760538: compare 0x48098c00 dlsym PL_strdup 6
+3=760541: compare 0x48098e00 dlsym _PR_NotifyThread 6
+2=760543: compare 0x48098e00 dlsym dlsym 6
+2=760545: compare 0x48098e00 dlsym _PR_NotifyThread 6
+3=760548: compare 0x48098e00 dlsym dlsym 6
+3=760551: compare 0x48098600 dlsym js_watch_set 6
+2=760553: compare 0x48098a00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+2=760555: compare 0x48098a00 dlsym PL_HashString 6
+3=760558: compare 0x48098e00 dlsym _PR_NotifyThread 6
+2=760560: compare 0x48098e00 dlsym dlsym 6
+3=760563: compare 0x48098c00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=760566: compare 0x48098c00 dlsym PL_strndup 6
+2=760568: compare 0x48098c00 dlsym PL_strdup 6
+4=760572: compare 0x48098e00 dlsym _PR_NotifyThread 6
+4=760576: compare 0x48098e00 dlsym dlsym 6
+3=760579: compare 0x48098e00 dlsym _PR_NotifyThread 6
+3=760582: compare 0x48098e00 dlsym dlsym 6
+4=760586: compare 0x4850a000 dlsym ilogb 6
+3=760589: compare 0x4850a000 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=760592: compare 0x4850a000 dlsym copysignf 6
+3=760595: compare 0x4850a200 dlsym remainder 6
+4=760599: compare 0x4850a200 dlsym isnanf 6
+3=760602: compare 0x4809a800 dlsym _GLOBAL_OFFSET_TABLE_ 6
+2=760604: compare 0x4809a800 dlsym __bindings 6
+4=760608: compare 0x4850a400 dlsym clone__Q2t12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0_3Rep 6
+3=760611: compare 0x4850a400 dlsym __mi__H1Zr_X01RCt7complex1ZX01_t7complex1ZX01 6
+4=760615: compare 0x4850a400 dlsym find_first_of__Ct12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0RCt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Ui 6
+3=760618: compare 0x4850a400 dlsym tell__11edit_bufferP9edit_mark 6
+4=760622: compare 0x4850a400 dlsym sync__9streambuf 6
+4=760626: compare 0x4809a800 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=760629: compare 0x4809a800 dlsym __bindings 6
+4=760633: compare 0x4850a400 dlsym clone__Q2t12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0_3Rep 6
+3=760636: compare 0x4850a400 dlsym __mi__H1Zr_X01RCt7complex1ZX01_t7complex1ZX01 6
+3=760639: compare 0x4850a400 dlsym find_first_of__Ct12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0RCt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Ui 6
+4=760643: compare 0x4850a400 dlsym tell__11edit_bufferP9edit_mark 6
+4=760647: compare 0x4850a400 dlsym sync__9streambuf 6
+4=760651: compare 0x4850a000 dlsym ilogb 6
+1=760652: compare 0x4850a000 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=760655: compare 0x4850a000 dlsym copysignf 6
+2=760657: compare 0x4850a200 dlsym remainder 6
+3=760660: compare 0x4850a200 dlsym isnanf 6
+3=760663:   checking containing DAG /usr/X11R6/lib/mozilla/components/libjsd.so
+4=760667: compare 0x48098a00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+1=760668: compare 0x48098a00 dlsym PL_HashString 6
+3=760671: compare 0x48098e00 dlsym _PR_NotifyThread 6
+4=760675: compare 0x48098e00 dlsym dlsym 6
+3=760678: compare 0x48098c00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=760681: compare 0x48098c00 dlsym PL_strndup 6
+2=760683: compare 0x48098c00 dlsym PL_strdup 6
+3=760686: compare 0x48098e00 dlsym _PR_NotifyThread 6
+3=760689: compare 0x48098e00 dlsym dlsym 6
+3=760692: compare 0x48098e00 dlsym _PR_NotifyThread 6
+3=760695: compare 0x48098e00 dlsym dlsym 6
+6=760701: compare 0x4809a800 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=760704: compare 0x4809a800 dlsym __bindings 6
+4=760708: compare 0x4850a400 dlsym clone__Q2t12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0_3Rep 6
+3=760711: compare 0x4850a400 dlsym __mi__H1Zr_X01RCt7complex1ZX01_t7complex1ZX01 6
+5=760716: compare 0x4850a400 dlsym find_first_of__Ct12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0RCt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Ui 6
+3=760719: compare 0x4850a400 dlsym tell__11edit_bufferP9edit_mark 6
+2=760721: compare 0x4850a400 dlsym sync__9streambuf 6
+4=760725: compare 0x4850a000 dlsym ilogb 6
+4=760729: compare 0x4850a000 dlsym _GLOBAL_OFFSET_TABLE_ 6
+4=760733: compare 0x4850a000 dlsym copysignf 6
+3=760736: compare 0x4850a200 dlsym remainder 6
+4=760740: compare 0x4850a200 dlsym isnanf 6
+4=760744: compare 0x48098a00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=760747: compare 0x48098a00 dlsym PL_HashString 6
+3=760750: compare 0x48098e00 dlsym _PR_NotifyThread 6
+1=760751: compare 0x48098e00 dlsym dlsym 6
+3=760754: compare 0x48098c00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=760757: compare 0x48098c00 dlsym PL_strndup 6
+3=760760: compare 0x48098c00 dlsym PL_strdup 6
+1=760761: compare 0x48098e00 dlsym _PR_NotifyThread 6
+4=760765: compare 0x48098e00 dlsym dlsym 6
+2=760767: compare 0x48098e00 dlsym _PR_NotifyThread 6
+4=760771: compare 0x48098e00 dlsym dlsym 6
+4=760775: compare 0x48098600 dlsym js_watch_set 6
+3=760778: compare 0x48098a00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=760781: compare 0x48098a00 dlsym PL_HashString 6
+3=760784: compare 0x48098e00 dlsym _PR_NotifyThread 6
+3=760787: compare 0x48098e00 dlsym dlsym 6
+3=760790: compare 0x48098c00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+2=760792: compare 0x48098c00 dlsym PL_strndup 6
+3=760795: compare 0x48098c00 dlsym PL_strdup 6
+4=760799: compare 0x48098e00 dlsym _PR_NotifyThread 6
+2=760801: compare 0x48098e00 dlsym dlsym 6
+4=760805: compare 0x48098e00 dlsym _PR_NotifyThread 6
+3=760808: compare 0x48098e00 dlsym dlsym 6
+3=760811: compare 0x4850a000 dlsym ilogb 6
+3=760814: compare 0x4850a000 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=760817: compare 0x4850a000 dlsym copysignf 6
+2=760819: compare 0x4850a200 dlsym remainder 6
+4=760823: compare 0x4850a200 dlsym isnanf 6
+3=760826: compare 0x4809a800 dlsym _GLOBAL_OFFSET_TABLE_ 6
+4=760830: compare 0x4809a800 dlsym __bindings 6
+4=760834: compare 0x4850a400 dlsym clone__Q2t12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0_3Rep 6
+3=760837: compare 0x4850a400 dlsym __mi__H1Zr_X01RCt7complex1ZX01_t7complex1ZX01 6
+5=760842: compare 0x4850a400 dlsym find_first_of__Ct12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0RCt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Ui 6
+3=760845: compare 0x4850a400 dlsym tell__11edit_bufferP9edit_mark 6
+2=760847: compare 0x4850a400 dlsym sync__9streambuf 6
+5=760852: compare 0x4809a800 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=760855: compare 0x4809a800 dlsym __bindings 6
+4=760859: compare 0x4850a400 dlsym clone__Q2t12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0_3Rep 6
+3=760862: compare 0x4850a400 dlsym __mi__H1Zr_X01RCt7complex1ZX01_t7complex1ZX01 6
+4=760866: compare 0x4850a400 dlsym find_first_of__Ct12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0RCt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Ui 6
+3=760869: compare 0x4850a400 dlsym tell__11edit_bufferP9edit_mark 6
+3=760872: compare 0x4850a400 dlsym sync__9streambuf 6
+4=760876: compare 0x4850a000 dlsym ilogb 6
+4=760880: compare 0x4850a000 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=760883: compare 0x4850a000 dlsym copysignf 6
+5=760888: compare 0x4850a200 dlsym remainder 6
+4=760892: compare 0x4850a200 dlsym isnanf 6
+1=760893:   checking containing DAG /usr/X11R6/lib/mozilla/components/libjsd.so
+3=760896: compare 0x48098a00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=760899: compare 0x48098a00 dlsym PL_HashString 6
+4=760903: compare 0x48098e00 dlsym _PR_NotifyThread 6
+3=760906: compare 0x48098e00 dlsym dlsym 6
+3=760909: compare 0x48098c00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+5=760914: compare 0x48098c00 dlsym PL_strndup 6
+2=760916: compare 0x48098c00 dlsym PL_strdup 6
+3=760919: compare 0x48098e00 dlsym _PR_NotifyThread 6
+3=760922: compare 0x48098e00 dlsym dlsym 6
+4=760926: compare 0x48098e00 dlsym _PR_NotifyThread 6
+2=760928: compare 0x48098e00 dlsym dlsym 6
+4=760932: compare 0x4809a800 dlsym _GLOBAL_OFFSET_TABLE_ 6
+2=760934: compare 0x4809a800 dlsym __bindings 6
+3=760937: compare 0x4850a400 dlsym clone__Q2t12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0_3Rep 6
+3=760940: compare 0x4850a400 dlsym __mi__H1Zr_X01RCt7complex1ZX01_t7complex1ZX01 6
+1=760941: compare 0x4850a400 dlsym find_first_of__Ct12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0RCt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Ui 6
+3=760944: compare 0x4850a400 dlsym tell__11edit_bufferP9edit_mark 6
+3=760947: compare 0x4850a400 dlsym sync__9streambuf 6
+5=760952: compare 0x4850a000 dlsym ilogb 6
+3=760955: compare 0x4850a000 dlsym _GLOBAL_OFFSET_TABLE_ 6
+2=760957: compare 0x4850a000 dlsym copysignf 6
+4=760961: compare 0x4850a200 dlsym remainder 6
+3=760964: compare 0x4850a200 dlsym isnanf 6
+3=760967: compare 0x48098a00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=760970: compare 0x48098a00 dlsym PL_HashString 6
+4=760974: compare 0x48098e00 dlsym _PR_NotifyThread 6
+2=760976: compare 0x48098e00 dlsym dlsym 6
+4=760980: compare 0x48098c00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+4=760984: compare 0x48098c00 dlsym PL_strndup 6
+4=760988: compare 0x48098c00 dlsym PL_strdup 6
+5=760993: compare 0x48098e00 dlsym _PR_NotifyThread 6
+4=760997: compare 0x48098e00 dlsym dlsym 6
+4=761001: compare 0x48098e00 dlsym _PR_NotifyThread 6
+3=761004: compare 0x48098e00 dlsym dlsym 6
+4=761008: compare 0x48098600 dlsym js_watch_set 6
+2=761010: compare 0x48098a00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=761013: compare 0x48098a00 dlsym PL_HashString 6
+3=761016: compare 0x48098e00 dlsym _PR_NotifyThread 6
+1=761017: compare 0x48098e00 dlsym dlsym 6
+4=761021: compare 0x48098c00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+5=761026: compare 0x48098c00 dlsym PL_strndup 6
+4=761030: compare 0x48098c00 dlsym PL_strdup 6
+4=761034: compare 0x48098e00 dlsym _PR_NotifyThread 6
+4=761038: compare 0x48098e00 dlsym dlsym 6
+4=761042: compare 0x48098e00 dlsym _PR_NotifyThread 6
+3=761045: compare 0x48098e00 dlsym dlsym 6
+5=761050: compare 0x4850a000 dlsym ilogb 6
+5=761055: compare 0x4850a000 dlsym _GLOBAL_OFFSET_TABLE_ 6
+4=761059: compare 0x4850a000 dlsym copysignf 6
+4=761063: compare 0x4850a200 dlsym remainder 6
+2=761065: compare 0x4850a200 dlsym isnanf 6
+3=761068: compare 0x4809a800 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=761071: compare 0x4809a800 dlsym __bindings 6
+4=761075: compare 0x4850a400 dlsym clone__Q2t12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0_3Rep 6
+3=761078: compare 0x4850a400 dlsym __mi__H1Zr_X01RCt7complex1ZX01_t7complex1ZX01 6
+3=761081: compare 0x4850a400 dlsym find_first_of__Ct12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0RCt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Ui 6
+3=761084: compare 0x4850a400 dlsym tell__11edit_bufferP9edit_mark 6
+2=761086: compare 0x4850a400 dlsym sync__9streambuf 6
+3=761089: compare 0x4809a800 dlsym _GLOBAL_OFFSET_TABLE_ 6
+5=761094: compare 0x4809a800 dlsym __bindings 6
+4=761098: compare 0x4850a400 dlsym clone__Q2t12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0_3Rep 6
+2=761100: compare 0x4850a400 dlsym __mi__H1Zr_X01RCt7complex1ZX01_t7complex1ZX01 6
+4=761104: compare 0x4850a400 dlsym find_first_of__Ct12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0RCt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Ui 6
+3=761107: compare 0x4850a400 dlsym tell__11edit_bufferP9edit_mark 6
+3=761110: compare 0x4850a400 dlsym sync__9streambuf 6
+3=761113: compare 0x4850a000 dlsym ilogb 6
+2=761115: compare 0x4850a000 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=761118: compare 0x4850a000 dlsym copysignf 6
+2=761120: compare 0x4850a200 dlsym remainder 6
+4=761124: compare 0x4850a200 dlsym isnanf 6
+4=761128:   checking global symbols
+3=761131: compare 0x48098200 dlsym do_AppendFromElement__8nsStringUs 6
+3=761134: compare 0x48098200 dlsym FindChar__C9nsCStringUsii 6
+5=761139: compare 0x48098600 dlsym js_watch_set 6
+3=761142: compare 0x48098a00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+2=761144: compare 0x48098a00 dlsym PL_HashString 6
+3=761147: compare 0x48098c00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+2=761149: compare 0x48098c00 dlsym PL_strndup 6
+3=761152: compare 0x48098c00 dlsym PL_strdup 6
+1=761153: compare 0x48098e00 dlsym _PR_NotifyThread 6
+4=761157: compare 0x48098e00 dlsym dlsym 6
+4=761161: compare 0x4809a000 dlsym gtk_progress_get_current_text 6
+3=761164: compare 0x4809a000 dlsym gtk_frame_set_shadow_type 6
+3=761167: compare 0x4809a000 dlsym gtk_button_enter 6
+3=761170: compare 0x4809a200 dlsym XShmCreateImage 6
+4=761174: compare 0x4809a200 dlsym gdk_timer_get 6
+4=761178: compare 0x4809a400 dlsym g_thread_functions_for_glib_use 6
+3=761181: compare 0x4809a400 dlsym dlsym 6
+3=761184: compare 0x4809a800 dlsym _GLOBAL_OFFSET_TABLE_ 6
+3=761187: compare 0x4809a800 dlsym __bindings 6
+6=761193: compare 0x4809aa00 dlsym _GLOBAL_OFFSET_TABLE_ 6
+4=761197: compare 0x4809ac00 dlsym XextAddDisplay 6
+3=761200: compare 0x4809ae00 dlsym XInstallColormap 6
+4=761204: compare 0x4809ae00 dlsym XkbIgnoreExtension 6
+4=761208: compare 0x4809ae00 dlsym XcmsCIEuvYToCIELuv 6
+3=761211: compare 0x4809ae00 dlsym XkbFindOverlayForKey 6
+3=761214: compare 0x4850a000 dlsym ilogb 6
+5=761219: compare 0x4850a000 dlsym _GLOBAL_OFFSET_TABLE_ 6
+4=761223: compare 0x4850a000 dlsym copysignf 6
+4=761227: compare 0x4850a200 dlsym remainder 6
+3=761230: compare 0x4850a200 dlsym isnanf 6
+5=761235: compare 0x4850a400 dlsym clone__Q2t12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0_3Rep 6
+4=761239: compare 0x4850a400 dlsym __mi__H1Zr_X01RCt7complex1ZX01_t7complex1ZX01 6
+2=761241: compare 0x4850a400 dlsym find_first_of__Ct12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0RCt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Ui 6
+2=761243: compare 0x4850a400 dlsym tell__11edit_bufferP9edit_mark 6
+4=761247: compare 0x4850a400 dlsym sync__9streambuf 6
+4=761251: compare 0x4850a600 dlsym dlsym 6

-- 
David Laight: david@l8s.co.uk