Age | Commit message (Collapse) | Author |
|
By using the binary from our build of binutils, we can be sure that `nm`
supports demangling symbols, so we can avoid spawning a separate
`c++filt` process.
|
|
The host's version of c++filt might not work on some operating systems,
e.g. macOS.
|
|
On macOS the wc tool prefixes its output with a bunch of spaces which
resulted in us incorrectly using "00000000" as the symbol count.
Fixes #9080.
|
|
This implements a simple bootloader that is capable of loading ELF64
kernel images. It does this by using QEMU/GRUB to load the kernel image
from disk and pass it to our bootloader as a Multiboot module.
The bootloader then parses the ELF image and sets it up appropriately.
The kernel's entry point is a C++ function with architecture-native
code.
Co-authored-by: Liav A <liavalb@gmail.com>
|
|
|
|
Instead we should just generate kernel.map in such a way that it already
contains demangled symbols.
|
|
Multiboot only supports ELF32 executables. This changes the build
process to build an ELF32 executable which has a 32-bit entry point,
but consists of mostly 64-bit code.
|
|
Closes https://github.com/SerenityOS/serenity/issues/2080
|
|
Warnings fixed:
* SC2086: Double quote to prevent globbing and word splitting.
* SC2006: Use $(...) notation instead of legacy backticked `...`
* SC2039: In POSIX sh, echo flags are undefined
* SC2209: Use var=$(command) to assign output (or quote to assign string)
* SC2164: Use 'cd ... || exit' or 'cd ... || return' in case cd fails
* SC2166: Prefer [ p ] && [ q ] as [ p -a q ] is not well defined.
* SC2034: i appears unused. Verify use (or export if used externally)
* SC2046: Quote this to prevent word splitting.
* SC2236: Use -z instead of ! -n.
There are still a lot of warnings in Kernel/run about:
- SC2086: Double quote to prevent globbing and word splitting.
However, splitting on space is intentional in this case, and not trivial to
change. Therefore ignore the warning for now - but we should fix this in
the future.
|
|
We now use the symbols from kernel.map to link modules as they are
loaded into the kernel. This is pretty fricken cool!
|
|
|
|
|
|
Also show loading progress on the screen because it looks neat.
|
|
It walks the stack and identifies anything that looks like a kernel symbol.
This could be a lot more sophisticated.
|