mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 19:17:44 +00:00
Kernel: Plumb the elf header of the main program down to Process::load
This will enable us to take the desired load address of non-position independent programs into account when randomizing the load address of the dynamic loader.
This commit is contained in:
parent
f369229770
commit
40a8159c62
2 changed files with 25 additions and 24 deletions
|
@ -48,6 +48,7 @@
|
|||
#include <Kernel/VM/AllocationStrategy.h>
|
||||
#include <Kernel/VM/RangeAllocator.h>
|
||||
#include <LibC/signal_numbers.h>
|
||||
#include <Libraries/LibELF/exec_elf.h>
|
||||
|
||||
namespace Kernel {
|
||||
|
||||
|
@ -430,7 +431,7 @@ public:
|
|||
Yes,
|
||||
};
|
||||
|
||||
KResultOr<LoadResult> load(NonnullRefPtr<FileDescription> main_program_description, RefPtr<FileDescription> interpreter_description, bool is_dynamic);
|
||||
KResultOr<LoadResult> load(NonnullRefPtr<FileDescription> main_program_description, RefPtr<FileDescription> interpreter_description, const Elf32_Ehdr& main_program_header);
|
||||
KResultOr<LoadResult> load_elf_object(FileDescription& object_description, FlatPtr load_offset, ShouldAllocateTls);
|
||||
|
||||
bool is_superuser() const
|
||||
|
@ -522,10 +523,10 @@ private:
|
|||
void kill_threads_except_self();
|
||||
void kill_all_threads();
|
||||
|
||||
int do_exec(NonnullRefPtr<FileDescription> main_program_description, Vector<String> arguments, Vector<String> environment, RefPtr<FileDescription> interpreter_description, Thread*& new_main_thread, u32& prev_flags, bool is_dynamic);
|
||||
int do_exec(NonnullRefPtr<FileDescription> main_program_description, Vector<String> arguments, Vector<String> environment, RefPtr<FileDescription> interpreter_description, Thread*& new_main_thread, u32& prev_flags, const Elf32_Ehdr& main_program_header);
|
||||
ssize_t do_write(FileDescription&, const UserOrKernelBuffer&, size_t);
|
||||
|
||||
KResultOr<RefPtr<FileDescription>> find_elf_interpreter_for_executable(const String& path, char (&first_page)[PAGE_SIZE], int nread, size_t file_size);
|
||||
KResultOr<RefPtr<FileDescription>> find_elf_interpreter_for_executable(const String& path, const Elf32_Ehdr& elf_header, int nread, size_t file_size);
|
||||
|
||||
int alloc_fd(int first_candidate_fd = 0);
|
||||
void disown_all_shared_buffers();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue