import json import msgpack import struct import sys import os.path import io from os import path def pad(o, m): if m>0 : barray = bytearray(m) for i in range(0,m): barray[i] = 0xFF o.write(barray) return def alignFile(o, position, aligment): m = position % aligment if m>0 : m = aligment-m barray = bytearray(m) for i in range(0,m): barray[i] = 0xFF o.write(barray) return m def main(): output = sys.argv[1] maps = [] maps_meta = [] position = 0 with io.open(output, 'wb') as o: for i, arg in enumerate(sys.argv): if i>1: maps.append(arg) for map in maps: with open(map, mode='rb') as file: mapContent = file.read() with open(map+'.json') as f: mapMeta = json.load(f) mapMeta["base_address"] = position o.write(mapContent) position += len(mapContent) position += alignFile(o,position,4096) maps_meta.append(mapMeta) with io.open(output+'.json', 'w') as f: f.write(json.dumps(maps_meta,indent=6)) with io.open(output+'.dat', 'wb') as f: cnt = len(maps_meta) f.write(struct.pack('