Skip to content

Plan #1

Open
Open
@xarantolus

Description

@xarantolus

This is a tracking issue for all stuff I plan on working on. If you want to implement something, feel free to do so :)

  • Add syscalls to trace
  • Build with no_std to maybe reduce output size (currently 1.1MB, which isn't great), some work in 2cc8479
  • Actually emulate programs (run ELF binaries by just providing the binary, nothing more). This already works for binaries that are written in x86 assembly and then compiled with relevant compiler flags (mentioned on the test site), however binaries with libc don't work; the entrypoint logic seems broken)
    • The brokenness seems to come from interaction with not yet relocated memory sections
  • Add some way to stop/abort a running binary, e.g. on the test site the uppercase example just runs forever. This stop mechanism should also work while a syscall is in progress
    • It is kind of already implemented on the demo site, but honestly not great
  • Better access to information
    • Reading/Writing flags (preferably with an easy-to-use API, but also a more raw way of just getting RFLAGS), expose constants
    • Maybe get access to memory area API
    • Maybe expose instruction decoding API
  • Refactor to make test binary build/link time faster
  • Make the locally built binary work correctly, currently it can't read input and fails with the args example program
  • Make stack allocation in stack setup functions take exactly the requested amount of memory instead of some value close to it
  • Implement more pre-defined syscalls (candidates: mprotect, nanosleep)
  • Expose constants
  • Initialize auxiliary vector, correctly
  • Implement some very basic CPUID instruction
  • Load PT_GNU_EH_FRAME
  • Convenience function for printing stack
    • Just do a hexdump
  • Allow some kind of text input translation, e.g. like my wasm x86 assembler, maybe as a crate feature and separate package

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions