|
|
|
|
|
|
|
|
|
|
xen-changelog
[Xen-changelog] [xen-unstable] [TOOLS][BUILDER] Extend Elf header checks
# HG changeset patch
# User kfraser@xxxxxxxxxxxxxxxxxxxxxxx
# Node ID 1650e07c9e5261dc823e156dc0a9350e98f870bc
# Parent ac5e98c1c46692083ca76a1cb4ad66c5bc37e9d5
[TOOLS][BUILDER] Extend Elf header checks for multiple architectures.
Based on a patch from Hollis Blanchard.
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
---
tools/libxc/xc_elf.h | 3 ++-
tools/libxc/xc_load_elf.c | 32 ++++++++++++++++++++++----------
xen/include/xen/elf.h | 2 +-
3 files changed, 25 insertions(+), 12 deletions(-)
diff -r ac5e98c1c466 -r 1650e07c9e52 tools/libxc/xc_elf.h
--- a/tools/libxc/xc_elf.h Tue Jun 13 14:08:37 2006 +0100
+++ b/tools/libxc/xc_elf.h Tue Jun 13 14:36:04 2006 +0100
@@ -170,13 +170,14 @@ typedef struct {
#define EM_PARISC 15 /* HPPA */
#define EM_SPARC32PLUS 18 /* Enhanced instruction set SPARC */
#define EM_PPC 20 /* PowerPC */
+#define EM_PPC64 21 /* PowerPC 64-bit */
#define EM_ARM 40 /* Advanced RISC Machines ARM */
#define EM_ALPHA 41 /* DEC ALPHA */
#define EM_SPARCV9 43 /* SPARC version 9 */
#define EM_ALPHA_EXP 0x9026 /* DEC ALPHA */
+#define EM_IA_64 50 /* Intel Merced */
#define EM_X86_64 62 /* AMD x86-64 architecture */
#define EM_VAX 75 /* DEC VAX */
-#define EM_NUM 15 /* number of machine types */
/* Version */
#define EV_NONE 0 /* Invalid */
diff -r ac5e98c1c466 -r 1650e07c9e52 tools/libxc/xc_load_elf.c
--- a/tools/libxc/xc_load_elf.c Tue Jun 13 14:08:37 2006 +0100
+++ b/tools/libxc/xc_load_elf.c Tue Jun 13 14:36:04 2006 +0100
@@ -21,6 +21,24 @@ loadelfsymtab(
loadelfsymtab(
const char *image, int xch, uint32_t dom, xen_pfn_t *parray,
struct domain_setup_info *dsi);
+
+/*
+ * Elf header attributes we require for each supported host platform.
+ * These are checked in parseelfimage().
+ */
+#if defined(__ia64__)
+#define ELFCLASS ELFCLASS64
+#define ELFDATA ELFDATA2LSB
+#define ELFMACHINE EM_IA_64
+#elif defined(__i386__)
+#define ELFCLASS ELFCLASS32
+#define ELFDATA ELFDATA2LSB
+#define ELFMACHINE EM_386
+#elif defined(__x86_64__)
+#define ELFCLASS ELFCLASS64
+#define ELFDATA ELFDATA2LSB
+#define ELFMACHINE EM_X86_64
+#endif
int probe_elf(const char *image,
unsigned long image_size,
@@ -61,16 +79,10 @@ static int parseelfimage(const char *ima
return -EINVAL;
}
- if (
-#if defined(__i386__)
- (ehdr->e_ident[EI_CLASS] != ELFCLASS32) ||
- (ehdr->e_machine != EM_386) ||
-#elif defined(__x86_64__)
- (ehdr->e_ident[EI_CLASS] != ELFCLASS64) ||
- (ehdr->e_machine != EM_X86_64) ||
-#endif
- (ehdr->e_ident[EI_DATA] != ELFDATA2LSB) ||
- (ehdr->e_type != ET_EXEC) )
+ if ( (ehdr->e_ident[EI_CLASS] != ELFCLASS) ||
+ (ehdr->e_machine != ELFMACHINE) ||
+ (ehdr->e_ident[EI_DATA] != ELFDATA) ||
+ (ehdr->e_type != ET_EXEC) )
{
ERROR("Kernel not a Xen-compatible Elf image.");
return -EINVAL;
diff -r ac5e98c1c466 -r 1650e07c9e52 xen/include/xen/elf.h
--- a/xen/include/xen/elf.h Tue Jun 13 14:08:37 2006 +0100
+++ b/xen/include/xen/elf.h Tue Jun 13 14:36:04 2006 +0100
@@ -178,9 +178,9 @@ typedef struct {
#define EM_ALPHA 41 /* DEC ALPHA */
#define EM_SPARCV9 43 /* SPARC version 9 */
#define EM_ALPHA_EXP 0x9026 /* DEC ALPHA */
+#define EM_IA_64 50 /* Intel Merced */
#define EM_X86_64 62 /* AMD x86-64 architecture */
#define EM_VAX 75 /* DEC VAX */
-#define EM_NUM 15 /* number of machine types */
/* Version */
#define EV_NONE 0 /* Invalid */
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|
<Prev in Thread] |
Current Thread |
[Next in Thread> |
- [Xen-changelog] [xen-unstable] [TOOLS][BUILDER] Extend Elf header checks for multiple architectures.,
Xen patchbot-unstable <=
|
|
|
|
|