dyninst.git
3 years agoMerge branch 'master' into VEX
John Detter [Tue, 10 May 2016 19:17:27 +0000 (14:17 -0500)]
Merge branch 'master' into VEX

3 years agoMerge branch 'VEX' of http://github.com/dyninst/dyninst into VEX
John Detter [Tue, 10 May 2016 17:57:29 +0000 (12:57 -0500)]
Merge branch 'VEX' of github.com/dyninst/dyninst into VEX

3 years agoMerge pull request #13 from pefoley2/clang
Bill Williams [Mon, 9 May 2016 16:30:46 +0000 (11:30 -0500)]
Merge pull request #13 from pefoley2/clang

Allow dyninst to be compiled using clang

3 years agouse travis to test clang 13/head
Peter Foley [Thu, 5 May 2016 13:47:36 +0000 (09:47 -0400)]
use travis to test clang

3 years agoAllow dyninst to be compiled using clang
Peter Foley [Thu, 5 May 2016 01:30:15 +0000 (21:30 -0400)]
Allow dyninst to be compiled using clang

3 years agoMerge pull request #25 from pefoley2/ppc_buildfix
Bill Williams [Sat, 7 May 2016 16:44:34 +0000 (11:44 -0500)]
Merge pull request #25 from pefoley2/ppc_buildfix

Fix #23, build failure on PPC64le

3 years agoMerge pull request #24 from mcfadden8/mjmbug1
Bill Williams [Sat, 7 May 2016 16:44:18 +0000 (11:44 -0500)]
Merge pull request #24 from mcfadden8/mjmbug1

Provided base class virtual for getABIVersion() that returns false when not implemented

3 years agoFixed compiler warnings about unused arguments. 24/head
Marty McFadden [Fri, 6 May 2016 18:49:02 +0000 (11:49 -0700)]
Fixed compiler warnings about unused arguments.

3 years agoFix #23, build failure on PPC64le 25/head
Peter Foley [Fri, 6 May 2016 18:07:35 +0000 (14:07 -0400)]
Fix #23, build failure on PPC64le

3 years agoFixed forgotten rename of isPPC64V2API to getABIVersion in
Marty McFadden [Fri, 6 May 2016 17:52:06 +0000 (10:52 -0700)]
Fixed forgotten rename of isPPC64V2API to getABIVersion in
Object.h.  The virtual function in this base class now returns
false indicating that it is not implemented (which is the case
for Object-nt).

3 years agoMerge pull request #11 from pefoley2/cleanup
Bill Williams [Fri, 6 May 2016 17:09:16 +0000 (12:09 -0500)]
Merge pull request #11 from pefoley2/cleanup

Misc fixes and improvements

3 years agoFixed MMX assert issue, new issue with dyninstAPI/src/binaryEdit.C
John Detter [Fri, 6 May 2016 15:39:39 +0000 (10:39 -0500)]
Fixed MMX assert issue, new issue with dyninstAPI/src/binaryEdit.C

3 years agoadd code sample to fix doc build 11/head
Peter Foley [Fri, 6 May 2016 03:19:24 +0000 (23:19 -0400)]
add code sample to fix doc build

3 years agofix cmake 3.5 warnings
Peter Foley [Thu, 5 May 2016 23:34:50 +0000 (19:34 -0400)]
fix cmake 3.5 warnings

3 years agofix parseThat warnings
Peter Foley [Wed, 4 May 2016 22:35:35 +0000 (18:35 -0400)]
fix parseThat warnings

3 years agobuild and install parseThat with cmake
Peter Foley [Sun, 1 May 2016 18:56:01 +0000 (14:56 -0400)]
build and install parseThat with cmake

3 years agoUpdate parseThat autoconf files
Peter Foley [Sun, 1 May 2016 17:14:56 +0000 (13:14 -0400)]
Update parseThat autoconf files

Misc cleanups and fixes to the autoconf files for parseThat

3 years agoTeach emitElf about PT_PAX_FLAGS
Peter Foley [Sun, 1 May 2016 17:02:06 +0000 (13:02 -0400)]
Teach emitElf about PT_PAX_FLAGS

When rewriting binaries that have originally been built by the Gentoo
Linux toolchain, dyninst needs to know about the PT_PAX_FLAGS field that
is added to the elf header.

Since
http://git.dyninst.org/?p=dyninst.git;a=commit;h=91bdb5e73fd7a05c7750263efa9fb24e0a39c011
Using dyninst causes the UNKNOWN assert to trigger on PT_PAX_FLAGS.
Add the correct constant to the switch statement to allow these
binaries to be rewritten.

The correct constant was retrieved from
https://pax.grsecurity.net/binutils-2.19-pt-pax-flags-200811041810.patch

3 years agoCleanup warnings
Peter Foley [Thu, 28 Apr 2016 00:30:48 +0000 (20:30 -0400)]
Cleanup warnings

Fix a bunch of misc warnings.

[  8%] Building CXX object common/CMakeFiles/common.dir/src/arch-aarch64.C.o
/home/peter/dyninst/common/src/arch-aarch64.C:111:45: warning: unused parameter ‘ptr’ [-Wunused-parameter]
 void instruction::setInstruction(codeBuf_t *ptr, Address) {
                                             ^
/home/peter/dyninst/common/src/arch-aarch64.C:143:40: warning: unused parameter ‘from’ [-Wunused-parameter]
 unsigned instruction::jumpSize(Address from, Address to, unsigned addr_width) {
                                        ^
/home/peter/dyninst/common/src/arch-aarch64.C:143:54: warning: unused parameter ‘to’ [-Wunused-parameter]
 unsigned instruction::jumpSize(Address from, Address to, unsigned addr_width) {
                                                      ^
/home/peter/dyninst/common/src/arch-aarch64.C:143:67: warning: unused parameter ‘addr_width’ [-Wunused-parameter]
 unsigned instruction::jumpSize(Address from, Address to, unsigned addr_width) {
                                                                   ^
/home/peter/dyninst/common/src/arch-aarch64.C:149:40: warning: unused parameter ‘disp’ [-Wunused-parameter]
 unsigned instruction::jumpSize(Address disp, unsigned addr_width) {
                                        ^
/home/peter/dyninst/common/src/arch-aarch64.C:149:55: warning: unused parameter ‘addr_width’ [-Wunused-parameter]
 unsigned instruction::jumpSize(Address disp, unsigned addr_width) {
                                                       ^
In file included from /home/peter/dyninst/common/h/dyn_regs.h:38:0,
                 from /home/peter/dyninst/common/h/dyntypes.h:170,
                 from /home/peter/dyninst/common/src/Types.h:168,
                 from /home/peter/dyninst/common/src/arch-aarch64.C:31:
/home/peter/dyninst/common/src/arch-aarch64.C: In member function ‘unsigned int NS_aarch64::instruction::getBranchTargetReg() const’:
/home/peter/dyninst/common/src/arch-aarch64.C:204:24: warning: comparison of unsigned expression >= 0 is always true [-Wtype-limits]
         assert( regNum >= 0 || regNum <= 30);
                        ^
[ 14%] Building CXX object symtabAPI/CMakeFiles/symtabAPI.dir/src/Function.C.o
/home/peter/dyninst/symtabAPI/src/Function.C:54:36: warning: unused parameter ‘sym’ [-Wunused-parameter]
 FunctionBase::FunctionBase(Symbol *sym) :
                                    ^
/home/peter/dyninst/symtabAPI/src/Function.C:76:36: warning: unused parameter ‘m’ [-Wunused-parameter]
 FunctionBase::FunctionBase(Module *m) :
                                    ^
/home/peter/dyninst/symtabAPI/src/Function.C:475:61: warning: unused parameter ‘isPrimary’ [-Wunused-parameter]
 bool InlinedFunction::addMangledName(std::string name, bool isPrimary)
                                                             ^
/home/peter/dyninst/symtabAPI/src/Function.C:481:60: warning: unused parameter ‘isPrimary’ [-Wunused-parameter]
 bool InlinedFunction::addPrettyName(std::string name, bool isPrimary)
                                                            ^
[ 22%] Building CXX object symtabAPI/CMakeFiles/symtabAPI.dir/src/dwarfWalker.C.o
In file included from /home/peter/dyninst/symtabAPI/src/dwarfWalker.C:31:0:
/home/peter/dyninst/symtabAPI/src/dwarfWalker.h: In constructor ‘Dyninst::SymtabAPI::DwarfWalker::DwarfWalker(Dyninst::SymtabAPI::Symtab*, Dwarf_Debug_s*&)’:
/home/peter/dyninst/symtabAPI/src/dwarfWalker.h:314:14: warning: ‘Dyninst::SymtabAPI::DwarfWalker::compile_offset’ will be initialized after [-Wreorder]
    Dwarf_Off compile_offset;
              ^
/home/peter/dyninst/symtabAPI/src/dwarfWalker.h:292:12: warning:   ‘char** Dyninst::SymtabAPI::DwarfWalker::srcFileList_’ [-Wreorder]
     char** srcFileList_;
            ^
/home/peter/dyninst/symtabAPI/src/dwarfWalker.C:76:1: warning:   when initialized here [-Wreorder]
 DwarfWalker::DwarfWalker(Symtab *symtab, Dwarf_Debug &dbg)
 ^
[ 22%] Building CXX object symtabAPI/CMakeFiles/symtabAPI.dir/src/emitElf-64.C.o
/home/peter/dyninst/symtabAPI/src/emitElf-64.C: In member function ‘bool Dyninst::SymtabAPI::emitElf64<ElfTypes>::driver(std::string) [with ElfTypes = Dyninst::SymtabAPI::ElfTypes32; std::string = std::basic_string<char>]’:
/home/peter/dyninst/symtabAPI/src/emitElf-64.C:868:9: warning: ignoring return value of ‘ssize_t write(int, const void*, size_t)’, declared with attribute warn_unused_result [-Wunused-result]
         write(newfd, &offset, sizeof(Elf_Off));
         ^
/home/peter/dyninst/symtabAPI/src/emitElf-64.C: In member function ‘bool Dyninst::SymtabAPI::emitElf64<ElfTypes>::driver(std::string) [with ElfTypes = Dyninst::SymtabAPI::ElfTypes64; std::string = std::basic_string<char>]’:
/home/peter/dyninst/symtabAPI/src/emitElf-64.C:868:9: warning: ignoring return value of ‘ssize_t write(int, const void*, size_t)’, declared with attribute warn_unused_result [-Wunused-result]
[ 26%] Building CXX object instructionAPI/CMakeFiles/instructionAPI.dir/src/InstructionDecoder-x86.C.o
/home/peter/dyninst/instructionAPI/src/InstructionDecoder-x86.C: In member function ‘bool Dyninst::InstructionAPI::InstructionDecoder_x86::decodeOneOperand(const Dyninst::InstructionAPI::InstructionDecoder::buffer&, const NS_x86::ia32_operand&, int&, const Dyninst::InstructionAPI::Instruction*, bool, bool)’:
/home/peter/dyninst/instructionAPI/src/InstructionDecoder-x86.C:795:12: warning: variable ‘has_vex’ set but not used [-Wunused-but-set-variable]
       bool has_vex = 0;
            ^
[ 27%] Building CXX object instructionAPI/CMakeFiles/instructionAPI.dir/src/InstructionDecoder-aarch64.C.o
In file included from /home/peter/dyninst/instructionAPI/src/InstructionDecoder-aarch64.C:31:0:
/home/peter/dyninst/instructionAPI/src/InstructionDecoder-aarch64.h: In constructor ‘Dyninst::InstructionAPI::InstructionDecoder_aarch64::InstructionDecoder_aarch64(Dyninst::Architecture)’:
/home/peter/dyninst/instructionAPI/src/InstructionDecoder-aarch64.h:387:30: warning: ‘Dyninst::InstructionAPI::InstructionDecoder_aarch64::_Q’ will be initialized after [-Wreorder]
                 unsigned int _Q;
                              ^
/home/peter/dyninst/instructionAPI/src/InstructionDecoder-aarch64.h:239:31: warning:   ‘int Dyninst::InstructionAPI::InstructionDecoder_aarch64::size’ [-Wreorder]
                 int _szField, size;
                               ^
/home/peter/dyninst/instructionAPI/src/InstructionDecoder-aarch64.C:141:5: warning:   when initialized here [-Wreorder]
     InstructionDecoder_aarch64::InstructionDecoder_aarch64(Architecture a)
     ^
/home/peter/dyninst/instructionAPI/src/InstructionDecoder-aarch64.C: In member function ‘Dyninst::InstructionAPI::Expression::Ptr Dyninst::InstructionAPI::InstructionDecoder_aarch64::makeMemRefIndexLiteral()’:
/home/peter/dyninst/instructionAPI/src/InstructionDecoder-aarch64.C:1086:85: warning: ‘rt’ may be used uninitialized in this function [-Wmaybe-uninitialized]
     return makeDereferenceExpression(makeAddExpression(makePCExpr(), label, u64), rt);
                                                                                     ^
[ 27%] Building CXX object parseAPI/CMakeFiles/parseAPI.dir/src/Parser.C.o
/home/peter/dyninst/parseAPI/src/Parser.C: In member function ‘void Dyninst::ParseAPI::Parser::parse_frame(Dyninst::ParseAPI::ParseFrame&, bool)’:
/home/peter/dyninst/parseAPI/src/Parser.C:888:20: warning: variable ‘ce’ set but not used [-Wunused-but-set-variable]
             Edge * ce = NULL;
                    ^
[ 32%] Building CXX object parseAPI/CMakeFiles/parseAPI.dir/src/IA_aarch64Details.C.o
/home/peter/dyninst/parseAPI/src/IA_aarch64Details.C:111:59: warning: unused parameter ‘blockToCheck’ [-Wunused-parameter]
 bool IA_aarch64Details::findTableAddrNoTOC(const IA_IAPI* blockToCheck)
                                                           ^
/home/peter/dyninst/parseAPI/src/IA_aarch64Details.C:136:33: warning: unused parameter ‘e’ [-Wunused-parameter]
   void processPredecessor(Edge* e, std::set<Block*>& visited, std::deque<Block*>& worklist)
                                 ^
/home/peter/dyninst/parseAPI/src/IA_aarch64Details.C:136:54: warning: unused parameter ‘visited’ [-Wunused-parameter]
   void processPredecessor(Edge* e, std::set<Block*>& visited, std::deque<Block*>& worklist)
                                                      ^
/home/peter/dyninst/parseAPI/src/IA_aarch64Details.C:136:83: warning: unused parameter ‘worklist’ [-Wunused-parameter]
   void processPredecessor(Edge* e, std::set<Block*>& visited, std::deque<Block*>& worklist)
                                                                                   ^
/home/peter/dyninst/parseAPI/src/IA_aarch64Details.C:142:81: warning: unused parameter ‘start’ [-Wunused-parameter]
 bool IA_aarch64Details::scanForAdjustOrBase(IA_IAPI::allInsns_t::const_iterator start,
                                                                                 ^
/home/peter/dyninst/parseAPI/src/IA_aarch64Details.C:143:44: warning: unused parameter ‘end’ [-Wunused-parameter]
        IA_IAPI::allInsns_t::const_iterator end,
                                            ^
/home/peter/dyninst/parseAPI/src/IA_aarch64Details.C:144:26: warning: unused parameter ‘jumpAddrReg’ [-Wunused-parameter]
        RegisterAST::Ptr &jumpAddrReg) {
                          ^
/home/peter/dyninst/parseAPI/src/IA_aarch64Details.C:150:75: warning: unused parameter ‘start’ [-Wunused-parameter]
 bool IA_aarch64Details::findTableBase(IA_IAPI::allInsns_t::const_iterator start,
                                                                           ^
/home/peter/dyninst/parseAPI/src/IA_aarch64Details.C:151:45: warning: unused parameter ‘end’ [-Wunused-parameter]
         IA_IAPI::allInsns_t::const_iterator end) {
                                             ^
/home/peter/dyninst/parseAPI/src/IA_aarch64Details.C:159:47: warning: unused parameter ‘currBlk’ [-Wunused-parameter]
 bool IA_aarch64Details::parseJumpTable(Block* currBlk,
                                               ^
/home/peter/dyninst/parseAPI/src/IA_aarch64Details.C:160:59: warning: unused parameter ‘outEdges’ [-Wunused-parameter]
          std::vector<std::pair< Address, EdgeTypeEnum> >& outEdges)
                                                           ^
[ 33%] Building CXX object parseAPI/CMakeFiles/parseAPI.dir/src/BoundFactData.C.o
/home/peter/dyninst/parseAPI/src/BoundFactData.C:604:39: warning: unused parameter ‘b’ [-Wunused-parameter]
 static bool IsInReadOnlyRegion(Block *b, Address low, Address high) {
                                       ^
[ 54%] Building CXX object proccontrol/CMakeFiles/pcontrol.dir/src/loadLibrary/codegen-aarch64.C.o
/home/peter/dyninst/proccontrol/src/loadLibrary/codegen-aarch64.C: In member function ‘bool Dyninst::ProcControlAPI::Codegen::generateCallAARCH64(Dyninst::Address, const std::vector<long unsigned int>&)’:
/home/peter/dyninst/proccontrol/src/loadLibrary/codegen-aarch64.C:53:10: warning: unused variable ‘blr_buf’ [-Wunused-variable]
     char blr_buf[] = {
          ^
[ 56%] Building CXX object proccontrol/CMakeFiles/pcontrol.dir/src/mmapalloc.C.o
/home/peter/dyninst/proccontrol/src/mmapalloc.C: In member function ‘virtual bool mmap_alloc_process::plat_createAllocationSnippet(Dyninst::Address, bool, long unsigned int, void*&, long unsigned int&, long unsigned int&)’:
/home/peter/dyninst/proccontrol/src/mmapalloc.C:597:22: warning: variable ‘addr_size’ set but not used [-Wunused-but-set-variable]
         unsigned int addr_size;
                      ^
[ 56%] Building CXX object proccontrol/CMakeFiles/pcontrol.dir/src/linux.C.o
In file included from /home/peter/dyninst/proccontrol/src/linux.C:48:0:
/home/peter/dyninst/proccontrol/src/linux.C: In member function ‘virtual bool DecoderLinux::decode(Dyninst::ProcControlAPI::ArchEvent*, std::vector<boost::shared_ptr<Dyninst::ProcControlAPI::Event> >&)’:
/home/peter/dyninst/proccontrol/h/PCErrors.h:100:108: warning: format ‘%p’ expects argument of type ‘void*’, but argument 6 has type ‘Dyninst::MachRegisterVal {aka long unsigned int}’ [-Wformat=]
          fprintf(pctrl_err_out, "[%s:%u-%s] - Error: " format, FILE__, __LINE__, thrdName(), ## __VA_ARGS__); \
                                                                                                            ^
/home/peter/dyninst/proccontrol/src/linux.C:341:25: note: in expansion of macro ‘perr_printf’
                         perr_printf("ARM-error: Failed to remove inserted BP, addr %p.\n",
                         ^
/home/peter/dyninst/proccontrol/src/linux.C: In member function ‘virtual bool linux_process::plat_attachWillTriggerStop()’:
/home/peter/dyninst/proccontrol/src/linux.C:1144:42: warning: ignoring return value of ‘int fscanf(FILE*, const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
             &tmpPid, &tmpPid, &ttyNumber);
                                          ^
/home/peter/dyninst/proccontrol/src/linux.C: In member function ‘bool linux_process::readStatM(long unsigned int&, long unsigned int&, long unsigned int&)’:
/home/peter/dyninst/proccontrol/src/linux.C:1927:35: warning: ignoring return value of ‘int fscanf(FILE*, const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
           &text, &lib, &data, &dt);
                                   ^
[ 77%] Building CXX object dyninstAPI/CMakeFiles/dyninstAPI.dir/src/function.C.o
/home/peter/dyninst/dyninstAPI/src/function.C: In member function ‘bool func_instance::createOffsetVector_Symbols()’:
/home/peter/dyninst/dyninstAPI/src/function.C:1205:18: warning: variable ‘bp’ set but not used [-Wunused-but-set-variable]
     MachRegister bp = MachRegister::getFramePointer(arch);
                  ^
/home/peter/dyninst/dyninstAPI/src/function.C: In member function ‘void func_instance::createTMap_internal(StackMod*, StackLocation*, TMap*)’:
/home/peter/dyninst/dyninstAPI/src/function.C:1530:27: warning: variable ‘size’ set but not used [-Wunused-but-set-variable]
     StackAnalysis::Height size = loc->size();
                           ^
[ 95%] Building CXX object dyninstAPI/CMakeFiles/dyninstAPI.dir/src/codegen-x86.C.o
/home/peter/dyninst/dyninstAPI/src/codegen-x86.C: In static member function ‘static bool insnCodeGen::modifyDisp(long int, NS_x86::instruction&, codeGen&, Dyninst::Architecture, Dyninst::Address)’:
/home/peter/dyninst/dyninstAPI/src/codegen-x86.C:1394:13: warning: variable ‘sib_scale_factor’ set but not used [-Wunused-but-set-variable]
         int sib_scale_factor;
             ^
[ 96%] Building CXX object dyninstAPI/CMakeFiles/dyninstAPI.dir/src/linux.C.o
/home/peter/dyninst/dyninstAPI/src/linux.C: In static member function ‘static bool BinaryEdit::getResolvedLibraryPath(const string&, std::vector<std::basic_string<char> >&)’:
/home/peter/dyninst/dyninstAPI/src/linux.C:223:37: warning: ignoring return value of ‘char* fgets(char*, int, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
         fgets(buffer, 512, ldconfig); // ignore first line
                                     ^

3 years agoReduce namespace pollution
Peter Foley [Tue, 26 Apr 2016 21:19:03 +0000 (17:19 -0400)]
Reduce namespace pollution

Remove 'using namespace std' from public header files.
Add it where necessary to internal files.

3 years agoMerge pull request #10 from mcfadden8/ppc64le
Bill Williams [Fri, 6 May 2016 13:51:32 +0000 (08:51 -0500)]
Merge pull request #10 from mcfadden8/ppc64le

ProcControl and Symtab support for ppc64le

3 years agoAdd PPC return registers to ABI class.
Matt Morehouse [Thu, 5 May 2016 16:00:06 +0000 (11:00 -0500)]
Add PPC return registers to ABI class.

3 years agoMerge pull request #12 from pefoley2/travis
Bill Williams [Thu, 5 May 2016 13:34:06 +0000 (08:34 -0500)]
Merge pull request #12 from pefoley2/travis

Add initial file for travis

3 years agoAdd initial file for travis 12/head
Peter Foley [Wed, 4 May 2016 22:40:58 +0000 (18:40 -0400)]
Add initial file for travis

3 years agoChanged interface to getABIVersion() so that it could return 10/head
Marty McFadden [Wed, 4 May 2016 22:21:05 +0000 (15:21 -0700)]
Changed interface to getABIVersion() so that it could return
false for platforms where ABI Version does not apply or is
not known and true otherwise.  The actual major and minor portion
of the ABI is placed in the output parameters passed in the
call.

3 years agocmake: make the c++11 abi configurable, default unset
Josh Stone [Thu, 28 Apr 2016 20:18:08 +0000 (13:18 -0700)]
cmake: make the c++11 abi configurable, default unset

GCC 5 made several ABI changes for C++11 support, but they also kept
support for the older ABI.  The macro _GLIBCXX_USE_CXX11_ABI can force
which mode you compile against.

Fedora 22 shipped with GCC 5 configured to use the old ABI by default,
as if -D_GLIBCXX_USE_CXX11_ABI=0, and Fedora 23 moved to the new ABI.
In either case you could make a different choice with that macro, but
any APIs you expose will be ABI-tagged, and programs you link with must
use the same choice.  For working in a Linux distribution, it's usually
best to leave it at the default.

Commit dbd452640a57 forced the old ABI unconditionally.  This patch adds
a cmake USE_CXX11_ABI setting, left blank to use the compiler default,
or set to a cmake boolean to force the new ABI on or off.

References:
  http://developers.redhat.com/blog/2015/02/05/gcc5-and-the-c11-abi/
  http://developers.redhat.com/blog/2015/02/10/gcc-5-in-fedora/

3 years agoMerge branch 'master' into VEX
John Detter [Wed, 4 May 2016 06:49:02 +0000 (01:49 -0500)]
Merge branch 'master' into VEX

3 years agoFixed issue with null pointer dereference in InstructionAPI
John Detter [Wed, 4 May 2016 05:41:28 +0000 (00:41 -0500)]
Fixed issue with null pointer dereference in InstructionAPI

3 years ago 1) Cmake support for PPC64LE builds
Marty McFadden [Tue, 3 May 2016 21:19:12 +0000 (14:19 -0700)]
 1) Cmake support for PPC64LE builds
 2) Added ABI version and Endianness interface to SymReader and SymtabAPI
 3) Added PPC64LE support for ProcControl and Symtab

3 years agoRemoved extern template class declaration of boost::shared_ptr
Marty McFadden [Tue, 3 May 2016 21:15:14 +0000 (14:15 -0700)]
Removed extern template class declaration of boost::shared_ptr
templates from dyninstAPI in order to stop linker complaints.

3 years agoFixed instruction name typo
John Detter [Mon, 2 May 2016 23:56:10 +0000 (18:56 -0500)]
Fixed instruction name typo

3 years agoSSEB table had an off by one entry -- vblendv[ps, pd] added
John Detter [Mon, 2 May 2016 23:46:56 +0000 (18:46 -0500)]
SSEB table had an off by one entry -- vblendv[ps, pd] added

3 years agoVEX register operands working with am_H, am_V, am_W and am_U
John Detter [Tue, 26 Apr 2016 16:59:31 +0000 (11:59 -0500)]
VEX register operands working with am_H, am_V, am_W and am_U

3 years agoGCC 4.8 build fixes: ensure all extern template declarations are in fact extern'ed...
Bill Williams [Thu, 21 Apr 2016 17:40:12 +0000 (12:40 -0500)]
GCC 4.8 build fixes: ensure all extern template declarations are in fact extern'ed, and suppress unused local typedef warnings (prevalent in boost).

3 years agoWorking on adding higher number register support for am_(X,Y)V
John Detter [Thu, 21 Apr 2016 02:25:08 +0000 (21:25 -0500)]
Working on adding higher number register support for am_(X,Y)V

3 years agoAdded addressing modes into common
John Detter [Thu, 21 Apr 2016 00:49:05 +0000 (19:49 -0500)]
Added addressing modes into common

3 years agoStructural changes to VEX decodings
John Detter [Thu, 21 Apr 2016 00:23:20 +0000 (19:23 -0500)]
Structural changes to VEX decodings

3 years agoRefactoring: add explicit containsAddr() to Block and use it in Loop::containsAddress
Bill Williams [Wed, 20 Apr 2016 14:59:07 +0000 (09:59 -0500)]
Refactoring: add explicit containsAddr() to Block and use it in Loop::containsAddress

3 years agoFix crash-at-exit part 1: TLS static members should not be destroyed in a class destr...
Bill Williams [Wed, 20 Apr 2016 14:58:05 +0000 (09:58 -0500)]
Fix crash-at-exit part 1: TLS static members should not be destroyed in a class destructor.

3 years agoProject building again, patching is complete -- testing
John Detter [Tue, 19 Apr 2016 23:46:58 +0000 (18:46 -0500)]
Project building again, patching is complete -- testing

3 years agoApplied another InstructionDecoder-x86.C patch
John Detter [Tue, 19 Apr 2016 23:31:24 +0000 (18:31 -0500)]
Applied another InstructionDecoder-x86.C patch

3 years agoApplied some patches from local VEX features branch
John Detter [Tue, 19 Apr 2016 23:04:04 +0000 (18:04 -0500)]
Applied some patches from local VEX features branch

3 years agoLots of AVX instructions added/fixed
John Detter [Tue, 19 Apr 2016 22:55:20 +0000 (17:55 -0500)]
Lots of AVX instructions added/fixed

3 years agoExpose endianness from Elf_X.
Bill Williams [Tue, 19 Apr 2016 16:11:23 +0000 (11:11 -0500)]
Expose endianness from Elf_X.

3 years agoVersion goes to 9.2. All independent defines/constants for version should be replaced...
Bill Williams [Tue, 19 Apr 2016 16:10:54 +0000 (11:10 -0500)]
Version goes to 9.2. All independent defines/constants for version should be replaced with version.h values.

3 years agoFix a PPC64 bit of compiler weirdness--signed char must be explicitly specified here.
Bill Williams [Tue, 19 Apr 2016 16:08:22 +0000 (11:08 -0500)]
Fix a PPC64 bit of compiler weirdness--signed char must be explicitly specified here.

3 years agoTemplate instantiation fixes to cover as wide a compiler range as possible.
Bill Williams [Mon, 18 Apr 2016 20:14:22 +0000 (15:14 -0500)]
Template instantiation fixes to cover as wide a compiler range as possible.

3 years agoAdd init_array and fini_array to the list of sections that need library_adjust applie...
Bill Williams [Mon, 18 Apr 2016 18:22:06 +0000 (13:22 -0500)]
Add init_array and fini_array to the list of sections that need library_adjust applied to them.

3 years agoThread safety and delayed destruction for DWARF-derived source file names in SymtabAPI.
Bill Williams [Thu, 14 Apr 2016 16:50:33 +0000 (11:50 -0500)]
Thread safety and delayed destruction for DWARF-derived source file names in SymtabAPI.

3 years agoLoop analysis optimizations and interface cleanup.
Bill Williams [Thu, 14 Apr 2016 16:49:42 +0000 (11:49 -0500)]
Loop analysis optimizations and interface cleanup.

3 years agoFixed more VEX2 table entries
John Detter [Thu, 7 Apr 2016 20:25:44 +0000 (15:25 -0500)]
Fixed more VEX2 table entries

3 years agoFix for operand mode bugs
John Detter [Thu, 7 Apr 2016 20:09:15 +0000 (15:09 -0500)]
Fix for operand mode bugs

3 years agoFixed an issue with vpadd (VEX2) and added more error reporting in arch-x86
John Detter [Wed, 6 Apr 2016 01:50:14 +0000 (20:50 -0500)]
Fixed an issue with vpadd (VEX2) and added more error reporting in arch-x86

3 years agoFix vpadd decoding. Clean up control flow target logic and shared pointer constructio...
Bill Williams [Fri, 8 Apr 2016 15:01:02 +0000 (10:01 -0500)]
Fix vpadd decoding. Clean up control flow target logic and shared pointer construction/return. Fix bits of tail call logic. Fix unsafe string usage in DwarfWalker. Ensure RTlib builds as a dependency of Dyninst so that dyninstAPI and dyninstAPI-install targets work properly.

3 years agoFix tail call bugs:
Xiaozhu Meng [Tue, 5 Apr 2016 19:20:07 +0000 (14:20 -0500)]
Fix tail call bugs:
1. When the jump target is a different function entry and the function entry hasn't been parsed, it is a tail call
2. When the jump target goes into overlapping instructions, print debugging message and it should not be a tail call

When checking whether a function contains a block, if the block is NULL, it should return false

3 years agoFixed InstructionDecoder-x86 opsema masking bug
John Detter [Tue, 5 Apr 2016 19:12:21 +0000 (14:12 -0500)]
Fixed InstructionDecoder-x86 opsema masking bug

3 years agoTemporary patch for isTailCall bug -- will be revisited
John Detter [Tue, 5 Apr 2016 04:12:44 +0000 (23:12 -0500)]
Temporary patch for isTailCall bug -- will be revisited

3 years agoRemoved some asserts that should return invalid instruction instead
John Detter [Thu, 31 Mar 2016 23:18:26 +0000 (18:18 -0500)]
Removed some asserts that should return invalid instruction instead

3 years agoApplied Xiaozhu's patch (Fixed unknown register class error)
John Detter [Thu, 31 Mar 2016 23:09:52 +0000 (18:09 -0500)]
Applied Xiaozhu's patch (Fixed unknown register class error)

3 years agoLots of improvements:
John Detter [Tue, 29 Mar 2016 21:03:00 +0000 (16:03 -0500)]
Lots of improvements:
 - Added some AVX512 patch work from newer versions
 - Fixed some VEX2/VEX3 decoding table entries
 - Instruction decoder bug fixes for AVX512

3 years agoThread safety and memory improvements
Bill Williams [Wed, 6 Apr 2016 15:56:55 +0000 (10:56 -0500)]
Thread safety and memory improvements

3 years agoInitial gcc5 support (force old ABI for compatiblity with existing libelf/libdwarf...
Bill Williams [Wed, 6 Apr 2016 15:55:05 +0000 (10:55 -0500)]
Initial gcc5 support (force old ABI for compatiblity with existing libelf/libdwarf builds)

3 years agoFixed assert failure that gets triggered when processing non instructions
John Detter [Mon, 28 Mar 2016 20:46:39 +0000 (15:46 -0500)]
Fixed assert failure that gets triggered when processing non instructions

3 years agoAdded support for new SHA-512 instructions
John Detter [Mon, 7 Mar 2016 18:44:26 +0000 (12:44 -0600)]
Added support for new SHA-512 instructions

3 years agoSome VEX512 instructions decoded
John Detter [Thu, 3 Mar 2016 23:59:19 +0000 (17:59 -0600)]
Some VEX512 instructions decoded

3 years agoImplemented a ton of EVEX instructions
John Detter [Tue, 1 Mar 2016 13:57:20 +0000 (07:57 -0600)]
Implemented a ton of EVEX instructions

3 years agoNew tables are imported with no build problems -- testing
John Detter [Tue, 1 Mar 2016 10:28:14 +0000 (04:28 -0600)]
New tables are imported with no build problems -- testing

3 years agoAbout to replace all of the tables with autogenerated tables (again)
John Detter [Tue, 1 Mar 2016 10:06:51 +0000 (04:06 -0600)]
About to replace all of the tables with autogenerated tables (again)

3 years agoSSEB map autogenerated
John Detter [Tue, 1 Mar 2016 09:33:04 +0000 (03:33 -0600)]
SSEB map autogenerated

3 years agoSSE enum autogenerated
John Detter [Tue, 1 Mar 2016 09:26:27 +0000 (03:26 -0600)]
SSE enum autogenerated

3 years agoAbout to add all EVEX instructions
John Detter [Tue, 1 Mar 2016 09:13:06 +0000 (03:13 -0600)]
About to add all EVEX instructions

3 years agoWeird issue with adding properties to prefix class
John Detter [Tue, 1 Mar 2016 06:48:25 +0000 (00:48 -0600)]
Weird issue with adding properties to prefix class

3 years agoVEX2 and VEX3 prefixed instructions should be implemented
John Detter [Tue, 23 Feb 2016 16:32:37 +0000 (10:32 -0600)]
VEX2 and VEX3 prefixed instructions should be implemented

3 years agoAdded SSETER map stubs -- untested
John Detter [Sat, 20 Feb 2016 00:06:06 +0000 (18:06 -0600)]
Added SSETER map stubs -- untested

3 years agoAdded SSEBIS map autogenerated stubs
John Detter [Fri, 19 Feb 2016 23:54:42 +0000 (17:54 -0600)]
Added SSEBIS map autogenerated stubs

3 years agoAdding autogenerated stubs -- untested
John Detter [Fri, 19 Feb 2016 23:34:41 +0000 (17:34 -0600)]
Adding autogenerated stubs -- untested

3 years agoAbout to import output from generation script
John Detter [Thu, 18 Feb 2016 22:54:21 +0000 (16:54 -0600)]
About to import output from generation script

3 years agoAdded support for about 50 new AVX-512 instructions
John Detter [Fri, 5 Feb 2016 03:18:11 +0000 (21:18 -0600)]
Added support for about 50 new AVX-512 instructions

3 years agoAdded mneumonics for new VEX2 and VEX3 instructions
John Detter [Tue, 2 Feb 2016 15:37:03 +0000 (09:37 -0600)]
Added mneumonics for new VEX2 and VEX3 instructions

3 years agoAll AVX and AVX2 Series instructions (included 4 op) decoded
John Detter [Sun, 31 Jan 2016 22:26:28 +0000 (16:26 -0600)]
All AVX and AVX2 Series instructions (included 4 op) decoded

3 years agoCan now understand basic 4 operand VEX instructions
John Detter [Tue, 26 Jan 2016 02:39:08 +0000 (20:39 -0600)]
Can now understand basic 4 operand VEX instructions

3 years agoAll of the working instructions have
John Detter [Thu, 21 Jan 2016 22:46:39 +0000 (16:46 -0600)]
All of the working instructions have

3 years agoMoved as many VEX3 instructions into the sse tables as possible
John Detter [Wed, 20 Jan 2016 03:31:31 +0000 (21:31 -0600)]
Moved as many VEX3 instructions into the sse tables as possible

3 years agovpermilps instruction length fixed
John Detter [Wed, 13 Jan 2016 22:18:42 +0000 (16:18 -0600)]
vpermilps instruction length fixed

3 years agovpermpd and vpermq fixed
John Detter [Wed, 13 Jan 2016 22:12:16 +0000 (16:12 -0600)]
vpermpd and vpermq fixed

3 years agoAdded support for the 2 different operand modes for v[p]maskmov[p,s] instructions
John Detter [Wed, 13 Jan 2016 21:40:02 +0000 (15:40 -0600)]
Added support for the 2 different operand modes for v[p]maskmov[p,s] instructions

3 years agoDyninst can now use am_H addressing mode
John Detter [Tue, 12 Jan 2016 19:24:51 +0000 (13:24 -0600)]
Dyninst can now use am_H addressing mode

3 years agoStarting more in depth testing
John Detter [Tue, 12 Jan 2016 12:59:47 +0000 (06:59 -0600)]
Starting more in depth testing

3 years agoSome AVX, AVX2 instructions have operands decoded
John Detter [Mon, 4 Jan 2016 22:47:54 +0000 (16:47 -0600)]
Some AVX, AVX2 instructions have operands decoded

3 years agoSome VEX instructions have operands decoded
John Detter [Wed, 30 Dec 2015 23:54:44 +0000 (17:54 -0600)]
Some VEX instructions have operands decoded

3 years agoStarted working on VEX operand decoding.
John Detter [Wed, 30 Dec 2015 05:08:39 +0000 (23:08 -0600)]
Started working on VEX operand decoding.

3 years agoAVX and AVX2 decoded (working on decoding opcodes)
John Detter [Wed, 30 Dec 2015 02:07:41 +0000 (20:07 -0600)]
AVX and AVX2 decoded (working on decoding opcodes)

3 years agoProject building
John Detter [Mon, 28 Dec 2015 07:40:56 +0000 (01:40 -0600)]
Project building

3 years agoVEX2 and VEX3 now have their own tables
John Detter [Mon, 28 Dec 2015 05:47:45 +0000 (23:47 -0600)]
VEX2 and VEX3 now have their own tables

3 years agoDyninst can now recognize about 50 VEX instructions
John Detter [Wed, 23 Dec 2015 02:22:22 +0000 (20:22 -0600)]
Dyninst can now recognize about 50 VEX instructions

3 years agoICC sample works
Bill Williams [Fri, 23 Oct 2015 19:58:54 +0000 (14:58 -0500)]
ICC sample works

3 years agoInitial VEX prefix work.
Bill Williams [Thu, 22 Oct 2015 18:30:20 +0000 (13:30 -0500)]
Initial VEX prefix work.

4 years agoAdded partial support for previously undocumented instructions (unstable)
John Detter [Thu, 7 Apr 2016 21:44:47 +0000 (16:44 -0500)]
Added partial support for previously undocumented instructions (unstable)

4 years agoFixed more VEX2 table entries
John Detter [Thu, 7 Apr 2016 20:25:44 +0000 (15:25 -0500)]
Fixed more VEX2 table entries

4 years agoFix for operand mode bugs
John Detter [Thu, 7 Apr 2016 20:09:15 +0000 (15:09 -0500)]
Fix for operand mode bugs