root/sys/exec_olf.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


    1 /*      $OpenBSD: exec_olf.h,v 1.8 2001/06/22 14:11:00 deraadt Exp $    */
    2 /*
    3  * Copyright (c) 1996 Erik Theisen.  All rights reserved.
    4  *
    5  * Redistribution and use in source and binary forms, with or without
    6  * modification, are permitted provided that the following conditions
    7  * are met:
    8  * 1. Redistributions of source code must retain the above copyright
    9  *    notice, this list of conditions and the following disclaimer.
   10  * 2. Redistributions in binary form must reproduce the above copyright
   11  *    notice, this list of conditions and the following disclaimer in the
   12  *    documentation and/or other materials provided with the distribution.
   13  * 3. The name of the author may not be used to endorse or promote products
   14  *    derived from this software without specific prior written permission
   15  *
   16  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
   17  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   18  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
   19  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
   20  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
   21  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   22  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
   23  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
   25  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   26  */
   27 
   28 /*
   29  * OLF is a modified ELF that attempts to fix two serious shortcomings in
   30  * the SVR4 ABI.  Namely a lack of an operating system and strip tag.
   31  */
   32 
   33 #ifndef _SYS_EXEC_OLF_H_
   34 #define _SYS_EXEC_OLF_H_
   35 
   36 #include <sys/exec_elf.h>
   37 
   38 /* e_ident[] identification indexes */
   39 #define OI_MAG0         EI_MAG0         /* file ID */
   40 #define OI_MAG1         EI_MAG1         /* file ID */
   41 #define OI_MAG2         EI_MAG2         /* file ID */
   42 #define OI_MAG3         EI_MAG3         /* file ID */
   43 #define OI_CLASS        EI_CLASS        /* file class */
   44 #define OI_DATA         EI_DATA         /* data encoding */
   45 #define OI_VERSION      EI_VERSION      /* OLF header version */
   46 #define OI_OS           7               /* Operating system tag */
   47 #define OI_DYNAMIC      8               /* Dynamic tag */
   48 #define OI_STRIP        9               /* Strip tag */
   49 #define OI_PAD          10              /* start of pad bytes */
   50 #define OI_NIDENT       EI_NIDENT       /* Size of e_ident[] */
   51 
   52 /* e_ident[] magic number */
   53 #define OLFMAG0         ELFMAG0         /* e_ident[OI_MAG0] */
   54 #define OLFMAG1         'O'             /* e_ident[OI_MAG1] */
   55 #define OLFMAG2         ELFMAG2         /* e_ident[OI_MAG2] */
   56 #define OLFMAG3         ELFMAG3         /* e_ident[OI_MAG3] */
   57 #define OLFMAG          "\177OLF"       /* magic */
   58 #define SOLFMAG         SELFMAG         /* size of magic */
   59  
   60 /* e_ident[] file class */
   61 #define OLFCLASSNONE    ELFCLASSNONE    /* invalid */
   62 #define OLFCLASS32      ELFCLASS32      /* 32-bit objs */
   63 #define OLFCLASS64      ELFCLASS64      /* 64-bit objs */
   64 #define OLFCLASSNUM     ELFCLASSNUM     /* number of classes */
   65  
   66 /* e_ident[] data encoding */
   67 #define OLFDATANONE     ELFDATANONE     /* invalid */   
   68 #define OLFDATA2LSB     ELFDATA2LSB     /* Little-Endian */
   69 #define OLFDATA2MSB     ELFDATA2MSB     /* Big-Endian */
   70 #define OLFDATANUM      ELFDATANUM      /* number of data encode defines */
   71 
   72 
   73 /*
   74  * Please help make this list definative.
   75  */
   76 /* e_ident[] system */
   77 #define OOS_NULL        0               /* invalid */
   78 #define OOS_OPENBSD     1               /* OpenBSD */
   79 #define OOS_NETBSD      2               /* NetBSD */
   80 #define OOS_FREEBSD     3               /* FreeBSD */
   81 #define OOS_44BSD       4               /* 4.4BSD */
   82 #define OOS_LINUX       5               /* Linux */
   83 #define OOS_SVR4        6               /* AT&T System V Release 4 */
   84 #define OOS_ESIX        7               /* esix UNIX */
   85 #define OOS_SOLARIS     8               /* SunSoft Solaris */
   86 #define OOS_IRIX        9               /* SGI IRIX */
   87 #define OOS_SCO         10              /* SCO UNIX */
   88 #define OOS_DELL        11              /* DELL SVR4 */
   89 #define OOS_NCR         12              /* NCR SVR4 */
   90 #define OOS_NUM         13              /* Number of systems */
   91 /*
   92  * Lowercase and numbers ONLY.
   93  * No whitespace or punc.
   94  */
   95 #define OOSN_NULL       "invalid"       /* invalid */
   96 #define OOSN_OPENBSD    "openbsd"       /* OpenBSD */
   97 #define OOSN_NETBSD     "netbsd"        /* NetBSD */
   98 #define OOSN_FREEBSD    "freebsd"       /* FreeBSD */
   99 #define OOSN_44BSD      "44bsd"         /* 4.4BSD */
  100 #define OOSN_LINUX      "linux"         /* Linux */
  101 #define OOSN_SVR4       "svr4"          /* AT&T System V Release 4 */
  102 #define OOSN_ESIX       "esix"          /* esix UNIX */
  103 #define OOSN_SOLARIS    "solaris"       /* SunSoft Solaris */
  104 #define OOSN_IRIX       "irix"          /* SGI IRIX */
  105 #define OOSN_SCO        "sco"           /* SCO UNIX */
  106 #define OOSN_DELL       "dell"          /* DELL SVR4 */
  107 #define OOSN_NCR        "ncr"           /* NCR SVR4 */
  108 #define ONAMEV          { OOSN_NULL, OOSN_OPENBSD, OOSN_NETBSD, \
  109                           OOSN_FREEBSD, OOSN_44BSD, OOSN_LINUX, \
  110                           OOSN_SVR4, OOSN_ESIX, OOSN_SOLARIS, \
  111                           OOSN_IRIX, OOSN_SCO,  OOSN_DELL, \
  112                           OOSN_NCR, \
  113                         0 }
  114 
  115 /* e_ident[] dynamic */
  116 #define ODYNAMIC_N      0               /* Statically linked  */
  117 #define ODYNAMIC        1               /* Dynamically linked */
  118 
  119 /* e_ident[] strip */
  120 #define OSTRIP          0               /* Stripped */
  121 #define OSTRIP_N        1               /* Not Stripped */
  122 
  123 /* e_ident */
  124 #define IS_OLF(ehdr) \
  125     ((ehdr).e_ident[OI_MAG0] == OLFMAG0 && \
  126     (ehdr).e_ident[OI_MAG1] == OLFMAG1 && \
  127     (ehdr).e_ident[OI_MAG2] == OLFMAG2 && \
  128     (ehdr).e_ident[OI_MAG3] == OLFMAG3)
  129 
  130 /* The rest of the types and defines come from the ELF header file */
  131 #endif /* _SYS_EXEC_OLF_H_ */

/* [<][>][^][v][top][bottom][index][help] */