#!/usr/bin/python import sys,os if len(sys.argv) <> 3: print "Usage: %s binary symbol_list\n" % (sys.argv[0]) def parse_symbols(binary): ls = os.popen("nm --numeric-sort '%s'" % binary).read().split("\n") table = {} for line in ls: cols = line.split(" ") if len(cols) <> 3 or cols[1].lower() != "t" : continue table[int(cols[0],16)] = cols[2] return table table = parse_symbols(sys.argv[1]) addrs = open(sys.argv[2]).read().rstrip().split("\n") print("SECTIONS\n{"); for addr in addrs: name = table[int(addr,16)] print(" .text.%s : {*(.text.%s) }" % (name, name)) print("}\nINSERT AFTER .gnu.version_r");