Bill Williams [Thu, 20 Mar 2014 18:28:11 +0000 (13:28 -0500)]
Test whether boost 1.40 on Ubuntu 10 works cleanly now
Bill Williams [Wed, 19 Mar 2014 21:00:02 +0000 (16:00 -0500)]
We weren't ensuring that our section's alignment was at least equal to its data's alignment. Fixed.
Bill Williams [Wed, 19 Mar 2014 20:59:33 +0000 (15:59 -0500)]
Types changed in the linkMap and ppc32 didn't build cleanly; fixed.
Matthew LeGendre [Wed, 9 Apr 2014 23:15:33 +0000 (16:15 -0700)]
Fixes for BGQ functionality to kick threads out of locks during emergency shutdowns
Matthew LeGendre [Wed, 9 Apr 2014 23:14:14 +0000 (16:14 -0700)]
Fix BGQ compilation errors with new Boost based mutex/condvar system
Matthew LeGendre [Fri, 4 Apr 2014 22:23:41 +0000 (15:23 -0700)]
Fix problem with storing pretty names for inlined subroutines
Bill Williams [Mon, 17 Mar 2014 19:42:01 +0000 (14:42 -0500)]
Default to Boost_NO_BOOST_CMAKE because of boost bugs
Bill Williams [Mon, 10 Mar 2014 20:52:11 +0000 (15:52 -0500)]
Force boost >= 1.41.0
Bill Williams [Mon, 10 Mar 2014 19:26:20 +0000 (14:26 -0500)]
Add link dependency on Elf_X since we actually use it
Bill Williams [Fri, 7 Mar 2014 21:12:03 +0000 (15:12 -0600)]
Don't add link directories; trust boost_libraries to get things right
Bill Williams [Fri, 7 Mar 2014 16:59:14 +0000 (10:59 -0600)]
Remove last occurence of shared_dynamic_cast, which is deprecated in favor of dynamic_pointer_cast
Bill Williams [Fri, 28 Feb 2014 22:34:02 +0000 (16:34 -0600)]
Add boost system dependency, as thread doesn't take care of it automatically
Bill Williams [Fri, 28 Feb 2014 21:15:48 +0000 (15:15 -0600)]
Thread library doesn't always work, but libraries should now
Bill Williams [Thu, 27 Feb 2014 20:58:42 +0000 (14:58 -0600)]
Allow us to link against boost shared libraries
Bill Williams [Fri, 28 Feb 2014 15:54:29 +0000 (09:54 -0600)]
Build fixes for Linux
Paradyn [Tue, 25 Feb 2014 19:40:15 +0000 (13:40 -0600)]
Clean up some missed exports & uninitialized variables.
Paradyn [Fri, 21 Feb 2014 20:28:11 +0000 (14:28 -0600)]
Handle Windows' need to process .reloc and adjust the load address appropriately to handle ASLR-enabled binaries.
Paradyn [Fri, 21 Feb 2014 20:27:27 +0000 (14:27 -0600)]
Massive simplifications to RTlib initialization process: run it once and only once via the library's on-load code, and adjust anything we need to by setting variables later.
Paradyn [Fri, 21 Feb 2014 20:26:01 +0000 (14:26 -0600)]
Update to use boost mutexes and condition variables
Paradyn [Wed, 5 Feb 2014 17:19:02 +0000 (11:19 -0600)]
Merge branch 'master' of ssh://follis/p/paradyn/development/bill/head/dyninst
Bill Williams [Wed, 5 Feb 2014 17:17:38 +0000 (11:17 -0600)]
Merge branch 'ssj_boost_mutex' of ssh://git.dyninst.org/pub/dyninst
Conflicts:
common/src/dthread-unix.C
Paradyn [Tue, 4 Feb 2014 20:10:12 +0000 (14:10 -0600)]
More windows fixes
Paradyn [Tue, 4 Feb 2014 20:10:12 +0000 (14:10 -0600)]
More windows fixes
Matthew LeGendre [Tue, 4 Feb 2014 18:52:32 +0000 (10:52 -0800)]
Merge branch 'master' of git.dyninst.org:/pub/dyninst
Matthew LeGendre [Tue, 4 Feb 2014 00:56:12 +0000 (16:56 -0800)]
Remove prints that were triggering when disassembling libraries under findMain
Matthew LeGendre [Mon, 3 Feb 2014 23:15:24 +0000 (15:15 -0800)]
Allow Linux to build while implementing memory usage interface
Matthew LeGendre [Mon, 3 Feb 2014 23:10:30 +0000 (15:10 -0800)]
Merge branch 'master' of git.dyninst.org:/pub/dyninst
Matthew LeGendre [Mon, 3 Feb 2014 23:09:59 +0000 (15:09 -0800)]
Fix issue with dwarf range offsets being used with incorrect base addresses.
Emily Jacobson [Mon, 3 Feb 2014 21:53:04 +0000 (15:53 -0600)]
Moved r_debug assert to the Linux runDYNINSTBaseInit()
Emily Jacobson [Thu, 30 Jan 2014 17:54:30 +0000 (11:54 -0600)]
Install public dataflowAPI headers
Emily Jacobson [Thu, 30 Jan 2014 17:45:40 +0000 (11:45 -0600)]
Fix accumulate() in alias.isAlias case to record transfer func
whose target is the current target (rather than alias.target).
Emily Jacobson [Thu, 30 Jan 2014 17:43:06 +0000 (11:43 -0600)]
Handle cyclic dependencies in fixpoint algorithm in stackanalysis
Matthew LeGendre [Mon, 27 Jan 2014 18:45:41 +0000 (10:45 -0800)]
Merge branch 'master' of git.dyninst.org:/pub/dyninst
Conflicts:
CMakeLists.txt
Emily Jacobson [Mon, 27 Jan 2014 16:36:42 +0000 (10:36 -0600)]
Updated parseAPI documentation PDF (missed in previous commit)
Emily Jacobson [Mon, 27 Jan 2014 16:35:26 +0000 (10:35 -0600)]
Fixed SymtabAPI documentation example 3 to use current API
Emily Jacobson [Wed, 22 Jan 2014 19:10:39 +0000 (13:10 -0600)]
Export r_debug from the RTlib on Linux and
verify that it's properly present before trying to use.
Bill Williams [Fri, 17 Jan 2014 22:12:31 +0000 (16:12 -0600)]
Clean up bad merge
Bill Williams [Wed, 15 Jan 2014 19:51:31 +0000 (13:51 -0600)]
CMake 2.6 compatibility fixes.
More messages during build
Bill Williams [Wed, 15 Jan 2014 19:51:15 +0000 (13:51 -0600)]
Warning cleanup
Josh Stone [Fri, 17 Jan 2014 02:44:54 +0000 (18:44 -0800)]
Merge branch 'findMain'
Emily Jacobson [Thu, 16 Jan 2014 20:06:12 +0000 (14:06 -0600)]
isTailcall fix: fallthroughs are not tailcalls
Josh Stone [Wed, 15 Jan 2014 19:20:32 +0000 (11:20 -0800)]
dyninstAPI: Set image::findMain's findings as LOCAL/INTERNAL
When we look for new symbols in image::findMain, it's not really the
intent to make these global/exported symbols. It doesn't matter so much
for live processes, but these shouldn't be exported in rewritten
binaries. This patch sets them as LOCAL and INTERNAL instead.
Note, this is only for Linux and FreeBSD, but Windows may want it too.
Matthew LeGendre [Wed, 15 Jan 2014 00:10:57 +0000 (16:10 -0800)]
Merge branch 'master' of git.dyninst.org:/pub/dyninst
Conflicts:
CMakeLists.txt
Josh Stone [Tue, 14 Jan 2014 20:34:10 +0000 (12:34 -0800)]
dyninstAPI: Expand powerpc support in image::findMain
First, this function needs to respect the ELF entry address, rather than
assuming that entry is at the start of the .text section. This was
already handled in x86, so we just need the same in powerpc.
Second, we need to add ppc64 support to the section which currently
handles ppc32. This requires dereferencing .opd indirection, and ppc64
also uses a TOC-based load which the current dataflowAPI code can't
handle. For this case, just use a simple InstructionAPI eval with the
known TOC r2 register.
Josh Stone [Tue, 14 Jan 2014 21:39:36 +0000 (13:39 -0800)]
dyninstAPI: Let image::findMain inspect PIE too
Position-independent executables (PIE) are generally indistinguishable
from any other shared object, but we still need to find main() in these
when they're stripped. One clue is the presence of INTERP, which PIEs
will always have. (Some DSOs also have INTERP, but this is rare.)
Josh Stone [Tue, 14 Jan 2014 22:14:39 +0000 (14:14 -0800)]
Fix AddressSpace initialization order
Josh Stone [Tue, 14 Jan 2014 22:14:22 +0000 (14:14 -0800)]
Fix another unused parameter
Josh Stone [Tue, 14 Jan 2014 22:12:10 +0000 (14:12 -0800)]
Better warning fix for unused parameters
Commit
f284f869b0b4 turned unused parameters into unused "dummy"
variables, which gcc 4.8 still warns about. Using the parameter in a
void expression is a more reliable workaround.
Emily Jacobson [Tue, 14 Jan 2014 17:03:16 +0000 (11:03 -0600)]
Fix to handleCondDirExits
Emily Jacobson [Thu, 9 Jan 2014 17:53:44 +0000 (11:53 -0600)]
Removed nonexistent API call in ParseAPI::Block documentation
Bill Williams [Mon, 13 Jan 2014 20:14:43 +0000 (14:14 -0600)]
Finish the plumbing to ensure that added libraries including the RTlib get DT_NEEDED = SONAME.
Bill Williams [Mon, 13 Jan 2014 19:08:24 +0000 (13:08 -0600)]
Warning fix
Bill Williams [Mon, 13 Jan 2014 19:08:17 +0000 (13:08 -0600)]
Build fix
Bill Williams [Fri, 10 Jan 2014 23:08:12 +0000 (17:08 -0600)]
fileName() returns SONAME if present now, for proper DT_NEEDED updates when rewriting
Bill Williams [Fri, 10 Jan 2014 23:07:33 +0000 (17:07 -0600)]
Re-transpose arguments, because CMake 2.6 is dumb
Bill Williams [Fri, 10 Jan 2014 19:06:35 +0000 (13:06 -0600)]
Proper fix for building RTlib under CMake 2.6
Bill Williams [Thu, 9 Jan 2014 21:34:21 +0000 (15:34 -0600)]
Two more CMake 2.6 fixes: proper order of arguments, and only use LINK_PRIVATE where it's supported.
Bill Williams [Thu, 9 Jan 2014 16:44:21 +0000 (10:44 -0600)]
Fixed a CMake 2.6 bug where it wouldn't recognize libdwarf_imp as a target (and thus wouldn't add a libelf_imp dependency) if we weren't building our own libdwarf. Also cleaned up indentation (as in, it exists now in these CMake files).
Matthew LeGendre [Tue, 7 Jan 2014 20:33:30 +0000 (12:33 -0800)]
Increase BG/Q attach timeout to five minutes.
Matthew LeGendre [Tue, 7 Jan 2014 18:31:01 +0000 (10:31 -0800)]
Merge branch 'master' of git.dyninst.org:/pub/dyninst
# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.
Matthew LeGendre [Tue, 7 Jan 2014 18:28:50 +0000 (10:28 -0800)]
Change __FILE__ to FILE__ prints in stackwalker to shorten logs
Matthew LeGendre [Tue, 7 Jan 2014 18:28:07 +0000 (10:28 -0800)]
Fix PC/BGQ crashes on attach timeout
Matthew LeGendre [Tue, 7 Jan 2014 18:26:27 +0000 (10:26 -0800)]
Implement PC memory usage interface on BGQ
Matthew LeGendre [Tue, 7 Jan 2014 18:19:20 +0000 (10:19 -0800)]
Fix issue with optimization options not being used in RT library build
Bill Williams [Mon, 6 Jan 2014 18:56:30 +0000 (12:56 -0600)]
WIP for testing: properly track springboard locations persistently and per-process, rather than only persistent tracking of traps, globally
Matthew LeGendre [Fri, 20 Dec 2013 18:31:46 +0000 (10:31 -0800)]
Clean up proccontrol debugging prints. We now print base filenames rather than full paths in printfs
Matthew LeGendre [Fri, 20 Dec 2013 18:31:09 +0000 (10:31 -0800)]
Clean RT library cmake cache before configuring to work around cmake bug where re-running cmake forgets the CMAKE_INSTALL_PREFIX
Bill Williams [Thu, 19 Dec 2013 17:37:52 +0000 (11:37 -0600)]
Fix procset iterator: we can't necessarily initialize the container from NULL. Had better be able to default-construct it though.
Josh Stone [Wed, 18 Dec 2013 00:50:58 +0000 (16:50 -0800)]
symtabAPI: Trim AObject and Object constructors.
Neither of these classes should ever be copied, so declare the standard
copy constructors as private, without implementation; operator= as well.
Remove a few other unimplemented constructors too.
Note: The updates to Object-nt were made by inspection only and should
be checked. Object-coff and Object-xcoff were already using obsolete
AObject constructors; if dead they should be considered for removal.
Josh Stone [Sat, 14 Dec 2013 02:31:02 +0000 (18:31 -0800)]
Initialize thrd in a new FrameNode ctor
Reported by Coverity as UNINIT_CTOR.
Josh Stone [Sat, 14 Dec 2013 02:26:20 +0000 (18:26 -0800)]
Initialize and free PSetFeatures::memset
Reported by Coverity as UNINIT_CTOR
Josh Stone [Fri, 6 Dec 2013 19:32:46 +0000 (11:32 -0800)]
stackwalk: convert some stderr chatter to sw_printf
Josh Stone [Fri, 6 Dec 2013 18:56:55 +0000 (10:56 -0800)]
symtabAPI: Fix Coverity UNINIT_CTOR errors
Josh Stone [Fri, 6 Dec 2013 18:56:46 +0000 (10:56 -0800)]
symlite: Fix Coverity UNINIT_CTOR errors
Josh Stone [Fri, 6 Dec 2013 18:56:37 +0000 (10:56 -0800)]
stackwalk: Fix Coverity UNINIT_CTOR errors
Josh Stone [Fri, 6 Dec 2013 18:56:24 +0000 (10:56 -0800)]
proccontrol: Fix Coverity UNINIT_CTOR errors
Josh Stone [Fri, 6 Dec 2013 18:56:11 +0000 (10:56 -0800)]
parseAPI: Fix Coverity UNINIT_CTOR errors
Josh Stone [Fri, 6 Dec 2013 18:55:53 +0000 (10:55 -0800)]
instructionAPI: Fix Coverity UNINIT_CTOR errors
Josh Stone [Fri, 6 Dec 2013 18:55:40 +0000 (10:55 -0800)]
elf: Fix Coverity UNINIT_CTOR errors
Josh Stone [Fri, 6 Dec 2013 18:55:31 +0000 (10:55 -0800)]
dataflowAPI: Fix Coverity UNINIT_CTOR errors
Josh Stone [Fri, 6 Dec 2013 18:54:58 +0000 (10:54 -0800)]
common: Fix Coverity UNINIT_CTOR errors
Josh Stone [Wed, 4 Dec 2013 00:58:45 +0000 (16:58 -0800)]
Use 'delete' for objects created with 'new'
These two instances were incorrectly using free().
Reported by clang-analyzer as Memory Error : Bad deallocator.
Josh Stone [Fri, 22 Nov 2013 20:13:59 +0000 (12:13 -0800)]
Fix accidental switch fallthrough
These were reported by Coverity as MISSING_BREAK, and it seems true -
they should not be falling through to the next case. Add breaks.
Josh Stone [Fri, 22 Nov 2013 20:11:30 +0000 (12:11 -0800)]
Annotate intentional switch fallthrough
These were reported by Coverity as MISSING_BREAK, but they're
intentionally falling through to the next case. Coverity will infer
this intent if there's a comment in the last line instead of a break.
Josh Stone [Fri, 22 Nov 2013 19:18:11 +0000 (11:18 -0800)]
Reimplement Linux P_copy with fstream
Coverity reported RESOURCE_LEAK for the fds on error paths, and I see it
also doesn't check write() return value. It's much easier to just let
fstream do the buffer management and IO.
Note: P_copy doesn't appear to actually be used anywhere, and the former
destination mode 0 was also suspicious. Maybe it should be removed.
Josh Stone [Fri, 22 Nov 2013 02:44:37 +0000 (18:44 -0800)]
Reimplement getLinuxMaps in real C++
Coverity reported a few OVERFLOW weaknesses in the previous buffer-happy
code. The whole function is much simpler using fstream to read maps.
Josh Stone [Fri, 22 Nov 2013 00:56:36 +0000 (16:56 -0800)]
emitElf: Fix possible sign-extension errors
When you have an expression type "<uint64_t> = <uint16_t> * <uint16_t>",
it sadly takes a detour into signed values. The operands will be
promoted to int, then multiplied, then sign-extended to finally fill
uint64_t. If the multiplication result is greater than 0x7fffffff,
overflowing int, then the top 32 bits of the uint64_t will all be 1s.
(That's if the compiler doesn't blow up the int overflow as undefined.)
The easiest solution is to forcefully promote the operands to the target
size and sign before multiplying.
Reported by Coverity as SIGN_EXTENSION.
Josh Stone [Fri, 22 Nov 2013 00:28:01 +0000 (16:28 -0800)]
stackwalk: Don't leak CallChecker instances
Both AnalysisStepperImpl and WandererHelper create CallCheckers in their
constructors, so they should delete in their deconstructors.
Reported by Coverity as CTOR_DTOR_LEAK.
Josh Stone [Thu, 21 Nov 2013 23:53:04 +0000 (15:53 -0800)]
proccontrol: Flatten up_notify as a member of int_notify
In the int_notify ctor, up_notify is newed, but this member is never
deleted. Since this object never changes, it doesn't need to be a
pointer at all, so make it a direct member.
However, int_notify is a singleton that's never deleted, so the overall
leakiness isn't really changed here.
Reported by Coverity as CTOR_DTOR_LEAK.
Josh Stone [Thu, 21 Nov 2013 23:34:44 +0000 (15:34 -0800)]
symlite: Use pread rather than lseek save/restore
In SymLite::getInterpreterName, it was doing a SEEK_CUR, SEEK_SET,
read(), then SEEK_SET back to the original offset. This can all be
replaced by using pread() to read from any offset without affecting the
actual file offset.
The former lseeks triggered Coverity CHECKED_RETURN & NEGATIVE_RETURNS.
Josh Stone [Thu, 21 Nov 2013 04:37:44 +0000 (20:37 -0800)]
common: Fix a sizeof error in calloc/realloc
An allocation resulting in (anno_list_t*) should not use the pointer
size, but rather sizeof(anno_list_t). It just happened to be harmless
here because anno_list_t is itself typedef void*, so the same size.
Reported by Coverity as SIZEOF_MISMATCH.
Josh Stone [Thu, 21 Nov 2013 01:01:55 +0000 (17:01 -0800)]
patchAPI: Remove 'during' before destroying it
In PatchParseCallback::remove_edge_cb, if it has pe->points_.during,
then this is both destroyed and removed from PatchFunctions. However,
PatchCallback::destroy will delete the point if not batching, and
PatchFunction::remove dereferences it, so destroy must come after.
Reported by Coverity as USE_AFTER_FREE.
Josh Stone [Thu, 21 Nov 2013 00:55:09 +0000 (16:55 -0800)]
proccontrol: Avoid dereferencing a deleted 'this'
In linux_process::preTerminate, a debug message asking, "Is this irony?"
has its own irony by calling getPid() when 'this' was just deleted.
Reported by Coverity as USE_AFTER_FREE.
Josh Stone [Thu, 21 Nov 2013 00:47:44 +0000 (16:47 -0800)]
symlite: Don't use a delete pointer
In SymElfFactory::closeSymbolReader, if 'ser' isn't in open_symelfs,
then it is deleted, so the function should return without using 'ser'
any more.
Reported by Coverity as USE_AFTER_FREE.
Josh Stone [Thu, 21 Nov 2013 00:18:56 +0000 (16:18 -0800)]
proccontrol: Fix a copy-paste typo in ppc_process::readInsnForSS
After iterating over all of map mm_for_ss, this function will create a
new mem_response for the request. If that reports isReady() right away,
then the memcpy incorrectly copies from the previous map iterator, which
is now exhausted (==end()). This appears to be a copy-paste typo of the
memcpy from within the for loop, and this memcpy should use new_resp.
Reported by Coverity as INVALIDATE_ITERATOR.
Josh Stone [Thu, 21 Nov 2013 00:10:47 +0000 (16:10 -0800)]
elf: Fix iteration in the destructor
In Elf_X::~Elf_X, the loop over elf_x_by_fd returns after it finds an
erases its element. The loop over elf_x_by_ptr should do the same.
It's actually an error to continue the for loop with ++iter, because
map::erase() invalidates its iterator.
Reported by Coverity as INVALIDATE_ITERATOR.
Josh Stone [Wed, 20 Nov 2013 23:49:33 +0000 (15:49 -0800)]
Assert that dwarf_loclist_from_expr_a returns cnt==1
Coverity reports ARRAY_VS_SINGLETON in DwarfWalker::decodeExpression,
because the address of a singleton, &descs, is passed with cnt to
decodeLocationListForStaticOffsetOrAddress, which treats it as an array.
Without knowledge of cnt, the analyzer thinks this could be source of
memory corruption.
In fact, dwarf_loclist_from_expr_a always sets listlen (cnt) to 1 on
success. If we assert this, then the analyzer can tell that the
singleton "array" bound is fine.
Josh Stone [Wed, 20 Nov 2013 23:02:05 +0000 (15:02 -0800)]
dataflowAPI: Correct an assertion test
Based on surrounding context, it seems clear that this assert meant to
test equality, not the result of assignment.
Reported by Coverity as ASSERT_SIDE_EFFECT.
Bill Williams [Fri, 13 Dec 2013 22:27:59 +0000 (16:27 -0600)]
We were double-adding field sizes to structs when they came from DWARF. This fixes that; we still need to add field sizes in cases where users create their own data types.
Bill Williams [Fri, 13 Dec 2013 20:33:25 +0000 (14:33 -0600)]
Indirect tail calls shouldn't count as unresolved control flow for instrumentation purposes.