Skip to content

Releases: Decompollaborate/spimdisasm

1.15.3

10 Jul 22:11
a59f75c
Compare
Choose a tag to compare
  • 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

1.15.2

04 Jul 22:30
65df6f2
Compare
Choose a tag to compare
  • Fix hardcoded shift value in alignment directive

1.15.1

04 Jul 20:35
40d3401
Compare
Choose a tag to compare
  • 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

03 Jul 20:28
ed12bf7
Compare
Choose a tag to compare
  • 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 and GlobalConfig.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 new GlobalConfig.RODATA_STRING_GUESSER_LEVEL = 1
      • The old GlobalConfig.AGGRESSIVE_STRING_GUESSER = True is equivalent to the new GlobalConfig.RODATA_STRING_GUESSER_LEVEL = 4
    • 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.
  • 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.
  • 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 of dlabel for jumptable labels by default
  • Emit dlabel instead of dlabel for data, rodata and bss symbols by default

1.14.3

19 Jun 18:26
de63bc2
Compare
Choose a tag to compare
  • Failcheck for non aligned doubles
  • (Hopefully) Fix same-vram overlays using symbols from other overlays
  • elfObjDisasm: Can now disassemble sections with arbitrary names
  • disasmdis: Disable pseudo instructions by default

1.14.2

10 Jun 17:55
09acc43
Compare
Choose a tag to compare
  • Actually add py.typed to pyproject.toml
  • Use bytearray as little as possible
  • writeBytearrayToFile is now deprecated, use writeBytesToFile instead

1.14.1

10 Jun 15:03
e368815
Compare
Choose a tag to compare
  • 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

10 May 01:06
f01ad96
Compare
Choose a tag to compare
  • 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 and sbss sections.
  • Implement --dyn-syms on readelf-like mode.
  • Minor improvements to readelf output format

1.13.3

05 May 19:06
45ab97b
Compare
Choose a tag to compare
  • Fix not writing to subfolders properly when a csv filesplit entry has a slash on its name.

1.13.2

01 May 23:55
7c67bb9
Compare
Choose a tag to compare
  • Add support for .dummy section in csv file split format
  • Add readelf's --section-headers flag to elfObjDisasm