88 Commits

Author SHA1 Message Date
Ben Gruver
1e655c2e54 Handle unicode filename collisions on mac
Some unicode characters are considered equivalent for filename purposes on mac.
This adds logic to treat these collisions the same way as case sensitivy
collisions are currently handled -- by adding a numeric suffix to the
file/directory anytime there is a collision.

See pull request #789 for more information.
2021-02-16 16:52:15 -08:00
Ben Gruver
fd3e00ab35 Refactor most of the utility classes from util into dexlib2
Now, util only contains the utilities that are needed by smali/baksmali,
but not dexlib2. E.g. the common command line parsing utilities, some path
utilities, etc.

This also reverses the dependency between the util module and dexlib2.
2018-07-01 14:08:33 -07:00
Lanchon
239b64ba00 Fix accidental dependencies on JCommander outside of dexlib2 2018-06-14 15:13:47 -07:00
Ben Gruver
31ad2bc100 Refactor how classpath loading works 2016-09-19 09:08:53 -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
30bdb7fda9 Do a cleanup pass on the various commands/arguments/help text 2016-09-05 10:07:58 -07:00
Ben Gruver
ca48e6f7d0 Revamp the CLI usage/help formatting 2016-05-28 18:52:26 -07:00
Ben Gruver
e474301e60 Revamp how classpath loading works 2016-05-28 18:51:42 -07:00
Ben Gruver
8a5a6e3fc5 Add a --classes parameter to the list vtables command 2016-05-16 16:58:55 -07:00
Ben Gruver
41ec13e81f Remove unneeded commons_cli stuff from util project 2016-05-16 16:58:54 -07:00
Ben Gruver
5a5eafb818 Implement a new command line interface for baksmali 2016-05-16 16:58:53 -07:00
Ben Gruver
912a474644 Merge branch 'master' into smalidea 2015-03-31 20:02:14 -07:00
Ben Gruver
923f5a7d10 Fix a bounds check problem in IndentingWriter 2015-03-20 16:39:07 -07:00
Ben Gruver
75bef01d10 Merge branch 'master' into smalidea 2015-03-18 21:00:32 -07:00
Ben Gruver
32e76b181b Fix up the whitespace normalization in TextUtils.normalizeWhitespace
Previously, all inter-line whitespace was being removed. And it now
normalizes trailing new lines as well
2015-03-17 21:16:36 -07:00
Igor Murashkin
144951a9e9 Add lambda experimental dalvik opcodes
* Add new -X/--experimental flag to [dis]assemble opcodes not in art yet
* Add new opcodes liberate-variable, box-lambda, unbox-lambda,
                  capture-variable, create-lambda, invoke-lambda
* Add support for encoding 25x instructions
* Adds LambdaTest to check new opcodes assemble/disassemble properly

TODO: invoke-lambda-range

Change-Id: I5c8bcbfa8b6cb9a13ef2017fce2d1b7fda6e11c3
2015-03-16 11:40:58 -07:00
Ben Gruver
8c1d8ddef2 Merge branch 'master' into smalidea3 2015-03-04 20:58:14 -08:00
Ben Gruver
ea4074fdcc Don't try to test for reserved file names
Instead, we'll just check os.name
2015-03-01 22:42:48 -08:00
Ben Gruver
bbc11c79e5 Add lexer implementation based on existing smali lexer 2015-01-21 09:32:00 -08:00
Ben Gruver
a4dd1fd25b Make ClassFileNameHandler thread-safe 2015-01-20 19:01:39 -08:00
Ben Gruver
e032f1d8c7 Refactor ClassFileNameHandler
This makes the logic quite a bit easier to follow, and fixes an issue
with the previous implementatation, where it didn't correctly handle
the case when were multiple long names that collided after being
shortened
2015-01-07 17:14:44 -08:00
Ben Gruver
aae58716e7 Fix some javadoc issues 2014-12-28 14:14:19 -08:00
Ben Gruver
d33fd6773c Implement implicit method/field references in baksmali 2014-07-19 20:26:50 -07:00
Ben Gruver
3b5d84c3ae Truncate filenames based on their utf-8 length 2014-02-01 14:43:54 -08:00
Ben Gruver
1d28b32ff5 Refactor the maven upload build stuff
This also adds the required javadoc jars
2014-01-18 11:33:39 -08:00
Ben Gruver
5b411f3447 Add gradle configuration for uploading smali artifacts to maven 2014-01-17 02:04:07 -08:00
Ben Gruver
68564258a3 occured -> occurred 2013-12-08 17:44:15 -08:00
Ben Gruver
6cd686fbf5 Make windows reserved filename detection more robust
This checks for more reserved filenames than just aux
2013-09-14 11:35:53 -07:00
Ben Gruver
d868692e33 Truncate the filename for overly long class names 2013-09-14 11:33:18 -07:00
Ben Gruver
5ff4ee9a3f Add missing copyright/license headers 2013-09-14 00:43:41 -07:00
Ben Gruver
99b46173c5 Generify the IO requirements for writing a dex file
The DexWriter implementations now write to a generic "DexDataStore", instead
of writing directly to a file.

Also, writing of the DebugItems and CodeItems are linked, with the code
items being written to a temporary location, and then the entire code item
section is written as a batch after the debug item section.
2013-09-08 15:30:58 -07:00
Ben Gruver
7e25c35df7 Make baksmali thread safe, and add -j option 2013-05-12 12:31:24 -07:00
Ben Gruver
d38f3a7983 Fix up line number handling to be unsigned int safe 2013-05-03 19:35:47 -07:00
Ben Gruver
936cc551f7 Clean up some TODOs 2013-04-30 21:57:08 -07:00
Ben Gruver
1bf6f23245 Implementation of new generificationified writer functionality 2013-04-27 22:23:30 -07:00
Ben Gruver
3d5423ed2b Tweak how hashCode and equals works for MethodReferences
This fixes an issue where method references weren't being properly
interned when generating a dex file
2013-04-17 00:13:12 -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
7e58d497ef Improve the performance of the IndentingWriter 2013-04-09 17:42:33 -07:00
Ben Gruver
ffe82bdcb5 Fully remove the dependency on the old dexlib from baksmali 2013-04-08 00:09:15 -07:00
Ben Gruver
9531284b1b Port MethodAnalyzer and various dependencies from dexlib 2013-03-30 16:36:27 -07:00
Ben Gruver
31d87776c4 Refactor/rewrite the AnnotatedBytes class and helpers
This allows annotations to be added out-of-order, rather than the previous
requirement of forward-only annotating
2013-03-03 18:00:53 -08:00
Ben Gruver
46cefa3d5b Factor out dependency versions, and upgrade to gradle 14.0 2013-03-03 17:58:02 -08:00
Ben Gruver
60d834f951 Annotate StringDataItems 2013-03-02 15:21:33 -08:00
Ben Gruver
6d607ebe1d Annotate CodeItems 2013-03-02 14:04:51 -08:00
Ben Gruver
373ff22ec6 Beginning of annotated dump implementation 2013-02-24 15:58:24 -08:00
Ben Gruver
bfd74a869e Create AbstractForwardSequentialList util class 2013-02-24 15:30:25 -08:00
Ben Gruver
7d5439950f Fix various issues related to comparing method references. 2012-12-29 14:50:15 -08:00
Ben Gruver
3d0419c963 Track and seek to the current position in RandomAccessFileOutputStream 2012-12-28 17:40:46 -08:00