From: Alexey Tourbin <at@altlinux.ru> To: devel@lists.altlinux.org Subject: Re: [devel] [Sisyphus-cybertalk] I: Sisyphus-20060422 dup_elf_symbols: +192 -130 (75892) Date: Sat, 22 Apr 2006 14:22:50 +0400 Message-ID: <20060422102250.GF8441@localhost> (raw) In-Reply-To: <20060422011027.GA21248@mash.office.altlinux.ru> [-- Attachment #1: Type: text/plain, Size: 12366 bytes --] On Sat, Apr 22, 2006 at 05:10:28AM +0400, QA Team Robot wrote: > 192 NEW dup_elf_symbols added to the list > ananas-engine-qt /usr/lib/libananasplugin.so libqt3 /usr/lib/libdesignercore.so.1.0.0 12 У этих двух бинарей совпадает примерно 2^{12} символов (показатель степени округляется). Т.е. порядка 4096 символов -- это не хухры-мухры, с очень высокой вероятностью имеет место реальное дублирование кода. $ grep '/usr/lib/libananasplugin.so.*/usr/lib/libdesignercore.so.1.0.0' product |head ananas-engine-qt /usr/lib/libananasplugin.so libqt3 /usr/lib/libdesignercore.so.1.0.0 T _Z10find_accelRK7QStringR4QMapI5QChar11QWidgetListEP7QWidget ananas-engine-qt /usr/lib/libananasplugin.so libqt3 /usr/lib/libdesignercore.so.1.0.0 T _Z13assistantPathv ananas-engine-qt /usr/lib/libananasplugin.so libqt3 /usr/lib/libdesignercore.so.1.0.0 T _Z13qChoosePixmapP7QWidgetP10FormWindowRK7QPixmapP7QString ananas-engine-qt /usr/lib/libananasplugin.so libqt3 /usr/lib/libdesignercore.so.1.0.0 T _Z13widgetManagerv ananas-engine-qt /usr/lib/libananasplugin.so libqt3 /usr/lib/libdesignercore.so.1.0.0 T _Z14qChoosePixmapsP7QWidget ananas-engine-qt /usr/lib/libananasplugin.so libqt3 /usr/lib/libdesignercore.so.1.0.0 T _Z15clean_argumentsRK7QString ananas-engine-qt /usr/lib/libananasplugin.so libqt3 /usr/lib/libdesignercore.so.1.0.0 T _Z15find_formwindowP7QWidget ananas-engine-qt /usr/lib/libananasplugin.so libqt3 /usr/lib/libdesignercore.so.1.0.0 T _Z16int_to_size_typei ananas-engine-qt /usr/lib/libananasplugin.so libqt3 /usr/lib/libdesignercore.so.1.0.0 T _Z16size_type_to_intN11QSizePolicy8SizeTypeE ananas-engine-qt /usr/lib/libananasplugin.so libqt3 /usr/lib/libdesignercore.so.1.0.0 T _Z17set_splash_statusRK7QString $ grep '/usr/lib/libananasplugin.so.*/usr/lib/libdesignercore.so.1.0.0' product |wc -l 4260 $ > atanks /usr/games/atanks ufo2000 /usr/games/ufo2000 8 Эти две игры скорее всего содержат в себе какую-то библиотеку. atanks /usr/games/atanks ufo2000 /usr/games/ufo2000 T _poly_scanline_atex16 atanks /usr/games/atanks ufo2000 /usr/games/ufo2000 T _poly_scanline_atex24 atanks /usr/games/atanks ufo2000 /usr/games/ufo2000 T _poly_scanline_atex32 atanks /usr/games/atanks ufo2000 /usr/games/ufo2000 T _poly_scanline_atex8 atanks /usr/games/atanks ufo2000 /usr/games/ufo2000 T _poly_scanline_atex_lit15 atanks /usr/games/atanks ufo2000 /usr/games/ufo2000 T _poly_scanline_atex_lit15x atanks /usr/games/atanks ufo2000 /usr/games/ufo2000 T _poly_scanline_atex_lit16 atanks /usr/games/atanks ufo2000 /usr/games/ufo2000 T _poly_scanline_atex_lit16x atanks /usr/games/atanks ufo2000 /usr/games/ufo2000 T _poly_scanline_atex_lit24 atanks /usr/games/atanks ufo2000 /usr/games/ufo2000 T _poly_scanline_atex_lit24x atanks /usr/games/atanks ufo2000 /usr/games/ufo2000 T _poly_scanline_atex_lit32 atanks /usr/games/atanks ufo2000 /usr/games/ufo2000 T _poly_scanline_atex_lit32x atanks /usr/games/atanks ufo2000 /usr/games/ufo2000 T _poly_scanline_atex_lit8 atanks /usr/games/atanks ufo2000 /usr/games/ufo2000 T _poly_scanline_atex_mask15 atanks /usr/games/atanks ufo2000 /usr/games/ufo2000 T _poly_scanline_atex_mask16 atanks /usr/games/atanks ufo2000 /usr/games/ufo2000 T _poly_scanline_atex_mask24 atanks /usr/games/atanks ufo2000 /usr/games/ufo2000 T _poly_scanline_atex_mask32 atanks /usr/games/atanks ufo2000 /usr/games/ufo2000 T _poly_scanline_atex_mask8 atanks /usr/games/atanks ufo2000 /usr/games/ufo2000 T _poly_scanline_atex_mask_lit15 atanks /usr/games/atanks ufo2000 /usr/games/ufo2000 T _poly_scanline_atex_mask_lit15x atanks /usr/games/atanks ufo2000 /usr/games/ufo2000 T _poly_scanline_atex_mask_lit16 atanks /usr/games/atanks ufo2000 /usr/games/ufo2000 T _poly_scanline_atex_mask_lit16x atanks /usr/games/atanks ufo2000 /usr/games/ufo2000 T _poly_scanline_atex_mask_lit24 atanks /usr/games/atanks ufo2000 /usr/games/ufo2000 T _poly_scanline_atex_mask_lit24x atanks /usr/games/atanks ufo2000 /usr/games/ufo2000 T _poly_scanline_atex_mask_lit32 atanks /usr/games/atanks ufo2000 /usr/games/ufo2000 T _poly_scanline_atex_mask_lit32x atanks /usr/games/atanks ufo2000 /usr/games/ufo2000 T _poly_scanline_atex_mask_lit8 atanks /usr/games/atanks ufo2000 /usr/games/ufo2000 T _poly_scanline_atex_mask_trans15 atanks /usr/games/atanks ufo2000 /usr/games/ufo2000 T _poly_scanline_atex_mask_trans16 atanks /usr/games/atanks ufo2000 /usr/games/ufo2000 T _poly_scanline_atex_mask_trans24 atanks /usr/games/atanks ufo2000 /usr/games/ufo2000 T _poly_scanline_atex_mask_trans32 atanks /usr/games/atanks ufo2000 /usr/games/ufo2000 T _poly_scanline_atex_mask_trans8 Кандидат на эту библиотеку -- libdevil. libdevil /usr/lib/libILUT.so.1.0.0 T _poly_zbuf_ptex16 libdevil /usr/lib/libILUT.so.1.0.0 T _poly_zbuf_ptex24 libdevil /usr/lib/libILUT.so.1.0.0 T _poly_zbuf_ptex32 libdevil /usr/lib/libILUT.so.1.0.0 T _poly_zbuf_ptex8 libdevil /usr/lib/libILUT.so.1.0.0 T _poly_zbuf_ptex_lit15 libdevil /usr/lib/libILUT.so.1.0.0 T _poly_zbuf_ptex_lit16 libdevil /usr/lib/libILUT.so.1.0.0 T _poly_zbuf_ptex_lit24 libdevil /usr/lib/libILUT.so.1.0.0 T _poly_zbuf_ptex_lit32 > dumb_0.9.2 /usr/bin/dumbplay atanks /usr/games/atanks 8 > dumb_0.9.2 /usr/bin/dumbplay liballegro-devel /usr/bin/textconv 8 > dumb_0.9.2 /usr/bin/dumbplay liquidwar /usr/games/liquidwar 8 > dumb_0.9.2 /usr/bin/dumbplay liquidwar /usr/games/liquidwar-mapgen 8 > dumb_0.9.2 /usr/bin/dumbplay ufo2000 /usr/games/ufo2000 9 То же самое. > freetype /usr/lib/libttf.so.2.2.0 libqt3 /usr/lib/libqt-mt.so.3.3.6 6 > freetype /usr/lib/libttf.so.2.2.0 libqt4-gui /usr/lib/libQtGui.so.4.1.2 6 freetype /usr/lib/libttf.so.2.2.0 libqt3 /usr/lib/libqt-mt.so.3.3.6 T Free_AlternateSubst freetype /usr/lib/libttf.so.2.2.0 libqt3 /usr/lib/libqt-mt.so.3.3.6 T Free_ChainContextPos freetype /usr/lib/libttf.so.2.2.0 libqt3 /usr/lib/libqt-mt.so.3.3.6 T Free_ChainContextSubst freetype /usr/lib/libttf.so.2.2.0 libqt3 /usr/lib/libqt-mt.so.3.3.6 T Free_ClassDefinition freetype /usr/lib/libttf.so.2.2.0 libqt3 /usr/lib/libqt-mt.so.3.3.6 T Free_ContextPos freetype /usr/lib/libttf.so.2.2.0 libqt3 /usr/lib/libqt-mt.so.3.3.6 T Free_ContextSubst freetype /usr/lib/libttf.so.2.2.0 libqt3 /usr/lib/libqt-mt.so.3.3.6 T Free_Coverage ... freetype /usr/lib/libttf.so.2.2.0 libqt3 /usr/lib/libqt-mt.so.3.3.6 T Load_AlternateSubst freetype /usr/lib/libttf.so.2.2.0 libqt3 /usr/lib/libqt-mt.so.3.3.6 T Load_ChainContextPos freetype /usr/lib/libttf.so.2.2.0 libqt3 /usr/lib/libqt-mt.so.3.3.6 T Load_ChainContextSubst freetype /usr/lib/libttf.so.2.2.0 libqt3 /usr/lib/libqt-mt.so.3.3.6 T Load_ClassDefinition freetype /usr/lib/libttf.so.2.2.0 libqt3 /usr/lib/libqt-mt.so.3.3.6 T Load_ContextPos freetype /usr/lib/libttf.so.2.2.0 libqt3 /usr/lib/libqt-mt.so.3.3.6 T Load_ContextSubst freetype /usr/lib/libttf.so.2.2.0 libqt3 /usr/lib/libqt-mt.so.3.3.6 T Load_Coverage freetype /usr/lib/libttf.so.2.2.0 libqt3 /usr/lib/libqt-mt.so.3.3.6 T Load_CursivePos freetype /usr/lib/libttf.so.2.2.0 libqt3 /usr/lib/libqt-mt.so.3.3.6 T Load_Device ... freetype /usr/lib/libttf.so.2.2.0 libqt3 /usr/lib/libqt-mt.so.3.3.6 T TT_GDEF_Build_ClassDefinition freetype /usr/lib/libttf.so.2.2.0 libqt3 /usr/lib/libqt-mt.so.3.3.6 T TT_GDEF_Get_Glyph_Property freetype /usr/lib/libttf.so.2.2.0 libqt3 /usr/lib/libqt-mt.so.3.3.6 T TT_GPOS_Add_Feature freetype /usr/lib/libttf.so.2.2.0 libqt3 /usr/lib/libqt-mt.so.3.3.6 T TT_GPOS_Clear_Features freetype /usr/lib/libttf.so.2.2.0 libqt3 /usr/lib/libqt-mt.so.3.3.6 T TT_GPOS_Query_Features freetype /usr/lib/libttf.so.2.2.0 libqt3 /usr/lib/libqt-mt.so.3.3.6 T TT_GPOS_Query_Languages freetype /usr/lib/libttf.so.2.2.0 libqt3 /usr/lib/libqt-mt.so.3.3.6 T TT_GPOS_Query_Scripts Похоже, что libqt3 и libqt4-gui содержат в себе библиотеку libttf. > gthumb /usr/lib/gthumb-catalog-view gthumb /usr/lib/gthumb-image-viewer 5 gthumb /usr/lib/gthumb-catalog-view gthumb /usr/lib/gthumb-image-viewer D Nautilus_ViewFrame__iinterface gthumb /usr/lib/gthumb-catalog-view gthumb /usr/lib/gthumb-image-viewer D Nautilus_ViewFrame__imethods gthumb /usr/lib/gthumb-catalog-view gthumb /usr/lib/gthumb-image-viewer T Nautilus_ViewFrame_close_window gthumb /usr/lib/gthumb-catalog-view gthumb /usr/lib/gthumb-image-viewer T Nautilus_ViewFrame_go_back gthumb /usr/lib/gthumb-catalog-view gthumb /usr/lib/gthumb-image-viewer T Nautilus_ViewFrame_open_location_force_new_window Что это означает? > gthumb /usr/lib/libgthumb-2.6.9.so epiphany /usr/bin/epiphany-bin 5 gthumb /usr/lib/libgthumb-2.6.9.so epiphany /usr/bin/epiphany-bin T eel_gconf_client_get_global gthumb /usr/lib/libgthumb-2.6.9.so epiphany /usr/bin/epiphany-bin T eel_gconf_get_boolean gthumb /usr/lib/libgthumb-2.6.9.so epiphany /usr/bin/epiphany-bin T eel_gconf_get_default_value gthumb /usr/lib/libgthumb-2.6.9.so epiphany /usr/bin/epiphany-bin T eel_gconf_get_float gthumb /usr/lib/libgthumb-2.6.9.so epiphany /usr/bin/epiphany-bin T eel_gconf_get_integer gthumb /usr/lib/libgthumb-2.6.9.so epiphany /usr/bin/epiphany-bin T eel_gconf_get_string gthumb /usr/lib/libgthumb-2.6.9.so epiphany /usr/bin/epiphany-bin T eel_gconf_get_string_list gthumb /usr/lib/libgthumb-2.6.9.so epiphany /usr/bin/epiphany-bin T eel_gconf_get_value gthumb /usr/lib/libgthumb-2.6.9.so epiphany /usr/bin/epiphany-bin T eel_gconf_handle_error gthumb /usr/lib/libgthumb-2.6.9.so epiphany /usr/bin/epiphany-bin T eel_gconf_is_default gthumb /usr/lib/libgthumb-2.6.9.so epiphany /usr/bin/epiphany-bin T eel_gconf_monitor_add gthumb /usr/lib/libgthumb-2.6.9.so epiphany /usr/bin/epiphany-bin T eel_gconf_monitor_remove gthumb /usr/lib/libgthumb-2.6.9.so epiphany /usr/bin/epiphany-bin T eel_gconf_notification_add > gthumb /usr/lib/libgthumb-2.6.9.so galeon /usr/bin/galeon 4 То же самое. И так далее -- письмо получается слишком длинным. Короче, смысл в том, что проблема дублирования бинарного наполовину решена. То есть создана адекватная модель данных и автоматизировано то, что очевидно подлежит автоматизации. Для окончательного решения проблемы остается только "разгребать завалы", если это кому-то нужно. (Модель данных на самом деле не совсем адекватна -- есть проблемы со strip'ом; т.е. в некоторых ситуациях если стрипнуть как следует, то ничего не остается. Если кто-то знает другие инварианты, помимо ELF символов, которые можно использовать для обнаружения дублирования бинарного кода, это будет очень интересно.) [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
next parent reply other threads:[~2006-04-22 10:22 UTC|newest] Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top 2006-04-22 10:22 ` Alexey Tourbin [this message] 2006-04-22 13:02 ` [devel] binary dups handling (was: [Sisyphus-cybertalk] I: Sisyphus-20060422 dup_elf_symbols: +192 -130 (75892)) Michael Shigorin 2006-04-22 13:46 ` [devel] binary dups handling Dmitry V. Levin 2006-04-25 9:00 ` [devel] [Sisyphus-cybertalk] I: Sisyphus-20060422 dup_elf_symbols: +192 -130 (75892) Serge Polkovnikov 2006-04-24 15:23 ` Andrey Rahmatullin
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20060422102250.GF8441@localhost \ --to=at@altlinux.ru \ --cc=devel@lists.altlinux.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
ALT Linux Team development discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \ devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru public-inbox-index devel Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.devel AGPL code for this site: git clone https://public-inbox.org/public-inbox.git