dyninst.git
21 months agoFix crahses of symtabAPI tests on power parallel-parse-symtab
Xiaozhu Meng [Wed, 21 Aug 2019 22:11:57 +0000 (17:11 -0500)]
Fix crahses of symtabAPI tests on power

21 months agoFix function removing in parsing finalization
Xiaozhu Meng [Tue, 20 Aug 2019 15:13:45 +0000 (10:13 -0500)]
Fix function removing in parsing finalization

21 months agoFix loop tree callee construction on Power
Xiaozhu Meng [Tue, 20 Aug 2019 22:20:50 +0000 (17:20 -0500)]
Fix loop tree callee construction on Power

21 months agoFix range data related to gap parsing
Xiaozhu Meng [Sun, 18 Aug 2019 22:22:15 +0000 (17:22 -0500)]
Fix range data related to gap parsing

21 months agoFixes for gap parsing, which uses a different interface to call Parser
Xiaozhu Meng [Sun, 18 Aug 2019 04:04:35 +0000 (23:04 -0500)]
Fixes for gap parsing, which uses a different interface to call Parser

21 months agoSeveral fixes for analyzing .a files
Xiaozhu Meng [Sat, 17 Aug 2019 04:07:21 +0000 (23:07 -0500)]
Several fixes for analyzing .a files

1. Rewrite the OverlappingParseData to correct handle overlapping code regions.
2. In .o files, code starts at address 0, so address 0 can be a valid address.
   So, change indirect call target from address 0 to max address to represent indiret calls
3. Use CodeSource to check address validity, which would allow cross CodeRegions valid address;
   but use CodeRegion for raw code bytes, because using CodeSource may return code bytes
   from other regions that are overlapping.

21 months agoUse exchange instead of store to keep Valgrind happy.
blue42u [Fri, 16 Aug 2019 20:45:26 +0000 (15:45 -0500)]
Use exchange instead of store to keep Valgrind happy.

21 months agoMerge remote-tracking branch 'upstream/master' into parallel-parse-symtab
blue42u [Fri, 16 Aug 2019 20:45:00 +0000 (15:45 -0500)]
Merge remote-tracking branch 'upstream/master' into parallel-parse-symtab

22 months agoFix overlapping bug of program header segments on fixPhdr. (#618)
Sasha Nícolas [Thu, 15 Aug 2019 22:47:12 +0000 (17:47 -0500)]
Fix overlapping bug of program header segments on fixPhdr. (#618)

This fix is making the update of the program headers in two passes. First, we need to update the addresses, and then insert the new created segment.

22 months agoUpdates TLS descriptors values in .dynamic section (ARMv8, #614)
Sasha Nícolas [Thu, 15 Aug 2019 21:07:15 +0000 (16:07 -0500)]
Updates TLS descriptors values in .dynamic section (ARMv8, #614)

Update TLS descriptor values in .dynamic section when .got and .plt offsets are modified for ARMv8.

22 months agoShould not delete unused ParseAPI::Function during parsing because CFGFactory will...
Xiaozhu Meng [Thu, 15 Aug 2019 20:47:40 +0000 (15:47 -0500)]
Should not delete unused ParseAPI::Function during parsing because CFGFactory will do delete all created functions in its destructor.

22 months agoUse static AArch64 decoder tables. Fixes dyninst/dyninst#630.
blue42u [Tue, 13 Aug 2019 16:51:33 +0000 (11:51 -0500)]
Use static AArch64 decoder tables. Fixes dyninst/dyninst#630.

Other improvements include faster compile time (for affected files),
~1s less load time, ~7.8MiB smaller binary, and ~200KiB more memory usage.

Performance effects not yet tested.

22 months agoGet rid unnecessary boost::lock_guard and use entry lookup in loop tree construction
Xiaozhu Meng [Tue, 13 Aug 2019 22:13:48 +0000 (17:13 -0500)]
Get rid unnecessary boost::lock_guard and use entry lookup in loop tree construction

22 months agoFix compilation
Xiaozhu Meng [Tue, 13 Aug 2019 19:54:20 +0000 (14:54 -0500)]
Fix compilation

22 months agoProperly initialize the Module in all constructors.
blue42u [Tue, 13 Aug 2019 19:43:30 +0000 (14:43 -0500)]
Properly initialize the Module in all constructors.

22 months agoRough additions of locks in various places to make things work.
blue42u [Tue, 13 Aug 2019 14:00:36 +0000 (09:00 -0500)]
Rough additions of locks in various places to make things work.

22 months agoUse dyn_c_vector, and disable the parallelism for ELF stuff for now.
blue42u [Mon, 12 Aug 2019 14:04:31 +0000 (09:04 -0500)]
Use dyn_c_vector, and disable the parallelism for ELF stuff for now.

22 months agoAdd a CMake flag to enable Valgrind annotations
blue42u [Sat, 27 Jul 2019 23:51:25 +0000 (18:51 -0500)]
Add a CMake flag to enable Valgrind annotations

22 months agoAdd block ranges and clean some dead code
Xiaozhu Meng [Tue, 13 Aug 2019 15:41:39 +0000 (10:41 -0500)]
Add block ranges and clean some dead code

22 months agoUse private writable mmap when opening binaries and debug files (#624)
Jonathon Anderson [Mon, 12 Aug 2019 23:15:35 +0000 (18:15 -0500)]
Use private writable mmap when opening binaries and debug files (#624)

* Open debug files (privately) writable, to allow libelf to decompress sections.
* Fix for SEGV when performing endianness conversions in-place later.

22 months agoLasily preparing range data for functions and blocks.
Xiaozhu Meng [Mon, 12 Aug 2019 22:05:20 +0000 (17:05 -0500)]
Lasily preparing range data for functions and blocks.

22 months agoParseAPI now initialize hints in parallel. So, if the user of ParseAPI overloads...
Xiaozhu Meng [Mon, 12 Aug 2019 20:17:25 +0000 (15:17 -0500)]
ParseAPI now initialize hints in parallel. So, if the user of ParseAPI overloads the function for creating
ParseAPI::Function, that code should be thread-safe.

Change the DynCFGFactor in dyninstAPI to use mutex to be thread-safe.

22 months agoConvert snprintf with PRIx64 to std::to_string (#627)
Tim Haines [Thu, 8 Aug 2019 22:21:50 +0000 (17:21 -0500)]
Convert snprintf with PRIx64 to std::to_string (#627)

PRIx64 is from C99 and isn't available with g++ with older libc headers.

22 months agoUse PRIx64 macros for long long results for i686. (#517)
Stan Cox [Mon, 5 Aug 2019 17:27:51 +0000 (13:27 -0400)]
Use PRIx64 macros for long long results for i686. (#517)

* Use PRIx64 macros for long long results for i686.
* Define PRIx64 for _MSC_VER

22 months ago1. Fix parallelization for CodeObject::process_hint(): a local variable declared...
Xiaozhu Meng [Sat, 27 Jul 2019 21:17:23 +0000 (16:17 -0500)]
1. Fix parallelization for CodeObject::process_hint(): a local variable declared is moved from outside loop to inside loop
2. Fix debug print crash in Parser.C
3. Some code cleanup

22 months agoFix an infinite loop in the parsing finalization stages.
blue42u [Sat, 27 Jul 2019 16:31:08 +0000 (11:31 -0500)]
Fix an infinite loop in the parsing finalization stages.

22 months agoMerge branch 'to-test-v2' of github.com:mxz297/dyninst into to-test-v2
blue42u [Sat, 27 Jul 2019 03:18:05 +0000 (22:18 -0500)]
Merge branch 'to-test-v2' of github.com:mxz297/dyninst into to-test-v2

22 months agoParallelize CodeObject::process_hints
Xiaozhu Meng [Sat, 27 Jul 2019 03:14:26 +0000 (22:14 -0500)]
Parallelize CodeObject::process_hints

22 months agoParallelize SymtabCodeSource::init_hints
Xiaozhu Meng [Sat, 27 Jul 2019 02:02:31 +0000 (21:02 -0500)]
Parallelize SymtabCodeSource::init_hints

22 months agoReplace lock for delayed frames with concurrent hash map
Xiaozhu Meng [Fri, 26 Jul 2019 19:08:02 +0000 (14:08 -0500)]
Replace lock for delayed frames with concurrent hash map

22 months agoRewrite the c_hash_map to expose the accessors as a rwlock.
blue42u [Fri, 26 Jul 2019 15:59:11 +0000 (10:59 -0500)]
Rewrite the c_hash_map to expose the accessors as a rwlock.

22 months agoSilence a number of warnings. Identations a mess but its quieter.
blue42u [Fri, 26 Jul 2019 14:52:57 +0000 (09:52 -0500)]
Silence a number of warnings. Identations a mess but its quieter.

22 months agoMunge the annotations for c_hash_map a little, and hotfix a possible race.
blue42u [Fri, 26 Jul 2019 04:03:29 +0000 (23:03 -0500)]
Munge the annotations for c_hash_map a little, and hotfix a possible race.

22 months agoSmall changes to fix some maybe-races
blue42u [Mon, 15 Jul 2019 21:52:37 +0000 (16:52 -0500)]
Small changes to fix some maybe-races

22 months agoGet rid of unnecessary assert
Xiaozhu Meng [Thu, 25 Jul 2019 21:52:14 +0000 (16:52 -0500)]
Get rid of unnecessary assert

22 months agoDelete omp critical in parisng of a fram
Xiaozhu Meng [Wed, 24 Jul 2019 18:20:28 +0000 (13:20 -0500)]
Delete omp critical in parisng of a fram

22 months agoEstimate parsing task size by function symbol size
Xiaozhu Meng [Sat, 20 Jul 2019 03:54:53 +0000 (22:54 -0500)]
Estimate parsing task size by function symbol size
and launch large tasks first

22 months ago1. Resume functions as soon as a function finds a ret instruction
Xiaozhu Meng [Thu, 18 Jul 2019 22:28:57 +0000 (17:28 -0500)]
1. Resume functions as soon as a function finds a ret instruction
2. Rewrite parts of the tail call correction in finalization

22 months ago1. Rewrite createAndRecordFrame to allow concurrent frame creations.
Xiaozhu Meng [Thu, 18 Jul 2019 13:05:52 +0000 (08:05 -0500)]
1. Rewrite createAndRecordFrame to allow concurrent frame creations.
2. Simplify the use of frame status: BAD_LOOKUP means frame does not exists
   and a caller should only create a new frame when the result is BAD_LOOKUP

22 months ago1. Handle ud2 instruction, which will raise an undefined opcode exception. Therefore...
Xiaozhu Meng [Wed, 17 Jul 2019 20:59:25 +0000 (15:59 -0500)]
1. Handle ud2 instruction, which will raise an undefined opcode exception. Therefore, control flow should not fall through
2. When deleting a bogus function, the reference counts of the blocks in the function should be decremented

22 months agoDelete swap_busy
Xiaozhu Meng [Mon, 15 Jul 2019 19:25:04 +0000 (14:25 -0500)]
Delete swap_busy

22 months ago1. Fix missing parsed edges caused by early resuming frames
Xiaozhu Meng [Thu, 11 Jul 2019 22:15:47 +0000 (17:15 -0500)]
1. Fix missing parsed edges caused by early resuming frames
2. Always choosing the alphabetically smallest name for a function if there are multiple

22 months agoTweaks to remove the phase-based approach
blue42u [Thu, 11 Jul 2019 12:24:55 +0000 (07:24 -0500)]
Tweaks to remove the phase-based approach

22 months agoRemoved a lock, and attempts to fix the resulting issues that arose afterwards.
blue42u [Thu, 11 Jul 2019 12:22:42 +0000 (07:22 -0500)]
Removed a lock, and attempts to fix the resulting issues that arose afterwards.

22 months agoGet rid of unnecessary serial code in finalization and add parallelism for hints...
Xiaozhu Meng [Tue, 9 Jul 2019 18:15:03 +0000 (13:15 -0500)]
Get rid of unnecessary serial code in finalization and add parallelism for hints initialization

22 months agoAdding more parallelism.
blue42u [Thu, 18 Jul 2019 19:11:45 +0000 (14:11 -0500)]
Adding more parallelism.

22 months agoActually do the parsing properly, and add a lock where it was needed.
blue42u [Thu, 18 Jul 2019 17:37:40 +0000 (12:37 -0500)]
Actually do the parsing properly, and add a lock where it was needed.

22 months agoSwap out some hash_maps for their concurrent forms, more easy parallelism.
blue42u [Wed, 17 Jul 2019 21:00:10 +0000 (16:00 -0500)]
Swap out some hash_maps for their concurrent forms, more easy parallelism.

22 months agoParallelize some stuff in Object, makes the loading of files a little faster.
blue42u [Wed, 17 Jul 2019 20:07:37 +0000 (15:07 -0500)]
Parallelize some stuff in Object, makes the loading of files a little faster.

23 months agoARMv8 initial work on rewriter (#612)
Sasha Nícolas [Tue, 2 Jul 2019 19:30:07 +0000 (14:30 -0500)]
ARMv8 initial work on rewriter (#612)

* Implement AArch64 InterModule Function call
Debug message needs to be removed after finding out
* why X0 is kept being used
* why putting X0 address value back to itself does not work

* fix memory access mistakes, now uses offset mode

* removed all the debug printout for imfc

* add rewriter mode check
delete unwanted functions

* fix break on dynamic mode

* aarch64 broken movePCToReg implementation

* Fix unnecessary multiple calls to buildSysRegMap.

This function should be called only once, but was being called for every
instruction to be decoded. As a result, dyninst would take a long time
to execute. Now to simply run test1_1 on create mode takes 28 seconds,
as opposed to 58 before this fix, and now closer to 20 seconds for x86_64.

* movePCToReg still not working

* fix addressing mode for emitLoadRelative

* LoadShared: snip_ref_shlib_var test passes

* add assert details, remove debug code, and format patch

* inst-aarch64: sprintf -> snprintf, debug comments cleanup

* Implement ARMv8 IMFC and Load/Store Shared (#562)

* Implement AArch64 InterModule Function call
* fix memory access mistakes, now uses offset mode
* removed all the debug printout for imfc
* add rewriter mode check- delete unwanted functions
* fix break on dynamic mode
* aarch64 broken movePCToReg implementation
* movePCToReg still not working
* fix addressing mode for emitLoadRelative
* LoadShared: snip_ref_shlib_var test passes
* add assert details, remove debug code, and format patch
* inst-aarch64: sprintf -> snprintf, debug comments cleanup
* Minor cleanup- Remove commented-out code and debug print statements.

* Minor cleanup

Remove commented-out code and debug print statements.

* PLT: implement emitPLTCall and emitPLTJump

23 months agoAdd a few defines for when Valgrind annotations are turned off.
blue42u [Mon, 1 Jul 2019 21:26:08 +0000 (16:26 -0500)]
Add a few defines for when Valgrind annotations are turned off.

23 months agoMerge branch 'master' of https://github.com/dyninst/dyninst into new-parallel-symtab
blue42u [Mon, 1 Jul 2019 11:51:25 +0000 (06:51 -0500)]
Merge branch 'master' of https://github.com/dyninst/dyninst into new-parallel-symtab

23 months agoUse RAII-style classes when handling the locks.
blue42u [Mon, 1 Jul 2019 03:46:50 +0000 (22:46 -0500)]
Use RAII-style classes when handling the locks.

23 months agoFix a number of minor issues, and one possibly important typo.
blue42u [Mon, 1 Jul 2019 03:21:20 +0000 (22:21 -0500)]
Fix a number of minor issues, and one possibly important typo.

23 months agoDelete .syntastic_cpp_config
Sasha Nícolas [Fri, 28 Jun 2019 18:30:57 +0000 (13:30 -0500)]
Delete .syntastic_cpp_config

2 years agoAdd note on TBB usage when built from source
Tim Haines [Tue, 11 Jun 2019 20:51:45 +0000 (15:51 -0500)]
Add note on TBB usage when built from source

2 years agoMerge pull request #599 from dyninst/bump_version_number v10.1.0
Xiaozhu Meng [Thu, 16 May 2019 18:40:05 +0000 (13:40 -0500)]
Merge pull request #599 from dyninst/bump_version_number

Update version number to 10.1.0

2 years agoFix broken link in README 599/head
Tim [Wed, 15 May 2019 22:18:16 +0000 (17:18 -0500)]
Fix broken link in README

2 years agoAdd example usage of CMAKE_INSTALL_PREFIX
Tim [Wed, 15 May 2019 22:17:56 +0000 (17:17 -0500)]
Add example usage of CMAKE_INSTALL_PREFIX

2 years agoFix formatting in README
Tim [Wed, 15 May 2019 22:17:41 +0000 (17:17 -0500)]
Fix formatting in README

2 years agoFix doc bugs in LibIberty
Tim [Wed, 15 May 2019 21:45:28 +0000 (16:45 -0500)]
Fix doc bugs in LibIberty

2 years agoFix doc bug in Boost.cmake
Tim [Wed, 15 May 2019 21:23:00 +0000 (16:23 -0500)]
Fix doc bug in Boost.cmake

2 years agoMove advanced build instructions and FAQ to wiki
Tim [Wed, 15 May 2019 21:22:42 +0000 (16:22 -0500)]
Move advanced build instructions and FAQ to wiki

2 years agoUpdate CHANGELOD for 10.1
Xiaozhu Meng [Wed, 15 May 2019 21:29:25 +0000 (16:29 -0500)]
Update CHANGELOD for 10.1

2 years agoUpdate version number to 10.1.0
Xiaozhu Meng [Fri, 10 May 2019 18:58:34 +0000 (13:58 -0500)]
Update version number to 10.1.0

2 years agoTBB spack fixes (#595)
Tim Haines [Wed, 15 May 2019 20:01:03 +0000 (15:01 -0500)]
TBB spack fixes (#595)

* Fix typos and formatting in TBB CMake files
* Set minimum version of TBB to 2018.6
    This is what the Spack package is using.
* Set the source version of TBB to 2019.5
    This is the most recent version.
* In TBB, split the dotted-decimal version to make the download version
* Correctly handle minor version in FindTBB

2 years agoUpdate LibIberty to new build system (#601)
Tim Haines [Wed, 15 May 2019 20:00:32 +0000 (15:00 -0500)]
Update LibIberty to new build system (#601)

* Update LibIberty to new build system
* Include LibIberty from base CMakeLists.txt
* Correctly use USE_GNU_DEMANGLER in cap_arch_def
* Remove USE_GNU_DEMANGER from options.cmake
     This is now handled in cmake/LibIberty.cmake.

2 years agoMerge pull request #596 from dyninst/fix-sw-stepper
Xiaozhu Meng [Tue, 14 May 2019 19:10:02 +0000 (14:10 -0500)]
Merge pull request #596 from dyninst/fix-sw-stepper

Fix DwarfFrameParser, decodeDwarfExpression and DwarfResult

2 years agoMerge pull request #600 from dyninst/boost_1_70_fix
Xiaozhu Meng [Mon, 13 May 2019 21:27:35 +0000 (16:27 -0500)]
Merge pull request #600 from dyninst/boost_1_70_fix

Compilation fix for boost 1.70

2 years agoCompilation fix for boost 1.70 600/head
Xiaozhu Meng [Mon, 13 May 2019 18:14:19 +0000 (13:14 -0500)]
Compilation fix for boost 1.70

2 years agoMerge pull request #564 from dyninst/patch_cfg
Xiaozhu Meng [Sun, 12 May 2019 02:18:47 +0000 (21:18 -0500)]
Merge pull request #564 from dyninst/patch_cfg

Fix bad interactions between patchAPI and parseAPI

2 years agoAugment BPatch_effectiveAddressExpr to accept a second parameter, which 564/head
Xiaozhu Meng [Mon, 11 Mar 2019 00:22:37 +0000 (19:22 -0500)]
Augment BPatch_effectiveAddressExpr to accept a second parameter, which
represents the number of bytes to access if reading/writing with this
snippet.

API compatibility is maintained by setting the default value of the
seoncd parameter to 8 (bytes)

2 years agoRight now, the BPatch_deref and BPatch_regExpr do not specify the size.
Xiaozhu Meng [Wed, 6 Mar 2019 17:19:04 +0000 (11:19 -0600)]
Right now, the BPatch_deref and BPatch_regExpr do not specify the size.
Currently the default is 32-bit. Change the default to 64-bit

2 years agoWhen splitting a block using CFGModifier::split, we need to record the
Xiaozhu Meng [Tue, 5 Mar 2019 15:24:11 +0000 (09:24 -0600)]
When splitting a block using CFGModifier::split, we need to record the
new block in parse_data

2 years agoMerge pull request #592 from dyninst/pp_springboard
Xiaozhu Meng [Sun, 12 May 2019 00:20:42 +0000 (19:20 -0500)]
Merge pull request #592 from dyninst/pp_springboard

More fixes for parallel parsing, spring boards, and ARM

2 years agoDisable incomplete implementation for RA compensation for stack 592/head
Xiaozhu Meng [Sat, 11 May 2019 23:00:57 +0000 (18:00 -0500)]
Disable incomplete implementation for RA compensation for stack
unwinding

2 years agoBump minimum CMake version to 3.4.0 (#598)
Tim Haines [Fri, 10 May 2019 23:50:10 +0000 (18:50 -0500)]
Bump minimum CMake version to 3.4.0 (#598)

This is needed for FindBoost and is already in the Spack recipe

2 years agoAdd ARM effective address calculation (#594)
Xiaozhu Meng [Fri, 10 May 2019 23:48:59 +0000 (18:48 -0500)]
Add ARM effective address calculation (#594)

2 years agoBPatch_effectiveAddress truncates mem addresses on Power (#593)
Xiaozhu Meng [Fri, 10 May 2019 23:46:59 +0000 (18:46 -0500)]
BPatch_effectiveAddress truncates mem addresses on Power (#593)

In certain circumstances, BPatch_effectiveAddress would generate code that truncated
memory addresses to the bottom 32bits. The result is that instrimentation would see only
the bottom 32bits of any memory address. Before this patch, the issue occurred when instrumentation was applied to load/store instructions where the address was located in registers r3-r11 (exclusive). Ideally this function should just be straight removed in future releases (only used by emitASLoad).

2 years agoFix jump table analysis for ROSE Registers (#576)
Xiaozhu Meng [Fri, 10 May 2019 23:45:27 +0000 (18:45 -0500)]
Fix jump table analysis for ROSE Registers (#576)

Remove assertions in code from translating Dyninst::MachRegister to ROSE Register. In addition, passing the error code back to jump table analysis.

2 years agoUpdate README to reflect new build system (#597)
Tim Haines [Fri, 10 May 2019 17:10:02 +0000 (12:10 -0500)]
Update README to reflect new build system (#597)

2 years agoAdd initial support for decoding AMD FMA4 and XOP instructions (#575)
Xiaozhu Meng [Fri, 10 May 2019 17:09:26 +0000 (12:09 -0500)]
Add initial support for decoding AMD FMA4 and XOP instructions (#575)

* Add initial support for decoding AMD FMA4 instruction, including:

e_vfmaddsd, e_vfmaddss, e_vfmsubpd, e_vfmsubsd, e_vfnmaddpd,
e_vfnmaddsd,

* Add initial support for decoding XOP instructions:

e_vpcomd, e_vpmacsdd, e_vpcmov, e_vpshad

* Add x86 instruction decoding support for vpperm, movbe, vpperm

2 years agoFix DwarfFrameParser, decodeDwarfExpression and DwarfResult 596/head
Sasha @leela [Thu, 9 May 2019 21:19:44 +0000 (16:19 -0500)]
Fix DwarfFrameParser, decodeDwarfExpression and DwarfResult

After porting Dyninst to use libdw, DwarfFrameParser missed dealing
with important Dwarf operations that would decode rules for findind
registers values. These rules were not properly decoded by Dyninst
decodeDwarfExpression, neither were being dealt by DwarFrameParser.
This fix properly retrieves libdw Dwarf operations and decodes them,
making it possible to DebugStepper work, which wasn't even before the
port, when lidwarf was being used on Dyninst 9.3.

Basically, Dwarf frame info can be a simple dwarf expression, representing
a value or a memory address, a location description, or a location list.
Libdw gives the consumer an array of dwarf operations that describes how
to find the value they're looking for, as opposed to libdwarf who gives
the consumer many out parameters that lead to different ways to find a
value. This important change made DwarfFrameParser work only partially
after the port. And this fix came to implement the cases that were not
being considered.

2 years agoFix compilation of thread_db_process (#571)
Sasha Nícolas [Wed, 8 May 2019 23:03:32 +0000 (18:03 -0500)]
Fix compilation of thread_db_process (#571)

On a machine without libthread_db.so, the placeholder class had missing member functions and the contructors were calling wrong base constructors.

2 years agoSupport parsing cubin in dyninst-10.0 (#556)
Keren Zhou [Tue, 7 May 2019 22:22:40 +0000 (17:22 -0500)]
Support parsing cubin in dyninst-10.0 (#556)

2 years agoOnly demangle names starting with "_Z" according to the Itanium C++ ABI
Xiaozhu Meng [Tue, 7 May 2019 19:45:46 +0000 (14:45 -0500)]
Only demangle names starting with "_Z" according to the Itanium C++ ABI

2 years agoIn ProccontrolAPI, adding reading & writing mutatee's memory with procfs.
Xiaozhu Meng [Tue, 7 May 2019 16:43:49 +0000 (11:43 -0500)]
In ProccontrolAPI, adding reading & writing mutatee's memory with procfs.
We fall back to use ptrace if procfs read & write fail.

This change is for fixing icache coherence issue for ARM dynamic instrumentaiton.
ARM architecture does not guarantee icache-dcache coherence. And writes through
ptrace does not seem to invalidate icache contents and caused SIGILLs

2 years agoFixing TBB dependencies during build. (#570)
Sasha Nícolas [Thu, 2 May 2019 21:18:00 +0000 (16:18 -0500)]
Fixing TBB dependencies during build. (#570)

Explicitly establish dependencies on TBB.

2 years agoElfutils cleanup (#591)
Tim Haines [Thu, 2 May 2019 20:54:12 +0000 (15:54 -0500)]
Elfutils cleanup (#591)

fixes #557
fixes #547
fixes #561

- Consolidate all elfutils options into cmake/ElfUtils.cmake
- Allow user to supply installation hint directories
- Allow user to specify minimum version
- Use user-specified minimum version when building from source instead of 'elfutils-latest.tar.gz'
- Unify system paths when searching for libelf and libdw (fixes #557)
- Correctly install headers/libs when building from source (fixes #547)
- Exports variables for use in Testsuite (fixes #561)
- Clean up formatting

2 years agoTBB Cleanup (#584)
Tim Haines [Thu, 2 May 2019 20:52:11 +0000 (15:52 -0500)]
TBB Cleanup (#584)

- Remove FindTBB submodule
- Consolidate all TBB stuff into cmake/ThreadingBuildingBlocks.cmake
- Explicitly die on non-UNIX platforms when building from source (previously, it did nothing)
- Minimum TBB version is 2018.0 (I'm not sure this is necessary or sufficient)
- Export include/library directories into the CMake cache for consumption by Testsuite
- Libraries and headers are exported to CMAKE_INSTALL_PREFIX when building from source
- Correctly handles broken TBB install (intel/tbb#98)
- Explicitly die on non-UNIX platforms when building from source (previously, it did nothing)
- Minimum TBB version is 2018.0 (I'm not sure this is necessary or sufficient)
- Export include/library directories into the CMake cache for consumption by Testsuite
- Default version to build from source is 2019_U5
- Libraries and headers are exported to CMAKE_INSTALL_PREFIX when building from source
- Correctly handles broken TBB install (intel/tbb#98)

2 years agoBoost cleanup (#578)
Tim Haines [Thu, 2 May 2019 20:49:01 +0000 (15:49 -0500)]
Boost cleanup (#578)

Substantially changes how we handle Boost builds in Dyninst.

Fixes #563

- Tagged build layouts are now fully supported
- Boost is exported to the same install structure as Dyninst (fixes #563)
- All cmake variables that control Boost's build options are now available for the user to change via cache variables (e.g., -DBoost_USE_MULTITHREADED)
- Substantial error handling has been added
- Consolidates all Boost-related activities into cmake/Boost.cmake
- Makes Boost-1.61 the new minimum version (needed for Filesystem)
- Builds Boost-1.69 when building from source

2 years agoRemove the comments that were left over from Cilkscreen race detection.
blue42u [Tue, 30 Apr 2019 20:36:30 +0000 (15:36 -0500)]
Remove the comments that were left over from Cilkscreen race detection.

...I meant to do this a long time ago...

2 years agosimple working hybrid example of patchAPI (#588)
Ian A Mason [Mon, 29 Apr 2019 22:23:15 +0000 (15:23 -0700)]
simple working hybrid example of patchAPI  (#588)

* simple working hybrid example of patchAPI (using dyninstAPI to create the PatchMgr and PatchObject).

* TLC plus some remarks about running the rewritten program.

2 years agoReplace a mutex'd multi_index_container with a series of concurrent_hash_maps.
blue42u [Sun, 28 Apr 2019 18:33:22 +0000 (13:33 -0500)]
Replace a mutex'd multi_index_container with a series of concurrent_hash_maps.

2 years agoReplace a map+lock with a proper parallel hashmap for performance.
blue42u [Sun, 28 Apr 2019 14:49:53 +0000 (09:49 -0500)]
Replace a map+lock with a proper parallel hashmap for performance.

2 years agoAdd a lock to the function frame vectors, fixes blue42u/dyninst#21.
blue42u [Sat, 27 Apr 2019 22:16:57 +0000 (17:16 -0500)]
Add a lock to the function frame vectors, fixes blue42u/dyninst#21.

2 years agoAdd a lock for inlines management, fixes blue42u/dyninst#22.
blue42u [Sat, 27 Apr 2019 20:57:34 +0000 (15:57 -0500)]
Add a lock for inlines management, fixes blue42u/dyninst#22.

2 years agoAdd an extra lock to the StringTable, and use it to mediate access to the internals...
blue42u [Sat, 27 Apr 2019 20:43:58 +0000 (15:43 -0500)]
Add an extra lock to the StringTable, and use it to mediate access to the internals. Fixes blue42u/dyninst#20.

2 years agoUse atomics for the reference counting. Fixes blue42u/dyninst#4.
blue42u [Sat, 27 Apr 2019 20:27:23 +0000 (15:27 -0500)]
Use atomics for the reference counting. Fixes blue42u/dyninst#4.

2 years agoPut some parallelism into DwarfFrameParser. Fixes blue42u/dyninst#18 and blue42u...
blue42u [Wed, 24 Apr 2019 20:34:08 +0000 (15:34 -0500)]
Put some parallelism into DwarfFrameParser. Fixes blue42u/dyninst#18 and blue42u/dyninst#19