Ben Gruver
219bdff2d1
Properly implement the art <-> api version map
2016-10-02 16:05:22 -07:00
Ben Gruver
c2231759f5
Fix the proguard keep rules for smali/baksmali
2016-10-02 16:04:29 -07:00
Ben Gruver
59256149f1
Add functionality for efficient multi-dex writing with DexPool
...
This adds support to DexPool for mark()/reset(), which can be used to
"rollback" the last added class in case it caused a constant pool overflow.
This also adds a "DexWriter.hasOverflowed()" helper method to determine if
any of the size-constrained pools have overflowed.
2016-10-02 12:18:52 -07:00
Ben Gruver
6f8366a7a3
Fix the default classpath dir for an input file in the current directory
2016-10-02 12:18:52 -07:00
Ben Gruver
af8a063472
Set the minimum oat version for the fixed post-default-method vtable to 87
2016-10-02 12:18:52 -07:00
Ben Gruver
67171366db
Reparent interface methods in a vtable
...
These are now reparented at the point where a invoke-virtual/quick
is being resolved, if needed
2016-10-02 12:18:52 -07:00
Ben Gruver
dbd9db303a
Tweak ZipDexContainer so it doesn't keep an open ZipFile
2016-10-02 12:18:51 -07:00
Ben Gruver
ab20c37fd0
Fix up the post-default interface generation
2016-10-01 17:07:18 -07:00
Ben Gruver
37f5436932
Allow interning classes into a DexPool externally
2016-10-01 17:07:18 -07:00
Ben Gruver
9c039ef1de
Implement ReflectionUtils.dexToJavaName
2016-10-01 17:07:18 -07:00
Ben Gruver
7f20300b92
Change DexInputEntry.loadDexFile to accept an Opcodes object instead of an api
2016-10-01 17:07:18 -07:00
Ben Gruver
8f27f45fb1
Add Opcodes.getDefault
...
This replace various uses of hardcoded Opcodes.forApi() with
Opcodes.getDefault() or other alternatives as applicable
2016-10-01 17:07:18 -07:00
Ben Gruver
0de5ef0ce7
Add support for the buggy post-default method vtable generation
...
This replicates the buggy vtable generation logic for Android 7.0
2016-10-01 17:07:17 -07:00
Ben Gruver
7cb0937324
Add the ability to specify the oat version to use when listing vtables
2016-09-24 18:26:35 -07:00
Ben Gruver
a54523e080
More default method vtable fixes
2016-09-24 18:16:55 -07:00
Ben Gruver
8081311d30
Implement toString for Method/Field/Proto references
2016-09-24 18:15:07 -07:00
Ben Gruver
17054d5c3d
Load oat dependencies by default, if present
2016-09-24 18:11:50 -07:00
Ben Gruver
c3270cf991
Don't attempt to list vtables for interface classes
2016-09-24 18:10:52 -07:00
Ben Gruver
158f6b0b44
Add the directory containing the input file as a classpath search dir by default
2016-09-24 18:10:18 -07:00
Ben Gruver
dcc7a2b806
Remove OatDexFile.getOatFile in favor of getContainer
2016-09-24 18:07:26 -07:00
Ben Gruver
bb062e9336
Fix ReflectionUtils.javaToDexName
...
Fixes the conversion for primitive and array types
2016-09-22 19:50:27 -07:00
Ben Gruver
1aa9df3867
Fix the ordering of methods in the post-default-method vtable calculation
2016-09-22 19:49:29 -07:00
Ben Gruver
b7f98c8758
Use --check-package-private-access by default for oat files
2016-09-19 09:08:54 -07:00
Ben Gruver
ecd89816b3
Fix up some minor issues with --normalize-virtual-methods
2016-09-19 09:08:54 -07:00
Ben Gruver
815f023e4e
Use a class reference for interface methods in the vtable
2016-09-19 09:08:54 -07:00
Ben Gruver
41ba26d00a
Improve the canNarrowAfterInstanceOf check when using an empty bootclasspath
...
If the types in question can't be resolved, we just assume that the
narrowing can't happen.
2016-09-19 09:08:54 -07:00
Ben Gruver
12a3d71759
Add the ability to specify an empty bootclasspath
2016-09-19 09:08:54 -07:00
Ben Gruver
1d26e1be09
Rename the list classpath command to list dependencies
2016-09-19 09:08:54 -07:00
Ben Gruver
31ad2bc100
Refactor how classpath loading works
2016-09-19 09:08:53 -07:00
Ben Gruver
4c77ad7617
Minor fixes to OatVersions.txt
2016-09-19 09:08:53 -07:00
Ben Gruver
86459bbb86
Use the specified api level when loading a dex file in the disassemble command
2016-09-19 09:08:53 -07:00
Ben Gruver
fb10b5731c
Add AnalysisArguments.loadClassPathForDexFile
2016-09-19 09:08:53 -07:00
Ben Gruver
7e8afc4d8a
Clean up DexInputCommand a bit
2016-09-19 09:08:53 -07:00
Ben Gruver
12a3fd2712
Fix an issue when using the list classpath command with an odex file
2016-09-19 09:08:53 -07:00
Ben Gruver
5544281ed6
Clean up some lint in ClassPath/ClassProto
2016-09-19 09:08:53 -07:00
Ben Gruver
db9f86dfdd
Make getRegisterType throw AnalysisException instead of ExceptionWithContext
...
This will cause MethodAnalyzer to print more information when this occurs
2016-09-19 09:08:53 -07:00
Ben Gruver
26a4f1e603
Fix an issue with instance-of type inference
...
We should only infer the register type after an if-eqz/nez if it has a
single predecessor that is the instance-of instruction.
2016-09-19 09:08:53 -07:00
Ben Gruver
9ec379a561
Add support for vtable generation for post-default method ART
...
The interfaces are iterated over in a different order when populating the
vtable
2016-09-19 09:08:53 -07:00
Ben Gruver
d13be24e27
Don't propagate a non-narrowing conversion through a move
2016-09-17 21:30:28 -07:00
Ben Gruver
9f794030da
Fix how parameter delegates are handled
2016-09-17 21:30:28 -07:00
Ben Gruver
c12b7e6e00
Change the classpath arguments to be split only by a colon
2016-09-17 21:30:28 -07:00
Ben Gruver
c9c8ddb3ef
Don't manually split the classes argument for list vtables
2016-09-17 21:30:28 -07:00
Ben Gruver
fbfe388e40
The list dex command should generate an error when used on a non-zip/oat file
2016-09-17 21:30:28 -07:00
Ben Gruver
d7d995cc2d
Remove the now-unused experimental opcodes flag/functionality
2016-09-17 21:30:28 -07:00
Ben Gruver
30bdb7fda9
Do a cleanup pass on the various commands/arguments/help text
2016-09-05 10:07:58 -07:00
Ben Gruver
149e989994
The list field offsets command doesn't need the --check-package-private-access parameter
2016-09-04 14:09:15 -07:00
Ben Gruver
e7e58a6996
Fix reading a dex file from a zip file
2016-09-04 14:00:01 -07:00
Ben Gruver
99394b3daf
Rework and fix the --resolve-resources parameter
2016-09-04 13:58:54 -07:00
Ben Gruver
fdfb6d10f4
Update OatVersions.txt to version 86
2016-09-04 11:47:04 -07:00
Ben Gruver
763caf1ef6
Add help verbiage for the new syntax for specifying a specific dex entry
...
This also pulls up dex input parameter into the base DexInputCommand
2016-08-30 22:36:15 -07:00