1609 Commits

Author SHA1 Message Date
Albert Gorski
8b309d62f4 Use guava's 'Joiner' instead of 'String.join'
This replaces the usage of the Java 8 'String.join' method with guava's
'Joiner' which is Java 6 compatible.
2016-09-22 23:25:11 -07:00
Albert Gorski
8f6f59cc66 Close all smali files after it is finished writing to them.
This is important for instances where smali is invoked through the run method instead of
main.
2016-09-22 23:25:00 -07:00
Ben Gruver
7079014a29 Add more error detail when interfaces can't be fully resolved 2016-08-23 11:38:40 -07:00
Ben Gruver
c9331f2b5b Merge pull request #423 from narayank/invoke-polymorphic
smali/dexlib: deal with invoke-polymorphic / invoke-polymorphic/range.
2016-08-17 17:02:22 -07:00
Narayan Kamath
99b80bbc5a Revert "Add lambda experimental dalvik opcodes"
This reverts commit 144951a9e9e6c87866245f2bdeebf0ebedaa0e38.
2016-08-17 13:15:18 +01:00
Narayan Kamath
afc1f15939 smali/dexlib: deal with invoke-polymorphic / invoke-polymorphic/range.
- Introduces two new instruction formats, 45cc and 4rcc. As the name suggests,
  these instructions are similar to 35c and 3rc, expect that they encode an
  additional constant pool reference in their 4th byte.

- Introduce two new instructions, invoke-polymorphic and
  invoke-polymorphic/range - used to implement signature polymorphism.

- Allow instructions to directly reference the proto_id section of the
  dex file. This involves the introduction of a new kind of reference
  (MethodProtoReference) and has the side effect of cleaning up a fair
  amount of special casing in ProtoPool.

- Disable support for ART version based switches (and remove LambdaTest
  which depends on it). Experimental lambda support and support for ART
  version based switches will be removed in a follow up change.

Bug: 30550796
Test: test-art
Test: ./gradlew build
2016-08-17 13:03:12 +01:00
Ben Gruver
a5d82813f1 Call ContextUtil.getSourcePosition on the debugger manager thread 2016-07-24 15:38:34 -07:00
Ben Gruver
3aad871652 Add more info to troubleshoot crashes related to LazyValue.getValue being null 2016-07-24 15:37:27 -07:00
Ben Gruver
a95d0a43a5 Implement SmaliClass.getPresentation
This fixes an issue when trying to use ctrl+n to find a smali class
2016-07-24 14:37:57 -07:00
Ben Gruver
6f11c52b56 Don't try to resolve smali type references when in dumb mode 2016-07-24 14:06:31 -07:00
Ben Gruver
f8f4e32240 Update smalidea to work with newer versions of IDEA
This moves from using the deprecated DebuggerSupport class to the new
JvmSteppingCommandProvider

This also bumps the minimum required IDEA version to 15
2016-07-24 14:06:31 -07:00
Ben Gruver
2709afc5f8 Bump the version number to 2.1.3 2016-07-16 13:46:49 -07:00
Ben Gruver
c347e68b46 Allow invalid register references in debug items related to locals.
Art doesn't complain about this, so we shouldn't throw an error when
encountering a dex file with something like this.
2016-07-10 21:35:07 -07:00
Ben Gruver
d5c6ffa059 Move existing smali tests to the org.jf.smali package 2016-07-10 20:04:02 -07:00
Ben Gruver
07dc76c03f Switch to jprante's jflex plugin 2016-07-09 13:42:15 -07:00
Ben Gruver
6c6b9f0845 Upgrade to gradle 2.14 2016-07-09 13:41:30 -07:00
Ben Gruver
93100e57b2 Improve how the instance-of + if-eqz/if-nez type propagation works
We now perform the type propagation while analyzing the if-eqz/if-nez
instruction. Additionally, AnalyzedInstruction.setsRegister now has
special case logic to check for this case, so we don't incorrectly
propagate the original type past the if-eqz/if-nez
2016-04-23 14:01:36 -07:00
Ben Gruver
9802cf3428 Propagate the narrowed type for an if-nez after an instance-of 2016-04-23 11:08:21 -07:00
Ben Gruver
7fd5f88caf Merge pull request #391 from allight/new-dex-version
Dex version 37 support
2016-04-04 11:11:49 -07:00
Alex Light
40bbf5c347 Dex version 37 support
Make dexlib able to read and write version 37 dex files.

Bug: 27809626

Change-Id: I3d0ca6201c7abe7763d2fb925e9ee1edbef24230
2016-04-04 11:00:02 -07:00
Ben Gruver
87d10dac27 Add more programmatic-friendly entry points for smali/baksmali
This adds entry points that are more friendly to programmatic usage. E.g.
no calls to System.exit()
2016-02-28 12:19:27 -08:00
Ben Gruver
a198b46e20 Fix issue with parameter list parsing
This fixes an issue that was initially introduced in the smalidea branch
2016-02-28 12:15:22 -08:00
Ben Gruver
11d179bfdb Get rid of the default 6 thread maximum thing 2016-02-28 11:22:16 -08:00
Ben Gruver
616a0738dd Fix the release task for smalidea 2016-02-27 20:11:39 -08:00
Ben Gruver
81e0309ed6 Keep the since/until IDEA versions specified in the plugin.xml 2016-02-27 20:06:20 -08:00
Ben Gruver
5a8a2a47b6 Fix an NPE in SmaliPositionManager.createPrepareRequest 2016-02-27 18:32:53 -08:00
Ben Gruver
d018443797 Return an empty list from SmaliClass.getVisibleSignatures()
Don't return null from a @NotNull method, silly.
2016-02-27 17:42:47 -08:00
Ben Gruver
4d8aeebc07 Fix how SmaliPositionManager gets the current class 2016-02-27 17:39:25 -08:00
Ben Gruver
37fbbe8e15 Submit issues to the smalidea-issues repo
Let's not spam the nice people who watch the smali repo. (I'm looking
at you jcase)
2016-02-27 17:39:03 -08:00
Ben Gruver
82f031210e Add support for java inner classes
It's now possible to reference java inner classes based on what their
name would be in smali
2016-02-27 13:00:19 -08:00
Ben Gruver
66892009f5 Fix a possible NPE in SmaliCodeFragmentFactory 2016-02-27 12:51:26 -08:00
Ben Gruver
3bdedd6380 Fix up the sandbox directory for smalidea tests 2016-02-27 12:50:54 -08:00
Ben Gruver
29d714f71f Conditionally add the smalidea project to the root project
The smalidea project is only added when you're actually in the
smalidea directory
2016-02-26 22:09:08 -08:00
Ben Gruver
ff4c85c5e4 Provide better register type information 2016-02-26 21:13:29 -08:00
Ben Gruver
6417e812e1 Refactor ClassPath to take ClassProviders
This allows for a more general mechanism for providing defined classes
2016-02-26 21:13:29 -08:00
Ben Gruver
aebb205aeb Add better support for conditional expressions for breakpoints 2016-02-20 12:04:48 -08:00
Ben Gruver
1df3869a30 Don't add tools.jar when building the idea project files 2016-02-20 12:04:48 -08:00
Ben Gruver
7b387e06c5 Gracefully handle analysis errors 2016-02-20 12:04:47 -08:00
Ben Gruver
5b2943d89b Check for switch offset validity in the MethodAnalyzer 2016-02-20 12:04:47 -08:00
Ben Gruver
6429b3daa9 Clean up the jar naming
The previous naming was interfering with 'gr install' installing the
artifacts locally.
2016-02-20 12:04:47 -08:00
Ben Gruver
4b337cc04d Allow local search scopes when searching class usages 2016-02-20 12:00:05 -08:00
Ben Gruver
f16ea398a1 Don't require an active debugging session when making a code fragment
This is needed, e.g. when editing a conditional statement in the
breakpoint window.
2016-02-20 12:00:05 -08:00
Ben Gruver
92f8ec50c5 Add the ideadirs task for smalidea 2016-02-14 12:53:56 -08:00
Ben Gruver
df4e74e41c Make smalidea a separate gradle/idea project 2016-02-14 12:53:56 -08:00
Ben Gruver
6e788c8a8e Move META-INF/plugin.xml under resources 2016-02-14 12:50:31 -08:00
Ben Gruver
2e7fe1b8fe Fix the tests that require a real jdk 2016-02-14 12:50:31 -08:00
Ben Gruver
327957ae66 Update for new MethodAnalyzer signature 2016-02-14 12:50:31 -08:00
Ben Gruver
1b00e0a155 Add the .tokens files to the binary jar 2016-02-14 12:50:31 -08:00
Ben Gruver
0be7264eb3 Bump gradle up to 2.11 2016-02-14 12:50:31 -08:00
Ben Gruver
5bdb7ee520 Bump the version to 2.1.2 2016-02-14 12:50:31 -08:00