30 lines
461 B
Ruby
30 lines
461 B
Ruby
module Elf
|
|
class StringTableSection < Section
|
|
def initialize(*args)
|
|
super
|
|
|
|
@string_data = "\x00"
|
|
@indices = {"" => 0}
|
|
end
|
|
|
|
def add_string(str)
|
|
return if @indices[str]
|
|
|
|
@indices[str] = @string_data.length
|
|
@string_data << str << "\x00"
|
|
end
|
|
|
|
def index_for(str)
|
|
@indices[str]
|
|
end
|
|
|
|
def write(io)
|
|
io << @string_data
|
|
end
|
|
|
|
def type
|
|
Elf::Constants::SHT_STRTAB
|
|
end
|
|
end
|
|
end
|