ALT Linux Team development discussions
 help / color / mirror / Atom feed
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 --]

       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