elf: Fix SIGSEGV if _dynamic_tag is missing

When loading static ELF binaries, '_dynamic_table' is nullptr. Fix
_dynamic_tag() to deal with that and throw an exception rather than
causing OSv to SIGSEGV.

Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>
elf: Fix object::load_needed() to work with static binaries

If the DT_NEEDED tag does not exist, bail out from object::needed()
early and don't call dynamic_str_array() which will thrown an exception.

Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>
elf: Fix object::lookup_symbol_old() to work with static binaries

Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>
app: Add support for static binaries

Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>
Use a constant for kernel base address

Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>
Move kernel image to 20 MB mark

Make some room for static binaries to load themselves...

Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>