elftools 1.3.0 → 2.0.0
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.
- checksums.yaml +4 -4
- data/README.md +111 -7
- data/lib/elftools/constants/machine.rb +248 -0
- data/lib/elftools/constants/machine_names.rb +246 -0
- data/lib/elftools/constants/relocation/aarch64.rb +213 -0
- data/lib/elftools/constants/relocation/alpha.rb +47 -0
- data/lib/elftools/constants/relocation/amdgpu.rb +28 -0
- data/lib/elftools/constants/relocation/arm.rb +150 -0
- data/lib/elftools/constants/relocation/avr.rb +51 -0
- data/lib/elftools/constants/relocation/bfin.rb +72 -0
- data/lib/elftools/constants/relocation/bpf.rb +21 -0
- data/lib/elftools/constants/relocation/cr16.rb +46 -0
- data/lib/elftools/constants/relocation/cris.rb +46 -0
- data/lib/elftools/constants/relocation/crx.rb +35 -0
- data/lib/elftools/constants/relocation/csky.rb +79 -0
- data/lib/elftools/constants/relocation/d10v.rb +23 -0
- data/lib/elftools/constants/relocation/d30v.rb +27 -0
- data/lib/elftools/constants/relocation/dlx.rb +24 -0
- data/lib/elftools/constants/relocation/epiphany.rb +28 -0
- data/lib/elftools/constants/relocation/fr30.rb +27 -0
- data/lib/elftools/constants/relocation/frv.rb +57 -0
- data/lib/elftools/constants/relocation/ft32.rb +27 -0
- data/lib/elftools/constants/relocation/h8.rb +69 -0
- data/lib/elftools/constants/relocation/hppa.rb +135 -0
- data/lib/elftools/constants/relocation/i370.rb +26 -0
- data/lib/elftools/constants/relocation/i386.rb +59 -0
- data/lib/elftools/constants/relocation/i860.rb +48 -0
- data/lib/elftools/constants/relocation/i960.rb +22 -0
- data/lib/elftools/constants/relocation/ia64.rb +117 -0
- data/lib/elftools/constants/relocation/ip2k.rb +29 -0
- data/lib/elftools/constants/relocation/iq2000.rb +27 -0
- data/lib/elftools/constants/relocation/kvx.rb +97 -0
- data/lib/elftools/constants/relocation/lm32.rb +32 -0
- data/lib/elftools/constants/relocation/loongarch.rb +144 -0
- data/lib/elftools/constants/relocation/m32c.rb +27 -0
- data/lib/elftools/constants/relocation/m32r.rb +57 -0
- data/lib/elftools/constants/relocation/m68hc11.rb +35 -0
- data/lib/elftools/constants/relocation/m68k.rb +57 -0
- data/lib/elftools/constants/relocation/mcore.rb +27 -0
- data/lib/elftools/constants/relocation/mep.rb +36 -0
- data/lib/elftools/constants/relocation/metag.rb +63 -0
- data/lib/elftools/constants/relocation/microblaze.rb +48 -0
- data/lib/elftools/constants/relocation/mips.rb +125 -0
- data/lib/elftools/constants/relocation/mmix.rb +51 -0
- data/lib/elftools/constants/relocation/mn10200.rb +22 -0
- data/lib/elftools/constants/relocation/mn10300.rb +49 -0
- data/lib/elftools/constants/relocation/moxie.rb +17 -0
- data/lib/elftools/constants/relocation/msp430.rb +27 -0
- data/lib/elftools/constants/relocation/msp430x.rb +37 -0
- data/lib/elftools/constants/relocation/mt.rb +21 -0
- data/lib/elftools/constants/relocation/nds32.rb +167 -0
- data/lib/elftools/constants/relocation/nfp.rb +41 -0
- data/lib/elftools/constants/relocation/nfp3200.rb +46 -0
- data/lib/elftools/constants/relocation/nios2.rb +74 -0
- data/lib/elftools/constants/relocation/or1k.rb +69 -0
- data/lib/elftools/constants/relocation/pj.rb +24 -0
- data/lib/elftools/constants/relocation/ppc.rb +131 -0
- data/lib/elftools/constants/relocation/ppc64.rb +177 -0
- data/lib/elftools/constants/relocation/pru.rb +31 -0
- data/lib/elftools/constants/relocation/riscv.rb +74 -0
- data/lib/elftools/constants/relocation/rl78.rb +70 -0
- data/lib/elftools/constants/relocation/rx.rb +81 -0
- data/lib/elftools/constants/relocation/s12z.rb +22 -0
- data/lib/elftools/constants/relocation/s390.rb +82 -0
- data/lib/elftools/constants/relocation/score.rb +36 -0
- data/lib/elftools/constants/relocation/sh.rb +124 -0
- data/lib/elftools/constants/relocation/sparc.rb +108 -0
- data/lib/elftools/constants/relocation/spu.rb +32 -0
- data/lib/elftools/constants/relocation/tic6x.rb +48 -0
- data/lib/elftools/constants/relocation/tilegx.rb +134 -0
- data/lib/elftools/constants/relocation/tilepro.rb +105 -0
- data/lib/elftools/constants/relocation/v800.rb +101 -0
- data/lib/elftools/constants/relocation/v850.rb +66 -0
- data/lib/elftools/constants/relocation/vax.rb +29 -0
- data/lib/elftools/constants/relocation/visium.rb +30 -0
- data/lib/elftools/constants/relocation/wasm32.rb +16 -0
- data/lib/elftools/constants/relocation/x86_64.rb +68 -0
- data/lib/elftools/constants/relocation/xgate.rb +34 -0
- data/lib/elftools/constants/relocation/xstormy16.rb +29 -0
- data/lib/elftools/constants/relocation/xtensa.rb +75 -0
- data/lib/elftools/constants/relocation/z80.rb +28 -0
- data/lib/elftools/constants/relocation.rb +181 -0
- data/lib/elftools/constants.rb +124 -231
- data/lib/elftools/dynamic/hash_table.rb +216 -0
- data/lib/elftools/dynamic/string_table.rb +30 -0
- data/lib/elftools/dynamic/symbols.rb +146 -0
- data/lib/elftools/dynamic/tag.rb +66 -0
- data/lib/elftools/dynamic.rb +102 -62
- data/lib/elftools/elf_file.rb +74 -23
- data/lib/elftools/lazy_array.rb +42 -4
- data/lib/elftools/note.rb +6 -3
- data/lib/elftools/relocation.rb +94 -0
- data/lib/elftools/sections/dynamic_section.rb +13 -0
- data/lib/elftools/sections/relocation_section.rb +24 -43
- data/lib/elftools/sections/section.rb +4 -4
- data/lib/elftools/sections/sym_tab_section.rb +14 -34
- data/lib/elftools/sections/symbol.rb +112 -0
- data/lib/elftools/segments/dynamic_segment.rb +1 -0
- data/lib/elftools/segments/load_segment.rb +33 -5
- data/lib/elftools/segments/segment.rb +8 -4
- data/lib/elftools/structs.rb +24 -3
- data/lib/elftools/util.rb +1 -1
- data/lib/elftools/version.rb +1 -1
- metadata +101 -11
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'elftools/constants'
|
|
4
|
+
|
|
5
|
+
module ELFTools
|
|
6
|
+
module Sections
|
|
7
|
+
# Class of symbol.
|
|
8
|
+
class Symbol
|
|
9
|
+
attr_reader :header # @return [ELFTools::Structs::ELF32_sym, ELFTools::Structs::ELF64_sym] Section header.
|
|
10
|
+
attr_reader :stream # @return [#pos=, #read] Streaming object.
|
|
11
|
+
|
|
12
|
+
# Instantiate a {ELFTools::Sections::Symbol} object.
|
|
13
|
+
# @param [ELFTools::Structs::ELF32_sym, ELFTools::Structs::ELF64_sym] header
|
|
14
|
+
# The symbol header.
|
|
15
|
+
# @param [#pos=, #read] stream The streaming object.
|
|
16
|
+
# @param [ELFTools::Sections::StrTabSection, Proc] symstr
|
|
17
|
+
# The symbol string section.
|
|
18
|
+
# If +Proc+ is given, it will be called at the first time
|
|
19
|
+
# access {Symbol#name}.
|
|
20
|
+
# @param [Integer] machine
|
|
21
|
+
# The machine of the ELF file, which a name of a value depends on.
|
|
22
|
+
def initialize(header, stream, symstr: nil, machine: nil)
|
|
23
|
+
@header = header
|
|
24
|
+
@stream = stream
|
|
25
|
+
@symstr = symstr
|
|
26
|
+
@machine = machine
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# Return the symbol name.
|
|
30
|
+
# @return [String] The name.
|
|
31
|
+
def name
|
|
32
|
+
@name ||= @symstr.call.name_at(header.st_name)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# What kind of entity this symbol refers to.
|
|
36
|
+
#
|
|
37
|
+
# The available types are listed in {ELFTools::Constants::STT}.
|
|
38
|
+
# @return [Integer] The type.
|
|
39
|
+
# @example
|
|
40
|
+
# symbol.type == ELFTools::Constants::STT_FUNC
|
|
41
|
+
# #=> true
|
|
42
|
+
def type
|
|
43
|
+
header.st_info & 0xf
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# The name of {#type}.
|
|
47
|
+
#
|
|
48
|
+
# A machine names types of its own, so the name is only known when the
|
|
49
|
+
# machine of the file is.
|
|
50
|
+
# @return [String] The name.
|
|
51
|
+
# @example
|
|
52
|
+
# symbol.type_name
|
|
53
|
+
# #=> 'STT_FUNC'
|
|
54
|
+
def type_name
|
|
55
|
+
Constants::STT.mapping(@machine, type)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# How this symbol is linked against others with the same name.
|
|
59
|
+
#
|
|
60
|
+
# The available bindings are listed in {ELFTools::Constants::STB}.
|
|
61
|
+
# @return [Integer] The binding.
|
|
62
|
+
# @example
|
|
63
|
+
# symbol.bind == ELFTools::Constants::STB_GLOBAL
|
|
64
|
+
# #=> true
|
|
65
|
+
def bind
|
|
66
|
+
header.st_info >> 4
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# The name of {#bind}.
|
|
70
|
+
# @return [String] The name.
|
|
71
|
+
# @example
|
|
72
|
+
# symbol.bind_name
|
|
73
|
+
# #=> 'STB_GLOBAL'
|
|
74
|
+
def bind_name
|
|
75
|
+
Constants::STB.mapping(@machine, bind)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# How this symbol is accessed once it becomes part of an executable or
|
|
79
|
+
# shared object.
|
|
80
|
+
#
|
|
81
|
+
# The available visibilities are listed in {ELFTools::Constants::STV}.
|
|
82
|
+
# @return [Integer] The visibility.
|
|
83
|
+
# @example
|
|
84
|
+
# symbol.visibility == ELFTools::Constants::STV_HIDDEN
|
|
85
|
+
# #=> true
|
|
86
|
+
def visibility
|
|
87
|
+
header.st_other & 0x3
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# The name of {#visibility}.
|
|
91
|
+
# @return [String] The name.
|
|
92
|
+
# @example
|
|
93
|
+
# symbol.visibility_name
|
|
94
|
+
# #=> 'STV_DEFAULT'
|
|
95
|
+
def visibility_name
|
|
96
|
+
Constants::STV.mapping(@machine, visibility)
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
# The index of the section this symbol is defined in.
|
|
100
|
+
#
|
|
101
|
+
# Values in {ELFTools::Constants::SHN} have special meanings instead of
|
|
102
|
+
# being an index.
|
|
103
|
+
# @return [Integer] The section index.
|
|
104
|
+
# @example
|
|
105
|
+
# symbol.section_index == ELFTools::Constants::SHN_UNDEF
|
|
106
|
+
# #=> true # the symbol is undefined and to be resolved at runtime
|
|
107
|
+
def section_index
|
|
108
|
+
header.st_shndx.to_i
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
@@ -49,6 +49,29 @@ module ELFTools
|
|
|
49
49
|
mem_head + mem_size
|
|
50
50
|
end
|
|
51
51
|
|
|
52
|
+
# Returns the lowest virtual address backed by this segment's file content.
|
|
53
|
+
#
|
|
54
|
+
# A segment is mapped from an aligned boundary, so the addresses preceding
|
|
55
|
+
# {#mem_head} within the same alignment unit are backed by this segment as
|
|
56
|
+
# well. The bound is clamped to the address of the first byte of the file,
|
|
57
|
+
# so that a malformed ELF, whose +p_offset+ and +p_vaddr+ are not congruent
|
|
58
|
+
# modulo +p_align+, cannot be converted into a negative file offset.
|
|
59
|
+
# @return [Integer]
|
|
60
|
+
# The vma.
|
|
61
|
+
def mapped_head
|
|
62
|
+
[header.p_vaddr.to_i & -header.p_align.to_i, mem_head - file_head].max
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# Returns the end virtual address backed by this segment's file content.
|
|
66
|
+
#
|
|
67
|
+
# Addresses in between this and {#mem_tail} occupy memory but have no
|
|
68
|
+
# content in file, therefore cannot be converted into a file offset.
|
|
69
|
+
# @return [Integer]
|
|
70
|
+
# The vma.
|
|
71
|
+
def mapped_tail
|
|
72
|
+
mem_head + size
|
|
73
|
+
end
|
|
74
|
+
|
|
52
75
|
# Query if the given file offset located in this segment.
|
|
53
76
|
# @param [Integer] offset
|
|
54
77
|
# File offset.
|
|
@@ -56,27 +79,32 @@ module ELFTools
|
|
|
56
79
|
# Size.
|
|
57
80
|
# @return [Boolean]
|
|
58
81
|
def offset_in?(offset, size = 0)
|
|
59
|
-
file_head <= offset && offset + size
|
|
82
|
+
file_head <= offset && offset + size <= file_tail
|
|
60
83
|
end
|
|
61
84
|
|
|
62
85
|
# Convert file offset into virtual memory address.
|
|
86
|
+
#
|
|
87
|
+
# The conversion is a shift by a constant, so it holds no matter +p_offset+
|
|
88
|
+
# is aligned with +p_vaddr+ or not.
|
|
63
89
|
# @param [Integer] offset
|
|
64
90
|
# File offset.
|
|
65
91
|
# @return [Integer]
|
|
66
92
|
def offset_to_vma(offset)
|
|
67
|
-
# XXX: What if file_head is not aligned with p_vaddr (which is invalid according to ELF spec)?
|
|
68
93
|
offset - file_head + header.p_vaddr
|
|
69
94
|
end
|
|
70
95
|
|
|
71
|
-
# Query if the given virtual memory address
|
|
96
|
+
# Query if the given virtual memory address is backed by this segment's
|
|
97
|
+
# file content.
|
|
98
|
+
#
|
|
99
|
+
# Only addresses in between {#mapped_head} and {#mapped_tail} can be
|
|
100
|
+
# converted into a file offset, see {#vma_to_offset}.
|
|
72
101
|
# @param [Integer] vma
|
|
73
102
|
# Virtual memory address.
|
|
74
103
|
# @param [Integer] size
|
|
75
104
|
# Size.
|
|
76
105
|
# @return [Boolean]
|
|
77
106
|
def vma_in?(vma, size = 0)
|
|
78
|
-
vma >=
|
|
79
|
-
vma + size <= mem_tail
|
|
107
|
+
vma >= mapped_head && vma + size <= mapped_tail
|
|
80
108
|
end
|
|
81
109
|
|
|
82
110
|
# Convert virtual memory address into file offset.
|
|
@@ -14,10 +14,14 @@ module ELFTools
|
|
|
14
14
|
# Streaming object.
|
|
15
15
|
# @param [Method] offset_from_vma
|
|
16
16
|
# The method to get offset of file, given virtual memory address.
|
|
17
|
-
|
|
17
|
+
# @param [Integer] machine
|
|
18
|
+
# The machine of the ELF file, which decides what the entries a
|
|
19
|
+
# segment points at mean. This should be +e_machine+ of the ELF header.
|
|
20
|
+
def initialize(header, stream, offset_from_vma: nil, machine: nil, **_kwargs)
|
|
18
21
|
@header = header
|
|
19
22
|
@stream = stream
|
|
20
23
|
@offset_from_vma = offset_from_vma
|
|
24
|
+
@machine = machine
|
|
21
25
|
end
|
|
22
26
|
|
|
23
27
|
# Return +header.p_type+ in a simpler way.
|
|
@@ -37,19 +41,19 @@ module ELFTools
|
|
|
37
41
|
# Is this segment readable?
|
|
38
42
|
# @return [Boolean] True or false.
|
|
39
43
|
def readable?
|
|
40
|
-
|
|
44
|
+
header.p_flags.allbits?(4)
|
|
41
45
|
end
|
|
42
46
|
|
|
43
47
|
# Is this segment writable?
|
|
44
48
|
# @return [Boolean] True or false.
|
|
45
49
|
def writable?
|
|
46
|
-
|
|
50
|
+
header.p_flags.allbits?(2)
|
|
47
51
|
end
|
|
48
52
|
|
|
49
53
|
# Is this segment executable?
|
|
50
54
|
# @return [Boolean] True or false.
|
|
51
55
|
def executable?
|
|
52
|
-
|
|
56
|
+
header.p_flags.allbits?(1)
|
|
53
57
|
end
|
|
54
58
|
end
|
|
55
59
|
end
|
data/lib/elftools/structs.rb
CHANGED
|
@@ -31,15 +31,20 @@ module ELFTools
|
|
|
31
31
|
# Hooks the constructor.
|
|
32
32
|
#
|
|
33
33
|
# +BinData::Record+ doesn't allow us to override +#initialize+, so we hack +new+ here.
|
|
34
|
+
#
|
|
35
|
+
# Keyword arguments have to be taken as a trailing +Hash+ instead of +**kwargs+: bindata
|
|
36
|
+
# defines +new+ on each record class taking +*args+ only, then re-dispatches it to the
|
|
37
|
+
# endian-specific subclass this method actually runs on, which collapses the caller's
|
|
38
|
+
# keywords into a positional +Hash+ on the way. See +override_new_in_class+ in
|
|
39
|
+
# https://github.com/dmendel/bindata/blob/master/lib/bindata/dsl.rb, which is the same in
|
|
40
|
+
# 2.5.1, 3.0.0, and master.
|
|
34
41
|
def new(*args)
|
|
35
|
-
# XXX: The better implementation is +new(*args, **kwargs)+, but we can't do this unless bindata changed
|
|
36
|
-
# lib/bindata/dsl.rb#override_new_in_class to invoke +new+ with both +args+ and +kwargs+.
|
|
37
42
|
kwargs = args.last.is_a?(Hash) ? args.last : {}
|
|
38
43
|
offset = kwargs.delete(:offset)
|
|
39
44
|
super.tap do |obj|
|
|
40
45
|
obj.offset = offset
|
|
41
46
|
obj.field_names.each do |f|
|
|
42
|
-
m = "#{f}="
|
|
47
|
+
m = :"#{f}="
|
|
43
48
|
old_method = obj.singleton_method(m)
|
|
44
49
|
obj.singleton_class.send(:undef_method, m)
|
|
45
50
|
obj.define_singleton_method(m) do |val|
|
|
@@ -179,6 +184,22 @@ module ELFTools
|
|
|
179
184
|
64 => ELF64_sym
|
|
180
185
|
}.freeze
|
|
181
186
|
|
|
187
|
+
# Header of the symbol hash table +DT_HASH+ points at.
|
|
188
|
+
class ELF_Hash < ELFStruct
|
|
189
|
+
endian :big_and_little
|
|
190
|
+
uint32 :nbucket # Number of buckets
|
|
191
|
+
uint32 :nchain # Number of chains, which is how many symbols there are
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
# Header of the symbol hash table +DT_GNU_HASH+ points at.
|
|
195
|
+
class ELF_GnuHash < ELFStruct
|
|
196
|
+
endian :big_and_little
|
|
197
|
+
uint32 :nbuckets # Number of buckets
|
|
198
|
+
uint32 :symndx # The first symbol index the table indexes
|
|
199
|
+
uint32 :maskwords # Number of words the bloom filter takes
|
|
200
|
+
uint32 :shift2 # The second shift the bloom filter is built with
|
|
201
|
+
end
|
|
202
|
+
|
|
182
203
|
# Note header.
|
|
183
204
|
class ELF_Nhdr < ELFStruct
|
|
184
205
|
endian :big_and_little
|
data/lib/elftools/util.rb
CHANGED
|
@@ -52,7 +52,7 @@ module ELFTools
|
|
|
52
52
|
end
|
|
53
53
|
|
|
54
54
|
# Read from stream until reach a null-byte.
|
|
55
|
-
# @param [#pos=, #read] stream Streaming object
|
|
55
|
+
# @param [#pos=, #read] stream Streaming object.
|
|
56
56
|
# @param [Integer] offset Start from here.
|
|
57
57
|
# @return [String] Result string will never contain null byte.
|
|
58
58
|
# @example
|
data/lib/elftools/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,29 +1,34 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: elftools
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 2.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- david942j
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: bindata
|
|
15
14
|
requirement: !ruby/object:Gem::Requirement
|
|
16
15
|
requirements:
|
|
17
|
-
- - "
|
|
16
|
+
- - ">="
|
|
18
17
|
- !ruby/object:Gem::Version
|
|
19
18
|
version: '2'
|
|
19
|
+
- - "<"
|
|
20
|
+
- !ruby/object:Gem::Version
|
|
21
|
+
version: '4'
|
|
20
22
|
type: :runtime
|
|
21
23
|
prerelease: false
|
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
25
|
requirements:
|
|
24
|
-
- - "
|
|
26
|
+
- - ">="
|
|
25
27
|
- !ruby/object:Gem::Version
|
|
26
28
|
version: '2'
|
|
29
|
+
- - "<"
|
|
30
|
+
- !ruby/object:Gem::Version
|
|
31
|
+
version: '4'
|
|
27
32
|
- !ruby/object:Gem::Dependency
|
|
28
33
|
name: os
|
|
29
34
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -100,14 +105,14 @@ dependencies:
|
|
|
100
105
|
requirements:
|
|
101
106
|
- - "~>"
|
|
102
107
|
- !ruby/object:Gem::Version
|
|
103
|
-
version: '0
|
|
108
|
+
version: '1.0'
|
|
104
109
|
type: :development
|
|
105
110
|
prerelease: false
|
|
106
111
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
112
|
requirements:
|
|
108
113
|
- - "~>"
|
|
109
114
|
- !ruby/object:Gem::Version
|
|
110
|
-
version: '0
|
|
115
|
+
version: '1.0'
|
|
111
116
|
- !ruby/object:Gem::Dependency
|
|
112
117
|
name: yard
|
|
113
118
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -134,11 +139,96 @@ files:
|
|
|
134
139
|
- README.md
|
|
135
140
|
- lib/elftools.rb
|
|
136
141
|
- lib/elftools/constants.rb
|
|
142
|
+
- lib/elftools/constants/machine.rb
|
|
143
|
+
- lib/elftools/constants/machine_names.rb
|
|
144
|
+
- lib/elftools/constants/relocation.rb
|
|
145
|
+
- lib/elftools/constants/relocation/aarch64.rb
|
|
146
|
+
- lib/elftools/constants/relocation/alpha.rb
|
|
147
|
+
- lib/elftools/constants/relocation/amdgpu.rb
|
|
148
|
+
- lib/elftools/constants/relocation/arm.rb
|
|
149
|
+
- lib/elftools/constants/relocation/avr.rb
|
|
150
|
+
- lib/elftools/constants/relocation/bfin.rb
|
|
151
|
+
- lib/elftools/constants/relocation/bpf.rb
|
|
152
|
+
- lib/elftools/constants/relocation/cr16.rb
|
|
153
|
+
- lib/elftools/constants/relocation/cris.rb
|
|
154
|
+
- lib/elftools/constants/relocation/crx.rb
|
|
155
|
+
- lib/elftools/constants/relocation/csky.rb
|
|
156
|
+
- lib/elftools/constants/relocation/d10v.rb
|
|
157
|
+
- lib/elftools/constants/relocation/d30v.rb
|
|
158
|
+
- lib/elftools/constants/relocation/dlx.rb
|
|
159
|
+
- lib/elftools/constants/relocation/epiphany.rb
|
|
160
|
+
- lib/elftools/constants/relocation/fr30.rb
|
|
161
|
+
- lib/elftools/constants/relocation/frv.rb
|
|
162
|
+
- lib/elftools/constants/relocation/ft32.rb
|
|
163
|
+
- lib/elftools/constants/relocation/h8.rb
|
|
164
|
+
- lib/elftools/constants/relocation/hppa.rb
|
|
165
|
+
- lib/elftools/constants/relocation/i370.rb
|
|
166
|
+
- lib/elftools/constants/relocation/i386.rb
|
|
167
|
+
- lib/elftools/constants/relocation/i860.rb
|
|
168
|
+
- lib/elftools/constants/relocation/i960.rb
|
|
169
|
+
- lib/elftools/constants/relocation/ia64.rb
|
|
170
|
+
- lib/elftools/constants/relocation/ip2k.rb
|
|
171
|
+
- lib/elftools/constants/relocation/iq2000.rb
|
|
172
|
+
- lib/elftools/constants/relocation/kvx.rb
|
|
173
|
+
- lib/elftools/constants/relocation/lm32.rb
|
|
174
|
+
- lib/elftools/constants/relocation/loongarch.rb
|
|
175
|
+
- lib/elftools/constants/relocation/m32c.rb
|
|
176
|
+
- lib/elftools/constants/relocation/m32r.rb
|
|
177
|
+
- lib/elftools/constants/relocation/m68hc11.rb
|
|
178
|
+
- lib/elftools/constants/relocation/m68k.rb
|
|
179
|
+
- lib/elftools/constants/relocation/mcore.rb
|
|
180
|
+
- lib/elftools/constants/relocation/mep.rb
|
|
181
|
+
- lib/elftools/constants/relocation/metag.rb
|
|
182
|
+
- lib/elftools/constants/relocation/microblaze.rb
|
|
183
|
+
- lib/elftools/constants/relocation/mips.rb
|
|
184
|
+
- lib/elftools/constants/relocation/mmix.rb
|
|
185
|
+
- lib/elftools/constants/relocation/mn10200.rb
|
|
186
|
+
- lib/elftools/constants/relocation/mn10300.rb
|
|
187
|
+
- lib/elftools/constants/relocation/moxie.rb
|
|
188
|
+
- lib/elftools/constants/relocation/msp430.rb
|
|
189
|
+
- lib/elftools/constants/relocation/msp430x.rb
|
|
190
|
+
- lib/elftools/constants/relocation/mt.rb
|
|
191
|
+
- lib/elftools/constants/relocation/nds32.rb
|
|
192
|
+
- lib/elftools/constants/relocation/nfp.rb
|
|
193
|
+
- lib/elftools/constants/relocation/nfp3200.rb
|
|
194
|
+
- lib/elftools/constants/relocation/nios2.rb
|
|
195
|
+
- lib/elftools/constants/relocation/or1k.rb
|
|
196
|
+
- lib/elftools/constants/relocation/pj.rb
|
|
197
|
+
- lib/elftools/constants/relocation/ppc.rb
|
|
198
|
+
- lib/elftools/constants/relocation/ppc64.rb
|
|
199
|
+
- lib/elftools/constants/relocation/pru.rb
|
|
200
|
+
- lib/elftools/constants/relocation/riscv.rb
|
|
201
|
+
- lib/elftools/constants/relocation/rl78.rb
|
|
202
|
+
- lib/elftools/constants/relocation/rx.rb
|
|
203
|
+
- lib/elftools/constants/relocation/s12z.rb
|
|
204
|
+
- lib/elftools/constants/relocation/s390.rb
|
|
205
|
+
- lib/elftools/constants/relocation/score.rb
|
|
206
|
+
- lib/elftools/constants/relocation/sh.rb
|
|
207
|
+
- lib/elftools/constants/relocation/sparc.rb
|
|
208
|
+
- lib/elftools/constants/relocation/spu.rb
|
|
209
|
+
- lib/elftools/constants/relocation/tic6x.rb
|
|
210
|
+
- lib/elftools/constants/relocation/tilegx.rb
|
|
211
|
+
- lib/elftools/constants/relocation/tilepro.rb
|
|
212
|
+
- lib/elftools/constants/relocation/v800.rb
|
|
213
|
+
- lib/elftools/constants/relocation/v850.rb
|
|
214
|
+
- lib/elftools/constants/relocation/vax.rb
|
|
215
|
+
- lib/elftools/constants/relocation/visium.rb
|
|
216
|
+
- lib/elftools/constants/relocation/wasm32.rb
|
|
217
|
+
- lib/elftools/constants/relocation/x86_64.rb
|
|
218
|
+
- lib/elftools/constants/relocation/xgate.rb
|
|
219
|
+
- lib/elftools/constants/relocation/xstormy16.rb
|
|
220
|
+
- lib/elftools/constants/relocation/xtensa.rb
|
|
221
|
+
- lib/elftools/constants/relocation/z80.rb
|
|
137
222
|
- lib/elftools/dynamic.rb
|
|
223
|
+
- lib/elftools/dynamic/hash_table.rb
|
|
224
|
+
- lib/elftools/dynamic/string_table.rb
|
|
225
|
+
- lib/elftools/dynamic/symbols.rb
|
|
226
|
+
- lib/elftools/dynamic/tag.rb
|
|
138
227
|
- lib/elftools/elf_file.rb
|
|
139
228
|
- lib/elftools/exceptions.rb
|
|
140
229
|
- lib/elftools/lazy_array.rb
|
|
141
230
|
- lib/elftools/note.rb
|
|
231
|
+
- lib/elftools/relocation.rb
|
|
142
232
|
- lib/elftools/sections/dynamic_section.rb
|
|
143
233
|
- lib/elftools/sections/note_section.rb
|
|
144
234
|
- lib/elftools/sections/null_section.rb
|
|
@@ -147,6 +237,7 @@ files:
|
|
|
147
237
|
- lib/elftools/sections/sections.rb
|
|
148
238
|
- lib/elftools/sections/str_tab_section.rb
|
|
149
239
|
- lib/elftools/sections/sym_tab_section.rb
|
|
240
|
+
- lib/elftools/sections/symbol.rb
|
|
150
241
|
- lib/elftools/segments/dynamic_segment.rb
|
|
151
242
|
- lib/elftools/segments/interp_segment.rb
|
|
152
243
|
- lib/elftools/segments/load_segment.rb
|
|
@@ -161,7 +252,7 @@ licenses:
|
|
|
161
252
|
- MIT
|
|
162
253
|
metadata:
|
|
163
254
|
rubygems_mfa_required: 'true'
|
|
164
|
-
|
|
255
|
+
changelog_uri: https://github.com/david942j/rbelftools/blob/v2.0.0/CHANGELOG.md
|
|
165
256
|
rdoc_options: []
|
|
166
257
|
require_paths:
|
|
167
258
|
- lib
|
|
@@ -169,15 +260,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
169
260
|
requirements:
|
|
170
261
|
- - ">="
|
|
171
262
|
- !ruby/object:Gem::Version
|
|
172
|
-
version: '3.
|
|
263
|
+
version: '3.3'
|
|
173
264
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
174
265
|
requirements:
|
|
175
266
|
- - ">="
|
|
176
267
|
- !ruby/object:Gem::Version
|
|
177
268
|
version: '0'
|
|
178
269
|
requirements: []
|
|
179
|
-
rubygems_version: 3.
|
|
180
|
-
signing_key:
|
|
270
|
+
rubygems_version: 3.6.9
|
|
181
271
|
specification_version: 4
|
|
182
272
|
summary: ELFTools - Pure ruby library for parsing and patching ELF files
|
|
183
273
|
test_files: []
|