ruby-elf 1.0.3 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
-
|