[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 7 of 7] xl: Use gcc hidden visibility attribute
FYI, here is a hacky script to locate self-PLT entries in x86_64 binaries. It depends on binutils and elfutils and clobbers a file called './syms' in order to avoid having to think about deadlocks in rw popen. 8<----------------------------------- #!/usr/bin/python import os,sys def check_file(fn): f_plt = os.popen("eu-readelf --relocs %s| grep 'X86_64_JUMP_SLOT 0x' | awk '{print $5}'"%fn) plt = {}.fromkeys(map(lambda x:x.rstrip("\r\n"), f_plt.readlines())) del f_plt f_ref = os.popen("objdump -d %s | egrep '\<callq\>.*@plt' | awk '{print $1 $9}'"%fn) tmp = map(lambda x:x.split(":"), f_ref.readlines()) del f_ref refs = [] for x in tmp: assert(len(x) == 2) (addr, sym) = x sym = sym.rstrip(">\r\n").lstrip("<") assert(len(sym) > 4 and sym[-4:] == '@plt') sym = sym[:-4] addr = int(addr, 16) refs.append((addr,sym)) del tmp refs = filter(lambda x:plt.has_key(x[1]), refs) f_eu = os.popen("xargs eu-addr2line -e %s > syms"%fn, 'w') for (addr,sym) in refs: f_eu.write("0x%x\n"%addr) #print "0x%x %s"%(addr,sym) f_eu.close() f_eu = open("syms", 'r') os.unlink("syms") addrlines = map(lambda x:x.rstrip("\r\n"), f_eu.readlines()) del f_eu assert(len(addrlines) == len(refs)) for ((addr, sym), line) in zip(refs, addrlines): print "%s -> %s"%(line, sym) return True if __name__ == '__main__': if len(sys.argv) != 2: print "Usage: %s <ELF-lib>"%sys.argv[0] raise SystemExit, 1 if check_file(sys.argv[1]): raise SystemExit raise SystemExit, 1 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |