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