Releases: Decompollaborate/spimdisasm
Releases · Decompollaborate/spimdisasm
1.30.2
1.30.1
[1.30.1] - 2024-09-19
Added
- Add a way to indentate instructions and data.
- May be desirable to be used with IDEs that support collapsing code by
looking at the whitespace of each line. - This can be controlled by setting the
GlobalConfig.ASM_INDENTATION
option. - Defaults to 4.
- May be desirable to be used with IDEs that support collapsing code by
- Add a way to indentate labels within functions.
- May be desirable to be used with IDEs that support collapsing code by
looking at the whitespace of each line. - This can be controlled by setting the
GlobalConfig.ASM_INDENTATION_LABELS
option. - Defaults to 2.
- May be desirable to be used with IDEs that support collapsing code by
Changed
- Assembly now gets indentated by default to 4 spaces (or 2 spaces for labels).
- Use
GlobalConfig.ASM_INDENTATION
andGlobalConfig.ASM_INDENTATION_LABELS
to disable this behavior.
- Use
Fixed
- Prevent generating labels for ignored symbols that are referenced by function
calls (ie in ajal
).
1.30.0
[1.30.0] - 2024-09-10
Changed
- Avoid migrating rodata symbols to functions if they are referenced by other
data or rodata symbols. - Disallow data and rodata symbols from referencing jumptables.
- BREAKING: Change the rodata migration algorithm.
- This allows for the algorithm to migrate unreferenced symbols that are
between other symbols that do get migrated to the given function. - The algorithm will now stop to migrate symbols as soon as it finds a symbol
that should not be migrated to the current function (i.e. it should be
migrated to other function, it is referenced by a data symbol, etc).- This could be an abrupt change for projects that were relying on the old
migration scheme, because some symbols may suddenly disappear, avoiding a
correct build. - This change should also reduce (and hopefully remove) the gaps generated
between symbols during rodata migration.
- This could be an abrupt change for projects that were relying on the old
- This allows for the algorithm to migrate unreferenced symbols that are
Deprecated
- Depreacte
SymbolBase.isRdata
.
Fixed
- Fix pointer tracking: fix garbage state of registers after function jumping
outside of the current function.
1.29.0
[1.29.0] - 2024-09-09
Added
- New
ContextSymbol.functionOwnerForMigration
attribute.- Allows to override to which function a given rodata symbol should be
migrated to. - Specially useful for unreferenced symbols.
- WARNING: It is undefined behavior if during rodata migration the listed
function does not exists on the given text section. For example this symbol
may get lost in limbo.
- Allows to override to which function a given rodata symbol should be
Fixed
- Fix data references to symbols with adends (that have user declared sizes)
being symbolized instead of just using an addend to the symbol.- This bug seems like was only happening if the referenced symbol was in the
same section as the one who was referencing it.
- This bug seems like was only happening if the referenced symbol was in the
1.28.1
[1.28.1] - 2024-08-19
Changed
- Avoid emitting "global" visibility on labels.
- Avoid emitting a rom offset comment on bss symbols.
- Change on
gpRelHack
behavior:- Emit
.extern
s with dummy size at the top of the function for all the
%gp_rel
-accessed symbols within the function.
- Emit
Fixed
- Fix function symbols and labels not acknowledging their parent file.
- Used mainly for debugging purposes.
1.28.0
[1.28.0] - 2024-08-09
Added
- New
SectionText.gpRelHack
setting.- Turning it on changes all instructions that use a
%gp_rel
reloc into macro
instructions that do not specify the relocation explicitly nor reference the
$gp
register. - This may even change some instruction mnemonics, like replacing
addiu
into
la
. - This is required by old assemblers that do not support explicit
%gp_rel
relocations, but instead they infer the relocation to be used by checking
if the symbol was defined in the assembly file and its size fits on the
passed-G
parameter. - WARNING: It is the user's responsability to provide those symbol definitions
to the assembler, otherwise those instructions will be expanded into
multiple instructions and produce a shifted build.
- Turning it on changes all instructions that use a
- elfObjDisasm's readelf:
- Add
MIPS_SCOMMON
andMIPS_SUNDEFINED
support in symtab. - Use the section name in the ndx column instead of a plain number for
OBJECT
s andFUNC
s.
- Add
Changed
- Try to detect function pointers used on tail call optimizations and try to not
confuse them with detected jumptables. - rabbitizer 1.12.0 or above is required.
Fixed
- Fix rodata addresses referenced only by other rodata symbols on the same
file not being properly symbolized. - elfObjDisasm's readelf:
- Fix name column not displaying the section's name.
- Fix relocation sections not displaying anything on the name columns for
relocations relative to a section instead of a symbol.
1.27.0
[1.27.0] - 2024-07-10
Added
gcc_except_table
support.- This section type is used by C++ to implement exceptions.
- There's no automatic detection for this kind of symbol, so it must be
manually specified by the user.
- Add two new
SymbolSpecialType
:gccexcepttable
andgccexcepttablelabel
.gccexcepttable
symbols will be prefixed withehtbl_
, while
gccexcepttablelabel
will have a$LEH_
prefix.
- A new kind of customizable label type for ehtable labels:
GlobalConfig.ASM_EHTBL_LABEL
: Allows to change the macro label for this
specific kind of label.- Defaults to
ehlabel
.
1.26.1
[1.26.1] - 2024-06-30
Changed
singleFileDisasm
- Produce an error if input file does not exist instead of silently doing
nothing at all.
- Produce an error if input file does not exist instead of silently doing
Fixed
elfObjDisasm
- Fix wrong capitalization on elf symbol visibility.
- Fix symbol visibility not being used on some linked elfs.
- Fix some function pointers not being properly symbolized.
- Those function pointers may get wrongly identified as jumptables because the
jumptable pattern and the function pointer tail call pattern is similar.
- Those function pointers may get wrongly identified as jumptables because the
1.26.0
[1.26.0] - 2024-05-21
Added
- Add
visibility
attribute to symbols.- Allows to specify custom visibility, like
weak
orlocal
, to each symbol.
- Allows to specify custom visibility, like
- Read symbol binding from elf files as
visibility
automatically.
1.25.1
[1.25.1] - 2024-05-03
Fixed
- Fix an edge case where strings may not get correctly disassembled when they
contain the escape character (\\
). - Fix some overlay symbols not being properly created.