WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] ELF header data types / elfstructs.h, Elf64_Half, Elf64_Quar

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] ELF header data types / elfstructs.h, Elf64_Half, Elf64_Quarter
From: Volker Eckert <volker.eckert@xxxxxxxxxx>
Date: Wed, 16 Nov 2011 17:20:01 +0000
Delivery-date: Wed, 16 Nov 2011 09:33:38 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.16) Gecko/20111004 Icedove/3.0.11
hi,

according to two ELF standard documents, namely
http://downloads.openwatcom.org/ftp/devel/docs/elf-64-gen.pdf
and
http://ftp.parisc-linux.org/docs/arch/elf-64-hp.pdf

Elf64_Half should be uint16_t and not uint32_t as it is currently defined in elfstructs.h

i guess this is, because Elf.._Half is supposed to mean 'half a word' (whatever that was at that time) and not 'half of 64 bits' like the name could suggest.

in that context i'd suggest replacing occurences of Elf64_Quarter with Elf64_Half and removing its definition - but as it is not defined in the standard it is more of a cosmetic issue.

please find a patch against xen-unstable below - i hope this is acceptable(?). as i'm not subscribed to the list please CC me in replies, thanks!

volker


p. s.: i think there is a check for Python.h missing in some configure.in






diff --git a/tools/libxc/xc_dom_elfloader.c b/tools/libxc/xc_dom_elfloader.c
index 906e3a2..4d7b8e0 100644
--- a/tools/libxc/xc_dom_elfloader.c
+++ b/tools/libxc/xc_dom_elfloader.c
@@ -237,7 +237,7 @@ static int xc_dom_load_elf_symtab(struct xc_dom_image *dom,

         /* Name is NULL. */
         if ( elf_64bit(&syms) )
-            *(Elf64_Half*)(&shdr->e64.sh_name) = 0;
+            *(Elf64_Word*)(&shdr->e64.sh_name) = 0;
         else
             *(Elf32_Word*)(&shdr->e32.sh_name) = 0;
     }
diff --git a/xen/include/xen/elfstructs.h b/xen/include/xen/elfstructs.h
index 62f9399..1c46cd4 100644
--- a/xen/include/xen/elfstructs.h
+++ b/xen/include/xen/elfstructs.h
@@ -44,7 +44,7 @@ typedef uint32_t      Elf64_Word;
 typedef int64_t                Elf64_Sxword;
 typedef uint64_t       Elf64_Xword;

-typedef uint32_t       Elf64_Half;
+typedef uint16_t       Elf64_Half;
 typedef uint16_t       Elf64_Quarter;

 /*
@@ -129,11 +129,11 @@ typedef struct {
        unsigned char   e_ident[EI_NIDENT];     /* Id bytes */
        Elf64_Quarter   e_type;                 /* file type */
        Elf64_Quarter   e_machine;              /* machine type */
-       Elf64_Half      e_version;              /* version number */
+       Elf64_Word      e_version;              /* version number */
        Elf64_Addr      e_entry;                /* entry point */
        Elf64_Off       e_phoff;                /* Program hdr offset */
        Elf64_Off       e_shoff;                /* Section hdr offset */
-       Elf64_Half      e_flags;                /* Processor flags */
+       Elf64_Word      e_flags;                /* Processor flags */
        Elf64_Quarter   e_ehsize;               /* sizeof ehdr */
Elf64_Quarter e_phentsize; /* Program header entry size */ Elf64_Quarter e_phnum; /* Number of program headers */
@@ -202,14 +202,14 @@ typedef struct {
 } Elf32_Shdr;

 typedef struct {
-       Elf64_Half      sh_name;        /* section name */
-       Elf64_Half      sh_type;        /* section type */
+       Elf64_Word      sh_name;        /* section name */
+       Elf64_Word      sh_type;        /* section type */
        Elf64_Xword     sh_flags;       /* section flags */
        Elf64_Addr      sh_addr;        /* virtual address */
        Elf64_Off       sh_offset;      /* file offset */
        Elf64_Xword     sh_size;        /* section size */
-       Elf64_Half      sh_link;        /* link to another */
-       Elf64_Half      sh_info;        /* misc info */
+       Elf64_Word      sh_link;        /* link to another */
+       Elf64_Word      sh_info;        /* misc info */
        Elf64_Xword     sh_addralign;   /* memory alignment */
        Elf64_Xword     sh_entsize;     /* table entry size */
 } Elf64_Shdr;
@@ -284,7 +284,7 @@ typedef struct elf32_sym {
 } Elf32_Sym;

 typedef struct {
-       Elf64_Half      st_name;        /* Symbol name index in str table */
+       Elf64_Word      st_name;        /* Symbol name index in str table */
        Elf_Byte        st_info;        /* type / binding attrs */
        Elf_Byte        st_other;       /* unused */
        Elf64_Quarter   st_shndx;       /* section index of symbol */
@@ -368,8 +368,8 @@ typedef struct {
 } Elf32_Phdr;

 typedef struct {
-       Elf64_Half      p_type;         /* entry type */
-       Elf64_Half      p_flags;        /* flags */
+       Elf64_Word      p_type;         /* entry type */
+       Elf64_Word      p_flags;        /* flags */
        Elf64_Off       p_offset;       /* offset */
        Elf64_Addr      p_vaddr;        /* virtual address */
        Elf64_Addr      p_paddr;        /* physical address */
@@ -458,9 +458,9 @@ typedef struct {
 } Elf32_Note;

 typedef struct {
-       Elf64_Half namesz;
-       Elf64_Half descsz;
-       Elf64_Half type;
+       Elf64_Word namesz;
+       Elf64_Word descsz;
+       Elf64_Word type;
 } Elf64_Note;

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel