All of lore.kernel.org
 help / color / mirror / Atom feed
From: Volker Eckert <volker.eckert@citrix.com>
To: xen-devel@lists.xensource.com
Subject: ELF header data types / elfstructs.h, Elf64_Half, Elf64_Quarter
Date: Wed, 16 Nov 2011 17:20:01 +0000	[thread overview]
Message-ID: <4EC3F0C1.9050309@citrix.com> (raw)

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;

             reply	other threads:[~2011-11-16 17:20 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-11-16 17:20 Volker Eckert [this message]
2011-11-16 17:42 ` ELF header data types / elfstructs.h, Elf64_Half, Elf64_Quarter Andrew Cooper
2011-11-16 17:44   ` Andrew Cooper
2011-11-16 18:12     ` Volker Eckert
2011-11-16 18:26       ` Keir Fraser
2011-11-16 18:22 ` Keir Fraser

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4EC3F0C1.9050309@citrix.com \
    --to=volker.eckert@citrix.com \
    --cc=xen-devel@lists.xensource.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.