Splits the binary code parsing out into a separate component library.
authorNathan Rosenblum <nater@aemilia.cs.wisc.edu>
Mon, 14 Jun 2010 14:50:12 +0000 (09:50 -0500)
committerNathan Rosenblum <nater@aemilia.cs.wisc.edu>
Mon, 14 Jun 2010 15:09:01 +0000 (10:09 -0500)
commit62b7d1f21d75bb81255914b53cc1ab99ca9da21e
tree54df88e93ef76db187f79a5d18c34d4fef4bf41f
parentf7555c7beaf304731138cb1c1f4fe323920fc892
Splits the binary code parsing out into a separate component library.

Low-level binary parsing has been split out into the ParseAPI component.
This library supports recursive traversal and heuristic gap parsing on
arbitrary binary code sources; by default it supports those binaries
that can be handled by SymtabAPI.

Dyninst has been updated to use the ParseAPI to build control flow graphs
and to access low-level binary information. The image-* CFG objects
extent analogous objects in the ParseAPI.

XXX This commit removes support for the deprecated IA64 platform. All
IA64-specific files and code have been removed.

XXX The architecture files arch-* have been separated from code generation
and moved to libcommon, as these files are used by InstructionAPI, ParseAPI,
and DyninstAPI.

The following minor bug fixes are also included:

* SSE instructions with REX prefix set had size decoded incorrectly
* Added reference counting to Symtab objects returned by
  findOpenSymtab; Symtab objects can now be released safely

(Probably there are many more, but these are the ones on record).
271 files changed:
DyninstAPI.sln
Makefile
codeCoverage/ia64-unknown-linux2.4/.cvsignore [deleted file]
common/common.vcproj
common/h/List.h
common/h/Types.h
common/h/arch-power.h [moved from dyninstAPI/src/arch-power.h with 85% similarity]
common/h/arch-sparc.h [moved from dyninstAPI/src/arch-sparc.h with 78% similarity]
common/h/arch-x86.h [moved from dyninstAPI/src/arch-x86.h with 85% similarity]
common/h/arch.h [new file with mode: 0644]
common/ia64-unknown-linux2.4/.cvsignore [deleted file]
common/ia64-unknown-linux2.4/Makefile [deleted file]
common/make.module.tmpl
common/src/arch-power.C [new file with mode: 0644]
common/src/arch-sparc.C [moved from dyninstAPI/src/arch-sparc.C with 62% similarity]
common/src/arch-x86.C [moved from instructionAPI/src/arch-x86.C with 92% similarity]
common/src/linuxKludges.C
common/src/util.C
common/x86_64-unknown-linux2.4/Makefile
dyner/ia64-unknown-linux2.4/.cvsignore [deleted file]
dyner/ia64-unknown-linux2.4/Makefile [deleted file]
dyninstAPI/dyninstAPI.vcproj
dyninstAPI/h/BPatch_instruction.h
dyninstAPI/h/BPatch_memoryAccess_NP.h
dyninstAPI/i386-unknown-linux2.4/Makefile
dyninstAPI/i386-unknown-nt4.0/Makefile
dyninstAPI/i386-unknown-winXP/Makefile
dyninstAPI/ia64-unknown-linux2.4/.cvsignore [deleted file]
dyninstAPI/ia64-unknown-linux2.4/Makefile [deleted file]
dyninstAPI/make.module.tmpl
dyninstAPI/ppc32-unknown-vxworks6.x/Makefile
dyninstAPI/ppc32_linux/Makefile
dyninstAPI/ppc64_linux/Makefile
dyninstAPI/rs6000-ibm-aix5.1/Makefile
dyninstAPI/rs6000-ibm-aix64-5.2/Makefile
dyninstAPI/sparc-sun-solaris2.8/Makefile
dyninstAPI/sparc-sun-solaris2.9/Makefile
dyninstAPI/src/BPatch.C
dyninstAPI/src/BPatch_basicBlock.C
dyninstAPI/src/BPatch_edge.C
dyninstAPI/src/BPatch_flowGraph.C
dyninstAPI/src/BPatch_function.C
dyninstAPI/src/BPatch_image.C
dyninstAPI/src/BPatch_instruction.C
dyninstAPI/src/BPatch_loopTreeNode.C
dyninstAPI/src/BPatch_memoryAccessAdapter.C
dyninstAPI/src/BPatch_module.C
dyninstAPI/src/BPatch_parRegion.C
dyninstAPI/src/BPatch_point.C
dyninstAPI/src/BPatch_process.C
dyninstAPI/src/BPatch_snippet.C
dyninstAPI/src/BPatch_templates.C
dyninstAPI/src/ELF_Section.h
dyninstAPI/src/InstrucIter-Function.C
dyninstAPI/src/InstrucIter-Function.h
dyninstAPI/src/InstrucIter-ia64.C [deleted file]
dyninstAPI/src/InstrucIter-x86.C [deleted file]
dyninstAPI/src/MemoryAccess.C
dyninstAPI/src/Parsing-arch.C [new file with mode: 0644]
dyninstAPI/src/Parsing.C [new file with mode: 0644]
dyninstAPI/src/Parsing.h [new file with mode: 0644]
dyninstAPI/src/addressSpace.C
dyninstAPI/src/addressSpace.h
dyninstAPI/src/aix.C
dyninstAPI/src/aixDL.C
dyninstAPI/src/arch-forward-decl.h [new file with mode: 0644]
dyninstAPI/src/arch-ia64.C [deleted file]
dyninstAPI/src/arch-ia64.h [deleted file]
dyninstAPI/src/ast.C
dyninstAPI/src/ast.h
dyninstAPI/src/baseTramp.C
dyninstAPI/src/baseTramp.h
dyninstAPI/src/binaryEdit.C
dyninstAPI/src/binaryEdit.h
dyninstAPI/src/codeRange.C
dyninstAPI/src/codegen-power.C [moved from dyninstAPI/src/arch-power.C with 64% similarity]
dyninstAPI/src/codegen-power.h [new file with mode: 0644]
dyninstAPI/src/codegen-sparc.C [new file with mode: 0644]
dyninstAPI/src/codegen-sparc.h [new file with mode: 0644]
dyninstAPI/src/codegen-x86.C [moved from dyninstAPI/src/arch-x86.C with 65% similarity]
dyninstAPI/src/codegen-x86.h [new file with mode: 0644]
dyninstAPI/src/codegen.C [moved from dyninstAPI/src/arch.C with 97% similarity]
dyninstAPI/src/codegen.h [moved from dyninstAPI/src/arch.h with 91% similarity]
dyninstAPI/src/debuggerinterface.h
dyninstAPI/src/emit-x86.C
dyninstAPI/src/emit-x86.h
dyninstAPI/src/frame.C
dyninstAPI/src/frame.h
dyninstAPI/src/function.C
dyninstAPI/src/function.h
dyninstAPI/src/ia64-template.s [deleted file]
dyninstAPI/src/image-flowGraph.C [deleted file]
dyninstAPI/src/image-func.C
dyninstAPI/src/image-func.h
dyninstAPI/src/image-ia64.C [deleted file]
dyninstAPI/src/image-power.C
dyninstAPI/src/image-sparc.C
dyninstAPI/src/image-x86.C
dyninstAPI/src/inst-ia64.C [deleted file]
dyninstAPI/src/inst-ia64.h [deleted file]
dyninstAPI/src/inst-power.C
dyninstAPI/src/inst-sparc.C
dyninstAPI/src/inst-sparc.h
dyninstAPI/src/inst-winnt.C
dyninstAPI/src/inst-x86.C
dyninstAPI/src/inst-x86.h
dyninstAPI/src/inst.C
dyninstAPI/src/inst.h
dyninstAPI/src/instP.h
dyninstAPI/src/instPoint.C
dyninstAPI/src/instPoint.h
dyninstAPI/src/legacy-instruction.h [new file with mode: 0644]
dyninstAPI/src/linux-ia64.C [deleted file]
dyninstAPI/src/linux-power.C
dyninstAPI/src/linux-x86.C
dyninstAPI/src/linux-x86.h
dyninstAPI/src/linux.C
dyninstAPI/src/linux.h
dyninstAPI/src/linuxDL.C
dyninstAPI/src/liveness.C
dyninstAPI/src/mapped_module.C
dyninstAPI/src/mapped_module.h
dyninstAPI/src/mapped_object.C
dyninstAPI/src/mapped_object.h
dyninstAPI/src/miniTramp.C
dyninstAPI/src/multiTramp.C
dyninstAPI/src/multiTramp.h
dyninstAPI/src/parRegion.C
dyninstAPI/src/parRegion.h
dyninstAPI/src/pdwinnt.C
dyninstAPI/src/process.C
dyninstAPI/src/process.h
dyninstAPI/src/registerSpace.C
dyninstAPI/src/registerSpace.h
dyninstAPI/src/reloc-func.C
dyninstAPI/src/reloc-func.h
dyninstAPI/src/rpcMgr-lwp.C
dyninstAPI/src/rpcMgr-thr.C
dyninstAPI/src/rpcMgr.C
dyninstAPI/src/sol_proc.C
dyninstAPI/src/solaris.C
dyninstAPI/src/solarisDL.C
dyninstAPI/src/stackanalysis.C
dyninstAPI/src/stackanalysis.h
dyninstAPI/src/stackwalk-x86.C
dyninstAPI/src/symtab.C
dyninstAPI/src/symtab.h
dyninstAPI/src/templates-nt.C
dyninstAPI/src/templates0.C
dyninstAPI/src/templates1.C
dyninstAPI/src/templates2.C
dyninstAPI/src/unix.C
dyninstAPI/src/variable.C
dyninstAPI/src/vxworks.C
dyninstAPI/src/vxworks.h
dyninstAPI/src/writeBackElf.h
dyninstAPI/tests/ia64-unknown-linux2.4/.cvsignore [deleted file]
dyninstAPI/tests/ia64-unknown-linux2.4/Makefile [deleted file]
dyninstAPI/x86_64-unknown-linux2.4/Makefile
dyninstAPI_RT/ia64-unknown-linux2.4/.cvsignore [deleted file]
dyninstAPI_RT/ia64-unknown-linux2.4/Makefile [deleted file]
dyninstAPI_RT/sparc-sun-solaris2.9/Makefile
dyninstAPI_RT/src/RTcommon.c
dyninstAPI_RT/src/RTheap-linux.c
dyninstAPI_RT/src/RTlinux.c
dyninstAPI_RT/src/RTposix.c
dynutil/Makefile
dynutil/h/IBSTree.h [moved from common/h/IBSTree.h with 62% similarity]
dynutil/h/dyn_detail/boost/make_shared.hpp [new file with mode: 0755]
dynutil/h/util.h
external/boost/unordered/detail/allocator_helpers.hpp [new file with mode: 0644]
external/boost/unordered/detail/config.hpp [new file with mode: 0644]
external/boost/unordered/detail/hash_table.hpp [new file with mode: 0644]
external/boost/unordered/detail/hash_table_impl.hpp [new file with mode: 0644]
external/boost/unordered/detail/move.hpp [new file with mode: 0644]
external/boost/unordered/unordered_map.hpp [new file with mode: 0644]
external/boost/unordered/unordered_map_fwd.hpp [new file with mode: 0644]
external/boost/unordered/unordered_set.hpp [new file with mode: 0644]
external/boost/unordered/unordered_set_fwd.hpp [new file with mode: 0644]
instructionAPI/h/Operation.h
instructionAPI/h/entryIDs.h
instructionAPI/i386-unknown-linux2.4/Makefile
instructionAPI/i386-unknown-nt4.0/Makefile
instructionAPI/i386-unknown-winXP/Makefile
instructionAPI/ia64-unknown-linux2.4/Makefile [deleted file]
instructionAPI/instructionAPI.vcproj
instructionAPI/ppc32_linux/Makefile
instructionAPI/ppc64_linux/Makefile
instructionAPI/rs6000-ibm-aix5.1/Makefile
instructionAPI/rs6000-ibm-aix64-5.2/Makefile
instructionAPI/src/Instruction.C
instructionAPI/src/InstructionDecoder-x86.C
instructionAPI/src/InstructionDecoder-x86.h
instructionAPI/src/Operation.C
instructionAPI/src/arch-x86.h [deleted file]
instructionAPI/x86_64-unknown-linux2.4/Makefile
make.config
parseAPI/doc/.gitignore [new file with mode: 0644]
parseAPI/doc/Makefile [new file with mode: 0644]
parseAPI/doc/parseapi.bib [new file with mode: 0644]
parseAPI/doc/parseapi.tex [new file with mode: 0644]
parseAPI/h/CFG.h [new file with mode: 0644]
parseAPI/h/CFGFactory.h [new file with mode: 0644]
parseAPI/h/CodeObject.h [new file with mode: 0644]
parseAPI/h/CodeSource.h [new file with mode: 0644]
parseAPI/h/InstructionAdapter.h [moved from dyninstAPI/src/InstructionAdapter.h with 67% similarity]
parseAPI/h/InstructionSource.h [new file with mode: 0644]
parseAPI/h/ParseCallback.h [new file with mode: 0644]
parseAPI/h/ParseContainers.h [new file with mode: 0644]
parseAPI/i386-unknown-linux2.4/Makefile [moved from codeCoverage/ia64-unknown-linux2.4/Makefile with 51% similarity]
parseAPI/make.module.tmpl [new file with mode: 0644]
parseAPI/parseAPI.vcproj [new file with mode: 0755]
parseAPI/ppc32-unknown-vxworks6.x/Makefile [new file with mode: 0644]
parseAPI/ppc32_linux/Makefile [new file with mode: 0644]
parseAPI/rs6000-ibm-aix5.1/Makefile [new file with mode: 0644]
parseAPI/sparc-sun-solaris2.8/Makefile [new file with mode: 0644]
parseAPI/sparc-sun-solaris2.9/Makefile [new file with mode: 0644]
parseAPI/src/Block.C [new file with mode: 0644]
parseAPI/src/CFGFactory.C [new file with mode: 0644]
parseAPI/src/CodeObject.C [new file with mode: 0644]
parseAPI/src/Function.C [new file with mode: 0644]
parseAPI/src/IA_IAPI.C [moved from dyninstAPI/src/IA_IAPI.C with 66% similarity]
parseAPI/src/IA_IAPI.h [moved from dyninstAPI/src/IA_IAPI.h with 74% similarity]
parseAPI/src/IA_InstrucIter.C [moved from dyninstAPI/src/IA_InstrucIter.C with 71% similarity]
parseAPI/src/IA_InstrucIter.h [moved from dyninstAPI/src/IA_InstrucIter.h with 74% similarity]
parseAPI/src/IA_power.C [moved from dyninstAPI/src/IA_power.C with 81% similarity]
parseAPI/src/IA_x86.C [moved from dyninstAPI/src/IA_x86.C with 80% similarity]
parseAPI/src/InstrucIter-power.C [moved from dyninstAPI/src/InstrucIter-power.C with 98% similarity]
parseAPI/src/InstrucIter-sparc.C [moved from dyninstAPI/src/InstrucIter-sparc.C with 71% similarity]
parseAPI/src/InstrucIter-xplat.C [moved from dyninstAPI/src/InstrucIter-xplat.C with 63% similarity]
parseAPI/src/InstrucIter.h [moved from dyninstAPI/src/InstrucIter.h with 82% similarity]
parseAPI/src/InstructionAdapter.C [moved from dyninstAPI/src/InstructionAdapter.C with 61% similarity]
parseAPI/src/InstructionSource-ia64.C [new file with mode: 0644]
parseAPI/src/InstructionSource-power.C [new file with mode: 0644]
parseAPI/src/InstructionSource-sparc.C [new file with mode: 0644]
parseAPI/src/InstructionSource-x86.C [new file with mode: 0644]
parseAPI/src/ParseData.C [new file with mode: 0644]
parseAPI/src/ParseData.h [new file with mode: 0644]
parseAPI/src/Parser-speculative.C [new file with mode: 0644]
parseAPI/src/Parser.C [new file with mode: 0644]
parseAPI/src/Parser.h [new file with mode: 0644]
parseAPI/src/ParserDetails.C [new file with mode: 0644]
parseAPI/src/ParserDetails.h [new file with mode: 0644]
parseAPI/src/SymtabCodeSource.C [new file with mode: 0644]
parseAPI/src/debug.C [new file with mode: 0644]
parseAPI/src/debug.h [moved from dyninstAPI/src/InstructionSource.h with 74% similarity]
parseAPI/src/util.h [moved from dyninstAPI/src/linux-ia64.h with 77% similarity]
parseAPI/x86_64-unknown-linux2.4/Makefile [new file with mode: 0644]
parseThat/Makefile.in
symtabAPI/h/Symtab.h
symtabAPI/h/Variable.h
symtabAPI/ia64-unknown-linux2.4/.cvsignore [deleted file]
symtabAPI/ia64-unknown-linux2.4/Makefile [deleted file]
symtabAPI/src/Object-elf.C
symtabAPI/src/Object-elf.h
symtabAPI/src/Symtab.C
symtabAPI/src/parseDwarf.C
symtabAPI/src/parseStab.C
symtabAPI/symtabAPI.vcproj
testsuite/ia64-unknown-linux2.4/.cvsignore [deleted file]
testsuite/ia64-unknown-linux2.4/Makefile [deleted file]
testsuite/ia64-unknown-linux2.4/dyninst_cxx_group_test_group.c [deleted file]
testsuite/ia64-unknown-linux2.4/dyninst_group_test_group.c [deleted file]
testsuite/ia64-unknown-linux2.4/make.mutators.gen [deleted file]
testsuite/ia64-unknown-linux2.4/make.solo_mutatee.gen [deleted file]
testsuite/ia64-unknown-linux2.4/symtab_group_test_group.c [deleted file]
testsuite/ia64-unknown-linux2.4/test_info_new.gen.C [deleted file]
testsuite/ia64-unknown-linux2.4/tuples [deleted file]
testsuite/rs6000-ibm-aix5.1/.gitignore [new file with mode: 0644]
testsuite/x86_64-unknown-linux2.4/.gitignore [new file with mode: 0644]
valueAdded/sharedMem/ia64-unknown-linux2.4/Makefile [deleted file]