ruby-elf 1.0.3 → 1.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/cowstats +217 -215
- data/bin/elfgrep +165 -144
- data/bin/missingstatic +74 -73
- data/bin/rbelf-read +111 -0
- data/bin/rbelf-size +144 -107
- data/bin/verify-lfs +92 -87
- data/lib/elf.rb +1 -1
- data/lib/elf/dynamic.rb +1 -1
- data/lib/elf/file.rb +30 -3
- data/lib/elf/gnu.rb +3 -3
- data/lib/elf/section.rb +85 -40
- data/lib/elf/symbol.rb +19 -13
- data/lib/elf/symboltable.rb +1 -1
- data/lib/elf/tools.rb +198 -164
- data/manpages/cowstats.1 +1 -4
- data/manpages/elfgrep.1 +10 -9
- data/manpages/elfgrep.1.xml +9 -7
- data/manpages/missingstatic.1 +1 -4
- data/manpages/rbelf-size.1 +13 -15
- data/manpages/rbelf-size.1.xml +25 -14
- data/manpages/verify-lfs.1 +1 -4
- data/tools/link-collisions/harvest.rb +262 -297
- data/tools/link-collisions/multimplementations +17 -3
- data/tools/link-collisions/suppressions +30 -26
- metadata +6 -6
- data/tools/link-collisions/analyse.rb +0 -57
- data/tools/readelf-d.rb +0 -79
@@ -31,7 +31,7 @@ osswrappers /lib(|32|64)/lib(aoss|(esd|pa|)dsp)\.so$
|
|
31
31
|
libxerces /lib(|32|64)/libxerces-(c|depdom)\.so
|
32
32
|
|
33
33
|
# Boost
|
34
|
-
libboost_$2 /lib(|32|64)/libboost_([
|
34
|
+
libboost_$2 /lib(|32|64)/libboost_([0-9a-z_]+)(-mt)?(-[0-9_]+)?.so
|
35
35
|
|
36
36
|
# KDE's libgpgme++
|
37
37
|
libgpgme++ /lib(|32|64)/libgpgme\+\+(-pth(read)?)?\.so
|
@@ -58,8 +58,6 @@ cblas /lib(32|64)?/gclcblas\.so
|
|
58
58
|
|
59
59
|
libcorex /lib(32|64)?/libcorex\+\+_level[123]\.so
|
60
60
|
|
61
|
-
lib$5 /lib(32|64)?/(nvu|mozilla-(sunbird|thunderbird)|xulrunner(-[0-9\.]+)?|seamonkey)/lib([a-zA-Z_]+)(_core)?\.so$
|
62
|
-
|
63
61
|
libstlport /lib(32|64)?/libstlport((stl)?g?)\.so
|
64
62
|
|
65
63
|
libfann /lib(32|64)?/lib(double|float|fixed)?fann.so
|
@@ -109,9 +107,25 @@ fftw /lib(32|64)?/lib[ds]?fftw(3[lf]?(_threads)?)?\.so
|
|
109
107
|
CLHEP /lib(32|64)?/libCLHEP(-(Vector|GenericFunctions|Matrix|Random|Geometry))?-[0-9\.]+\.so
|
110
108
|
|
111
109
|
mozilla-libs /lib(xpcom(_core|glue)?|xul)(-[0-9\.]+)?\.so
|
110
|
+
lib$7 /lib(32|64)?/(nvu|mozilla-(sunbird|thunderbird)|xulrunner(-devel)?(-[0-9\.]+)?|seamonkey)(/sdk/lib)?/lib([0-9a-zA-Z_]+)(_core)?\.so$
|
112
111
|
|
113
112
|
libstdc++ /lib/libstdc\+\+-libc[0-9\.\-]+\.so
|
114
113
|
|
114
|
+
libHSrts /libHSrts(_thr)?(_debug)?-ghc[0-9.]+\.so
|
115
|
+
|
116
|
+
libruby /libruby(ee)?1[89]\.so
|
117
|
+
|
118
|
+
lib$1 /lib(g[dt]k)(-x11)?\.so
|
119
|
+
|
120
|
+
libidnkit /libidnkit(lite)?\.so
|
121
|
+
|
122
|
+
libGL /libGL(ESv2)?\.so
|
123
|
+
|
124
|
+
libzzip /libzzip(mmapped|fseeko)?-0\.so
|
125
|
+
|
126
|
+
PKCS#11 /(openpin-)?opensc-pkcs11\.so
|
127
|
+
PKCS#11 /pkcs11-spy\.so
|
128
|
+
|
115
129
|
# Library consolidation, keep at the end!
|
116
130
|
#
|
117
131
|
# This following line is used to consolidate all libraries that have
|
@@ -60,28 +60,31 @@
|
|
60
60
|
.*\.exe\.so ^WinMain$
|
61
61
|
|
62
62
|
# GTK and GNOME plugins
|
63
|
-
.*
|
64
|
-
/gtk-2\.0/.*/modules/.*\.so
|
65
|
-
/gtk-2\.0/.*/immodules/im-.*\.so
|
66
|
-
/gtk-2\.0/.*/engines/.*\.so
|
67
|
-
/gtk-2\.0/.*/loaders/libpixbuf.*\.so ^(load|fill_(info|vtable)|get_info)$
|
68
|
-
/gtk-2\.0/.*/printbackends/.*\.so
|
69
|
-
/pango/.*/modules/pango-.*\.so
|
70
|
-
/gnome-vfs-2\.0/modules/lib.*\.so
|
71
|
-
/libglade/.*/lib.*\.so
|
72
|
-
/(goffice|gnumeric)/[0-9\.]+/plugins/.*\.so
|
73
|
-
/evolution/[0-9\.]+/plugins/.*\.so
|
74
|
-
/abiword-[0-9\.]+/plugins/lib.*\.so
|
75
|
-
/libgda(-[0-9\.]+)?/providers/lib.*\.so
|
76
|
-
/gedit-[0-9]+/plugins/lib.*\.so
|
77
|
-
/brasero/plugins/lib.*\.so
|
78
|
-
/gnome-settings-daemon-[0-9\.]+/lib.*\.so
|
79
|
-
/gimp/[0-9\.]+/modules/.*\.so
|
80
|
-
/epiphany/[0-9\.]+/extensions/.*\.so
|
81
|
-
/libgnomedb/plugins/.*\.so
|
82
|
-
/totem/plugins/.*\.so
|
83
|
-
/rhythmbox/plugins/.*\.so
|
84
|
-
/nautilus/extensions-[0-9\.]+/.*\.so
|
63
|
+
.* ^g_module_check_init$
|
64
|
+
/gtk-2\.0/.*/modules/.*\.so ^gtk_module_init$
|
65
|
+
/gtk-2\.0/.*/immodules/im-.*\.so ^im_module_(create|init|exit|list)$
|
66
|
+
/gtk-2\.0/.*/engines/.*\.so ^(theme_(create_rc_style|init|exit))$
|
67
|
+
/(gtk-2\.0|gdk-pixbuf-2\.0)/.*/loaders/libpixbuf.*\.so ^(load|fill_(info|vtable)|get_info)$
|
68
|
+
/gtk-2\.0/.*/printbackends/.*\.so ^pb_module_(init|create|exit)$
|
69
|
+
/pango/.*/modules/pango-.*\.so ^script_engine_(list|create|init|exit)$
|
70
|
+
/gnome-vfs-2\.0/modules/lib.*\.so ^vfs_module_(init|shutdown)$
|
71
|
+
/libglade/.*/lib.*\.so ^glade_module_register_widgets$
|
72
|
+
/(goffice|gnumeric)/[0-9\.]+/plugins/.*\.so ^go_plugin_(depends|header|init|shutdown)$
|
73
|
+
/evolution/[0-9\.]+/plugins/.*\.so ^e_plugin_lib_enable$
|
74
|
+
/abiword-[0-9\.]+/plugins/lib.*\.so ^abi_plugin_((un)?register|supports_version)$
|
75
|
+
/libgda(-[0-9\.]+)?/providers/lib.*\.so ^plugin_(init|get_(name|description)|create_provider)$
|
76
|
+
/gedit-[0-9]+/plugins/lib.*\.so ^register_gedit_plugin$
|
77
|
+
/brasero/plugins/lib.*\.so ^brasero_plugin_register$
|
78
|
+
/gnome-settings-daemon-[0-9\.]+/lib.*\.so ^register_gnome_settings_plugin$
|
79
|
+
/gimp/[0-9\.]+/modules/.*\.so ^gimp_module_(query|register)$
|
80
|
+
/epiphany/[0-9\.]+/extensions/.*\.so ^register_module$
|
81
|
+
/libgnomedb/plugins/.*\.so ^plugin_init$
|
82
|
+
/totem/plugins/.*\.so ^register_totem_plugin$
|
83
|
+
/rhythmbox/plugins/.*\.so ^register_rb_plugin$
|
84
|
+
/nautilus/extensions-[0-9\.]+/.*\.so ^nautilus_module_(initialize|list_types|shutdown)$
|
85
|
+
/gio/modules/.*\.so ^g_io_module_(un)?load$
|
86
|
+
/evince/.*/backends/.*\.so ^register_evince_backend$
|
87
|
+
/notification-daemon-[0-9\.]+/.*\.so ^(add_notification_action|clear_notification_actions|(create|move)_notification|notification_tick|set_notification_(arrow|hints|icon|text|timeout))$
|
85
88
|
|
86
89
|
# XFCE
|
87
90
|
/lib(32|64)?/thunarx-[0-9\.]+/.*\.so ^thunar_extension_(initialize|list_types|shutdown)$
|
@@ -98,6 +101,7 @@
|
|
98
101
|
.* ^JNI_OnLoad$
|
99
102
|
# Sun Java implementation
|
100
103
|
^/opt/sun-jdk-.*/.* ^JavaMain$
|
104
|
+
/icedtea6/.* ^JavaMain$
|
101
105
|
|
102
106
|
# ZSH modules
|
103
107
|
.*/zsh/.*/zsh/.*\.so ^(boot|setup|cleanup|finish)_$
|
@@ -106,7 +110,7 @@
|
|
106
110
|
.*/wireshark/plugins/.*/.*\.so ^(version|plugin_(reg_handoff|register))$
|
107
111
|
|
108
112
|
# Samba plugins
|
109
|
-
.*/samba/(vfs|auth|charset)/.*\.so ^
|
113
|
+
.*/samba/(vfs|auth|charset)/.*\.so ^init_(samba_)?module$
|
110
114
|
|
111
115
|
# XawTV plugins
|
112
116
|
.*/xawtv/.*\.so ^ng_plugin_init$
|
@@ -156,9 +160,9 @@
|
|
156
160
|
.*/lib(|32|64)/zsh/.*/zsh/.*\.so$ ^(enables|features)_$
|
157
161
|
|
158
162
|
# OSS wrappers and other LD_PRELOAD libraries
|
159
|
-
lib((
|
163
|
+
lib((pulse|esd|arts)dsp|aoss|jackasyn|(soap|sand)box|fake(ch)?root|zzuf|v4l(1compat|2convert)|trash|syncdir|honeyd|tsocks) ^((__)?(m(un)?map(64)?|f?(open(at)?(64)?(_2)?|close))|ioctl|poll|connect|glob|bind|execvp?)$
|
160
164
|
|
161
|
-
lib(fake(ch)?root|(soap|sand)box|trash)(-[0-9\.]+)?\.so ^f?(l?ch(own|mod)|(un)?link|rename|(mk|rm)dir|remove|creat|mkfifo|l?utimen?s?|(__x)?
|
165
|
+
lib(fake(ch)?root|(soap|sand)box|trash)(-[0-9\.]+)?\.so ^f?(l?ch(own|mod)|(un)?link|rename|(mk|rm)dir|remove|creat|mkfifo|l?utimen?s?|(__x)?mknod(e|at)|symlink|access|truncate)(64)?(at)?$
|
162
166
|
|
163
167
|
# Memory debug libraries
|
164
168
|
lib(mudflap(th)?|dmalloc(cxx)?|duma|efence|jemalloc|mem(usage|intercept)|zzuf)\.so ^(([mcv]|re)alloc|c?free|m(un)?map(64)?|(posix_)?memalign|mem(cpy)|strn?(dup|cat|cpy)|__invoke_dynamic_linker__|_Z(n[aw]j|d[al]Pv)|RKSt9nothrow_t|Page_AllowAccess)$
|
@@ -182,7 +186,7 @@ strigi/strigi[lt]a_.*\.so ^(deleteS|s)trigiAnalyzerFactory$
|
|
182
186
|
.*/unrealircd/modules/m_.*\.so ^(Mod_(Init|Load|Version|Unload|Header)|compiler_version)$
|
183
187
|
|
184
188
|
# VLC
|
185
|
-
.*/vlc/.*/lib.*_plugin\.so ^vlc_entry(_(license|copyright))?__[0-9_]+[
|
189
|
+
.*/vlc/.*/lib.*_plugin\.so ^vlc_entry(_(license|copyright))?__[0-9_]+[a-z]$
|
186
190
|
|
187
191
|
# GStreamer
|
188
192
|
.*/gstreamer-.*/lib.*\.so ^gst_plugin_desc$
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-elf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 31
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 1.0.
|
9
|
+
- 4
|
10
|
+
version: 1.0.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- "Diego Elio Petten\xC3\xB2"
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-04-26 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|
@@ -30,6 +30,7 @@ executables:
|
|
30
30
|
- elfgrep
|
31
31
|
- cowstats
|
32
32
|
- verify-lfs
|
33
|
+
- rbelf-read
|
33
34
|
- rbelf-size
|
34
35
|
- missingstatic
|
35
36
|
extensions: []
|
@@ -42,6 +43,7 @@ files:
|
|
42
43
|
- bin/cowstats
|
43
44
|
- bin/elfgrep
|
44
45
|
- bin/missingstatic
|
46
|
+
- bin/rbelf-read
|
45
47
|
- bin/rbelf-size
|
46
48
|
- bin/verify-lfs
|
47
49
|
- extras/README.extras
|
@@ -66,7 +68,6 @@ files:
|
|
66
68
|
- manpages/rbelf-size.1.xml
|
67
69
|
- manpages/verify-lfs.1.xml
|
68
70
|
- tools/assess_duplicate_save.rb
|
69
|
-
- tools/link-collisions/analyse.rb
|
70
71
|
- tools/link-collisions/harvest.rb
|
71
72
|
- tools/link-collisions/known-broken
|
72
73
|
- tools/link-collisions/multimplementations
|
@@ -74,7 +75,6 @@ files:
|
|
74
75
|
- tools/link-collisions/suppressions
|
75
76
|
- tools/nm.rb
|
76
77
|
- tools/rbelf-lddtree.rb
|
77
|
-
- tools/readelf-d.rb
|
78
78
|
- lib/elf/symbol/demangler_gcc3.rb
|
79
79
|
- manpages/verify-lfs.1
|
80
80
|
- manpages/elfgrep.1
|
@@ -1,57 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# -*- coding: utf-8 -*-
|
3
|
-
# Copyright © 2007-2010 Diego E. "Flameeyes" Pettenò <flameeyes@gmail.com>
|
4
|
-
#
|
5
|
-
# This program is free software; you can redistribute it and/or modify
|
6
|
-
# it under the terms of the GNU General Public License as published by
|
7
|
-
# the Free Software Foundation; either version 2 of the License, or
|
8
|
-
# (at your option) any later version.
|
9
|
-
#
|
10
|
-
# This program is distributed in the hope that it will be useful,
|
11
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
-
# GNU General Public License for more details.
|
14
|
-
#
|
15
|
-
# You should have received a copy of the GNU General Public License
|
16
|
-
# along with this generator; if not, write to the Free Software
|
17
|
-
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
18
|
-
|
19
|
-
require 'getoptlong'
|
20
|
-
require 'pg'
|
21
|
-
|
22
|
-
opts = GetoptLong.new(
|
23
|
-
["--output", "-o", GetoptLong::REQUIRED_ARGUMENT],
|
24
|
-
["--postgres-username", "-U", GetoptLong::REQUIRED_ARGUMENT ],
|
25
|
-
["--postgres-password", "-P", GetoptLong::REQUIRED_ARGUMENT ],
|
26
|
-
["--postgres-hostname", "-H", GetoptLong::REQUIRED_ARGUMENT ],
|
27
|
-
["--postgres-port", "-T", GetoptLong::REQUIRED_ARGUMENT ],
|
28
|
-
["--postgres-database", "-D", GetoptLong::REQUIRED_ARGUMENT ]
|
29
|
-
)
|
30
|
-
|
31
|
-
outfile = $stdout
|
32
|
-
|
33
|
-
pg_params = {}
|
34
|
-
|
35
|
-
opts.each do |opt, arg|
|
36
|
-
case opt
|
37
|
-
when '--output'
|
38
|
-
outfile = File.new(arg, "w")
|
39
|
-
when '--postgres-username' then pg_params[:user] = arg
|
40
|
-
when '--postgres-password' then pg_params[:password] = arg
|
41
|
-
when '--postgres-hostname' then pg_params[:host] = arg
|
42
|
-
when '--postgres-port' then pg_params[:port] = arg
|
43
|
-
when '--postgres-database' then pg_params[:dbname] = arg
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
db = PGconn.open(pg_params)
|
48
|
-
|
49
|
-
db.exec("PREPARE getinstances (text, text) AS
|
50
|
-
SELECT name FROM symbols INNER JOIN objects ON symbols.object = objects.id WHERE symbol = $1 AND abi = $2 ORDER BY name")
|
51
|
-
|
52
|
-
db.exec("SELECT * FROM duplicate_symbols").each do |row|
|
53
|
-
outfile.puts "Symbol #{row['symbol']} (#{row['abi']}) present #{row['occurrences']} times"
|
54
|
-
db.exec( "EXECUTE getinstances ('#{row['symbol']}', '#{row['abi']}')" ).each do |path|
|
55
|
-
outfile.puts " #{path['name']}"
|
56
|
-
end
|
57
|
-
end
|
data/tools/readelf-d.rb
DELETED
@@ -1,79 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# -*- coding: utf-8 -*-
|
3
|
-
# Copyright © 2007-2010 Diego E. "Flameeyes" Pettenò <flameeyes@gmail.com>
|
4
|
-
#
|
5
|
-
# This program is free software; you can redistribute it and/or modify
|
6
|
-
# it under the terms of the GNU General Public License as published by
|
7
|
-
# the Free Software Foundation; either version 2 of the License, or
|
8
|
-
# (at your option) any later version.
|
9
|
-
#
|
10
|
-
# This program is distributed in the hope that it will be useful,
|
11
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
-
# GNU General Public License for more details.
|
14
|
-
#
|
15
|
-
# You should have received a copy of the GNU General Public License
|
16
|
-
# along with this generator; if not, write to the Free Software
|
17
|
-
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
18
|
-
|
19
|
-
# readelf -d implementation based on elf.rb (very limited)
|
20
|
-
|
21
|
-
require 'elf'
|
22
|
-
require 'getoptlong'
|
23
|
-
|
24
|
-
files = ARGV.length > 0 ? ARGV : ['a.out']
|
25
|
-
|
26
|
-
files.each do |file|
|
27
|
-
puts
|
28
|
-
begin
|
29
|
-
Elf::File.open(file) do |elf|
|
30
|
-
dynsection = elf['.dynamic']
|
31
|
-
|
32
|
-
unless dynsection
|
33
|
-
puts "There is no dynamic section in this file."
|
34
|
-
next
|
35
|
-
end
|
36
|
-
|
37
|
-
addrsize = (elf.elf_class == Elf::Class::Elf32 ? 8 : 16)
|
38
|
-
|
39
|
-
printf("Dynamic section at offset 0x%x contains %d entries\n",
|
40
|
-
dynsection.offset,
|
41
|
-
dynsection.size)
|
42
|
-
|
43
|
-
puts " Tag Type Name/Value\n"
|
44
|
-
|
45
|
-
dynsection.each_entry do |entry|
|
46
|
-
|
47
|
-
case entry.type
|
48
|
-
when Elf::Dynamic::Type::Needed
|
49
|
-
val = "Shared library: [#{entry.parsed}]"
|
50
|
-
when Elf::Dynamic::Type::Auxiliary
|
51
|
-
val = "Auxiliary library: [#{entry.parsed}]"
|
52
|
-
when Elf::Dynamic::Type::SoName
|
53
|
-
val = "Library soname: [#{entry.parsed}]"
|
54
|
-
when Elf::Dynamic::Type::StrSz, Elf::Dynamic::Type::SymEnt,
|
55
|
-
Elf::Dynamic::Type::PltRelSz, Elf::Dynamic::Type::RelASz,
|
56
|
-
Elf::Dynamic::Type::RelAEnt
|
57
|
-
|
58
|
-
val = "#{entry.value} (bytes)"
|
59
|
-
when Elf::Dynamic::Type::VerDefNum, Elf::Dynamic::Type::VerNeedNum, Elf::Dynamic::Type::RelACount
|
60
|
-
val = entry.value
|
61
|
-
when Elf::Dynamic::Type::GNUPrelinked
|
62
|
-
val = entry.parsed.getutc.strftime('%Y-%m-%dT%H:%M:%S')
|
63
|
-
else
|
64
|
-
val = sprintf "0x%0#{addrsize}x", entry.value
|
65
|
-
end
|
66
|
-
|
67
|
-
printf " 0x%08x %-28s %s\n", entry.type.to_i, "(#{entry.type.to_s})", val
|
68
|
-
|
69
|
-
break if entry.type == Elf::Dynamic::Type::Null
|
70
|
-
end
|
71
|
-
end
|
72
|
-
rescue Errno::ENOENT
|
73
|
-
$stderr.puts "readelf-d.rb: '#{file}': No such file"
|
74
|
-
exit 1
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
exit 0
|
79
|
-
|