blob: 3db16f5e82f68b0db66fb6f229e1396c633bc015 [file] [edit]
#!/usr/bin/env python
"""
eBPF assembler
Very simple single-pass assembler. Only exists to assemble testcases
for the interpreter.
"""
import argparse
import os
import sys
ROOT_DIR = os.path.join(os.path.dirname(os.path.realpath(__file__)), "..")
if os.path.exists(os.path.join(ROOT_DIR, "ubpf")):
# Running from source tree
sys.path.insert(0, ROOT_DIR)
import ubpf.assembler
def main():
parser = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
parser.add_argument('input', type=argparse.FileType('r'), default='-')
parser.add_argument('output', type=argparse.FileType('w'), default='-')
args = parser.parse_args()
args.output.write(ubpf.assembler.assemble(args.input.read()))
if __name__ == "__main__":
main()