| import time |
| import os, fnmatch |
| import sys |
| |
| |
| ######################################################### |
| # |
| # 1. execute ld to generate log |
| # 2. collect all undefined reference symbols |
| # 3. find out the files defining the symbols |
| # 4. sort all the files |
| # 5. let user decide whether copy the file or just make fake file |
| # |
| |
| if __name__ == '__main__': |
| |
| count = 0 |
| |
| argc = len(sys.argv) |
| if argc != 2: |
| print " Usage: python gen-wrap-funclist.py output\n\n" |
| sys.exit(-1) |
| |
| output_file = sys.argv[1] |
| print "Output result file is [%s]\n" % (output_file) |
| |
| # collect all the extern-dep functions |
| func_def_list = [] |
| |
| os.system("ld *.o >& tmpfile.1") |
| fp = open("tmpfile.1", "r") |
| |
| line = fp.readline().strip() |
| while line != '': |
| iterms = line.split() |
| if len(iterms) != 0: |
| if "undefined" in iterms and "reference" in iterms: |
| if not (iterms[-1] in func_def_list): |
| func_def_list.append(iterms[-1]) |
| count = count + 1 |
| |
| line = fp.readline().strip() |
| |
| fp.close() |
| |
| #output the extern function list |
| fpw = open(output_file, "w") |
| for i in range(count): |
| fpw.write("NULL \t") |
| fpw.write(func_def_list[i][1:-1]) |
| fpw.write(" \t 0\t NULL\n") |
| fpw.close() |
| |
| print("Find %d Wrap-Function Definitaions\n", count) |
| os.remove("tmpfile.1") |