1710 Commits

Author SHA1 Message Date
Ben Gruver
dda097947f Fix implementation of equals for BaseTypeReference
This fixes the implementation so it matches what is described in the
documentation for the TypeReference interface. Specifically, it allows
for comparison to a CharSequence
2013-04-17 00:12:20 -07:00
Ben Gruver
36b6a31685 Fix issue with empty superclass when dumping a Ljava/lang/Object; class 2013-04-16 23:19:06 -07:00
Ben Gruver
e591eaf779 Fix issue with .param directive when there are parameters of type D 2013-04-16 22:55:40 -07:00
Ben Gruver
450cdd6c7a Tweak the syntax for the .array-data structure
Now each number is an individual element, instead of the weird
"re-interpret numbers as bytes, concatenate, and then re-interpret
as numbers based on element width" thing that was going on before

Also, only element widths 1, 2, 4 and 8 are allowed
2013-04-16 22:47:21 -07:00
Ben Gruver
d9c50f3f36 Fix IndentingWriter.printUnsignedLongAsHex and printSignedIntAsDec
A previous change had introduced a regression where they were printing
numbers backwards.
2013-04-16 00:26:24 -07:00
Ben Gruver
ec28400394 Switch to new parameter syntax
The new syntax is:
.param p1, firstParamName

which is closer to the existing local syntax:
.local v0, someLocal:I
2013-04-16 00:24:46 -07:00
Ben Gruver
4a2b9ef40c Change totalmethodRegisters and methodParameterRegisters to scoped method attributes 2013-04-15 22:05:07 -07:00
Ben Gruver
dcd5df117a Add token+text for I_LINE imaginary token 2013-04-15 22:05:07 -07:00
Ben Gruver
feed0d1b84 Change syntax of const/high16 and const-wide/16
The literal is now specified as the post-shifted literal value, rather
than the pre-shifted 16 bits
2013-04-15 22:05:03 -07:00
Ben Gruver
38d0921bbb Fix the line number on instruction errors 2013-04-15 21:03:57 -07:00
Ben Gruver
87c1c0e054 Split out the build rule for the parser and tree walker 2013-04-15 20:47:53 -07:00
Ben Gruver
0dceb148f3 Update to latest antlr3/string template 2013-04-15 20:47:53 -07:00
Ben Gruver
6c15046f2b Refactor smali to use dexlib2
Array data instructions aren't working yet
2013-04-15 20:47:00 -07:00
Ben Gruver
ab73502b60 Massage the try blocks before writing them out to a dex file 2013-04-14 18:36:05 -07:00
Ben Gruver
8c3d16b7ee Add logic to TryListBuilder to merge contiguous try blocks with identical handlers 2013-04-14 18:14:06 -07:00
Ben Gruver
5916df9999 Port TryListBuilder from dexlib 2013-04-14 17:17:00 -07:00
Ben Gruver
bddef6af3c Always use one of 2 pre-built ImmutableBooleanEncodedValue instances 2013-04-13 21:44:56 -07:00
Ben Gruver
f24f26738d Add AnnotationVisibility.getVisibility(String) 2013-04-13 21:44:18 -07:00
Ben Gruver
ddf18a996e Add convenience constructor for ImmutableClassDef 2013-04-13 20:19:41 -07:00
Ben Gruver
8979759556 Gracefully handle duplicate fields/methods in baksmali 2013-04-13 18:55:34 -07:00
Ben Gruver
0a18ea7f8b Separate direct/virtual methods and static/instance fields in the ClassDef interface
This is unfortunately required to support not-quite-well-formed dex files
containing duplicate static/instance fields, or duplicate direct/virtual methods,
which dalvik inadvertently allows.

In cases when there are duplicate fields/methods in the same category, we
unambiguously remove/hide the latter duplicate fields/methods.
2013-04-13 16:25:37 -07:00
Ben Gruver
5b99529feb Remove unneeded TODO 2013-04-12 00:03:41 -07:00
Ben Gruver
2363e6e43c Gracefully handle unknown instructions 2013-04-11 23:58:43 -07:00
Ben Gruver
5fa302678c Add support for custom inline tables 2013-04-10 21:14:46 -07:00
Ben Gruver
a55990c876 Re-enable deodexing in baksmali
It's not quite working yet.
2013-04-09 23:45:48 -07:00
Ben Gruver
fd258ad543 Add support for class path entries that look like dalvik-cache entries 2013-04-09 23:44:06 -07:00
Ben Gruver
2887ade533 Remove unneeded/unused getFormat() method in UnresolvedOdexInstruction 2013-04-09 23:43:02 -07:00
Ben Gruver
45dfbd6d58 Remove invalid assert 2013-04-09 23:42:33 -07:00
Ben Gruver
39b3a7c5a9 Fix issue when deodexing invoke-object-init/range instruction 2013-04-09 23:42:20 -07:00
Ben Gruver
ac2686b3fc Add the ability to parse dependencies from odex files 2013-04-09 23:41:27 -07:00
Ben Gruver
7172de2aab Always write out the register info in numeric order 2013-04-09 21:17:38 -07:00
Ben Gruver
c017b06cd0 Add a register info test for the case of multiple start instructions 2013-04-09 20:34:22 -07:00
Ben Gruver
5c6cad2822 Fix an issue when there's a dir with the same base name as a class path entry 2013-04-09 17:42:37 -07:00
Ben Gruver
7e58d497ef Improve the performance of the IndentingWriter 2013-04-09 17:42:33 -07:00
Ben Gruver
a0c24f1c9f Fix issue with how the set of interfaces a class implements is calculated 2013-04-08 23:16:22 -07:00
Ben Gruver
541b934948 Fix an issue when merging two interface types 2013-04-08 22:17:56 -07:00
Ben Gruver
8c2d92d954 Enforce strict reference equality for uninit ref register types 2013-04-08 21:45:22 -07:00
Ben Gruver
3f05570b6b Always use .equals for comparing RegisterType instances 2013-04-08 20:27:35 -07:00
Ben Gruver
de7afc64ca Improve register merging in the case of an unresolved type 2013-04-08 18:43:33 -07:00
Ben Gruver
d87770e69b Add a test framework for baksmali
This also adds a test for register info comments in constructors
2013-04-08 00:09:15 -07:00
Ben Gruver
059e1249b4 Use the correct destination register for invoke-direct on an <init> 2013-04-08 00:09:15 -07:00
Ben Gruver
b6c52bc254 Fix up some of the comments in RegisterType 2013-04-08 00:09:15 -07:00
Ben Gruver
02f1d6cc1a Use the correct register category for the uninitialized "this" reference 2013-04-08 00:09:15 -07:00
Ben Gruver
13993573b2 Fix the calculation of method parameter register in MethodAnalyzer 2013-04-08 00:09:15 -07:00
Ben Gruver
93aa50139c Refactor the way the baksmali options are handled 2013-04-08 00:09:15 -07:00
Ben Gruver
71a580878f Correctly handle fill-array-data instruction when building instruction list 2013-04-08 00:09:15 -07:00
Ben Gruver
c91b03ba45 Add support for generating register information 2013-04-08 00:09:15 -07:00
Ben Gruver
8887625162 Add some getter methods in MethodAnalyzer 2013-04-08 00:09:15 -07:00
Ben Gruver
9cb9c76d50 Add ability to build a ClassPath from a list of files 2013-04-08 00:09:15 -07:00
Ben Gruver
4bf810ee76 Add the parameter register count to the stored state in MethodAnalyzer 2013-04-08 00:09:15 -07:00