Releases: Decompollaborate/spimdisasm
Releases · Decompollaborate/spimdisasm
1.15.3
- Don't use append the section name if it is known when disassembling elfs
- This special cases the sections
.text
,.data
,.rodata
and.bss
. - Avoids the redundant
filename_.text/
naming scheme
- This special cases the sections
1.15.2
- Fix hardcoded shift value in alignment directive
1.15.1
- Emit string alignment directives even when the section isn't aligned to a multiple of 8.
- Some projects can have rodata sections aligned to just a multiple of 4, and not emitting the directive in those cases can break their builds
1.15.0
- Change the string guesser to work with multiple levels instead of plainly enabled/disabled and the aggressive toggle.
- The new option is used via the API
GlobalConfig.RODATA_STRING_GUESSER_LEVEL
or via the CLI--rodata-string-guesser level
. - The old
GlobalConfig.STRING_GUESSER
andGlobalConfig.AGGRESSIVE_STRING_GUESSER
options are now deprecated, same as the CLI options--string-guesser
and--aggressive-string-guesser
.- The old
GlobalConfig.STRING_GUESSER = True
is equivalent to the newGlobalConfig.RODATA_STRING_GUESSER_LEVEL = 1
- The old
GlobalConfig.AGGRESSIVE_STRING_GUESSER = True
is equivalent to the newGlobalConfig.RODATA_STRING_GUESSER_LEVEL = 4
- The old
- Meaning of the new levels:
- level 0: Completely disable the guessing feature.
- level 1: The most conservative guessing level. Imposes the following restrictions:
- Do not try to guess if the user provided a type for the symbol.
- Do no try to guess if type information for the symbol can be inferred by other means.
- A string symbol must be referenced only once.
- Strings must not be empty.
- level 2: A string no longer needs to be referenced only once to be considered a possible string. This can happen because of a deduplication optimization.
- level 3: Empty strings are allowed.
- level 4: Symbols with autodetected type information but no user type information can still be guessed as strings.
- The level defaults to 1.
- The new option is used via the API
- Implement string guesser for the data section.
- Controlled by the API
GlobalConfig.DATA_STRING_GUESSER_LEVEL
or via the CLI--data-string-guesser level
. - Decodes strings with the
ASCII
encoding by default. - The meaning of each level are the same as the rodata string guesser.
- The level defaults to 2.
- Controlled by the API
- Add experimental Pascal string guesser.
- Works for both rodata and data sections.
- Follows the same level logic as the C string guesser.
- It is disabled by default.
- Start emitting
.size
directives by default. - Emit
jlabel
instead ofdlabel
for jumptable labels by default - Emit
dlabel
instead ofdlabel
for data, rodata and bss symbols by default
1.14.3
- Failcheck for non aligned doubles
- (Hopefully) Fix same-vram overlays using symbols from other overlays
elfObjDisasm
: Can now disassemble sections with arbitrary namesdisasmdis
: Disable pseudo instructions by default
1.14.2
- Actually add
py.typed
topyproject.toml
- Use
bytearray
as little as possible writeBytearrayToFile
is now deprecated, usewriteBytesToFile
instead
1.14.1
- Emit a previous alignment directive for strings.
- Ensures strings are always word aligned
- Purge
.balign
directive in favor of.align
directive - Add
py.typed
file. Whoops
1.14.0
- Try to support better N32 PIC programs.
- The current issue was spimdisasm was not able to properly generate symbol references for
$gp
accesses. - GOT table now gets its own address from the reginfo instead of the dynamic table.
- Accesses pointing outside the GOT table are tried to be redirected to
sdata
,srdata
andsbss
sections.
- The current issue was spimdisasm was not able to properly generate symbol references for
- Implement
--dyn-syms
on readelf-like mode. - Minor improvements to readelf output format
1.13.3
- Fix not writing to subfolders properly when a csv filesplit entry has a slash on its name.
1.13.2
- Add support for
.dummy
section in csv file split format - Add readelf's
--section-headers
flag to elfObjDisasm