# -*- coding: utf-8 -*- import os import subprocess from stat import * start_dir = '/home/dark/mlinux/svn/linuxnvcom01/mclinux36/target' file_list = [] for root, dirs, files in os.walk(start_dir): for f in files: file_list.append(os.path.join(root, f)) exefile_list = [] exefile_list.append('/home/dark/mlinux/svn/linuxnvcom01/toolchain/buildroot-2011.05/output/host/usr/lib/gcc/mipsel-unknown-linux-uclibc/4.3.5/libgcc.a') exefile_list.append('/home/dark/mlinux/svn/linuxnvcom01/mclinux36/linux-2.6.36/vmlinux') for f in file_list: try: mode = os.lstat(f)[ST_MODE] if not S_ISREG(mode) : continue if S_IXUSR & mode : exefile_list.append(f) except OSError: None # print exefile_list disassembled_file = [] log_file = "/home/dark/mlinux/work/mclinux36/find-log.txt" out_log = open(log_file,"w") for f in exefile_list : objdump_str = "/home/dark/mlinux/buildroot-2011.02/output/host/usr/bin/mipsel-linux-objdump" disassemble_opt = "--disassemble" source_file = f output_file = "/home/dark/mlinux/work/mclinux36/disassemble" + f[f.rfind('/'):] + ".txt" call_arg = objdump_str + " " + disassemble_opt + " " + source_file + " > " + output_file; process = subprocess.Popen([call_arg], shell=True) rc = process.wait() if rc != 0 : print "skipped : " , f else : disassembled_file.append(output_file) out_log.write(f + "\n") # print disassembled_file for f in disassembled_file: print "check file: ", f out_log.write(f + "\n") dump = open(f) l = " " while len(l): l = dump.readline() t = l.split() if len(t) < 4: continue if (t[1] == "3c1c0004"): out_str = l + "\n"; out_log.write(out_str); dump.close() out_log.close() print "success..."