dyninst.git
6 hours agofix possibly uninitialized variables (#1082) master
James A. Kupsch [Tue, 3 Aug 2021 05:52:02 +0000 (00:52 -0500)]
fix possibly uninitialized variables (#1082)

make method always assign the parameters even in the event of errors,
and check for errors and do not use them if an error occurred.

This diagnostic only occurs with -O3.  In practice this is a false
positive as this should not occur with a valid arm instruction.

6 hours agofix possible null 'this' pointer dereference (#1082)
James A. Kupsch [Tue, 3 Aug 2021 05:33:40 +0000 (00:33 -0500)]
fix possible null 'this' pointer dereference (#1082)

If a nullptr is passed to the second parameter of the Field class's constructor
then there is a nullptr this pointer dereference for the boost::shared_ptr that
is the second parameter as the reshare() method is called.  The second
parameter is a nullptr in BPatch_type::getComponents is the type is and enum
type.  This warning is only diagnosed with -Og (and maybe -O1).

6 hours agoprevent maybe uninitialized warning (#1082)
James A. Kupsch [Tue, 3 Aug 2021 04:50:35 +0000 (23:50 -0500)]
prevent maybe uninitialized warning (#1082)

This is a false positive with -Og.  Initialize the variable to 0 to prevent
the warning.  The value is only used if a boolean is true and if it is true
then the value is set.

6 hours agoadjust large frame threshold for specific sources (#1082)
James A. Kupsch [Mon, 26 Jul 2021 19:13:38 +0000 (14:13 -0500)]
adjust large frame threshold for specific sources (#1082)

6 hours agofix deprecated implicit assignment operator (#1082)
James A. Kupsch [Tue, 20 Jul 2021 15:35:42 +0000 (10:35 -0500)]
fix deprecated implicit assignment operator (#1082)

remove (default equivalent) copy constructors, so all implicitly
generated operators are defaulted.  THey should all be default or
explicitly defined

6 hours agofix buffer overflow (#1082)
James A. Kupsch [Tue, 20 Jul 2021 15:33:43 +0000 (10:33 -0500)]
fix buffer overflow (#1082)

6 hours agofix duplicate branch condition by removing branch (#1082)
James A. Kupsch [Mon, 19 Jul 2021 18:42:43 +0000 (13:42 -0500)]
fix duplicate branch condition by removing branch (#1082)

Commented out else if condition and then block.  else if condition
happens to be identical to the if condition due to constant identifiers
having the same value.

The tests should be made more specific to distinguish the two cases or
the commented out else if should be removed.

6 hours agofix out of bounds array access (#1082)
James A. Kupsch [Wed, 14 Jul 2021 20:15:46 +0000 (15:15 -0500)]
fix out of bounds array access (#1082)

use ->uc_mcontext.regs->nip which follows the 32 array entries of the
same type in ->uc_mcontext.regs->gpr[] instead of access gpr[32] which
happens to work

6 hours agofix potentially uninitialized variable warning (#1082)
James A. Kupsch [Wed, 14 Jul 2021 15:24:32 +0000 (10:24 -0500)]
fix potentially uninitialized variable warning (#1082)

6 hours agouse unused variable to correct code (#1082)
James A. Kupsch [Wed, 14 Jul 2021 15:17:03 +0000 (10:17 -0500)]
use unused variable to correct code (#1082)

6 hours agoremove unused variables (#1082)
James A. Kupsch [Wed, 14 Jul 2021 15:15:38 +0000 (10:15 -0500)]
remove unused variables (#1082)

6 hours agomake printf format and argument types match (#1082)
James A. Kupsch [Wed, 14 Jul 2021 14:48:11 +0000 (09:48 -0500)]
make printf format and argument types match (#1082)

6 hours agofix broken bool expression that was always true (#1082)
James A. Kupsch [Tue, 13 Jul 2021 21:23:33 +0000 (16:23 -0500)]
fix broken bool expression that was always true (#1082)

6 hours agoadd missing initializer braces (#1082)
James A. Kupsch [Tue, 13 Jul 2021 16:48:49 +0000 (11:48 -0500)]
add missing initializer braces (#1082)

Should be OK without extra brace, but early C++11 required it, and some
versions of gcc complain with -Wmissing-braces

6 hours agomake constructor public so class is usable (#1082)
James A. Kupsch [Tue, 13 Jul 2021 16:47:14 +0000 (11:47 -0500)]
make constructor public so class is usable (#1082)

6 hours agoremove ';' after in-class method definitions (#1082)
James A. Kupsch [Mon, 12 Jul 2021 03:54:45 +0000 (22:54 -0500)]
remove ';' after in-class method definitions (#1082)

6 hours agoeliminate logical op warning (#1082)
James A. Kupsch [Sun, 11 Jul 2021 04:31:12 +0000 (23:31 -0500)]
eliminate logical op warning (#1082)

gcc warns about clauses to a logical operation being identical.
They are identical comparisons but the values are from different
macros and/or enum values.

6 hours agomake implicit double promotions explicit (#1082)
James A. Kupsch [Sun, 11 Jul 2021 01:22:25 +0000 (20:22 -0500)]
make implicit double promotions explicit (#1082)

6 hours agoannotate malloc-like functions (#1082)
James A. Kupsch [Sun, 11 Jul 2021 00:08:01 +0000 (19:08 -0500)]
annotate malloc-like functions (#1082)

6 hours agomake method noexcept, so noexcept expr can be true (#1082)
James A. Kupsch [Sat, 10 Jul 2021 18:13:15 +0000 (13:13 -0500)]
make method noexcept, so noexcept expr can be true (#1082)

6 hours agoadd missing default to switch statement (#1082)
James A. Kupsch [Sat, 10 Jul 2021 02:56:57 +0000 (21:56 -0500)]
add missing default to switch statement (#1082)

6 hours agofix int to void* cast if sizeof(int)<sizeof(void*) (#1082)
James A. Kupsch [Sat, 10 Jul 2021 01:52:07 +0000 (20:52 -0500)]
fix int to void* cast if sizeof(int)<sizeof(void*) (#1082)

6 hours agoeliminate conversion of NULL to non-pointer type (#1082)
James A. Kupsch [Sat, 10 Jul 2021 01:14:14 +0000 (20:14 -0500)]
eliminate conversion of NULL to non-pointer type (#1082)

6 hours agofix variable signedness (#1082)
James A. Kupsch [Sat, 10 Jul 2021 01:09:04 +0000 (20:09 -0500)]
fix variable signedness (#1082)

6 hours agoreplace if stmt with identical branches with then stmt (#1082)
James A. Kupsch [Sat, 10 Jul 2021 01:05:17 +0000 (20:05 -0500)]
replace if stmt with identical branches with then stmt (#1082)

6 hours agofgetc returns an int not a char (#1082)
James A. Kupsch [Sat, 10 Jul 2021 00:02:30 +0000 (19:02 -0500)]
fgetc returns an int not a char (#1082)

6 hours agodo not discard volatile type qualifier in cast (#1082)
James A. Kupsch [Fri, 9 Jul 2021 23:57:27 +0000 (18:57 -0500)]
do not discard volatile type qualifier in cast (#1082)

6 hours agoadd missing #include <assert.h> (#1082)
James A. Kupsch [Fri, 9 Jul 2021 23:51:12 +0000 (18:51 -0500)]
add missing #include <assert.h> (#1082)

6 hours agofix unused vars/params/funcs on aarch64 (#1082)
James A. Kupsch [Fri, 9 Jul 2021 21:25:32 +0000 (16:25 -0500)]
fix unused vars/params/funcs on aarch64 (#1082)

6 hours agofix ambiguous type name warning (#1082)
James A. Kupsch [Tue, 6 Jul 2021 20:48:00 +0000 (15:48 -0500)]
fix ambiguous type name warning (#1082)

struct pair vs std::pair:  made the struct name its typedef'd name

6 hours agoremove always true || sub-expression (#1082)
James A. Kupsch [Tue, 6 Jul 2021 19:12:12 +0000 (14:12 -0500)]
remove always true || sub-expression (#1082)

6 hours agofix possible sprintf buffer overflow (#1082)
James A. Kupsch [Tue, 6 Jul 2021 16:45:23 +0000 (11:45 -0500)]
fix possible sprintf buffer overflow (#1082)

- made buffer big enough hold maximum output to prevent overflow
- changed to snprintf to prevent overflow
- commented out code as buffer was only used in a commented out debug print

6 hours agodelete unnecessary ambiguous forward class decl (#1082)
James A. Kupsch [Tue, 6 Jul 2021 16:09:55 +0000 (11:09 -0500)]
delete unnecessary ambiguous forward class decl (#1082)

6 hours agomake destructor virtual if a virtual method exist (#1082)
James A. Kupsch [Wed, 7 Jul 2021 14:31:01 +0000 (09:31 -0500)]
make destructor virtual if a virtual method exist (#1082)

6 hours agomake printf format and argument signedness match (#1082)
James A. Kupsch [Fri, 2 Jul 2021 16:11:55 +0000 (11:11 -0500)]
make printf format and argument signedness match (#1082)

6 hours agomake printf format and argument types match (#1082)
James A. Kupsch [Thu, 8 Jul 2021 15:51:28 +0000 (10:51 -0500)]
make printf format and argument types match (#1082)

6 hours agoadd compiler annotation to printf-like functions (#1082)
James A. Kupsch [Thu, 8 Jul 2021 15:49:53 +0000 (10:49 -0500)]
add compiler annotation to printf-like functions (#1082)

6 hours agofix var-tracking-assignments warnings (#1082)
James A. Kupsch [Mon, 28 Jun 2021 19:36:09 +0000 (14:36 -0500)]
fix var-tracking-assignments warnings (#1082)

remove -fno-var-tracking-assignments from IntructionsDecoder-aarch64.C as
the warning is never produced for this file (with gcc >6)

add -fno-var-tracking-assigments for InstructionDecoder-power.C
for gcc 6-11, and arch-x86.C for gcc 7, 8 and 9.

6 hours agoremove assert(this) as 'this' should never be null (#1082)
James A. Kupsch [Mon, 28 Jun 2021 19:29:22 +0000 (14:29 -0500)]
remove assert(this) as 'this' should never be null (#1082)

6 hours agoremove obvious null pointer dereference (#1082)
James A. Kupsch [Fri, 25 Jun 2021 16:40:04 +0000 (11:40 -0500)]
remove obvious null pointer dereference (#1082)

6 hours agofix for C++20 removal of std::allocator methods (#1082)
James A. Kupsch [Fri, 25 Jun 2021 15:39:48 +0000 (10:39 -0500)]
fix for C++20 removal of std::allocator methods (#1082)

C++20 removes pointer, construct and destroy from std::allocator

- Define pointer = T* in all language versions
- For C++20 and later use std::construct_at and std::destroy_at
  functions instread of construct and destory mothods

6 hours agomake cmp function object operator() a const func (#1082)
James A. Kupsch [Thu, 24 Jun 2021 20:24:24 +0000 (15:24 -0500)]
make cmp function object operator() a const func (#1082)

STL in C++17 requires this

6 hours agomake Boost and TBB include dirs be system includes (#1082)
James A. Kupsch [Wed, 23 Jun 2021 20:58:05 +0000 (15:58 -0500)]
make Boost and TBB include dirs be system includes (#1082)

This eliminates warnings from gcc 11 and from -Wduplicated-branches

6 hours agofix shadow variable warning, has other brokenness (#1082)
James A. Kupsch [Wed, 23 Jun 2021 06:04:33 +0000 (01:04 -0500)]
fix shadow variable warning, has other brokenness (#1082)

The methods alignStackRanges and findContiguousRange function
are fundamentally broken and need to be rewritten.  Only the
shadow variable warning was fixed.

6 hours agofix duplicate branch warnings (#1082)
James A. Kupsch [Tue, 22 Jun 2021 16:19:04 +0000 (11:19 -0500)]
fix duplicate branch warnings (#1082)

caused by:

- commented out code or the possibiltity that branches should be
  treated differently (commented these out)
- register number for i386 and x86_64 having same ids for corresponding
  32 and 64-bit registers (DISABLED via a pragma for gcc >= 7, does
  not exist in earlier gcc versions)

only ignore -Wduplicated-branches for gcc >= 7

6 hours agoeliminate switch case fall through warnings (#1082)
James A. Kupsch [Wed, 7 Jul 2021 20:59:18 +0000 (15:59 -0500)]
eliminate switch case fall through warnings (#1082)

6 hours agoexplicit base class initialization in constructor (#1082)
James A. Kupsch [Tue, 22 Jun 2021 14:36:15 +0000 (09:36 -0500)]
explicit base class initialization in constructor (#1082)

6 hours agoremove default argument from lambda (#1082)
James A. Kupsch [Mon, 21 Jun 2021 18:25:02 +0000 (13:25 -0500)]
remove default argument from lambda (#1082)

not valid in C++11 (is in C++14 and later).

6 hours agoremove non-C++ compound literal (#1082)
James A. Kupsch [Mon, 21 Jun 2021 18:24:08 +0000 (13:24 -0500)]
remove non-C++ compound literal (#1082)

6 hours agodo not compile empty compilation units (#1082)
James A. Kupsch [Mon, 21 Jun 2021 16:29:33 +0000 (11:29 -0500)]
do not compile empty compilation units (#1082)

3 files in dyninstAPI_RT only contain source code when building the static
library so only compile them for that library when the preprocessor variable
DYNINST_RT_STATIC_LIB is set.

6 hours agofix deprecated implicit copy constructor if dtor (#1082)
James A. Kupsch [Thu, 17 Jun 2021 16:06:43 +0000 (11:06 -0500)]
fix deprecated implicit copy constructor if dtor (#1082)

6 hours agoadd missing copy assignment (#1082)
James A. Kupsch [Wed, 16 Jun 2021 14:52:11 +0000 (09:52 -0500)]
add missing copy assignment (#1082)

Add missing copy assignment operator if a copy constructor is defined.
Made the copy constructor, destructor, and copy assignment be the
default compiler generated version if possible (or deleted them to use
the implicitly generated versions if they were not exported).

The inferiorMap compiler generated version was not correct as it created
copies of pointers that left dangling pointers when the inferiorMap  was
deleted.

6 hours agofix illegal in C empty brace initialization (#1082)
James A. Kupsch [Mon, 2 Aug 2021 15:13:42 +0000 (10:13 -0500)]
fix illegal in C empty brace initialization (#1082)

6 hours agodisable flexible array member warning in C++ (#1082)
James A. Kupsch [Mon, 2 Aug 2021 14:59:12 +0000 (09:59 -0500)]
disable flexible array member warning in C++ (#1082)

trap_mapping_header has a flexible array member which is not allowed
in C++.  This disables the warning for the struct and the initialization.
This struct should be rewritten.

6 hours agofix discard qualifiers: make char* -> const char* (#1082)
James A. Kupsch [Mon, 14 Jun 2021 14:38:11 +0000 (09:38 -0500)]
fix discard qualifiers: make char* -> const char* (#1082)

6 hours agofix non-standard use of __VA_ARGS__ (#1082)
James A. Kupsch [Mon, 14 Jun 2021 14:03:10 +0000 (09:03 -0500)]
fix non-standard use of __VA_ARGS__ (#1082)

Eliminate use of gnu extension of "## __VA_ARGS__" to allow and
empty __VA_ARGS__.  Some printf's had to broken into two statement.
Someday when Dyninst supports C++20, __VA_OPT__(, __VA_ARGS__)
could be used.

6 hours agoremove excess semicolons as reported by -pedantic (#1082)
James A. Kupsch [Fri, 11 Jun 2021 04:38:09 +0000 (23:38 -0500)]
remove excess semicolons as reported by -pedantic (#1082)

6 hours agofix overflow warning for 0x90 assigned to a char (#1082)
James A. Kupsch [Thu, 10 Jun 2021 19:19:55 +0000 (14:19 -0500)]
fix overflow warning for 0x90 assigned to a char (#1082)

6 hours agofix illegal function pointer to void* compare (#1082)
James A. Kupsch [Thu, 10 Jun 2021 19:18:57 +0000 (14:18 -0500)]
fix illegal function pointer to void* compare (#1082)

6 hours agoremove use of GNU binary operator ?: (#1082)
James A. Kupsch [Thu, 10 Jun 2021 19:15:33 +0000 (14:15 -0500)]
remove use of GNU binary operator ?: (#1082)

since the condition only used a pure function, the compiler generates
identical code and only evaluates the condition once (if -O1 or greater)

6 hours agoremove non-C++ variable length arrays (#1082)
James A. Kupsch [Thu, 10 Jun 2021 19:10:51 +0000 (14:10 -0500)]
remove non-C++ variable length arrays (#1082)

6 hours agomake printf format and argument types match (#1082)
James A. Kupsch [Thu, 10 Jun 2021 19:05:06 +0000 (14:05 -0500)]
make printf format and argument types match (#1082)

6 hours agofix shadow identifier warnings (#1082)
James A. Kupsch [Wed, 9 Jun 2021 16:40:18 +0000 (11:40 -0500)]
fix shadow identifier warnings (#1082)

6 hours agoenable more warnings and test compiler support (#1082)
James A. Kupsch [Wed, 9 Jun 2021 16:38:07 +0000 (11:38 -0500)]
enable more warnings and test compiler support (#1082)

There is now a list of potential warning flags to be enabled for C/C++
code.  These potential warning flags are then tested for support in the
selected C and C++ compilers and are enabled if supported.

6 hours agomiscellaneous compiler warning cleanups (#1082)
James A. Kupsch [Tue, 8 Jun 2021 18:32:04 +0000 (13:32 -0500)]
miscellaneous compiler warning cleanups (#1082)

6 hours agoeliminate switch case fall through warnings (#1082)
James A. Kupsch [Wed, 7 Jul 2021 20:57:10 +0000 (15:57 -0500)]
eliminate switch case fall through warnings (#1082)

6 hours agoadd header with compiler annotation macros (#1082)
James A. Kupsch [Wed, 7 Jul 2021 15:36:47 +0000 (10:36 -0500)]
add header with compiler annotation macros (#1082)

compiler_annotations.h contains macros that expand to annotations
based on the compiler and language to add attributes for functions
for statements.  Currently defines three macros:

 - DYNINST_FALLTHROUGH       - indicate that a switch statement is
                                supposed to fall through to the next case
 - DYNINST_PRINTF_ANNOTATION - annotate a function as printf-like
 - DYNINST_SCANF_ANNOTATION  - annotate a function as scanf-like
 - DYNINST_MALLOC_ANNOTATION - mark function as malloc-like

6 hours agoadd missing break statements (#1082)
James A. Kupsch [Tue, 8 Jun 2021 05:53:00 +0000 (00:53 -0500)]
add missing break statements (#1082)

6 hours agocompute num array elements instead of fixed values (#1082)
James A. Kupsch [Fri, 28 May 2021 19:00:08 +0000 (14:00 -0500)]
compute num array elements instead of fixed values (#1082)

6 hours agoremove dynamic_ and dynamic() from fileDescriptor (#1082)
James A. Kupsch [Fri, 28 May 2021 16:27:59 +0000 (11:27 -0500)]
remove dynamic_ and dynamic() from fileDescriptor (#1082)

These are always 0 and unused.  Also remove code that no longer function from
mapped_object::createMappedObject that works around a bug when processing a
32-bit mutatee on a 64-bit system

6 hours agoremove emptyString static members (#1082)
James A. Kupsch [Thu, 27 May 2021 20:07:43 +0000 (15:07 -0500)]
remove emptyString static members (#1082)

6 hours agodelete unnecessary .DS_Store file (#1082)
James A. Kupsch [Thu, 27 May 2021 19:38:04 +0000 (14:38 -0500)]
delete unnecessary .DS_Store file (#1082)

2 days agoMake Dyninst buildable with Clang (#1021)
Tim Haines [Mon, 2 Aug 2021 18:21:07 +0000 (13:21 -0500)]
Make Dyninst buildable with Clang (#1021)

* Use 'typename' in using declarations

* Ignore .machine directives under clang

https://github.com/dyninst/dyninst/pull/631#issuecomment-537659696

* Fix #497

2 weeks agoAdd x86 xsavec instruction (#1074)
Tim Haines [Mon, 19 Jul 2021 19:10:09 +0000 (14:10 -0500)]
Add x86 xsavec instruction (#1074)

3 weeks agoCleanup orphaned code (#1064)
Tim Haines [Wed, 14 Jul 2021 17:45:55 +0000 (12:45 -0500)]
Cleanup orphaned code (#1064)

* Remove 'dummy.C' from dyninstAPI/CMakeLists.txt

* Remove unused scripts/buildstamp

* Remove unused files from parseAPI/CMakeLists.txt

* Remove instructionAPI/src/MainDocPage.C

The usage of this file was removed by 5c88375a7 in 2016.

* Remove stackwalk/src/firstparty.C

This file was abandoned by 44507e6b0 in 2013.

* Remove BPatch_dependenceGraph{Edge,Node}.{C,h}

These files were abandoned by bbc9ff655 in 2009.

* Remove dyninstAPI/src/dummy.C

This file was abandoned by 44507e6b0 in 2013.

* Remove dyninstAPI/src/Relocation/Widgets/CFPatch.C

This has been abandoned since at least 91246b9ca in 2011.

* Remove dyninstAPI/src/InstructionCache.C

This file was never compiled. It seems to be an outdated copy of dataflowAPI/src/InstructionCache.C.

* Remove dyninstAPI/src/BPatch_templates.C

This was orphaned by 44507e6b0 in 2013.

* Remove symtabAPI/src/staticRewrite.C

This was orphaned by 44507e6b0 in 2013.

* Remove dyninstAPI_RT/src/RTheap-svr4.c

This was orphaned by 44507e6b0 in 2013.

* Remove dyninstAPI_RT/src/RTmutatedBinary{_ELF}.c

These were orphaned sometime before 44507e6b0 in 2013. The git history doesn't show when. I'm assuming it was lost in the transition from CVS.

* Remove dyninstAPI_RT/src/RTthread-power.c

This was a holdover from the rs6000 AIX support.

* Remove common/src/tunableConst.h

This has never been part of the build system.

* Remove common/src/List.{h,C}

These were orphaned by 44507e6b0 in 2013.

* Remove common/src/auxvtypes.{h,C}

These should have been removed by cccad8ee.

* Remove common/src/int64iostream.{h,C}

These were orphaned by 44507e6b0 in 2013.

* Remove unused 'timing.h' interface

* Remove unused dyninstAPI/src/clock.h

* Remove unused common/src/mmtimer.c

* Remove common/src/debugOstream.{h,C}

This was abandoned by by 65bd8055 in 2008

* Remove unused common/src/Time.{h,C}

* Remove unused common/src/fraction.{h,C}

* Remove symtabAPI/src/Symtab-deprecated.C

There are no symbols defined by this file.

* Remove common/src/Ident.{h,C}

This was orphaned by 44507e6b0 in 2013.

* Remove parseThat/src/dyninstCompat.v4.C

This should have been removed as part of 63d791419.

* Remove common/src/addrtranslate-static.C

This was orphaned by 44507e6b0 in 2013.

* Remove dyninstAPI/src/asmExterns.h

This was abandoned by 5019a9c5a in 2007.

* Remove dyninstAPI/src/BPatch_typePrivate.h

This was abandoned by b3105c49c in 2008.

* Remove dyninstAPI/src/codebuffer.h

This was added by 936238d in 2010, but never added to the build system.

* Remove parseAPI/h/GraphAdapter.h

This was abandoned by 44507e6b0 in 2013.

* Remove common/src/cstring.h

This was abandoned by f4613dcfe in 2008.

* Remove common/src/keylist.h

This was abandoned by f4613dcfe in 2008.

* Remove common/src/klist.h

This was abandoned by f4613dcfe in 2008.

* Remove common/src/Line.h

This was abandoned by 4b1956db in 2013.

* Remove stackwalk/h/local_var.h

This was abandoned by 44507e6b0 in 2013.

* Remove common/src/LockTraits.h

Was added by a38bacc5 in 2017, but never added to the build system.

* Remove common/src/matherr.h

This was added by 4b1956db in 2013, but was never part of the build system.

* Remove dyninstAPI/src/ntDL.h

This was abandoned by 5c88375a in 2016.

* Remove dyninstAPI/src/NTTypes.h

This was abandoned by 5c88375a78 in 2016.

* Remove dataflowAPI/src/Operations.h

This was abandoned by 5c88375a in 2016.

* Remove common/h/stl_utils.h

This should have been removed by cccad8ee.

* Remove common/src/string-regex.{h,C}

This was abandoned by f1b11229 in 2008.

* Remove stackwalk/{src,h}/sw_c.{h,C}

This was abanded by 44507e6 in 2013.

* Remove elf/src/SystemTap.{h,C}

This was abandoned by 44507e6 in 2013.

* Remove common/src/triple.h

This was abandoned by 5c88375a7 in 2016.

* Remove dataflowAPI/rose/x86InstructionSemantics-notemplate.h

This was added by 8d6626c in 2010, but was never part of the build system.

* Remove unused man files from common/docs

* Remove declaration of 'friend operator<<' from BPatch_basicBlockLoop.h

Its implementation was removed by f3b69f6c8 in 2005.

* Remove declaration of 'friend operator<<' from BPatch_flowGraph.h

Its implementation was removed by f3b69f6c8 in 2005.

* Remove declaration of 'friend operator<<' from BPatch_frame.h

It introduced by 954046f99 in 2005, but never implemented.

* Remove declaration of 'friend operator<<' from CFG.h/Loop

It introduced by 6b2b85ee5 in 2014, but never implemented.

* Remove 'operator<<' from BPatch_sourceBlock

This was abandoned by 0d9f1455cc in 2003.

3 weeks agoConvert TRAMP_*_OFFSET macros to functions (#1073)
Tim Haines [Wed, 14 Jul 2021 16:15:41 +0000 (11:15 -0500)]
Convert TRAMP_*_OFFSET macros to functions (#1073)

The macro for the TRAMP_*_OFFSET_32 cases expanded into `({assert(0); 0;})` which is not legal C++. It was allowed by gcc by extension. Converting them to functions preserves the behavior without code changes. They are made `inline` to prevent ODR violations.

Co-authored-by: Tim Haines <thaines@cs.wisc.edu>
4 weeks agoAdd x86_64 xrstor instruction (#1070)
Tim Haines [Sat, 3 Jul 2021 00:24:37 +0000 (19:24 -0500)]
Add x86_64 xrstor instruction (#1070)

5 weeks agoFix insertion operators in BPatch and Symtab (#1069)
Tim Haines [Mon, 28 Jun 2021 21:00:14 +0000 (16:00 -0500)]
Fix insertion operators in BPatch and Symtab (#1069)

* SymtabAPI::Variable

* Provide an exported operator<< for BPatch_basicBlock

* Provide an exported operator<< for SymtabAPI::Symbol

* Fix operator<< in Symtab/Aggregate and Variable

The existing version never worked because they didn't have exported
symbols and, if they had, led to ambiguous overloads because both
operators were in the global namespace and Variable is a child of
Aggregate. Making operator<< a member function for both allows ADL to
disambiguate.

5 weeks agoRemove Module::getAllVariables (#1066)
Tim Haines [Sun, 27 Jun 2021 19:23:15 +0000 (14:23 -0500)]
Remove Module::getAllVariables (#1066)

It was declared by c848409ec9 in 2009, but never defined.

5 weeks agoRemove valueAdded subdirectory completely (#1065)
Tim Haines [Sun, 27 Jun 2021 01:58:16 +0000 (20:58 -0500)]
Remove valueAdded subdirectory completely (#1065)

The directory was not removed fully by #1063.

5 weeks agoRemove valueAdded subdirectory (#1063)
Tim Haines [Sat, 26 Jun 2021 06:08:38 +0000 (01:08 -0500)]
Remove valueAdded subdirectory (#1063)

The function wrapper example has been moved to the examples repository (https://github.com/dyninst/examples/pull/21). The shared memory example is no longer relevant.

5 weeks agoAdd DWARF4 base type entry encodings to symtabAPI::typeScalar (#1059)
Tim Haines [Sat, 26 Jun 2021 03:09:55 +0000 (22:09 -0500)]
Add DWARF4 base type entry encodings to symtabAPI::typeScalar (#1059)

* Add error message when unable to find size of a baseType

* Inline the default constructor

* Use delegating construtor

* Rename isSigned_ to is_signed

* Inline constructors

* Add new encoding properties

6 weeks agoAdd xsave instruction (#1055)
Tim Haines [Thu, 17 Jun 2021 23:22:30 +0000 (18:22 -0500)]
Add xsave instruction (#1055)

7 weeks agoPrep for release 11.0.1 (#1053) v11.0.1
Tim Haines [Tue, 15 Jun 2021 02:23:43 +0000 (21:23 -0500)]
Prep for release 11.0.1 (#1053)

* Update CHANGELOG

* Bump version to 11.0.1

7 weeks agoFind function by address, not by entry (#1047)
Tim Haines [Fri, 11 Jun 2021 16:40:11 +0000 (11:40 -0500)]
Find function by address, not by entry (#1047)

This was broken by #837

2 months agoFix implicit operand decoding of x86 instructions on non-x86 architectures (#1044)
Xiaozhu Meng [Tue, 1 Jun 2021 01:54:02 +0000 (20:54 -0500)]
Fix implicit operand decoding of x86 instructions on non-x86 architectures (#1044)

2 months agofix Position Independent Executable (PIE) handling (#1042)
kupsch [Fri, 28 May 2021 20:46:23 +0000 (15:46 -0500)]
fix Position Independent Executable (PIE) handling (#1042)

* fix Position Independent Executable (PIE) handling

All functions that determine if an object is a shared library and/or an
executable are now based on a single set of functions in Object-elf.
This make all the functions in the various Dyninst libraries and classes
consistent and also makes Dyninst correctly handle PIE executables.
These functions in Object-elf are based on functions found in elfutils's
elfclassify program (with small improvements to better determine if a
shared library is also an executable).   The new functions in Object-elf
include:

    * isOnlyExecutable()
    * isExecutable()
    * isSharedLibrary()
    * isOnlySharedLibrary()
    * isLoadable()
    * isDebugOnly()
    * isLinuxKernelModule()

Symtab exposes some of these functions through its public API.  isExec()
now correctly handles PIE executables, and two new functions were added
to determine if the underlying file is a shared library, an executable,
or both.  These function are:

    * isExec()            (isExecutable() and not isSharedLibrary())
    * isExecutable()
    * isSharedLibrary()

* remove unnecessary assert

2 months agoFixing calling `dwarf_getabbrevcode` and refactoring debug logging in common (#1037)
Xiaozhu Meng [Fri, 28 May 2021 20:00:29 +0000 (15:00 -0500)]
Fixing calling `dwarf_getabbrevcode` and refactoring debug logging in common (#1037)

* 1. Fix segfault in dwarf_getabbrevcode. Do not call dwarf_getabbrevcode when the input is DWARF_END_ABBREV
2. Refactor common deubg logging to avoid evaluating logging arguments when logging is not enabled

* Remove call to dwarf_getabbrevcode().

Co-authored-by: Sasha Nicolas <sasha@cs.wisc.edu>
2 months agoSearch for 'version.h' when determining version for TBB (#1041)
Tim Haines [Thu, 27 May 2021 21:21:53 +0000 (16:21 -0500)]
Search for 'version.h' when determining version for TBB (#1041)

2020.1.1 renamed 'tbb_stddef.h' to 'version.h'

2 months agoFix data races and asserts discovered on Power (#1038)
Xiaozhu Meng [Thu, 27 May 2021 20:51:24 +0000 (15:51 -0500)]
Fix data races and asserts discovered on Power  (#1038)

* Use thread-safe source and target edge copy methods to iterate edges during finliazation

* Use std::map::find rather than [] to avoid corruption of a power decoding table

* More fixes for parsing Power binaries:
1. convert asserts in slicing to debug logging
2. copy block edge list during finalization when determining function's block list

* Convert asserts to debug logging when setting a function's return status

These asserts indeed represent errors where parsing has gone wrong in some fashion,
but these errors are not necessarily fatal overall.

2 months agoRemove the use of C++17's structured binding (#1036)
bbiiggppiigg [Wed, 26 May 2021 23:53:35 +0000 (23:53 +0000)]
Remove the use of C++17's structured binding (#1036)

We only require C++11 at this time.

2 months agoSkip parsing of blocks whose code buffer is null (#1033)
Xiaozhu Meng [Wed, 26 May 2021 16:26:28 +0000 (11:26 -0500)]
Skip parsing of blocks whose code buffer is null (#1033)

2 months agoRemove debug printing that causes large output (#1029)
bbiiggppiigg [Sun, 16 May 2021 05:09:05 +0000 (05:09 +0000)]
Remove debug printing that causes large output (#1029)

* remove debug cout

* remove unused backup code

* add common_parsing_printf as the way of outputing parsing related information in common

* change the usage of cout/cerr to common_parsing_printf

* remove the reuse of environmental variable as suggested

2 months agoFix catch block parsing (#1030)
Xiaozhu Meng [Fri, 14 May 2021 19:42:41 +0000 (14:42 -0500)]
Fix catch block parsing (#1030)

The start address of a catch block is specified with a 2, 4, or 8 byte value.
SymtabAPI uses a 8-byte integer and properly clip the value when reading it.
However, there is an add to the read value, which will cause the final result
to wrap around under its specified size (such as 4-byte), but not under 8-byte.

2 months agoDo not treat symbols in any text sections as data (.text, .init, or .fini) (#1026)
Xiaozhu Meng [Wed, 12 May 2021 18:17:51 +0000 (13:17 -0500)]
Do not treat symbols in any text sections as data (.text, .init, or .fini) (#1026)

3 months agoAllow usage of SIGILL for signal trampolines (#963)
Xiaozhu Meng [Wed, 21 Apr 2021 21:54:17 +0000 (16:54 -0500)]
Allow usage of SIGILL for signal trampolines (#963)

We only used SIGTRAP as the signal for tramopline.
However, SIGTRAP is always intercepted by GDB, causing it is
almost impossible to debug through signal trampolines.

In this commit, we add a new environment variable DYNINST_SIGNAL_TRAMPOLINE_SIGILL
to control whether we use SIGILL as the signal for trampolines.

If DYNINST_SIGNAL_TRAMPOLINE_SIGILL is set, we use SIGILL as signal trampolines
and the mutator will generate illegal instructions in the mutatee.

In the case of binary rewriting, DYNINST_SIGNAL_TRAMPOLINE_SIGILL should be
consistently set or unset when rewriting the binary and running the rewritten binaries.

3 months agoSet -B and -S when configuring dyninstAPI_RT (#1020)
Stan Cox [Tue, 20 Apr 2021 23:11:03 +0000 (19:11 -0400)]
Set -B and -S when configuring dyninstAPI_RT (#1020)

Set the build directory (-B) and source directory (-S) when configuring dyninstAPI_RT

3 months agoDocumentation updates for v11.0.0 release (#1016) v11.0.0
Tim Haines [Thu, 8 Apr 2021 20:48:12 +0000 (15:48 -0500)]
Documentation updates for v11.0.0 release (#1016)

* Update CHANGELOG

* Set version in cmake/shared.cmake

* Update docs

3 months agoAdd support for instructions with largest opcode in each instruction family (#1014)
bbiiggppiigg [Wed, 7 Apr 2021 20:37:49 +0000 (20:37 +0000)]
Add support for instructions with largest opcode in each instruction family (#1014)

This way any unsupported instruction will be resolved as nop, and won't trigger buffer overflow.

3 months agoUpdate copyrights to 2021 (#1015)
Tim Haines [Wed, 7 Apr 2021 19:28:55 +0000 (14:28 -0500)]
Update copyrights to 2021 (#1015)

NB: Only the copyrights explicitly belonging to Dyninst were updated