Skip to content

v0.0.2 – Added ELF and Linux-style archive support

Latest
Compare
Choose a tag to compare
@PathogenDavid PathogenDavid released this 31 Oct 12:52
· 1 commit to main since this release
f64a3bc

Kaisa v0.0.2 Sponsor

Kaisa learned to read ELF files, thanks Alfur! (#1)

This means Kaisa can now parse .o, .so, and other Linux binaries. Additionally, Kaisa can also ready Linux-style .a archives and automatically differentiate them from Windows-style .lib files. (They're both a same-but-different non-standard format.)

This ELF support is mainly limited to parsing string tables and symbol tables (including symbol tables which rely on an extended index table.) For more details see the project readme.

Additionally:

  • Kaisa is more conservative about whether an archive member is considered a COFF file. (COFF files have no header magic, so she does this by checking if the machine type looks valid, so it's not fool-proof.)
  • A new MalformedFileException exception is now thrown when something very unexpected is encountered. This exception includes an offset into the stream where the parsing error occurred. (Where exactly it points depends on the context, but usually it's within a member's data or at the start of a malformed header.)
  • You can now query whether a particular stream appears to contain either an archive file, an ELF file, a COFF object, or even a Windows import object based on its header magic.
  • Streams are now scoped to the archive member's actual data range during parsing. (This means Kaisa will fail sooner if a malformed archive member causes her to read out of bounds.)