summaryrefslogtreecommitdiff
path: root/ELFLoader
AgeCommit message (Collapse)Author
2018-12-02Move ELFLoader code into Kernel/.Andreas Kling
2018-11-12Make loading /bin/bash ~250x faster.Andreas Kling
The ELF loader was doing huge amounts of unnecessary work. Got rid of the "export symbols" and relocation passes since we don't need them. They were useful things when bringing up the ELF loading code. Also added a simple TSC-based Stopwatch RAII thingy to help debug performance issues.
2018-11-09Make kernel build with clang.Andreas Kling
It's a bit faster than g++ and seems to generate perfectly fine code. The kernel is also roughly 10% smaller(!)
2018-11-08Teach Process::exec() about the magic of file-backed VMO's.Andreas Kling
This is really sweet! :^) The four instances of /bin/sh spawned at startup now share their read-only text pages. There are problems and limitations here, and plenty of room for improvement. But it kinda works.
2018-11-04Tidy up ELFLoader.Andreas Kling
2018-11-04Merge ExecSpace into ELFLoader.Andreas Kling
2018-11-04Remove bootstrapping code from ELFLoader.Andreas Kling
This runs inside the kernel now, and I no longer need the emulated version.
2018-11-03Use ELF program headers to load executables smarter.Andreas Kling
This turned out way better than the old code. ELF loading is now quite straightforward, and we don't need the weird concept of subregions anymore. Next step is to respect the is_writable flag.
2018-11-03ELFLoader: Add program header support.Andreas Kling
We don't do anything useful with the data yet, but I'm gonna rewrite the layout code to run off of the program header table instead. This will allow us to map .text and .rodata sections in read-only memory.
2018-10-31Snazz up the kprintf() output a bit by giving it its own color.Andreas Kling
2018-10-29Fix broken SpinLock.Andreas Kling
The SpinLock was all backwards and didn't actually work. Fixing it exposed how wrong most of the locking here is. I need to come up with a better granularity here.
2018-10-27Implement loading of linked ELF executables.Andreas Kling
This took me a couple hours. :^) The ELF loading code now allocates a single region for the entire file and creates virtual memory mappings for the sections as needed. Very nice!
2018-10-27Use Unix::stat for sys$lstat().Andreas Kling
2018-10-25Implement errno in LibC.Andreas Kling
This also meant I had to implement BSS (SHT_NOBITS) sections in ELFLoader. I also added an strerror() so we can print out what the errors are.
2018-10-25ELFLoader should fail with an error message for unresolved symbols.Andreas Kling
2018-10-23ExecSpace should free its own allocations on destruction.Andreas Kling
If hookableAlloc was used, we don't free anything. That's the client's responsibility.
2018-10-23Move ELFLoader debug output behind flags.Andreas Kling
The logging spam was out of control.
2018-10-22Launching an arbitrary ELF executable from disk works! :^)Andreas Kling
This is so cool! It's a bit messy now with two Task constructors, but eventually they should fold into a single constructor somehow.
2018-10-22Import very modest Userland.Andreas Kling
2018-10-22printf format fixups in ELFLoader.Andreas Kling
2018-10-18ELFLoader works inside the kernel!Andreas Kling
We load /_hello.o which just prints out a simple message. It executes inside the kernel itself, so no fancy userspace process or anything, but this is still so cool!
2018-10-18Build ELFLoader into Kernel.Andreas Kling
2018-10-10Import all this stuff into a single repo called Serenity.Andreas Kling