parse-after-call, block splitting, Win trap handling & buggy import rewrite
authorKevin Roundy <roundy@cs.wisc.edu>
Tue, 5 Apr 2011 16:18:01 +0000 (11:18 -0500)
committerKevin Roundy <roundy@cs.wisc.edu>
Tue, 5 Apr 2011 16:18:01 +0000 (11:18 -0500)
commit7e208c7713e5b8779d1a1517f59eac4417415115
treeb419d72eca49e9fc78fe154aaa46a0b363b4d097
parent3c23f0b7e3abd626b853d96a9a231f10513967a1
parse-after-call, block splitting, Win trap handling & buggy import rewrite

- fixes parseAPI.vcproj's post-compile directory creation & copying
- re-organizes parse-after-call and eliminates duplicate edge creation
- block splitting fixed for the non-defensive case
- gets trap handling working for binary rewriting of windows binaries
- adds buggy rewriting of the import table, and tries to force
libdyninstAPI_RT.dll to be added, though unsuccessfully:

BUG 1: Import rewriting that uses maps and therefore sorts the IAT,
which is bad, you can't change the order of existing IAT entries,
or function calls will go to the wrong targets.
BUG 2: You can't force a library to be added by creating an import
descriptor table entry for it and leaving the import lookup & address
tables empty.
- need to see if adding two IDT entries for the same library is valid
- can we split the IAT into chunks?  If not, we need to add bootstrap
code to the program to copy the linked IAT to its original address.
22 files changed:
dataflowAPI/src/AbslocInterface.C
dyninstAPI/src/BPatch_binaryEdit.C
dyninstAPI/src/Parsing.C
dyninstAPI/src/Parsing.h
dyninstAPI/src/addressSpace.C
dyninstAPI/src/hybridCallbacks.C
dyninstAPI/src/hybridInstrumentation.C
dyninstAPI/src/mapped_object.C
dyninstAPI/src/process.C
dyninstAPI/src/symtab.C
dyninstAPI/src/symtab.h
dyninstAPI_RT/src/RTcommon.c
dyninstAPI_RT/src/RTwinnt.c
parseAPI/h/ParseCallback.h
parseAPI/parseAPI.vcproj
parseAPI/src/Function.C
parseAPI/src/Parser.C
symtabAPI/h/Symtab.h
symtabAPI/src/Object-nt.C
symtabAPI/src/Object-nt.h
symtabAPI/src/Symtab.C
symtabAPI/src/emitWin.C