]> git.proxmox.com Git - qemu.git/blobdiff - elf.h
user: Restore debug usage message for '-d ?' in user mode emulation
[qemu.git] / elf.h
diff --git a/elf.h b/elf.h
index 8ceb949769fa18dab28378a037cb5ecbcba2678b..ffcac7e0b09a8349fc29f51a1f172e7b33118cad 100644 (file)
--- a/elf.h
+++ b/elf.h
@@ -104,6 +104,9 @@ typedef int64_t  Elf64_Sxword;
 
 #define EM_H8_300H      47      /* Hitachi H8/300H */
 #define EM_H8S          48      /* Hitachi H8S     */
+#define EM_LATTICEMICO32 138    /* LatticeMico32 */
+
+#define EM_UNICORE32    110     /* UniCore32 */
 
 /*
  * This is an interim value that we will use until the committee comes
@@ -119,6 +122,9 @@ typedef int64_t  Elf64_Sxword;
  */
 #define EM_S390_OLD     0xA390
 
+#define EM_MICROBLAZE      189
+#define EM_MICROBLAZE_OLD  0xBAAB
+
 /* This is the info that is needed to parse the dynamic section of the file */
 #define DT_NULL                0
 #define DT_NEEDED      1
@@ -144,8 +150,37 @@ typedef int64_t  Elf64_Sxword;
 #define DT_DEBUG       21
 #define DT_TEXTREL     22
 #define DT_JMPREL      23
+#define DT_BINDNOW     24
+#define DT_INIT_ARRAY  25
+#define DT_FINI_ARRAY  26
+#define DT_INIT_ARRAYSZ        27
+#define DT_FINI_ARRAYSZ        28
+#define DT_RUNPATH     29
+#define DT_FLAGS       30
+#define DT_LOOS                0x6000000d
+#define DT_HIOS                0x6ffff000
 #define DT_LOPROC      0x70000000
 #define DT_HIPROC      0x7fffffff
+
+/* DT_ entries which fall between DT_VALRNGLO and DT_VALRNDHI use
+   the d_val field of the Elf*_Dyn structure.  I.e. they contain scalars.  */
+#define DT_VALRNGLO    0x6ffffd00
+#define DT_VALRNGHI    0x6ffffdff
+
+/* DT_ entries which fall between DT_ADDRRNGLO and DT_ADDRRNGHI use
+   the d_ptr field of the Elf*_Dyn structure.  I.e. they contain pointers.  */
+#define DT_ADDRRNGLO   0x6ffffe00
+#define DT_ADDRRNGHI   0x6ffffeff
+
+#define        DT_VERSYM       0x6ffffff0
+#define DT_RELACOUNT   0x6ffffff9
+#define DT_RELCOUNT    0x6ffffffa
+#define DT_FLAGS_1     0x6ffffffb
+#define DT_VERDEF      0x6ffffffc
+#define DT_VERDEFNUM   0x6ffffffd
+#define DT_VERNEED     0x6ffffffe
+#define DT_VERNEEDNUM  0x6fffffff
+
 #define DT_MIPS_RLD_VERSION    0x70000001
 #define DT_MIPS_TIME_STAMP     0x70000002
 #define DT_MIPS_ICHECKSUM      0x70000003
@@ -204,6 +239,21 @@ typedef int64_t  Elf64_Sxword;
 #define AT_PLATFORM 15  /* string identifying CPU for optimizations */
 #define AT_HWCAP  16    /* arch dependent hints at CPU capabilities */
 #define AT_CLKTCK 17   /* frequency at which times() increments */
+#define AT_FPUCW  18   /* info about fpu initialization by kernel */
+#define AT_DCACHEBSIZE 19      /* data cache block size */
+#define AT_ICACHEBSIZE 20      /* instruction cache block size */
+#define AT_UCACHEBSIZE 21      /* unified cache block size */
+#define AT_IGNOREPPC   22      /* ppc only; entry should be ignored */
+#define AT_SECURE      23      /* boolean, was exec suid-like? */
+#define AT_BASE_PLATFORM 24    /* string identifying real platforms */
+#define AT_RANDOM      25      /* address of 16 random bytes */
+#define AT_EXECFN      31      /* filename of the executable */
+#define AT_SYSINFO     32      /* address of kernel entry point */
+#define AT_SYSINFO_EHDR        33      /* address of kernel vdso */
+#define AT_L1I_CACHESHAPE 34   /* shapes of the caches: */
+#define AT_L1D_CACHESHAPE 35   /*   bits 0-3: cache associativity.  */
+#define AT_L2_CACHESHAPE  36   /*   bits 4-7: log2 of line size.  */
+#define AT_L3_CACHESHAPE  37   /*   val&~255: cache size.  */
 
 typedef struct dynamic{
   Elf32_Sword d_tag;
@@ -241,6 +291,8 @@ typedef struct {
 #define R_386_GOTOFF   9
 #define R_386_GOTPC    10
 #define R_386_NUM      11
+/* Not a dynamic reloc, so not included in R_386_NUM.  Used in TCG.  */
+#define R_386_PC8      23
 
 #define R_MIPS_NONE            0
 #define R_MIPS_16              1
@@ -328,6 +380,9 @@ typedef struct {
 #define R_SPARC_11             31
 #define R_SPARC_64             32
 #define R_SPARC_OLO10           33
+#define R_SPARC_HH22            34
+#define R_SPARC_HM10            35
+#define R_SPARC_LM22            36
 #define R_SPARC_WDISP16                40
 #define R_SPARC_WDISP19                41
 #define R_SPARC_7              43
@@ -449,7 +504,9 @@ typedef struct {
 #define R_PPC_SECTOFF_HI       35
 #define R_PPC_SECTOFF_HA       36
 /* Keep this the last entry.  */
+#ifndef R_PPC_NUM
 #define R_PPC_NUM              37
+#endif
 
 /* ARM specific declarations */
 
@@ -502,6 +559,8 @@ typedef struct {
 #define R_ARM_GOTPC            25      /* 32 bit PC relative offset to GOT */
 #define R_ARM_GOT32            26      /* 32 bit GOT entry */
 #define R_ARM_PLT32            27      /* 32 bit PLT address */
+#define R_ARM_CALL              28
+#define R_ARM_JUMP24            29
 #define R_ARM_GNU_VTENTRY      100
 #define R_ARM_GNU_VTINHERIT    101
 #define R_ARM_THM_PC11         102     /* thumb unconditional branch */
@@ -1040,7 +1099,7 @@ typedef struct elf64_phdr {
 #define SHN_COMMON     0xfff2
 #define SHN_HIRESERVE  0xffff
 #define SHN_MIPS_ACCOMON       0xff00
+
 typedef struct elf32_shdr {
   Elf32_Word   sh_name;
   Elf32_Word   sh_type;
@@ -1074,7 +1133,23 @@ typedef struct elf64_shdr {
 #define        EI_CLASS        4
 #define        EI_DATA         5
 #define        EI_VERSION      6
-#define        EI_PAD          7
+#define        EI_OSABI        7
+#define        EI_PAD          8
+
+#define ELFOSABI_NONE           0       /* UNIX System V ABI */
+#define ELFOSABI_SYSV           0       /* Alias.  */
+#define ELFOSABI_HPUX           1       /* HP-UX */
+#define ELFOSABI_NETBSD         2       /* NetBSD.  */
+#define ELFOSABI_LINUX          3       /* Linux.  */
+#define ELFOSABI_SOLARIS        6       /* Sun Solaris.  */
+#define ELFOSABI_AIX            7       /* IBM AIX.  */
+#define ELFOSABI_IRIX           8       /* SGI Irix.  */
+#define ELFOSABI_FREEBSD        9       /* FreeBSD.  */
+#define ELFOSABI_TRU64          10      /* Compaq TRU64 UNIX.  */
+#define ELFOSABI_MODESTO        11      /* Novell Modesto.  */
+#define ELFOSABI_OPENBSD        12      /* OpenBSD.  */
+#define ELFOSABI_ARM            97      /* ARM */
+#define ELFOSABI_STANDALONE     255     /* Standalone (embedded) application */
 
 #define        ELFMAG0         0x7f            /* EI_MAG */
 #define        ELFMAG1         'E'
@@ -1101,6 +1176,7 @@ typedef struct elf64_shdr {
 #define NT_PRFPREG     2
 #define NT_PRPSINFO    3
 #define NT_TASKSTRUCT  4
+#define NT_AUXV                6
 #define NT_PRXFPREG     0x46e62b7f      /* copied from gdb5.1/include/elf/common.h */
 
 
@@ -1118,6 +1194,26 @@ typedef struct elf64_note {
   Elf64_Word n_type;   /* Content type */
 } Elf64_Nhdr;
 
+
+/* This data structure represents a PT_LOAD segment.  */
+struct elf32_fdpic_loadseg {
+  /* Core address to which the segment is mapped.  */
+  Elf32_Addr addr;
+  /* VMA recorded in the program header.  */
+  Elf32_Addr p_vaddr;
+  /* Size of this segment in memory.  */
+  Elf32_Word p_memsz;
+};
+struct elf32_fdpic_loadmap {
+  /* Protocol version number, must be zero.  */
+  Elf32_Half version;
+  /* Number of segments in this map.  */
+  Elf32_Half nsegs;
+  /* The actual memory map.  */
+  struct elf32_fdpic_loadseg segs[/*nsegs*/];
+};
+
+#ifdef ELF_CLASS
 #if ELF_CLASS == ELFCLASS32
 
 #define elfhdr         elf32_hdr
@@ -1125,6 +1221,7 @@ typedef struct elf64_note {
 #define elf_note       elf32_note
 #define elf_shdr       elf32_shdr
 #define elf_sym                elf32_sym
+#define elf_addr_t     Elf32_Off
 
 #ifdef ELF_USES_RELOCA
 # define ELF_RELOC      Elf32_Rela
@@ -1139,6 +1236,7 @@ typedef struct elf64_note {
 #define elf_note       elf64_note
 #define elf_shdr       elf64_shdr
 #define elf_sym                elf64_sym
+#define elf_addr_t     Elf64_Off
 
 #ifdef ELF_USES_RELOCA
 # define ELF_RELOC      Elf64_Rela
@@ -1158,5 +1256,7 @@ typedef struct elf64_note {
 # endif
 #endif
 
+#endif /* ELF_CLASS */
+
 
 #endif /* _QEMU_ELF_H */