+ Accelerating startup: + svt #1 offender: 2841 -> 1136 [ remove sRTF, sHTML ] + svx - #2 - 2655 [ of which 2015, _ZTV (700), _ZTI (700), _ZTS(600) ] + sw - #3 - 2290 [ only 723 are class/types ], [ 600 sRTF/sHTML ] + Lots of: _ZN13SfxUInt32Item10StaticTypeEv ~ 100 instances. + Lots of: _ZN19SfxStatusBarControl24RegisterStatusBarControlEP9SfxModuleP17SfxStbCtrlFactory + icui18n - not using -Bsymb-functions (or vtrelocs?) ... + sb - lots of _ZVTR_ exports + configmgr + most odd ! - why are we resolving these globally !? + eg. _ZTIN9configmgr7backend11PropertyAddE + is that what we want !? :-) [ no! ] + can we add the '-Wbind-...' stuff only for libraries without .def files [ !? :-] Linker hacking: + LD hacks ? + LD_WEAKMAP=lib... + instant relocations if not in there (?) + much reduced lookup penalty + much warmer cache (?) + might be useful. + + objcopy - nearest thing to what we want in binutils. + special code to keep symbols with relocations ... --prune-relocs = ... + libbfd + seems not to bother with dynamic relocs (!?) + API for setting / removing them falls down ? + use native elf bits ? + write simpler separate code to massage it ? + add a 'weak library' thing full of weak symbols + elf code - (libelf?) + read all relocations, + uniqify all symbols + remove duplicate / weak symbols + do we need to even read the symbol tables ? + either + tag them as such in syms + or elide them from the table (built-in relocs?) + perl [?] + stub-map + 1 symbol - .out: 660 .so 1236 (stripped) + 2 symbol - .out: 688 .so 1324 (stripped) + 32 syms - .out: 1605 .so 2440 (stripped) + exrapolate; 10k syms == 744k [ at least !] + Loads of (weak?) symbols, very few necessary + Duplicates: 9328 of total 93569 + re-write the relocations [!] + TODO: + dig into SdrObject:: symbols. + What does the 'info' field contain + 'weak-ness' hint ? + Relocation processing 50-70% of the time ... ELF_DYNAMIC_DO_REL ((map), edr_lazy); -> _ELF_DYNAMIC_DO_RELOC (REL, rel, map, lazy, _ELF_CHECK_REL) * ELF_MACHINE_PLTREL_OVERLAP - not defined for i386 + the .lazy - code / data range (?) for (ranges_index = 0; ranges_index < 2; ++ranges_index) \ elf_dynamic_do_##reloc ((map), \ ranges[ranges_index].start, \ ranges[ranges_index].size, \ ranges[ranges_index].lazy); \ } \ + No relocation processing - only PLT processing can be lazy. + thousands of calls to elf_dynamic_do_reloc + + libsvx - 65k relocations ... + symbol analysis: + 1357 'vtable' + 4400 'non-virtual thunk' + Type analysis: + 1200 - R_386_RELATIVE + 5600 - R_386_GLOB_DAT + 12600 - R_386_JUMP_SLOT + 47100 - R_386_32 Relocation section '.rel.dyn' contains 53848 entries: SvxLineSpacingItem::GetPresentation(SfxItemPresentation, SfxMapUnit, SfxMapUnit, String&, IntlWrapper const*) const + Thunks: - multiple inheritance 'This' adjustors: + http://www.usenix.org/publications/library/proceedings/c++94/full_papers/baumgartner.a + http://66.102.9.104/search?q=cache:ayKhh8VT-DsJ:www.research.att.com/~bs/performanceTR.pdf+%22non-virtual%22+thunk+rational&hl=en + Only functions can be lazy linked ... + all pointers to global variables, functions etc. + must be resolved at link time. * we do cache relocations, such that symbol lookups are reduced * however - the symbol lookup scope contains duplicates [!?] + potentially two scopes ? * can we resolve if a relocation is to + a weak or strong symbol in advance ? + could look up in our own table 1st and work it out (?) + what is a relocation ? ;-) + this reloc is an: R_386_32 + 47k of them are R_386_32 relocs. libsvx - 65k relocations ... 248 ZNK6Window7GetTextEv 250 ZN6Window4MoveEv 262 ZN6Window8ActivateEv 264 ZN6Window10DeactivateEv 264 ZN6Window5KeyUpERK8KeyEvent 265 ZN6Window9UserEventEmPv 266 ZN6Window12GetClipboardEv 266 ZN6Window12GetSelectionEv 266 ZN6Window13GetDragSourceEv 266 ZN6Window13GetDropTargetEv 266 ZN6Window21GetComponentInterfaceEh 266 ZN6Window21SetComponentInterfaceEN3com3sun4star3uno9ReferenceINS2_3awt11XWindowPeerEEE 266 ZN6Window24GetDragGestureRecognizerEv 266 ZNK6Window17GetParentLabelForEPKS_ 266 ZNK6Window18GetParentLabeledByEPKS_ 274 ZN11SfxPoolItem12ScaleMetricsEll 274 ZNK11SfxPoolItem10HasMetricsEv 281 ZNK11SfxPoolItem10GetVersionEt 321 ZNK11SfxPoolItem7CompareERKS_RK11IntlWrapper 342 ZNK11SfxPoolItem10GetVersionEv 342 ZNK11SfxPoolItem5StoreER8SvStream 1006 _cxa_pure_virtual Looks like the re-location processing is horribly slow + lots of these relocations are for the same symbol (adjcently) + are we caching those lookups [!?] 5283: total time ('libfwl645li.so'): 0:130947 flags 0x101 5283: dl_open_worker fresh2 'libwrp645li.so' 1097237469:960576 5283: 5283: dl_open_worker 'libwrp645li.so' before map deps 1097237469:960965 5283: 5283: dl_open_worker 'libwrp645li.so' after map deps 1097237469:963210 5283: 5283: dl_open_worker 'libwrp645li.so' before relocate 1097237469:963390 5283: 5283: dl_open_worker 'libwrp645li.so' relocate './libj645li_g.so' 1097237469:963425 5283: 5283: dl_open_worker 'libwrp645li.so' relocate './libxcr645li.so' 1097237469:964026 5283: 5283: dl_open_worker 'libwrp645li.so' relocate './libxo645li.so' 1097237469:996123 5283: 5283: dl_open_worker 'libwrp645li.so' relocate './libgo645li.so' 1097237470:204004 5283: 5283: dl_open_worker 'libwrp645li.so' relocate './libsb645li.so' 1097237470:217921 5283: 5283: dl_open_worker 'libwrp645li.so' relocate './libfwe645li.so' 1097237470:283186 5283: 5283: dl_open_worker 'libwrp645li.so' relocate './libsfx645li.so' 1097237470:309325 5283: 5283: dl_open_worker 'libwrp645li.so' relocate './libsvx645li.so' 1097237470:519584 5283: 5283: dl_open_worker 'libwrp645li.so' relocate './libofa645li.so' 1097237471:289441 5283: 5283: dl_open_worker 'libwrp645li.so' relocate './libso645li.so' 1097237471:317938 5283: 5283: dl_open_worker 'libwrp645li.so' relocate './libwrp645li.so' 1097237471:368879 5283: 5283: dl_open_worker 'libwrp645li.so' after relocate 1097237471:372310 5283: 5283: dl_open_worker 'libwrp645li.so' after bump open count 1097237471:374122 5283: 5283: dl_open_worker end 'libwrp645li.so' 1097237471:374201 5283: total time ('libwrp645li.so'): 1:544618 flags 0x101 + dl-open.c (dl_open_worker): -> dl-reloc.c (_dl_relocate_object) -> dynamic-link.h etc. #0 _dl_lookup_symbol_x (undef_name=Variable "undef_name" is not available. ) at dl-lookup.c:233 #1 0x4000a3e4 in _dl_relocate_object (l=0x81a7e20, scope=0x81a7fc0, lazy=1, consider_profiling=0) at dl-machine.h:426 #2 0x413ff8b7 in dl_open_worker (a=0xbfffc690) at dl-open.c:322 ie. lazy == 1 - but still doing lots of symbol lookups (?) [ debug relocs ] dl-machine.h uses the 'RESOLVE*' macros to do lookups, from (inlined) elf_machine_rel* function. ELF_DYNAMIC_RELOCATE(...) -> elf_machine_runtime_setup() ... -> ELF_DYNAMIC_DO_REL() \ must do lots of chewing -> ELF_DYNAMIC_DOR_RELA() / do-rel.h (elf_dynamic_do_rel) + does most of the work ... Doing a 'full' make - it seems big chunks are included in libc: dl-open.c etc. make -C .. objdir=`pwd` -C elf subdir_lib include/link.h: linker structures. struct link_map - describes a loaded shared object; has lots of struct r_scope_elem core: do-lookup.h (do_lookup_x) + looks through a single scope (list of link maps / libraries) for a symbol. dl-lookup.c (_dl_lookup_symbol_x) + passed a NULL terminated array of scopes (4th arg) callers: dl-reloc.c (RESOLVE, RESOLVE_MAP) dl-rtld.c + (dl_main): debugging code + (struct: .dl_lookup_symbol_x) - hook dl-runtime.c + (profile_fixup) - profiling only + (fixup) - the real entry point called per PLT entry via. the trampoline. dl-open.c + _dl_open_worker - _Loads_ of OO.o linkage calls from here. dl-deps.c (_dl_map_object_deps) + builds the dep list we want into l_searchlist + only seems to work for dlopened' stuff. ( & deps ) + called from: + rtld _dl_map_object_deps vtable const ElfW(Sym) *sym = &symtab[ELFW(R_SYM) (reloc->r_info)]; + our local symbol info: elf/elf.h: typedef struct { Elf32_Word st_name; /* Symbol name (string tbl index) */ Elf32_Addr st_value; /* Symbol value */ Elf32_Word st_size; /* Symbol size */ unsigned char st_info; /* Symbol type and binding */ unsigned char st_other; /* Symbol visibility */ Elf32_Section st_shndx; /* Section index */ } Elf32_Sym; st_info: /* Legal values for ST_BIND subfield of st_info (symbol binding). */ #define STB_LOCAL 0 /* Local symbol */ #define STB_GLOBAL 1 /* Global symbol */ #define STB_WEAK 2 /* Weak symbol */ #define STB_NUM 3 /* Number of defined types. */ #define STB_LOOS 10 /* Start of OS-specific */ #define STB_HIOS 12 /* End of OS-specific */ #define STB_LOPROC 13 /* Start of processor-specific */ #define STB_HIPROC 15 /* End of processor-specific */ #define ELF32_ST_BIND(val) (((unsigned char) (val)) >> 4) if (*ref == NULL || ELFW(ST_BIND) ((*ref)->st_info) != STB_WEAK) _dl_lookup_symbol_skip (...) + only looks at objects loaded after the described object - pretty pants, but better. fixup: passed 'link_map' l -> scope Have Sym *symtab; & local sym; ie. can: if (ELFW(ST_BIND) ((*ref)->st_info) != STB_WEAK) ... do something fast ... switch (l->l_info[VERSYMIDX (DT_VERSYM)] != NULL) { is or is not versioned ... [ versioned symbols can be dog slow too ] } Passes l->l_scope for _both_ methods. + l_searchlist (?) - DT_NEEDED dependencies & their deps in order :-) + ... looks ideal ... [ dependency order ? ] LD_DEBUG= stops 'fixup' being called; + also stops things working nastily. Relocation processing: 5524: dl_open_worker 'libwrp645li.so' relocate './libsvx645li.so' 1097239792:994007 5524: 5524: symbol=_ZNK11SfxPoolItem5StoreER8SvStream; nurk lookup in file=./soffice.newlink 5524: symbol=_ZNK11SfxPoolItem5StoreER8SvStream; nurk lookup in file=./libvcl645li.so 5524: symbol=_ZNK11SfxPoolItem5StoreER8SvStream; nurk lookup in file=./libsvl645li.so 5524: symbol=_ZNK11SfxPoolItem10GetVersionEv; nurk lookup in file=./soffice.newlink 5524: symbol=_ZNK11SfxPoolItem10GetVersionEv; nurk lookup in file=./libvcl645li.so 5524: symbol=_ZNK11SfxPoolItem10GetVersionEv; nurk lookup in file=./libsvl645li.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=./soffice.newlink 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=./libvcl645li.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=./libsvl645li.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=./libsvt645li.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=./libutl645li.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=./libtl645li.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=./libcomphelp3gcc3.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=./libucbhelper2gcc3.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=./libvos3gcc3.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=./libcppuhelpergcc3.so.3 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=./libcppu.so.3 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=./libsal.so.3 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=./libtk645li.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/usr/X11R6/lib/libXext.so.6 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/usr/X11R6/lib/libSM.so.6 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/usr/X11R6/lib/libICE.so.6 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/usr/X11R6/lib/libX11.so.6 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/lib/libdl.so.2 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/lib/libpthread.so.0 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/lib/libm.so.6 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=./libstlport_gcc.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/usr/lib/libstdc++.so.5 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/opt/chroot/lib/libc.so.6 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=./libsot645li.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=./libicuuc.so.22 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=./libicule.so.22 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/usr/lib/libfreetype.so.6 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/lib/libz.so.1 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/usr/lib/libart_lgpl_2.so.2 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/opt/gnome/lib/libgnomevfs-2.so.0 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/opt/gnome/lib/libbonobo-activation.so.4 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/opt/gnome/lib/libORBit-2.so.0 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/opt/gnome/lib/libgmodule-2.0.so.0 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/opt/gnome/lib/libgthread-2.0.so.0 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/opt/gnome/lib/libglib-2.0.so.0 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=./libsalhelpergcc3.so.3 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/opt/chroot/lib/ld.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/lib/libgcc_s.so.1 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=./libicudata.so.22 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/opt/gnome/lib/libgconf-2.so.4 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/opt/gnome/lib/libbonobo-2.so.0 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/usr/lib/libxml2.so.2 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/usr/lib/libssl.so.0.9.7 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/usr/lib/libcrypto.so.0.9.7 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/lib/librt.so.1 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/opt/gnome/lib/libORBitCosNaming-2.so.0 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/opt/gnome/lib/libgobject-2.0.so.0 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/usr/lib/libpopt.so.0 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/opt/PPInstall/program/servicemgr.uno.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/opt/PPInstall/program/shlibloader.uno.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/opt/PPInstall/program/shlibloader.uno.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/opt/PPInstall/program/simplereg.uno.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/opt/PPInstall/program/nestedreg.uno.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/opt/PPInstall/program/typemgr.uno.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/opt/PPInstall/program/implreg.uno.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/opt/PPInstall/program/security.uno.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/opt/PPInstall/program/regtypeprov.uno.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=./libcfgmgr2.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=./typeconverter.uno.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=./sax.uno.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=./streams.uno.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=./libspl645li.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/opt/gnome/lib/gtk-2.0/engines/libindustrial.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/opt/gnome/lib/libgtk-x11-2.0.so.0 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/opt/gnome/lib/libgdk-x11-2.0.so.0 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/opt/gnome/lib/libatk-1.0.so.0 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/opt/gnome/lib/libgdk_pixbuf-2.0.so.0 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/opt/gnome/lib/libpangoxft-1.0.so.0 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/opt/gnome/lib/libpangox-1.0.so.0 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/opt/gnome/lib/libpango-1.0.so.0 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/usr/X11R6/lib/libXrandr.so.2 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/usr/X11R6/lib/libXi.so.6 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/usr/X11R6/lib/libXft.so.2 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/usr/X11R6/lib/libXrender.so.1 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/usr/lib/libfontconfig.so.1 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/opt/gnome/lib/libpangoft2-1.0.so.0 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=/usr/lib/libexpat.so.0 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=./libucb1.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=./libfwl645li.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=./libfwi645li.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=./libucpfile1.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=./libucpgvfs1.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=./libwrp645li.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=./libutl645li.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=./libsvt645li.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=./libso645li.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=./libsot645li.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=./libvos3gcc3.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=./libofa645li.so 5524: symbol=_ZNK18SvxWritingModeItem4TypeEv; nurk lookup in file=./libsvx645li.so 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=./soffice.newlink 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=./libvcl645li.so 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=./libsvl645li.so ** 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=./libsvt645li.so 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=./libutl645li.so 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=./libtl645li.so 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=./libcomphelp3gcc3.so 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=./libucbhelper2gcc3.so ** 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=./libvos3gcc3.so 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=./libcppuhelpergcc3.so.3 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=./libcppu.so.3 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=./libsal.so.3 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=./libtk645li.so 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/usr/X11R6/lib/libXext.so.6 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/usr/X11R6/lib/libSM.so.6 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/usr/X11R6/lib/libICE.so.6 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/usr/X11R6/lib/libX11.so.6 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/lib/libdl.so.2 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/lib/libpthread.so.0 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/lib/libm.so.6 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=./libstlport_gcc.so 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/usr/lib/libstdc++.so.5 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/opt/chroot/lib/libc.so.6 ** 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=./libsot645li.so 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=./libicuuc.so.22 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=./libicule.so.22 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/usr/lib/libfreetype.so.6 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/lib/libz.so.1 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/usr/lib/libart_lgpl_2.so.2 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/opt/gnome/lib/libgnomevfs-2.so.0 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/opt/gnome/lib/libbonobo-activation.so.4 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/opt/gnome/lib/libORBit-2.so.0 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/opt/gnome/lib/libgmodule-2.0.so.0 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/opt/gnome/lib/libgthread-2.0.so.0 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/opt/gnome/lib/libglib-2.0.so.0 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=./libsalhelpergcc3.so.3 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/opt/chroot/lib/ld.so 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/lib/libgcc_s.so.1 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=./libicudata.so.22 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/opt/gnome/lib/libgconf-2.so.4 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/opt/gnome/lib/libbonobo-2.so.0 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/usr/lib/libxml2.so.2 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/usr/lib/libssl.so.0.9.7 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/usr/lib/libcrypto.so.0.9.7 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/lib/librt.so.1 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/opt/gnome/lib/libORBitCosNaming-2.so.0 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/opt/gnome/lib/libgobject-2.0.so.0 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/usr/lib/libpopt.so.0 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/opt/PPInstall/program/servicemgr.uno.so 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/opt/PPInstall/program/shlibloader.uno.so 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/opt/PPInstall/program/simplereg.uno.so 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/opt/PPInstall/program/nestedreg.uno.so 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/opt/PPInstall/program/typemgr.uno.so 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/opt/PPInstall/program/implreg.uno.so 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/opt/PPInstall/program/security.uno.so 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/opt/PPInstall/program/regtypeprov.uno.so 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=./libcfgmgr2.so 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=./typeconverter.uno.so 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=./sax.uno.so 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=./streams.uno.so 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=./libspl645li.so 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/opt/gnome/lib/gtk-2.0/engines/libindustrial.so 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/opt/gnome/lib/libgtk-x11-2.0.so.0 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/opt/gnome/lib/libgdk-x11-2.0.so.0 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/opt/gnome/lib/libatk-1.0.so.0 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/opt/gnome/lib/libgdk_pixbuf-2.0.so.0 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/opt/gnome/lib/libpangoxft-1.0.so.0 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/opt/gnome/lib/libpangox-1.0.so.0 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/opt/gnome/lib/libpango-1.0.so.0 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/usr/X11R6/lib/libXrandr.so.2 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/usr/X11R6/lib/libXi.so.6 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/usr/X11R6/lib/libXft.so.2 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/usr/X11R6/lib/libXrender.so.1 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/usr/lib/libfontconfig.so.1 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/opt/gnome/lib/libpangoft2-1.0.so.0 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=/usr/lib/libexpat.so.0 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=./libucb1.so 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=./libfwl645li.so 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=./libfwi645li.so 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=./libucpfile1.so 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=./libucpgvfs1.so 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=./libwrp645li.so ** 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=./libutl645li.so ** 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=./libsvt645li.so 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=./libso645li.so ** 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=./libsot645li.so ** 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=./libvos3gcc3.so 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=./libofa645li.so 5524: symbol=_ZNK18SvxWritingModeItem3IsAEPFPvvE; nurk lookup in file=./libsvx645li.so 5524: symbol=_ZN18SvxWritingModeItemD1Ev; nurk lookup in file=./soffice.newlink 5524: symbol=_ZN18SvxWritingModeItemD1Ev; nurk lookup in file=./libvcl645li.so 5524: symbol=_ZN18SvxWritingModeItemD1Ev; nurk lookup in file=./libsvl645li.so 5524: symbol=_ZN18SvxWritingModeItemD1Ev; nurk lookup in file=./libsvt645li.so ... * glibc/ + dl-reloc.c + _dl_relocate_object ... + where are copy relocs processed ? + build & get glibc testing working - go around a devel iteration & make it work nicely + use the 'gcc --with-linker' thing ? [ somehow ? ] + and LD_LIBRARY_PATH etc. * re-diff glibc * re-diff binutils * ... get gcc patched & working (!) ... * * re-apply 'revert.diff' ? * FIXME: lost elf-vtreloc.c [!] ... (gdb) finish Run till exit from #0 call_init (l=0xb7f222e8, argc=1, argv=0xbf93c964, env=0xbf93c96c) at dl-init.c:74 _dl_init (main_map=0xb7f3e660, argc=1, argv=0xbf93c964, env=0xbf93c96c) at dl-init.c:133 133 while (i-- > 0) (gdb) p i $2 = 7 (gdb) n 134 call_init (main_map->l_initfini[i], argc, argv, env); (gdb) s 0x080486f0 in __do_global_dtors_aux () (gdb) s Single stepping until exit from function __do_global_dtors_aux, which has no line number information. 0x08048787 in __i686.get_pc_thunk.bx () (gdb) s Single stepping until exit from function __i686.get_pc_thunk.bx, which has no line number information. 0x080486f9 in __do_global_dtors_aux () (gdb) s Single stepping until exit from function __do_global_dtors_aux, which has no line number information. 11004: symbol=__cxa_finalize; lookup in file=/home/opt/gcc/src/vtable/tests/copyrel [0] 11004: symbol=__cxa_finalize; lookup in file=/usr/lib/libstdc++.so.6 [0] 11004: symbol=__cxa_finalize; lookup in file=./libfoo.so [0] 11004: symbol=__cxa_finalize; lookup in file=/lib/libm.so.6 [0] 11004: symbol=__cxa_finalize; lookup in file=/lib/libgcc_s.so.1 [0] 11004: symbol=__cxa_finalize; lookup in file=/lib/libc.so.6 [0] 11004: binding file /home/opt/gcc/src/vtable/tests/copyrel [0] to /lib/libc.so.6 [0]: normal symbol `__cxa_finalize' [GLIBC_2.1.3] __cxa_finalize (d=0x804b01c) at cxa_finalize.c:35 35 for (funcs = __exit_funcs; funcs; funcs = funcs->next) (gdb) l 30 __cxa_finalize (void *d) 31 { 32 struct exit_function_list *funcs; 33 34 restart: 35 for (funcs = __exit_funcs; funcs; funcs = funcs->next) 36 { 37 struct exit_function *f; 38 39 for (f = &funcs->fns[funcs->idx - 1]; f >= &funcs->fns[0]; --f) ** Some exception got thrown ?? ! ?? ** (gdb) bt #0 __cxa_finalize (d=0x804b01c) at cxa_finalize.c:35 #1 0x08048723 in __do_global_dtors_aux () (gdb) l 40 { 41 void (*cxafn) (void *arg, int status); 42 void *cxaarg; 43 44 if ((d == NULL || d == f->func.cxa.dso_handle) 45 /* We don't want to run this cleanup more than once. */ 46 && (cxafn = f->func.cxa.fn, 47 cxaarg = f->func.cxa.arg, 48 ! catomic_compare_and_exchange_bool_acq (&f->flavor, ef_free, 49 ef_cxa))) The IA64 C++ ABI (and the new g++ ABI) require two additional routines in the C library (__cxa_atexit and __cxa_finalize). These routines handle destructors for static objects when a shared library is unloaded. (gdb) c Continuing. 11591: symbol=__cxa_finalize; lookup in file=/home/opt/gcc/src/vtable/tests/copyrel [0] 11591: symbol=__cxa_finalize; lookup in file=/usr/lib/libstdc++.so.6 [0] 11591: symbol=__cxa_finalize; lookup in file=./libfoo.so [0] 11591: symbol=__cxa_finalize; lookup in file=/lib/libm.so.6 [0] 11591: symbol=__cxa_finalize; lookup in file=/lib/libgcc_s.so.1 [0] 11591: symbol=__cxa_finalize; lookup in file=/lib/libc.so.6 [0] 11591: binding file /home/opt/gcc/src/vtable/tests/copyrel [0] to /lib/libc.so.6 [0]: normal symbol `__cxa_finalize' [GLIBC_2.1.3] __do_global_dtors_aux - how did we get here !? + how/why are we called !? 080486f0 <__do_global_dtors_aux>: 80486f0: 55 push %ebp 80486f1: 89 e5 mov %esp,%ebp 80486f3: 53 push %ebx 80486f4: e8 8e 00 00 00 call 8048787 <__i686.get_pc_thunk.bx> 80486f9: 81 c3 fb 28 00 00 add $0x28fb,%ebx 80486ff: 83 ec 04 sub $0x4,%esp 8048702: 80 bb b8 00 00 00 00 cmpb $0x0,0xb8(%ebx) 8048709: 75 38 jne 8048743 <__do_global_dtors_aux+0x53> 804870b: 8b 83 fc ff ff ff mov -0x4(%ebx),%eax 8048711: 85 c0 test %eax,%eax 8048713: 74 1b je 8048730 <__do_global_dtors_aux+0x40> 8048715: 8b 83 28 00 00 00 mov 0x28(%ebx),%eax 804871b: 89 04 24 mov %eax,(%esp) 804871e: e8 b5 ff ff ff call 80486d8 <__cxa_finalize@plt> 8048723: eb 0b jmp 8048730 <__do_global_dtors_aux+0x40> 8048725: 83 c0 04 add $0x4,%eax 8048728: 89 83 2c 00 00 00 mov %eax,0x2c(%ebx) 804872e: ff d2 call *%edx 8048730: 8b 83 2c 00 00 00 mov 0x2c(%ebx),%eax 8048736: 8b 10 mov (%eax),%edx 8048738: 85 d2 test %edx,%edx 804873a: 75 e9 jne 8048725 <__do_global_dtors_aux+0x35> 804873c: c6 83 b8 00 00 00 01 movb $0x1,0xb8(%ebx) 8048743: 83 c4 04 add $0x4,%esp 8048746: 5b pop %ebx 8048747: 5d pop %ebp 8048748: c3 ret 8048749: 8d b4 26 00 00 00 00 lea 0x0(%esi,%eiz,1),%esi (gdb) bt #0 _dl_lookup_symbol_x (undef_name=0x8048453 "__cxa_finalize", undef_map=0xb7f02660, ref=0xbfe0f5f4, symbol_scope=0xb7f0281c, version=0xb7ee6ee0, type_class=1, flags=1, skip_map=0x0) at dl-lookup.c:414 #1 0xb7ef42ef in _dl_fixup (l=0xb7f02660, reloc_offset=) at dl-runtime.c:105 #2 0xb7ef9b40 in _dl_runtime_resolve () from /lib/ld-linux.so.2 #3 0x08048723 in __do_global_dtors_aux () [ from where !? ... ] ** Is it some libstdc++ version mismatch foo ? + does it happen if we have no vtlink ? collect2 version 4.2.1 (SUSE Linux) (i386 Linux/ELF) ld_file_name = /opt/gcc/bin/ld c_file_name = /opt/gcc/bin/g++ nm_file_name = /opt/gcc/bin/nm strip_file_name = /opt/gcc/bin/strip c_file = /tmp/ccLjjwqC.c o_file = /tmp/ccq5w1G4.o COLLECT_GCC_OPTIONS = '-shared' '-L../../unxlngi6.pro/lib' '-L../lib' '-L/opt/OpenOffice/ooh680-m1/solenv/unxlngi6/lib' '-L/opt/OpenOffice/ooh680-m1/solver/68 0/unxlngi6.pro/lib' '-L/opt/OpenOffice/ooh680-m1/solenv/unxlngi6/lib' '-L/usr/lib/jvm/java/lib' '-L/usr/lib/jvm/java/jre/lib/i386' '-L/usr/lib/jvm/java/jre/li b/i386/client' '-L/usr/lib/jvm/java/jre/lib/i386/native_threads' '-L/usr/lib' '-L/usr/lib/xulrunner-1.8.1.4' '-o' '../../unxlngi6.pro/lib/libspl_unx680li.so' '-shared-libgcc' '-mtune=generic' COLLECT_GCC = g++ COMPILER_PATH = /home/opt/gcc/bin/../libexec/gcc/i686-pc-linux-gnu/4.2.1/:/home/opt/gcc/bin/../libexec/gcc/:/opt/gcc/libexec/gcc/i686-pc-linux-gnu/4.2.1 /:/opt/gcc/libexec/gcc/i686-pc-linux-gnu/4.2.1/:/opt/gcc/libexec/gcc/i686-pc-linux-gnu/:/opt/gcc/lib/gcc/i686-pc-linux-gnu/4.2.1/:/opt/gcc/lib/gcc/i686-pc-lin ux-gnu/ LIBRARY_PATH = /home/opt/gcc/bin/../lib/gcc/i686-pc-linux-gnu/4.2.1/:/home/opt/gcc/bin/../lib/gcc/:/opt/gcc/lib/gcc/i686-pc-linux-gnu/4.2.1/:/home/opt/ gcc/bin/../lib/gcc/i686-pc-linux-gnu/4.2.1/../../../:/opt/gcc/lib/gcc/i686-pc-linux-gnu/4.2.1/../../../:/lib/:/usr/lib/ /opt/gcc/bin/ld --eh-frame-hdr -m elf_i386 -shared -o ../../unxlngi6.pro/lib/libspl_unx680li.so /usr/lib/crti.o /home/opt/gcc/bin/../lib/gcc/i686-pc-linux-gnu /4.2.1/crtbeginS.o -L../../unxlngi6.pro/lib -L../lib -L/opt/OpenOffice/ooh680-m1/solenv/unxlngi6/lib -L/opt/OpenOffice/ooh680-m1/solver/680/unxlngi6.pro/lib - L/opt/OpenOffice/ooh680-m1/solenv/unxlngi6/lib -L/usr/lib/jvm/java/lib -L/usr/lib/jvm/java/jre/lib/i386 -L/usr/lib/jvm/java/jre/lib/i386/client -L/usr/lib/jvm /java/jre/lib/i386/native_threads -L/usr/lib -L/usr/lib/xulrunner-1.8.1.4 -L/home/opt/gcc/bin/../lib/gcc/i686-pc-linux-gnu/4.2.1 -L/home/opt/gcc/bin/../lib/gc c -L/opt/gcc/lib/gcc/i686-pc-linux-gnu/4.2.1 -L/home/opt/gcc/bin/../lib/gcc/i686-pc-linux-gnu/4.2.1/../../.. -L/opt/gcc/lib/gcc/i686-pc-linux-gnu/4.2.1/../../ .. -z noexecstack -z combreloc -z defs --hash-style=gnu -rpath $ORIGIN:$ORIGIN/../ure-link/lib -O1 --version-script ../../unxlngi6.pro/misc/exports_spl_unx680 li.map ../../unxlngi6.pro/slo/unxsplash.o ../../unxlngi6.pro/slo/services_unxsplash.o ../../unxlngi6.pro/slo/spl_unx_dflt_version.o -lvos3gcc3 -luno_cppuhelpe rgcc3 -luno_cppu -luno_sal -ldl -lpthread -Bdynamic -lstlport_gcc -lstdc++ -lm -lgcc_s -lc -lgcc_s /home/opt/gcc/bin/../lib/gcc/i686-pc-linux-gnu/4.2.1/crtend S.o /usr/lib/crtn.o ... Reloc 'vtable for SvRefBase' 1 0 0 0 i:47 Reloc 'vtable for SvWeakHdl' 0 1 0 0 i:-1 '.data.rel.ro._ZTV9SvWeakHdl' vma 0x5bb8 offset 0 output off 0 Reloc 'vtable for SvRefBase' 1 0 0 0 i:47 Reloc 'vtable for SvCompatWeakHdl' 0 1 0 0 i:-1 '.data.rel.ro._ZTV15SvCompatWeakHdl' vma 0x5bb8 offset 0 output off 0 ../../unxlngi6.pro/slo/unxsplash.o: In function `SvWeakHdl::~SvWeakHdl()': unxsplash.cxx:(.text._ZN9SvWeakHdlD0Ev[SvWeakHdl::~SvWeakHdl()]+0x23): undefined reference to `SvRefBase::~SvRefBase()' ../../unxlngi6.pro/slo/unxsplash.o: In function `SvWeakHdl::~SvWeakHdl()': unxsplash.cxx:(.text._ZN9SvWeakHdlD1Ev[SvWeakHdl::~SvWeakHdl()]+0x22): undefined reference to `SvRefBase::~SvRefBase()' ../../unxlngi6.pro/slo/unxsplash.o: In function `SvCompatWeakHdl::~SvCompatWeakHdl()': unxsplash.cxx:(.text._ZN15SvCompatWeakHdlD0Ev[SvCompatWeakHdl::~SvCompatWeakHdl()]+0x23): undefined reference to `SvRefBase::~SvRefBase()' ../../unxlngi6.pro/slo/unxsplash.o: In function `SvCompatWeakHdl::~SvCompatWeakHdl()': unxsplash.cxx:(.text._ZN15SvCompatWeakHdlD1Ev[SvCompatWeakHdl::~SvCompatWeakHdl()]+0x22): undefined reference to `SvRefBase::~SvRefBase()' ../../unxlngi6.pro/slo/unxsplash.o:(.data.rel.ro._ZTI9SvWeakHdl[typeinfo for SvWeakHdl]+0x8): undefined reference to `typeinfo for SvRefBase' ../../unxlngi6.pro/slo/unxsplash.o:(.data.rel.ro._ZTI15SvCompatWeakHdl[typeinfo for SvCompatWeakHdl]+0x8): undefined reference to `typeinfo for SvRefBase' ** FIXME: + generate a test from the splash thing it ... + is it the map file ? + what's going on !? ** FIXME: + how do we do the GC on this ? $2 = {root = {root = {next = 0x0, string = 0x80f22e3 "_ZTV9SvRefBase", hash = 290430804}, type = bfd_link_hash_undefined, u = {undef = {next = 0x80f0f48, abfd = 0x80f0508, weak = 0x0}, def = {next = 0x80f0f48, section = 0x80f0508, value = 0}, i = {next = 0x80f0f48, link = 0x80f0508, warning = 0x0}, c = {next = 0x80f0f48, p = 0x80f0508, size = 0}}}, indx = -1, dynindx = -1, got = {refcount = -1, offset = 18446744073709551615, glist = 0xffffffff, plist = 0xffffffff}, plt = {refcount = -1, offset = 18446744073709551615, glist = 0xffffffff, plist = 0xffffffff}, size = 0, type = 0, other = 0, ref_regular = 1, def_regular = 0, ref_dynamic = 0, def_dynamic = 0, ref_regular_nonweak = 1, dynamic_adjusted = 0, needs_copy = 0, needs_plt = 0, non_elf = 0, hidden = 0, forced_local = 0, dynamic = 0, mark = 0, non_got_ref = 1, dynamic_def = 0, dynamic_weak = 0, pointer_equality_needed = 1, dynstr_index = 0, u = {weakdef = 0x0, elf_hash_value = 0}, verinfo = {verdef = 0x0, vertree = 0x0}, vtable = 0x0} * test asm output ... ** FIXME: + the GC seems to be done in gcc here ... + interesting [!] + our new reference / section screws that up unfortunately. + FIXME: we -know- that this isn't an issue with the stmt stuff + only with the DECL generation - since we do the stmts earlier + FIXME: we need to find a similar situation + outputting some auto-generated foo, but only iff - used (eg.) ** TypeInfo - for RTTI (surely?) ** + if a vtable is not referred to: + we don't want to construct it - surely (!?) + must be a 'GC' phase here, where dead stuff is pruned + find the code (?!) + must avoid the built-in typeinfo: identically ... + are we doing this in the wrong place ? + can we associate a constructor-list to each vtable (somehow) + then do something clever as/when/if it's emitted * Research rtti goodness: /* 1 iff VAR_DECL node NODE is a type-info decl. This flag is set for both the primary typeinfo object and the associated NTBS name. */ #define DECL_TINFO_P(NODE) TREE_LANG_FLAG_4 (VAR_DECL_CHECK (NODE)) /* 1 iff VAR_DECL node NODE is virtual table or VTT. */ #define DECL_VTABLE_OR_VTT_P(NODE) TREE_LANG_FLAG_5 (VAR_DECL_CHECK (NODE)) /* DECL_EXTERNAL must be set on a decl until the decl is actually emitted, so that assemble_external will work properly. So we have this flag to tell us whether the decl is really not external. */ #define DECL_NOT_REALLY_EXTERN(NODE) \ (DECL_LANG_SPECIFIC (NODE)->decl_flags.not_really_extern) [ interesting ! ;-] + maybe_emit_vtables ? + do the goodness here ? ... + unfortunately - this is still called for vtables that are not (ultimately) emitted ! ;-) + can we force the vtable to refer to this, by appending a reference to us at the end ? ;-> + will that work ? + will it keep us around ? + can we do this another way ? ++ where does -Wunused-variable get triggered ? ++ /* Before we remove the declarations first check for unused variables. */ if (warn_unused_variable && !processing_template_decl) for (decl = getdecls (); decl; decl = TREE_CHAIN (decl)) if (TREE_CODE (decl) == VAR_DECL && ! TREE_USED (decl) && ! DECL_IN_SYSTEM_HEADER (decl) && DECL_NAME (decl) && ! DECL_ARTIFICIAL (decl)) warning (OPT_Wunused_variable, "unused variable %q+D", decl); + TREE_USED ? I suppose that happens somewhere in cgraph which analyzes the whole unit *** look for cgraph_ and varpool_ there's sth like 'mark_needed' thanks; and, final - follow-on / silly question, I would like to have this strange relocation data (in a magic variable, in a '.vtreloc' section) dependant on the vtable, so if the vtable is dropped - the strange section is dropped too... . does that sound horribly hard uh so it's a separate decl? yep if it is not referenced it should not be emitted -- if it is not marked extern I guess a little like rtti - although, there is no pointer in the vtable to it so you need to make it local to the CU sure; OTOH - if the vtable is not emitted, I don't want to emit it :-) - hence the problem ... I guess I could perhaps add a bogus reference to this data at the end of the vtable (?) at least as a quick hack for now: that would work I guess (?) how would an extra reference help? oh, it would then refer to this new decl so vtable -> (rtti and .vtreloc decl) so, hopefully if the vtable is not referenced, the compiler would notice all this was dead & throw it out. otherwise, if it is referenced, it'll be referenced & retained (?) err, yes? ;) thanks :-) * michael_ stops wasting time & starts typing again ... ** FIXME: follow RTTI .. + unemitted_tinfo_decls ... + get emitted one by one. ** FIXME: + add our output to 'maybe_emit_vtables' ... + [foo] get_tinfo_decl + sets 'CLASSTYPE_TYPEINFO_VAR' on type ... + caches the beastie ... [ also a cache on the name though ... ] + why have both ? FIXME: changes & breaks the ABI ... + but tests still run (apparently) ;-) + will need to fix (somehow) + pwrt. deriving classes etc. gdb --args /home/opt/gcc/bin/../libexec/gcc/i686-pc-linux-gnu/4.2.1/cc1plus -quiet -I. -iprefix /home/opt/gcc/bin/../lib/gcc/i686-pc-linux-gnu/4.2.1/ -D_GNU_SOURCE unused.cxx -quiet -dumpbase unused.cxx -mtune=generic -auxbase-strip unused.S -O0 -fdump-tree-all -o unused.S Breakpoint 1, cgraph_varpool_mark_needed_node (node=0xb7dd8498) at ../.././gcc/cgraph.c:931 931 if (getenv ("DEBUG")) (gdb) n 932 fprintf (stderr, "Mark node '%s' as needed\n", (gdb) Mark node '__vt_copy_slot_relocs _ZVTR9SvRefBase [2]' as needed 934 if (!node->needed && node->finalized (gdb) bt #0 cgraph_varpool_mark_needed_node (node=0xb7dd8498) at ../.././gcc/cgraph.c:934 #1 0x0841f088 in cgraph_varpool_finalize_decl (decl=0xb7cf3630) at ../.././gcc/cgraph.c:1009 #2 0x083db122 in rest_of_decl_compilation (decl=0xb7cf3630, top_level=1, at_end=0) at ../.././gcc/passes.c:162 #3 0x08059c4a in make_rtl_for_nonlocal_decl (decl=0xb7cf3630, init=0x0, asmspec=0x0) at ../.././gcc/cp/decl.c:5036 #4 0x08064845 in cp_finish_decl (decl=0xb7cf3630, init=0x0, init_const_expr_p=0 '\0', asmspec_tree=0x0, flags=0) at ../.././gcc/cp/decl.c:5394 #5 0x080659af in finish_decl (decl=0xb7cf3630, init=0x0, asmspec_tree=0x0) at ../.././gcc/cp/decl.c:5476 #6 0x080d56ee in pushdecl_top_level_1 (x=0xb7cf3630, init=0xbfcf97a4, is_friend=) at ../.././gcc/cp/name-lookup.c:3405 #7 0x080d5742 in pushdecl_top_level_and_finish (x=0xb7cf3630, init=0x0) at ../.././gcc/cp/name-lookup.c:3433 #8 0x0807f47f in get_vtreloc_decl (t=0xb7dd59b4, slot_relocs=0xb7dd8450) at ../.././gcc/cp/class.c:6392 #9 0x08082fd7 in finish_vtbls (t=0xb7dd59b4) at ../.././gcc/cp/class.c:6699 #10 0x08083e0e in finish_struct_1 (t=0xb7dd59b4) at ../.././gcc/cp/class.c:5113 #11 0x08084a40 in finish_struct (t=0xb7dd59b4, attributes=0x0) at ../.././gcc/cp/class.c:5227 #12 0x08092c6c in cp_parser_type_specifier (parser=0xb7dbba5c, flags=, decl_specs=0xbfcf9948, is_declaration=1 '\001', declares_class_or_enum=0xbfcf9904, is_cv_qualifier=0xbfcf990b "") at ../.././gcc/cp/parser.c:13172 #13 0x08093349 in cp_parser_decl_specifier_seq (parser=0xb7dbba5c, flags=CP_PARSER_FLAGS_OPTIONAL, decl_specs=0xbfcf9948, declares_class_or_enum=0xbfcf9994) at ../.././gcc/cp/parser.c:7668 #14 0x08093770 in cp_parser_simple_declaration (parser=0xb7dbba5c, function_definition_allowed_p=1 '\001') at ../.././gcc/cp/parser.c:7370 #15 0x0809a3eb in cp_parser_block_declaration (parser=0xb7dbba5c, statement_p=0 '\0') at ../.././gcc/cp/parser.c:7331 #16 0x0809efa1 in cp_parser_declaration (parser=0xb7dbba5c) at ../.././gcc/cp/parser.c:7247 #17 0x0809f3de in cp_parser_declaration_seq_opt (parser=0xb7dbba5c) at ../.././gcc/cp/parser.c:7142 #18 0x0809f89c in c_parse_file () at ../.././gcc/cp/parser.c:2845 #19 0x08100d5a in c_common_parse_file (set_yydebug=0) at ../.././gcc/c-opts.c:1183 #20 0x083bb3c0 in toplev_main (argc=17, argv=0xbfcf9b94) at ../.././gcc/toplev.c:1042 #21 0x0810b19f in main (argc=Cannot access memory at address 0xffffffff ** FIXME: + now it works ! ;-) + can we avoid mangling the vtables ? + .vtrelocs - can we get defined symbols out of these sections & mangle them to point elsewhere ? :-) FIXME: + optimisation: + elide 'zero' copies ... [ do we do that anyway ? ] + can it be that we screw this up in gcc !? ... + why does the beastie crash ? + mismatching sizes (odd): ERROR: mismatching vtreloc sec & reloc count 0x2d4, 0x22 -> 10 ERROR: mismatching vtreloc sec & reloc count 0x1b4, 0x18 -> 4 ERROR: mismatching vtreloc sec & reloc count 0xd0, 0xc -> 4 + Just broken ! + clearly ordering is broken, need to copy stuff in a zane order: 20074: do copy 0xdeadbeef to 0xdeadbeef match [&0xb7c90bb4 -> &0xb7c90a54] + we have got stray muck creeping in ... * The plan: + generate the inits earlier - so we know what they are + keep them around, get the sizing perfect ... + elide '0' copies ... + build better tests: + why is the ordering broken ? + check numerical results from tests/ + call each vmethod etc. see what it returns. + check linker: how do we get so many '00000s' in here ? + sort out the 'internal' vs. 'external' symbol stuff. * binutils error: _ZVTRN17_GLOBAL__N_global1BE: .long _ZTVN17_GLOBAL__N_global5VBaseE+28 .long _ZTVN17_GLOBAL__N_global1BE+324 .long 3 .long _ZTVN17_GLOBAL__N_global1AE+140 .long _ZTVN17_GLOBAL__N_global1BE+232 .long 183 .long _ZTVN17_GLOBAL__N_global1AE+12 .long _ZTVN17_GLOBAL__N_global1BE+104 .long 1011087613 .long _ZTVN17_GLOBAL__N_global12VOffsetDerivE+20 .long _ZTVN17_GLOBAL__N_global1BE+20 .long 7 .zero 12 : vtable for (anonymous namespace)::VBase + Can't get these right ... [!?] + 2 purposes for the reloc info: + a) to get the sorting / initialization right. + b) to propagate this to the children ... + this -used- to work (surely!?), why not now ? + FIXME: surely we know what section the reloc goes into, and it's offset (?) ** FIXME: + do we really want to be sorting relocations ? + why can't we sort sections instead ? + would make *lots* more sense ... [!] + save re-writing the sections. + => can do it with opaque addresses + can we do this with an way tree of some sort. + create a single ordering ... + can we terminate the section ? * TODO: + -ffunction-sections + we want to emit a new .vtrelocs section -per- vtable + we relocate, do we do that ? + currently no. + need to force it somehow. + then - we need to look at the .text section sorting logic + then - bingo ! ;-) + we only have to ensure all .src and all .dest are sorted & all is good. Let's say end of february is feature freeze. Bugfixes are possible till april. (gdb) p m_pContext $1 = (class ConfigurationErrorHandler::Context *) 0x814a588 (gdb) p *(m_pContext) $2 = {<(anonymous namespace)::SimpleCurrentContext> = {> = { = { = { = {_vptr.XInterface = 0x8097e88}, }, m_refCount = 0, m_pWeakConnectionPoint = 0x0, m_pReserved = 0x5f564e45}, = { = { _vptr.XInterface = 0x8097eb4}, }, = { = { _vptr.XInterface = 0x8097ed0}, }, }, m_xChainedContext = { = { _pInterface = 0x814112c}, }}, m_xHandler = { = {_pInterface = 0x0}, }} (gdb) bt #0 0xdeadbeef in ?? () #1 0x0808d55c in ConfigurationErrorHandler::activate (this=0xbfb3f6d0) at /home/opt/OpenOffice/ooh680-m1/desktop/source/app/configinit.cxx:287 #2 0x0806e68e in desktop::Desktop::Main (this=0xbfb3f8c4) at /home/opt/OpenOffice/ooh680-m1/desktop/source/app/app.cxx:1337 #3 0xb7d03259 in ImplSVMain () from ./libvcl680li.so #4 0xb7d03367 in SVMain () from ./libvcl680li.so #5 0x080608ba in sal_main_with_args () at /home/opt/OpenOffice/ooh680-m1/desktop/source/app/main.cxx:61 #6 0x08060946 in main (argc=1, argv=0xbfb3f9d4) at /home/opt/OpenOffice/ooh680-m1/desktop/source/app/main.cxx:52 (gdb) up #1 0x0808d55c in ConfigurationErrorHandler::activate (this=0xbfb3f6d0) at /home/opt/OpenOffice/ooh680-m1/desktop/source/app/configinit.cxx:287 287 m_pContext->acquire(); (gdb) l ** FIXME: related to a sorting issue: + FIXME: surely we should get a 'Bug' warning here though ? + this order observed: ErrorHandlerContext VTR ! ( derived from SimpleCurrentContext ) _ZVTRN25ConfigurationErrorHandler7ContextE: .long _ZTVN93_GLOBAL__N__home_opt_OpenOffice_ooh680_m1_desktop_source_app_configinit.cxx_00000000_E68E979820SimpleCurrentContextE+8 .long _ZTVN25ConfigurationErrorHandler7ContextE+8 SimpleCurrentContext VTR ! _ZVTRN93_GLOBAL__N__home_opt_OpenOffice_ooh680_m1_desktop_source_app_configinit.cxx_00000000_E68E979820SimpleCurrentContextE: .long _ZTVN4cppu15WeakImplHelper1IN3com3sun4star3uno15XCurrentContextEEE+8 .long _ZTVN93_GLOBAL__N__home_opt_OpenOffice_ooh680_m1_desktop_source_app_configinit.cxx_00000000_E68E979820SimpleCurrentContextE+8 .long 207 29119: copy from 0x8097d48 to 0x8097e88 mask 0xcf 29119: do copy 0xdeadbeef to 0xdeadbeef match [&0x8097d48 -> &0x8097e88] 29119: do copy 0xdeadbeef to 0xdeadbeef match [&0x8097d4c -> &0x8097e8c] 29119: do copy 0xdeadbeef to 0xdeadbeef match [&0x8097d50 -> &0x8097e90] 29119: do copy 0xdeadbeef to 0xdeadbeef match [&0x8097d54 -> &0x8097e94] .section .vtrelocs._ZVTR_00000001_N25ConfigurationErrorHandler7ContextE,"aG",@progbits,_ZVTR_00000001_N25ConfigurationErrorHandler7ContextE,comdat .type _ZVTR_00000001_N25ConfigurationErrorHandler7ContextE, @object .size _ZVTR_00000001_N25ConfigurationErrorHandler7ContextE, 12 _ZVTR_00000001_N25ConfigurationErrorHandler7ContextE: .long _ZTVN93_GLOBAL__N__home_opt_OpenOffice_ooh680_m1_desktop_source_app_configinit.cxx_00000000_793747DB20SimpleCurrentContextE+8 .long _ZTVN25ConfigurationErrorHandler7ContextE+8 .long 207 .section .vtrelocs._ZVTR_00000001_N93_GLOBAL__N__home_opt_OpenOffice_ooh680_m1_desktop_source_app_configinit.cxx_00000000_793747DB20SimpleCurrentContextE,"aG",@progbits,_ZVTR_00000001_N93_GLOBAL__N__home_opt_OpenOffice_ooh680_m1_desktop_source_app_configinit.cxx_00000000_793747DB20SimpleCurrentContextE,comdat .type _ZVTR_00000001_N93_GLOBAL__N__home_opt_OpenOffice_ooh680_m1_desktop_source_app_configinit.cxx_00000000_793747DB20SimpleCurrentContextE, @object .size _ZVTR_00000001_N93_GLOBAL__N__home_opt_OpenOffice_ooh680_m1_desktop_source_app_configinit.cxx_00000000_793747DB20SimpleCurrentContextE, 12 _ZVTR_00000001_N93_GLOBAL__N__home_opt_OpenOffice_ooh680_m1_desktop_source_app_configinit.cxx_00000000_793747DB20SimpleCurrentContextE: .long _ZTVN4cppu15WeakImplHelper1IN3com3sun4star3uno15XCurrentContextEEE+8 .long _ZTVN93_GLOBAL__N__home_opt_OpenOffice_ooh680_m1_desktop_source_app_configinit.cxx_00000000_793747DB20SimpleCurrentContextE+8 .long 207 ** Nice idea ! - but same number :-( class ConfigurationErrorHandler::Context : public SimpleCurrentContext { public: Context() : SimpleCurrentContext( uno::getCurrentContext() ) { } FIXME: + should warn on that in glibc [!] ... ** sort via the linker script ... + ld/ldlang.c 'sort_common' ? ** FIXME: + remove the __vtrelocs symbol in the link. ** FIXME: + can we be cunning ! ;-) + oh yes ! + can we add a magic-number in the symbol name + max-distance-from-parent ? + that will increment with inheritance ? + we have the full inheritance graph + is it is always the case that a derived class has more slots than it's parent: no. + slot_count is a pretty good approximation though, + better ? a count of inherited parents ? + then sort by that. + we have a 'SortByName' + so simply prepend a string to the section name: + including the inherited table count. + VCL problem: + if outside 'me' don't fixup ./soffice.bin: Symbol `_ZTV8OKButton' has different size in shared object, consider re-linking ./soffice.bin: Symbol `_ZTV9FixedText' has different size in shared object, consider re-linking ./soffice.bin: Symbol `_ZTV7MessBox' has different size in shared object, consider re-linking ./soffice.bin: Symbol `_ZTV11Application' has different size in shared object, consider re-linking ./soffice.bin: Symbol `_ZTV6Dialog' has different size in shared object, consider re-linking ./soffice.bin: Symbol `_ZTV11IntroWindow' has different size in shared object, consider re-linking * Debug svx compile-time crash ... [ garbage-collection ? / string management ? ] * check ordering in soffice.bin fixes foo ! * Check that #0 0xdeadbeef in ?? () #1 0xa2d12bf1 in desktop::SplashScreen::initialize (this=0x814e938, aArguments=@0xbfbffe14) at /home/opt/OpenOffice/ooh680-m1/desktop/source/splash/splash.cxx:198 #2 0xb74f1fc7 in cppu::OSingleFactoryHelper::createInstanceWithArgumentsAndContext () from ./libuno_cppuhelpergcc3.so.3 23241: new vtcopy-reloc processing on './soffice.bin' offset 0x0 map 0x8048000 23241: vtreloc section found in '' at 0x80a3d14 (0x80a3d14) mapped at 0x0 order: '.vtrelocs._ZVTR_00000003_N7desktop7DesktopE': '.vtrelocs._ZVTR_00000004_N7desktop32SalMainPipeExchangeSignalHandlerE': '.vtrelocs._ZVTR_00000005_N7desktop15OfficeIPCThreadE': '.vtrelocs._ZVTR_00000007_11ModalDialog': '.vtrelocs._ZVTR_00000008_N7desktop16IntroWindow_ImplE': '.vtrelocs._ZVTR_00000008_N7desktop17CmdlineHelpDialogE': '.vtrelocs._ZVTR_00000009_7InfoBox': '.vtrelocs._ZVTR_00000009_8ErrorBox': '.vtrelocs._ZVTR_00000009_8QueryBox': '.vtrelocs._ZVTR_00000003_N7desktop7DesktopE': 23241: copy from 0x80a4c40 to 0x80957d8 mask 0x81ff 23241: do copy 0xb7d24592 to 0xdeadbeef match [&0x80a4c40 -> &0x80957d8] 23241: do copy 0xb7d245a4 to 0xdeadbeef match [&0x80a4c44 -> &0x80957dc] 23241: do copy 0xb7d245aa to 0xdeadbeef match [&0x80a4c48 -> &0x80957e0] 23241: do copy 0xb7d24598 to 0xdeadbeef match [&0x80a4c4c -> &0x80957e4] 23241: do copy 0xb7d245b0 to 0xdeadbeef match [&0x80a4c50 -> &0x80957e8] 23241: do copy 0xb7d2459e to 0xdeadbeef match [&0x80a4c54 -> &0x80957ec] 23241: do copy 0xb7d245b6 to 0xdeadbeef match [&0x80a4c58 -> &0x80957f0] 23241: do copy 0xb7d245bc to 0xdeadbeef match [&0x80a4c5c -> &0x80957f4] 23241: do copy 0xb7d245c2 to 0xdeadbeef match [&0x80a4c60 -> &0x80957f8] 23241: no copy 0xb7d245c8 to 0x8069f1a skip 23241: no copy 0xb7d245ce to 0x8060aaa skip 23241: no copy 0xb7d245d4 to 0x80671ae skip 23241: no copy 0xb7d24f52 to 0x8069b4c skip 23241: no copy 0xb7d245da to 0x8065bd0 skip 23241: no copy 0xb7d246b4 to 0x8069290 skip 23241: do copy 0xb7d24686 to 0xdeadbeef match [&0x80a4c7c -> &0x8095814] 23241: move to next vtrel entry '.vtrelocs._ZVTR_00000004_N7desktop32SalMainPipeExchangeSignalHandlerE': 23241: copy from 0x80a4ca0 to 0x80968f0 mask 0x1 23241: do copy 0xb7683e8e to 0xdeadbeef match [&0x80a4ca0 -> &0x80968f0] 23241: move to next vtrel entry '.vtrelocs._ZVTR_00000005_N7desktop15OfficeIPCThreadE': 23241: copy from 0x80a4b14 to 0x8096814 mask 0x1f 23241: do copy 0xb767f760 to 0xdeadbeef match [&0x80a4b14 -> &0x8096814] 23241: do copy 0xb767fb0a to 0xdeadbeef match [&0x80a4b18 -> &0x8096818] 23241: do copy 0xb767fbee to 0xdeadbeef match [&0x80a4b1c -> &0x809681c] 23241: do copy 0xb767fae4 to 0xdeadbeef match [&0x80a4b20 -> &0x8096820] 23241: do copy 0xb767f77c to 0xdeadbeef match [&0x80a4b24 -> &0x8096824] 23241: move to next vtrel entry **** Herein lies the error ! **** '.vtrelocs._ZVTR_00000007_11ModalDialog': 23241: copy from 0x80a4d38 to 0x8098d30 mask 0x3fffffff 23241: do copy 0xdeadbeef to 0xdeadbeef match [&0x80a4d38 -> &0x8098d30] 23241: do copy 0xdeadbeef to 0xdeadbeef match [&0x80a4d3c -> &0x8098d34] 23241: do copy 0xdeadbeef to 0xdeadbeef match [&0x80a4d40 -> &0x8098d38] 23241: do copy 0xdeadbeef to 0xdeadbeef match [&0x80a4d44 -> &0x8098d3c] 23241: do copy 0xdeadbeef to 0xdeadbeef match [&0x80a4d48 -> &0x8098d40] 23241: do copy 0xdeadbeef to 0xdeadbeef match [&0x80a4d4c -> &0x8098d44] ** FIXME: test for shlibs, not for apps + 'data' relocations [ are evil ! ] + can that even be done ? how is the data one done ? where does the data come from ? ** Chase the error ! + think - what is the order of relocations ? + what is the linkage order ? + when do 'copy' relocs get processed ? soffice.bin's copy relocs: Relocation section '.rel.dyn' at offset 0x16f44 contains 24 entries: Offset Info Type Sym. Value Symbol's Name 0808ffe0 00039f06 R_386_GLOB_DAT 08060174 _ZNSt9bad_allocD1Ev 0808ffe4 00004706 R_386_GLOB_DAT 00000000 _ZTVSt9exception 0808ffe8 00006a06 R_386_GLOB_DAT 00000000 __gmon_start__ 0808ffec 0003bf06 R_386_GLOB_DAT 08090b20 _ZTVSt9bad_alloc 08090b20 0003bf05 R_386_COPY 08090b20 _ZTVSt9bad_alloc 0808fff0 00046306 R_386_GLOB_DAT 08090b64 _ZTISt9bad_alloc 08090b64 00046305 R_386_COPY 08090b64 _ZTISt9bad_alloc 08090880 0001f605 R_386_COPY 08090880 _ZTV8OKButton 08090980 00021b05 R_386_COPY 08090980 _ZTV9FixedText 08090a70 00019605 R_386_COPY 08090a70 _ZTVN4cppu11OWeakObjectE 08090aa0 00020605 R_386_COPY 08090aa0 _ZTVN10__cxxabiv121__vmi_class_type_infoE 08090ae0 00022c05 R_386_COPY 08090ae0 _ZTVN10__cxxabiv117__class_type_infoE 08090b38 00029b05 R_386_COPY 08090b38 _ZN19SvtTabAppearanceCfg12bInitializedE 08090b40 0004a405 R_386_COPY 08090b40 _ZTVN3utl22OConfigurationTreeRootE 08090b58 00032505 R_386_COPY 08090b58 _ZTI7MessBox 08090b70 00026b05 R_386_COPY 08090b70 _ZTIN4cppu11OWeakObjectE 08090b7c 0001f705 R_386_COPY 08090b7c _ZTI5Timer 08090b88 00037005 R_386_COPY 08090b88 _ZTIN3vos7OThreadE 08090ba8 00027e05 R_386_COPY 08090ba8 stderr 08090bb0 0002ed05 R_386_COPY 08090bb0 _ZTI11Application 08090bc0 00024c05 R_386_COPY 08090bc0 _ZTVN10__cxxabiv120__si_class_type_infoE 08090bf0 00037205 R_386_COPY 08090bf0 _ZTI6Dialog 08090c00 0003a905 R_386_COPY 08090c00 _ZTIN3vos14OSignalHandlerE 08090c10 00038c05 R_386_COPY 08090c10 _ZTI11IntroWindow * First: fix the gtk+ issue ... ** libvclplug_gtk ... '.vtrelocs._ZVTR_00000003_13GtkSalDisplay': '.vtrelocs._ZVTR_00000004_11GtkInstance': '.vtrelocs._ZVTR_00000004_12GtkSalSystem': '.vtrelocs._ZVTR_00000004_14GtkSalGraphics': '.vtrelocs._ZVTR_00000006_13GtkYieldMutex': '.vtrelocs._ZVTR_00000007_19GtkHookedYieldMutex': '.vtrelocs._ZVTR_00000011_11AtkListener': '.vtrelocs._ZVTR_00000011_21DocumentFocusListener': '.vtrelocs._ZVTR_00000012_N4cppu15WeakImplHelper1IN3com3sun4star13accessibility24XAccessibleEventListenerEEE': 28115: new vtcopy-reloc processing on '/opt/OOInstall/program/libvclplug_gtk680li.so' offset 0xb63d4000 map 0xb63d4000 28115: vtreloc section found in '/opt/OOInstall/program/libvclplug_gtk680li.so' at 0xb641831c (0x4431c) mapped at 0xb63d4000 28115: copy from 0xb5dd69a4 to 0xb64185cc mask 0x1 28115: do copy 0xb5db2aa4 to 0xdeadbeef match [&0xb5dd69a4 -> &0xb64185cc] 28115: move to next vtrel entry 28115: copy from 0xb5dd6a08 to 0xb6418668 mask 0x1ffefffd 28115: do copy 0xb5dbb89c to 0xdeadbeef match [&0xb5dd6a08 -> &0xb6418668] 28115: no copy 0xb5d901e2 to 0xb63e89c8 skip 28115: do copy 0xb5d8f4f0 to 0xdeadbeef match [&0xb5dd6a10 -> &0xb6418670] 28115: do copy 0xb5d96a1c to 0xdeadbeef match [&0xb5dd6a14 -> &0xb6418674] 28115: do copy 0xb5d96450 to 0xdeadbeef match [&0xb5dd6a18 -> &0xb6418678] 28115: do copy 0xb5da898c to 0xdeadbeef match [&0xb5dd6a1c -> &0xb641867c] 28115: do copy 0xb5da71ac to 0xdeadbeef match [&0xb5dd6a20 -> &0xb6418680] 28115: do copy 0xb5da80da to 0xdeadbeef match [&0xb5dd6a24 -> &0xb6418684] 28115: do copy 0xb5da71c8 to 0xdeadbeef match [&0xb5dd6a28 -> &0xb6418688] 28115: do copy 0xb5da9d78 to 0xdeadbeef match [&0xb5dd6a2c -> &0xb641868c] 28115: do copy 0xb5da71e4 to 0xdeadbeef match [&0xb5dd6a30 -> &0xb6418690] 28115: do copy 0xb5da895a to 0xdeadbeef match [&0xb5dd6a34 -> &0xb6418694] 28115: do copy 0xb5da72e2 to 0xdeadbeef match [&0xb5dd6a38 -> &0xb6418698] 28115: do copy 0xb5db2554 to 0xdeadbeef match [&0xb5dd6a3c -> &0xb641869c] 28115: do copy 0xb5dbb8b8 to 0xdeadbeef match [&0xb5dd6a40 -> &0xb64186a0] 28115: do copy 0xb5dae55c to 0xdeadbeef match [&0xb5dd6a44 -> &0xb64186a4] 28115: no copy 0xb5dbbf70 to 0xb63e948a skip 28115: do copy 0xb5d936ae to 0xdeadbeef match [&0xb5dd6a4c -> &0xb64186ac] 28115: do copy 0xb5dbb860 to 0xdeadbeef match [&0xb5dd6a50 -> &0xb64186b0] 28115: do copy 0xb5dbb9e2 to 0xdeadbeef match [&0xb5dd6a54 -> &0xb64186b4] 28115: do copy 0xb5dbb874 to 0xdeadbeef match [&0xb5dd6a58 -> &0xb64186b8] 28115: do copy 0xb5dbbc00 to 0xdeadbeef match [&0xb5dd6a5c -> &0xb64186bc] 28115: do copy 0xb5dbbdcc to 0xdeadbeef match [&0xb5dd6a60 -> &0xb64186c0] 28115: do copy 0xb5d90490 to 0xdeadbeef match [&0xb5dd6a64 -> &0xb64186c4] 28115: do copy 0xb5d90498 to 0xdeadbeef match [&0xb5dd6a68 -> &0xb64186c8] 28115: do copy 0xb5d904b4 to 0xdeadbeef match [&0xb5dd6a6c -> &0xb64186cc] 28115: do copy 0xb5d904bc to 0xdeadbeef match [&0xb5dd6a70 -> &0xb64186d0] 28115: do copy 0xb5dbe334 to 0xdeadbeef match [&0xb5dd6a74 -> &0xb64186d4] 28115: do copy 0xb5dbb954 to 0xdeadbeef match [&0xb5dd6a78 -> &0xb64186d8] 28115: move to next vtrel entry 28115: copy from 0xb5dd6ae8 to 0xb6418760 mask 0x7f 28115: do copy 0xb5dbc14c to 0xdeadbeef match [&0xb5dd6ae8 -> &0xb6418760] 28115: do copy 0xb5dbc1a8 to 0xdeadbeef match [&0xb5dd6aec -> &0xb6418764] 28115: do copy 0xb5dbc188 to 0xdeadbeef match [&0xb5dd6af0 -> &0xb6418768] 28115: do copy 0xb5dbc1e8 to 0xdeadbeef match [&0xb5dd6af4 -> &0xb641876c] 28115: do copy 0xb5dbbf50 to 0xdeadbeef match [&0xb5dd6af8 -> &0xb6418770] 28115: do copy 0xb5dbc2a4 to 0xdeadbeef match [&0xb5dd6afc -> &0xb6418774] 28115: do copy 0xb5dbc532 to 0xdeadbeef match [&0xb5dd6b00 -> &0xb6418778] 28115: move to next vtrel entry 28115: copy from 0xb5dd5d24 to 0xb6418b44 mask 0x7fffffc 28115: no copy 0xb5d94bb6 to 0xb63fcce6 skip 28115: no copy 0xb5d94b10 to 0xb63fcc9c skip 28115: do copy 0xb5d949f0 to 0xdeadbeef match [&0xb5dd5d2c -> &0xb6418b4c] 28115: do copy 0xb5d94ae0 to 0xdeadbeef match [&0xb5dd5d30 -> &0xb6418b50] 28115: do copy 0xb5d94a0c to 0xdeadbeef match [&0xb5dd5d34 -> &0xb6418b54] 28115: do copy 0xb5d95f84 to 0xdeadbeef match [&0xb5dd5d38 -> &0xb6418b58] 28115: do copy 0xb5d94a36 to 0xdeadbeef match [&0xb5dd5d3c -> &0xb6418b5c] 28115: do copy 0xb5d9576c to 0xdeadbeef match [&0xb5dd5d40 -> &0xb6418b60] 28115: do copy 0xb5d956f6 to 0xdeadbeef match [&0xb5dd5d44 -> &0xb6418b64] 28115: do copy 0xb5d9e8b4 to 0xdeadbeef match [&0xb5dd5d48 -> &0xb6418b68] 28115: do copy 0xb5d9f95c to 0xdeadbeef match [&0xb5dd5d4c -> &0xb6418b6c] 28115: do copy 0xb5d9f2ae to 0xdeadbeef match [&0xb5dd5d50 -> &0xb6418b70] 28115: do copy 0xb5d9e542 to 0xdeadbeef match [&0xb5dd5d54 -> &0xb6418b74] 28115: do copy 0xb5d9f1ea to 0xdeadbeef match [&0xb5dd5d58 -> &0xb6418b78] 28115: do copy 0xb5da09f0 to 0xdeadbeef match [&0xb5dd5d5c -> &0xb6418b7c] 28115: do copy 0xb5d9e0a8 to 0xdeadbeef match [&0xb5dd5d60 -> &0xb6418b80] 28115: do copy 0xb5d9e6b0 to 0xdeadbeef match [&0xb5dd5d64 -> &0xb6418b84] 28115: do copy 0xb5d9e504 to 0xdeadbeef match [&0xb5dd5d68 -> &0xb6418b88] 28115: do copy 0xb5d9e47e to 0xdeadbeef match [&0xb5dd5d6c -> &0xb6418b8c] 28115: do copy 0xb5d9e4d0 to 0xdeadbeef match [&0xb5dd5d70 -> &0xb6418b90] 28115: do copy 0xb5d9e4aa to 0xdeadbeef match [&0xb5dd5d74 -> &0xb6418b94] 28115: do copy 0xb5d9e440 to 0xdeadbeef match [&0xb5dd5d78 -> &0xb6418b98] 28115: do copy 0xb5d9f3aa to 0xdeadbeef match [&0xb5dd5d7c -> &0xb6418b9c] 28115: do copy 0xb5d9e0ae to 0xdeadbeef match [&0xb5dd5d80 -> &0xb6418ba0] 28115: do copy 0xb5d9ee16 to 0xdeadbeef match [&0xb5dd5d84 -> &0xb6418ba4] 28115: do copy 0xb5da026c to 0xdeadbeef match [&0xb5dd5d88 -> &0xb6418ba8] 28115: do copy 0xb7e2cc58 to 0xdeadbeef match [&0xb5dd5d8c -> &0xb6418bac] 28115: move to next vtrel entry 28115: copy from 0xb5dd5ca4 to 0xb6418ac4 mask 0x7e1ff7ff 28115: do copy 0xb5d953be to 0xdeadbeef match [&0xb5dd5ca4 -> &0xb6418ac4] 28115: do copy 0xb5d952e0 to 0xdeadbeef match [&0xb5dd5ca8 -> &0xb6418ac8] 28115: do copy 0xb5d95606 to 0xdeadbeef match [&0xb5dd5cac -> &0xb6418acc] 28115: do copy 0xb5d95be8 to 0xdeadbeef match [&0xb5dd5cb0 -> &0xb6418ad0] 28115: do copy 0xb5d955ac to 0xdeadbeef match [&0xb5dd5cb4 -> &0xb6418ad4] 28115: do copy 0xb5d95a66 to 0xdeadbeef match [&0xb5dd5cb8 -> &0xb6418ad8] 28115: do copy 0xb5d95902 to 0xdeadbeef match [&0xb5dd5cbc -> &0xb6418adc] 28115: do copy 0xb5d94a7c to 0xdeadbeef match [&0xb5dd5cc0 -> &0xb6418ae0] 28115: do copy 0xb5d94a84 to 0xdeadbeef match [&0xb5dd5cc4 -> &0xb6418ae4] 28115: do copy 0xb5d94a8c to 0xdeadbeef match [&0xb5dd5cc8 -> &0xb6418ae8] 28115: do copy 0xb5d9065a to 0xdeadbeef match [&0xb5dd5ccc -> &0xb6418aec] 28115: no copy 0xb5d91dda to 0xb63feffe skip 28115: do copy 0xb5d91124 to 0xdeadbeef match [&0xb5dd5cd4 -> &0xb6418af4] 28115: do copy 0xb5d906a2 to 0xdeadbeef match [&0xb5dd5cd8 -> &0xb6418af8] 28115: do copy 0xb5d910c2 to 0xdeadbeef match [&0xb5dd5cdc -> &0xb6418afc] 28115: do copy 0xb5d913ac to 0xdeadbeef match [&0xb5dd5ce0 -> &0xb6418b00] 28115: do copy 0xb5d9197e to 0xdeadbeef match [&0xb5dd5ce4 -> &0xb6418b04] 28115: do copy 0xb5d909e6 to 0xdeadbeef match [&0xb5dd5ce8 -> &0xb6418b08] 28115: do copy 0xb5d91320 to 0xdeadbeef match [&0xb5dd5cec -> &0xb6418b0c] 28115: do copy 0xb5d954f2 to 0xdeadbeef match [&0xb5dd5cf0 -> &0xb6418b10] 28115: do copy 0xb5d94a94 to 0xdeadbeef match [&0xb5dd5cf4 -> &0xb6418b14] 28115: no copy 0xb7e45890 to 0xb63fe328 skip 28115: no copy 0xb7e45898 to 0xb63fe750 skip 28115: no copy 0xb7e458a0 to 0xb63f7d8a skip 28115: no copy 0xb7e458a8 to 0xb63fd804 skip 28115: do copy 0xb5d9152c to 0xdeadbeef match [&0xb5dd5d08 -> &0xb6418b28] 28115: do copy 0xb5d91b28 to 0xdeadbeef match [&0xb5dd5d0c -> &0xb6418b2c] 28115: do copy 0xb5d95c72 to 0xdeadbeef match [&0xb5dd5d10 -> &0xb6418b30] 28115: do copy 0xb5d956b8 to 0xdeadbeef match [&0xb5dd5d14 -> &0xb6418b34] 28115: do copy 0xb5d956e6 to 0xdeadbeef match [&0xb5dd5d18 -> &0xb6418b38] 28115: do copy 0xb5d949d0 to 0xdeadbeef match [&0xb5dd5d1c -> &0xb6418b3c] 28115: move to next vtrel entry 28115: copy from 0xb5dd6a90 to 0xb6418618 mask 0x1 28115: do copy 0xb769b1fa to 0xdeadbeef match [&0xb5dd6a90 -> &0xb6418618] 28115: move to next vtrel entry 28115: copy from 0xb6418618 to 0xb64186f0 mask 0x1 28115: do copy 0xb769b1fa to 0xdeadbeef match [&0xb6418618 -> &0xb64186f0] 28115: move to next vtrel entry 28115: copy from 0xb6418858 to 0xb64187b8 mask 0xcf 28115: do copy 0xb63ee3d4 to 0xdeadbeef match [&0xb6418858 -> &0xb64187b8] 28115: do copy 0xb63ee3a2 to 0xdeadbeef match [&0xb641885c -> &0xb64187bc] 28115: do copy 0xb63ee370 to 0xdeadbeef match [&0xb6418860 -> &0xb64187c0] 28115: do copy 0xdeadbeef to 0xdeadbeef match [&0xb6418864 -> &0xb64187c4] 28115: no copy 0xb63ee2ec to 0xb63ecec6 skip 28115: no copy 0xb63ee2a8 to 0xb63ece60 skip 28115: do copy 0xb63ee25a to 0xdeadbeef match [&0xb6418870 -> &0xb64187d0] 28115: do copy 0xb63ee226 to 0xdeadbeef matchg [&0xb6418874 -> &0xb64187d4] 28115: move to next vtrel entry 28115: copy from 0xb6418858 to 0xb6418988 mask 0xcf 28115: do copy 0xb63ee3d4 to 0xdeadbeef match [&0xb6418858 -> &0xb6418988] 28115: do copy 0xb63ee3a2 to 0xdeadbeef match [&0xb641885c -> &0xb641898c] 28115: do copy 0xb63ee370 to 0xdeadbeef match [&0xb6418860 -> &0xb6418990] 28115: do copy 0xdeadbeef to 0xdeadbeef match [&0xb6418864 -> &0xb6418994] 28115: no copy 0xb63ee2ec to 0xb63f50dc skip 28115: no copy 0xb63ee2a8 to 0xb63f5076 skip 28115: do copy 0xb63ee25a to 0xdeadbeef match [&0xb6418870 -> &0xb64189a0] 28115: do copy 0xb63ee226 to 0xdeadbeef match [&0xb6418874 -> &0xb64189a4] 28115: move to next vtrel entry 28115: copy from 0x8090a84 to 0xb6418864 mask 0x1 28115: do copy 0x80619e4 to 0xdeadbeef match [&0x8090a84 -> &0xb6418864] 28115: move to next vtrel entry These two are confused: '.vtrelocs._ZVTR_00000011_21DocumentFocusListener': 28115: copy from 0xb6418858 to 0xb6418988 mask 0xcf 28115: do copy 0xb63ee3d4 to 0xdeadbeef match [&0xb6418858 -> &0xb6418988] 28115: do copy 0xb63ee3a2 to 0xdeadbeef match [&0xb641885c -> &0xb641898c] 28115: do copy 0xb63ee370 to 0xdeadbeef match [&0xb6418860 -> &0xb6418990] 28115: do copy 0xdeadbeef to 0xdeadbeef match [***&0xb6418864*** -> &0xb6418994] 28115: no copy 0xb63ee2ec to 0xb63f50dc skip 28115: no copy 0xb63ee2a8 to 0xb63f5076 skip 28115: do copy 0xb63ee25a to 0xdeadbeef match [&0xb6418870 -> &0xb64189a0] 28115: do copy 0xb63ee226 to 0xdeadbeef match [&0xb6418874 -> &0xb64189a4] 28115: move to next vtrel entry '.vtrelocs._ZVTR_00000012_N4cppu15WeakImplHelper1IN3com3sun4star13accessibility24XAccessibleEventListenerEEE': 28115: copy from 0x8090a84 to 0xb6418864 mask 0x1 28115: do copy 0x80619e4 to 0xdeadbeef match [&0x8090a84 -> ***&0xb6418864***] ** Build a test: '.vtrelocs._ZVTR_00000008_8ErrorBox': '.vtrelocs._ZVTR_00000008_8QueryBox': /home/opt/gcc/bin/../libexec/gcc/i686-pc-linux-gnu/4.2.1/cc1plus -quiet -I. -I../../unxlngi6.pro/inc/svdraw -I../inc -I../../inc/pch -I../../inc -I../../unx/inc -I../../unxlngi6.pro/inc -I. -I/opt/OpenOffice/ooh680-m1/solver/680/unxlngi6.pro/inc/stl -I/opt/OpenOffice/ooh680-m1/solver/680/unxlngi6.pro/inc/external -I/opt/OpenOffice/ooh680-m1/solver/680/unxlngi6.pro/inc -I/opt/OpenOffice/ooh680-m1/solenv/unxlngi6/inc -I/opt/OpenOffice/ooh680-m1/solenv/inc -I/opt/OpenOffice/ooh680-m1/res -I/opt/OpenOffice/ooh680-m1/solver/680/unxlngi6.pro/inc/stl -I/opt/OpenOffice/ooh680-m1/solenv/inc/Xp31 -I/usr/lib/jvm/java/include -I/usr/lib/jvm/java/include/linux -I/usr/lib/jvm/java/include/native_threads/include -I/usr/include -I/opt/OpenOffice/ooh680-m1/solver/680/unxlngi6.pro/inc/offuh -I. -I../../res -I. -iprefix /home/opt/gcc/bin/../lib/gcc/i686-pc-linux-gnu/4.2.1/ -D_GNU_SOURCE -DENABLE_GTK -DLINUX -DUNX -DVCL -DGCC -DC341 -DINTEL -DCVER=C341 -DNPTL -DGLIBC=2 -DX86 -D_PTHREADS -D_REENTRANT -DNEW_SOLAR -D_USE_NAMESPACE=1 -DSTLPORT_VERSION=400 -DHAVE_GCC_VISIBILITY_FEATURE -D__DMAKE -DUNIX -DCPPU_ENV=gcc3 -DGXX_INCLUDE_PATH=/usr/include/c++/4.2.1 -DSUPD=680 -DPRODUCT -DNDEBUG -DPRODUCT_FULL -DOSL_DEBUG_LEVEL=0 -DOPTIMIZE -DGSTREAMER -DCUI -DSOLAR_JAVA -DOOH680=OOH680 -DSVX_DLLIMPLEMENTATION -DSHAREDLIB -D_DLL_ -DEXCEPTIONS_ON /home/opt/OpenOffice/ooh680-m1/svx/source/svdraw/svdobj.cxx -quiet -dumpbase svdobj.cxx -mtune=pentiumpro -auxbase-strip ../../unxlngi6.pro/slo/svdobj.o -Os -Wall -Wextra -Wendif-labels -Wshadow -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor -fmessage-length=0 -fno-strict-aliasing -fvisibility=hidden -fvisibility-inlines-hidden -fpic -fexceptions -fno-enforce-eh-specs -o - Generate vtreloc variable '_ZVTR_00000002_15SvCompatWeakHdl' comdat? 1name '_ZVTR_00000002_9SvWeakHdl' Generate vtreloc variable '_ZVTR_00000002_9SvWeakHdl' comdat? 1 Program received signal SIGSEGV, Segmentation fault. cgraph_node_remove_callees (node=0xb1713000) at ../.././gcc/cgraph.c:436 436 if (e->prev_caller) (gdb) bt #0 cgraph_node_remove_callees (node=0xb1713000) at ../.././gcc/cgraph.c:436 #1 0x084204ea in cgraph_remove_node (node=0xb1713000) at ../.././gcc/cgraph.c:535 #2 0x0842272e in cgraph_finalize_compilation_unit () at ../.././gcc/cgraphunit.c:1167 #3 0x080892f5 in cp_finish_file () at ../.././gcc/cp/decl2.c:3414 #4 0x0810102f in c_common_parse_file (set_yydebug=0) at ../.././gcc/c-opts.c:1184 #5 0x083bb5d0 in toplev_main (argc=87, argv=0xbf969944) at ../.././gcc/toplev.c:1033 #6 0x0810b46f in main (argc=1, argv=0x0) at ../.././gcc/main.c:35 SVX: ../unxlngi6.pro/slo/xmlxtexp.o:(.data.rel.ro._ZTV27SvxXMLXTableExportComponent[vtable for SvxXMLXTableExportComponent]+0x16c): undefined reference to `non-virtual thunk to cppu::WeakImplHelper6::release()' _ZTV27SvxXMLXTableExportComponent: -> .long _ZThn16_N4cppu15WeakImplHelper6IN3com3sun4star8document7XFilterENS3_4lang12XServiceInfoENS4_9XExporterENS6_15XInitializationENS3_9container6XNamedENS6_10XUnoTunnelEE14queryInterfaceERKNS3_3uno4TypeE + simply not in the .s file [ most odd ] ** Turn on & try construction vtable bits ? :-) ** FIXME: + should we be copying thunks from our parents ? method.c: 'emit_associated_thunks' ... + hmm ;-) method.c: 'make_thunk' ... - called from where ? ** FIXME: make_thunk - called, but not 'finish_thunk' ... * we have 195 'make_thunk' calls * we have 8 'generate thunk' calls. + most odd [!] grep '_ZThn' /tmp/xmlxtexp.s.pristine | wc -l 196 grep '_ZThn' /tmp/xmlxtexp.s-shrink | wc -l 81 + Interesting. ** Chase how thunks are generated + can we defer our generation of _ZVTR stuff until a -lot- later ? ** FIXME: why are we not generating thunks !? + they seem to be associated with functions + but ... why? they don't call functions. ** The --real-- question from xmlxtexp.cxx is: + *Why* do we not get an SvXMLExport vtable ? _ZVTR_00000006_27SvxXMLXTableExportComponent: .long _ZTV11SvXMLExport+136 .long _ZTV27SvxXMLXTableExportComponent+136 .long 4095 + *That* should have the missing thunks [!] + Or better [!] + we should generate copy relocs for the thunks + they are after all - just the same ... + *But* why are we missing that vtable too ? + it is external ... [!?] + FIXME: + make test case: + hide the parent classs + first force some thunk generation (!?) ** FIXME: + specified in libxo680li ... [!] ** FIXME: + regression test with visibility markup ! ;-) ** FIXME: + working nicely now -except- [!] + define SAL_NO_VTABLE + abstract base classes - don't need copying ? + they won't have a vtable emitted ... ** FIXME: + ../unxlngi6.pro/slo/xmlxtexp.o:(.data.rel.ro._ZTV27SvxXMLXTableExportComponent[vtable for SvxXMLXTableExportComponent]+0x16c): undefined reference to `non-virtual thunk to cppu::WeakImplHelper6::release()' .long -40 .long _ZTI27SvxXMLXTableExportComponent .long _ZThn40_N4cppu15WeakImplHelper6IN3com3sun4star8document7XFilterENS3_4lang12XServiceInfoENS4_9XExporterENS6_15XInitializationENS3_9container6XNamedENS6_10XUnoTunnelEE14queryInterfaceERKNS3_3uno4TypeE .long _ZThn40_N4cppu15WeakImplHelper6IN3com3sun4star8document7XFilterENS3_4lang12XServiceInfoENS4_9XExporterENS6_15XInitializationENS3_9container6XNamedENS6_10XUnoTunnelEE7acquireEv .long _ZThn40_N4cppu15WeakImplHelper6IN3com3sun4star8document7XFilterENS3_4lang12XServiceInfoENS4_9XExporterENS6_15XInitializationENS3_9container6XNamedENS6_10XUnoTunnelEE7releaseEv .long _ZThn40_N11SvXMLExport12getSomethingERKN3com3sun4star3uno8SequenceIaEE .long _ZVTR_00000006_27SvxXMLXTableExportComponent Thunk!: 1 1 1 1 cppu::WeakImplHelper6::_ZThn40_N4cppu15WeakImplHelper6IN3com3sun4star8document7XFilterENS3_4lang12XServiceInfoENS4_9XExporterENS6_15XInitializationENS3_9container6XNamedENS6_10XUnoTunnelEE7releaseEv : com::sun::star::uno::XInterface !=? cppu::WeakImplHelper6 0xb6a89bdc !=? 0xb4f84564 !=? 0xb4f82780 !=? 0xb4f82780 !=? 0xb4f66e70 (nil) !=? 0x32040200 !=? 0xb4f66e70 !=? 0xb4f66e70 !=? (nil) ** Hard to determine overriding by thetimewe get here ... so- instead-update_vtable_entry_for_fn (?) finish_struct_1 ? ... :-) ../unxlngi6.pro/slo/xmlxtimp.o:(.vtrelocs._ZVTR_00000006_18SvxXMLXTableImport[_ZVTR_00000006_18SvxXMLXTableImport]+0x3c): undefined reference to `vtable for com::sun::star::xml::sax::XExtendedDocumentHandler' FIXME: this is just bogus ! SvxXMLXTableImport does indeed inherit from XExtendedDocumentHandler + but not here + and only 'via' a template class: .long _ZThn32_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE14queryInterfaceERKNS3_3uno4TypeE class SvxXMLXTableImport : public SvXMLImport Copy SvXMLImport + 2 => SvxXMLXTableImport + 2 mask 0xfffffecf Copy SvXMLImport + 34 => SvxXMLXTableImport + 34 mask 0x7f Copy com::sun::star::lang::XTypeProvider + 2 => SvxXMLXTableImport + 43 mask 0x1f Copy com::sun::star::xml::sax::XExtendedDocumentHandler + 2 => SvxXMLXTableImport + 50 mask 0xffff Copy com::sun::star::lang::XServiceInfo + 2 => SvxXMLXTableImport + 68 mask 0x3f Copy com::sun::star::lang::XInitialization + 2 => SvxXMLXTableImport + 76 mask 0xf Copy com::sun::star::document::XImporter + 2 => SvxXMLXTableImport + 82 mask 0xf Copy com::sun::star::document::XFilter + 2 => SvxXMLXTableImport + 88 mask 0x1f Copy com::sun::star::lang::XUnoTunnel + 2 => SvxXMLXTableImport + 95 mask 0xf ** Just a nonsense ! :-) FIXME: why so hard to generate test cases ? FIXME: it's all rubbish! + thunk namemangling *looks* like it's inheritingsomething, but it'snot. +there is (apparently) no vtablefor: .long _ZThn16_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE14queryInterfaceERKNS3_3uno4TypeE eg. xmlxtimp.s.pristine: .long -20 .long _ZTI18SvxXMLXTableImport .long _ZThn20_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE14queryInterfaceERKNS3_3uno4TypeE .long _ZThn20_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE7acquireEv .long _ZThn20_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE7releaseEv these guys above should be there. below - notso. .long _ZThn20_N11SvXMLImport13startDocumentEv .long _ZThn20_N11SvXMLImport11endDocumentEv .long _ZThn20_N11SvXMLImport12startElementERKN3rtl8OUStringERKN3com3sun4star3uno9ReferenceINS6_3xml3sax14XAttributeListEEE .long _ZThn20_N11SvXMLImport10endElementERKN3rtl8OUStringE .long _ZThn20_N11SvXMLImport10charactersERKN3rtl8OUStringE .long _ZThn20_N11SvXMLImport19ignorableWhitespaceERKN3rtl8OUStringE .long _ZThn20_N11SvXMLImport21processingInstructionERKN3rtl8OUStringES3_ .long _ZThn20_N11SvXMLImport18setDocumentLocatorERKN3com3sun4star3uno9ReferenceINS2_3xml3sax8XLocatorEEE .long _ZThn20_N11SvXMLImport10startCDATAEv .long _ZThn20_N11SvXMLImport8endCDATAEv .long _ZThn20_N11SvXMLImport7commentERKN3rtl8OUStringE .long _ZThn20_N11SvXMLImport14allowLineBreakEv .long _ZThn20_N11SvXMLImport7unknownERKN3rtl8OUStringE hacked: _ZTV18SvxXMLXTableImport: .long 0 .long _ZTI18SvxXMLXTableImport .long -559038737 .long -559038737 .long -559038737 .long -559038737 .long _ZN18SvxXMLXTableImportD1Ev .long _ZN18SvxXMLXTableImportD0Ev .long -559038737 .long -559038737 .long _ZN18SvxXMLXTableImport13CreateContextEtRKN3rtl8OUStringERKN3com3sun4star3uno9ReferenceINS6_3xml3sax14XAttributeListEEE .long -559038737 .long -559038737 .long -559038737 .long -559038737 .long -559038737 .long -559038737 .long -559038737 .long -559038737 .long -559038737 .long -559038737 .long -559038737 .long -559038737 .long -559038737 .long -559038737 .long -559038737 .long -559038737 .long -559038737 .long -559038737 .long -559038737 .long -559038737 .long -559038737 .long -559038737 .long -559038737 .long -559038737 .long -559038737 .long -559038737 .long -559038737 .long -559038737 .long -559038737 .long -559038737 .long -16 .long _ZTI18SvxXMLXTableImport .long -559026176 .long -559026176 .long -559026176 .long -559026176 .long -559026176 .long -20 .long _ZTI18SvxXMLXTableImport .long -559026176 .long -559026176 .long -559026176 .long -559026176 .long -559026176 .long -559026176 .long -559026176 .long -559026176 .long -559026176 .long -559026176 .long -559026176 .long -559026176 .long -559026176 .long -559026176 .long -559026176 .long -559026176 .long -24 .long _ZTI18SvxXMLXTableImport .long -559026176 .long -559026176 .long -559026176 .long -559026176 .long -559026176 .long -559026176 .long -28 .long _ZTI18SvxXMLXTableImport .long -559026176 .long -559026176 .long -559026176 .long _ZThn28_N11SvXMLImport10initializeERKN3com3sun4star3uno8SequenceINS3_3AnyEEE .long -32 .long _ZTI18SvxXMLXTableImport .long -559026176 .long -559026176 .long -559026176 .long _ZThn32_N11SvXMLImport17setTargetDocumentERKN3com3sun4star3uno9ReferenceINS2_4lang10XComponentEEE .long -36 .long _ZTI18SvxXMLXTableImport .long -559026176 .long -559026176 .long -559026176 .long _ZThn36_N11SvXMLImport6filterERKN3com3sun4star3uno8SequenceINS2_5beans13PropertyValueEEE .long _ZThn36_N11SvXMLImport6cancelEv .long -40 .long _ZTI18SvxXMLXTableImport .long -559026176 .long -559026176 .long -559026176 .long _ZThn40_N11SvXMLImport12getSomethingERKN3com3sun4star3uno8SequenceIaEE .long _ZVTR_00000006_18SvxXMLXTableImport .hidden _ZTV24SvxXMLTableImportContext pristine: _ZTV18SvxXMLXTableImport: .long 0 .long _ZTI18SvxXMLXTableImport .long _ZN4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE14queryInterfaceERKNS3_3uno4TypeE .long _ZN4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE7acquireEv .long _ZN4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE7releaseEv .long _ZN4cppu11OWeakObject12queryAdapterEv .long _ZN18SvxXMLXTableImportD1Ev .long _ZN18SvxXMLXTableImportD0Ev .long _ZN4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE8getTypesEv .long _ZN4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE19getImplementationIdEv .long _ZN18SvxXMLXTableImport13CreateContextEtRKN3rtl8OUStringERKN3com3sun4star3uno9ReferenceINS6_3xml3sax14XAttributeListEEE .long _ZN11SvXMLImport16CreateTextImportEv .long _ZN11SvXMLImport17CreateShapeImportEv .long _ZN11SvXMLImport17CreateChartImportEv .long _ZN11SvXMLImport16CreateFormImportEv .long _ZN11SvXMLImport13startDocumentEv .long _ZN11SvXMLImport11endDocumentEv .long _ZN11SvXMLImport12startElementERKN3rtl8OUStringERKN3com3sun4star3uno9ReferenceINS6_3xml3sax14XAttributeListEEE .long _ZN11SvXMLImport10endElementERKN3rtl8OUStringE .long _ZN11SvXMLImport10charactersERKN3rtl8OUStringE .long _ZN11SvXMLImport19ignorableWhitespaceERKN3rtl8OUStringE .long _ZN11SvXMLImport21processingInstructionERKN3rtl8OUStringES3_ .long _ZN11SvXMLImport18setDocumentLocatorERKN3com3sun4star3uno9ReferenceINS2_3xml3sax8XLocatorEEE .long _ZN11SvXMLImport10startCDATAEv .long _ZN11SvXMLImport8endCDATAEv .long _ZN11SvXMLImport7commentERKN3rtl8OUStringE .long _ZN11SvXMLImport14allowLineBreakEv .long _ZN11SvXMLImport7unknownERKN3rtl8OUStringE .long _ZN11SvXMLImport17setTargetDocumentERKN3com3sun4star3uno9ReferenceINS2_4lang10XComponentEEE .long _ZN11SvXMLImport6filterERKN3com3sun4star3uno8SequenceINS2_5beans13PropertyValueEEE .long _ZN11SvXMLImport6cancelEv .long _ZN11SvXMLImport10initializeERKN3com3sun4star3uno8SequenceINS3_3AnyEEE .long _ZN11SvXMLImport12getSomethingERKN3com3sun4star3uno8SequenceIaEE .long _ZN11SvXMLImport21getImplementationNameEv .long _ZN11SvXMLImport15supportsServiceERKN3rtl8OUStringE .long _ZN11SvXMLImport24getSupportedServiceNamesEv .long _ZN11SvXMLImport22SetStatisticAttributesERKN3com3sun4star3uno9ReferenceINS2_3xml3sax14XAttributeListEEE .long _ZN11SvXMLImport15SetViewSettingsERKN3com3sun4star3uno8SequenceINS2_5beans13PropertyValueEEE .long _ZN11SvXMLImport24SetConfigurationSettingsERKN3com3sun4star3uno8SequenceINS2_5beans13PropertyValueEEE .long _ZN11SvXMLImport14DisposingModelEv .long _ZN11SvXMLImport10initXFormsEv .long -16 .long _ZTI18SvxXMLXTableImport .long _ZThn16_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE14queryInterfaceERKNS3_3uno4TypeE .long _ZThn16_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE7acquireEv .long _ZThn16_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE7releaseEv .long _ZThn16_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE8getTypesEv .long _ZThn16_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE19getImplementationIdEv .long -20 .long _ZTI18SvxXMLXTableImport .long _ZThn20_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE14queryInterfaceERKNS3_3uno4TypeE .long _ZThn20_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE7acquireEv .long _ZThn20_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE7releaseEv .long _ZThn20_N11SvXMLImport13startDocumentEv .long _ZThn20_N11SvXMLImport11endDocumentEv .long _ZThn20_N11SvXMLImport12startElementERKN3rtl8OUStringERKN3com3sun4star3uno9ReferenceINS6_3xml3sax14XAttributeListEEE .long _ZThn20_N11SvXMLImport10endElementERKN3rtl8OUStringE .long _ZThn20_N11SvXMLImport10charactersERKN3rtl8OUStringE .long _ZThn20_N11SvXMLImport19ignorableWhitespaceERKN3rtl8OUStringE .long _ZThn20_N11SvXMLImport21processingInstructionERKN3rtl8OUStringES3_ .long _ZThn20_N11SvXMLImport18setDocumentLocatorERKN3com3sun4star3uno9ReferenceINS2_3xml3sax8XLocatorEEE .long _ZThn20_N11SvXMLImport10startCDATAEv .long _ZThn20_N11SvXMLImport8endCDATAEv .long _ZThn20_N11SvXMLImport7commentERKN3rtl8OUStringE .long _ZThn20_N11SvXMLImport14allowLineBreakEv .long _ZThn20_N11SvXMLImport7unknownERKN3rtl8OUStringE .long -24 .long _ZTI18SvxXMLXTableImport .long _ZThn24_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE14queryInterfaceERKNS3_3uno4TypeE .long _ZThn24_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE7acquireEv .long _ZThn24_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE7releaseEv .long _ZThn24_N11SvXMLImport21getImplementationNameEv .long _ZThn24_N11SvXMLImport15supportsServiceERKN3rtl8OUStringE .long _ZThn24_N11SvXMLImport24getSupportedServiceNamesEv .long -28 .long _ZTI18SvxXMLXTableImport .long _ZThn28_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE14queryInterfaceERKNS3_3uno4TypeE .long _ZThn28_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE7acquireEv .long _ZThn28_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE7releaseEv .long _ZThn28_N11SvXMLImport10initializeERKN3com3sun4star3uno8SequenceINS3_3AnyEEE .long -32 .long _ZTI18SvxXMLXTableImport .long _ZThn32_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE14queryInterfaceERKNS3_3uno4TypeE .long _ZThn32_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE7acquireEv .long _ZThn32_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE7releaseEv .long _ZThn32_N11SvXMLImport17setTargetDocumentERKN3com3sun4star3uno9ReferenceINS2_4lang10XComponentEEE .long -36 .long _ZTI18SvxXMLXTableImport .long _ZThn36_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE14queryInterfaceERKNS3_3uno4TypeE .long _ZThn36_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE7acquireEv .long _ZThn36_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE7releaseEv .long _ZThn36_N11SvXMLImport6filterERKN3com3sun4star3uno8SequenceINS2_5beans13PropertyValueEEE .long _ZThn36_N11SvXMLImport6cancelEv .long -40 .long _ZTI18SvxXMLXTableImport .long _ZThn40_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE14queryInterfaceERKNS3_3uno4TypeE .long _ZThn40_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE7acquireEv .long _ZThn40_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE7releaseEv .long _ZThn40_N11SvXMLImport12getSomethingERKN3com3sun4star3uno8SequenceIaEE .hidden _ZTV24SvxXMLTableImportContext .weak _ZTV24SvxXMLTableImportContext .section .data.rel.ro._ZTV24SvxXMLTableImportContext,"awG",@progbits,_ZTV24SvxXMLTableImportContext,comdat parent: _ZTV11SvXMLImport: .long 0 .long _ZTI11SvXMLImport .long _ZN4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE14queryInterfaceERKNS3_3uno4TypeE .long _ZN4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE7acquireEv .long _ZN4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE7releaseEv .long _ZN4cppu11OWeakObject12queryAdapterEv .long _ZN11SvXMLImportD1Ev .long _ZN11SvXMLImportD0Ev .long _ZN4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE8getTypesEv .long _ZN4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE19getImplementationIdEv .long _ZN11SvXMLImport13CreateContextEtRKN3rtl8OUStringERKN3com3sun4star3uno9ReferenceINS6_3xml3sax14XAttributeListEEE .long _ZN11SvXMLImport16CreateTextImportEv .long _ZN11SvXMLImport17CreateShapeImportEv .long _ZN11SvXMLImport17CreateChartImportEv .long _ZN11SvXMLImport16CreateFormImportEv .long _ZN11SvXMLImport13startDocumentEv .long _ZN11SvXMLImport11endDocumentEv .long _ZN11SvXMLImport12startElementERKN3rtl8OUStringERKN3com3sun4star3uno9ReferenceINS6_3xml3sax14XAttributeListEEE .long _ZN11SvXMLImport10endElementERKN3rtl8OUStringE .long _ZN11SvXMLImport10charactersERKN3rtl8OUStringE .long _ZN11SvXMLImport19ignorableWhitespaceERKN3rtl8OUStringE .long _ZN11SvXMLImport21processingInstructionERKN3rtl8OUStringES3_ .long _ZN11SvXMLImport18setDocumentLocatorERKN3com3sun4star3uno9ReferenceINS2_3xml3sax8XLocatorEEE .long _ZN11SvXMLImport10startCDATAEv .long _ZN11SvXMLImport8endCDATAEv .long _ZN11SvXMLImport7commentERKN3rtl8OUStringE .long _ZN11SvXMLImport14allowLineBreakEv .long _ZN11SvXMLImport7unknownERKN3rtl8OUStringE .long _ZN11SvXMLImport17setTargetDocumentERKN3com3sun4star3uno9ReferenceINS2_4lang10XComponentEEE .long _ZN11SvXMLImport6filterERKN3com3sun4star3uno8SequenceINS2_5beans13PropertyValueEEE .long _ZN11SvXMLImport6cancelEv .long _ZN11SvXMLImport10initializeERKN3com3sun4star3uno8SequenceINS3_3AnyEEE .long _ZN11SvXMLImport12getSomethingERKN3com3sun4star3uno8SequenceIaEE .long _ZN11SvXMLImport21getImplementationNameEv .long _ZN11SvXMLImport15supportsServiceERKN3rtl8OUStringE .long _ZN11SvXMLImport24getSupportedServiceNamesEv .long _ZN11SvXMLImport22SetStatisticAttributesERKN3com3sun4star3uno9ReferenceINS2_3xml3sax14XAttributeListEEE .long _ZN11SvXMLImport15SetViewSettingsERKN3com3sun4star3uno8SequenceINS2_5beans13PropertyValueEEE .long _ZN11SvXMLImport24SetConfigurationSettingsERKN3com3sun4star3uno8SequenceINS2_5beans13PropertyValueEEE .long _ZN11SvXMLImport14DisposingModelEv .long _ZN11SvXMLImport10initXFormsEv .long -16 .long _ZTI11SvXMLImport .long _ZThn16_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE14queryInterfaceERKNS3_3uno4TypeE .long _ZThn16_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE7acquireEv .long _ZThn16_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE7releaseEv .long _ZThn16_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE8getTypesEv .long _ZThn16_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE19getImplementationIdEv .long -20 .long _ZTI11SvXMLImport .long _ZThn20_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE14queryInterfaceERKNS3_3uno4TypeE .long _ZThn20_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE7acquireEv .long _ZThn20_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE7releaseEv .long _ZThn20_N11SvXMLImport13startDocumentEv .long _ZThn20_N11SvXMLImport11endDocumentEv .long _ZThn20_N11SvXMLImport12startElementERKN3rtl8OUStringERKN3com3sun4star3uno9ReferenceINS6_3xml3sax14XAttributeListEEE .long _ZThn20_N11SvXMLImport10endElementERKN3rtl8OUStringE .long _ZThn20_N11SvXMLImport10charactersERKN3rtl8OUStringE .long _ZThn20_N11SvXMLImport19ignorableWhitespaceERKN3rtl8OUStringE .long _ZThn20_N11SvXMLImport21processingInstructionERKN3rtl8OUStringES3_ .long _ZThn20_N11SvXMLImport18setDocumentLocatorERKN3com3sun4star3uno9ReferenceINS2_3xml3sax8XLocatorEEE .long _ZThn20_N11SvXMLImport10startCDATAEv .long _ZThn20_N11SvXMLImport8endCDATAEv .long _ZThn20_N11SvXMLImport7commentERKN3rtl8OUStringE .long _ZThn20_N11SvXMLImport14allowLineBreakEv .long _ZThn20_N11SvXMLImport7unknownERKN3rtl8OUStringE .long -24 .long _ZTI11SvXMLImport .long _ZThn24_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE14queryInterfaceERKNS3_3uno4TypeE .long _ZThn24_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE7acquireEv .long _ZThn24_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE7releaseEv .long _ZThn24_N11SvXMLImport21getImplementationNameEv .long _ZThn24_N11SvXMLImport15supportsServiceERKN3rtl8OUStringE .long _ZThn24_N11SvXMLImport24getSupportedServiceNamesEv .long -28 .long _ZTI11SvXMLImport .long _ZThn28_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE14queryInterfaceERKNS3_3uno4TypeE .long _ZThn28_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE7acquireEv .long _ZThn28_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE7releaseEv .long _ZThn28_N11SvXMLImport10initializeERKN3com3sun4star3uno8SequenceINS3_3AnyEEE .long -32 .long _ZTI11SvXMLImport .long _ZThn32_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE14queryInterfaceERKNS3_3uno4TypeE .long _ZThn32_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE7acquireEv .long _ZThn32_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE7releaseEv .long _ZThn32_N11SvXMLImport17setTargetDocumentERKN3com3sun4star3uno9ReferenceINS2_4lang10XComponentEEE .long -36 .long _ZTI11SvXMLImport .long _ZThn36_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE14queryInterfaceERKNS3_3uno4TypeE .long _ZThn36_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE7acquireEv .long _ZThn36_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE7releaseEv .long _ZThn36_N11SvXMLImport6filterERKN3com3sun4star3uno8SequenceINS2_5beans13PropertyValueEEE .long _ZThn36_N11SvXMLImport6cancelEv .long -40 .long _ZTI11SvXMLImport .long _ZThn40_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE14queryInterfaceERKNS3_3uno4TypeE .long _ZThn40_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE7acquireEv .long _ZThn40_N4cppu15WeakImplHelper6IN3com3sun4star3xml3sax24XExtendedDocumentHandlerENS3_4lang12XServiceInfoENS7_15XInitializationENS3_8document9XImporterENSA_7XFilterENS7_10XUnoTunnelEE7releaseEv .long _ZThn40_N11SvXMLImport12getSomethingERKN3com3sun4star3uno8SequenceIaEE .hidden _ZTV24SvXMLImportEventListener .weak _ZTV24SvXMLImportEventListener // Herein lies the problem: // Init vtable idx 2: t - (SvxXMLXTableImport) binfo - (com::sun::star::xml::sax::XExtendedDocumentHandler) orig_binfo - (com::sun::star::xml::sax::XExtendedDocumentHandler) rtti-binfo - (SvxXMLXTableImport) primary-binfo (com::sun::star::xml::sax::XDocumentHandler)** 2 inits ** /* Write details about vtable inheritance, if we have any parent entries */ if (slot_relocs) { unsigned i; tree copy_parent = orig_binfo; if (orig_binfo == TYPE_BINFO (t)) copy_parent = get_primary_binfo (orig_binfo); ** FIXME:intests,definekey method in.cxx ... crashes on: 86 pWeak->getTypes(); (gdb) p (void (void) **)&_ZTV15DerivedFromWeak ** Broken copy offset: [!?] (gdb) p $17[8] $43 = (void (*)(void)) 0x8048fe4 (gdb) p $17[9] $44 = (void (*)(void)) 0x804876c (gdb) p $17[10] $45 = (void (*)(void)) 0xffffffec From XTypeProvider [!] _ZVTR_00000005_15DerivedFromWeak: .long _ZTV15WeakImplHelper1I24XAccessibleEventListenerE+8 .long _ZTV15DerivedFromWeak+8 .long 14723 should be: .long -12 .long _ZTI15DerivedFromWeak .long _ZN13XTypeProvider7acquireEv .long _ZN13XTypeProvider8getTypesEv _ZTV15WeakImplHelper1I24XAccessibleEventListenerE: .long 0 .long _ZTI15WeakImplHelper1I24XAccessibleEventListenerE .long _ZN5XWeak7acquireEv .long _ZN5XWeak12queryAdapterEv .long _ZN15WeakImplHelper1I24XAccessibleEventListenerED1Ev .long _ZN15WeakImplHelper1I24XAccessibleEventListenerED0Ev .long -12 .long _ZTI15WeakImplHelper1I24XAccessibleEventListenerE .long _ZN13XTypeProvider7acquireEv .long _ZN13XTypeProvider8getTypesEv .long -20 .long _ZTI15WeakImplHelper1I24XAccessibleEventListenerE .long _ZN14XEventListener7acquireEv .long _ZN14XEventListener9disposingEv .long _ZN24XAccessibleEventListener11notifyEventEv [end] _ZTV15DerivedFromWeak: .long 0 .long _ZTI15DerivedFromWeak .long _ZN5XWeak7acquireEv .long _ZN5XWeak12queryAdapterEv .long _ZN15DerivedFromWeakD1Ev .long _ZN15DerivedFromWeakD0Ev .long _ZN15DerivedFromWeak9thunkfestEv !!!!!!!!!!! new method !!!!!!!!!! .long -12 .long _ZTI15DerivedFromWeak .long _ZN13XTypeProvider7acquireEv .long _ZN13XTypeProvider8getTypesEv .long -20 .long _ZTI15DerivedFromWeak .long _ZN14XEventListener7acquireEv .long _ZN14XEventListener9disposingEv .long _ZN24XAccessibleEventListener11notifyEventEv [end] ie. vtables can grow in the middle - *because* we find vmethods from the instance, and this has fixed up pointers. + the instance fixup numbers are stored in BINFO_OFFSET - but this is an instance fixup offset: not what we want in fact. * What data do we have to hand ? * * What data do we need to get through to this thing ? * * FIXME: how does a virtual function call, find which fn it is in a vtable ? * FIXME: if we could just compare lists of inits straight ? would that be easier ? * and zap them later ? * could include the int csts etc. ? * very simple & generic ? DerivedFromWeak (0xb7dd4740) 0 WeakImplHelper1 (0xb7dd1510) 0 primary-for DerivedFromWeak (0xb7dd4740) OWeakObject (0xb7dd4780) 0 primary-for WeakImplHelper1 (0xb7dd1510) XWeak (0xb7dd47c0) 0 primary-for OWeakObject (0xb7dd4780) XInterface (0xb7dd4800) 0 nearly-empty primary-for XWeak (0xb7dd47c0) XTypeProvider (0xb7dd4840) 12 XInterface (0xb7dd4880) 12 nearly-empty primary-for XTypeProvider (0xb7dd4840) XAccessibleEventListener (0xb7dd48c0) 20 XEventListener (0xb7dd4900) 20 primary-for XAccessibleEventListener (0xb7dd48c0) XInterface (0xb7dd4940) 20 nearly-empty primary-for XEventListener (0xb7dd4900) ie. + We cannot do a linear copy from _ZTV15WeakImplHelper1I24XAccessibleEventListenerE: + to _ZTV15DerivedFromWeak: + we need to skip pieces ... ! :-) + our new vtable is longer. + SOOoooo .... :-) + need to notice & calc the difference [?] Mismatch vs: from WeakImplHelper1 (16) entries 0 NULL 1 NULL 2 XWeak::acquire [ 0 ] 3 XWeak::queryAdapter [ 1 ] 4 NULL 5 NULL 6 NULL 7 NULL ** One too many here ! ** 8 NULL 9 XTypeProvider::acquire [ 0 ] 10 XTypeProvider::getTypes [ 1 ] 11 NULL 12 NULL 13 XEventListener::acquire [ 0 ] 14 XEventListener::disposing [ 1 ] 15 XAccessibleEventListener::notifyEvent [ 2 ] *** FIXME: + a nice generic algorithm for comparing classes ... + a set of inits can be seen as: + [[]+[method+]]+ + => we can use the type-info pieces to thunk this pleasantly. + this substantially shrinks the search space ... + is prolly optional - + FIXME: print-out a set of examples & hack up an algorithm ... + compile a.cxx and b.cxx etc. VTable for 'VVirt' 0 28u 4 (int (*)(...))0 8 (int (*)(...))(& _ZTI5VVirt) 12 XTypeProvider::acquire 16 XTypeProvider::getTypes 20 VVirt::~VVirt 24 VVirt::~VVirt 28 16u 32 (int (*)(...))-0x00000000c 36 (int (*)(...))(& _ZTI5VVirt) 40 XEventListener::acquire 44 XEventListener::disposing 48 XAccessibleEventListener::notifyEvent 52 VVirt::_ZThn12_N5VVirtD1Ev 56 VVirt::_ZThn12_N5VVirtD0Ev 60 -28u 64 0u 68 0u 72 (int (*)(...))-0x00000001c 76 (int (*)(...))(& _ZTI5VVirt) 80 XWeak::acquire 84 XWeak::queryAdapter 88 VVirt::_ZTv0_n20_N5VVirtD1Ev 92 VVirt::_ZTv0_n20_N5VVirtD0Ev 96 -267522035u Inherited from: VTable for 'VBase1' 0 12u 4 (int (*)(...))0 8 (int (*)(...))(& _ZTI6VBase1) 12 XTypeProvider::acquire 16 XTypeProvider::getTypes 20 VBase1::~VBase1 24 VBase1::~VBase1 28 -12u 32 0u 36 0u 40 (int (*)(...))-0x00000000c 44 (int (*)(...))(& _ZTI6VBase1) 48 XWeak::acquire 52 XWeak::queryAdapter 56 VBase1::_ZTv0_n20_N6VBase1D1Ev 60 VBase1::_ZTv0_n20_N6VBase1D0Ev 64 -267522035u same ? 0 or super-type VTable for 'VBase2' 0 16u 4 (int (*)(...))0 8 (int (*)(...))(& _ZTI6VBase2) 12 XEventListener::acquire 16 XEventListener::disposing 20 XAccessibleEventListener::notifyEvent 24 VBase2::~VBase2 28 VBase2::~VBase2 32 -16u 36 0u 40 0u 44 (int (*)(...))-0x000000010 48 (int (*)(...))(& _ZTI6VBase2) 52 XWeak::acquire 56 XWeak::queryAdapter 60 VBase2::_ZTv0_n20_N6VBase2D1Ev 64 VBase2::_ZTv0_n20_N6VBase2D0Ev 68 -267522035u FIXME: bitmask or bitmap ? ... FIXME: Look at construction vtables: turn them off ? ... + or does it work ok ? Compiling desktop, we get horrors like: vtcopies: 2 records copy from MessBox+3 to MessBox+3 mask 0xffffffff copy from MessBox+36 to MessBox+36 mask 0x7fffffff ../../unxlngi6.pro/slo/dp_package.o:(.data.rel.ro+0x1f0): undefined reference to `non-virtual thunk to dp_registry::backend::bundle::(anonymous namespace)::BackendImpl::PackageImpl::getVersion()' ** FIXME: we're clobbering the wrong things ! :-) 0 (int (*)(...))0 !! 1 (int (*)(...))(& _ZTIN11dp_registry7backend6bundle117_GLOBAL__N__home_opt_OpenOffice_ooh680_m1_desktop_source_deployment_registry_package_dp_package.cxx_00000000_CEA456DD11BackendImpl11PackageImplE) !! 2 cppu::WeakComponentImplHelper1::queryInterface [with Ifc1 = com::sun::star::deployment::XPackage] !! 3 cppu::WeakComponentImplHelper1::acquire [with Ifc1 = com::sun::star::deployment::XPackage] !! 4 cppu::WeakComponentImplHelper1::release [with Ifc1 = com::sun::star::deployment::XPackage] 5 cppu::OWeakObject::queryAdapter 6 dp_registry::backend::bundle::::BackendImpl::PackageImpl::~PackageImpl 7 dp_registry::backend::bundle::::BackendImpl::PackageImpl::~PackageImpl !! 8 dp_registry::backend::bundle::::BackendImpl::PackageImpl::disposing !! 9 dp_registry::backend::Package::dispose !! 10 dp_registry::backend::Package::addEventListener !! 11 dp_registry::backend::Package::removeEventListener !! 12 cppu::WeakComponentImplHelper1::getTypes [with Ifc1 = com::sun::star::deployment::XPackage] 13 cppu::WeakComponentImplHelper1::getImplementationId [with Ifc1 = com::sun::star::deployment::XPackage] 14 dp_registry::backend::bundle::::BackendImpl::PackageImpl::isRegistered_ !! 15 dp_registry::backend::bundle::::BackendImpl::PackageImpl::processPackage_ !! 16 dp_registry::backend::Package::addModifyListener !! 17 dp_registry::backend::Package::removeModifyListener !! 18 dp_registry::backend::Package::createAbortChannel 19 dp_registry::backend::Package::isRegistered An offset of 1 (somehow) [urgh!] - why ? mismatch with bitmask ? ** Well !!! + now we have it working well ... + everything is broken :-) + and we get the copy-relocs problem again ... + [ FIXME: should we just have a hidden visibility symbol / label that points into the vtable and link our vtrelocs to that ? ] ** FIXME: + build test + why do our tests not work here ? + ho hum ... ** Binutils hack: + post-process the section, and downgrade the reloc ? + in per-backend specific foo ? + re-write the relocs ? + load the section - force in the relocs, + clobber them just before we sort relocs (?) + doesn't change the section size of course. + FIXME: chase visibility through linking ... + look at reloc sorting etc. + look at targets ... + can we easily locate .suse.vtrelocs ? + can we find relocations into it ? + can we determine -which- are the 'dest' relocs %3 or something ? A typical soffice.bin symbol search: * what is obvious: + ordering is *totally* crack smoking ... + if a vtable is defined - then we have the info to fix it up. + the problem is ... + copy relocs [!] + if *dest* is clobbered ... + we still -copy- **from** (potentially) soffice.bin ... + can give a chain-of-poisoning - that runs well outside soffice.bin ... + *so* !? + urgh ... do we need to manual symbol lookup avoiding soffice.bin ? + does that fix it ? * Apparently ... + relocation processing happens in a pseudo-random order too [!] + ** Surely ** + there must be an 'init' order that we can bootstrap off ? + perhaps that happens after copy-reloc processing too !? + can we re-use that order in advance ? lookup in file=/usr/lib/ooo-2.0/program/soffice.bin [0] lookup in file=/usr/lib/ooo-2.0/program/libvcl680li.so [0] lookup in file=/usr/lib/ooo-2.0/program/libsvl680li.so [0] lookup in file=/usr/lib/ooo-2.0/program/libsvt680li.so [0] lookup in file=/usr/lib/ooo-2.0/program/libutl680li.so [0] lookup in file=/usr/lib/ooo-2.0/program/libtl680li.so [0] lookup in file=/usr/lib/ooo-2.0/program/libi18nisolang1gcc3.so [0] lookup in file=/usr/lib/ooo-2.0/program/libcomphelp4gcc3.so [0] lookup in file=/usr/lib/ooo-2.0/program/libucbhelper4gcc3.so [0] lookup in file=/usr/lib/ooo-2.0/program/libvos3gcc3.so [0] lookup in file=/usr/lib/ooo-2.0/program/libuno_cppuhelpergcc3.so.3 [0] lookup in file=/usr/lib/ooo-2.0/program/libuno_cppu.so.3 [0] lookup in file=/usr/lib/ooo-2.0/program/libuno_sal.so.3 [0] lookup in file=/usr/lib/ooo-2.0/program/libtk680li.so [0] lookup in file=/usr/lib/libXext.so.6 [0] lookup in file=/usr/lib/libSM.so.6 [0] lookup in file=/usr/lib/libICE.so.6 [0] lookup in file=/usr/lib/libX11.so.6 [0] lookup in file=/lib/libdl.so.2 [0] lookup in file=/lib/libpthread.so.0 [0] lookup in file=/usr/lib/libstdc++.so.6 [0] lookup in file=/lib/libm.so.6 [0] lookup in file=/lib/libgcc_s.so.1 [0] lookup in file=/lib/libc.so.6 [0] lookup in file=/usr/lib/ooo-2.0/program/libpsp680li.so [0] lookup in file=/usr/lib/ooo-2.0/program/libsot680li.so [0] lookup in file=/usr/lib/ooo-2.0/program/libbasegfx680li.so [0] lookup in file=/usr/lib/ooo-2.0/program/libicuuc.so.36 [0] lookup in file=/usr/lib/ooo-2.0/program/libicule.so.36 [0] lookup in file=/usr/lib/ooo-2.0/program/libjvmaccessgcc3.so.3 [0] lookup in file=/usr/lib/libfreetype.so.6 [0] lookup in file=/lib/libz.so.1 [0] lookup in file=/usr/lib/libjpeg.so.62 [0] lookup in file=/usr/lib/ooo-2.0/program/libjvmfwk.so.3 [0] lookup in file=/usr/lib/ooo-2.0/program/libuno_salhelpergcc3.so.3 [0] lookup in file=/lib/libcrypt.so.1 [0] lookup in file=/usr/lib/libXau.so.6 [0] lookup in file=/usr/lib/libxcb-xlib.so.0 [0] lookup in file=/usr/lib/libxcb.so.1 [0] lookup in file=/lib/ld-linux.so.2 [0] lookup in file=/usr/lib/ooo-2.0/program/libicudata.so.36 [0] lookup in file=/usr/lib/libxml2.so.2 [0] lookup in file=/usr/lib/dri/fglrx_dri.so [0] lookup in file=/usr/lib/libstdc++.so.5 [0] lookup in file=/lib/librt.so.1 [0] lookup in file=/usr/lib/xorg/libGL.so.1 [0] lookup in file=/usr/lib/ooo-2.0/program/libgcc3_uno.so [0] lookup in file=/usr/lib/ooo-2.0/program/libexlink680li.so [0] lookup in file=/usr/lib/ooo-2.0/program/libreg.so.3 [0] lookup in file=/usr/lib/ooo-2.0/program/libstore.so.3 [0] lookup in file=/usr/lib/ooo-2.0/program/libunsafe_uno_uno.so [0] lookup in file=/usr/lib/ooo-2.0/program/libuno_purpenvhelpergcc3.so.3 [0] lookup in file=/usr/lib/ooo-2.0/program/desktopbe1.uno.so [0] lookup in file=/usr/lib/ooo-2.0/program/libspl_unx680li.so [0] lookup in file=/usr/lib/ooo-2.0/program/libfwl680li.so [0] lookup in file=/usr/lib/ooo-2.0/program/libfwi680li.so [0] lookup in file=/usr/lib/ooo-2.0/program/libsfx680li.so [0] lookup in file=/usr/lib/ooo-2.0/program/libfwe680li.so [0] lookup in file=/usr/lib/ooo-2.0/program/libsb680li.so [0] lookup in file=/usr/lib/ooo-2.0/program/libxcr680li.so [0] lookup in file=/usr/lib/ooo-2.0/program/libj680li_g.so [0] lookup in file=/usr/lib/ooo-2.0/program/libfwk680li.so [0] lookup in file=/usr/lib/ooo-2.0/program/libspl680li.so [0] lookup in file=/usr/lib/ooo-2.0/program/libfilterconfig1.so [0] lookup in file=/usr/lib/ooo-2.0/program/libsvx680li.so [0] lookup in file=/usr/lib/ooo-2.0/program/libavmedia680li.so [0] lookup in file=/usr/lib/ooo-2.0/program/libxo680li.so [0] lookup in file=/usr/lib/ooo-2.0/program/libgo680li.so [0] lookup in file=/usr/lib/ooo-2.0/program/liblng680li.so [0] lookup in file=/usr/lib/ooo-2.0/program/libi18nutilgcc3.so [0] lookup in file=/usr/lib/ooo-2.0/program/libdtransX11680li.so [0] lookup in file=/usr/lib/ooo-2.0/program/libuui680li.so [0] lookup in file=/usr/lib/ooo-2.0/program/libsw680li.so [0] ** Processing relocs ** 9962: relocation processing: /usr/lib/libxml2.so.2 (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libicudata.so.36 (lazy) 9962: relocation processing: /usr/lib/libxcb.so.1 (lazy) 9962: relocation processing: /usr/lib/libxcb-xlib.so.0 (lazy) 9962: relocation processing: /usr/lib/libXau.so.6 (lazy) 9962: relocation processing: /lib/libcrypt.so.1 (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libuno_salhelpergcc3.so.3 (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libjvmfwk.so.3 (lazy) 9962: relocation processing: /usr/lib/libjpeg.so.62 (lazy) 9962: relocation processing: /lib/libz.so.1 (lazy) 9962: relocation processing: /usr/lib/libfreetype.so.6 (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libjvmaccessgcc3.so.3 (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libicule.so.36 (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libicuuc.so.36 (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libbasegfx680li.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libsot680li.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libpsp680li.so (lazy) 9962: relocation processing: /lib/libc.so.6 (lazy) 9962: relocation processing: /lib/libgcc_s.so.1 (lazy) 9962: relocation processing: /lib/libm.so.6 (lazy) 9962: relocation processing: /usr/lib/libstdc++.so.6 (lazy) 9962: relocation processing: /lib/libpthread.so.0 (lazy) 9962: relocation processing: /lib/libdl.so.2 (lazy) 9962: relocation processing: /usr/lib/libX11.so.6 (lazy) 9962: relocation processing: /usr/lib/libICE.so.6 (lazy) 9962: relocation processing: /usr/lib/libSM.so.6 (lazy) 9962: relocation processing: /usr/lib/libXext.so.6 (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libtk680li.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libuno_sal.so.3 (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libuno_cppu.so.3 (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libuno_cppuhelpergcc3.so.3 (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libvos3gcc3.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libucbhelper4gcc3.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libcomphelp4gcc3.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libi18nisolang1gcc3.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libtl680li.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libutl680li.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libsvt680li.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libsvl680li.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libvcl680li.so (lazy) 9962: relocation processing: ./soffice.bin (lazy) 9962: relocation processing: /lib/ld-linux.so.2 9962: relocation processing: /usr/lib/libogg.so.0 (lazy) 9962: relocation processing: /usr/lib/libjack.so.0 (lazy) 9962: relocation processing: /usr/lib/libasound.so.2 (lazy) 9962: relocation processing: /usr/lib/libFLAC.so.8 (lazy) 9962: relocation processing: /lib/libexpat.so.1 (lazy) 9962: relocation processing: /usr/lib/libstartup-notification-1.so.0 (lazy) 9962: relocation processing: /usr/lib/libportaudio.so.2 (lazy) 9962: relocation processing: /usr/lib/libsndfile.so.1 (lazy) 9962: relocation processing: /usr/lib/libpcre.so.0 (lazy) 9962: relocation processing: /usr/lib/libxcb-render.so.0 (lazy) 9962: relocation processing: /usr/lib/libxcb-render-util.so.0 (lazy) 9962: relocation processing: /usr/lib/libpng12.so.0 (lazy) 9962: relocation processing: /usr/lib/libglitz.so.1 (lazy) 9962: relocation processing: /usr/lib/libpangoft2-1.0.so.0 (lazy) 9962: relocation processing: /usr/lib/libXcursor.so.1 (lazy) 9962: relocation processing: /usr/lib/libXrandr.so.2 (lazy) 9962: relocation processing: /usr/lib/libXi.so.6 (lazy) 9962: relocation processing: /usr/lib/libXinerama.so.1 (lazy) 9962: relocation processing: /usr/lib/libXrender.so.1 (lazy) 9962: relocation processing: /usr/lib/libfontconfig.so.1 (lazy) 9962: relocation processing: /usr/lib/libXfixes.so.3 (lazy) 9962: relocation processing: /usr/lib/libXdamage.so.1 (lazy) 9962: relocation processing: /usr/lib/libXcomposite.so.1 (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libvclplug_gen680li.so (lazy) 9962: relocation processing: /usr/lib/libglib-2.0.so.0 (lazy) 9962: relocation processing: /lib/librt.so.1 (lazy) 9962: relocation processing: /usr/lib/libgthread-2.0.so.0 (lazy) 9962: relocation processing: /usr/lib/libgmodule-2.0.so.0 (lazy) 9962: relocation processing: /usr/lib/libgobject-2.0.so.0 (lazy) 9962: relocation processing: /usr/lib/libcairo.so.2 (lazy) 9962: relocation processing: /usr/lib/libpango-1.0.so.0 (lazy) 9962: relocation processing: /usr/lib/libpangocairo-1.0.so.0 (lazy) 9962: relocation processing: /usr/lib/libgdk_pixbuf-2.0.so.0 (lazy) 9962: relocation processing: /usr/lib/libatk-1.0.so.0 (lazy) 9962: relocation processing: /usr/lib/libgdk-x11-2.0.so.0 (lazy) 9962: relocation processing: /usr/lib/libgtk-x11-2.0.so.0 (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libvclplug_gtk680li.so (lazy) 9962: relocation processing: /lib/libnsl.so.1 (lazy) 9962: relocation processing: /lib/libnss_compat.so.2 (lazy) 9962: relocation processing: /lib/libnss_files.so.2 (lazy) 9962: relocation processing: /lib/libnss_nis.so.2 (lazy) 9962: relocation processing: /usr/lib/libelf.so.1 (lazy) 9962: relocation processing: /usr/lib/bug-buddy/libbreakpad.so.0 (lazy) 9962: relocation processing: /usr/lib/gtk-2.0/modules/libgnomebreakpad.so (lazy) 9962: relocation processing: /usr/lib/gconv/ISO8859-1.so (lazy) 9962: relocation processing: /usr/lib/xorg/libGL.so.1 9962: relocation processing: /usr/lib/libstdc++.so.5 9962: relocation processing: /usr/lib/dri/fglrx_dri.so 9962: relocation processing: /usr/lib/ooo-2.0/program/libgcc3_uno.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libstore.so.3 (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libreg.so.3 (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libexlink680li.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/servicemgr.uno.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/shlibloader.uno.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/simplereg.uno.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/nestedreg.uno.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/typemgr.uno.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/implreg.uno.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/security.uno.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libuno_purpenvhelpergcc3.so.3 (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libunsafe_uno_uno.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/regtypeprov.uno.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/configmgr2.uno.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/typeconverter.uno.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/sysmgr1.uno.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/desktopbe1.uno.so (lazy) 9962: relocation processing: /usr/lib/libORBit-2.so.0 (lazy) 9962: relocation processing: /usr/lib/libgconf-2.so.4 (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/gconfbe1.uno.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/behelper.uno.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/sax.uno.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/localebe1.uno.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/uriproc.uno.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libspl680li.so (lazy) 9962: relocation processing: /usr/lib/gtk-2.0/2.10.0/engines/libclearlooks.so (lazy) 9962: relocation processing: /usr/lib/gtk-2.0/2.10.0/engines/libpixmap.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libpackage2.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libfwi680li.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libfwl680li.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libfileacc.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libucb1.so (lazy) 9962: relocation processing: /lib/libutil.so.1 (lazy) 9962: relocation processing: /lib/libresolv.so.2 (lazy) 9962: relocation processing: /usr/lib/libavahi-client.so.3 (lazy) 9962: relocation processing: /usr/lib/libavahi-common.so.3 (lazy) 9962: relocation processing: /usr/lib/libavahi-glib.so.1 (lazy) 9962: relocation processing: /usr/lib/libcrypto.so.0.9.8 (lazy) 9962: relocation processing: /usr/lib/libssl.so.0.9.8 (lazy) 9962: relocation processing: /lib/libdbus-1.so.3 (lazy) 9962: relocation processing: /usr/lib/libdbus-glib-1.so.2 (lazy) 9962: relocation processing: /usr/lib/libgnomevfs-2.so.0 (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/ucpgvfs1.uno.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libucpfile1.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libj680li_g.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libxcr680li.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libsb680li.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libfwe680li.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libsfx680li.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libfwk680li.so (lazy) 9962: relocation processing: /usr/lib/gtk-2.0/2.10.0/immodules/im-xim.so (lazy) 9962: relocation processing: /usr/lib/pango/1.6.0/modules/pango-basic-fc.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libi18nutilgcc3.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/liblng680li.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libgo680li.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libxo680li.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libavmedia680li.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libsvx680li.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libuui680li.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libfilterconfig1.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libdtransX11680li.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libsw680li.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libicui18n.so.36 (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/i18npool.uno.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/liblocaledata_en.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/fsstorage.uno.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libxstor.so (lazy) 9962: relocation processing: /usr/lib/libcups.so.2 (lazy) 9969: relocation processing: /lib/libc.so.6 (lazy) 9969: relocation processing: /lib/libdl.so.2 (lazy) 9969: relocation processing: /lib/libncurses.so.5 (lazy) 9969: relocation processing: /lib/libhistory.so.5 (lazy) 9969: relocation processing: /lib/libreadline.so.5 (lazy) 9969: relocation processing: sh (lazy) 9969: relocation processing: /lib/ld-linux.so.2 9962: relocation processing: /usr/lib/libsasl2.so.2 (lazy) 9962: relocation processing: /usr/lib/liblber-2.4.so.2 (lazy) 9962: relocation processing: /usr/lib/libldap-2.4.so.2 (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/ldapbe2.uno.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/vbaevents680li.uno.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libdbtools680li.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libfrm680li.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/introspection.uno.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/reflection.uno.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libevtatt.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libmcnttype.so (lazy) 9962: relocation processing: /usr/lib/libdb-4.5.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/libdeploymentmisc680li.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/deployment680li.uno.so (lazy) 9962: relocation processing: /usr/lib/ooo-2.0/program/ucpexpand1.uno.so (lazy) ldd ./libvcl680li.so linux-gate.so.1 => (0xffffe000) libpsp680li.so => /opt/OOInstall/program/./libpsp680li.so (0xb7c15000) libsot680li.so => /opt/OOInstall/program/./libsot680li.so (0xb7bc7000) libutl680li.so => /opt/OOInstall/program/./libutl680li.so (0xb7b56000) libtl680li.so => /opt/OOInstall/program/./libtl680li.so (0xb7ad2000) libi18nisolang1gcc3.so => /opt/OOInstall/program/./libi18nisolang1gcc3.so (0xb7acb000) libcomphelp4gcc3.so => /opt/OOInstall/program/./libcomphelp4gcc3.so (0xb79f1000) libucbhelper4gcc3.so => /opt/OOInstall/program/./libucbhelper4gcc3.so (0xb7994000) libuno_cppuhelpergcc3.so.3 => /opt/OOInstall/program/./libuno_cppuhelpergcc3.so.3 (0xb7911000) libuno_cppu.so.3 => /opt/OOInstall/program/./libuno_cppu.so.3 (0xb78e3000) libvos3gcc3.so => /opt/OOInstall/program/./libvos3gcc3.so (0xb78c0000) libuno_sal.so.3 => /opt/OOInstall/program/./libuno_sal.so.3 (0xb787a000) libbasegfx680li.so => /opt/OOInstall/program/./libbasegfx680li.so (0xb7825000) libicuuc.so.36 => /opt/OOInstall/program/./libicuuc.so.36 (0xb7714000) libicule.so.36 => /opt/OOInstall/program/./libicule.so.36 (0xb76d4000) libjvmaccessgcc3.so.3 => /opt/OOInstall/program/./libjvmaccessgcc3.so.3 (0xb76cb000) libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0xb763f000) libz.so.1 => /lib/libz.so.1 (0xb762c000) libX11.so.6 => /usr/lib/libX11.so.6 (0xb7511000) libXext.so.6 => /usr/lib/libXext.so.6 (0xb7502000) libdl.so.2 => /lib/libdl.so.2 (0xb74fe000) libpthread.so.0 => /lib/libpthread.so.0 (0xb74e6000) libstlport_gcc.so => /opt/OOInstall/program/./libstlport_gcc.so (0xb741c000) libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb732e000) libm.so.6 => /lib/libm.so.6 (0xb7309000) libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb72fb000) libc.so.6 => /lib/libc.so.6 (0xb71c8000) libjvmfwk.so.3 => /opt/OOInstall/program/./libjvmfwk.so.3 (0xb71af000) libuno_salhelpergcc3.so.3 => /opt/OOInstall/program/./libuno_salhelpergcc3.so.3 (0xb71aa000) libcrypt.so.1 => /lib/libcrypt.so.1 (0xb7178000) libicudata.so.36 => /opt/OOInstall/program/./libicudata.so.36 (0xb6b56000) libxcb-xlib.so.0 => /usr/lib/libxcb-xlib.so.0 (0xb6b53000) libxcb.so.1 => /usr/lib/libxcb.so.1 (0xb6b3a000) libXau.so.6 => /usr/lib/libXau.so.6 (0xb6b36000) /lib/ld-linux.so.2 (0x80000000) libxml2.so.2 => /usr/lib/libxml2.so.2 (0xb69f6000) ** FIXME: 'inits' ** ... are a far better fit ... OTOH - memory protection etc. ? ... ;-) 10963: calling init: /lib/libpthread.so.0 10963: calling init: /lib/libc.so.6 10963: calling init: /usr/lib/libXau.so.6 10963: calling init: /usr/lib/libxcb.so.1 10963: calling init: /usr/lib/libxcb-xlib.so.0 10963: calling init: /lib/libcrypt.so.1 10963: calling init: /usr/lib/libjpeg.so.62 10963: calling init: /lib/libz.so.1 10963: calling init: /usr/lib/libfreetype.so.6 10963: calling init: /lib/libgcc_s.so.1 10963: calling init: /lib/libm.so.6 10963: calling init: /usr/lib/libstdc++.so.6 10963: calling init: /usr/lib/ooo-2.0/program/libicuuc.so.36 10963: calling init: /usr/lib/ooo-2.0/program/libicule.so.36 10963: calling init: /lib/libdl.so.2 10963: calling init: /usr/lib/libxml2.so.2 10963: calling init: /usr/lib/libX11.so.6 10963: calling init: /usr/lib/libICE.so.6 10963: calling init: /usr/lib/libSM.so.6 10963: calling init: /usr/lib/libXext.so.6 10963: calling init: /usr/lib/ooo-2.0/program/libuno_sal.so.3 10963: calling init: /usr/lib/ooo-2.0/program/libuno_salhelpergcc3.so.3 10963: calling init: /usr/lib/ooo-2.0/program/libuno_cppu.so.3 10963: calling init: /usr/lib/ooo-2.0/program/libjvmaccessgcc3.so.3 10963: calling init: /usr/lib/ooo-2.0/program/libuno_cppuhelpergcc3.so.3 10963: calling init: /usr/lib/ooo-2.0/program/libjvmfwk.so.3 10963: calling init: /usr/lib/ooo-2.0/program/libbasegfx680li.so 10963: calling init: /usr/lib/ooo-2.0/program/libvos3gcc3.so 10963: calling init: /usr/lib/ooo-2.0/program/libucbhelper4gcc3.so 10963: calling init: /usr/lib/ooo-2.0/program/libcomphelp4gcc3.so 10963: calling init: /usr/lib/ooo-2.0/program/libi18nisolang1gcc3.so 10963: calling init: /usr/lib/ooo-2.0/program/libtl680li.so 10963: calling init: /usr/lib/ooo-2.0/program/libutl680li.so 10963: calling init: /usr/lib/ooo-2.0/program/libsot680li.so 10963: calling init: /usr/lib/ooo-2.0/program/libpsp680li.so 10963: calling init: /usr/lib/ooo-2.0/program/libvcl680li.so 10963: calling init: /usr/lib/ooo-2.0/program/libtk680li.so 10963: calling init: /usr/lib/ooo-2.0/program/libsvl680li.so 10963: calling init: /usr/lib/ooo-2.0/program/libsvt680li.so 10963: initialize program: ./soffice.bin 10963: calling init: /usr/lib/libogg.so.0 10963: calling init: /lib/libexpat.so.1 10963: calling init: /usr/lib/libpcre.so.0 10963: calling init: /usr/lib/libxcb-render.so.0 10963: calling init: /usr/lib/libxcb-render-util.so.0 10963: calling init: /usr/lib/libfontconfig.so.1 10963: calling init: /usr/lib/libFLAC.so.8 10963: calling init: /usr/lib/libsndfile.so.1 10963: calling init: /usr/lib/libpng12.so.0 10963: calling init: /usr/lib/libglitz.so.1 10963: calling init: /usr/lib/libglib-2.0.so.0 10963: calling init: /lib/librt.so.1 10963: calling init: /usr/lib/libgthread-2.0.so.0 10963: calling init: /usr/lib/libjack.so.0 10963: calling init: /usr/lib/libasound.so.2 10963: calling init: /usr/lib/libportaudio.so.2 10963: calling init: /usr/lib/libstartup-notification-1.so.0 10963: calling init: /usr/lib/libXrender.so.1 10963: calling init: /usr/lib/libXfixes.so.3 10963: calling init: /usr/lib/libXcursor.so.1 10963: calling init: /usr/lib/libXdamage.so.1 10963: calling init: /usr/lib/libXrandr.so.2 10963: calling init: /usr/lib/libXi.so.6 10963: calling init: /usr/lib/libXinerama.so.1 10963: calling init: /usr/lib/libXcomposite.so.1 10963: calling init: /usr/lib/ooo-2.0/program/libvclplug_gen680li.so 10963: calling init: /usr/lib/libgmodule-2.0.so.0 10963: calling init: /usr/lib/libgobject-2.0.so.0 10963: calling init: /usr/lib/libcairo.so.2 10963: calling init: /usr/lib/libpango-1.0.so.0 10963: calling init: /usr/lib/libpangoft2-1.0.so.0 10963: calling init: /usr/lib/libpangocairo-1.0.so.0 10963: calling init: /usr/lib/libgdk_pixbuf-2.0.so.0 10963: calling init: /usr/lib/libatk-1.0.so.0 10963: calling init: /usr/lib/libgdk-x11-2.0.so.0 10963: calling init: /usr/lib/libgtk-x11-2.0.so.0 10963: calling init: /usr/lib/ooo-2.0/program/libvclplug_gtk680li.so 10963: calling init: /lib/libnsl.so.1 10963: calling init: /lib/libnss_compat.so.2 10963: calling init: /lib/libnss_files.so.2 10963: calling init: /lib/libnss_nis.so.2 10963: calling init: /usr/lib/libelf.so.1 10963: calling init: /usr/lib/bug-buddy/libbreakpad.so.0 10963: calling init: /usr/lib/gtk-2.0/modules/libgnomebreakpad.so 10963: calling init: /usr/lib/gconv/ISO8859-1.so 10963: calling init: /usr/lib/xorg/libGL.so.1 10963: calling init: /usr/lib/libstdc++.so.5 10963: calling init: /usr/lib/dri/fglrx_dri.so 10963: calling init: /usr/lib/ooo-2.0/program/libgcc3_uno.so 10963: calling init: /usr/lib/ooo-2.0/program/libstore.so.3 10963: calling init: /usr/lib/ooo-2.0/program/libreg.so.3 10963: calling init: /usr/lib/ooo-2.0/program/libexlink680li.so 10963: calling init: /usr/lib/ooo-2.0/program/servicemgr.uno.so 10963: calling init: /usr/lib/ooo-2.0/program/shlibloader.uno.so 10963: calling init: /usr/lib/ooo-2.0/program/simplereg.uno.so 10963: calling init: /usr/lib/ooo-2.0/program/nestedreg.uno.so 10963: calling init: /usr/lib/ooo-2.0/program/typemgr.uno.so 10963: calling init: /usr/lib/ooo-2.0/program/implreg.uno.so 10963: calling init: /usr/lib/ooo-2.0/program/security.uno.so 10963: calling init: /usr/lib/ooo-2.0/program/libuno_purpenvhelpergcc3.so.3 10963: calling init: /usr/lib/ooo-2.0/program/libunsafe_uno_uno.so 10963: calling init: /usr/lib/ooo-2.0/program/regtypeprov.uno.so 10963: calling init: /usr/lib/ooo-2.0/program/configmgr2.uno.so 10963: calling init: /usr/lib/ooo-2.0/program/typeconverter.uno.so 10963: calling init: /usr/lib/ooo-2.0/program/sysmgr1.uno.so 10963: calling init: /usr/lib/ooo-2.0/program/desktopbe1.uno.so 10963: calling init: /usr/lib/libORBit-2.so.0 10963: calling init: /usr/lib/libgconf-2.so.4 10963: calling init: /usr/lib/ooo-2.0/program/gconfbe1.uno.so 10963: calling init: /usr/lib/ooo-2.0/program/behelper.uno.so 10963: calling init: /usr/lib/ooo-2.0/program/sax.uno.so 10963: calling init: /usr/lib/ooo-2.0/program/localebe1.uno.so 10963: calling init: /usr/lib/ooo-2.0/program/uriproc.uno.so 10963: calling init: /usr/lib/ooo-2.0/program/libspl680li.so 10963: calling init: /usr/lib/gtk-2.0/2.10.0/engines/libclearlooks.so 10963: calling init: /usr/lib/gtk-2.0/2.10.0/engines/libpixmap.so 10963: calling init: /usr/lib/ooo-2.0/program/libpackage2.so 10963: calling init: /usr/lib/ooo-2.0/program/libfwi680li.so 10963: calling init: /usr/lib/ooo-2.0/program/libfwl680li.so 10963: calling init: /usr/lib/ooo-2.0/program/libfileacc.so 10963: calling init: /usr/lib/ooo-2.0/program/libucb1.so 10963: calling init: /lib/libutil.so.1 10963: calling init: /lib/libresolv.so.2 10963: calling init: /lib/libdbus-1.so.3 10963: calling init: /usr/lib/libavahi-common.so.3 10963: calling init: /usr/lib/libavahi-glib.so.1 10963: calling init: /usr/lib/libdbus-glib-1.so.2 10963: calling init: /usr/lib/libavahi-client.so.3 10963: calling init: /usr/lib/libcrypto.so.0.9.8 10963: calling init: /usr/lib/libssl.so.0.9.8 10963: calling init: /usr/lib/libgnomevfs-2.so.0 10963: calling init: /usr/lib/ooo-2.0/program/ucpgvfs1.uno.so 10963: calling init: /usr/lib/ooo-2.0/program/libucpfile1.so 10963: calling init: /usr/lib/ooo-2.0/program/libj680li_g.so 10963: calling init: /usr/lib/ooo-2.0/program/libxcr680li.so 10963: calling init: /usr/lib/ooo-2.0/program/libsb680li.so 10963: calling init: /usr/lib/ooo-2.0/program/libfwe680li.so 10963: calling init: /usr/lib/ooo-2.0/program/libsfx680li.so 10963: calling init: /usr/lib/ooo-2.0/program/libfwk680li.so 10963: calling init: /usr/lib/gtk-2.0/2.10.0/immodules/im-xim.so 10963: calling init: /usr/lib/pango/1.6.0/modules/pango-basic-fc.so 10963: calling init: /usr/lib/ooo-2.0/program/libi18nutilgcc3.so 10963: calling init: /usr/lib/ooo-2.0/program/libgo680li.so 10963: calling init: /usr/lib/ooo-2.0/program/libxo680li.so 10963: calling init: /usr/lib/ooo-2.0/program/liblng680li.so 10963: calling init: /usr/lib/ooo-2.0/program/libavmedia680li.so 10963: calling init: /usr/lib/ooo-2.0/program/libsvx680li.so 10963: calling init: /usr/lib/ooo-2.0/program/libuui680li.so 10963: calling init: /usr/lib/ooo-2.0/program/libfilterconfig1.so 10963: calling init: /usr/lib/ooo-2.0/program/libdtransX11680li.so 10963: calling init: /usr/lib/ooo-2.0/program/libsw680li.so 10963: calling init: /usr/lib/ooo-2.0/program/libicui18n.so.36 10963: calling init: /usr/lib/ooo-2.0/program/i18npool.uno.so 10963: calling init: /usr/lib/ooo-2.0/program/liblocaledata_en.so 10963: calling init: /usr/lib/ooo-2.0/program/fsstorage.uno.so 10963: calling init: /usr/lib/ooo-2.0/program/libxstor.so 10963: calling init: /usr/lib/ooo-2.0/program/vbaevents680li.uno.so 10963: calling init: /usr/lib/ooo-2.0/program/libdbtools680li.so 10963: calling init: /usr/lib/ooo-2.0/program/libfrm680li.so 10963: calling init: /usr/lib/ooo-2.0/program/introspection.uno.so 10963: calling init: /usr/lib/ooo-2.0/program/reflection.uno.so 10963: calling init: /usr/lib/ooo-2.0/program/libevtatt.so 10963: calling init: /usr/lib/libcups.so.2 10970: calling init: /lib/libc.so.6 10970: calling init: /lib/libdl.so.2 10970: calling init: /lib/libncurses.so.5 10970: calling init: /lib/libhistory.so.5 10970: calling init: /lib/libreadline.so.5 10963: calling init: /usr/lib/libdb-4.5.so 10963: calling init: /usr/lib/ooo-2.0/program/libdeploymentmisc680li.so 10963: calling init: /usr/lib/ooo-2.0/program/deployment680li.uno.so 10963: calling init: /usr/lib/ooo-2.0/program/ucpexpand1.uno.so 10963: calling init: /usr/lib/liblber-2.4.so.2 10963: calling init: /usr/lib/libsasl2.so.2 10963: calling init: /usr/lib/libldap-2.4.so.2 10963: calling init: /usr/lib/ooo-2.0/program/ldapbe2.uno.so 10963: calling init: /usr/lib/ooo-2.0/program/libmcnttype.so ** FIXME: + working well ... but we now export a -load- of named relocs to vtables that we didn't (apparently) before (?) + is this good in the long run ? (comdat?) + how can that have changed ? [ of course our own relocations ... but ... ;-] + diff /tmp/old -> /tmp/new ... + will this clobber linking in fact ? + all these are 'dest' vtables ... + [ FIXME: ugly hacks to resolve internally ? ;-] + falls over the copy-reloc problem again ... ;-) + unless we re-do glibc foo ... FIXME use: -Wl,--Bsymbolic-functions -Wl,--dynamic-list-cpp-new -Wl,--dynamic-list-cpp-typeinfo FIXME: why does it crash ? FIXME: PropertySetMixin ... + has no vtable to copy from ! :-) + but then defines no virtual methods either ... + so - surely, we should copy from the next parent up ? + how does gcc know not to emit a vtable ? + is there just no trigger method ? + can we build a test ? ... TODO: gcc - do we need the custom 'decl' logic ? + is it enough just to initialize the decl in class.c ? + add a command-line option, and bin the environment variables ... + add a 'debug foo' env. var in 1 place binutils ... + SEC_EXCLUDE - if we don't have anything in the section ... ** FIXME: 29526: binding file /opt/NNInstall/program/libsvt680li.so [0] to /opt/NNInstall/program/libsvt680li.so [0]: normal symbol `sRTF_SHADOW' svtools/source/svrtf/rtfkeywd.hxx [ fix me ! ] + broken - linking wise... cf. sw/source/filter/rtf/ ... svtools/inc/htmlkeywd + 2.5% of the total ! ;-) + 1481 unique named relocs ... [!] + and a ton of symbols and size etc. + 911 - 'sHTML' relocations as well [!] ** FIXME: + construction vtables: + need a regression test + ensure the vtrelocs refer to the right symbol + (they do not !) ;-) michael@linux:/opt/OpenOffice/HEAD/build/ooh680-m3/svtools/source/contnr> MOREDEBUG=1 g++ -fmessage-length=0 -S -Os -fno-strict-aliasing -fvisibility=hidden -I. -I../../unxlngi6.pro/inc/svcontnr -I../inc -I../../inc/pch -I../../inc -I../../unx/inc -I../../unxlngi6.pro/inc -I. -I/home/opt/OpenOffice/HEAD/build/ooh680-m3/solver/680/unxlngi6.pro/inc/stl -I/home/opt/OpenOffice/HEAD/build/ooh680-m3/solver/680/unxlngi6.pro/inc/external -I/home/opt/OpenOffice/HEAD/build/ooh680-m3/solver/680/unxlngi6.pro/inc -I/home/opt/OpenOffice/HEAD/build/ooh680-m3/solenv/unxlngi6/inc -I/home/opt/OpenOffice/HEAD/build/ooh680-m3/solenv/inc -I/home/opt/OpenOffice/HEAD/build/ooh680-m3/res -I/home/opt/OpenOffice/HEAD/build/ooh680-m3/solver/680/unxlngi6.pro/inc/stl -I/home/opt/OpenOffice/HEAD/build/ooh680-m3/solenv/inc/Xp31 -I/usr/lib/jvm/java/include -I/usr/lib/jvm/java/include/linux -I/usr/lib/jvm/java/include/native_threads/include -I/usr/include -I/home/opt/OpenOffice/HEAD/build/ooh680-m3/solver/680/unxlngi6.pro/inc/offuh -I. -I../../res -I. -pipe -mtune=pentiumpro -fvisibility-inlines-hidden -Wall -Wextra -Wendif-labels -Wshadow -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor -fpic -DLINUX -DUNX -DVCL -DGCC -DC341 -DINTEL -DCVER=C341 -DNPTL -DGLIBC=2 -DX86 -D_PTHREADS -D_REENTRANT -DNEW_SOLAR -D_USE_NAMESPACE=1 -DSTLPORT_VERSION=400 -DHAVE_GCC_VISIBILITY_FEATURE -D__DMAKE -DUNIX -DCPPU_ENV=gcc3 -DGXX_INCLUDE_PATH=/home/opt/gcc/bin/../lib/gcc/i686-pc-linux-gnu/4.2.1/../../../../include/c++/4.2.1 -DSUPD=680 -DPRODUCT -DNDEBUG -DPRODUCT_FULL -DOSL_DEBUG_LEVEL=0 -DOPTIMIZE -DGSTREAMER -DCUI -DSOLAR_JAVA -DOOH680=OOH680 -DSVT_DLLIMPLEMENTATION -DSHAREDLIB -D_DLL_ -fexceptions -fno-enforce-eh-specs -DEXCEPTIONS_ON -o /tmp/fileview.s /home/opt/OpenOffice/HEAD/build/ooh680-m3/svtools/source/contnr/fileview.cxx >& /tmp/fileview.s.output michael@linux:/opt/OpenOffice/HEAD/build/ooh680-m3/svtools/source/contnr> c++filt _ZTv0_n12_N3vos6OTimerD1Ev virtual thunk to vos::OTimer::~OTimer() michael@linux:/opt/OpenOffice/HEAD/build/ooh680-m3/svtools/source/contnr> c++filt _ZTCN105_GLOBAL__N__home_opt_OpenOffice_HEAD_build_ooh680_m3_svtools_source_contnr_fileview.cxx_00000000_BCEF14CA13CallbackTimerE0_N3vos6OTimerE: _ZTCN105_GLOBAL__N__home_opt_OpenOffice_HEAD_build_ooh680_m3_svtools_source_contnr_fileview.cxx_00000000_BCEF14CA13CallbackTimerE0_N3vos6OTimerE: michael@linux:/opt/OpenOffice/HEAD/build/ooh680-m3/svtools/source/contnr> c++filt _ZTVN105_GLOBAL__N__home_opt_OpenOffice_HEAD_build_ooh680_m3_svtools_source_contnr_fileview.cxx_00000000_BCEF14CA13CallbackTimerE: _ZTVN105_GLOBAL__N__home_opt_OpenOffice_HEAD_build_ooh680_m3_svtools_source_contnr_fileview.cxx_00000000_BCEF14CA13CallbackTimerE: michael@linux:/opt/OpenOffice/HEAD/build/ooh680-m3/svtools/source/contnr> c++filt _ZTVN105_GLOBAL__N__home_opt_OpenOffice_HEAD_build_ooh680_m3_svtools_source_contnr_fileview.cxx_00000000_BCEF14CA13CallbackTimerE vtable for (anonymous namespace)::CallbackTimer michael@linux:/opt/OpenOffice/HEAD/build/ooh680-m3/svtools/source/contnr> c++filt _ZTCN105_GLOBAL__N__home_opt_OpenOffice_HEAD_build_ooh680_m3_svtools_source_contnr_fileview.cxx_00000000_BCEF14CA13CallbackTimerE0_N3vos6OTimerE construction vtable for vos::OTimer-in-(anonymous namespace)::CallbackTimer ../unxlngi6.pro/slo/basdoc.o:(.data.rel.ro._ZTC13BasicDocShell48_9SotObject[vtable for BasicDocShell]+0x74): undefined reference to `virtual thunk to SotObject::~SotObject()' Basically bogus: ... :-) Constr VTable for SotObject-in-BasicDocShell 0 0u 1 0u 2 0u 3 0u 4 0u 5 0u 6 0u 7 0u 8 0u 9 0u 10 16u 11 (int (*)(...))0 12 (int (*)(...))(& _ZTI9SotObject) 13 SotObject::~SotObject 14 SotObject::~SotObject 15 SotObject::Close 16 SotObject::GetSvFactory 17 SotObject::Cast 18 SotObject::TestObjRef 19 SotObject::TestInvariant 20 SotObject::GetInterface 21 SotObject::QueryDelete 22 SotObject::CreateAggObj 23 SotObject::FuzzyLock 24 -16u 25 -16u 26 (int (*)(...))-0x000000010 27 (int (*)(...))(& _ZTI9SotObject) 28 SotObject::_ZTv0_n12_N9SotObjectD1Ev 29 SotObject::_ZTv0_n12_N9SotObjectD0Ev 30 SotObject::_ZTv0_n16_N9SotObject11QueryDeleteEv Inherited from: VTable for SfxObjectShell 0 60u 1 44u 2 (int (*)(...))0 3 (int (*)(...))(& _ZTI14SfxObjectShell) 4 SfxBroadcaster::ListenersGone 5 SfxObjectShell::Type 6 SfxObjectShell::IsA 7 SfxObjectShell::~SfxObjectShell 8 SfxObjectShell::~SfxObjectShell 9 SfxShell::GetGlobalName 10 SfxObjectShell::GetInterface 11 SfxShell::GetUndoManager 12 SfxObjectShell::Invalidate 13 SfxShell::Activate 14 SfxShell::Deactivate 15 SfxShell::ParentActivate 16 SfxShell::ParentDeactivate 17 SfxShell::HasUIFeature 18 SfxObjectShell::GetObjectShell 19 SfxShell::CreateItemSet 20 SfxShell::ApplyItemSet 21 SfxObjectShell::ModifyChanged 22 SfxObjectShell::Close 23 __cxa_pure_virtual 24 SfxObjectShell::GetAPIName 25 SfxObjectShell::DoSaveCompleted 26 SfxObjectShell::LoadOwnFormat 27 SfxObjectShell::SaveAsOwnFormat 28 SfxObjectShell::ConvertFrom 29 SfxObjectShell::ConvertTo 30 SfxObjectShell::InitNew 31 SfxObjectShell::Load 32 SfxObjectShell::LoadFrom 33 SfxObjectShell::Save 34 SfxObjectShell::SaveAs 35 SfxObjectShell::SaveCompleted 36 SfxObjectShell::SwitchPersistance 37 SfxObjectShell::UpdateLinks 38 SfxObjectShell::QueryTitle 39 SfxObjectShell::CreateDocumentInfoDialog 40 SfxObjectShell::ViewAssigned 41 SfxObjectShell::PrepareClose 42 SfxObjectShell::IsInformationLost 43 SfxObjectShell::GetHiddenInformationState Mis comparison: p src_fn->decl_minimal->context->type.name * Is this a bogus warning: ? Making: ../../../unxlngi6.pro/slo/ViewTabBar.obj In file included from /home/opt/OpenOffice/HEAD/build/ooh680-m3/sd/source/ui/view/ViewTabBar.cxx:50: ../inc/DrawController.hxx:130: warning: 'sd::DrawController' has a field 'sd::DrawController::' whose type uses the anonymous namespace ../inc/DrawController.hxx:130: warning: 'sd::DrawController' has a base '::BroadcastHelperOwner' whose type uses the anonymous namespace These numbers are from a dlopen of libsvx: After: -Bsym with vtreloc & no thunks: HHInstall ==6245== ==6245== Events : Ir Dr Dw I1mr D1mr D1mw I2mr D2mr D2mw ==6245== Collected : 93792593 30621698 12509521 5348 982519 40248 4415 106999 21671 ==6245== ==6245== I refs: 93,792,593 ==6245== I1 misses: 5,348 ==6245== L2i misses: 4,415 ==6245== I1 miss rate: 0.0% ==6245== L2i miss rate: 0.0% ==6245== ==6245== D refs: 43,131,219 (30,621,698 rd + 12,509,521 wr) ==6245== D1 misses: 1,022,767 ( 982,519 rd + 40,248 wr) ==6245== L2d misses: 128,670 ( 106,999 rd + 21,671 wr) ==6245== D1 miss rate: 2.3% ( 3.2% + 0.3% ) ==6245== L2d miss rate: 0.2% ( 0.3% + 0.1% ) ==6245== ==6245== L2 refs: 1,028,115 ( 987,867 rd + 40,248 wr) ==6245== L2 misses: 133,085 ( 111,414 rd + 21,671 wr) ==6245== L2 miss rate: 0.0% ( 0.0% + 0.1% ) After: (-Bsym with vtreloc) NNInstall ==5654== Events : Ir Dr Dw I1mr D1mr D1mw I2mr D2mr D2mw ==5654== Collected : 93934554 30683111 12523945 5401 1042727 39626 4460 108467 21739 ==5654== ==5654== I refs: 93,934,554 ==5654== I1 misses: 5,401 ==5654== L2i misses: 4,460 ==5654== I1 miss rate: 0.0% ==5654== L2i miss rate: 0.0% ==5654== ==5654== D refs: 43,207,056 (30,683,111 rd + 12,523,945 wr) ==5654== D1 misses: 1,082,353 ( 1,042,727 rd + 39,626 wr) ==5654== L2d misses: 130,206 ( 108,467 rd + 21,739 wr) ==5654== D1 miss rate: 2.5% ( 3.3% + 0.3% ) ==5654== L2d miss rate: 0.3% ( 0.3% + 0.1% ) ==5654== ==5654== L2 refs: 1,087,754 ( 1,048,128 rd + 39,626 wr) ==5654== L2 misses: 134,666 ( 112,927 rd + 21,739 wr) ==5654== L2 miss rate: 0.0% ( 0.0% + 0.1% ) Before: (-Bsym - no vtreloc) OOInstall ==5757== ==5757== Events : Ir Dr Dw I1mr D1mr D1mw I2mr D2mr D2mw ==5757== Collected : 103124440 33576208 13653348 5330 1063384 46609 4394 115172 21304 ==5757== ==5757== I refs: 103,124,440 ==5757== I1 misses: 5,330 ==5757== L2i misses: 4,394 ==5757== I1 miss rate: 0.0% ==5757== L2i miss rate: 0.0% ==5757== ==5757== D refs: 47,229,556 (33,576,208 rd + 13,653,348 wr) ==5757== D1 misses: 1,109,993 ( 1,063,384 rd + 46,609 wr) ==5757== L2d misses: 136,476 ( 115,172 rd + 21,304 wr) ==5757== D1 miss rate: 2.3% ( 3.1% + 0.3% ) ==5757== L2d miss rate: 0.2% ( 0.3% + 0.1% ) ==5757== ==5757== L2 refs: 1,115,323 ( 1,068,714 rd + 46,609 wr) ==5757== L2 misses: 140,870 ( 119,566 rd + 21,304 wr) ==5757== L2 miss rate: 0.0% ( 0.0% + 0.1% ) Without -Bsymb-function: PPInstall ==6021== ==6021== Events : Ir Dr Dw I1mr D1mr D1mw I2mr D2mr D2mw ==6021== Collected : 150810465 47775963 19058259 5441 1550394 53953 4440 155020 22712 ==6021== ==6021== I refs: 150,810,465 ==6021== I1 misses: 5,441 ==6021== L2i misses: 4,440 ==6021== I1 miss rate: 0.0% ==6021== L2i miss rate: 0.0% ==6021== ==6021== D refs: 66,834,222 (47,775,963 rd + 19,058,259 wr) ==6021== D1 misses: 1,604,347 ( 1,550,394 rd + 53,953 wr) ==6021== L2d misses: 177,732 ( 155,020 rd + 22,712 wr) ==6021== D1 miss rate: 2.4% ( 3.2% + 0.2% ) ==6021== L2d miss rate: 0.2% ( 0.3% + 0.1% ) ==6021== ==6021== L2 refs: 1,609,788 ( 1,555,835 rd + 53,953 wr) ==6021== L2 misses: 182,172 ( 159,460 rd + 22,712 wr) ==6021== L2 miss rate: 0.0% ( 0.0% + 0.1% ) ** So - instead go for size savings ! ;-) + call.c + is there an optimisation that converts a virtual call, to a direct one - if the type is fully known ? [!?] So - LD_DEBUG=bindings output: After: cat /tmp/linklog | sed 's/.*file '// | sed 's/ \[.*//' | sort | uniq -c | sort -n 456 /usr/lib/libgtk-x11-2.0.so.0 466 /opt/HHInstall/program/libfwe680li.so 479 /opt/HHInstall/program/bootstrap.uno.so 481 /opt/HHInstall/program/liblng680li.so 515 /usr/lib/libxml2.so.2 518 /opt/HHInstall/program/i18npool.uno.so 521 /usr/lib/libORBit-2.so.0 664 /usr/lib/libdb-4.5.so 694 /opt/HHInstall/program/libicuuc.so.36 929 /opt/HHInstall/program/libvcl680li.so 938 /opt/HHInstall/program/libsfx680li.so 1061 /opt/HHInstall/program/libfwk680li.so 1070 /opt/HHInstall/program/libstlport_gcc.so 1121 /usr/lib/libstdc++.so.6 1178 /opt/HHInstall/program/configmgr2.uno.so 1195 /opt/HHInstall/program/libsb680li.so 1667 /opt/HHInstall/program/libicui18n.so.36 2308 /opt/HHInstall/program/libsw680li.so 2664 /opt/HHInstall/program/libsvx680li.so 2855 /opt/HHInstall/program/libsvt680li.so with -Bsym-fn 687 /opt/OOInstall/program/libicuuc.so.36 943 /opt/OOInstall/program/libvcl680li.so 1075 /opt/OOInstall/program/libsb680li.so 1091 /opt/OOInstall/program/libstlport_gcc.so 1121 /usr/lib/libstdc++.so.6 1214 /opt/OOInstall/program/configmgr2.uno.so 1436 /opt/OOInstall/program/libsfx680li.so 1509 /opt/OOInstall/program/libfwk680li.so 1637 /opt/OOInstall/program/libicui18n.so.36 3553 /opt/OOInstall/program/libsvt680li.so 4037 /opt/OOInstall/program/libsw680li.so 4418 /opt/OOInstall/program/libsvx680li.so ** so - why not a greater speedup ? - ** before: 1091 /opt/PPInstall/program/libstlport_gcc.so 1121 /usr/lib/libstdc++.so.6 1174 /opt/PPInstall/program/libfwe680li.so 1181 /opt/PPInstall/program/libtk680li.so 1214 /opt/PPInstall/program/configmgr2.uno.so 1266 /opt/PPInstall/program/libcomphelp4gcc3.so 1509 /opt/PPInstall/program/libfwk680li.so 1637 /opt/PPInstall/program/libicui18n.so.36 2591 /opt/PPInstall/program/libsb680li.so 2801 /opt/PPInstall/program/libsfx680li.so 3088 /opt/PPInstall/program/libvcl680li.so 5132 /opt/PPInstall/program/libsw680li.so 5472 /opt/PPInstall/program/libsvt680li.so 11718 /opt/PPInstall/program/libsvx680li.so