Skip to content

Commit

Permalink
fix note implementation
Browse files Browse the repository at this point in the history
  • Loading branch information
katsyoshi committed Mar 2, 2024
1 parent 4fbd0f8 commit de8705c
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 9 deletions.
1 change: 1 addition & 0 deletions lib/vaporware/compiler/assembler/elf/section/note.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ def set!(nsize: nil, dsize: nil, type: nil, name: nil, desc: nil)
@type = num2bytes(type, 4) if check(type, 4)
@name = name!(name) if name
@desc = desc!(desc) if desc
self
end

def gnu_property! = set!(nsize: 0x04, dsize: 0x20, type: 0x05, name: "GNU", desc: %w(02 00 01 c0 04 00 00 00 00 00 00 00 00 00 00 00 01 00 01 c0 04 00 00 00 01 00 00 00 00 00 00 00).map { |val| val.to_i(16) })
Expand Down
9 changes: 6 additions & 3 deletions lib/vaporware/compiler/assembler/elf/utils.rb
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
module Vaporware::Compiler::Assembler::ELF::Utils
def build = bytes.flatten.pack("C*")
def size = build.bytesize
def set! = (raise Vaporware::Compiler::Assembler::ELF::Error, "should be implement #{self.class}")
def set! = (raise Vaporware::Compiler::Assembler::ELF::Error, "should be implementing #{self.class}")
def empties = must_be_filled_section_fields

private
def align(val, bytes) = (val << 0 until val.size % bytes == 0)
def bytes = (raise Vaporware::Compiler::Assembler::ELF::Error, "should be implement #{self.class}")
def align(val, bytes)
val << 0 until val.size % bytes == 0
val
end
def bytes = (raise Vaporware::Compiler::Assembler::ELF::Error, "should be implementing #{self.class}")
def must_be_filled_section_fields = instance_variables.reject { |i| instance_variable_get(i) }
def num2bytes(val, bytes) = hexas(val, bytes).reverse
def check(val, bytes) = ((val.is_a?(Array) && val.all? { |v| v.is_a?(Integer) } && val.size == bytes) || (val.is_a?(Integer) && (hexas(val, bytes).size == bytes)))
Expand Down
18 changes: 12 additions & 6 deletions sig/vaporware/compiler/assembler/elf/section/note.rbs
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,21 @@ class Vaporware::Compiler::Assembler::ELF::Section::Note
@name: Array[Integer]?
@desc: Array[Integer]?

def set!: (?nsize: Integer?, ?dsize: Integer?, ?type: Integer?, ?name: Integer?, ?desc: Integer?) -> void
def set!: (
?nsize: Integer?,
?dsize: Integer?,
?type: Integer?,
?name: (Integer | Array[Integer] | String)?,
?desc: (Integer | Array[Integer] | String)?
) -> self
def gnu_property!: () -> void
def build: () -> String

private
def name!: (String) -> void
def desc!: (String) -> void
def name!: ((Integer | Array[Integer] | String)?) -> Array[Integer]
def desc!: ((String | Array[Integer])?) -> Array[Integer]
def bytes: () -> Array[Array[Integer] | nil]
def align!: (Array[Integer], Integer) -> void
def num2bytes: (Integer, Integer) -> Array[Integer]
def check: (Integer | Array[Integer], Integer) -> bool
def align!: (Array[Integer], Integer) -> Array[Integer]
def num2bytes: (Integer?, Integer) -> Array[Integer]
def check: ((Integer | Array[Integer])?, Integer) -> bool
end

0 comments on commit de8705c

Please sign in to comment.