19 months agoMerge pull request #543 from dyninst/ppcle_rhel8_fix
Xiaozhu Meng [Wed, 6 Feb 2019 22:07:01 +0000 (16:07 -0600)]
Merge pull request #543 from dyninst/ppcle_rhel8_fix

Ppcle rhel8 fix

19 months agoFix several bugs in common/src/pathName.C
Tim Haines [Tue, 5 Feb 2019 19:31:10 +0000 (13:31 -0600)]
Fix several bugs in common/src/pathName.C

1. Tilde expansion is done _before_ the existence check.
Since `stat` does not do shell expansions, resolve_file_path("~")
    always returned an empty string instead of the expanded path.

2. Tilde detection logic was inverted

3. Remove possible buffer overflow when making path relative to CWD

ADDED features:

1. Removes leading and trailing whitespace

2. Add basic support for Windows file system by using Boost::filesystem
Expansion of Windows-specific shell variables, e.g. %HOME%, is _not_

3. Leverage move semantics to reduce copying
This reduces the maximum number of string copies from 5 to 3. When
resolve_file_path is invoked with an r-value, there are only two

19 months agoAdjust Dyninst to support injecting CFGs for CUBINs
Keren Zhou [Mon, 4 Feb 2019 19:17:52 +0000 (13:17 -0600)]
Adjust Dyninst to support injecting CFGs for CUBINs

See PR #530 for details.

19 months agoAdd some explicit casts from boost::tribool to bool for some code in (#541)
Mark W. Krentel [Fri, 1 Feb 2019 19:14:11 +0000 (13:14 -0600)]
Add some explicit casts from boost::tribool to bool for some code in (#541)

Add some explicit casts from boost::tribool to bool for some code in dataflowAPI/rose/util/Message.[Ch].  This was breaking the build when using boost >= 1.69.

19 months agoDo not generate new PLTs for IFUNC when rewriting statically linked 543/head
Xiaozhu Meng [Wed, 30 Jan 2019 20:53:08 +0000 (14:53 -0600)]
Do not generate new PLTs for IFUNC when rewriting statically linked
binaries on x86. IFUNC should be handled by the loader, not the
linker, which is Dyninst when rewriting statically linked binaries.

19 months agoMore fixes on ppcle rewriting of statically linked binaries
Xiaozhu Meng [Wed, 30 Jan 2019 19:46:16 +0000 (19:46 +0000)]
More fixes on ppcle rewriting of statically linked binaries

1. Revert the change made in "760bfda6e409b4b61a6acd093548afa5860b4af1" about undefined symbols.
Section with number 0 is NULL section, not .bss. So, symbols with section number 0 are indeed
undefined symbols.
2. libc.a depends on libgcc.a on fedora 28 ppcle. So, also open libgcc.a to resolve undefined symbols.
3. Fix the handling of relocation entry "R_PPC64_REL24". R_PPC64_REL24 means the caller has set
up R2, so we should call the local entry point. Calling the global entry may lead to wrong r2, because
r12 is not properly set at the call site.
4. IFUNC should not be treated as a need for PLT.

19 months agoFix crash caused by erasing an iterator from a std::map while looping the iterator
Xiaozhu Meng [Tue, 29 Jan 2019 04:07:53 +0000 (04:07 +0000)]
Fix crash caused by erasing an iterator from a std::map while looping the iterator

19 months agoA couple fixes for binary rewriting of statically linked binaries on ppcle
Xiaozhu Meng [Tue, 29 Jan 2019 00:38:39 +0000 (00:38 +0000)]
A couple fixes for binary rewriting of statically linked binaries on ppcle

1. The handling of the libc global constructor and destructor is out-of-date. Follow the handling for x86-64.
2. Replace [] operator with insert() for std::map. [] operator caused weird memory corruptions
3. Symbols defined in .bss sections should not be considered undefined symbosl
4. Add and fix handling for a couple of ppc64 relocation entries

19 months agoThese functions were moved to the Emitter class.
Sasha Nicolas [Thu, 24 Jan 2019 18:09:35 +0000 (12:09 -0600)]
These functions were moved to the Emitter class.

19 months agoMerge pull request #537 from hainest/remove_ci
Tim Haines [Thu, 24 Jan 2019 17:02:57 +0000 (11:02 -0600)]
Merge pull request #537 from hainest/remove_ci

Remove Travis and AppVeyor CI

19 months agoMerge pull request #539 from hainest/gitignore_eclipse
Tim Haines [Thu, 24 Jan 2019 16:59:19 +0000 (10:59 -0600)]
Merge pull request #539 from hainest/gitignore_eclipse

Ignore Eclipse settings files and folders

19 months agoIgnore Eclipse settings files and folders 539/head
Tim Haines [Thu, 24 Jan 2019 15:42:56 +0000 (09:42 -0600)]
Ignore Eclipse settings files and folders

19 months agoRemove Travis and AppVeyor CI 537/head
Tim Haines [Wed, 23 Jan 2019 23:31:16 +0000 (17:31 -0600)]
Remove Travis and AppVeyor CI

This will be replaced with the Gitlab CI

19 months agofix missing installation of libdw when installing elfutils
rafzi [Tue, 22 Jan 2019 14:23:41 +0000 (15:23 +0100)]
fix missing installation of libdw when installing elfutils

20 months agoMerge branch 'fix_elf_h'
Sasha @leela [Tue, 15 Jan 2019 23:42:59 +0000 (17:42 -0600)]
Merge branch 'fix_elf_h'

20 months agoMerge pull request #516 from jmellorcrummey/fix-linemap
Xiaozhu Meng [Tue, 15 Jan 2019 21:11:57 +0000 (15:11 -0600)]
Merge pull request #516 from jmellorcrummey/fix-linemap

Fix linemaps for CUBINs

20 months agoMerge pull request #528 from dyninst/ppc_pc_fix
Xiaozhu Meng [Tue, 15 Jan 2019 20:29:09 +0000 (14:29 -0600)]
Merge pull request #528 from dyninst/ppc_pc_fix

Ppc pc fix

20 months agoMerge pull request #518 from stanfordcox/scox/includes
Xiaozhu Meng [Tue, 15 Jan 2019 19:13:42 +0000 (13:13 -0600)]
Merge pull request #518 from stanfordcox/scox/includes

Don't use system header <> syntax for dyninst includes

20 months agoRemove asserts that cause test failures 528/head
Xiaozhu Meng [Tue, 15 Jan 2019 16:43:26 +0000 (10:43 -0600)]
Remove asserts that cause test failures

20 months agoFix a non-deterministic hang in test_thread_5
Xiaozhu Meng [Sat, 12 Jan 2019 20:05:12 +0000 (14:05 -0600)]
Fix a non-deterministic hang in test_thread_5

When the mutator stops the mutatee, the mutator will wait for
all the threads in the mutatee to stop by counting the number
of STOP events. If one of the thread exited, there will be no
STOP comeing back.

When a pre-exit event is handled, if the thread has pending stop
to be waited, we should no longer wait for this thread.

20 months agoMoving funtion emitElfUtils::updateRelocation to specific platform fix_elf_h
Sasha @leela [Fri, 11 Jan 2019 00:54:16 +0000 (18:54 -0600)]
Moving funtion emitElfUtils::updateRelocation to specific platform
files, since this function uses machine specific macros from elf.h

20 months agoMerge branch 'master' into ARMv8
Sasha @leela [Thu, 10 Jan 2019 22:21:31 +0000 (16:21 -0600)]
Merge branch 'master' into ARMv8

20 months agoMerge branch 'ARMv8' of https://github.com/dyninst/dyninst into ARMv8
Sasha @leela [Thu, 10 Jan 2019 22:19:47 +0000 (16:19 -0600)]
Merge branch 'ARMv8' of https://github.com/dyninst/dyninst into ARMv8

20 months agoRealized effective address calculation, but still need debugging as the result is...
Yuhan Xie [Thu, 10 Jan 2019 13:58:38 +0000 (07:58 -0600)]
Realized effective address calculation, but still need debugging as the result is not always correct.

20 months agoCleaned up power_opcode_table.C, revised several duplications.
Yuhan Xie [Thu, 10 Jan 2019 12:38:11 +0000 (06:38 -0600)]
Cleaned up power_opcode_table.C, revised several duplications.
Some old instructions was not deleted in the previous release, which would cause the new instructions with the same opcode futile.
All duplications has been revised but two special duos (mfocrf & mfcr, fcfids & fcfid)

20 months agoFix on x86-64 the mov instruction for register of 16-bit size.
Sasha Nicolas [Fri, 4 Jan 2019 00:22:50 +0000 (18:22 -0600)]
Fix on x86-64 the mov instruction for register of 16-bit size.
The opcode 89h is for both 32-bit and 16-bit but to use
the 16-bit version it's necessary to add an operand-size prefix
byte of value 66h.
Test snip_ref_shlib_var now passing on x86-64 linux.

20 months agoMerge branch 'ARMv8' of https://github.com/dyninst/dyninst into ARMv8
Sasha @leela [Fri, 28 Dec 2018 20:15:35 +0000 (14:15 -0600)]
Merge branch 'ARMv8' of https://github.com/dyninst/dyninst into ARMv8

20 months agoMerge branch 'master' into ARMv8
Sasha @leela [Fri, 28 Dec 2018 20:15:28 +0000 (14:15 -0600)]
Merge branch 'master' into ARMv8

20 months agofmt mixed-indented line changes to space-indented
LER0ever [Thu, 27 Dec 2018 06:49:50 +0000 (00:49 -0600)]
fmt mixed-indented line changes to space-indented

20 months agoimplement params ref for more than 8 args for AArch64
LER0ever [Thu, 27 Dec 2018 06:45:48 +0000 (00:45 -0600)]
implement params ref for more than 8 args for AArch64
test1_36 now passes on ARMv8

21 months agoGenerating Load and Store of 1, 2, 4 or 8 bytes
Sasha @leela [Sat, 22 Dec 2018 01:35:40 +0000 (19:35 -0600)]
Generating Load and Store of 1, 2, 4 or 8 bytes
for general purpose registers.
The function generateMemAccess32or64 has been renamed
to generateMemAccess, and the boolean parameter changed
to integer to hold the size of bytes to be loaded or
test_snip_ref_shlib_var passes.

21 months agoDeal with relocation type R_PPC64_IRELATIVE
Xiaozhu Meng [Thu, 20 Dec 2018 21:48:39 +0000 (15:48 -0600)]
Deal with relocation type R_PPC64_IRELATIVE

21 months agoMerge pull request #519 from dyninst/power_abi_v2_fixes
Xiaozhu Meng [Wed, 19 Dec 2018 19:33:34 +0000 (13:33 -0600)]
Merge pull request #519 from dyninst/power_abi_v2_fixes

Power abi v2 fixes

21 months agoFix code gen for PLT call/jump in dynamic instrumentation on Power 519/head
Xiaozhu Meng [Wed, 19 Dec 2018 17:15:28 +0000 (11:15 -0600)]
Fix code gen for PLT call/jump in dynamic instrumentation on Power

21 months agoThe red zone in Power ABI v2 contains 288 bytes for user code and
Xiaozhu Meng [Wed, 19 Dec 2018 15:43:30 +0000 (09:43 -0600)]
The red zone in Power ABI v2 contains 288 bytes for user code and
224 more bytes for system code. To be safe, we move down stack pointer
512 bytes to avoid overwriting any useful data.

21 months agoSeveral bug fixes on binary rewriting on Power
Xiaozhu Meng [Wed, 19 Dec 2018 15:02:26 +0000 (09:02 -0600)]
Several bug fixes on binary rewriting on Power

1. Fix TOC address calculation
2. Fix PLT call/jump
3. Adjust GLINK entry in .dynamic section, which points to the PLT resolver
4. Adjust R_PPC64_RELATIVE relocation entries

21 months agoFix modifyData to correctly emit instructions
Sasha @leela [Fri, 14 Dec 2018 01:38:22 +0000 (19:38 -0600)]
Fix modifyData to correctly emit instructions
when the offset of LDR (literal) instructions, after a relocation,
is larger than +-1MB.
test_reloc passes.

21 months agoEnable detach from process and leave stopped
Benjamin Welton [Fri, 7 Dec 2018 23:13:57 +0000 (17:13 -0600)]
Enable detach from process and leave stopped

Enables the ability to detach from a process but leave it in a stopped state

(cherry picked from commit 8470129b60a6c13b21839234f9804c355a73d8a4)

21 months agoDon't use system header <> syntax for dyninst includes 518/head
Stan Cox [Mon, 10 Dec 2018 22:48:46 +0000 (17:48 -0500)]
Don't use system header <> syntax for dyninst includes

21 months agoalways compute line info for CUBINs using parseLineInfoForObject 516/head
John Mellor-Crummey [Fri, 7 Dec 2018 21:59:47 +0000 (15:59 -0600)]
always compute line info for CUBINs using parseLineInfoForObject

21 months agoMerge branch 'master' of https://github.com/dyninst/dyninst
John Mellor-Crummey [Sat, 8 Dec 2018 04:46:29 +0000 (22:46 -0600)]
Merge branch 'master' of https://github.com/dyninst/dyninst

21 months agoMerge pull request #510 from dyninst/fix/whileExpr
Xiaozhu Meng [Fri, 7 Dec 2018 23:18:19 +0000 (17:18 -0600)]
Merge pull request #510 from dyninst/fix/whileExpr

Fix whileExpr not generating the correct code and causing abort

21 months agoMerge pull request #513 from jmellorcrummey/fix-openmp-link
Xiaozhu Meng [Fri, 7 Dec 2018 16:42:48 +0000 (10:42 -0600)]
Merge pull request #513 from jmellorcrummey/fix-openmp-link

as needed, add -fopenmp flag when linking executables

21 months agoMerge pull request #507 from stanfordcox/scox/examples
Xiaozhu Meng [Fri, 7 Dec 2018 16:38:19 +0000 (10:38 -0600)]
Merge pull request #507 from stanfordcox/scox/examples

Add .dir suffix to examples/{codeCoverage,unstrip}

21 months agoMerge pull request #506 from stanfordcox/scox/doc
Xiaozhu Meng [Fri, 7 Dec 2018 16:32:29 +0000 (10:32 -0600)]
Merge pull request #506 from stanfordcox/scox/doc

Install docs into target doc dirs

21 months agoMerge pull request #509 from dyninst/fix_sign_unsigned
Xiaozhu Meng [Fri, 7 Dec 2018 16:26:00 +0000 (10:26 -0600)]
Merge pull request #509 from dyninst/fix_sign_unsigned

Fixes signed/unsigned operations for comparison, multiplication,

21 months agoThe right shift implementation on power is wrong. Do not use it for division. 509/head
Xiaozhu Meng [Fri, 7 Dec 2018 16:20:27 +0000 (10:20 -0600)]
The right shift implementation on power is wrong. Do not use it for division.

21 months agoFix 64-bit sign/unsigned comparison, multi, and division on ARM
Xiaozhu Meng [Fri, 7 Dec 2018 15:13:45 +0000 (09:13 -0600)]
Fix 64-bit sign/unsigned comparison, multi, and division on ARM

21 months agoas needed, add -fopenmp flag when linking executables 513/head
John Mellor-Crummey [Fri, 7 Dec 2018 04:24:20 +0000 (22:24 -0600)]
as needed, add -fopenmp flag when linking executables

21 months agoFix 64-bit sign/unsigned comparison, multi, and division on power
Xiaozhu Meng [Thu, 6 Dec 2018 20:03:49 +0000 (14:03 -0600)]
Fix 64-bit sign/unsigned comparison, multi, and division on power

21 months agoast: fix whileOp 510/head
LER0ever [Thu, 6 Dec 2018 05:56:49 +0000 (23:56 -0600)]
ast: fix whileOp

the current whileOp code is mostly from ifOp since they share mostly the
same high level logic.
We should update whileOp code whenever we make a future change to ifOp

21 months agocmake: export CompilerCommands for IDE jump-to-def support
LER0ever [Thu, 6 Dec 2018 05:56:22 +0000 (23:56 -0600)]
cmake: export CompilerCommands for IDE jump-to-def support

21 months agoImplements getDynamicCallSiteArgs to monitor dynamic call sites.
Sasha @leela [Thu, 6 Dec 2018 00:14:08 +0000 (18:14 -0600)]
Implements getDynamicCallSiteArgs to monitor dynamic call sites.
Implements emitLoadOrigRegister to get frame pointer register.
Test1_40 passes.

21 months agoStart to fix signed/unsigned operations for comparison, multiplication,
Xiaozhu Meng [Wed, 5 Dec 2018 22:07:42 +0000 (16:07 -0600)]
Start to fix signed/unsigned operations for comparison, multiplication,
and division.

This commit contains platform independent changes and platform dependent
changes for x86-64

21 months agoEmit 64-bit integer multiplication and division on power
Xiaozhu Meng [Mon, 3 Dec 2018 17:21:10 +0000 (11:21 -0600)]
Emit 64-bit integer multiplication and division on power

21 months agoAdd .dir suffix to examples/{codeCoverage,unstrip} 507/head
Stan Cox [Fri, 30 Nov 2018 17:20:14 +0000 (12:20 -0500)]
Add .dir suffix to examples/{codeCoverage,unstrip}

21 months agoUpdate the stack locations to find for parameters, as there is an ABI change since...
Xiaozhu Meng [Fri, 30 Nov 2018 17:05:19 +0000 (11:05 -0600)]
Update the stack locations to find for parameters, as there is an ABI change since power 8

21 months agoInstall docs into target doc dirs 506/head
Stan Cox [Fri, 30 Nov 2018 03:08:29 +0000 (22:08 -0500)]
Install docs into target doc dirs

21 months agoMerge branch 'master' into ARMv8
Sasha @leela [Wed, 28 Nov 2018 23:26:46 +0000 (17:26 -0600)]
Merge branch 'master' into ARMv8

21 months agoFix wrong handling for PTRACE_EVENT_EXIT in proccontrol. Currently, each time we...
Xiaozhu Meng [Wed, 28 Nov 2018 21:56:15 +0000 (15:56 -0600)]
Fix wrong handling for PTRACE_EVENT_EXIT in proccontrol. Currently, each time we see PTRACE_EVENT_EXIT, we assume the mutatee exited normally. However, this is a wrong assumption. Based on the man page of PTRACE:

PTRACE_EVENT_EXIT will happen before actual death,  This applies to exits via
exit(2), exit_group(2), and signal deaths

PTRACE_EVENT_EXIT will also be delivered to proccontrol when the mutatee
died of crashes/signals. So, we need to check whether the waitpid status
represents a normal exit or a signal exit

22 months agoFix long branch generation.
Sasha @leela [Wed, 21 Nov 2018 19:40:47 +0000 (13:40 -0600)]
Fix long branch generation.
Fix emit load register indirect.
Implements hasBeenBound for ARM.
Tests passing now: test1_14, 24, 26, 27, 28, 29, and 39.

22 months agoUpdate README.md
Xiaozhu Meng [Mon, 19 Nov 2018 17:02:42 +0000 (11:02 -0600)]
Update README.md

22 months agoImplementing emitLoadOrigRegRelative and emitStoreIndir.
Sasha @leela [Sat, 17 Nov 2018 01:21:32 +0000 (19:21 -0600)]
Implementing emitLoadOrigRegRelative and emitStoreIndir.
Adding case of loadRegRelativeOp and storeIndirOp for emitVload.
test1_23 passes.

22 months agoMerge branch 'master' of https://github.com/dyninst/dyninst
Sasha Nicolas [Fri, 9 Nov 2018 17:41:29 +0000 (11:41 -0600)]
Merge branch 'master' of https://github.com/dyninst/dyninst

22 months agoMerge branch 'master' into ARMv8
Sasha @leela [Fri, 9 Nov 2018 17:01:06 +0000 (11:01 -0600)]
Merge branch 'master' into ARMv8

22 months agoUpdate latex based manuals v10.0.0
Xiaozhu Meng [Fri, 9 Nov 2018 16:48:08 +0000 (10:48 -0600)]
Update latex based manuals

22 months agoMerge branch 'master' into ARMv8
Sasha @leela [Fri, 9 Nov 2018 16:28:31 +0000 (10:28 -0600)]
Merge branch 'master' into ARMv8

22 months agoMore updates to README and docx based manuals
Xiaozhu Meng [Fri, 9 Nov 2018 16:17:46 +0000 (10:17 -0600)]
More updates to README and docx based manuals

22 months agoFix generateLongBranch to make Replace Function work.
Sasha @leela [Fri, 9 Nov 2018 00:50:47 +0000 (18:50 -0600)]
Fix generateLongBranch to make Replace Function work.
test1_22 passes.

22 months agoClear debugging output
Xiaozhu Meng [Thu, 8 Nov 2018 21:57:08 +0000 (15:57 -0600)]
Clear debugging output

22 months agoUpdate README.md
Sasha NĂ­colas [Thu, 8 Nov 2018 21:40:02 +0000 (15:40 -0600)]
Update README.md

22 months agoCorrect LDR/STR instructions for SIMD&FP
Sasha @leela [Thu, 8 Nov 2018 21:22:27 +0000 (15:22 -0600)]
Correct LDR/STR instructions for SIMD&FP
Saving all FP registers in BaseTramp
Remove #if for DYNINST_snippetBreakpoint

22 months agoBump the version number to 10.0.0
Xiaozhu Meng [Thu, 8 Nov 2018 18:27:47 +0000 (12:27 -0600)]
Bump the version number to 10.0.0

22 months agoUpdate Spack information
Xiaozhu Meng [Thu, 8 Nov 2018 17:54:07 +0000 (11:54 -0600)]
Update Spack information

22 months agoUpdate README.md to rewrite install documentation
Xiaozhu Meng [Thu, 8 Nov 2018 16:52:28 +0000 (10:52 -0600)]
Update README.md to rewrite install documentation

22 months agoUpdate cmake setup explanation in README.md
Xiaozhu Meng [Wed, 7 Nov 2018 22:47:15 +0000 (16:47 -0600)]
Update cmake setup explanation in README.md

22 months agoRemove old files and start to update README.md
Xiaozhu Meng [Wed, 7 Nov 2018 21:10:03 +0000 (15:10 -0600)]
Remove old files and start to update README.md

22 months agoImplementing DynFrameHelper::allocatesFrame
Sasha @leela [Wed, 7 Nov 2018 19:18:45 +0000 (13:18 -0600)]
Implementing DynFrameHelper::allocatesFrame
Implementing StackwalkInstrumentationHelper::isInstrumentation
Implementing writeFunctionPtr
Removing #if for DYNINST_instForkEntry
test_thread_*, test_fork_* passing.

22 months agoClean up change log
Xiaozhu Meng [Wed, 7 Nov 2018 17:27:05 +0000 (11:27 -0600)]
Clean up change log

22 months agoUpdate change log since v9.3.2 for v10.0.0
Xiaozhu Meng [Wed, 7 Nov 2018 16:03:19 +0000 (10:03 -0600)]
Update change log since v9.3.2 for v10.0.0

22 months agoAdded/updated support for 271 new power instructions
Benjamin Welton [Tue, 6 Nov 2018 06:07:15 +0000 (22:07 -0800)]
Added/updated support for 271 new power instructions

Added full/partial support for the following instructions:

vsldoi ,maddhd ,maddhdu ,maddld ,vbpermq ,extended ,bcdctsq ,bcdcfsq ,bcdctz ,bcdctn ,bcdcfz ,bcdcfn ,bcdsetsgn ,vclzlsbb ,vctzlsbb ,vnegw ,vnegd ,vprtybw ,vprtybd ,vprtybq ,vextsb2w ,vextsh2w ,vextsb2d ,vextsh2d ,vextsw2d ,vctzb ,vctzh ,vctzw ,vctzd ,dcbst ,wait ,td ,lxsiwax ,stfpdux ,slbiag ,cmpeqb ,cmprb ,cnttzw ,cnttzd ,cp_abort ,darn ,extswsl ,ldat ,lwat ,mcrxrx ,mfvsrld ,modsd ,modud ,modsw ,moduw ,msgsnd ,msgclr ,msgsndp ,msgclrp ,msgsync ,mtvsrdd ,mfvsrwz ,mtvsrd ,mtvsrwa ,mtvsrwz ,mtvsrws ,setb ,slbieg ,slbsync ,stdat ,stwat ,clrbhrb ,mfbhrbe ,icbt ,lqarx ,stqcx ,tbegin ,tend ,tabort ,tabortwc ,tabortwci ,tabortdc ,tabortdci ,tsr ,tcheck ,treclaim ,trechkpt ,addg6s ,cdtbcd ,cbcdtd ,divde ,divdeu ,modsd ,lbarx ,lharx ,ldbrx ,stbcx ,stdbrx ,sthcx ,lbzcix ,lwzcix ,ldcix ,stbcix ,sthcix ,stwcix ,stdcix ,lfdpx ,stfdpx ,prtyd ,prtyw ,slbfee ,slbfee ,slbmfee ,slbmfev ,mfocrf ,isel ,tlbiel ,slbmte ,subfze ,mtmsrd ,mtmsr ,copy ,paste ,extswsli ,stxvb16x ,wait ,lxsiwax ,mfvsrd ,bpermd ,divwe ,divweu ,lfiwzx ,cmpb ,lfiwax ,lhzcix ,slbia ,slbie ,dtstsfi ,dcffix ,fcfids ,fcfidus ,dadd ,dcmpo ,dcmpu ,dctdp ,dctfix ,ddedpd ,ddiv ,denbcd ,diex ,dmul ,dquai ,dqua ,drintn ,drintx ,drrnd ,drsp ,dscli ,dscri ,dsub ,dtstdc ,dtstdg ,dtstex ,dtstsf ,frsqrtes ,dxex ,xxpermdi ,xvtdivsp ,xxsel ,xxsldwi ,xvnmaddasp ,xscmpexpdp ,xscvuxddp ,xxspltib ,xsaddsp ,xsmaddadp ,xsrdpi ,xssubdp ,xsmsubmdp ,xscmpexpdp ,xscmpexpdp ,xvrspip ,xxinsertw ,xvcmpeqdp ,xvrsqrtedp ,xxlor ,xsnmaddadp ,xscvdpuxds ,xvnabssp ,xvnegsp ,xvcvsxddp ,xsnmsubqp ,daddq ,dcffixq ,dcmpoq ,dcmpuq ,dctfixq ,dctqpq ,ddedpdq ,denbcdq ,ddivq ,diexq ,dmulq ,dquaiq ,dquaq ,drdpq ,drintnq ,drintxq ,drrndq ,dscliq ,dscriq ,dsubq ,dtstdcq ,dtstdgq ,dtstexq ,dtstsfq ,dxexq ,fcpsgn ,fre ,frim ,frin ,frip ,friz ,fctidz ,xsxexpdp ,xsxsigdp ,xscvdphp ,xscvhphp ,xvxexpdp ,xvxsigdp ,xxbrh ,xvxexpsp ,xvxsigsp ,xxbrw ,xxbrd ,xvcvhpsp ,xvcvsphp ,xxbrq ,xsxexpdp ,xvxexpdp ,xscvqpsdz ,dtstsfiq ,xscpsgnqp ,xsdivqp ,xsrqpxp ,fmrgew ,fmrgow ,fcfidu, fctidu ,fctiduz ,fctiwu ,fctiwuz ,ftdiv ,ftsqrt ,mffs ,mffsce ,mffscdrn ,mffscdrn ,mffscdrni ,mffscrn ,mffsl ,xsabsqp ,xsxexpqp ,xsnegqp ,xsxsigqp ,xssqrtqp ,xsnabsqp ,xscvqpuwz ,xscvudqp ,xscvqpswz ,xscvsdqp ,xscvqpudz ,xscvqpdp ,xscvdpqp ,xscvqpsdz

Currently missing is operand decoding for the following operand types:

UIM(), BHRBE(), IH(), SP(), S(), TE(), DGM(), DCM(), CT(), RSP(), RTP(), EH(), PRS(), A(), R(), BC(), RC(), RIC(), SIM(), DCMX(), RO(), RMC(), EX(), SHB(), PS(), CY(), DRM(), SHW(), XC(), DM(), IMM8()

If an instruction with one of these operands is encounted, the operand will not be docoded and a warning message printed. Over time support for these operands will be added.

22 months agoMerge branch 'master' into ARMv8
Sasha @leela [Mon, 5 Nov 2018 22:06:44 +0000 (16:06 -0600)]
Merge branch 'master' into ARMv8

22 months agoMerge branch 'ARMv8' of https://github.com/dyninst/dyninst into ARMv8
Sasha @leela [Mon, 5 Nov 2018 21:50:35 +0000 (15:50 -0600)]
Merge branch 'ARMv8' of https://github.com/dyninst/dyninst into ARMv8

22 months agoVarious bug fixes
Xiaozhu Meng [Mon, 5 Nov 2018 20:38:54 +0000 (14:38 -0600)]
Various bug fixes

1. Jump table analysis
   1.1 do not slice backward along indirect edges, which will
   make jump table analysis depends on results of previous jump table analysis,
   and have cascading wrong analysis results.
   1.2 On x86, perform tentative instruction decoding at potential jump targets.
   If we find junk instructions at jump target, then we know the jump target is wrong
   1.3 Remove jump target checks that relies on the parsing function context.
   For jump tables shared by multiple functions, such checks can easily lead to
   non-determinisitic results.

2. Tail calls: on x86, if there is a pop to a callee saved register, it means
   the function is tearing down the stack frame. So, this jump should be a tail call

3. PLT stubs
   3.1 Improve analysis of PLT in .plt.got and fix related instrumentation problems
   3.2 Function should use the PLT name at the beginning of the parsing, not at the
   end of parsing. Otherwise, for PLT that is known to be non-returning, its caller
   may have the wrong retstatus

22 months agofix doNotOverflow for int64, picked from 2b21d59
LER0ever [Sun, 4 Nov 2018 20:49:50 +0000 (14:49 -0600)]
fix doNotOverflow for int64, picked from 2b21d59

22 months agoAdded 80 Power instructions missing from opcode 31
Benjamin Welton [Sat, 3 Nov 2018 05:19:41 +0000 (00:19 -0500)]
Added 80 Power instructions missing from opcode 31

Added the following new instructions to the power opcode tables (however they are not yet enabled):

slbiag, cmpeqb, cmprb, cnttz, cnttz, cp_abort, darn, extswsl, ldat, lwat, mcrxrx, mfvsrld, modsd, modsw, modud, moduw, msgsync, msgclr, msgclrp, msgsnd, msgsndp, mtvsrdd, mtvsrws, mtvsrd, mtvsrwa, mtvsrwz, mfvsrd, mfvsrwz, setb, slbieg, slbsync, stdat, stwat, clrbhrb, mfbhrbe, icbt, lqarx, stqcx, tabort, tabortdc, tabortdci, tabortwc, tabortwci, tbegin, tcheck, trechkpt, treclaim, tsr, addg6s, cbcdtd, cdtbcd, divde, divwe, lbarx, ldbrx, lharx, stbcx, stdbrx, sthcx, lbzcix, ldcix, lhzcix, lwzcix, stbcix, stdcix, sthcix, stwcix, lfdpx, stfdpx, prtyd, prtyw, slbfee, slbmfee, slbmfev, isel, tlbiel, subfz, slbmte, mtmsr, mtmsrd

22 months agoMinor fix to decoding extended opcode 30 on PPC
Benjamin Welton [Fri, 2 Nov 2018 20:45:29 +0000 (13:45 -0700)]
Minor fix to decoding extended opcode 30 on PPC

On PPC, the extended opcode of table 30 is decoded based on the following criterion:

If bit 27 = 1. Extended opcode is at range 27-30. Otherwise the extended opcode range is 27-29.

22 months agoMerge branch 'ARMv8' of https://code.rongyi.io/LER0ever/Dyninst into ARMv8
LER0ever [Tue, 30 Oct 2018 21:52:40 +0000 (16:52 -0500)]
Merge branch 'ARMv8' of https://code.rongyi.io/LER0ever/Dyninst into ARMv8

Conflict: binutils 2.31.1 instead

22 months agoaarch64: use sys/uio instead of bits/uio
LER0ever [Wed, 24 Oct 2018 22:46:39 +0000 (22:46 +0000)]
aarch64: use sys/uio instead of bits/uio
we should never include bits/uio directly, as stated in the bits/uio.h file:

18 #if !defined _SYS_UIO_H && !defined _FCNTL_H
19 # error "Never include <bits/uio.h> directly; use <sys/uio.h> instead."
20 #endif

22 months agobuild: add pr 496 patch
LER0ever [Thu, 18 Oct 2018 00:19:14 +0000 (19:19 -0500)]
build: add pr 496 patch

22 months agoMerge branch 'master' into ARMv8
Sasha @leela [Tue, 30 Oct 2018 20:12:17 +0000 (15:12 -0500)]
Merge branch 'master' into ARMv8

22 months agoUpdate binutils version to download.
Sasha @leela [Tue, 30 Oct 2018 19:30:32 +0000 (14:30 -0500)]
Update binutils version to download.

22 months agoImplement doNotOverflow for ARMv8.
Sasha @leela [Tue, 30 Oct 2018 18:13:55 +0000 (13:13 -0500)]
Implement doNotOverflow for ARMv8.
Implement load relative.
Fix emit immediate for plus and minus.

22 months agoFix interface changes for ARM.
Sasha @leela [Tue, 30 Oct 2018 17:50:28 +0000 (12:50 -0500)]
Fix interface changes for ARM.

22 months ago1. Fix x86-64 codegen for binary operators with 64-bit imm values
Xiaozhu Meng [Fri, 26 Oct 2018 17:06:36 +0000 (12:06 -0500)]
1. Fix x86-64 codegen for binary operators with 64-bit imm values

2. When decoding floating point instructions on x86-64, the address size
override prefix means 64-bit address size rather than 16-bit

3. Fix a linking problem of examples

4. Do not use negative values when reading jump tables

22 months agoAdding USE_OpenMP to cmake files;
Sasha Nicolas [Thu, 25 Oct 2018 21:42:30 +0000 (16:42 -0500)]
Adding USE_OpenMP to cmake files;
Adding MD5 to verify downloaded file;
Removing compiler restriction.

22 months agoMerge pull request #488 from dyninst/new-parallel-parsing
Xiaozhu Meng [Thu, 25 Oct 2018 20:38:02 +0000 (15:38 -0500)]
Merge pull request #488 from dyninst/new-parallel-parsing

Merge parallel code parsing

22 months agoMerge branch 'master' into new-parallel-parsing 488/head
Xiaozhu Meng [Thu, 25 Oct 2018 20:35:09 +0000 (15:35 -0500)]
Merge branch 'master' into new-parallel-parsing

Rmove setting function ret status during finalizing


22 months ago1. Fix inconsistent block splits
Xiaozhu Meng [Thu, 25 Oct 2018 14:06:21 +0000 (09:06 -0500)]
1. Fix inconsistent block splits

2. Fix non-returning function analysis for PLT stubs, where a PLT stub
   may first be set to RETURN and then set to NORETURN.

3. When parsing call fallthrough edge, the corresponding call edge may
   still point to sink (not handled yet), which causes the code to
   believe it is an indirect call. So, change the code to look up callee
   by using the callee entry address.

22 months agoaarch64: use sys/uio instead of bits/uio
LER0ever [Wed, 24 Oct 2018 22:46:39 +0000 (22:46 +0000)]
aarch64: use sys/uio instead of bits/uio
we should never include bits/uio directly, as stated in the bits/uio.h file:

18 #if !defined _SYS_UIO_H && !defined _FCNTL_H
19 # error "Never include <bits/uio.h> directly; use <sys/uio.h> instead."
20 #endif