mirror of
https://github.com/xcat2/xNBA.git
synced 2024-12-14 15:21:32 +00:00
Force probing of multiboot before ELF.
This commit is contained in:
parent
475d6d1f7c
commit
6fdc6c81a6
@ -33,7 +33,7 @@
|
||||
#include <gpxe/memmap.h>
|
||||
#include <gpxe/elf.h>
|
||||
|
||||
struct image_type multiboot_image_type __image_type;
|
||||
struct image_type multiboot_image_type __image_type ( PROBE_MULTIBOOT );
|
||||
|
||||
/** Multiboot flags that we support */
|
||||
#define MB_SUPPORTED_FLAGS ( MB_FLAG_PGALIGN | MB_FLAG_MEMMAP | \
|
||||
@ -320,7 +320,7 @@ int multiboot_load ( struct image *image ) {
|
||||
}
|
||||
|
||||
/** Multiboot image type */
|
||||
struct image_type multiboot_image_type __image_type = {
|
||||
struct image_type multiboot_image_type __image_type ( PROBE_MULTIBOOT ) = {
|
||||
.name = "Multiboot",
|
||||
.load = multiboot_load,
|
||||
.exec = multiboot_exec,
|
||||
|
@ -30,7 +30,7 @@
|
||||
#include <gpxe/image.h>
|
||||
#include <gpxe/elf.h>
|
||||
|
||||
struct image_type elf_image_type __image_type;
|
||||
struct image_type elf_image_type __image_type ( PROBE_NORMAL );
|
||||
|
||||
typedef Elf32_Ehdr Elf_Ehdr;
|
||||
typedef Elf32_Phdr Elf_Phdr;
|
||||
@ -143,7 +143,7 @@ int elf_load ( struct image *image ) {
|
||||
}
|
||||
|
||||
/** ELF image type */
|
||||
struct image_type elf_image_type __image_type = {
|
||||
struct image_type elf_image_type __image_type ( PROBE_NORMAL ) = {
|
||||
.name = "ELF",
|
||||
.load = elf_load,
|
||||
.exec = elf_exec,
|
||||
|
@ -79,18 +79,30 @@ struct image_type {
|
||||
int ( * exec ) ( struct image *image );
|
||||
};
|
||||
|
||||
/** An executable or loadable image type */
|
||||
#define __image_type __table ( struct image_type, image_types, 01 )
|
||||
/**
|
||||
* Multiboot image probe priority
|
||||
*
|
||||
* Multiboot images are also valid executables in another format
|
||||
* (e.g. ELF), so we must perform the multiboot probe first.
|
||||
*/
|
||||
#define PROBE_MULTIBOOT 01
|
||||
|
||||
/**
|
||||
* An unverifiable executable or loadable image type
|
||||
*
|
||||
* This should be used to mark image types for which there are no
|
||||
* signature or other checks that can be used to verify the validity
|
||||
* of the image (such as PXE images). These will then be tried last
|
||||
* in the list of image types.
|
||||
* Normal image probe priority
|
||||
*/
|
||||
#define __default_image_type __table ( struct image_type, image_types, 02 )
|
||||
#define PROBE_NORMAL 02
|
||||
|
||||
/**
|
||||
* PXE image probe priority
|
||||
*
|
||||
* PXE images have no signature checks, so will claim all image files.
|
||||
* They must therefore be tried last in the probe order list.
|
||||
*/
|
||||
#define PROBE_PXE 03
|
||||
|
||||
/** An executable or loadable image type */
|
||||
#define __image_type( probe_order ) \
|
||||
__table ( struct image_type, image_types, probe_order )
|
||||
|
||||
extern struct list_head images;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user