Skip to content

Releases: Decompollaborate/spimdisasm

1.30.2

20 Sep 02:40
86334da
Compare
Choose a tag to compare

[1.30.2] - 2024-09-19

Fixed

  • Fix not generating branch labels under some circumstances.

1.30.1

19 Sep 13:02
ed6b430
Compare
Choose a tag to compare

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

Changed

  • Assembly now gets indentated by default to 4 spaces (or 2 spaces for labels).
    • Use GlobalConfig.ASM_INDENTATION and GlobalConfig.ASM_INDENTATION_LABELS
      to disable this behavior.

Fixed

  • Prevent generating labels for ignored symbols that are referenced by function
    calls (ie in a jal).

1.30.0

10 Sep 19:52
9593eb7
Compare
Choose a tag to compare

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

Deprecated

  • Depreacte SymbolBase.isRdata.

Fixed

  • Fix pointer tracking: fix garbage state of registers after function jumping
    outside of the current function.

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.