Skip to content

Releases: Decompollaborate/spimdisasm

1.29.0

09 Sep 23:35
e1f0948
Compare
Choose a tag to compare

[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.

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.

1.28.1

19 Aug 14:05
49b8cce
Compare
Choose a tag to compare

[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 .externs with dummy size at the top of the function for all the
      %gp_rel-accessed symbols within the function.

Fixed

  • Fix function symbols and labels not acknowledging their parent file.
    • Used mainly for debugging purposes.

1.28.0

09 Aug 15:01
2b602b8
Compare
Choose a tag to compare

[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.
  • elfObjDisasm's readelf:
    • Add MIPS_SCOMMON and MIPS_SUNDEFINED support in symtab.
    • Use the section name in the ndx column instead of a plain number for
      OBJECTs and FUNCs.

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

10 Jul 20:38
431f27f
Compare
Choose a tag to compare

[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 and gccexcepttablelabel.
    • gccexcepttable symbols will be prefixed with ehtbl_, 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

30 Jun 23:53
5fa87b3
Compare
Choose a tag to compare

[1.26.1] - 2024-06-30

Changed

  • singleFileDisasm
    • Produce an error if input file does not exist instead of silently doing
      nothing at all.

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.

1.26.0

21 May 21:24
f772ac2
Compare
Choose a tag to compare

[1.26.0] - 2024-05-21

Added

  • Add visibility attribute to symbols.
    • Allows to specify custom visibility, like weak or local, to each symbol.
  • Read symbol binding from elf files as visibility automatically.

1.25.1

03 May 13:35
ad128fa
Compare
Choose a tag to compare

[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

22 Apr 17:58
b927012
Compare
Choose a tag to compare

[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

04 Apr 14:05
03a522b
Compare
Choose a tag to compare

[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.
  • rabbitizer 1.9.4 or above is required.
    • Should fix some issues under Windows.

1.24.2

26 Mar 19:42
26f90f5
Compare
Choose a tag to compare

[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.