Module: SeccompTools::Asm

Defined in:
lib/seccomp-tools/asm/asm.rb,
lib/seccomp-tools/asm/compiler.rb,
lib/seccomp-tools/asm/tokenizer.rb

Overview

Assembler of seccomp bpf.

Defined Under Namespace

Classes: Compiler, Tokenizer

Class Method Summary collapse

Class Method Details

.asm(str, arch: nil) ⇒ String

Assembler of seccomp bpf.

Examples:

SeccompTools::Asm.asm("  # lines start with '#' are comments\n  A = sys_number                # here's a comment, too\n  A >= 0x40000000 ? dead : next # 'next' is a keyword, denote the next instruction\n  A == read ? ok : next         # custom defined label 'dead' and 'ok'\n  A == 1 ? ok : next            # SYS_write = 1 in amd64\n  return ERRNO(1)\n  dead:\n  return KILL\n  ok:\n  return ALLOW\n")
#=> <raw binary bytes>


30
31
32
33
34
35
# File 'lib/seccomp-tools/asm/asm.rb', line 30

def asm(str, arch: nil)
  arch = Util.system_arch if arch.nil?
  compiler = Compiler.new(arch)
  str.lines.each { |l| compiler.process(l) }
  compiler.compile!.map(&:asm).join
end