From: Alexey Tourbin <at@altlinux.ru>
To: devel@lists.altlinux.org
Subject: Re: [devel] [Sisyphus-cybertalk] I: Sisyphus-20060519 dup_elf_symbols: +55 -46 (57838)
Date: Fri, 19 May 2006 20:09:49 +0400
Message-ID: <20060519160949.GG26020@localhost> (raw)
In-Reply-To: <200605191752.14541.thresh@altlinux.ru>
[-- Attachment #1.1: Type: text/plain, Size: 553 bytes --]
On Fri, May 19, 2006 at 05:52:07PM +0400, Pavlov Konstantin wrote:
> > 55 NEW dup_elf_symbols added to the list
> > ffmpeg /usr/bin/ffmpeg fftv /usr/bin/ffmpeg-fftv 2
> и прочее, вполне нормально с учетом дублежа кода ffmpeg. Его почти все таскают
> с собой.
Кстати, 2 -- это слишком мало, на уровне кажимости, а 8 -- это слишком
много, примерно как молотком по голове. Разъяснение приаттачено.
> > liballegro /usr/lib/liballeg-4.2.0.so atanks /usr/games/atanks 8
> > liballegro /usr/lib/liballeg-4.2.0.so dumb_0.9.2 /usr/bin/dumbplay 8
[-- Attachment #1.2: dup_elf_symbols --]
[-- Type: text/plain, Size: 1796 bytes --]
#!/bin/sh -ef
export LC_ALL=C
cd "${workdir:?}"
[ -n "$*" ] || set -- -ap
rpmelfsym "$@" >sym
awk -F'\t' '$3~/[DT]/' sym >def
sort -t$'\t' -k4 -o def def
# avoid most frequent symbols
nelf=`sort -u -k2,2 def |wc -l`
cut -f4 def |uniq -cd |sort -n >freq
awk -v n=$nelf '$1<sqrt(3*n){print$NF}' freq |grep -vf /dev/fd/3 >defsym 3<<'__EOF__'
__cxa_
__cxxabiv1
__gnu_cxx
__gxx_personality
^__dynamic_cast$
^_Znwj$
^_ZdlPv$
^_Znaj$
^_ZdaPv$
^_ZNSt[0-9]
^_ZNKSt[0-9]
^_ZSt[0-9]
^_Unwind_
^__register_frame
^yy[a-z_]
__EOF__
sort -o defsym -u defsym
join -t$'\t' -14 -21 -o '1.1 1.2 1.3 1.4' def defsym >xdef
# product ::= pkg1 elf1 pkg2 elf2 symtype symname
join -t$'\t' -j 4 -o '1.1 1.2 1.3 2.1 2.2 2.3 0' xdef xdef |
awk -F'\t' 'function prio(f) {
if (f~"^/lib/lib[^/]+[.]so[^/]*$") return 1
if (f~"^/usr/lib/lib[^/]+[.]so[^/]*$") return 2
if (f~"^/usr/X11R./lib/lib[^/]+[.]so[^/]*$") return 3
if (f~"lib/lib[^/]+[.]so[^/]*$") return 4
if (f~"/lib[^/]+[.]so[^/]*$") return 5
if (f~"[^/][.]so[^/]*$") return 6
return 9
}
($2<$5 && $3==$6) {
OFS="\t"
pd = prio($2)-prio($5)
if (pd<0 || pd==0 && length($2)<=length($5))
print $1,$2,$4,$5,$6,$7
else
print $4,$5,$1,$2,$6,$7 }' >product
# suspect ::= pkg1 elf1 pkg2 elf2 log2(nsym)
# I need logarithmic scale here to facilitate diffing
# 3-5 symbols (approx. 4) log2 = 2
# 6-11 symbols (approx. 8) log2 = 3
# 12-22 symbols (approx. 16) log2 = 4
# 23-45 symbols (approx. 32) log2 = 5
# 46-90 symbols (approx. 64) log2 = 6
# 91-181 symbols (approx. 128) log2 = 7
# 182-362 symbols (approx. 256) log2 = 8
cut -f-4 product |sort |uniq -cd |sed 's/^ *\([0-9]\+\) \+\(.\+\)$/\2\t\1/' |
awk -F'\t' 'BEGIN{OFS=FS}($NF=int(log($NF)/log(2)+0.5))>1' >suspect
sort -o suspect -u suspect
cat suspect
cd - >/dev/null
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
next prev parent reply other threads:[~2006-05-19 16:09 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-05-19 13:52 ` Pavlov Konstantin
2006-05-19 14:21 ` Anton Farygin
2006-05-19 15:49 ` Valery V. Inozemtsev
2006-05-22 4:49 ` Anton Farygin
2006-05-22 6:03 ` Valery V. Inozemtsev
2006-05-22 9:33 ` Anton Farygin
2006-05-19 14:38 ` Alexey Tourbin
2006-05-19 15:47 ` Alexey Tourbin
2006-05-19 15:58 ` Igor Zubkov
2006-05-19 16:47 ` Alexey Tourbin
2006-05-19 14:47 ` Serge Polkovnikov
2006-05-19 16:09 ` Alexey Tourbin [this message]
2006-05-19 18:36 ` Konstantin A. Lepikhov
2006-05-19 20:10 ` Pavlov Konstantin
2006-05-20 7:43 ` [devel] mplayer team? " Michael Shigorin
2006-05-24 11:18 ` Led
2006-05-20 10:23 ` [devel] " Valery V. Inozemtsev
2006-05-22 14:38 ` Led
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=20060519160949.GG26020@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