ruby-elf 1.0.6.1 → 1.0.7
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/DONATING +1 -1
- data/bin/cowstats +1 -1
- data/bin/elfgrep +55 -16
- data/bin/missingstatic +1 -1
- data/bin/rbelf-nm +46 -11
- data/bin/rbelf-read +4 -6
- data/bin/rbelf-size +4 -2
- data/bin/verify-lfs +1 -1
- data/extras/bindings-parsers.rb +1 -1
- data/lib/bytestream-reader.rb +1 -1
- data/lib/elf.rb +2 -2
- data/lib/elf/dynamic.rb +2 -2
- data/lib/elf/file.rb +10 -1
- data/lib/elf/gnu.rb +1 -1
- data/lib/elf/section.rb +1 -1
- data/lib/elf/stringtable.rb +4 -14
- data/lib/elf/sunw.rb +1 -1
- data/lib/elf/symbol.rb +43 -37
- data/lib/elf/symboltable.rb +1 -1
- data/lib/elf/tools.rb +3 -2
- data/lib/elf/utils/loader.rb +1 -1
- data/lib/elf/utils/offsettable.rb +49 -0
- data/lib/elf/utils/pool.rb +1 -1
- data/lib/elf/value.rb +1 -1
- data/manpages/cowstats.1 +2 -2
- data/manpages/cowstats.1.xml +1 -1
- data/manpages/elfgrep.1 +39 -5
- data/manpages/elfgrep.1.xml +53 -2
- data/manpages/missingstatic.1 +2 -2
- data/manpages/missingstatic.1.xml +1 -1
- data/manpages/rbelf-nm.1 +18 -3
- data/manpages/rbelf-nm.1.xml +41 -1
- data/manpages/rbelf-size.1 +2 -2
- data/manpages/rbelf-size.1.xml +1 -1
- data/manpages/verify-lfs.1 +2 -2
- data/manpages/verify-lfs.1.xml +1 -1
- data/tools/assess_duplicate_save.rb +1 -1
- data/tools/link-collisions/harvest.rb +19 -9
- data/tools/link-collisions/known-broken +7 -18
- data/tools/link-collisions/multimplementations +35 -4
- data/tools/link-collisions/suppress.rb +1 -1
- data/tools/link-collisions/suppressions +22 -18
- data/tools/rbelf-lddtree.rb +1 -1
- metadata +13 -16
- data/lib/elf/symbol/demangler_gcc3.rb +0 -1952
data/lib/elf/sunw.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
# Simple ELF parser for Ruby
|
3
3
|
#
|
4
|
-
# Copyright © 2008-2010 Diego
|
4
|
+
# Copyright © 2008-2010 Diego Elio Pettenò <flameeyes@flameeyes.eu>
|
5
5
|
# Portions inspired by elf.py
|
6
6
|
# Copyright © 2002 Netgraft Corporation
|
7
7
|
# Portions inspired by elf.h
|
data/lib/elf/symbol.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
# Simple ELF parser for Ruby
|
3
3
|
#
|
4
|
-
# Copyright © 2007-2010 Diego
|
4
|
+
# Copyright © 2007-2010 Diego Elio Pettenò <flameeyes@flameeyes.eu>
|
5
5
|
# Portions inspired by elf.py
|
6
6
|
# Copyright © 2002 Netgraft Corporation
|
7
7
|
# Portions inspired by elf.h
|
@@ -160,7 +160,7 @@ module Elf
|
|
160
160
|
if @name.is_a? Integer and @symsect.link
|
161
161
|
begin
|
162
162
|
name = @symsect.link[@name]
|
163
|
-
rescue
|
163
|
+
rescue Utilities::OffsetTable::InvalidIndex
|
164
164
|
raise InvalidName.new(@name, self, @symsect)
|
165
165
|
end
|
166
166
|
@name = name if name
|
@@ -196,10 +196,14 @@ module Elf
|
|
196
196
|
|
197
197
|
return '' if version_idx == 1
|
198
198
|
|
199
|
-
|
199
|
+
begin
|
200
|
+
if section.nil?
|
201
|
+
return @file['.gnu.version_r'][version_idx][:name]
|
202
|
+
else
|
203
|
+
return @file['.gnu.version_d'][version_idx][:names][0]
|
204
|
+
end
|
205
|
+
rescue Elf::File::MissingSection
|
200
206
|
return @file['.gnu.version_r'][version_idx][:name]
|
201
|
-
else
|
202
|
-
return @file['.gnu.version_d'][version_idx][:names][0]
|
203
207
|
end
|
204
208
|
end
|
205
209
|
|
@@ -262,12 +266,14 @@ module Elf
|
|
262
266
|
|
263
267
|
when bind == Binding::Weak
|
264
268
|
nmflag = case type
|
265
|
-
when Type::Object then
|
266
|
-
|
269
|
+
when Type::Object then 'V'
|
270
|
+
# we cannot use 'v' when value is zero, as for a
|
271
|
+
# variable, a zero address is correct, it's just
|
272
|
+
# functions that cannot be at zero address.
|
273
|
+
when value == 0 then 'w'
|
274
|
+
else 'W'
|
267
275
|
end
|
268
276
|
|
269
|
-
nmflag.downcase! if value == 0
|
270
|
-
|
271
277
|
when bind == Binding::GNU::Unique
|
272
278
|
nmflag = 'u'
|
273
279
|
|
@@ -291,7 +297,15 @@ module Elf
|
|
291
297
|
end
|
292
298
|
|
293
299
|
when type == Type::None
|
294
|
-
|
300
|
+
# try being smarter than simply reporthing this as a none-type
|
301
|
+
# symbol, as some compilers (namely pathCC) emit STT_NONE
|
302
|
+
# symbols that are instead functions.
|
303
|
+
nmflag = case
|
304
|
+
when section.is_a?(Integer) then "N"
|
305
|
+
when section.flags.include?(Elf::Section::Flags::ExecInstr) then "T"
|
306
|
+
when section.type == Elf::Section::Type::NoBits then "B"
|
307
|
+
else "N"
|
308
|
+
end
|
295
309
|
when type == Type::Func
|
296
310
|
nmflag = 'T'
|
297
311
|
when type == Type::Section
|
@@ -318,13 +332,7 @@ module Elf
|
|
318
332
|
# Reports a string full of whitespace if the symbols is not
|
319
333
|
# defined (as there is no address)
|
320
334
|
def address_string
|
321
|
-
|
322
|
-
|
323
|
-
if section
|
324
|
-
sprintf("%0#{addrsize}x", value)
|
325
|
-
else
|
326
|
-
' ' * addrsize
|
327
|
-
end
|
335
|
+
section ? sprintf("%0#{@file.address_print_size}x", value) : ''
|
328
336
|
end
|
329
337
|
|
330
338
|
# Check whether two symbols are the same
|
@@ -364,29 +372,27 @@ module Elf
|
|
364
372
|
return true
|
365
373
|
end
|
366
374
|
|
367
|
-
begin
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
#
|
379
|
-
|
380
|
-
|
381
|
-
@demangled
|
382
|
-
|
383
|
-
|
384
|
-
end
|
385
|
-
rescue LoadError
|
375
|
+
# begin
|
376
|
+
# Demanglers = [ ]
|
377
|
+
# def demangle
|
378
|
+
# return @demangled if @demangled
|
379
|
+
#
|
380
|
+
# Demanglers.each do |demangler|
|
381
|
+
# break if (@demangled ||= demangler.demangle(name))
|
382
|
+
# end
|
383
|
+
#
|
384
|
+
# # We're going to remove top-namespace specifications as we don't
|
385
|
+
# # need them, but it's easier for the demangler to still emit
|
386
|
+
# # them.
|
387
|
+
# @demangled.gsub!(/(^| |\()::/, '\1') if @demangled
|
388
|
+
#
|
389
|
+
# return @demangled ||= name
|
390
|
+
# end
|
391
|
+
# rescue LoadError
|
386
392
|
def demangle
|
387
393
|
return name
|
388
394
|
end
|
389
|
-
end
|
395
|
+
# end
|
390
396
|
|
391
397
|
private
|
392
398
|
def version_index
|
data/lib/elf/symboltable.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
# Simple ELF parser for Ruby
|
3
3
|
#
|
4
|
-
# Copyright © 2007-2010 Diego
|
4
|
+
# Copyright © 2007-2010 Diego Elio Pettenò <flameeyes@flameeyes.eu>
|
5
5
|
# Portions inspired by elf.py
|
6
6
|
# Copyright © 2002 Netgraft Corporation
|
7
7
|
# Portions inspired by elf.h
|
data/lib/elf/tools.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
|
-
# Copyright © 2008-2010 Diego
|
2
|
+
# Copyright © 2008-2010 Diego Elio Pettenò <flameeyes@flameeyes.eu>
|
3
3
|
#
|
4
4
|
# This program is free software; you can redistribute it and/or modify
|
5
5
|
# it under the terms of the GNU General Public License as published by
|
@@ -224,7 +224,7 @@ module Elf
|
|
224
224
|
# arguments.
|
225
225
|
@targets = ARGV.collect { |argument|
|
226
226
|
if argument[0..0] == "@"
|
227
|
-
::File.
|
227
|
+
::File.read(argument[1..-1]).split(/\r?\n/)
|
228
228
|
else
|
229
229
|
argument
|
230
230
|
end
|
@@ -239,6 +239,7 @@ module Elf
|
|
239
239
|
try_execute(input.sub(/\r?\n/, ''))
|
240
240
|
}
|
241
241
|
else
|
242
|
+
$stdin.close
|
242
243
|
@targets.uniq.each { |target| try_execute(target) }
|
243
244
|
end
|
244
245
|
|
data/lib/elf/utils/loader.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
|
-
# Copyright © 2009-2010 Diego
|
2
|
+
# Copyright © 2009-2010 Diego Elio Pettenò <flameeyes@flameeyes.eu>
|
3
3
|
#
|
4
4
|
# This program is free software; you can redistribute it and/or modify
|
5
5
|
# it under the terms of the GNU General Public License as published by
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# Offset-based string table
|
3
|
+
#
|
4
|
+
# Copyright © 2007-2012 Diego Elio Pettenò <flameeyes@flameeyes.eu>
|
5
|
+
#
|
6
|
+
# This program is free software; you can redistribute it and/or modify
|
7
|
+
# it under the terms of the GNU General Public License as published by
|
8
|
+
# the Free Software Foundation; either version 2 of the License, or
|
9
|
+
# (at your option) any later version.
|
10
|
+
#
|
11
|
+
# This program is distributed in the hope that it will be useful,
|
12
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14
|
+
# GNU General Public License for more details.
|
15
|
+
#
|
16
|
+
# You should have received a copy of the GNU General Public License
|
17
|
+
# along with this generator; if not, write to the Free Software
|
18
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
19
|
+
|
20
|
+
module Elf
|
21
|
+
module Utilities
|
22
|
+
class OffsetTable
|
23
|
+
class InvalidIndex < Exception
|
24
|
+
def initialize(idx, max_idx)
|
25
|
+
super("Invalid index #{idx} (maximum index: #{max_idx})")
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def initialize(content, separator)
|
30
|
+
@content = content
|
31
|
+
@separator = separator
|
32
|
+
end
|
33
|
+
|
34
|
+
def size
|
35
|
+
@content.size
|
36
|
+
end
|
37
|
+
|
38
|
+
def [](idx)
|
39
|
+
raise InvalidIndex.new(idx, size) if idx >= size
|
40
|
+
|
41
|
+
# find the first occurrence of the separator starting from the
|
42
|
+
# given index
|
43
|
+
endidx = @content.index(@separator, idx)
|
44
|
+
|
45
|
+
return @content[idx..endidx].chomp(@separator)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
data/lib/elf/utils/pool.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
# Copyright © 2009 Alex Legler <a3li@gentoo.org>
|
3
|
-
# Copyright © 2009-2010 Diego
|
3
|
+
# Copyright © 2009-2010 Diego Elio Pettenò <flameeyes@flameeyes.eu>
|
4
4
|
#
|
5
5
|
# This program is free software; you can redistribute it and/or modify
|
6
6
|
# it under the terms of the GNU General Public License as published by
|
data/lib/elf/value.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
# Simple ELF parser for Ruby
|
3
3
|
#
|
4
|
-
# Copyright © 2007-2010 Diego
|
4
|
+
# Copyright © 2007-2010 Diego Elio Pettenò <flameeyes@flameeyes.eu>
|
5
5
|
# Portions inspired by elf.py
|
6
6
|
# Copyright © 2002 Netgraft Corporation
|
7
7
|
# Portions inspired by elf.h
|
data/manpages/cowstats.1
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
'\" t
|
2
2
|
.\" Title: cowstats
|
3
3
|
.\" Author:
|
4
|
-
.\" Generator: DocBook XSL
|
4
|
+
.\" Generator: DocBook XSL Stylesheets v1.77.1 <http://docbook.sf.net/>
|
5
5
|
.\" Date: October 2008
|
6
6
|
.\" Manual: Reference
|
7
7
|
.\" Source: ruby-elf
|
@@ -171,7 +171,7 @@ Related tools:
|
|
171
171
|
\fBobjdump\fR(1)\&.
|
172
172
|
.SH "AUTHOR"
|
173
173
|
.PP
|
174
|
-
\fBDiego E. Pettenò\fR <\&flameeyes@
|
174
|
+
\fBDiego E. Pettenò\fR <\&flameeyes@flameeyes.eu\&>
|
175
175
|
.RS 4
|
176
176
|
Author and main contributor.
|
177
177
|
.RE
|
data/manpages/cowstats.1.xml
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
<?xml version='1.0'?>
|
2
2
|
<!--
|
3
|
-
Copyright © 2008-2011, Diego
|
3
|
+
Copyright © 2008-2011, Diego Elio Pettenò <flameeyes@flameeyes.eu>
|
4
4
|
|
5
5
|
This program is free software; you can redistribute it and/or modify
|
6
6
|
it under the terms of the GNU General Public License as published by
|
data/manpages/elfgrep.1
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
'\" t
|
2
2
|
.\" Title: elfgrep
|
3
3
|
.\" Author:
|
4
|
-
.\" Generator: DocBook XSL
|
5
|
-
.\" Date:
|
4
|
+
.\" Generator: DocBook XSL Stylesheets v1.77.1 <http://docbook.sf.net/>
|
5
|
+
.\" Date: November 2011
|
6
6
|
.\" Manual: Reference
|
7
7
|
.\" Source: ruby-elf
|
8
8
|
.\" Language: English
|
9
9
|
.\"
|
10
|
-
.TH "ELFGREP" "1" "
|
10
|
+
.TH "ELFGREP" "1" "November 2011" "ruby-elf" "Reference"
|
11
11
|
.\" -----------------------------------------------------------------
|
12
12
|
.\" * Define some portability stuff
|
13
13
|
.\" -----------------------------------------------------------------
|
@@ -31,7 +31,7 @@
|
|
31
31
|
elfgrep \- Search for symbols matching an expression in ELF files
|
32
32
|
.SH "SYNOPSIS"
|
33
33
|
.HP \w'\fBelfgrep\fR\ 'u
|
34
|
-
\fBelfgrep\fR [\fB\-\-fixed\-strings\fR] [\fB\-\-ignore\-case\fR] [\fB\-\-match\-version\fR] [\fB\-\-match\-undefined\fR | \fB\-\-match\-defined\fR] [\fB\-\-invert\-match\fR] [\fB\-\-count\fR] [\fB\-\-files\-without\-match\fR | \fB\-\-files\-with\-matches\fR] [\fB\-\-with\-filename\fR | \fB\-\-no\-filename\fR] [\fB\-\-null\fR] [\fB\-\-quiet\fR] [\fB\-\-recursive\fR] {\fB\-\-regexp\fR\ \fIPATTERN\fR... | \fIPATTERN\fR} [\fB@\fR\fIfile\fR | \fIfile\fR...]
|
34
|
+
\fBelfgrep\fR [\fB\-\-fixed\-strings\fR] [\fB\-\-ignore\-case\fR] [\fB\-\-match\-version\fR] [\fB\-\-match\-undefined\fR | \fB\-\-match\-defined\fR] [\fB\-\-invert\-match\fR] [\fB\-\-count\fR] [\fB\-\-files\-without\-match\fR | \fB\-\-files\-with\-matches\fR] [\fB\-\-with\-filename\fR | \fB\-\-no\-filename\fR] [\fB\-\-null\fR] [\fB\-\-symbol\-regexp\fR] [\fB\-\-quiet\fR] [\fB\-\-recursive\fR] {\fB\-\-regexp\fR\ \fIPATTERN\fR... | \fB\-\-file\fR\ \fIFILE\fR... | \fIPATTERN\fR} [\fB@\fR\fIfile\fR | \fIfile\fR...]
|
35
35
|
.SH "DESCRIPTION"
|
36
36
|
.PP
|
37
37
|
|
@@ -56,6 +56,35 @@ Use
|
|
56
56
|
as the pattern\&. This can be used to specify multiple search patterns, or to protect a pattern beginning with a hyphen (\-)\&.
|
57
57
|
.RE
|
58
58
|
.PP
|
59
|
+
\fB\-f\fR \fIFILE\fR, \fB\-\-file\fR \fIFILE\fR
|
60
|
+
.RS 4
|
61
|
+
Obtain patterns from
|
62
|
+
\fIFILE\fR, one per line\&.
|
63
|
+
.if n \{\
|
64
|
+
.sp
|
65
|
+
.\}
|
66
|
+
.RS 4
|
67
|
+
.it 1 an-trap
|
68
|
+
.nr an-no-space-flag 1
|
69
|
+
.nr an-break-flag 1
|
70
|
+
.br
|
71
|
+
.ps +1
|
72
|
+
\fBBehaviour difference from grep semantics\fR
|
73
|
+
.ps -1
|
74
|
+
.br
|
75
|
+
For
|
76
|
+
grep\*(Aqs
|
77
|
+
\fB\-\-file\fR
|
78
|
+
option, an empty line (with only a newline character) is a \(lqmatch all\(rq pattern, while a totally empty file (zero bytes sized) is a \(lqmatch none\(rq pattern\&. This doesn\*(Aqt make much sense, especially for
|
79
|
+
elfgrep, so both empty lines and empty files are simply skipped over\&. Passing
|
80
|
+
\fB\-\-file\fR
|
81
|
+
pointing to a file that gets totally ignored (zero bytes sized, or a sequence of newline characters) will still stop
|
82
|
+
elfgrep
|
83
|
+
from looking for a pattern in the first non\-option argument\&.
|
84
|
+
.sp .5v
|
85
|
+
.RE
|
86
|
+
.RE
|
87
|
+
.PP
|
59
88
|
\fB\-i\fR, \fB\-\-ignore\-case\fR
|
60
89
|
.RS 4
|
61
90
|
Ignore case distinction in both the
|
@@ -89,6 +118,11 @@ Invert the sense of matching, to select non\-matching symbols\&. This does not i
|
|
89
118
|
and
|
90
119
|
\fB\-\-no\-match\-defined\fR\&.
|
91
120
|
.RE
|
121
|
+
.PP
|
122
|
+
\fB\-s\fR, \fB\-\-symbol\-regexp\fR
|
123
|
+
.RS 4
|
124
|
+
Select only those matches that exactly match the whole line\&.
|
125
|
+
.RE
|
92
126
|
.SS "Output Control"
|
93
127
|
.PP
|
94
128
|
\fB\-c\fR, \fB\-\-count\fR
|
@@ -173,7 +207,7 @@ grep
|
|
173
207
|
man page, to avoid confusing with different wordings\&.
|
174
208
|
.SH "AUTHOR"
|
175
209
|
.PP
|
176
|
-
\fBDiego E. Pettenò\fR <\&flameeyes@
|
210
|
+
\fBDiego E. Pettenò\fR <\&flameeyes@flameeyes.eu\&>
|
177
211
|
.RS 4
|
178
212
|
Author and main contributor.
|
179
213
|
.RE
|
data/manpages/elfgrep.1.xml
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
<?xml version='1.0'?>
|
2
2
|
<!--
|
3
|
-
Copyright © 2011, Diego
|
3
|
+
Copyright © 2011, Diego Elio Pettenò <flameeyes@flameeyes.eu>
|
4
4
|
|
5
5
|
This program is free software; you can redistribute it and/or modify
|
6
6
|
it under the terms of the GNU General Public License as published by
|
@@ -31,7 +31,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
31
31
|
|
32
32
|
<refentry>
|
33
33
|
<info>
|
34
|
-
<date>
|
34
|
+
<date>November 2011</date>
|
35
35
|
<productname>ruby-elf</productname>
|
36
36
|
</info>
|
37
37
|
<refmeta>
|
@@ -100,6 +100,10 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
100
100
|
<option>--null</option>
|
101
101
|
</arg>
|
102
102
|
|
103
|
+
<arg choice="opt">
|
104
|
+
<option>--symbol-regexp</option>
|
105
|
+
</arg>
|
106
|
+
|
103
107
|
<xi:include href="common.xmli" xpointer="xpointer(id('filelist.synopsis.options')/*)" />
|
104
108
|
|
105
109
|
<group choice="req">
|
@@ -108,6 +112,11 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
108
112
|
<replaceable>PATTERN</replaceable>
|
109
113
|
</arg>
|
110
114
|
|
115
|
+
<arg choice="plain" rep="repeat">
|
116
|
+
<option>--file</option>
|
117
|
+
<replaceable>FILE</replaceable>
|
118
|
+
</arg>
|
119
|
+
|
111
120
|
<arg choice="plain">
|
112
121
|
<replaceable>PATTERN</replaceable>
|
113
122
|
</arg>
|
@@ -165,6 +174,38 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
165
174
|
</listitem>
|
166
175
|
</varlistentry>
|
167
176
|
|
177
|
+
<varlistentry>
|
178
|
+
<term>
|
179
|
+
<option>-f</option>
|
180
|
+
<replaceable>FILE</replaceable>
|
181
|
+
</term>
|
182
|
+
<term>
|
183
|
+
<option>--file</option>
|
184
|
+
<replaceable>FILE</replaceable>
|
185
|
+
</term>
|
186
|
+
|
187
|
+
<listitem>
|
188
|
+
<para>
|
189
|
+
Obtain patterns from <replaceable>FILE</replaceable>, one per line.
|
190
|
+
</para>
|
191
|
+
|
192
|
+
<note>
|
193
|
+
<title>Behaviour difference from <application>grep</application> semantics</title>
|
194
|
+
|
195
|
+
<para>
|
196
|
+
For <application>grep</application>'s <option>--file</option> option, an empty
|
197
|
+
line (with only a newline character) is a “match all” pattern, while a totally
|
198
|
+
empty file (zero bytes sized) is a “match none” pattern. This doesn't make much
|
199
|
+
sense, especially for <application>elfgrep</application>, so both empty lines
|
200
|
+
and empty files are simply skipped over. Passing <option>--file</option>
|
201
|
+
pointing to a file that gets totally ignored (zero bytes sized, or a sequence of
|
202
|
+
newline characters) will still stop <application>elfgrep</application> from
|
203
|
+
looking for a pattern in the first non-option argument.
|
204
|
+
</para>
|
205
|
+
</note>
|
206
|
+
</listitem>
|
207
|
+
</varlistentry>
|
208
|
+
|
168
209
|
<varlistentry>
|
169
210
|
<term><option>-i</option></term>
|
170
211
|
<term><option>--ignore-case</option></term>
|
@@ -223,6 +264,16 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
223
264
|
</para>
|
224
265
|
</listitem>
|
225
266
|
</varlistentry>
|
267
|
+
|
268
|
+
<varlistentry>
|
269
|
+
<term><option>-s</option></term>
|
270
|
+
<term><option>--symbol-regexp</option></term>
|
271
|
+
<listitem>
|
272
|
+
<para>
|
273
|
+
Select only those matches that exactly match the whole line.
|
274
|
+
</para>
|
275
|
+
</listitem>
|
276
|
+
</varlistentry>
|
226
277
|
</variablelist>
|
227
278
|
</refsect2>
|
228
279
|
|