Sunny Shah [Tue, 7 Jun 2016 19:21:19 +0000 (14:21 -0500)]
Support for conversion from Instruction API objects to Rose SgAsmInstruction objects for ARMv8
This commit is the first in a branch that will contain all changes for enabling the conversion from ARMv8 Instruction API objects to SgAsmInstruction objects. Since ROSE doesn't support ARMv8, the instruction representation for it has been added by extending SgAsmInstruction. getROSERegister is also modified to map Dyninst registers to ROSE ARMv8 registers, which have again been newly added and are defined in the armv8InstructionEnum file. ROSE instruction factory for ARMv8 does not perform any processing to Instruction API operands when performing the conversion (unlike x86 and Power) -- this is primarily because there is no existing ARMv8 semantics to conform to.
This commit also brings in lots of changes to the ROSE interface for representing an instruction and its parts:
* SgAsm*ValueExpression types are now replaces with SgAsm(Integer/Float)ValueExpression types; SgAsmType* have been replaced by SgAsmType(Integer/Float). The old classes remain to support the existing x86/Power semantics.
* Several changes are made to the classes that were already present. These changes support existing semantics and will also work for ARMv8.
* New classes have been added for representation of expressions.
* Several classes in the Sawyer namespace of ROSE have been added -- these are used in the newly introduced Sg* classes, and will also be used for ARM semantics.
* ROSE's new representation for registers uses RegisterDescriptor and a new class for register expressions (SgAsmDirectRegisterExoression).
* The new types are used based on a check on the architecture.
* Opcodes for ARMv8 have the same name in ROSE as in Dyninst, except that the name is prefixed by the string "rose_".
John Detter [Tue, 24 May 2016 17:06:22 +0000 (12:06 -0500)]
Merge branch 'master' into VEX
John Detter [Mon, 23 May 2016 20:09:03 +0000 (15:09 -0500)]
Small InstructionAPI refactoring
John Detter [Mon, 23 May 2016 18:23:08 +0000 (13:23 -0500)]
Masking registers are now part of the operand list
John Detter [Mon, 23 May 2016 16:57:34 +0000 (11:57 -0500)]
Small VEX bug fixes found by Nathan
Sunny Shah [Fri, 20 May 2016 20:55:29 +0000 (15:55 -0500)]
Use the new immediate types for condition codes and prefetch operation types.
Sunny Shah [Fri, 20 May 2016 20:52:29 +0000 (15:52 -0500)]
Support custom formatting for ARM64 operand that specifies the prefetch type for the PRFM instruction and ARM64 operands that correspond to a condition code:
* The 18 prefetch types that can appear in the first operand of the PRFM instructions should be printed as their string representation (as provided in the manual), and not as the raw immediate values.
ArmPrfmTypeImmediate extends Immediate to have a custom formatting method that uses a map to get the string representation, while keeping the rest of the functionality same as the base class.
* The 16 condition codes that can appear in conditional instructions should be printed as their two-letter representation (as provided in the manual), and not as the raw immediate values.
ArmConditionImmediate extends Immediate to have a custom formatting method that uses a map to get the condition code string representation, while keeping the rest of the functionality same as the base class.
Sunny Shah [Wed, 11 May 2016 22:46:40 +0000 (17:46 -0500)]
Fixes to correctly handle aliases in the conditional select instruction category.
This includes changes to the instruction and decoder tables: all instructions in this category map to either CSINC, CSINV, CSNEG or CSEL and the correct alias is applied when handling one of these instructions. One or more of the source registers may need to be skipped for processing when the alias is applied, and the condition code should accordingly be modified.
Sunny Shah [Tue, 26 Apr 2016 23:25:52 +0000 (18:25 -0500)]
Fixes for correctly handling aliases of the UBFM instruction to LSL and LSR.
Sunny Shah [Tue, 26 Apr 2016 21:41:26 +0000 (16:41 -0500)]
Reformatted the ARM64 decoder code to have consistent braaces, indents and line spacing.
Sunny Shah [Tue, 26 Apr 2016 21:35:27 +0000 (16:35 -0500)]
Further fixes for correctly aliasing bfm, sbfm and ubfm to the signed/unsigned extending variants. Also included the fix to use the zero register when the register encoding is 31 and stack pointer is not expected.
Sunny Shah [Tue, 26 Apr 2016 18:35:49 +0000 (13:35 -0500)]
Fixed aliasing of the bfm, sbfm and ubfm bitfield instructions to their correct variants
Sunny Shah [Sat, 16 Apr 2016 21:28:52 +0000 (16:28 -0500)]
Fixes to correctly handle stack pointer in the first source register field
The first source register register can be SP only under certain conditions which had not been enforced. This is fixed now.
Sunny Shah [Fri, 15 Apr 2016 22:35:24 +0000 (17:35 -0500)]
Fixes to correctly handle stack pointer in the destination register field
The destination register can be SP only under certain conditions which had not been enforced. This is fixed now.
Sunny Shah [Thu, 14 Apr 2016 17:26:58 +0000 (12:26 -0500)]
Fixes for load/store unsigned immediate instructions
The immediate in these instructions needs to be left shifted by 4 if size is 0 and high bit of opc is 1.
Sunny Shah [Thu, 14 Apr 2016 16:43:58 +0000 (11:43 -0500)]
Decoder table modifications to detect LD*R instructions.
New entries have been added to the decoder to distinguish between LD1 and LD1R, LD2 and LD2R, LD3 and LD3R and LD4 and LD4R.
Sunny Shah [Tue, 5 Apr 2016 21:14:49 +0000 (16:14 -0500)]
Added definition of a single register representing all implementation defined system registers
All s3... named implementation defined system registers will flatten to this register for now.
Sunny Shah [Tue, 5 Apr 2016 21:14:00 +0000 (16:14 -0500)]
Correctly handle left shift and 64-bit sign extension for PC relative addressing instructions (ADR and ADRP)
Sunny Shah [Tue, 5 Apr 2016 18:24:18 +0000 (13:24 -0500)]
The entire set of implementation defined system registers for ARM64 will flatten to a single register named "IMPLEMENTATION_DEFINED_SYSREG".
Sunny Shah [Mon, 4 Apr 2016 21:55:55 +0000 (16:55 -0500)]
System register definitions for ARM64
Added a new file containing the macro definitions for all ARM64 system registers
Sunny Shah [Mon, 4 Apr 2016 21:51:06 +0000 (16:51 -0500)]
Replaced hyphens in system register names with underscores.
Sunny Shah [Fri, 1 Apr 2016 20:16:06 +0000 (15:16 -0500)]
System register map supports all system registers
Prior to this commit, only EL0 accessible system registers were detected by InstructionAPI. With this commit, registers accessible at all 4 levels will be detected.
Sunny Shah [Fri, 1 Apr 2016 18:44:25 +0000 (13:44 -0500)]
Max index for system registers that have multiple registers of the same name but different indices should be 30, if the index field is 5 bits.
Sunny Shah [Fri, 1 Apr 2016 18:40:59 +0000 (13:40 -0500)]
Generating output for system register declarations in the dyn_regs header
The Python script that parses system register XMLs now generates the code that needs to be added to dyn_regs.h for register declarations.
This also required the computation of register sizes from the XMLs.
Sunny Shah [Fri, 1 Apr 2016 18:22:48 +0000 (13:22 -0500)]
Python script to generate system register names and encodings from the XML files
The newly added script reads and parses the XML files for the ARM64 system registers and generates the equivalent entries for the system register map, with the mapping from the register encodings to their names.
Josh Stone [Fri, 20 May 2016 21:15:57 +0000 (14:15 -0700)]
Fix uninitialized data in rewriter elf_update (#54)
Valgrind complained of uninitialized data in pwrite during elf_update.
Using --track-origins=yes found three origins to fix:
- trap_mapping_header has a padding field that was unset. Use memset on
the whole thing to be sure it's fully initialized.
- Parts of .dyninstInst may not be written due to gaps from inferior
realloc or free. Use calloc to initially zero this buffer.
- The new dynstr section leaves a byte of padding between the old and
new data, but did not set it. Make that NUL.
John Detter [Thu, 19 May 2016 15:38:35 +0000 (10:38 -0500)]
Merge branch 'master' into VEX
John Detter [Thu, 19 May 2016 15:37:54 +0000 (10:37 -0500)]
Fixed misparsed group instructions
John Detter [Thu, 19 May 2016 14:51:20 +0000 (09:51 -0500)]
Backed off symtab change
John Detter [Wed, 18 May 2016 23:54:05 +0000 (18:54 -0500)]
Small bug/instrution fixes.
John Detter [Tue, 17 May 2016 19:00:29 +0000 (14:00 -0500)]
Added a variety of instructions including non-volatile memory (prefetch).
Bill Williams [Mon, 16 May 2016 17:22:24 +0000 (12:22 -0500)]
Merge 9.2 branch back to master (#51)
* Configuration changes: add BUILD_RTLIB and BUILD_DOCS options.
* Skeleton of DataflowAPI manual.
* Handle strings safely in STABS debug info. Thanks to Laksono Adhianto at Rice for the bug report.
* 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/
* Add PPC return registers to ABI class.
* Write StackAnalysis section.
* Skeleton of DataflowAPI manual.
* Handle strings safely in STABS debug info. Thanks to Laksono Adhianto at Rice for the bug report.
* Remove all unneeded extern template class declarations.
* Configuration changes: add BUILD_RTLIB and BUILD_DOCS options.
John Detter [Sat, 14 May 2016 02:15:22 +0000 (21:15 -0500)]
More small VEX instruction fixes
John Detter [Fri, 13 May 2016 22:55:23 +0000 (17:55 -0500)]
Fixed vmread/vmwrite
John Detter [Fri, 13 May 2016 22:24:12 +0000 (17:24 -0500)]
group map VEX instructions have much cleaner decoding.
John Detter [Fri, 13 May 2016 21:48:39 +0000 (16:48 -0500)]
Merge branch 'master' into VEX
John Detter [Fri, 13 May 2016 21:48:32 +0000 (16:48 -0500)]
Merge branch 'master' of github.com/dyninst/dyninst
John Detter [Fri, 13 May 2016 21:48:10 +0000 (16:48 -0500)]
Fixing some VEX instruction bugs
Bill Williams [Fri, 13 May 2016 21:01:02 +0000 (16:01 -0500)]
fix#48 (#49)
* Fix broken conditional.
* Fix broken conditional.
Josh Stone [Fri, 13 May 2016 19:59:59 +0000 (15:59 -0400)]
symtabAPI: don't free cuDIE in parseLineInfoForCU (#47)
The cuDIE in parseLineInfoForCU is a parameter, so it shouldn't act like
it owns this. But it was calling dwarf_dealloc when that CU had no line
info, which led to a double-free crash when the callers tried to free
that cuDIE itself. Just return and let the proper owner do it.
The double-free was easily reproducible on Fedora 23 x86_64, test1_30.
Bill Williams [Fri, 13 May 2016 19:58:24 +0000 (14:58 -0500)]
Merge pull request #46 from cuviper/symtab-spam
symtabAPI: comment out some debug chatter
John Detter [Fri, 13 May 2016 19:35:44 +0000 (14:35 -0500)]
Merge branch 'master' into VEX
John Detter [Fri, 13 May 2016 19:35:36 +0000 (14:35 -0500)]
Merge branch 'master' of github.com/dyninst/dyninst
John Detter [Fri, 13 May 2016 19:35:04 +0000 (14:35 -0500)]
Minor Refactoring
Josh Stone [Fri, 13 May 2016 18:20:33 +0000 (11:20 -0700)]
symtabAPI: comment out some debug chatter
These cout writes were added by commit
758aa22669b4a, but we don't want
such output in general use.
John Detter [Thu, 12 May 2016 19:07:47 +0000 (14:07 -0500)]
Implemented rdrand instruction. Now having issue with a LOCK prefixed instruction (sub)
Bill Williams [Thu, 12 May 2016 18:39:34 +0000 (13:39 -0500)]
Merge pull request #43 from cuviper/ptrace-shush
Remove low-level warnings from ptrace read/write failures
Josh Stone [Tue, 10 May 2016 21:06:43 +0000 (14:06 -0700)]
Remove low-level warnings from ptrace read/write failures
The error cases all return false anyway, so the caller can deal with
failure, which makes this stderr chatter just spam.
Fixes #36.
Bill Williams [Thu, 12 May 2016 17:51:40 +0000 (12:51 -0500)]
Merge pull request #42 from wrwilliams/master
Recover from a bad force push.
William Williams [Thu, 12 May 2016 16:23:44 +0000 (09:23 -0700)]
Fix compile errors
Bill Williams [Thu, 12 May 2016 15:31:28 +0000 (10:31 -0500)]
Fix old ppc32/ppc64 hacks, and instead use the right architecture always.
John Detter [Wed, 11 May 2016 20:28:01 +0000 (15:28 -0500)]
Merge branch 'master' into VEX
John Detter [Wed, 11 May 2016 19:27:58 +0000 (14:27 -0500)]
Fixed issue with REP/REPZ decodings
John Detter [Wed, 11 May 2016 18:18:37 +0000 (13:18 -0500)]
Fixed some issues that the table verifier found
Bill Williams [Tue, 10 May 2016 23:29:27 +0000 (18:29 -0500)]
Merge pull request #39 from cuviper/ptrace-shush
Remove low-level warnings from ptrace read/write failures
John Detter [Tue, 10 May 2016 21:29:54 +0000 (16:29 -0500)]
Fixed build problems caused by merge
John Detter [Tue, 10 May 2016 21:23:16 +0000 (16:23 -0500)]
Fixed a lot of issues caused by merge
Josh Stone [Tue, 10 May 2016 21:06:43 +0000 (14:06 -0700)]
Remove low-level warnings from ptrace read/write failures
The error cases all return false anyway, so the caller can deal with
failure, which makes this stderr chatter just spam.
Fixes #36.
John Detter [Tue, 10 May 2016 20:22:22 +0000 (15:22 -0500)]
Fixed merge issue
Bill Williams [Tue, 10 May 2016 19:30:43 +0000 (14:30 -0500)]
Merge pull request #2 from dyninst/master
Updating from main repo
John Detter [Tue, 10 May 2016 19:17:27 +0000 (14:17 -0500)]
Merge branch 'master' 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
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
Peter Foley [Thu, 5 May 2016 13:47:36 +0000 (09:47 -0400)]
use travis to test clang
Peter Foley [Thu, 5 May 2016 01:30:15 +0000 (21:30 -0400)]
Allow dyninst to be compiled using clang
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
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
Marty McFadden [Fri, 6 May 2016 18:49:02 +0000 (11:49 -0700)]
Fixed compiler warnings about unused arguments.
Peter Foley [Fri, 6 May 2016 18:07:35 +0000 (14:07 -0400)]
Fix #23, build failure on PPC64le
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).
Bill Williams [Fri, 6 May 2016 17:09:16 +0000 (12:09 -0500)]
Merge pull request #11 from pefoley2/cleanup
Misc fixes and improvements
John Detter [Fri, 6 May 2016 15:39:39 +0000 (10:39 -0500)]
Fixed MMX assert issue, new issue with dyninstAPI/src/binaryEdit.C
Peter Foley [Fri, 6 May 2016 03:19:24 +0000 (23:19 -0400)]
add code sample to fix doc build
Peter Foley [Thu, 5 May 2016 23:34:50 +0000 (19:34 -0400)]
fix cmake 3.5 warnings
Peter Foley [Wed, 4 May 2016 22:35:35 +0000 (18:35 -0400)]
fix parseThat warnings
Peter Foley [Sun, 1 May 2016 18:56:01 +0000 (14:56 -0400)]
build and install parseThat with cmake
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
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
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
^
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.
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
Matt Morehouse [Thu, 5 May 2016 16:00:06 +0000 (11:00 -0500)]
Add PPC return registers to ABI class.
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
Peter Foley [Wed, 4 May 2016 22:40:58 +0000 (18:40 -0400)]
Add initial file for travis
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.
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/
John Detter [Wed, 4 May 2016 06:49:02 +0000 (01:49 -0500)]
Merge branch 'master' into VEX
John Detter [Wed, 4 May 2016 05:41:28 +0000 (00:41 -0500)]
Fixed issue with null pointer dereference in InstructionAPI
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
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.
John Detter [Mon, 2 May 2016 23:56:10 +0000 (18:56 -0500)]
Fixed instruction name typo
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
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
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).
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
John Detter [Thu, 21 Apr 2016 00:49:05 +0000 (19:49 -0500)]
Added addressing modes into common
John Detter [Thu, 21 Apr 2016 00:23:20 +0000 (19:23 -0500)]
Structural changes to VEX decodings
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
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.
John Detter [Tue, 19 Apr 2016 23:46:58 +0000 (18:46 -0500)]
Project building again, patching is complete -- testing