Releases: Decompollaborate/spimdisasm
Releases · Decompollaborate/spimdisasm
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.
1.25.0
[1.25.0] - 2024-04-22
Added
- R4000 ALLEGREX instruction set compatibility
- Used by the PlayStation Portable (PSP) CPU.
rabbitizer
1.10.0 or above is required.
1.24.3
[1.24.3] - 2024-04-24
Changed
- Instruction analysis now follow all branches during look ahead analysis.
- Look ahead analysis consists on taking branches and trying to follow the
control flow without interrumping the main function analysis. - Old behavior trigered the look ahead analysis on a branch, but if a second
branch was found during the look ahead analysis then it was ignored and not
taken. This lead to some pointers not being properly paired if the codegen
emitted the%hi
and%lo
separated by too many branches. - New behavior do follows branches during look ahead analysis, improving
symbol pairing but making a bit slower the time needed for the overall
analysis.
- Look ahead analysis consists on taking branches and trying to follow the
- rabbitizer 1.9.4 or above is required.
- Should fix some issues under Windows.
1.24.2
[1.24.2] - 2024-03-26
Added
GlobalConfig.SYMBOL_ALIGNMENT_REQUIRES_ALIGNED_SECTION
.- Only emit symbol alignment directives if those are not larger than the
alignment of the disassembled section.
- Only emit symbol alignment directives if those are not larger than the