dyninst.git
3 years agoDo not output missing semantics to stderr
Xiaozhu Meng [Fri, 11 Nov 2016 20:24:47 +0000 (14:24 -0600)]
Do not output missing semantics to stderr

3 years agoMerge ARM jump table parsing and instruction semantics into master
Xiaozhu Meng [Fri, 11 Nov 2016 19:59:00 +0000 (13:59 -0600)]
Merge ARM jump table parsing and instruction semantics into master

Conflicts:
common/src/dyn_regs.C
dataflowAPI/rose/semantics/SymEvalSemantics.C
parseAPI/src/BoundFactData.C
parseAPI/src/JumpTablePred.C
parseAPI/src/JumpTablePred.h

3 years agoOnly stop slicing when encoutering missing instruction semantics on ARM
Xiaozhu Meng [Fri, 11 Nov 2016 19:41:04 +0000 (13:41 -0600)]
Only stop slicing when encoutering missing instruction semantics on ARM

3 years agoMerge pull request #226 from dyninst/origin-master
Bill Williams [Fri, 11 Nov 2016 16:57:15 +0000 (10:57 -0600)]
Merge pull request #226 from dyninst/origin-master

line info bugfixes

3 years agoMerge pull request #206 from dyninst/icc_flags
Bill Williams [Fri, 11 Nov 2016 16:56:48 +0000 (10:56 -0600)]
Merge pull request #206 from dyninst/icc_flags

Fix icc warning flags

3 years agoMerge pull request #182 from rafzi/pr3_arch_from_elf
Bill Williams [Fri, 11 Nov 2016 16:56:39 +0000 (10:56 -0600)]
Merge pull request #182 from rafzi/pr3_arch_from_elf

Determine the architecture of an ELF by looking at the file header in…

3 years agoWhen we encounter instructions without instruction semantics, we should stop jump...
Xiaozhu Meng [Fri, 11 Nov 2016 16:17:20 +0000 (10:17 -0600)]
When we encounter instructions without instruction semantics, we should stop jump table analyis.
In such case, if the missing instruction is key to the jump table analysis, we will not be able to
resolve it. If the missing instruction is not relevant to the jump table analysis, the slicing
is including unnecessary instruction. In either case, we should fix things.

3 years agoOn ARM, many jump table reads are one-byte memory reads. Assuming one-byte read yield...
Xiaozhu Meng [Fri, 11 Nov 2016 15:54:00 +0000 (09:54 -0600)]
On ARM, many jump table reads are one-byte memory reads. Assuming one-byte read yields a value in [0,255] would cause too many bogus edges. Disable this heuristics on ARM

3 years agoFix checking of zero flag for table index
Xiaozhu Meng [Fri, 11 Nov 2016 15:49:56 +0000 (09:49 -0600)]
Fix checking of zero flag for table index

3 years agoMerge remote-tracking branch 'upstream/release9.2/fixes/object-elf-arch-defs' into... 182/head
Rafael Stahl [Thu, 10 Nov 2016 23:08:53 +0000 (00:08 +0100)]
Merge remote-tracking branch 'upstream/release9.2/fixes/object-elf-arch-defs' into pr3_arch_from_elf

Conflicts:
symtabAPI/src/Object-elf.C

3 years agoObject-nt: implement getArch
Rafael Stahl [Wed, 28 Sep 2016 14:33:29 +0000 (16:33 +0200)]
Object-nt: implement getArch

3 years agoObject-nt: Fix member function constness
Rafael Stahl [Sun, 25 Sep 2016 19:26:37 +0000 (21:26 +0200)]
Object-nt: Fix member function constness

3 years agoDetermine the architecture of an ELF by looking at the file header instead of the...
Rafael Stahl [Sun, 25 Sep 2016 19:05:11 +0000 (21:05 +0200)]
Determine the architecture of an ELF by looking at the file header instead of the compiled architecture

3 years agoMerge remote-tracking branch 'origin/origin-master' into origin-master 226/head
Bill Williams [Thu, 10 Nov 2016 22:32:35 +0000 (16:32 -0600)]
Merge remote-tracking branch 'origin/origin-master' into origin-master

3 years agoSafeguard against infinite loop
Bill Williams [Thu, 10 Nov 2016 21:30:43 +0000 (15:30 -0600)]
Safeguard against infinite loop

3 years agoFix for broken libelfs that can't handle translate-in-place on Elf_Data.
Bill Williams [Thu, 10 Nov 2016 20:01:07 +0000 (14:01 -0600)]
Fix for broken libelfs that can't handle translate-in-place on Elf_Data.

3 years agoMerge pull request #225 from dyninst/origin-master
Bill Williams [Thu, 10 Nov 2016 22:03:39 +0000 (16:03 -0600)]
Merge pull request #225 from dyninst/origin-master

LibraryTracker documentation

3 years agoMerge branch 'arm64/feature/semantics' of /home/ssunny/dyninst/dyninst-code into...
Xiaozhu Meng [Thu, 10 Nov 2016 21:48:23 +0000 (15:48 -0600)]
Merge branch 'arm64/feature/semantics' of /home/ssunny/dyninst/dyninst-code into upstream/arm64/feature/semantics

3 years ago1. Add timing statistics for parsing
Xiaozhu Meng [Thu, 10 Nov 2016 21:47:13 +0000 (15:47 -0600)]
1. Add timing statistics for parsing
2. Fix tail call heuristics for ARM
3. Eliminate redundant indirect edges

3 years agoSafeguard against infinite loop
Bill Williams [Thu, 10 Nov 2016 21:30:43 +0000 (15:30 -0600)]
Safeguard against infinite loop

3 years agoMerge pull request #214 from cuviper/attach-thread-sync
Bill Williams [Thu, 10 Nov 2016 21:07:42 +0000 (15:07 -0600)]
Merge pull request #214 from cuviper/attach-thread-sync

proccontrol: Synchronize additional threads found during attach

3 years agoFix for broken libelfs that can't handle translate-in-place on Elf_Data.
Bill Williams [Thu, 10 Nov 2016 20:01:07 +0000 (14:01 -0600)]
Fix for broken libelfs that can't handle translate-in-place on Elf_Data.

3 years agoLibraryTracker documentation 225/head
Bill Williams [Wed, 9 Nov 2016 17:31:16 +0000 (11:31 -0600)]
LibraryTracker documentation

3 years agoMerge branch 'arm64/feature/semantics' of bigking.cs.wisc.edu:/u/s/s/ssunny/dev-home...
Sunny Shah [Thu, 10 Nov 2016 19:16:03 +0000 (13:16 -0600)]
Merge branch 'arm64/feature/semantics' of bigking.cs.wisc.edu:/u/s/s/ssunny/dev-home/dyninst/dyninst-code into arm64/feature/semantics

3 years agoSemantics for immediate variants of LSL, LSR and ASR
Sunny Shah [Thu, 10 Nov 2016 18:24:21 +0000 (12:24 -0600)]
Semantics for immediate variants of LSL, LSR and ASR

3 years agoproccontrol: move thread sync to linux_process, and count neonatal 214/head
Josh Stone [Thu, 10 Nov 2016 02:13:28 +0000 (18:13 -0800)]
proccontrol: move thread sync to linux_process, and count neonatal

3 years agoMerge branch 'upstream/arm64/feature/semantics' of coriander.cs.wisc.edu:/p/paradyn...
Xiaozhu Meng [Mon, 7 Nov 2016 17:37:19 +0000 (11:37 -0600)]
Merge branch 'upstream/arm64/feature/semantics' of coriander.cs.wisc.edu:/p/paradyn/development/xmeng/dyninstapi/dyninst_development/dyninst into upstream/arm64/feature/semantics

3 years agoSemantics for EOR variants and EON
Sunny Shah [Mon, 7 Nov 2016 16:48:58 +0000 (10:48 -0600)]
Semantics for EOR variants and EON

3 years agoSemantics for ORR variants (including two MOV instructions), ORN and AND/ANDS variants
Sunny Shah [Mon, 7 Nov 2016 16:42:47 +0000 (10:42 -0600)]
Semantics for ORR variants (including two MOV instructions), ORN and AND/ANDS variants

The semantics use the newly added LogicalOp enum to identify the type of
logical operation.

3 years agoMerge branch 'upstream/arm64/feature/semantics' of coriander.cs.wisc.edu:/p/paradyn...
Xiaozhu Meng [Mon, 7 Nov 2016 14:51:19 +0000 (08:51 -0600)]
Merge branch 'upstream/arm64/feature/semantics' of coriander.cs.wisc.edu:/p/paradyn/development/xmeng/dyninstapi/dyninst_development/dyninst into upstream/arm64/feature/semantics

3 years agoInstruction decoding fix: Alias ORR to MOV when the first source operand is WZR and...
Sunny Shah [Sun, 6 Nov 2016 23:41:34 +0000 (17:41 -0600)]
Instruction decoding fix: Alias ORR to MOV when the first source operand is WZR and the 'shift'
and 'imm6' fields are both 0.

3 years agofix AddressRange forward declarations
Peter Foley [Sun, 6 Nov 2016 16:35:19 +0000 (11:35 -0500)]
fix AddressRange forward declarations

3 years agoFix warnings
Peter Foley [Sun, 6 Nov 2016 04:41:59 +0000 (00:41 -0400)]
Fix warnings

3 years agofix icc warning flags 206/head
Peter Foley [Wed, 6 Jul 2016 13:58:54 +0000 (09:58 -0400)]
fix icc warning flags

3 years agoproccontrol: Synchronize additional threads found during attach
Josh Stone [Sat, 5 Nov 2016 01:31:28 +0000 (18:31 -0700)]
proccontrol: Synchronize additional threads found during attach

When additional threads are found during the attach process, we should
synchronize to their stopping point, and check for new threads again,
until no new threads are found.  This keeps a more consistent state if
threads are racing to start while we're attaching.

3 years agocommon: include ostream in IBSTree.h
Josh Stone [Fri, 4 Nov 2016 19:06:31 +0000 (12:06 -0700)]
common: include ostream in IBSTree.h

It's needed to solve this error with GCC 6.2:

common/h/IBSTree.h:138:32: error: ‘endl’ is not a member of ‘std’
         stream << node.val_ << std::endl;
                                ^~~

3 years agoMerge branch 'arm64/feature/semantics' of /home/ssunny/dyninst/dyninst-code into...
Xiaozhu Meng [Fri, 4 Nov 2016 18:53:35 +0000 (13:53 -0500)]
Merge branch 'arm64/feature/semantics' of /home/ssunny/dyninst/dyninst-code into upstream/arm64/feature/semantics

3 years agoFix for decoding error in register based load/store instructions
Sunny Shah [Fri, 4 Nov 2016 17:14:35 +0000 (12:14 -0500)]
Fix for decoding error in register based load/store instructions

The shift amount for the second source register in load/store (register)
instructions should depend only on the value of the 'S' field.

3 years agoFix for decoding error in register based load/store instructions
Sunny Shah [Fri, 4 Nov 2016 17:14:35 +0000 (12:14 -0500)]
Fix for decoding error in register based load/store instructions

The shift amount for the second source register in load/store (register)
instructions should depend only on the value of the 'S' field.

3 years agoMerge pull request #171 from pefoley2/lto
Bill Williams [Fri, 4 Nov 2016 15:56:18 +0000 (10:56 -0500)]
Merge pull request #171 from pefoley2/lto

Support building with LTO

3 years agoMerge pull request #212 from cuviper/fix_pc_thread_disappears
Bill Williams [Thu, 3 Nov 2016 21:03:20 +0000 (16:03 -0500)]
Merge pull request #212 from cuviper/fix_pc_thread_disappears

Fix errors when thread disappears during attach

3 years agoMerge pull request #135 from dyninst/release9.2/fixes/line_info
Bill Williams [Thu, 3 Nov 2016 21:02:00 +0000 (16:02 -0500)]
Merge pull request #135 from dyninst/release9.2/fixes/line_info

Line info optimizations

3 years agoUpdated semantics for SBFM and UBFM variants
Sunny Shah [Thu, 3 Nov 2016 19:28:59 +0000 (14:28 -0500)]
Updated semantics for SBFM and UBFM variants

Semantics updated to not make redundant function calls with the same arguments. Also added implementation for DispatcherARM64::getBitfieldMask().

3 years agoRemove redundant stream operator definitions to make CLang happy 135/head
Bill Williams [Wed, 2 Nov 2016 16:38:45 +0000 (11:38 -0500)]
Remove redundant stream operator definitions to make CLang happy

3 years agoAllow reading of operands with a SgAsmBinaryLsr as the root expression
Sunny Shah [Tue, 1 Nov 2016 21:49:40 +0000 (16:49 -0500)]
Allow reading of operands with a SgAsmBinaryLsr as the root expression

3 years agoAdded ability to read operands that have a SgAsmBinaryAsr as the root expression
Sunny Shah [Tue, 1 Nov 2016 20:45:27 +0000 (15:45 -0500)]
Added ability to read operands that have a SgAsmBinaryAsr as the root expression

3 years agoCleanup to get test suite building and passing locally (including some de-confusing...
Bill Williams [Tue, 1 Nov 2016 18:07:04 +0000 (13:07 -0500)]
Cleanup to get test suite building and passing locally (including some de-confusing of stream operators).

3 years agoSemantics for MOVZ, MOVK, MOVN and the MOV variants of MOVZ and MOVN
Sunny Shah [Mon, 31 Oct 2016 22:19:01 +0000 (17:19 -0500)]
Semantics for MOVZ, MOVK, MOVN and the MOV variants of MOVZ and MOVN

Also added enum (MoveWideOp) used in these semantics to determine the
type of move

3 years agoAdded a method to get the target SgAsmExpression when executing
Sunny Shah [Mon, 31 Oct 2016 21:52:30 +0000 (16:52 -0500)]
Added a method to get the target SgAsmExpression when executing
write-back for load/store instructions

3 years agoAdd missing #include from SymReader changes.
Bill Williams [Mon, 31 Oct 2016 16:45:14 +0000 (11:45 -0500)]
Add missing #include from SymReader changes.

3 years agoRevert to dumb pointers for compatibility within line info interfaces, but add Ptr...
Bill Williams [Thu, 27 Oct 2016 21:51:42 +0000 (16:51 -0500)]
Revert to dumb pointers for compatibility within line info interfaces, but add Ptr/ConstPtr typedefs.

3 years agoDisable multi-index serialization so we'll actually link.
Bill Williams [Thu, 27 Oct 2016 17:03:24 +0000 (12:03 -0500)]
Disable multi-index serialization so we'll actually link.

3 years agoSet boost lib layout to system--we're building one set of static libs to link in...
Bill Williams [Thu, 27 Oct 2016 16:27:40 +0000 (11:27 -0500)]
Set boost lib layout to system--we're building one set of static libs to link in invisibly, and they should match the Dyninst toolchain.

3 years agoExplicitly link Symtab against Boost libs
Bill Williams [Wed, 26 Oct 2016 17:12:34 +0000 (12:12 -0500)]
Explicitly link Symtab against Boost libs

3 years agoDisable boost auto-link on Windows and have it always manually link (only).
Bill Williams [Mon, 31 Oct 2016 16:01:46 +0000 (11:01 -0500)]
Disable boost auto-link on Windows and have it always manually link (only).

3 years agoTweak boost as external project settings
Bill Williams [Tue, 25 Oct 2016 16:18:35 +0000 (11:18 -0500)]
Tweak boost as external project settings

3 years agoAdd IDE directory to gitignore
Bill Williams [Mon, 24 Oct 2016 21:49:46 +0000 (16:49 -0500)]
Add IDE directory to gitignore

3 years agoRemove IDE files from repo
Bill Williams [Mon, 24 Oct 2016 21:49:13 +0000 (16:49 -0500)]
Remove IDE files from repo

3 years agoImplement symreader dependency on Windows
Bill Williams [Mon, 24 Oct 2016 18:06:50 +0000 (13:06 -0500)]
Implement symreader dependency on Windows

3 years agoMake parseLineInfoForCU accessible (though it's not used for PE files at present)
Bill Williams [Thu, 20 Oct 2016 21:42:06 +0000 (16:42 -0500)]
Make parseLineInfoForCU accessible (though it's not used for PE files at present)

3 years agoCleanup
Bill Williams [Thu, 20 Oct 2016 16:21:34 +0000 (11:21 -0500)]
Cleanup

3 years agoDisable boost's variadic templates under MSVC, as they're known buggy on some versions.
Bill Williams [Thu, 20 Oct 2016 16:18:27 +0000 (11:18 -0500)]
Disable boost's variadic templates under MSVC, as they're known buggy on some versions.

3 years agoStream out module low/high addresses, not function pointers (which breaks clang,...
Bill Williams [Wed, 19 Oct 2016 21:39:23 +0000 (16:39 -0500)]
Stream out module low/high addresses, not function pointers (which breaks clang, in addition to being wrong).

3 years agoMore Windows cleanup
Bill Williams [Wed, 19 Oct 2016 21:13:57 +0000 (16:13 -0500)]
More Windows cleanup

3 years agoName fix for Windows
Bill Williams [Wed, 19 Oct 2016 20:55:04 +0000 (15:55 -0500)]
Name fix for Windows

3 years agoCode cleanup: we don't need to handle the cases where there's no module range info.
Bill Williams [Wed, 19 Oct 2016 20:10:23 +0000 (15:10 -0500)]
Code cleanup: we don't need to handle the cases where there's no module range info.

3 years agoInterval refactoring.
Bill Williams [Thu, 13 Oct 2016 16:59:40 +0000 (11:59 -0500)]
Interval refactoring.

3 years agoCleanup
Bill Williams [Mon, 10 Oct 2016 16:58:13 +0000 (11:58 -0500)]
Cleanup

3 years agoRefactor module lookup implementation
Bill Williams [Fri, 30 Sep 2016 21:09:34 +0000 (16:09 -0500)]
Refactor module lookup implementation
Remove dead code
Fix up default module construction

3 years agoReplace all object-elf arch_foo defines with dynamic architecture detection.
Bill Williams [Fri, 30 Sep 2016 21:01:17 +0000 (16:01 -0500)]
Replace all object-elf arch_foo defines with dynamic architecture detection.

3 years agoDwarfWalker cleanup
Bill Williams [Fri, 30 Sep 2016 20:59:25 +0000 (15:59 -0500)]
DwarfWalker cleanup

3 years agoAdd pure multi-index container implementation of fast interval-based lookup.
Bill Williams [Fri, 30 Sep 2016 20:52:30 +0000 (15:52 -0500)]
Add pure multi-index container implementation of fast interval-based lookup.

3 years agoInterfaces to byte-swap ElfData buffers between file and memory order.
Bill Williams [Mon, 26 Sep 2016 15:57:18 +0000 (10:57 -0500)]
Interfaces to byte-swap ElfData buffers between file and memory order.

3 years agoSecondary fix for bad inline filenames
Bill Williams [Thu, 22 Sep 2016 21:29:51 +0000 (16:29 -0500)]
Secondary fix for bad inline filenames
Ensures that we're not doing bad partial initialization of string tables by being over-lazy

3 years agoEnsure default module goes at the beginning of _mods so we can avoid lookup-by-name.
Bill Williams [Mon, 19 Sep 2016 21:01:12 +0000 (16:01 -0500)]
Ensure default module goes at the beginning of _mods so we can avoid lookup-by-name.

3 years agoBuild fixup
Bill Williams [Mon, 19 Sep 2016 21:00:51 +0000 (16:00 -0500)]
Build fixup

3 years agoClean up stream operators: warnings, template vs. std::ostream
Bill Williams [Tue, 13 Sep 2016 19:27:01 +0000 (14:27 -0500)]
Clean up stream operators: warnings, template vs. std::ostream

3 years agoFactor out arange parsing and avoid early exit if it's absent
Bill Williams [Tue, 13 Sep 2016 19:26:17 +0000 (14:26 -0500)]
Factor out arange parsing and avoid early exit if it's absent

3 years agoRemove dead code
Bill Williams [Tue, 13 Sep 2016 19:24:58 +0000 (14:24 -0500)]
Remove dead code

3 years agoFix signed/unsigned warning
Bill Williams [Tue, 13 Sep 2016 19:24:22 +0000 (14:24 -0500)]
Fix signed/unsigned warning

3 years agoCleanup so we build cleanly under boost 1.41/gcc 4.4 again.
Bill Williams [Thu, 8 Sep 2016 20:44:05 +0000 (15:44 -0500)]
Cleanup so we build cleanly under boost 1.41/gcc 4.4 again.

3 years agoAdded interface for line info find-with-hint.
Bill Williams [Wed, 7 Sep 2016 18:25:12 +0000 (13:25 -0500)]
Added interface for line info find-with-hint.
Fixed dwarfWalker bug where we doubled up on compensating for one-based indexing.
dwarfWalker now uses/fills a Module's stringtable directly.
StringTables now streamable for debugging.
Inlines use string table entries for filenames.

3 years agoAssorted cleanup. Fixed infinite loop in IBSTree_fast::find.
Bill Williams [Tue, 6 Sep 2016 15:54:13 +0000 (10:54 -0500)]
Assorted cleanup. Fixed infinite loop in IBSTree_fast::find.

3 years agoLine info fixes: nwchem is now running clean. There's a good bit of room for performa...
Bill Williams [Thu, 1 Sep 2016 19:33:21 +0000 (14:33 -0500)]
Line info fixes: nwchem is now running clean. There's a good bit of room for performance improvements (notably in ensuring that we don't have redundant module intervals).

3 years agoLots of refactoring and some optimizations. We're not saving space or time anymore...
Bill Williams [Fri, 26 Aug 2016 22:46:21 +0000 (17:46 -0500)]
Lots of refactoring and some optimizations. We're not saving space or time anymore but at least it's clean and we're only missing ~10k entries (down from ~100k) on nwchem.

3 years agoGut RangeLookup and replace with boost::multi_index_container as our line information...
Bill Williams [Thu, 25 Aug 2016 21:33:54 +0000 (16:33 -0500)]
Gut RangeLookup and replace with boost::multi_index_container as our line information implementation. Still has some obvious performance problems, but appears to work.

3 years agoMake interval trees containers
Bill Williams [Thu, 25 Aug 2016 21:32:17 +0000 (16:32 -0500)]
Make interval trees containers

3 years agoAdded find and lower_bound to RangeLookup.
Bill Williams [Tue, 16 Aug 2016 18:09:53 +0000 (13:09 -0500)]
Added find and lower_bound to RangeLookup.

3 years agoRestore old findModuleByOffset interface in parallel with the new one.
Bill Williams [Mon, 15 Aug 2016 19:32:51 +0000 (14:32 -0500)]
Restore old findModuleByOffset interface in parallel with the new one.

3 years agoMany fixes and optimizations--mostly, moving the interval trees for module ranges...
Bill Williams [Fri, 12 Aug 2016 16:05:35 +0000 (11:05 -0500)]
Many fixes and optimizations--mostly, moving the interval trees for module ranges from one per module to one per symtab with a pointer to the module.

3 years agoInitialize DIE to NULL, rather than default constructing, so it's checkable.
Bill Williams [Wed, 10 Aug 2016 18:55:40 +0000 (13:55 -0500)]
Initialize DIE to NULL, rather than default constructing, so it's checkable.

3 years agoRemove dead file from CMakeLists.
Bill Williams [Fri, 29 Jul 2016 19:31:40 +0000 (14:31 -0500)]
Remove dead file from CMakeLists.

3 years agoCache module DIEs and build ranges as interval trees.
Bill Williams [Fri, 29 Jul 2016 19:31:24 +0000 (14:31 -0500)]
Cache module DIEs and build ranges as interval trees.

3 years agoWarning cleanup.
Bill Williams [Wed, 13 Jul 2016 18:44:45 +0000 (13:44 -0500)]
Warning cleanup.

3 years agoReplace individual linesrc calls with srcfiles, allowing libdwarf to allocate once...
Bill Williams [Tue, 12 Jul 2016 21:00:12 +0000 (16:00 -0500)]
Replace individual linesrc calls with srcfiles, allowing libdwarf to allocate once and us to do lookups by index rather than strcmp.

3 years agoReplace iterative dealloc with dwarf_srclines_dealloc, which should avoid certain...
Bill Williams [Tue, 12 Jul 2016 20:09:50 +0000 (15:09 -0500)]
Replace iterative dealloc with dwarf_srclines_dealloc, which should avoid certain leaks that were inherent in the iterative style.

3 years agoMake Statement's filenames const char* pointing into the string table, not just LineI...
Bill Williams [Tue, 12 Jul 2016 18:58:47 +0000 (13:58 -0500)]
Make Statement's filenames const char* pointing into the string table, not just LineInformation's copies of same.

3 years agoRename emitElf64, fix 32-bit build
Bill Williams [Thu, 2 Jun 2016 16:47:30 +0000 (11:47 -0500)]
Rename emitElf64, fix 32-bit build

3 years agofixes 171/head
Peter Foley [Sun, 15 May 2016 01:08:30 +0000 (21:08 -0400)]
fixes

3 years agolto
Peter Foley [Sat, 14 May 2016 19:28:25 +0000 (15:28 -0400)]
lto