BSD on relocators

This commit is contained in:
Vladimir 'phcoder' Serbinenko 2010-01-11 22:54:40 +01:00
parent d45dca5ab3
commit 108408aa39
7 changed files with 338 additions and 114 deletions

View file

@ -85,7 +85,7 @@ union grub_aout_header
int EXPORT_FUNC(grub_aout_get_type) (union grub_aout_header *header);
grub_err_t EXPORT_FUNC(grub_aout_load) (grub_file_t file, int offset,
grub_addr_t load_addr, int load_size,
grub_addr_t bss_end_addr);
void *load_addr, int load_size,
grub_size_t bss_size);
#endif /* ! GRUB_AOUT_HEADER */

View file

@ -54,5 +54,13 @@ int grub_elf_is_elf64 (grub_elf_t);
grub_size_t grub_elf64_size (grub_elf_t);
grub_err_t grub_elf64_load (grub_elf_t, grub_elf64_load_hook_t, grub_addr_t *,
grub_size_t *);
grub_err_t
grub_elf32_phdr_iterate (grub_elf_t elf,
int NESTED_FUNC_ATTR (*hook) (grub_elf_t, Elf32_Phdr *, void *),
void *hook_arg);
grub_err_t
grub_elf64_phdr_iterate (grub_elf_t elf,
int NESTED_FUNC_ATTR (*hook) (grub_elf_t, Elf64_Phdr *, void *),
void *hook_arg);
#endif /* ! GRUB_ELFLOAD_HEADER */

View file

@ -20,6 +20,7 @@
#define GRUB_BSD_CPU_HEADER 1
#include <grub/types.h>
#include <grub/relocator.h>
enum bsd_kernel_types
{
@ -197,7 +198,7 @@ struct grub_openbsd_bootargs
struct grub_netbsd_bootinfo
{
grub_uint32_t bi_count;
void *bi_data[1];
grub_addr_t bi_data[1];
};
#define NETBSD_BTINFO_BOOTPATH 0
@ -255,9 +256,11 @@ struct grub_netbsd_btinfo_bootdisk
void grub_unix_real_boot (grub_addr_t entry, ...)
__attribute__ ((cdecl,noreturn));
grub_err_t grub_freebsd_load_elfmodule32 (grub_file_t file, int argc,
grub_err_t grub_freebsd_load_elfmodule32 (struct grub_relocator *relocator,
grub_file_t file, int argc,
char *argv[], grub_addr_t *kern_end);
grub_err_t grub_freebsd_load_elfmodule_obj64 (grub_file_t file, int argc,
grub_err_t grub_freebsd_load_elfmodule_obj64 (struct grub_relocator *relocator,
grub_file_t file, int argc,
char *argv[],
grub_addr_t *kern_end);
grub_err_t grub_freebsd_load_elf_meta32 (grub_file_t file,